54a57f06a08bba565438c1ee71426faadbee714ba83d823fdf71826300de62c74357273634fad31c52ccbf1c2c9d55de02d6206aaadde7850fd305f06f604c 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import { tagProps } from '../../tag/src/tag.mjs';
  2. import { CircleClose } from '@element-plus/icons-vue';
  3. import { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';
  4. import { EVENT_CODE } from '../../../constants/aria.mjs';
  5. import { useSizeProp } from '../../../hooks/use-size/index.mjs';
  6. import { iconPropType } from '../../../utils/vue/icon.mjs';
  7. import { UPDATE_MODEL_EVENT, CHANGE_EVENT, INPUT_EVENT } from '../../../constants/event.mjs';
  8. import { isArray, isString } from '@vue/shared';
  9. import { isUndefined, isNumber } from '../../../utils/types.mjs';
  10. const inputTagProps = buildProps({
  11. modelValue: {
  12. type: definePropType(Array)
  13. },
  14. max: Number,
  15. tagType: { ...tagProps.type, default: "info" },
  16. tagEffect: tagProps.effect,
  17. trigger: {
  18. type: definePropType(String),
  19. default: EVENT_CODE.enter
  20. },
  21. draggable: Boolean,
  22. delimiter: {
  23. type: [String, RegExp],
  24. default: ""
  25. },
  26. size: useSizeProp,
  27. clearable: Boolean,
  28. clearIcon: {
  29. type: iconPropType,
  30. default: CircleClose
  31. },
  32. disabled: {
  33. type: Boolean,
  34. default: void 0
  35. },
  36. validateEvent: {
  37. type: Boolean,
  38. default: true
  39. },
  40. readonly: Boolean,
  41. autofocus: Boolean,
  42. id: {
  43. type: String,
  44. default: void 0
  45. },
  46. tabindex: {
  47. type: [String, Number],
  48. default: 0
  49. },
  50. maxlength: {
  51. type: [String, Number]
  52. },
  53. minlength: {
  54. type: [String, Number]
  55. },
  56. placeholder: String,
  57. autocomplete: {
  58. type: definePropType(String),
  59. default: "off"
  60. },
  61. saveOnBlur: {
  62. type: Boolean,
  63. default: true
  64. },
  65. collapseTags: Boolean,
  66. collapseTagsTooltip: Boolean,
  67. maxCollapseTags: {
  68. type: Number,
  69. default: 1
  70. },
  71. ariaLabel: String
  72. });
  73. const inputTagEmits = {
  74. [UPDATE_MODEL_EVENT]: (value) => isArray(value) || isUndefined(value),
  75. [CHANGE_EVENT]: (value) => isArray(value) || isUndefined(value),
  76. [INPUT_EVENT]: (value) => isString(value),
  77. "add-tag": (value) => isString(value) || isArray(value),
  78. "remove-tag": (value, index) => isString(value) && isNumber(index),
  79. "drag-tag": (oldIndex, newIndex, value) => isNumber(oldIndex) && isNumber(newIndex) && isString(value),
  80. focus: (evt) => evt instanceof FocusEvent,
  81. blur: (evt) => evt instanceof FocusEvent,
  82. clear: () => true
  83. };
  84. export { inputTagEmits, inputTagProps };
  85. //# sourceMappingURL=input-tag.mjs.map