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.73 kB
{"version":3,"file":"TableButton.mjs","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","defineComponent","name","props","button","type","default","size","scope","tableColumnSlots","ns","useNamespace","useFormSize","t","config","key","isBoolean","isFunction","defaultValue","renderReference","dropdownProps","reference","isString","isSlot","getKeyValue","omit","FILTER_KEYS","createVNode","ElDropdown","mergeProps","command","dropdownItem","_a","item","dropdown","ElDropdownItem","ElButton"],"mappings":";;;;;;;;;;AAMA,MAAAA,IAAA,gBAAAC,EAAA;AAAA,EACEC,MAAAA;AAAAA,EACAC,OAAAA;AAAAA,IACEC,QAAAA;AAAAA,MACEC,MAAAA;AAAAA,MACAC,SAAAA,OAAAA,CAAAA;AAAAA;IAEFC,MAAAA;AAAAA,MACEF,MAAAA;AAAAA;IAEFG,OAAAA;AAAAA,MACEH,MAAAA;AAAAA,MACAC,SAAAA,OAAAA,CAAAA;AAAAA;IAEFG,kBAAAA;AAAAA,MACEJ,MAAAA;AAAAA,MACAC,SAAAA,OAAAA,CAAAA;AAAAA,IACF;AAAA;;AAGA,UAAAI,IAAAC,EAAA,cAAA,GACAJ,IAAAK,EAAA;MACQC,GAAAA;AAAAA,8EAKNC,IAEA,OAAA,KAAAA,CAAA,EACA,SAAAC,CAAA,IACEC,EAAAF,EAAAC,CAAA,CAAA,IAAAD,EAAAC,CAAA,IAAAE,EAAAH,EAAAC,CAAA,CAAA,IAAAD,EAAAC,CAAA,EAAAP,CAAA,IAAA,KAMF,KAVAU,GAqCFC,IAAA,CAAAX,GAAAY,MAAA;AAIE,YAAAC,IAAAD,EAAA;2BAIAE,EAAAD,CAAA,KAAAE,EAAAF,CAAA,IAAAlB,EAAA,iBAAAkB,CAAA,EAAAb,CAAA;QAGA,MAAA;AAAA,QAAA,MAAA;AAAA,QAAA,MAAAD,EAAA;AAAA,MACgD,GAAA;AAAA;UACkC,OAAA;AAAA,QAAA,GAAA;AAAA,UAAAD,SAAAA,MAAAA,CAAAA,EAAAA,GAAAA,MAAAA,IAAAA,CAAAA;AAAAA,QAAA,CAAA,CAAA;AAAA,MAAA,CAAA;AAAA;AAQpF,WAAA,MAAA;;;QACkBE,OAAAA;AAAAA,MAAM,IAAAL;AAGtB,UAFA,CAAAqB,EAAApB,GAAA,QAAAI,GAAA,EAAA,GAEA;AACE,YAAAJ,EAAA,SAAA,YAAA;AACE,gBAAAgB,IAAAK,EAAArB,GAAAsB,CAAA;AACA,iBAAAC,EAAAC,GAAAC,EAAA;AAAA,YAAA,MAAA;AAAA;YAGoB,SAAA;AAAA,YAAA,OAAAnB,EAAA,EAAA,UAAA;AAAA,UAEO,GAAAU,GAAA;AAAA,YACN,WAAA,CAAAU,MAAA;;AAEf,oBAAAC,KAAAC,IAAA5B,EAAA,aAAA,gBAAA4B,EAAA,KAAA,CAAAC,MAAAA,EAAA,UAAAH;AACA,cAAAC,KAAAd,EAAAc,EAAA,OAAA,KAAAA,EAAA,QAAAvB,CAAA;AAAA,YAEF;AAAA,UAAC,CAAA,GAAA;AAAA;YAEC0B,UAAAA,MAAAA,EAAAA,GAAAA,MAAAA;AAAAA;;;AAGM,wBAAAd,IAAAK,EAAAM,GAAAL,CAAA;0BACAT,EAAAc,EAAA,IAAA,IAAAA,EAAA,KAAAvB,CAAA,IAAAuB,EAAA,eAGAJ,EAAAQ,GAAAN,EAAAT,GAAA;AAAA;oBAGiE,SAAAW,EAAA;AAAA,kBAClC,CAAA,GAAA;AAAA,oBAAAzB,SAAAA,MAAAA,CAAAA,EAAAA,KAAAA;AAAAA,kBAER,CAAA;AAAA,gBAGzB,EAAA;AAAA;AAAA,YAAE,CAAA;AAAA,UAEL,CAAA;AAAA,QAMT;AACA,eAAAqB,EAAAS,GAAAP,EAAA;AAAA,UAAA,MAAAtB,EAAA;AAAA,QAEoB,GAAA;AAAA,UAEd,GAAAH;AAAA;;;AAIE,YAAAa,EAAAb,EAAA,OAAA,KAAAA,EAAA,QAAAI,CAAA;AAAA,UAEF;AAAA,QAAC,CAAA,GAAA;AAAA,UAAAF,SAAAA,MAAAA,CAAAA,EAAAA,KAAAA;AAAAA,QAGU,CAAA;AAAA,MAGnB;AACA,aAAA;AAAA;EAEJ;AACF,CAAA;"}