UNPKG

ideaz-element

Version:

<p align="center"> <a href="" target="_blank" rel="noopener noreferrer"> <img src="./docs/public/logo.svg" alt="Ideaz Element" width="180" style="width: 180px;" /> </a> </p>

1 lines 7.41 kB
{"version":3,"file":"TableButton.cjs","sources":["../../../../../packages/element/table/src/TableButton.tsx"],"sourcesContent":["import { isBoolean, isFunction, isSlot, isString } from '@ideaz/utils'\nimport { ArrowDown } from '@element-plus/icons-vue'\nimport { omit } from 'lodash-unified'\nimport { ElButton, ElDropdown, ElDropdownItem, ElDropdownMenu, ElIcon } from 'element-plus'\nimport type { BtnItem, TableColumnScopeData } from '../../types'\n\nexport default defineComponent({\n name: 'ZTableButton',\n props: {\n button: {\n type: Object as PropType<BtnItem>,\n default: () => ({}),\n },\n size: {\n type: String,\n },\n scope: {\n type: Object as PropType<TableColumnScopeData>,\n default: () => ({}),\n },\n tableColumnSlots: {\n type: Object,\n default: () => ({}),\n },\n },\n setup(props) {\n const ns = useNamespace('table-column')\n const size = useFormSize()\n const { t } = useLocale()\n\n const FILTER_KEYS = ['children', 'type', 'hide', 'onClick']\n\n const getKeyValue = (config: any, key: string, scope: TableColumnScopeData, defaultValue: boolean) => {\n if (!config)\n return defaultValue\n const keys = Object.keys(config)\n if (keys.includes(key)) {\n return isBoolean(config[key])\n ? config[key]\n : isFunction(config[key])\n ? (config[key] as (scope: TableColumnScopeData) => boolean)(scope)\n : false\n }\n return false\n }\n\n // const getButtonVisible = (button: BtnItem, scope: TableColumnScopeData) => {\n // const keys = Object.keys(button)\n // if (keys.includes('hide')) {\n // return isBoolean(button.hide)\n // ? !button.hide\n // : isFunction(button.hide)\n // ? !(button.hide as (scope: TableColumnScopeData) => boolean)(scope)\n // : true\n // }\n // return true\n // }\n\n // const getDisabled = (button: BtnItem, scope: TableColumnScopeData) => {\n // const keys = Object.keys(button)\n // if (keys.includes('disabled')) {\n // return isBoolean(button.disabled)\n // ? button.disabled\n // : isFunction(button.disabled)\n // ? (button.disabled as (scope: TableColumnScopeData) => boolean)(scope)\n // : false\n // }\n // return false\n // }\n\n const renderReference = (\n scope: TableColumnScopeData,\n dropdownProps: BtnItem,\n ) => {\n const reference = dropdownProps.reference\n if (isFunction(reference))\n return reference(scope)\n\n if (isString(reference) && isSlot(reference))\n return props.tableColumnSlots[reference](scope)\n\n return (\n <ElButton type=\"primary\" link size={size.value}>\n {isString(dropdownProps.reference) ? dropdownProps.reference : t('table.more')}\n <ElIcon class=\"el-icon--right\">\n <ArrowDown />\n </ElIcon>\n </ElButton>\n )\n }\n\n return () => {\n const { button, scope } = props\n const isShowButton = !getKeyValue(button, 'hide', scope, false)\n\n if (isShowButton) {\n if (button.type === 'dropdown') {\n const dropdownProps = omit(button, FILTER_KEYS)\n return (\n <ElDropdown\n type=\"primary\"\n size={size.value}\n trigger=\"click\"\n class={ns.e('dropdown')}\n {...dropdownProps}\n onCommand={(command: string) => {\n const dropdownItem = button.children?.find((item: BtnItem) => item.label === command)\n if (dropdownItem && isFunction(dropdownItem.onClick))\n dropdownItem.onClick(scope)\n }}\n v-slots={{\n dropdown: () => (\n <ElDropdownMenu>\n {button.children?.map((dropdownItem: BtnItem) => {\n const dropdownProps = omit(dropdownItem, FILTER_KEYS)\n const isHide = isFunction(dropdownItem.hide) ? dropdownItem.hide(scope) : dropdownItem.hide\n if (isHide)\n return null\n return (\n <ElDropdownItem\n {...dropdownProps}\n disabled={getKeyValue(dropdownItem, 'disabled', scope, false)}\n command={dropdownItem.label}\n >\n {dropdownItem.label}\n </ElDropdownItem>\n )\n })}\n </ElDropdownMenu>\n ),\n }}\n >\n {renderReference(scope, button)}\n </ElDropdown>\n )\n }\n return (\n <ElButton\n size={size.value}\n {...{\n ...button,\n type: button.type,\n disabled: getKeyValue(button, 'disabled', scope, false),\n onClick: () => {\n if (isFunction(button.onClick))\n button.onClick(scope)\n },\n }}\n >\n {button.label}\n </ElButton>\n )\n }\n return null\n }\n },\n})\n"],"names":["TableButton","vue","name","props","button","type","default","size","scope","tableColumnSlots","ns","useNamespace","useFormSize","t","config","key","is","defaultValue","renderReference","dropdownProps","reference","getKeyValue","omit","FILTER_KEYS","elementPlus","command","dropdownItem","_a","item","dropdown"],"mappings":"ijBAMAA,EAAAC,EAAA,gBAAA,CACEC,KAAAA,eACAC,MAAAA,CACEC,OAAAA,CACEC,KAAAA,OACAC,QAAAA,KAAAA,CAAAA,IAEFC,KAAAA,CACEF,KAAAA,QAEFG,MAAAA,CACEH,KAAAA,OACAC,QAAAA,KAAAA,CAAAA,IAEFG,iBAAAA,CACEJ,KAAAA,OACAC,QAAAA,KAAAA,CAAAA,EACF,YAGA,MAAAI,EAAAC,EAAA,aAAA,cAAA,EACAJ,EAAAK,EAAA,YAAA,GACQC,EAAAA,qEAKNC,EAEA,OAAA,KAAAA,CAAA,EACA,SAAAC,CAAA,EACEC,EAAA,UAAAF,EAAAC,CAAA,CAAA,EAAAD,EAAAC,CAAA,EAAAC,EAAA,WAAAF,EAAAC,CAAA,CAAA,EAAAD,EAAAC,CAAA,EAAAP,CAAA,EAAA,GAMF,GAVAS,EAqCFC,EAAA,CAAAV,EAAAW,IAAA,CAIE,MAAAC,EAAAD,EAAA,sCAIAH,EAAA,SAAAI,CAAA,GAAAJ,EAAA,OAAAI,CAAA,EAAAjB,EAAA,iBAAAiB,CAAA,EAAAZ,CAAA,4BAGA,KAAA,UAAA,KAAA,GAAA,KAAAD,EAAA,KACgD,EAAA,0FACkC,MAAA,gBAAA,EAAA,CAAAD,QAAAA,IAAAA,CAAAA,EAAAA,YAAAA,EAAAA,UAAAA,KAAAA,IAAAA,CAAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAQpF,MAAA,IAAA,gBACkBE,MAAAA,CAAM,EAAAL,EAGtB,GAFA,CAAAkB,EAAAjB,EAAA,OAAAI,EAAA,EAAA,EAEA,CACE,GAAAJ,EAAA,OAAA,WAAA,CACE,MAAAe,EAAAG,EAAAlB,EAAAmB,CAAA,EACA,OAAAtB,EAAA,YAAAuB,EAAA,WAAAvB,EAAA,WAAA,CAAA,KAAA,uBAGoB,QAAA,QAAA,MAAAS,EAAA,EAAA,UAAA,CAEO,EAAAS,EAAA,CACN,UAAAM,GAAA,OAEf,MAAAC,GAAAC,EAAAvB,EAAA,WAAA,YAAAuB,EAAA,KAAAC,GAAAA,EAAA,QAAAH,GACAC,GAAAV,EAAA,WAAAU,EAAA,OAAA,GAAAA,EAAA,QAAAlB,CAAA,CAEF,CAAC,CAAA,EAAA,sBAECqB,SAAAA,IAAAA,EAAAA,YAAAA,EAAAA,eAAAA,KAAAA,iEAGM,MAAAV,EAAAG,EAAAI,EAAAH,CAAA,SACAP,EAAA,WAAAU,EAAA,IAAA,EAAAA,EAAA,KAAAlB,CAAA,EAAAkB,EAAA,WAGAzB,EAAA,YAAAuB,EAAA,eAAAvB,EAAA,WAAAkB,EAAA,+BAGiE,QAAAO,EAAA,KAClC,CAAA,EAAA,CAAApB,QAAAA,IAAAA,CAAAA,EAAAA,KAAAA,CAER,CAAA,CAGzB,EAAA,EAAE,CAAA,CAEL,CAAA,CAMT,CACA,OAAAL,EAAA,YAAAuB,EAAA,SAAAvB,EAAA,WAAA,CAAA,KAAAM,EAAA,KAEoB,EAAA,CAEd,GAAAH,yDAIEY,EAAA,WAAAZ,EAAA,OAAA,GAAAA,EAAA,QAAAI,CAAA,CAEF,CAAC,CAAA,EAAA,CAAAF,QAAAA,IAAAA,CAAAA,EAAAA,KAAAA,CAGU,CAAA,CAGnB,CACA,OAAA,KAEJ,CACF,CAAA"}