@toolbox-web/grid 1.25.0 → 1.25.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/all.js +2 -2
  2. package/all.js.map +1 -1
  3. package/index.js +1 -1
  4. package/index.js.map +1 -1
  5. package/lib/core/grid.d.ts +18 -2
  6. package/lib/core/internal/diagnostics.d.ts +164 -0
  7. package/lib/core/internal/sorting.d.ts +53 -4
  8. package/lib/core/internal/utils.d.ts +0 -8
  9. package/lib/core/plugin/base-plugin.d.ts +18 -2
  10. package/lib/core/plugin/plugin-manager.d.ts +6 -4
  11. package/lib/core/types.d.ts +3 -2
  12. package/lib/features/registry.js +1 -1
  13. package/lib/features/registry.js.map +1 -1
  14. package/lib/plugins/clipboard/index.js +1 -1
  15. package/lib/plugins/clipboard/index.js.map +1 -1
  16. package/lib/plugins/column-virtualization/index.js +1 -1
  17. package/lib/plugins/column-virtualization/index.js.map +1 -1
  18. package/lib/plugins/context-menu/index.js +1 -1
  19. package/lib/plugins/context-menu/index.js.map +1 -1
  20. package/lib/plugins/editing/index.js +1 -1
  21. package/lib/plugins/editing/index.js.map +1 -1
  22. package/lib/plugins/editing/types.d.ts +3 -1
  23. package/lib/plugins/export/ExportPlugin.d.ts +2 -2
  24. package/lib/plugins/export/index.js +1 -1
  25. package/lib/plugins/export/index.js.map +1 -1
  26. package/lib/plugins/filtering/FilteringPlugin.d.ts +2 -2
  27. package/lib/plugins/filtering/index.js +1 -1
  28. package/lib/plugins/filtering/index.js.map +1 -1
  29. package/lib/plugins/grouping-columns/grouping-columns.d.ts +15 -1
  30. package/lib/plugins/grouping-columns/index.d.ts +1 -0
  31. package/lib/plugins/grouping-columns/index.js +1 -1
  32. package/lib/plugins/grouping-columns/index.js.map +1 -1
  33. package/lib/plugins/grouping-columns/types.d.ts +98 -8
  34. package/lib/plugins/grouping-rows/GroupingRowsPlugin.d.ts +2 -2
  35. package/lib/plugins/grouping-rows/index.js +2 -2
  36. package/lib/plugins/grouping-rows/index.js.map +1 -1
  37. package/lib/plugins/master-detail/index.js +1 -1
  38. package/lib/plugins/master-detail/index.js.map +1 -1
  39. package/lib/plugins/multi-sort/MultiSortPlugin.d.ts +2 -2
  40. package/lib/plugins/multi-sort/index.js +1 -1
  41. package/lib/plugins/multi-sort/index.js.map +1 -1
  42. package/lib/plugins/pinned-columns/PinnedColumnsPlugin.d.ts +2 -2
  43. package/lib/plugins/pinned-columns/index.js +1 -1
  44. package/lib/plugins/pinned-columns/index.js.map +1 -1
  45. package/lib/plugins/pinned-rows/index.js +1 -1
  46. package/lib/plugins/pinned-rows/index.js.map +1 -1
  47. package/lib/plugins/pivot/index.js +1 -1
  48. package/lib/plugins/pivot/index.js.map +1 -1
  49. package/lib/plugins/print/PrintPlugin.d.ts +2 -1
  50. package/lib/plugins/print/index.js +1 -1
  51. package/lib/plugins/print/index.js.map +1 -1
  52. package/lib/plugins/print/print-isolated.d.ts +2 -1
  53. package/lib/plugins/reorder-columns/ReorderPlugin.d.ts +2 -2
  54. package/lib/plugins/reorder-columns/index.js +1 -1
  55. package/lib/plugins/reorder-columns/index.js.map +1 -1
  56. package/lib/plugins/reorder-rows/RowReorderPlugin.d.ts +2 -2
  57. package/lib/plugins/reorder-rows/index.js +1 -1
  58. package/lib/plugins/reorder-rows/index.js.map +1 -1
  59. package/lib/plugins/responsive/index.js +1 -1
  60. package/lib/plugins/responsive/index.js.map +1 -1
  61. package/lib/plugins/selection/index.js +1 -1
  62. package/lib/plugins/selection/index.js.map +1 -1
  63. package/lib/plugins/server-side/index.js +1 -1
  64. package/lib/plugins/server-side/index.js.map +1 -1
  65. package/lib/plugins/tree/TreePlugin.d.ts +2 -2
  66. package/lib/plugins/tree/index.js +1 -1
  67. package/lib/plugins/tree/index.js.map +1 -1
  68. package/lib/plugins/undo-redo/UndoRedoPlugin.d.ts +2 -2
  69. package/lib/plugins/undo-redo/index.js +1 -1
  70. package/lib/plugins/undo-redo/index.js.map +1 -1
  71. package/lib/plugins/visibility/VisibilityPlugin.d.ts +2 -2
  72. package/lib/plugins/visibility/index.js +1 -1
  73. package/lib/plugins/visibility/index.js.map +1 -1
  74. package/package.json +1 -1
  75. package/umd/grid.all.umd.js +1 -1
  76. package/umd/grid.all.umd.js.map +1 -1
  77. package/umd/grid.umd.js +1 -1
  78. package/umd/grid.umd.js.map +1 -1
  79. package/umd/plugins/clipboard.umd.js +1 -1
  80. package/umd/plugins/clipboard.umd.js.map +1 -1
  81. package/umd/plugins/context-menu.umd.js +1 -1
  82. package/umd/plugins/context-menu.umd.js.map +1 -1
  83. package/umd/plugins/editing.umd.js +1 -1
  84. package/umd/plugins/editing.umd.js.map +1 -1
  85. package/umd/plugins/export.umd.js.map +1 -1
  86. package/umd/plugins/filtering.umd.js.map +1 -1
  87. package/umd/plugins/grouping-columns.umd.js +1 -1
  88. package/umd/plugins/grouping-columns.umd.js.map +1 -1
  89. package/umd/plugins/grouping-rows.umd.js.map +1 -1
  90. package/umd/plugins/multi-sort.umd.js.map +1 -1
  91. package/umd/plugins/pinned-columns.umd.js.map +1 -1
  92. package/umd/plugins/print.umd.js +1 -1
  93. package/umd/plugins/print.umd.js.map +1 -1
  94. package/umd/plugins/reorder-columns.umd.js.map +1 -1
  95. package/umd/plugins/reorder-rows.umd.js.map +1 -1
  96. package/umd/plugins/responsive.umd.js +1 -1
  97. package/umd/plugins/responsive.umd.js.map +1 -1
  98. package/umd/plugins/tree.umd.js.map +1 -1
  99. package/umd/plugins/undo-redo.umd.js +1 -1
  100. package/umd/plugins/undo-redo.umd.js.map +1 -1
  101. package/umd/plugins/visibility.umd.js.map +1 -1
