transfer.mjs 2.0 KB

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