@aquera/nile-elements 1.1.3-beta-1.4 → 1.1.3-beta-2.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.
Files changed (98) hide show
  1. package/demo/index.html +124 -24
  2. package/dist/index.js +728 -770
  3. package/dist/nile-grid/nile-grid.cjs.js +1 -1
  4. package/dist/nile-grid/nile-grid.cjs.js.map +1 -1
  5. package/dist/nile-grid/nile-grid.css.cjs.js +1 -1
  6. package/dist/nile-grid/nile-grid.css.cjs.js.map +1 -1
  7. package/dist/nile-grid/nile-grid.css.esm.js +4 -8
  8. package/dist/nile-grid/nile-grid.esm.js +6 -6
  9. package/dist/nile-grid/nile-grid.utils.cjs.js +1 -1
  10. package/dist/nile-grid/nile-grid.utils.cjs.js.map +1 -1
  11. package/dist/nile-grid/nile-grid.utils.esm.js +1 -1
  12. package/dist/nile-grid-body/nile-grid-body.cjs.js +1 -1
  13. package/dist/nile-grid-body/nile-grid-body.cjs.js.map +1 -1
  14. package/dist/nile-grid-body/nile-grid-body.css.cjs.js +1 -1
  15. package/dist/nile-grid-body/nile-grid-body.css.cjs.js.map +1 -1
  16. package/dist/nile-grid-body/nile-grid-body.css.esm.js +4 -0
  17. package/dist/nile-grid-body/nile-grid-body.esm.js +3 -3
  18. package/dist/nile-grid-cell-item/nile-grid-cell-item.cjs.js +1 -1
  19. package/dist/nile-grid-cell-item/nile-grid-cell-item.cjs.js.map +1 -1
  20. package/dist/nile-grid-cell-item/nile-grid-cell-item.css.cjs.js +1 -1
  21. package/dist/nile-grid-cell-item/nile-grid-cell-item.css.cjs.js.map +1 -1
  22. package/dist/nile-grid-cell-item/nile-grid-cell-item.css.esm.js +3 -18
  23. package/dist/nile-grid-cell-item/nile-grid-cell-item.esm.js +3 -3
  24. package/dist/nile-grid-head/nile-grid-head.cjs.js +1 -1
  25. package/dist/nile-grid-head/nile-grid-head.cjs.js.map +1 -1
  26. package/dist/nile-grid-head/nile-grid-head.css.cjs.js +1 -1
  27. package/dist/nile-grid-head/nile-grid-head.css.cjs.js.map +1 -1
  28. package/dist/nile-grid-head/nile-grid-head.css.esm.js +1 -1
  29. package/dist/nile-grid-head/nile-grid-head.esm.js +3 -3
  30. package/dist/nile-grid-head-item/nile-grid-head-item.cjs.js +1 -1
  31. package/dist/nile-grid-head-item/nile-grid-head-item.cjs.js.map +1 -1
  32. package/dist/nile-grid-head-item/nile-grid-head-item.css.cjs.js +1 -1
  33. package/dist/nile-grid-head-item/nile-grid-head-item.css.cjs.js.map +1 -1
  34. package/dist/nile-grid-head-item/nile-grid-head-item.css.esm.js +5 -20
  35. package/dist/nile-grid-head-item/nile-grid-head-item.esm.js +3 -4
  36. package/dist/nile-grid-row/nile-grid-row.cjs.js +1 -1
  37. package/dist/nile-grid-row/nile-grid-row.cjs.js.map +1 -1
  38. package/dist/nile-grid-row/nile-grid-row.css.cjs.js +1 -1
  39. package/dist/nile-grid-row/nile-grid-row.css.cjs.js.map +1 -1
  40. package/dist/nile-grid-row/nile-grid-row.css.esm.js +5 -17
  41. package/dist/nile-grid-row/nile-grid-row.esm.js +5 -4
  42. package/dist/nile-virtual-select/nile-virtual-select.cjs.js +2 -2
  43. package/dist/nile-virtual-select/nile-virtual-select.cjs.js.map +1 -1
  44. package/dist/nile-virtual-select/nile-virtual-select.esm.js +7 -6
  45. package/dist/src/nile-grid/nile-grid.css.js +2 -6
  46. package/dist/src/nile-grid/nile-grid.css.js.map +1 -1
  47. package/dist/src/nile-grid/nile-grid.d.ts +3 -9
  48. package/dist/src/nile-grid/nile-grid.js +20 -96
  49. package/dist/src/nile-grid/nile-grid.js.map +1 -1
  50. package/dist/src/nile-grid/nile-grid.utils.d.ts +2 -3
  51. package/dist/src/nile-grid/nile-grid.utils.js +81 -223
  52. package/dist/src/nile-grid/nile-grid.utils.js.map +1 -1
  53. package/dist/src/nile-grid-body/nile-grid-body.css.js +4 -0
  54. package/dist/src/nile-grid-body/nile-grid-body.css.js.map +1 -1
  55. package/dist/src/nile-grid-body/nile-grid-body.js +1 -1
  56. package/dist/src/nile-grid-body/nile-grid-body.js.map +1 -1
  57. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.css.js +2 -17
  58. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.css.js.map +1 -1
  59. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.d.ts +3 -0
  60. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.js +11 -1
  61. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.js.map +1 -1
  62. package/dist/src/nile-grid-head/nile-grid-head.css.js +1 -1
  63. package/dist/src/nile-grid-head/nile-grid-head.css.js.map +1 -1
  64. package/dist/src/nile-grid-head/nile-grid-head.js +1 -1
  65. package/dist/src/nile-grid-head/nile-grid-head.js.map +1 -1
  66. package/dist/src/nile-grid-head-item/nile-grid-head-item.css.js +3 -18
  67. package/dist/src/nile-grid-head-item/nile-grid-head-item.css.js.map +1 -1
  68. package/dist/src/nile-grid-head-item/nile-grid-head-item.d.ts +2 -3
  69. package/dist/src/nile-grid-head-item/nile-grid-head-item.js +11 -14
  70. package/dist/src/nile-grid-head-item/nile-grid-head-item.js.map +1 -1
  71. package/dist/src/nile-grid-row/nile-grid-row.css.js +5 -17
  72. package/dist/src/nile-grid-row/nile-grid-row.css.js.map +1 -1
  73. package/dist/src/nile-grid-row/nile-grid-row.d.ts +1 -4
  74. package/dist/src/nile-grid-row/nile-grid-row.js +4 -19
  75. package/dist/src/nile-grid-row/nile-grid-row.js.map +1 -1
  76. package/dist/src/nile-virtual-select/nile-virtual-select.d.ts +18 -0
  77. package/dist/src/nile-virtual-select/nile-virtual-select.js +230 -3
  78. package/dist/src/nile-virtual-select/nile-virtual-select.js.map +1 -1
  79. package/dist/src/version.js +1 -1
  80. package/dist/src/version.js.map +1 -1
  81. package/dist/tsconfig.tsbuildinfo +1 -1
  82. package/package.json +1 -1
  83. package/src/nile-grid/nile-grid.css.ts +2 -6
  84. package/src/nile-grid/nile-grid.ts +21 -124
  85. package/src/nile-grid/nile-grid.utils.ts +98 -353
  86. package/src/nile-grid-body/nile-grid-body.css.ts +4 -0
  87. package/src/nile-grid-body/nile-grid-body.ts +2 -2
  88. package/src/nile-grid-cell-item/nile-grid-cell-item.css.ts +2 -17
  89. package/src/nile-grid-cell-item/nile-grid-cell-item.ts +11 -3
  90. package/src/nile-grid-head/nile-grid-head.css.ts +1 -1
  91. package/src/nile-grid-head/nile-grid-head.ts +2 -2
  92. package/src/nile-grid-head-item/nile-grid-head-item.css.ts +3 -18
  93. package/src/nile-grid-head-item/nile-grid-head-item.ts +16 -8
  94. package/src/nile-grid-row/nile-grid-row.css.ts +5 -17
  95. package/src/nile-grid-row/nile-grid-row.ts +6 -9
  96. package/src/nile-virtual-select/nile-virtual-select.ts +257 -3
  97. package/vscode-html-custom-data.json +69 -37
  98. package/src/nile-grid/nile-grid.types.ts +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"nile-grid.js","sourceRoot":"","sources":["../../../src/nile-grid/nile-grid.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright Aquera Inc 2025\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { html, CSSResultArray, TemplateResult } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { styles } from './nile-grid.css';\nimport NileElement from '../internal/nile-element';\nimport {\n resizeLinesHandler,\n listenToEventListeners,\n removeEventListeners,\n getHead,\n getBody,\n rebuildTemplate,\n applyTemplate,\n layout,\n applyColumnsTemplate,\n} from './nile-grid.utils';\n\n/**\n * Nile grid component.\n *\n * @tag nile-grid\n *\n */\n@customElement('nile-grid')\nexport class NileGrid extends NileElement {\n /**\n * The styles for nile-grid\n * @remarks If you are extending this class you can extend the base styles with super. Eg `return [super(), myCustomStyles]`\n */\n public static get styles(): CSSResultArray {\n return [styles];\n }\n\n /** To set the grid template columns in rebuildTemplate method */\n @state() public colTemplate = '';\n\n /** To store the column widths in the beginning and after resizing */\n @state() public columnWidths: number[] = [];\n\n /** To get the slot element */\n @query('slot') private slotEl!: HTMLSlotElement;\n\n /** To get the first resize line to show the resize handle */\n @query('.nile-resize-start') resizeStart: HTMLElement;\n\n /** To get the last resize line to show the resize handle */\n @query('.nile-resize-end') resizeEnd: HTMLElement;\n\n /** To enable horizontal scrolling when user is resizing */\n @property({ type: Boolean, attribute: true, reflect: true })\n enableResizeScroll: boolean = false;\n\n /** To store the mutation observer */\n private mo?: MutationObserver;\n\n /** To store the resize observer */\n private resizeObserver?: ResizeObserver;\n\n /** To store the request animation frame */\n private raf = 0;\n\n /** To store the sticky index's */\n @state() public stickyLeftIndexes: number[] = [];\n\n /** To store the sticky index's */\n @state() public stickyRightIndexes: number[] = [];\n\n private scheduleLayout() {\n if (this.raf) cancelAnimationFrame(this.raf);\n this.raf = requestAnimationFrame(() => {\n this.raf = 0;\n layout(\n this,\n this.slotEl,\n this.ensureWidths.bind(this),\n rebuildTemplate,\n applyTemplate,\n this.stickyLeftIndexes,\n this.stickyRightIndexes\n );\n });\n }\n\n private ensureWidths(colCount: number) {\n if (this.columnWidths.length !== colCount) {\n this.columnWidths = Array(colCount).fill('');\n }\n }\n\n private onResize = (e: Event) => {\n const { col, widthPx } = (e as CustomEvent).detail as {\n col: number;\n widthPx: number;\n };\n\n const floor = 60;\n const tgt = e.target as HTMLElement;\n const hasSpan =\n !!tgt.getAttribute('colspan') &&\n parseInt(tgt.getAttribute('colspan')!, 10) > 1;\n\n const prevW = this.columnWidths[col] ?? floor;\n const newWraw = hasSpan\n ? widthPx - (this.columnWidths[col - 1] ?? 0)\n : widthPx;\n\n const newW = Math.max(\n floor,\n Math.round(Number.isFinite(newWraw) ? newWraw : prevW)\n );\n\n let delta = newW - prevW;\n\n if (delta === 0) {\n resizeLinesHandler(\n this.resizeStart,\n this.resizeEnd,\n col,\n this.scrollHeight,\n this.columnWidths,\n );\n return;\n }\n\n const takeFromRight = (start: number, needInit: number) => {\n let need = needInit;\n for (let i = start; i < this.columnWidths.length && need > 0; i++) {\n const reducible = Math.max(0, this.columnWidths[i] - floor);\n const cut = Math.min(reducible, need);\n if (cut > 0) {\n this.columnWidths[i] -= cut;\n need -= cut;\n }\n }\n return need;\n };\n\n const giveToRight = (start: number, giveInit: number) => {\n let give = giveInit;\n if (start < this.columnWidths.length && give > 0) {\n this.columnWidths[start] += give;\n give = 0;\n }\n return give;\n };\n\n if (!this.enableResizeScroll) {\n if (delta > 0) {\n let rightReducible = 0;\n for (let i = col + 1; i < this.columnWidths.length; i++) {\n rightReducible += Math.max(0, this.columnWidths[i] - floor);\n }\n if (rightReducible <= 0) {\n delta = 0;\n } else if (delta > rightReducible) {\n delta = rightReducible;\n }\n\n this.columnWidths[col] = prevW + delta;\n\n if (delta > 0) {\n takeFromRight(col + 1, delta);\n }\n } else {\n if (col === this.columnWidths.length - 1) {\n delta = 0;\n } else {\n const shrink = -delta;\n this.columnWidths[col] = Math.max(floor, prevW - shrink);\n\n const remaining = giveToRight(col + 1, shrink);\n if (remaining > 0) {\n this.columnWidths[col] = prevW;\n delta = 0;\n }\n }\n }\n } else {\n this.columnWidths[col] = newW;\n }\n\n resizeLinesHandler(\n this.resizeStart,\n this.resizeEnd,\n col,\n this.scrollHeight,\n this.columnWidths\n );\n\n this.colTemplate = rebuildTemplate(\n this.columnWidths.length,\n this.columnWidths\n );\n applyTemplate(getHead(this.slotEl), getBody(this.slotEl), this.colTemplate);\n applyColumnsTemplate(this, this.columnWidths, this.slotEl);\n };\n\n protected firstUpdated() {\n this.setAttribute('role', 'table');\n listenToEventListeners(\n this,\n this.onResize,\n this.slotEl,\n this._attachObserverAndLayout.bind(this)\n );\n }\n\n private _attachObserverAndLayout() {\n this.mo?.disconnect();\n this.mo = new MutationObserver(() => {\n this.scheduleLayout();\n });\n this.resizeObserver?.disconnect();\n this.resizeObserver = new ResizeObserver(() => {\n layout(\n this,\n this.slotEl,\n this.ensureWidths.bind(this),\n rebuildTemplate,\n applyTemplate,\n this.stickyLeftIndexes,\n this.stickyRightIndexes\n );\n });\n\n const head = getHead(this.slotEl);\n const body = getBody(this.slotEl);\n if (!head && !body) return;\n\n const target = body ?? this;\n this.mo.observe(target, {\n subtree: true,\n childList: true,\n attributes: true,\n attributeFilter: ['colspan', 'rowspan'],\n });\n this.resizeObserver?.observe(this);\n layout(\n this,\n this.slotEl,\n this.ensureWidths.bind(this),\n rebuildTemplate,\n applyTemplate,\n this.stickyLeftIndexes,\n this.stickyRightIndexes\n );\n }\n\n public render(): TemplateResult {\n return html`\n <div part=\"grid-base\" class=\"nile-grid-base\">\n <slot part=\"grid-slot\"></slot>\n <div part=\"resize-start\" class=\"nile-resize-start\"></div>\n <div part=\"resize-end\" class=\"nile-resize-end\"></div>\n </div>\n `;\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback?.();\n this.mo?.disconnect();\n this.resizeObserver?.disconnect();\n\n if (this.raf) cancelAnimationFrame(this.raf);\n removeEventListeners(\n this,\n this.onResize,\n this.slotEl,\n this._attachObserverAndLayout.bind(this)\n );\n }\n\n /* #endregion */\n}\n\nexport default NileGrid;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-grid': NileGrid;\n }\n}\n"]}