@@ -48,10 +48,10 @@ import { MultiSortConfig, SortModel } from './types';
48
48
  *
49
49
  * @example Basic Multi-Column Sorting
50
50
  * ```ts
51
- * import '@toolbox-web/grid';
51
+ * import { queryGrid } from '@toolbox-web/grid';
52
52
  * import { MultiSortPlugin } from '@toolbox-web/grid/plugins/multi-sort';
53
53
  *
54
- * const grid = document.querySelector('tbw-grid');
54
+ * const grid = queryGrid('tbw-grid');
55
55
  * grid.gridConfig = {
56
56
  * columns: [
57
57
  * { field: 'name', header: 'Name', sortable: true },
@@ -1,2 +1,2 @@
1
- function t(t,e){const r=t.querySelector?.(".tbw-sr-only");r&&(r.textContent="",requestAnimationFrame(()=>{r.textContent=e}))}const e='<svg viewBox="0 0 16 16" width="12" height="12"><path fill="currentColor" d="M6 10.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5zm-2-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm-2-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5z"/></svg>',r={expand:"▶",collapse:"▼",sortAsc:"▲",sortDesc:"▼",sortNone:"⇅",submenuArrow:"▶",dragHandle:"⋮⋮",toolPanel:"☰",filter:e,filterActive:e,print:"🖨️"};class i{static dependencies;static manifest;aliases;version="undefined"!=typeof __GRID_VERSION__?__GRID_VERSION__:"dev";styles;cellRenderers;headerRenderers;cellEditors;grid;config;userConfig;#t;get defaultConfig(){return{}}constructor(t={}){this.userConfig=t}attach(t){this.#t?.abort(),this.#t=new AbortController,this.grid=t,this.config={...this.defaultConfig,...this.userConfig}}detach(){this.#t?.abort(),this.#t=void 0}getPlugin(t){return this.grid?.getPlugin(t)}emit(t,e){this.grid?.dispatchEvent?.(new CustomEvent(t,{detail:e,bubbles:!0}))}emitCancelable(t,e){const r=new CustomEvent(t,{detail:e,bubbles:!0,cancelable:!0});return this.grid?.dispatchEvent?.(r),r.defaultPrevented}on(t,e){this.grid?._pluginManager?.subscribe(this,t,e)}off(t){this.grid?._pluginManager?.unsubscribe(this,t)}emitPluginEvent(t,e){this.grid?._pluginManager?.emitPluginEvent(t,e)}requestRender(){this.grid?.requestRender?.()}requestColumnsRender(){this.grid?.requestColumnsRender?.()}requestRenderWithFocus(){this.grid?.requestRenderWithFocus?.()}requestAfterRender(){this.grid?.requestAfterRender?.()}requestVirtualRefresh(){this.grid?.requestVirtualRefresh?.()}get rows(){return this.grid?.rows??[]}get sourceRows(){return this.grid?.sourceRows??[]}get columns(){return this.grid?.columns??[]}get visibleColumns(){return this.grid?._visibleColumns??[]}get gridElement(){return this.grid?._hostElement}get disconnectSignal(){return this.#t?.signal??this.grid?.disconnectSignal}get gridIcons(){const t=this.grid?.gridConfig?.icons??{};return{...r,...t}}get isAnimationEnabled(){const t=this.grid?.effectiveConfig?.animation?.mode??"reduced-motion";if(!1===t||"off"===t)return!1;if(!0===t||"on"===t)return!0;const e=this.gridElement;if(e){return"0"!==getComputedStyle(e).getPropertyValue("--tbw-animation-enabled").trim()}return!0}get animationDuration(){const t=this.gridElement;if(t){const e=getComputedStyle(t).getPropertyValue("--tbw-animation-duration").trim(),r=parseInt(e,10);if(!isNaN(r))return r}return 200}resolveIcon(t,e){return void 0!==e?e:this.gridIcons[t]}setIcon(t,e){"string"==typeof e?t.innerHTML=e:e instanceof HTMLElement&&(t.innerHTML="",t.appendChild(e.cloneNode(!0)))}warn(t){var e,r;console.warn(`${e=this.gridElement.id,r=this.name,`[tbw-grid${e?`#${e}`:""}${r?`:${r}`:""}]`} ${t}`)}}function n(t,e){return null==t&&null==e?0:null==t?1:null==e?-1:"number"==typeof t&&"number"==typeof e?t-e:t instanceof Date&&e instanceof Date?t.getTime()-e.getTime():"boolean"==typeof t&&"boolean"==typeof e?t===e?0:t?-1:1:String(t).localeCompare(String(e))}function o(t,e){const r=t.findIndex(t=>t.field===e);return r>=0?r+1:void 0}function s(t,e){return t.find(t=>t.field===e)?.direction}class l extends i{name="multiSort";styles='@layer tbw-plugins{.header-cell[data-sort=asc]:after{content:"↑";margin-left:var(--tbw-spacing-xs, .25em);opacity:.8}.header-cell[data-sort=desc]:after{content:"↓";margin-left:var(--tbw-spacing-xs, .25em);opacity:.8}.sort-indicator{margin-left:var(--tbw-spacing-xs, .25em);opacity:.8}.sort-index{font-size:var(--tbw-font-size-2xs, .7em);background:var(--tbw-multi-sort-badge-bg, var(--tbw-color-panel-bg));color:var(--tbw-multi-sort-badge-color, var(--tbw-color-fg));border-radius:50%;width:var(--tbw-multi-sort-badge-size, 1em);height:var(--tbw-multi-sort-badge-size, 1em);display:inline-flex;align-items:center;justify-content:center;margin-left:var(--tbw-spacing-xs, .125em);font-weight:600}}';get defaultConfig(){return{maxSortColumns:3,showSortIndex:!0}}sortModel=[];cachedSortResult=null;get#e(){return this.grid}clearCoreSortState(){this.#e._sortState=null}detach(){this.sortModel=[],this.cachedSortResult=null}processRows(t){if(0===this.sortModel.length)return this.cachedSortResult=null,[...t];const e=this.#e;if(!e._isGridEditMode&&"number"==typeof e._activeEditRows&&-1!==e._activeEditRows&&this.cachedSortResult&&this.cachedSortResult.length===t.length)return[...this.cachedSortResult];const r=function(t,e,r){return e.length?[...t].sort((t,i)=>{for(const o of e){const e=r.find(t=>t.field===o.field),s=(e?.sortComparator??n)(t[o.field],i[o.field],t,i);if(0!==s)return"asc"===o.direction?s:-s}return 0}):[...t]}([...t],this.sortModel,[...this.columns]);return this.cachedSortResult=r,r}onHeaderClick(e){const r=this.columns.find(t=>t.field===e.field);if(!r?.sortable)return!1;const i=e.originalEvent.shiftKey,n=this.config.maxSortColumns??3;if(this.sortModel=function(t,e,r,i){const n=t.find(t=>t.field===e);return r?n?"asc"===n.direction?t.map(t=>t.field===e?{...t,direction:"desc"}:t):t.filter(t=>t.field!==e):t.length<i?[...t,{field:e,direction:"asc"}]:t:"asc"===n?.direction?[{field:e,direction:"desc"}]:"desc"===n?.direction?[]:[{field:e,direction:"asc"}]}(this.sortModel,e.field,i,n),this.clearCoreSortState(),this.emit("sort-change",{sortModel:[...this.sortModel]}),this.requestRender(),this.grid?.requestStateChange?.(),this.sortModel.length>0){const e=this.sortModel.map(t=>{const e=this.columns.find(e=>e.field===t.field);return`${e?.header??t.field} ${"asc"===t.direction?"ascending":"descending"}`});t(this.gridElement,`Sorted by ${e.join(", then ")}`)}else t(this.gridElement,"Sort cleared");return!0}afterRender(){const t=this.gridElement;if(!t)return;const e=!1!==this.config.showSortIndex;t.querySelectorAll(".header-row .cell[data-field]").forEach(t=>{const r=t.getAttribute("data-field");if(!r)return;const i=o(this.sortModel,r),n=s(this.sortModel,r),l=t.querySelector(".sort-index");if(l?.remove(),n){const r=t.querySelector('[part~="sort-indicator"], .sort-indicator');r?.remove(),t.setAttribute("data-sort",n);const o=document.createElement("span");o.className="sort-indicator",this.setIcon(o,this.resolveIcon("asc"===n?"sortAsc":"sortDesc"));const s=t.querySelector(".tbw-filter-btn"),l=t.querySelector(".resize-handle"),d=s??l;if(d?t.insertBefore(o,d):t.appendChild(o),e&&this.sortModel.length>1&&void 0!==i){const e=document.createElement("span");e.className="sort-index",e.textContent=String(i),o.nextSibling?t.insertBefore(e,o.nextSibling):t.appendChild(e)}}else{t.removeAttribute("data-sort");const e=t.querySelector('[part~="sort-indicator"], .sort-indicator');e?.remove()}})}getSortModel(){return[...this.sortModel]}setSortModel(e){if(this.sortModel=[...e],this.clearCoreSortState(),this.emit("sort-change",{sortModel:[...e]}),this.requestRender(),this.grid?.requestStateChange?.(),e.length>0){const r=e.map(t=>{const e=this.columns.find(e=>e.field===t.field);return`${e?.header??t.field} ${"asc"===t.direction?"ascending":"descending"}`});t(this.gridElement,`Sorted by ${r.join(", then ")}`)}}clearSort(){this.sortModel=[],this.clearCoreSortState(),this.emit("sort-change",{sortModel:[]}),this.requestRender(),this.grid?.requestStateChange?.(),t(this.gridElement,"Sort cleared")}getSortIndex(t){return o(this.sortModel,t)}getSortDirection(t){return s(this.sortModel,t)}getColumnState(t){const e=this.sortModel.findIndex(e=>e.field===t);if(-1===e)return;return{sort:{direction:this.sortModel[e].direction,priority:e}}}applyColumnState(t,e){if(!e.sort)return void(this.sortModel=this.sortModel.filter(e=>e.field!==t));const r=this.sortModel.findIndex(e=>e.field===t),i={field:t,direction:e.sort.direction};-1!==r?this.sortModel[r]=i:this.sortModel.splice(e.sort.priority,0,i),this.clearCoreSortState()}}export{l as MultiSortPlugin};
1
+ function t(t,e){const r=t.querySelector?.(".tbw-sr-only");r&&(r.textContent="",requestAnimationFrame(()=>{r.textContent=e}))}function e(t,e){return`[tbw-grid${t?`#${t}`:""}${e?`:${e}`:""}]`}function r(t,r,i,n){return`${e(i,n)} ${t}: ${r}\n\n → More info: ${function(t){return`https://toolboxjs.com/grid/errors#${t.toLowerCase()}`}(t)}`}const i='<svg viewBox="0 0 16 16" width="12" height="12"><path fill="currentColor" d="M6 10.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5zm-2-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm-2-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5z"/></svg>',n={expand:"▶",collapse:"▼",sortAsc:"▲",sortDesc:"▼",sortNone:"⇅",submenuArrow:"▶",dragHandle:"⋮⋮",toolPanel:"☰",filter:i,filterActive:i,print:"🖨️"};class o{static dependencies;static manifest;aliases;version="undefined"!=typeof __GRID_VERSION__?__GRID_VERSION__:"dev";styles;cellRenderers;headerRenderers;cellEditors;grid;config;userConfig;#t;get defaultConfig(){return{}}constructor(t={}){this.userConfig=t}attach(t){this.#t?.abort(),this.#t=new AbortController,this.grid=t,this.config={...this.defaultConfig,...this.userConfig}}detach(){this.#t?.abort(),this.#t=void 0}getPlugin(t){return this.grid?.getPlugin(t)}emit(t,e){this.grid?.dispatchEvent?.(new CustomEvent(t,{detail:e,bubbles:!0}))}emitCancelable(t,e){const r=new CustomEvent(t,{detail:e,bubbles:!0,cancelable:!0});return this.grid?.dispatchEvent?.(r),r.defaultPrevented}on(t,e){this.grid?._pluginManager?.subscribe(this,t,e)}off(t){this.grid?._pluginManager?.unsubscribe(this,t)}emitPluginEvent(t,e){this.grid?._pluginManager?.emitPluginEvent(t,e)}requestRender(){this.grid?.requestRender?.()}requestColumnsRender(){this.grid?.requestColumnsRender?.()}requestRenderWithFocus(){this.grid?.requestRenderWithFocus?.()}requestAfterRender(){this.grid?.requestAfterRender?.()}requestVirtualRefresh(){this.grid?.requestVirtualRefresh?.()}get rows(){return this.grid?.rows??[]}get sourceRows(){return this.grid?.sourceRows??[]}get columns(){return this.grid?.columns??[]}get visibleColumns(){return this.grid?._visibleColumns??[]}get gridElement(){return this.grid?._hostElement}get disconnectSignal(){return this.#t?.signal??this.grid?.disconnectSignal}get gridIcons(){const t=this.grid?.gridConfig?.icons??{};return{...n,...t}}get isAnimationEnabled(){const t=this.grid?.effectiveConfig?.animation?.mode??"reduced-motion";if(!1===t||"off"===t)return!1;if(!0===t||"on"===t)return!0;const e=this.gridElement;if(e){return"0"!==getComputedStyle(e).getPropertyValue("--tbw-animation-enabled").trim()}return!0}get animationDuration(){const t=this.gridElement;if(t){const e=getComputedStyle(t).getPropertyValue("--tbw-animation-duration").trim(),r=parseInt(e,10);if(!isNaN(r))return r}return 200}resolveIcon(t,e){return void 0!==e?e:this.gridIcons[t]}setIcon(t,e){"string"==typeof e?t.innerHTML=e:e instanceof HTMLElement&&(t.innerHTML="",t.appendChild(e.cloneNode(!0)))}warn(t,i){void 0!==i?console.warn(r(t,i,this.gridElement.id,this.name)):console.warn(`${e(this.gridElement.id,this.name)} ${t}`)}throwDiagnostic(t,e){throw new Error(r(t,e,this.gridElement.id,this.name))}}function s(t,e){return null==t&&null==e?0:null==t?1:null==e?-1:"number"==typeof t&&"number"==typeof e?t-e:t instanceof Date&&e instanceof Date?t.getTime()-e.getTime():"boolean"==typeof t&&"boolean"==typeof e?t===e?0:t?-1:1:String(t).localeCompare(String(e))}function l(t,e){const r=t.findIndex(t=>t.field===e);return r>=0?r+1:void 0}function d(t,e){return t.find(t=>t.field===e)?.direction}class a extends o{name="multiSort";styles='@layer tbw-plugins{.header-cell[data-sort=asc]:after{content:"↑";margin-left:var(--tbw-spacing-xs, .25em);opacity:.8}.header-cell[data-sort=desc]:after{content:"↓";margin-left:var(--tbw-spacing-xs, .25em);opacity:.8}.sort-indicator{margin-left:var(--tbw-spacing-xs, .25em);opacity:.8}.sort-index{font-size:var(--tbw-font-size-2xs, .7em);background:var(--tbw-multi-sort-badge-bg, var(--tbw-color-panel-bg));color:var(--tbw-multi-sort-badge-color, var(--tbw-color-fg));border-radius:50%;width:var(--tbw-multi-sort-badge-size, 1em);height:var(--tbw-multi-sort-badge-size, 1em);display:inline-flex;align-items:center;justify-content:center;margin-left:var(--tbw-spacing-xs, .125em);font-weight:600}}';get defaultConfig(){return{maxSortColumns:3,showSortIndex:!0}}sortModel=[];cachedSortResult=null;get#e(){return this.grid}clearCoreSortState(){this.#e._sortState=null}detach(){this.sortModel=[],this.cachedSortResult=null}processRows(t){if(0===this.sortModel.length)return this.cachedSortResult=null,[...t];const e=this.#e;if(!e._isGridEditMode&&"number"==typeof e._activeEditRows&&-1!==e._activeEditRows&&this.cachedSortResult&&this.cachedSortResult.length===t.length)return[...this.cachedSortResult];const r=function(t,e,r){return e.length?[...t].sort((t,i)=>{for(const n of e){const e=r.find(t=>t.field===n.field),o=(e?.sortComparator??s)(t[n.field],i[n.field],t,i);if(0!==o)return"asc"===n.direction?o:-o}return 0}):[...t]}([...t],this.sortModel,[...this.columns]);return this.cachedSortResult=r,r}onHeaderClick(e){const r=this.columns.find(t=>t.field===e.field);if(!r?.sortable)return!1;const i=e.originalEvent.shiftKey,n=this.config.maxSortColumns??3;if(this.sortModel=function(t,e,r,i){const n=t.find(t=>t.field===e);return r?n?"asc"===n.direction?t.map(t=>t.field===e?{...t,direction:"desc"}:t):t.filter(t=>t.field!==e):t.length<i?[...t,{field:e,direction:"asc"}]:t:"asc"===n?.direction?[{field:e,direction:"desc"}]:"desc"===n?.direction?[]:[{field:e,direction:"asc"}]}(this.sortModel,e.field,i,n),this.clearCoreSortState(),this.emit("sort-change",{sortModel:[...this.sortModel]}),this.requestRender(),this.grid?.requestStateChange?.(),this.sortModel.length>0){const e=this.sortModel.map(t=>{const e=this.columns.find(e=>e.field===t.field);return`${e?.header??t.field} ${"asc"===t.direction?"ascending":"descending"}`});t(this.gridElement,`Sorted by ${e.join(", then ")}`)}else t(this.gridElement,"Sort cleared");return!0}afterRender(){const t=this.gridElement;if(!t)return;const e=!1!==this.config.showSortIndex;t.querySelectorAll(".header-row .cell[data-field]").forEach(t=>{const r=t.getAttribute("data-field");if(!r)return;const i=l(this.sortModel,r),n=d(this.sortModel,r),o=t.querySelector(".sort-index");if(o?.remove(),n){const r=t.querySelector('[part~="sort-indicator"], .sort-indicator');r?.remove(),t.setAttribute("data-sort",n);const o=document.createElement("span");o.className="sort-indicator",this.setIcon(o,this.resolveIcon("asc"===n?"sortAsc":"sortDesc"));const s=t.querySelector(".tbw-filter-btn"),l=t.querySelector(".resize-handle"),d=s??l;if(d?t.insertBefore(o,d):t.appendChild(o),e&&this.sortModel.length>1&&void 0!==i){const e=document.createElement("span");e.className="sort-index",e.textContent=String(i),o.nextSibling?t.insertBefore(e,o.nextSibling):t.appendChild(e)}}else{t.removeAttribute("data-sort");const e=t.querySelector('[part~="sort-indicator"], .sort-indicator');e?.remove()}})}getSortModel(){return[...this.sortModel]}setSortModel(e){if(this.sortModel=[...e],this.clearCoreSortState(),this.emit("sort-change",{sortModel:[...e]}),this.requestRender(),this.grid?.requestStateChange?.(),e.length>0){const r=e.map(t=>{const e=this.columns.find(e=>e.field===t.field);return`${e?.header??t.field} ${"asc"===t.direction?"ascending":"descending"}`});t(this.gridElement,`Sorted by ${r.join(", then ")}`)}}clearSort(){this.sortModel=[],this.clearCoreSortState(),this.emit("sort-change",{sortModel:[]}),this.requestRender(),this.grid?.requestStateChange?.(),t(this.gridElement,"Sort cleared")}getSortIndex(t){return l(this.sortModel,t)}getSortDirection(t){return d(this.sortModel,t)}getColumnState(t){const e=this.sortModel.findIndex(e=>e.field===t);if(-1===e)return;return{sort:{direction:this.sortModel[e].direction,priority:e}}}applyColumnState(t,e){if(!e.sort)return void(this.sortModel=this.sortModel.filter(e=>e.field!==t));const r=this.sortModel.findIndex(e=>e.field===t),i={field:t,direction:e.sort.direction};-1!==r?this.sortModel[r]=i:this.sortModel.splice(e.sort.priority,0,i),this.clearCoreSortState()}}export{a as MultiSortPlugin};
2
2
  //# sourceMappingURL=index.js.map