commonUtils.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.fixControlledValue = fixControlledValue;
  6. exports.hasAddon = hasAddon;
  7. exports.hasPrefixSuffix = hasPrefixSuffix;
  8. exports.resolveOnChange = resolveOnChange;
  9. exports.triggerFocus = triggerFocus;
  10. var _propsUtil = require("../../_util/props-util");
  11. const isValid = value => {
  12. return value !== undefined && value !== null && (Array.isArray(value) ? (0, _propsUtil.filterEmpty)(value).length : true);
  13. };
  14. function hasPrefixSuffix(propsAndSlots) {
  15. return isValid(propsAndSlots.prefix) || isValid(propsAndSlots.suffix) || isValid(propsAndSlots.allowClear);
  16. }
  17. function hasAddon(propsAndSlots) {
  18. return isValid(propsAndSlots.addonBefore) || isValid(propsAndSlots.addonAfter);
  19. }
  20. function fixControlledValue(value) {
  21. if (typeof value === 'undefined' || value === null) {
  22. return '';
  23. }
  24. return String(value);
  25. }
  26. function resolveOnChange(target, e, onChange, targetValue) {
  27. if (!onChange) {
  28. return;
  29. }
  30. const event = e;
  31. if (e.type === 'click') {
  32. Object.defineProperty(event, 'target', {
  33. writable: true
  34. });
  35. Object.defineProperty(event, 'currentTarget', {
  36. writable: true
  37. });
  38. // click clear icon
  39. //event = Object.create(e);
  40. const currentTarget = target.cloneNode(true);
  41. event.target = currentTarget;
  42. event.currentTarget = currentTarget;
  43. // change target ref value cause e.target.value should be '' when clear input
  44. currentTarget.value = '';
  45. onChange(event);
  46. return;
  47. }
  48. // Trigger by composition event, this means we need force change the input value
  49. if (targetValue !== undefined) {
  50. Object.defineProperty(event, 'target', {
  51. writable: true
  52. });
  53. Object.defineProperty(event, 'currentTarget', {
  54. writable: true
  55. });
  56. event.target = target;
  57. event.currentTarget = target;
  58. target.value = targetValue;
  59. onChange(event);
  60. return;
  61. }
  62. onChange(event);
  63. }
  64. function triggerFocus(element, option) {
  65. if (!element) return;
  66. element.focus(option);
  67. // Selection content
  68. const {
  69. cursor
  70. } = option || {};
  71. if (cursor) {
  72. const len = element.value.length;
  73. switch (cursor) {
  74. case 'start':
  75. element.setSelectionRange(0, 0);
  76. break;
  77. case 'end':
  78. element.setSelectionRange(len, len);
  79. break;
  80. default:
  81. element.setSelectionRange(0, len);
  82. }
  83. }
  84. }