@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
|
@@ -5,20 +5,13 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import {
|
|
8
|
+
import { html, CSSResultArray, TemplateResult } 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 {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
removeEventListeners,
|
|
16
|
-
getHead,
|
|
17
|
-
getBody,
|
|
18
|
-
rebuildTemplate,
|
|
19
|
-
applyTemplate,
|
|
20
|
-
layout,
|
|
21
|
-
} from './nile-grid.utils';
|
|
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';
|
|
22
15
|
|
|
23
16
|
/**
|
|
24
17
|
* Nile grid component.
|
|
@@ -35,17 +28,15 @@ export class NileGrid extends NileElement {
|
|
|
35
28
|
public static get styles(): CSSResultArray {
|
|
36
29
|
return [styles];
|
|
37
30
|
}
|
|
38
|
-
/** User can pass custom widths for the columns */
|
|
39
|
-
@property({ type: Array, attribute: true }) customWidths: number[] = [];
|
|
40
31
|
|
|
41
32
|
/** To set the grid template columns in rebuildTemplate method */
|
|
42
33
|
@state() public colTemplate = '';
|
|
43
34
|
|
|
44
35
|
/** To store the column widths in the beginning and after resizing */
|
|
45
|
-
@state()
|
|
36
|
+
@state() public columnWidths: number[] = [];
|
|
46
37
|
|
|
47
38
|
/** To get the slot element */
|
|
48
|
-
@query('slot')
|
|
39
|
+
@query('slot') public slotEl!: HTMLSlotElement;
|
|
49
40
|
|
|
50
41
|
/** To get the first resize line to show the resize handle */
|
|
51
42
|
@query('.nile-resize-start') resizeStart: HTMLElement;
|
|
@@ -53,12 +44,38 @@ export class NileGrid extends NileElement {
|
|
|
53
44
|
/** To get the last resize line to show the resize handle */
|
|
54
45
|
@query('.nile-resize-end') resizeEnd: HTMLElement;
|
|
55
46
|
|
|
47
|
+
/** To enable horizontal scrolling when user is resizing */
|
|
48
|
+
@property({ type: Boolean, attribute: true, reflect: true }) enableResizeScroll: boolean = false;
|
|
49
|
+
|
|
50
|
+
/** To enable hoverable rows */
|
|
51
|
+
@property({ type: Boolean, attribute: true, reflect: true }) hoverable: boolean = false;
|
|
52
|
+
|
|
56
53
|
/** To store the mutation observer */
|
|
57
54
|
private mo?: MutationObserver;
|
|
58
55
|
|
|
56
|
+
/** To store the resize observer */
|
|
57
|
+
private resizeObserver?: ResizeObserver;
|
|
58
|
+
|
|
59
|
+
private resizeObserverStickyShadows?: ResizeObserver;
|
|
60
|
+
|
|
59
61
|
/** To store the request animation frame */
|
|
60
62
|
private raf = 0;
|
|
61
63
|
|
|
64
|
+
/** Minimum column width */
|
|
65
|
+
@property({ type: Number, reflect: true, attribute: true }) minColumnWidth = 40;
|
|
66
|
+
|
|
67
|
+
/** To store the sticky index's */
|
|
68
|
+
@state() public stickyLeftIndexes: number[] = [];
|
|
69
|
+
|
|
70
|
+
/** To store the sticky index's */
|
|
71
|
+
@state() public stickyRightIndexes: number[] = [];
|
|
72
|
+
|
|
73
|
+
/** To calculate the rowspan height */
|
|
74
|
+
@state() public cellHeight: number | null = null;
|
|
75
|
+
|
|
76
|
+
/** To check if the widths are initialized */
|
|
77
|
+
@state() public widthsInitialized = false;
|
|
78
|
+
|
|
62
79
|
private scheduleLayout() {
|
|
63
80
|
if (this.raf) cancelAnimationFrame(this.raf);
|
|
64
81
|
this.raf = requestAnimationFrame(() => {
|
|
@@ -68,9 +85,10 @@ export class NileGrid extends NileElement {
|
|
|
68
85
|
this.slotEl,
|
|
69
86
|
this.ensureWidths.bind(this),
|
|
70
87
|
rebuildTemplate,
|
|
71
|
-
|
|
72
|
-
this.
|
|
88
|
+
this.stickyLeftIndexes,
|
|
89
|
+
this.stickyRightIndexes
|
|
73
90
|
);
|
|
91
|
+
syncStickyShadows(this);
|
|
74
92
|
});
|
|
75
93
|
}
|
|
76
94
|
|
|
@@ -81,36 +99,34 @@ export class NileGrid extends NileElement {
|
|
|
81
99
|
}
|
|
82
100
|
|
|
83
101
|
private onResize = (e: Event) => {
|
|
102
|
+
e.stopPropagation();
|
|
103
|
+
this.emit('nile-resize', {
|
|
104
|
+
columnNumber: (e as CustomEvent).detail.col,
|
|
105
|
+
columnWidth: (e as CustomEvent).detail.widthPx,
|
|
106
|
+
});
|
|
84
107
|
const { col, widthPx } = (e as CustomEvent).detail as {
|
|
85
108
|
col: number;
|
|
86
109
|
widthPx: number;
|
|
87
110
|
};
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
if (
|
|
92
|
-
(e.target as HTMLElement).getAttribute('colspan') &&
|
|
93
|
-
parseInt((e.target as HTMLElement).getAttribute('colspan')!) > 1
|
|
94
|
-
) {
|
|
95
|
-
w = Math.max(floor, Math.round(widthPx - this.columnWidths[col - 1]));
|
|
96
|
-
} else {
|
|
97
|
-
w = Math.max(floor, Math.round(widthPx));
|
|
98
|
-
}
|
|
99
|
-
this.columnWidths[col] = w;
|
|
100
|
-
resizeLinesHandler(
|
|
101
|
-
this.resizeStart,
|
|
102
|
-
this.resizeEnd,
|
|
111
|
+
const { prevW, newW, delta0 } = computeNewWidth({
|
|
112
|
+
target: e.target as HTMLElement,
|
|
103
113
|
col,
|
|
104
114
|
widthPx,
|
|
105
|
-
this.
|
|
106
|
-
this.columnWidths,
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
this
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
115
|
+
floor: this.minColumnWidth,
|
|
116
|
+
columnWidths: this.columnWidths,
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
if (delta0 === 0) {
|
|
120
|
+
applyAfterResize(this, col);
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
if (!this.enableResizeScroll) {
|
|
125
|
+
resizeNoScroll({ grid: this, col, prevW, newW, floor: this.minColumnWidth });
|
|
126
|
+
} else {
|
|
127
|
+
resizeWithScroll({ grid: this, col, newW });
|
|
128
|
+
}
|
|
129
|
+
applyAfterResize(this, col);
|
|
114
130
|
};
|
|
115
131
|
|
|
116
132
|
protected firstUpdated() {
|
|
@@ -121,6 +137,10 @@ export class NileGrid extends NileElement {
|
|
|
121
137
|
this.slotEl,
|
|
122
138
|
this._attachObserverAndLayout.bind(this)
|
|
123
139
|
);
|
|
140
|
+
this.addEventListener('scroll', () => syncStickyShadows(this));
|
|
141
|
+
this.resizeObserverStickyShadows = new ResizeObserver(() => syncStickyShadows(this));
|
|
142
|
+
this.resizeObserverStickyShadows.observe(this);
|
|
143
|
+
syncStickyShadows(this);
|
|
124
144
|
}
|
|
125
145
|
|
|
126
146
|
private _attachObserverAndLayout() {
|
|
@@ -128,6 +148,17 @@ export class NileGrid extends NileElement {
|
|
|
128
148
|
this.mo = new MutationObserver(() => {
|
|
129
149
|
this.scheduleLayout();
|
|
130
150
|
});
|
|
151
|
+
this.resizeObserver?.disconnect();
|
|
152
|
+
this.resizeObserver = new ResizeObserver(() => {
|
|
153
|
+
layout(
|
|
154
|
+
this,
|
|
155
|
+
this.slotEl,
|
|
156
|
+
this.ensureWidths.bind(this),
|
|
157
|
+
rebuildTemplate,
|
|
158
|
+
this.stickyLeftIndexes,
|
|
159
|
+
this.stickyRightIndexes
|
|
160
|
+
);
|
|
161
|
+
});
|
|
131
162
|
|
|
132
163
|
const head = getHead(this.slotEl);
|
|
133
164
|
const body = getBody(this.slotEl);
|
|
@@ -140,22 +171,15 @@ export class NileGrid extends NileElement {
|
|
|
140
171
|
attributes: true,
|
|
141
172
|
attributeFilter: ['colspan', 'rowspan'],
|
|
142
173
|
});
|
|
143
|
-
|
|
144
|
-
this,
|
|
145
|
-
this.slotEl,
|
|
146
|
-
this.ensureWidths.bind(this),
|
|
147
|
-
rebuildTemplate,
|
|
148
|
-
applyTemplate,
|
|
149
|
-
this.columnWidths
|
|
150
|
-
);
|
|
174
|
+
this.resizeObserver?.observe(this);
|
|
151
175
|
}
|
|
152
176
|
|
|
153
177
|
public render(): TemplateResult {
|
|
154
178
|
return html`
|
|
155
|
-
<div>
|
|
156
|
-
<slot></slot>
|
|
157
|
-
<div class="nile-resize-start"></div>
|
|
158
|
-
<div class="nile-resize-end"></div>
|
|
179
|
+
<div part="grid-base" class="nile-grid-base">
|
|
180
|
+
<slot part="grid-slot"></slot>
|
|
181
|
+
<div part="resize-start" class="nile-resize-start"></div>
|
|
182
|
+
<div part="resize-end" class="nile-resize-end"></div>
|
|
159
183
|
</div>
|
|
160
184
|
`;
|
|
161
185
|
}
|
|
@@ -163,6 +187,8 @@ export class NileGrid extends NileElement {
|
|
|
163
187
|
disconnectedCallback(): void {
|
|
164
188
|
super.disconnectedCallback?.();
|
|
165
189
|
this.mo?.disconnect();
|
|
190
|
+
this.resizeObserver?.disconnect();
|
|
191
|
+
this.resizeObserverStickyShadows?.disconnect();
|
|
166
192
|
|
|
167
193
|
if (this.raf) cancelAnimationFrame(this.raf);
|
|
168
194
|
removeEventListeners(
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type HeadItemEl = HTMLElement & { width?: number | null };
|
|
@@ -1,48 +1,20 @@
|
|
|
1
1
|
import { NileGrid } from './nile-grid';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
) => {
|
|
12
|
-
resizeStart.style.display = 'block';
|
|
13
|
-
resizeEnd.style.display = 'block';
|
|
14
|
-
resizeStart.style.height = scrollHeight + 'px';
|
|
15
|
-
resizeEnd.style.height = scrollHeight + 'px';
|
|
16
|
-
if (col === 0) {
|
|
17
|
-
resizeStart.style.left = `${Math.max(60, widthPx) - 6}px`;
|
|
18
|
-
resizeEnd.style.left = `${Math.max(60, widthPx) - 2}px`;
|
|
19
|
-
} else {
|
|
20
|
-
let totalWidth = 0;
|
|
21
|
-
if (
|
|
22
|
-
(e.target as HTMLElement).getAttribute('colspan') &&
|
|
23
|
-
parseInt((e.target as HTMLElement).getAttribute('colspan')!) > 1
|
|
24
|
-
) {
|
|
25
|
-
widthPx = widthPx - columnWidths[col - 1];
|
|
26
|
-
for (let i = 0; i < col; i++) {
|
|
27
|
-
totalWidth += columnWidths[i];
|
|
28
|
-
}
|
|
29
|
-
} else {
|
|
30
|
-
for (let i = 0; i < col; i++) {
|
|
31
|
-
totalWidth += columnWidths[i];
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
resizeStart.style.left = `${totalWidth + Math.max(60, widthPx) - 6}px`;
|
|
35
|
-
resizeEnd.style.left = `${totalWidth + Math.max(60, widthPx) - 2}px`;
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
|
|
2
|
+
import { HeadItemEl } from './nile-grid.types';
|
|
3
|
+
|
|
4
|
+
/** listenToEventListeners
|
|
5
|
+
* @param nileGrid Grid element to attach listeners on
|
|
6
|
+
* @param onResize Handler for 'nile-column-resize'
|
|
7
|
+
* @param slotEl Slot element to watch for 'slotchange'
|
|
8
|
+
* @param _attachObserverAndLayout Callback to reattach observer + layout
|
|
9
|
+
* @returns void
|
|
10
|
+
*/
|
|
39
11
|
export const listenToEventListeners = (
|
|
40
12
|
nileGrid: NileGrid,
|
|
41
13
|
onResize: any,
|
|
42
14
|
slotEl: any,
|
|
43
15
|
_attachObserverAndLayout: any
|
|
44
16
|
) => {
|
|
45
|
-
nileGrid.addEventListener('nile-resize', onResize);
|
|
17
|
+
nileGrid.addEventListener('nile-column-resize', onResize);
|
|
46
18
|
nileGrid.addEventListener('nile-resize-start', () => {
|
|
47
19
|
nileGrid.resizeStart.style.display = 'block';
|
|
48
20
|
});
|
|
@@ -53,13 +25,20 @@ export const listenToEventListeners = (
|
|
|
53
25
|
slotEl.addEventListener('slotchange', () => _attachObserverAndLayout());
|
|
54
26
|
};
|
|
55
27
|
|
|
28
|
+
/** removeEventListeners
|
|
29
|
+
* @param nileGrid Grid element to detach listeners from
|
|
30
|
+
* @param onResize Handler previously attached to 'nile-column-resize'
|
|
31
|
+
* @param slotEl Slot element to remove 'slotchange' from
|
|
32
|
+
* @param _attachObserverAndLayout Callback reference used during attach
|
|
33
|
+
* @returns void
|
|
34
|
+
*/
|
|
56
35
|
export const removeEventListeners = (
|
|
57
36
|
nileGrid: NileGrid,
|
|
58
37
|
onResize: any,
|
|
59
38
|
slotEl: any,
|
|
60
39
|
_attachObserverAndLayout: any
|
|
61
40
|
) => {
|
|
62
|
-
nileGrid.removeEventListener('nile-resize', onResize);
|
|
41
|
+
nileGrid.removeEventListener('nile-column-resize', onResize);
|
|
63
42
|
nileGrid.removeEventListener('nile-resize-start', () => {
|
|
64
43
|
nileGrid.resizeStart.style.display = 'block';
|
|
65
44
|
});
|
|
@@ -70,6 +49,10 @@ export const removeEventListeners = (
|
|
|
70
49
|
slotEl.removeEventListener('slotchange', () => _attachObserverAndLayout());
|
|
71
50
|
};
|
|
72
51
|
|
|
52
|
+
/** getHead
|
|
53
|
+
* @param slotEl Slot element containing assigned nodes
|
|
54
|
+
* @returns <nile-grid-head> element or null
|
|
55
|
+
*/
|
|
73
56
|
export const getHead = (slotEl: any) => {
|
|
74
57
|
const nodes = slotEl?.assignedElements() ?? [];
|
|
75
58
|
return (
|
|
@@ -79,6 +62,10 @@ export const getHead = (slotEl: any) => {
|
|
|
79
62
|
);
|
|
80
63
|
};
|
|
81
64
|
|
|
65
|
+
/** getBody
|
|
66
|
+
* @param slotEl Slot element containing assigned nodes
|
|
67
|
+
* @returns <nile-grid-body> element or null
|
|
68
|
+
*/
|
|
82
69
|
export const getBody = (slotEl: any) => {
|
|
83
70
|
const nodes = slotEl?.assignedElements() ?? [];
|
|
84
71
|
return (
|
|
@@ -86,167 +73,4 @@ export const getBody = (slotEl: any) => {
|
|
|
86
73
|
(n: any) => n.tagName.toLowerCase() === 'nile-grid-body'
|
|
87
74
|
) as HTMLElement) || null
|
|
88
75
|
);
|
|
89
|
-
};
|
|
90
|
-
|
|
91
|
-
export const rebuildTemplate = (
|
|
92
|
-
colCount: number,
|
|
93
|
-
columnWidths: number[]
|
|
94
|
-
): string => {
|
|
95
|
-
const parts: string[] = [];
|
|
96
|
-
|
|
97
|
-
for (let i = 0; i < colCount; i++) {
|
|
98
|
-
const explicit = columnWidths[i];
|
|
99
|
-
if (i === colCount - 1) {
|
|
100
|
-
parts.push(`minmax(${explicit}px, auto)`);
|
|
101
|
-
} else {
|
|
102
|
-
parts.push(`${explicit}px`);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
return parts.join(' ');
|
|
106
|
-
};
|
|
107
|
-
|
|
108
|
-
export const applyTemplate = (
|
|
109
|
-
head: HTMLElement | null,
|
|
110
|
-
body: HTMLElement | null,
|
|
111
|
-
colTemplate: string
|
|
112
|
-
) => {
|
|
113
|
-
if (head) head.style.gridTemplateColumns = colTemplate;
|
|
114
|
-
if (body) {
|
|
115
|
-
body.style.gridTemplateColumns = colTemplate;
|
|
116
|
-
body.style.overflowX = 'auto';
|
|
117
|
-
}
|
|
118
|
-
};
|
|
119
|
-
|
|
120
|
-
function computeHeadLayout(
|
|
121
|
-
headRows: HTMLElement[],
|
|
122
|
-
carryHead: number[],
|
|
123
|
-
colCount: number
|
|
124
|
-
): number {
|
|
125
|
-
headRows.forEach((row, rIdx) => {
|
|
126
|
-
let c = 1;
|
|
127
|
-
const cells = Array.from(
|
|
128
|
-
row.querySelectorAll('nile-grid-head-item, nile-grid-cell')
|
|
129
|
-
) as HTMLElement[];
|
|
130
|
-
const rStart = rIdx + 1;
|
|
131
|
-
|
|
132
|
-
cells.forEach(cell => {
|
|
133
|
-
while (carryHead[c - 1] > 0) c++;
|
|
134
|
-
const colspan = Math.max(1, Number(cell.getAttribute('colspan')) || 1);
|
|
135
|
-
const rowspan = Math.max(1, Number(cell.getAttribute('rowspan')) || 1);
|
|
136
|
-
|
|
137
|
-
const cStart = c,
|
|
138
|
-
cEnd = c + colspan;
|
|
139
|
-
const rEnd = rStart + rowspan;
|
|
140
|
-
|
|
141
|
-
cell.style.gridColumn = `${cStart} / ${cEnd}`;
|
|
142
|
-
cell.style.gridRow = `${rStart} / ${rEnd}`;
|
|
143
|
-
(cell as any).dataset.cStart = String(cStart);
|
|
144
|
-
|
|
145
|
-
for (let k = 0; k < colspan; k++) {
|
|
146
|
-
const idx = c - 1 + k;
|
|
147
|
-
carryHead[idx] = Math.max(carryHead[idx] || 0, rowspan);
|
|
148
|
-
}
|
|
149
|
-
c = cEnd;
|
|
150
|
-
colCount = Math.max(colCount, cEnd - 1);
|
|
151
|
-
});
|
|
152
|
-
|
|
153
|
-
for (let i = 0; i < carryHead.length; i++)
|
|
154
|
-
if (carryHead[i] > 0) carryHead[i]--;
|
|
155
|
-
});
|
|
156
|
-
return colCount;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
function computeBodyLayout(
|
|
160
|
-
bodyRows: HTMLElement[],
|
|
161
|
-
carryBody: number[],
|
|
162
|
-
colCount: number
|
|
163
|
-
) {
|
|
164
|
-
bodyRows.forEach((row, rIdx) => {
|
|
165
|
-
let c = 1;
|
|
166
|
-
const cells = Array.from(
|
|
167
|
-
row.querySelectorAll('nile-grid-cell, nile-grid-header')
|
|
168
|
-
) as HTMLElement[];
|
|
169
|
-
const rStart = rIdx + 1;
|
|
170
|
-
let maxRowspan = 1;
|
|
171
|
-
|
|
172
|
-
const bg = row.shadowRoot?.querySelector<HTMLElement>('[data-row-bg]');
|
|
173
|
-
if (bg) bg.style.gridColumn = `1 / -1`;
|
|
174
|
-
|
|
175
|
-
cells.forEach(cell => {
|
|
176
|
-
while (carryBody[c - 1] > 0) c++;
|
|
177
|
-
const colspan = Math.max(1, Number(cell.getAttribute('colspan')) || 1);
|
|
178
|
-
const rowspan = Math.max(1, Number(cell.getAttribute('rowspan')) || 1);
|
|
179
|
-
|
|
180
|
-
const cStart = c,
|
|
181
|
-
cEnd = c + colspan;
|
|
182
|
-
const rEnd = rStart + rowspan;
|
|
183
|
-
|
|
184
|
-
cell.style.gridColumn = `${cStart} / ${cEnd}`;
|
|
185
|
-
cell.style.gridRow = `${rStart} / ${rEnd}`;
|
|
186
|
-
(cell as any).dataset.cStart = String(cStart);
|
|
187
|
-
|
|
188
|
-
for (let k = 0; k < colspan; k++) {
|
|
189
|
-
const idx = c - 1 + k;
|
|
190
|
-
carryBody[idx] = Math.max(carryBody[idx] || 0, rowspan);
|
|
191
|
-
}
|
|
192
|
-
maxRowspan = Math.max(maxRowspan, rowspan);
|
|
193
|
-
c = cEnd;
|
|
194
|
-
colCount = Math.max(colCount, cEnd - 1);
|
|
195
|
-
});
|
|
196
|
-
|
|
197
|
-
if (bg) {
|
|
198
|
-
const rEnd = rStart + maxRowspan;
|
|
199
|
-
bg.style.gridRow = `${rStart} / ${rEnd}`;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
for (let i = 0; i < carryBody.length; i++)
|
|
203
|
-
if (carryBody[i] > 0) carryBody[i]--;
|
|
204
|
-
});
|
|
205
|
-
|
|
206
|
-
return colCount;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
function computeColumnWidths(
|
|
210
|
-
nileGrid: NileGrid,
|
|
211
|
-
colCount: number,
|
|
212
|
-
columnWidths: number[]
|
|
213
|
-
) {
|
|
214
|
-
for (let col = 0; col < colCount; col++) {
|
|
215
|
-
const containerWidth = (nileGrid.getBoundingClientRect().width || 1) - 2;
|
|
216
|
-
columnWidths[col] =
|
|
217
|
-
nileGrid.customWidths[col] || containerWidth / Math.max(colCount, 1);
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
export const layout = (
|
|
222
|
-
nileGrid: NileGrid,
|
|
223
|
-
slotEl: any,
|
|
224
|
-
ensureWidths: any,
|
|
225
|
-
rebuildTemplate: any,
|
|
226
|
-
applyTemplate: any,
|
|
227
|
-
columnWidths: any
|
|
228
|
-
) => {
|
|
229
|
-
const head = getHead(slotEl);
|
|
230
|
-
const body = getBody(slotEl);
|
|
231
|
-
if (!body) return;
|
|
232
|
-
|
|
233
|
-
const headRows = head
|
|
234
|
-
? (Array.from(head.querySelectorAll('nile-grid-row')) as HTMLElement[])
|
|
235
|
-
: [];
|
|
236
|
-
const bodyRows = Array.from(
|
|
237
|
-
body.querySelectorAll('nile-grid-row')
|
|
238
|
-
) as HTMLElement[];
|
|
239
|
-
|
|
240
|
-
let colCount = 0;
|
|
241
|
-
|
|
242
|
-
colCount = computeHeadLayout(headRows, [], colCount);
|
|
243
|
-
colCount = computeBodyLayout(bodyRows, [], colCount);
|
|
244
|
-
|
|
245
|
-
computeColumnWidths(nileGrid, colCount, columnWidths);
|
|
246
|
-
|
|
247
|
-
ensureWidths(colCount);
|
|
248
|
-
body.style.gridAutoRows = 'auto';
|
|
249
|
-
body.style.overflowY = 'auto';
|
|
250
|
-
nileGrid.colTemplate = rebuildTemplate(colCount, columnWidths);
|
|
251
|
-
applyTemplate(head, body, nileGrid.colTemplate, nileGrid.colTemplate);
|
|
252
|
-
};
|
|
76
|
+
};
|