base.js 1.1 KB

123456789101112131415161718192021222324252627282930
  1. import Awesomplete from 'awesomplete';
  2. import 'awesomplete/awesomplete.css';
  3. (() => {
  4. const awp = Awesomplete.$;
  5. const autocompleteFields = document.querySelectorAll('input[data-multiple]');
  6. [...autocompleteFields].forEach((autocompleteField) => {
  7. const awesomplete = new Awesomplete(awp(autocompleteField));
  8. awesomplete.filter = (text, input) => Awesomplete.FILTER_CONTAINS(text, input.match(/[^ ]*$/)[0]);
  9. awesomplete.replace = (text) => {
  10. const before = awesomplete.input.value.match(/^.+ \s*|/)[0];
  11. awesomplete.input.value = `${before}${text} `;
  12. };
  13. awesomplete.minChars = 1;
  14. autocompleteField.addEventListener('input', () => {
  15. const proposedTags = autocompleteField.getAttribute('data-list').replace(/,/g, '').split(' ');
  16. const reg = /(\w+) /g;
  17. let match;
  18. while ((match = reg.exec(autocompleteField.value)) !== null) {
  19. const id = proposedTags.indexOf(match[1]);
  20. if (id !== -1) {
  21. proposedTags.splice(id, 1);
  22. }
  23. }
  24. awesomplete.list = proposedTags;
  25. });
  26. });
  27. })();