1
+ {"version":3,"file":"nile-grid.js","sourceRoot":"","sources":["../../../src/nile-grid/nile-grid.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright Aquera Inc 2025\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { LitElement, html, CSSResultArray, TemplateResult } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { styles } from './nile-grid.css';\nimport NileElement from '../internal/nile-element';\nimport {\n resizeLinesHandler,\n listenToEventListeners,\n removeEventListeners,\n getHead,\n getBody,\n rebuildTemplate,\n applyTemplate,\n layout,\n} from './nile-grid.utils';\n\n/**\n * Nile grid component.\n *\n * @tag nile-grid\n *\n */\n@customElement('nile-grid')\nexport class NileGrid extends NileElement {\n /**\n * The styles for nile-grid\n * @remarks If you are extending this class you can extend the base styles with super. Eg `return [super(), myCustomStyles]`\n */\n public static get styles(): CSSResultArray {\n return [styles];\n }\n /** User can pass custom widths for the columns */\n @property({ type: Array, attribute: true }) customWidths: number[] = [];\n\n /** To set the grid template columns in rebuildTemplate method */\n @state() public colTemplate = '';\n\n /** To store the column widths in the beginning and after resizing */\n @state() private columnWidths: number[] = [...this.customWidths];\n\n /** To get the slot element */\n @query('slot') private slotEl!: HTMLSlotElement;\n\n /** To get the first resize line to show the resize handle */\n @query('.nile-resize-start') resizeStart: HTMLElement;\n\n /** To get the last resize line to show the resize handle */\n @query('.nile-resize-end') resizeEnd: HTMLElement;\n\n /** To store the mutation observer */\n private mo?: MutationObserver;\n\n /** To store the request animation frame */\n private raf = 0;\n\n private scheduleLayout() {\n if (this.raf) cancelAnimationFrame(this.raf);\n this.raf = requestAnimationFrame(() => {\n this.raf = 0;\n layout(\n this,\n this.slotEl,\n this.ensureWidths.bind(this),\n rebuildTemplate,\n applyTemplate,\n this.columnWidths\n );\n });\n }\n\n private ensureWidths(colCount: number) {\n if (this.columnWidths.length !== colCount) {\n this.columnWidths = Array(colCount).fill('');\n }\n }\n\n private onResize = (e: Event) => {\n const { col, widthPx } = (e as CustomEvent).detail as {\n col: number;\n widthPx: number;\n };\n let w: any;\n const floor = 60;\n\n if (\n (e.target as HTMLElement).getAttribute('colspan') &&\n parseInt((e.target as HTMLElement).getAttribute('colspan')!) > 1\n ) {\n w = Math.max(floor, Math.round(widthPx - this.columnWidths[col - 1]));\n } else {\n w = Math.max(floor, Math.round(widthPx));\n }\n this.columnWidths[col] = w;\n resizeLinesHandler(\n this.resizeStart,\n this.resizeEnd,\n col,\n widthPx,\n this.scrollHeight,\n this.columnWidths,\n e\n );\n this.colTemplate = rebuildTemplate(\n this.columnWidths.length,\n this.columnWidths\n );\n applyTemplate(getHead(this.slotEl), getBody(this.slotEl), this.colTemplate);\n };\n\n protected firstUpdated() {\n this.setAttribute('role', 'table');\n listenToEventListeners(\n this,\n this.onResize,\n this.slotEl,\n this._attachObserverAndLayout.bind(this)\n );\n }\n\n private _attachObserverAndLayout() {\n this.mo?.disconnect();\n this.mo = new MutationObserver(() => {\n this.scheduleLayout();\n });\n\n const head = getHead(this.slotEl);\n const body = getBody(this.slotEl);\n if (!head && !body) return;\n\n const target = body ?? this;\n this.mo.observe(target, {\n subtree: true,\n childList: true,\n attributes: true,\n attributeFilter: ['colspan', 'rowspan'],\n });\n layout(\n this,\n this.slotEl,\n this.ensureWidths.bind(this),\n rebuildTemplate,\n applyTemplate,\n this.columnWidths\n );\n }\n\n public render(): TemplateResult {\n return html`\n <div>\n <slot></slot>\n <div class=\"nile-resize-start\"></div>\n <div class=\"nile-resize-end\"></div>\n </div>\n `;\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback?.();\n this.mo?.disconnect();\n\n if (this.raf) cancelAnimationFrame(this.raf);\n removeEventListeners(\n this,\n this.onResize,\n this.slotEl,\n this._attachObserverAndLayout.bind(this)\n );\n }\n\n /* #endregion */\n}\n\nexport default NileGrid;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-grid': NileGrid;\n }\n}\n"]}
@@ -1,10 +1,9 @@
1
1
  import { NileGrid } from './nile-grid';
