import { addClass, cell_default, checkTargetElement, clearTableAllStatus, colToVisible, convertHeaderColumnToRows, convertHeaderToGridRows, createHandleGetRowId, createHandleUpdateRowId, createInternalData, getAbsolutePos, getCalcHeight, getCellRestHeight, getCellValue, getColReMinWidth, getColumnList, getDomNode, getEventTargetNode, getLastChildColumn, getPaddingTopBottomSize, getPropClass, getRefElem, getRootColumn, getRowUniqueId, getRowid, getRowkey, getTpImg, handleFieldOrColumn, handleRowidOrRow, hasClass, hasControlKey, hasDeepKey, initTpImg, isColumnInfo, isPx, isScale, removeClass, restoreScrollLocation, rowToVisible, scrollToView, setCellValue, setScrollLeft, setScrollTop, toCssUnit, toFilters, toTreePathSeq, triggerEvent, updateCellTitle } from "./chunk-W4BZ55WN.js"; import { defineVxeComponent, errLog, getChangeEvent, getModelEvent, getOnName, getSlotVNs, hasInputType, warnLog } from "./chunk-GPQQMF6N.js"; import { eqEmptyValue, formatText, getFuncText, getLastZIndex, hasChildrenList, isEmptyValue, isEnableConf, nextZIndex, parseFile } from "./chunk-Z4MEN7AG.js"; import { VxeUI, require_xe_utils } from "./chunk-YJNUXQVJ.js"; import { Teleport, TransitionGroup, computed, h, inject, nextTick, onActivated, onBeforeUnmount, onDeactivated, onMounted, onUnmounted, provide, reactive, ref, resolveComponent, watch } from "./chunk-AAHVYXXY.js"; import { __toESM } from "./chunk-V4OQ3NZ2.js"; // ../node_modules/.pnpm/vxe-table@4.17.14_vue@3.5.24_typescript@5.9.3_/node_modules/vxe-table/es/table/src/table.js var import_xe_utils18 = __toESM(require_xe_utils()); // ../node_modules/.pnpm/vxe-table@4.17.14_vue@3.5.24_typescript@5.9.3_/node_modules/vxe-table/es/table/src/anime.js var import_xe_utils = __toESM(require_xe_utils()); var rowMoveCls = "row--drag-move"; var colMoveClass = "col--drag-move"; function moveRowAnimateToTb(elemList, offsetTop) { import_xe_utils.default.arrayEach(elemList, (trEl) => { trEl.style.transform = `translateY(${offsetTop}px)`; }); requestAnimationFrame(() => { import_xe_utils.default.arrayEach(elemList, (trEl) => { addClass(trEl, rowMoveCls); trEl.style.transform = ""; }); }); } function clearRowAnimate(elem, clss) { setTimeout(() => { if (elem) { import_xe_utils.default.arrayEach(elem.querySelectorAll(clss.map((cls) => `${cls}.${rowMoveCls}`).join(",")), (elem2) => removeClass(elem2, rowMoveCls)); } }, 500); } function moveColAnimateToLr(elemList, offsetLeft) { import_xe_utils.default.arrayEach(elemList, (trEl) => { trEl.style.transform = `translateX(${offsetLeft}px)`; }); requestAnimationFrame(() => { import_xe_utils.default.arrayEach(elemList, (trEl) => { addClass(trEl, colMoveClass); trEl.style.transform = ""; }); }); } function clearColAnimate(elem, clss) { setTimeout(() => { if (elem) { import_xe_utils.default.arrayEach(elem.querySelectorAll(clss.map((cls) => `${cls}.${rowMoveCls}`).join(",")), (elem2) => removeClass(elem2, colMoveClass)); } }, 500); } // ../node_modules/.pnpm/vxe-table@4.17.14_vue@3.5.24_typescript@5.9.3_/node_modules/vxe-table/es/table/src/store.js var crossTableDragRowInfo = reactive({ row: null }); function getCrossTableDragRowInfo() { return crossTableDragRowInfo; } // ../node_modules/.pnpm/vxe-table@4.17.14_vue@3.5.24_typescript@5.9.3_/node_modules/vxe-table/es/table/src/body.js var import_xe_utils2 = __toESM(require_xe_utils()); var { getI18n, renderer, renderEmptyElement } = VxeUI; var sourceType = "table"; var renderType = "body"; var body_default = defineVxeComponent({ name: "VxeTableBody", props: { tableData: Array, tableColumn: Array, fixedColumn: Array, fixedType: { type: String, default: "" } }, setup(props) { const $xeTable = inject("$xeTable", {}); const { xID, props: tableProps2, context: tableContext, reactData: tableReactData, internalData: tableInternalData } = $xeTable; const { computeEditOpts, computeMouseOpts, computeCellOffsetWidth, computeAreaOpts, computeDefaultRowHeight, computeEmptyOpts, computeTooltipOpts, computeRadioOpts, computeExpandOpts, computeTreeOpts, computeCheckboxOpts, computeCellOpts, computeValidOpts, computeRowOpts, computeColumnOpts, computeRowDragOpts, computeResizableOpts, computeVirtualXOpts, computeVirtualYOpts, computeIsBodyRenderOptimize } = $xeTable.getComputeMaps(); const refElem = ref(); const refBodyScroll = ref(); const refBodyTable = ref(); const refBodyColgroup = ref(); const refBodyTBody = ref(); const refBodyXSpace = ref(); const refBodyYSpace = ref(); const refBodyEmptyBlock = ref(); const isVMScrollProcess = () => { const { delayHover } = tableProps2; const { lastScrollTime, isDragResize } = tableReactData; return !!(isDragResize || lastScrollTime && Date.now() < lastScrollTime + delayHover); }; const renderLine = (rowid, params, cellHeight) => { const { column } = params; const { treeConfig } = tableProps2; const cellOpts = computeCellOpts.value; const rowOpts = computeRowOpts.value; const defaultRowHeight = computeDefaultRowHeight.value; const treeOpts = computeTreeOpts.value; const { slots, treeNode } = column; const { fullAllDataRowIdData } = tableInternalData; if (treeConfig && treeNode && (treeOpts.showLine || treeOpts.line)) { if (slots && slots.line) { return $xeTable.callSlot(slots.line, params); } const rowRest = fullAllDataRowIdData[rowid]; let rLevel = 0; let prevRow = null; let parentRow = null; let lineHeight = ""; if (rowRest) { rLevel = rowRest.level; prevRow = rowRest.items[rowRest.treeIndex - 1]; parentRow = rowRest.parent; } if (!rLevel && !treeOpts.showRootLine) { return []; } if (prevRow) { const prevRowRest = fullAllDataRowIdData[getRowid($xeTable, prevRow)] || {}; lineHeight = `${prevRowRest.lineHeight || 0}px`; } else if (rLevel && parentRow) { const parentRowRest = fullAllDataRowIdData[getRowid($xeTable, parentRow)] || {}; lineHeight = `calc(-1em + ${Math.floor(cellHeight / 2 + getCellRestHeight(parentRowRest, cellOpts, rowOpts, defaultRowHeight) / 2)}px)`; } return [ h("div", { key: "tl", class: "vxe-tree--line-wrapper" }, [ h("div", { class: "vxe-tree--line", style: { height: lineHeight, bottom: `-${Math.floor(cellHeight / 2)}px`, left: `calc(${rLevel * treeOpts.indent}px + 1em)` } }) ]) ]; } return []; }; const renderTdColumn = (seq, rowid, fixedType, isOptimizeMode, rowLevel, row, rowIndex, $rowIndex, _rowIndex, column, $columnIndex, columns, items) => { const $xeGrid = $xeTable.xeGrid; const $xeGantt = $xeTable.xeGantt; const { columnKey, resizable: allResizable, showOverflow: allShowOverflow, border, height, treeConfig, cellClassName: allCellClassName, cellStyle, align: allAlign, spanMethod, mouseConfig, editConfig, editRules, tooltipConfig, padding: allPadding } = tableProps2; const { tableData, tableColumn, dragRow, overflowX, overflowY, currentColumn, scrollXLoad, scrollYLoad, mergeBodyFlag, calcCellHeightFlag, resizeHeightFlag, resizeWidthFlag, editStore, isAllOverflow, validErrorMaps } = tableReactData; const { fullAllDataRowIdData, fullColumnIdData, mergeBodyCellMaps, visibleColumn, afterFullData, mergeBodyList, scrollXStore, scrollYStore } = tableInternalData; const cellOpts = computeCellOpts.value; const validOpts = computeValidOpts.value; const checkboxOpts = computeCheckboxOpts.value; const editOpts = computeEditOpts.value; const tooltipOpts = computeTooltipOpts.value; const resizableOpts = computeResizableOpts.value; const virtualXOpts = computeVirtualXOpts.value; const virtualYOpts = computeVirtualYOpts.value; const { isAllColumnDrag, isAllRowDrag } = resizableOpts; const rowOpts = computeRowOpts.value; const rowDragOpts = computeRowDragOpts.value; const defaultRowHeight = computeDefaultRowHeight.value; const customCellHeight = calcCellHeightFlag ? cellOpts.height || rowOpts.height : 0; const { disabledMethod: dragDisabledMethod, isCrossDrag, isPeerDrag } = rowDragOpts; const columnOpts = computeColumnOpts.value; const mouseOpts = computeMouseOpts.value; const areaOpts = computeAreaOpts.value; const cellOffsetWidth = computeCellOffsetWidth.value; const { selectCellToRow } = areaOpts; const { type, cellRender, editRender, align, showOverflow, className, treeNode, rowResize, padding, verticalAlign, slots } = column; const { verticalAlign: allVerticalAlign } = cellOpts; const { actived } = editStore; const rowRest = fullAllDataRowIdData[rowid] || {}; const colid = column.id; const colRest = fullColumnIdData[colid] || {}; const renderOpts = editRender || cellRender; const compConf = renderOpts ? renderer.get(renderOpts.name) : null; const compCellClassName = compConf ? compConf.tableCellClassName || compConf.cellClassName : null; const compCellStyle = compConf ? compConf.tableCellStyle || compConf.cellStyle : ""; const showAllTip = tooltipOpts.showAll; const columnIndex = colRest.index; const _columnIndex = colRest._index; const isEdit = isEnableConf(editRender); const resizeHeight = resizeHeightFlag ? rowRest.resizeHeight : 0; let fixedHiddenColumn = overflowX && (fixedType ? column.fixed !== fixedType : !!column.fixed); const isCellPadding = import_xe_utils2.default.eqNull(padding) ? allPadding === null ? cellOpts.padding : allPadding : padding; const cellOverflow = import_xe_utils2.default.eqNull(showOverflow) ? allShowOverflow : showOverflow; const showEllipsis = cellOverflow === "ellipsis"; const showTitle = cellOverflow === "title"; const showTooltip = cellOverflow === true || cellOverflow === "tooltip"; const hasEllipsis = isAllOverflow || showTitle || showTooltip || showEllipsis; const showResizable = import_xe_utils2.default.isBoolean(column.resizable) ? column.resizable : columnOpts.resizable || allResizable; const isCsHeight = !!customCellHeight; const isRsHeight = resizeHeight > 0; let isDirty; const tdOns = {}; const cellAlign = align || (compConf ? compConf.tableCellAlign : "") || allAlign; const cellVerticalAlign = import_xe_utils2.default.eqNull(verticalAlign) ? allVerticalAlign : verticalAlign; const errorValidItem = validErrorMaps[`${rowid}:${colid}`]; const showValidTip = editRules && validOpts.showMessage && (validOpts.message === "default" ? height || tableData.length > 1 : validOpts.message === "inline"); const tdAttrs = { colid }; const cellParams = { $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt, isEdit: false, seq, rowid, row, rowIndex, $rowIndex, _rowIndex, column, columnIndex, $columnIndex, _columnIndex, fixed: fixedType, source: sourceType, type: renderType, isHidden: !!fixedHiddenColumn, level: rowLevel, visibleData: afterFullData, data: tableData, items }; let isRowDragCell = false; let isDisabledDrag = false; if (rowOpts.drag) { isRowDragCell = rowDragOpts.trigger === "row" || column.dragSort && rowDragOpts.trigger === "cell"; } if (isRowDragCell) { isDisabledDrag = !!(dragDisabledMethod && dragDisabledMethod(cellParams)); } if (showTitle || showTooltip || showAllTip || tooltipConfig) { tdOns.onMouseover = (evnt) => { if (!isVMScrollProcess()) { if (showTitle) { updateCellTitle(evnt.currentTarget, column); } else if (showTooltip || showAllTip) { $xeTable.triggerBodyTooltipEvent(evnt, cellParams); } } $xeTable.dispatchEvent("cell-mouseenter", Object.assign({ cell: evnt.currentTarget }, cellParams), evnt); }; } if (showTooltip || showAllTip || tooltipConfig) { tdOns.onMouseleave = (evnt) => { if (!isVMScrollProcess()) { if (showTooltip || showAllTip) { $xeTable.handleTargetLeaveEvent(evnt); } } $xeTable.dispatchEvent("cell-mouseleave", Object.assign({ cell: evnt.currentTarget }, cellParams), evnt); }; } if (isRowDragCell || checkboxOpts.range || mouseConfig) { tdOns.onMousedown = (evnt) => { $xeTable.triggerCellMousedownEvent(evnt, cellParams); }; } if (isRowDragCell) { tdOns.onMouseup = $xeTable.triggerCellMouseupEvent; } tdOns.onClick = (evnt) => { $xeTable.triggerCellClickEvent(evnt, cellParams); }; tdOns.onDblclick = (evnt) => { $xeTable.triggerCellDblclickEvent(evnt, cellParams); }; let isMergeCell = false; let mergeColspan = 1; let mergeRowspan = 1; if (mergeBodyFlag && mergeBodyList.length) { const spanRest = mergeBodyCellMaps[`${_rowIndex}:${_columnIndex}`]; if (spanRest) { const { rowspan, colspan } = spanRest; if (!rowspan || !colspan) { return renderEmptyElement($xeTable); } if (rowspan > 1) { isMergeCell = true; mergeRowspan = rowspan; tdAttrs.rowspan = rowspan; } if (colspan > 1) { isMergeCell = true; mergeColspan = colspan; tdAttrs.colspan = colspan; } } } else if (spanMethod) { const { rowspan = 1, colspan = 1 } = spanMethod(cellParams) || {}; if (!rowspan || !colspan) { return renderEmptyElement($xeTable); } if (rowspan > 1) { isMergeCell = true; mergeRowspan = rowspan; tdAttrs.rowspan = rowspan; } if (colspan > 1) { isMergeCell = true; mergeColspan = colspan; tdAttrs.colspan = colspan; } } if (fixedHiddenColumn && isMergeCell) { if (tdAttrs.colspan > 1 || tdAttrs.rowspan > 1) { fixedHiddenColumn = false; } } if (!fixedHiddenColumn && editConfig && (editRender || cellRender) && (editOpts.showStatus || editOpts.showUpdateStatus)) { isDirty = $xeTable.isUpdateByRow(row, column.field); } const isVNAutoHeight = !hasEllipsis && (scrollYLoad || scrollXLoad); let cellHeight = getCellRestHeight(rowRest, cellOpts, rowOpts, defaultRowHeight); const isLastColumn = $columnIndex === columns.length - 1; const isAutoCellWidth = !column.resizeWidth && (column.minWidth === "auto" || column.width === "auto"); let isVNPreEmptyStatus = false; if (!isMergeCell) { if (!dragRow || getRowid($xeTable, dragRow) !== rowid) { if (overflowY && scrollYLoad && tableData.length > 16 && !treeConfig && !virtualYOpts.immediate && (_rowIndex < scrollYStore.visibleStartIndex - scrollYStore.preloadSize || _rowIndex > scrollYStore.visibleEndIndex + scrollYStore.preloadSize)) { isVNPreEmptyStatus = true; } else if (overflowX && scrollXLoad && tableColumn.length > 10 && !virtualXOpts.immediate && !column.fixed && (_columnIndex < scrollXStore.visibleStartIndex - scrollXStore.preloadSize || _columnIndex > scrollXStore.visibleEndIndex + scrollXStore.preloadSize)) { isVNPreEmptyStatus = true; } } } if (mergeRowspan > 1) { const mEndRow = afterFullData[_rowIndex + mergeRowspan - 1]; if (mEndRow) { const meRowRest = fullAllDataRowIdData[getRowid($xeTable, mEndRow)]; if (meRowRest) { cellHeight += meRowRest.oTop + getCellRestHeight(meRowRest, cellOpts, rowOpts, defaultRowHeight) - rowRest.oTop - getCellRestHeight(rowRest, cellOpts, rowOpts, defaultRowHeight); } } } const tcStyle = {}; if (hasEllipsis && resizeWidthFlag) { let mergeColWidth = 0; if (mergeColspan > 1) { for (let index = 1; index < mergeColspan; index++) { const nextColumn = visibleColumn[columnIndex + index]; if (nextColumn) { mergeColWidth += nextColumn.renderWidth; } } } tcStyle.width = `${column.renderWidth + mergeColWidth - cellOffsetWidth}px`; } if (scrollYLoad || scrollXLoad || hasEllipsis || isCsHeight || isRsHeight) { tcStyle.height = `${cellHeight}px`; } else { tcStyle.minHeight = `${cellHeight}px`; } const tdVNs = []; if (fixedHiddenColumn && isAllOverflow) { tdVNs.push(h("div", { key: "tc", class: ["vxe-cell", { "c--title": showTitle, "c--tooltip": showTooltip, "c--ellipsis": showEllipsis }], style: tcStyle })); } else { if (treeConfig) { tdVNs.push(...renderLine(rowid, cellParams, cellHeight)); } tdVNs.push(h("div", { key: "tc", class: ["vxe-cell", { "c--title": showTitle, "c--tooltip": showTooltip, "c--ellipsis": showEllipsis }], style: tcStyle, title: showTitle ? $xeTable.getCellLabel(row, column) : null }, isVNPreEmptyStatus ? [] : [ h("div", { colid, rowid, class: "vxe-cell--wrapper vxe-body-cell--wrapper" }, column.renderCell(cellParams)) ])); if (showValidTip && errorValidItem) { const errRule = errorValidItem.rule; const validSlot = slots ? slots.valid : null; const validParams = Object.assign(Object.assign(Object.assign({}, cellParams), errorValidItem), { rule: errorValidItem }); tdVNs.push(h("div", { key: "tcv", class: ["vxe-cell--valid-error-tip", getPropClass(validOpts.className, validParams)], style: errRule && errRule.maxWidth ? { width: `${errRule.maxWidth}px` } : null }, [ h("div", { class: `vxe-cell--valid-error-wrapper vxe-cell--valid-error-theme-${validOpts.theme || "normal"}` }, [ validSlot ? $xeTable.callSlot(validSlot, validParams) : [ h("span", { class: "vxe-cell--valid-error-msg" }, errorValidItem.content) ] ]) ])); } } let showAreaRowStatus = false; if (mouseConfig && mouseOpts.area && !_columnIndex && selectCellToRow) { showAreaRowStatus = true; } if (!fixedHiddenColumn && showResizable && isAllColumnDrag) { tdVNs.push(h("div", { key: "tcc", class: ["vxe-cell--col-resizable", { "is--line": !border || border === "none" }], onMousedown: (evnt) => $xeTable.handleColResizeMousedownEvent(evnt, fixedType, cellParams), onDblclick: (evnt) => $xeTable.handleColResizeDblclickEvent(evnt, cellParams) })); } if ((rowResize || isAllRowDrag) && rowOpts.resizable) { tdVNs.push(h("div", { key: "tcr", class: "vxe-cell--row-resizable", onMousedown: (evnt) => $xeTable.handleRowResizeMousedownEvent(evnt, cellParams), onDblclick: (evnt) => $xeTable.handleRowResizeDblclickEvent(evnt, cellParams) })); } return h("td", Object.assign(Object.assign(Object.assign({ class: [ "vxe-table--column vxe-body--column", colid, cellVerticalAlign ? `col--vertical-${cellVerticalAlign}` : "", cellAlign ? `col--${cellAlign}` : "", type ? `col--${type}` : "", { "col--last": isLastColumn, "col--tree-node": treeNode, "col--edit": isEdit, "col--ellipsis": hasEllipsis, "col--cs-height": isCsHeight, "col--rs-height": isRsHeight, "col--to-row": showAreaRowStatus, "col--auto-height": isVNAutoHeight, "fixed--width": !isAutoCellWidth, "fixed--hidden": fixedHiddenColumn, "is--padding": isCellPadding, "is--progress": fixedHiddenColumn && isAllOverflow || isVNPreEmptyStatus, "is--drag-cell": isRowDragCell && (isCrossDrag || isPeerDrag || !rowLevel), "is--drag-disabled": isDisabledDrag, "col--dirty": isDirty, "col--active": editConfig && isEdit && (actived.row === row && (actived.column === column || editOpts.mode === "row")), "col--valid-error": !!errorValidItem, "col--current": currentColumn === column }, getPropClass(compCellClassName, cellParams), getPropClass(className, cellParams), getPropClass(allCellClassName, cellParams) ], key: columnKey || scrollXLoad || scrollYLoad || columnOpts.useKey || rowOpts.useKey || columnOpts.drag ? colid : $columnIndex }, tdAttrs), { style: Object.assign({}, import_xe_utils2.default.isFunction(compCellStyle) ? compCellStyle(cellParams) : compCellStyle, import_xe_utils2.default.isFunction(cellStyle) ? cellStyle(cellParams) : cellStyle) }), tdOns), isOptimizeMode && fixedHiddenColumn ? [] : tdVNs); }; const renderRows = (fixedType, isOptimizeMode, tableData, tableColumn) => { const $xeGrid = $xeTable.xeGrid; const $xeGantt = $xeTable.xeGantt; const { stripe, rowKey, highlightHoverRow, rowClassName, rowStyle, editConfig, treeConfig } = tableProps2; const { hasFixedColumn, treeExpandedFlag, scrollXLoad, scrollYLoad, isAllOverflow, rowExpandedFlag, expandColumn, selectRadioRow, pendingRowFlag, rowExpandHeightFlag, isRowGroupStatus } = tableReactData; const { fullAllDataRowIdData, fullColumnIdData, treeExpandedMaps, pendingRowMaps, rowExpandedMaps } = tableInternalData; const checkboxOpts = computeCheckboxOpts.value; const radioOpts = computeRadioOpts.value; const treeOpts = computeTreeOpts.value; const editOpts = computeEditOpts.value; const rowOpts = computeRowOpts.value; const columnOpts = computeColumnOpts.value; const { transform, seqMode } = treeOpts; const childrenField = treeOpts.children || treeOpts.childrenField; const rows = []; const { handleGetRowId } = createHandleGetRowId($xeTable); const isDeepRow = treeConfig || isRowGroupStatus; tableData.forEach((row, $rowIndex) => { const rowid = handleGetRowId(row); const rowRest = fullAllDataRowIdData[rowid] || {}; let rowIndex = $rowIndex; let rowLevel = 0; let seq = -1; let _rowIndex = -1; const hasRowGroupAggregate = isRowGroupStatus && row.isAggregate; const trOn = {}; if (rowOpts.isHover || highlightHoverRow) { trOn.onMouseover = (evnt) => { if (isVMScrollProcess()) { return; } $xeTable.triggerHoverEvent(evnt, { row, rowIndex }); }; trOn.onMouseleave = () => { if (isVMScrollProcess()) { return; } $xeTable.clearHoverRow(); }; } if (rowRest) { rowIndex = rowRest.index; _rowIndex = rowRest._index; rowLevel = rowRest.level; seq = rowRest.seq; if (hasRowGroupAggregate || treeConfig && transform && seqMode === "increasing") { seq = rowRest._index + 1; } else if (treeConfig && seqMode === "fixed") { seq = rowRest._tIndex + 1; } } const params = { $table: $xeTable, seq, rowid, fixed: fixedType, type: renderType, level: rowLevel, row, rowIndex, $rowIndex, _rowIndex }; const isExpandRow = expandColumn && !!rowExpandedFlag && !!rowExpandedMaps[rowid]; let isExpandTree = false; let rowChildren = []; let isNewRow = false; if (editConfig) { isNewRow = $xeTable.isInsertByRow(row); } if (treeConfig && !scrollYLoad && !transform) { rowChildren = row[childrenField]; isExpandTree = !!treeExpandedFlag && rowChildren && rowChildren.length > 0 && !!treeExpandedMaps[rowid]; } if (rowOpts.drag && !isRowGroupStatus && (!treeConfig || transform)) { trOn.onDragstart = $xeTable.handleRowDragDragstartEvent; trOn.onDragend = $xeTable.handleRowDragDragendEvent; trOn.onDragover = $xeTable.handleRowDragDragoverEvent; } const trClass = [ "vxe-body--row", isDeepRow ? `row--level-${rowLevel}` : "", { "row--stripe": stripe && (_rowIndex + 1) % 2 === 0, "is--new": isNewRow, "is--expand-row": isExpandRow, "is--expand-tree": isExpandTree, "row--new": isNewRow && (editOpts.showStatus || editOpts.showInsertStatus), "row--radio": radioOpts.highlight && $xeTable.eqRow(selectRadioRow, row), "row--checked": checkboxOpts.highlight && $xeTable.isCheckedByCheckboxRow(row), "row--pending": !!pendingRowFlag && !!pendingRowMaps[rowid], "row--group": hasRowGroupAggregate }, getPropClass(rowClassName, params) ]; const tdVNs = tableColumn.map((column, $columnIndex) => { return renderTdColumn(seq, rowid, fixedType, isOptimizeMode, rowLevel, row, rowIndex, $rowIndex, _rowIndex, column, $columnIndex, tableColumn, tableData); }); rows.push(h("tr", Object.assign({ class: trClass, rowid, style: rowStyle ? import_xe_utils2.default.isFunction(rowStyle) ? rowStyle(params) : rowStyle : null, key: rowKey || scrollXLoad || scrollYLoad || rowOpts.useKey || rowOpts.drag || columnOpts.drag || isRowGroupStatus || treeConfig ? rowid : $rowIndex }, trOn), tdVNs)); if (isExpandRow) { const expandOpts = computeExpandOpts.value; const { height: expandHeight, padding, mode: expandMode } = expandOpts; if (expandMode === "fixed") { rows.push(h("tr", { class: "vxe-body--row-expanded-place", key: `expand_${rowid}`, rowid }, [ h("td", { class: "vxe-body--row-expanded-place-column", colspan: tableColumn.length, style: { height: `${rowExpandHeightFlag ? rowRest.expandHeight || expandHeight : 0}px` } }) ])); } else { const cellStyle = {}; if (expandHeight) { cellStyle.height = `${expandHeight}px`; } if (treeConfig) { cellStyle.paddingLeft = `${rowLevel * treeOpts.indent + 30}px`; } const { showOverflow } = expandColumn || {}; const colid = expandColumn.id; const colRest = fullColumnIdData[colid] || {}; const hasEllipsis = import_xe_utils2.default.eqNull(showOverflow) ? isAllOverflow : showOverflow; let columnIndex = -1; let $columnIndex = -1; let _columnIndex = -1; if (colRest) { columnIndex = colRest.index; $columnIndex = colRest.$index; _columnIndex = colRest._index; } const expandParams = { $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt, seq, column: expandColumn, columnIndex, $columnIndex, _columnIndex, fixed: fixedType, source: sourceType, type: renderType, level: rowLevel, row, rowid, rowIndex, $rowIndex, _rowIndex, isHidden: false, isEdit: false, visibleData: [], data: [], items: [] }; rows.push(h("tr", { class: ["vxe-body--expanded-row", { "is--padding": padding }], key: `expand_${rowid}` }, [ h("td", { class: ["vxe-body--expanded-column", { "fixed--hidden": fixedType && !hasFixedColumn, "col--ellipsis": hasEllipsis }], colspan: tableColumn.length }, [ h("div", { class: ["vxe-body--expanded-cell", { "is--ellipsis": expandHeight }], style: cellStyle }, [ expandColumn.renderData(expandParams) ]) ]) ])); } } if (isExpandTree) { rows.push(...renderRows(fixedType, isOptimizeMode, rowChildren, tableColumn)); } }); return rows; }; onMounted(() => { nextTick(() => { const { fixedType } = props; const { elemStore } = tableInternalData; const prefix = `${fixedType || "main"}-body-`; elemStore[`${prefix}wrapper`] = refElem; elemStore[`${prefix}scroll`] = refBodyScroll; elemStore[`${prefix}table`] = refBodyTable; elemStore[`${prefix}colgroup`] = refBodyColgroup; elemStore[`${prefix}list`] = refBodyTBody; elemStore[`${prefix}xSpace`] = refBodyXSpace; elemStore[`${prefix}ySpace`] = refBodyYSpace; elemStore[`${prefix}emptyBlock`] = refBodyEmptyBlock; }); }); onUnmounted(() => { const { fixedType } = props; const { elemStore } = tableInternalData; const prefix = `${fixedType || "main"}-body-`; elemStore[`${prefix}wrapper`] = null; elemStore[`${prefix}scroll`] = null; elemStore[`${prefix}table`] = null; elemStore[`${prefix}colgroup`] = null; elemStore[`${prefix}list`] = null; elemStore[`${prefix}xSpace`] = null; elemStore[`${prefix}ySpace`] = null; elemStore[`${prefix}emptyBlock`] = null; }); const renderVN = () => { const { slots } = tableContext; const $xeGrid = $xeTable.xeGrid; const $xeGantt = $xeTable.xeGantt; const { fixedColumn, fixedType, tableColumn } = props; const { mouseConfig } = tableProps2; const { isGroup, tableData, isColLoading, overflowX, scrollXLoad, scrollYLoad, dragRow, dragCol } = tableReactData; const { visibleColumn, fullAllDataRowIdData, fullColumnIdData } = tableInternalData; const emptyOpts = computeEmptyOpts.value; const mouseOpts = computeMouseOpts.value; const isBodyRenderOptimize = computeIsBodyRenderOptimize.value; let renderDataList = tableData; let renderColumnList = tableColumn; const isOptimizeMode = isBodyRenderOptimize; if (!isColLoading && (fixedType || !overflowX)) { renderColumnList = visibleColumn; } if (fixedType) { if (isOptimizeMode) { renderColumnList = fixedColumn || []; } } if (scrollYLoad && dragRow) { if (renderDataList.length > 2) { const dRowRest = fullAllDataRowIdData[getRowid($xeTable, dragRow)]; if (dRowRest) { const drIndex = dRowRest._index; const firstRow = renderDataList[0]; const lastRow = renderDataList[renderDataList.length - 1]; const firstRowRest = fullAllDataRowIdData[getRowid($xeTable, firstRow)]; const lastRowRest = fullAllDataRowIdData[getRowid($xeTable, lastRow)]; if (firstRowRest && lastRowRest) { const frIndex = firstRowRest._index; const lrIndex = lastRowRest._index; if (drIndex < frIndex) { renderDataList = [dragRow].concat(renderDataList); } else if (drIndex > lrIndex) { renderDataList = renderDataList.concat([dragRow]); } } } } } if (!fixedType && !isGroup) { if (scrollXLoad && dragCol) { if (renderColumnList.length > 2) { const dCowRest = fullColumnIdData[dragCol.id]; if (dCowRest) { const dcIndex = dCowRest._index; const firstCol = renderColumnList[0]; const lastCol = renderColumnList[renderColumnList.length - 1]; const firstColRest = fullColumnIdData[firstCol.id]; const lastColRest = fullColumnIdData[lastCol.id]; if (firstColRest && lastColRest) { const fcIndex = firstColRest._index; const lcIndex = lastColRest._index; if (dcIndex < fcIndex) { renderColumnList = [dragCol].concat(renderColumnList); } else if (dcIndex > lcIndex) { renderColumnList = renderColumnList.concat([dragCol]); } } } } } } let emptyContent; const emptySlot = slots ? slots.empty : null; const emptyParams = { $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt }; if (emptySlot) { emptyContent = $xeTable.callSlot(emptySlot, emptyParams); } else { const compConf = emptyOpts.name ? renderer.get(emptyOpts.name) : null; const rtEmptyView = compConf ? compConf.renderTableEmpty || compConf.renderTableEmptyView || compConf.renderEmpty : null; if (rtEmptyView) { emptyContent = getSlotVNs(rtEmptyView(emptyOpts, emptyParams)); } else { emptyContent = tableProps2.emptyText || getI18n("vxe.table.emptyText"); } } return h("div", { ref: refElem, class: ["vxe-table--body-wrapper", fixedType ? `fixed-${fixedType}--wrapper` : "body--wrapper"], xid: xID }, [ h("div", { ref: refBodyScroll, class: "vxe-table--body-inner-wrapper", onScroll(evnt) { $xeTable.triggerBodyScrollEvent(evnt, fixedType); } }, [ fixedType ? renderEmptyElement($xeTable) : h("div", { ref: refBodyXSpace, class: "vxe-body--x-space" }), h("div", { ref: refBodyYSpace, class: "vxe-body--y-space" }), h("table", { ref: refBodyTable, class: "vxe-table--body", xid: xID, cellspacing: 0, cellpadding: 0, border: 0, xvm: isOptimizeMode ? "1" : null }, [ /** * 列宽 */ h("colgroup", { ref: refBodyColgroup }, renderColumnList.map((column, $columnIndex) => { return h("col", { name: column.id, key: $columnIndex, style: { width: `${column.renderWidth}px` } }); })), /** * 内容 */ h("tbody", { ref: refBodyTBody }, renderRows(fixedType, isOptimizeMode, renderDataList, renderColumnList)) ]), h("div", { class: "vxe-table--checkbox-range" }), mouseConfig && mouseOpts.area ? h("div", { class: "vxe-table--cell-area", xid: xID }, [ h("span", { class: "vxe-table--cell-main-area" }, mouseOpts.extension ? [ h("span", { class: "vxe-table--cell-main-area-btn", onMousedown(evnt) { if ($xeTable.triggerCellAreaExtendMousedownEvent) { $xeTable.triggerCellAreaExtendMousedownEvent(evnt, { $table: $xeTable, fixed: fixedType, type: renderType }); } } }) ] : []), h("span", { class: "vxe-table--cell-clip-area" }), h("span", { class: "vxe-table--cell-extend-area" }), h("span", { class: "vxe-table--cell-multi-area" }), h("span", { class: "vxe-table--cell-active-area" }), h("span", { class: "vxe-table--cell-row-status-area" }) ]) : renderEmptyElement($xeTable), !fixedType ? h("div", { class: "vxe-table--empty-block", ref: refBodyEmptyBlock }, [ h("div", { class: "vxe-table--empty-content" }, emptyContent) ]) : renderEmptyElement($xeTable) ]) ]); }; return renderVN; } }); // ../node_modules/.pnpm/vxe-table@4.17.14_vue@3.5.24_typescript@5.9.3_/node_modules/vxe-table/es/table/src/header.js var import_xe_utils3 = __toESM(require_xe_utils()); var { renderer: renderer2, renderEmptyElement: renderEmptyElement2 } = VxeUI; var sourceType2 = "table"; var renderType2 = "header"; function getColumnFirstChild(column) { const { children } = column; if (children && children.length) { return getColumnFirstChild(children[0]); } return column; } function getColumnLastChild(column) { const { children } = column; if (children && children.length) { return getColumnLastChild(children[children.length - 1]); } return column; } var header_default = defineVxeComponent({ name: "VxeTableHeader", props: { tableData: Array, tableColumn: Array, tableGroupColumn: Array, fixedColumn: Array, fixedType: { type: String, default: null } }, setup(props) { const $xeTable = inject("$xeTable", {}); const { xID, props: tableProps2, reactData: tableReactData, internalData: tableInternalData } = $xeTable; const { computeColumnOpts, computeColumnDragOpts, computeCellOpts, computeMouseOpts, computeHeaderCellOpts, computeDefaultRowHeight, computeVirtualXOpts, computeFloatingFilterOpts, computeIsHeaderRenderOptimize } = $xeTable.getComputeMaps(); const headerColumn = ref([]); const refElem = ref(); const refHeaderScroll = ref(); const refHeaderTable = ref(); const refHeaderColgroup = ref(); const refHeaderTHead = ref(); const refHeaderXSpace = ref(); const refHeaderBorderRepair = ref(); const uploadColumn = () => { const { showCustomHeader } = tableProps2; const { collectColumn, visibleColumn } = tableInternalData; const { tableGroupColumn } = props; const { isGroup } = tableReactData; let spanColumns = isGroup ? convertHeaderColumnToRows(tableGroupColumn) : []; let visibleColgroups = []; if (showCustomHeader && spanColumns.length > 1) { visibleColgroups = convertHeaderToGridRows(spanColumns); spanColumns = visibleColgroups; } headerColumn.value = spanColumns; $xeTable.dispatchEvent("columns-change", { visibleColgroups, collectColumn, visibleColumn }, null); }; const renderRows = (isGroup, isOptimizeMode, headerGroups, $rowIndex, cols) => { const $xeGrid = $xeTable.xeGrid; const $xeGantt = $xeTable.xeGantt; const { fixedType } = props; const { resizable: allResizable, columnKey, showCustomHeader, headerCellClassName, headerCellStyle, showHeaderOverflow: allColumnHeaderOverflow, headerAlign: allHeaderAlign, align: allAlign, mouseConfig } = tableProps2; const { currentColumn, dragCol, scrollXLoad, scrollYLoad, overflowX, mergeHeadFlag, tableColumn } = tableReactData; const { fullColumnIdData, scrollXStore, mergeHeaderList, mergeHeaderCellMaps } = tableInternalData; const virtualXOpts = computeVirtualXOpts.value; const columnOpts = computeColumnOpts.value; const columnDragOpts = computeColumnDragOpts.value; const cellOpts = computeCellOpts.value; const defaultRowHeight = computeDefaultRowHeight.value; const headerCellOpts = computeHeaderCellOpts.value; const currCellHeight = getCalcHeight(headerCellOpts.height) || defaultRowHeight; const { disabledMethod: dragDisabledMethod, isCrossDrag, isPeerDrag } = columnDragOpts; const isLastRow = $rowIndex === headerGroups.length - 1; return cols.map((column, $columnIndex) => { const { type, showHeaderOverflow, headerAlign, align, filters, headerClassName, editRender, cellRender } = column; const colid = column.id; const colRest = fullColumnIdData[colid] || {}; const renderOpts = editRender || cellRender; const compConf = renderOpts ? renderer2.get(renderOpts.name) : null; const isColGroup = column.children && column.children.length; const fixedHiddenColumn = overflowX && !isColGroup && (fixedType ? column.fixed !== fixedType : !!column.fixed); const isPadding = import_xe_utils3.default.isBoolean(headerCellOpts.padding) ? headerCellOpts.padding : cellOpts.padding; const headOverflow = import_xe_utils3.default.eqNull(showHeaderOverflow) ? allColumnHeaderOverflow : showHeaderOverflow; const headAlign = headerAlign || (compConf ? compConf.tableHeaderCellAlign : "") || allHeaderAlign || align || (compConf ? compConf.tableCellAlign : "") || allAlign; const showEllipsis = headOverflow === "ellipsis"; const showTitle = headOverflow === "title"; const showTooltip = headOverflow === true || headOverflow === "tooltip"; const hasEllipsis = showTitle || showTooltip || showEllipsis; let hasFilter = false; let firstFilterOption = null; if (filters) { firstFilterOption = filters[0]; hasFilter = filters.some((item) => item.checked); } const columnIndex = colRest.index; const _columnIndex = colRest._index; const cellParams = { $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt, $rowIndex, column, columnIndex, $columnIndex, _columnIndex, firstFilterOption, fixed: fixedType, source: sourceType2, type: renderType2, isHidden: fixedHiddenColumn, hasFilter }; const thAttrs = { colid }; let isMergeCell = false; if (!showCustomHeader) { thAttrs.colspan = column.colSpan > 1 ? column.colSpan : null; thAttrs.rowspan = column.rowSpan > 1 ? column.rowSpan : null; } if (mergeHeadFlag && mergeHeaderList.length && (showCustomHeader || isLastRow)) { const spanRest = mergeHeaderCellMaps[`${$rowIndex}:${showCustomHeader ? $columnIndex : _columnIndex}`]; if (spanRest) { const { rowspan, colspan } = spanRest; if (!rowspan || !colspan) { return null; } if (rowspan > 1) { isMergeCell = true; thAttrs.rowspan = rowspan; } if (colspan > 1) { isMergeCell = true; thAttrs.colspan = colspan; } } } const thOns = { onClick: (evnt) => $xeTable.triggerHeaderCellClickEvent(evnt, cellParams), onDblclick: (evnt) => $xeTable.triggerHeaderCellDblclickEvent(evnt, cellParams) }; const isColDragCell = columnOpts.drag && columnDragOpts.trigger === "cell"; let isDisabledDrag = false; if (isColDragCell) { isDisabledDrag = !!(dragDisabledMethod && dragDisabledMethod(cellParams)); } if (mouseConfig || isColDragCell) { thOns.onMousedown = (evnt) => $xeTable.triggerHeaderCellMousedownEvent(evnt, cellParams); } if (columnOpts.drag) { thOns.onDragstart = $xeTable.handleHeaderCellDragDragstartEvent; thOns.onDragend = $xeTable.handleHeaderCellDragDragendEvent; thOns.onDragover = $xeTable.handleHeaderCellDragDragoverEvent; if (isColDragCell) { thOns.onMouseup = $xeTable.handleHeaderCellDragMouseupEvent; } } const isLastColumn = $columnIndex === cols.length - 1; const showResizable = import_xe_utils3.default.isBoolean(column.resizable) ? column.resizable : columnOpts.resizable || allResizable; const isAutoCellWidth = !column.resizeWidth && (column.minWidth === "auto" || column.width === "auto"); let isVNPreEmptyStatus = false; if (isOptimizeMode && overflowX && !isGroup && !isMergeCell) { if (!dragCol || dragCol.id !== colid) { if (scrollXLoad && tableColumn.length > 10 && !column.fixed && !virtualXOpts.immediate && (_columnIndex < scrollXStore.visibleStartIndex - scrollXStore.preloadSize || _columnIndex > scrollXStore.visibleEndIndex + scrollXStore.preloadSize)) { isVNPreEmptyStatus = true; } } } const tcStyle = {}; if (hasEllipsis) { tcStyle.height = `${currCellHeight}px`; } else { tcStyle.minHeight = `${currCellHeight}px`; } if (showCustomHeader) { } else if (isColGroup && !isLastRow) { const firstCol = getColumnFirstChild(column); const lastCol = getColumnLastChild(column); if (firstCol && lastCol && firstCol.id !== lastCol.id) { const firstColRest = fullColumnIdData[firstCol.id]; const lastColRest = fullColumnIdData[lastCol.id]; if (firstColRest && lastColRest) { tcStyle.width = `${lastColRest.oLeft - firstColRest.oLeft + lastCol.renderWidth}px`; } } } return h("th", Object.assign(Object.assign(Object.assign({ class: [ "vxe-table--column vxe-header--column", colid, fixedHiddenColumn ? "fixed--hidden" : "fixed--visible", { [`col--${headAlign}`]: headAlign, [`col--${type}`]: type, "col--last": isLastColumn, "col--fixed": column.fixed, "col--group": isColGroup, "col--ellipsis": hasEllipsis, "fixed--width": !isAutoCellWidth, "is--padding": isPadding, "is--sortable": column.sortable, "col--filter": !!filters, "is--filter-active": hasFilter, "is--drag-active": columnOpts.drag && !column.fixed && !isDisabledDrag && (isCrossDrag || isPeerDrag || !column.parentId), "is--drag-disabled": columnOpts.drag && isDisabledDrag, "col--current": currentColumn === column }, headerClassName ? import_xe_utils3.default.isFunction(headerClassName) ? headerClassName(cellParams) : headerClassName : "", headerCellClassName ? import_xe_utils3.default.isFunction(headerCellClassName) ? headerCellClassName(cellParams) : headerCellClassName : "" ], style: headerCellStyle ? import_xe_utils3.default.isFunction(headerCellStyle) ? headerCellStyle(cellParams) : headerCellStyle : null }, thAttrs), thOns), { key: showCustomHeader ? `${colid}${$columnIndex}` : columnKey || scrollXLoad || scrollYLoad || columnOpts.useKey || columnOpts.drag || isColGroup ? colid : $columnIndex }), [ h("div", { class: ["vxe-cell", { "c--title": showTitle, "c--tooltip": showTooltip, "c--ellipsis": showEllipsis }], style: tcStyle }, isVNPreEmptyStatus || isOptimizeMode && fixedHiddenColumn ? [] : [ h("div", { colid, class: "vxe-cell--wrapper vxe-header-cell--wrapper" }, column.renderHeader(cellParams)) ]), /** * 列宽拖动 */ !fixedHiddenColumn && showResizable && (!showCustomHeader || isLastRow) ? h("div", { class: "vxe-cell--col-resizable", onMousedown: (evnt) => $xeTable.handleColResizeMousedownEvent(evnt, fixedType, cellParams), onDblclick: (evnt) => $xeTable.handleColResizeDblclickEvent(evnt, cellParams) }) : renderEmptyElement2($xeTable) ]); }); }; const renderFilterRows = (isOptimizeMode, cols) => { const $xeGrid = $xeTable.xeGrid; const $xeGantt = $xeTable.xeGantt; const { fixedType } = props; const { showHeaderOverflow: allColumnHeaderOverflow, headerAlign: allHeaderAlign, align: allAlign } = tableProps2; const { currentColumn, overflowX } = tableReactData; const { fullColumnIdData } = tableInternalData; const cellOpts = computeCellOpts.value; const defaultRowHeight = computeDefaultRowHeight.value; const headerCellOpts = computeHeaderCellOpts.value; const currCellHeight = getCalcHeight(headerCellOpts.height) || defaultRowHeight; return cols.map((column, $columnIndex) => { const { type, showHeaderOverflow, headerAlign, align, filters, editRender, cellRender, floatingFilters, filterRender, slots } = column; const colid = column.id; const colRest = fullColumnIdData[colid] || {}; const renderOpts = editRender || cellRender; const flSlot = slots ? slots.floatingFilter || slots["floating-filter"] : null; const compConf = renderOpts ? renderer2.get(renderOpts.name) : null; const flCompConf = isEnableConf(filterRender) ? renderer2.get(filterRender.name) : null; const rtFloatingFilter = flCompConf ? flCompConf.renderTableFloatingFilter : null; const fixedHiddenColumn = overflowX && (fixedType ? column.fixed !== fixedType : !!column.fixed); const isPadding = import_xe_utils3.default.isBoolean(headerCellOpts.padding) ? headerCellOpts.padding : cellOpts.padding; const headOverflow = import_xe_utils3.default.eqNull(showHeaderOverflow) ? allColumnHeaderOverflow : showHeaderOverflow; const headAlign = headerAlign || (compConf ? compConf.tableHeaderCellAlign : "") || allHeaderAlign || align || (compConf ? compConf.tableCellAlign : "") || allAlign; const showEllipsis = headOverflow === "ellipsis"; const showTitle = headOverflow === "title"; const showTooltip = headOverflow === true || headOverflow === "tooltip"; const hasEllipsis = showTitle || showTooltip || showEllipsis; let hasFilter = false; let firstFilterOption = null; if (filters) { firstFilterOption = filters[0]; hasFilter = filters.some((item) => item.checked); } const columnIndex = colRest.index; const _columnIndex = colRest._index; const cellParams = { $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt, column, columnIndex, $columnIndex, _columnIndex, option: firstFilterOption, fixed: fixedType, source: sourceType2, type: renderType2, isHidden: fixedHiddenColumn, hasFilter }; const thAttrs = { colid }; const isLastColumn = $columnIndex === cols.length - 1; const isAutoCellWidth = !column.resizeWidth && (column.minWidth === "auto" || column.width === "auto"); const tcStyle = {}; if (hasEllipsis) { tcStyle.height = `${currCellHeight}px`; } else { tcStyle.minHeight = `${currCellHeight}px`; } return h("th", Object.assign({ class: [ "vxe-table--column vxe-header--column", colid, fixedHiddenColumn ? "fixed--hidden" : "fixed--visible", { [`col--${headAlign}`]: headAlign, [`col--${type}`]: type, "col--last": isLastColumn, "col--fixed": column.fixed, "col--ellipsis": hasEllipsis, "fixed--width": !isAutoCellWidth, "is--padding": isPadding, "is--sortable": column.sortable, "col--current": currentColumn === column } ], key: colid }, thAttrs), [ h("div", { class: ["vxe-cell", { "c--title": showTitle, "c--tooltip": showTooltip, "c--ellipsis": showEllipsis }], style: tcStyle }, isOptimizeMode && fixedHiddenColumn && !floatingFilters ? [] : [ h("div", { colid, class: "vxe-cell--wrapper vxe-header-cell--wrapper" }, flSlot ? $xeTable.callSlot(flSlot, cellParams) : rtFloatingFilter && firstFilterOption ? getSlotVNs(rtFloatingFilter(filterRender, cellParams)) : []) ]) ]); }); }; const renderHeads = (isGroup, isOptimizeMode, headerGroups) => { const { fixedType } = props; const { headerRowClassName, headerRowStyle } = tableProps2; const floatingFilterOpts = computeFloatingFilterOpts.value; const rowVNs = headerGroups.map((cols, $rowIndex) => { const params = { $table: $xeTable, $rowIndex, fixed: fixedType, type: renderType2 }; return h("tr", { key: $rowIndex, class: [ "vxe-header--row", headerRowClassName ? import_xe_utils3.default.isFunction(headerRowClassName) ? headerRowClassName(params) : headerRowClassName : "" ], style: headerRowStyle ? import_xe_utils3.default.isFunction(headerRowStyle) ? headerRowStyle(params) : headerRowStyle : null }, renderRows(isGroup, isOptimizeMode, headerGroups, $rowIndex, cols)); }); if (floatingFilterOpts.enabled) { rowVNs.push(h("tr", { key: "ff", class: [ "vxe-header--row" ] }, renderFilterRows(isOptimizeMode, headerGroups[headerGroups.length - 1]))); } return rowVNs; }; const renderVN = () => { const { fixedType, fixedColumn, tableColumn } = props; const { mouseConfig } = tableProps2; const { isGroup, isColLoading, overflowX, scrollXLoad, dragCol } = tableReactData; const { visibleColumn, fullColumnIdData } = tableInternalData; const mouseOpts = computeMouseOpts.value; const isHeaderRenderOptimize = computeIsHeaderRenderOptimize.value; let renderHeaderList = headerColumn.value || []; let renderColumnList = tableColumn; const isOptimizeMode = isHeaderRenderOptimize; if (isGroup) { renderColumnList = visibleColumn; } else { if (!isOptimizeMode || !isColLoading && (fixedType || !overflowX)) { renderColumnList = visibleColumn; } if (fixedType) { if (isOptimizeMode) { renderColumnList = fixedColumn || []; } } renderHeaderList = [renderColumnList]; } if (!fixedType && !isGroup) { if (scrollXLoad && dragCol) { if (renderColumnList.length > 2) { const dCowRest = fullColumnIdData[dragCol.id]; if (dCowRest) { const dcIndex = dCowRest._index; const firstCol = renderColumnList[0]; const lastCol = renderColumnList[renderColumnList.length - 1]; const firstColRest = fullColumnIdData[firstCol.id]; const lastColRest = fullColumnIdData[lastCol.id]; if (firstColRest && lastColRest) { const fcIndex = firstColRest._index; const lcIndex = lastColRest._index; if (dcIndex < fcIndex) { renderColumnList = [dragCol].concat(renderColumnList); renderHeaderList = [[dragCol].concat(renderHeaderList[0])].concat(renderHeaderList.slice(1)); } else if (dcIndex > lcIndex) { renderColumnList = renderColumnList.concat([dragCol]); renderHeaderList = [renderHeaderList[0].concat([dragCol])].concat(renderHeaderList.slice(1)); } } } } } } return h("div", { ref: refElem, class: ["vxe-table--header-wrapper", fixedType ? `fixed-${fixedType}--wrapper` : "body--wrapper"], xid: xID }, [ h("div", { ref: refHeaderScroll, class: "vxe-table--header-inner-wrapper", onScroll(evnt) { $xeTable.triggerHeaderScrollEvent(evnt, fixedType); } }, [ fixedType ? renderEmptyElement2($xeTable) : h("div", { ref: refHeaderXSpace, class: "vxe-body--x-space" }), h("table", { ref: refHeaderTable, class: "vxe-table--header", xid: xID, cellspacing: 0, cellpadding: 0, border: 0, xvm: isOptimizeMode ? "1" : null }, [ /** * 列宽 */ h("colgroup", { ref: refHeaderColgroup }, renderColumnList.map((column, $columnIndex) => { return h("col", { name: column.id, key: $columnIndex, style: { width: `${column.renderWidth}px` } }); })), /** * 头部 */ h("thead", { ref: refHeaderTHead }, renderHeads(isGroup, isOptimizeMode, renderHeaderList)) ]), mouseConfig && mouseOpts.area ? h("div", { class: "vxe-table--cell-area", xid: xID }, [ h("span", { class: "vxe-table--cell-main-area" }), h("span", { class: "vxe-table--cell-clip-area" }), h("span", { class: "vxe-table--cell-extend-area" }), h("span", { class: "vxe-table--cell-multi-area" }), h("span", { class: "vxe-table--cell-active-area" }), h("span", { class: "vxe-table--cell-col-status-area" }) ]) : renderEmptyElement2($xeTable) ]) ]); }; watch(() => props.tableColumn, uploadColumn); onMounted(() => { nextTick(() => { const { fixedType } = props; const { internalData } = $xeTable; const { elemStore } = internalData; const prefix = `${fixedType || "main"}-header-`; elemStore[`${prefix}wrapper`] = refElem; elemStore[`${prefix}scroll`] = refHeaderScroll; elemStore[`${prefix}table`] = refHeaderTable; elemStore[`${prefix}colgroup`] = refHeaderColgroup; elemStore[`${prefix}list`] = refHeaderTHead; elemStore[`${prefix}xSpace`] = refHeaderXSpace; elemStore[`${prefix}repair`] = refHeaderBorderRepair; uploadColumn(); }); }); onUnmounted(() => { const { fixedType } = props; const { internalData } = $xeTable; const { elemStore } = internalData; const prefix = `${fixedType || "main"}-header-`; elemStore[`${prefix}wrapper`] = null; elemStore[`${prefix}scroll`] = null; elemStore[`${prefix}table`] = null; elemStore[`${prefix}colgroup`] = null; elemStore[`${prefix}list`] = null; elemStore[`${prefix}xSpace`] = null; elemStore[`${prefix}repair`] = null; }); return renderVN; } }); // ../node_modules/.pnpm/vxe-table@4.17.14_vue@3.5.24_typescript@5.9.3_/node_modules/vxe-table/es/table/src/footer.js var import_xe_utils4 = __toESM(require_xe_utils()); var { renderer: renderer3, renderEmptyElement: renderEmptyElement3 } = VxeUI; var sourceType3 = "table"; var renderType3 = "footer"; var footer_default = defineVxeComponent({ name: "VxeTableFooter", props: { footerTableData: { type: Array, default: () => [] }, tableColumn: { type: Array, default: () => [] }, fixedColumn: { type: Array, default: () => [] }, fixedType: { type: String, default: null } }, setup(props) { const $xeTable = inject("$xeTable", {}); const { xID, props: tableProps2, reactData: tableReactData, internalData: tableInternalData } = $xeTable; const { computeFooterTooltipOpts, computeColumnOpts, computeCellOpts, computeFooterCellOpts, computeDefaultRowHeight, computeResizableOpts, computeVirtualXOpts, computeIsFooterRenderOptimize } = $xeTable.getComputeMaps(); const refElem = ref(); const refFooterScroll = ref(); const refFooterTable = ref(); const refFooterColgroup = ref(); const refFooterTFoot = ref(); const refFooterXSpace = ref(); const renderRows = (isOptimizeMode, tableColumn, footerTableData, row, $rowIndex, _rowIndex) => { const $xeGrid = $xeTable.xeGrid; const $xeGantt = $xeTable.xeGantt; const { fixedType } = props; const { resizable: allResizable, border, footerCellClassName, footerCellStyle, footerAlign: allFooterAlign, footerSpanMethod, align: allAlign, columnKey, showFooterOverflow: allColumnFooterOverflow } = tableProps2; const { scrollXLoad, scrollYLoad, overflowX, currentColumn, mergeFootFlag } = tableReactData; const { fullColumnIdData, mergeFooterList, mergeFooterCellMaps, scrollXStore } = tableInternalData; const virtualXOpts = computeVirtualXOpts.value; const footerTooltipOpts = computeFooterTooltipOpts.value; const resizableOpts = computeResizableOpts.value; const { isAllColumnDrag } = resizableOpts; const columnOpts = computeColumnOpts.value; const defaultRowHeight = computeDefaultRowHeight.value; const cellOpts = computeCellOpts.value; const footerCellOpts = computeFooterCellOpts.value; const currCellHeight = getCalcHeight(footerCellOpts.height) || defaultRowHeight; return tableColumn.map((column, $columnIndex) => { const { type, showFooterOverflow, footerAlign, align, footerClassName, editRender, cellRender } = column; const colid = column.id; const colRest = fullColumnIdData[colid] || {}; const renderOpts = editRender || cellRender; const compConf = renderOpts ? renderer3.get(renderOpts.name) : null; const showAllTip = footerTooltipOpts.showAll; const fixedHiddenColumn = overflowX && (fixedType ? column.fixed !== fixedType : !!column.fixed); const isPadding = import_xe_utils4.default.isBoolean(footerCellOpts.padding) ? footerCellOpts.padding : cellOpts.padding; const footOverflow = import_xe_utils4.default.eqNull(showFooterOverflow) ? allColumnFooterOverflow : showFooterOverflow; const footAlign = footerAlign || (compConf ? compConf.tableFooterCellAlign : "") || allFooterAlign || align || (compConf ? compConf.tableCellAlign : "") || allAlign; const showEllipsis = footOverflow === "ellipsis"; const showTitle = footOverflow === "title"; const showTooltip = footOverflow === true || footOverflow === "tooltip"; const hasEllipsis = showTitle || showTooltip || showEllipsis; const showResizable = import_xe_utils4.default.isBoolean(column.resizable) ? column.resizable : columnOpts.resizable || allResizable; const attrs = { colid }; const tfOns = {}; const columnIndex = colRest.index; const _columnIndex = colRest._index; const itemIndex = _columnIndex; const cellParams = { $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt, row, rowIndex: _rowIndex, _rowIndex, $rowIndex, column, columnIndex, $columnIndex, _columnIndex, itemIndex, items: row, fixed: fixedType, source: sourceType3, type: renderType3, data: footerTableData }; if (showTitle || showTooltip || showAllTip) { tfOns.onMouseenter = (evnt) => { if (showTitle) { updateCellTitle(evnt.currentTarget, column); } else if (showTooltip || showAllTip) { $xeTable.triggerFooterTooltipEvent(evnt, cellParams); } }; } if (showTooltip || showAllTip) { tfOns.onMouseleave = (evnt) => { if (showTooltip || showAllTip) { $xeTable.handleTargetLeaveEvent(evnt); } }; } tfOns.onClick = (evnt) => { $xeTable.dispatchEvent("footer-cell-click", Object.assign({ cell: evnt.currentTarget }, cellParams), evnt); }; tfOns.onDblclick = (evnt) => { $xeTable.dispatchEvent("footer-cell-dblclick", Object.assign({ cell: evnt.currentTarget }, cellParams), evnt); }; let isMergeCell = false; if (mergeFootFlag && mergeFooterList.length) { const spanRest = mergeFooterCellMaps[`${_rowIndex}:${_columnIndex}`]; if (spanRest) { const { rowspan, colspan } = spanRest; if (!rowspan || !colspan) { return null; } if (rowspan > 1) { isMergeCell = true; attrs.rowspan = rowspan; } if (colspan > 1) { isMergeCell = true; attrs.colspan = colspan; } } } else if (footerSpanMethod) { const { rowspan = 1, colspan = 1 } = footerSpanMethod(cellParams) || {}; if (!rowspan || !colspan) { return null; } if (rowspan > 1) { attrs.rowspan = rowspan; } if (colspan > 1) { attrs.colspan = colspan; } } const isLastColumn = $columnIndex === tableColumn.length - 1; const isAutoCellWidth = !column.resizeWidth && (column.minWidth === "auto" || column.width === "auto"); let isVNPreEmptyStatus = false; if (isOptimizeMode && overflowX && !isMergeCell) { if (scrollXLoad && tableColumn.length > 10 && !column.fixed && !virtualXOpts.immediate && (_columnIndex < scrollXStore.visibleStartIndex - scrollXStore.preloadSize || _columnIndex > scrollXStore.visibleEndIndex + scrollXStore.preloadSize)) { isVNPreEmptyStatus = true; } } const tcStyle = {}; if (hasEllipsis) { tcStyle.height = `${currCellHeight}px`; } else { tcStyle.minHeight = `${currCellHeight}px`; } return h("td", Object.assign(Object.assign(Object.assign(Object.assign({ class: ["vxe-table--column vxe-footer--column", column.id, { [`col--${footAlign}`]: footAlign, [`col--${type}`]: type, "col--last": isLastColumn, "fixed--width": !isAutoCellWidth, "fixed--hidden": fixedHiddenColumn, "is--padding": isPadding, "col--ellipsis": hasEllipsis, "col--current": currentColumn === column }, getPropClass(footerClassName, cellParams), getPropClass(footerCellClassName, cellParams)] }, attrs), { style: footerCellStyle ? import_xe_utils4.default.isFunction(footerCellStyle) ? footerCellStyle(cellParams) : footerCellStyle : null }), tfOns), { key: columnKey || scrollXLoad || scrollYLoad || columnOpts.useKey || columnOpts.drag ? column.id : $columnIndex }), [ h("div", { class: ["vxe-cell", { "c--title": showTitle, "c--tooltip": showTooltip, "c--ellipsis": showEllipsis }], style: tcStyle }, isVNPreEmptyStatus ? [] : [ h("div", { colid, class: "vxe-cell--wrapper vxe-footer-cell--wrapper" }, column.renderFooter(cellParams)) ]), /** * 列宽拖动 */ !fixedHiddenColumn && showResizable && isAllColumnDrag ? h("div", { class: ["vxe-cell--col-resizable", { "is--line": !border || border === "none" }], onMousedown: (evnt) => $xeTable.handleColResizeMousedownEvent(evnt, fixedType, cellParams), onDblclick: (evnt) => $xeTable.handleColResizeDblclickEvent(evnt, cellParams) }) : renderEmptyElement3($xeTable) ]); }); }; const renderHeads = (isOptimizeMode, renderColumnList) => { const { fixedType, footerTableData } = props; const { footerRowClassName, footerRowStyle } = tableProps2; return footerTableData.map((row, $rowIndex) => { const _rowIndex = $rowIndex; const rowParams = { $table: $xeTable, row, _rowIndex, $rowIndex, fixed: fixedType, type: renderType3 }; return h("tr", { key: $rowIndex, class: [ "vxe-footer--row", footerRowClassName ? import_xe_utils4.default.isFunction(footerRowClassName) ? footerRowClassName(rowParams) : footerRowClassName : "" ], style: footerRowStyle ? import_xe_utils4.default.isFunction(footerRowStyle) ? footerRowStyle(rowParams) : footerRowStyle : null }, renderRows(isOptimizeMode, renderColumnList, footerTableData, row, $rowIndex, _rowIndex)); }); }; const renderVN = () => { const { fixedType, fixedColumn, tableColumn } = props; const { visibleColumn, fullColumnIdData } = tableInternalData; const { isGroup, isColLoading, overflowX, scrollXLoad, dragCol } = tableReactData; const isFooterRenderOptimize = computeIsFooterRenderOptimize.value; let renderColumnList = tableColumn; const isOptimizeMode = isFooterRenderOptimize; if (!isOptimizeMode || !isColLoading && (fixedType || !overflowX)) { renderColumnList = visibleColumn; } if (fixedType) { if (isOptimizeMode) { renderColumnList = fixedColumn || []; } } if (!fixedType && !isGroup) { if (scrollXLoad && dragCol) { if (renderColumnList.length > 2) { const dCowRest = fullColumnIdData[dragCol.id]; if (dCowRest) { const dcIndex = dCowRest._index; const firstCol = renderColumnList[0]; const lastCol = renderColumnList[renderColumnList.length - 1]; const firstColRest = fullColumnIdData[firstCol.id]; const lastColRest = fullColumnIdData[lastCol.id]; if (firstColRest && lastColRest) { const fcIndex = firstColRest._index; const lcIndex = lastColRest._index; if (dcIndex < fcIndex) { renderColumnList = [dragCol].concat(renderColumnList); } else if (dcIndex > lcIndex) { renderColumnList = renderColumnList.concat([dragCol]); } } } } } } return h("div", { ref: refElem, class: ["vxe-table--footer-wrapper", fixedType ? `fixed-${fixedType}--wrapper` : "body--wrapper"], xid: xID }, [ h("div", { ref: refFooterScroll, class: "vxe-table--footer-inner-wrapper", onScroll(evnt) { $xeTable.triggerFooterScrollEvent(evnt, fixedType); } }, [ fixedType ? renderEmptyElement3($xeTable) : h("div", { ref: refFooterXSpace, class: "vxe-body--x-space" }), h("table", { ref: refFooterTable, class: "vxe-table--footer", xid: xID, cellspacing: 0, cellpadding: 0, border: 0, xvm: isOptimizeMode ? "1" : null }, [ /** * 列宽 */ h("colgroup", { ref: refFooterColgroup }, renderColumnList.map((column, $columnIndex) => { return h("col", { name: column.id, key: $columnIndex, style: { width: `${column.renderWidth}px` } }); })), /** * 底部 */ h("tfoot", { ref: refFooterTFoot }, renderHeads(isOptimizeMode, renderColumnList)) ]) ]) ]); }; onMounted(() => { nextTick(() => { const { fixedType } = props; const { elemStore } = tableInternalData; const prefix = `${fixedType || "main"}-footer-`; elemStore[`${prefix}wrapper`] = refElem; elemStore[`${prefix}scroll`] = refFooterScroll; elemStore[`${prefix}table`] = refFooterTable; elemStore[`${prefix}colgroup`] = refFooterColgroup; elemStore[`${prefix}list`] = refFooterTFoot; elemStore[`${prefix}xSpace`] = refFooterXSpace; }); }); onUnmounted(() => { const { fixedType } = props; const { elemStore } = tableInternalData; const prefix = `${fixedType || "main"}-footer-`; elemStore[`${prefix}wrapper`] = null; elemStore[`${prefix}scroll`] = null; elemStore[`${prefix}table`] = null; elemStore[`${prefix}colgroup`] = null; elemStore[`${prefix}list`] = null; elemStore[`${prefix}xSpace`] = null; }); return renderVN; } }); // ../node_modules/.pnpm/vxe-table@4.17.14_vue@3.5.24_typescript@5.9.3_/node_modules/vxe-table/es/table/src/props.js var { getConfig } = VxeUI; var tableProps = { /** 基本属性 */ id: [String, Function], // 数据 data: Array, // 表格的高度 height: [Number, String], // 表格的最小高度 minHeight: { type: [Number, String], default: () => null }, // 表格的最大高度 maxHeight: [Number, String], // 已废弃,被 column-config.resizable 替换 resizable: { type: Boolean, default: () => getConfig().table.resizable }, // 是否带有斑马纹 stripe: { type: Boolean, default: () => getConfig().table.stripe }, // 是否带有边框 border: { type: [Boolean, String], default: () => getConfig().table.border }, // 已废弃,被 cell-config.padding 替换 padding: { type: Boolean, default: null }, // 是否圆角边框 round: { type: Boolean, default: () => getConfig().table.round }, // 表格的尺寸 size: { type: String, default: () => getConfig().table.size || getConfig().size }, // 列的宽度是否自撑开(可能会被废弃的参数,不要使用) fit: { type: Boolean, default: () => getConfig().table.fit }, // 表格是否加载中 loading: Boolean, // 所有的列对其方式 align: { type: String, default: () => getConfig().table.align }, // 所有的表头列的对齐方式 headerAlign: { type: String, default: () => getConfig().table.headerAlign }, // 所有的表尾列的对齐方式 footerAlign: { type: String, default: () => getConfig().table.footerAlign }, // 是否显示表头 showHeader: { type: Boolean, default: () => getConfig().table.showHeader }, // (即将废弃)是否要高亮当前选中行 highlightCurrentRow: { type: Boolean, default: () => getConfig().table.highlightCurrentRow }, // (即将废弃)鼠标移到行是否要高亮显示 highlightHoverRow: { type: Boolean, default: () => getConfig().table.highlightHoverRow }, /** * (即将废弃)是否要高亮当前选中列 * @deprecated */ highlightCurrentColumn: { type: Boolean, default: () => getConfig().table.highlightCurrentColumn }, /** * (即将废弃)鼠标移到列是否要高亮显示 * @deprecated */ highlightHoverColumn: { type: Boolean, default: () => getConfig().table.highlightHoverColumn }, // (即将废弃)激活单元格编辑时是否高亮显示 highlightCell: Boolean, // 是否显示表尾合计 showFooter: Boolean, // 表尾数据 footerData: Array, // 表尾合计的计算方法 footerMethod: Function, // 给行附加 className rowClassName: [String, Function], // 给单元格附加 className cellClassName: [String, Function], // 给表头的行附加 className headerRowClassName: [String, Function], // 给表头的单元格附加 className headerCellClassName: [String, Function], // 给表尾的行附加 className footerRowClassName: [String, Function], // 给表尾的单元格附加 className footerCellClassName: [String, Function], // 给单元格附加样式 cellStyle: [Object, Function], // 给表头单元格附加样式 headerCellStyle: [Object, Function], // 给表尾单元格附加样式 footerCellStyle: [Object, Function], // 给行附加样式 rowStyle: [Object, Function], // 给表头行附加样式 headerRowStyle: [Object, Function], // 给表尾行附加样式 footerRowStyle: [Object, Function], // 用于分组表头,显示为自定义列头,配合 mergeHeaderCells 灵活实现自定义合并 showCustomHeader: { type: Boolean, default: () => getConfig().table.showCustomHeader }, // 临时合并指定的表头单元格 mergeHeaderCells: Array, // 临时合并指定的单元格 mergeCells: Array, // 临时合并指定的表尾单元格 mergeFooterCells: Array, mergeFooterItems: Array, // 自定义合并行或列的方法 spanMethod: Function, // 表尾合并行或列 footerSpanMethod: Function, // 设置所有内容过长时显示为省略号 showOverflow: { type: [Boolean, String], default: () => getConfig().table.showOverflow }, // 设置表头所有内容过长时显示为省略号 showHeaderOverflow: { type: [Boolean, String], default: () => getConfig().table.showHeaderOverflow }, // 设置表尾所有内容过长时显示为省略号 showFooterOverflow: { type: [Boolean, String], default: () => getConfig().table.showFooterOverflow }, /** 高级属性 */ /** * (即将废弃)columnKey 已废弃,被 column-config.useKey 替换 * @deprecated */ columnKey: Boolean, /** * (即将废弃)rowKey 已废弃,被 row-config.useKey 替换 * @deprecated */ rowKey: Boolean, /** * (即将废弃)rowId 已废弃,被 row-config.keyField 替换 * @deprecated */ rowId: { type: String, default: () => getConfig().table.rowId }, zIndex: Number, emptyText: { type: String, default: () => getConfig().table.emptyText }, keepSource: { type: Boolean, default: () => getConfig().table.keepSource }, // 是否自动监听父容器变化去更新响应式表格宽高 autoResize: { type: Boolean, default: () => getConfig().table.autoResize }, // 是否自动根据状态属性去更新响应式表格宽高 syncResize: [Boolean, String, Number], // 响应式布局配置项 resizeConfig: Object, // 列配置项 columnConfig: Object, // 当前列配置项 currentColumnConfig: Object, // 单元格配置项 cellConfig: Object, // 表头单元格配置项 headerCellConfig: Object, // 表尾单元格配置项 footerCellConfig: Object, // 行配置项 rowConfig: Object, // 数据聚合配置项 aggregateConfig: Object, /** * 已废弃,被 aggregateConfig 替换 * @deprecated */ rowGroupConfig: Object, // 当前行配置项 currentRowConfig: Object, /** * 已废弃,被 rowDragConfig 替换 * @deprecated */ dragConfig: Object, // 行拖拽排序配置项 rowDragConfig: Object, // 列拖拽排序配置项 columnDragConfig: Object, // 列调整配置项 resizableConfig: Object, // 序号配置项 seqConfig: Object, // 排序配置项 sortConfig: Object, // 筛选配置项 filterConfig: Object, // 浮动筛选配置项 floatingFilterConfig: Object, // 单选框配置 radioConfig: Object, // 复选框配置项 checkboxConfig: Object, // tooltip 配置项 tooltipConfig: Object, // 表头 tooltip 配置项 headerTooltipConfig: Object, // 表尾 tooltip 配置项 footerTooltipConfig: Object, // 导出配置项 exportConfig: Object, // 导入配置项 importConfig: Object, // 打印配置项 printConfig: Object, // 展开行配置项 expandConfig: Object, // 树形结构配置项 treeConfig: Object, // 快捷菜单配置项 menuConfig: Object, // 鼠标配置项 mouseConfig: Object, // 区域配置项 areaConfig: Object, // 按键配置项 keyboardConfig: Object, // 复制粘/贴配置项 clipConfig: Object, // 查找/替换配置项 fnrConfig: Object, // 编辑配置项 editConfig: Object, // 校验配置项 validConfig: Object, // 校验规则配置项 editRules: Object, // 加载中配置项 loadingConfig: Object, // 空内容渲染配置项 emptyRender: Object, // 自定义列配置项 customConfig: Object, /** * (即将废弃)横向虚拟滚动配置项 * @deprecated */ scrollX: Object, /** * (即将废弃)纵向虚拟滚动配置项 * @deprecated */ scrollY: Object, // 横向虚拟滚动配置项 virtualXConfig: Object, // 纵向虚拟滚动配置项 virtualYConfig: Object, // 滚动条配置项 scrollbarConfig: Object, // (即将废弃)优化相关 animat: { type: Boolean, default: () => getConfig().table.animat }, // (可能会被废弃的参数,不要使用) delayHover: { type: Number, default: () => getConfig().table.delayHover }, // 额外的参数 params: Object }; // ../node_modules/.pnpm/vxe-table@4.17.14_vue@3.5.24_typescript@5.9.3_/node_modules/vxe-table/es/table/src/emits.js var tableEmits = [ "update:data", "keydown-start", "keydown", "keydown-end", "paste", "copy", "cut", "columns-change", "data-change", "footer-data-change", "current-change", "current-row-change", "current-row-disabled", "current-column-change", "current-column-disabled", "radio-change", "checkbox-change", "checkbox-all", "checkbox-range-start", "checkbox-range-change", "checkbox-range-end", "checkbox-range-select", "cell-click", "cell-dblclick", "cell-menu", "cell-mouseenter", "cell-mouseleave", "cell-selected", "cell-delete-value", "cell-backspace-value", "header-cell-click", "header-cell-dblclick", "header-cell-menu", "footer-cell-click", "footer-cell-dblclick", "footer-cell-menu", "clear-merge", "sort-change", "clear-sort", "clear-all-sort", "filter-change", "filter-visible", "clear-filter", "clear-all-filter", "resizable-change", "column-resizable-change", "row-resizable-change", "toggle-row-group-expand", "toggle-row-expand", "toggle-tree-expand", "menu-click", "edit-closed", "row-dragstart", "row-dragover", "row-dragend", "row-remove-dragend", "row-insert-dragend", "column-dragstart", "column-dragover", "column-dragend", "enter-append-row", "edit-actived", "edit-activated", "edit-disabled", "valid-error", "scroll", "scroll-boundary", "custom", "custom-visible-change", "custom-visible-all", "custom-fixed-change", "custom-sort-change", "change-fnr", "open-fnr", "show-fnr", "hide-fnr", "fnr-change", "fnr-find", "fnr-find-all", "fnr-replace", "fnr-replace-all", "cell-area-copy", "cell-area-cut", "cell-area-paste", "cell-area-merge", "clear-cell-area-selection", "clear-cell-area-merge", "header-cell-area-selection", "cell-area-selection-invalid", "cell-area-selection-start", "cell-area-selection-drag", "cell-area-selection-end", "cell-area-extension-start", "cell-area-extension-drag", "cell-area-extension-end", "cell-area-extension-fill", "cell-area-selection-all-start", "cell-area-selection-all-end", "cell-area-arrows-start", "cell-area-arrows-end", "active-cell-change-start", "active-cell-change-end" ]; // ../node_modules/.pnpm/vxe-table@4.17.14_vue@3.5.24_typescript@5.9.3_/node_modules/vxe-table/es/table/module/custom/panel.js var import_xe_utils5 = __toESM(require_xe_utils()); var { getI18n: getI18n2, getIcon, renderEmptyElement: renderEmptyElement4 } = VxeUI; function createInternalData2() { return { // teleportTo: undefined, // prevDragCol: undefined, // prevDragGroupField: undefined, // prevDragAggFnColid: undefined, // prevDragToChild: false, // prevDragPos: null }; } var panel_default = defineVxeComponent({ name: "TableCustomPanel", props: { customStore: { type: Object, default: () => ({}) } }, setup(props, context) { const xID = import_xe_utils5.default.uniqueId(); const VxeUIModalComponent = VxeUI.getComponent("VxeModal"); const VxeUIDrawerComponent = VxeUI.getComponent("VxeDrawer"); const VxeUIButtonComponent = VxeUI.getComponent("VxeButton"); const VxeUINumberInputComponent = VxeUI.getComponent("VxeNumberInput"); const VxeUIRadioGroupComponent = VxeUI.getComponent("VxeRadioGroup"); const $xeTable = inject("$xeTable", {}); const { props: tableProps2, reactData: tableReactData, internalData: tableInternalData } = $xeTable; const { computeCustomOpts, computeColumnDragOpts, computeColumnOpts, computeIsMaxFixedColumn, computeResizableOpts } = $xeTable.getComputeMaps(); const refElem = ref(); const refBodyWrapperElem = ref(); const refCustomBodyElem = ref(); const refDragLineElem = ref(); const refDragTipElem = ref(); const customPanelReactData = reactive({ dragCol: null, dragGroupField: null, dragAggFnCol: null, dragTipText: "" }); let customPanelInternalData = createInternalData2(); const refMaps = { refElem, refBodyWrapperElem, refCustomBodyElem, refDragLineElem, refDragTipElem }; const computeMaps = {}; const handleWrapperMouseenterEvent = (evnt) => { const { customStore } = props; customStore.activeWrapper = true; $xeTable.customOpenEvent(evnt); }; const handleWrapperMouseleaveEvent = (evnt) => { const { customStore } = props; customStore.activeWrapper = false; setTimeout(() => { if (!customStore.activeBtn && !customStore.activeWrapper) { $xeTable.customCloseEvent(evnt); } }, 300); }; const confirmCustomEvent = ({ $event }) => { tableReactData.isCustomStatus = true; $xeTable.saveCustom(); $xeTable.closeCustom(); $xeTable.emitCustomEvent("confirm", $event); $xeTable.emitCustomEvent("close", $event); }; const cancelCloseEvent = ({ $event }) => { $xeTable.closeCustom(); $xeTable.emitCustomEvent("close", $event); }; const cancelCustomEvent = ({ $event }) => { $xeTable.cancelCustom(); $xeTable.closeCustom(); $xeTable.emitCustomEvent("cancel", $event); $xeTable.emitCustomEvent("close", $event); }; const handleResetCustomEvent = (evnt) => { $xeTable.resetCustom(true); $xeTable.closeCustom(); $xeTable.emitCustomEvent("reset", evnt); $xeTable.emitCustomEvent("close", evnt); }; const resetCustomEvent = ({ $event }) => { if (VxeUI.modal) { VxeUI.modal.confirm({ content: getI18n2("vxe.custom.cstmConfirmRestore"), className: "vxe-table--ignore-clear", escClosable: true }).then((type) => { if (type === "confirm") { handleResetCustomEvent($event); } }); } else { handleResetCustomEvent($event); } }; const handleOptionCheck = (column) => { const { customColumnList } = tableReactData; const matchObj = import_xe_utils5.default.findTree(customColumnList, (item) => item === column); if (matchObj && matchObj.parent) { const { parent } = matchObj; if (parent.children && parent.children.length) { parent.renderVisible = parent.children.every((column2) => column2.renderVisible); parent.halfVisible = !parent.renderVisible && parent.children.some((column2) => column2.renderVisible || column2.halfVisible); handleOptionCheck(parent); } } }; const changeCheckboxOption = (column, evnt) => { const isChecked = !column.renderVisible; const customOpts = computeCustomOpts.value; if (customOpts.immediate) { import_xe_utils5.default.eachTree([column], (item) => { item.visible = isChecked; item.renderVisible = isChecked; item.halfVisible = false; }); tableReactData.isCustomStatus = true; $xeTable.handleCustom(); $xeTable.saveCustomStore("update:visible"); } else { import_xe_utils5.default.eachTree([column], (item) => { item.renderVisible = isChecked; item.halfVisible = false; }); } handleOptionCheck(column); $xeTable.checkCustomStatus(); $xeTable.dispatchEvent("custom-visible-change", { column, checked: isChecked }, evnt); }; const changeColumnWidth = (column) => { const customOpts = computeCustomOpts.value; if (customOpts.immediate) { if (column.renderResizeWidth !== column.renderWidth) { column.resizeWidth = column.renderResizeWidth; column.renderWidth = column.renderResizeWidth; tableReactData.isCustomStatus = true; $xeTable.handleCustom(); $xeTable.saveCustomStore("update:width"); } } }; const changeFixedOption = (column, colFixed, evnt) => { const isMaxFixedColumn = computeIsMaxFixedColumn.value; const customOpts = computeCustomOpts.value; let targetFixed = null; if (customOpts.immediate) { if (column.renderFixed === colFixed) { targetFixed = ""; import_xe_utils5.default.eachTree([column], (col) => { col.fixed = ""; col.renderFixed = ""; }); } else { if (!isMaxFixedColumn || column.renderFixed) { targetFixed = colFixed; import_xe_utils5.default.eachTree([column], (col) => { col.fixed = colFixed; col.renderFixed = colFixed; }); } } tableReactData.isCustomStatus = true; $xeTable.handleCustom(); $xeTable.saveCustomStore("update:fixed"); } else { if (column.renderFixed === colFixed) { targetFixed = ""; import_xe_utils5.default.eachTree([column], (col) => { col.renderFixed = ""; }); } else { if (!isMaxFixedColumn || column.renderFixed) { targetFixed = colFixed; import_xe_utils5.default.eachTree([column], (col) => { col.renderFixed = colFixed; }); } } } if (targetFixed !== null) { $xeTable.dispatchEvent("custom-fixed-change", { column, fixed: targetFixed }, evnt); } }; const allOptionEvent = (evnt) => { const { customStore } = tableReactData; const isAll = !customStore.isAll; $xeTable.toggleCustomAllCheckbox(); $xeTable.dispatchEvent("custom-visible-all", { checked: isAll }, evnt); }; const showDropTip = (evnt, optEl, showLine, dragPos) => { const bodyWrapperElem = refBodyWrapperElem.value; if (!bodyWrapperElem) { return; } const customBodyElem = refCustomBodyElem.value; if (!customBodyElem) { return; } const { prevDragToChild } = customPanelInternalData; const bodyWrapperRect = bodyWrapperElem.getBoundingClientRect(); const customBodyRect = customBodyElem.getBoundingClientRect(); const dragLineEl = refDragLineElem.value; if (optEl) { if (dragLineEl) { if (showLine) { const optRect = optEl.getBoundingClientRect(); dragLineEl.style.display = "block"; dragLineEl.style.left = `${Math.max(0, customBodyRect.x - bodyWrapperRect.x)}px`; dragLineEl.style.top = `${Math.max(1, optRect.y + bodyWrapperElem.scrollTop - bodyWrapperRect.y)}px`; dragLineEl.style.height = `${optRect.height}px`; dragLineEl.style.width = `${optRect.width}px`; dragLineEl.setAttribute("drag-pos", dragPos); dragLineEl.setAttribute("drag-to-child", prevDragToChild ? "y" : "n"); } else { dragLineEl.style.display = ""; } } } else { if (dragLineEl) { dragLineEl.style.display = "node"; } } const dragTipEl = refDragTipElem.value; if (dragTipEl) { dragTipEl.style.display = "block"; dragTipEl.style.top = `${Math.min(bodyWrapperElem.clientHeight + bodyWrapperElem.scrollTop - dragTipEl.clientHeight, evnt.clientY + bodyWrapperElem.scrollTop - bodyWrapperRect.y)}px`; dragTipEl.style.left = `${Math.min(bodyWrapperElem.clientWidth + bodyWrapperElem.scrollLeft - dragTipEl.clientWidth, evnt.clientX + bodyWrapperElem.scrollLeft - bodyWrapperRect.x)}px`; dragTipEl.setAttribute("drag-status", showLine ? prevDragToChild ? "sub" : "normal" : "disabled"); } }; const updateColDropTipContent = () => { const { dragCol } = customPanelReactData; const columnDragOpts = computeColumnDragOpts.value; const { tooltipMethod } = columnDragOpts; let tipContent = ""; if (tooltipMethod) { const dtParams = { $table: $xeTable, column: dragCol }; tipContent = `${tooltipMethod(dtParams) || ""}`; } else { tipContent = getI18n2("vxe.custom.cstmDragTarget", [dragCol && dragCol.type !== "html" ? dragCol.getTitle() : ""]); } customPanelReactData.dragTipText = tipContent; }; const hideDropTip = () => { const dragTipEl = refDragTipElem.value; const dragLineEl = refDragLineElem.value; if (dragTipEl) { dragTipEl.style.display = ""; } if (dragLineEl) { dragLineEl.style.display = ""; } }; const sortMousedownEvent = (evnt) => { const btnEl = evnt.currentTarget; const cellEl = btnEl.parentElement; const tdEl = cellEl.parentElement; const trEl = tdEl.parentElement; const colid = trEl.getAttribute("colid"); const column = $xeTable.getColumnById(colid); trEl.draggable = true; customPanelReactData.dragCol = column; customPanelReactData.dragGroupField = null; customPanelReactData.dragAggFnCol = null; updateColDropTipContent(); addClass(trEl, "active--drag-origin"); }; const sortMouseupEvent = (evnt) => { const btnEl = evnt.currentTarget; const cellEl = btnEl.parentElement; const tdEl = cellEl.parentElement; const trEl = tdEl.parentElement; hideDropTip(); trEl.draggable = false; customPanelReactData.dragCol = null; customPanelReactData.dragGroupField = null; customPanelReactData.dragAggFnCol = null; removeClass(trEl, "active--drag-origin"); }; const sortDragstartEvent = (evnt) => { if (evnt.dataTransfer) { evnt.dataTransfer.setDragImage(getTpImg(), 0, 0); } customPanelInternalData.prevDragGroupField = null; customPanelInternalData.prevDragAggFnColid = null; }; const sortDragendEvent = (evnt) => { const { mouseConfig } = tableProps2; const { customColumnList } = tableReactData; const { collectColumn } = tableInternalData; const customOpts = computeCustomOpts.value; const { immediate } = customOpts; const trEl = evnt.currentTarget; const columnDragOpts = computeColumnDragOpts.value; const { isCrossDrag, isSelfToChildDrag, isToChildDrag, dragEndMethod } = columnDragOpts; const { dragCol } = customPanelReactData; const { prevDragCol, prevDragGroupField, prevDragAggFnColid, prevDragPos, prevDragToChild } = customPanelInternalData; const dragOffsetIndex = prevDragPos === "bottom" ? 1 : 0; if (prevDragGroupField || prevDragAggFnColid) { if ($xeTable.handlePivotTableAggregatePanelDragendEvent) { $xeTable.handlePivotTableAggregatePanelDragendEvent(evnt); } } else if (prevDragCol && dragCol) { if (prevDragCol !== dragCol) { const dragColumn = dragCol; const newColumn = prevDragCol; Promise.resolve(dragEndMethod ? dragEndMethod({ oldColumn: dragColumn, newColumn, dragColumn, dragPos: prevDragPos, dragToChild: !!prevDragToChild, offsetIndex: dragOffsetIndex }) : true).then((status) => { if (!status) { return; } let oafIndex = -1; let nafIndex = -1; const oldAllMaps = {}; import_xe_utils5.default.eachTree([dragColumn], (column) => { oldAllMaps[column.id] = column; }); let isSelfToChildStatus = false; if (immediate) { if (dragColumn.parentId && newColumn.parentId) { if (!isCrossDrag) { return; } if (oldAllMaps[newColumn.id]) { isSelfToChildStatus = true; if (!(isCrossDrag && isSelfToChildDrag)) { if (VxeUI.modal) { VxeUI.modal.message({ status: "error", content: getI18n2("vxe.error.treeDragChild") }); } return; } } } else if (dragColumn.parentId) { if (!isCrossDrag) { return; } } else if (newColumn.parentId) { if (!isCrossDrag) { return; } if (oldAllMaps[newColumn.id]) { isSelfToChildStatus = true; if (!(isCrossDrag && isSelfToChildDrag)) { if (VxeUI.modal) { VxeUI.modal.message({ status: "error", content: getI18n2("vxe.error.treeDragChild") }); } return; } } } else { } const oldewMatchRest = import_xe_utils5.default.findTree(collectColumn, (item) => item.id === dragColumn.id); if (isSelfToChildStatus && (isCrossDrag && isSelfToChildDrag)) { if (oldewMatchRest) { const { items: oCols, index: oIndex } = oldewMatchRest; const childList = dragColumn.children || []; childList.forEach((column) => { column.parentId = dragColumn.parentId; }); oCols.splice(oIndex, 1, ...childList); dragColumn.children = []; } } else { if (oldewMatchRest) { const { items: oCols, index: oIndex, parent: oParent } = oldewMatchRest; oCols.splice(oIndex, 1); if (!oParent) { oafIndex = oIndex; } } } const newMatchRest = import_xe_utils5.default.findTree(collectColumn, (item) => item.id === newColumn.id); if (newMatchRest) { const { items: nCols, index: nIndex, parent: nParent } = newMatchRest; if (isCrossDrag && isToChildDrag && prevDragToChild) { dragColumn.parentId = newColumn.id; newColumn.children = (newColumn.children || []).concat([dragColumn]); } else { dragColumn.parentId = newColumn.parentId; nCols.splice(nIndex + dragOffsetIndex, 0, dragColumn); } if (!nParent) { nafIndex = nIndex; } } import_xe_utils5.default.eachTree(collectColumn, (column, index, items, path, parent) => { if (!parent) { const sortIndex = index + 1; column.renderSortNumber = sortIndex; } }); } else { oafIndex = import_xe_utils5.default.findIndexOf(customColumnList, (item) => item.id === dragColumn.id); customColumnList.splice(oafIndex, 1); nafIndex = import_xe_utils5.default.findIndexOf(customColumnList, (item) => item.id === newColumn.id); customColumnList.splice(nafIndex + dragOffsetIndex, 0, dragColumn); } if (mouseConfig) { if ($xeTable.clearSelected) { $xeTable.clearSelected(); } if ($xeTable.clearCellAreas) { $xeTable.clearCellAreas(); $xeTable.clearCopyCellArea(); } } const csParams = { oldColumn: dragColumn, newColumn, dragColumn, dragPos: prevDragPos, offsetIndex: dragOffsetIndex, _index: { newIndex: nafIndex, oldIndex: oafIndex } }; $xeTable.dispatchEvent("custom-sort-change", csParams, evnt); $xeTable.dispatchEvent("column-dragend", csParams, evnt); if (immediate) { tableReactData.customColumnList = collectColumn.slice(0); $xeTable.handleColDragSwapColumn(); } }).catch(() => { }); } } hideDropTip(); customPanelReactData.dragCol = null; customPanelReactData.dragGroupField = null; customPanelReactData.dragAggFnCol = null; customPanelInternalData.prevDragGroupField = null; customPanelInternalData.prevDragAggFnColid = null; trEl.draggable = false; trEl.removeAttribute("drag-pos"); removeClass(trEl, "active--drag-target"); removeClass(trEl, "active--drag-origin"); }; const sortDragoverEvent = (evnt) => { const customOpts = computeCustomOpts.value; const { immediate } = customOpts; const columnDragOpts = computeColumnDragOpts.value; const { isCrossDrag, isToChildDrag } = columnDragOpts; const optEl = evnt.currentTarget; const isControlKey = hasControlKey(evnt); const colid = optEl.getAttribute("colid"); const column = $xeTable.getColumnById(colid); const { dragCol } = customPanelReactData; customPanelInternalData.prevDragGroupField = null; customPanelInternalData.prevDragAggFnColid = null; if (column && (isCrossDrag || column.level === 1)) { evnt.preventDefault(); const offsetY = evnt.clientY - optEl.getBoundingClientRect().y; const dragPos = offsetY < optEl.clientHeight / 2 ? "top" : "bottom"; if (!dragCol || dragCol && dragCol.id === column.id || !isCrossDrag && column.level > 1 || !immediate && column.level > 1) { showDropTip(evnt, optEl, false, dragPos); return; } customPanelInternalData.prevDragToChild = !!(isCrossDrag && isToChildDrag && isControlKey && immediate); customPanelInternalData.prevDragCol = column; customPanelInternalData.prevDragPos = dragPos; showDropTip(evnt, optEl, true, dragPos); } }; const renderDragTip = () => { const { dragTipText } = customPanelReactData; const columnDragOpts = computeColumnDragOpts.value; return h("div", {}, [ h("div", { ref: refDragLineElem, class: ["vxe-table-custom-popup--drag-line", { "is--guides": columnDragOpts.showGuidesStatus }] }), h("div", { ref: refDragTipElem, class: "vxe-table-custom-popup--drag-tip" }, [ h("div", { class: "vxe-table-custom-popup--drag-tip-wrapper" }, [ h("div", { class: "vxe-table-custom-popup--drag-tip-status" }, [ h("span", { class: ["vxe-table-custom-popup--drag-tip-normal-status", getIcon().TABLE_DRAG_STATUS_ROW] }), h("span", { class: ["vxe-table-custom-popup--drag-tip-sub-status", getIcon().TABLE_DRAG_STATUS_SUB_ROW] }), h("span", { class: ["vxe-table-custom-popup--drag-tip-group-status", getIcon().TABLE_DRAG_STATUS_AGG_GROUP] }), h("span", { class: ["vxe-table-custom-popup--drag-tip-values-status", getIcon().TABLE_DRAG_STATUS_AGG_VALUES] }), h("span", { class: ["vxe-table-custom-popup--drag-tip-disabled-status", getIcon().TABLE_DRAG_DISABLED] }) ]), h("div", { class: "vxe-table-custom-popup--drag-tip-content" }, `${dragTipText || ""}`) ]) ]) ]); }; const renderSimplePanel = () => { const $xeGrid = $xeTable.xeGrid; const $xeGantt = $xeTable.xeGantt; const tableProps3 = $xeTable.props; const { customStore } = props; const { treeConfig, rowGroupConfig, aggregateConfig } = tableProps3; const { isCustomStatus, customColumnList } = tableReactData; const customOpts = computeCustomOpts.value; const { immediate } = customOpts; const columnDragOpts = computeColumnDragOpts.value; const { maxHeight } = customStore; const { checkMethod, visibleMethod, allowVisible, allowSort, allowFixed, trigger, placement } = customOpts; const isMaxFixedColumn = computeIsMaxFixedColumn.value; const { isCrossDrag } = columnDragOpts; const slots = customOpts.slots || {}; const headerSlot = slots.header; const topSlot = slots.top; const bottomSlot = slots.bottom; const defaultSlot = slots.default; const footerSlot = slots.footer; const colVNs = []; const customWrapperOns = {}; const isAllChecked = customStore.isAll; const isAllIndeterminate = customStore.isIndeterminate; if (trigger === "hover") { customWrapperOns.onMouseenter = handleWrapperMouseenterEvent; customWrapperOns.onMouseleave = handleWrapperMouseleaveEvent; } const params = { $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt, columns: customColumnList, isAllChecked, isAllIndeterminate, isCustomStatus }; import_xe_utils5.default.eachTree(customColumnList, (column, index, items, path, parent) => { const isVisible = visibleMethod ? visibleMethod({ $table: $xeTable, column }) : true; if (isVisible) { const isChecked = column.renderVisible; const isIndeterminate = column.halfVisible; const isColGroup = column.children && column.children.length; const colTitle = formatText(column.getTitle(), 1); const isDisabled = checkMethod ? !checkMethod({ $table: $xeTable, column }) : false; const isHidden = !isChecked; colVNs.push(h("li", { key: column.id, colid: column.id, class: ["vxe-table-custom--option", `level--${column.level}`, { "is--hidden": isDisabled || isHidden, "is--group": isColGroup }], onDragstart: sortDragstartEvent, onDragend: sortDragendEvent, onDragover: sortDragoverEvent }, [ allowVisible ? h("div", { class: ["vxe-table-custom--checkbox-option", { "is--checked": isChecked, "is--indeterminate": isIndeterminate, "is--disabled": isDisabled }], title: getI18n2("vxe.custom.setting.colVisible"), onClick: (evnt) => { if (!isDisabled) { changeCheckboxOption(column, evnt); } } }, [ h("span", { class: ["vxe-checkbox--icon", isIndeterminate ? getIcon().TABLE_CHECKBOX_INDETERMINATE : isChecked ? getIcon().TABLE_CHECKBOX_CHECKED : getIcon().TABLE_CHECKBOX_UNCHECKED] }) ]) : renderEmptyElement4($xeTable), h("div", { class: "vxe-table-custom--name-option" }, [ allowSort && ((isCrossDrag ? immediate : false) || column.level === 1) ? h("div", { class: "vxe-table-custom--sort-option" }, [ h("span", Object.assign({ class: ["vxe-table-custom--sort-btn", { "is--disabled": isDisabled || isHidden }], title: getI18n2("vxe.custom.setting.sortHelpTip") }, isDisabled || isHidden ? {} : { onMousedown: sortMousedownEvent, onMouseup: sortMouseupEvent }), [ h("i", { class: getIcon().TABLE_CUSTOM_SORT }) ]) ]) : renderEmptyElement4($xeTable), column.type === "html" ? h("div", { key: "1", class: "vxe-table-custom--checkbox-label", innerHTML: colTitle }) : h("div", { key: "0", class: "vxe-table-custom--checkbox-label" }, colTitle) ]), !parent && allowFixed ? h("div", { class: "vxe-table-custom--fixed-option" }, [ VxeUIButtonComponent ? h(VxeUIButtonComponent, { mode: "text", icon: column.renderFixed === "left" ? getIcon().TOOLBAR_TOOLS_FIXED_LEFT_ACTIVE : getIcon().TOOLBAR_TOOLS_FIXED_LEFT, status: column.renderFixed === "left" ? "primary" : "", disabled: isDisabled || isHidden || isMaxFixedColumn && !column.renderFixed, title: getI18n2(column.renderFixed === "left" ? "vxe.toolbar.cancelFixed" : "vxe.toolbar.fixedLeft"), onClick: ({ $event }) => { changeFixedOption(column, "left", $event); } }) : renderEmptyElement4($xeTable), VxeUIButtonComponent ? h(VxeUIButtonComponent, { mode: "text", icon: column.renderFixed === "right" ? getIcon().TOOLBAR_TOOLS_FIXED_RIGHT_ACTIVE : getIcon().TOOLBAR_TOOLS_FIXED_RIGHT, status: column.renderFixed === "right" ? "primary" : "", disabled: isDisabled || isHidden || isMaxFixedColumn && !column.renderFixed, title: getI18n2(column.renderFixed === "right" ? "vxe.toolbar.cancelFixed" : "vxe.toolbar.fixedRight"), onClick: ({ $event }) => { changeFixedOption(column, "right", $event); } }) : renderEmptyElement4($xeTable) ]) : renderEmptyElement4($xeTable) ])); } }); return h("div", { ref: refElem, key: "simple", class: ["vxe-table-custom-wrapper", `placement--${placement}`, { "is--active": customStore.visible }], style: maxHeight && !["left", "right"].includes(placement || "") ? { maxHeight: `${maxHeight}px` } : {} }, customStore.visible ? [ h("div", { ref: refBodyWrapperElem, class: "vxe-table-custom-simple--body-wrapper" }, [ !treeConfig && (aggregateConfig || rowGroupConfig) && $xeTable.getPivotTableAggregateSimplePanel ? h($xeTable.getPivotTableAggregateSimplePanel(), { customStore }) : renderEmptyElement4($xeTable), h("div", { ref: refCustomBodyElem, class: "vxe-table-custom--handle-wrapper" }, [ h("div", { class: "vxe-table-custom--header" }, headerSlot ? $xeTable.callSlot(headerSlot, params) : [ h("ul", { class: "vxe-table-custom--panel-list" }, [ h("li", { class: "vxe-table-custom--option" }, [ allowVisible ? h("div", { class: ["vxe-table-custom--checkbox-option", { "is--checked": isAllChecked, "is--indeterminate": isAllIndeterminate }], title: getI18n2("vxe.table.allTitle"), onClick: allOptionEvent }, [ h("span", { class: ["vxe-checkbox--icon", isAllIndeterminate ? getIcon().TABLE_CHECKBOX_INDETERMINATE : isAllChecked ? getIcon().TABLE_CHECKBOX_CHECKED : getIcon().TABLE_CHECKBOX_UNCHECKED] }), h("span", { class: "vxe-checkbox--label" }, getI18n2("vxe.toolbar.customAll")) ]) : h("span", { class: "vxe-checkbox--label" }, getI18n2("vxe.table.customTitle")) ]) ]) ]), h("div", { class: "vxe-table-custom--body" }, [ topSlot ? h("div", { class: "vxe-table-custom--panel-top" }, $xeTable.callSlot(topSlot, params)) : renderEmptyElement4($xeTable), defaultSlot ? h("div", { class: "vxe-table-custom--panel-body" }, $xeTable.callSlot(defaultSlot, params)) : h(TransitionGroup, Object.assign({ class: "vxe-table-custom--panel-list", name: "vxe-table-custom--list", tag: "ul" }, customWrapperOns), { default: () => colVNs }), bottomSlot ? h("div", { class: "vxe-table-custom--panel-bottom" }, $xeTable.callSlot(bottomSlot, params)) : renderEmptyElement4($xeTable) ]), customOpts.showFooter ? h("div", { class: "vxe-table-custom--footer" }, footerSlot ? $xeTable.callSlot(footerSlot, params) : [ h("div", { class: "vxe-table-custom--footer-buttons" }, [ VxeUIButtonComponent ? h(VxeUIButtonComponent, { mode: "text", content: customOpts.resetButtonText || getI18n2("vxe.table.customRestore"), disabled: !isCustomStatus, onClick: resetCustomEvent }) : renderEmptyElement4($xeTable), immediate ? VxeUIButtonComponent ? h(VxeUIButtonComponent, { mode: "text", content: customOpts.closeButtonText || getI18n2("vxe.table.customClose"), onClick: cancelCloseEvent }) : renderEmptyElement4($xeTable) : VxeUIButtonComponent ? h(VxeUIButtonComponent, { mode: "text", content: customOpts.cancelButtonText || getI18n2("vxe.table.customCancel"), onClick: cancelCustomEvent }) : renderEmptyElement4($xeTable), immediate ? renderEmptyElement4($xeTable) : VxeUIButtonComponent ? h(VxeUIButtonComponent, { mode: "text", status: "primary", content: customOpts.confirmButtonText || getI18n2("vxe.table.customConfirm"), onClick: confirmCustomEvent }) : renderEmptyElement4($xeTable) ]) ]) : null ]), renderDragTip() ]) ] : []); }; const renderPopupPanel = () => { const $xeGrid = $xeTable.xeGrid; const $xeGantt = $xeTable.xeGantt; const { customStore } = props; const { treeConfig, rowGroupConfig, aggregateConfig, resizable: allResizable } = tableProps2; const { isCustomStatus, customColumnList } = tableReactData; const customOpts = computeCustomOpts.value; const { immediate } = customOpts; const columnDragOpts = computeColumnDragOpts.value; const { mode, modalOptions, drawerOptions, allowVisible, allowSort, allowFixed, allowResizable, checkMethod, visibleMethod } = customOpts; const columnOpts = computeColumnOpts.value; const { maxFixedSize } = columnOpts; const resizableOpts = computeResizableOpts.value; const { minWidth: reMinWidth, maxWidth: reMaxWidth } = resizableOpts; const modalOpts = Object.assign({}, modalOptions); const drawerOpts = Object.assign({}, drawerOptions); const isMaxFixedColumn = computeIsMaxFixedColumn.value; const { isCrossDrag } = columnDragOpts; const slots = customOpts.slots || {}; const headerSlot = slots.header; const topSlot = slots.top; const bottomSlot = slots.bottom; const defaultSlot = slots.default; const footerSlot = slots.footer; const trVNs = []; const isAllChecked = customStore.isAll; const isAllIndeterminate = customStore.isIndeterminate; const params = { $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt, columns: customColumnList, isAllChecked, isAllIndeterminate, isCustomStatus }; import_xe_utils5.default.eachTree(customColumnList, (column, index, items, path, parent) => { const isVisible = visibleMethod ? visibleMethod({ $table: $xeTable, column }) : true; if (isVisible) { let customMinWidth = 0; let customMaxWidth = 0; if (allowResizable) { const resizeParams = { $table: $xeTable, column, columnIndex: index, $columnIndex: index, $rowIndex: -1 }; if (reMinWidth) { customMinWidth = import_xe_utils5.default.toNumber(import_xe_utils5.default.isFunction(reMinWidth) ? reMinWidth(resizeParams) : reMinWidth); } if (reMaxWidth) { customMaxWidth = import_xe_utils5.default.toNumber(import_xe_utils5.default.isFunction(reMaxWidth) ? reMaxWidth(resizeParams) : reMaxWidth); } } const isChecked = column.renderVisible; const isIndeterminate = column.halfVisible; const colTitle = formatText(column.getTitle(), 1); const isColGroup = column.children && column.children.length; const isDisabled = checkMethod ? !checkMethod({ $table: $xeTable, column }) : false; const isHidden = !isChecked; trVNs.push(h("tr", { key: column.id, colid: column.id, class: [`vxe-table-custom-popup--row level--${column.level}`, { "is--group": isColGroup }], onDragstart: sortDragstartEvent, onDragend: sortDragendEvent, onDragover: sortDragoverEvent }, [ allowVisible ? h("td", { class: "vxe-table-custom-popup--column-item col--visible" }, [ h("div", { class: ["vxe-table-custom--checkbox-option", { "is--checked": isChecked, "is--indeterminate": isIndeterminate, "is--disabled": isDisabled }], title: getI18n2("vxe.custom.setting.colVisible"), onClick: (evnt) => { if (!isDisabled) { changeCheckboxOption(column, evnt); } } }, [ h("span", { class: ["vxe-checkbox--icon", isIndeterminate ? getIcon().TABLE_CHECKBOX_INDETERMINATE : isChecked ? getIcon().TABLE_CHECKBOX_CHECKED : getIcon().TABLE_CHECKBOX_UNCHECKED] }) ]) ]) : renderEmptyElement4($xeTable), h("td", { class: "vxe-table-custom-popup--column-item col--name" }, [ h("div", { class: "vxe-table-custom-popup--name" }, [ allowSort ? (isCrossDrag ? immediate : false) || column.level === 1 ? h("div", Object.assign({ class: ["vxe-table-custom-popup--column-sort-btn", { "is--disabled": isDisabled || isHidden }], title: getI18n2("vxe.custom.setting.sortHelpTip") }, isDisabled || isHidden ? {} : { onMousedown: sortMousedownEvent, onMouseup: sortMouseupEvent }), [ h("i", { class: getIcon().TABLE_CUSTOM_SORT }) ]) : h("div", { class: "vxe-table-custom-popup--column-sort-placeholder" }) : renderEmptyElement4($xeTable), column.type === "html" ? h("div", { key: "1", class: "vxe-table-custom-popup--title", innerHTML: colTitle }) : h("div", { key: "0", class: "vxe-table-custom-popup--title", title: colTitle }, colTitle) ]) ]), allowResizable ? h("td", { class: "vxe-table-custom-popup--column-item col--resizable" }, [ column.children && column.children.length || !(import_xe_utils5.default.isBoolean(column.resizable) ? column.resizable : columnOpts.resizable || allResizable) ? h("span", "-") : VxeUINumberInputComponent ? h(VxeUINumberInputComponent, { type: "integer", immediate: false, disabled: isDisabled || isHidden, modelValue: column.renderResizeWidth, min: customMinWidth || void 0, max: customMaxWidth || void 0, "onUpdate:modelValue"(value) { const width = Math.max(0, Number(value)); column.renderResizeWidth = width; }, onChange() { changeColumnWidth(column); } }) : renderEmptyElement4($xeTable) ]) : renderEmptyElement4($xeTable), allowFixed ? h("td", { class: "vxe-table-custom-popup--column-item col--fixed" }, [ parent ? h("span", "-") : VxeUIRadioGroupComponent ? h(VxeUIRadioGroupComponent, { modelValue: column.renderFixed || "", type: "button", size: "mini", disabled: isDisabled || isHidden, options: [ { label: getI18n2("vxe.custom.setting.fixedLeft"), value: "left", disabled: isDisabled || isHidden || isMaxFixedColumn }, { label: getI18n2("vxe.custom.setting.fixedUnset"), value: "", disabled: isDisabled || isHidden }, { label: getI18n2("vxe.custom.setting.fixedRight"), value: "right", disabled: isDisabled || isHidden || isMaxFixedColumn } ], onChange({ label, $event }) { changeFixedOption(column, label, $event); } }) : renderEmptyElement4($xeTable) ]) : renderEmptyElement4($xeTable) ])); } }); const scopedSlots = { default: () => { return h("div", { ref: refBodyWrapperElem, class: "vxe-table-custom-popup--body-wrapper" }, defaultSlot ? $xeTable.callSlot(defaultSlot, params) : [ h("div", { ref: refCustomBodyElem, class: "vxe-table-custom-popup--handle-wrapper" }, [ topSlot ? h("div", { class: "vxe-table-custom-popup--table-top" }, $xeTable.callSlot(topSlot, params)) : renderEmptyElement4($xeTable), h("div", { class: "vxe-table-custom-popup--table-wrapper" }, [ h("table", {}, [ h("colgroup", {}, [ allowVisible ? h("col", { class: "vxe-table-custom-popup--table-col-seq" }) : renderEmptyElement4($xeTable), h("col", { class: "vxe-table-custom-popup--table-col-title" }), allowResizable ? h("col", { class: "vxe-table-custom-popup--table-col-width" }) : renderEmptyElement4($xeTable), allowFixed ? h("col", { class: "vxe-table-custom-popup--table-col-fixed" }) : renderEmptyElement4($xeTable) ]), h("thead", {}, [ h("tr", {}, [ allowVisible ? h("th", {}, [ h("div", { class: ["vxe-table-custom--checkbox-option", { "is--checked": isAllChecked, "is--indeterminate": isAllIndeterminate }], title: getI18n2("vxe.table.allTitle"), onClick: allOptionEvent }, [ h("span", { class: ["vxe-checkbox--icon", isAllIndeterminate ? getIcon().TABLE_CHECKBOX_INDETERMINATE : isAllChecked ? getIcon().TABLE_CHECKBOX_CHECKED : getIcon().TABLE_CHECKBOX_UNCHECKED] }), h("span", { class: "vxe-checkbox--label" }, getI18n2("vxe.toolbar.customAll")) ]) ]) : renderEmptyElement4($xeTable), h("th", {}, getI18n2("vxe.custom.setting.colTitle")), allowResizable ? h("th", {}, getI18n2("vxe.custom.setting.colResizable")) : renderEmptyElement4($xeTable), allowFixed ? h("th", {}, getI18n2(`vxe.custom.setting.${maxFixedSize ? "colFixedMax" : "colFixed"}`, [maxFixedSize])) : renderEmptyElement4($xeTable) ]) ]), h(TransitionGroup, { class: "vxe-table-custom--panel-list", tag: "tbody", name: "vxe-table-custom--list" }, { default: () => trVNs }) ]) ]), bottomSlot ? h("div", { class: "vxe-table-custom-popup--table-bottom" }, $xeTable.callSlot(bottomSlot, params)) : renderEmptyElement4($xeTable), renderDragTip() ]), !treeConfig && (aggregateConfig || rowGroupConfig) && $xeTable.getPivotTableAggregatePopupPanel ? h($xeTable.getPivotTableAggregatePopupPanel(), { customStore }) : renderEmptyElement4($xeTable) ]); }, footer: () => { if (footerSlot) { return $xeTable.callSlot(footerSlot, params); } return h("div", { class: "vxe-table-custom-popup--footer" }, [ VxeUIButtonComponent ? h(VxeUIButtonComponent, { content: customOpts.resetButtonText || getI18n2("vxe.custom.cstmRestore"), disabled: !isCustomStatus, onClick: resetCustomEvent }) : renderEmptyElement4($xeTable), immediate ? VxeUIButtonComponent ? h(VxeUIButtonComponent, { content: customOpts.closeButtonText || getI18n2("vxe.table.customClose"), onClick: cancelCloseEvent }) : renderEmptyElement4($xeTable) : VxeUIButtonComponent ? h(VxeUIButtonComponent, { content: customOpts.cancelButtonText || getI18n2("vxe.table.customCancel"), onClick: cancelCustomEvent }) : renderEmptyElement4($xeTable), immediate ? renderEmptyElement4($xeTable) : VxeUIButtonComponent ? h(VxeUIButtonComponent, { status: "primary", content: customOpts.confirmButtonText || getI18n2("vxe.custom.cstmConfirm"), onClick: confirmCustomEvent }) : renderEmptyElement4($xeTable) ]); } }; if (headerSlot) { scopedSlots.header = () => $xeTable.callSlot(headerSlot, params); } if (mode === "drawer") { return VxeUIDrawerComponent ? h(VxeUIDrawerComponent, { key: "drawer", className: ["vxe-table-custom-drawer-wrapper", "vxe-table--ignore-clear", drawerOpts.className || ""].join(" "), modelValue: customStore.visible, title: drawerOpts.title || getI18n2("vxe.custom.cstmTitle"), width: drawerOpts.width || Math.min(880, Math.floor(document.documentElement.clientWidth * 0.6)), position: drawerOpts.position, resize: !!drawerOpts.resize, escClosable: !!drawerOpts.escClosable, maskClosable: !!drawerOpts.maskClosable, destroyOnClose: true, showFooter: true, "onUpdate:modelValue"(value) { customStore.visible = value; } }, scopedSlots) : renderEmptyElement4($xeTable); } return VxeUIModalComponent ? h(VxeUIModalComponent, { key: "modal", className: ["vxe-table-custom-modal-wrapper", "vxe-table--ignore-clear", modalOpts.className || ""].join(" "), modelValue: customStore.visible, title: modalOpts.title || getI18n2("vxe.custom.cstmTitle"), width: modalOpts.width || Math.min(880, document.documentElement.clientWidth), minWidth: modalOpts.minWidth || 700, height: modalOpts.height || Math.min(680, document.documentElement.clientHeight), minHeight: modalOpts.minHeight || 400, showZoom: modalOpts.showZoom, showMaximize: modalOpts.showMaximize, showMinimize: modalOpts.showMinimize, mask: modalOpts.mask, lockView: modalOpts.lockView, resize: modalOpts.resize, escClosable: !!modalOpts.escClosable, maskClosable: !!modalOpts.maskClosable, destroyOnClose: true, showFooter: true, "onUpdate:modelValue"(value) { customStore.visible = value; } }, scopedSlots) : renderEmptyElement4($xeTable); }; const renderVN = () => { const customOpts = computeCustomOpts.value; if (["modal", "drawer", "popup"].includes(`${customOpts.mode}`)) { return renderPopupPanel(); } return renderSimplePanel(); }; nextTick(() => { const customOpts = computeCustomOpts.value; const { mode } = customOpts; if (!VxeUIModalComponent && mode === "modal") { errLog("vxe.error.reqComp", ["vxe-modal"]); } if (!VxeUIDrawerComponent && mode === "drawer") { errLog("vxe.error.reqComp", ["vxe-drawer"]); } if (!VxeUIButtonComponent) { errLog("vxe.error.reqComp", ["vxe-button"]); } if (!VxeUINumberInputComponent) { errLog("vxe.error.reqComp", ["vxe-number-input"]); } if (!VxeUIRadioGroupComponent) { errLog("vxe.error.reqComp", ["vxe-radio-group"]); } }); const $xeTableCustomPanel = { xID, props, context, reactData: customPanelReactData, internalData: customPanelInternalData, xeTable: $xeTable, getRefMaps: () => refMaps, getComputeMaps: () => computeMaps, renderVN }; onUnmounted(() => { customPanelInternalData = createInternalData2(); }); provide("$xeTableCustomPanel", $xeTableCustomPanel); return $xeTableCustomPanel; }, render() { return this.renderVN(); } }); // ../node_modules/.pnpm/vxe-table@4.17.14_vue@3.5.24_typescript@5.9.3_/node_modules/vxe-table/es/table/module/filter/panel.js var import_xe_utils6 = __toESM(require_xe_utils()); var { getI18n: getI18n3, getIcon: getIcon2, renderer: renderer4, renderEmptyElement: renderEmptyElement5 } = VxeUI; var panel_default2 = defineVxeComponent({ name: "VxeTableFilterPanel", props: { filterStore: { type: Object, default: () => ({}) } }, setup(props, context) { const xID = import_xe_utils6.default.uniqueId(); const $xeTable = inject("$xeTable", {}); const { reactData: tableReactData, internalData: tableInternalData, getComputeMaps } = $xeTable; const { computeFilterOpts } = getComputeMaps(); const refElem = ref(); const refMaps = { refElem }; const $xeFilterPanel = { xID, props, context, getRefMaps: () => refMaps }; const computeHasCheckOption = computed(() => { const { filterStore } = props; const { column } = filterStore; return column && column.filters && column.filters.some((option) => option.checked); }); const filterCheckAllEvent = (evnt, value) => { const { filterStore } = props; const { column } = filterStore; if (column && column.filters) { column.filters.forEach((option) => { option._checked = value; option.checked = value; }); } filterStore.isAllSelected = value; filterStore.isIndeterminate = false; }; const confirmFilter = (evnt) => { const { filterStore } = props; if (!evnt) { warnLog("vxe.error.delFunc", ["confirmFilter", "saveFilterPanelByEvent"]); } $xeTable.handleFilterConfirmFilter(evnt || new Event("click"), filterStore.column || null); }; const changeRadioOption = (evnt, checked, item) => { $xeTable.handleFilterChangeRadioOption(evnt, checked, item); }; const resetFilter = (evnt) => { const { filterStore } = props; $xeTable.handleFilterResetFilter(evnt, filterStore.column || null); }; const changeMultipleOption = (evnt, checked, item) => { $xeTable.handleFilterChangeMultipleOption(evnt, checked, item); }; const changeOption = (evnt, checked, item) => { $xeTable.handleFilterChangeOption(evnt, checked, item); }; const changeAllOption = (evnt, checked) => { const { filterStore } = props; const { column } = filterStore; if (column && column.filterMultiple) { filterCheckAllEvent(evnt, checked); } else { resetFilter(evnt); } }; const filterPanelMethods = { changeRadioOption, changeMultipleOption, changeAllOption, changeOption, confirmFilter, resetFilter }; Object.assign($xeFilterPanel, filterPanelMethods); const renderOptions = (filterRender, compConf) => { const { filterStore } = props; const { column, maxHeight } = filterStore; if (!column) { return []; } const { filterMultiple, filters, slots } = column; const filterOptions = filters || []; const filterSlot = slots ? slots.filter : null; const params = Object.assign({}, tableInternalData._currFilterParams, { option: filterOptions[0], $panel: $xeFilterPanel, $table: $xeTable }); const rtFilter = compConf ? compConf.renderTableFilter || compConf.renderFilter : null; if (filterSlot) { return [ h("div", { class: "vxe-table--filter-template", style: maxHeight ? { maxHeight: toCssUnit(maxHeight) } : {} }, $xeTable.callSlot(filterSlot, params)) ]; } else if (filterRender && rtFilter) { return [ h("div", { class: "vxe-table--filter-template", style: maxHeight ? { maxHeight: toCssUnit(maxHeight) } : {} }, getSlotVNs(rtFilter(filterRender, params))) ]; } const isAllChecked = filterMultiple ? filterStore.isAllSelected : !filterOptions.some((item) => item._checked); const isAllIndeterminate = filterMultiple && filterStore.isIndeterminate; return [ h("ul", { class: "vxe-table--filter-header" }, [ h("li", { class: ["vxe-table--filter-option", { "is--checked": isAllChecked, "is--indeterminate": isAllIndeterminate }], title: getI18n3(filterMultiple ? "vxe.table.allTitle" : "vxe.table.allFilter"), onClick: (evnt) => { changeAllOption(evnt, !filterStore.isAllSelected); } }, (filterMultiple ? [ h("span", { class: ["vxe-checkbox--icon", isAllIndeterminate ? getIcon2().TABLE_CHECKBOX_INDETERMINATE : isAllChecked ? getIcon2().TABLE_CHECKBOX_CHECKED : getIcon2().TABLE_CHECKBOX_UNCHECKED] }) ] : []).concat([ h("span", { class: "vxe-checkbox--label" }, getI18n3("vxe.table.allFilter")) ])) ]), h("ul", { class: "vxe-table--filter-body", style: maxHeight ? { maxHeight: toCssUnit(maxHeight) } : {} }, filterOptions.map((item) => { const isChecked = item._checked; const isIndeterminate = false; return h("li", { class: ["vxe-table--filter-option", { "is--checked": item._checked }], title: item.label, onClick: (evnt) => { changeOption(evnt, !item._checked, item); } }, (filterMultiple ? [ h("span", { class: ["vxe-checkbox--icon", isIndeterminate ? getIcon2().TABLE_CHECKBOX_INDETERMINATE : isChecked ? getIcon2().TABLE_CHECKBOX_CHECKED : getIcon2().TABLE_CHECKBOX_UNCHECKED] }) ] : []).concat([ h("span", { class: "vxe-checkbox--label" }, formatText(item.label, 1)) ])); })) ]; }; const renderFooters = () => { const { filterStore } = props; const { column } = filterStore; if (!column) { return []; } const filterOpts = computeFilterOpts.value; const hasCheckOption = computeHasCheckOption.value; const { filterRender, filterMultiple } = column; const compConf = isEnableConf(filterRender) ? renderer4.get(filterRender.name) : null; const isDisabled = !hasCheckOption && !filterStore.isAllSelected && !filterStore.isIndeterminate; return (compConf ? !(compConf.showTableFilterFooter === false || compConf.showFilterFooter === false || compConf.isFooter === false) : filterMultiple) ? [ h("div", { class: "vxe-table--filter-footer" }, [ h("button", { class: { "is--disabled": isDisabled }, disabled: isDisabled, onClick: confirmFilter }, filterOpts.confirmButtonText || getI18n3("vxe.table.confirmFilter")), h("button", { onClick: resetFilter }, filterOpts.resetButtonText || getI18n3("vxe.table.resetFilter")) ]) ] : []; }; const renderVN = () => { const { filterStore } = props; const { initStore } = tableReactData; const { visible, column } = filterStore; if (!column) { return renderEmptyElement5($xeFilterPanel); } const filterRender = column ? column.filterRender : null; const compConf = filterRender && isEnableConf(filterRender) ? renderer4.get(filterRender.name) : null; const filterClassName = compConf ? compConf.tableFilterClassName || compConf.filterClassName : ""; const params = Object.assign({}, tableInternalData._currFilterParams, { $panel: $xeFilterPanel, $table: $xeTable }); const tableProps2 = $xeTable.props; const { computeSize } = $xeTable.getComputeMaps(); const vSize = computeSize.value; const filterOpts = computeFilterOpts.value; const { transfer, destroyOnClose, className } = filterOpts; return h(Teleport, { to: "body", disabled: !transfer }, [ h("div", { ref: refElem, class: [ "vxe-table--filter-wrapper", "filter--prevent-default", className, getPropClass(filterClassName, params), { [`size--${vSize}`]: vSize, "is--animat": tableProps2.animat, "is--multiple": column.filterMultiple, "is--active": visible } ], style: filterStore.style }, initStore.filter && (destroyOnClose ? visible : true) && column ? renderOptions(filterRender, compConf).concat(renderFooters()) : []) ]); }; $xeFilterPanel.renderVN = renderVN; return $xeFilterPanel; }, render() { return this.renderVN(); } }); // ../node_modules/.pnpm/vxe-table@4.17.14_vue@3.5.24_typescript@5.9.3_/node_modules/vxe-table/es/table/module/export/import-panel.js var import_xe_utils7 = __toESM(require_xe_utils()); var { getI18n: getI18n4, getIcon: getIcon3, renderEmptyElement: renderEmptyElement6 } = VxeUI; var import_panel_default = defineVxeComponent({ name: "VxeTableImportPanel", props: { defaultOptions: Object, storeData: Object }, setup(props) { const VxeUIModalComponent = VxeUI.getComponent("VxeModal"); const VxeUIButtonComponent = VxeUI.getComponent("VxeButton"); const VxeUISelectComponent = VxeUI.getComponent("VxeSelect"); const $xeTable = inject("$xeTable", {}); const { computeImportOpts } = $xeTable.getComputeMaps(); const reactData = reactive({ loading: false }); const refFileBtn = ref(); const computeSelectName = computed(() => { const { storeData } = props; return `${storeData.filename}.${storeData.type}`; }); const computeHasFile = computed(() => { const { storeData } = props; return storeData.file && storeData.type; }); const computeParseTypeLabel = computed(() => { const { storeData } = props; const { type, typeList } = storeData; if (type) { const selectItem = import_xe_utils7.default.find(typeList, (item) => type === item.value); return selectItem ? selectItem.label : "*.*"; } return `*.${typeList.map((item) => item.value).join(", *.")}`; }); const clearFileEvent = () => { const { storeData } = props; Object.assign(storeData, { filename: "", sheetName: "", type: "" }); }; const selectFileEvent = () => { const { storeData, defaultOptions } = props; $xeTable.readFile(defaultOptions).then((params) => { const { file } = params; Object.assign(storeData, parseFile(file), { file }); }).catch((e) => e); }; const showEvent = () => { nextTick(() => { const targetElem = refFileBtn.value; if (targetElem) { targetElem.focus(); } }); }; const cancelEvent = () => { const { storeData } = props; storeData.visible = false; }; const importEvent = () => { const { storeData, defaultOptions } = props; const importOpts = computeImportOpts.value; reactData.loading = true; $xeTable.importByFile(storeData.file, Object.assign({}, importOpts, defaultOptions)).then(() => { reactData.loading = false; storeData.visible = false; }).catch(() => { reactData.loading = false; }); }; const renderVN = () => { const $xeGrid = $xeTable.xeGrid; const $xeGantt = $xeTable.xeGantt; const { defaultOptions, storeData } = props; const selectName = computeSelectName.value; const hasFile = computeHasFile.value; const parseTypeLabel = computeParseTypeLabel.value; const slots = defaultOptions.slots || {}; const topSlot = slots.top; const bottomSlot = slots.bottom; const defaultSlot = slots.default; const footerSlot = slots.footer; return VxeUIModalComponent ? h(VxeUIModalComponent, { id: "VXE_IMPORT_MODAL", modelValue: storeData.visible, title: getI18n4("vxe.import.impTitle"), className: "vxe-table-export-popup-wrapper", width: 540, minWidth: 360, minHeight: 240, mask: true, lockView: true, showFooter: true, escClosable: true, maskClosable: true, showMaximize: true, resize: true, loading: reactData.loading, "onUpdate:modelValue"(value) { storeData.visible = value; }, onShow: showEvent }, { default: () => { const params = { $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt, options: defaultOptions, params: defaultOptions.params }; return h("div", { class: "vxe-table-export--panel" }, [ topSlot ? h("div", { class: "vxe-table-export--panel-top" }, $xeTable.callSlot(topSlot, params)) : renderEmptyElement6($xeTable), h("div", { class: "vxe-table-export--panel-body" }, defaultSlot ? $xeTable.callSlot(defaultSlot, params) : [ h("table", { class: "vxe-table-export--panel-table", cellspacing: 0, cellpadding: 0, border: 0 }, [ h("tbody", [ h("tr", [ h("td", getI18n4("vxe.import.impFile")), h("td", [ hasFile ? h("div", { class: "vxe-table-export--selected--file", title: selectName }, [ h("span", selectName), h("i", { class: getIcon3().INPUT_CLEAR, onClick: clearFileEvent }) ]) : h("button", { ref: refFileBtn, class: "vxe-table-export--select--file", onClick: selectFileEvent }, getI18n4("vxe.import.impSelect")) ]) ]), h("tr", [ h("td", getI18n4("vxe.import.impType")), h("td", parseTypeLabel) ]), h("tr", [ h("td", getI18n4("vxe.import.impMode")), h("td", [ VxeUISelectComponent ? h(VxeUISelectComponent, { modelValue: defaultOptions.mode, options: storeData.modeList, "onUpdate:modelValue"(value) { defaultOptions.mode = value; } }) : renderEmptyElement6($xeTable) ]) ]) ]) ]) ]), bottomSlot ? h("div", { class: "vxe-table-export--panel-bottom" }, $xeTable.callSlot(bottomSlot, params)) : renderEmptyElement6($xeTable) ]); }, footer() { const params = { $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt, options: defaultOptions, params: defaultOptions.params }; return h("div", { class: "vxe-table-export--panel-footer" }, footerSlot ? $xeTable.callSlot(footerSlot, params) : [ h("div", { class: "vxe-table-export--panel-btns" }, [ VxeUIButtonComponent ? h(VxeUIButtonComponent, { content: getI18n4("vxe.import.impCancel"), onClick: cancelEvent }) : renderEmptyElement6($xeTable), VxeUIButtonComponent ? h(VxeUIButtonComponent, { status: "primary", disabled: !hasFile || reactData.loading, content: getI18n4("vxe.import.impConfirm"), onClick: importEvent }) : renderEmptyElement6($xeTable) ]) ]); } }) : renderEmptyElement6($xeTable); }; nextTick(() => { if (!VxeUIModalComponent) { errLog("vxe.error.reqComp", ["vxe-modal"]); } if (!VxeUIButtonComponent) { errLog("vxe.error.reqComp", ["vxe-button"]); } if (!VxeUISelectComponent) { errLog("vxe.error.reqComp", ["vxe-select"]); } }); return renderVN; } }); // ../node_modules/.pnpm/vxe-table@4.17.14_vue@3.5.24_typescript@5.9.3_/node_modules/vxe-table/es/table/module/export/export-panel.js var import_xe_utils8 = __toESM(require_xe_utils()); var { getI18n: getI18n5, getIcon: getIcon4, renderEmptyElement: renderEmptyElement7 } = VxeUI; var export_panel_default = defineVxeComponent({ name: "VxeTableExportPanel", props: { defaultOptions: Object, storeData: Object }, setup(props) { const VxeUIModalComponent = VxeUI.getComponent("VxeModal"); const VxeUIButtonComponent = VxeUI.getComponent("VxeButton"); const VxeUISelectComponent = VxeUI.getComponent("VxeSelect"); const VxeUIInputComponent = VxeUI.getComponent("VxeInput"); const VxeUICheckboxComponent = VxeUI.getComponent("VxeCheckbox"); const $xeTable = inject("$xeTable", {}); const { computeExportOpts, computePrintOpts } = $xeTable.getComputeMaps(); const reactData = reactive({ isAll: false, isIndeterminate: false, loading: false }); const xButtonConfirm = ref(); const xInputFilename = ref(); const xInputSheetname = ref(); const computeCheckedAll = computed(() => { const { storeData } = props; return storeData.columns.every((column) => column.checked); }); const computeShowSheet = computed(() => { const { defaultOptions } = props; return ["html", "xml", "xlsx", "pdf"].indexOf(defaultOptions.type) > -1; }); const computeSupportMerge = computed(() => { const { storeData, defaultOptions } = props; return !defaultOptions.original && defaultOptions.mode === "current" && (storeData.isPrint || ["html", "xlsx"].indexOf(defaultOptions.type) > -1); }); const computeSupportStyle = computed(() => { const { defaultOptions } = props; return !defaultOptions.original && ["xlsx"].indexOf(defaultOptions.type) > -1; }); const handleOptionCheck = (column) => { const { storeData } = props; const matchObj = import_xe_utils8.default.findTree(storeData.columns, (item) => item === column); if (matchObj && matchObj.parent) { const { parent } = matchObj; if (parent.children && parent.children.length) { parent.checked = parent.children.every((column2) => column2.checked); parent.halfChecked = !parent.checked && parent.children.some((column2) => column2.checked || column2.halfChecked); handleOptionCheck(parent); } } }; const checkStatus = () => { const { storeData } = props; const columns = storeData.columns; reactData.isAll = columns.every((column) => column.disabled || column.checked); reactData.isIndeterminate = !reactData.isAll && columns.some((column) => !column.disabled && (column.checked || column.halfChecked)); }; const changeOption = (column) => { const isChecked = !column.checked; import_xe_utils8.default.eachTree([column], (item) => { item.checked = isChecked; item.halfChecked = false; }); handleOptionCheck(column); checkStatus(); }; const allColumnEvent = () => { const { storeData } = props; const isAll = !reactData.isAll; import_xe_utils8.default.eachTree(storeData.columns, (column) => { if (!column.disabled) { column.checked = isAll; column.halfChecked = false; } }); reactData.isAll = isAll; checkStatus(); }; const showEvent = () => { nextTick(() => { const filenameInp = xInputFilename.value; const sheetnameInp = xInputSheetname.value; const confirmBtn = xButtonConfirm.value; const targetElem = filenameInp || sheetnameInp || confirmBtn; if (targetElem) { targetElem.focus(); } }); checkStatus(); }; const getExportOption = () => { const { storeData, defaultOptions } = props; const { hasMerge, columns } = storeData; const checkedAll = computeCheckedAll.value; const supportMerge = computeSupportMerge.value; const expColumns = import_xe_utils8.default.searchTree(columns, (column) => column.checked, { children: "children", mapChildren: "childNodes", original: true }); return Object.assign({}, defaultOptions, { columns: expColumns, isMerge: hasMerge && supportMerge && checkedAll ? defaultOptions.isMerge : false }); }; const printEvent = () => { const { storeData } = props; const printOpts = computePrintOpts.value; storeData.visible = false; $xeTable.print(Object.assign({}, printOpts, getExportOption())); }; const exportEvent = () => { const { storeData } = props; const exportOpts = computeExportOpts.value; reactData.loading = true; $xeTable.exportData(Object.assign({}, exportOpts, getExportOption())).then(() => { reactData.loading = false; storeData.visible = false; }).catch(() => { reactData.loading = false; }); }; const cancelEvent = () => { const { storeData } = props; storeData.visible = false; }; const confirmEvent = () => { const { storeData } = props; if (storeData.isPrint) { printEvent(); } else { exportEvent(); } }; const renderVN = () => { const $xeGrid = $xeTable.xeGrid; const $xeGantt = $xeTable.xeGantt; const { defaultOptions, storeData } = props; const { isAll: isAllChecked, isIndeterminate: isAllIndeterminate } = reactData; const { hasTree, hasMerge, isPrint, hasColgroup, columns } = storeData; const { isHeader } = defaultOptions; const cols = []; const checkedAll = computeCheckedAll.value; const showSheet = computeShowSheet.value; const supportMerge = computeSupportMerge.value; const supportStyle = computeSupportStyle.value; const slots = defaultOptions.slots || {}; const topSlot = slots.top; const bottomSlot = slots.bottom; const defaultSlot = slots.default; const footerSlot = slots.footer; const parameterSlot = slots.parameter; import_xe_utils8.default.eachTree(columns, (column) => { const colTitle = formatText(column.getTitle(), 1); const isColGroup = column.children && column.children.length; const isChecked = column.checked; const indeterminate = column.halfChecked; const isHtml = column.type === "html"; cols.push(h("li", { key: column.id, class: ["vxe-table-export--panel-column-option", `level--${column.level}`, { "is--group": isColGroup, "is--checked": isChecked, "is--indeterminate": indeterminate, "is--disabled": column.disabled }], title: isHtml ? "" : colTitle, onClick: () => { if (!column.disabled) { changeOption(column); } } }, [ h("span", { class: ["vxe-checkbox--icon", indeterminate ? getIcon4().TABLE_CHECKBOX_INDETERMINATE : isChecked ? getIcon4().TABLE_CHECKBOX_CHECKED : getIcon4().TABLE_CHECKBOX_UNCHECKED] }), isHtml ? h("span", { key: "1", class: "vxe-checkbox--label", innerHTML: colTitle }) : h("span", { key: "0", class: "vxe-checkbox--label" }, colTitle) ])); }); return VxeUIModalComponent ? h(VxeUIModalComponent, { id: "VXE_EXPORT_MODAL", modelValue: storeData.visible, title: getI18n5(isPrint ? "vxe.export.printTitle" : "vxe.export.expTitle"), className: "vxe-table-export-popup-wrapper", width: 660, minWidth: 500, minHeight: 400, mask: true, lockView: true, showFooter: true, escClosable: true, maskClosable: true, showMaximize: true, resize: true, loading: reactData.loading, "onUpdate:modelValue"(value) { storeData.visible = value; }, onShow: showEvent }, { default: () => { const params = { $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt, options: defaultOptions, columns, params: defaultOptions.params }; const hasEmptyData = defaultOptions.mode === "empty"; return h("div", { class: "vxe-table-export--panel" }, [ topSlot ? h("div", { class: "vxe-table-export--panel-top" }, $xeTable.callSlot(topSlot, params)) : renderEmptyElement7($xeTable), h("div", { class: "vxe-table-export--panel-body" }, defaultSlot ? $xeTable.callSlot(defaultSlot, params) : [ h("table", { class: "vxe-table-export--panel-table", cellspacing: 0, cellpadding: 0, border: 0 }, [ h("tbody", [ [ isPrint ? renderEmptyElement7($xeTable) : h("tr", [ h("td", getI18n5("vxe.export.expName")), h("td", [ VxeUIInputComponent ? h(VxeUIInputComponent, { ref: xInputFilename, modelValue: defaultOptions.filename, type: "text", clearable: true, placeholder: getI18n5("vxe.export.expNamePlaceholder"), "onUpdate:modelValue"(value) { defaultOptions.filename = value; } }) : renderEmptyElement7($xeTable) ]) ]), isPrint ? renderEmptyElement7($xeTable) : h("tr", [ h("td", getI18n5("vxe.export.expType")), h("td", [ VxeUISelectComponent ? h(VxeUISelectComponent, { modelValue: defaultOptions.type, options: storeData.typeList, "onUpdate:modelValue"(value) { defaultOptions.type = value; } }) : renderEmptyElement7($xeTable) ]) ]), isPrint || showSheet ? h("tr", [ h("td", getI18n5("vxe.export.expSheetName")), h("td", [ VxeUIInputComponent ? h(VxeUIInputComponent, { ref: xInputSheetname, modelValue: defaultOptions.sheetName, type: "text", clearable: true, placeholder: getI18n5("vxe.export.expSheetNamePlaceholder"), "onUpdate:modelValue"(value) { defaultOptions.sheetName = value; } }) : renderEmptyElement7($xeTable) ]) ]) : renderEmptyElement7($xeTable), h("tr", [ h("td", getI18n5("vxe.export.expMode")), h("td", [ VxeUISelectComponent ? h(VxeUISelectComponent, { modelValue: defaultOptions.mode, options: storeData.modeList.map((item) => { return { value: item.value, label: getI18n5(item.label) }; }), "onUpdate:modelValue"(value) { defaultOptions.mode = value; } }) : renderEmptyElement7($xeTable) ]) ]), h("tr", [ h("td", [getI18n5("vxe.export.expColumn")]), h("td", [ h("div", { class: "vxe-table-export--panel-column" }, [ h("ul", { class: "vxe-table-export--panel-column-header" }, [ h("li", { class: ["vxe-table-export--panel-column-option", { "is--checked": isAllChecked, "is--indeterminate": isAllIndeterminate }], title: getI18n5("vxe.table.allTitle"), onClick: allColumnEvent }, [ h("span", { class: ["vxe-checkbox--icon", isAllIndeterminate ? getIcon4().TABLE_CHECKBOX_INDETERMINATE : isAllChecked ? getIcon4().TABLE_CHECKBOX_CHECKED : getIcon4().TABLE_CHECKBOX_UNCHECKED] }), h("span", { class: "vxe-checkbox--label" }, getI18n5("vxe.export.expCurrentColumn")) ]) ]), h("ul", { class: "vxe-table-export--panel-column-body" }, cols) ]) ]) ]), h("tr", [ h("td", getI18n5("vxe.export.expOpts")), parameterSlot ? h("td", [ h("div", { class: "vxe-table-export--panel-option-row" }, $xeTable.callSlot(parameterSlot, params)) ]) : h("td", [ h("div", { class: "vxe-table-export--panel-option-row" }, [ VxeUICheckboxComponent ? h(VxeUICheckboxComponent, { modelValue: hasEmptyData || isHeader, disabled: hasEmptyData, title: getI18n5("vxe.export.expHeaderTitle"), content: getI18n5("vxe.export.expOptHeader"), "onUpdate:modelValue"(value) { defaultOptions.isHeader = value; } }) : renderEmptyElement7($xeTable), VxeUICheckboxComponent ? h(VxeUICheckboxComponent, { modelValue: isHeader ? defaultOptions.isTitle : false, disabled: !isHeader, title: getI18n5("vxe.export.expTitleTitle"), content: getI18n5("vxe.export.expOptTitle"), "onUpdate:modelValue"(value) { defaultOptions.isTitle = value; } }) : renderEmptyElement7($xeTable), VxeUICheckboxComponent ? h(VxeUICheckboxComponent, { modelValue: isHeader && hasColgroup && supportMerge ? defaultOptions.isColgroup : false, title: getI18n5("vxe.export.expColgroupTitle"), disabled: !isHeader || !hasColgroup || !supportMerge, content: getI18n5("vxe.export.expOptColgroup"), "onUpdate:modelValue"(value) { defaultOptions.isColgroup = value; } }) : renderEmptyElement7($xeTable) ]), h("div", { class: "vxe-table-export--panel-option-row" }, [ VxeUICheckboxComponent ? h(VxeUICheckboxComponent, { modelValue: hasEmptyData ? false : defaultOptions.original, disabled: hasEmptyData, title: getI18n5("vxe.export.expOriginalTitle"), content: getI18n5("vxe.export.expOptOriginal"), "onUpdate:modelValue"(value) { defaultOptions.original = value; } }) : renderEmptyElement7($xeTable), VxeUICheckboxComponent ? h(VxeUICheckboxComponent, { modelValue: hasMerge && supportMerge && checkedAll ? defaultOptions.isMerge : false, title: getI18n5("vxe.export.expMergeTitle"), disabled: hasEmptyData || !hasMerge || !supportMerge || !checkedAll, content: getI18n5("vxe.export.expOptMerge"), "onUpdate:modelValue"(value) { defaultOptions.isMerge = value; } }) : renderEmptyElement7($xeTable), isPrint || !VxeUICheckboxComponent ? renderEmptyElement7($xeTable) : h(VxeUICheckboxComponent, { modelValue: supportStyle ? defaultOptions.useStyle : false, disabled: !supportStyle, title: getI18n5("vxe.export.expUseStyleTitle"), content: getI18n5("vxe.export.expOptUseStyle"), "onUpdate:modelValue"(value) { defaultOptions.useStyle = value; } }), VxeUICheckboxComponent ? h(VxeUICheckboxComponent, { modelValue: hasTree ? defaultOptions.isAllExpand : false, disabled: hasEmptyData || !hasTree, title: getI18n5("vxe.export.expAllExpandTitle"), content: getI18n5("vxe.export.expOptAllExpand"), "onUpdate:modelValue"(value) { defaultOptions.isAllExpand = value; } }) : renderEmptyElement7($xeTable) ]), h("div", { class: "vxe-table-export--panel-option-row" }, [ VxeUICheckboxComponent ? h(VxeUICheckboxComponent, { modelValue: defaultOptions.isFooter, disabled: !storeData.hasFooter, title: getI18n5("vxe.export.expFooterTitle"), content: getI18n5("vxe.export.expOptFooter"), "onUpdate:modelValue"(value) { defaultOptions.isFooter = value; } }) : renderEmptyElement7($xeTable) ]) ]) ]) ] ]) ]) ]), bottomSlot ? h("div", { class: "vxe-table-export--panel-bottom" }, $xeTable.callSlot(bottomSlot, params)) : renderEmptyElement7($xeTable) ]); }, footer() { const params = { $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt, options: defaultOptions, columns, params: defaultOptions.params }; return h("div", { class: "vxe-table-export--panel-footer" }, footerSlot ? $xeTable.callSlot(footerSlot, params) : [ h("div", { class: "vxe-table-export--panel-btns" }, [ VxeUIButtonComponent ? h(VxeUIButtonComponent, { content: getI18n5("vxe.export.expCancel"), onClick: cancelEvent }) : renderEmptyElement7($xeTable), VxeUIButtonComponent ? h(VxeUIButtonComponent, { ref: xButtonConfirm, status: "primary", content: getI18n5(isPrint ? "vxe.export.expPrint" : "vxe.export.expConfirm"), onClick: confirmEvent }) : renderEmptyElement7($xeTable) ]) ]); } }) : renderEmptyElement7($xeTable); }; nextTick(() => { if (!VxeUIModalComponent) { errLog("vxe.error.reqComp", ["vxe-modal"]); } if (!VxeUIButtonComponent) { errLog("vxe.error.reqComp", ["vxe-button"]); } if (!VxeUISelectComponent) { errLog("vxe.error.reqComp", ["vxe-select"]); } if (!VxeUIInputComponent) { errLog("vxe.error.reqComp", ["vxe-input"]); } if (!VxeUICheckboxComponent) { errLog("vxe.error.reqComp", ["vxe-checkbox"]); } }); return renderVN; } }); // ../node_modules/.pnpm/vxe-table@4.17.14_vue@3.5.24_typescript@5.9.3_/node_modules/vxe-table/es/table/module/menu/panel.js var import_xe_utils9 = __toESM(require_xe_utils()); var { getIcon: getIcon5, getI18n: getI18n6, renderEmptyElement: renderEmptyElement8 } = VxeUI; var panel_default3 = defineVxeComponent({ name: "VxeTableMenuPanel", setup(props, context) { const xID = import_xe_utils9.default.uniqueId(); const $xeTable = inject("$xeTable", {}); const { reactData: tableReactData } = $xeTable; const refElem = ref(); const refMaps = { refElem }; const $xeMenuPanel = { xID, props, context, getRefMaps: () => refMaps }; const renderVN = () => { const { ctxMenuStore } = tableReactData; const { computeMenuOpts } = $xeTable.getComputeMaps(); const menuOpts = computeMenuOpts.value; const { transfer, destroyOnClose } = menuOpts; const { visible, list, className } = ctxMenuStore; return h(Teleport, { to: "body", disabled: !transfer }, [ h("div", { ref: refElem, class: ["vxe-table--context-menu-wrapper", className, { "is--visible": visible }], style: ctxMenuStore.style }, (destroyOnClose ? visible : true) ? list.map((options, gIndex) => { return options.every((item) => item.visible === false) ? renderEmptyElement8($xeTable) : h("ul", { class: "vxe-context-menu--option-wrapper", key: gIndex }, options.map((item, index) => { const { children, loading } = item; const hasChildMenus = children && children.some((child) => child.visible !== false); const prefixOpts = Object.assign({}, item.prefixConfig); const prefixIcon = prefixOpts.icon || item.prefixIcon; const suffixOpts = Object.assign({}, item.suffixConfig); const suffixIcon = suffixOpts.icon || item.suffixIcon; const menuContent = getFuncText(item.name); return item.visible === false ? renderEmptyElement8($xeTable) : h("li", { class: [item.className, { "link--loading": loading, "link--disabled": item.disabled, "link--active": item === ctxMenuStore.selected }], key: `${gIndex}_${index}` }, [ h("a", { class: "vxe-context-menu--link", onClick(evnt) { $xeTable.ctxMenuLinkEvent(evnt, item); }, onMouseover(evnt) { $xeTable.ctxMenuMouseoverEvent(evnt, item); }, onMouseout(evnt) { $xeTable.ctxMenuMouseoutEvent(evnt, item); } }, [ h("div", { class: ["vxe-context-menu--link-prefix", prefixOpts.className || ""] }, [ loading ? h("span", { class: getIcon5("TABLE_MENU_OPTION_LOADING") }) : prefixIcon && import_xe_utils9.default.isFunction(prefixIcon) ? h("span", {}, getSlotVNs(prefixIcon({}))) : h("span", {}, [ h("i", { class: prefixIcon }) ]), prefixOpts.content ? h("span", {}, `${prefixOpts.content}`) : renderEmptyElement8($xeTable) ]), h("div", { class: "vxe-context-menu--link-content", title: menuContent }, loading ? getI18n6("vxe.table.menuLoading") : menuContent), h("div", { class: ["vxe-context-menu--link-suffix", suffixOpts.className || ""] }, [ suffixIcon && import_xe_utils9.default.isFunction(suffixIcon) ? h("span", {}, getSlotVNs(suffixIcon({}))) : h("i", { class: suffixIcon || (hasChildMenus ? getIcon5().TABLE_MENU_OPTIONS : "") }), suffixOpts.content ? h("span", `${suffixOpts.content}`) : renderEmptyElement8($xeTable) ]) ]), hasChildMenus && item.children ? h("ul", { class: ["vxe-table--context-menu-clild-wrapper", { "is--show": item === ctxMenuStore.selected && ctxMenuStore.showChild }] }, item.children.map((child, cIndex) => { const { loading: childLoading } = child; const childPrefixOpts = Object.assign({}, child.prefixConfig); const childPrefixIcon = childPrefixOpts.icon || child.prefixIcon; const childSuffixOpts = Object.assign({}, child.suffixConfig); const childSuffixIcon = childSuffixOpts.icon || child.suffixIcon; const childMenuContent = getFuncText(child.name); return child.visible === false ? null : h("li", { class: [child.className, { "link--loading": childLoading, "link--disabled": child.disabled, "link--active": child === ctxMenuStore.selectChild }], key: `${gIndex}_${index}_${cIndex}` }, [ h("a", { class: "vxe-context-menu--link", onClick(evnt) { $xeTable.ctxMenuLinkEvent(evnt, child); }, onMouseover(evnt) { $xeTable.ctxMenuMouseoverEvent(evnt, item, child); }, onMouseout(evnt) { $xeTable.ctxMenuMouseoutEvent(evnt, item); } }, [ h("div", { class: ["vxe-context-menu--link-prefix", childPrefixOpts.className || ""] }, [ child.loading ? h("span", { class: getIcon5("TABLE_MENU_OPTION_LOADING") }) : childPrefixIcon && import_xe_utils9.default.isFunction(childPrefixIcon) ? h("span", {}, getSlotVNs(childPrefixIcon({}))) : h("span", {}, [ h("i", { class: childPrefixIcon }) ]), childPrefixOpts.content ? h("span", `${childPrefixOpts.content}`) : renderEmptyElement8($xeTable) ]), h("div", { class: "vxe-context-menu--link-content", title: childMenuContent }, childLoading ? getI18n6("vxe.table.menuLoading") : childMenuContent), h("div", { class: ["vxe-context-menu--link-suffix", childSuffixOpts.className || ""] }, [ childSuffixIcon && import_xe_utils9.default.isFunction(childSuffixIcon) ? h("span", {}, getSlotVNs(childSuffixIcon({}))) : h("i", { class: childSuffixIcon }), childSuffixOpts.content ? h("span", `${childSuffixOpts.content}`) : renderEmptyElement8($xeTable) ]) ]) ]); })) : null ]); })); }) : []) ]); }; $xeMenuPanel.renderVN = renderVN; return $xeMenuPanel; }, render() { return this.renderVN(); } }); // ../node_modules/.pnpm/vxe-table@4.17.14_vue@3.5.24_typescript@5.9.3_/node_modules/vxe-table/es/table/module/filter/hook.js var import_xe_utils10 = __toESM(require_xe_utils()); var { renderer: renderer5, hooks } = VxeUI; var tableFilterMethodKeys = ["openFilter", "setFilter", "clearFilter", "saveFilter", "saveFilterByEvent", "saveFilterPanel", "saveFilterPanelByEvent", "resetFilter", "resetFilterByEvent", "resetFilterPanel", "resetFilterPanelByEvent", "getCheckedFilters", "updateFilterOptionStatus"]; hooks.add("tableFilterModule", { setupTable($xeTable) { const $xeGrid = $xeTable.xeGrid; const $xeGantt = $xeTable.xeGantt; const $xeGGWrapper = $xeGrid || $xeGantt; const { props, reactData, internalData } = $xeTable; const { refElem, refTableFilter } = $xeTable.getRefMaps(); const { computeFilterOpts, computeMouseOpts } = $xeTable.getComputeMaps(); const filterPrivateMethods = { checkFilterOptions() { const { filterStore } = reactData; const { column } = filterStore; if (column) { const filterOptions = column.filters || []; filterStore.isAllSelected = filterOptions.every((item) => item._checked); filterStore.isIndeterminate = !filterStore.isAllSelected && filterOptions.some((item) => item._checked); } }, /** * 点击筛选事件 * 当筛选图标被点击时触发 * 更新选项是否全部状态 * 打开筛选面板 * @param {Event} evnt 事件 * @param {ColumnInfo} column 列配置 * @param {Object} params 参数 */ triggerFilterEvent(evnt, column, params) { const { initStore, filterStore } = reactData; const { elemStore } = internalData; if (filterStore.column === column && filterStore.visible) { filterStore.visible = false; } else { const tableEl = refElem.value; const { scrollTop, scrollLeft, visibleHeight, visibleWidth } = getDomNode(); const filterOpts = computeFilterOpts.value; const { transfer } = filterOpts; const tableRect = tableEl.getBoundingClientRect(); const btnElem = evnt.currentTarget; const filterRender = column ? column.filterRender : null; const compConf = filterRender && isEnableConf(filterRender) ? renderer5.get(filterRender.name) : null; $xeTable.handleFilterOptions(column); internalData._currFilterParams = params; filterStore.style = null; filterStore.visible = true; initStore.filter = true; nextTick(() => { const headerScrollElem = getRefElem(elemStore["main-header-scroll"]); if (!headerScrollElem) { return; } const tableFilter = refTableFilter.value; const filterWrapperElem = tableFilter ? tableFilter.getRefMaps().refElem.value : null; if (!filterWrapperElem) { return; } const btnRect = btnElem.getBoundingClientRect(); const filterHeadElem = filterWrapperElem.querySelector(".vxe-table--filter-header"); const filterFootElem = filterWrapperElem.querySelector(".vxe-table--filter-footer"); const filterWidth = filterWrapperElem.offsetWidth; const centerWidth = filterWidth / 2; let left = 0; let top = 0; let maxHeight = 0; if (transfer) { left = btnRect.left - centerWidth + scrollLeft; top = btnRect.top + btnElem.clientHeight + scrollTop; maxHeight = Math.min(Math.max(tableRect.height, Math.floor(visibleHeight / 2)), Math.max(80, visibleHeight - top - (filterHeadElem ? filterHeadElem.clientHeight : 0) - (filterFootElem ? filterFootElem.clientHeight : 0) - 28)); if (left < 16) { left = 16; } else if (left > visibleWidth - filterWidth - 16) { left = visibleWidth - filterWidth - 16; } } else { left = btnRect.left - tableRect.left - centerWidth; top = btnRect.top - tableRect.top + btnElem.clientHeight; maxHeight = Math.max(40, tableEl.clientHeight - top - (filterHeadElem ? filterHeadElem.clientHeight : 0) - (filterFootElem ? filterFootElem.clientHeight : 0) - 14); if (left < 1) { left = 1; } else if (left > tableEl.clientWidth - filterWidth - 1) { left = tableEl.clientWidth - filterWidth - 1; } if ($xeGGWrapper) { const wrapperEl = $xeGGWrapper.getRefMaps().refElem.value; if (wrapperEl) { const wrapperRect = wrapperEl.getBoundingClientRect(); top += tableRect.top - wrapperRect.top; } } } filterStore.style = { top: toCssUnit(top), left: toCssUnit(left) }; if (compConf ? !compConf.tableFilterAutoHeight : false) { maxHeight = 0; } filterStore.maxHeight = maxHeight; }); } $xeTable.dispatchEvent("filter-visible", { column, field: column.field, property: column.field, filterList: $xeTable.getCheckedFilters(), visible: filterStore.visible }, evnt); }, handleClearFilter(column) { if (column) { const { filters, filterRender } = column; if (filters) { const compConf = isEnableConf(filterRender) ? renderer5.get(filterRender.name) : null; const frMethod = column.filterResetMethod || (compConf ? compConf.tableFilterResetMethod || compConf.filterResetMethod : null); filters.forEach((item) => { item._checked = false; item.checked = false; if (!frMethod) { item.data = import_xe_utils10.default.clone(item.resetValue, true); } }); if (frMethod) { frMethod({ options: filters, column, $table: $xeTable }); } } } }, handleColumnConfirmFilter(column, evnt) { const { mouseConfig } = props; const { scrollXLoad: oldScrollXLoad, scrollYLoad: oldScrollYLoad } = reactData; const filterOpts = computeFilterOpts.value; const mouseOpts = computeMouseOpts.value; const { field, filters } = column; const filterOptions = filters || []; const values = []; const datas = []; filterOptions.forEach((item) => { if (item.checked) { values.push(item.value); datas.push(item.data); } }); const filterList = $xeTable.getCheckedFilters(); const params = { $table: $xeTable, $event: evnt, column, field, property: field, values, datas, filters: filterList, filterList }; if (!filterOpts.remote) { $xeTable.handleTableData(true); $xeTable.checkSelectionStatus(); } if (mouseConfig && mouseOpts.area && $xeTable.handleFilterEvent) { $xeTable.handleFilterEvent(evnt, params); } if (evnt) { $xeTable.dispatchEvent("filter-change", params, evnt); } $xeTable.closeFilter(); return $xeTable.updateFooter().then(() => { const { scrollXLoad, scrollYLoad } = reactData; if (oldScrollXLoad || scrollXLoad || (oldScrollYLoad || scrollYLoad)) { if (oldScrollXLoad || scrollXLoad) { $xeTable.updateScrollXSpace(); } if (oldScrollYLoad || scrollYLoad) { $xeTable.updateScrollYSpace(); } return $xeTable.refreshScroll(); } }).then(() => { $xeTable.updateCellAreas(); return $xeTable.recalculate(true); }).then(() => { setTimeout(() => $xeTable.recalculate(), 50); }); }, /** * 确认筛选 * 当筛选面板中的确定按钮被按下时触发 */ confirmFilterEvent(evnt, column) { if (column) { $xeTable.handleColumnConfirmFilter(column, evnt); } }, // (单选)筛选发生改变 handleFilterChangeRadioOption(evnt, checked, item) { const { filterStore } = reactData; const { column } = filterStore; if (column) { const filterOptions = column.filters || []; filterOptions.forEach((option) => { option._checked = false; }); item._checked = checked; $xeTable.checkFilterOptions(); $xeTable.handleFilterConfirmFilter(evnt, column); } }, // (多选)筛选发生改变 handleFilterChangeMultipleOption(evnt, checked, item) { item._checked = checked; $xeTable.checkFilterOptions(); }, // 筛选发生改变 handleFilterChangeOption(evnt, checked, item) { const { filterStore } = reactData; const { fullColumnIdData } = internalData; let column = filterStore.column; if (!column) { const colRest = fullColumnIdData[item._colId]; if (colRest) { column = colRest.column; filterStore.column = column; } } if (column) { if (column.filterMultiple) { $xeTable.handleFilterChangeMultipleOption(evnt, checked, item); } else { $xeTable.handleFilterChangeRadioOption(evnt, checked, item); } } }, // 确认筛选 handleFilterConfirmFilter(evnt, column) { if (column) { const filterOptions = column.filters || []; filterOptions.forEach((option) => { option.checked = option._checked; }); $xeTable.confirmFilterEvent(evnt, column); } }, /** * 重置筛选 * 当筛选面板中的重置按钮被按下时触发 */ handleFilterResetFilter(evnt, column) { if (column) { $xeTable.handleClearFilter(column); $xeTable.confirmFilterEvent(evnt, column); if (evnt) { $xeTable.dispatchEvent("clear-filter", { filterList: [] }, evnt); } } } }; const filterMethods = { /** * 手动弹出筛选面板 * @param column */ openFilter(fieldOrColumn) { const column = handleFieldOrColumn($xeTable, fieldOrColumn); if (column && column.filters) { const { elemStore } = internalData; const { fixed } = column; return $xeTable.scrollToColumn(column).then(() => { const headerWrapperElem = getRefElem(elemStore[`${fixed || "main"}-header-wrapper`] || elemStore["main-header-wrapper"]); if (headerWrapperElem) { const filterBtnElem = headerWrapperElem.querySelector(`.vxe-header--column.${column.id} .vxe-cell--filter`); triggerEvent(filterBtnElem, "click"); } }); } return nextTick(); }, /** * 修改筛选条件列表 * @param {ColumnInfo} fieldOrColumn 列或字段名 * @param {Array} options 选项 */ setFilter(fieldOrColumn, options, isUpdate) { const { filterStore } = reactData; const column = handleFieldOrColumn($xeTable, fieldOrColumn); if (column && column.filters) { column.filters = toFilters(options || [], column.id); if (isUpdate) { return $xeTable.handleColumnConfirmFilter(column, null); } else { if (filterStore.visible) { $xeTable.handleFilterOptions(column); } } } return nextTick(); }, /** * 清空指定列的筛选条件 * 如果为空则清空所有列的筛选条件 * @param {String} fieldOrColumn 列或字段名 */ clearFilter(fieldOrColumn) { const { filterStore } = reactData; const { tableFullColumn } = internalData; const filterOpts = computeFilterOpts.value; let column; if (fieldOrColumn) { column = handleFieldOrColumn($xeTable, fieldOrColumn); if (column) { $xeTable.handleClearFilter(column); } } else { tableFullColumn.forEach($xeTable.handleClearFilter); } if (!fieldOrColumn || column !== filterStore.column) { Object.assign(filterStore, { isAllSelected: false, isIndeterminate: false, style: null, options: [], column: null, multiple: false, visible: false }); } if (!filterOpts.remote) { return $xeTable.updateData(); } return nextTick(); }, saveFilter(fieldOrColumn) { if (fieldOrColumn) { const column = handleFieldOrColumn($xeTable, fieldOrColumn); $xeTable.handleFilterConfirmFilter(null, column); } return nextTick(); }, saveFilterByEvent(evnt, fieldOrColumn) { if (fieldOrColumn) { const column = handleFieldOrColumn($xeTable, fieldOrColumn); $xeTable.handleFilterConfirmFilter(evnt, column); } return nextTick(); }, resetFilter(fieldOrColumn) { if (fieldOrColumn) { const column = handleFieldOrColumn($xeTable, fieldOrColumn); $xeTable.handleFilterResetFilter(null, column); } return nextTick(); }, resetFilterByEvent(evnt, fieldOrColumn) { if (fieldOrColumn) { const column = handleFieldOrColumn($xeTable, fieldOrColumn); $xeTable.handleFilterResetFilter(evnt, column); } return nextTick(); }, saveFilterPanel() { const { filterStore } = reactData; $xeTable.handleFilterConfirmFilter(null, filterStore.column || null); return nextTick(); }, saveFilterPanelByEvent(evnt) { const { filterStore } = reactData; $xeTable.handleFilterConfirmFilter(evnt, filterStore.column || null); return nextTick(); }, resetFilterPanel() { const { filterStore } = reactData; $xeTable.handleFilterResetFilter(null, filterStore.column || null); return nextTick(); }, resetFilterPanelByEvent(evnt) { const { filterStore } = reactData; $xeTable.handleFilterResetFilter(evnt, filterStore.column || null); return nextTick(); }, getCheckedFilters() { const { tableFullColumn } = internalData; const filterList = []; tableFullColumn.forEach((column) => { const { field, filters } = column; const filterOptions = filters || []; const valueList = []; const dataList = []; if (filterOptions) { filterOptions.forEach((item) => { if (item.checked) { valueList.push(item.value); dataList.push(item.data); } }); if (valueList.length) { filterList.push({ column, field, property: field, values: valueList, datas: dataList }); } } }); return filterList; }, updateFilterOptionStatus(item, checked) { item._checked = checked; item.checked = checked; return nextTick(); } }; return Object.assign(Object.assign({}, filterMethods), filterPrivateMethods); }, setupGrid($xeGrid) { return $xeGrid.extendTableMethods(tableFilterMethodKeys); }, setupGantt($xeGantt) { return $xeGantt.extendTableMethods(tableFilterMethodKeys); } }); // ../node_modules/.pnpm/vxe-table@4.17.14_vue@3.5.24_typescript@5.9.3_/node_modules/vxe-table/es/table/module/menu/hook.js var import_xe_utils11 = __toESM(require_xe_utils()); var { menus, hooks: hooks2, globalEvents, GLOBAL_EVENT_KEYS } = VxeUI; var tableMenuMethodKeys = ["closeMenu"]; hooks2.add("tableMenuModule", { setupTable($xeTable) { const { xID, props, reactData, internalData } = $xeTable; const { refElem, refTableFilter, refTableMenu } = $xeTable.getRefMaps(); const { computeMouseOpts, computeIsContentMenu, computeMenuOpts } = $xeTable.getComputeMaps(); const $xeGrid = $xeTable.xeGrid; const $xeGantt = $xeTable.xeGantt; const $xeGGWrapper = $xeGrid || $xeGantt; let menuMethods = {}; let menuPrivateMethods = {}; const handleOpenMenuEvent = (evnt, type, params) => { const { ctxMenuStore } = reactData; const isContentMenu = computeIsContentMenu.value; const menuOpts = computeMenuOpts.value; const config = menuOpts[type]; const { transfer, visibleMethod } = menuOpts; if (config) { const { options, disabled } = config; if (disabled) { evnt.preventDefault(); } else if (isContentMenu && options && options.length) { params.options = options; $xeTable.preventEvent(evnt, "event.showMenu", params, () => { if (!visibleMethod || visibleMethod(params)) { evnt.preventDefault(); $xeTable.updateZindex(); const el = $xeGGWrapper ? $xeGGWrapper.getRefMaps().refElem.value : refElem.value; if (!el) { return; } const tableRect = el.getBoundingClientRect(); const { scrollTop, scrollLeft, visibleHeight, visibleWidth } = getDomNode(); let top = evnt.clientY - tableRect.y; let left = evnt.clientX - tableRect.x; if (transfer) { top = evnt.clientY + scrollTop; left = evnt.clientX + scrollLeft; } const handleVisible = () => { internalData._currMenuParams = params; Object.assign(ctxMenuStore, { visible: true, list: options, selected: null, selectChild: null, showChild: false, style: { zIndex: internalData.tZindex, top: `${top}px`, left: `${left}px` } }); nextTick(() => { const tableMenu = refTableMenu.value; const ctxElem = tableMenu.getRefMaps().refElem.value; const clientHeight = ctxElem.clientHeight; const clientWidth = ctxElem.clientWidth; const { boundingTop, boundingLeft } = getAbsolutePos(ctxElem); const offsetTop = boundingTop + clientHeight - visibleHeight; const offsetLeft = boundingLeft + clientWidth - visibleWidth; if (offsetTop > -10) { ctxMenuStore.style.top = `${Math.max(scrollTop + 2, top - clientHeight - 2)}px`; } if (offsetLeft > -10) { ctxMenuStore.style.left = `${Math.max(scrollLeft + 2, left - clientWidth - 2)}px`; } }); }; const { keyboard, row, column } = params; if (keyboard && row && column) { $xeTable.scrollToRow(row, column).then(() => { const cell = $xeTable.getCellElement(row, column); if (cell) { const { boundingTop, boundingLeft } = getAbsolutePos(cell); top = boundingTop + scrollTop + Math.floor(cell.offsetHeight / 2); left = boundingLeft + scrollLeft + Math.floor(cell.offsetWidth / 2); } handleVisible(); }); } else { handleVisible(); } } else { menuMethods.closeMenu(); } }); } } $xeTable.closeFilter(); }; menuMethods = { /** * 关闭快捷菜单 */ closeMenu() { Object.assign(reactData.ctxMenuStore, { visible: false, selected: null, selectChild: null, showChild: false }); return nextTick(); } }; menuPrivateMethods = { /** * 处理菜单的移动 */ moveCtxMenu(evnt, ctxMenuStore, property, hasOper, operRest, menuList) { let selectItem; const selectIndex = import_xe_utils11.default.findIndexOf(menuList, (item) => ctxMenuStore[property] === item); if (hasOper) { if (operRest && hasChildrenList(ctxMenuStore.selected)) { ctxMenuStore.showChild = true; } else { ctxMenuStore.showChild = false; ctxMenuStore.selectChild = null; } } else if (globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_UP)) { for (let len = selectIndex - 1; len >= 0; len--) { if (menuList[len].visible !== false) { selectItem = menuList[len]; break; } } ctxMenuStore[property] = selectItem || menuList[menuList.length - 1]; } else if (globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_DOWN)) { for (let index = selectIndex + 1; index < menuList.length; index++) { if (menuList[index].visible !== false) { selectItem = menuList[index]; break; } } ctxMenuStore[property] = selectItem || menuList[0]; } else if (ctxMenuStore[property] && (globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ENTER) || globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.SPACEBAR))) { $xeTable.ctxMenuLinkEvent(evnt, ctxMenuStore[property]); } }, handleOpenMenuEvent, /** * 快捷菜单事件处理 */ handleGlobalContextmenuEvent(evnt) { const $xeGrid2 = $xeTable.xeGrid; const $xeGantt2 = $xeTable.xeGantt; const { mouseConfig, menuConfig } = props; const { editStore, ctxMenuStore } = reactData; const { visibleColumn } = internalData; const tableFilter = refTableFilter.value; const tableMenu = refTableMenu.value; const mouseOpts = computeMouseOpts.value; const menuOpts = computeMenuOpts.value; const el = refElem.value; const { selected } = editStore; const layoutList = ["header", "body", "footer"]; if (isEnableConf(menuConfig)) { if (ctxMenuStore.visible && tableMenu && getEventTargetNode(evnt, tableMenu.getRefMaps().refElem.value).flag) { evnt.preventDefault(); return; } if (internalData._keyCtx) { const type = "body"; const params = { source: "table", type, $table: $xeTable, $grid: $xeGrid2, $gantt: $xeGantt2, keyboard: true, columns: visibleColumn.slice(0), $event: evnt }; if (mouseConfig && mouseOpts.area) { const activeArea = $xeTable.getActiveCellArea(); if (activeArea && activeArea.row && activeArea.column) { params.row = activeArea.row; params.column = activeArea.column; handleOpenMenuEvent(evnt, type, params); return; } } else if (mouseConfig && mouseOpts.selected) { if (selected.row && selected.column) { params.row = selected.row; params.column = selected.column; handleOpenMenuEvent(evnt, type, params); return; } } } for (let index = 0; index < layoutList.length; index++) { const layout = layoutList[index]; const columnTargetNode = getEventTargetNode(evnt, el, `vxe-${layout}--column`, (target) => { return target.parentNode.parentNode.parentNode.getAttribute("xid") === xID; }); const params = { source: "table", type: layout, $table: $xeTable, $grid: $xeGrid2, $gantt: $xeGantt2, columns: visibleColumn.slice(0), $event: evnt }; if (columnTargetNode.flag) { const cell = columnTargetNode.targetElem; const columnNodeRest = $xeTable.getColumnNode(cell); const column = columnNodeRest ? columnNodeRest.item : null; let typePrefix = `${layout}-`; if (column) { Object.assign(params, { column, columnIndex: $xeTable.getColumnIndex(column), cell }); } if (layout === "body") { const rowNodeRest = $xeTable.getRowNode(cell.parentNode); const row = rowNodeRest ? rowNodeRest.item : null; typePrefix = ""; if (row) { params.row = row; params.rowIndex = $xeTable.getRowIndex(row); } } const eventType = `${typePrefix}cell-menu`; handleOpenMenuEvent(evnt, layout, params); $xeTable.dispatchEvent(eventType, params, evnt); return; } else if (getEventTargetNode(evnt, el, `vxe-table--${layout}-wrapper`, (target) => target.getAttribute("xid") === xID).flag) { if (menuOpts.trigger === "cell") { evnt.preventDefault(); } else { handleOpenMenuEvent(evnt, layout, params); } return; } } } if (tableFilter && !getEventTargetNode(evnt, tableFilter.getRefMaps().refElem.value).flag) { $xeTable.closeFilter(); } menuMethods.closeMenu(); }, ctxMenuMouseoverEvent(evnt, item, child) { const menuElem = evnt.currentTarget; const { ctxMenuStore } = reactData; evnt.preventDefault(); evnt.stopPropagation(); ctxMenuStore.selected = item; ctxMenuStore.selectChild = child; if (!child) { ctxMenuStore.showChild = hasChildrenList(item); if (ctxMenuStore.showChild) { nextTick(() => { const childWrapperElem = menuElem.nextElementSibling; if (childWrapperElem) { const { boundingTop, boundingLeft, visibleHeight, visibleWidth } = getAbsolutePos(menuElem); const posTop = boundingTop + menuElem.offsetHeight; const posLeft = boundingLeft + menuElem.offsetWidth; let left = ""; let right = ""; if (posLeft + childWrapperElem.offsetWidth > visibleWidth - 10) { left = "auto"; right = `${menuElem.offsetWidth}px`; } let top = ""; let bottom = ""; if (posTop + childWrapperElem.offsetHeight > visibleHeight - 10) { top = "auto"; bottom = "0"; } childWrapperElem.style.left = left; childWrapperElem.style.right = right; childWrapperElem.style.top = top; childWrapperElem.style.bottom = bottom; } }); } } }, ctxMenuMouseoutEvent(evnt, item) { const { ctxMenuStore } = reactData; if (!item.children) { ctxMenuStore.selected = null; } ctxMenuStore.selectChild = null; }, /** * 快捷菜单点击事件 */ ctxMenuLinkEvent(evnt, menu) { const $xeGrid2 = $xeTable.xeGrid; const $xeGantt2 = $xeTable.xeGantt; if (!menu.loading && !menu.disabled && (menu.code || !menu.children || !menu.children.length)) { const gMenuOpts = menus.get(menu.code); const params = Object.assign({}, internalData._currMenuParams, { menu, $table: $xeTable, $grid: $xeGrid2, $gantt: $xeGantt2, $event: evnt }); const tmMethod = gMenuOpts ? gMenuOpts.tableMenuMethod || gMenuOpts.menuMethod : null; if (tmMethod) { tmMethod(params, evnt); } $xeTable.dispatchEvent("menu-click", params, evnt); menuMethods.closeMenu(); } } }; return Object.assign(Object.assign({}, menuMethods), menuPrivateMethods); }, setupGrid($xeGrid) { return $xeGrid.extendTableMethods(tableMenuMethodKeys); }, setupGantt($xeGantt) { return $xeGantt.extendTableMethods(tableMenuMethodKeys); } }); // ../node_modules/.pnpm/vxe-table@4.17.14_vue@3.5.24_typescript@5.9.3_/node_modules/vxe-table/es/table/module/edit/hook.js var import_xe_utils12 = __toESM(require_xe_utils()); var { getConfig: getConfig2, renderer: renderer6, hooks: hooks3, getI18n: getI18n7 } = VxeUI; var tableEditMethodKeys = ["insert", "insertAt", "insertNextAt", "insertChild", "insertChildAt", "insertChildNextAt", "remove", "removeCheckboxRow", "removeRadioRow", "removeCurrentRow", "getRecordset", "getInsertRecords", "getRemoveRecords", "getUpdateRecords", "getEditRecord", "getActiveRecord", "getEditCell", "getSelectedCell", "clearEdit", "clearActived", "clearSelected", "isEditByRow", "isActiveByRow", "setEditRow", "setActiveRow", "setEditCell", "setActiveCell", "setSelectCell"]; hooks3.add("tableEditModule", { setupTable($xeTable) { const { props, reactData, internalData } = $xeTable; const { refElem } = $xeTable.getRefMaps(); const { computeMouseOpts, computeEditOpts, computeCheckboxOpts, computeTreeOpts, computeValidOpts } = $xeTable.getComputeMaps(); const browseObj = import_xe_utils12.default.browse(); let editMethods = {}; let editPrivateMethods = {}; const getEditColumnModel = (row, column) => { const { model, editRender } = column; if (editRender) { model.value = getCellValue(row, column); model.update = false; } }; const setEditColumnModel = (row, column) => { const { model, editRender } = column; if (editRender && model.update) { setCellValue(row, column, model.value); model.update = false; model.value = null; } }; const removeCellSelectedClass = () => { const el = refElem.value; if (el) { const cell = el.querySelector(".col--selected"); if (cell) { removeClass(cell, "col--selected"); } } }; const syncActivedCell = () => { const { editStore, tableColumn } = reactData; const editOpts = computeEditOpts.value; const { actived } = editStore; const { row, column } = actived; if (row || column) { if (editOpts.mode === "row") { tableColumn.forEach((column2) => setEditColumnModel(row, column2)); } else { setEditColumnModel(row, column); } } }; const insertTreeRow = (newRecords, isAppend) => { const { tableFullTreeData, afterFullData, fullDataRowIdData, fullAllDataRowIdData } = internalData; const treeOpts = computeTreeOpts.value; const { rowField, parentField, mapChildrenField } = treeOpts; const childrenField = treeOpts.children || treeOpts.childrenField; const funcName = isAppend ? "push" : "unshift"; newRecords.forEach((item) => { const parentRowId = item[parentField]; const rowid = getRowid($xeTable, item); const matchObj = parentRowId ? import_xe_utils12.default.findTree(tableFullTreeData, (item2) => parentRowId === item2[rowField], { children: mapChildrenField }) : null; if (matchObj) { const { item: parentRow } = matchObj; const parentRest = fullAllDataRowIdData[getRowid($xeTable, parentRow)]; const parentLevel = parentRest ? parentRest.level : 0; let pChilds = parentRow[childrenField]; let pMapChilds = parentRow[mapChildrenField]; if (!import_xe_utils12.default.isArray(pChilds)) { pChilds = parentRow[childrenField] = []; } if (!import_xe_utils12.default.isArray(pMapChilds)) { pMapChilds = parentRow[mapChildrenField] = []; } pChilds[funcName](item); pMapChilds[funcName](item); const rest = { row: item, rowid, seq: -1, index: -1, _index: -1, $index: -1, treeIndex: -1, _tIndex: -1, items: pChilds, parent: parentRow, level: parentLevel + 1, height: 0, resizeHeight: 0, oTop: 0, expandHeight: 0 }; fullDataRowIdData[rowid] = rest; fullAllDataRowIdData[rowid] = rest; } else { if (parentRowId) { warnLog("vxe.error.unableInsert"); } afterFullData[funcName](item); tableFullTreeData[funcName](item); const rest = { row: item, rowid, seq: -1, index: -1, _index: -1, $index: -1, treeIndex: -1, _tIndex: -1, items: tableFullTreeData, parent: null, level: 0, height: 0, resizeHeight: 0, oTop: 0, expandHeight: 0 }; fullDataRowIdData[rowid] = rest; fullAllDataRowIdData[rowid] = rest; } }); }; const handleInsertRowAt = (records, targetRow, isInsertNextRow) => { const { treeConfig } = props; const { isRowGroupStatus } = reactData; const { tableFullTreeData, afterFullData, mergeBodyList, tableFullData, fullDataRowIdData, fullAllDataRowIdData, insertRowMaps, removeRowMaps } = internalData; const treeOpts = computeTreeOpts.value; const { transform, parentField, rowField, mapChildrenField } = treeOpts; const childrenField = treeOpts.children || treeOpts.childrenField; if (!import_xe_utils12.default.isArray(records)) { records = [records]; } const newRecords = reactive($xeTable.defineField(records.map((record) => Object.assign(treeConfig && transform ? { [mapChildrenField]: [], [childrenField]: [] } : {}, record)))); let treeRecords = []; if (treeConfig && transform) { treeRecords = import_xe_utils12.default.toArrayTree(newRecords, { key: rowField, parentKey: parentField, children: childrenField }); } if (import_xe_utils12.default.eqNull(targetRow)) { if (treeConfig && transform) { insertTreeRow(newRecords, false); } else if (isRowGroupStatus) { if (treeConfig) { throw new Error(getI18n7("vxe.error.noTree", ["insert"])); } warnLog(getI18n7("vxe.error.noGroup", ["remove"])); } else { newRecords.forEach((item) => { const rowid = getRowid($xeTable, item); const rest = { row: item, rowid, seq: -1, index: -1, _index: -1, $index: -1, treeIndex: -1, _tIndex: -1, items: afterFullData, parent: null, level: 0, height: 0, resizeHeight: 0, oTop: 0, expandHeight: 0 }; fullDataRowIdData[rowid] = rest; fullAllDataRowIdData[rowid] = rest; afterFullData.unshift(item); tableFullData.unshift(item); }); mergeBodyList.forEach((mergeItem) => { const { row: mergeRowIndex } = mergeItem; if (mergeRowIndex >= 0) { mergeItem.row = mergeRowIndex + newRecords.length; } }); } } else { if (targetRow === -1) { if (treeConfig && transform) { insertTreeRow(newRecords, true); } else if (isRowGroupStatus) { if (treeConfig) { throw new Error(getI18n7("vxe.error.noTree", ["insert"])); } warnLog(getI18n7("vxe.error.noGroup", ["remove"])); } else { newRecords.forEach((item) => { const rowid = getRowid($xeTable, item); const rest = { row: item, rowid, seq: -1, index: -1, _index: -1, treeIndex: -1, _tIndex: -1, $index: -1, items: afterFullData, parent: null, level: 0, height: 0, resizeHeight: 0, oTop: 0, expandHeight: 0 }; fullDataRowIdData[rowid] = rest; fullAllDataRowIdData[rowid] = rest; afterFullData.push(item); tableFullData.push(item); }); } } else { if (treeConfig && transform) { const matchMapObj = import_xe_utils12.default.findTree(tableFullTreeData, (item) => targetRow[rowField] === item[rowField], { children: mapChildrenField }); if (matchMapObj) { const { parent: parentRow } = matchMapObj; const parentMapChilds = parentRow ? parentRow[mapChildrenField] : tableFullTreeData; const parentRest = fullAllDataRowIdData[getRowid($xeTable, parentRow)]; const parentLevel = parentRest ? parentRest.level : 0; treeRecords.forEach((row, i) => { if (parentRow) { if (row[parentField] !== parentRow[rowField]) { errLog("vxe.error.errProp", [`${parentField}=${row[parentField]}`, `${parentField}=${parentRow[rowField]}`]); row[parentField] = parentRow[rowField]; } } else { if (row[parentField] !== null) { if (!import_xe_utils12.default.eqNull(row[parentField])) { errLog("vxe.error.errProp", [`${parentField}=${row[parentField]}`, "null"]); } row[parentField] = null; } } let targetIndex = matchMapObj.index + i; if (isInsertNextRow) { targetIndex = targetIndex + 1; } parentMapChilds.splice(targetIndex, 0, row); }); import_xe_utils12.default.eachTree(treeRecords, (item) => { const rowid = getRowid($xeTable, item); const rest = { row: item, rowid, seq: -1, index: -1, _index: -1, $index: -1, treeIndex: -1, _tIndex: -1, items: parentMapChilds, parent: parentRow, level: parentLevel + 1, height: 0, resizeHeight: 0, oTop: 0, expandHeight: 0 }; if (item[childrenField]) { item[mapChildrenField] = item[childrenField]; } fullDataRowIdData[rowid] = rest; fullAllDataRowIdData[rowid] = rest; }, { children: childrenField }); if (parentRow) { const matchObj = import_xe_utils12.default.findTree(tableFullTreeData, (item) => targetRow[rowField] === item[rowField], { children: childrenField }); if (matchObj) { const parentChilds = matchObj.items; let targetIndex = matchObj.index; if (isInsertNextRow) { targetIndex = targetIndex + 1; } parentChilds.splice(targetIndex, 0, ...treeRecords); } } } else { warnLog("vxe.error.unableInsert"); insertTreeRow(newRecords, true); } } else if (isRowGroupStatus) { if (treeConfig) { throw new Error(getI18n7("vxe.error.noTree", ["insert"])); } warnLog(getI18n7("vxe.error.noGroup", ["remove"])); } else { if (treeConfig) { throw new Error(getI18n7("vxe.error.noTree", ["insert"])); } let afIndex = -1; if (import_xe_utils12.default.isNumber(targetRow)) { if (targetRow < afterFullData.length) { afIndex = targetRow; } } else { afIndex = $xeTable.findRowIndexOf(afterFullData, targetRow); } if (isInsertNextRow) { afIndex = Math.min(afterFullData.length, afIndex + 1); } if (afIndex === -1) { throw new Error(getI18n7("vxe.error.unableInsert")); } afterFullData.splice(afIndex, 0, ...newRecords); const tfIndex = $xeTable.findRowIndexOf(tableFullData, targetRow); if (tfIndex > -1) { tableFullData.splice(tfIndex + (isInsertNextRow ? 1 : 0), 0, ...newRecords); } else { tableFullData.push(...newRecords); } mergeBodyList.forEach((mergeItem) => { const { row: mergeRowIndex, rowspan: mergeRowspan } = mergeItem; if (mergeRowIndex >= afIndex) { mergeItem.row = mergeRowIndex + newRecords.length; } else if (isInsertNextRow ? mergeRowIndex + mergeRowspan >= afIndex : mergeRowIndex + mergeRowspan > afIndex) { mergeItem.rowspan = mergeRowspan + newRecords.length; } }); } } } const handleStatus = (newRow) => { const rowid = getRowid($xeTable, newRow); if (removeRowMaps[rowid]) { delete removeRowMaps[rowid]; if (insertRowMaps[rowid]) { delete insertRowMaps[rowid]; } } else { insertRowMaps[rowid] = newRow; } }; if (treeConfig && transform) { import_xe_utils12.default.eachTree(treeRecords, handleStatus, { children: mapChildrenField }); } else { newRecords.forEach(handleStatus); } reactData.removeRowFlag++; reactData.insertRowFlag++; $xeTable.cacheRowMap(false); $xeTable.updateScrollYStatus(); $xeTable.handleTableData(treeConfig && transform); if (!(treeConfig && transform)) { $xeTable.updateAfterDataIndex(); } $xeTable.updateFooter(); $xeTable.handleUpdateBodyMerge(); $xeTable.checkSelectionStatus(); if (reactData.scrollYLoad) { $xeTable.updateScrollYSpace(); } return nextTick().then(() => { $xeTable.updateCellAreas(); return $xeTable.recalculate(true); }).then(() => { return { row: newRecords.length ? newRecords[newRecords.length - 1] : null, rows: newRecords }; }); }; const handleInsertChildRowAt = (records, parentRow, targetRow, isInsertNextRow) => { const { treeConfig } = props; const treeOpts = computeTreeOpts.value; const { transform, rowField, parentField } = treeOpts; if (treeConfig && transform) { if (!import_xe_utils12.default.isArray(records)) { records = [records]; } return handleInsertRowAt(records.map((item) => Object.assign({}, item, { [parentField]: parentRow[rowField] })), targetRow, isInsertNextRow); } else { errLog("vxe.error.errProp", ["tree-config.transform=false", "tree-config.transform=true"]); } return Promise.resolve({ row: null, rows: [] }); }; const handleClearEdit = (evnt, targetRow) => { const { editStore } = reactData; const { actived, focused } = editStore; const { row, column } = actived; const validOpts = computeValidOpts.value; if (row || column) { if (targetRow && getRowid($xeTable, targetRow) !== getRowid($xeTable, row)) { return nextTick(); } syncActivedCell(); actived.args = null; actived.row = null; actived.column = null; $xeTable.updateFooter(); $xeTable.dispatchEvent("edit-closed", { row, rowIndex: $xeTable.getRowIndex(row), $rowIndex: $xeTable.getVMRowIndex(row), column, columnIndex: $xeTable.getColumnIndex(column), $columnIndex: $xeTable.getVMColumnIndex(column) }, evnt || null); } focused.row = null; focused.column = null; if (validOpts.autoClear) { if (validOpts.msgMode !== "full" || getConfig2().cellVaildMode === "obsolete") { if ($xeTable.clearValidate) { return $xeTable.clearValidate(); } } } return nextTick().then(() => $xeTable.updateCellAreas()); }; const handleEditActive = (params, evnt, isFocus, isPos) => { const $xeGrid = $xeTable.xeGrid; const $xeGantt = $xeTable.xeGantt; const { editConfig, mouseConfig } = props; const { editStore, tableColumn } = reactData; const editOpts = computeEditOpts.value; const { mode } = editOpts; const { actived, focused } = editStore; const { row, column } = params; const { editRender } = column; const cell = params.cell || $xeTable.getCellElement(row, column); const beforeEditMethod = editOpts.beforeEditMethod || editOpts.activeMethod; params.cell = cell; if (cell && isEnableConf(editConfig) && isEnableConf(editRender)) { if (!$xeTable.isPendingByRow(row) && !$xeTable.isAggregateRecord(row)) { if (actived.row !== row || (mode === "cell" ? actived.column !== column : false)) { let type = "edit-disabled"; if (!beforeEditMethod || beforeEditMethod(Object.assign(Object.assign({}, params), { $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt }))) { if (mouseConfig) { $xeTable.clearSelected(); if ($xeTable.clearCellAreas) { $xeTable.clearCellAreas(); $xeTable.clearCopyCellArea(); } } $xeTable.closeTooltip(); if (actived.column) { handleClearEdit(evnt); } type = "edit-activated"; column.renderHeight = cell.offsetHeight; actived.args = params; actived.row = row; actived.column = column; if (mode === "row") { tableColumn.forEach((column2) => getEditColumnModel(row, column2)); } else { getEditColumnModel(row, column); } const afterEditMethod = editOpts.afterEditMethod; nextTick(() => { if (isFocus) { $xeTable.handleFocus(params, evnt); } if (afterEditMethod) { afterEditMethod(Object.assign(Object.assign({}, params), { $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt })); } }); } $xeTable.dispatchEvent(type, { row, rowIndex: $xeTable.getRowIndex(row), $rowIndex: $xeTable.getVMRowIndex(row), column, columnIndex: $xeTable.getColumnIndex(column), $columnIndex: $xeTable.getVMColumnIndex(column) }, evnt); if (type === "edit-activated") { $xeTable.dispatchEvent("edit-actived", { row, rowIndex: $xeTable.getRowIndex(row), $rowIndex: $xeTable.getVMRowIndex(row), column, columnIndex: $xeTable.getColumnIndex(column), $columnIndex: $xeTable.getVMColumnIndex(column) }, evnt); } } else { const { column: oldColumn } = actived; if (mouseConfig) { $xeTable.clearSelected(); if ($xeTable.clearCellAreas) { $xeTable.clearCellAreas(); $xeTable.clearCopyCellArea(); } } if (oldColumn !== column) { const { model: oldModel } = oldColumn; if (oldModel.update) { setCellValue(row, oldColumn, oldModel.value); } if ($xeTable.clearValidate) { $xeTable.clearValidate(row, column); } } column.renderHeight = cell.offsetHeight; actived.args = params; actived.column = column; if (isPos) { setTimeout(() => { $xeTable.handleFocus(params, evnt); }); } } focused.column = null; focused.row = null; $xeTable.focus(); } } return nextTick(); }; const handleEditCell = (row, fieldOrColumn, isPos) => { const { editConfig } = props; const column = import_xe_utils12.default.isString(fieldOrColumn) ? $xeTable.getColumnByField(fieldOrColumn) : fieldOrColumn; if (row && column && isEnableConf(editConfig) && isEnableConf(column.editRender) && !$xeTable.isAggregateRecord(row)) { return Promise.resolve(isPos ? $xeTable.scrollToRow(row, column) : null).then(() => { const cell = $xeTable.getCellElement(row, column); if (cell) { handleEditActive({ row, rowIndex: $xeTable.getRowIndex(row), column, columnIndex: $xeTable.getColumnIndex(column), cell, $table: $xeTable }, null, isPos, isPos); internalData._lastCallTime = Date.now(); } return nextTick(); }); } return nextTick(); }; editMethods = { /** * 往表格中插入临时数据 * * @param {*} records */ insert(records) { return handleInsertRowAt(records, null); }, /** * 往表格指定行中插入临时数据 * 如果 row 为空则从插入到顶部,如果为树结构,则插入到目标节点顶部 * 如果 row 为 -1 则从插入到底部,如果为树结构,则插入到目标节点底部 * 如果 row 为有效行则插入到该行的位置,如果为树结构,则有插入到效的目标节点该行的位置 * @param {Object/Array} records 新的数据 * @param {Row} targetRow 指定行 */ insertAt(records, targetRow) { return handleInsertRowAt(records, targetRow); }, insertNextAt(records, targetRow) { return handleInsertRowAt(records, targetRow, true); }, insertChild(records, parentRow) { return handleInsertChildRowAt(records, parentRow, null); }, insertChildAt(records, parentRow, targetRow) { return handleInsertChildRowAt(records, parentRow, targetRow); }, insertChildNextAt(records, parentRow, targetRow) { return handleInsertChildRowAt(records, parentRow, targetRow, true); }, /** * 删除指定行数据 * 如果传 row 则删除一行 * 如果传 rows 则删除多行 * 如果为空则删除所有 */ remove(rows) { const { treeConfig } = props; const { editStore, isRowGroupStatus } = reactData; const { tableFullTreeData, selectCheckboxMaps, afterFullData, mergeBodyList, tableFullData, pendingRowMaps, insertRowMaps, removeRowMaps } = internalData; const checkboxOpts = computeCheckboxOpts.value; const treeOpts = computeTreeOpts.value; const { transform, mapChildrenField } = treeOpts; const childrenField = treeOpts.children || treeOpts.childrenField; const { actived } = editStore; const { checkField } = checkboxOpts; let delList = []; if (!rows) { rows = tableFullData; } else if (!import_xe_utils12.default.isArray(rows)) { rows = [rows]; } rows.forEach((row) => { if (!$xeTable.isInsertByRow(row)) { const rowid = getRowid($xeTable, row); removeRowMaps[rowid] = row; } }); if (!checkField) { rows.forEach((row) => { const rowid = getRowid($xeTable, row); if (selectCheckboxMaps[rowid]) { delete selectCheckboxMaps[rowid]; } }); reactData.updateCheckboxFlag++; } if (tableFullData === rows) { rows = delList = tableFullData.slice(0); internalData.tableFullData = []; internalData.afterFullData = []; $xeTable.clearMergeCells(); } else { if (treeConfig && transform) { rows.forEach((row) => { const rowid = getRowid($xeTable, row); const matchMapObj = import_xe_utils12.default.findTree(tableFullTreeData, (item) => rowid === getRowid($xeTable, item), { children: mapChildrenField }); if (matchMapObj) { const rItems = matchMapObj.items.splice(matchMapObj.index, 1); delList.push(rItems[0]); } const matchObj = import_xe_utils12.default.findTree(tableFullTreeData, (item) => rowid === getRowid($xeTable, item), { children: childrenField }); if (matchObj) { matchObj.items.splice(matchObj.index, 1); } const afIndex = $xeTable.findRowIndexOf(afterFullData, row); if (afIndex > -1) { afterFullData.splice(afIndex, 1); } }); } else if (isRowGroupStatus) { warnLog(getI18n7("vxe.error.noGroup", ["remove"])); } else { rows.forEach((row) => { const tfIndex = $xeTable.findRowIndexOf(tableFullData, row); if (tfIndex > -1) { const rItems = tableFullData.splice(tfIndex, 1); delList.push(rItems[0]); } const afIndex = $xeTable.findRowIndexOf(afterFullData, row); if (afIndex > -1) { mergeBodyList.forEach((mergeItem) => { const { row: mergeRowIndex, rowspan: mergeRowspan } = mergeItem; if (mergeRowIndex > afIndex) { mergeItem.row = mergeRowIndex - 1; } else if (mergeRowIndex + mergeRowspan > afIndex) { mergeItem.rowspan = mergeRowspan - 1; } }); afterFullData.splice(afIndex, 1); } }); } } if (actived.row && $xeTable.findRowIndexOf(rows, actived.row) > -1) { editMethods.clearEdit(); } rows.forEach((row) => { const rowid = getRowid($xeTable, row); if (insertRowMaps[rowid]) { delete insertRowMaps[rowid]; } if (pendingRowMaps[rowid]) { delete pendingRowMaps[rowid]; } }); reactData.removeRowFlag++; reactData.insertRowFlag++; reactData.pendingRowFlag++; $xeTable.cacheRowMap(false); $xeTable.handleTableData(treeConfig && transform); $xeTable.updateFooter(); $xeTable.handleUpdateBodyMerge(); if (!(treeConfig && transform)) { $xeTable.updateAfterDataIndex(); } $xeTable.checkSelectionStatus(); if (reactData.scrollYLoad) { $xeTable.updateScrollYSpace(); } return nextTick().then(() => { $xeTable.updateCellAreas(); return $xeTable.recalculate(true); }).then(() => { return { row: delList.length ? delList[delList.length - 1] : null, rows: delList }; }); }, /** * 删除复选框选中的数据 */ removeCheckboxRow() { return editMethods.remove($xeTable.getCheckboxRecords()).then((params) => { $xeTable.clearCheckboxRow(); return params; }); }, /** * 删除单选框选中的数据 */ removeRadioRow() { const radioRecord = $xeTable.getRadioRecord(); return editMethods.remove(radioRecord || []).then((params) => { $xeTable.clearRadioRow(); return params; }); }, /** * 删除当前行选中的数据 */ removeCurrentRow() { const currentRecord = $xeTable.getCurrentRecord(); return editMethods.remove(currentRecord || []).then((params) => { $xeTable.clearCurrentRow(); return params; }); }, /** * 获取表格数据集,包含新增、删除、修改、标记 */ getRecordset() { const removeRecords = editMethods.getRemoveRecords(); const pendingRecords = $xeTable.getPendingRecords(); const delRecords = removeRecords.concat(pendingRecords); const updateRecords = editMethods.getUpdateRecords().filter((row) => { return !delRecords.some((item) => $xeTable.eqRow(item, row)); }); return { insertRecords: editMethods.getInsertRecords(), removeRecords, updateRecords, pendingRecords }; }, /** * 获取新增的临时数据 */ getInsertRecords() { const { fullAllDataRowIdData, insertRowMaps } = internalData; const insertRecords = []; import_xe_utils12.default.each(insertRowMaps, (row, rowid) => { if (fullAllDataRowIdData[rowid]) { insertRecords.push(row); } }); return insertRecords; }, /** * 获取已删除的数据 */ getRemoveRecords() { const { removeRowMaps } = internalData; const removeRecords = []; import_xe_utils12.default.each(removeRowMaps, (row) => { removeRecords.push(row); }); return removeRecords; }, /** * 获取更新数据 * 只精准匹配 row 的更改 * 如果是树表格,子节点更改状态不会影响父节点的更新状态 */ getUpdateRecords() { const { keepSource, treeConfig } = props; const { tableFullData } = internalData; const treeOpts = computeTreeOpts.value; if (keepSource) { syncActivedCell(); if (treeConfig) { return import_xe_utils12.default.filterTree(tableFullData, (row) => $xeTable.isUpdateByRow(row), treeOpts); } return tableFullData.filter((row) => $xeTable.isUpdateByRow(row)); } return []; }, getActiveRecord() { warnLog("vxe.error.delFunc", ["getActiveRecord", "getEditCell"]); const { editStore } = reactData; const { fullAllDataRowIdData } = internalData; const { args, row } = editStore.actived; if (args && row && fullAllDataRowIdData[getRowid($xeTable, row)]) { return Object.assign({}, args, { row }); } return null; }, getEditRecord() { warnLog("vxe.error.delFunc", ["getEditRecord", "getEditCell"]); const { editStore } = reactData; const { fullAllDataRowIdData } = internalData; const { args, row } = editStore.actived; if (args && row && fullAllDataRowIdData[getRowid($xeTable, row)]) { return Object.assign({}, args, { row }); } return null; }, getEditCell() { const { editStore } = reactData; const { row, column } = editStore.actived; if (column && row) { return { row, rowIndex: $xeTable.getRowIndex(row), column, columnIndex: $xeTable.getColumnIndex(column) }; } return null; }, /** * 获取选中的单元格 */ getSelectedCell() { const { editStore } = reactData; const { row, column } = editStore.selected; if (row && column) { return { row, column }; } return null; }, clearActived(row) { warnLog("vxe.error.delFunc", ["clearActived", "clearEdit"]); return $xeTable.clearEdit(row); }, /** * 清除激活的编辑 */ clearEdit(row) { return handleClearEdit(null, row); }, /** * 清除所选中源状态 */ clearSelected() { const { editStore } = reactData; const { selected } = editStore; selected.row = null; selected.column = null; removeCellSelectedClass(); return nextTick(); }, isActiveByRow(row) { warnLog("vxe.error.delFunc", ["isActiveByRow", "isEditByRow"]); return $xeTable.isEditByRow(row); }, /** * 判断行是否为激活编辑状态 * @param {Row} row 行对象 */ isEditByRow(row) { const { editStore } = reactData; return editStore.actived.row === row; }, setActiveRow(row) { warnLog("vxe.error.delFunc", ["setActiveRow", "setEditRow"]); return editMethods.setEditRow(row); }, /** * 激活行编辑 */ setEditRow(row, fieldOrColumn) { const { visibleColumn } = internalData; let column = import_xe_utils12.default.find(visibleColumn, (column2) => isEnableConf(column2.editRender)); let isPos = false; if (fieldOrColumn) { isPos = true; if (fieldOrColumn !== true) { column = import_xe_utils12.default.isString(fieldOrColumn) ? $xeTable.getColumnByField(fieldOrColumn) : fieldOrColumn; } } return handleEditCell(row, column, isPos); }, setActiveCell(row, fieldOrColumn) { warnLog("vxe.error.delFunc", ["setActiveCell", "setEditCell"]); return editMethods.setEditCell(row, fieldOrColumn); }, /** * 激活单元格编辑 */ setEditCell(row, fieldOrColumn) { return handleEditCell(row, fieldOrColumn, true); }, /** * 只对 trigger=dblclick 有效,选中单元格 */ setSelectCell(row, fieldOrColumn) { const { tableData } = reactData; const editOpts = computeEditOpts.value; const column = import_xe_utils12.default.isString(fieldOrColumn) ? $xeTable.getColumnByField(fieldOrColumn) : fieldOrColumn; if (row && column && editOpts.trigger !== "manual") { const rowIndex = $xeTable.findRowIndexOf(tableData, row); if (rowIndex > -1 && column) { const cell = $xeTable.getCellElement(row, column); const params = { row, rowIndex, column, columnIndex: $xeTable.getColumnIndex(column), cell }; $xeTable.handleSelected(params, {}); } } return nextTick(); } }; editPrivateMethods = { /** * 处理激活编辑 */ handleEdit(params, evnt) { return handleEditActive(params, evnt, true, true); }, /** * @deprecated */ handleActived(params, evnt) { return editPrivateMethods.handleEdit(params, evnt); }, /** * 处理取消编辑 * @param evnt * @returns */ handleClearEdit, /** * 处理聚焦 */ handleFocus(params) { const { row, column, cell } = params; const { editRender } = column; const editOpts = computeEditOpts.value; if (isEnableConf(editRender)) { const compRender = renderer6.get(editRender.name); let autoFocus = editRender.autofocus || editRender.autoFocus; let autoSelect = editRender.autoSelect || editRender.autoselect; let inputElem; if (editOpts.autoFocus) { if (!autoFocus && compRender) { autoFocus = compRender.tableAutoFocus || compRender.tableAutofocus || compRender.autofocus; } if (!autoSelect && compRender) { autoSelect = compRender.tableAutoSelect || compRender.autoselect; } if (import_xe_utils12.default.isFunction(autoFocus)) { inputElem = autoFocus(params); } else if (autoFocus) { if (autoFocus === true) { inputElem = cell.querySelector("input,textarea"); } else { inputElem = cell.querySelector(autoFocus); } if (inputElem) { inputElem.focus(); } } } if (inputElem) { if (autoSelect) { inputElem.select(); } else { if (browseObj.msie) { const textRange = inputElem.createTextRange(); textRange.collapse(false); textRange.select(); } } } else { if (editOpts.autoPos) { if (!column.fixed) { $xeTable.scrollToRow(row, column); } } } } }, /** * 处理选中源 */ handleSelected(params, evnt) { const { mouseConfig } = props; const { editStore } = reactData; const mouseOpts = computeMouseOpts.value; const editOpts = computeEditOpts.value; const { actived, selected } = editStore; const { row, column } = params; const isMouseSelected = mouseConfig && mouseOpts.selected; const selectMethod = () => { if (isMouseSelected && (selected.row !== row || selected.column !== column)) { if (actived.row !== row || (editOpts.mode === "cell" ? actived.column !== column : false)) { handleClearEdit(evnt); $xeTable.clearSelected(); if ($xeTable.clearCellAreas) { $xeTable.clearCellAreas(); $xeTable.clearCopyCellArea(); } selected.args = params; selected.row = row; selected.column = column; if (isMouseSelected) { editPrivateMethods.addCellSelectedClass(); } $xeTable.focus(); if (evnt) { $xeTable.dispatchEvent("cell-selected", params, evnt); } } } return nextTick(); }; return selectMethod(); }, addCellSelectedClass() { const { editStore } = reactData; const { selected } = editStore; const { row, column } = selected; removeCellSelectedClass(); if (row && column) { const cell = $xeTable.getCellElement(row, column); if (cell) { addClass(cell, "col--selected"); } } } }; return Object.assign(Object.assign({}, editMethods), editPrivateMethods); }, setupGrid($xeGrid) { return $xeGrid.extendTableMethods(tableEditMethodKeys); }, setupGantt($xeGantt) { return $xeGantt.extendTableMethods(tableEditMethodKeys); } }); // ../node_modules/.pnpm/vxe-table@4.17.14_vue@3.5.24_typescript@5.9.3_/node_modules/vxe-table/es/table/module/export/hook.js var import_xe_utils13 = __toESM(require_xe_utils()); // ../node_modules/.pnpm/vxe-table@4.17.14_vue@3.5.24_typescript@5.9.3_/node_modules/vxe-table/es/table/module/export/util.js var defaultHtmlStyle = 'body{margin:0;padding: 0 1px;color:#333333;font-size:14px;font-family:"Microsoft YaHei",微软雅黑,"MicrosoftJhengHei",华文细黑,STHeiti,MingLiu}body *{-webkit-box-sizing:border-box;box-sizing:border-box}.vxe-table{border-collapse:collapse;text-align:left;border-spacing:0}.vxe-table:not(.is--print){table-layout:fixed}.vxe-table,.vxe-table th,.vxe-table td,.vxe-table td{border-color:#D0D0D0;border-style:solid;border-width:0}.vxe-table.is--print{width:100%}.border--default,.border--full,.border--outer{border-top-width:1px}.border--default,.border--full,.border--outer{border-left-width:1px}.border--outer,.border--default th,.border--default td,.border--full th,.border--full td,.border--outer th,.border--inner th,.border--inner td{border-bottom-width:1px}.border--default,.border--outer,.border--full th,.border--full td{border-right-width:1px}.border--default th,.border--full th,.border--outer th{background-color:#f8f8f9}.vxe-table td>div,.vxe-table th>div{padding:.5em .4em}.col--center{text-align:center}.col--right{text-align:right}.vxe-table:not(.is--print) .col--ellipsis>div{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-break:break-all}.vxe-table--tree-node{text-align:left}.vxe-table--tree-node-wrapper{position:relative}.vxe-table--tree-icon-wrapper{position:absolute;top:50%;width:1em;height:1em;text-align:center;-webkit-transform:translateY(-50%);transform:translateY(-50%);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer}.vxe-table--tree-unfold-icon,.vxe-table--tree-fold-icon{position:absolute;width:0;height:0;border-style:solid;border-width:.5em;border-right-color:transparent;border-bottom-color:transparent}.vxe-table--tree-unfold-icon{left:.3em;top:0;border-left-color:#939599;border-top-color:transparent}.vxe-table--tree-fold-icon{left:0;top:.3em;border-left-color:transparent;border-top-color:#939599}.vxe-table--tree-cell{display:block;padding-left:1.5em}.vxe-table input[type="checkbox"]{margin:0}.vxe-table input[type="checkbox"],.vxe-table input[type="radio"],.vxe-table input[type="checkbox"]+span,.vxe-table input[type="radio"]+span{vertical-align:middle;padding-left:0.4em}'; function getExportBlobByContent(content, options) { return new Blob([content], { type: `text/${options.type};charset=utf-8;` }); } function createHtmlPage(opts, content) { const { style } = opts; return [ "", "", '', `${opts.sheetName}`, '', ``, style ? `` : "", "", `${content}`, "" ].join(""); } // ../node_modules/.pnpm/vxe-table@4.17.14_vue@3.5.24_typescript@5.9.3_/node_modules/vxe-table/es/table/module/export/hook.js var { getI18n: getI18n8, hooks: hooks4, renderer: renderer7 } = VxeUI; var htmlCellElem; var csvBOM = "\uFEFF"; var enterSymbol = "\r\n"; function defaultFilterExportColumn(column) { return !!column.field || ["seq", "checkbox", "radio"].indexOf(column.type || "") === -1; } var getConvertColumns = (columns) => { const result = []; columns.forEach((column) => { if (column.childNodes && column.childNodes.length) { result.push(column); result.push(...getConvertColumns(column.childNodes)); } else { result.push(column); } }); return result; }; var convertToRows = (originColumns) => { let maxLevel = 1; const traverse = (column, parent) => { if (parent) { column._level = parent._level + 1; if (maxLevel < column._level) { maxLevel = column._level; } } if (column.childNodes && column.childNodes.length) { let colSpan = 0; column.childNodes.forEach((subColumn) => { traverse(subColumn, column); colSpan += subColumn._colSpan; }); column._colSpan = colSpan; } else { column._colSpan = 1; } }; originColumns.forEach((column) => { column._level = 1; traverse(column); }); const rows = []; for (let i = 0; i < maxLevel; i++) { rows.push([]); } const allColumns = getConvertColumns(originColumns); allColumns.forEach((column) => { if (column.childNodes && column.childNodes.length) { column._rowSpan = 1; } else { column._rowSpan = maxLevel - column._level + 1; } rows[column._level - 1].push(column); }); return rows; }; function toTableBorder(border) { if (border === true) { return "full"; } if (border) { return border; } return "default"; } function getBooleanValue(cellValue) { return cellValue === "TRUE" || cellValue === "true" || cellValue === true; } function getFooterData($xeTable, opts, footerTableData) { const $xeGrid = $xeTable.xeGrid; const $xeGantt = $xeTable.xeGantt; const { footerFilterMethod } = opts; return footerFilterMethod ? footerTableData.filter((items, index) => footerFilterMethod({ $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt, items, $rowIndex: index })) : footerTableData; } function getCsvCellTypeLabel(column, cellValue) { if (cellValue) { if (column.type === "seq") { return ` ${cellValue}`; } switch (column.cellType) { case "string": if (!isNaN(cellValue)) { return ` ${cellValue}`; } break; case "number": break; default: if (cellValue.length >= 12 && !isNaN(cellValue)) { return ` ${cellValue}`; } break; } } return cellValue; } function toTxtCellLabel(val) { if (/[",\s\n]/.test(val)) { return `"${val.replace(/"/g, '""')}"`; } return val; } function getElementsByTagName(elem, qualifiedName) { return elem.getElementsByTagName(qualifiedName); } function getTxtCellKey(now) { return `#${now}@${import_xe_utils13.default.uniqueId()}`; } function replaceTxtCell(cell, vMaps) { return cell.replace(/#\d+@\d+/g, (key) => import_xe_utils13.default.hasOwnProp(vMaps, key) ? vMaps[key] : key); } function getTxtCellValue(val, vMaps) { const rest = replaceTxtCell(val, vMaps); return rest.replace(/^"+$/g, (qVal) => '"'.repeat(Math.ceil(qVal.length / 2))); } function toExportField(tableConf, field) { const { fieldMaps, titleMaps } = tableConf; if (!fieldMaps[field]) { const teCol = titleMaps[field]; if (teCol && teCol.field) { field = teCol.field; } } return field; } function parseCsvAndTxt(tableConf, content, cellSeparator) { const list = content.split(enterSymbol); const rows = []; let fields = []; if (list.length) { const vMaps = {}; const now = Date.now(); list.forEach((rVal) => { if (rVal) { const item = {}; rVal = rVal.replace(/("")|(\n)/g, (text, dVal) => { const key = getTxtCellKey(now); vMaps[key] = dVal ? '"' : "\n"; return key; }).replace(/"(.*?)"/g, (text, cVal) => { const key = getTxtCellKey(now); vMaps[key] = replaceTxtCell(cVal, vMaps); return key; }); const cells = rVal.split(cellSeparator); if (!fields.length) { fields = cells.map((val) => toExportField(tableConf, getTxtCellValue(val.trim(), vMaps))); } else { cells.forEach((val, colIndex) => { if (colIndex < fields.length) { item[fields[colIndex]] = getTxtCellValue(val.trim(), vMaps); } }); rows.push(item); } } }); } return { fields, rows }; } function parseCsv(tableConf, content) { return parseCsvAndTxt(tableConf, content, ","); } function parseTxt(tableConf, content) { return parseCsvAndTxt(tableConf, content, " "); } function parseHTML(tableConf, content) { const domParser = new DOMParser(); const xmlDoc = domParser.parseFromString(content, "text/html"); const bodyNodes = getElementsByTagName(xmlDoc, "body"); const rows = []; const fields = []; if (bodyNodes.length) { const tableNodes = getElementsByTagName(bodyNodes[0], "table"); if (tableNodes.length) { const theadNodes = getElementsByTagName(tableNodes[0], "thead"); if (theadNodes.length) { import_xe_utils13.default.arrayEach(getElementsByTagName(theadNodes[0], "tr"), (rowNode) => { import_xe_utils13.default.arrayEach(getElementsByTagName(rowNode, "th"), (cellNode) => { fields.push(toExportField(tableConf, cellNode.textContent || "")); }); }); const tbodyNodes = getElementsByTagName(tableNodes[0], "tbody"); if (tbodyNodes.length) { import_xe_utils13.default.arrayEach(getElementsByTagName(tbodyNodes[0], "tr"), (rowNode) => { const item = {}; import_xe_utils13.default.arrayEach(getElementsByTagName(rowNode, "td"), (cellNode, colIndex) => { if (fields[colIndex]) { item[fields[colIndex]] = cellNode.textContent || ""; } }); rows.push(item); }); } } } } return { fields, rows }; } function parseXML(tableConf, content) { const domParser = new DOMParser(); const xmlDoc = domParser.parseFromString(content, "application/xml"); const sheetNodes = getElementsByTagName(xmlDoc, "Worksheet"); const rows = []; const fields = []; if (sheetNodes.length) { const tableNodes = getElementsByTagName(sheetNodes[0], "Table"); if (tableNodes.length) { const rowNodes = getElementsByTagName(tableNodes[0], "Row"); if (rowNodes.length) { import_xe_utils13.default.arrayEach(getElementsByTagName(rowNodes[0], "Cell"), (cellNode) => { fields.push(toExportField(tableConf, cellNode.textContent || "")); }); import_xe_utils13.default.arrayEach(rowNodes, (rowNode, index) => { if (index) { const item = {}; const cellNodes = getElementsByTagName(rowNode, "Cell"); import_xe_utils13.default.arrayEach(cellNodes, (cellNode, colIndex) => { if (fields[colIndex]) { item[fields[colIndex]] = cellNode.textContent; } }); rows.push(item); } }); } } } return { fields, rows }; } function clearColumnConvert(columns) { import_xe_utils13.default.eachTree(columns, (column) => { delete column._level; delete column._colSpan; delete column._rowSpan; delete column._children; delete column.childNodes; }, { children: "children" }); } var tableExportMethodKeys = ["exportData", "importByFile", "importData", "saveFile", "readFile", "print", "getPrintHtml", "openImport", "closeImport", "openExport", "closeExport", "openPrint", "closePrint"]; hooks4.add("tableExportModule", { setupTable($xeTable) { const { props, reactData, internalData } = $xeTable; const { computeTreeOpts, computePrintOpts, computeExportOpts, computeImportOpts, computeCustomOpts, computeSeqOpts, computeRadioOpts, computeCheckboxOpts, computeColumnOpts } = $xeTable.getComputeMaps(); const hasTreeChildren = (row) => { const treeOpts = computeTreeOpts.value; const childrenField = treeOpts.children || treeOpts.childrenField; return row[childrenField] && row[childrenField].length; }; const getSeq = (cellValue, row, $rowIndex, column, $columnIndex) => { const seqOpts = computeSeqOpts.value; const seqMd = seqOpts.seqMethod || column.seqMethod; if (seqMd) { return seqMd({ $table: $xeTable, row, rowIndex: $xeTable.getRowIndex(row), _rowIndex: $xeTable.getVTRowIndex(row), $rowIndex, column, columnIndex: $xeTable.getColumnIndex(column), _columnIndex: $xeTable.getVTColumnIndex(column), $columnIndex }); } return cellValue; }; function getHeaderTitle(opts, column) { const columnOpts = computeColumnOpts.value; const headExportMethod = column.headerExportMethod || columnOpts.headerExportMethod; return headExportMethod ? headExportMethod({ column, options: opts, $table: $xeTable }) : (opts.isTitle ? column.getTitle() : column.field) || ""; } const toBooleanValue = (cellValue) => { return import_xe_utils13.default.isBoolean(cellValue) ? cellValue ? "TRUE" : "FALSE" : cellValue; }; const toStringValue = (cellValue) => { return eqEmptyValue(cellValue) ? "" : `${cellValue}`; }; const getBodyLabelData = (opts, columns, datas) => { const { isAllExpand, mode } = opts; const { treeConfig } = props; const radioOpts = computeRadioOpts.value; const checkboxOpts = computeCheckboxOpts.value; const treeOpts = computeTreeOpts.value; const columnOpts = computeColumnOpts.value; if (!htmlCellElem) { htmlCellElem = document.createElement("div"); } if (treeConfig) { const childrenField = treeOpts.children || treeOpts.childrenField; const rest = []; const expandMaps = {}; const useMaps = {}; const { handleGetRowId } = createHandleGetRowId($xeTable); import_xe_utils13.default.eachTree(datas, (item, $rowIndex, items, path, parent, nodes) => { const row = item._row || item; const rowid = handleGetRowId(row); if (useMaps[rowid]) { return; } const parentRow = parent && parent._row ? parent._row : parent; const pRowid = parentRow ? handleGetRowId(parentRow) : ""; if (isAllExpand || !parentRow || expandMaps[pRowid] && $xeTable.isTreeExpandByRow(parentRow)) { const hasRowChild = hasTreeChildren(row); const item2 = { _row: row, _level: nodes.length - 1, _hasChild: hasRowChild, _expand: hasRowChild && $xeTable.isTreeExpandByRow(row) }; columns.forEach((column, $columnIndex) => { let cellValue = ""; const renderOpts = column.editRender || column.cellRender; let bodyExportMethod = column.exportMethod || columnOpts.exportMethod; if (!bodyExportMethod && renderOpts && renderOpts.name) { const compConf = renderer7.get(renderOpts.name); if (compConf) { bodyExportMethod = compConf.tableExportMethod || compConf.exportMethod; } } if (!bodyExportMethod) { bodyExportMethod = columnOpts.exportMethod; } if (bodyExportMethod) { cellValue = bodyExportMethod({ $table: $xeTable, row, column, options: opts }); } else { switch (column.type) { case "seq": { const seqVal = path.map((num, i) => i % 2 === 0 ? Number(num) + 1 : ".").join(""); cellValue = mode === "all" ? seqVal : getSeq(seqVal, row, $rowIndex, column, $columnIndex); break; } case "checkbox": cellValue = toBooleanValue($xeTable.isCheckedByCheckboxRow(row)); item2._checkboxLabel = checkboxOpts.labelField ? import_xe_utils13.default.get(row, checkboxOpts.labelField) : ""; item2._checkboxDisabled = checkboxOpts.checkMethod && !checkboxOpts.checkMethod({ $table: $xeTable, row }); break; case "radio": cellValue = toBooleanValue($xeTable.isCheckedByRadioRow(row)); item2._radioLabel = radioOpts.labelField ? import_xe_utils13.default.get(row, radioOpts.labelField) : ""; item2._radioDisabled = radioOpts.checkMethod && !radioOpts.checkMethod({ $table: $xeTable, row }); break; default: if (opts.original) { cellValue = getCellValue(row, column); } else { cellValue = $xeTable.getCellLabel(row, column); if (column.type === "html") { htmlCellElem.innerHTML = cellValue; cellValue = htmlCellElem.innerText.trim(); } else { const cell = $xeTable.getCellElement(row, column); if (cell && !hasClass(cell, "is--progress")) { cellValue = cell.innerText.trim(); } } } } } item2[column.id] = toStringValue(cellValue); }); useMaps[rowid] = true; if (pRowid) { expandMaps[pRowid] = true; } rest.push(Object.assign(item2, row)); } }, { children: childrenField }); return rest; } return datas.map((row, $rowIndex) => { const item = { _row: row }; columns.forEach((column, $columnIndex) => { let cellValue = ""; const renderOpts = column.editRender || column.cellRender; let bodyExportMethod = column.exportMethod || columnOpts.exportMethod; if (!bodyExportMethod && renderOpts && renderOpts.name) { const compConf = renderer7.get(renderOpts.name); if (compConf) { bodyExportMethod = compConf.tableExportMethod || compConf.exportMethod; } } if (bodyExportMethod) { cellValue = bodyExportMethod({ $table: $xeTable, row, column, options: opts }); } else { switch (column.type) { case "seq": { const seqValue = $rowIndex + 1; cellValue = mode === "all" ? seqValue : getSeq(seqValue, row, $rowIndex, column, $columnIndex); break; } case "checkbox": cellValue = toBooleanValue($xeTable.isCheckedByCheckboxRow(row)); item._checkboxLabel = checkboxOpts.labelField ? import_xe_utils13.default.get(row, checkboxOpts.labelField) : ""; item._checkboxDisabled = checkboxOpts.checkMethod && !checkboxOpts.checkMethod({ $table: $xeTable, row }); break; case "radio": cellValue = toBooleanValue($xeTable.isCheckedByRadioRow(row)); item._radioLabel = radioOpts.labelField ? import_xe_utils13.default.get(row, radioOpts.labelField) : ""; item._radioDisabled = radioOpts.checkMethod && !radioOpts.checkMethod({ $table: $xeTable, row }); break; default: if (opts.original) { cellValue = getCellValue(row, column); } else { cellValue = $xeTable.getCellLabel(row, column); if (column.type === "html") { htmlCellElem.innerHTML = cellValue; cellValue = htmlCellElem.innerText.trim(); } else { const cell = $xeTable.getCellElement(row, column); if (cell && !hasClass(cell, "is--progress")) { cellValue = cell.innerText.trim(); } } } } } item[column.id] = toStringValue(cellValue); }); return item; }); }; const getExportData = (opts) => { const $xeGrid = $xeTable.xeGrid; const $xeGantt = $xeTable.xeGantt; const { columns, dataFilterMethod } = opts; let datas = opts.data; if (dataFilterMethod) { datas = datas.filter((row, index) => dataFilterMethod({ $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt, row, $rowIndex: index })); } return getBodyLabelData(opts, columns, datas); }; const getFooterCellValue = (opts, row, column) => { const columnOpts = computeColumnOpts.value; const renderOpts = column.editRender || column.cellRender; let footLabelMethod = column.footerExportMethod; if (!footLabelMethod && renderOpts && renderOpts.name) { const compConf = renderer7.get(renderOpts.name); if (compConf) { footLabelMethod = compConf.tableFooterExportMethod || compConf.footerExportMethod; } } if (!footLabelMethod) { footLabelMethod = columnOpts.footerExportMethod; } if (footLabelMethod) { const _columnIndex = $xeTable.getVTColumnIndex(column); return footLabelMethod({ $table: $xeTable, items: row, itemIndex: _columnIndex, row, _columnIndex, column, options: opts }); } const cellValue = $xeTable.getFooterCellLabel(row, column); return cellValue; }; const toCsv = ($xeTable2, opts, columns, datas) => { let content = csvBOM; if (opts.isHeader) { content += columns.map((column) => toTxtCellLabel(getHeaderTitle(opts, column))).join(",") + enterSymbol; } datas.forEach((row) => { content += columns.map((column) => toTxtCellLabel(getCsvCellTypeLabel(column, row[column.id]))).join(",") + enterSymbol; }); if (opts.isFooter) { const { footerTableData } = reactData; const footers = getFooterData($xeTable2, opts, footerTableData); footers.forEach((row) => { content += columns.map((column) => toTxtCellLabel(getFooterCellValue(opts, row, column))).join(",") + enterSymbol; }); } return content; }; const toTxt = ($xeTable2, opts, columns, datas) => { let content = ""; if (opts.isHeader) { content += columns.map((column) => toTxtCellLabel(getHeaderTitle(opts, column))).join(" ") + enterSymbol; } datas.forEach((row) => { content += columns.map((column) => toTxtCellLabel(row[column.id])).join(" ") + enterSymbol; }); if (opts.isFooter) { const { footerTableData } = reactData; const footers = getFooterData($xeTable2, opts, footerTableData); footers.forEach((row) => { content += columns.map((column) => toTxtCellLabel(getFooterCellValue(opts, row, column))).join(" ") + enterSymbol; }); } return content; }; const hasEllipsis = (column, property, allColumnOverflow) => { const columnOverflow = column[property]; const headOverflow = import_xe_utils13.default.isUndefined(columnOverflow) || import_xe_utils13.default.isNull(columnOverflow) ? allColumnOverflow : columnOverflow; const showEllipsis = headOverflow === "ellipsis"; const showTitle = headOverflow === "title"; const showTooltip = headOverflow === true || headOverflow === "tooltip"; let isEllipsis = showTitle || showTooltip || showEllipsis; const { scrollXLoad, scrollYLoad } = reactData; if ((scrollXLoad || scrollYLoad) && !isEllipsis) { isEllipsis = true; } return isEllipsis; }; const toHtml = (opts, columns, datas) => { const { id, border, treeConfig, headerAlign: allHeaderAlign, align: allAlign, footerAlign: allFooterAlign, showOverflow: allColumnOverflow, showHeaderOverflow: allColumnHeaderOverflow } = props; const { isAllSelected, isIndeterminate } = reactData; const { mergeBodyCellMaps } = internalData; const treeOpts = computeTreeOpts.value; const { print: isPrint, isHeader, isFooter, isColgroup, isMerge, colgroups, original } = opts; const allCls = "check-all"; const clss = [ "vxe-table", `border--${toTableBorder(border)}`, isPrint ? "is--print" : "", isHeader ? "is--header" : "" ].filter((cls) => cls); const tables = [ ``, `${columns.map((column) => ``).join("")}` ]; if (isHeader) { tables.push(""); if (isColgroup && !original) { colgroups.forEach((cols) => { tables.push(`${cols.map((column) => { const headAlign = column.headerAlign || column.align || allHeaderAlign || allAlign; const classNames = hasEllipsis(column, "showHeaderOverflow", allColumnHeaderOverflow) ? ["col--ellipsis"] : []; const cellTitle = getHeaderTitle(opts, column); let childWidth = 0; let countChild = 0; import_xe_utils13.default.eachTree([column], (item) => { if (!item.childNodes || !column.childNodes.length) { countChild++; } childWidth += item.renderWidth; }, { children: "childNodes" }); const cellWidth = childWidth - countChild; if (headAlign) { classNames.push(`col--${headAlign}`); } if (column.type === "checkbox") { return ``; } return ``; }).join("")}`); }); } else { tables.push(`${columns.map((column) => { const headAlign = column.headerAlign || column.align || allHeaderAlign || allAlign; const classNames = hasEllipsis(column, "showHeaderOverflow", allColumnHeaderOverflow) ? ["col--ellipsis"] : []; const cellTitle = getHeaderTitle(opts, column); if (headAlign) { classNames.push(`col--${headAlign}`); } if (column.type === "checkbox") { return ``; } return ``; }).join("")}`); } tables.push(""); } if (datas.length) { tables.push(""); if (treeConfig) { datas.forEach((item) => { tables.push("" + columns.map((column) => { const colid = column.id; const cellAlign = column.align || allAlign; const classNames = hasEllipsis(column, "showOverflow", allColumnOverflow) ? ["col--ellipsis"] : []; const cellValue = item[colid]; if (cellAlign) { classNames.push(`col--${cellAlign}`); } if (column.treeNode) { let treeIcon = ""; if (item._hasChild) { treeIcon = ``; } classNames.push("vxe-table--tree-node"); if (column.type === "radio") { return ``; } else if (column.type === "checkbox") { return ``; } return ``; } if (column.type === "radio") { return ``; } else if (column.type === "checkbox") { return ``; } return ``; }).join("") + ""); }); } else { datas.forEach((item) => { tables.push("" + columns.map((column) => { const cellAlign = column.align || allAlign; const classNames = hasEllipsis(column, "showOverflow", allColumnOverflow) ? ["col--ellipsis"] : []; const cellValue = item[column.id]; let rowSpan = 1; let colSpan = 1; if (isMerge) { const _rowIndex = $xeTable.getVTRowIndex(item._row); const _columnIndex = $xeTable.getVTColumnIndex(column); const spanRest = mergeBodyCellMaps[`${_rowIndex}:${_columnIndex}`]; if (spanRest) { const { rowspan, colspan } = spanRest; if (!rowspan || !colspan) { return ""; } if (rowspan > 1) { rowSpan = rowspan; } if (colspan > 1) { colSpan = colspan; } } } if (cellAlign) { classNames.push(`col--${cellAlign}`); } if (column.type === "radio") { return ``; } else if (column.type === "checkbox") { return ``; } return ``; }).join("") + ""); }); } tables.push(""); } if (isFooter) { const { footerTableData } = reactData; const footers = getFooterData($xeTable, opts, footerTableData); if (footers.length) { tables.push(""); footers.forEach((row) => { tables.push(`${columns.map((column) => { const footAlign = column.footerAlign || column.align || allFooterAlign || allAlign; const classNames = hasEllipsis(column, "showOverflow", allColumnOverflow) ? ["col--ellipsis"] : []; const cellValue = getFooterCellValue(opts, row, column); if (footAlign) { classNames.push(`col--${footAlign}`); } return ``; }).join("")}`); }); tables.push(""); } } const script = !isAllSelected && isIndeterminate ? `
${cellTitle}
${formatText(cellTitle, true)}
${cellTitle}
${formatText(cellTitle, true)}
${treeIcon}
${item._radioLabel}
${treeIcon}
${item._checkboxLabel}
${treeIcon}
${cellValue}
${item._radioLabel}
${item._checkboxLabel}
${formatText(cellValue, true)}
${item._radioLabel}
${item._checkboxLabel}
${formatText(cellValue, true)}
${formatText(cellValue, true)}