antInputDirective.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.addEventListener = addEventListener;
  6. exports.default = void 0;
  7. function onCompositionStart(e) {
  8. e.target.composing = true;
  9. }
  10. function onCompositionEnd(e) {
  11. // prevent triggering an input event for no reason
  12. if (!e.target.composing) return;
  13. e.target.composing = false;
  14. trigger(e.target, 'input');
  15. }
  16. function trigger(el, type) {
  17. var e = document.createEvent('HTMLEvents');
  18. e.initEvent(type, true, true);
  19. el.dispatchEvent(e);
  20. }
  21. function addEventListener(el, event, handler, options) {
  22. el.addEventListener(event, handler, options);
  23. }
  24. var antInput = {
  25. created: function created(el, binding) {
  26. if (!binding.modifiers || !binding.modifiers.lazy) {
  27. addEventListener(el, 'compositionstart', onCompositionStart);
  28. addEventListener(el, 'compositionend', onCompositionEnd);
  29. // Safari < 10.2 & UIWebView doesn't fire compositionend when
  30. // switching focus before confirming composition choice
  31. // this also fixes the issue where some browsers e.g. iOS Chrome
  32. // fires "change" instead of "input" on autocomplete.
  33. addEventListener(el, 'change', onCompositionEnd);
  34. }
  35. }
  36. };
  37. var _default = antInput;
  38. exports.default = _default;