@aquera/nile-elements 1.2.1 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/demo/variables.css +4 -2
- package/dist/index.cjs.js +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.js +167 -88
- package/dist/nile-grid/index.cjs.js +1 -1
- package/dist/nile-grid/index.esm.js +1 -1
- package/dist/nile-grid/nile-grid-body/index.cjs.js +2 -0
- package/dist/{nile-grid-body → nile-grid/nile-grid-body}/index.esm.js +1 -1
- package/dist/{nile-grid-cell-item/nile-grid-cell-item.cjs.js → nile-grid/nile-grid-body/nile-grid-body.cjs.js} +2 -2
- package/dist/nile-grid/nile-grid-body/nile-grid-body.cjs.js.map +1 -0
- package/dist/{nile-grid-body → nile-grid/nile-grid-body}/nile-grid-body.css.cjs.js +1 -1
- package/dist/nile-grid/nile-grid-body/nile-grid-body.css.cjs.js.map +1 -0
- package/dist/{nile-grid-body → nile-grid/nile-grid-body}/nile-grid-body.css.esm.js +0 -4
- package/dist/nile-grid/nile-grid-body/nile-grid-body.esm.js +5 -0
- package/dist/nile-grid/nile-grid-cell-item/index.cjs.js +2 -0
- package/dist/{nile-grid-cell-item → nile-grid/nile-grid-cell-item}/index.esm.js +1 -1
- package/dist/nile-grid/nile-grid-cell-item/nile-grid-cell-item.cjs.js +2 -0
- package/dist/nile-grid/nile-grid-cell-item/nile-grid-cell-item.cjs.js.map +1 -0
- package/dist/nile-grid/nile-grid-cell-item/nile-grid-cell-item.css.cjs.js +2 -0
- package/dist/nile-grid/nile-grid-cell-item/nile-grid-cell-item.css.cjs.js.map +1 -0
- package/dist/nile-grid/nile-grid-cell-item/nile-grid-cell-item.css.esm.js +67 -0
- package/dist/nile-grid/nile-grid-cell-item/nile-grid-cell-item.esm.js +12 -0
- package/dist/nile-grid/nile-grid-cell-item/nile-grid-cell-item.utils.cjs.js.map +1 -0
- package/dist/nile-grid/nile-grid-head/index.cjs.js +2 -0
- package/dist/{nile-grid-head → nile-grid/nile-grid-head}/index.esm.js +1 -1
- package/dist/nile-grid/nile-grid-head/nile-grid-head.cjs.js +2 -0
- package/dist/nile-grid/nile-grid-head/nile-grid-head.cjs.js.map +1 -0
- package/dist/nile-grid/nile-grid-head/nile-grid-head.css.cjs.js.map +1 -0
- package/dist/nile-grid/nile-grid-head/nile-grid-head.esm.js +5 -0
- package/dist/nile-grid/nile-grid-head-item/index.cjs.js +2 -0
- package/dist/{nile-grid-head-item → nile-grid/nile-grid-head-item}/index.esm.js +1 -1
- package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.cjs.js +2 -0
- package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.cjs.js.map +1 -0
- package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.css.cjs.js +2 -0
- package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.css.cjs.js.map +1 -0
- package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.css.esm.js +59 -0
- package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.esm.js +13 -0
- package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.utils.cjs.js +2 -0
- package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.utils.cjs.js.map +1 -0
- package/dist/nile-grid/nile-grid-head-item/nile-grid-head-item.utils.esm.js +1 -0
- package/dist/nile-grid/nile-grid-row/index.cjs.js +2 -0
- package/dist/{nile-grid-row → nile-grid/nile-grid-row}/index.esm.js +1 -1
- package/dist/nile-grid/nile-grid-row/nile-grid-row.cjs.js +2 -0
- package/dist/nile-grid/nile-grid-row/nile-grid-row.cjs.js.map +1 -0
- package/dist/nile-grid/nile-grid-row/nile-grid-row.css.cjs.js +2 -0
- package/dist/nile-grid/nile-grid-row/nile-grid-row.css.cjs.js.map +1 -0
- package/dist/nile-grid/nile-grid-row/nile-grid-row.css.esm.js +36 -0
- package/dist/nile-grid/nile-grid-row/nile-grid-row.esm.js +8 -0
- package/dist/nile-grid/nile-grid.cjs.js +1 -1
- package/dist/nile-grid/nile-grid.cjs.js.map +1 -1
- package/dist/nile-grid/nile-grid.css.cjs.js +1 -1
- package/dist/nile-grid/nile-grid.css.cjs.js.map +1 -1
- package/dist/nile-grid/nile-grid.css.esm.js +9 -6
- package/dist/nile-grid/nile-grid.esm.js +6 -6
- package/dist/nile-grid/nile-grid.layout.cjs.js +2 -0
- package/dist/nile-grid/nile-grid.layout.cjs.js.map +1 -0
- package/dist/nile-grid/nile-grid.layout.esm.js +1 -0
- package/dist/nile-grid/nile-grid.resize.cjs.js +2 -0
- package/dist/nile-grid/nile-grid.resize.cjs.js.map +1 -0
- package/dist/nile-grid/nile-grid.resize.esm.js +1 -0
- package/dist/nile-grid/nile-grid.types.cjs.js +2 -0
- package/dist/nile-grid/nile-grid.types.cjs.js.map +1 -0
- package/dist/nile-grid/nile-grid.types.esm.js +1 -0
- package/dist/nile-grid/nile-grid.utils.cjs.js +1 -1
- package/dist/nile-grid/nile-grid.utils.cjs.js.map +1 -1
- package/dist/nile-grid/nile-grid.utils.esm.js +1 -1
- package/dist/nile-grid/nile-grid.width.cjs.js +2 -0
- package/dist/nile-grid/nile-grid.width.cjs.js.map +1 -0
- package/dist/nile-grid/nile-grid.width.esm.js +1 -0
- package/dist/src/index.d.ts +5 -5
- package/dist/src/index.js +5 -5
- package/dist/src/index.js.map +1 -1
- package/dist/src/nile-grid/nile-grid-body/index.js.map +1 -0
- package/dist/src/{nile-grid-body → nile-grid/nile-grid-body}/nile-grid-body.css.js +0 -4
- package/dist/src/nile-grid/nile-grid-body/nile-grid-body.css.js.map +1 -0
- package/dist/src/{nile-grid-body → nile-grid/nile-grid-body}/nile-grid-body.d.ts +1 -1
- package/dist/src/{nile-grid-body → nile-grid/nile-grid-body}/nile-grid-body.js +2 -2
- package/dist/src/nile-grid/nile-grid-body/nile-grid-body.js.map +1 -0
- package/dist/src/nile-grid/nile-grid-cell-item/index.js.map +1 -0
- package/dist/src/nile-grid/nile-grid-cell-item/nile-grid-cell-item.css.js +79 -0
- package/dist/src/nile-grid/nile-grid-cell-item/nile-grid-cell-item.css.js.map +1 -0
- package/dist/src/{nile-grid-cell-item → nile-grid/nile-grid-cell-item}/nile-grid-cell-item.d.ts +1 -4
- package/dist/src/{nile-grid-cell-item → nile-grid/nile-grid-cell-item}/nile-grid-cell-item.js +2 -12
- package/dist/src/nile-grid/nile-grid-cell-item/nile-grid-cell-item.js.map +1 -0
- package/dist/src/nile-grid/nile-grid-cell-item/nile-grid-cell-item.utils.js.map +1 -0
- package/dist/src/nile-grid/nile-grid-head/index.js.map +1 -0
- package/dist/src/nile-grid/nile-grid-head/nile-grid-head.css.js.map +1 -0
- package/dist/src/{nile-grid-head → nile-grid/nile-grid-head}/nile-grid-head.d.ts +2 -1
- package/dist/src/{nile-grid-head → nile-grid/nile-grid-head}/nile-grid-head.js +11 -3
- package/dist/src/nile-grid/nile-grid-head/nile-grid-head.js.map +1 -0
- package/dist/src/nile-grid/nile-grid-head-item/index.js.map +1 -0
- package/dist/src/{nile-grid-head-item → nile-grid/nile-grid-head-item}/nile-grid-head-item.css.js +30 -5
- package/dist/src/nile-grid/nile-grid-head-item/nile-grid-head-item.css.js.map +1 -0
- package/dist/src/{nile-grid-head-item → nile-grid/nile-grid-head-item}/nile-grid-head-item.d.ts +3 -4
- package/dist/src/{nile-grid-head-item → nile-grid/nile-grid-head-item}/nile-grid-head-item.js +12 -15
- package/dist/src/nile-grid/nile-grid-head-item/nile-grid-head-item.js.map +1 -0
- package/dist/src/nile-grid/nile-grid-head-item/nile-grid-head-item.utils.d.ts +34 -0
- package/dist/src/{nile-grid-head-item → nile-grid/nile-grid-head-item}/nile-grid-head-item.utils.js +27 -4
- package/dist/src/nile-grid/nile-grid-head-item/nile-grid-head-item.utils.js.map +1 -0
- package/dist/src/nile-grid/nile-grid-row/index.js.map +1 -0
- package/dist/src/nile-grid/nile-grid-row/nile-grid-row.css.js +48 -0
- package/dist/src/nile-grid/nile-grid-row/nile-grid-row.css.js.map +1 -0
- package/dist/src/{nile-grid-row → nile-grid/nile-grid-row}/nile-grid-row.d.ts +5 -2
- package/dist/src/{nile-grid-row → nile-grid/nile-grid-row}/nile-grid-row.js +23 -6
- package/dist/src/nile-grid/nile-grid-row/nile-grid-row.js.map +1 -0
- package/dist/src/nile-grid/nile-grid.css.js +7 -4
- package/dist/src/nile-grid/nile-grid.css.js.map +1 -1
- package/dist/src/nile-grid/nile-grid.d.ts +19 -4
- package/dist/src/nile-grid/nile-grid.js +76 -23
- package/dist/src/nile-grid/nile-grid.js.map +1 -1
- package/dist/src/nile-grid/nile-grid.layout.d.ts +28 -0
- package/dist/src/nile-grid/nile-grid.layout.js +346 -0
- package/dist/src/nile-grid/nile-grid.layout.js.map +1 -0
- package/dist/src/nile-grid/nile-grid.resize.d.ts +58 -0
- package/dist/src/nile-grid/nile-grid.resize.js +100 -0
- package/dist/src/nile-grid/nile-grid.resize.js.map +1 -0
- package/dist/src/nile-grid/nile-grid.types.d.ts +3 -0
- package/dist/src/nile-grid/nile-grid.types.js +2 -0
- package/dist/src/nile-grid/nile-grid.types.js.map +1 -0
- package/dist/src/nile-grid/nile-grid.utils.d.ts +22 -4
- package/dist/src/nile-grid/nile-grid.utils.js +24 -141
- package/dist/src/nile-grid/nile-grid.utils.js.map +1 -1
- package/dist/src/nile-grid/nile-grid.width.d.ts +25 -0
- package/dist/src/nile-grid/nile-grid.width.js +301 -0
- package/dist/src/nile-grid/nile-grid.width.js.map +1 -0
- package/dist/src/version.js +2 -2
- package/dist/src/version.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/index.ts +5 -5
- package/src/{nile-grid-body → nile-grid/nile-grid-body}/nile-grid-body.css.ts +0 -4
- package/src/{nile-grid-body → nile-grid/nile-grid-body}/nile-grid-body.ts +3 -3
- package/src/nile-grid/nile-grid-cell-item/nile-grid-cell-item.css.ts +81 -0
- package/src/{nile-grid-cell-item → nile-grid/nile-grid-cell-item}/nile-grid-cell-item.ts +5 -15
- package/src/{nile-grid-head → nile-grid/nile-grid-head}/nile-grid-head.ts +6 -4
- package/src/{nile-grid-head-item → nile-grid/nile-grid-head-item}/nile-grid-head-item.css.ts +30 -5
- package/src/{nile-grid-head-item → nile-grid/nile-grid-head-item}/nile-grid-head-item.ts +10 -25
- package/src/{nile-grid-head-item → nile-grid/nile-grid-head-item}/nile-grid-head-item.utils.ts +30 -4
- package/src/nile-grid/nile-grid-row/nile-grid-row.css.ts +50 -0
- package/src/{nile-grid-row → nile-grid/nile-grid-row}/nile-grid-row.ts +13 -8
- package/src/nile-grid/nile-grid.css.ts +7 -4
- package/src/nile-grid/nile-grid.layout.ts +514 -0
- package/src/nile-grid/nile-grid.resize.ts +143 -0
- package/src/nile-grid/nile-grid.ts +79 -53
- package/src/nile-grid/nile-grid.types.ts +1 -0
- package/src/nile-grid/nile-grid.utils.ts +27 -203
- package/src/nile-grid/nile-grid.width.ts +397 -0
- package/vscode-html-custom-data.json +48 -65
- package/dist/nile-grid-body/index.cjs.js +0 -2
- package/dist/nile-grid-body/nile-grid-body.cjs.js +0 -2
- package/dist/nile-grid-body/nile-grid-body.cjs.js.map +0 -1
- package/dist/nile-grid-body/nile-grid-body.css.cjs.js.map +0 -1
- package/dist/nile-grid-body/nile-grid-body.esm.js +0 -5
- package/dist/nile-grid-cell-item/index.cjs.js +0 -2
- package/dist/nile-grid-cell-item/nile-grid-cell-item.cjs.js.map +0 -1
- package/dist/nile-grid-cell-item/nile-grid-cell-item.css.cjs.js +0 -2
- package/dist/nile-grid-cell-item/nile-grid-cell-item.css.cjs.js.map +0 -1
- package/dist/nile-grid-cell-item/nile-grid-cell-item.css.esm.js +0 -35
- package/dist/nile-grid-cell-item/nile-grid-cell-item.esm.js +0 -12
- package/dist/nile-grid-cell-item/nile-grid-cell-item.utils.cjs.js.map +0 -1
- package/dist/nile-grid-head/index.cjs.js +0 -2
- package/dist/nile-grid-head/nile-grid-head.cjs.js +0 -2
- package/dist/nile-grid-head/nile-grid-head.cjs.js.map +0 -1
- package/dist/nile-grid-head/nile-grid-head.css.cjs.js.map +0 -1
- package/dist/nile-grid-head/nile-grid-head.esm.js +0 -5
- package/dist/nile-grid-head-item/index.cjs.js +0 -2
- package/dist/nile-grid-head-item/nile-grid-head-item.cjs.js +0 -2
- package/dist/nile-grid-head-item/nile-grid-head-item.cjs.js.map +0 -1
- package/dist/nile-grid-head-item/nile-grid-head-item.css.cjs.js +0 -2
- package/dist/nile-grid-head-item/nile-grid-head-item.css.cjs.js.map +0 -1
- package/dist/nile-grid-head-item/nile-grid-head-item.css.esm.js +0 -34
- package/dist/nile-grid-head-item/nile-grid-head-item.esm.js +0 -12
- package/dist/nile-grid-head-item/nile-grid-head-item.utils.cjs.js +0 -2
- package/dist/nile-grid-head-item/nile-grid-head-item.utils.cjs.js.map +0 -1
- package/dist/nile-grid-head-item/nile-grid-head-item.utils.esm.js +0 -1
- package/dist/nile-grid-row/index.cjs.js +0 -2
- package/dist/nile-grid-row/nile-grid-row.cjs.js +0 -2
- package/dist/nile-grid-row/nile-grid-row.cjs.js.map +0 -1
- package/dist/nile-grid-row/nile-grid-row.css.cjs.js +0 -2
- package/dist/nile-grid-row/nile-grid-row.css.cjs.js.map +0 -1
- package/dist/nile-grid-row/nile-grid-row.css.esm.js +0 -15
- package/dist/nile-grid-row/nile-grid-row.esm.js +0 -7
- package/dist/src/nile-grid-body/index.js.map +0 -1
- package/dist/src/nile-grid-body/nile-grid-body.css.js.map +0 -1
- package/dist/src/nile-grid-body/nile-grid-body.js.map +0 -1
- package/dist/src/nile-grid-cell-item/index.js.map +0 -1
- package/dist/src/nile-grid-cell-item/nile-grid-cell-item.css.js +0 -47
- package/dist/src/nile-grid-cell-item/nile-grid-cell-item.css.js.map +0 -1
- package/dist/src/nile-grid-cell-item/nile-grid-cell-item.js.map +0 -1
- package/dist/src/nile-grid-cell-item/nile-grid-cell-item.utils.js.map +0 -1
- package/dist/src/nile-grid-head/index.js.map +0 -1
- package/dist/src/nile-grid-head/nile-grid-head.css.js.map +0 -1
- package/dist/src/nile-grid-head/nile-grid-head.js.map +0 -1
- package/dist/src/nile-grid-head-item/index.js.map +0 -1
- package/dist/src/nile-grid-head-item/nile-grid-head-item.css.js.map +0 -1
- package/dist/src/nile-grid-head-item/nile-grid-head-item.js.map +0 -1
- package/dist/src/nile-grid-head-item/nile-grid-head-item.utils.d.ts +0 -10
- package/dist/src/nile-grid-head-item/nile-grid-head-item.utils.js.map +0 -1
- package/dist/src/nile-grid-row/index.js.map +0 -1
- package/dist/src/nile-grid-row/nile-grid-row.css.js +0 -27
- package/dist/src/nile-grid-row/nile-grid-row.css.js.map +0 -1
- package/dist/src/nile-grid-row/nile-grid-row.js.map +0 -1
- package/src/nile-grid-cell-item/nile-grid-cell-item.css.ts +0 -49
- package/src/nile-grid-row/nile-grid-row.css.ts +0 -29
- /package/dist/{nile-grid-body → nile-grid/nile-grid-body}/index.cjs.js.map +0 -0
- /package/dist/{nile-grid-cell-item → nile-grid/nile-grid-cell-item}/index.cjs.js.map +0 -0
- /package/dist/{nile-grid-cell-item → nile-grid/nile-grid-cell-item}/nile-grid-cell-item.utils.cjs.js +0 -0
- /package/dist/{nile-grid-cell-item → nile-grid/nile-grid-cell-item}/nile-grid-cell-item.utils.esm.js +0 -0
- /package/dist/{nile-grid-head → nile-grid/nile-grid-head}/index.cjs.js.map +0 -0
- /package/dist/{nile-grid-head → nile-grid/nile-grid-head}/nile-grid-head.css.cjs.js +0 -0
- /package/dist/{nile-grid-head → nile-grid/nile-grid-head}/nile-grid-head.css.esm.js +0 -0
- /package/dist/{nile-grid-head-item → nile-grid/nile-grid-head-item}/index.cjs.js.map +0 -0
- /package/dist/{nile-grid-row → nile-grid/nile-grid-row}/index.cjs.js.map +0 -0
- /package/dist/src/{nile-grid-body → nile-grid/nile-grid-body}/index.d.ts +0 -0
- /package/dist/src/{nile-grid-body → nile-grid/nile-grid-body}/index.js +0 -0
- /package/dist/src/{nile-grid-body → nile-grid/nile-grid-body}/nile-grid-body.css.d.ts +0 -0
- /package/dist/src/{nile-grid-cell-item → nile-grid/nile-grid-cell-item}/index.d.ts +0 -0
- /package/dist/src/{nile-grid-cell-item → nile-grid/nile-grid-cell-item}/index.js +0 -0
- /package/dist/src/{nile-grid-cell-item → nile-grid/nile-grid-cell-item}/nile-grid-cell-item.css.d.ts +0 -0
- /package/dist/src/{nile-grid-cell-item → nile-grid/nile-grid-cell-item}/nile-grid-cell-item.utils.d.ts +0 -0
- /package/dist/src/{nile-grid-cell-item → nile-grid/nile-grid-cell-item}/nile-grid-cell-item.utils.js +0 -0
- /package/dist/src/{nile-grid-head → nile-grid/nile-grid-head}/index.d.ts +0 -0
- /package/dist/src/{nile-grid-head → nile-grid/nile-grid-head}/index.js +0 -0
- /package/dist/src/{nile-grid-head → nile-grid/nile-grid-head}/nile-grid-head.css.d.ts +0 -0
- /package/dist/src/{nile-grid-head → nile-grid/nile-grid-head}/nile-grid-head.css.js +0 -0
- /package/dist/src/{nile-grid-head-item → nile-grid/nile-grid-head-item}/index.d.ts +0 -0
- /package/dist/src/{nile-grid-head-item → nile-grid/nile-grid-head-item}/index.js +0 -0
- /package/dist/src/{nile-grid-head-item → nile-grid/nile-grid-head-item}/nile-grid-head-item.css.d.ts +0 -0
- /package/dist/src/{nile-grid-row → nile-grid/nile-grid-row}/index.d.ts +0 -0
- /package/dist/src/{nile-grid-row → nile-grid/nile-grid-row}/index.js +0 -0
- /package/dist/src/{nile-grid-row → nile-grid/nile-grid-row}/nile-grid-row.css.d.ts +0 -0
- /package/src/{nile-grid-body → nile-grid/nile-grid-body}/index.ts +0 -0
- /package/src/{nile-grid-cell-item → nile-grid/nile-grid-cell-item}/index.ts +0 -0
- /package/src/{nile-grid-cell-item → nile-grid/nile-grid-cell-item}/nile-grid-cell-item.utils.ts +0 -0
- /package/src/{nile-grid-head → nile-grid/nile-grid-head}/index.ts +0 -0
- /package/src/{nile-grid-head → nile-grid/nile-grid-head}/nile-grid-head.css.ts +0 -0
- /package/src/{nile-grid-head-item → nile-grid/nile-grid-head-item}/index.ts +0 -0
- /package/src/{nile-grid-row → nile-grid/nile-grid-row}/index.ts +0 -0
package/dist/src/{nile-grid-head-item → nile-grid/nile-grid-head-item}/nile-grid-head-item.utils.js
RENAMED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/** initHeadResize
|
|
2
|
+
* @param el Target element
|
|
3
|
+
* @param ev Pointer event
|
|
4
|
+
* @param downXRef Reference to store downX value
|
|
5
|
+
* @param startWRef Reference to store startW value
|
|
6
|
+
* @returns Object containing target element and column index
|
|
7
|
+
*/
|
|
1
8
|
export function initHeadResize(el, ev, downXRef, startWRef) {
|
|
2
9
|
ev.preventDefault();
|
|
3
10
|
ev.stopPropagation();
|
|
@@ -10,7 +17,7 @@ export function initHeadResize(el, ev, downXRef, startWRef) {
|
|
|
10
17
|
startWRef.value = el.getBoundingClientRect().width;
|
|
11
18
|
const target = ev.currentTarget;
|
|
12
19
|
target.setPointerCapture(ev.pointerId);
|
|
13
|
-
el.dispatchEvent(new CustomEvent('nile-resize', {
|
|
20
|
+
el.dispatchEvent(new CustomEvent('nile-column-resize', {
|
|
14
21
|
detail: { col, widthPx: startWRef.value },
|
|
15
22
|
bubbles: true,
|
|
16
23
|
composed: true,
|
|
@@ -18,14 +25,30 @@ export function initHeadResize(el, ev, downXRef, startWRef) {
|
|
|
18
25
|
el.dispatchEvent(new CustomEvent('nile-resize-start', { bubbles: true, composed: true }));
|
|
19
26
|
return { target, col };
|
|
20
27
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
28
|
+
/** headResizeMove
|
|
29
|
+
* @param el Target element
|
|
30
|
+
* @param col Column index
|
|
31
|
+
* @param startW Starting width
|
|
32
|
+
* @param downX Down X coordinate
|
|
33
|
+
* @param e Pointer event
|
|
34
|
+
* @param nileGrid NileGrid instance
|
|
35
|
+
* @returns void
|
|
36
|
+
*/
|
|
37
|
+
export function headResizeMove(el, col, startW, downX, e, nileGrid) {
|
|
38
|
+
const widthPx = Math.max(nileGrid.minColumnWidth, Math.round(startW + (e.clientX - downX)));
|
|
39
|
+
el.dispatchEvent(new CustomEvent('nile-column-resize', {
|
|
24
40
|
detail: { col, widthPx },
|
|
25
41
|
bubbles: true,
|
|
26
42
|
composed: true,
|
|
27
43
|
}));
|
|
28
44
|
}
|
|
45
|
+
/** headResizeDone
|
|
46
|
+
* @param el Target element
|
|
47
|
+
* @param ev Pointer event
|
|
48
|
+
* @param target Target element
|
|
49
|
+
* @param move Pointer move handler
|
|
50
|
+
* @returns void
|
|
51
|
+
*/
|
|
29
52
|
export function headResizeDone(el, ev, target, move) {
|
|
30
53
|
target.releasePointerCapture(ev.pointerId);
|
|
31
54
|
target.removeEventListener('pointermove', move);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nile-grid-head-item.utils.js","sourceRoot":"","sources":["../../../../src/nile-grid/nile-grid-head-item/nile-grid-head-item.utils.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,EAAe,EACf,EAAgB,EAChB,QAA2B,EAC3B,SAA4B;IAE5B,EAAE,CAAC,cAAc,EAAE,CAAC;IACpB,EAAE,CAAC,eAAe,EAAE,CAAC;IAErB,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAE/C,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC;IAC5B,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;IAEnD,MAAM,MAAM,GAAG,EAAE,CAAC,aAA4B,CAAC;IAC/C,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;IAEvC,EAAE,CAAC,aAAa,CACd,IAAI,WAAW,CAAC,oBAAoB,EAAE;QACpC,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE;QACzC,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,IAAI;KACf,CAAC,CACH,CAAC;IAEF,EAAE,CAAC,aAAa,CACd,IAAI,WAAW,CAAC,mBAAmB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CACxE,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACzB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAC5B,EAAe,EACf,GAAW,EACX,MAAc,EACd,KAAa,EACb,CAAe,EACf,QAAkB;IAElB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5F,EAAE,CAAC,aAAa,CACd,IAAI,WAAW,CAAC,oBAAoB,EAAE;QACpC,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE;QACxB,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,IAAI;KACf,CAAC,CACH,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,EAAe,EACf,EAAgB,EAChB,MAAmB,EACnB,IAA+B;IAE/B,MAAM,CAAC,qBAAqB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;IAC3C,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IAEhD,EAAE,CAAC,aAAa,CACd,IAAI,WAAW,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CACtE,CAAC;AACJ,CAAC","sourcesContent":["import { NileGrid } from \"../nile-grid\";\n\n/** initHeadResize\n * @param el Target element\n * @param ev Pointer event\n * @param downXRef Reference to store downX value\n * @param startWRef Reference to store startW value\n * @returns Object containing target element and column index\n */\nexport function initHeadResize(\n el: HTMLElement,\n ev: PointerEvent,\n downXRef: { value: number },\n startWRef: { value: number }\n) {\n ev.preventDefault();\n ev.stopPropagation();\n\n const cStart = Number(el.dataset.cStart);\n if (!cStart) return null;\n\n const span = Number(el.getAttribute('colspan')) || 1;\n const col = Math.max(0, cStart + span - 1 - 1);\n\n downXRef.value = ev.clientX;\n startWRef.value = el.getBoundingClientRect().width;\n\n const target = ev.currentTarget as HTMLElement;\n target.setPointerCapture(ev.pointerId);\n\n el.dispatchEvent(\n new CustomEvent('nile-column-resize', {\n detail: { col, widthPx: startWRef.value },\n bubbles: true,\n composed: true,\n })\n );\n\n el.dispatchEvent(\n new CustomEvent('nile-resize-start', { bubbles: true, composed: true })\n );\n\n return { target, col };\n}\n\n/** headResizeMove\n * @param el Target element\n * @param col Column index\n * @param startW Starting width\n * @param downX Down X coordinate\n * @param e Pointer event\n * @param nileGrid NileGrid instance\n * @returns void\n */\nexport function headResizeMove(\n el: HTMLElement,\n col: number,\n startW: number,\n downX: number,\n e: PointerEvent,\n nileGrid: NileGrid\n) {\n const widthPx = Math.max(nileGrid.minColumnWidth, Math.round(startW + (e.clientX - downX)));\n el.dispatchEvent(\n new CustomEvent('nile-column-resize', {\n detail: { col, widthPx },\n bubbles: true,\n composed: true,\n })\n );\n}\n\n/** headResizeDone\n * @param el Target element\n * @param ev Pointer event\n * @param target Target element\n * @param move Pointer move handler\n * @returns void\n */\nexport function headResizeDone(\n el: HTMLElement,\n ev: PointerEvent,\n target: HTMLElement,\n move: (e: PointerEvent) => void\n) {\n target.releasePointerCapture(ev.pointerId);\n target.removeEventListener('pointermove', move);\n\n el.dispatchEvent(\n new CustomEvent('nile-resize-end', { bubbles: true, composed: true })\n );\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/nile-grid/nile-grid-row/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC","sourcesContent":["export { NileGridRow } from './nile-grid-row';"]}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Aquera Inc 2025
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the BSD-3-Clause license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import { css } from 'lit';
|
|
8
|
+
/**
|
|
9
|
+
* GridRow CSS
|
|
10
|
+
*/
|
|
11
|
+
export const styles = css `
|
|
12
|
+
.row-base {
|
|
13
|
+
display: grid;
|
|
14
|
+
grid-template-columns: var(--nile-grid-columns);
|
|
15
|
+
border-bottom: 1px solid var(--nile-colors-neutral-400);
|
|
16
|
+
background-color: var(--nile-colors-white-base);
|
|
17
|
+
position: relative;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.row-bg {
|
|
21
|
+
grid-column: 1 / -1;
|
|
22
|
+
pointer-events: none;
|
|
23
|
+
z-index: 0;
|
|
24
|
+
display: none;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.row-slot {
|
|
28
|
+
grid-column: 1 / -1;
|
|
29
|
+
display: contents;
|
|
30
|
+
z-index: 1;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
:host([disabled]) {
|
|
34
|
+
background: var(--nile-colors-white-base);
|
|
35
|
+
border-bottom: 1px solid var(--nile-colors-neutral-400);
|
|
36
|
+
opacity: 0.3;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
:host([selected]) {
|
|
40
|
+
background: var(--nile-colors-primary-100);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
:host-context(nile-grid-body):host(:last-child) {
|
|
44
|
+
border-bottom: none;
|
|
45
|
+
}
|
|
46
|
+
`;
|
|
47
|
+
export default [styles];
|
|
48
|
+
//# sourceMappingURL=nile-grid-row.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nile-grid-row.css.js","sourceRoot":"","sources":["../../../../src/nile-grid/nile-grid-row/nile-grid-row.css.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCxB,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 * GridRow CSS\n */\nexport const styles = css`\n .row-base {\n display: grid;\n grid-template-columns: var(--nile-grid-columns);\n border-bottom: 1px solid var(--nile-colors-neutral-400);\n background-color: var(--nile-colors-white-base);\n position: relative;\n }\n\n .row-bg {\n grid-column: 1 / -1;\n pointer-events: none;\n z-index: 0;\n display: none;\n }\n\n .row-slot {\n grid-column: 1 / -1;\n display: contents;\n z-index: 1;\n }\n\n :host([disabled]) {\n background: var(--nile-colors-white-base);\n border-bottom: 1px solid var(--nile-colors-neutral-400);\n opacity: 0.3;\n }\n\n :host([selected]) {\n background: var(--nile-colors-primary-100);\n }\n\n :host-context(nile-grid-body):host(:last-child) {\n border-bottom: none;\n }\n`;\n\nexport default [styles];\n"]}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
import { CSSResultArray, TemplateResult } from 'lit';
|
|
8
|
-
import NileElement from '
|
|
8
|
+
import NileElement from '../../internal/nile-element';
|
|
9
9
|
/**
|
|
10
10
|
* Nile grid-row component.
|
|
11
11
|
*
|
|
@@ -18,8 +18,11 @@ export declare class NileGridRow extends NileElement {
|
|
|
18
18
|
* @remarks If you are extending this class you can extend the base styles with super. Eg `return [super(), myCustomStyles]`
|
|
19
19
|
*/
|
|
20
20
|
static get styles(): CSSResultArray;
|
|
21
|
+
disabled: boolean;
|
|
22
|
+
hover: boolean;
|
|
23
|
+
selected: boolean;
|
|
21
24
|
connectedCallback(): void;
|
|
22
|
-
render(): TemplateResult
|
|
25
|
+
protected render(): TemplateResult<1>;
|
|
23
26
|
}
|
|
24
27
|
export default NileGridRow;
|
|
25
28
|
declare global {
|
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { __decorate } from "tslib";
|
|
8
8
|
import { html } from 'lit';
|
|
9
|
-
import { customElement } from 'lit/decorators.js';
|
|
9
|
+
import { customElement, property } from 'lit/decorators.js';
|
|
10
10
|
import { styles } from './nile-grid-row.css';
|
|
11
|
-
import NileElement from '
|
|
11
|
+
import NileElement from '../../internal/nile-element';
|
|
12
12
|
/**
|
|
13
13
|
* Nile grid-row component.
|
|
14
14
|
*
|
|
@@ -16,6 +16,13 @@ import NileElement from '../internal/nile-element';
|
|
|
16
16
|
*
|
|
17
17
|
*/
|
|
18
18
|
let NileGridRow = class NileGridRow extends NileElement {
|
|
19
|
+
constructor() {
|
|
20
|
+
super(...arguments);
|
|
21
|
+
this.disabled = false;
|
|
22
|
+
this.hover = false;
|
|
23
|
+
this.selected = false;
|
|
24
|
+
/* #endregion */
|
|
25
|
+
}
|
|
19
26
|
/**
|
|
20
27
|
* The styles for nile-grid-row
|
|
21
28
|
* @remarks If you are extending this class you can extend the base styles with super. Eg `return [super(), myCustomStyles]`
|
|
@@ -29,14 +36,24 @@ let NileGridRow = class NileGridRow extends NileElement {
|
|
|
29
36
|
}
|
|
30
37
|
render() {
|
|
31
38
|
return html `
|
|
32
|
-
<div part="row-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
39
|
+
<div part="grid-row-base" class="row-base">
|
|
40
|
+
<div part="row-slot" class="row-slot">
|
|
41
|
+
<slot></slot>
|
|
42
|
+
</div>
|
|
43
|
+
<div part="row-bg" class="row-bg"></div>
|
|
36
44
|
</div>
|
|
37
45
|
`;
|
|
38
46
|
}
|
|
39
47
|
};
|
|
48
|
+
__decorate([
|
|
49
|
+
property({ type: Boolean, reflect: true, attribute: true })
|
|
50
|
+
], NileGridRow.prototype, "disabled", void 0);
|
|
51
|
+
__decorate([
|
|
52
|
+
property({ type: Boolean, reflect: true, attribute: true })
|
|
53
|
+
], NileGridRow.prototype, "hover", void 0);
|
|
54
|
+
__decorate([
|
|
55
|
+
property({ type: Boolean, reflect: true, attribute: true })
|
|
56
|
+
], NileGridRow.prototype, "selected", void 0);
|
|
40
57
|
NileGridRow = __decorate([
|
|
41
58
|
customElement('nile-grid-row')
|
|
42
59
|
], NileGridRow);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nile-grid-row.js","sourceRoot":"","sources":["../../../../src/nile-grid/nile-grid-row/nile-grid-row.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;;AAEH,OAAO,EAAE,IAAI,EAAkD,MAAM,KAAK,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,WAAW,MAAM,6BAA6B,CAAC;AAEtD;;;;;GAKG;AAEI,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,WAAW;IAArC;;QASwD,aAAQ,GAAY,KAAK,CAAC;QAC1B,UAAK,GAAY,KAAK,CAAC;QACvB,aAAQ,GAAY,KAAK,CAAC;QAkBvF,gBAAgB;IAClB,CAAC;IA7BC;;;OAGG;IACI,MAAM,KAAK,MAAM;QACtB,OAAO,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAMD,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAES,MAAM;QACd,OAAO,IAAI,CAAA;;;;;;;KAOV,CAAC;IACJ,CAAC;CAGF,CAAA;AArB8D;IAA5D,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;6CAA2B;AAC1B;IAA5D,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;0CAAwB;AACvB;IAA5D,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;6CAA2B;AAX5E,WAAW;IADvB,aAAa,CAAC,eAAe,CAAC;GAClB,WAAW,CA8BvB;;AAED,eAAe,WAAW,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, PropertyValues } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styles } from './nile-grid-row.css';\nimport NileElement from '../../internal/nile-element';\n\n/**\n * Nile grid-row component.\n *\n * @tag nile-grid-row\n *\n */\n@customElement('nile-grid-row')\nexport class NileGridRow extends NileElement {\n /**\n * The styles for nile-grid-row\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 @property({ type: Boolean, reflect: true, attribute: true }) disabled: boolean = false;\n @property({ type: Boolean, reflect: true, attribute: true }) hover: boolean = false;\n @property({ type: Boolean, reflect: true, attribute: true }) selected: boolean = false;\n\n connectedCallback() {\n super.connectedCallback();\n this.setAttribute('role', 'row');\n }\n\n protected render() {\n return html`\n <div part=\"grid-row-base\" class=\"row-base\">\n <div part=\"row-slot\" class=\"row-slot\">\n <slot></slot>\n </div>\n <div part=\"row-bg\" class=\"row-bg\"></div>\n </div>\n `;\n }\n\n /* #endregion */\n}\n\nexport default NileGridRow;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-grid-row': NileGridRow;\n }\n}\n"]}
|
|
@@ -7,28 +7,31 @@
|
|
|
7
7
|
import { css } from 'lit';
|
|
8
8
|
export const styles = css `
|
|
9
9
|
:host {
|
|
10
|
+
--min-width: 180px;
|
|
10
11
|
display: grid;
|
|
11
12
|
grid-template-rows: auto;
|
|
12
13
|
overflow: auto;
|
|
13
14
|
inline-size: 100%;
|
|
14
15
|
position: relative;
|
|
15
|
-
contain: content;
|
|
16
16
|
box-sizing: border-box;
|
|
17
17
|
border: 1px solid var(--nile-colors-neutral-400);
|
|
18
18
|
border-radius: var(--nile-radius-radius-xl);
|
|
19
|
+
background-color: var(--nile-colors-white-base);
|
|
19
20
|
max-height: 100%;
|
|
21
|
+
width: 100%;
|
|
22
|
+
min-width: var(--min-width);
|
|
23
|
+
box-shadow: var(--nile-box-shadow-3);
|
|
20
24
|
}
|
|
21
25
|
|
|
22
26
|
::slotted(nile-grid-head),
|
|
23
27
|
::slotted(nile-grid-body) {
|
|
24
28
|
inline-size: 100%;
|
|
25
|
-
display: grid;
|
|
26
29
|
}
|
|
27
30
|
|
|
28
31
|
.nile-resize-start,
|
|
29
32
|
.nile-resize-end {
|
|
30
|
-
position:
|
|
31
|
-
z-index:
|
|
33
|
+
position: absolute;
|
|
34
|
+
z-index: 4;
|
|
32
35
|
background-color: var(--nile-colors-neutral-400);
|
|
33
36
|
width: 2px;
|
|
34
37
|
height: 100%;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nile-grid.css.js","sourceRoot":"","sources":["../../../src/nile-grid/nile-grid.css.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA
|
|
1
|
+
{"version":3,"file":"nile-grid.css.js","sourceRoot":"","sources":["../../../src/nile-grid/nile-grid.css.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,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\nexport const styles = css`\n :host {\n --min-width: 180px;\n display: grid;\n grid-template-rows: auto;\n overflow: auto;\n inline-size: 100%;\n position: relative;\n box-sizing: border-box;\n border: 1px solid var(--nile-colors-neutral-400);\n border-radius: var(--nile-radius-radius-xl);\n background-color: var(--nile-colors-white-base);\n max-height: 100%;\n width: 100%;\n min-width: var(--min-width);\n box-shadow: var(--nile-box-shadow-3);\n }\n\n ::slotted(nile-grid-head),\n ::slotted(nile-grid-body) {\n inline-size: 100%;\n }\n\n .nile-resize-start,\n .nile-resize-end {\n position: absolute;\n z-index: 4;\n background-color: var(--nile-colors-neutral-400);\n width: 2px;\n height: 100%;\n top: 0;\n display: none;\n bottom: 0;\n }\n`;\n\nexport default [styles];\n"]}
|
|
@@ -18,22 +18,37 @@ export declare class NileGrid extends NileElement {
|
|
|
18
18
|
* @remarks If you are extending this class you can extend the base styles with super. Eg `return [super(), myCustomStyles]`
|
|
19
19
|
*/
|
|
20
20
|
static get styles(): CSSResultArray;
|
|
21
|
-
/** User can pass custom widths for the columns */
|
|
22
|
-
customWidths: number[];
|
|
23
21
|
/** To set the grid template columns in rebuildTemplate method */
|
|
24
22
|
colTemplate: string;
|
|
25
23
|
/** To store the column widths in the beginning and after resizing */
|
|
26
|
-
|
|
24
|
+
columnWidths: number[];
|
|
27
25
|
/** To get the slot element */
|
|
28
|
-
|
|
26
|
+
slotEl: HTMLSlotElement;
|
|
29
27
|
/** To get the first resize line to show the resize handle */
|
|
30
28
|
resizeStart: HTMLElement;
|
|
31
29
|
/** To get the last resize line to show the resize handle */
|
|
32
30
|
resizeEnd: HTMLElement;
|
|
31
|
+
/** To enable horizontal scrolling when user is resizing */
|
|
32
|
+
enableResizeScroll: boolean;
|
|
33
|
+
/** To enable hoverable rows */
|
|
34
|
+
hoverable: boolean;
|
|
33
35
|
/** To store the mutation observer */
|
|
34
36
|
private mo?;
|
|
37
|
+
/** To store the resize observer */
|
|
38
|
+
private resizeObserver?;
|
|
39
|
+
private resizeObserverStickyShadows?;
|
|
35
40
|
/** To store the request animation frame */
|
|
36
41
|
private raf;
|
|
42
|
+
/** Minimum column width */
|
|
43
|
+
minColumnWidth: number;
|
|
44
|
+
/** To store the sticky index's */
|
|
45
|
+
stickyLeftIndexes: number[];
|
|
46
|
+
/** To store the sticky index's */
|
|
47
|
+
stickyRightIndexes: number[];
|
|
48
|
+
/** To calculate the rowspan height */
|
|
49
|
+
cellHeight: number | null;
|
|
50
|
+
/** To check if the widths are initialized */
|
|
51
|
+
widthsInitialized: boolean;
|
|
37
52
|
private scheduleLayout;
|
|
38
53
|
private ensureWidths;
|
|
39
54
|
private onResize;
|
|
@@ -9,7 +9,9 @@ import { html } from 'lit';
|
|
|
9
9
|
import { customElement, property, query, state } from 'lit/decorators.js';
|
|
10
10
|
import { styles } from './nile-grid.css';
|
|
11
11
|
import NileElement from '../internal/nile-element';
|
|
12
|
-
import {
|
|
12
|
+
import { rebuildTemplate, syncStickyShadows, layout } from './nile-grid.layout';
|
|
13
|
+
import { listenToEventListeners, removeEventListeners, getHead, getBody } from './nile-grid.utils';
|
|
14
|
+
import { computeNewWidth, resizeWithScroll, applyAfterResize, resizeNoScroll } from './nile-grid.resize';
|
|
13
15
|
/**
|
|
14
16
|
* Nile grid component.
|
|
15
17
|
*
|
|
@@ -19,29 +21,51 @@ import { resizeLinesHandler, listenToEventListeners, removeEventListeners, getHe
|
|
|
19
21
|
let NileGrid = class NileGrid extends NileElement {
|
|
20
22
|
constructor() {
|
|
21
23
|
super(...arguments);
|
|
22
|
-
/** User can pass custom widths for the columns */
|
|
23
|
-
this.customWidths = [];
|
|
24
24
|
/** To set the grid template columns in rebuildTemplate method */
|
|
25
25
|
this.colTemplate = '';
|
|
26
26
|
/** To store the column widths in the beginning and after resizing */
|
|
27
|
-
this.columnWidths = [
|
|
27
|
+
this.columnWidths = [];
|
|
28
|
+
/** To enable horizontal scrolling when user is resizing */
|
|
29
|
+
this.enableResizeScroll = false;
|
|
30
|
+
/** To enable hoverable rows */
|
|
31
|
+
this.hoverable = false;
|
|
28
32
|
/** To store the request animation frame */
|
|
29
33
|
this.raf = 0;
|
|
34
|
+
/** Minimum column width */
|
|
35
|
+
this.minColumnWidth = 40;
|
|
36
|
+
/** To store the sticky index's */
|
|
37
|
+
this.stickyLeftIndexes = [];
|
|
38
|
+
/** To store the sticky index's */
|
|
39
|
+
this.stickyRightIndexes = [];
|
|
40
|
+
/** To calculate the rowspan height */
|
|
41
|
+
this.cellHeight = null;
|
|
42
|
+
/** To check if the widths are initialized */
|
|
43
|
+
this.widthsInitialized = false;
|
|
30
44
|
this.onResize = (e) => {
|
|
45
|
+
e.stopPropagation();
|
|
46
|
+
this.emit('nile-resize', {
|
|
47
|
+
columnNumber: e.detail.col,
|
|
48
|
+
columnWidth: e.detail.widthPx,
|
|
49
|
+
});
|
|
31
50
|
const { col, widthPx } = e.detail;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
51
|
+
const { prevW, newW, delta0 } = computeNewWidth({
|
|
52
|
+
target: e.target,
|
|
53
|
+
col,
|
|
54
|
+
widthPx,
|
|
55
|
+
floor: this.minColumnWidth,
|
|
56
|
+
columnWidths: this.columnWidths,
|
|
57
|
+
});
|
|
58
|
+
if (delta0 === 0) {
|
|
59
|
+
applyAfterResize(this, col);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
if (!this.enableResizeScroll) {
|
|
63
|
+
resizeNoScroll({ grid: this, col, prevW, newW, floor: this.minColumnWidth });
|
|
37
64
|
}
|
|
38
65
|
else {
|
|
39
|
-
|
|
66
|
+
resizeWithScroll({ grid: this, col, newW });
|
|
40
67
|
}
|
|
41
|
-
this
|
|
42
|
-
resizeLinesHandler(this.resizeStart, this.resizeEnd, col, widthPx, this.scrollHeight, this.columnWidths, e);
|
|
43
|
-
this.colTemplate = rebuildTemplate(this.columnWidths.length, this.columnWidths);
|
|
44
|
-
applyTemplate(getHead(this.slotEl), getBody(this.slotEl), this.colTemplate);
|
|
68
|
+
applyAfterResize(this, col);
|
|
45
69
|
};
|
|
46
70
|
/* #endregion */
|
|
47
71
|
}
|
|
@@ -57,7 +81,8 @@ let NileGrid = class NileGrid extends NileElement {
|
|
|
57
81
|
cancelAnimationFrame(this.raf);
|
|
58
82
|
this.raf = requestAnimationFrame(() => {
|
|
59
83
|
this.raf = 0;
|
|
60
|
-
layout(this, this.slotEl, this.ensureWidths.bind(this), rebuildTemplate,
|
|
84
|
+
layout(this, this.slotEl, this.ensureWidths.bind(this), rebuildTemplate, this.stickyLeftIndexes, this.stickyRightIndexes);
|
|
85
|
+
syncStickyShadows(this);
|
|
61
86
|
});
|
|
62
87
|
}
|
|
63
88
|
ensureWidths(colCount) {
|
|
@@ -68,12 +93,20 @@ let NileGrid = class NileGrid extends NileElement {
|
|
|
68
93
|
firstUpdated() {
|
|
69
94
|
this.setAttribute('role', 'table');
|
|
70
95
|
listenToEventListeners(this, this.onResize, this.slotEl, this._attachObserverAndLayout.bind(this));
|
|
96
|
+
this.addEventListener('scroll', () => syncStickyShadows(this));
|
|
97
|
+
this.resizeObserverStickyShadows = new ResizeObserver(() => syncStickyShadows(this));
|
|
98
|
+
this.resizeObserverStickyShadows.observe(this);
|
|
99
|
+
syncStickyShadows(this);
|
|
71
100
|
}
|
|
72
101
|
_attachObserverAndLayout() {
|
|
73
102
|
this.mo?.disconnect();
|
|
74
103
|
this.mo = new MutationObserver(() => {
|
|
75
104
|
this.scheduleLayout();
|
|
76
105
|
});
|
|
106
|
+
this.resizeObserver?.disconnect();
|
|
107
|
+
this.resizeObserver = new ResizeObserver(() => {
|
|
108
|
+
layout(this, this.slotEl, this.ensureWidths.bind(this), rebuildTemplate, this.stickyLeftIndexes, this.stickyRightIndexes);
|
|
109
|
+
});
|
|
77
110
|
const head = getHead(this.slotEl);
|
|
78
111
|
const body = getBody(this.slotEl);
|
|
79
112
|
if (!head && !body)
|
|
@@ -85,28 +118,27 @@ let NileGrid = class NileGrid extends NileElement {
|
|
|
85
118
|
attributes: true,
|
|
86
119
|
attributeFilter: ['colspan', 'rowspan'],
|
|
87
120
|
});
|
|
88
|
-
|
|
121
|
+
this.resizeObserver?.observe(this);
|
|
89
122
|
}
|
|
90
123
|
render() {
|
|
91
124
|
return html `
|
|
92
|
-
<div>
|
|
93
|
-
<slot></slot>
|
|
94
|
-
<div class="nile-resize-start"></div>
|
|
95
|
-
<div class="nile-resize-end"></div>
|
|
125
|
+
<div part="grid-base" class="nile-grid-base">
|
|
126
|
+
<slot part="grid-slot"></slot>
|
|
127
|
+
<div part="resize-start" class="nile-resize-start"></div>
|
|
128
|
+
<div part="resize-end" class="nile-resize-end"></div>
|
|
96
129
|
</div>
|
|
97
130
|
`;
|
|
98
131
|
}
|
|
99
132
|
disconnectedCallback() {
|
|
100
133
|
super.disconnectedCallback?.();
|
|
101
134
|
this.mo?.disconnect();
|
|
135
|
+
this.resizeObserver?.disconnect();
|
|
136
|
+
this.resizeObserverStickyShadows?.disconnect();
|
|
102
137
|
if (this.raf)
|
|
103
138
|
cancelAnimationFrame(this.raf);
|
|
104
139
|
removeEventListeners(this, this.onResize, this.slotEl, this._attachObserverAndLayout.bind(this));
|
|
105
140
|
}
|
|
106
141
|
};
|
|
107
|
-
__decorate([
|
|
108
|
-
property({ type: Array, attribute: true })
|
|
109
|
-
], NileGrid.prototype, "customWidths", void 0);
|
|
110
142
|
__decorate([
|
|
111
143
|
state()
|
|
112
144
|
], NileGrid.prototype, "colTemplate", void 0);
|
|
@@ -122,6 +154,27 @@ __decorate([
|
|
|
122
154
|
__decorate([
|
|
123
155
|
query('.nile-resize-end')
|
|
124
156
|
], NileGrid.prototype, "resizeEnd", void 0);
|
|
157
|
+
__decorate([
|
|
158
|
+
property({ type: Boolean, attribute: true, reflect: true })
|
|
159
|
+
], NileGrid.prototype, "enableResizeScroll", void 0);
|
|
160
|
+
__decorate([
|
|
161
|
+
property({ type: Boolean, attribute: true, reflect: true })
|
|
162
|
+
], NileGrid.prototype, "hoverable", void 0);
|
|
163
|
+
__decorate([
|
|
164
|
+
property({ type: Number, reflect: true, attribute: true })
|
|
165
|
+
], NileGrid.prototype, "minColumnWidth", void 0);
|
|
166
|
+
__decorate([
|
|
167
|
+
state()
|
|
168
|
+
], NileGrid.prototype, "stickyLeftIndexes", void 0);
|
|
169
|
+
__decorate([
|
|
170
|
+
state()
|
|
171
|
+
], NileGrid.prototype, "stickyRightIndexes", void 0);
|
|
172
|
+
__decorate([
|
|
173
|
+
state()
|
|
174
|
+
], NileGrid.prototype, "cellHeight", void 0);
|
|
175
|
+
__decorate([
|
|
176
|
+
state()
|
|
177
|
+
], NileGrid.prototype, "widthsInitialized", void 0);
|
|
125
178
|
NileGrid = __decorate([
|
|
126
179
|
customElement('nile-grid')
|
|
127
180
|
], NileGrid);
|
|
@@ -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 { 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
|
+
{"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 { rebuildTemplate, syncStickyShadows, layout } from './nile-grid.layout';\nimport { listenToEventListeners, removeEventListeners, getHead, getBody } from './nile-grid.utils';\nimport { computeNewWidth, resizeWithScroll, applyAfterResize, resizeNoScroll } from './nile-grid.resize';\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') public 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 }) enableResizeScroll: boolean = false;\n\n /** To enable hoverable rows */\n @property({ type: Boolean, attribute: true, reflect: true }) hoverable: 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 private resizeObserverStickyShadows?: ResizeObserver;\n\n /** To store the request animation frame */\n private raf = 0;\n\n /** Minimum column width */\n @property({ type: Number, reflect: true, attribute: true }) minColumnWidth = 40;\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 /** To calculate the rowspan height */\n @state() public cellHeight: number | null = null;\n\n /** To check if the widths are initialized */\n @state() public widthsInitialized = false;\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 this.stickyLeftIndexes,\n this.stickyRightIndexes\n );\n syncStickyShadows(this);\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 e.stopPropagation();\n this.emit('nile-resize', {\n columnNumber: (e as CustomEvent).detail.col,\n columnWidth: (e as CustomEvent).detail.widthPx,\n });\n const { col, widthPx } = (e as CustomEvent).detail as {\n col: number;\n widthPx: number;\n };\n const { prevW, newW, delta0 } = computeNewWidth({\n target: e.target as HTMLElement,\n col,\n widthPx,\n floor: this.minColumnWidth,\n columnWidths: this.columnWidths,\n });\n\n if (delta0 === 0) {\n applyAfterResize(this, col);\n return;\n }\n\n if (!this.enableResizeScroll) {\n resizeNoScroll({ grid: this, col, prevW, newW, floor: this.minColumnWidth });\n } else {\n resizeWithScroll({ grid: this, col, newW });\n }\n applyAfterResize(this, col);\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 this.addEventListener('scroll', () => syncStickyShadows(this));\n this.resizeObserverStickyShadows = new ResizeObserver(() => syncStickyShadows(this));\n this.resizeObserverStickyShadows.observe(this);\n syncStickyShadows(this);\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 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 }\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 this.resizeObserverStickyShadows?.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"]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { NileGrid } from './nile-grid';
|
|
2
|
+
/**
|
|
3
|
+
* @param nileGrid Parent NileGrid instance
|
|
4
|
+
* @param slotEl <slot> element hosting head/body
|
|
5
|
+
* @param ensureWidths Function to ensure columnWidths length matches colCount
|
|
6
|
+
* @param rebuildTemplate Function(colCount, widths) -> grid-template string
|
|
7
|
+
* @param stickyLeftIndexes Mutable list of left-sticky column indexes
|
|
8
|
+
* @param stickyRightIndexes Mutable list of right-sticky column indexes
|
|
9
|
+
* @returns void
|
|
10
|
+
*/
|
|
11
|
+
export declare const layout: (nileGrid: NileGrid, slotEl: any, ensureWidths: any, rebuildTemplate: any, stickyLeftIndexes: number[], stickyRightIndexes: number[]) => void;
|
|
12
|
+
/**
|
|
13
|
+
* @param nileGrid Grid instance to sync shadows for
|
|
14
|
+
*/
|
|
15
|
+
export declare function syncStickyShadows(nileGrid: NileGrid): void;
|
|
16
|
+
/** rebuildTemplate
|
|
17
|
+
* @param colCount Number of columns
|
|
18
|
+
* @param columnWidths Array of explicit column widths (px)
|
|
19
|
+
* @returns CSS grid-template-columns string
|
|
20
|
+
*/
|
|
21
|
+
export declare const rebuildTemplate: (colCount: number, columnWidths: number[]) => string;
|
|
22
|
+
/**
|
|
23
|
+
* @param nileGrid Grid container element
|
|
24
|
+
* @param colCount Total number of columns
|
|
25
|
+
* @param columnWidths Column width array
|
|
26
|
+
* @param headElement Header element for template update
|
|
27
|
+
*/
|
|
28
|
+
export declare function applyColumnsTemplate(nileGrid: NileGrid, columnWidths: number[]): void;
|