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 • 17.3 kB
Source Map (JSON)
{"version":3,"file":"Crud.mjs","sources":["../../../../../packages/element/crud/src/Crud.tsx"],"sourcesContent":["import { ElAlert, ElButton, ElDrawer, ElWatermark, useAttrs } from 'element-plus'\nimport { omit } from 'lodash-unified'\nimport { Delete, Download, Plus } from '@element-plus/icons-vue'\nimport { isFunction, isObject, isString } from '@ideaz/utils'\nimport type { ComponentInternalInstance } from 'vue'\nimport { withKeys } from 'vue'\nimport { useFormMethods } from '../../form/src/hooks'\nimport {\n useTableMethods,\n} from '../../table/src/hooks'\nimport ZFilterForm from '../../form/src/FilterForm'\nimport ZDescription from '../../descriptions/src/index'\nimport ZDialog from '../../dialog/src/index'\nimport ZForm from '../../form/src/BaseForm'\nimport ZTable from '../../table/src/Table'\nimport type { Pagination } from '../../types'\nimport { useDataRequest, useDescriptions, useDialogConfig, useDrawerConfig, useFormColumns, useSelectionData } from './hooks'\nimport type { AlertConfig } from './props'\nimport { EXCLUDE_FORM_PROPS_KEYS, crudProps, crudProvideKey } from './props'\n\nexport default defineComponent({\n name: 'ZCrud',\n props: crudProps,\n emits: ['update:formData', 'update:pagination', 'search', 'reset', 'refresh', 'operate-submit', 'operate-delete', 'operate-view', 'operate-cancel', 'sort-change', 'update:data', 'update:editFormData', 'update:addFormData', 'update:selectionData', 'update:loading', 'selection-change', 'radio-change'],\n setup(props, { emit, slots, expose }) {\n const attrs = useAttrs()\n const {\n setCurrentRow,\n toggleRowSelection,\n clearSelection,\n clearFilter,\n toggleAllSelection,\n toggleRowExpansion,\n clearSort,\n toggleRadioSelection,\n sort,\n } = useTableMethods()\n const {\n resetFields,\n validate,\n validateField,\n clearValidate,\n scrollToField,\n } = useFormMethods()\n const {\n handleSearch,\n tableProps,\n handleReset,\n handleKeyDown,\n handlePaginationChange,\n handleSortChange,\n middleFormData,\n handleRadioChange,\n handleExport,\n getTableData,\n isShowDialog,\n rowData,\n currentMode,\n isShowDrawer,\n refreshAfterRequest,\n } = useDataRequest(props, emit)\n const { selectionData, isSelection, handleCheckboxChange, handleCloseAlert, handleMultipleDelete } = useSelectionData(props, emit, tableProps, refreshAfterRequest, getTableData)\n const { addFormColumns, editFormColumns, searchFormColumns, detailColumns } = useFormColumns(props)\n const {\n dialogProps,\n dialogFormData,\n dialogForm,\n isOperateFormLoading,\n handleCancel,\n handleConfirm,\n handleDialogClosed,\n handleDialogOpen,\n } = useDialogConfig(props, emit, currentMode, isShowDialog, rowData)\n const { drawerProps, isDescLoading, viewData, handleDrawerOpen } = useDrawerConfig(props)\n const { descriptionColumns, descriptionProps } = useDescriptions(props)\n const ns = useNamespace('crud')\n const { t } = useLocale()\n const size = useFormSize()\n\n provide(crudProvideKey, computed(() => {\n return {\n ...toRefs(props),\n size: tableProps.value.size,\n }\n }))\n\n provide(crudProvideKey, computed(() => {\n return {\n ...toRefs(props),\n size: tableProps.value.size,\n }\n }))\n\n expose({\n resetFields,\n validate,\n validateField,\n clearValidate,\n scrollToField,\n\n setCurrentRow,\n toggleRowSelection,\n clearSelection,\n clearFilter,\n toggleAllSelection,\n toggleRowExpansion,\n clearSort,\n toggleRadioSelection,\n sort,\n getTableData,\n })\n\n const { proxy: ctx } = getCurrentInstance() as ComponentInternalInstance\n\n const renderDecorator = (decoratorProps: any) => {\n const nativeTags = ['div', 'span', 'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6']\n const isNativeTag = nativeTags.includes(decoratorProps.name)\n const name = decoratorProps.name ? isNativeTag ? decoratorProps.name : resolveComponent(decoratorProps.name) : resolveComponent('el-card')\n return h(name, omit(decoratorProps, ['children', 'name']), isNativeTag ? decoratorProps.children() : decoratorProps.children)\n }\n\n const renderAlert = () => {\n const { alert } = props\n if (isFunction(alert))\n return alert(selectionData.value)\n if (isFunction(slots.alert))\n return slots.alert({ selectionData: selectionData.value })\n\n const alertProps = omit(props.alert, ['title', 'description']) as Omit<AlertConfig, 'title' | 'description'>\n return (\n <ElAlert\n type=\"success\"\n close-text={t('crud.unselect')}\n onClose={handleCloseAlert}\n class={ns.b('alert')}\n {...alertProps}\n v-slots={{\n title: isFunction(alert.title)\n ? () => (alert.title as Function)(selectionData.value, ctx!.$refs.zTableRef)\n : () => (alert.title || t('crud.selected') + selectionData.value.length + t('crud.term')),\n default: isFunction(alert.description) ? () => (alert.description as Function)(selectionData.value, ctx!.$refs.zTableRef) : () => (alert.description || ''),\n }}\n />\n )\n }\n\n const renderTable = () => {\n return renderDecorator({\n ...props.tableDecorator,\n class: ns.be('table', 'container'),\n children: () => {\n return (\n <ZTable\n ref=\"zTableRef\"\n {...{ size: size.value, ...tableProps.value }}\n v-slots={{\n ...slots,\n toolBarLeft: () => {\n return (\n <>\n {slots.toolBarLeft && slots.toolBarLeft()}\n {props.action && props.add && (\n <ElButton\n size={size.value}\n type=\"primary\"\n icon={Plus}\n onClick={() => {\n currentMode.value = 'add'\n isShowDialog.value = true\n }}\n >\n {t('crud.add')}\n </ElButton>\n )}\n {!!props.export && <ElButton size={size.value} type=\"primary\" icon={Download} class={ns.e('export')} onClick={handleExport}>{t('crud.export')}</ElButton>}\n {!!isSelection.value && props.delete && props.action && (\n <ElButton\n plain\n size={size.value}\n type=\"danger\"\n class={ns.e('multiple-delete')}\n icon={Delete}\n onClick={handleMultipleDelete}\n >\n {t('crud.multipleDelete')}\n </ElButton>\n )}\n </>\n )\n },\n toolBarBottom: () => {\n if (isSelection.value && props.action && props.alert)\n return renderAlert()\n\n return slots.toolBarBottom?.()\n },\n }}\n onUpdate:pagination={(pagination: Pagination) => emit('update:pagination', pagination)}\n onRefresh={handlePaginationChange}\n onSort-change={handleSortChange}\n onSelection-change={handleCheckboxChange}\n onRadio-change={handleRadioChange}\n >\n </ZTable>\n )\n },\n })\n }\n\n const renderSearchForm = () => {\n return searchFormColumns.value?.length > 0 && renderDecorator({\n ...props.formDecorator,\n style: {\n marginBottom: '16px',\n ...props.formDecorator?.style,\n },\n class: ns.be('filter-form', 'container'),\n children: () => (\n <>\n {isFunction(slots.formTop) ? slots.formTop() : null}\n <ZFilterForm\n ref=\"formRef\"\n {...{\n size: size.value,\n labelWidth: '60px',\n ...omit(props.search || {}, EXCLUDE_FORM_PROPS_KEYS),\n columns: searchFormColumns.value,\n ...attrs.value,\n searchButtonLoading: tableProps.value.loading,\n }}\n options={props.options}\n modelValue={middleFormData.value}\n onUpdate:modelValue={(val: any) => { middleFormData.value = val }}\n onSearch={handleSearch}\n onReset={handleReset}\n onKeydown={withKeys((e: KeyboardEvent) => handleKeyDown(e), ['enter'])}\n v-slots={slots}\n >\n </ZFilterForm>\n {isFunction(slots.formBottom) ? slots.formBottom() : null}\n </>\n ),\n })\n }\n\n const renderOperateForm = () => {\n const columns = currentMode.value === 'add' ? addFormColumns.value : currentMode.value === 'edit' ? editFormColumns.value : detailColumns.value\n // const formData = currentMode.value === 'add' ? props.addFormData : currentMode.value === 'edit' ? props.editFormData : rowData.value\n const formProps = omit(props.form || {}, EXCLUDE_FORM_PROPS_KEYS)\n const operateFormProps = currentMode.value === 'add' ? omit(props.add || {}, EXCLUDE_FORM_PROPS_KEYS) : omit(props.edit || {}, EXCLUDE_FORM_PROPS_KEYS)\n return (\n <ZForm\n {...{ size: size.value, labelWidth: '60px', ...formProps, ...operateFormProps }}\n ref={dialogForm}\n columns={columns}\n options={props.options}\n modelValue={dialogFormData.value}\n onUpdate:modelValue={(val: any) => { dialogFormData.value = val }}\n v-loading={isOperateFormLoading.value}\n v-slots={slots}\n >\n\n </ZForm>\n )\n }\n\n const renderDialog = () => {\n return (\n <ZDialog\n modelValue={isShowDialog.value}\n onUpdate:modelValue={(val: boolean) => isShowDialog.value = val}\n {...dialogProps.value}\n onOpen={handleDialogOpen}\n onClosed={handleDialogClosed}\n onConfirm={handleConfirm}\n onCancel={handleCancel}\n >\n {renderOperateForm()}\n </ZDialog>\n )\n }\n\n const renderDrawer = () => {\n return (\n <ElDrawer\n modelValue={isShowDrawer.value}\n onUpdate:modelValue={(val: boolean) => isShowDrawer.value = val}\n {...drawerProps.value}\n onOpen={() => handleDrawerOpen(rowData.value)}\n >\n <ZDescription v-loading={isDescLoading.value} columns={descriptionColumns.value} detail={viewData.value} {...{ size: size.value, ...descriptionProps.value }} />\n </ElDrawer>\n )\n }\n\n const renderMiddleContent = () => {\n return isFunction(slots.crudMiddle) ? slots.crudMiddle() : null\n }\n\n const renderCrudDecorator = () => {\n const content = () => (\n <>\n {renderSearchForm()}\n {renderMiddleContent()}\n {renderTable()}\n </>\n )\n if (isString(props.watermark)) {\n return (\n <ElWatermark content={props.watermark}>\n {content()}\n </ElWatermark>\n )\n }\n if (isObject(props.watermark)) {\n return (\n <ElWatermark {...{ ...props.watermark }}>\n {content()}\n </ElWatermark>\n )\n }\n return content()\n }\n\n return () => {\n // eslint-disable-next-line no-console\n console.log('刷新')\n return (\n <div ref=\"crudRef\" class={ns.b('')}>\n {renderCrudDecorator()}\n {renderDialog()}\n {renderDrawer()}\n </div>\n )\n }\n },\n})\n"],"names":["_isSlot","s","isVNode","Crud","defineComponent","name","props","emits","expose","attrs","useAttrs","sort","scrollToField","refreshAfterRequest","useDataRequest","emit","handleMultipleDelete","useSelectionData","tableProps","getTableData","detailColumns","useFormColumns","handleDialogOpen","useDialogConfig","currentMode","isShowDialog","rowData","handleDrawerOpen","useDrawerConfig","descriptionProps","useDescriptions","ns","useNamespace","t","size","useFormSize","provide","proxy","alert","alertProps","omit","createVNode","ElAlert","mergeProps","handleCloseAlert","title","default","renderDecorator","ZTable","pagination","handlePaginationChange","handleSortChange","handleCheckboxChange","slots","_slot","_slot2","_slot3","Plus","Download","isSelection","ElButton","Delete","renderAlert","_a","style","marginBottom","labelWidth","searchButtonLoading","val","handleSearch","handleReset","isFunction","formProps","EXCLUDE_FORM_PROPS_KEYS","operateFormProps","withDirectives","ZForm","dialogForm","columns","resolveDirective","isOperateFormLoading","_slot4","Dialog","handleDialogClosed","handleConfirm","ElDrawer","isShowDrawer","viewData","isDescLoading","content","Fragment","renderSearchForm","renderMiddleContent","renderTable","isString","_slot5","isObject","_slot6"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAkB4E,SAAAA,EAAAC,GAAA;AAAA,SAAA,OAAAA,KAAA,cAAA,OAAA,UAAA,SAAA,KAAAA,CAAA,MAAA,qBAAA,CAAAC,GAAAD,CAAA;AAAA;AAE5E,MAAAE,KAAA,gBAAAC,GAAA;AAAA,EACEC,MAAAA;AAAAA,EACAC,OAAAA;AAAAA,EACAC,OAAAA,CAAAA,mBAAAA,qBAAAA,UAAAA,SAAAA,WAAAA,kBAAAA,kBAAAA,gBAAAA,kBAAAA,eAAAA,eAAAA,uBAAAA,sBAAAA,wBAAAA,kBAAAA,oBAAAA,cAAAA;AAAAA;;;IAC4BC,QAAAA;AAAAA,EAAO,GAAA;AACjC,UAAAC,IAAAC,GAAA;;;;;;;;;MAUEC,MAAAA;AAAAA;;;;;MAOAC,eAAAA;AAAAA;;;;;;;;;;;;;;;MAiBAC,qBAAAA;AAAAA,IACF,IAAAC,GAAAR,GAAAS,CAAA;;;;;MAC4EC,sBAAAA;AAAAA,IAAqB,IAAAC,GAAAX,GAAAS,GAAAG,GAAAL,IAAAM,CAAA;;;;MACrCC,eAAAA;AAAAA,IAAc,IAAAC,GAAAf,CAAA;;;;;;;;MASxEgB,kBAAAA;AAAAA,IACF,IAAAC,GAAAjB,GAAAS,GAAAS,GAAAC,GAAAC,CAAA;;;;MAC8CC,kBAAAA;AAAAA,IAAiB,IAAAC,GAAAtB,CAAA;;MACnCuB,kBAAAA;AAAAA,IAAiB,IAAAC,GAAAxB,CAAA,GAC7CyB,IAAAC,GAAA,MAAA;MACQC,GAAAA;AAAAA,cACRC,IAAAC,GAAA;AAEAC,IAAAA,EAAAA,GAAAA,EAAAA;;MAGIF,MAAAA,EAAAA,MAAAA;AAAAA,MAEJ,CAAA,GAEAE,EAAAA,GAAAA,EAAAA;;MAGIF,MAAAA,EAAAA,MAAAA;AAAAA,MAEJ,CAAA,GAEA1B,EAAAA;AAAAA;;;;;;;;;;;;;;MAgBEW,cAAAA;AAAAA,IACF,CAAA;;MAEQkB,OAAAA;AAAAA;;;;;QAUEC,OAAAA;AAAAA,MAAM,IAAAhC;;;;MAI4C,CAAA;AAE1D,YAAAiC,IAAAC,EAAAlC,EAAA,OAAA,CAAA,SAAA,aAAA,CAAA;AACA,aAAAmC,EAAAC,IAAAC,EAAA;AAAA,QAAA,MAAA;AAAA;QAGkC,SAAAC;AAAA,QACL,OAAAb,EAAA,EAAA,OAAA;AAAA,MACL,GAAAQ,CAAA,GAAA;AAAA,QAGlBM,OAAAA,EAAAA,EAAAA,KAAAA,IAAAA,MAAAA,EAAAA,MAAAA,EAAAA,OAAAA,EAAAA,MAAAA,SAAAA,IAAAA,MAAAA,EAAAA,SAAAA,EAAAA,eAAAA,IAAAA,EAAAA,MAAAA,SAAAA,EAAAA,WAAAA;AAAAA,QAGAC,SAAAA,EAAAA,EAAAA,WAAAA,IAAAA,MAAAA,EAAAA,YAAAA,EAAAA,OAAAA,EAAAA,MAAAA,SAAAA,IAAAA,MAAAA,EAAAA,eAAAA;AAAAA;kBAONC,EAAA;AAAA;;sBAIIN,EAAAO,IAAAL,EAAA;AAAA,QAAA,KAAA;AAAA,MAAA,GAAA;AAAA;QAG4B,GAAAzB,EAAA;AAAA,MAAmB,GAAA;AAAA,QAAA,uBAAA,CAAA+B,MAAAlC,EAAA,qBAAAkC,CAAA;AAAA,QA2C2C,WAAAC;AAAA,QACrD,iBAAAC;AAAA,QACF,sBAAAC;AAAA;;QA3C7B,GAAAC;AAAA;AACmB,cAAAC,GAAAC,GAAAC;;;YAMO,MAAA;AAAA,YAAA,MAAAC;AAAA,YAEN,SAAA,MAAA;;YAIV;AAAA;;;;YAKyC,MAAA;AAAA,YAAA,MAAAC;AAAA,YAA+B,OAAA3B,EAAA,EAAA,QAAA;AAAA;;;UAAiE,CAAA,GAAA,CAAA,CAAA4B,EAAA,SAAArD,EAAA,UAAAA,EAAA,UAAAmC,EAAAmB,GAAA;AAAA,YACzF,OAAA;AAAA;YAGhC,MAAA;AAAA,YAAA,OAAA7B,EAAA,EAAA,iBAAA;AAAA,YAEc,MAAA8B;AAAA;;;;;;;AAWtC,iBAAAF,EAAA,SAAArD,EAAA,UAAAA,EAAA,QAAAwD,GAAA,KAGAC,IAAAV,EAAA,kBAAA,gBAAAU,EAAA,KAAAV;AAAA,QACF;AAAA;IAWV,CAAA;;;;QAMEW,OAAAA;AAAAA,UACEC,cAAAA;AAAAA;;;;UAMqD,KAAA;AAAA,QAAA,GAAA;AAAA;UAK/CC,YAAAA;AAAAA;;;UAIAC,qBAAAA,EAAAA,MAAAA;AAAAA,QAA6C,GAAA;AAAA;;UAGf,uBAAA,CAAAC,MAAA;;;UACiC,UAAAC;AAAA,UAC3C,SAAAC;AAAA;QAEgD,CAAA,GAAAjB,CAAA,GAAAkB,EAAAlB,EAAA,UAAA,IAAAA,EAAA,WAAA,IAAA,IAAA,CAAA;AAAA,MAO9E,CAAA;AAAA;yFAMAmB,IAAAhC,EAAAlC,EAAA,QAAA,CAAA,GAAAmE,CAAA,GACAC,IAAAlD,EAAA,UAAA,QAAAgB,EAAAlC,EAAA,OAAA,CAAA,GAAAmE,CAAA,IAAAjC,EAAAlC,EAAA,QAAA,CAAA,GAAAmE,CAAA;AACA,aAAAE,EAAAlC,EAAAmC,IAAAjC,EAAA;AAAA;QAE4BuB,YAAAA;AAAAA,QAAoB,GAAAM;AAAA;MAAiC,GAAA;AAAA,QAAA,KAAAK;AAAA,QAC9D,SAAAC;AAAA;;QAGiB,uBAAA,CAAAV,MAAA;;QACgC;AAAA,MAAC,CAAA,GAAAf,CAAA,GAAA,CAAA,CAAA0B,EAAA,SAAA,GAAAC,GAAA,KAAA,CAAA,CAAA;AAAA;AAS5C,UAAAC;AACzB,aAAAxC,EAAAyC,IAAAvC,EAAA;AAAA;QAEkC,uBAAA,CAAAyB,MAAA3C,EAAA,QAAA2C;AAAA;QAET,QAAA9C;AAAA,QACG,UAAA6D;AAAA,QACI,WAAAC;AAAA;;;MAIR,CAAA;AAAA,kBAMxB3C,EAAA4C,IAAA1C,EAAA;AAAA;MAEkC,uBAAA,CAAAyB,MAAAkB,EAAA,QAAAlB;AAAA;MAET,QAAA,MAAAzC,GAAAD,EAAA,KAAA;AAAA,IACwB,CAAA,GAAA;AAAA;;QAEkC,QAAA6D,GAAA;AAAA,MAAwB,GAAA;AAAA;QAA0B,GAAA1D,GAAA;AAAA,MAAyB,CAAA,GAAA,IAAA,GAAA,CAAA,CAAAkD,EAAA,SAAA,GAAAS,GAAA,KAAA,CAAA,CAAA,CAAA;AAAA,IAA9G,CAAA,cAMhDjB,EAAAlB,EAAA,UAAA,IAAAA,EAAA,WAAA,IAAA;AAIA,YAAAoC,IAAA,MAAAhD,EAAAiD,GAAA,MAAA,CAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,CAAA,CAAA;AAOA,UAAAC,GAAAxF,EAAA,SAAA,GAAA;AAA+B,YAAAyF;;UAC7B,SAAAzF,EAAA;AAAA;;QAEc,CAAA;AAAA,MAGhB;AACA,UAAA0F,GAAA1F,EAAA,SAAA,GAAA;AAA+B,YAAA2F;;UAER,GAAA3F,EAAA;AAAA;;QACP,CAAA;AAAA,MAGhB;;;AAIF,WAAA,MAGEmC,EAAA,OAAA;AAAA,MAAA,KAAA;AAAA,MAAA,OAAAV,EAAA,EAAA,EAAA;AAAA;EAQJ;AACF,CAAA;"}