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 • 15 kB
Source Map (JSON)
{"version":3,"file":"Table.mjs","sources":["../../../../../packages/element/table/src/Table.tsx"],"sourcesContent":["import { cloneDeep } from 'lodash-es'\nimport { Plus } from '@element-plus/icons-vue'\nimport { isFunction, isObject, isString } from '@ideaz/utils'\nimport { ElButton, ElForm, ElPagination, ElTable, ElWatermark } from 'element-plus'\nimport { getCurrentInstance } from 'vue'\nimport type { ComponentInternalInstance } from 'vue'\nimport { draggable, sticky } from '../../../directives'\nimport {\n useDraggable,\n usePagination,\n useTableColumns,\n useTableMethods,\n useTableSlots,\n useMergeCells,\n} from './hooks'\nimport TableColumn from './TableColumn'\nimport ToolBar from './ToolBar'\nimport { tableProps, tableProvideKey } from './props'\n\nexport default defineComponent({\n name: 'ZTable',\n components: { TableColumn, ToolBar },\n directives: { draggable, sticky },\n inheritAttrs: false,\n props: tableProps,\n emits: ['refresh', 'radio-change', 'update:data', 'update:pagination', 'drag-sort-end', 'drag-column-end'],\n setup(props, { emit, slots, expose }) {\n const { proxy: ctx } = getCurrentInstance() as ComponentInternalInstance\n const {\n setCurrentRow,\n toggleRowSelection,\n clearSelection,\n clearFilter,\n toggleAllSelection,\n toggleRowExpansion,\n clearSort,\n toggleRadioSelection,\n sort,\n } = useTableMethods()\n\n expose({\n setCurrentRow,\n toggleRowSelection,\n clearSelection,\n clearFilter,\n toggleAllSelection,\n toggleRowExpansion,\n clearSort,\n toggleRadioSelection,\n sort,\n })\n const {\n pagination,\n paginationAttrs,\n tableAttributes,\n tableData,\n addTableData,\n handleCurrentChange,\n handleSizeChange,\n handleRefresh,\n } = usePagination(props, emit)\n const {\n formatTableCols,\n middleTableCols,\n sortTableCols,\n originFormatTableCols,\n tableKey,\n zTableFormRef,\n } = useTableColumns(props, emit, tableData)\n const { scopedSlots, tableSlots } = useTableSlots(formatTableCols, slots)\n const { draggableOptions, dragging } = useDraggable(emit, tableData, middleTableCols)\n const { spanMethod } = useMergeCells(props)\n const ns = useNamespace('table')\n const { t } = useLocale()\n const size = ref(props.size)\n\n provide(tableProvideKey, computed(() => {\n return {\n ...toRefs(props),\n size: size.value,\n }\n }))\n\n const renderPagination = () => {\n const paginationAlign = isObject(pagination.value) ? pagination.value.align || 'right' : 'right'\n const paginationDom = (\n <ElPagination\n class={ns.e('pagination')}\n background\n size=\"small\"\n {...paginationAttrs.value}\n currentPage={pagination.value.page}\n total={pagination.value.total}\n onUpdate:current-page={handleCurrentChange}\n onUpdate:page-size={handleSizeChange}\n />\n )\n return pagination.value.pageSize\n ? (\n <div class={ns.be('pagination', 'container')}>\n <div class={ns.bm('pagination', 'top')}>\n {isFunction(slots.paginationTop) ? slots.paginationTop() : null}\n </div>\n <div class={[ns.bm('pagination', 'middle')]}>\n <div class={ns.bm('pagination', 'left')}>\n {isFunction(slots.paginationLeft) ? slots.paginationLeft() : null}\n {paginationAlign === 'left' && paginationDom}\n </div>\n <div class={[ns.bm('pagination', 'center')]}>\n {paginationAlign === 'center' && paginationDom}\n </div>\n <div class={[ns.bm('pagination', 'right')]}>\n {paginationAlign === 'right' && paginationDom}\n {isFunction(slots.paginationRight) ? slots.paginationRight() : null}\n </div>\n </div>\n <div class={ns.bm('pagination', 'bottom')}>\n {isFunction(slots.paginationBottom) ? slots.paginationBottom() : null}\n </div>\n </div>\n )\n : null\n }\n\n const renderToolBar = () => {\n const { toolBar, title } = props\n const tableTitle = slots.tableTitle?.() || (isFunction(title) ? title() : title) || null\n\n return (\n <div\n class={ns.be('tool-bar', 'container')}\n style={{\n marginBottom: (toolBar || isFunction(slots.tableTop)) ? '16px' : 0,\n }}\n >\n <div class={ns.bm('tool-bar', 'center')}>\n <div class={ns.bm('tool-bar', 'center-content')}>\n <div class={ns.e('title')}>\n {tableTitle}\n </div>\n <div class={ns.bm('tool-bar', 'left')}>\n {isFunction(slots.toolBarLeft) ? slots.toolBarLeft() : null}\n </div>\n </div>\n {toolBar && (\n <ToolBar\n formatTableCols={formatTableCols.value}\n middleTableCols={middleTableCols.value}\n originFormatTableCols={originFormatTableCols.value}\n sortTableCols={sortTableCols.value}\n size={size.value}\n toolBar={props.toolBar}\n tableProps={{ ...props, fullScreenElement: props.fullScreenElement || (() => ctx!.$refs.containerRef as HTMLElement) }}\n onColumns-change={(data) => {\n middleTableCols.value = cloneDeep(data)\n tableKey.value = new Date().valueOf()\n }}\n onSize-change={(val) => {\n size.value = val\n }}\n onTable-cols-change={(val) => {\n sortTableCols.value = cloneDeep(val)\n tableKey.value = new Date().valueOf()\n }}\n onRefresh={() => handleRefresh()}\n />\n )}\n <div class={ns.bm('tool-bar', 'right')}>\n {isFunction(slots.toolBarRight) ? slots.toolBarRight() : null}\n </div>\n </div>\n <div class={ns.bm('tool-bar', 'bottom')}>\n {isFunction(slots.toolBarBottom) ? slots.toolBarBottom() : null}\n </div>\n </div>\n )\n }\n\n const renderTable = () => {\n const { loading, editable } = props\n return (\n <ElTable\n ref=\"zTableRef\"\n v-loading={loading}\n class={[editable && ns.b('editable'), dragging.value && 'z-table-dragging']}\n v-slots={tableSlots}\n key={tableKey.value}\n v-draggable={draggableOptions}\n v-sticky={isObject(props.sticky) ? { top: '50px', zIndex: 100, ...props.sticky } : undefined}\n {...{ ...tableAttributes.value, spanMethod: tableAttributes.value.spanMethod || spanMethod, data: tableData.value, size: size.value }}\n >\n {formatTableCols.value.map((item, index) => {\n return (\n <TableColumn\n ref={`zTableColumn${index}`}\n column={item}\n size={size.value}\n key={item.__uid}\n tableProps={tableAttributes.value}\n onRadio-change={(row: any) => emit('radio-change', row)}\n onUpdate:data={(data: any) => emit('update:data', data)}\n columnIndex={index}\n columnsLength={formatTableCols.value.length}\n v-slots={{ ...slots, ...scopedSlots }}\n />\n )\n })}\n </ElTable>\n )\n }\n\n const renderTableDecorator = () => {\n if (isString(props.watermark)) {\n return (\n <ElWatermark content={props.watermark}>\n {renderTable()}\n </ElWatermark>\n )\n }\n if (isObject(props.watermark)) {\n return (\n <ElWatermark {...{ ...props.watermark }}>\n {renderTable()}\n </ElWatermark>\n )\n }\n return renderTable()\n }\n\n const renderContent = () => {\n const { editable } = props\n const position = isObject(editable) ? (editable.position || 'bottom') : 'bottom'\n const maxLength = isObject(editable) ? (editable.maxLength || undefined) : undefined\n if (editable) {\n return (\n <>\n <ElForm\n ref={zTableFormRef}\n model={{ tableData: tableData.value }}\n >\n {renderTableDecorator()}\n </ElForm>\n {position === 'bottom'\n && maxLength !== tableData.value.length\n && (\n <ElButton\n icon={Plus}\n class=\"mt-2 w-full\"\n onClick={() => addTableData()}\n >\n {t('table.addData')}\n </ElButton>\n )}\n </>\n )\n }\n return renderTableDecorator()\n }\n\n const renderTableBottom = () => {\n return <div class={ns.e('bottom')}>{isFunction(slots.tableBottom) ? slots.tableBottom() : null}</div>\n }\n\n const renderTableTop = () => {\n const { toolBar } = props\n return (\n <div class={toolBar ? ns.bm('tool-bar', 'top') : ns.e('top')}>\n {isFunction(slots.tableTop) ? slots.tableTop() : null}\n {!!toolBar && isFunction(slots.toolBarTop) ? slots.toolBarTop() : null}\n </div>\n )\n }\n\n return () => {\n return (\n <div class={ns.b('')} ref=\"containerRef\">\n {renderTableTop()}\n {renderToolBar()}\n {renderContent()}\n {renderPagination()}\n {renderTableBottom()}\n </div>\n )\n }\n },\n})\n"],"names":["_isSlot","s","isVNode","ZTable","defineComponent","name","components","ToolBar","directives","sticky","inheritAttrs","props","emits","expose","proxy","sort","handleRefresh","usePagination","emit","zTableFormRef","tableSlots","useTableSlots","formatTableCols","slots","dragging","spanMethod","useMergeCells","ns","useNamespace","t","size","ref","provide","paginationAlign","isObject","pagination","paginationDom","createVNode","ElPagination","mergeProps","handleCurrentChange","isFunction","title","toolBar","data","middleTableCols","val","sortTableCols","editable","withDirectives","ElTable","tableKey","default","item","row","index","resolveDirective","loading","draggableOptions","top","zIndex","isString","_slot","_slot2","position","maxLength","Fragment","ElForm","tableData","ElButton","Plus","renderTableTop","renderToolBar","renderContent","renderPagination","renderTableBottom"],"mappings":"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"}