transfer.mjs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. import { CHANGE_EVENT, UPDATE_MODEL_EVENT } from "../../../constants/event.mjs";
  2. import { isArray } from "../../../utils/types.mjs";
  3. import { buildProps, definePropType } from "../../../utils/vue/props/runtime.mjs";
  4. import { mutable } from "../../../utils/typescript.mjs";
  5. import { isNil } from "lodash-unified";
  6. //#region ../../packages/components/transfer/src/transfer.ts
  7. const LEFT_CHECK_CHANGE_EVENT = "left-check-change";
  8. const RIGHT_CHECK_CHANGE_EVENT = "right-check-change";
  9. /**
  10. * @deprecated Removed after 3.0.0, Use `TransferProps` instead.
  11. */
  12. const transferProps = buildProps({
  13. /**
  14. * @description data source
  15. */
  16. data: {
  17. type: definePropType(Array),
  18. default: () => []
  19. },
  20. /**
  21. * @description custom list titles
  22. */
  23. titles: {
  24. type: definePropType(Array),
  25. default: () => []
  26. },
  27. /**
  28. * @description custom button texts
  29. */
  30. buttonTexts: {
  31. type: definePropType(Array),
  32. default: () => []
  33. },
  34. /**
  35. * @description placeholder for the filter input
  36. */
  37. filterPlaceholder: String,
  38. /**
  39. * @description custom filter method
  40. */
  41. filterMethod: { type: definePropType(Function) },
  42. /**
  43. * @description key array of initially checked data items of the left list
  44. */
  45. leftDefaultChecked: {
  46. type: definePropType(Array),
  47. default: () => []
  48. },
  49. /**
  50. * @description key array of initially checked data items of the right list
  51. */
  52. rightDefaultChecked: {
  53. type: definePropType(Array),
  54. default: () => []
  55. },
  56. /**
  57. * @description custom render function for data items
  58. */
  59. renderContent: { type: definePropType(Function) },
  60. /**
  61. * @description binding value
  62. */
  63. modelValue: {
  64. type: definePropType(Array),
  65. default: () => []
  66. },
  67. /**
  68. * @description texts for checking status in list header
  69. */
  70. format: {
  71. type: definePropType(Object),
  72. default: () => ({})
  73. },
  74. /**
  75. * @description whether Transfer is filterable
  76. */
  77. filterable: Boolean,
  78. /**
  79. * @description prop aliases for data source
  80. */
  81. props: {
  82. type: definePropType(Object),
  83. default: () => mutable({
  84. label: "label",
  85. key: "key",
  86. disabled: "disabled"
  87. })
  88. },
  89. /**
  90. * @description order strategy for elements in the target list. If set to `original`, the elements will keep the same order as the data source. If set to `push`, the newly added elements will be pushed to the bottom. If set to `unshift`, the newly added elements will be inserted on the top
  91. */
  92. targetOrder: {
  93. type: String,
  94. values: [
  95. "original",
  96. "push",
  97. "unshift"
  98. ],
  99. default: "original"
  100. },
  101. /**
  102. * @description whether to trigger form validation
  103. */
  104. validateEvent: {
  105. type: Boolean,
  106. default: true
  107. }
  108. });
  109. const transferCheckedChangeFn = (value, movedKeys) => [value, movedKeys].every(isArray) || isArray(value) && isNil(movedKeys);
  110. const transferEmits = {
  111. [CHANGE_EVENT]: (value, direction, movedKeys) => [value, movedKeys].every(isArray) && ["left", "right"].includes(direction),
  112. [UPDATE_MODEL_EVENT]: (value) => isArray(value),
  113. [LEFT_CHECK_CHANGE_EVENT]: transferCheckedChangeFn,
  114. [RIGHT_CHECK_CHANGE_EVENT]: transferCheckedChangeFn
  115. };
  116. //#endregion
  117. export { LEFT_CHECK_CHANGE_EVENT, RIGHT_CHECK_CHANGE_EVENT, transferCheckedChangeFn, transferEmits, transferProps };
  118. //# sourceMappingURL=transfer.mjs.map