2
- export declare const resizeLinesHandler: (resizeStart: HTMLElement, resizeEnd: HTMLElement, col: number, scrollHeight: number, columnWidths: number[]) => void;
2
+ export declare const resizeLinesHandler: (resizeStart: any, resizeEnd: any, col: number, widthPx: number, scrollHeight: any, columnWidths: any, e: any) => void;
3
3
  export declare const listenToEventListeners: (nileGrid: NileGrid, onResize: any, slotEl: any, _attachObserverAndLayout: any) => void;
4
4
  export declare const removeEventListeners: (nileGrid: NileGrid, onResize: any, slotEl: any, _attachObserverAndLayout: any) => void;
5
5
  export declare const getHead: (slotEl: any) => HTMLElement;
6
6
  export declare const getBody: (slotEl: any) => HTMLElement;
7
7
  export declare const rebuildTemplate: (colCount: number, columnWidths: number[]) => string;
8
8
  export declare const applyTemplate: (head: HTMLElement | null, body: HTMLElement | null, colTemplate: string) => void;
9
- export declare const layout: (nileGrid: NileGrid, slotEl: any, ensureWidths: any, rebuildTemplate: any, applyTemplate: any, stickyLeftIndexes: number[], stickyRightIndexes: number[]) => void;
10
- export declare function applyColumnsTemplate(nileGrid: HTMLElement, columnWidths: number[], slotEl: HTMLElement): void;
9
+ export declare const layout: (nileGrid: NileGrid, slotEl: any, ensureWidths: any, rebuildTemplate: any, applyTemplate: any, columnWidths: any) => void;
@@ -1,20 +1,29 @@
1
- export const resizeLinesHandler = (resizeStart, resizeEnd, col, scrollHeight, columnWidths) => {
1
+ export const resizeLinesHandler = (resizeStart, resizeEnd, col, widthPx, scrollHeight, columnWidths, e) => {
2
2
  resizeStart.style.display = 'block';
3
3
  resizeEnd.style.display = 'block';
4
4
  resizeStart.style.height = scrollHeight + 'px';
5
5
  resizeEnd.style.height = scrollHeight + 'px';
6
- const floor = 60;
7
- const safe = (n) => Math.max(0, Math.round(n || 0));
8
- const sum = (arr, endExclusive) => safe(arr.slice(0, Math.max(0, endExclusive)).reduce((a, b) => a + (b || 0), 0));
9
- const totalGridWidth = safe(columnWidths.reduce((a, b) => a + (b || 0), 0));
10
- const baseLeft = sum(columnWidths, col);
11
- const appliedColWidth = safe(Math.max(floor, columnWidths[col] ?? floor));
12
- let handleLeft = baseLeft + appliedColWidth;
13
- const minEdge = baseLeft + floor;
14
- const maxEdge = totalGridWidth;
15
- handleLeft = Math.min(Math.max(handleLeft, minEdge), maxEdge);
16
- resizeStart.style.left = `${handleLeft - 6}px`;
17
- resizeEnd.style.left = `${handleLeft - 2}px`;
6
+ if (col === 0) {
7
+ resizeStart.style.left = `${Math.max(60, widthPx) - 6}px`;
8
+ resizeEnd.style.left = `${Math.max(60, widthPx) - 2}px`;
9
+ }
10
+ else {
11
+ let totalWidth = 0;
12
+ if (e.target.getAttribute('colspan') &&
13
+ parseInt(e.target.getAttribute('colspan')) > 1) {
14
+ widthPx = widthPx - columnWidths[col - 1];
15
+ for (let i = 0; i < col; i++) {
16
+ totalWidth += columnWidths[i];
17
+ }
18
+ }
19
+ else {
20
+ for (let i = 0; i < col; i++) {
21
+ totalWidth += columnWidths[i];
22
+ }
23
+ }
24
+ resizeStart.style.left = `${totalWidth + Math.max(60, widthPx) - 6}px`;
25
+ resizeEnd.style.left = `${totalWidth + Math.max(60, widthPx) - 2}px`;
26
+ }
18
27
  };
19
28
  export const listenToEventListeners = (nileGrid, onResize, slotEl, _attachObserverAndLayout) => {
20
29
  nileGrid.addEventListener('nile-resize', onResize);
@@ -64,184 +73,82 @@ export const applyTemplate = (head, body, colTemplate) => {
64
73
  head.style.gridTemplateColumns = colTemplate;
65
74
  if (body) {
66
75
  body.style.gridTemplateColumns = colTemplate;
76
+ body.style.overflowX = 'auto';
67
77
  }
68
78
  };
69
- function layoutRows(rows, carry, colCount, stickyLeftIndexes, stickyRightIndexes, columnWidths, opts) {
70
- rows.forEach((row, rIdx) => {
79
+ function computeHeadLayout(headRows, carryHead, colCount) {
80
+ headRows.forEach((row, rIdx) => {
71
81
  let c = 1;
82
+ const cells = Array.from(row.querySelectorAll('nile-grid-head-item, nile-grid-cell'));
72
83
  const rStart = rIdx + 1;
73
- let maxRowspan = 1;
74
- let bg = null;
75
- if (opts.handleRowBg) {
76
- bg = row.shadowRoot?.querySelector('[data-row-bg]') ?? null;
77
- if (bg)
78
- bg.style.gridColumn = `1 / -1`;
79
- }
80
- const items = Array.from(row.querySelectorAll(opts.itemSelector));
81
- items.forEach((el) => {
82
- while ((carry[c - 1] || 0) > 0)
84
+ cells.forEach(cell => {
85
+ while (carryHead[c - 1] > 0)
83
86
  c++;
84
- const colspan = Math.max(1, Number(el.getAttribute('colspan')) || 1);
85
- const rowspan = Math.max(1, Number(el.getAttribute('rowspan')) || 1);
86
- if (rowspan > 1) {
87
- el.style.position = "absolute";
88
- el.style.height = `${50 * rowspan}px`;
89
- el.style.zIndex = "1";
90
- }
91
- const cStart = c;
92
- const cEnd = c + colspan;
87
+ const colspan = Math.max(1, Number(cell.getAttribute('colspan')) || 1);
88
+ const rowspan = Math.max(1, Number(cell.getAttribute('rowspan')) || 1);
89
+ const cStart = c, cEnd = c + colspan;
93
90
  const rEnd = rStart + rowspan;
94
- el.style.gridColumn = `${cStart} / ${cEnd}`;
95
- el.style.gridRow = `${rStart} / ${rEnd}`;
96
- el.dataset.cStart = String(cStart);
97
- if (opts.useStickyAttr && el.hasAttribute('colSticky')) {
98
- stickyLeftIndexes.push(cStart - 1);
99
- }
100
- if (opts.useStickyAttr && el.hasAttribute('lastColSticky')) {
101
- stickyRightIndexes.push(cStart - 1);
102
- }
103
- applySticky(el, cStart - 1, stickyLeftIndexes, stickyRightIndexes, columnWidths);
91
+ cell.style.gridColumn = `${cStart} / ${cEnd}`;
92
+ cell.style.gridRow = `${rStart} / ${rEnd}`;
93
+ cell.dataset.cStart = String(cStart);
104
94
  for (let k = 0; k < colspan; k++) {
105
95
  const idx = c - 1 + k;
106
- carry[idx] = Math.max(carry[idx] || 0, rowspan);
96
+ carryHead[idx] = Math.max(carryHead[idx] || 0, rowspan);
107
97
  }
108
- maxRowspan = Math.max(maxRowspan, rowspan);
109
98
  c = cEnd;
110
99
  colCount = Math.max(colCount, cEnd - 1);
111
100
  });
112
- if (opts.handleRowBg && bg) {
113
- const rEnd = rStart + maxRowspan;
114
- bg.style.gridRow = `${rStart} / ${rEnd}`;
115
- }
116
- for (let i = 0; i < carry.length; i++) {
117
- if (carry[i] > 0)
118
- carry[i]--;
119
- }
101
+ for (let i = 0; i < carryHead.length; i++)
102
+ if (carryHead[i] > 0)
103
+ carryHead[i]--;
120
104
  });
121
105
  return colCount;
122
106
  }
123
- function computeHeadLayout(headRows, carryHead, colCount, stickyLeftIndexes, stickyRightIndexes, columnWidths) {
124
- return layoutRows(headRows, carryHead, colCount, stickyLeftIndexes, stickyRightIndexes, columnWidths, {
125
- itemSelector: 'nile-grid-head-item',
126
- useStickyAttr: true,
127
- handleRowBg: false,
128
- });
129
- }
130
- function computeBodyLayout(bodyRows, carryBody, colCount, stickyLeftIndexes, stickyRightIndexes, columnWidths) {
131
- return layoutRows(bodyRows, carryBody, colCount, stickyLeftIndexes, stickyRightIndexes, columnWidths, {
132
- itemSelector: 'nile-grid-cell-item',
133
- useStickyAttr: false,
134
- handleRowBg: true,
135
- });
136
- }
137
- function computeColumnWidths(nileGrid, colCount, columnWidths, slotEl) {
138
- const minCol = 60;
139
- const containerWidth = getContainerWidth(nileGrid);
140
- const desired = readDesiredFromHead(slotEl, colCount);
141
- const isSeeded = seedWidthsFromDesired(desired, columnWidths, minCol);
142
- distributeFlex(columnWidths, isSeeded, containerWidth, minCol);
143
- normalizeToContainer(columnWidths, containerWidth, minCol);
144
- clampAndRound(columnWidths, minCol);
145
- applyColumnsTemplate(nileGrid, columnWidths, slotEl);
146
- }
147
- function getContainerWidth(nileGrid) {
148
- return Math.max(0, (nileGrid.getBoundingClientRect().width || 0) - 4);
149
- }
150
- function readDesiredFromHead(slotEl, colCount) {
151
- const desired = Array(colCount).fill(null);
152
- const head = getHead(slotEl);
153
- if (!head)
154
- return desired;
155
- const headRows = Array.from(head.children).filter(el => el.tagName.toLowerCase() === 'nile-grid-row');
156
- for (const row of headRows) {
157
- const items = Array.from(row.children).filter(el => el.tagName.toLowerCase() === 'nile-grid-head-item');
158
- items
159
- .map(h => {
160
- const cStart = Number(h.dataset?.cStart) || 1;
161
- const colspan = Math.max(1, Number(h.getAttribute('colspan')) || 1);
162
- const attr = h.getAttribute('customWidth');
163
- const cw = attr != null ? Number(attr) : h.customWidth ?? null;
164
- return { cStart, colspan, cw };
165
- })
166
- .filter(x => x.cw != null && !Number.isNaN(x.cw))
167
- .sort((a, b) => {
168
- return a.colspan - b.colspan;
169
- })
170
- .forEach(({ cStart, colspan, cw }) => {
171
- const perCol = cw / colspan;
107
+ function computeBodyLayout(bodyRows, carryBody, colCount) {
108
+ bodyRows.forEach((row, rIdx) => {
109
+ let c = 1;
110
+ const cells = Array.from(row.querySelectorAll('nile-grid-cell, nile-grid-header'));
111
+ const rStart = rIdx + 1;
112
+ let maxRowspan = 1;
113
+ const bg = row.shadowRoot?.querySelector('[data-row-bg]');
114
+ if (bg)
115
+ bg.style.gridColumn = `1 / -1`;
116
+ cells.forEach(cell => {
117
+ while (carryBody[c - 1] > 0)
118
+ c++;
119
+ const colspan = Math.max(1, Number(cell.getAttribute('colspan')) || 1);
120
+ const rowspan = Math.max(1, Number(cell.getAttribute('rowspan')) || 1);
121
+ const cStart = c, cEnd = c + colspan;
122
+ const rEnd = rStart + rowspan;
123
+ cell.style.gridColumn = `${cStart} / ${cEnd}`;
124
+ cell.style.gridRow = `${rStart} / ${rEnd}`;
125
+ cell.dataset.cStart = String(cStart);
172
126
  for (let k = 0; k < colspan; k++) {
173
- const idx = cStart - 1 + k;
174
- if (idx >= 0 && idx < colCount && desired[idx] == null) {
175
- desired[idx] = perCol;
176
- }
127
+ const idx = c - 1 + k;
128
+ carryBody[idx] = Math.max(carryBody[idx] || 0, rowspan);
177
129
  }
130
+ maxRowspan = Math.max(maxRowspan, rowspan);
131
+ c = cEnd;
132
+ colCount = Math.max(colCount, cEnd - 1);
178
133
  });
179
- }
180
- return desired;
181
- }
182
- function seedWidthsFromDesired(desired, columnWidths, minCol) {
183
- const isSeeded = Array(desired.length).fill(false);
184
- for (let i = 0; i < desired.length; i++) {
185
- const w = desired[i] ?? null;
186
- columnWidths[i] =
187
- w != null && !Number.isNaN(w) ? Math.max(minCol, Number(w)) : 0;
188
- isSeeded[i] = w != null && !Number.isNaN(w);
189
- }
190
- return isSeeded;
191
- }
192
- function distributeFlex(columnWidths, isSeeded, containerWidth, minCol) {
193
- const sumSeed = columnWidths.reduce((a, b) => a + b, 0);
194
- const remaining = containerWidth - sumSeed;
195
- const flexIdxs = Array.from({ length: columnWidths.length }, (_, i) => i).filter(i => !isSeeded[i]);
196
- if (flexIdxs.length === 0)
197
- return;
198
- const each = remaining / flexIdxs.length;
199
- for (const i of flexIdxs)
200
- columnWidths[i] = Math.max(minCol, each);
201
- }
202
- function normalizeToContainer(columnWidths, containerWidth, minCol) {
203
- let total = columnWidths.reduce((a, b) => a + b, 0);
204
- if (total < containerWidth && columnWidths.length > 0) {
205
- const add = containerWidth - total;
206
- const weight = total || 1;
207
- for (let i = 0; i < columnWidths.length; i++) {
208
- columnWidths[i] += add * (columnWidths[i] / weight);
209
- }
210
- }
211
- else if (total > containerWidth) {
212
- let need = total - containerWidth;
213
- for (let iter = 0; iter < 8 && need > 0.5; iter++) {
214
- let weightSum = 0;
215
- const candidates = [];
216
- for (let i = 0; i < columnWidths.length; i++) {
217
- const reducible = Math.max(0, columnWidths[i] - minCol);
218
- if (reducible > 0) {
219
- candidates.push(i);
220
- weightSum += columnWidths[i];
221
- }
222
- }
223
- if (candidates.length === 0 || weightSum <= 0)
224
- break;
225
- let reduced = 0;
226
- for (const i of candidates) {
227
- const reducible = Math.max(0, columnWidths[i] - minCol);
228
- const share = columnWidths[i] / weightSum;
229
- const cut = Math.min(reducible, need * share);
230
- columnWidths[i] -= cut;
231
- reduced += cut;
232
- }
233
- need -= reduced;
234
- if (reduced < 0.5)
235
- break;
134
+ if (bg) {
135
+ const rEnd = rStart + maxRowspan;
136
+ bg.style.gridRow = `${rStart} / ${rEnd}`;
236
137
  }
237
- }
138
+ for (let i = 0; i < carryBody.length; i++)
139
+ if (carryBody[i] > 0)
140
+ carryBody[i]--;
141
+ });
142
+ return colCount;
238
143
  }
239
- function clampAndRound(columnWidths, minCol) {
240
- for (let i = 0; i < columnWidths.length; i++) {
241
- columnWidths[i] = Math.max(minCol, Math.round(columnWidths[i]));
144
+ function computeColumnWidths(nileGrid, colCount, columnWidths) {
145
+ for (let col = 0; col < colCount; col++) {
146
+ const containerWidth = (nileGrid.getBoundingClientRect().width || 1) - 2;
147
+ columnWidths[col] =
148
+ nileGrid.customWidths[col] || containerWidth / Math.max(colCount, 1);
242
149
  }
243
150
  }
244
- export const layout = (nileGrid, slotEl, ensureWidths, rebuildTemplate, applyTemplate, stickyLeftIndexes, stickyRightIndexes) => {
151
+ export const layout = (nileGrid, slotEl, ensureWidths, rebuildTemplate, applyTemplate, columnWidths) => {
245
152
  const head = getHead(slotEl);
246
153
  const body = getBody(slotEl);
247
154
  if (!body)
@@ -251,62 +158,13 @@ export const layout = (nileGrid, slotEl, ensureWidths, rebuildTemplate, applyTem
251
158
  : [];
252
159
  const bodyRows = Array.from(body.querySelectorAll('nile-grid-row'));
253
160
  let colCount = 0;
254
- colCount = computeHeadLayout(headRows, [], colCount, stickyLeftIndexes, stickyRightIndexes, nileGrid.columnWidths);
255
- colCount = computeBodyLayout(bodyRows, [], colCount, stickyLeftIndexes, stickyRightIndexes, nileGrid.columnWidths);
256
- computeColumnWidths(nileGrid, colCount, nileGrid.columnWidths, slotEl);
161
+ colCount = computeHeadLayout(headRows, [], colCount);
162
+ colCount = computeBodyLayout(bodyRows, [], colCount);
163
+ computeColumnWidths(nileGrid, colCount, columnWidths);
257
164
  ensureWidths(colCount);
258
165
  body.style.gridAutoRows = 'auto';
259
- nileGrid.colTemplate = rebuildTemplate(colCount, nileGrid.columnWidths);
166
+ body.style.overflowY = 'auto';
167
+ nileGrid.colTemplate = rebuildTemplate(colCount, columnWidths);
260
168
  applyTemplate(head, body, nileGrid.colTemplate, nileGrid.colTemplate);
261
169
  };
262
- function applySticky(el, colIndex, stickyLeftIndexes, stickyRightIndexes, columnWidths) {
263
- const onLeft = stickyLeftIndexes.includes(colIndex);
264
- const onRight = stickyRightIndexes.includes(colIndex);
265
- if (!onLeft && !onRight)
266
- return;
267
- el.style.position = 'sticky';
268
- el.style.zIndex = '2';
269
- if (onLeft && !onRight) {
270
- const leftOrder = [...stickyLeftIndexes].sort((a, b) => a - b);
271
- const pos = leftOrder.indexOf(colIndex);
272
- let left = 0;
273
- for (let i = 0; i < pos; i++)
274
- left += columnWidths[leftOrder[i]] ?? 0;
275
- el.style.left = `${left}px`;
276
- return;
277
- }
278
- const rightOrder = [...stickyRightIndexes].sort((a, b) => b - a);
279
- const pos = rightOrder.indexOf(colIndex);
280
- const scroller = el.closest('nile-grid');
281
- const sb = scroller ? scroller.offsetWidth - scroller.clientWidth : 0;
282
- let right = sb;
283
- for (let i = 0; i < pos; i++)
284
- right += columnWidths[rightOrder[i]] ?? 0;
285
- el.style.right = `${right - 2}px`;
286
- }
287
- export function applyColumnsTemplate(nileGrid, columnWidths, slotEl) {
288
- const cols = columnWidths
289
- .map((w, idx) => {
290
- if (idx === columnWidths.length - 1) {
291
- return `minmax(${Math.round(w)}px, auto)`;
292
- }
293
- return `${Math.max(0, Math.round(w))}px`;
294
- })
295
- .join(' ');
296
- nileGrid.style.setProperty('--nile-grid-columns', cols);
297
- const head = slotEl.querySelector('nile-grid-head');
298
- if (head) {
299
- head.style.setProperty('--nile-grid-columns', cols);
300
- head
301
- .querySelectorAll('nile-grid-row')
302
- .forEach(r => r.style.setProperty('--nile-grid-columns', cols));
303
- }
304
- const body = slotEl.querySelector('nile-grid-body');
305
- if (body) {
306
- body.style.setProperty('--nile-grid-columns', cols);
307
- body
308
- .querySelectorAll('nile-grid-row')
309
- .forEach(r => r.style.setProperty('--nile-grid-columns', cols));
310
- }
311
- }
312
170
  //# sourceMappingURL=nile-grid.utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nile-grid.utils.js","sourceRoot":"","sources":["../../../src/nile-grid/nile-grid.utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { NileGrid } from './nile-grid';\nimport { HeadItemEl } from './nile-grid.types';\n\nexport const resizeLinesHandler = (\n resizeStart: HTMLElement,\n resizeEnd: HTMLElement,\n col: number,\n scrollHeight: number,\n columnWidths: number[],\n) => {\n resizeStart.style.display = 'block';\n resizeEnd.style.display = 'block';\n resizeStart.style.height = scrollHeight + 'px';\n resizeEnd.style.height = scrollHeight + 'px';\n const floor = 60;\n const safe = (n: number) => Math.max(0, Math.round(n || 0));\n\n const sum = (arr: number[], endExclusive: number) =>\n safe(\n arr.slice(0, Math.max(0, endExclusive)).reduce((a, b) => a + (b || 0), 0)\n );\n\n const totalGridWidth = safe(columnWidths.reduce((a, b) => a + (b || 0), 0));\n const baseLeft = sum(columnWidths, col);\n const appliedColWidth = safe(Math.max(floor, columnWidths[col] ?? floor));\n let handleLeft = baseLeft + appliedColWidth;\n\n const minEdge = baseLeft + floor;\n const maxEdge = totalGridWidth;\n handleLeft = Math.min(Math.max(handleLeft, minEdge), maxEdge);\n\n resizeStart.style.left = `${handleLeft - 6}px`;\n resizeEnd.style.left = `${handleLeft - 2}px`;\n};\n\n\nexport const listenToEventListeners = (\n nileGrid: NileGrid,\n onResize: any,\n slotEl: any,\n _attachObserverAndLayout: any\n) => {\n nileGrid.addEventListener('nile-resize', onResize);\n nileGrid.addEventListener('nile-resize-start', () => {\n nileGrid.resizeStart.style.display = 'block';\n });\n nileGrid.addEventListener('nile-resize-end', () => {\n nileGrid.resizeStart.style.display = 'none';\n nileGrid.resizeEnd.style.display = 'none';\n });\n slotEl.addEventListener('slotchange', () => _attachObserverAndLayout());\n};\n\nexport const removeEventListeners = (\n nileGrid: NileGrid,\n onResize: any,\n slotEl: any,\n _attachObserverAndLayout: any\n) => {\n nileGrid.removeEventListener('nile-resize', onResize);\n nileGrid.removeEventListener('nile-resize-start', () => {\n nileGrid.resizeStart.style.display = 'block';\n });\n nileGrid.removeEventListener('nile-resize-end', () => {\n nileGrid.resizeStart.style.display = 'none';\n nileGrid.resizeEnd.style.display = 'none';\n });\n slotEl.removeEventListener('slotchange', () => _attachObserverAndLayout());\n};\n\nexport const getHead = (slotEl: any) => {\n const nodes = slotEl?.assignedElements() ?? [];\n return (\n (nodes.find(\n (n: any) => n.tagName.toLowerCase() === 'nile-grid-head'\n ) as HTMLElement) || null\n );\n};\n\nexport const getBody = (slotEl: any) => {\n const nodes = slotEl?.assignedElements() ?? [];\n return (\n (nodes.find(\n (n: any) => n.tagName.toLowerCase() === 'nile-grid-body'\n ) as HTMLElement) || null\n );\n};\n\nexport const rebuildTemplate = (\n colCount: number,\n columnWidths: number[]\n): string => {\n const parts: string[] = [];\n\n for (let i = 0; i < colCount; i++) {\n const explicit = columnWidths[i];\n if (i === colCount - 1) {\n parts.push(`minmax(${explicit}px, auto)`);\n } else {\n parts.push(`${explicit}px`);\n }\n }\n return parts.join(' ');\n};\n\nexport const applyTemplate = (\n head: HTMLElement | null,\n body: HTMLElement | null,\n colTemplate: string\n) => {\n if (head) head.style.gridTemplateColumns = colTemplate;\n if (body) {\n body.style.gridTemplateColumns = colTemplate;\n }\n};\n\nfunction layoutRows(\n rows: HTMLElement[],\n carry: number[],\n colCount: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n columnWidths: number[],\n opts: {\n itemSelector: string;\n useStickyAttr?: boolean;\n handleRowBg?: boolean;\n }\n): number {\n rows.forEach((row, rIdx) => {\n let c = 1;\n const rStart = rIdx + 1;\n let maxRowspan = 1;\n\n let bg: HTMLElement | null = null;\n if (opts.handleRowBg) {\n bg = row.shadowRoot?.querySelector<HTMLElement>('[data-row-bg]') ?? null;\n if (bg) bg.style.gridColumn = `1 / -1`;\n }\n\n const items = Array.from(\n row.querySelectorAll(opts.itemSelector)\n ) as HTMLElement[];\n\n items.forEach((el) => {\n while ((carry[c - 1] || 0) > 0) c++;\n\n const colspan = Math.max(1, Number(el.getAttribute('colspan')) || 1);\n const rowspan = Math.max(1, Number(el.getAttribute('rowspan')) || 1);\n\n if (rowspan > 1) {\n el.style.position = \"absolute\";\n el.style.height = `${\n 50 * rowspan\n }px`;\n el.style.zIndex = \"1\";\n }\n\n const cStart = c;\n const cEnd = c + colspan;\n const rEnd = rStart + rowspan;\n\n el.style.gridColumn = `${cStart} / ${cEnd}`;\n el.style.gridRow = `${rStart} / ${rEnd}`;\n (el as any).dataset.cStart = String(cStart);\n\n if (opts.useStickyAttr && el.hasAttribute('colSticky')) {\n stickyLeftIndexes.push(cStart - 1);\n }\n\n if (opts.useStickyAttr && el.hasAttribute('lastColSticky')) {\n stickyRightIndexes.push(cStart - 1);\n }\n\n applySticky(el, cStart - 1, stickyLeftIndexes, stickyRightIndexes, columnWidths);\n\n for (let k = 0; k < colspan; k++) {\n const idx = c - 1 + k;\n carry[idx] = Math.max(carry[idx] || 0, rowspan);\n }\n\n maxRowspan = Math.max(maxRowspan, rowspan);\n c = cEnd;\n colCount = Math.max(colCount, cEnd - 1);\n });\n\n if (opts.handleRowBg && bg) {\n const rEnd = rStart + maxRowspan;\n bg.style.gridRow = `${rStart} / ${rEnd}`;\n }\n\n for (let i = 0; i < carry.length; i++) {\n if (carry[i] > 0) carry[i]--;\n }\n });\n\n return colCount;\n}\n\nfunction computeHeadLayout(\n headRows: HTMLElement[],\n carryHead: number[],\n colCount: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n columnWidths: number[]\n): number {\n return layoutRows(\n headRows,\n carryHead,\n colCount,\n stickyLeftIndexes,\n stickyRightIndexes,\n columnWidths,\n {\n itemSelector: 'nile-grid-head-item',\n useStickyAttr: true,\n handleRowBg: false,\n }\n );\n}\n\nfunction computeBodyLayout(\n bodyRows: HTMLElement[],\n carryBody: number[],\n colCount: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n columnWidths: number[]\n): number {\n return layoutRows(\n bodyRows,\n carryBody,\n colCount,\n stickyLeftIndexes,\n stickyRightIndexes,\n columnWidths,\n {\n itemSelector: 'nile-grid-cell-item',\n useStickyAttr: false,\n handleRowBg: true,\n }\n );\n}\n\nfunction computeColumnWidths(\n nileGrid: NileGrid,\n colCount: number,\n columnWidths: number[],\n slotEl: any\n) {\n const minCol = 60;\n const containerWidth = getContainerWidth(nileGrid);\n\n const desired = readDesiredFromHead(slotEl, colCount);\n const isSeeded = seedWidthsFromDesired(desired, columnWidths, minCol);\n\n distributeFlex(columnWidths, isSeeded, containerWidth, minCol);\n\n normalizeToContainer(columnWidths, containerWidth, minCol);\n\n clampAndRound(columnWidths, minCol);\n applyColumnsTemplate(nileGrid, columnWidths, slotEl);\n}\n\n\nfunction getContainerWidth(nileGrid: NileGrid): number {\n return Math.max(0, (nileGrid.getBoundingClientRect().width || 0) - 4);\n}\n\nfunction readDesiredFromHead(slotEl: any, colCount: number): (number | null)[] {\n const desired: (number | null)[] = Array(colCount).fill(null);\n const head = getHead(slotEl) as HTMLElement | null;\n if (!head) return desired;\n\n const headRows = Array.from(head.children).filter(\n el => el.tagName.toLowerCase() === 'nile-grid-row'\n ) as HTMLElement[];\n\n for (const row of headRows) {\n const items = Array.from(row.children).filter(\n el => el.tagName.toLowerCase() === 'nile-grid-head-item'\n ) as Array<HeadItemEl>;\n\n items\n .map(h => {\n const cStart = Number((h as any).dataset?.cStart) || 1;\n const colspan = Math.max(1, Number(h.getAttribute('colspan')) || 1);\n const attr = h.getAttribute('customWidth');\n const cw = attr != null ? Number(attr) : (h as any).customWidth ?? null;\n return { cStart, colspan, cw };\n })\n .filter(x => x.cw != null && !Number.isNaN(x.cw!))\n .sort((a, b) => {\n return a.colspan - b.colspan;\n })\n .forEach(({ cStart, colspan, cw }) => {\n const perCol = (cw as number) / colspan;\n for (let k = 0; k < colspan; k++) {\n const idx = cStart - 1 + k;\n if (idx >= 0 && idx < colCount && desired[idx] == null) {\n desired[idx] = perCol;\n }\n }\n });\n }\n return desired;\n}\n\nfunction seedWidthsFromDesired(\n desired: (number | null)[],\n columnWidths: number[],\n minCol: number\n): boolean[] {\n const isSeeded = Array(desired.length).fill(false);\n for (let i = 0; i < desired.length; i++) {\n const w = desired[i] ?? null;\n columnWidths[i] =\n w != null && !Number.isNaN(w) ? Math.max(minCol, Number(w)) : 0;\n isSeeded[i] = w != null && !Number.isNaN(w);\n }\n return isSeeded;\n}\n\nfunction distributeFlex(\n columnWidths: number[],\n isSeeded: boolean[],\n containerWidth: number,\n minCol: number\n) {\n const sumSeed = columnWidths.reduce((a, b) => a + b, 0);\n const remaining = containerWidth - sumSeed;\n const flexIdxs = Array.from(\n { length: columnWidths.length },\n (_, i) => i\n ).filter(i => !isSeeded[i]);\n if (flexIdxs.length === 0) return;\n\n const each = remaining / flexIdxs.length;\n for (const i of flexIdxs) columnWidths[i] = Math.max(minCol, each);\n}\n\nfunction normalizeToContainer(\n columnWidths: number[],\n containerWidth: number,\n minCol: number\n) {\n let total = columnWidths.reduce((a, b) => a + b, 0);\n\n if (total < containerWidth && columnWidths.length > 0) {\n const add = containerWidth - total;\n const weight = total || 1;\n for (let i = 0; i < columnWidths.length; i++) {\n columnWidths[i] += add * (columnWidths[i] / weight);\n }\n } else if (total > containerWidth) {\n let need = total - containerWidth;\n \n for (let iter = 0; iter < 8 && need > 0.5; iter++) {\n let weightSum = 0;\n const candidates: number[] = [];\n for (let i = 0; i < columnWidths.length; i++) {\n const reducible = Math.max(0, columnWidths[i] - minCol);\n if (reducible > 0) {\n candidates.push(i);\n weightSum += columnWidths[i];\n }\n }\n if (candidates.length === 0 || weightSum <= 0) break;\n\n let reduced = 0;\n for (const i of candidates) {\n const reducible = Math.max(0, columnWidths[i] - minCol);\n const share = columnWidths[i] / weightSum;\n const cut = Math.min(reducible, need * share);\n columnWidths[i] -= cut;\n reduced += cut;\n }\n need -= reduced;\n if (reduced < 0.5) break;\n }\n }\n}\n\nfunction clampAndRound(columnWidths: number[], minCol: number) {\n for (let i = 0; i < columnWidths.length; i++) {\n columnWidths[i] = Math.max(minCol, Math.round(columnWidths[i]));\n }\n}\n\nexport const layout = (\n nileGrid: NileGrid,\n slotEl: any,\n ensureWidths: any,\n rebuildTemplate: any,\n applyTemplate: any,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[]\n) => {\n const head = getHead(slotEl);\n const body = getBody(slotEl);\n if (!body) return;\n\n const headRows = head\n ? (Array.from(head.querySelectorAll('nile-grid-row')) as HTMLElement[])\n : [];\n const bodyRows = Array.from(\n body.querySelectorAll('nile-grid-row')\n ) as HTMLElement[];\n\n let colCount = 0;\n\n colCount = computeHeadLayout(\n headRows,\n [],\n colCount,\n stickyLeftIndexes,\n stickyRightIndexes,\n nileGrid.columnWidths\n );\n colCount = computeBodyLayout(\n bodyRows,\n [],\n colCount,\n stickyLeftIndexes,\n stickyRightIndexes,\n nileGrid.columnWidths\n );\n computeColumnWidths(nileGrid, colCount, nileGrid.columnWidths, slotEl);\n\n ensureWidths(colCount);\n body.style.gridAutoRows = 'auto';\n nileGrid.colTemplate = rebuildTemplate(colCount, nileGrid.columnWidths);\n applyTemplate(head, body, nileGrid.colTemplate, nileGrid.colTemplate);\n};\n\nfunction applySticky(\n el: HTMLElement,\n colIndex: number,\n stickyLeftIndexes: number[],\n stickyRightIndexes: number[],\n columnWidths: number[]\n) {\n const onLeft = stickyLeftIndexes.includes(colIndex);\n const onRight = stickyRightIndexes.includes(colIndex);\n\n if (!onLeft && !onRight) return;\n\n el.style.position = 'sticky';\n el.style.zIndex = '2';\n\n if (onLeft && !onRight) {\n const leftOrder = [...stickyLeftIndexes].sort((a, b) => a - b);\n const pos = leftOrder.indexOf(colIndex);\n let left = 0;\n for (let i = 0; i < pos; i++) left += columnWidths[leftOrder[i]] ?? 0;\n el.style.left = `${left}px`;\n return;\n }\n\n const rightOrder = [...stickyRightIndexes].sort((a, b) => b - a);\n const pos = rightOrder.indexOf(colIndex);\n\n const scroller = el.closest('nile-grid') as HTMLElement | null;\n const sb = scroller ? scroller.offsetWidth - scroller.clientWidth : 0;\n\n let right = sb;\n for (let i = 0; i < pos; i++) right += columnWidths[rightOrder[i]] ?? 0;\n\n el.style.right = `${right - 2}px`;\n}\n\n\nexport function applyColumnsTemplate(\n nileGrid: HTMLElement,\n columnWidths: number[],\n slotEl: HTMLElement\n) {\n const cols = columnWidths\n .map((w, idx) => {\n if (idx === columnWidths.length - 1) {\n return `minmax(${Math.round(w)}px, auto)`;\n }\n return `${Math.max(0, Math.round(w))}px`;\n })\n .join(' ');\n nileGrid.style.setProperty('--nile-grid-columns', cols);\n\n const head = slotEl.querySelector('nile-grid-head') as HTMLElement | null;\n if (head) {\n head.style.setProperty('--nile-grid-columns', cols);\n head\n .querySelectorAll('nile-grid-row')\n .forEach(r =>\n (r as HTMLElement).style.setProperty('--nile-grid-columns', cols)\n );\n }\n const body = slotEl.querySelector('nile-grid-body') as HTMLElement | null;\n if (body) {\n body.style.setProperty('--nile-grid-columns', cols);\n body\n .querySelectorAll('nile-grid-row')\n .forEach(r =>\n (r as HTMLElement).style.setProperty('--nile-grid-columns', cols)\n );\n }\n}\n"]}
1
+ {"version":3,"file":"nile-grid.utils.js","sourceRoot":"","sources":["../../../src/nile-grid/nile-grid.utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { NileGrid } from './nile-grid';\n\nexport const resizeLinesHandler = (\n resizeStart: any,\n resizeEnd: any,\n col: number,\n widthPx: number,\n scrollHeight: any,\n columnWidths: any,\n e: any\n) => {\n resizeStart.style.display = 'block';\n resizeEnd.style.display = 'block';\n resizeStart.style.height = scrollHeight + 'px';\n resizeEnd.style.height = scrollHeight + 'px';\n if (col === 0) {\n resizeStart.style.left = `${Math.max(60, widthPx) - 6}px`;\n resizeEnd.style.left = `${Math.max(60, widthPx) - 2}px`;\n } else {\n let totalWidth = 0;\n if (\n (e.target as HTMLElement).getAttribute('colspan') &&\n parseInt((e.target as HTMLElement).getAttribute('colspan')!) > 1\n ) {\n widthPx = widthPx - columnWidths[col - 1];\n for (let i = 0; i < col; i++) {\n totalWidth += columnWidths[i];\n }\n } else {\n for (let i = 0; i < col; i++) {\n totalWidth += columnWidths[i];\n }\n }\n resizeStart.style.left = `${totalWidth + Math.max(60, widthPx) - 6}px`;\n resizeEnd.style.left = `${totalWidth + Math.max(60, widthPx) - 2}px`;\n }\n};\n\nexport const listenToEventListeners = (\n nileGrid: NileGrid,\n onResize: any,\n slotEl: any,\n _attachObserverAndLayout: any\n) => {\n nileGrid.addEventListener('nile-resize', onResize);\n nileGrid.addEventListener('nile-resize-start', () => {\n nileGrid.resizeStart.style.display = 'block';\n });\n nileGrid.addEventListener('nile-resize-end', () => {\n nileGrid.resizeStart.style.display = 'none';\n nileGrid.resizeEnd.style.display = 'none';\n });\n slotEl.addEventListener('slotchange', () => _attachObserverAndLayout());\n};\n\nexport const removeEventListeners = (\n nileGrid: NileGrid,\n onResize: any,\n slotEl: any,\n _attachObserverAndLayout: any\n) => {\n nileGrid.removeEventListener('nile-resize', onResize);\n nileGrid.removeEventListener('nile-resize-start', () => {\n nileGrid.resizeStart.style.display = 'block';\n });\n nileGrid.removeEventListener('nile-resize-end', () => {\n nileGrid.resizeStart.style.display = 'none';\n nileGrid.resizeEnd.style.display = 'none';\n });\n slotEl.removeEventListener('slotchange', () => _attachObserverAndLayout());\n};\n\nexport const getHead = (slotEl: any) => {\n const nodes = slotEl?.assignedElements() ?? [];\n return (\n (nodes.find(\n (n: any) => n.tagName.toLowerCase() === 'nile-grid-head'\n ) as HTMLElement) || null\n );\n};\n\nexport const getBody = (slotEl: any) => {\n const nodes = slotEl?.assignedElements() ?? [];\n return (\n (nodes.find(\n (n: any) => n.tagName.toLowerCase() === 'nile-grid-body'\n ) as HTMLElement) || null\n );\n};\n\nexport const rebuildTemplate = (\n colCount: number,\n columnWidths: number[]\n): string => {\n const parts: string[] = [];\n\n for (let i = 0; i < colCount; i++) {\n const explicit = columnWidths[i];\n if (i === colCount - 1) {\n parts.push(`minmax(${explicit}px, auto)`);\n } else {\n parts.push(`${explicit}px`);\n }\n }\n return parts.join(' ');\n};\n\nexport const applyTemplate = (\n head: HTMLElement | null,\n body: HTMLElement | null,\n colTemplate: string\n) => {\n if (head) head.style.gridTemplateColumns = colTemplate;\n if (body) {\n body.style.gridTemplateColumns = colTemplate;\n body.style.overflowX = 'auto';\n }\n};\n\nfunction computeHeadLayout(\n headRows: HTMLElement[],\n carryHead: number[],\n colCount: number\n): number {\n headRows.forEach((row, rIdx) => {\n let c = 1;\n const cells = Array.from(\n row.querySelectorAll('nile-grid-head-item, nile-grid-cell')\n ) as HTMLElement[];\n const rStart = rIdx + 1;\n\n cells.forEach(cell => {\n while (carryHead[c - 1] > 0) c++;\n const colspan = Math.max(1, Number(cell.getAttribute('colspan')) || 1);\n const rowspan = Math.max(1, Number(cell.getAttribute('rowspan')) || 1);\n\n const cStart = c,\n cEnd = c + colspan;\n const rEnd = rStart + rowspan;\n\n cell.style.gridColumn = `${cStart} / ${cEnd}`;\n cell.style.gridRow = `${rStart} / ${rEnd}`;\n (cell as any).dataset.cStart = String(cStart);\n\n for (let k = 0; k < colspan; k++) {\n const idx = c - 1 + k;\n carryHead[idx] = Math.max(carryHead[idx] || 0, rowspan);\n }\n c = cEnd;\n colCount = Math.max(colCount, cEnd - 1);\n });\n\n for (let i = 0; i < carryHead.length; i++)\n if (carryHead[i] > 0) carryHead[i]--;\n });\n return colCount;\n}\n\nfunction computeBodyLayout(\n bodyRows: HTMLElement[],\n carryBody: number[],\n colCount: number\n) {\n bodyRows.forEach((row, rIdx) => {\n let c = 1;\n const cells = Array.from(\n row.querySelectorAll('nile-grid-cell, nile-grid-header')\n ) as HTMLElement[];\n const rStart = rIdx + 1;\n let maxRowspan = 1;\n\n const bg = row.shadowRoot?.querySelector<HTMLElement>('[data-row-bg]');\n if (bg) bg.style.gridColumn = `1 / -1`;\n\n cells.forEach(cell => {\n while (carryBody[c - 1] > 0) c++;\n const colspan = Math.max(1, Number(cell.getAttribute('colspan')) || 1);\n const rowspan = Math.max(1, Number(cell.getAttribute('rowspan')) || 1);\n\n const cStart = c,\n cEnd = c + colspan;\n const rEnd = rStart + rowspan;\n\n cell.style.gridColumn = `${cStart} / ${cEnd}`;\n cell.style.gridRow = `${rStart} / ${rEnd}`;\n (cell as any).dataset.cStart = String(cStart);\n\n for (let k = 0; k < colspan; k++) {\n const idx = c - 1 + k;\n carryBody[idx] = Math.max(carryBody[idx] || 0, rowspan);\n }\n maxRowspan = Math.max(maxRowspan, rowspan);\n c = cEnd;\n colCount = Math.max(colCount, cEnd - 1);\n });\n\n if (bg) {\n const rEnd = rStart + maxRowspan;\n bg.style.gridRow = `${rStart} / ${rEnd}`;\n }\n\n for (let i = 0; i < carryBody.length; i++)\n if (carryBody[i] > 0) carryBody[i]--;\n });\n\n return colCount;\n}\n\nfunction computeColumnWidths(\n nileGrid: NileGrid,\n colCount: number,\n columnWidths: number[]\n) {\n for (let col = 0; col < colCount; col++) {\n const containerWidth = (nileGrid.getBoundingClientRect().width || 1) - 2;\n columnWidths[col] =\n nileGrid.customWidths[col] || containerWidth / Math.max(colCount, 1);\n }\n}\n\nexport const layout = (\n nileGrid: NileGrid,\n slotEl: any,\n ensureWidths: any,\n rebuildTemplate: any,\n applyTemplate: any,\n columnWidths: any\n) => {\n const head = getHead(slotEl);\n const body = getBody(slotEl);\n if (!body) return;\n\n const headRows = head\n ? (Array.from(head.querySelectorAll('nile-grid-row')) as HTMLElement[])\n : [];\n const bodyRows = Array.from(\n body.querySelectorAll('nile-grid-row')\n ) as HTMLElement[];\n\n let colCount = 0;\n\n colCount = computeHeadLayout(headRows, [], colCount);\n colCount = computeBodyLayout(bodyRows, [], colCount);\n\n computeColumnWidths(nileGrid, colCount, columnWidths);\n\n ensureWidths(colCount);\n body.style.gridAutoRows = 'auto';\n body.style.overflowY = 'auto';\n nileGrid.colTemplate = rebuildTemplate(colCount, columnWidths);\n applyTemplate(head, body, nileGrid.colTemplate, nileGrid.colTemplate);\n};\n"]}
@@ -10,8 +10,12 @@ import { css } from 'lit';
10
10
  */
11
11
  export const styles = css `
12
12
  :host {
13
+ display: grid;
14
+ overflow-y: auto;
15
+ overflow-x: visible;
13
16
  box-sizing: border-box;
14
17
  background-color: var(--nile-colors-white-base);
18
+ height: 100%;
15
19
  }
16
20
  `;
17
21
  export default [styles];
@@ -1 +1 @@
1
- {"version":3,"file":"nile-grid-body.css.js","sourceRoot":"","sources":["../../../src/nile-grid-body/nile-grid-body.css.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;CAKxB,CAAC;AAEF,eAAe,CAAC,MAAM,CAAC,CAAC","sourcesContent":["/**\n * Copyright Aquera Inc 2025\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { css } from 'lit';\n\n/**\n * GridBody CSS\n */\nexport const styles = css`\n :host {\n box-sizing: border-box;\n background-color: var(--nile-colors-white-base);\n }\n`;\n\nexport default [styles];\n"]}
1
+ {"version":3,"file":"nile-grid-body.css.js","sourceRoot":"","sources":["../../../src/nile-grid-body/nile-grid-body.css.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;CASxB,CAAC;AAEF,eAAe,CAAC,MAAM,CAAC,CAAC","sourcesContent":["/**\n * Copyright Aquera Inc 2025\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { css } from 'lit';\n\n/**\n * GridBody CSS\n */\nexport const styles = css`\n :host {\n display: grid;\n overflow-y: auto;\n overflow-x: visible;\n box-sizing: border-box;\n background-color: var(--nile-colors-white-base);\n height: 100%;\n }\n`;\n\nexport default [styles];\n"]}
@@ -29,7 +29,7 @@ let NileGridBody = class NileGridBody extends NileElement {
29
29
  }
30
30
  render() {
31
31
  return html `
32
- <div part="grid-body-base">
32
+ <div style="display: contents;">
33
33
  <slot></slot>
34
34
  </div>
35
35
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"nile-grid-body.js","sourceRoot":"","sources":["../../../src/nile-grid-body/nile-grid-body.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;;AAEH,OAAO,EAAE,IAAI,EAAkC,MAAM,KAAK,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,WAAW,MAAM,0BAA0B,CAAC;AAEnD;;;;;GAKG;AAEI,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,WAAW;IAC3C;;;OAGG;IACI,MAAM,KAAK,MAAM;QACtB,OAAO,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAED,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAA;;;;KAIV,CAAC;IACJ,CAAC;CAGF,CAAA;AAvBY,YAAY;IADxB,aAAa,CAAC,gBAAgB,CAAC;GACnB,YAAY,CAuBxB;;AAED,eAAe,YAAY,CAAC","sourcesContent":["/**\n * Copyright Aquera Inc 2025\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { html, CSSResultArray, TemplateResult } from 'lit';\nimport { customElement } from 'lit/decorators.js';\nimport { styles } from './nile-grid-body.css';\nimport NileElement from '../internal/nile-element';\n\n/**\n * Nile grid-body component.\n *\n * @tag nile-grid-body\n *\n */\n@customElement('nile-grid-body')\nexport class NileGridBody extends NileElement {\n /**\n * The styles for nile-grid-body\n * @remarks If you are extending this class you can extend the base styles with super. Eg `return [super(), myCustomStyles]`\n */\n public static get styles(): CSSResultArray {\n return [styles];\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.setAttribute('role', 'rowgroup');\n }\n\n public render(): TemplateResult {\n return html`\n <div part=\"grid-body-base\">\n <slot></slot>\n </div>\n `;\n }\n\n /* #endregion */\n}\n\nexport default NileGridBody;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-grid-body': NileGridBody;\n }\n}\n"]}
1
+ {"version":3,"file":"nile-grid-body.js","sourceRoot":"","sources":["../../../src/nile-grid-body/nile-grid-body.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;;AAEH,OAAO,EAAc,IAAI,EAAkC,MAAM,KAAK,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,WAAW,MAAM,0BAA0B,CAAC;AAEnD;;;;;GAKG;AAEI,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,WAAW;IAC3C;;;OAGG;IACI,MAAM,KAAK,MAAM;QACtB,OAAO,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAED,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAA;;;;KAIV,CAAC;IACJ,CAAC;CAGF,CAAA;AAvBY,YAAY;IADxB,aAAa,CAAC,gBAAgB,CAAC;GACnB,YAAY,CAuBxB;;AAED,eAAe,YAAY,CAAC","sourcesContent":["/**\n * Copyright Aquera Inc 2025\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { LitElement, html, CSSResultArray, TemplateResult } from 'lit';\nimport { customElement } from 'lit/decorators.js';\nimport { styles } from './nile-grid-body.css';\nimport NileElement from '../internal/nile-element';\n\n/**\n * Nile grid-body component.\n *\n * @tag nile-grid-body\n *\n */\n@customElement('nile-grid-body')\nexport class NileGridBody extends NileElement {\n /**\n * The styles for nile-grid-body\n * @remarks If you are extending this class you can extend the base styles with super. Eg `return [super(), myCustomStyles]`\n */\n public static get styles(): CSSResultArray {\n return [styles];\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.setAttribute('role', 'rowgroup');\n }\n\n public render(): TemplateResult {\n return html`\n <div style=\"display: contents;\">\n <slot></slot>\n </div>\n `;\n }\n\n /* #endregion */\n}\n\nexport default NileGridBody;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-grid-body': NileGridBody;\n }\n}\n"]}
@@ -20,17 +20,8 @@ export const styles = css `
20
20
  padding: var(--padding);
21
21
  height: auto;
22
22
  border-bottom: 1px solid var(--nile-colors-neutral-400);
23
- font-size: 14px;
24
- font-weight: 400;
25
- font-family: var(--nile-font-weight-regular);
26
- background-color: #FFFFFF;
27
- min-height: 44px;
28
- }
29
-
30
- .cell-item-base {
31
- width: 100%;
32
- overflow: hidden;
33
- text-overflow: ellipsis;
23
+ border-right: 1px solid var(--nile-colors-neutral-400);
24
+ position: relative;
34
25
  }
35
26
 
36
27
  ::slotted(*) {
@@ -40,11 +31,6 @@ export const styles = css `
40
31
  width: min-content;
41
32
  }
42
33
 
43
- :host(:last-child) .resize-handle {
44
- border-right: none;
45
- display: none;
46
- }
47
-
48
34
  .resize-handle {
49
35
  position: absolute;
50
36
  top: 0;
@@ -55,7 +41,6 @@ export const styles = css `
55
41
  z-index: 1;
56
42
  width: 2px;
57
43
  border-right: 1px solid var(--nile-colors-neutral-400);
58
- display: none;
59
44
  }
60
45
  `;
61
46
  export default [styles];
@@ -1 +1 @@
1
- {"version":3,"file":"nile-grid-cell-item.css.js","sourceRoot":"","sources":["../../../src/nile-grid-cell-item/nile-grid-cell-item.css.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDxB,CAAC;AAEF,eAAe,CAAC,MAAM,CAAC,CAAC","sourcesContent":["/**\n * Copyright Aquera Inc 2025\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { css } from 'lit';\n\n/**\n * Grid Cell Item CSS\n */\nexport const styles = css`\n :host {\n --padding: var(--nile-spacing-xl) var(--nile-spacing-3xl);\n box-sizing: border-box;\n min-width: 0;\n white-space: nowrap;\n width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: var(--padding);\n height: auto;\n border-bottom: 1px solid var(--nile-colors-neutral-400);\n font-size: 14px;\n font-weight: 400;\n font-family: var(--nile-font-weight-regular);\n background-color: #FFFFFF;\n min-height: 44px;\n }\n\n .cell-item-base {\n width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n ::slotted(*) {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n width: min-content;\n }\n\n :host(:last-child) .resize-handle {\n border-right: none;\n display: none;\n }\n\n .resize-handle {\n position: absolute;\n top: 0;\n right: 0;\n height: 100%;\n cursor: col-resize;\n touch-action: none;\n z-index: 1;\n width: 2px;\n border-right: 1px solid var(--nile-colors-neutral-400);\n display: none;\n }\n`;\n\nexport default [styles];\n"]}
1
+ {"version":3,"file":"nile-grid-cell-item.css.js","sourceRoot":"","sources":["../../../src/nile-grid-cell-item/nile-grid-cell-item.css.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCxB,CAAC;AAEF,eAAe,CAAC,MAAM,CAAC,CAAC","sourcesContent":["/**\n * Copyright Aquera Inc 2025\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { css } from 'lit';\n\n/**\n * Grid Cell Item CSS\n */\nexport const styles = css`\n :host {\n --padding: var(--nile-spacing-xl) var(--nile-spacing-3xl);\n box-sizing: border-box;\n min-width: 0;\n white-space: nowrap;\n width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: var(--padding);\n height: auto;\n border-bottom: 1px solid var(--nile-colors-neutral-400);\n border-right: 1px solid var(--nile-colors-neutral-400);\n position: relative;\n }\n\n ::slotted(*) {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n width: min-content;\n }\n\n .resize-handle {\n position: absolute;\n top: 0;\n right: 0;\n height: 100%;\n cursor: col-resize;\n touch-action: none;\n z-index: 1;\n width: 2px;\n border-right: 1px solid var(--nile-colors-neutral-400);\n }\n`;\n\nexport default [styles];\n"]}