UNPKG

yuang-framework-ui-pc

Version:

yuang-framework-ui-pc Library

396 lines (395 loc) 11.8 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const vue = require("vue"); const core = require("../utils/core"); const util = require("../ele-pro-layout/util"); function getRowClass(rowClass, param) { if (rowClass != null) { if (typeof rowClass === "function") { return rowClass(param); } else if (typeof rowClass === "string" && rowClass) { return rowClass; } } } function getBodyRowClass(rowClass, param) { const classes = ["ele-table-tr", "ele-table-tr-" + param.row.id]; const custom = getRowClass(rowClass, param); if (custom != null) { classes.push(custom); } return classes.join(" "); } function getHeadRowClass(rowClass, param, ellipsis) { const classes = ["ele-table-head-tr"]; if (ellipsis) { classes.push("is-ellipsis"); } const custom = getRowClass(rowClass, param); if (custom != null) { classes.push(custom); } return classes.join(" "); } function getGlobalTooltipProps(showOverflowTooltip, tooltipEffect, tooltipOptions) { if (!showOverflowTooltip) { return false; } return { effect: tooltipEffect, ...tooltipOptions || {}, ...showOverflowTooltip === true ? {} : showOverflowTooltip }; } function mergeTooltipProps(props, globalProps) { if (props === false || props == null && !globalProps) { return false; } return { ...!globalProps || globalProps === true ? {} : globalProps, ...!props || props === true ? {} : props }; } function getTooltipProps(props, globalProps) { const opt = mergeTooltipProps(props, globalProps); if (!opt) { return false; } const classes = ["ele-popper", "ele-tooltip", "ele-table-tooltip"]; if (opt.popperClass) { classes.push(opt.popperClass); } opt.popperClass = classes.join(" "); return opt; } function toggleRowSelectionPro(tableRef, row, selected) { var _a, _b; if (tableRef == null) { return; } const store = (_a = vue.unref(tableRef)) == null ? void 0 : _a.store; const selection = vue.unref((_b = store == null ? void 0 : store.states) == null ? void 0 : _b.selection); const index = selection.indexOf(row); const included = index !== -1; if (selected && !included) { selection.push(row); } else if (!selected && included) { selection.splice(index, 1); } store.updateAllSelected(); } function getTableFilter(tableRef) { var _a, _b; const states = (_b = (_a = vue.unref(tableRef)) == null ? void 0 : _a.store) == null ? void 0 : _b.states; const columns = vue.unref(states == null ? void 0 : states.columns); const filters = vue.unref(states == null ? void 0 : states.filters); if (!filters || !columns) { return; } const keys = Object.keys(filters); const filter = {}; columns.forEach((col) => { if (keys.includes(col.id)) { filter[col.columnKey || col.id] = filters[col.id]; } }); return filter; } function getStateCols(cols, sorter, filter) { if (!sorter && !filter) { return { cols }; } const filterKeys = filter == null ? [] : Object.keys(filter); const hasSorter = sorter != null && sorter.prop != null && sorter.prop != ""; let hasSortCol = false; const result = core.mapTree(cols, (col) => { if (hasSorter && col.prop === sorter.prop) { hasSortCol = true; } const filterProp = col.columnKey ?? col.prop; const flag = filterProp ? filterKeys.includes(filterProp) : false; const filtered = flag && filter ? filter[filterProp] : void 0; return { ...col, filteredValue: filtered ?? col.filteredValue }; }); return { cols: result, sorter: hasSorter && hasSortCol ? sorter : void 0 }; } function getSelectableFunction(columns) { const col = core.findTree(columns, (c) => c.type === "selection"); if (col != null) { return typeof col.selectable === "function" ? col.selectable : null; } } function isDisableRow(row, index, columns) { const selectable = getSelectableFunction(columns); if (typeof selectable === "undefined") { return true; } return !(selectable == null || selectable(row, index) === true); } function isReserveChecked(columns) { let isReserve = false; core.eachTree(columns, (col) => { if (col.type === "selection") { isReserve = !!col.reserveSelection; return false; } }); return isReserve; } function getColFixedNumber(fixed) { if (fixed === true || fixed === "left") { return 0; } if (fixed === "right") { return 2; } return 1; } function getCellClass(col) { const classes = []; if (col.type === "index") { classes.push("is-index"); } if (col.className) { classes.push(col.className); } return classes.length ? classes.join(" ") : void 0; } function getFilterPopperClass(filterClassName) { const classes = ["ele-table-filter-popper"]; if (filterClassName) { classes.push(filterClassName); } return classes.join(" "); } function getRowKeys(rows, rowKey) { const keys = []; if (rows) { rows.forEach((row) => { const key = core.getValue(row, rowKey); if (key != null) { keys.push(key); } }); } return keys; } function getRowByKey(key, data, rowKey, childrenField) { return core.findTree(data, (d) => core.getValue(d, rowKey) === key, childrenField); } function getKeysAndList(data, rowKey, childrenField) { const keys = []; const list = []; core.eachTree( data, (d) => { keys.push(core.getValue(d, rowKey)); list.push(d); }, childrenField ); return [keys, list]; } function valueIsChanged(value1, value2) { return !(value1 == null && value2 == null || value1 === value2); } function arrayIsChanged(list1, list2) { const isEmpty1 = list1 == null || !list1.length; const isEmpty2 = list2 == null || !list2.length; if (isEmpty1 && isEmpty2) { return false; } if (isEmpty1 !== isEmpty2) { return true; } if (list1.length !== list2.length) { return true; } return list1.some((k) => !list2.includes(k)); } function useStickyHeader() { const layoutState = util.useLayoutState(); const isLayoutFixedHead = vue.computed(() => layoutState.fixedHeader); const isLayoutMaximized = vue.computed( () => layoutState.maximized && layoutState.maximized !== "expanded" ); return { isLayoutFixedHead, isLayoutMaximized }; } function useMethods(getInstance) { const methods = { clearSelection: () => { const ins = getInstance(); ins && ins.clearSelection(); }, getSelectionRows: () => { const ins = getInstance(); if (ins) { return ins.getSelectionRows(); } }, toggleRowSelection: (row, selected) => { const ins = getInstance(); ins && ins.toggleRowSelection(row, selected); }, toggleAllSelection: () => { const ins = getInstance(); ins && ins.toggleAllSelection(); }, toggleRowExpansion: (row, expanded) => { const ins = getInstance(); ins && ins.toggleRowExpansion(row, expanded); }, setCurrentRow: (row) => { const ins = getInstance(); ins && ins.setCurrentRow(row); }, clearSort: () => { const ins = getInstance(); ins && ins.clearSort(); }, clearFilter: (columnKeys) => { const ins = getInstance(); ins && ins.clearFilter(columnKeys); }, doLayout: () => { const ins = getInstance(); ins && ins.doLayout(); }, sort: (prop, order) => { const ins = getInstance(); ins && ins.sort(prop, order); }, scrollTo: (options, yCoord) => { const ins = getInstance(); ins && ins.scrollTo(options, yCoord); }, setScrollTop: (top) => { const ins = getInstance(); ins && ins.setScrollTop(top); }, setScrollLeft: (left) => { const ins = getInstance(); ins && ins.setScrollLeft(left); }, /** 新增的实例方法 */ setCurrentRowKey: (key) => { const ins = getInstance(); ins && ins.setCurrentRowKey(key); }, getCurrentRow: () => { const ins = getInstance(); if (ins) { return ins.getCurrentRow(); } }, setSelectedRows: (rows) => { const ins = getInstance(); ins && ins.setSelectedRows(rows); }, setSelectedRowKeys: (keys, rows) => { const ins = getInstance(); ins && ins.setSelectedRowKeys(keys, rows); }, toggleRowExpansionAll: (expanded) => { const ins = getInstance(); ins && ins.toggleRowExpansionAll(expanded); }, updateSelectedAndChecked: () => { const ins = getInstance(); ins && ins.updateSelectedAndChecked(); }, updateKeyChildren: (key, rows) => { const ins = getInstance(); ins && ins.updateKeyChildren(key, rows); } }; return methods; } function useEmits(emit) { return { onSelect: (selection, row) => { emit("select", selection, row); }, onSelectAll: (selection) => { emit("selectAll", selection); }, onCellMouseEnter: (row, column, cell, event) => { emit("cellMouseEnter", row, column, cell, event); }, onCellMouseLeave: (row, column, cell, event) => { emit("cellMouseLeave", row, column, cell, event); }, onCellClick: (row, column, cell, event) => { emit("cellClick", row, column, cell, event); }, onCellDblclick: (row, column, cell, event) => { emit("cellDblclick", row, column, cell, event); }, onCellContextmenu: (row, column, cell, event) => { emit("cellContextmenu", row, column, cell, event); }, onRowClick: (row, column, event) => { emit("rowClick", row, column, event); }, onRowContextmenu: (row, column, event) => { emit("rowContextmenu", row, column, event); }, onRowDblclick: (row, column, event) => { emit("rowDblclick", row, column, event); }, onHeaderClick: (column, event) => { emit("headerClick", column, event); }, onHeaderContextmenu: (column, event) => { emit("headerContextmenu", column, event); }, onHeaderDragend: (newWidth, oldWidth, column, event) => { emit("headerDragend", newWidth, oldWidth, column, event); }, onExpandChange: (row, expanded) => { emit("expandChange", row, expanded); }, onSelectionChange: (selection) => { emit("selectionChange", selection); }, onSortChange: (sorter) => { emit("sortChange", sorter); }, onFilterChange: (filter) => { emit("filterChange", filter); }, onCurrentChange: (currentRow, oldCurrentRow) => { emit("currentChange", currentRow, oldCurrentRow); }, /** 新增的事件 */ "onUpdate:currentRowKey": (currentRowKey) => { emit("update:currentRowKey", currentRowKey); }, "onUpdate:selectedRowKeys": (selectedRowKeys) => { emit("update:selectedRowKeys", selectedRowKeys); } }; } exports.arrayIsChanged = arrayIsChanged; exports.getBodyRowClass = getBodyRowClass; exports.getCellClass = getCellClass; exports.getColFixedNumber = getColFixedNumber; exports.getFilterPopperClass = getFilterPopperClass; exports.getGlobalTooltipProps = getGlobalTooltipProps; exports.getHeadRowClass = getHeadRowClass; exports.getKeysAndList = getKeysAndList; exports.getRowByKey = getRowByKey; exports.getRowClass = getRowClass; exports.getRowKeys = getRowKeys; exports.getSelectableFunction = getSelectableFunction; exports.getStateCols = getStateCols; exports.getTableFilter = getTableFilter; exports.getTooltipProps = getTooltipProps; exports.isDisableRow = isDisableRow; exports.isReserveChecked = isReserveChecked; exports.mergeTooltipProps = mergeTooltipProps; exports.toggleRowSelectionPro = toggleRowSelectionPro; exports.useEmits = useEmits; exports.useMethods = useMethods; exports.useStickyHeader = useStickyHeader; exports.valueIsChanged = valueIsChanged;