element-plus
Version:
A Component Library for Vue 3
1 lines • 8.3 kB
Source Map (JSON)
{"version":3,"file":"transfer.mjs","sources":["../../../../../../packages/components/transfer/src/transfer.ts"],"sourcesContent":["import { isNil } from 'lodash-unified'\nimport {\n buildProps,\n definePropType,\n isArray,\n mutable,\n} from '@element-plus/utils'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@element-plus/constants'\n\nimport type { ExtractPublicPropTypes, h as H, VNode } from 'vue'\nimport type Transfer from './transfer.vue'\n\nexport type TransferKey = string | number\nexport type TransferDirection = 'left' | 'right'\n\nexport type TransferDataItem = Record<string, any>\n\nexport type renderContent = (\n h: typeof H,\n option: TransferDataItem\n) => VNode | VNode[]\n\nexport interface TransferFormat {\n noChecked?: string\n hasChecked?: string\n}\n\nexport interface TransferPropsAlias {\n label?: string\n key?: string\n disabled?: string\n}\n\nexport interface TransferCheckedState {\n leftChecked: TransferKey[]\n rightChecked: TransferKey[]\n}\n\nexport const LEFT_CHECK_CHANGE_EVENT = 'left-check-change'\nexport const RIGHT_CHECK_CHANGE_EVENT = 'right-check-change'\n\nexport interface TransferProps {\n /**\n * @description data source\n */\n data?: TransferDataItem[]\n /**\n * @description custom list titles\n */\n titles?: [string, string]\n /**\n * @description custom button texts\n */\n buttonTexts?: [string, string]\n /**\n * @description placeholder for the filter input\n */\n filterPlaceholder?: string\n /**\n * @description custom filter method\n */\n filterMethod?: (query: string, item: TransferDataItem) => boolean\n /**\n * @description key array of initially checked data items of the left list\n */\n leftDefaultChecked?: TransferKey[]\n /**\n * @description key array of initially checked data items of the right list\n */\n rightDefaultChecked?: TransferKey[]\n /**\n * @description custom render function for data items\n */\n renderContent?: renderContent\n /**\n * @description binding value\n */\n modelValue?: TransferKey[]\n /**\n * @description texts for checking status in list header\n */\n format?: TransferFormat\n /**\n * @description whether Transfer is filterable\n */\n filterable?: boolean\n /**\n * @description prop aliases for data source\n */\n props?: TransferPropsAlias\n /**\n * @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\n */\n targetOrder?: 'original' | 'push' | 'unshift'\n /**\n * @description whether to trigger form validation\n */\n validateEvent?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `TransferProps` instead.\n */\nexport const transferProps = buildProps({\n /**\n * @description data source\n */\n data: {\n type: definePropType<TransferDataItem[]>(Array),\n default: () => [],\n },\n /**\n * @description custom list titles\n */\n titles: {\n type: definePropType<[string, string]>(Array),\n default: () => [],\n },\n /**\n * @description custom button texts\n */\n buttonTexts: {\n type: definePropType<[string, string]>(Array),\n default: () => [],\n },\n /**\n * @description placeholder for the filter input\n */\n filterPlaceholder: String,\n /**\n * @description custom filter method\n */\n filterMethod: {\n type: definePropType<(query: string, item: TransferDataItem) => boolean>(\n Function\n ),\n },\n /**\n * @description key array of initially checked data items of the left list\n */\n leftDefaultChecked: {\n type: definePropType<TransferKey[]>(Array),\n default: () => [],\n },\n /**\n * @description key array of initially checked data items of the right list\n */\n rightDefaultChecked: {\n type: definePropType<TransferKey[]>(Array),\n default: () => [],\n },\n /**\n * @description custom render function for data items\n */\n renderContent: {\n type: definePropType<renderContent>(Function),\n },\n /**\n * @description binding value\n */\n modelValue: {\n type: definePropType<TransferKey[]>(Array),\n default: () => [],\n },\n /**\n * @description texts for checking status in list header\n */\n format: {\n type: definePropType<TransferFormat>(Object),\n default: () => ({}),\n },\n /**\n * @description whether Transfer is filterable\n */\n filterable: Boolean,\n /**\n * @description prop aliases for data source\n */\n props: {\n type: definePropType<TransferPropsAlias>(Object),\n default: () =>\n mutable({\n label: 'label',\n key: 'key',\n disabled: 'disabled',\n } as const),\n },\n /**\n * @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\n */\n targetOrder: {\n type: String,\n values: ['original', 'push', 'unshift'],\n default: 'original',\n },\n /**\n * @description whether to trigger form validation\n */\n validateEvent: {\n type: Boolean,\n default: true,\n },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `TransferProps` instead.\n */\nexport type TransferPropsPublic = ExtractPublicPropTypes<typeof transferProps>\n\nexport const transferCheckedChangeFn = (\n value: TransferKey[],\n movedKeys?: TransferKey[]\n) => [value, movedKeys].every(isArray) || (isArray(value) && isNil(movedKeys))\n\nexport const transferEmits = {\n [CHANGE_EVENT]: (\n value: TransferKey[],\n direction: TransferDirection,\n movedKeys: TransferKey[]\n ) =>\n [value, movedKeys].every(isArray) && ['left', 'right'].includes(direction),\n [UPDATE_MODEL_EVENT]: (value: TransferKey[]) => isArray(value),\n [LEFT_CHECK_CHANGE_EVENT]: transferCheckedChangeFn,\n [RIGHT_CHECK_CHANGE_EVENT]: transferCheckedChangeFn,\n}\nexport type TransferEmits = typeof transferEmits\n\nexport type TransferInstance = InstanceType<typeof Transfer> & unknown\n"],"names":[],"mappings":";;;;;;AAsCO,MAAM,uBAAA,GAA0B;AAChC,MAAM,wBAAA,GAA2B;AAgEjC,MAAM,gBAAgB,UAAA,CAAW;AAAA;AAAA;AAAA;AAAA,EAItC,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,eAAmC,KAAK,CAAA;AAAA,IAC9C,OAAA,EAAS,MAAM;AAAC,GAClB;AAAA;AAAA;AAAA;AAAA,EAIA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,eAAiC,KAAK,CAAA;AAAA,IAC5C,OAAA,EAAS,MAAM;AAAC,GAClB;AAAA;AAAA;AAAA;AAAA,EAIA,WAAA,EAAa;AAAA,IACX,IAAA,EAAM,eAAiC,KAAK,CAAA;AAAA,IAC5C,OAAA,EAAS,MAAM;AAAC,GAClB;AAAA;AAAA;AAAA;AAAA,EAIA,iBAAA,EAAmB,MAAA;AAAA;AAAA;AAAA;AAAA,EAInB,YAAA,EAAc;AAAA,IACZ,IAAA,EAAM,cAAA;AAAA,MACJ;AAAA;AACF,GACF;AAAA;AAAA;AAAA;AAAA,EAIA,kBAAA,EAAoB;AAAA,IAClB,IAAA,EAAM,eAA8B,KAAK,CAAA;AAAA,IACzC,OAAA,EAAS,MAAM;AAAC,GAClB;AAAA;AAAA;AAAA;AAAA,EAIA,mBAAA,EAAqB;AAAA,IACnB,IAAA,EAAM,eAA8B,KAAK,CAAA;AAAA,IACzC,OAAA,EAAS,MAAM;AAAC,GAClB;AAAA;AAAA;AAAA;AAAA,EAIA,aAAA,EAAe;AAAA,IACb,IAAA,EAAM,eAA8B,QAAQ;AAAA,GAC9C;AAAA;AAAA;AAAA;AAAA,EAIA,UAAA,EAAY;AAAA,IACV,IAAA,EAAM,eAA8B,KAAK,CAAA;AAAA,IACzC,OAAA,EAAS,MAAM;AAAC,GAClB;AAAA;AAAA;AAAA;AAAA,EAIA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,eAA+B,MAAM,CAAA;AAAA,IAC3C,OAAA,EAAS,OAAO,EAAC;AAAA,GACnB;AAAA;AAAA;AAAA;AAAA,EAIA,UAAA,EAAY,OAAA;AAAA;AAAA;AAAA;AAAA,EAIZ,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,eAAmC,MAAM,CAAA;AAAA,IAC/C,OAAA,EAAS,MACP,OAAA,CAAQ;AAAA,MACN,KAAA,EAAO,OAAA;AAAA,MACP,GAAA,EAAK,KAAA;AAAA,MACL,QAAA,EAAU;AAAA,KACF;AAAA,GACd;AAAA;AAAA;AAAA;AAAA,EAIA,WAAA,EAAa;AAAA,IACX,IAAA,EAAM,MAAA;AAAA,IACN,MAAA,EAAQ,CAAC,UAAA,EAAY,MAAA,EAAQ,SAAS,CAAA;AAAA,IACtC,OAAA,EAAS;AAAA,GACX;AAAA;AAAA;AAAA;AAAA,EAIA,aAAA,EAAe;AAAA,IACb,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA;AAEb,CAAU;AAOH,MAAM,uBAAA,GAA0B,CACrC,KAAA,EACA,SAAA,KACG,CAAC,KAAA,EAAO,SAAS,CAAA,CAAE,KAAA,CAAM,OAAO,CAAA,IAAM,OAAA,CAAQ,KAAK,CAAA,IAAK,MAAM,SAAS;AAErE,MAAM,aAAA,GAAgB;AAAA,EAC3B,CAAC,YAAY,GAAG,CACd,KAAA,EACA,SAAA,EACA,cAEA,CAAC,KAAA,EAAO,SAAS,CAAA,CAAE,KAAA,CAAM,OAAO,CAAA,IAAK,CAAC,QAAQ,OAAO,CAAA,CAAE,SAAS,SAAS,CAAA;AAAA,EAC3E,CAAC,kBAAkB,GAAG,CAAC,KAAA,KAAyB,QAAQ,KAAK,CAAA;AAAA,EAC7D,CAAC,uBAAuB,GAAG,uBAAA;AAAA,EAC3B,CAAC,wBAAwB,GAAG;AAC9B;;;;"}