UNPKG

hongluan-ui

Version:
367 lines (362 loc) 13.3 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var vue = require('vue'); var lodashUnified = require('lodash-unified'); require('../../../directives/index.js'); require('../../../hooks/index.js'); var index$4 = require('../../scrollbar/index.js'); var helper = require('./store/helper.js'); var tableLayout = require('./table-layout.js'); var index$1 = require('./table-header/index.js'); var index$2 = require('./table-body/index.js'); var index$3 = require('./table-footer/index.js'); var utilsHelper$1 = require('./table-header/utils-helper.js'); var utilsHelper = require('./table/utils-helper.js'); var styleHelper = require('./table/style-helper.js'); var keyRenderHelper = require('./table/key-render-helper.js'); var defaults = require('./table/defaults.js'); var tokens = require('./tokens.js'); var hHelper = require('./h-helper.js'); var useScrollbar = require('./composables/use-scrollbar.js'); var pluginVue_exportHelper = require('../../../_virtual/plugin-vue_export-helper.js'); var index = require('../../../directives/mousewheel/index.js'); var index$5 = require('../../../hooks/use-locale/index.js'); var index$6 = require('../../../hooks/use-namespace/index.js'); let tableIdSeed = 1; const _sfc_main = vue.defineComponent({ name: "Table", directives: { Mousewheel: index["default"] }, components: { TableHeader: index$1["default"], TableBody: index$2["default"], TableFooter: index$3["default"], HlScrollbar: index$4.HlScrollbar, hColgroup: hHelper.hColgroup }, props: defaults["default"], emits: [ "select", "select-all", "selection-change", "cell-mouse-enter", "cell-mouse-leave", "cell-contextmenu", "cell-click", "cell-dblclick", "row-click", "row-contextmenu", "row-dblclick", "header-click", "header-contextmenu", "sort-change", "filter-change", "current-change", "header-dragend", "expand-change" ], setup(props) { const { t } = index$5.useLocale(); const { namespace, defaultNamespace } = index$6.useNamespace("table"); const table = vue.getCurrentInstance(); vue.provide(tokens.TABLE_INJECTION_KEY, table); const store = helper.createStore(table, props); table.store = store; const layout = new tableLayout["default"]({ store: table.store, table, fit: props.fit, showHeader: props.showHeader }); table.layout = layout; const isEmpty = vue.computed(() => (store.states.data.value || []).length === 0); const { setCurrentRow, getSelectionRows, toggleRowSelection, clearSelection, clearFilter, toggleAllSelection, toggleRowExpansion, clearSort, sort } = utilsHelper["default"](store); const { isHidden, renderExpanded, setDragVisible, isGroup, handleMouseLeave, handleHeaderFooterMousewheel, tableSize, emptyBlockStyle, handleFixedMousewheel, resizeProxyVisible, bodyWidth, resizeState, doLayout, tableBodyStyles, tableLayout: tableLayout$1, scrollbarViewStyle, tableInnerStyle, scrollbarStyle } = styleHelper["default"](props, layout, store, table); const { scrollBarRef, scrollTo, setScrollLeft, setScrollTop } = useScrollbar.useScrollbar(); const debouncedUpdateLayout = lodashUnified.debounce(doLayout, 50); const tableId = `${namespace.value}-${tableIdSeed++}`; table.tableId = tableId; table.state = { isGroup, resizeState, doLayout, debouncedUpdateLayout }; const computedSumText = vue.computed(() => props.sumText || t("el.table.sumText")); const computedEmptyText = vue.computed(() => { return props.emptyText || t("el.table.emptyText"); }); const columns = vue.computed(() => { return utilsHelper$1.convertToRows(store.states.originColumns.value)[0]; }); keyRenderHelper["default"](table); return { namespace, defaultNamespace, layout, store, columns, handleHeaderFooterMousewheel, handleMouseLeave, tableId, tableSize, isHidden, isEmpty, renderExpanded, resizeProxyVisible, resizeState, isGroup, bodyWidth, tableBodyStyles, emptyBlockStyle, debouncedUpdateLayout, handleFixedMousewheel, setCurrentRow, getSelectionRows, toggleRowSelection, clearSelection, clearFilter, toggleAllSelection, toggleRowExpansion, clearSort, doLayout, sort, t, setDragVisible, context: table, computedSumText, computedEmptyText, tableLayout: tableLayout$1, scrollbarViewStyle, tableInnerStyle, scrollbarStyle, scrollBarRef, scrollTo, setScrollLeft, setScrollTop }; } }); function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { const _component_hColgroup = vue.resolveComponent("hColgroup"); const _component_table_header = vue.resolveComponent("table-header"); const _component_table_body = vue.resolveComponent("table-body"); const _component_table_footer = vue.resolveComponent("table-footer"); const _component_hl_scrollbar = vue.resolveComponent("hl-scrollbar"); const _directive_mousewheel = vue.resolveDirective("mousewheel"); return vue.openBlock(), vue.createElementBlock("div", { ref: "tableWrapper", class: vue.normalizeClass([ { "fit": _ctx.fit, "list": _ctx.list, "striped-odd": _ctx.stripe === "odd", "striped-even": _ctx.stripe === "even" || typeof _ctx.stripe === "boolean" && _ctx.stripe, "bordered": _ctx.border || _ctx.isGroup, "table-hidden": _ctx.isHidden, "table-group": _ctx.isGroup, "fluid-height": _ctx.maxHeight, "table-scrollable-x": _ctx.layout.scrollX.value, "table-scrollable-y": _ctx.layout.scrollY.value, "enable-row-hover": !_ctx.store.states.isComplex.value, "enable-row-transition": (_ctx.store.states.data.value || []).length !== 0 && (_ctx.store.states.data.value || []).length < 100, "has-footer": _ctx.showSummary }, _ctx.tableSize, _ctx.className, _ctx.namespace, `layout-${_ctx.tableLayout}` ]), style: vue.normalizeStyle(_ctx.style), "data-prefix": _ctx.defaultNamespace, onMouseleave: _ctx.handleMouseLeave }, [ vue.createElementVNode("div", { class: "table-inner-wrapper", style: vue.normalizeStyle(_ctx.tableInnerStyle) }, [ vue.createElementVNode("div", { ref: "hiddenColumns", class: "hidden-columns" }, [ vue.renderSlot(_ctx.$slots, "default") ], 512), _ctx.showHeader && _ctx.tableLayout === "fixed" ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", { key: 0, ref: "headerWrapper", class: "table-header-wrapper" }, [ vue.createElementVNode("table", { ref: "tableHeader", class: "table-header", style: vue.normalizeStyle(_ctx.tableBodyStyles), border: "0", cellpadding: "0", cellspacing: "0" }, [ vue.createVNode(_component_hColgroup, { columns: _ctx.store.states.columns.value, "table-layout": _ctx.tableLayout }, null, 8, ["columns", "table-layout"]), vue.createVNode(_component_table_header, { ref: "tableHeaderRef", border: _ctx.border, "default-sort": _ctx.defaultSort, store: _ctx.store, onSetDragVisible: _ctx.setDragVisible }, null, 8, ["border", "default-sort", "store", "onSetDragVisible"]) ], 4) ])), [ [_directive_mousewheel, _ctx.handleHeaderFooterMousewheel] ]) : vue.createCommentVNode("v-if", true), vue.createElementVNode("div", { ref: "bodyWrapper", class: "table-body-wrapper" }, [ vue.createVNode(_component_hl_scrollbar, { ref: "scrollBarRef", "view-style": _ctx.scrollbarViewStyle, "wrap-style": _ctx.scrollbarStyle, always: _ctx.scrollbarAlwaysOn }, { default: vue.withCtx(() => [ vue.createElementVNode("table", { ref: "tableBody", class: "table-body", cellspacing: "0", cellpadding: "0", border: "0", style: vue.normalizeStyle({ width: _ctx.bodyWidth, tableLayout: _ctx.tableLayout }) }, [ vue.createVNode(_component_hColgroup, { columns: _ctx.store.states.columns.value, "table-layout": _ctx.tableLayout }, null, 8, ["columns", "table-layout"]), _ctx.showHeader && _ctx.tableLayout === "auto" ? (vue.openBlock(), vue.createBlock(_component_table_header, { key: 0, ref: "tableHeaderRef", border: _ctx.border, "default-sort": _ctx.defaultSort, store: _ctx.store, onSetDragVisible: _ctx.setDragVisible }, null, 8, ["border", "default-sort", "store", "onSetDragVisible"])) : vue.createCommentVNode("v-if", true), vue.createVNode(_component_table_body, { context: _ctx.context, highlight: _ctx.highlightCurrentRow, "row-class-name": _ctx.rowClassName, "tooltip-effect": _ctx.tooltipEffect, "tooltip-options": _ctx.tooltipOptions, "row-style": _ctx.rowStyle, store: _ctx.store, stripe: _ctx.stripe }, null, 8, ["context", "highlight", "row-class-name", "tooltip-effect", "tooltip-options", "row-style", "store", "stripe"]), _ctx.showSummary && _ctx.tableLayout === "auto" ? (vue.openBlock(), vue.createBlock(_component_table_footer, { key: 1, class: "table-body-footer", border: _ctx.border, "default-sort": _ctx.defaultSort, store: _ctx.store, "sum-text": _ctx.computedSumText, "summary-method": _ctx.summaryMethod }, null, 8, ["border", "default-sort", "store", "sum-text", "summary-method"])) : vue.createCommentVNode("v-if", true) ], 4), _ctx.isEmpty ? (vue.openBlock(), vue.createElementBlock("div", { key: 0, ref: "emptyBlock", style: vue.normalizeStyle(_ctx.emptyBlockStyle), class: "table-empty-block" }, [ vue.createElementVNode("span", { class: "table-empty-text" }, [ vue.renderSlot(_ctx.$slots, "empty", {}, () => [ vue.createTextVNode(vue.toDisplayString(_ctx.computedEmptyText), 1) ]) ]) ], 4)) : vue.createCommentVNode("v-if", true), _ctx.$slots.append ? (vue.openBlock(), vue.createElementBlock("div", { key: 1, ref: "appendWrapper", class: "table-append-wrapper" }, [ vue.renderSlot(_ctx.$slots, "append") ], 512)) : vue.createCommentVNode("v-if", true) ]), _: 3 }, 8, ["view-style", "wrap-style", "always"]) ], 512), _ctx.showSummary && _ctx.tableLayout === "fixed" ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", { key: 1, ref: "footerWrapper", class: "table-footer-wrapper" }, [ vue.createElementVNode("table", { class: "table-footer", cellspacing: "0", cellpadding: "0", border: "0", style: vue.normalizeStyle(_ctx.tableBodyStyles) }, [ vue.createVNode(_component_hColgroup, { columns: _ctx.store.states.columns.value, "table-layout": _ctx.tableLayout }, null, 8, ["columns", "table-layout"]), vue.createVNode(_component_table_footer, { border: _ctx.border, "default-sort": _ctx.defaultSort, store: _ctx.store, "sum-text": _ctx.computedSumText, "summary-method": _ctx.summaryMethod }, null, 8, ["border", "default-sort", "store", "sum-text", "summary-method"]) ], 4) ])), [ [vue.vShow, !_ctx.isEmpty], [_directive_mousewheel, _ctx.handleHeaderFooterMousewheel] ]) : vue.createCommentVNode("v-if", true), _ctx.border || _ctx.isGroup ? (vue.openBlock(), vue.createElementBlock("div", { key: 2, class: "table-border-left-patch" })) : vue.createCommentVNode("v-if", true) ], 4), vue.withDirectives(vue.createElementVNode("div", { ref: "resizeProxy", class: "table-column-resize-proxy" }, null, 512), [ [vue.vShow, _ctx.resizeProxyVisible] ]) ], 46, ["data-prefix", "onMouseleave"]); } var Table = /* @__PURE__ */ pluginVue_exportHelper["default"](_sfc_main, [["render", _sfc_render]]); exports["default"] = Table; //# sourceMappingURL=table.js.map