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 8.64 kB
{"version":3,"file":"useTableColumns.cjs","sources":["../../../../../../packages/element/crud/src/hooks/useTableColumns.ts"],"sourcesContent":["import { isFunction, isObject } from '@ideaz/utils'\nimport type { ElTable } from 'element-plus'\nimport { ElMessage } from 'element-plus'\nimport { Delete, EditPen, View } from '@element-plus/icons-vue'\nimport type { ComponentInternalInstance } from 'vue'\nimport DialogTip from '../../../dialog/src/dialog'\nimport { COLUMN_TYPE_FIELDS } from '../props'\nimport type { CrudCol, TableColumnScopeData } from '../../../types'\nimport type { CrudDeleteDialogTipProps, CrudOperation, CrudProps } from '../props'\nimport type ZTable from '../../../table/src/Table'\n\nexport function useTableColumns(props: CrudProps, emit: any, getTableData: () => void) {\n const { t } = useLocale()\n const rowData = ref({})\n const isShowDialog = ref(false)\n const isShowDrawer = ref(false)\n const { proxy: ctx } = getCurrentInstance() as ComponentInternalInstance\n const currentMode = ref<'add' | 'view' | 'edit'>('add')\n\n const refreshAfterRequest = () => {\n const tableRef = ctx!.$refs.zTableRef as typeof ElTable\n tableRef.clearSelection()\n tableRef.clearSort()\n tableRef.clearFilter()\n getTableData()\n }\n\n const renderEdit = () => {\n return {\n label: (props.edit as CrudOperation)?.referenceLabel || t('common.edit'),\n type: 'primary',\n link: true,\n icon: markRaw(EditPen),\n disabled: (props.edit as CrudOperation)?.referenceDisabled,\n hide: (props.edit as CrudOperation)?.referenceHide,\n onClick: ({ row }: TableColumnScopeData) => {\n rowData.value = row\n currentMode.value = 'edit'\n isShowDialog.value = true\n },\n }\n }\n\n const renderDelete = () => {\n return {\n label: (props.delete as CrudOperation)?.referenceLabel || t('common.delete'),\n type: 'danger',\n link: true,\n icon: markRaw(Delete),\n disabled: (props.delete as CrudOperation)?.referenceDisabled,\n hide: (props.delete as CrudOperation)?.referenceHide,\n onClick: ({ row }: TableColumnScopeData) => {\n rowData.value = row\n if (isFunction(props.delete))\n props.delete({ row, tableRef: ctx!.$refs.zTableRef as typeof ZTable, getTableData })\n\n if (props.request?.deleteApi) {\n const dialogTipProps: CrudDeleteDialogTipProps = isObject(props.delete) ? props.delete as CrudDeleteDialogTipProps : {} as CrudDeleteDialogTipProps\n DialogTip({\n type: 'danger',\n ...dialogTipProps as Omit<CrudDeleteDialogTipProps, 'type'>,\n message: isFunction(dialogTipProps.message) ? dialogTipProps.message({ row }) : t('crud.deleteTip'),\n onConfirm: isFunction(dialogTipProps.onConfirm)\n ? ({ done, confirmButtonLoading }) => dialogTipProps.onConfirm?.({ done, confirmButtonLoading, row, tableRef: ctx!.$refs.zTableRef as typeof ZTable, getTableData })\n : async ({ done, confirmButtonLoading }: { done: () => void, confirmButtonLoading: Ref<boolean> }) => {\n const dataKey = props.dataKey\n confirmButtonLoading.value = true\n try {\n await props.request?.deleteApi?.({ [dataKey]: row[dataKey], row })\n confirmButtonLoading.value = false\n done()\n ElMessage.success(t('common.success'))\n refreshAfterRequest()\n }\n catch (error) { }\n confirmButtonLoading.value = false\n },\n })\n }\n emit('operate-delete', { row, tableRef: ctx!.$refs.zTableRef as typeof ZTable, getTableData })\n },\n }\n }\n\n const renderView = () => {\n return {\n label: (props.detail as CrudOperation)?.referenceLabel || t('common.view'),\n type: 'primary',\n link: true,\n icon: markRaw(View),\n disabled: (props.detail as CrudOperation)?.referenceDisabled,\n hide: (props.detail as CrudOperation)?.referenceHide,\n onClick: ({ row }: TableColumnScopeData) => {\n if (isFunction(props.detail)) {\n props.detail({ row, tableRef: ctx!.$refs.zTableRef as typeof ZTable })\n }\n if (props.onOperateView) {\n emit('operate-view', { row, tableRef: ctx!.$refs.zTableRef as typeof ZTable })\n return\n }\n rowData.value = row\n isShowDrawer.value = true\n },\n }\n }\n\n const tableColumns = computed(() => {\n const columns = props.columns?.filter((column: CrudCol) => COLUMN_TYPE_FIELDS.some(key => column[key])) || []\n if (props.action && (props.detail !== false || props.edit !== false || props.delete !== false)) {\n const buttons = [props.detail !== false && renderView(), props.edit !== false && renderEdit(), props.delete !== false && renderDelete()].filter(item => item)\n return columns.concat([\n {\n type: 'button',\n label: t('table.action'),\n fixed: 'right',\n width: buttons.length * 60,\n buttons,\n },\n ])\n }\n return columns\n })\n\n return { tableColumns, isShowDialog, rowData, currentMode, isShowDrawer, refreshAfterRequest }\n}\n"],"names":["useTableColumns","props$1","emit","getTableData","t","useLocale","rowData","vue","isShowDialog","isShowDrawer","ctx","currentMode","refreshAfterRequest","tableRef","renderEdit","_a","iconsVue","_b","_c","row","renderDelete","is","dialogTipProps","dialog","done","confirmButtonLoading","dataKey","elementPlus","renderView","columns","column","props","key","buttons","item"],"mappings":"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"}