@nanoporetech-digital/components 5.1.3 → 5.2.1
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/CHANGELOG.md +26 -0
- package/dist/cjs/{component-store-74d25f63.js → component-store-f1dc1276.js} +2 -2
- package/dist/cjs/{component-store-74d25f63.js.map → component-store-f1dc1276.js.map} +1 -1
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/nano-algolia-filter.cjs.entry.js +2 -2
- package/dist/cjs/nano-algolia-input.cjs.entry.js +2 -2
- package/dist/cjs/nano-algolia.cjs.entry.js +2 -2
- package/dist/cjs/nano-checkbox-group.cjs.entry.js +1 -1
- package/dist/cjs/nano-components.cjs.js +1 -1
- package/dist/cjs/nano-datalist_3.cjs.entry.js +1 -1
- package/dist/cjs/nano-dialog.cjs.entry.js +2 -2
- package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js +2 -2
- package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-nav.cjs.entry.js +2 -2
- package/dist/cjs/nano-input.cjs.entry.js +1 -1
- package/dist/cjs/nano-overflow-nav.cjs.entry.js +1 -1
- package/dist/cjs/nano-range.cjs.entry.js +1 -1
- package/dist/cjs/nano-resize-observe_2.cjs.entry.js +3 -1
- package/dist/cjs/nano-resize-observe_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-sortable.cjs.entry.js +16 -8
- package/dist/cjs/nano-sortable.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-split-pane.cjs.entry.js +1 -1
- package/dist/cjs/nano-sticker.cjs.entry.js +4 -2
- package/dist/cjs/nano-sticker.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-tab-group.cjs.entry.js +2 -2
- package/dist/cjs/{nano-table-5a7a4d53.js → nano-table-10a40ab3.js} +557 -185
- package/dist/cjs/nano-table-10a40ab3.js.map +1 -0
- package/dist/cjs/nano-table.cjs.entry.js +2 -2
- package/dist/cjs/{table.worker-77e56070.js → table.worker-f04588c1.js} +4 -4
- package/dist/cjs/table.worker-f04588c1.js.map +1 -0
- package/dist/cjs/{table.worker-bd51e29f.js → table.worker-f258383d.js} +1 -1
- package/dist/cjs/{throttle-f55496c8.js → throttle-dfa64b9e.js} +17 -20
- package/dist/cjs/throttle-dfa64b9e.js.map +1 -0
- package/dist/collection/components/resize-observe/resize-observe.js +21 -1
- package/dist/collection/components/resize-observe/resize-observe.js.map +1 -1
- package/dist/collection/components/select/select.css +0 -1
- package/dist/collection/components/sortable/sortable.js +3 -7
- package/dist/collection/components/sortable/sortable.js.map +1 -1
- package/dist/collection/components/sticker/sticker.js +11 -5
- package/dist/collection/components/sticker/sticker.js.map +1 -1
- package/dist/collection/components/table/table-interface.js.map +1 -1
- package/dist/collection/components/table/table.cell.js +43 -10
- package/dist/collection/components/table/table.cell.js.map +1 -1
- package/dist/collection/components/table/table.css +38 -55
- package/dist/collection/components/table/table.header.js +4 -9
- package/dist/collection/components/table/table.header.js.map +1 -1
- package/dist/collection/components/table/table.js +101 -47
- package/dist/collection/components/table/table.js.map +1 -1
- package/dist/collection/components/table/table.pin-service.js +382 -0
- package/dist/collection/components/table/table.pin-service.js.map +1 -0
- package/dist/collection/components/table/table.row.js +39 -46
- package/dist/collection/components/table/table.row.js.map +1 -1
- package/dist/collection/components/table/table.utils.js +0 -124
- package/dist/collection/components/table/table.utils.js.map +1 -1
- package/dist/collection/components/table/table.worker.js +1 -0
- package/dist/collection/components/table/table.worker.js.map +1 -1
- package/dist/collection/utils/events.js +27 -0
- package/dist/collection/utils/events.js.map +1 -0
- package/dist/collection/utils/throttle.js +16 -19
- package/dist/collection/utils/throttle.js.map +1 -1
- package/dist/components/nano-sortable.js +15 -7
- package/dist/components/nano-sortable.js.map +1 -1
- package/dist/components/resize-observe.js +3 -1
- package/dist/components/resize-observe.js.map +1 -1
- package/dist/components/select.js +1 -1
- package/dist/components/select.js.map +1 -1
- package/dist/components/sticker.js +3 -1
- package/dist/components/sticker.js.map +1 -1
- package/dist/components/table.js +530 -187
- package/dist/components/table.js.map +1 -1
- package/dist/components/table.worker.js +1 -1
- package/dist/components/throttle.js +16 -19
- package/dist/components/throttle.js.map +1 -1
- package/dist/esm/{component-store-244a8431.js → component-store-c23ebc9c.js} +2 -2
- package/dist/esm/{component-store-244a8431.js.map → component-store-c23ebc9c.js.map} +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/nano-algolia-filter.entry.js +2 -2
- package/dist/esm/nano-algolia-input.entry.js +2 -2
- package/dist/esm/nano-algolia.entry.js +2 -2
- package/dist/esm/nano-checkbox-group.entry.js +1 -1
- package/dist/esm/nano-components.js +1 -1
- package/dist/esm/nano-datalist_3.entry.js +1 -1
- package/dist/esm/nano-dialog.entry.js +2 -2
- package/dist/esm/nano-global-nav-user-profile_3.entry.js +2 -2
- package/dist/esm/nano-global-nav-user-profile_3.entry.js.map +1 -1
- package/dist/esm/nano-global-nav.entry.js +2 -2
- package/dist/esm/nano-input.entry.js +1 -1
- package/dist/esm/nano-overflow-nav.entry.js +1 -1
- package/dist/esm/nano-range.entry.js +1 -1
- package/dist/esm/nano-resize-observe_2.entry.js +3 -1
- package/dist/esm/nano-resize-observe_2.entry.js.map +1 -1
- package/dist/esm/nano-sortable.entry.js +16 -8
- package/dist/esm/nano-sortable.entry.js.map +1 -1
- package/dist/esm/nano-split-pane.entry.js +1 -1
- package/dist/esm/nano-sticker.entry.js +4 -2
- package/dist/esm/nano-sticker.entry.js.map +1 -1
- package/dist/esm/nano-tab-group.entry.js +2 -2
- package/dist/esm/{nano-table-026a0d30.js → nano-table-2bbcaa8d.js} +558 -186
- package/dist/esm/nano-table-2bbcaa8d.js.map +1 -0
- package/dist/esm/nano-table.entry.js +2 -2
- package/dist/esm/{table.worker-c17a27ed.js → table.worker-7324ad73.js} +4 -4
- package/dist/esm/table.worker-7324ad73.js.map +1 -0
- package/dist/esm/{table.worker-bd51e29f.js → table.worker-f258383d.js} +1 -1
- package/dist/esm/{throttle-7836544e.js → throttle-ac4fcefa.js} +17 -20
- package/dist/esm/throttle-ac4fcefa.js.map +1 -0
- package/dist/nano-components/index.esm.js +1 -1
- package/dist/nano-components/nano-components.esm.js +1 -1
- package/dist/nano-components/nano-components.esm.js.map +1 -1
- package/dist/nano-components/{p-7d6065c6.entry.js → p-0697795a.entry.js} +2 -2
- package/dist/nano-components/p-0697795a.entry.js.map +1 -0
- package/dist/nano-components/{p-6975f110.entry.js → p-192902e0.entry.js} +2 -2
- package/dist/nano-components/{p-a6ff5ca6.js → p-1a0b5bc3.js} +2 -2
- package/dist/nano-components/{p-3a761d77.entry.js → p-1b791810.entry.js} +2 -2
- package/dist/nano-components/p-39aec880.entry.js +5 -0
- package/dist/nano-components/{p-3b4b7f40.entry.js → p-3eb6d833.entry.js} +2 -2
- package/dist/nano-components/{p-a1c0afb6.entry.js → p-4884b65a.entry.js} +2 -2
- package/dist/nano-components/p-52ae36ec.js +5 -0
- package/dist/nano-components/{p-34501eae.entry.js → p-565793a2.entry.js} +2 -2
- package/dist/nano-components/p-5aae2588.entry.js +5 -0
- package/dist/nano-components/p-5aae2588.entry.js.map +1 -0
- package/dist/nano-components/{p-935aef3d.entry.js → p-6920ad69.entry.js} +2 -2
- package/dist/nano-components/{p-1c6c94cb.entry.js → p-7baa9e14.entry.js} +2 -2
- package/dist/nano-components/p-7bff5224.js +5 -0
- package/dist/nano-components/p-7bff5224.js.map +1 -0
- package/dist/nano-components/{p-f60fe933.entry.js → p-898cbac7.entry.js} +2 -2
- package/dist/nano-components/p-9b533dc3.js +5 -0
- package/dist/nano-components/p-9b533dc3.js.map +1 -0
- package/dist/nano-components/{p-ace1ffc2.entry.js → p-a362bd23.entry.js} +2 -2
- package/dist/nano-components/{p-eb6c9191.entry.js → p-b72df1aa.entry.js} +2 -2
- package/dist/nano-components/{p-9c4efe14.entry.js → p-bf18e298.entry.js} +2 -2
- package/dist/nano-components/p-bf18e298.entry.js.map +1 -0
- package/dist/nano-components/p-ce5efc3f.entry.js +5 -0
- package/dist/nano-components/p-ce5efc3f.entry.js.map +1 -0
- package/dist/nano-components/{p-1b687f96.entry.js → p-d0eefd52.entry.js} +2 -2
- package/dist/nano-components/{p-1a9d9956.entry.js → p-d74e2642.entry.js} +2 -2
- package/dist/nano-components/{p-bd51e29f.js → p-f258383d.js} +1 -1
- package/dist/types/components/resize-observe/resize-observe.d.ts +2 -0
- package/dist/types/components/sortable/sortable.d.ts +0 -1
- package/dist/types/components/sticker/sticker.d.ts +2 -2
- package/dist/types/components/table/table-interface.d.ts +23 -11
- package/dist/types/components/table/table.cell.d.ts +0 -7
- package/dist/types/components/table/table.d.ts +10 -8
- package/dist/types/components/table/table.header.d.ts +0 -1
- package/dist/types/components/table/table.pin-service.d.ts +90 -0
- package/dist/types/components/table/table.row.d.ts +3 -2
- package/dist/types/components/table/table.utils.d.ts +0 -27
- package/dist/types/components.d.ts +29 -11
- package/dist/types/utils/events.d.ts +15 -0
- package/dist/types/utils/throttle.d.ts +1 -1
- package/docs-json.json +59 -24
- package/docs-vscode.json +2 -2
- package/hydrate/index.js +580 -194
- package/package.json +2 -2
- package/dist/cjs/nano-table-5a7a4d53.js.map +0 -1
- package/dist/cjs/table.worker-77e56070.js.map +0 -1
- package/dist/cjs/throttle-f55496c8.js.map +0 -1
- package/dist/esm/nano-table-026a0d30.js.map +0 -1
- package/dist/esm/table.worker-c17a27ed.js.map +0 -1
- package/dist/esm/throttle-7836544e.js.map +0 -1
- package/dist/nano-components/p-15217442.entry.js +0 -5
- package/dist/nano-components/p-15217442.entry.js.map +0 -1
- package/dist/nano-components/p-2e63676f.js +0 -5
- package/dist/nano-components/p-30cc21c2.entry.js +0 -5
- package/dist/nano-components/p-59eb9caa.js +0 -5
- package/dist/nano-components/p-59eb9caa.js.map +0 -1
- package/dist/nano-components/p-7759d185.entry.js +0 -5
- package/dist/nano-components/p-7759d185.entry.js.map +0 -1
- package/dist/nano-components/p-7d6065c6.entry.js.map +0 -1
- package/dist/nano-components/p-9746b0a5.js +0 -5
- package/dist/nano-components/p-9746b0a5.js.map +0 -1
- package/dist/nano-components/p-9c4efe14.entry.js.map +0 -1
- /package/dist/nano-components/{p-6975f110.entry.js.map → p-192902e0.entry.js.map} +0 -0
- /package/dist/nano-components/{p-a6ff5ca6.js.map → p-1a0b5bc3.js.map} +0 -0
- /package/dist/nano-components/{p-3a761d77.entry.js.map → p-1b791810.entry.js.map} +0 -0
- /package/dist/nano-components/{p-2e63676f.js.map → p-39aec880.entry.js.map} +0 -0
- /package/dist/nano-components/{p-3b4b7f40.entry.js.map → p-3eb6d833.entry.js.map} +0 -0
- /package/dist/nano-components/{p-a1c0afb6.entry.js.map → p-4884b65a.entry.js.map} +0 -0
- /package/dist/nano-components/{p-30cc21c2.entry.js.map → p-52ae36ec.js.map} +0 -0
- /package/dist/nano-components/{p-34501eae.entry.js.map → p-565793a2.entry.js.map} +0 -0
- /package/dist/nano-components/{p-935aef3d.entry.js.map → p-6920ad69.entry.js.map} +0 -0
- /package/dist/nano-components/{p-1c6c94cb.entry.js.map → p-7baa9e14.entry.js.map} +0 -0
- /package/dist/nano-components/{p-f60fe933.entry.js.map → p-898cbac7.entry.js.map} +0 -0
- /package/dist/nano-components/{p-ace1ffc2.entry.js.map → p-a362bd23.entry.js.map} +0 -0
- /package/dist/nano-components/{p-eb6c9191.entry.js.map → p-b72df1aa.entry.js.map} +0 -0
- /package/dist/nano-components/{p-1b687f96.entry.js.map → p-d0eefd52.entry.js.map} +0 -0
- /package/dist/nano-components/{p-1a9d9956.entry.js.map → p-d74e2642.entry.js.map} +0 -0
package/hydrate/index.js
CHANGED
@@ -22240,6 +22240,7 @@ class ResizeObserve {
|
|
22240
22240
|
this.nanoResizeStateChange = createEvent(this, "nanoResizeStateChange", 7);
|
22241
22241
|
this.nanoResizeObserverReady = createEvent(this, "nanoResizeObserverReady", 7);
|
22242
22242
|
this.nanoResizeContentFitChange = createEvent(this, "nanoResizeContentFitChange", 7);
|
22243
|
+
this.nanoResize = createEvent(this, "nanoResize", 7);
|
22243
22244
|
this.isReady = false;
|
22244
22245
|
this.assessChanges = () => {
|
22245
22246
|
if (!this.currentWidth && !this.currentHeight)
|
@@ -22404,10 +22405,11 @@ class ResizeObserve {
|
|
22404
22405
|
attachRO() {
|
22405
22406
|
if (!window['ResizeObserver'])
|
22406
22407
|
return;
|
22407
|
-
this.ro = new ResizeObserver(() => {
|
22408
|
+
this.ro = new ResizeObserver((ro) => {
|
22408
22409
|
const { width, height } = this.host.getBoundingClientRect();
|
22409
22410
|
this.currentWidth = Math.ceil(width);
|
22410
22411
|
this.currentHeight = Math.ceil(height);
|
22412
|
+
this.nanoResize.emit(ro);
|
22411
22413
|
});
|
22412
22414
|
this.ro.observe(this.host);
|
22413
22415
|
}
|
@@ -22468,7 +22470,7 @@ class ResizeObserve {
|
|
22468
22470
|
}; }
|
22469
22471
|
}
|
22470
22472
|
|
22471
|
-
const selectCss = ".sc-nano-select-h {\n box-sizing: border-box;\n}\n\n*.sc-nano-select, *.sc-nano-select::before, *.sc-nano-select::after {\n box-sizing: border-box;\n}\n[hidden].sc-nano-select {\n display: none !important;\n}\n[disabled].sc-nano-select-h:not([disabled=false]) {\n opacity: 0.5;\n}\n\n.form-ctrl.sc-nano-select {\n min-inline-size: 100%;\n display: block;\n}\n.form-ctrl.has-helper-end.sc-nano-select {\n display: flex;\n gap: 1rem;\n container-type: inline-size;\n}\n.form-ctrl.has-helper-end.sc-nano-select .form-ctrl__wrapper.sc-nano-select {\n flex: 1 1 100%;\n}\n.form-ctrl.has-helper-end.sc-nano-select .form-ctrl__helper-end.sc-nano-select {\n display: none;\n}\n@container (min-width: 350px) {\n .form-ctrl.has-helper-end .form-ctrl__helper-end {\n display: block !important;\n }\n .form-ctrl.has-helper-end .form-ctrl__helper {\n display: none !important;\n }\n}\n\n.form-ctrl__wrapper.sc-nano-select {\n display: block;\n}\n\nlabel.sc-nano-select, .form-ctrl__more.sc-nano-select, .form-ctrl__error.sc-nano-select, .form-ctrl__helper.sc-nano-select {\n display: block;\n inline-size: 100%;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\nlabel.visually-hide.sc-nano-select, .form-ctrl__more.visually-hide.sc-nano-select, .form-ctrl__error.visually-hide.sc-nano-select, .form-ctrl__helper.visually-hide.sc-nano-select {\n clip: rect(1px, 1px, 1px, 1px);\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n block-size: 1px;\n inline-size: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n}\n\n.form-ctrl__float-label.sc-nano-select {\n padding-block: 0;\n -webkit-padding-end: 0;\n padding-inline-end: 0;\n -webkit-padding-start: var(--padding-start);\n padding-inline-start: var(--padding-start);\n color: var(--label-color);\n position: absolute;\n font-size: 1.15em;\n transform: translateY(-50%);\n transform-origin: top left;\n inset-block-start: 50%;\n transition: all 0.125s ease-in;\n opacity: 1;\n}\n.has-focus.sc-nano-select-h .form-ctrl__float-label.sc-nano-select, .has-value.sc-nano-select-h .form-ctrl__float-label.sc-nano-select {\n transform: translateY(-110%);\n font-size: 0.8em;\n opacity: 0.7;\n}\n.form-ctrl__float-label.sc-nano-select .form-ctrl__label-charcount.sc-nano-select {\n opacity: 0;\n transition: opacity 0.125s ease-in;\n}\n.has-focus.sc-nano-select-h .form-ctrl__float-label.sc-nano-select .form-ctrl__label-charcount.sc-nano-select, .has-value.sc-nano-select-h .form-ctrl__float-label.sc-nano-select .form-ctrl__label-charcount.sc-nano-select {\n opacity: 1;\n}\n.form-ctrl__textarea.sc-nano-select .form-ctrl__float-label.sc-nano-select {\n inset-block-start: 50%;\n}\n.has-focus.sc-nano-select-h .form-ctrl__textarea.sc-nano-select .form-ctrl__float-label.sc-nano-select {\n inset-block-start: 0;\n transform: translateY(38%);\n}\n.has-value.sc-nano-select-h .form-ctrl__textarea.sc-nano-select .form-ctrl__float-label.sc-nano-select {\n inset-block-start: 0;\n transform: translateY(38%);\n}\n\n.form-ctrl__label.sc-nano-select {\n color: var(--label-color);\n font-size: var(--label-font-size);\n -webkit-padding-after: var(--padding-bottom);\n padding-block-end: var(--padding-bottom);\n line-height: 1;\n display: flex;\n}\n.form-ctrl__label.sc-nano-select .form-ctrl__label-wrap.sc-nano-select {\n flex: 1;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.form-ctrl__label.sc-nano-select .form-ctrl__label-placeholder.sc-nano-select {\n margin-block: unset;\n -webkit-margin-end: 5px;\n margin-inline-end: 5px;\n -webkit-margin-start: 0;\n margin-inline-start: 0;\n opacity: 0;\n -webkit-appearance: none;\n appearance: none;\n transition: 0.3s ease opacity;\n font-size: 0.9em;\n}\n.form-ctrl__label.sc-nano-select .form-ctrl__label-charcount.sc-nano-select {\n margin-block: unset;\n -webkit-margin-end: 0;\n margin-inline-end: 0;\n -webkit-margin-start: auto;\n margin-inline-start: auto;\n font-size: 0.9em;\n opacity: 0.5;\n}\n.has-value.sc-nano-select-h .form-ctrl__label.sc-nano-select .form-ctrl__label-placeholder.sc-nano-select {\n opacity: 0.5;\n}\n.has-focus.sc-nano-select-h .form-ctrl__label.sc-nano-select {\n color: var(--label-color--focus);\n}\n.is-invalid.sc-nano-select-h:not([disabled]) .form-ctrl__label.sc-nano-select {\n color: var(--label-color--invalid);\n}\n\n.has-float-label.sc-nano-select .select__multi-input.sc-nano-select, .has-float-label.sc-nano-select .select__native-input.sc-nano-select, .has-float-label.sc-nano-select .input__native-ctrl.sc-nano-select {\n opacity: 0;\n transition: opacity 0.125s ease-in;\n}\n.has-focus.sc-nano-select-h .has-float-label.sc-nano-select .select__multi-input.sc-nano-select, .has-value.sc-nano-select-h .has-float-label.sc-nano-select .select__multi-input.sc-nano-select, .has-focus.sc-nano-select-h .has-float-label.sc-nano-select .select__native-input.sc-nano-select, .has-value.sc-nano-select-h .has-float-label.sc-nano-select .select__native-input.sc-nano-select, .has-focus.sc-nano-select-h .has-float-label.sc-nano-select .input__native-ctrl.sc-nano-select, .has-value.sc-nano-select-h .has-float-label.sc-nano-select .input__native-ctrl.sc-nano-select {\n opacity: 1;\n}\n\n.form-ctrl__more.sc-nano-select {\n block-size: 1em;\n position: relative;\n margin-block: 4px var(--padding-bottom);\n margin-inline: 3px 0;\n}\n\n.form-ctrl__helper.sc-nano-select, .form-ctrl__error.sc-nano-select {\n inset-block-start: 0;\n inset-inline-start: 0;\n position: absolute;\n font-size: var(--invalid-msg-font-size);\n line-height: 1.2;\n transition: 0.3s ease-out opacity;\n}\n\n.form-ctrl__helper.sc-nano-select {\n font-style: italic;\n color: var(--help-msg-color);\n}\n[show-inline-error].sc-nano-select-h:not([show-inline-error=false]):not([disabled]).is-invalid .form-ctrl__helper.sc-nano-select {\n opacity: 0;\n}\n\n.form-ctrl__helper-end.sc-nano-select {\n flex: 1 1 30%;\n min-inline-size: 150px;\n font-size: var(--invalid-msg-font-size);\n color: var(--help-msg-color);\n font-style: italic;\n}\n\n.form-ctrl__error.sc-nano-select {\n opacity: 0;\n color: var(--invalid-msg-color);\n font-stretch: condensed;\n}\n.is-invalid.sc-nano-select-h:not([disabled]) .form-ctrl__error.sc-nano-select {\n opacity: 1;\n}\n\n.form-ctrl__input.sc-nano-select {\n font-family: inherit;\n font-size: inherit;\n font-stretch: inherit;\n font-style: inherit;\n font-weight: inherit;\n letter-spacing: inherit;\n text-decoration: inherit;\n text-overflow: inherit;\n text-transform: inherit;\n text-align: inherit;\n white-space: inherit;\n color: inherit;\n border-radius: var(--input-border-radius);\n inline-size: 100%;\n padding: 0 !important;\n position: relative;\n flex: 1 0 auto;\n display: flex;\n background: var(--input-bg-color);\n border: var(--input-border-style);\n border-width: var(--input-border-width);\n font-size: var(--input-font-size);\n -webkit-padding-start: calc(var(--input-border-hint-width) - var(--input-border-width)) !important;\n padding-inline-start: calc(var(--input-border-hint-width) - var(--input-border-width)) !important;\n}\n.has-focus.sc-nano-select-h .form-ctrl__input.sc-nano-select {\n background: var(--input-bg-color--focus);\n border: var(--input-border-style--focus);\n border-width: var(--input-border-width);\n -webkit-padding-start: calc(var(--input-border-hint-width) - var(--input-border-width)) !important;\n padding-inline-start: calc(var(--input-border-hint-width) - var(--input-border-width)) !important;\n}\n.is-invalid.sc-nano-select-h:not([disabled]) .form-ctrl__input.sc-nano-select {\n background: var(--input-bg-color--invalid);\n border: var(--input-border-style--invalid);\n border-width: var(--input-border-width);\n -webkit-border-start: var(--input-border-style--invalid-focus) var(--input-border-hint-width);\n border-inline-start: var(--input-border-style--invalid-focus) var(--input-border-hint-width);\n -webkit-padding-start: 0 !important;\n padding-inline-start: 0 !important;\n}\n.is-invalid.has-focus.sc-nano-select-h:not([disabled]) .form-ctrl__input.sc-nano-select {\n background: var(--input-bg-color--invalid);\n border: var(--input-border-style--invalid-focus);\n border-width: var(--input-border-width);\n -webkit-border-start: var(--input-border-style--invalid-focus) var(--input-border-hint-width);\n border-inline-start: var(--input-border-style--invalid-focus) var(--input-border-hint-width);\n -webkit-padding-start: 0 !important;\n padding-inline-start: 0 !important;\n}\n\n.form-ctrl__input-wrap.sc-nano-select {\n display: flex;\n align-items: stretch;\n flex: 1;\n max-inline-size: 100%;\n}\n\n.form-ctrl__clear-btn.sc-nano-select, .form-ctrl__slot-end.sc-nano-select, .form-ctrl__slot-start.sc-nano-select, .form-ctrl__slot-value-end.sc-nano-select {\n --nano-icon-size: 1.4em;\n margin-block: 0;\n margin-inline: 0;\n font-size: 1em;\n border: 0;\n outline: none;\n background-color: transparent;\n background-repeat: no-repeat;\n display: flex;\n align-items: stretch;\n inline-size: auto;\n}\n\n.has-float-label.sc-nano-select .form-ctrl__slot-start.sc-nano-select {\n display: none;\n}\n\n.form-ctrl__slot-start.sc-nano-select-s > *, .form-ctrl__slot-start .sc-nano-select-s > *, .form-ctrl__slot-end.sc-nano-select-s > *, .form-ctrl__slot-end .sc-nano-select-s > *, .form-ctrl__slot-value-end.sc-nano-select-s > *, .form-ctrl__slot-value-end .sc-nano-select-s > *, .form-ctrl__slot-value-end.sc-nano-select *.sc-nano-select {\n --nano-icon-size: 1.4em;\n padding-inline: unset;\n -webkit-padding-start: var(--padding-start);\n padding-inline-start: var(--padding-start);\n -webkit-padding-end: var(--padding-end);\n padding-inline-end: var(--padding-end);\n font-size: 1em;\n align-items: center;\n display: flex;\n block-size: 100%;\n z-index: 1;\n}\n.sc-nano-select-h[disabled]:not([disabled=false]) .form-ctrl__slot-start.sc-nano-select-s > *, .sc-nano-select-h[disabled]:not([disabled=false]) .form-ctrl__slot-start .sc-nano-select-s > *, .sc-nano-select-h[disabled]:not([disabled=false]) .form-ctrl__slot-end.sc-nano-select-s > *, .sc-nano-select-h[disabled]:not([disabled=false]) .form-ctrl__slot-end .sc-nano-select-s > *, .sc-nano-select-h[disabled]:not([disabled=false]) .form-ctrl__slot-value-end.sc-nano-select-s > *, .sc-nano-select-h[disabled]:not([disabled=false]) .form-ctrl__slot-value-end .sc-nano-select-s > *, [disabled].sc-nano-select-h:not([disabled=false]) .form-ctrl__slot-value-end.sc-nano-select *.sc-nano-select {\n pointer-events: none;\n}\n\n.form-ctrl__slot-value-end.sc-nano-select-s > *, .form-ctrl__slot-value-end .sc-nano-select-s > *, .form-ctrl__slot-value-end.sc-nano-select *.sc-nano-select {\n pointer-events: none;\n}\n\n.form-ctrl__clear-btn.sc-nano-select {\n color: var(--clear-btn-color);\n padding: 0;\n opacity: 0;\n inline-size: 0;\n -webkit-appearance: none;\n appearance: none;\n align-items: center;\n overflow: hidden;\n}\n.is-invalid.sc-nano-select-h .form-ctrl__clear-btn.sc-nano-select {\n color: var(--clear-btn-color--invalid);\n}\n.has-value.sc-nano-select-h .form-ctrl__clear-btn.sc-nano-select {\n padding-block: 0;\n padding-inline: var(--padding-start) var(--padding-end);\n opacity: 1;\n inline-size: auto;\n}\n.form-ctrl__clear-btn.sc-nano-select:hover {\n color: var(--clear-btn-color--hover);\n}\n\n.sc-nano-select-h {\n \n --placeholder-color: var(--nano-input-placeholder-color, initial);\n --placeholder-font-style: var(--nano-input-placeholder-style, initial);\n --placeholder-font-weight: var(--nano-input-placeholder-weight, initial);\n --placeholder-opacity: var(--nano-input-placeholder-opacity, 0.5);\n --padding-top: var(--nano-input-padding-top, var(--nano-input-padding, 8px));\n --padding-end: var(--nano-input-padding-end, var(--nano-input-padding, 8px));\n --padding-bottom: var(--nano-input-padding-bottom, var(--nano-input-padding, 6px));\n --padding-start: var(--nano-input-padding-start, var(--nano-input-padding, 8px));\n --color-invalid: var(--nano-color-danger-rgb, 239 65 53);\n --color--focus-rgb:\n var(\n --nano-color-base-rgb,\n var(--nano-color-primary-rgb, 0 116 149)\n );\n --input-font-size: var(--nano-input-font-size, 0.87em);\n --input-text-color: var(--nano-input-text-color, #4a4a4a);\n --input-border-width: var(--nano-input-border-width, 1px);\n --input-border-hint-width: 3px;\n --input-border-color: var(--nano-input-border-color, #e4e6e8);\n --input-border-radius: var(--nano-input-border-radius, 0);\n --input-border-style: var(--nano-input-border-style, solid) var(--nano-input-border-color, #e4e6e8);\n --input-border-style--focus: var(--nano-input-border-style, solid) var(--nano-input-border-color--focus, #90c6e7);\n --input-border-style--invalid: var(--nano-input-border-style, solid) var(--nano-input-border-color--invalid, #e4e6e8);\n --input-border-style--invalid-focus: var(--nano-input-border-style, solid) var(--nano-input-border-color--invalid, #ef4135);\n --input-bg-color: var(--nano-input-background-color, #fff);\n --input-bg-color--focus: var(--input-bg-color);\n --input-bg-color--invalid: var(--nano-input-background-color, white);\n --invalid-msg-color: rgb(var(--color-invalid) / 100%);\n --invalid-msg-font-size: var(--nano-input-help-font-size, 0.75em);\n --help-msg-color: var(--nano-input-help-color, #616d6e);\n --clear-btn-color: var(--nano-clear-btn-color, rgba(0, 0, 0, 0.3));\n --clear-btn-color--hover: rgb(var(--color--focus-rgb) / 100%);\n --clear-btn-color--invalid: rgb(var(--color-invalid) / 100%);\n --label-color: var(--nano-input-label-color, \"currentcolor\");\n --label-color--focus: var(--label-color);\n --label-color--invalid: var(--nano-input-label-color-invalid, \"currentcolor\");\n --label-font-size: var(--nano-input-label-color, 1em);\n --multi-input-value-bg: var(--nano-input-tag-bg, 186 220 240);\n --multi-input-value-text-color: var(--nano-input-tag-color, #455556);\n --multi-input-value-border: var(--nano-input-tag-color, #badcf0);\n \n position: relative;\n width: 100%;\n padding: 0 !important;\n font-family: var(--nano-font-family, inherit);\n display: block;\n}\n\n.nano-color.sc-nano-select-h {\n --input-border-style--focus:\n var(--nano-input-border-style, solid) var(\n --nano-color-tint,\n var(--nano-color-primary-tint, #2689a5)\n );\n --multi-input-value-bg: var(--nano-color-tint-rgb);\n --multi-input-value-border: var(--nano-color-shade);\n --multi-input-value-text-color: var(--nano-color-contrast);\n color: var(--nano-color-base);\n}\n\nnano-item.sc-nano-select-h:not(.item-label), nano-item:not(.item-label) .sc-nano-select-h {\n --padding-start: 0;\n}\n\n[disabled].sc-nano-select-h:not([disabled=false]) *.sc-nano-select {\n pointer-events: none !important;\n}\n\nselect.sc-nano-select {\n display: none;\n}\n\n.select__native-input.sc-nano-select {\n font-family: inherit;\n font-size: inherit;\n font-stretch: inherit;\n font-style: inherit;\n font-weight: inherit;\n letter-spacing: inherit;\n text-decoration: inherit;\n text-overflow: inherit;\n text-transform: inherit;\n text-align: inherit;\n white-space: inherit;\n color: inherit;\n padding: unset;\n padding-inline: var(--padding-start) var(--padding-end);\n padding-block: 0;\n border-radius: var(--input-border-radius);\n text-overflow: ellipsis;\n color: var(--input-text-color);\n display: inline-block;\n flex: 1;\n width: 100%;\n max-width: 100%;\n max-height: 100%;\n border: 0;\n outline: none;\n background: transparent;\n -webkit-appearance: none;\n appearance: none;\n margin: 0;\n box-sizing: border-box;\n resize: none;\n overflow: hidden;\n cursor: default;\n line-height: 2.5em;\n \n \n}\n.has-float-label.sc-nano-select .select__native-input.sc-nano-select {\n line-height: 2.1em;\n min-height: 2.1em;\n -webkit-padding-before: 1.4em;\n padding-block-start: 1.4em;\n}\n.select__native-input.sc-nano-select::selection {\n background: transparent;\n}\n.select__native-input.sc-nano-select::-moz-selection {\n background: transparent;\n}\n.select__native-input.sc-nano-select::placeholder {\n color: var(--placeholder-color);\n font-family: inherit;\n font-style: var(--placeholder-font-style);\n font-weight: var(--placeholder-font-weight);\n opacity: var(--placeholder-opacity);\n line-height: inherit;\n min-height: initial;\n}\n.select__native-input.sc-nano-select::-moz-placeholder {\n line-height: 2.8em;\n text-overflow: ellipsis;\n}\n.select__native-input.sc-nano-select:-webkit-autofill {\n background-color: transparent;\n}\n.select__native-input.sc-nano-select::-webkit-search-decoration, .select__native-input.sc-nano-select::-webkit-search-cancel-button, .select__native-input.sc-nano-select::-webkit-search-results-button, .select__native-input.sc-nano-select::-webkit-search-results-decoration {\n -webkit-appearance: none;\n appearance: none;\n}\n.select__native-input.sc-nano-select:invalid {\n box-shadow: none;\n}\n.select__native-input.sc-nano-select::-ms-clear, .select__native-input.sc-nano-select::-ms-reveal {\n display: none;\n}\n.select__native-input.resizable.sc-nano-select {\n resize: vertical;\n overflow: auto;\n}\n.form-ctrl__textarea.sc-nano-select .select__native-input.sc-nano-select {\n line-height: 1.5em;\n padding-block: var(--padding-top) var(--padding-bottom);\n white-space: pre-wrap;\n}\n.form-ctrl__textarea.sc-nano-select .select__native-input.sc-nano-select::placeholder {\n line-height: 1.5em;\n}\n.has-float-label.textarea.sc-nano-select .select__native-input.sc-nano-select {\n -webkit-padding-before: 1.8em;\n padding-block-start: 1.8em;\n}\n.masked.sc-nano-select-h .select__native-input.sc-nano-select {\n opacity: 0;\n position: absolute;\n inset-inline-start: 0;\n inset-block-start: 0;\n}\n\n.select__mask.sc-nano-select {\n font-family: inherit;\n font-size: inherit;\n font-stretch: inherit;\n font-style: inherit;\n font-weight: inherit;\n letter-spacing: inherit;\n text-decoration: inherit;\n text-overflow: inherit;\n text-transform: inherit;\n text-align: inherit;\n white-space: inherit;\n color: inherit;\n padding-inline: var(--padding-start) var(--padding-end);\n padding-block: 0;\n border-radius: var(--input-border-radius);\n pointer-events: none;\n line-height: 2.5em;\n min-height: 2.5em;\n}\n\n.select__multi-wrap.sc-nano-select {\n padding-block: 0 var(--padding-bottom);\n padding-inline: 0 0;\n display: flex;\n flex: 1;\n flex-wrap: wrap;\n overflow: hidden;\n align-items: flex-start;\n}\n.has-float-label.sc-nano-select-h .select__multi-wrap.sc-nano-select {\n -webkit-padding-before: 1em;\n padding-block-start: 1em;\n}\n.select__multi-input.sc-nano-select {\n font-family: inherit;\n font-size: inherit;\n font-stretch: inherit;\n font-style: inherit;\n font-weight: inherit;\n letter-spacing: inherit;\n text-decoration: inherit;\n text-overflow: inherit;\n text-transform: inherit;\n text-align: inherit;\n white-space: inherit;\n color: inherit;\n padding-inline: var(--padding-start) var(--padding-end);\n padding-block: var(--padding-bottom) 0;\n min-width: 50px;\n width: 100%;\n max-height: 100%;\n -webkit-appearance: none;\n appearance: none;\n border: 0;\n outline: none;\n display: inline-block;\n background: transparent;\n flex: 0;\n position: relative;\n box-sizing: border-box;\n line-height: calc(2.5em - var(--padding-bottom));\n height: calc(2.5em - var(--padding-bottom));\n}\n.select__multi-input.sc-nano-select:last-child {\n flex: 1;\n}\n.select__multi-value.sc-nano-select {\n margin-block: var(--padding-bottom) 0;\n margin-inline: var(--padding-start) -3px;\n background: rgb(var(--multi-input-value-bg)/80%);\n color: var(--multi-input-value-text-color);\n border: 1px solid;\n border-color: var(--multi-input-value-border);\n padding: 0.35em 0.5em;\n max-width: 100%;\n display: flex;\n align-items: center;\n font-size: var(--input-font-size);\n letter-spacing: 1px;\n max-height: calc(2.5em - 8px);\n}\n.select__multi-value.sc-nano-select span.sc-nano-select {\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: 100%;\n overflow: hidden;\n line-height: 1;\n}\n.select__multi-value-remove.sc-nano-select {\n background-position: center;\n -webkit-padding-start: 0.5em;\n padding-inline-start: 0.5em;\n margin: 0;\n color: inherit;\n border: 0;\n outline: none;\n background-color: transparent;\n background-repeat: no-repeat;\n -webkit-appearance: none;\n appearance: none;\n display: flex;\n align-items: center;\n inset-block-start: 0;\n font-size: 1em;\n}\n.select__multi-value-remove.sc-nano-select nano-icon.sc-nano-select {\n --color: var(--multi-input-value-text-color);\n}\n\n.form-ctrl__float-label.sc-nano-select {\n width: calc(100% - (1em + var(--padding-start) * 2));\n}\n.has-focus.has-multiple.sc-nano-select-h .form-ctrl__float-label.sc-nano-select {\n transform: translateY(-110%);\n font-size: 0.8em;\n}\n.has-value.has-multiple.sc-nano-select-h .form-ctrl__float-label.sc-nano-select {\n transform: translateY(21%);\n inset-block-start: 0;\n}\n\n.has-focus.sc-nano-select-h select.sc-nano-select, .has-focus.sc-nano-select-h a.sc-nano-select, .has-focus.sc-nano-select-h button.sc-nano-select {\n pointer-events: auto;\n}";
|
22473
|
+
const selectCss = ".sc-nano-select-h {\n box-sizing: border-box;\n}\n\n*.sc-nano-select, *.sc-nano-select::before, *.sc-nano-select::after {\n box-sizing: border-box;\n}\n[hidden].sc-nano-select {\n display: none !important;\n}\n[disabled].sc-nano-select-h:not([disabled=false]) {\n opacity: 0.5;\n}\n\n.form-ctrl.sc-nano-select {\n min-inline-size: 100%;\n display: block;\n}\n.form-ctrl.has-helper-end.sc-nano-select {\n display: flex;\n gap: 1rem;\n container-type: inline-size;\n}\n.form-ctrl.has-helper-end.sc-nano-select .form-ctrl__wrapper.sc-nano-select {\n flex: 1 1 100%;\n}\n.form-ctrl.has-helper-end.sc-nano-select .form-ctrl__helper-end.sc-nano-select {\n display: none;\n}\n@container (min-width: 350px) {\n .form-ctrl.has-helper-end .form-ctrl__helper-end {\n display: block !important;\n }\n .form-ctrl.has-helper-end .form-ctrl__helper {\n display: none !important;\n }\n}\n\n.form-ctrl__wrapper.sc-nano-select {\n display: block;\n}\n\nlabel.sc-nano-select, .form-ctrl__more.sc-nano-select, .form-ctrl__error.sc-nano-select, .form-ctrl__helper.sc-nano-select {\n display: block;\n inline-size: 100%;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\nlabel.visually-hide.sc-nano-select, .form-ctrl__more.visually-hide.sc-nano-select, .form-ctrl__error.visually-hide.sc-nano-select, .form-ctrl__helper.visually-hide.sc-nano-select {\n clip: rect(1px, 1px, 1px, 1px);\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n block-size: 1px;\n inline-size: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n}\n\n.form-ctrl__float-label.sc-nano-select {\n padding-block: 0;\n -webkit-padding-end: 0;\n padding-inline-end: 0;\n -webkit-padding-start: var(--padding-start);\n padding-inline-start: var(--padding-start);\n color: var(--label-color);\n position: absolute;\n font-size: 1.15em;\n transform: translateY(-50%);\n transform-origin: top left;\n inset-block-start: 50%;\n transition: all 0.125s ease-in;\n opacity: 1;\n}\n.has-focus.sc-nano-select-h .form-ctrl__float-label.sc-nano-select, .has-value.sc-nano-select-h .form-ctrl__float-label.sc-nano-select {\n transform: translateY(-110%);\n font-size: 0.8em;\n opacity: 0.7;\n}\n.form-ctrl__float-label.sc-nano-select .form-ctrl__label-charcount.sc-nano-select {\n opacity: 0;\n transition: opacity 0.125s ease-in;\n}\n.has-focus.sc-nano-select-h .form-ctrl__float-label.sc-nano-select .form-ctrl__label-charcount.sc-nano-select, .has-value.sc-nano-select-h .form-ctrl__float-label.sc-nano-select .form-ctrl__label-charcount.sc-nano-select {\n opacity: 1;\n}\n.form-ctrl__textarea.sc-nano-select .form-ctrl__float-label.sc-nano-select {\n inset-block-start: 50%;\n}\n.has-focus.sc-nano-select-h .form-ctrl__textarea.sc-nano-select .form-ctrl__float-label.sc-nano-select {\n inset-block-start: 0;\n transform: translateY(38%);\n}\n.has-value.sc-nano-select-h .form-ctrl__textarea.sc-nano-select .form-ctrl__float-label.sc-nano-select {\n inset-block-start: 0;\n transform: translateY(38%);\n}\n\n.form-ctrl__label.sc-nano-select {\n color: var(--label-color);\n font-size: var(--label-font-size);\n -webkit-padding-after: var(--padding-bottom);\n padding-block-end: var(--padding-bottom);\n line-height: 1;\n display: flex;\n}\n.form-ctrl__label.sc-nano-select .form-ctrl__label-wrap.sc-nano-select {\n flex: 1;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.form-ctrl__label.sc-nano-select .form-ctrl__label-placeholder.sc-nano-select {\n margin-block: unset;\n -webkit-margin-end: 5px;\n margin-inline-end: 5px;\n -webkit-margin-start: 0;\n margin-inline-start: 0;\n opacity: 0;\n -webkit-appearance: none;\n appearance: none;\n transition: 0.3s ease opacity;\n font-size: 0.9em;\n}\n.form-ctrl__label.sc-nano-select .form-ctrl__label-charcount.sc-nano-select {\n margin-block: unset;\n -webkit-margin-end: 0;\n margin-inline-end: 0;\n -webkit-margin-start: auto;\n margin-inline-start: auto;\n font-size: 0.9em;\n opacity: 0.5;\n}\n.has-value.sc-nano-select-h .form-ctrl__label.sc-nano-select .form-ctrl__label-placeholder.sc-nano-select {\n opacity: 0.5;\n}\n.has-focus.sc-nano-select-h .form-ctrl__label.sc-nano-select {\n color: var(--label-color--focus);\n}\n.is-invalid.sc-nano-select-h:not([disabled]) .form-ctrl__label.sc-nano-select {\n color: var(--label-color--invalid);\n}\n\n.has-float-label.sc-nano-select .select__multi-input.sc-nano-select, .has-float-label.sc-nano-select .select__native-input.sc-nano-select, .has-float-label.sc-nano-select .input__native-ctrl.sc-nano-select {\n opacity: 0;\n transition: opacity 0.125s ease-in;\n}\n.has-focus.sc-nano-select-h .has-float-label.sc-nano-select .select__multi-input.sc-nano-select, .has-value.sc-nano-select-h .has-float-label.sc-nano-select .select__multi-input.sc-nano-select, .has-focus.sc-nano-select-h .has-float-label.sc-nano-select .select__native-input.sc-nano-select, .has-value.sc-nano-select-h .has-float-label.sc-nano-select .select__native-input.sc-nano-select, .has-focus.sc-nano-select-h .has-float-label.sc-nano-select .input__native-ctrl.sc-nano-select, .has-value.sc-nano-select-h .has-float-label.sc-nano-select .input__native-ctrl.sc-nano-select {\n opacity: 1;\n}\n\n.form-ctrl__more.sc-nano-select {\n block-size: 1em;\n position: relative;\n margin-block: 4px var(--padding-bottom);\n margin-inline: 3px 0;\n}\n\n.form-ctrl__helper.sc-nano-select, .form-ctrl__error.sc-nano-select {\n inset-block-start: 0;\n inset-inline-start: 0;\n position: absolute;\n font-size: var(--invalid-msg-font-size);\n line-height: 1.2;\n transition: 0.3s ease-out opacity;\n}\n\n.form-ctrl__helper.sc-nano-select {\n font-style: italic;\n color: var(--help-msg-color);\n}\n[show-inline-error].sc-nano-select-h:not([show-inline-error=false]):not([disabled]).is-invalid .form-ctrl__helper.sc-nano-select {\n opacity: 0;\n}\n\n.form-ctrl__helper-end.sc-nano-select {\n flex: 1 1 30%;\n min-inline-size: 150px;\n font-size: var(--invalid-msg-font-size);\n color: var(--help-msg-color);\n font-style: italic;\n}\n\n.form-ctrl__error.sc-nano-select {\n opacity: 0;\n color: var(--invalid-msg-color);\n font-stretch: condensed;\n}\n.is-invalid.sc-nano-select-h:not([disabled]) .form-ctrl__error.sc-nano-select {\n opacity: 1;\n}\n\n.form-ctrl__input.sc-nano-select {\n font-family: inherit;\n font-size: inherit;\n font-stretch: inherit;\n font-style: inherit;\n font-weight: inherit;\n letter-spacing: inherit;\n text-decoration: inherit;\n text-overflow: inherit;\n text-transform: inherit;\n text-align: inherit;\n white-space: inherit;\n color: inherit;\n border-radius: var(--input-border-radius);\n inline-size: 100%;\n padding: 0 !important;\n position: relative;\n flex: 1 0 auto;\n display: flex;\n background: var(--input-bg-color);\n border: var(--input-border-style);\n border-width: var(--input-border-width);\n font-size: var(--input-font-size);\n -webkit-padding-start: calc(var(--input-border-hint-width) - var(--input-border-width)) !important;\n padding-inline-start: calc(var(--input-border-hint-width) - var(--input-border-width)) !important;\n}\n.has-focus.sc-nano-select-h .form-ctrl__input.sc-nano-select {\n background: var(--input-bg-color--focus);\n border: var(--input-border-style--focus);\n border-width: var(--input-border-width);\n -webkit-padding-start: calc(var(--input-border-hint-width) - var(--input-border-width)) !important;\n padding-inline-start: calc(var(--input-border-hint-width) - var(--input-border-width)) !important;\n}\n.is-invalid.sc-nano-select-h:not([disabled]) .form-ctrl__input.sc-nano-select {\n background: var(--input-bg-color--invalid);\n border: var(--input-border-style--invalid);\n border-width: var(--input-border-width);\n -webkit-border-start: var(--input-border-style--invalid-focus) var(--input-border-hint-width);\n border-inline-start: var(--input-border-style--invalid-focus) var(--input-border-hint-width);\n -webkit-padding-start: 0 !important;\n padding-inline-start: 0 !important;\n}\n.is-invalid.has-focus.sc-nano-select-h:not([disabled]) .form-ctrl__input.sc-nano-select {\n background: var(--input-bg-color--invalid);\n border: var(--input-border-style--invalid-focus);\n border-width: var(--input-border-width);\n -webkit-border-start: var(--input-border-style--invalid-focus) var(--input-border-hint-width);\n border-inline-start: var(--input-border-style--invalid-focus) var(--input-border-hint-width);\n -webkit-padding-start: 0 !important;\n padding-inline-start: 0 !important;\n}\n\n.form-ctrl__input-wrap.sc-nano-select {\n display: flex;\n align-items: stretch;\n flex: 1;\n max-inline-size: 100%;\n}\n\n.form-ctrl__clear-btn.sc-nano-select, .form-ctrl__slot-end.sc-nano-select, .form-ctrl__slot-start.sc-nano-select, .form-ctrl__slot-value-end.sc-nano-select {\n --nano-icon-size: 1.4em;\n margin-block: 0;\n margin-inline: 0;\n font-size: 1em;\n border: 0;\n outline: none;\n background-color: transparent;\n background-repeat: no-repeat;\n display: flex;\n align-items: stretch;\n inline-size: auto;\n}\n\n.has-float-label.sc-nano-select .form-ctrl__slot-start.sc-nano-select {\n display: none;\n}\n\n.form-ctrl__slot-start.sc-nano-select-s > *, .form-ctrl__slot-start .sc-nano-select-s > *, .form-ctrl__slot-end.sc-nano-select-s > *, .form-ctrl__slot-end .sc-nano-select-s > *, .form-ctrl__slot-value-end.sc-nano-select-s > *, .form-ctrl__slot-value-end .sc-nano-select-s > *, .form-ctrl__slot-value-end.sc-nano-select *.sc-nano-select {\n --nano-icon-size: 1.4em;\n padding-inline: unset;\n -webkit-padding-start: var(--padding-start);\n padding-inline-start: var(--padding-start);\n -webkit-padding-end: var(--padding-end);\n padding-inline-end: var(--padding-end);\n font-size: 1em;\n align-items: center;\n display: flex;\n block-size: 100%;\n z-index: 1;\n}\n.sc-nano-select-h[disabled]:not([disabled=false]) .form-ctrl__slot-start.sc-nano-select-s > *, .sc-nano-select-h[disabled]:not([disabled=false]) .form-ctrl__slot-start .sc-nano-select-s > *, .sc-nano-select-h[disabled]:not([disabled=false]) .form-ctrl__slot-end.sc-nano-select-s > *, .sc-nano-select-h[disabled]:not([disabled=false]) .form-ctrl__slot-end .sc-nano-select-s > *, .sc-nano-select-h[disabled]:not([disabled=false]) .form-ctrl__slot-value-end.sc-nano-select-s > *, .sc-nano-select-h[disabled]:not([disabled=false]) .form-ctrl__slot-value-end .sc-nano-select-s > *, [disabled].sc-nano-select-h:not([disabled=false]) .form-ctrl__slot-value-end.sc-nano-select *.sc-nano-select {\n pointer-events: none;\n}\n\n.form-ctrl__slot-value-end.sc-nano-select-s > *, .form-ctrl__slot-value-end .sc-nano-select-s > *, .form-ctrl__slot-value-end.sc-nano-select *.sc-nano-select {\n pointer-events: none;\n}\n\n.form-ctrl__clear-btn.sc-nano-select {\n color: var(--clear-btn-color);\n padding: 0;\n opacity: 0;\n inline-size: 0;\n -webkit-appearance: none;\n appearance: none;\n align-items: center;\n overflow: hidden;\n}\n.is-invalid.sc-nano-select-h .form-ctrl__clear-btn.sc-nano-select {\n color: var(--clear-btn-color--invalid);\n}\n.has-value.sc-nano-select-h .form-ctrl__clear-btn.sc-nano-select {\n padding-block: 0;\n padding-inline: var(--padding-start) var(--padding-end);\n opacity: 1;\n inline-size: auto;\n}\n.form-ctrl__clear-btn.sc-nano-select:hover {\n color: var(--clear-btn-color--hover);\n}\n\n.sc-nano-select-h {\n \n --placeholder-color: var(--nano-input-placeholder-color, initial);\n --placeholder-font-style: var(--nano-input-placeholder-style, initial);\n --placeholder-font-weight: var(--nano-input-placeholder-weight, initial);\n --placeholder-opacity: var(--nano-input-placeholder-opacity, 0.5);\n --padding-top: var(--nano-input-padding-top, var(--nano-input-padding, 8px));\n --padding-end: var(--nano-input-padding-end, var(--nano-input-padding, 8px));\n --padding-bottom: var(--nano-input-padding-bottom, var(--nano-input-padding, 6px));\n --padding-start: var(--nano-input-padding-start, var(--nano-input-padding, 8px));\n --color-invalid: var(--nano-color-danger-rgb, 239 65 53);\n --color--focus-rgb:\n var(\n --nano-color-base-rgb,\n var(--nano-color-primary-rgb, 0 116 149)\n );\n --input-font-size: var(--nano-input-font-size, 0.87em);\n --input-text-color: var(--nano-input-text-color, #4a4a4a);\n --input-border-width: var(--nano-input-border-width, 1px);\n --input-border-hint-width: 3px;\n --input-border-color: var(--nano-input-border-color, #e4e6e8);\n --input-border-radius: var(--nano-input-border-radius, 0);\n --input-border-style: var(--nano-input-border-style, solid) var(--nano-input-border-color, #e4e6e8);\n --input-border-style--focus: var(--nano-input-border-style, solid) var(--nano-input-border-color--focus, #90c6e7);\n --input-border-style--invalid: var(--nano-input-border-style, solid) var(--nano-input-border-color--invalid, #e4e6e8);\n --input-border-style--invalid-focus: var(--nano-input-border-style, solid) var(--nano-input-border-color--invalid, #ef4135);\n --input-bg-color: var(--nano-input-background-color, #fff);\n --input-bg-color--focus: var(--input-bg-color);\n --input-bg-color--invalid: var(--nano-input-background-color, white);\n --invalid-msg-color: rgb(var(--color-invalid) / 100%);\n --invalid-msg-font-size: var(--nano-input-help-font-size, 0.75em);\n --help-msg-color: var(--nano-input-help-color, #616d6e);\n --clear-btn-color: var(--nano-clear-btn-color, rgba(0, 0, 0, 0.3));\n --clear-btn-color--hover: rgb(var(--color--focus-rgb) / 100%);\n --clear-btn-color--invalid: rgb(var(--color-invalid) / 100%);\n --label-color: var(--nano-input-label-color, \"currentcolor\");\n --label-color--focus: var(--label-color);\n --label-color--invalid: var(--nano-input-label-color-invalid, \"currentcolor\");\n --label-font-size: var(--nano-input-label-color, 1em);\n --multi-input-value-bg: var(--nano-input-tag-bg, 186 220 240);\n --multi-input-value-text-color: var(--nano-input-tag-color, #455556);\n --multi-input-value-border: var(--nano-input-tag-color, #badcf0);\n \n position: relative;\n width: 100%;\n padding: 0 !important;\n font-family: var(--nano-font-family, inherit);\n display: block;\n}\n\n.nano-color.sc-nano-select-h {\n --input-border-style--focus:\n var(--nano-input-border-style, solid) var(\n --nano-color-tint,\n var(--nano-color-primary-tint, #2689a5)\n );\n --multi-input-value-bg: var(--nano-color-tint-rgb);\n --multi-input-value-border: var(--nano-color-shade);\n --multi-input-value-text-color: var(--nano-color-contrast);\n color: var(--nano-color-base);\n}\n\nnano-item.sc-nano-select-h:not(.item-label), nano-item:not(.item-label) .sc-nano-select-h {\n --padding-start: 0;\n}\n\n[disabled].sc-nano-select-h:not([disabled=false]) *.sc-nano-select {\n pointer-events: none !important;\n}\n\nselect.sc-nano-select {\n display: none;\n}\n\n.select__native-input.sc-nano-select {\n font-family: inherit;\n font-size: inherit;\n font-stretch: inherit;\n font-style: inherit;\n font-weight: inherit;\n letter-spacing: inherit;\n text-decoration: inherit;\n text-overflow: inherit;\n text-transform: inherit;\n text-align: inherit;\n white-space: inherit;\n color: inherit;\n padding: unset;\n padding-inline: var(--padding-start) var(--padding-end);\n padding-block: 0;\n border-radius: var(--input-border-radius);\n text-overflow: ellipsis;\n color: var(--input-text-color);\n display: inline-block;\n flex: 1;\n width: 100%;\n max-width: 100%;\n max-height: 100%;\n border: 0;\n outline: none;\n background: transparent;\n -webkit-appearance: none;\n appearance: none;\n margin: 0;\n box-sizing: border-box;\n resize: none;\n overflow: hidden;\n cursor: default;\n line-height: 2.5em;\n \n \n}\n.has-float-label.sc-nano-select .select__native-input.sc-nano-select {\n line-height: 2.1em;\n min-height: 2.1em;\n -webkit-padding-before: 1.4em;\n padding-block-start: 1.4em;\n}\n.select__native-input.sc-nano-select::selection {\n background: transparent;\n}\n.select__native-input.sc-nano-select::-moz-selection {\n background: transparent;\n}\n.select__native-input.sc-nano-select::placeholder {\n color: var(--placeholder-color);\n font-family: inherit;\n font-style: var(--placeholder-font-style);\n font-weight: var(--placeholder-font-weight);\n opacity: var(--placeholder-opacity);\n line-height: inherit;\n min-height: initial;\n}\n.select__native-input.sc-nano-select::-moz-placeholder {\n line-height: 2.8em;\n text-overflow: ellipsis;\n}\n.select__native-input.sc-nano-select:-webkit-autofill {\n background-color: transparent;\n}\n.select__native-input.sc-nano-select::-webkit-search-decoration, .select__native-input.sc-nano-select::-webkit-search-cancel-button, .select__native-input.sc-nano-select::-webkit-search-results-button, .select__native-input.sc-nano-select::-webkit-search-results-decoration {\n -webkit-appearance: none;\n appearance: none;\n}\n.select__native-input.sc-nano-select:invalid {\n box-shadow: none;\n}\n.select__native-input.sc-nano-select::-ms-clear, .select__native-input.sc-nano-select::-ms-reveal {\n display: none;\n}\n.select__native-input.resizable.sc-nano-select {\n resize: vertical;\n overflow: auto;\n}\n.form-ctrl__textarea.sc-nano-select .select__native-input.sc-nano-select {\n line-height: 1.5em;\n padding-block: var(--padding-top) var(--padding-bottom);\n white-space: pre-wrap;\n}\n.form-ctrl__textarea.sc-nano-select .select__native-input.sc-nano-select::placeholder {\n line-height: 1.5em;\n}\n.has-float-label.textarea.sc-nano-select .select__native-input.sc-nano-select {\n -webkit-padding-before: 1.8em;\n padding-block-start: 1.8em;\n}\n.masked.sc-nano-select-h .select__native-input.sc-nano-select {\n opacity: 0;\n position: absolute;\n inset-inline-start: 0;\n inset-block-start: 0;\n}\n\n.select__mask.sc-nano-select {\n font-family: inherit;\n font-size: inherit;\n font-stretch: inherit;\n font-style: inherit;\n font-weight: inherit;\n letter-spacing: inherit;\n text-decoration: inherit;\n text-overflow: inherit;\n text-transform: inherit;\n text-align: inherit;\n white-space: inherit;\n color: inherit;\n padding-inline: var(--padding-start) var(--padding-end);\n padding-block: 0;\n border-radius: var(--input-border-radius);\n pointer-events: none;\n line-height: 2.5em;\n min-height: 2.5em;\n}\n\n.select__multi-wrap.sc-nano-select {\n padding-block: 0 var(--padding-bottom);\n padding-inline: 0 0;\n display: flex;\n flex: 1;\n flex-wrap: wrap;\n overflow: hidden;\n align-items: flex-start;\n}\n.has-float-label.sc-nano-select-h .select__multi-wrap.sc-nano-select {\n -webkit-padding-before: 1em;\n padding-block-start: 1em;\n}\n.select__multi-input.sc-nano-select {\n font-family: inherit;\n font-size: inherit;\n font-stretch: inherit;\n font-style: inherit;\n font-weight: inherit;\n letter-spacing: inherit;\n text-decoration: inherit;\n text-overflow: inherit;\n text-transform: inherit;\n text-align: inherit;\n white-space: inherit;\n color: inherit;\n padding-inline: var(--padding-start) var(--padding-end);\n padding-block: var(--padding-bottom) 0;\n min-width: 50px;\n width: 100%;\n max-height: 100%;\n -webkit-appearance: none;\n appearance: none;\n border: 0;\n outline: none;\n display: inline-block;\n background: transparent;\n flex: 0;\n position: relative;\n box-sizing: border-box;\n line-height: calc(2.5em - var(--padding-bottom));\n height: calc(2.5em - var(--padding-bottom));\n}\n.select__multi-input.sc-nano-select:last-child {\n flex: 1;\n}\n.select__multi-value.sc-nano-select {\n margin-block: var(--padding-bottom) 0;\n margin-inline: var(--padding-start) -3px;\n background: rgb(var(--multi-input-value-bg)/80%);\n color: var(--multi-input-value-text-color);\n border: 1px solid;\n border-color: var(--multi-input-value-border);\n padding: 0.35em 0.5em;\n max-width: 100%;\n display: flex;\n align-items: center;\n font-size: var(--input-font-size);\n letter-spacing: 1px;\n max-height: calc(2.5em - 8px);\n}\n.select__multi-value.sc-nano-select span.sc-nano-select {\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: 100%;\n overflow: hidden;\n}\n.select__multi-value-remove.sc-nano-select {\n background-position: center;\n -webkit-padding-start: 0.5em;\n padding-inline-start: 0.5em;\n margin: 0;\n color: inherit;\n border: 0;\n outline: none;\n background-color: transparent;\n background-repeat: no-repeat;\n -webkit-appearance: none;\n appearance: none;\n display: flex;\n align-items: center;\n inset-block-start: 0;\n font-size: 1em;\n}\n.select__multi-value-remove.sc-nano-select nano-icon.sc-nano-select {\n --color: var(--multi-input-value-text-color);\n}\n\n.form-ctrl__float-label.sc-nano-select {\n width: calc(100% - (1em + var(--padding-start) * 2));\n}\n.has-focus.has-multiple.sc-nano-select-h .form-ctrl__float-label.sc-nano-select {\n transform: translateY(-110%);\n font-size: 0.8em;\n}\n.has-value.has-multiple.sc-nano-select-h .form-ctrl__float-label.sc-nano-select {\n transform: translateY(21%);\n inset-block-start: 0;\n}\n\n.has-focus.sc-nano-select-h select.sc-nano-select, .has-focus.sc-nano-select-h a.sc-nano-select, .has-focus.sc-nano-select-h button.sc-nano-select {\n pointer-events: auto;\n}";
|
22472
22474
|
|
22473
22475
|
let selectIds = 0;
|
22474
22476
|
/**
|
@@ -27519,6 +27521,19 @@ function drag(container, options) {
|
|
27519
27521
|
// move(initialEvent);
|
27520
27522
|
}
|
27521
27523
|
|
27524
|
+
/**
|
27525
|
+
* Add multiple event listeners with the same callback function
|
27526
|
+
* @param el the element which emits events
|
27527
|
+
* @param events the event names to listen to (string separated by a space)
|
27528
|
+
* @param fn the function to call
|
27529
|
+
* @param opts the event options to apply
|
27530
|
+
*/
|
27531
|
+
function addListeners(el, events, fn, opts) {
|
27532
|
+
events
|
27533
|
+
.split(' ')
|
27534
|
+
.forEach((e) => el.addEventListener(e, fn, opts));
|
27535
|
+
}
|
27536
|
+
|
27522
27537
|
const sortableCss = "/*!@:host*/.sc-nano-sortable-h{box-sizing:border-box}/*!@*,\n*::before,\n*::after*/*.sc-nano-sortable,*.sc-nano-sortable::before,*.sc-nano-sortable::after{box-sizing:border-box}/*!@[hidden]*/[hidden].sc-nano-sortable{display:none !important}/*!@:host*/.sc-nano-sortable-h{position:relative;display:block}/*!@.sortable__live-region*/.sortable__live-region.sc-nano-sortable{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);block-size:1px;inline-size:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}";
|
27523
27538
|
|
27524
27539
|
// Orientation map to limit dragging to horizontal or vertical.
|
@@ -27784,11 +27799,6 @@ class Sortable {
|
|
27784
27799
|
return node.parentNode.appendChild(clone);
|
27785
27800
|
}
|
27786
27801
|
/// Event handlers ///
|
27787
|
-
addListeners(el, events, fn, opts) {
|
27788
|
-
events
|
27789
|
-
.split(' ')
|
27790
|
-
.forEach((e) => el.addEventListener(e, fn, opts));
|
27791
|
-
}
|
27792
27802
|
removeEventHandlers(ele) {
|
27793
27803
|
ele = ele || this.sortableHost;
|
27794
27804
|
ele.removeEventListener('mousedown', this.handleTrack);
|
@@ -27797,7 +27807,7 @@ class Sortable {
|
|
27797
27807
|
}
|
27798
27808
|
addEventHandlers(ele) {
|
27799
27809
|
ele = ele || this.sortableHost;
|
27800
|
-
|
27810
|
+
addListeners(ele, 'mousedown touchstart', this.handleTrack, {
|
27801
27811
|
passive: true,
|
27802
27812
|
});
|
27803
27813
|
ele.addEventListener('keydown', this.handleKeydown);
|
@@ -27977,7 +27987,7 @@ class Sortable {
|
|
27977
27987
|
});
|
27978
27988
|
}, 150);
|
27979
27989
|
// reset track timer & cancel DnD on mouseup / touchend / touchmove
|
27980
|
-
|
27990
|
+
addListeners(document, 'mouseup touchend touchmove', () => clearTimeout(this.mouseDownTimer), { once: true });
|
27981
27991
|
}
|
27982
27992
|
/**
|
27983
27993
|
* Initialized a drag and drop sequence if a child node was clicked that matches the itemSelector property.
|
@@ -28910,8 +28920,10 @@ class Sticker {
|
|
28910
28920
|
}
|
28911
28921
|
/** Find and set the stickToEle from the public, selector string */
|
28912
28922
|
stickToChange() {
|
28913
|
-
if (this.stickTo)
|
28923
|
+
if (typeof this.stickTo === 'string')
|
28914
28924
|
this.stickToEle = this.scrollParent.querySelector(this.stickTo);
|
28925
|
+
else if (!!this.stickTo)
|
28926
|
+
this.stickToEle = this.stickTo;
|
28915
28927
|
else
|
28916
28928
|
this.stickToEle = undefined;
|
28917
28929
|
}
|
@@ -30490,6 +30502,7 @@ function filter(workerStore, rows, filters = []) {
|
|
30490
30502
|
}
|
30491
30503
|
else {
|
30492
30504
|
rows = filter$1(rows, {
|
30505
|
+
predicate: typeof filter.filter === 'string' ? 'AND' : 'OR',
|
30493
30506
|
keywords: filter.filter,
|
30494
30507
|
includePaths: [filter.prop],
|
30495
30508
|
ignorePaths: ['__uuid', '__index'],
|
@@ -30843,92 +30856,6 @@ function colheadFootRender(col) {
|
|
30843
30856
|
const tpl = col === null || col === void 0 ? void 0 : col.columnTemplate;
|
30844
30857
|
return tpl ? (tpl(hAsync, col)) : (hAsync(Fragment, null, col.title));
|
30845
30858
|
}
|
30846
|
-
const stickyHIOs = new WeakMap();
|
30847
|
-
const stickyVIOs = new WeakMap();
|
30848
|
-
/**
|
30849
|
-
* Adds element to Intersection Observer. Fires when element changes on the x axis
|
30850
|
-
* @param el - an element to observe
|
30851
|
-
* @param pos - the edge to watch (start or end)
|
30852
|
-
* @param cb - callback when an intersection state changes.
|
30853
|
-
*/
|
30854
|
-
function addHObserver(el, pos, cb) {
|
30855
|
-
if (stickyHIOs.get(el))
|
30856
|
-
return;
|
30857
|
-
const store = fetchStores();
|
30858
|
-
const root = store.general.state.scrollParent;
|
30859
|
-
const observer = new IntersectionObserver(([e]) => {
|
30860
|
-
const rootBounds = e.rootBounds || document.scrollingElement.getBoundingClientRect();
|
30861
|
-
const positions = {};
|
30862
|
-
if (pos === 'start') {
|
30863
|
-
positions.start =
|
30864
|
-
e.boundingClientRect.x - (rootBounds.x + root.scrollLeft) < 0 &&
|
30865
|
-
!e.isIntersecting;
|
30866
|
-
}
|
30867
|
-
if (pos === 'end') {
|
30868
|
-
// TODO - sort these out for RtL
|
30869
|
-
positions.end =
|
30870
|
-
e.boundingClientRect.right > e.boundingClientRect.width &&
|
30871
|
-
!e.isIntersecting;
|
30872
|
-
}
|
30873
|
-
if (!!cb)
|
30874
|
-
cb(positions);
|
30875
|
-
}, {
|
30876
|
-
threshold: [1],
|
30877
|
-
rootMargin: '1px 0px 100px 0px',
|
30878
|
-
root: root === document.scrollingElement ? null : root,
|
30879
|
-
});
|
30880
|
-
stickyHIOs.set(el, observer);
|
30881
|
-
if (store.general.state.isReady) {
|
30882
|
-
observer.observe(el);
|
30883
|
-
}
|
30884
|
-
else {
|
30885
|
-
store.general.state.host.addEventListener('nanoTblReady', () => {
|
30886
|
-
observer.observe(el);
|
30887
|
-
}, { once: true });
|
30888
|
-
}
|
30889
|
-
}
|
30890
|
-
/**
|
30891
|
-
* Adds element to Intersection Observer. Fires when element changes on the y axis
|
30892
|
-
* @param el - an element to observe
|
30893
|
-
* @param pos - the edge to watch (start or end)
|
30894
|
-
* @param cb - callback when an intersection state changes.
|
30895
|
-
*/
|
30896
|
-
function addVObserver(el, pos, cb) {
|
30897
|
-
if (stickyVIOs.get(el))
|
30898
|
-
return;
|
30899
|
-
const store = fetchStores();
|
30900
|
-
const root = store.general.state.scrollParent;
|
30901
|
-
const observer = new IntersectionObserver(([e]) => {
|
30902
|
-
const rootBounds = e.rootBounds || document.scrollingElement.getBoundingClientRect();
|
30903
|
-
const positions = {};
|
30904
|
-
if (pos === 'top') {
|
30905
|
-
positions.top =
|
30906
|
-
e.boundingClientRect.y - (rootBounds.y + root.scrollTop) < 0 &&
|
30907
|
-
!e.isIntersecting;
|
30908
|
-
}
|
30909
|
-
if (pos === 'bottom') {
|
30910
|
-
const boundingClientRect = e.target.getBoundingClientRect();
|
30911
|
-
positions.bottom =
|
30912
|
-
boundingClientRect.height + boundingClientRect.y >
|
30913
|
-
rootBounds.height && !e.isIntersecting;
|
30914
|
-
}
|
30915
|
-
if (!!cb)
|
30916
|
-
cb(positions);
|
30917
|
-
}, {
|
30918
|
-
threshold: [1],
|
30919
|
-
rootMargin: '0px 100px 0px 100px',
|
30920
|
-
root: root === document.scrollingElement ? null : root,
|
30921
|
-
});
|
30922
|
-
stickyVIOs.set(el, observer);
|
30923
|
-
if (store.general.state.isReady) {
|
30924
|
-
observer.observe(el);
|
30925
|
-
}
|
30926
|
-
else {
|
30927
|
-
store.general.state.host.addEventListener('nanoTblReady', () => {
|
30928
|
-
observer.observe(el);
|
30929
|
-
}, { once: true });
|
30930
|
-
}
|
30931
|
-
}
|
30932
30859
|
function headerPinClasses(type, vPinned, toString = false) {
|
30933
30860
|
const classes = {
|
30934
30861
|
[`${CSSNAMESPACE}__${type}`]: true,
|
@@ -30998,7 +30925,7 @@ function isInViewport(el, percentVisible = 100) {
|
|
30998
30925
|
percentVisible);
|
30999
30926
|
}
|
31000
30927
|
|
31001
|
-
const TableColHead = ({ column,
|
30928
|
+
const TableColHead = ({ column, onColumnSortClick, defaults, }) => {
|
31002
30929
|
// Sort handling
|
31003
30930
|
function handleColumnSortClick(e) {
|
31004
30931
|
let order;
|
@@ -31023,7 +30950,7 @@ const TableColHead = ({ column, headRenderer, onColumnSortClick, onColumnPinned,
|
|
31023
30950
|
extraProps = column.columnProperties(column) || extraProps;
|
31024
30951
|
}
|
31025
30952
|
const baseProps = {
|
31026
|
-
class: Object.assign(Object.assign({}, headerPinClasses('th',
|
30953
|
+
class: Object.assign(Object.assign({}, headerPinClasses('th', column.pinned)), { [`${CSSNAMESPACE}__pin--start`]: column.pinned === 'start', [`${CSSNAMESPACE}__pin--end`]: column.pinned === 'end', [`${CSSNAMESPACE}__ordered`]: !!column.order, [`${CSSNAMESPACE}__filtered`]: column.filter !== undefined && column.filter !== null }),
|
31027
30954
|
};
|
31028
30955
|
let props = extraProps ? mergeProperties(baseProps, extraProps) : baseProps;
|
31029
30956
|
const content = colheadFootRender(column);
|
@@ -31040,12 +30967,7 @@ const TableColHead = ({ column, headRenderer, onColumnSortClick, onColumnPinned,
|
|
31040
30967
|
: 'none';
|
31041
30968
|
props = Object.assign(Object.assign({}, props), { 'aria-sort': sort });
|
31042
30969
|
}
|
31043
|
-
return (hAsync("th", Object.assign({}, props, {
|
31044
|
-
if (['end', 'start'].includes(column.pinned))
|
31045
|
-
addHObserver(th, column.pinned, onColumnPinned);
|
31046
|
-
if (['top', 'bottom'].includes(headRenderer.pinned))
|
31047
|
-
addVObserver(th, headRenderer.pinned, onColumnPinned);
|
31048
|
-
}, key: column.prop }), isSortable() ? (hAsync("button", { class: {
|
30970
|
+
return (hAsync("th", Object.assign({}, props, { key: column.prop }), isSortable() ? (hAsync("button", { class: {
|
31049
30971
|
[`${CSSNAMESPACE}__order-btn`]: true,
|
31050
30972
|
[`${CSSNAMESPACE}__cell-content`]: true,
|
31051
30973
|
}, onClick: handleColumnSortClick },
|
@@ -31073,6 +30995,7 @@ function cellRender(rowIndex, colIndex) {
|
|
31073
30995
|
const columns = store.config.state.columns;
|
31074
30996
|
const tpl = (_a = columns[colIndex]) === null || _a === void 0 ? void 0 : _a.cellTemplate;
|
31075
30997
|
const model = colDataModel(rowIndex, colIndex);
|
30998
|
+
const tableInstance = getRenderingRef();
|
31076
30999
|
if (!!model.cellModel && columns[colIndex].type === 'date') {
|
31077
31000
|
const d = new Date(model.cellModel);
|
31078
31001
|
if (d instanceof Date && !isNaN(d)) {
|
@@ -31081,7 +31004,28 @@ function cellRender(rowIndex, colIndex) {
|
|
31081
31004
|
: d;
|
31082
31005
|
}
|
31083
31006
|
}
|
31084
|
-
|
31007
|
+
// Wrap the h pragma, then we can know if we're using Stencil's
|
31008
|
+
// jsx renderer or a different one
|
31009
|
+
let hCalled = false;
|
31010
|
+
const hWrap = (...args) => {
|
31011
|
+
hCalled = true;
|
31012
|
+
return hAsync(...args);
|
31013
|
+
};
|
31014
|
+
let tplResult = tpl ? tpl(hWrap, model) : undefined;
|
31015
|
+
if (tplResult &&
|
31016
|
+
tableInstance.customRenderer &&
|
31017
|
+
tplResult['$attrs$'] === undefined &&
|
31018
|
+
!(tplResult instanceof Element) &&
|
31019
|
+
typeof tplResult !== 'string' &&
|
31020
|
+
!hCalled) {
|
31021
|
+
// template result is jsx *not* from Stencil.
|
31022
|
+
// Render it now and output it later.
|
31023
|
+
const templateEle = document.createElement('template');
|
31024
|
+
// @ts-expect-error
|
31025
|
+
tableInstance.customRenderer(tplResult, templateEle.content);
|
31026
|
+
tplResult = templateEle;
|
31027
|
+
}
|
31028
|
+
return tplResult ? (tplResult) : model.cellModel !== undefined && model.cellModel !== null ? (hAsync(Fragment, null, (_b = model.cellModel) === null || _b === void 0 ? void 0 : _b.toString())) : ('');
|
31085
31029
|
}
|
31086
31030
|
const baseCellClasses = (colIndex, toString = false) => {
|
31087
31031
|
const store = fetchStores();
|
@@ -31097,11 +31041,12 @@ const baseCellClasses = (colIndex, toString = false) => {
|
|
31097
31041
|
return classListToStr(classes);
|
31098
31042
|
return classes;
|
31099
31043
|
};
|
31100
|
-
const TableCell
|
31044
|
+
const TableCell = ({ rowIndex, colIndex, nestedContent, }) => {
|
31101
31045
|
const Content = () => nestedContent
|
31102
31046
|
? nestedContent()
|
31103
31047
|
: cellRender(rowIndex, colIndex) || (hAsync("span", { class: "placeholder" }, "\u00A0"));
|
31104
31048
|
let CellType = 'td';
|
31049
|
+
const tableInstance = getRenderingRef();
|
31105
31050
|
const store = fetchStores();
|
31106
31051
|
const column = store.config.state.columns[colIndex];
|
31107
31052
|
let props = mergeCellProperties(rowIndex, colIndex, {
|
@@ -31113,14 +31058,23 @@ const TableCell$1 = ({ rowIndex, colIndex, nestedContent, }) => {
|
|
31113
31058
|
? Object.assign(Object.assign({}, props), { scope: 'rowgroup' }) : Object.assign(Object.assign({}, props), { scope: 'row' });
|
31114
31059
|
CellType = 'th';
|
31115
31060
|
}
|
31116
|
-
const ContentWrap = (props) =>
|
31117
|
-
|
31118
|
-
|
31119
|
-
|
31120
|
-
|
31121
|
-
|
31122
|
-
|
31123
|
-
|
31061
|
+
const ContentWrap = (props) => {
|
31062
|
+
const content = Content();
|
31063
|
+
return (hAsync("div", Object.assign({ ref: (d) => {
|
31064
|
+
if (d && content instanceof Element) {
|
31065
|
+
d.replaceChildren();
|
31066
|
+
d.append(content['content'] || content);
|
31067
|
+
}
|
31068
|
+
} }, props, { class: {
|
31069
|
+
[`${CSSNAMESPACE}__cell-content`]: true,
|
31070
|
+
[`${CSSNAMESPACE}__cell-content--wrap`]: !!column.wrap,
|
31071
|
+
}, innerHTML: typeof content === 'string' && content.includes('<')
|
31072
|
+
? content
|
31073
|
+
: undefined }), (typeof content !== 'string' || !content.includes('<')) &&
|
31074
|
+
!(content instanceof Element) &&
|
31075
|
+
content));
|
31076
|
+
};
|
31077
|
+
return (hAsync(CellType, Object.assign({ role: tableInstance.type === 'grid' ? 'gridcell' : undefined }, props), column.autoTooltip && !column.wrap ? (hAsync("nano-resize-observe", { notifyContentFit: "x", onNanoResizeContentFitChange: (e) => (e.target.firstElementChild.disabled =
|
31124
31078
|
e.detail.x) },
|
31125
31079
|
hAsync("nano-tooltip", { disabled: true, placement: "top", onNanoShow: (e) => (e.target.closest(CellType).style.zIndex = '100'), onNanoHide: (e) => (e.target.closest(CellType).style.zIndex = '') },
|
31126
31080
|
hAsync(ContentWrap, null),
|
@@ -31128,14 +31082,18 @@ const TableCell$1 = ({ rowIndex, colIndex, nestedContent, }) => {
|
|
31128
31082
|
hAsync(Content, null))))) : (hAsync(ContentWrap, null))));
|
31129
31083
|
};
|
31130
31084
|
|
31131
|
-
const
|
31132
|
-
const cell = (hAsync("div", { class: {
|
31085
|
+
const tableCellContent = (props, children, ctx) => {
|
31086
|
+
const cell = (hAsync("div", Object.assign({}, props.wrapperProps, { class: {
|
31133
31087
|
[`${CSSNAMESPACE}__cell-content`]: true,
|
31134
|
-
[`${CSSNAMESPACE}__cell-content--wrap`]: wrap,
|
31135
|
-
} }, children));
|
31136
|
-
return header ? hAsync("th", { scope:
|
31137
|
-
};
|
31138
|
-
const TableRow = ({ rowRenderer, rowIndex, rowModel
|
31088
|
+
[`${CSSNAMESPACE}__cell-content--wrap`]: props.wrap,
|
31089
|
+
} }), children));
|
31090
|
+
return props.header ? (hAsync("th", Object.assign({ scope: ctx }, props.cellProps), cell)) : (hAsync("td", Object.assign({}, props.cellProps), cell));
|
31091
|
+
};
|
31092
|
+
const TableRow = ({ rowRenderer, rowIndex, rowModel }, children, utils) => {
|
31093
|
+
// helper, generates <td> or <th>
|
31094
|
+
const TableCell = ({ header, wrap, cellProps, wrapperProps }, children) => {
|
31095
|
+
return tableCellContent({ header, wrap, cellProps, wrapperProps }, children, 'row');
|
31096
|
+
};
|
31139
31097
|
let extraProps = {};
|
31140
31098
|
if (!rowModel) {
|
31141
31099
|
const model = rowDataModel(rowIndex);
|
@@ -31145,13 +31103,28 @@ const TableRow = ({ rowRenderer, rowIndex, rowModel, onColumnPinned }, children,
|
|
31145
31103
|
extraProps =
|
31146
31104
|
rowRenderer.rowProperties({ rowModel, rowIndex }) || extraProps;
|
31147
31105
|
}
|
31148
|
-
let
|
31106
|
+
let rowPinned;
|
31149
31107
|
if ((rowRenderer === null || rowRenderer === void 0 ? void 0 : rowRenderer.pinned) && typeof rowRenderer.pinned === 'function') {
|
31150
|
-
|
31108
|
+
rowPinned = rowRenderer.pinned({ rowModel, rowIndex });
|
31151
31109
|
}
|
31152
|
-
const
|
31153
|
-
const props = extraProps ? mergeProperties(baseProps, extraProps) : baseProps;
|
31110
|
+
const props = mergeProperties({ class: headerPinClasses('tr', rowPinned, true) }, extraProps);
|
31154
31111
|
const tpl = rowRenderer === null || rowRenderer === void 0 ? void 0 : rowRenderer.template;
|
31112
|
+
/**
|
31113
|
+
* Applies appropriate classes to td / th VNodes;
|
31114
|
+
* which can be supplied by user defined templates
|
31115
|
+
* @param children virtual / jsx node array
|
31116
|
+
* @returns virtual / jsx node array
|
31117
|
+
*/
|
31118
|
+
const applyCellClasses = (children) => {
|
31119
|
+
return utils.map(children, (cNode, i) => {
|
31120
|
+
if (['td', 'th'].includes(cNode.vtag.toString())) {
|
31121
|
+
cNode.vattrs = mergeProperties({
|
31122
|
+
class: baseCellClasses(i, true),
|
31123
|
+
}, cNode.vattrs);
|
31124
|
+
}
|
31125
|
+
return cNode;
|
31126
|
+
});
|
31127
|
+
};
|
31155
31128
|
if (tpl) {
|
31156
31129
|
let toRender = tpl(hAsync, {
|
31157
31130
|
renderedRow: (hAsync("tr", Object.assign({}, props, { key: rowModel.__uuid }), children)),
|
@@ -31163,24 +31136,9 @@ const TableRow = ({ rowRenderer, rowIndex, rowModel, onColumnPinned }, children,
|
|
31163
31136
|
if (node.vtag === 'tr') {
|
31164
31137
|
if (!node.vkey)
|
31165
31138
|
node.vkey = `${rowModel.__uuid}_${i}`;
|
31166
|
-
node.vattrs = mergeProperties({ class: headerPinClasses('tr',
|
31139
|
+
node.vattrs = mergeProperties({ class: headerPinClasses('tr', rowPinned, true) }, node.vattrs);
|
31167
31140
|
if (!!node.vchildren) {
|
31168
|
-
node.vchildren =
|
31169
|
-
if (['td', 'th'].includes(cNode.vtag.toString())) {
|
31170
|
-
cNode.vattrs = mergeProperties({
|
31171
|
-
class: headerPinClasses(cNode.vtag.toString(), pinned, true) + baseCellClasses(i, true),
|
31172
|
-
ref: (th) => {
|
31173
|
-
if ((!!th && pinned === 'top') || pinned === 'bottom')
|
31174
|
-
addVObserver(th, pinned, onColumnPinned);
|
31175
|
-
if (!!th && th.classList.contains('nano-tbl__pin--end'))
|
31176
|
-
addHObserver(th, 'end', onColumnPinned);
|
31177
|
-
if (!!th && th.classList.contains('nano-tbl__pin--start'))
|
31178
|
-
addHObserver(th, 'start', onColumnPinned);
|
31179
|
-
},
|
31180
|
-
}, cNode.vattrs);
|
31181
|
-
}
|
31182
|
-
return cNode;
|
31183
|
-
});
|
31141
|
+
node.vchildren = applyCellClasses(node.vchildren);
|
31184
31142
|
}
|
31185
31143
|
}
|
31186
31144
|
return node;
|
@@ -31188,28 +31146,25 @@ const TableRow = ({ rowRenderer, rowIndex, rowModel, onColumnPinned }, children,
|
|
31188
31146
|
}
|
31189
31147
|
return toRender;
|
31190
31148
|
}
|
31191
|
-
return (hAsync("tr", Object.assign({}, props, { key: rowModel.__uuid }), children));
|
31149
|
+
return (hAsync("tr", Object.assign({}, props, { key: rowModel.__uuid }), applyCellClasses(children)));
|
31192
31150
|
};
|
31193
|
-
const TableHeadFootRow = ({ rowRenderer
|
31151
|
+
const TableHeadFootRow = ({ rowRenderer }, // onRowPinned, onColPinned
|
31152
|
+
children, utils) => {
|
31194
31153
|
let extraProps = {};
|
31195
31154
|
if (rowRenderer.rowProperties) {
|
31196
31155
|
extraProps = rowRenderer.rowProperties() || {};
|
31197
31156
|
}
|
31198
|
-
const
|
31199
|
-
|
31200
|
-
[`${CSSNAMESPACE}__cell-content`]: true,
|
31201
|
-
[`${CSSNAMESPACE}__cell-content--wrap`]: wrap,
|
31202
|
-
} }, children));
|
31203
|
-
return header !== false ? hAsync("th", { scope: "col" }, cell) : hAsync("td", null, cell);
|
31157
|
+
const TableHeadFootCell = ({ header, wrap, cellProps, wrapperProps }, children) => {
|
31158
|
+
return tableCellContent({ header, wrap, cellProps, wrapperProps }, children, 'col');
|
31204
31159
|
};
|
31205
31160
|
const pinned = rowRenderer.pinned || null;
|
31206
|
-
const baseProps = { class: headerPinClasses('tr',
|
31161
|
+
const baseProps = { class: headerPinClasses('tr', pinned) };
|
31207
31162
|
const props = extraProps ? mergeProperties(baseProps, extraProps) : baseProps;
|
31208
31163
|
const tpl = rowRenderer === null || rowRenderer === void 0 ? void 0 : rowRenderer.template;
|
31209
31164
|
if (tpl) {
|
31210
31165
|
let toRender = tpl(hAsync, {
|
31211
31166
|
renderedRow: hAsync("tr", Object.assign({}, props), children),
|
31212
|
-
},
|
31167
|
+
}, TableHeadFootCell);
|
31213
31168
|
if (Array.isArray(toRender)) {
|
31214
31169
|
toRender = utils.map(toRender, (node) => {
|
31215
31170
|
if (node.vtag === 'tr') {
|
@@ -31219,14 +31174,6 @@ const TableHeadFootRow = ({ rowRenderer, onColumnPinned }, children, utils) => {
|
|
31219
31174
|
if (['td', 'th'].includes(cNode.vtag.toString())) {
|
31220
31175
|
cNode.vattrs = mergeProperties({
|
31221
31176
|
class: headerPinClasses(cNode.vtag.toString(), pinned, true),
|
31222
|
-
ref: (th) => {
|
31223
|
-
if ((!!th && pinned === 'top') || pinned === 'bottom')
|
31224
|
-
addVObserver(th, pinned, onColumnPinned);
|
31225
|
-
if (!!th && th.classList.contains('nano-tbl__pin--end'))
|
31226
|
-
addHObserver(th, 'end', onColumnPinned);
|
31227
|
-
if (!!th && th.classList.contains('nano-tbl__pin--start'))
|
31228
|
-
addHObserver(th, 'start', onColumnPinned);
|
31229
|
-
},
|
31230
31177
|
}, cNode.vattrs);
|
31231
31178
|
}
|
31232
31179
|
return cNode;
|
@@ -31241,8 +31188,399 @@ const TableHeadFootRow = ({ rowRenderer, onColumnPinned }, children, utils) => {
|
|
31241
31188
|
return hAsync("tr", Object.assign({}, props), children);
|
31242
31189
|
};
|
31243
31190
|
|
31244
|
-
|
31191
|
+
function addStyleSheet(id, css) {
|
31192
|
+
const styleSheet = document.getElementById(id) ||
|
31193
|
+
document.createElement('style');
|
31194
|
+
styleSheet.id = id;
|
31195
|
+
styleSheet.innerHTML = css;
|
31196
|
+
if (!styleSheet.isConnected)
|
31197
|
+
document.head.append(styleSheet);
|
31198
|
+
}
|
31199
|
+
/**
|
31200
|
+
* Manages the complex business of table 'pinning'; sticking columns and rows to the scrolling parent element.
|
31201
|
+
*
|
31202
|
+
* *knowing* when an element is pinned is tricky.
|
31203
|
+
* Managing the display of multiple, side-by-side pinned elements is trickier still.
|
31204
|
+
*
|
31205
|
+
* Pinning table columns are very different from pinning table rows:
|
31206
|
+
* - Rows are actual elements we can select, measure and apply styles to.
|
31207
|
+
* - Columns are disparate collections of elements that are much harder to select, measure and apply styles to.
|
31208
|
+
*
|
31209
|
+
* With this in mind, how columns and rows are pinned is different:
|
31210
|
+
* Rows can have changes applied directly, Columns have changes applied via dynamic stylesheets.
|
31211
|
+
*
|
31212
|
+
* The service is slightly opinionated on how it pins rows and columns (with some room for override):
|
31213
|
+
* - Pinned columns are stuck consecutively, without overlapping.
|
31214
|
+
* e.g. If column 'name' and 'surname' are both `pin: 'start'`; 'surname' will display **next** to name.
|
31215
|
+
* Both columns are important for context
|
31216
|
+
*
|
31217
|
+
* - Pinned rows are set to overlap *when* they have the same ancestor,
|
31218
|
+
* and stuck consecutively when they have a different ancestor.
|
31219
|
+
* e.g. `tbody > tr.pin ~ tr.pin` the second row will **overlap** the first; it's unlikely both rows will be important for context.
|
31220
|
+
* `thead > tr.pin`, `tbody > tr.pin`. Both rows are required for context so will require next to each other.
|
31221
|
+
*
|
31222
|
+
* Devs can override this behaviour by setting `--pin-start`, `--pin-end`, `--pin-top`, `--pin-bottom` custom vars.
|
31223
|
+
*/
|
31224
|
+
class TablePinService {
|
31225
|
+
constructor(table, scrollElement) {
|
31226
|
+
// Private state
|
31227
|
+
this.cachedColMeta = new WeakMap();
|
31228
|
+
this._pinnedStart = [];
|
31229
|
+
this._pinnedEnd = [];
|
31230
|
+
this._cssColDimensionCacheKey = '';
|
31231
|
+
this.cacheX = 0;
|
31232
|
+
this.cacheY = 0;
|
31233
|
+
this.tableEle = table;
|
31234
|
+
this.tableId = this.tableEle.id;
|
31235
|
+
this.scrollElement = scrollElement;
|
31236
|
+
// Secret sauce - `getElementsByClassName` is a live collection.
|
31237
|
+
// An HTMLCollection will keep itself up-to-date as elements come and go
|
31238
|
+
// So we can keep assessing on scroll
|
31239
|
+
this.startColumns = table
|
31240
|
+
.querySelector('thead')
|
31241
|
+
.getElementsByClassName(`${CSSNAMESPACE}__pin--start`);
|
31242
|
+
this.endColumns = table
|
31243
|
+
.querySelector('thead')
|
31244
|
+
.getElementsByClassName(`${CSSNAMESPACE}__pin--end`);
|
31245
|
+
this.topRows = table.getElementsByClassName(`${CSSNAMESPACE}__pin--top`);
|
31246
|
+
this.bottomRows = table.getElementsByClassName(`${CSSNAMESPACE}__pin--bottom`);
|
31247
|
+
this.onResize();
|
31248
|
+
}
|
31249
|
+
// Pinned cols & change detection
|
31250
|
+
get pinnedStart() {
|
31251
|
+
return this._pinnedStart;
|
31252
|
+
}
|
31253
|
+
set pinnedStart(cols) {
|
31254
|
+
this._pinnedStart = cols;
|
31255
|
+
this.handlePinnedStartChange();
|
31256
|
+
}
|
31257
|
+
/**
|
31258
|
+
* Called when columns are either pinned or unpinned.
|
31259
|
+
* Attaches a tiny stylesheet to target the 'last' start column.
|
31260
|
+
* (e.g. We only want to apply drop shadow on last pinned start column - not all pinned columns)
|
31261
|
+
*/
|
31262
|
+
handlePinnedStartChange() {
|
31263
|
+
writeTask(() => {
|
31264
|
+
if (this.pinnedStart.length) {
|
31265
|
+
this.tableEle.classList.add(`${CSSNAMESPACE}__pinned--start`);
|
31266
|
+
const lastActiveCol = this.cachedColMeta.get(this.pinnedStart[this.pinnedStart.length - 1]);
|
31267
|
+
addStyleSheet(`${this.tableId}-col-start-active-style`,
|
31268
|
+
/* css */ `
|
31269
|
+
#${this.tableId} tr > :nth-child(${lastActiveCol.idx + 1}) {
|
31270
|
+
--pin-start-active: 1;
|
31271
|
+
}
|
31272
|
+
`);
|
31273
|
+
}
|
31274
|
+
else {
|
31275
|
+
this.tableEle.classList.remove(`${CSSNAMESPACE}__pinned--start`);
|
31276
|
+
addStyleSheet(`${this.tableId}-col-start-active-style`, ``);
|
31277
|
+
}
|
31278
|
+
});
|
31279
|
+
}
|
31280
|
+
get pinnedEnd() {
|
31281
|
+
return this._pinnedEnd;
|
31282
|
+
}
|
31283
|
+
set pinnedEnd(cols) {
|
31284
|
+
this._pinnedEnd = cols;
|
31285
|
+
this.handlePinnedEndChange();
|
31286
|
+
}
|
31287
|
+
/**
|
31288
|
+
* Called when columns are either pinned or unpinned.
|
31289
|
+
* Attaches a tiny stylesheet to target the 'first' end column.
|
31290
|
+
* (e.g. We only want to apply drop shadow on first pinned end column - not all pinned columns)
|
31291
|
+
*/
|
31292
|
+
handlePinnedEndChange() {
|
31293
|
+
writeTask(() => {
|
31294
|
+
if (this.pinnedEnd.length) {
|
31295
|
+
this.tableEle.classList.add(`${CSSNAMESPACE}__pinned--end`);
|
31296
|
+
const firstActiveCol = this.cachedColMeta.get(this.pinnedEnd[0]);
|
31297
|
+
addStyleSheet(`${this.tableId}-col-end-active-style`,
|
31298
|
+
/* css */ `
|
31299
|
+
#${this.tableId} tr > :nth-child(${firstActiveCol.idx + 1}) { --pin-end-active: 1; }
|
31300
|
+
`);
|
31301
|
+
}
|
31302
|
+
else {
|
31303
|
+
this.tableEle.classList.remove(`${CSSNAMESPACE}__pinned--end`);
|
31304
|
+
addStyleSheet(`${this.tableId}-col-end-active-style`, ``);
|
31305
|
+
}
|
31306
|
+
});
|
31307
|
+
}
|
31308
|
+
get cssColDimensionCacheKey() {
|
31309
|
+
return this._cssColDimensionCacheKey;
|
31310
|
+
}
|
31311
|
+
set cssColDimensionCacheKey(key) {
|
31312
|
+
if (key === this._cssColDimensionCacheKey)
|
31313
|
+
return;
|
31314
|
+
this._cssColDimensionCacheKey = key;
|
31315
|
+
this.createPinnedColDimensionStyles();
|
31316
|
+
}
|
31317
|
+
/**
|
31318
|
+
* To only generate column dimension styles when necessary we
|
31319
|
+
* maintain a cache key string via serialised column meta.
|
31320
|
+
* Only when this key changes do we generate a new stylesheet
|
31321
|
+
*/
|
31322
|
+
generateCssCacheKey() {
|
31323
|
+
let key = '';
|
31324
|
+
for (const col of this.startColumns) {
|
31325
|
+
const colMeta = this.cachedColMeta.get(col);
|
31326
|
+
key += `${colMeta.idx}-start-${colMeta.width}`;
|
31327
|
+
}
|
31328
|
+
for (const col of this.endColumns) {
|
31329
|
+
const colMeta = this.cachedColMeta.get(col);
|
31330
|
+
key += `${colMeta.idx}-start-${colMeta.width}`;
|
31331
|
+
}
|
31332
|
+
this.cssColDimensionCacheKey = key;
|
31333
|
+
}
|
31334
|
+
/**
|
31335
|
+
* Generates pinned column width offset styles
|
31336
|
+
* so pinned columns can appear stuck together,
|
31337
|
+
* then attaches a stylesheet.
|
31338
|
+
*/
|
31339
|
+
createPinnedColDimensionStyles() {
|
31340
|
+
let widthS = 0;
|
31341
|
+
let widthE = 0;
|
31342
|
+
const startCols = Array.from(this.startColumns);
|
31343
|
+
const endCols = Array.from(this.endColumns).reverse();
|
31344
|
+
const css = /* css */ `
|
31345
|
+
${startCols
|
31346
|
+
.map((col) => {
|
31347
|
+
const colMeta = this.cachedColMeta.get(col);
|
31348
|
+
widthS += colMeta.width || 0;
|
31349
|
+
return /* css */ `
|
31350
|
+
#${this.tableId} tr > :nth-child(${colMeta.idx + 1}) ~ td,
|
31351
|
+
#${this.tableId} tr > :nth-child(${colMeta.idx + 1}) ~ th {
|
31352
|
+
--pin-start: ${widthS - 1}px;
|
31353
|
+
}
|
31354
|
+
`;
|
31355
|
+
})
|
31356
|
+
.join('')}
|
31357
|
+
${endCols
|
31358
|
+
.map((col) => {
|
31359
|
+
const colMeta = this.cachedColMeta.get(col);
|
31360
|
+
widthE += colMeta.width;
|
31361
|
+
return /* css */ `
|
31362
|
+
#${this.tableId} tr > td:has(~ :nth-child(${colMeta.idx + 1})),
|
31363
|
+
#${this.tableId} tr > th:has(~ :nth-child(${colMeta.idx + 1})) {
|
31364
|
+
--pin-end: ${widthE - 1}px;
|
31365
|
+
}
|
31366
|
+
`;
|
31367
|
+
})
|
31368
|
+
.join('')}
|
31369
|
+
`;
|
31370
|
+
addStyleSheet(`${this.tableId}-dimension-style`, css);
|
31371
|
+
}
|
31372
|
+
getParentOffsets() {
|
31373
|
+
const { x, y } = this.scrollElement.getBoundingClientRect();
|
31374
|
+
let offsetX = x;
|
31375
|
+
let offsetY = y;
|
31376
|
+
if (this.scrollElement === document.documentElement) {
|
31377
|
+
offsetX = this.scrollElement.offsetLeft;
|
31378
|
+
offsetY = this.scrollElement.offsetTop;
|
31379
|
+
}
|
31380
|
+
return { offsetX, offsetY };
|
31381
|
+
}
|
31382
|
+
/**
|
31383
|
+
* Loops through all 'top' & 'bottom' rows (on scroll or resize)
|
31384
|
+
* Manages their visual state by applying classes on stuck / unstuck
|
31385
|
+
* And their pinned offset / distance
|
31386
|
+
*/
|
31387
|
+
assessRows() {
|
31388
|
+
if (!this.topRows.length && !this.bottomRows.length)
|
31389
|
+
return;
|
31390
|
+
// top rows
|
31391
|
+
if (this.topRows.length) {
|
31392
|
+
readTask(async () => {
|
31393
|
+
let heightAggregate = 0;
|
31394
|
+
let cacheParent;
|
31395
|
+
const { offsetY } = this.getParentOffsets();
|
31396
|
+
for (const topRow of this.topRows) {
|
31397
|
+
const { y, height } = topRow.getBoundingClientRect();
|
31398
|
+
const currParent = topRow.parentElement;
|
31399
|
+
// we'll use the applied `--pin-top` css var to decide row offset.
|
31400
|
+
// This allows devs to override this behaviour through selector specificity
|
31401
|
+
const pinTop = getComputedStyle(topRow).getPropertyValue('--pin-top');
|
31402
|
+
const offset = pinTop !== '' ? parseFloat(pinTop) : heightAggregate;
|
31403
|
+
// we need to wait for the row to finish sticking
|
31404
|
+
// and generating it's offset (`--pin-top`) so we can see, on
|
31405
|
+
// subsequent rows *if* the offset was applied
|
31406
|
+
await new Promise((resolve) => writeTask(() => {
|
31407
|
+
if (y - offsetY <= offset) {
|
31408
|
+
topRow.classList.add(`${CSSNAMESPACE}__pinned`, `${CSSNAMESPACE}__pinned--top`);
|
31409
|
+
}
|
31410
|
+
else {
|
31411
|
+
topRow.classList.remove(`${CSSNAMESPACE}__pinned`, `${CSSNAMESPACE}__pinned--top`);
|
31412
|
+
}
|
31413
|
+
// by default, we only want to stick one row from each parental block (thead, tbody, tfoot)
|
31414
|
+
// so only aggregate height / offset when cacheParent is different from current parent.
|
31415
|
+
// Devs can override this behaviour by manually setting `--pin-bottom` on the table row
|
31416
|
+
if (cacheParent !== currParent) {
|
31417
|
+
currParent.style.setProperty('--pin-top', `${heightAggregate}px`);
|
31418
|
+
heightAggregate += height;
|
31419
|
+
cacheParent = currParent;
|
31420
|
+
}
|
31421
|
+
resolve();
|
31422
|
+
}));
|
31423
|
+
}
|
31424
|
+
});
|
31425
|
+
}
|
31426
|
+
// bottom rows
|
31427
|
+
if (this.bottomRows.length) {
|
31428
|
+
const bottomRows = Array.from(this.bottomRows).reverse();
|
31429
|
+
readTask(async () => {
|
31430
|
+
let cacheParent;
|
31431
|
+
let heightAggregate = 0;
|
31432
|
+
const { offsetY } = this.getParentOffsets();
|
31433
|
+
for (const bottomRow of bottomRows) {
|
31434
|
+
if (!bottomRow.isConnected)
|
31435
|
+
continue;
|
31436
|
+
const { y, height } = bottomRow.getBoundingClientRect();
|
31437
|
+
const currParent = bottomRow.parentElement;
|
31438
|
+
// we'll use the applied `--pin-bottom` css var to decide row offset.
|
31439
|
+
// This allows devs to override this behaviour through selector specificity
|
31440
|
+
const pinBottom = getComputedStyle(bottomRow).getPropertyValue('--pin-bottom');
|
31441
|
+
const offset = pinBottom !== '' ? parseFloat(pinBottom) : heightAggregate;
|
31442
|
+
// we need to wait for the row to finish sticking
|
31443
|
+
// and generating it's offset (`--pin-bottom`) to we can see, on
|
31444
|
+
// subsequent rows *if* the offset was applied
|
31445
|
+
await new Promise((resolve) => writeTask(() => {
|
31446
|
+
if (this.tableDims.height + offsetY - (y + height) <= offset) {
|
31447
|
+
bottomRow.classList.add(`${CSSNAMESPACE}__pinned`, `${CSSNAMESPACE}__pinned--bottom`);
|
31448
|
+
}
|
31449
|
+
else {
|
31450
|
+
bottomRow.classList.remove(`${CSSNAMESPACE}__pinned`, `${CSSNAMESPACE}__pinned--bottom`);
|
31451
|
+
}
|
31452
|
+
// by default, we only want to stick one row from each parental block (thead, tbody, tfoot)
|
31453
|
+
// so only aggregate height / offset when cacheParent is different from current parent.
|
31454
|
+
// Devs can override this behaviour by manually setting `--pin-bottom` on the table row
|
31455
|
+
if (cacheParent !== currParent) {
|
31456
|
+
currParent.style.setProperty('--pin-bottom', `${heightAggregate}px`);
|
31457
|
+
heightAggregate += height;
|
31458
|
+
cacheParent = currParent;
|
31459
|
+
}
|
31460
|
+
resolve();
|
31461
|
+
}));
|
31462
|
+
}
|
31463
|
+
});
|
31464
|
+
}
|
31465
|
+
}
|
31466
|
+
/**
|
31467
|
+
* Loops through all 'start' & 'end' columns (on scroll or resize)
|
31468
|
+
* Caches meta about each column (e.g. size, position-index)
|
31469
|
+
* and decides which columns are pinned
|
31470
|
+
*/
|
31471
|
+
async assessCols() {
|
31472
|
+
if (!this.startColumns.length && !this.endColumns.length)
|
31473
|
+
return;
|
31474
|
+
let boundBox;
|
31475
|
+
let currPinned;
|
31476
|
+
let parentEles;
|
31477
|
+
const done = new Promise((resolve) => {
|
31478
|
+
// start cols
|
31479
|
+
if (this.startColumns.length) {
|
31480
|
+
readTask(() => {
|
31481
|
+
const { offsetX } = this.getParentOffsets();
|
31482
|
+
// cumulatively add widths of columns together
|
31483
|
+
// 'cos columns stick together
|
31484
|
+
let widthAggregate = offsetX;
|
31485
|
+
parentEles = Array.from(this.startColumns[0].parentElement.children);
|
31486
|
+
for (const startCol of this.startColumns) {
|
31487
|
+
boundBox = startCol.getBoundingClientRect();
|
31488
|
+
// cache meta for later
|
31489
|
+
this.cachedColMeta.set(startCol, {
|
31490
|
+
width: boundBox.width,
|
31491
|
+
idx: parentEles.indexOf(startCol),
|
31492
|
+
});
|
31493
|
+
currPinned = this.pinnedStart.find((c) => c === startCol);
|
31494
|
+
if (boundBox.x < widthAggregate) {
|
31495
|
+
// this column is pinned
|
31496
|
+
if (!currPinned)
|
31497
|
+
this.pinnedStart = [
|
31498
|
+
...this.pinnedStart,
|
31499
|
+
startCol,
|
31500
|
+
];
|
31501
|
+
}
|
31502
|
+
else if (currPinned) {
|
31503
|
+
// this column is unpinned
|
31504
|
+
this.pinnedStart = this.pinnedStart.filter((c) => c !== startCol);
|
31505
|
+
}
|
31506
|
+
widthAggregate += boundBox.width;
|
31507
|
+
}
|
31508
|
+
if (!this.endColumns.length)
|
31509
|
+
resolve();
|
31510
|
+
});
|
31511
|
+
}
|
31512
|
+
// end cols
|
31513
|
+
if (this.endColumns.length) {
|
31514
|
+
readTask(() => {
|
31515
|
+
const endCols = Array.from(this.endColumns).reverse();
|
31516
|
+
parentEles = Array.from(this.endColumns[0].parentElement.children);
|
31517
|
+
const { offsetX } = this.getParentOffsets();
|
31518
|
+
// cumulatively add widths of columns together
|
31519
|
+
// 'cos columns stick together
|
31520
|
+
let widthAggregate = 0;
|
31521
|
+
for (const endCol of endCols) {
|
31522
|
+
boundBox = endCol.getBoundingClientRect();
|
31523
|
+
// cache meta for later
|
31524
|
+
this.cachedColMeta.set(endCol, {
|
31525
|
+
width: boundBox.width,
|
31526
|
+
idx: parentEles.indexOf(endCol),
|
31527
|
+
});
|
31528
|
+
currPinned = this.pinnedEnd.find((c) => c === endCol);
|
31529
|
+
if (this.tableDims.width + offsetX - boundBox.right <=
|
31530
|
+
widthAggregate) {
|
31531
|
+
// this column is pinned
|
31532
|
+
if (!currPinned)
|
31533
|
+
this.pinnedEnd = [endCol, ...this.pinnedEnd];
|
31534
|
+
}
|
31535
|
+
else if (currPinned) {
|
31536
|
+
// this column is unpinned
|
31537
|
+
this.pinnedEnd = this.pinnedEnd.filter((c) => c !== endCol);
|
31538
|
+
}
|
31539
|
+
widthAggregate += boundBox.width;
|
31540
|
+
}
|
31541
|
+
resolve();
|
31542
|
+
});
|
31543
|
+
}
|
31544
|
+
});
|
31545
|
+
await done;
|
31546
|
+
// potentially generate a new css stylesheet if anything changed
|
31547
|
+
this.generateCssCacheKey();
|
31548
|
+
}
|
31549
|
+
onScroll(pos) {
|
31550
|
+
if (this.cacheX !== pos.x) {
|
31551
|
+
this.cacheX = pos.x;
|
31552
|
+
this.assessCols();
|
31553
|
+
}
|
31554
|
+
if (this.cacheY !== pos.y) {
|
31555
|
+
this.cacheY = pos.y;
|
31556
|
+
this.assessRows();
|
31557
|
+
}
|
31558
|
+
}
|
31559
|
+
onResize() {
|
31560
|
+
const width = this.scrollElement.clientWidth;
|
31561
|
+
const height = this.scrollElement.clientHeight;
|
31562
|
+
this.tableDims = { width, height };
|
31563
|
+
this.assessCols();
|
31564
|
+
this.assessRows();
|
31565
|
+
}
|
31566
|
+
}
|
31567
|
+
|
31568
|
+
const tableCss = ":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}nano-table{display:block;width:100%;--max-col-width:clamp(200px, 500px, 50vw);--color:var(--nano-color-mediumgrey, #68767e);--font-size:0.87rem;--cell-line-height:1.5;--thead-font-size:0.95rem;--thead-color:#455560;--tfoot-color:#455560;--border-color:#dddbda;--border-style:thin solid var(--border-color);--border-tint-color:#0084a9;--border-tint-style:3px solid var(--border-tint-color);--cell-bg-rgb:var(--nano-color-white-rgb, 255 255 255);--head-bg-rgb:250 250 249;--foot-bg-rgb:var(--head-bg-rgb);--th-row-bg-rgb:var(--cell-bg-rgb);--ordered-bg-rgb:var(--nano-color-offwhite-rgb, 249 249 251);--td-padding-start:0.625rem;--td-padding-end:0.625rem;--td-padding-top:0.6rem;--td-padding-bottom:0.6125rem;--th-padding-start:0.725rem;--th-padding-end:0.625rem;--th-padding-top:0.875rem;--th-padding-bottom:0.6875rem;--td-padding-v:var(--td-padding-top) var(--td-padding-bottom);--td-padding-h:var(--td-padding-start) var(--td-padding-end);--th-padding-v:var(--th-padding-top) var(--th-padding-bottom);--th-padding-h:var(--th-padding-start) var(--th-padding-end);--foot-th-padding-v:var(--td-padding-top) var(--td-padding-bottom);--foot-th-padding-h:var(--td-padding-start) var(--td-padding-end);--head-th-padding-v:var(--th-padding-top) var(--th-padding-bottom);--head-th-padding-h:var(--th-padding-start) var(--th-padding-end);--bookend-col-padding:2rem}.nano-tbl{color:var(--color);text-align:start;width:100%;font-size:var(--font-size);border-spacing:0 0;border-collapse:separate;background:rgb(var(--cell-bg-rgb));-webkit-border-end:1px solid transparent;border-inline-end:1px solid transparent;-webkit-border-before:1px solid transparent;border-block-start:1px solid transparent;position:relative;z-index:1}.nano-tbl__wrap{display:table;min-width:100%}.nano-tbl__top-anchor{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);block-size:1px;inline-size:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;position:relative}.nano-tbl__ordered{background-color:var(--ordered-bg);-webkit-border-start:var(--border-style);border-inline-start:var(--border-style);-webkit-border-end:var(--border-style);border-inline-end:var(--border-style)}.nano-tbl__order-btn{padding:0;border:none;outline:none;font:inherit;background:none;-webkit-appearance:none;appearance:none;color:inherit;display:flex;gap:10px;align-items:center;width:100%}.nano-tbl__order-btn:focus-visible{outline:none;box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8))) inset}.nano-tbl__status-icons{margin-inline:auto 10px;display:flex;gap:10px}.nano-tbl__progress-bar{font-size:0.2rem;position:sticky;inset-block-start:0;inset-inline:0;z-index:10;transition:scale 0.25s;transform:scale(0);width:100%;height:0}.nano-tbl__progress-bar--show{transform:scale(1);height:auto}.nano-tbl__caption--hide{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);block-size:1px;inline-size:1px;margin:-1px;overflow:hidden;padding:0;position:absolute}.nano-tbl__td,.nano-tbl__th{line-height:var(--cell-line-height);text-align:start;-webkit-border-before:var(--border-style);border-block-start:var(--border-style);max-width:var(--max-col-width);background-color:rgb(var(--cell-bg-rgb))}tbody:first-of-type tr:first-child .nano-tbl__td,tbody:first-of-type tr:first-child .nano-tbl__th{-webkit-border-before:none;border-block-start:none}tbody:last-of-type tr:last-child .nano-tbl__td,tbody:last-of-type tr:last-child .nano-tbl__th{-webkit-border-after:var(--border-style);border-block-end:var(--border-style)}.md .nano-tbl__td:first-child .nano-tbl__cell-content,.md .nano-tbl__th:first-child .nano-tbl__cell-content{-webkit-padding-start:var(--bookend-col-padding);padding-inline-start:var(--bookend-col-padding)}.md .nano-tbl__td:last-child .nano-tbl__cell-content,.md .nano-tbl__th:last-child .nano-tbl__cell-content{-webkit-padding-end:var(--bookend-col-padding);padding-inline-end:var(--bookend-col-padding)}@media (max-width: 768px){.nano-tbl__td:first-child .nano-tbl__cell-content,.nano-tbl__th:first-child .nano-tbl__cell-content{-webkit-padding-start:var(--td-padding-start) !important;padding-inline-start:var(--td-padding-start) !important}.nano-tbl__td:last-child .nano-tbl__cell-content,.nano-tbl__th:last-child .nano-tbl__cell-content{-webkit-padding-end:var(--td-padding-end) !important;padding-inline-end:var(--td-padding-end) !important}}thead .nano-tbl__td,thead .nano-tbl__th{color:var(--thead-color);font-weight:800;background:rgb(var(--head-bg-rgb)/100%);font-size:var(--thead-font-size);-webkit-border-before:none !important;border-block-start:none !important}thead .nano-tbl__td .nano-tbl__cell-content,thead .nano-tbl__th .nano-tbl__cell-content{padding-block:var(--head-th-padding-v);padding-inline:var(--head-th-padding-h)}thead .nano-tbl__td .nano-sortable__keyboard-handle,thead .nano-tbl__th .nano-sortable__keyboard-handle{position:absolute;inset-inline-end:5px;inset-block-start:50%;transform:translateY(-50%);background:white;z-index:10}tfoot .nano-tbl__td,tfoot .nano-tbl__th{color:var(--tfoot-color);font-weight:800;-webkit-border-before:none;border-block-start:none;background:rgb(var(--foot-bg-rgb)/100%);font-size:var(--thead-font-size)}tfoot .nano-tbl__td .nano-tbl__cell-content,tfoot .nano-tbl__th .nano-tbl__cell-content{padding-block:var(--foot-th-padding-v);padding-inline:var(--foot-th-padding-h)}.nano-tbl__td.nano-tbl__ordered,.nano-tbl__th.nano-tbl__ordered{background-color:rgb(var(--ordered-bg-rgb)/80%) !important}.nano-tbl__cell-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-block:var(--td-padding-v);padding-inline:var(--td-padding-h)}.nano-tbl__cell-content--no-result{padding-block:2rem}.nano-tbl__cell-content--wrap{white-space:normal;overflow:visible}.nano-tbl tbody{will-change:scroll-position;opacity:1;transition:0.1s ease opacity}.nano-tbl tbody.nano-tbl__loading{z-index:-1;position:relative}.nano-tbl tbody.nano-tbl__inactive{opacity:0}.nano-tbl tbody .nano-tbl__tr:has(~.nano-tbl__tr--placeholder){display:none}.nano-tbl tbody .nano-tbl__tr--placeholder~.nano-tbl__tr{display:none}.nano-tbl th[scope=row]{font-weight:800;margin:0}.nano-tbl__pin--start{position:sticky;inset-inline-start:var(--pin-start, -1px)}.nano-tbl__pin--start::after{content:\"\";position:absolute;inset:0;box-shadow:5px 0 4px -1px rgba(0, 0, 0, 0.2);opacity:var(--pin-start-active, 0);z-index:-1}.nano-tbl__pinned--start .nano-tbl__pin--start{z-index:2}.nano-tbl__pin--end{position:sticky}.nano-tbl__pin--start+.nano-tbl__pin--end{inset-inline-end:auto !important}.nano-tbl__pin--start+.nano-tbl__pin--end::after{display:none}.sm .nano-tbl__pin--end{inset-inline-end:var(--pin-end, -1px);max-width:min(50vw, 200px)}.sm .nano-tbl__pin--end::after{display:block !important;content:\"\";position:absolute;inset:0;box-shadow:-5px 1px 4px -1px rgba(0, 0, 0, 0.2);opacity:var(--pin-end-active, 0);z-index:-1}.sm .nano-tbl__pinned--end .nano-tbl__pin--end{z-index:3}.nano-tbl__pin--top .nano-tbl__th,.nano-tbl__pin--top .nano-tbl__td{position:sticky;inset-block-start:var(--pin-top, -1px)}.nano-tbl__pin--top.nano-tbl__pinned--top .nano-tbl__th,.nano-tbl__pin--top.nano-tbl__pinned--top .nano-tbl__td{z-index:4 !important}.nano-tbl__pinned--start .nano-tbl__pin--top.nano-tbl__pinned--top .nano-tbl__pin--start{z-index:6 !important}tbody .nano-tbl__pin--top.nano-tbl__pinned--top .nano-tbl__th,tbody .nano-tbl__pin--top.nano-tbl__pinned--top .nano-tbl__td{box-shadow:1px 3px 4px -1px rgba(0, 0, 0, 0.1)}.nano-tbl__pin--bottom .nano-tbl__th,.nano-tbl__pin--bottom .nano-tbl__td{position:sticky;inset-block-end:var(--pin-bottom, -1px)}.nano-tbl__pin--bottom.nano-tbl__pinned--bottom .nano-tbl__th,.nano-tbl__pin--bottom.nano-tbl__pinned--bottom .nano-tbl__td{z-index:5 !important}.nano-tbl__pin--bottom.nano-tbl__pinned--bottom:has(~.nano-tbl__pin--bottom.nano-tbl__pinned--bottom) .nano-tbl__th,.nano-tbl__pin--bottom.nano-tbl__pinned--bottom:has(~.nano-tbl__pin--bottom.nano-tbl__pinned--bottom) .nano-tbl__td{z-index:6 !important}.nano-tbl__pinned--start .nano-tbl__pin--bottom.nano-tbl__pinned--bottom .nano-tbl__pin--start{z-index:6 !important}tbody .nano-tbl__pin--bottom.nano-tbl__pinned--bottom .nano-tbl__th,tbody .nano-tbl__pin--bottom.nano-tbl__pinned--bottom .nano-tbl__td{box-shadow:1px -3px 4px -1px rgba(0, 0, 0, 0.07)}.nano-tbl thead tr:last-of-type td,.nano-tbl thead tr:last-of-type th{-webkit-border-after:var(--border-tint-style);border-block-end:var(--border-tint-style)}.nano-tbl tfoot tr:first-of-type td,.nano-tbl tfoot tr:first-of-type th{-webkit-border-before:none;border-block-start:none}.nano-tbl tfoot tr:last-of-type td,.nano-tbl tfoot tr:last-of-type th{-webkit-border-before:var(--border-style);border-block-start:var(--border-style);-webkit-border-after:var(--border-tint-style);border-block-end:var(--border-tint-style)}.nano-tbl__pinned--bottom .nano-tbl tfoot tr.nano-tbl__pin--bottom:first-of-type td,.nano-tbl__pinned--bottom .nano-tbl tfoot tr.nano-tbl__pin--bottom:first-of-type th{-webkit-border-before:var(--border-tint-style) !important;border-block-start:var(--border-tint-style) !important}.nano-tbl__pinned--bottom .nano-tbl tfoot tr.nano-tbl__pin--bottom:last-of-type td,.nano-tbl__pinned--bottom .nano-tbl tfoot tr.nano-tbl__pin--bottom:last-of-type th{-webkit-border-after:none !important;border-block-end:none !important}.nano-tbl .unlimited-width{max-width:none}.nano-tbl__spinner{font-size:1.5rem;transition:scale 0.25s;scale:0;padding:0.5rem;position:absolute;inset-block-end:0;inset-inline-start:calc(50% - 0.75rem);z-index:0}.nano-tbl__spinner--show{scale:1;position:sticky}.nano-tbl nano-skeleton{line-height:var(--cell-line-height)}";
|
31245
31569
|
|
31570
|
+
const measurePerf = false;
|
31571
|
+
function perMark(name, end = false) {
|
31572
|
+
if (!performance || !measurePerf)
|
31573
|
+
return;
|
31574
|
+
if (end) {
|
31575
|
+
performance === null || performance === void 0 ? void 0 : performance.mark('end' + name);
|
31576
|
+
performance === null || performance === void 0 ? void 0 : performance.measure(name, 'start' + name, 'end' + name);
|
31577
|
+
const entries = performance === null || performance === void 0 ? void 0 : performance.getEntriesByName(name);
|
31578
|
+
console.log(entries[entries.length ? entries.length - 1 : 0]);
|
31579
|
+
}
|
31580
|
+
else {
|
31581
|
+
performance === null || performance === void 0 ? void 0 : performance.mark('start' + name);
|
31582
|
+
}
|
31583
|
+
}
|
31246
31584
|
let id = 0;
|
31247
31585
|
/**
|
31248
31586
|
* A performant, accessible and semantic (uses real html `<table />`, `<tr />` etc) table and data-grid solution.
|
@@ -31274,7 +31612,6 @@ class Table {
|
|
31274
31612
|
this.filters = [];
|
31275
31613
|
this.currentFilters = '[]';
|
31276
31614
|
this.currentSort = '';
|
31277
|
-
this.cacheScrollPosition = 0;
|
31278
31615
|
this.measureHeight = 0;
|
31279
31616
|
this.blockHeights = [];
|
31280
31617
|
this.unitHeight = 0;
|
@@ -31293,6 +31630,7 @@ class Table {
|
|
31293
31630
|
const sortEvent = this.nanoTblBeforeSort.emit({ column: column, order });
|
31294
31631
|
if (sortEvent.defaultPrevented)
|
31295
31632
|
return;
|
31633
|
+
perMark('sort');
|
31296
31634
|
this.currentSort = order + ':' + column;
|
31297
31635
|
// doesn't make sense to leave user in place for a sort
|
31298
31636
|
this.scrollToTop(element);
|
@@ -31336,25 +31674,40 @@ class Table {
|
|
31336
31674
|
* stop loop - it's on the current active block.
|
31337
31675
|
*/
|
31338
31676
|
this.scrollHandler = () => {
|
31677
|
+
var _a;
|
31678
|
+
let scrollPos = 0;
|
31679
|
+
perMark('scrollHandler');
|
31339
31680
|
// don't listen if this table isn't in the viewport
|
31340
|
-
if (!this.store.general.state.isActive || !this.rows)
|
31681
|
+
if (!((_a = this.store) === null || _a === void 0 ? void 0 : _a.general.state.isActive) || !this.rows)
|
31341
31682
|
return;
|
31342
31683
|
if (this.primaryBlockIndex === undefined)
|
31343
31684
|
this.primaryBlockIndex = 0;
|
31344
31685
|
readTask(() => {
|
31345
|
-
|
31686
|
+
scrollPos =
|
31687
|
+
typeof this.scrollParent.scrollTop !== 'undefined'
|
31688
|
+
? this.scrollParent.scrollTop
|
31689
|
+
: window.scrollY;
|
31690
|
+
scrollPos += this.host.offsetTop;
|
31691
|
+
if (this.tablePinnedService) {
|
31692
|
+
this.tablePinnedService.onScroll({
|
31693
|
+
x: typeof this.scrollParent.scrollLeft !== 'undefined'
|
31694
|
+
? this.scrollParent.scrollLeft
|
31695
|
+
: window.scrollX,
|
31696
|
+
y: scrollPos,
|
31697
|
+
});
|
31698
|
+
}
|
31346
31699
|
let cumulativeHeight = this.host.offsetTop;
|
31347
31700
|
let blockIndex = 0;
|
31348
31701
|
const blockLen = this.blocks.length;
|
31349
|
-
while (blockIndex < blockLen &&
|
31350
|
-
this.cacheScrollPosition >= cumulativeHeight) {
|
31702
|
+
while (blockIndex < blockLen && scrollPos >= cumulativeHeight) {
|
31351
31703
|
cumulativeHeight += this.getBlockHeight(blockIndex);
|
31352
|
-
if (
|
31704
|
+
if (scrollPos < cumulativeHeight) {
|
31353
31705
|
const potentialBlocks = [
|
31354
31706
|
blockIndex,
|
31355
31707
|
blockIndex + 1,
|
31356
|
-
Math.max(0, blockIndex - 1),
|
31708
|
+
// Math.max(0, blockIndex - 1),
|
31357
31709
|
];
|
31710
|
+
console.log(potentialBlocks);
|
31358
31711
|
if (potentialBlocks.toString() !== this.activeBlocks.toString()) {
|
31359
31712
|
this.activeBlocks = potentialBlocks;
|
31360
31713
|
}
|
@@ -31362,11 +31715,7 @@ class Table {
|
|
31362
31715
|
}
|
31363
31716
|
blockIndex++;
|
31364
31717
|
}
|
31365
|
-
|
31366
|
-
};
|
31367
|
-
this.handleColumnPinned = (positions) => {
|
31368
|
-
Object.entries(positions).forEach(([key, applied]) => {
|
31369
|
-
this.tableEle.classList.toggle(`${CSSNAMESPACE}__pinned--${key}`, applied);
|
31718
|
+
perMark('scrollHandler', true);
|
31370
31719
|
});
|
31371
31720
|
};
|
31372
31721
|
this.handleResizeChange = (e) => {
|
@@ -31377,12 +31726,12 @@ class Table {
|
|
31377
31726
|
classes = [...e.target.className.split(' '), ...classes];
|
31378
31727
|
this.tableWrapperEle.classList.add(...classes.filter((cl) => !!cl));
|
31379
31728
|
};
|
31380
|
-
this.
|
31729
|
+
this.customRenderer = undefined;
|
31381
31730
|
this.type = 'table';
|
31382
31731
|
this.caption = undefined;
|
31383
31732
|
this.showCaption = false;
|
31384
31733
|
this.loading = undefined;
|
31385
|
-
this.internalLoading =
|
31734
|
+
this.internalLoading = true;
|
31386
31735
|
this.placeholderSize = 5;
|
31387
31736
|
this.rows = undefined;
|
31388
31737
|
this.columns = [];
|
@@ -31390,14 +31739,14 @@ class Table {
|
|
31390
31739
|
this.rowRender = undefined;
|
31391
31740
|
this.footRender = { pinned: 'bottom' };
|
31392
31741
|
this.showFooter = false;
|
31393
|
-
this.perBlock =
|
31742
|
+
this.perBlock = 50;
|
31394
31743
|
this.searchTerm = undefined;
|
31395
31744
|
this.customFilterFn = undefined;
|
31396
31745
|
this.customSortFn = undefined;
|
31397
31746
|
this.defaultSort = true;
|
31398
31747
|
this.virtualTotalItems = 0;
|
31399
31748
|
this.blocks = [];
|
31400
|
-
this.activeBlocks = [0, 1
|
31749
|
+
this.activeBlocks = [0, 1];
|
31401
31750
|
this.debounceSetLoading = debounce$2(this.debounceSetLoading.bind(this), 50);
|
31402
31751
|
}
|
31403
31752
|
get _loading() {
|
@@ -31426,6 +31775,8 @@ class Table {
|
|
31426
31775
|
if (!this.isReady)
|
31427
31776
|
requestAnimationFrame(() => this.setInitialBlockDimension());
|
31428
31777
|
this._loading = false;
|
31778
|
+
if (this.tablePinnedService)
|
31779
|
+
this.tablePinnedService.assessRows();
|
31429
31780
|
});
|
31430
31781
|
}
|
31431
31782
|
async handleColsChange() {
|
@@ -31443,6 +31794,10 @@ class Table {
|
|
31443
31794
|
virtualTotalItemsChangeHandler() {
|
31444
31795
|
this.setBlocks();
|
31445
31796
|
}
|
31797
|
+
/** @readonly - shows the currently applied filters */
|
31798
|
+
get appliedFilters() {
|
31799
|
+
return this.filters;
|
31800
|
+
}
|
31446
31801
|
/** Remove any column sorts currently applied
|
31447
31802
|
* @returns a promise which resolves when complete */
|
31448
31803
|
async resetSorting() {
|
@@ -31485,8 +31840,6 @@ class Table {
|
|
31485
31840
|
}
|
31486
31841
|
/** Updates a row model at a given index
|
31487
31842
|
* @param row - the row to update.
|
31488
|
-
* *Note* - this should come from the `col.cellTemplate` or `row.rowRender.template` `rowModel` property
|
31489
|
-
* - rows are augmented with certain properties to aid with efficient rendering
|
31490
31843
|
* @param rowIndex - the row index to insert this row
|
31491
31844
|
*/
|
31492
31845
|
async updateRow(row, rowIndex) {
|
@@ -31517,7 +31870,9 @@ class Table {
|
|
31517
31870
|
? document
|
31518
31871
|
: this._scrollParent).removeEventListener('scroll', this.scrollHandler);
|
31519
31872
|
}
|
31520
|
-
(ele === document.documentElement ? document : ele).addEventListener('scroll', this.scrollHandler
|
31873
|
+
(ele === document.documentElement ? document : ele).addEventListener('scroll', this.scrollHandler
|
31874
|
+
// {passive: true}
|
31875
|
+
);
|
31521
31876
|
this._scrollParent = ele;
|
31522
31877
|
}
|
31523
31878
|
// used to fire `nanoTblBlockRendered` on block render change
|
@@ -31571,17 +31926,20 @@ class Table {
|
|
31571
31926
|
return Object.assign(Object.assign({}, c), { order: null });
|
31572
31927
|
});
|
31573
31928
|
this.nanoTblAfterSort.emit({ column: column, order });
|
31929
|
+
perMark('sort', true);
|
31574
31930
|
}
|
31575
31931
|
async searchStart() {
|
31576
31932
|
this._loading = true;
|
31577
31933
|
const sortEvent = this.nanoTblBeforeSearch.emit({ term: this.searchTerm });
|
31578
31934
|
if (sortEvent.defaultPrevented)
|
31579
31935
|
return;
|
31936
|
+
perMark('search');
|
31580
31937
|
// doesn't make sense to leave user in place for a search
|
31581
31938
|
this.scrollToTop();
|
31582
31939
|
try {
|
31583
31940
|
await storeSearch(this.host, this.searchTerm);
|
31584
31941
|
this.nanoTblAfterSearch.emit({ term: this.searchTerm });
|
31942
|
+
perMark('search', true);
|
31585
31943
|
}
|
31586
31944
|
catch (e) {
|
31587
31945
|
console.warn('search failed', e);
|
@@ -31608,6 +31966,7 @@ class Table {
|
|
31608
31966
|
const sortEvent = this.nanoTblBeforeFilter.emit({ filters: this.filters });
|
31609
31967
|
if (sortEvent.defaultPrevented)
|
31610
31968
|
return;
|
31969
|
+
perMark('filter');
|
31611
31970
|
this.currentFilters = JSON.stringify(this.filters);
|
31612
31971
|
// doesn't make sense to leave user in place for a search
|
31613
31972
|
this.scrollToTop();
|
@@ -31616,10 +31975,11 @@ class Table {
|
|
31616
31975
|
const res = await this.customFilterFn(this.filters);
|
31617
31976
|
// if the response is 'true', the custom filter did it's thing
|
31618
31977
|
// handover to finish and stop loading state.
|
31619
|
-
// if response is
|
31978
|
+
// if response is falsy, carry on to do a FE filter
|
31620
31979
|
if (res === true) {
|
31621
31980
|
this.filterComplete();
|
31622
31981
|
this._loading = false;
|
31982
|
+
return;
|
31623
31983
|
}
|
31624
31984
|
}
|
31625
31985
|
catch (e) {
|
@@ -31628,8 +31988,8 @@ class Table {
|
|
31628
31988
|
console.warn('custom filter failed', e);
|
31629
31989
|
this.currentFilters = '';
|
31630
31990
|
this._loading = false;
|
31991
|
+
return;
|
31631
31992
|
}
|
31632
|
-
return;
|
31633
31993
|
}
|
31634
31994
|
try {
|
31635
31995
|
await storeFilter(this.host, this.filters);
|
@@ -31645,13 +32005,22 @@ class Table {
|
|
31645
32005
|
filterComplete() {
|
31646
32006
|
this.columns = this.columns.map((c) => {
|
31647
32007
|
const cFilter = this.filters.find((f) => f.prop === c.prop);
|
31648
|
-
if
|
32008
|
+
// if we found a filter AND
|
32009
|
+
// it isn't true / false and has a length OR
|
32010
|
+
// it is true or false
|
32011
|
+
if (cFilter &&
|
32012
|
+
((typeof cFilter.filter !== 'boolean' && cFilter.filter.length) ||
|
32013
|
+
typeof cFilter.filter === 'boolean'))
|
31649
32014
|
c.filter = cFilter.filter;
|
31650
|
-
|
32015
|
+
// if a filter value is not set OR
|
32016
|
+
// it isn't true / false and has no length
|
32017
|
+
else if ((c.filter !== null && c.filter !== undefined) ||
|
32018
|
+
(!!c.filter && typeof c.filter !== 'boolean' && !c.filter.length))
|
31651
32019
|
c.filter = undefined;
|
31652
32020
|
return c;
|
31653
32021
|
});
|
31654
32022
|
this.nanoTblAfterFilter.emit({ filters: this.filters });
|
32023
|
+
perMark('filter', true);
|
31655
32024
|
}
|
31656
32025
|
/** Scrolls to the top immediately - used whilst sorting / filtering */
|
31657
32026
|
scrollToTop(element) {
|
@@ -31687,6 +32056,7 @@ class Table {
|
|
31687
32056
|
var _a;
|
31688
32057
|
if (!((_a = this.blockElements) === null || _a === void 0 ? void 0 : _a.length))
|
31689
32058
|
return;
|
32059
|
+
perMark('blockDims');
|
31690
32060
|
const testForDimensions = async () => {
|
31691
32061
|
await this.setMeasureElement();
|
31692
32062
|
if (this.unitHeight)
|
@@ -31710,6 +32080,8 @@ class Table {
|
|
31710
32080
|
});
|
31711
32081
|
// we're all finished.
|
31712
32082
|
dimensionsReady.then(() => {
|
32083
|
+
perMark('blockDims', true);
|
32084
|
+
perMark('init', true);
|
31713
32085
|
requestAnimationFrame(() => (this.isReady = true));
|
31714
32086
|
});
|
31715
32087
|
}
|
@@ -31732,6 +32104,8 @@ class Table {
|
|
31732
32104
|
if (!!col) {
|
31733
32105
|
await this.sortStart(col.order, col.prop);
|
31734
32106
|
}
|
32107
|
+
if (this.tablePinnedService)
|
32108
|
+
this.tablePinnedService.assessCols();
|
31735
32109
|
}
|
31736
32110
|
/** Split up all incoming rows into 'blocks' split amongst tbody elements.
|
31737
32111
|
* These can then be hidden / shown to improve performance.
|
@@ -31742,6 +32116,7 @@ class Table {
|
|
31742
32116
|
this.blocks = [];
|
31743
32117
|
return;
|
31744
32118
|
}
|
32119
|
+
perMark('setBlocks');
|
31745
32120
|
// this.ignoreIO = true;
|
31746
32121
|
let i = 1;
|
31747
32122
|
const l = this.virtualTotalItems > dRows.length
|
@@ -31764,6 +32139,7 @@ class Table {
|
|
31764
32139
|
blocks.push({ rows, __uuid: cyrb53(rows.map((b) => b.__uuid).join()) });
|
31765
32140
|
}
|
31766
32141
|
this.blocks = blocks;
|
32142
|
+
perMark('setBlocks', true);
|
31767
32143
|
}
|
31768
32144
|
/**
|
31769
32145
|
* Returns a block render height.
|
@@ -31832,6 +32208,7 @@ class Table {
|
|
31832
32208
|
}
|
31833
32209
|
// Component lifecycle
|
31834
32210
|
async componentWillLoad() {
|
32211
|
+
perMark('init');
|
31835
32212
|
// setup stores
|
31836
32213
|
this.store = await generateStore(this.host, this.columns, this.scrollParent, this.isReady);
|
31837
32214
|
await this.handleRowsChange();
|
@@ -31851,6 +32228,9 @@ class Table {
|
|
31851
32228
|
}
|
31852
32229
|
componentDidLoad() {
|
31853
32230
|
this.setInitialBlockDimension();
|
32231
|
+
if (!this.tablePinnedService) {
|
32232
|
+
this.tablePinnedService = new TablePinService(this.tableEle, this.scrollParent);
|
32233
|
+
}
|
31854
32234
|
}
|
31855
32235
|
componentShouldUpdate(_newVal, _oldVal, stateName) {
|
31856
32236
|
// stop double rendering - we use the store for rendering internally
|
@@ -31860,9 +32240,11 @@ class Table {
|
|
31860
32240
|
return false;
|
31861
32241
|
}
|
31862
32242
|
componentWillRender() {
|
32243
|
+
perMark('render');
|
31863
32244
|
}
|
31864
32245
|
componentDidRender() {
|
31865
32246
|
this.setMeasureElement().then(() => this.setBlockHeight());
|
32247
|
+
perMark('render', true);
|
31866
32248
|
}
|
31867
32249
|
disconnectedCallback() {
|
31868
32250
|
if (!this.activeWatcherIo)
|
@@ -31875,28 +32257,31 @@ class Table {
|
|
31875
32257
|
}
|
31876
32258
|
render() {
|
31877
32259
|
this.blockElements = [];
|
31878
|
-
return (hAsync(Host, null, hAsync("div", { class: `${CSSNAMESPACE}__top-anchor`, ref: (a) => (this.topAnchorEle = a) }, "\u00A0"), hAsync("nano-resize-observe", { states: "576w sm, 768w md", class: "sm md", onNanoResizeStateChange: this.handleResizeChange
|
32260
|
+
return (hAsync(Host, null, hAsync("div", { class: `${CSSNAMESPACE}__top-anchor`, ref: (a) => (this.topAnchorEle = a) }, "\u00A0"), hAsync("nano-resize-observe", { states: "576w sm, 768w md", class: "sm md", onNanoResizeStateChange: this.handleResizeChange, onNanoResize: () => {
|
32261
|
+
if (this.tablePinnedService)
|
32262
|
+
this.tablePinnedService.onResize();
|
32263
|
+
} }), hAsync("div", { class: `${CSSNAMESPACE}__wrap sm md`, ref: (div) => (this.tableWrapperEle = div), "aria-labelledby": 'nano-table-caption-' + this.renderId, tabindex: this.type === 'grid' ? '0' : undefined }, hAsync("nano-progress-bar", { indeterminate: true, class: {
|
31879
32264
|
[`${CSSNAMESPACE}__progress-bar`]: true,
|
31880
32265
|
[`${CSSNAMESPACE}__progress-bar--show`]: this._loading,
|
31881
|
-
} }), hAsync("table", { role: this.type === 'grid' ? 'grid' : undefined, "aria-rowcount": this.store.data.state.rows.length, "aria-colcount": this.store.config.state.columns.length, class: `${CSSNAMESPACE}`, ref: (tbl) => (this.tableEle = tbl) }, hAsync("caption", { class: {
|
32266
|
+
} }), hAsync("table", { role: this.type === 'grid' ? 'grid' : undefined, "aria-rowcount": this.store.data.state.rows.length, "aria-colcount": this.store.config.state.columns.length, class: `${CSSNAMESPACE}`, ref: (tbl) => (this.tableEle = tbl), id: 'nano-table-' + this.renderId }, hAsync("caption", { class: {
|
31882
32267
|
[`${CSSNAMESPACE}__caption`]: true,
|
31883
32268
|
[`${CSSNAMESPACE}__caption--hide`]: !this.showCaption,
|
31884
|
-
}, id: 'table-caption-' + this.renderId }, hAsync("slot", { name: "caption" }, this.caption)), hAsync("thead", null, hAsync(TableHeadFootRow, { rowRenderer: this.headRender
|
31885
|
-
hAsync(TableColHead, { column: colModel, headRenderer: this.headRender, onColumnSortClick: this.sortStart,
|
32269
|
+
}, id: 'nano-table-caption-' + this.renderId }, hAsync("slot", { name: "caption" }, this.caption)), hAsync("thead", null, hAsync(TableHeadFootRow, { rowRenderer: this.headRender }, this.store.config.state.columns.map((colModel) => [
|
32270
|
+
hAsync(TableColHead, { column: colModel, headRenderer: this.headRender, onColumnSortClick: this.sortStart, defaults: {
|
31886
32271
|
sortable: this.defaultSort,
|
31887
32272
|
} }),
|
31888
|
-
]))), this._loading && !this.blocks.length && (hAsync("tbody", { class: `${CSSNAMESPACE}__active` }, [...Array(10).keys()].map((rowIndex) => (hAsync("tr", null, this.store.config.state.columns.map((_colModel, colIndex) => (hAsync(TableCell
|
32273
|
+
]))), this._loading && !this.blocks.length && (hAsync("tbody", { class: `${CSSNAMESPACE}__active ${CSSNAMESPACE}__loading` }, [...Array(10).keys()].map((rowIndex) => (hAsync("tr", null, this.store.config.state.columns.map((_colModel, colIndex) => (hAsync(TableCell, { rowIndex: rowIndex, colIndex: colIndex, nestedContent: () => hAsync("nano-skeleton", null) })))))))), hAsync("tr", { hidden: !!this._loading || !!this.blocks.length }, hAsync("th", { class: `${CSSNAMESPACE}__th`, colSpan: this.store.config.state.columns.length }, hAsync("div", { class: "nano-tbl__cell-content nano-tbl__cell-content--no-result" }, hAsync("slot", { name: "no-results" }, "No results found")))), this.blocks.map((block, blockIndex) => (hAsync("tbody", { key: block.__uuid, id: `tbody-${this.renderId}-${blockIndex}`, ref: (tb) => {
|
31889
32274
|
this.blockElements.push(tb);
|
31890
32275
|
}, class: {
|
31891
32276
|
[`${CSSNAMESPACE}__inactive`]: !this.activeBlocks.includes(blockIndex),
|
31892
32277
|
[`${CSSNAMESPACE}__active`]: this.activeBlocks.includes(blockIndex),
|
31893
32278
|
} }, this.activeBlocks.includes(blockIndex) ? (block.rows.map((row, i) => {
|
31894
32279
|
const rowIndex = blockIndex > 0 ? blockIndex * this.perBlock + i : i;
|
31895
|
-
return (hAsync(TableRow, { rowRenderer: this.rowRender, rowModel: row, rowIndex: rowIndex }, this.store.config.state.columns.map((_colModel, colIndex) => (hAsync(TableCell
|
31896
|
-
})) : (hAsync("tr",
|
32280
|
+
return (hAsync(TableRow, { rowRenderer: this.rowRender, rowModel: row, rowIndex: rowIndex }, this.store.config.state.columns.map((_colModel, colIndex) => (hAsync(TableCell, { rowIndex: rowIndex, colIndex: colIndex })))));
|
32281
|
+
})) : (hAsync("tr", { class: `${CSSNAMESPACE}__tr--placeholder` }, hAsync("td", { colSpan: this.store.config.state.columns.length, style: {
|
31897
32282
|
height: this.getBlockHeight(blockIndex) + 'px',
|
31898
|
-
} })))))), this.showFooter && (hAsync("tfoot", null, hAsync(TableHeadFootRow, { rowRenderer: this.footRender
|
31899
|
-
hAsync(TableColHead, { column: colModel, headRenderer: this.footRender,
|
32283
|
+
} })))))), this.showFooter && (hAsync("tfoot", null, hAsync(TableHeadFootRow, { rowRenderer: this.footRender }, this.store.config.state.columns.map((colModel) => [
|
32284
|
+
hAsync(TableColHead, { column: colModel, headRenderer: this.footRender, onColumnSortClick: this.sortStart, defaults: {
|
31900
32285
|
sortable: this.defaultSort,
|
31901
32286
|
} }),
|
31902
32287
|
]))))), !!this.blocks.length && (hAsync("nano-spinner", { type: "circle", class: {
|
@@ -31916,7 +32301,7 @@ class Table {
|
|
31916
32301
|
"$flags$": 4,
|
31917
32302
|
"$tagName$": "nano-table",
|
31918
32303
|
"$members$": {
|
31919
|
-
"
|
32304
|
+
"customRenderer": [16],
|
31920
32305
|
"type": [1],
|
31921
32306
|
"caption": [1],
|
31922
32307
|
"showCaption": [4, "show-caption"],
|
@@ -31935,6 +32320,7 @@ class Table {
|
|
31935
32320
|
"customSortFn": [16],
|
31936
32321
|
"defaultSort": [4, "default-sort"],
|
31937
32322
|
"virtualTotalItems": [2, "virtual-total-items"],
|
32323
|
+
"appliedFilters": [2064],
|
31938
32324
|
"internalLoading": [32],
|
31939
32325
|
"blocks": [32],
|
31940
32326
|
"activeBlocks": [32],
|