@toolbox-web/grid 3.6.0 → 3.7.0
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.
- package/LICENSE +21 -0
- package/README.md +1 -1
- package/all.js +1 -1
- package/all.js.map +1 -1
- package/index.js +1 -1
- package/index.js.map +1 -1
- package/lib/core/internal/empty.d.ts +14 -6
- package/lib/core/types.d.ts +4 -0
- package/lib/features/registry.js +1 -1
- package/lib/plugins/clipboard/index.js +1 -1
- package/lib/plugins/clipboard/index.js.map +1 -1
- package/lib/plugins/column-virtualization/index.js +1 -1
- package/lib/plugins/column-virtualization/index.js.map +1 -1
- package/lib/plugins/context-menu/index.js +1 -1
- package/lib/plugins/context-menu/index.js.map +1 -1
- package/lib/plugins/editing/index.js +1 -1
- package/lib/plugins/editing/index.js.map +1 -1
- package/lib/plugins/export/index.js +1 -1
- package/lib/plugins/export/index.js.map +1 -1
- package/lib/plugins/filtering/index.js +1 -1
- package/lib/plugins/filtering/index.js.map +1 -1
- package/lib/plugins/grouping-columns/index.js +1 -1
- package/lib/plugins/grouping-columns/index.js.map +1 -1
- package/lib/plugins/grouping-rows/index.js +1 -1
- package/lib/plugins/grouping-rows/index.js.map +1 -1
- package/lib/plugins/master-detail/index.js +1 -1
- package/lib/plugins/master-detail/index.js.map +1 -1
- package/lib/plugins/multi-sort/index.js +1 -1
- package/lib/plugins/multi-sort/index.js.map +1 -1
- package/lib/plugins/pinned-columns/index.js +1 -1
- package/lib/plugins/pinned-columns/index.js.map +1 -1
- package/lib/plugins/pinned-rows/index.js +1 -1
- package/lib/plugins/pinned-rows/index.js.map +1 -1
- package/lib/plugins/pivot/index.js +1 -1
- package/lib/plugins/pivot/index.js.map +1 -1
- package/lib/plugins/print/index.js +1 -1
- package/lib/plugins/print/index.js.map +1 -1
- package/lib/plugins/reorder-columns/index.js +1 -1
- package/lib/plugins/reorder-columns/index.js.map +1 -1
- package/lib/plugins/responsive/index.d.ts +1 -1
- package/lib/plugins/responsive/index.js +1 -1
- package/lib/plugins/responsive/index.js.map +1 -1
- package/lib/plugins/responsive/types.d.ts +36 -1
- package/lib/plugins/row-drag-drop/index.js +1 -1
- package/lib/plugins/row-drag-drop/index.js.map +1 -1
- package/lib/plugins/selection/index.js +1 -1
- package/lib/plugins/selection/index.js.map +1 -1
- package/lib/plugins/server-side/index.js +1 -1
- package/lib/plugins/server-side/index.js.map +1 -1
- package/lib/plugins/shell/index.js +1 -1
- package/lib/plugins/shell/index.js.map +1 -1
- package/lib/plugins/sticky-rows/index.js +1 -1
- package/lib/plugins/sticky-rows/index.js.map +1 -1
- package/lib/plugins/tooltip/index.js +1 -1
- package/lib/plugins/tooltip/index.js.map +1 -1
- package/lib/plugins/tree/index.js +1 -1
- package/lib/plugins/tree/index.js.map +1 -1
- package/lib/plugins/undo-redo/index.js +1 -1
- package/lib/plugins/undo-redo/index.js.map +1 -1
- package/lib/plugins/visibility/index.js +1 -1
- package/lib/plugins/visibility/index.js.map +1 -1
- package/package.json +3 -2
- package/themes/dg-theme-bootstrap.css +13 -4
- package/themes/dg-theme-contrast.css +3 -0
- package/themes/dg-theme-large.css +4 -0
- package/themes/dg-theme-material.css +3 -0
- package/themes/dg-theme-standard.css +12 -3
- package/themes/dg-theme-vibrant.css +10 -3
- package/umd/grid.all.umd.js +1 -1
- package/umd/grid.all.umd.js.map +1 -1
- package/umd/grid.umd.js +1 -1
- package/umd/grid.umd.js.map +1 -1
- package/umd/plugins/grouping-columns.umd.js +1 -1
- package/umd/plugins/grouping-columns.umd.js.map +1 -1
- package/umd/plugins/responsive.umd.js +1 -1
- package/umd/plugins/responsive.umd.js.map +1 -1
- package/umd/plugins/selection.umd.js +1 -1
- package/umd/plugins/selection.umd.js.map +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=/* @__PURE__ */new WeakMap;function t(e){return"__proto__"===e||"constructor"===e||"prototype"===e}var r=/* @__PURE__ */new Map;function n(e,n){if(null==e)return;const o=function(e){if(-1===e.indexOf("."))return null;let t=r.get(e);return void 0===t&&(t=Object.freeze(e.split(".")),r.set(e,t)),t}(n),i=e;return null===o?t(n)?void 0:i[n]:Object.prototype.hasOwnProperty.call(i,n)?i[n]:function(e,r){let n=e;for(let o=0;o<r.length;o++){if(null==n||"object"!=typeof n)return;const e=r[o];if(t(e))return;n=n[e]}return n}(i,o)}function o(t,r,o){return o?.valueAccessor?function(t,r,o=-1){if(!r.valueAccessor)return n(t,r.field);if("object"!=typeof t||null===t)return r.valueAccessor({row:t,column:r,rowIndex:o});const i=t,s=r.field;let a=e.get(i);if(a){const e=a.get(s);if(void 0!==e)return e.v}else a=/* @__PURE__ */new Map,e.set(i,a);const l=r.valueAccessor({row:t,column:r,rowIndex:o});return a.set(s,{v:l}),l}(t,o):n(t,r)}function i(e){return null==e||""===e||"number"==typeof e&&isNaN(e)}var s={sum:(e,t,r)=>{let n=0;for(let s=0;s<e.length;s++){const a=o(e[s],t,r);if(i(a))continue;const l=Number(a);isNaN(l)||(n+=l)}return n},avg:(e,t,r)=>{if(!e.length)return 0;let n=0,s=0;for(let a=0;a<e.length;a++){const l=o(e[a],t,r);if(i(l))continue;const c=Number(l);isNaN(c)||(n+=c,s++)}return s>0?n/s:0},count:e=>e.length,min:(e,t,r)=>{if(!e.length)return 0;let n=1/0;for(let s=0;s<e.length;s++){const a=o(e[s],t,r);if(i(a))continue;const l=Number(a);isNaN(l)||l<n&&(n=l)}return n===1/0?0:n},max:(e,t,r)=>{if(!e.length)return 0;let n=-1/0;for(let s=0;s<e.length;s++){const a=o(e[s],t,r);if(i(a))continue;const l=Number(a);isNaN(l)||l>n&&(n=l)}return n===-1/0?0:n},first:(e,t,r)=>e[0]?o(e[0],t,r):void 0,last:(e,t,r)=>e.length?o(e[e.length-1],t,r):void 0},a=/* @__PURE__ */new Map,l={register(e,t){a.set(e,t)},unregister(e){a.delete(e)},get(e){if(void 0!==e)return"function"==typeof e?e:a.get(e)??s[e]},run(e,t,r,n){const o=this.get(e);return o?o(t,r,n):void 0},has:e=>a.has(e)||e in s,list:()=>[...Object.keys(s),...a.keys()]};function c(e,t,r,n){const o=document.createElement("div");o.className="tbw-aggregation-cell tbw-aggregation-cell-full",o.style.gridColumn="1 / -1";const i="function"==typeof t.label?t.label(n,r):t.label;if(i){const e=document.createElement("span");e.className="tbw-aggregation-label",e.textContent=i,o.appendChild(e)}const s=function(e,t,r){const n=e.aggregators&&Object.keys(e.aggregators).length>0,o=e.cells&&Object.keys(e.cells).length>0;if(!n&&!o)return null;const i=document.createElement("span");i.className="tbw-aggregation-aggregates";for(const s of t){const{value:t,formatter:n}=g(e,s,r);if(null!=t){const e=document.createElement("span");e.className="tbw-aggregation-aggregate",e.setAttribute("data-field",s.field),e.textContent=`${s.header??s.field}: ${n?n(t,s.field,s):String(t)}`,i.appendChild(e)}}return i.children.length>0?i:null}(t,r,n);s&&o.appendChild(s),e.appendChild(o)}function d(e,t,r,n){for(const i of r){const r=document.createElement("div");r.className="tbw-aggregation-cell",r.setAttribute("data-field",i.field);const{value:o,formatter:s}=g(t,i,n);r.textContent=null!=o?s?s(o,i.field,i):String(o):"",e.appendChild(r)}const o="function"==typeof t.label?t.label(n,r):t.label;if(o){const t=document.createElement("span");t.className="tbw-aggregation-label",t.textContent=o,e.appendChild(t)}}function g(e,t,r){let n,o;const i=e.aggregators?.[t.field];if(i)if("object"==typeof(s=i)&&null!==s&&"aggFunc"in s){const e=l.get(i.aggFunc);e&&(n=e(r,t.field,t)),o=i.formatter}else{const e=l.get(i);e&&(n=e(r,t.field,t))}else if(e.cells&&Object.prototype.hasOwnProperty.call(e.cells,t.field)){const o=e.cells[t.field];n="function"==typeof o?o(r,t.field,t):o}var s;return{value:n,formatter:o}}function u(e,t,r,n,o){const i=r?.sourceRows,s=r?.rows,a=Array.isArray(i)?i.length:e.length,l=Array.isArray(s)?s.length:e.length,c=a>0?a:l;return{totalRows:c,filteredRows:o?.cachedResult?.length??(l<a?l:c),selectedRows:n?.selected?.size??0,columns:t,rows:e,grid:r}}function p(){return e=>{const t=document.createElement("span");return t.className="tbw-status-panel tbw-status-panel-row-count",t.textContent=`Total: ${e.totalRows} rows`,t}}function f(){return e=>{if(e.selectedRows<=0)return null;const t=document.createElement("span");return t.className="tbw-status-panel tbw-status-panel-selected-count",t.textContent=`Selected: ${e.selectedRows}`,t}}function h(){return e=>{if(e.filteredRows===e.totalRows)return null;const t=document.createElement("span");return t.className="tbw-status-panel tbw-status-panel-filtered-count",t.textContent=`Filtered: ${e.filteredRows}`,t}}function b(e){const t=document.createElement("div");return t.className="tbw-status-panel tbw-status-panel-custom",t.appendChild(e),t}var m=/* @__PURE__ */new WeakMap;function w(e,t,r){const n=Array.isArray(e.render)?e.render:[{zone:"left",render:e.render}],o=n.map(e=>e.render(t)??null);if(r){const e=m.get(r);if(e&&e.length===o.length&&e.every((e,t)=>e===o[t]))return r}const i=document.createElement("div");i.className="tbw-pinned-rows",i.setAttribute("role","presentation"),i.setAttribute("aria-live","polite"),e.id&&i.setAttribute("data-pinned-row-id",e.id);const s=document.createElement("div");s.className="tbw-pinned-rows-left";const a=document.createElement("div");a.className="tbw-pinned-rows-center";const l=document.createElement("div");l.className="tbw-pinned-rows-right";const c={left:s,center:a,right:l};for(let d=0;d<n.length;d++){const e=n[d],t=o[d];if(null==t)continue;const r=e.zone??"left",i=t.classList?.contains("tbw-status-panel");c[r].appendChild(i?t:b(t))}return 0===s.children.length&&0===a.children.length&&0===l.children.length?null:(i.appendChild(s),i.appendChild(a),i.appendChild(l),m.set(i,o),i)}function v(e,t,r,n,o=!1){const i=function(e){const t=document.createElement("div");return t.className=`tbw-aggregation-rows tbw-aggregation-rows-${e}`,t.setAttribute("role","presentation"),t}(t);return function(e,t,r,n,o=!1){e.innerHTML="";for(const i of t){const t=document.createElement("div");t.className="tbw-aggregation-row",t.setAttribute("role","presentation"),i.id&&t.setAttribute("data-aggregation-id",i.id),i.fullWidth??o?c(t,i,r,n):d(t,i,r,n),e.appendChild(t)}}(i,[e],r,n,o),i}var y={expand:"▶",collapse:"▼",sortAsc:"▲",sortDesc:"▼",sortNone:"⇅",submenuArrow:"▶",dragHandle:"⋮⋮",toolPanel:"☰",filter:"",filterActive:"",print:"🖨️"};function C(e,t){return`[tbw-grid${e?`#${e}`:""}${t?`:${t}`:""}]`}function x(e,t,r,n){return`${C(r,n)} ${e}: ${t}\n\n → More info: ${function(e){return`https://toolboxjs.com/grid/errors#${e.toLowerCase()}`}(e)}`}var E="__otorp__|__retteGenifed__|__retteSenifed__|rotcurtsnoc|wodniw|sihTlabolg|labolg|ssecorp|noitcnuF|tropmi|lave|tcelfeR|yxorP|rorrE|stnemugra|tnemucod|noitacol|eikooc|egarotSlacol|egarotSnoisses|BDdexedni|hctef|tseuqeRpttHLMX|tekcoSbeW|rekroW|rekroWderahS|rekroWecivreS|renepo|tnerap|pot|semarf|fles".split("|").map(e=>e.split("").reverse().join("")),W=(new RegExp(`__(proto|defineGetter|defineSetter)|${E.slice(3).join("|")}|this\\b`),new Set("script|iframe|object|embed|form|input|button|textarea|select|link|meta|base|style|template|slot|portal|frame|frameset|applet|noscript|noembed|plaintext|xmp|listing|math".split("|"))),S=/^on\w+$/i,N=new Set("href|src|action|formaction|data|srcdoc|xlink:href|poster|srcset".split("|")),A=/^\s*(javascript|vbscript|data|blob):/i;function R(e){const t=document.createElement("template");return e&&"string"==typeof e&&(t.innerHTML=e,function(e){const t=[],r=e.querySelectorAll("*");for(const n of r){const e=n.tagName.toLowerCase();if(W.has(e)){t.push(n);continue}if(("svg"===e||"http://www.w3.org/2000/svg"===n.namespaceURI)&&Array.from(n.attributes).some(e=>S.test(e.name)||"href"===e.name||"xlink:href"===e.name)){t.push(n);continue}const r=[];for(const t of n.attributes){const e=t.name.toLowerCase();S.test(e)?r.push(t.name):"is"!==e?(N.has(e)&&A.test(t.value)||"style"===e&&/expression\s*\(|javascript:|behavior\s*:/i.test(t.value))&&r.push(t.name):r.push(t.name)}r.forEach(e=>n.removeAttribute(e))}t.forEach(e=>e.remove())}(t.content)),t.content}var k=class{static dependencies;static manifest;aliases;version="3.6.0";styles;cellRenderers;headerRenderers;cellEditors;grid;config;userConfig;#e;get defaultConfig(){return{}}constructor(e={}){this.userConfig=e}get resolvedConfig(){return this.#e?this.config:{...this.defaultConfig,...this.userConfig}}mergeConfigsFrom(e){if(0===e.length)return;const t={...this.userConfig},r={};for(const n of Object.keys(t))r[n]=this;for(const n of e){const e=n.userConfig;for(const[o,i]of Object.entries(e)){if(void 0===i)continue;if(!(o in t)){t[o]=i,r[o]=n;continue}if(t[o]===i)continue;const e=r[o]?.constructor.name??this.constructor.name,s=n.constructor.name,a=x("TBW025",`Cannot merge plugin configs for "${this.name}": conflicting value for "${o}" supplied by both ${e} and ${s}. Pass the option on a single instance, or remove the duplicate.`,void 0,this.name);throw new Error(a)}}Object.assign(this.userConfig,t)}refreshUserConfigFrom(e){const t=this.userConfig,r={...e.userConfig};for(const n of Object.keys(t))delete t[n];Object.assign(t,r)}attach(e){this.#e?.abort(),this.#e=new AbortController,this.grid=e,this.config={...this.defaultConfig,...this.userConfig}}detach(){this.#e?.abort(),this.#e=void 0}getPlugin(e){return this.grid?.getPlugin(e)}emit(e,t){this.grid?.dispatchEvent?.(new CustomEvent(e,{detail:t,bubbles:!0}))}emitCancelable(e,t){const r=new CustomEvent(e,{detail:t,bubbles:!0,cancelable:!0});return this.grid?.dispatchEvent?.(r),r.defaultPrevented}on(e,t){this.grid?._pluginManager?.subscribe(this,e,t)}off(e){this.grid?._pluginManager?.unsubscribe(this,e)}emitPluginEvent(e,t){this.grid?._pluginManager?.emitPluginEvent(e,t)}broadcast(e,t){this.emitPluginEvent(e,t),this.emit(e,t)}queryBoolean(e,t=null){const r=this.grid?.query?.(e,t);return Array.isArray(r)?r.some(Boolean):!!r}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.#e?.signal??this.grid?.disconnectSignal}get gridIcons(){const e=this.grid?.gridConfig?.icons??{};return{...y,...e}}t(e,t){return this.grid?.effectiveConfig?.locale?.[e]??t}get translate(){return(e,t)=>this.t(e,t)}get isAnimationEnabled(){const e=this.grid?.effectiveConfig?.animation?.mode??"reduced-motion";if(!1===e||"off"===e)return!1;if(!0===e||"on"===e)return!0;const t=this.gridElement;return!t||"0"!==getComputedStyle(t).getPropertyValue("--tbw-animation-enabled").trim()}get animationDuration(){const e=this.gridElement;if(e){const t=getComputedStyle(e).getPropertyValue("--tbw-animation-duration").trim(),r=parseInt(t,10);if(!isNaN(r))return r}return 200}setIcon(e,t,r){e.dataset.icon=t.replace(/([A-Z])/g,"-$1").toLowerCase(),"collapse"===t?e.dataset.expanded="":"expand"===t&&delete e.dataset.expanded;const n=this.#t(t,r);var o,i;void 0!==n?"string"==typeof n?(o=e,(i=n)&&"string"==typeof i?-1!==i.indexOf("<")||-1!==i.indexOf("&")?o.replaceChildren(R(i)):o.textContent=i:o.replaceChildren()):n instanceof HTMLElement&&e.replaceChildren(n.cloneNode(!0)):e.innerHTML=""}#t(e,t){return void 0!==t?t:this.grid?.gridConfig?.icons?.[e]}updateSortIndicator(e,t){e.querySelector('[part~="sort-indicator"], .sort-indicator')?.remove();const r=document.createElement("span");r.setAttribute("part","sort-indicator"),r.className="sort-indicator",t?(e.setAttribute("aria-sort","asc"===t?"ascending":"descending"),e.setAttribute("data-sort",t),this.setIcon(r,"asc"===t?"sortAsc":"sortDesc")):(e.setAttribute("aria-sort","none"),e.removeAttribute("data-sort"),this.setIcon(r,"sortNone"));const n=e.querySelector(".tbw-filter-btn")??e.querySelector(".resize-handle");return n?e.insertBefore(r,n):e.appendChild(r),r}warn(e,t){void 0!==t?console.warn(x(e,t,this.gridElement.id,this.name)):console.warn(`${C(this.gridElement.id,this.name)} ${e}`)}throwDiagnostic(e,t){throw new Error(x(e,t,this.gridElement.id,this.name))}},j=class extends k{name="pinnedRows";styles="@layer tbw-plugins{.tbw-scroll-area{container-type:inline-size}.tbw-footer,.tbw-header-pinned{z-index:var(--tbw-z-layer-pinned-rows,20);background:var(--tbw-color-panel-bg);flex-shrink:0;min-width:fit-content}.tbw-pinned-rows{padding:var(--tbw-button-padding,var(--tbw-spacing-md,.5rem) var(--tbw-spacing-lg,.75rem));background:var(--tbw-pinned-rows-bg,var(--tbw-color-panel-bg));border-top:1px solid var(--tbw-pinned-rows-border,var(--tbw-color-border));font-size:var(--tbw-font-size-xs,.75rem);color:var(--tbw-pinned-rows-color,var(--tbw-color-fg-muted));box-sizing:border-box;justify-content:space-between;align-items:center;width:100cqi;min-width:0;min-height:32px;display:flex;position:sticky;left:0}.tbw-pinned-rows+.tbw-pinned-rows{border-top:0}.tbw-pinned-rows-left,.tbw-pinned-rows-center,.tbw-pinned-rows-right{align-items:center;gap:var(--tbw-spacing-xl,1rem);display:flex}.tbw-pinned-rows-left{justify-content:flex-start}.tbw-pinned-rows-center{flex:1;justify-content:center}.tbw-pinned-rows-right{justify-content:flex-end}.tbw-status-panel{white-space:nowrap}.tbw-aggregation-rows{background:var(--tbw-aggregation-bg,var(--tbw-color-header-bg));min-width:fit-content}.tbw-aggregation-rows-top{border-bottom:1px solid var(--tbw-aggregation-border,var(--tbw-color-border))}.tbw-aggregation-rows-bottom{border-top:1px solid var(--tbw-aggregation-border,var(--tbw-color-border))}.tbw-aggregation-row{grid-template-columns:var(--tbw-column-template);font-size:var(--tbw-aggregation-font-size,.8em);font-weight:var(--tbw-aggregation-font-weight,600);background:inherit;display:grid;position:relative}.tbw-aggregation-row>.tbw-aggregation-label{padding:var(--tbw-cell-padding,.125rem .5rem);background:inherit;z-index:1;pointer-events:none;grid-area:1/1;align-items:center;display:flex;position:sticky;left:0}.tbw-aggregation-row>.tbw-aggregation-cell:first-child{grid-area:1/1}.tbw-aggregation-cell:not(:empty){z-index:2;background:inherit;position:relative}.tbw-aggregation-cell{padding:var(--tbw-cell-padding,.125rem .5rem);min-height:var(--tbw-row-height,1.75rem);border-right:1px solid var(--tbw-color-border-cell);text-overflow:ellipsis;white-space:var(--tbw-cell-white-space,nowrap);align-content:center;align-items:center;display:block;overflow:hidden}.tbw-aggregation-cell:last-child{border-right:0}.tbw-aggregation-cell-full{align-items:center;gap:var(--tbw-spacing-lg,.75rem);border-right:0;grid-column:1/-1;display:flex}.tbw-aggregation-label{white-space:nowrap}.tbw-aggregation-aggregates{align-items:center;gap:var(--tbw-spacing-lg,.75rem);opacity:.85;font-weight:400;display:flex}.tbw-aggregation-aggregate{white-space:nowrap}}";get defaultConfig(){return{slots:[{position:"bottom",render:[{zone:"left",render:p()},{zone:"left",render:h()},{zone:"right",render:f()}]}]}}footerWrapper=null;headerWrapper=null;detach(){this.cleanup()}afterRender(){const e=this.gridElement;if(!e)return;const t=e.querySelector(".tbw-scroll-area")??e.querySelector(".tbw-grid-content")??e.querySelector(".tbw-grid-root");if(!t)return;this.footerWrapper&&!t.contains(this.footerWrapper)&&(this.footerWrapper=null),this.headerWrapper&&!t.contains(this.headerWrapper)&&(this.headerWrapper=null);const r=this.getSelectionState(),n=this.getFilterState(),o=u(this.sourceRows,this.columns,this.gridElement,r,n);this.renderSlotMode(t,e,o)}renderSlotMode(e,t,r){const n=this.config.slots??[],o=n.filter(e=>"top"===e.position),i=n.filter(e=>"top"!==e.position);o.length>0?(this.headerWrapper||(this.headerWrapper=document.createElement("div"),this.headerWrapper.className="tbw-header-pinned",e.insertBefore(this.headerWrapper,e.firstChild)),this.populateSlotWrapper(this.headerWrapper,o,"top",r)):this.headerWrapper&&(this.headerWrapper.remove(),this.headerWrapper=null),i.length>0?(this.footerWrapper||(this.footerWrapper=document.createElement("div"),this.footerWrapper.className="tbw-footer",e.appendChild(this.footerWrapper)),this.populateSlotWrapper(this.footerWrapper,i,"bottom",r)):this.footerWrapper&&(this.footerWrapper.remove(),this.footerWrapper=null)}populateSlotWrapper(e,t,r,n){const o=/* @__PURE__ */new Map;for(let a=0;a<e.children.length;a++){const t=e.children[a],r=t.getAttribute("data-pinned-row-id");r&&o.set(r,t)}const i=[];for(const a of t){const e="render"in a&&null!=a.render?w(a,n,a.id?o.get(a.id)??null:null):v(a,r,this.visibleColumns,this.sourceRows,this.config.fullWidth);e&&i.push(e)}const s=e.children;if(s.length===i.length){let e=!0;for(let t=0;t<i.length;t++)if(s[t]!==i[t]){e=!1;break}if(e)return}e.replaceChildren(...i)}cleanup(){this.footerWrapper&&(this.footerWrapper.remove(),this.footerWrapper=null),this.headerWrapper&&(this.headerWrapper.remove(),this.headerWrapper=null)}getSelectionState(){try{return this.grid?.getPluginState?.("selection")??null}catch{return null}}getFilterState(){try{return this.grid?.getPluginState?.("filtering")??null}catch{return null}}refresh(){this.requestRender()}getContext(){const e=this.getSelectionState(),t=this.getFilterState();return u(this.rows,this.columns,this.gridElement,e,t)}};export{j as PinnedRowsPlugin,h as filteredCountPanel,p as rowCountPanel,f as selectedCountPanel};
|
|
1
|
+
var e=/* @__PURE__ */new WeakMap;function t(e){return"__proto__"===e||"constructor"===e||"prototype"===e}var r=/* @__PURE__ */new Map;function n(e,n){if(null==e)return;const o=function(e){if(-1===e.indexOf("."))return null;let t=r.get(e);return void 0===t&&(t=Object.freeze(e.split(".")),r.set(e,t)),t}(n),i=e;return null===o?t(n)?void 0:i[n]:Object.prototype.hasOwnProperty.call(i,n)?i[n]:function(e,r){let n=e;for(let o=0;o<r.length;o++){if(null==n||"object"!=typeof n)return;const e=r[o];if(t(e))return;n=n[e]}return n}(i,o)}function o(t,r,o){return o?.valueAccessor?function(t,r,o=-1){if(!r.valueAccessor)return n(t,r.field);if("object"!=typeof t||null===t)return r.valueAccessor({row:t,column:r,rowIndex:o});const i=t,s=r.field;let a=e.get(i);if(a){const e=a.get(s);if(void 0!==e)return e.v}else a=/* @__PURE__ */new Map,e.set(i,a);const l=r.valueAccessor({row:t,column:r,rowIndex:o});return a.set(s,{v:l}),l}(t,o):n(t,r)}function i(e){return null==e||""===e||"number"==typeof e&&isNaN(e)}var s={sum:(e,t,r)=>{let n=0;for(let s=0;s<e.length;s++){const a=o(e[s],t,r);if(i(a))continue;const l=Number(a);isNaN(l)||(n+=l)}return n},avg:(e,t,r)=>{if(!e.length)return 0;let n=0,s=0;for(let a=0;a<e.length;a++){const l=o(e[a],t,r);if(i(l))continue;const c=Number(l);isNaN(c)||(n+=c,s++)}return s>0?n/s:0},count:e=>e.length,min:(e,t,r)=>{if(!e.length)return 0;let n=1/0;for(let s=0;s<e.length;s++){const a=o(e[s],t,r);if(i(a))continue;const l=Number(a);isNaN(l)||l<n&&(n=l)}return n===1/0?0:n},max:(e,t,r)=>{if(!e.length)return 0;let n=-1/0;for(let s=0;s<e.length;s++){const a=o(e[s],t,r);if(i(a))continue;const l=Number(a);isNaN(l)||l>n&&(n=l)}return n===-1/0?0:n},first:(e,t,r)=>e[0]?o(e[0],t,r):void 0,last:(e,t,r)=>e.length?o(e[e.length-1],t,r):void 0},a=/* @__PURE__ */new Map,l={register(e,t){a.set(e,t)},unregister(e){a.delete(e)},get(e){if(void 0!==e)return"function"==typeof e?e:a.get(e)??s[e]},run(e,t,r,n){const o=this.get(e);return o?o(t,r,n):void 0},has:e=>a.has(e)||e in s,list:()=>[...Object.keys(s),...a.keys()]};function c(e,t,r,n){const o=document.createElement("div");o.className="tbw-aggregation-cell tbw-aggregation-cell-full",o.style.gridColumn="1 / -1";const i="function"==typeof t.label?t.label(n,r):t.label;if(i){const e=document.createElement("span");e.className="tbw-aggregation-label",e.textContent=i,o.appendChild(e)}const s=function(e,t,r){const n=e.aggregators&&Object.keys(e.aggregators).length>0,o=e.cells&&Object.keys(e.cells).length>0;if(!n&&!o)return null;const i=document.createElement("span");i.className="tbw-aggregation-aggregates";for(const s of t){const{value:t,formatter:n}=g(e,s,r);if(null!=t){const e=document.createElement("span");e.className="tbw-aggregation-aggregate",e.setAttribute("data-field",s.field),e.textContent=`${s.header??s.field}: ${n?n(t,s.field,s):String(t)}`,i.appendChild(e)}}return i.children.length>0?i:null}(t,r,n);s&&o.appendChild(s),e.appendChild(o)}function d(e,t,r,n){for(const i of r){const r=document.createElement("div");r.className="tbw-aggregation-cell",r.setAttribute("data-field",i.field);const{value:o,formatter:s}=g(t,i,n);r.textContent=null!=o?s?s(o,i.field,i):String(o):"",e.appendChild(r)}const o="function"==typeof t.label?t.label(n,r):t.label;if(o){const t=document.createElement("span");t.className="tbw-aggregation-label",t.textContent=o,e.appendChild(t)}}function g(e,t,r){let n,o;const i=e.aggregators?.[t.field];if(i)if("object"==typeof(s=i)&&null!==s&&"aggFunc"in s){const e=l.get(i.aggFunc);e&&(n=e(r,t.field,t)),o=i.formatter}else{const e=l.get(i);e&&(n=e(r,t.field,t))}else if(e.cells&&Object.prototype.hasOwnProperty.call(e.cells,t.field)){const o=e.cells[t.field];n="function"==typeof o?o(r,t.field,t):o}var s;return{value:n,formatter:o}}function u(e,t,r,n,o){const i=r?.sourceRows,s=r?.rows,a=Array.isArray(i)?i.length:e.length,l=Array.isArray(s)?s.length:e.length,c=a>0?a:l;return{totalRows:c,filteredRows:o?.cachedResult?.length??(l<a?l:c),selectedRows:n?.selected?.size??0,columns:t,rows:e,grid:r}}function p(){return e=>{const t=document.createElement("span");return t.className="tbw-status-panel tbw-status-panel-row-count",t.textContent=`Total: ${e.totalRows} rows`,t}}function f(){return e=>{if(e.selectedRows<=0)return null;const t=document.createElement("span");return t.className="tbw-status-panel tbw-status-panel-selected-count",t.textContent=`Selected: ${e.selectedRows}`,t}}function h(){return e=>{if(e.filteredRows===e.totalRows)return null;const t=document.createElement("span");return t.className="tbw-status-panel tbw-status-panel-filtered-count",t.textContent=`Filtered: ${e.filteredRows}`,t}}function b(e){const t=document.createElement("div");return t.className="tbw-status-panel tbw-status-panel-custom",t.appendChild(e),t}var m=/* @__PURE__ */new WeakMap;function w(e,t,r){const n=Array.isArray(e.render)?e.render:[{zone:"left",render:e.render}],o=n.map(e=>e.render(t)??null);if(r){const e=m.get(r);if(e&&e.length===o.length&&e.every((e,t)=>e===o[t]))return r}const i=document.createElement("div");i.className="tbw-pinned-rows",i.setAttribute("role","presentation"),i.setAttribute("aria-live","polite"),e.id&&i.setAttribute("data-pinned-row-id",e.id);const s=document.createElement("div");s.className="tbw-pinned-rows-left";const a=document.createElement("div");a.className="tbw-pinned-rows-center";const l=document.createElement("div");l.className="tbw-pinned-rows-right";const c={left:s,center:a,right:l};for(let d=0;d<n.length;d++){const e=n[d],t=o[d];if(null==t)continue;const r=e.zone??"left",i=t.classList?.contains("tbw-status-panel");c[r].appendChild(i?t:b(t))}return 0===s.children.length&&0===a.children.length&&0===l.children.length?null:(i.appendChild(s),i.appendChild(a),i.appendChild(l),m.set(i,o),i)}function v(e,t,r,n,o=!1){const i=function(e){const t=document.createElement("div");return t.className=`tbw-aggregation-rows tbw-aggregation-rows-${e}`,t.setAttribute("role","presentation"),t}(t);return function(e,t,r,n,o=!1){e.innerHTML="";for(const i of t){const t=document.createElement("div");t.className="tbw-aggregation-row",t.setAttribute("role","presentation"),i.id&&t.setAttribute("data-aggregation-id",i.id),i.fullWidth??o?c(t,i,r,n):d(t,i,r,n),e.appendChild(t)}}(i,[e],r,n,o),i}var y={expand:"▶",collapse:"▼",sortAsc:"▲",sortDesc:"▼",sortNone:"⇅",submenuArrow:"▶",dragHandle:"⋮⋮",toolPanel:"☰",filter:"",filterActive:"",print:"🖨️"};function C(e,t){return`[tbw-grid${e?`#${e}`:""}${t?`:${t}`:""}]`}function x(e,t,r,n){return`${C(r,n)} ${e}: ${t}\n\n → More info: ${function(e){return`https://toolboxjs.com/grid/errors#${e.toLowerCase()}`}(e)}`}var E="__otorp__|__retteGenifed__|__retteSenifed__|rotcurtsnoc|wodniw|sihTlabolg|labolg|ssecorp|noitcnuF|tropmi|lave|tcelfeR|yxorP|rorrE|stnemugra|tnemucod|noitacol|eikooc|egarotSlacol|egarotSnoisses|BDdexedni|hctef|tseuqeRpttHLMX|tekcoSbeW|rekroW|rekroWderahS|rekroWecivreS|renepo|tnerap|pot|semarf|fles".split("|").map(e=>e.split("").reverse().join("")),W=(new RegExp(`__(proto|defineGetter|defineSetter)|${E.slice(3).join("|")}|this\\b`),new Set("script|iframe|object|embed|form|input|button|textarea|select|link|meta|base|style|template|slot|portal|frame|frameset|applet|noscript|noembed|plaintext|xmp|listing|math".split("|"))),S=/^on\w+$/i,N=new Set("href|src|action|formaction|data|srcdoc|xlink:href|poster|srcset".split("|")),A=/^\s*(javascript|vbscript|data|blob):/i;function R(e){const t=document.createElement("template");return e&&"string"==typeof e&&(t.innerHTML=e,function(e){const t=[],r=e.querySelectorAll("*");for(const n of r){const e=n.tagName.toLowerCase();if(W.has(e)){t.push(n);continue}if(("svg"===e||"http://www.w3.org/2000/svg"===n.namespaceURI)&&Array.from(n.attributes).some(e=>S.test(e.name)||"href"===e.name||"xlink:href"===e.name)){t.push(n);continue}const r=[];for(const t of n.attributes){const e=t.name.toLowerCase();S.test(e)?r.push(t.name):"is"!==e?(N.has(e)&&A.test(t.value)||"style"===e&&/expression\s*\(|javascript:|behavior\s*:/i.test(t.value))&&r.push(t.name):r.push(t.name)}r.forEach(e=>n.removeAttribute(e))}t.forEach(e=>e.remove())}(t.content)),t.content}var k=class{static dependencies;static manifest;aliases;version="3.7.0";styles;cellRenderers;headerRenderers;cellEditors;grid;config;userConfig;#e;get defaultConfig(){return{}}constructor(e={}){this.userConfig=e}get resolvedConfig(){return this.#e?this.config:{...this.defaultConfig,...this.userConfig}}mergeConfigsFrom(e){if(0===e.length)return;const t={...this.userConfig},r={};for(const n of Object.keys(t))r[n]=this;for(const n of e){const e=n.userConfig;for(const[o,i]of Object.entries(e)){if(void 0===i)continue;if(!(o in t)){t[o]=i,r[o]=n;continue}if(t[o]===i)continue;const e=r[o]?.constructor.name??this.constructor.name,s=n.constructor.name,a=x("TBW025",`Cannot merge plugin configs for "${this.name}": conflicting value for "${o}" supplied by both ${e} and ${s}. Pass the option on a single instance, or remove the duplicate.`,void 0,this.name);throw new Error(a)}}Object.assign(this.userConfig,t)}refreshUserConfigFrom(e){const t=this.userConfig,r={...e.userConfig};for(const n of Object.keys(t))delete t[n];Object.assign(t,r)}attach(e){this.#e?.abort(),this.#e=new AbortController,this.grid=e,this.config={...this.defaultConfig,...this.userConfig}}detach(){this.#e?.abort(),this.#e=void 0}getPlugin(e){return this.grid?.getPlugin(e)}emit(e,t){this.grid?.dispatchEvent?.(new CustomEvent(e,{detail:t,bubbles:!0}))}emitCancelable(e,t){const r=new CustomEvent(e,{detail:t,bubbles:!0,cancelable:!0});return this.grid?.dispatchEvent?.(r),r.defaultPrevented}on(e,t){this.grid?._pluginManager?.subscribe(this,e,t)}off(e){this.grid?._pluginManager?.unsubscribe(this,e)}emitPluginEvent(e,t){this.grid?._pluginManager?.emitPluginEvent(e,t)}broadcast(e,t){this.emitPluginEvent(e,t),this.emit(e,t)}queryBoolean(e,t=null){const r=this.grid?.query?.(e,t);return Array.isArray(r)?r.some(Boolean):!!r}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.#e?.signal??this.grid?.disconnectSignal}get gridIcons(){const e=this.grid?.gridConfig?.icons??{};return{...y,...e}}t(e,t){return this.grid?.effectiveConfig?.locale?.[e]??t}get translate(){return(e,t)=>this.t(e,t)}get isAnimationEnabled(){const e=this.grid?.effectiveConfig?.animation?.mode??"reduced-motion";if(!1===e||"off"===e)return!1;if(!0===e||"on"===e)return!0;const t=this.gridElement;return!t||"0"!==getComputedStyle(t).getPropertyValue("--tbw-animation-enabled").trim()}get animationDuration(){const e=this.gridElement;if(e){const t=getComputedStyle(e).getPropertyValue("--tbw-animation-duration").trim(),r=parseInt(t,10);if(!isNaN(r))return r}return 200}setIcon(e,t,r){e.dataset.icon=t.replace(/([A-Z])/g,"-$1").toLowerCase(),"collapse"===t?e.dataset.expanded="":"expand"===t&&delete e.dataset.expanded;const n=this.#t(t,r);var o,i;void 0!==n?"string"==typeof n?(o=e,(i=n)&&"string"==typeof i?-1!==i.indexOf("<")||-1!==i.indexOf("&")?o.replaceChildren(R(i)):o.textContent=i:o.replaceChildren()):n instanceof HTMLElement&&e.replaceChildren(n.cloneNode(!0)):e.innerHTML=""}#t(e,t){return void 0!==t?t:this.grid?.gridConfig?.icons?.[e]}updateSortIndicator(e,t){e.querySelector('[part~="sort-indicator"], .sort-indicator')?.remove();const r=document.createElement("span");r.setAttribute("part","sort-indicator"),r.className="sort-indicator",t?(e.setAttribute("aria-sort","asc"===t?"ascending":"descending"),e.setAttribute("data-sort",t),this.setIcon(r,"asc"===t?"sortAsc":"sortDesc")):(e.setAttribute("aria-sort","none"),e.removeAttribute("data-sort"),this.setIcon(r,"sortNone"));const n=e.querySelector(".tbw-filter-btn")??e.querySelector(".resize-handle");return n?e.insertBefore(r,n):e.appendChild(r),r}warn(e,t){void 0!==t?console.warn(x(e,t,this.gridElement.id,this.name)):console.warn(`${C(this.gridElement.id,this.name)} ${e}`)}throwDiagnostic(e,t){throw new Error(x(e,t,this.gridElement.id,this.name))}},j=class extends k{name="pinnedRows";styles="@layer tbw-plugins{.tbw-scroll-area{container-type:inline-size}.tbw-footer,.tbw-header-pinned{z-index:var(--tbw-z-layer-pinned-rows,20);background:var(--tbw-color-panel-bg);flex-shrink:0;min-width:fit-content}.tbw-pinned-rows{padding:var(--tbw-button-padding,var(--tbw-spacing-md,.5rem) var(--tbw-spacing-lg,.75rem));background:var(--tbw-pinned-rows-bg,var(--tbw-color-panel-bg));border-top:1px solid var(--tbw-pinned-rows-border,var(--tbw-color-border));font-size:var(--tbw-font-size-xs,.75rem);color:var(--tbw-pinned-rows-color,var(--tbw-color-fg-muted));box-sizing:border-box;justify-content:space-between;align-items:center;width:100cqi;min-width:0;min-height:32px;display:flex;position:sticky;left:0}.tbw-pinned-rows+.tbw-pinned-rows{border-top:0}.tbw-pinned-rows-left,.tbw-pinned-rows-center,.tbw-pinned-rows-right{align-items:center;gap:var(--tbw-spacing-xl,1rem);display:flex}.tbw-pinned-rows-left{justify-content:flex-start}.tbw-pinned-rows-center{flex:1;justify-content:center}.tbw-pinned-rows-right{justify-content:flex-end}.tbw-status-panel{white-space:nowrap}.tbw-aggregation-rows{background:var(--tbw-aggregation-bg,var(--tbw-color-header-bg));min-width:fit-content}.tbw-aggregation-rows-top{border-bottom:1px solid var(--tbw-aggregation-border,var(--tbw-color-border))}.tbw-aggregation-rows-bottom{border-top:1px solid var(--tbw-aggregation-border,var(--tbw-color-border))}.tbw-aggregation-row{grid-template-columns:var(--tbw-column-template);font-size:var(--tbw-aggregation-font-size,.8em);font-weight:var(--tbw-aggregation-font-weight,600);background:inherit;display:grid;position:relative}.tbw-aggregation-row>.tbw-aggregation-label{padding:var(--tbw-cell-padding,.125rem .5rem);background:inherit;z-index:1;pointer-events:none;grid-area:1/1;align-items:center;display:flex;position:sticky;left:0}.tbw-aggregation-row>.tbw-aggregation-cell:first-child{grid-area:1/1}.tbw-aggregation-cell:not(:empty){z-index:2;background:inherit;position:relative}.tbw-aggregation-cell{padding:var(--tbw-cell-padding,.125rem .5rem);min-height:var(--tbw-row-height,1.75rem);border-right:1px solid var(--tbw-color-border-cell);text-overflow:ellipsis;white-space:var(--tbw-cell-white-space,nowrap);align-content:center;align-items:center;display:block;overflow:hidden}.tbw-aggregation-cell:last-child{border-right:0}.tbw-aggregation-cell-full{align-items:center;gap:var(--tbw-spacing-lg,.75rem);border-right:0;grid-column:1/-1;display:flex}.tbw-aggregation-label{white-space:nowrap}.tbw-aggregation-aggregates{align-items:center;gap:var(--tbw-spacing-lg,.75rem);opacity:.85;font-weight:400;display:flex}.tbw-aggregation-aggregate{white-space:nowrap}}";get defaultConfig(){return{slots:[{position:"bottom",render:[{zone:"left",render:p()},{zone:"left",render:h()},{zone:"right",render:f()}]}]}}footerWrapper=null;headerWrapper=null;detach(){this.cleanup()}afterRender(){const e=this.gridElement;if(!e)return;const t=e.querySelector(".tbw-scroll-area")??e.querySelector(".tbw-grid-content")??e.querySelector(".tbw-grid-root");if(!t)return;this.footerWrapper&&!t.contains(this.footerWrapper)&&(this.footerWrapper=null),this.headerWrapper&&!t.contains(this.headerWrapper)&&(this.headerWrapper=null);const r=this.getSelectionState(),n=this.getFilterState(),o=u(this.sourceRows,this.columns,this.gridElement,r,n);this.renderSlotMode(t,e,o)}renderSlotMode(e,t,r){const n=this.config.slots??[],o=n.filter(e=>"top"===e.position),i=n.filter(e=>"top"!==e.position);o.length>0?(this.headerWrapper||(this.headerWrapper=document.createElement("div"),this.headerWrapper.className="tbw-header-pinned",e.insertBefore(this.headerWrapper,e.firstChild)),this.populateSlotWrapper(this.headerWrapper,o,"top",r)):this.headerWrapper&&(this.headerWrapper.remove(),this.headerWrapper=null),i.length>0?(this.footerWrapper||(this.footerWrapper=document.createElement("div"),this.footerWrapper.className="tbw-footer",e.appendChild(this.footerWrapper)),this.populateSlotWrapper(this.footerWrapper,i,"bottom",r)):this.footerWrapper&&(this.footerWrapper.remove(),this.footerWrapper=null)}populateSlotWrapper(e,t,r,n){const o=/* @__PURE__ */new Map;for(let a=0;a<e.children.length;a++){const t=e.children[a],r=t.getAttribute("data-pinned-row-id");r&&o.set(r,t)}const i=[];for(const a of t){const e="render"in a&&null!=a.render?w(a,n,a.id?o.get(a.id)??null:null):v(a,r,this.visibleColumns,this.sourceRows,this.config.fullWidth);e&&i.push(e)}const s=e.children;if(s.length===i.length){let e=!0;for(let t=0;t<i.length;t++)if(s[t]!==i[t]){e=!1;break}if(e)return}e.replaceChildren(...i)}cleanup(){this.footerWrapper&&(this.footerWrapper.remove(),this.footerWrapper=null),this.headerWrapper&&(this.headerWrapper.remove(),this.headerWrapper=null)}getSelectionState(){try{return this.grid?.getPluginState?.("selection")??null}catch{return null}}getFilterState(){try{return this.grid?.getPluginState?.("filtering")??null}catch{return null}}refresh(){this.requestRender()}getContext(){const e=this.getSelectionState(),t=this.getFilterState();return u(this.rows,this.columns,this.gridElement,e,t)}};export{j as PinnedRowsPlugin,h as filteredCountPanel,p as rowCountPanel,f as selectedCountPanel};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|