diff --git a/README.md b/README.md index dd150ac..7320f57 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# @web/datatable AI 开发指南 +# @apigo.cc/datatable AI 开发指南 -`@web/datatable` 是一个高性能、无状态的 Web 数据表格组件,支持万级数据虚拟滚动、多维编辑及固定列。 +`@apigo.cc/datatable` 是一个高性能、无状态的 Web 数据表格组件,支持万级数据虚拟滚动、多维编辑及固定列。 --- @@ -11,9 +11,9 @@ diff --git a/dist/datatable.js b/dist/datatable.js index b40601f..d264b62 100644 --- a/dist/datatable.js +++ b/dist/datatable.js @@ -356,6 +356,7 @@ globalThis.Component.register("DataTable", (container) => { if (!container.state) container.state = globalThis.NewState({}); const state = container.state; + container.editable = container.hasAttribute("editable"); Object.assign(state, { list: [], fields: [], @@ -376,7 +377,8 @@ _fieldsDirty: false, _masterCellNodes: null, isDirty: false, - isBulkEdit: null + isBulkEdit: null, + editable: container.editable }); const perf = createPerfMonitor(); state.perf = perf.stats; @@ -404,6 +406,7 @@ perf.onScroll(); scroll.refresh(); container.hideColumnMenu(); + container.hideEditor(true); const prev = container.querySelector(".dt-spacer-prev"), post = container.querySelector(".dt-spacer-post"); if (prev) { prev.style.height = (state.prevHeight || 0) + "px"; @@ -466,6 +469,11 @@ container.showColumnMenu = (field, event) => { var _a; const btn = event.currentTarget, menu = container.querySelector(".dt-column-menu"); + if (menu.style.display === "block" && state.activeFieldId === field.id) { + container.hideColumnMenu(); + container.applySortFilter(); + return; + } const type = ((_a = field.settings) == null ? void 0 : _a.formType) || field.type || "text"; state.activeModes = MODE_MAP[type] || (["boolean", "switch", "checkbox", "radio"].includes(type) ? [] : MODE_MAP.text); if (!state.filterConfig[field.id]) state.filterConfig[field.id] = { mode: state.activeModes[0] || "contains", value: "", selectedValues: [] }; @@ -713,6 +721,7 @@ }; container.onMainDblClick = (e) => { var _a, _b, _c; + if (!container.editable) return; const cell = e.target.closest(".dt-cell"), row = cell == null ? void 0 : cell.closest(".dt-row"); if (row && !row.classList.contains("dt-header-row")) { const item = (_a = row._ref) == null ? void 0 : _a.item, fIdx = cell.dataset.fidx ? parseInt(cell.dataset.fidx) : Array.from(row.querySelectorAll(".dt-cell")).indexOf(cell); @@ -930,7 +939,6 @@
-
TOP FREQUENT VALUES
-
TOP FREQUENT VALUES