transfer.mjs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import { isNil } from 'lodash-unified';
  2. import '../../../utils/index.mjs';
  3. import '../../../constants/index.mjs';
  4. import { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';
  5. import { mutable } from '../../../utils/typescript.mjs';
  6. import { isArray } from '@vue/shared';
  7. import { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '../../../constants/event.mjs';
  8. const LEFT_CHECK_CHANGE_EVENT = "left-check-change";
  9. const RIGHT_CHECK_CHANGE_EVENT = "right-check-change";
  10. const transferProps = buildProps({
  11. data: {
  12. type: definePropType(Array),
  13. default: () => []
  14. },
  15. titles: {
  16. type: definePropType(Array),
  17. default: () => []
  18. },
  19. buttonTexts: {
  20. type: definePropType(Array),
  21. default: () => []
  22. },
  23. filterPlaceholder: String,
  24. filterMethod: {
  25. type: definePropType(Function)
  26. },
  27. leftDefaultChecked: {
  28. type: definePropType(Array),
  29. default: () => []
  30. },
  31. rightDefaultChecked: {
  32. type: definePropType(Array),
  33. default: () => []
  34. },
  35. renderContent: {
  36. type: definePropType(Function)
  37. },
  38. modelValue: {
  39. type: definePropType(Array),
  40. default: () => []
  41. },
  42. format: {
  43. type: definePropType(Object),
  44. default: () => ({})
  45. },
  46. filterable: Boolean,
  47. props: {
  48. type: definePropType(Object),
  49. default: () => mutable({
  50. label: "label",
  51. key: "key",
  52. disabled: "disabled"
  53. })
  54. },
  55. targetOrder: {
  56. type: String,
  57. values: ["original", "push", "unshift"],
  58. default: "original"
  59. },
  60. validateEvent: {
  61. type: Boolean,
  62. default: true
  63. }
  64. });
  65. const transferCheckedChangeFn = (value, movedKeys) => [value, movedKeys].every(isArray) || isArray(value) && isNil(movedKeys);
  66. const transferEmits = {
  67. [CHANGE_EVENT]: (value, direction, movedKeys) => [value, movedKeys].every(isArray) && ["left", "right"].includes(direction),
  68. [UPDATE_MODEL_EVENT]: (value) => isArray(value),
  69. [LEFT_CHECK_CHANGE_EVENT]: transferCheckedChangeFn,
  70. [RIGHT_CHECK_CHANGE_EVENT]: transferCheckedChangeFn
  71. };
  72. export { LEFT_CHECK_CHANGE_EVENT, RIGHT_CHECK_CHANGE_EVENT, transferCheckedChangeFn, transferEmits, transferProps };
  73. //# sourceMappingURL=transfer.mjs.map