@nanoporetech-digital/components 5.1.2 → 5.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +35 -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 +5 -1
- package/dist/cjs/nano-checkbox-group.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-components.cjs.js +1 -1
- package/dist/cjs/nano-datalist_3.cjs.entry.js +14 -5
- package/dist/cjs/nano-datalist_3.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-dialog.cjs.entry.js +2 -2
- package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js +8 -5
- 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 +3 -3
- package/dist/cjs/nano-input.cjs.entry.js.map +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 +18 -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-0a720c5f.js → nano-table-04993bb4.js} +560 -186
- package/dist/cjs/nano-table-04993bb4.js.map +1 -0
- package/dist/cjs/nano-table.cjs.entry.js +2 -2
- package/dist/cjs/{table.worker-347d4d31.js → table.worker-85877b23.js} +4 -4
- package/dist/cjs/table.worker-85877b23.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/checkbox/checkbox-group.js +4 -0
- package/dist/collection/components/checkbox/checkbox-group.js.map +1 -1
- package/dist/collection/components/datalist/datalist.js +13 -4
- package/dist/collection/components/datalist/datalist.js.map +1 -1
- package/dist/collection/components/input/input.css +1 -1
- package/dist/collection/components/input/input.js +1 -1
- package/dist/collection/components/input/input.js.map +1 -1
- package/dist/collection/components/nav-item/nav-item.js +6 -3
- package/dist/collection/components/nav-item/nav-item.js.map +1 -1
- 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 +1 -2
- package/dist/collection/components/sortable/sortable.js +5 -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 +104 -48
- 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/datalist.js +13 -4
- package/dist/components/datalist.js.map +1 -1
- package/dist/components/input.js +2 -2
- package/dist/components/input.js.map +1 -1
- package/dist/components/nano-checkbox-group.js +4 -0
- package/dist/components/nano-checkbox-group.js.map +1 -1
- package/dist/components/nano-sortable.js +17 -7
- package/dist/components/nano-sortable.js.map +1 -1
- package/dist/components/nav-item.js +6 -3
- package/dist/components/nav-item.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 +533 -188
- 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 +5 -1
- package/dist/esm/nano-checkbox-group.entry.js.map +1 -1
- package/dist/esm/nano-components.js +1 -1
- package/dist/esm/nano-datalist_3.entry.js +14 -5
- package/dist/esm/nano-datalist_3.entry.js.map +1 -1
- package/dist/esm/nano-dialog.entry.js +2 -2
- package/dist/esm/nano-global-nav-user-profile_3.entry.js +8 -5
- 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 +3 -3
- package/dist/esm/nano-input.entry.js.map +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 +18 -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-9767860f.js → nano-table-91f09583.js} +561 -187
- package/dist/esm/nano-table-91f09583.js.map +1 -0
- package/dist/esm/nano-table.entry.js +2 -2
- package/dist/esm/{table.worker-d252307c.js → table.worker-625475ba.js} +4 -4
- package/dist/esm/table.worker-625475ba.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-17ee0c07.entry.js +5 -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-3de3449e.js +5 -0
- package/dist/nano-components/p-3de3449e.js.map +1 -0
- package/dist/nano-components/p-3eb6d833.entry.js +5 -0
- package/dist/nano-components/p-3eb6d833.entry.js.map +1 -0
- package/dist/nano-components/{p-a1c0afb6.entry.js → p-4884b65a.entry.js} +2 -2
- package/dist/nano-components/{p-75735a91.entry.js → p-565793a2.entry.js} +2 -2
- package/dist/nano-components/p-565793a2.entry.js.map +1 -0
- 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-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-bf18e298.entry.js +5 -0
- 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-2d43a82b.entry.js → p-d74e2642.entry.js} +2 -2
- package/dist/nano-components/p-d74e2642.entry.js.map +1 -0
- package/dist/nano-components/p-dfbf0d56.js +5 -0
- package/dist/nano-components/{p-bd51e29f.js → p-f258383d.js} +1 -1
- package/dist/types/components/datalist/datalist.d.ts +1 -0
- package/dist/types/components/nav-item/nav-item.d.ts +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 -7
- 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 +610 -204
- package/package.json +2 -2
- package/dist/cjs/nano-table-0a720c5f.js.map +0 -1
- package/dist/cjs/table.worker-347d4d31.js.map +0 -1
- package/dist/cjs/throttle-f55496c8.js.map +0 -1
- package/dist/esm/nano-table-9767860f.js.map +0 -1
- package/dist/esm/table.worker-d252307c.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-2d43a82b.entry.js.map +0 -1
- package/dist/nano-components/p-633c778c.js +0 -5
- package/dist/nano-components/p-633c778c.js.map +0 -1
- package/dist/nano-components/p-66631f50.js +0 -5
- package/dist/nano-components/p-75735a91.entry.js.map +0 -1
- package/dist/nano-components/p-7d6065c6.entry.js.map +0 -1
- package/dist/nano-components/p-8a79a7ca.entry.js +0 -5
- package/dist/nano-components/p-9746b0a5.js +0 -5
- package/dist/nano-components/p-9746b0a5.js.map +0 -1
- package/dist/nano-components/p-b0c60290.entry.js +0 -5
- package/dist/nano-components/p-b0c60290.entry.js.map +0 -1
- package/dist/nano-components/p-c8ccb57a.entry.js +0 -5
- package/dist/nano-components/p-c8ccb57a.entry.js.map +0 -1
- package/dist/nano-components/p-d1a5326f.entry.js +0 -5
- package/dist/nano-components/p-d1a5326f.entry.js.map +0 -1
- /package/dist/nano-components/{p-66631f50.js.map → p-17ee0c07.entry.js.map} +0 -0
- /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-a1c0afb6.entry.js.map → p-4884b65a.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-8a79a7ca.entry.js.map → p-dfbf0d56.js.map} +0 -0
package/hydrate/index.js
CHANGED
@@ -11321,6 +11321,10 @@ class CheckboxGroup {
|
|
11321
11321
|
disconnectedCallback() {
|
11322
11322
|
if (this.mo)
|
11323
11323
|
this.mo.disconnect();
|
11324
|
+
this.nativeCbs.forEach((cb) => {
|
11325
|
+
if (cb)
|
11326
|
+
cb.removeEventListener('invalid', this.handleInvalid);
|
11327
|
+
});
|
11324
11328
|
}
|
11325
11329
|
componentDidLoad() {
|
11326
11330
|
this.handleComponentChange();
|
@@ -11665,10 +11669,7 @@ class DataList {
|
|
11665
11669
|
if (nanoInput) {
|
11666
11670
|
nanoInput.removeEventListener('nanoChange', this.inputChange);
|
11667
11671
|
}
|
11668
|
-
|
11669
|
-
oldInput.removeEventListener('click', this.inputClick);
|
11670
|
-
oldInput.removeEventListener('keydown', this.inputKeydown);
|
11671
|
-
oldInput.removeEventListener('input', this.inputChange);
|
11672
|
+
this.removeEventListeners(oldInput);
|
11672
11673
|
this.inputLabel = null;
|
11673
11674
|
writeTask(() => {
|
11674
11675
|
oldInput.removeAttribute('role');
|
@@ -11799,6 +11800,16 @@ class DataList {
|
|
11799
11800
|
this.changeInputValue(foundEle);
|
11800
11801
|
}
|
11801
11802
|
// Event handlers
|
11803
|
+
removeEventListeners(oldInput) {
|
11804
|
+
const nanoInput = oldInput.closest('nano-input');
|
11805
|
+
if (nanoInput) {
|
11806
|
+
nanoInput.removeEventListener('nanoChange', this.inputChange);
|
11807
|
+
}
|
11808
|
+
oldInput.removeEventListener('change', this.inputChange);
|
11809
|
+
oldInput.removeEventListener('click', this.inputClick);
|
11810
|
+
oldInput.removeEventListener('keydown', this.inputKeydown);
|
11811
|
+
oldInput.removeEventListener('input', this.inputChange);
|
11812
|
+
}
|
11802
11813
|
processSlottedContent() {
|
11803
11814
|
requestAnimationFrame(() => {
|
11804
11815
|
var _a;
|
@@ -11866,6 +11877,8 @@ class DataList {
|
|
11866
11877
|
this.mo.disconnect();
|
11867
11878
|
this.mo = undefined;
|
11868
11879
|
}
|
11880
|
+
if (this.connectedInput)
|
11881
|
+
this.removeEventListeners(this.connectedInput);
|
11869
11882
|
}
|
11870
11883
|
render() {
|
11871
11884
|
return (hAsync(Host, { role: this.actvOptEles.length ? 'listbox' : undefined, "aria-owns": this.optionIds.length ? this.optionIds.join(' ') : undefined, "aria-label": this.optionIds.length
|
@@ -20030,7 +20043,7 @@ const FormControl = (props, children) => {
|
|
20030
20043
|
endSlot)));
|
20031
20044
|
};
|
20032
20045
|
|
20033
|
-
const inputCss = ".sc-nano-input-h {\n box-sizing: border-box;\n}\n\n*.sc-nano-input, *.sc-nano-input::before, *.sc-nano-input::after {\n box-sizing: border-box;\n}\n[hidden].sc-nano-input {\n display: none !important;\n}\n[disabled].sc-nano-input-h:not([disabled=false]) {\n opacity: 0.5;\n}\n\n.form-ctrl.sc-nano-input {\n min-inline-size: 100%;\n display: block;\n}\n.form-ctrl.has-helper-end.sc-nano-input {\n display: flex;\n gap: 1rem;\n}\n.form-ctrl.has-helper-end.sc-nano-input .form-ctrl__wrapper.sc-nano-input {\n flex: 1 1 100%;\n}\n.form-ctrl.has-helper-end.sc-nano-input .form-ctrl__helper-end.sc-nano-input {\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-input {\n display: block;\n container-type: inline-size;\n}\n\nlabel.sc-nano-input, .form-ctrl__more.sc-nano-input, .form-ctrl__error.sc-nano-input, .form-ctrl__helper.sc-nano-input {\n display: block;\n inline-size: 100%;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\nlabel.visually-hide.sc-nano-input, .form-ctrl__more.visually-hide.sc-nano-input, .form-ctrl__error.visually-hide.sc-nano-input, .form-ctrl__helper.visually-hide.sc-nano-input {\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-input {\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-input-h .form-ctrl__float-label.sc-nano-input, .has-value.sc-nano-input-h .form-ctrl__float-label.sc-nano-input {\n transform: translateY(-110%);\n font-size: 0.8em;\n opacity: 0.7;\n}\n.form-ctrl__float-label.sc-nano-input .form-ctrl__label-charcount.sc-nano-input {\n opacity: 0;\n transition: opacity 0.125s ease-in;\n}\n.has-focus.sc-nano-input-h .form-ctrl__float-label.sc-nano-input .form-ctrl__label-charcount.sc-nano-input, .has-value.sc-nano-input-h .form-ctrl__float-label.sc-nano-input .form-ctrl__label-charcount.sc-nano-input {\n opacity: 1;\n}\n.form-ctrl__textarea.sc-nano-input .form-ctrl__float-label.sc-nano-input {\n inset-block-start: 50%;\n}\n.has-focus.sc-nano-input-h .form-ctrl__textarea.sc-nano-input .form-ctrl__float-label.sc-nano-input {\n inset-block-start: 0;\n transform: translateY(38%);\n}\n.has-value.sc-nano-input-h .form-ctrl__textarea.sc-nano-input .form-ctrl__float-label.sc-nano-input {\n inset-block-start: 0;\n transform: translateY(38%);\n}\n\n.form-ctrl__label.sc-nano-input {\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-input .form-ctrl__label-wrap.sc-nano-input {\n flex: 1;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.form-ctrl__label.sc-nano-input .form-ctrl__label-placeholder.sc-nano-input {\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-input .form-ctrl__label-charcount.sc-nano-input {\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-input-h .form-ctrl__label.sc-nano-input .form-ctrl__label-placeholder.sc-nano-input {\n opacity: 0.5;\n}\n.has-focus.sc-nano-input-h .form-ctrl__label.sc-nano-input {\n color: var(--label-color--focus);\n}\n.is-invalid.sc-nano-input-h:not([disabled]) .form-ctrl__label.sc-nano-input {\n color: var(--label-color--invalid);\n}\n\n.has-float-label.sc-nano-input .select__multi-input.sc-nano-input, .has-float-label.sc-nano-input .select__native-input.sc-nano-input, .has-float-label.sc-nano-input .input__native-ctrl.sc-nano-input {\n opacity: 0;\n transition: opacity 0.125s ease-in;\n}\n.has-focus.sc-nano-input-h .has-float-label.sc-nano-input .select__multi-input.sc-nano-input, .has-value.sc-nano-input-h .has-float-label.sc-nano-input .select__multi-input.sc-nano-input, .has-focus.sc-nano-input-h .has-float-label.sc-nano-input .select__native-input.sc-nano-input, .has-value.sc-nano-input-h .has-float-label.sc-nano-input .select__native-input.sc-nano-input, .has-focus.sc-nano-input-h .has-float-label.sc-nano-input .input__native-ctrl.sc-nano-input, .has-value.sc-nano-input-h .has-float-label.sc-nano-input .input__native-ctrl.sc-nano-input {\n opacity: 1;\n}\n\n.form-ctrl__more.sc-nano-input {\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-input, .form-ctrl__error.sc-nano-input {\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-input {\n font-style: italic;\n color: var(--help-msg-color);\n}\n[show-inline-error].sc-nano-input-h:not([show-inline-error=false]):not([disabled]).is-invalid .form-ctrl__helper.sc-nano-input {\n opacity: 0;\n}\n\n.form-ctrl__helper-end.sc-nano-input {\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-input {\n opacity: 0;\n color: var(--invalid-msg-color);\n font-stretch: condensed;\n}\n.is-invalid.sc-nano-input-h:not([disabled]) .form-ctrl__error.sc-nano-input {\n opacity: 1;\n}\n\n.form-ctrl__input.sc-nano-input {\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-input-h .form-ctrl__input.sc-nano-input {\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-input-h:not([disabled]) .form-ctrl__input.sc-nano-input {\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-input-h:not([disabled]) .form-ctrl__input.sc-nano-input {\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-input {\n display: flex;\n align-items: stretch;\n flex: 1;\n max-inline-size: 100%;\n}\n\n.form-ctrl__clear-btn.sc-nano-input, .form-ctrl__slot-end.sc-nano-input, .form-ctrl__slot-start.sc-nano-input, .form-ctrl__slot-value-end.sc-nano-input {\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-input .form-ctrl__slot-start.sc-nano-input {\n display: none;\n}\n\n.form-ctrl__slot-start.sc-nano-input-s > *, .form-ctrl__slot-start .sc-nano-input-s > *, .form-ctrl__slot-end.sc-nano-input-s > *, .form-ctrl__slot-end .sc-nano-input-s > *, .form-ctrl__slot-value-end.sc-nano-input-s > *, .form-ctrl__slot-value-end .sc-nano-input-s > *, .form-ctrl__slot-value-end.sc-nano-input *.sc-nano-input {\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-input-h[disabled]:not([disabled=false]) .form-ctrl__slot-start.sc-nano-input-s > *, .sc-nano-input-h[disabled]:not([disabled=false]) .form-ctrl__slot-start .sc-nano-input-s > *, .sc-nano-input-h[disabled]:not([disabled=false]) .form-ctrl__slot-end.sc-nano-input-s > *, .sc-nano-input-h[disabled]:not([disabled=false]) .form-ctrl__slot-end .sc-nano-input-s > *, .sc-nano-input-h[disabled]:not([disabled=false]) .form-ctrl__slot-value-end.sc-nano-input-s > *, .sc-nano-input-h[disabled]:not([disabled=false]) .form-ctrl__slot-value-end .sc-nano-input-s > *, [disabled].sc-nano-input-h:not([disabled=false]) .form-ctrl__slot-value-end.sc-nano-input *.sc-nano-input {\n pointer-events: none;\n}\n\n.form-ctrl__slot-value-end.sc-nano-input-s > *, .form-ctrl__slot-value-end .sc-nano-input-s > *, .form-ctrl__slot-value-end.sc-nano-input *.sc-nano-input {\n pointer-events: none;\n}\n\n.form-ctrl__clear-btn.sc-nano-input {\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-input-h .form-ctrl__clear-btn.sc-nano-input {\n color: var(--clear-btn-color--invalid);\n}\n.has-value.sc-nano-input-h .form-ctrl__clear-btn.sc-nano-input {\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-input:hover {\n color: var(--clear-btn-color--hover);\n}\n\n.sc-nano-input-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 position: relative;\n inline-size: 100%;\n padding: 0 !important;\n color: currentcolor;\n display: block;\n}\n\n.nano-color.sc-nano-input-h {\n color: var(--nano-color-base);\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}\n\n.input__native-ctrl.sc-nano-input {\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-block: 0;\n padding-inline: var(--padding-start) var(--padding-end);\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 inline-size: 100%;\n max-inline-size: 100%;\n max-block-size: 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 line-height: 2.5em;\n \n}\n.has-float-label.sc-nano-input .input__native-ctrl.sc-nano-input {\n line-height: 2.1em;\n min-height: 2.1em;\n -webkit-padding-before: 1.4em;\n padding-block-start: 1.4em;\n}\n.input__native-ctrl.sc-nano-input::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.input__native-ctrl.sc-nano-input::-moz-placeholder {\n line-height: 2.8em;\n text-overflow: ellipsis;\n}\n.input__native-ctrl.sc-nano-input:-webkit-autofill {\n background-color: transparent;\n}\n.input__native-ctrl.sc-nano-input::-webkit-search-decoration, .input__native-ctrl.sc-nano-input::-webkit-search-cancel-button, .input__native-ctrl.sc-nano-input::-webkit-search-results-button, .input__native-ctrl.sc-nano-input::-webkit-search-results-decoration {\n -webkit-appearance: none;\n appearance: none;\n}\n.input__native-ctrl.sc-nano-input:invalid {\n box-shadow: none;\n}\n.input__native-ctrl.sc-nano-input::-ms-clear, .input__native-ctrl.sc-nano-input::-ms-reveal {\n display: none;\n}\n.input__native-ctrl.input__resizable.sc-nano-input {\n resize: vertical;\n overflow: auto;\n}\n.form-ctrl__textarea.sc-nano-input .input__native-ctrl.sc-nano-input {\n line-height: 1.5em;\n padding-block: var(--padding-top) 0.25em;\n white-space: pre-wrap;\n}\n.form-ctrl__textarea.sc-nano-input .input__native-ctrl.sc-nano-input::placeholder {\n line-height: 1.5em;\n}\n.has-float-label.sc-nano-input .form-ctrl__textarea.sc-nano-input .input__native-ctrl.sc-nano-input {\n -webkit-padding-before: 1.75em;\n padding-block-start: 1.75em;\n}\n[readonly].sc-nano-input-h:not([readonly=false]) .input__native-ctrl.sc-nano-input {\n -webkit-user-select: none;\n user-select: none;\n}";
|
20046
|
+
const inputCss = ".sc-nano-input-h {\n box-sizing: border-box;\n}\n\n*.sc-nano-input, *.sc-nano-input::before, *.sc-nano-input::after {\n box-sizing: border-box;\n}\n[hidden].sc-nano-input {\n display: none !important;\n}\n[disabled].sc-nano-input-h:not([disabled=false]) {\n opacity: 0.5;\n}\n\n.form-ctrl.sc-nano-input {\n min-inline-size: 100%;\n display: block;\n}\n.form-ctrl.has-helper-end.sc-nano-input {\n display: flex;\n gap: 1rem;\n container-type: inline-size;\n}\n.form-ctrl.has-helper-end.sc-nano-input .form-ctrl__wrapper.sc-nano-input {\n flex: 1 1 100%;\n}\n.form-ctrl.has-helper-end.sc-nano-input .form-ctrl__helper-end.sc-nano-input {\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-input {\n display: block;\n}\n\nlabel.sc-nano-input, .form-ctrl__more.sc-nano-input, .form-ctrl__error.sc-nano-input, .form-ctrl__helper.sc-nano-input {\n display: block;\n inline-size: 100%;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\nlabel.visually-hide.sc-nano-input, .form-ctrl__more.visually-hide.sc-nano-input, .form-ctrl__error.visually-hide.sc-nano-input, .form-ctrl__helper.visually-hide.sc-nano-input {\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-input {\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-input-h .form-ctrl__float-label.sc-nano-input, .has-value.sc-nano-input-h .form-ctrl__float-label.sc-nano-input {\n transform: translateY(-110%);\n font-size: 0.8em;\n opacity: 0.7;\n}\n.form-ctrl__float-label.sc-nano-input .form-ctrl__label-charcount.sc-nano-input {\n opacity: 0;\n transition: opacity 0.125s ease-in;\n}\n.has-focus.sc-nano-input-h .form-ctrl__float-label.sc-nano-input .form-ctrl__label-charcount.sc-nano-input, .has-value.sc-nano-input-h .form-ctrl__float-label.sc-nano-input .form-ctrl__label-charcount.sc-nano-input {\n opacity: 1;\n}\n.form-ctrl__textarea.sc-nano-input .form-ctrl__float-label.sc-nano-input {\n inset-block-start: 50%;\n}\n.has-focus.sc-nano-input-h .form-ctrl__textarea.sc-nano-input .form-ctrl__float-label.sc-nano-input {\n inset-block-start: 0;\n transform: translateY(38%);\n}\n.has-value.sc-nano-input-h .form-ctrl__textarea.sc-nano-input .form-ctrl__float-label.sc-nano-input {\n inset-block-start: 0;\n transform: translateY(38%);\n}\n\n.form-ctrl__label.sc-nano-input {\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-input .form-ctrl__label-wrap.sc-nano-input {\n flex: 1;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.form-ctrl__label.sc-nano-input .form-ctrl__label-placeholder.sc-nano-input {\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-input .form-ctrl__label-charcount.sc-nano-input {\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-input-h .form-ctrl__label.sc-nano-input .form-ctrl__label-placeholder.sc-nano-input {\n opacity: 0.5;\n}\n.has-focus.sc-nano-input-h .form-ctrl__label.sc-nano-input {\n color: var(--label-color--focus);\n}\n.is-invalid.sc-nano-input-h:not([disabled]) .form-ctrl__label.sc-nano-input {\n color: var(--label-color--invalid);\n}\n\n.has-float-label.sc-nano-input .select__multi-input.sc-nano-input, .has-float-label.sc-nano-input .select__native-input.sc-nano-input, .has-float-label.sc-nano-input .input__native-ctrl.sc-nano-input {\n opacity: 0;\n transition: opacity 0.125s ease-in;\n}\n.has-focus.sc-nano-input-h .has-float-label.sc-nano-input .select__multi-input.sc-nano-input, .has-value.sc-nano-input-h .has-float-label.sc-nano-input .select__multi-input.sc-nano-input, .has-focus.sc-nano-input-h .has-float-label.sc-nano-input .select__native-input.sc-nano-input, .has-value.sc-nano-input-h .has-float-label.sc-nano-input .select__native-input.sc-nano-input, .has-focus.sc-nano-input-h .has-float-label.sc-nano-input .input__native-ctrl.sc-nano-input, .has-value.sc-nano-input-h .has-float-label.sc-nano-input .input__native-ctrl.sc-nano-input {\n opacity: 1;\n}\n\n.form-ctrl__more.sc-nano-input {\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-input, .form-ctrl__error.sc-nano-input {\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-input {\n font-style: italic;\n color: var(--help-msg-color);\n}\n[show-inline-error].sc-nano-input-h:not([show-inline-error=false]):not([disabled]).is-invalid .form-ctrl__helper.sc-nano-input {\n opacity: 0;\n}\n\n.form-ctrl__helper-end.sc-nano-input {\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-input {\n opacity: 0;\n color: var(--invalid-msg-color);\n font-stretch: condensed;\n}\n.is-invalid.sc-nano-input-h:not([disabled]) .form-ctrl__error.sc-nano-input {\n opacity: 1;\n}\n\n.form-ctrl__input.sc-nano-input {\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-input-h .form-ctrl__input.sc-nano-input {\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-input-h:not([disabled]) .form-ctrl__input.sc-nano-input {\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-input-h:not([disabled]) .form-ctrl__input.sc-nano-input {\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-input {\n display: flex;\n align-items: stretch;\n flex: 1;\n max-inline-size: 100%;\n}\n\n.form-ctrl__clear-btn.sc-nano-input, .form-ctrl__slot-end.sc-nano-input, .form-ctrl__slot-start.sc-nano-input, .form-ctrl__slot-value-end.sc-nano-input {\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-input .form-ctrl__slot-start.sc-nano-input {\n display: none;\n}\n\n.form-ctrl__slot-start.sc-nano-input-s > *, .form-ctrl__slot-start .sc-nano-input-s > *, .form-ctrl__slot-end.sc-nano-input-s > *, .form-ctrl__slot-end .sc-nano-input-s > *, .form-ctrl__slot-value-end.sc-nano-input-s > *, .form-ctrl__slot-value-end .sc-nano-input-s > *, .form-ctrl__slot-value-end.sc-nano-input *.sc-nano-input {\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-input-h[disabled]:not([disabled=false]) .form-ctrl__slot-start.sc-nano-input-s > *, .sc-nano-input-h[disabled]:not([disabled=false]) .form-ctrl__slot-start .sc-nano-input-s > *, .sc-nano-input-h[disabled]:not([disabled=false]) .form-ctrl__slot-end.sc-nano-input-s > *, .sc-nano-input-h[disabled]:not([disabled=false]) .form-ctrl__slot-end .sc-nano-input-s > *, .sc-nano-input-h[disabled]:not([disabled=false]) .form-ctrl__slot-value-end.sc-nano-input-s > *, .sc-nano-input-h[disabled]:not([disabled=false]) .form-ctrl__slot-value-end .sc-nano-input-s > *, [disabled].sc-nano-input-h:not([disabled=false]) .form-ctrl__slot-value-end.sc-nano-input *.sc-nano-input {\n pointer-events: none;\n}\n\n.form-ctrl__slot-value-end.sc-nano-input-s > *, .form-ctrl__slot-value-end .sc-nano-input-s > *, .form-ctrl__slot-value-end.sc-nano-input *.sc-nano-input {\n pointer-events: none;\n}\n\n.form-ctrl__clear-btn.sc-nano-input {\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-input-h .form-ctrl__clear-btn.sc-nano-input {\n color: var(--clear-btn-color--invalid);\n}\n.has-value.sc-nano-input-h .form-ctrl__clear-btn.sc-nano-input {\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-input:hover {\n color: var(--clear-btn-color--hover);\n}\n\n.sc-nano-input-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 position: relative;\n inline-size: 100%;\n padding: 0 !important;\n color: currentcolor;\n display: block;\n}\n\n.nano-color.sc-nano-input-h {\n color: var(--nano-color-base);\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}\n\n.input__native-ctrl.sc-nano-input {\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-block: 0;\n padding-inline: var(--padding-start) var(--padding-end);\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 inline-size: 100%;\n max-inline-size: 100%;\n max-block-size: 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 line-height: 2.5em;\n \n}\n.has-float-label.sc-nano-input .input__native-ctrl.sc-nano-input {\n line-height: 2.1em;\n min-height: 2.1em;\n -webkit-padding-before: 1.4em;\n padding-block-start: 1.4em;\n}\n.input__native-ctrl.sc-nano-input::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.input__native-ctrl.sc-nano-input::-moz-placeholder {\n line-height: 2.8em;\n text-overflow: ellipsis;\n}\n.input__native-ctrl.sc-nano-input:-webkit-autofill {\n background-color: transparent;\n}\n.input__native-ctrl.sc-nano-input::-webkit-search-decoration, .input__native-ctrl.sc-nano-input::-webkit-search-cancel-button, .input__native-ctrl.sc-nano-input::-webkit-search-results-button, .input__native-ctrl.sc-nano-input::-webkit-search-results-decoration {\n -webkit-appearance: none;\n appearance: none;\n}\n.input__native-ctrl.sc-nano-input:invalid {\n box-shadow: none;\n}\n.input__native-ctrl.sc-nano-input::-ms-clear, .input__native-ctrl.sc-nano-input::-ms-reveal {\n display: none;\n}\n.input__native-ctrl.input__resizable.sc-nano-input {\n resize: vertical;\n overflow: auto;\n}\n.form-ctrl__textarea.sc-nano-input .input__native-ctrl.sc-nano-input {\n line-height: 1.5em;\n padding-block: var(--padding-top) 0.25em;\n white-space: pre-wrap;\n}\n.form-ctrl__textarea.sc-nano-input .input__native-ctrl.sc-nano-input::placeholder {\n line-height: 1.5em;\n}\n.has-float-label.sc-nano-input .form-ctrl__textarea.sc-nano-input .input__native-ctrl.sc-nano-input {\n -webkit-padding-before: 1.75em;\n padding-block-start: 1.75em;\n}\n[readonly].sc-nano-input-h:not([readonly=false]) .input__native-ctrl.sc-nano-input {\n -webkit-user-select: none;\n user-select: none;\n}";
|
20034
20047
|
|
20035
20048
|
let inputIds = 0;
|
20036
20049
|
/**
|
@@ -20379,7 +20392,7 @@ class Input {
|
|
20379
20392
|
disabled,
|
20380
20393
|
clearControl: this.clearInput,
|
20381
20394
|
}))(this);
|
20382
|
-
return (hAsync(Host, { "aria-disabled": this.disabled ? 'true' : null, dir: this.rtl ? 'rtl' : null, class: Object.assign(Object.assign({}, createColorClasses(this.color)), { 'has-value': this.hasValue(), 'has-focus': this.hasFocus, 'is-invalid': this._invalid }) }, hAsync("div",
|
20395
|
+
return (hAsync(Host, { "aria-disabled": this.disabled ? 'true' : null, dir: this.rtl ? 'rtl' : null, class: Object.assign(Object.assign({}, createColorClasses(this.color)), { 'has-value': this.hasValue(), 'has-focus': this.hasFocus, 'is-invalid': this._invalid }) }, hAsync("div", { style: { width: '100%' } }, hAsync(FormControlWrap, Object.assign({}, wrapOptions), hAsync(FormControl, Object.assign({}, controlOptions, { onClearText: this.clearTextInput, control: this.el, ref: (el) => (this.nativeInputWrap = el) }), this.type !== 'textarea' && (hAsync("input", { id: this.inputId, class: "input__native-ctrl", ref: (input) => (this.nativeInput = input), "aria-labelledby": labelId + ' ' + moreId + ' ' + helperEndId, disabled: this.disabled, accept: this.accept, autoCapitalize: this.autocapitalise, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, inputMode: this.inputmode, form: this.form, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder, readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, size: this.size, type: this.type, value: value, onInput: this.onInput, onChange: this.onInput, onFocus: this.onFocus, onBlur: this.handleBlur, onKeyDown: this.onKeydown, onInvalid: this.validate })), this.type === 'textarea' && (hAsync("textarea", { rows: this.floatLabel ? 1 : this.rows, id: this.inputId, class: {
|
20383
20396
|
'input__native-ctrl': true,
|
20384
20397
|
input__resizable: this.resize === 'true',
|
20385
20398
|
}, ref: (input) => (this.nativeInput = input), "aria-labelledby": labelId + ' ' + moreId + ' ' + helperEndId, disabled: this.disabled, autoCapitalize: this.autocapitalise, autoCorrect: this.autocorrect, autoFocus: this.autofocus, inputMode: this.inputmode, form: this.form, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder, readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, value: value, onInput: this.onInput, onChange: this.onInput, onFocus: this.onFocus, onKeyDown: this.onKeydown, onInvalid: this.validate, onBlur: this.handleBlur })))), hAsync("slot", null))));
|
@@ -21056,7 +21069,7 @@ class NavItem {
|
|
21056
21069
|
if (!e.composedPath().some((el) => el === this.secondaryDiv))
|
21057
21070
|
this.toggleSecondary();
|
21058
21071
|
}
|
21059
|
-
|
21072
|
+
connectedCallback() {
|
21060
21073
|
const secondaryEle = this.el.querySelector('[slot="secondary"]');
|
21061
21074
|
this.hasSecondarySlot = !!secondaryEle;
|
21062
21075
|
const link = getDirectChildren(this.el, 'a, button')[0];
|
@@ -21071,8 +21084,6 @@ class NavItem {
|
|
21071
21084
|
this.btn.addEventListener('focus', this.handleFocus);
|
21072
21085
|
this.btn.addEventListener('blur', this.handleHostBlur);
|
21073
21086
|
}
|
21074
|
-
}
|
21075
|
-
connectedCallback() {
|
21076
21087
|
this.isInGlobalNav = false;
|
21077
21088
|
this.isInMenuDrawer = false;
|
21078
21089
|
this.globalNavEle = this.el.closest('nano-global-nav');
|
@@ -21082,6 +21093,11 @@ class NavItem {
|
|
21082
21093
|
this.el.parentElement === this.globalNavEle ||
|
21083
21094
|
!!this.el.closest('.global-nav');
|
21084
21095
|
}
|
21096
|
+
disconnectedCallback() {
|
21097
|
+
this.btn.removeEventListener('click', this.toggleSecondary);
|
21098
|
+
this.btn.removeEventListener('focus', this.handleFocus);
|
21099
|
+
this.btn.removeEventListener('blur', this.handleHostBlur);
|
21100
|
+
}
|
21085
21101
|
render() {
|
21086
21102
|
return (hAsync(Host, { class: {
|
21087
21103
|
'has-secondary': this.hasSecondarySlot,
|
@@ -22224,6 +22240,7 @@ class ResizeObserve {
|
|
22224
22240
|
this.nanoResizeStateChange = createEvent(this, "nanoResizeStateChange", 7);
|
22225
22241
|
this.nanoResizeObserverReady = createEvent(this, "nanoResizeObserverReady", 7);
|
22226
22242
|
this.nanoResizeContentFitChange = createEvent(this, "nanoResizeContentFitChange", 7);
|
22243
|
+
this.nanoResize = createEvent(this, "nanoResize", 7);
|
22227
22244
|
this.isReady = false;
|
22228
22245
|
this.assessChanges = () => {
|
22229
22246
|
if (!this.currentWidth && !this.currentHeight)
|
@@ -22388,10 +22405,11 @@ class ResizeObserve {
|
|
22388
22405
|
attachRO() {
|
22389
22406
|
if (!window['ResizeObserver'])
|
22390
22407
|
return;
|
22391
|
-
this.ro = new ResizeObserver(() => {
|
22408
|
+
this.ro = new ResizeObserver((ro) => {
|
22392
22409
|
const { width, height } = this.host.getBoundingClientRect();
|
22393
22410
|
this.currentWidth = Math.ceil(width);
|
22394
22411
|
this.currentHeight = Math.ceil(height);
|
22412
|
+
this.nanoResize.emit(ro);
|
22395
22413
|
});
|
22396
22414
|
this.ro.observe(this.host);
|
22397
22415
|
}
|
@@ -22452,7 +22470,7 @@ class ResizeObserve {
|
|
22452
22470
|
}; }
|
22453
22471
|
}
|
22454
22472
|
|
22455
|
-
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}\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 container-type: inline-size;\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}";
|
22456
22474
|
|
22457
22475
|
let selectIds = 0;
|
22458
22476
|
/**
|
@@ -27503,6 +27521,19 @@ function drag(container, options) {
|
|
27503
27521
|
// move(initialEvent);
|
27504
27522
|
}
|
27505
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
|
+
|
27506
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}";
|
27507
27538
|
|
27508
27539
|
// Orientation map to limit dragging to horizontal or vertical.
|
@@ -27768,11 +27799,6 @@ class Sortable {
|
|
27768
27799
|
return node.parentNode.appendChild(clone);
|
27769
27800
|
}
|
27770
27801
|
/// Event handlers ///
|
27771
|
-
addListeners(el, events, fn, opts) {
|
27772
|
-
events
|
27773
|
-
.split(' ')
|
27774
|
-
.forEach((e) => el.addEventListener(e, fn, opts));
|
27775
|
-
}
|
27776
27802
|
removeEventHandlers(ele) {
|
27777
27803
|
ele = ele || this.sortableHost;
|
27778
27804
|
ele.removeEventListener('mousedown', this.handleTrack);
|
@@ -27781,7 +27807,9 @@ class Sortable {
|
|
27781
27807
|
}
|
27782
27808
|
addEventHandlers(ele) {
|
27783
27809
|
ele = ele || this.sortableHost;
|
27784
|
-
|
27810
|
+
addListeners(ele, 'mousedown touchstart', this.handleTrack, {
|
27811
|
+
passive: true,
|
27812
|
+
});
|
27785
27813
|
ele.addEventListener('keydown', this.handleKeydown);
|
27786
27814
|
}
|
27787
27815
|
/**
|
@@ -27959,7 +27987,7 @@ class Sortable {
|
|
27959
27987
|
});
|
27960
27988
|
}, 150);
|
27961
27989
|
// reset track timer & cancel DnD on mouseup / touchend / touchmove
|
27962
|
-
|
27990
|
+
addListeners(document, 'mouseup touchend touchmove', () => clearTimeout(this.mouseDownTimer), { once: true });
|
27963
27991
|
}
|
27964
27992
|
/**
|
27965
27993
|
* Initialized a drag and drop sequence if a child node was clicked that matches the itemSelector property.
|
@@ -28892,8 +28920,10 @@ class Sticker {
|
|
28892
28920
|
}
|
28893
28921
|
/** Find and set the stickToEle from the public, selector string */
|
28894
28922
|
stickToChange() {
|
28895
|
-
if (this.stickTo)
|
28923
|
+
if (typeof this.stickTo === 'string')
|
28896
28924
|
this.stickToEle = this.scrollParent.querySelector(this.stickTo);
|
28925
|
+
else if (!!this.stickTo)
|
28926
|
+
this.stickToEle = this.stickTo;
|
28897
28927
|
else
|
28898
28928
|
this.stickToEle = undefined;
|
28899
28929
|
}
|
@@ -30472,6 +30502,7 @@ function filter(workerStore, rows, filters = []) {
|
|
30472
30502
|
}
|
30473
30503
|
else {
|
30474
30504
|
rows = filter$1(rows, {
|
30505
|
+
predicate: typeof filter.filter === 'string' ? 'AND' : 'OR',
|
30475
30506
|
keywords: filter.filter,
|
30476
30507
|
includePaths: [filter.prop],
|
30477
30508
|
ignorePaths: ['__uuid', '__index'],
|
@@ -30825,92 +30856,6 @@ function colheadFootRender(col) {
|
|
30825
30856
|
const tpl = col === null || col === void 0 ? void 0 : col.columnTemplate;
|
30826
30857
|
return tpl ? (tpl(hAsync, col)) : (hAsync(Fragment, null, col.title));
|
30827
30858
|
}
|
30828
|
-
const stickyHIOs = new WeakMap();
|
30829
|
-
const stickyVIOs = new WeakMap();
|
30830
|
-
/**
|
30831
|
-
* Adds element to Intersection Observer. Fires when element changes on the x axis
|
30832
|
-
* @param el - an element to observe
|
30833
|
-
* @param pos - the edge to watch (start or end)
|
30834
|
-
* @param cb - callback when an intersection state changes.
|
30835
|
-
*/
|
30836
|
-
function addHObserver(el, pos, cb) {
|
30837
|
-
if (stickyHIOs.get(el))
|
30838
|
-
return;
|
30839
|
-
const store = fetchStores();
|
30840
|
-
const root = store.general.state.scrollParent;
|
30841
|
-
const observer = new IntersectionObserver(([e]) => {
|
30842
|
-
const rootBounds = e.rootBounds || document.scrollingElement.getBoundingClientRect();
|
30843
|
-
const positions = {};
|
30844
|
-
if (pos === 'start') {
|
30845
|
-
positions.start =
|
30846
|
-
e.boundingClientRect.x - (rootBounds.x + root.scrollLeft) < 0 &&
|
30847
|
-
!e.isIntersecting;
|
30848
|
-
}
|
30849
|
-
if (pos === 'end') {
|
30850
|
-
// TODO - sort these out for RtL
|
30851
|
-
positions.end =
|
30852
|
-
e.boundingClientRect.right > e.boundingClientRect.width &&
|
30853
|
-
!e.isIntersecting;
|
30854
|
-
}
|
30855
|
-
if (!!cb)
|
30856
|
-
cb(positions);
|
30857
|
-
}, {
|
30858
|
-
threshold: [1],
|
30859
|
-
rootMargin: '1px 0px 100px 0px',
|
30860
|
-
root: root === document.scrollingElement ? null : root,
|
30861
|
-
});
|
30862
|
-
stickyHIOs.set(el, observer);
|
30863
|
-
if (store.general.state.isReady) {
|
30864
|
-
observer.observe(el);
|
30865
|
-
}
|
30866
|
-
else {
|
30867
|
-
store.general.state.host.addEventListener('nanoTblReady', () => {
|
30868
|
-
observer.observe(el);
|
30869
|
-
}, { once: true });
|
30870
|
-
}
|
30871
|
-
}
|
30872
|
-
/**
|
30873
|
-
* Adds element to Intersection Observer. Fires when element changes on the y axis
|
30874
|
-
* @param el - an element to observe
|
30875
|
-
* @param pos - the edge to watch (start or end)
|
30876
|
-
* @param cb - callback when an intersection state changes.
|
30877
|
-
*/
|
30878
|
-
function addVObserver(el, pos, cb) {
|
30879
|
-
if (stickyVIOs.get(el))
|
30880
|
-
return;
|
30881
|
-
const store = fetchStores();
|
30882
|
-
const root = store.general.state.scrollParent;
|
30883
|
-
const observer = new IntersectionObserver(([e]) => {
|
30884
|
-
const rootBounds = e.rootBounds || document.scrollingElement.getBoundingClientRect();
|
30885
|
-
const positions = {};
|
30886
|
-
if (pos === 'top') {
|
30887
|
-
positions.top =
|
30888
|
-
e.boundingClientRect.y - (rootBounds.y + root.scrollTop) < 0 &&
|
30889
|
-
!e.isIntersecting;
|
30890
|
-
}
|
30891
|
-
if (pos === 'bottom') {
|
30892
|
-
const boundingClientRect = e.target.getBoundingClientRect();
|
30893
|
-
positions.bottom =
|
30894
|
-
boundingClientRect.height + boundingClientRect.y >
|
30895
|
-
rootBounds.height && !e.isIntersecting;
|
30896
|
-
}
|
30897
|
-
if (!!cb)
|
30898
|
-
cb(positions);
|
30899
|
-
}, {
|
30900
|
-
threshold: [1],
|
30901
|
-
rootMargin: '0px 100px 0px 100px',
|
30902
|
-
root: root === document.scrollingElement ? null : root,
|
30903
|
-
});
|
30904
|
-
stickyVIOs.set(el, observer);
|
30905
|
-
if (store.general.state.isReady) {
|
30906
|
-
observer.observe(el);
|
30907
|
-
}
|
30908
|
-
else {
|
30909
|
-
store.general.state.host.addEventListener('nanoTblReady', () => {
|
30910
|
-
observer.observe(el);
|
30911
|
-
}, { once: true });
|
30912
|
-
}
|
30913
|
-
}
|
30914
30859
|
function headerPinClasses(type, vPinned, toString = false) {
|
30915
30860
|
const classes = {
|
30916
30861
|
[`${CSSNAMESPACE}__${type}`]: true,
|
@@ -30980,7 +30925,7 @@ function isInViewport(el, percentVisible = 100) {
|
|
30980
30925
|
percentVisible);
|
30981
30926
|
}
|
30982
30927
|
|
30983
|
-
const TableColHead = ({ column,
|
30928
|
+
const TableColHead = ({ column, onColumnSortClick, defaults, }) => {
|
30984
30929
|
// Sort handling
|
30985
30930
|
function handleColumnSortClick(e) {
|
30986
30931
|
let order;
|
@@ -31005,7 +30950,7 @@ const TableColHead = ({ column, headRenderer, onColumnSortClick, onColumnPinned,
|
|
31005
30950
|
extraProps = column.columnProperties(column) || extraProps;
|
31006
30951
|
}
|
31007
30952
|
const baseProps = {
|
31008
|
-
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 }),
|
31009
30954
|
};
|
31010
30955
|
let props = extraProps ? mergeProperties(baseProps, extraProps) : baseProps;
|
31011
30956
|
const content = colheadFootRender(column);
|
@@ -31022,12 +30967,7 @@ const TableColHead = ({ column, headRenderer, onColumnSortClick, onColumnPinned,
|
|
31022
30967
|
: 'none';
|
31023
30968
|
props = Object.assign(Object.assign({}, props), { 'aria-sort': sort });
|
31024
30969
|
}
|
31025
|
-
return (hAsync("th", Object.assign({}, props, {
|
31026
|
-
if (['end', 'start'].includes(column.pinned))
|
31027
|
-
addHObserver(th, column.pinned, onColumnPinned);
|
31028
|
-
if (['top', 'bottom'].includes(headRenderer.pinned))
|
31029
|
-
addVObserver(th, headRenderer.pinned, onColumnPinned);
|
31030
|
-
}, key: column.prop }), isSortable() ? (hAsync("button", { class: {
|
30970
|
+
return (hAsync("th", Object.assign({}, props, { key: column.prop }), isSortable() ? (hAsync("button", { class: {
|
31031
30971
|
[`${CSSNAMESPACE}__order-btn`]: true,
|
31032
30972
|
[`${CSSNAMESPACE}__cell-content`]: true,
|
31033
30973
|
}, onClick: handleColumnSortClick },
|
@@ -31055,6 +30995,7 @@ function cellRender(rowIndex, colIndex) {
|
|
31055
30995
|
const columns = store.config.state.columns;
|
31056
30996
|
const tpl = (_a = columns[colIndex]) === null || _a === void 0 ? void 0 : _a.cellTemplate;
|
31057
30997
|
const model = colDataModel(rowIndex, colIndex);
|
30998
|
+
const tableInstance = getRenderingRef();
|
31058
30999
|
if (!!model.cellModel && columns[colIndex].type === 'date') {
|
31059
31000
|
const d = new Date(model.cellModel);
|
31060
31001
|
if (d instanceof Date && !isNaN(d)) {
|
@@ -31063,7 +31004,28 @@ function cellRender(rowIndex, colIndex) {
|
|
31063
31004
|
: d;
|
31064
31005
|
}
|
31065
31006
|
}
|
31066
|
-
|
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())) : ('');
|
31067
31029
|
}
|
31068
31030
|
const baseCellClasses = (colIndex, toString = false) => {
|
31069
31031
|
const store = fetchStores();
|
@@ -31079,11 +31041,12 @@ const baseCellClasses = (colIndex, toString = false) => {
|
|
31079
31041
|
return classListToStr(classes);
|
31080
31042
|
return classes;
|
31081
31043
|
};
|
31082
|
-
const TableCell
|
31044
|
+
const TableCell = ({ rowIndex, colIndex, nestedContent, }) => {
|
31083
31045
|
const Content = () => nestedContent
|
31084
31046
|
? nestedContent()
|
31085
31047
|
: cellRender(rowIndex, colIndex) || (hAsync("span", { class: "placeholder" }, "\u00A0"));
|
31086
31048
|
let CellType = 'td';
|
31049
|
+
const tableInstance = getRenderingRef();
|
31087
31050
|
const store = fetchStores();
|
31088
31051
|
const column = store.config.state.columns[colIndex];
|
31089
31052
|
let props = mergeCellProperties(rowIndex, colIndex, {
|
@@ -31095,14 +31058,23 @@ const TableCell$1 = ({ rowIndex, colIndex, nestedContent, }) => {
|
|
31095
31058
|
? Object.assign(Object.assign({}, props), { scope: 'rowgroup' }) : Object.assign(Object.assign({}, props), { scope: 'row' });
|
31096
31059
|
CellType = 'th';
|
31097
31060
|
}
|
31098
|
-
const ContentWrap = (props) =>
|
31099
|
-
|
31100
|
-
|
31101
|
-
|
31102
|
-
|
31103
|
-
|
31104
|
-
|
31105
|
-
|
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 =
|
31106
31078
|
e.detail.x) },
|
31107
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 = '') },
|
31108
31080
|
hAsync(ContentWrap, null),
|
@@ -31110,14 +31082,18 @@ const TableCell$1 = ({ rowIndex, colIndex, nestedContent, }) => {
|
|
31110
31082
|
hAsync(Content, null))))) : (hAsync(ContentWrap, null))));
|
31111
31083
|
};
|
31112
31084
|
|
31113
|
-
const
|
31114
|
-
const cell = (hAsync("div", { class: {
|
31085
|
+
const tableCellContent = (props, children, ctx) => {
|
31086
|
+
const cell = (hAsync("div", Object.assign({}, props.wrapperProps, { class: {
|
31115
31087
|
[`${CSSNAMESPACE}__cell-content`]: true,
|
31116
|
-
[`${CSSNAMESPACE}__cell-content--wrap`]: wrap,
|
31117
|
-
} }, children));
|
31118
|
-
return header ? hAsync("th", { scope:
|
31119
|
-
};
|
31120
|
-
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
|
+
};
|
31121
31097
|
let extraProps = {};
|
31122
31098
|
if (!rowModel) {
|
31123
31099
|
const model = rowDataModel(rowIndex);
|
@@ -31127,13 +31103,28 @@ const TableRow = ({ rowRenderer, rowIndex, rowModel, onColumnPinned }, children,
|
|
31127
31103
|
extraProps =
|
31128
31104
|
rowRenderer.rowProperties({ rowModel, rowIndex }) || extraProps;
|
31129
31105
|
}
|
31130
|
-
let
|
31106
|
+
let rowPinned;
|
31131
31107
|
if ((rowRenderer === null || rowRenderer === void 0 ? void 0 : rowRenderer.pinned) && typeof rowRenderer.pinned === 'function') {
|
31132
|
-
|
31108
|
+
rowPinned = rowRenderer.pinned({ rowModel, rowIndex });
|
31133
31109
|
}
|
31134
|
-
const
|
31135
|
-
const props = extraProps ? mergeProperties(baseProps, extraProps) : baseProps;
|
31110
|
+
const props = mergeProperties({ class: headerPinClasses('tr', rowPinned, true) }, extraProps);
|
31136
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
|
+
};
|
31137
31128
|
if (tpl) {
|
31138
31129
|
let toRender = tpl(hAsync, {
|
31139
31130
|
renderedRow: (hAsync("tr", Object.assign({}, props, { key: rowModel.__uuid }), children)),
|
@@ -31145,24 +31136,9 @@ const TableRow = ({ rowRenderer, rowIndex, rowModel, onColumnPinned }, children,
|
|
31145
31136
|
if (node.vtag === 'tr') {
|
31146
31137
|
if (!node.vkey)
|
31147
31138
|
node.vkey = `${rowModel.__uuid}_${i}`;
|
31148
|
-
node.vattrs = mergeProperties({ class: headerPinClasses('tr',
|
31139
|
+
node.vattrs = mergeProperties({ class: headerPinClasses('tr', rowPinned, true) }, node.vattrs);
|
31149
31140
|
if (!!node.vchildren) {
|
31150
|
-
node.vchildren =
|
31151
|
-
if (['td', 'th'].includes(cNode.vtag.toString())) {
|
31152
|
-
cNode.vattrs = mergeProperties({
|
31153
|
-
class: headerPinClasses(cNode.vtag.toString(), pinned, true) + baseCellClasses(i, true),
|
31154
|
-
ref: (th) => {
|
31155
|
-
if ((!!th && pinned === 'top') || pinned === 'bottom')
|
31156
|
-
addVObserver(th, pinned, onColumnPinned);
|
31157
|
-
if (!!th && th.classList.contains('nano-tbl__pin--end'))
|
31158
|
-
addHObserver(th, 'end', onColumnPinned);
|
31159
|
-
if (!!th && th.classList.contains('nano-tbl__pin--start'))
|
31160
|
-
addHObserver(th, 'start', onColumnPinned);
|
31161
|
-
},
|
31162
|
-
}, cNode.vattrs);
|
31163
|
-
}
|
31164
|
-
return cNode;
|
31165
|
-
});
|
31141
|
+
node.vchildren = applyCellClasses(node.vchildren);
|
31166
31142
|
}
|
31167
31143
|
}
|
31168
31144
|
return node;
|
@@ -31170,28 +31146,25 @@ const TableRow = ({ rowRenderer, rowIndex, rowModel, onColumnPinned }, children,
|
|
31170
31146
|
}
|
31171
31147
|
return toRender;
|
31172
31148
|
}
|
31173
|
-
return (hAsync("tr", Object.assign({}, props, { key: rowModel.__uuid }), children));
|
31149
|
+
return (hAsync("tr", Object.assign({}, props, { key: rowModel.__uuid }), applyCellClasses(children)));
|
31174
31150
|
};
|
31175
|
-
const TableHeadFootRow = ({ rowRenderer
|
31151
|
+
const TableHeadFootRow = ({ rowRenderer }, // onRowPinned, onColPinned
|
31152
|
+
children, utils) => {
|
31176
31153
|
let extraProps = {};
|
31177
31154
|
if (rowRenderer.rowProperties) {
|
31178
31155
|
extraProps = rowRenderer.rowProperties() || {};
|
31179
31156
|
}
|
31180
|
-
const
|
31181
|
-
|
31182
|
-
[`${CSSNAMESPACE}__cell-content`]: true,
|
31183
|
-
[`${CSSNAMESPACE}__cell-content--wrap`]: wrap,
|
31184
|
-
} }, children));
|
31185
|
-
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');
|
31186
31159
|
};
|
31187
31160
|
const pinned = rowRenderer.pinned || null;
|
31188
|
-
const baseProps = { class: headerPinClasses('tr',
|
31161
|
+
const baseProps = { class: headerPinClasses('tr', pinned) };
|
31189
31162
|
const props = extraProps ? mergeProperties(baseProps, extraProps) : baseProps;
|
31190
31163
|
const tpl = rowRenderer === null || rowRenderer === void 0 ? void 0 : rowRenderer.template;
|
31191
31164
|
if (tpl) {
|
31192
31165
|
let toRender = tpl(hAsync, {
|
31193
31166
|
renderedRow: hAsync("tr", Object.assign({}, props), children),
|
31194
|
-
},
|
31167
|
+
}, TableHeadFootCell);
|
31195
31168
|
if (Array.isArray(toRender)) {
|
31196
31169
|
toRender = utils.map(toRender, (node) => {
|
31197
31170
|
if (node.vtag === 'tr') {
|
@@ -31201,14 +31174,6 @@ const TableHeadFootRow = ({ rowRenderer, onColumnPinned }, children, utils) => {
|
|
31201
31174
|
if (['td', 'th'].includes(cNode.vtag.toString())) {
|
31202
31175
|
cNode.vattrs = mergeProperties({
|
31203
31176
|
class: headerPinClasses(cNode.vtag.toString(), pinned, true),
|
31204
|
-
ref: (th) => {
|
31205
|
-
if ((!!th && pinned === 'top') || pinned === 'bottom')
|
31206
|
-
addVObserver(th, pinned, onColumnPinned);
|
31207
|
-
if (!!th && th.classList.contains('nano-tbl__pin--end'))
|
31208
|
-
addHObserver(th, 'end', onColumnPinned);
|
31209
|
-
if (!!th && th.classList.contains('nano-tbl__pin--start'))
|
31210
|
-
addHObserver(th, 'start', onColumnPinned);
|
31211
|
-
},
|
31212
31177
|
}, cNode.vattrs);
|
31213
31178
|
}
|
31214
31179
|
return cNode;
|
@@ -31223,8 +31188,399 @@ const TableHeadFootRow = ({ rowRenderer, onColumnPinned }, children, utils) => {
|
|
31223
31188
|
return hAsync("tr", Object.assign({}, props), children);
|
31224
31189
|
};
|
31225
31190
|
|
31226
|
-
|
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
|
+
}
|
31227
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)}";
|
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
|
+
}
|
31228
31584
|
let id = 0;
|
31229
31585
|
/**
|
31230
31586
|
* A performant, accessible and semantic (uses real html `<table />`, `<tr />` etc) table and data-grid solution.
|
@@ -31275,6 +31631,7 @@ class Table {
|
|
31275
31631
|
const sortEvent = this.nanoTblBeforeSort.emit({ column: column, order });
|
31276
31632
|
if (sortEvent.defaultPrevented)
|
31277
31633
|
return;
|
31634
|
+
perMark('sort');
|
31278
31635
|
this.currentSort = order + ':' + column;
|
31279
31636
|
// doesn't make sense to leave user in place for a sort
|
31280
31637
|
this.scrollToTop(element);
|
@@ -31318,11 +31675,24 @@ class Table {
|
|
31318
31675
|
* stop loop - it's on the current active block.
|
31319
31676
|
*/
|
31320
31677
|
this.scrollHandler = () => {
|
31678
|
+
var _a;
|
31679
|
+
perMark('scrollHandler');
|
31321
31680
|
// don't listen if this table isn't in the viewport
|
31322
|
-
if (!this.store.general.state.isActive)
|
31681
|
+
if (!((_a = this.store) === null || _a === void 0 ? void 0 : _a.general.state.isActive) || !this.rows)
|
31323
31682
|
return;
|
31683
|
+
if (this.primaryBlockIndex === undefined)
|
31684
|
+
this.primaryBlockIndex = 0;
|
31324
31685
|
readTask(() => {
|
31325
|
-
this.cacheScrollPosition =
|
31686
|
+
this.cacheScrollPosition =
|
31687
|
+
typeof this.scrollParent.scrollTop !== 'undefined'
|
31688
|
+
? this.scrollParent.scrollTop
|
31689
|
+
: window.scrollY;
|
31690
|
+
if (this.tablePinnedService) {
|
31691
|
+
this.tablePinnedService.onScroll({
|
31692
|
+
x: this.scrollParent.scrollLeft || window.scrollX,
|
31693
|
+
y: this.cacheScrollPosition,
|
31694
|
+
});
|
31695
|
+
}
|
31326
31696
|
let cumulativeHeight = this.host.offsetTop;
|
31327
31697
|
let blockIndex = 0;
|
31328
31698
|
const blockLen = this.blocks.length;
|
@@ -31333,21 +31703,18 @@ class Table {
|
|
31333
31703
|
const potentialBlocks = [
|
31334
31704
|
blockIndex,
|
31335
31705
|
blockIndex + 1,
|
31336
|
-
|
31706
|
+
this.cacheScrollPosition,
|
31707
|
+
cumulativeHeight,
|
31708
|
+
// Math.max(0, blockIndex - 1),
|
31337
31709
|
];
|
31338
31710
|
if (potentialBlocks.toString() !== this.activeBlocks.toString()) {
|
31339
31711
|
this.activeBlocks = potentialBlocks;
|
31340
|
-
this.setBlockHeight();
|
31341
31712
|
}
|
31342
31713
|
this.primaryBlockIndex = blockIndex;
|
31343
31714
|
}
|
31344
31715
|
blockIndex++;
|
31345
31716
|
}
|
31346
|
-
|
31347
|
-
};
|
31348
|
-
this.handleColumnPinned = (positions) => {
|
31349
|
-
Object.entries(positions).forEach(([key, applied]) => {
|
31350
|
-
this.tableEle.classList.toggle(`${CSSNAMESPACE}__pinned--${key}`, applied);
|
31717
|
+
perMark('scrollHandler', true);
|
31351
31718
|
});
|
31352
31719
|
};
|
31353
31720
|
this.handleResizeChange = (e) => {
|
@@ -31358,12 +31725,12 @@ class Table {
|
|
31358
31725
|
classes = [...e.target.className.split(' '), ...classes];
|
31359
31726
|
this.tableWrapperEle.classList.add(...classes.filter((cl) => !!cl));
|
31360
31727
|
};
|
31361
|
-
this.
|
31728
|
+
this.customRenderer = undefined;
|
31362
31729
|
this.type = 'table';
|
31363
31730
|
this.caption = undefined;
|
31364
31731
|
this.showCaption = false;
|
31365
31732
|
this.loading = undefined;
|
31366
|
-
this.internalLoading =
|
31733
|
+
this.internalLoading = true;
|
31367
31734
|
this.placeholderSize = 5;
|
31368
31735
|
this.rows = undefined;
|
31369
31736
|
this.columns = [];
|
@@ -31371,14 +31738,14 @@ class Table {
|
|
31371
31738
|
this.rowRender = undefined;
|
31372
31739
|
this.footRender = { pinned: 'bottom' };
|
31373
31740
|
this.showFooter = false;
|
31374
|
-
this.perBlock =
|
31741
|
+
this.perBlock = 50;
|
31375
31742
|
this.searchTerm = undefined;
|
31376
31743
|
this.customFilterFn = undefined;
|
31377
31744
|
this.customSortFn = undefined;
|
31378
31745
|
this.defaultSort = true;
|
31379
31746
|
this.virtualTotalItems = 0;
|
31380
31747
|
this.blocks = [];
|
31381
|
-
this.activeBlocks = [0, 1
|
31748
|
+
this.activeBlocks = [0, 1];
|
31382
31749
|
this.debounceSetLoading = debounce$2(this.debounceSetLoading.bind(this), 50);
|
31383
31750
|
}
|
31384
31751
|
get _loading() {
|
@@ -31407,6 +31774,8 @@ class Table {
|
|
31407
31774
|
if (!this.isReady)
|
31408
31775
|
requestAnimationFrame(() => this.setInitialBlockDimension());
|
31409
31776
|
this._loading = false;
|
31777
|
+
if (this.tablePinnedService)
|
31778
|
+
this.tablePinnedService.assessRows();
|
31410
31779
|
});
|
31411
31780
|
}
|
31412
31781
|
async handleColsChange() {
|
@@ -31424,6 +31793,10 @@ class Table {
|
|
31424
31793
|
virtualTotalItemsChangeHandler() {
|
31425
31794
|
this.setBlocks();
|
31426
31795
|
}
|
31796
|
+
/** @readonly - shows the currently applied filters */
|
31797
|
+
get appliedFilters() {
|
31798
|
+
return this.filters;
|
31799
|
+
}
|
31427
31800
|
/** Remove any column sorts currently applied
|
31428
31801
|
* @returns a promise which resolves when complete */
|
31429
31802
|
async resetSorting() {
|
@@ -31466,8 +31839,6 @@ class Table {
|
|
31466
31839
|
}
|
31467
31840
|
/** Updates a row model at a given index
|
31468
31841
|
* @param row - the row to update.
|
31469
|
-
* *Note* - this should come from the `col.cellTemplate` or `row.rowRender.template` `rowModel` property
|
31470
|
-
* - rows are augmented with certain properties to aid with efficient rendering
|
31471
31842
|
* @param rowIndex - the row index to insert this row
|
31472
31843
|
*/
|
31473
31844
|
async updateRow(row, rowIndex) {
|
@@ -31498,7 +31869,9 @@ class Table {
|
|
31498
31869
|
? document
|
31499
31870
|
: this._scrollParent).removeEventListener('scroll', this.scrollHandler);
|
31500
31871
|
}
|
31501
|
-
(ele === document.documentElement ? document : ele).addEventListener('scroll', this.scrollHandler
|
31872
|
+
(ele === document.documentElement ? document : ele).addEventListener('scroll', this.scrollHandler
|
31873
|
+
// {passive: true}
|
31874
|
+
);
|
31502
31875
|
this._scrollParent = ele;
|
31503
31876
|
}
|
31504
31877
|
// used to fire `nanoTblBlockRendered` on block render change
|
@@ -31552,17 +31925,20 @@ class Table {
|
|
31552
31925
|
return Object.assign(Object.assign({}, c), { order: null });
|
31553
31926
|
});
|
31554
31927
|
this.nanoTblAfterSort.emit({ column: column, order });
|
31928
|
+
perMark('sort', true);
|
31555
31929
|
}
|
31556
31930
|
async searchStart() {
|
31557
31931
|
this._loading = true;
|
31558
31932
|
const sortEvent = this.nanoTblBeforeSearch.emit({ term: this.searchTerm });
|
31559
31933
|
if (sortEvent.defaultPrevented)
|
31560
31934
|
return;
|
31935
|
+
perMark('search');
|
31561
31936
|
// doesn't make sense to leave user in place for a search
|
31562
31937
|
this.scrollToTop();
|
31563
31938
|
try {
|
31564
31939
|
await storeSearch(this.host, this.searchTerm);
|
31565
31940
|
this.nanoTblAfterSearch.emit({ term: this.searchTerm });
|
31941
|
+
perMark('search', true);
|
31566
31942
|
}
|
31567
31943
|
catch (e) {
|
31568
31944
|
console.warn('search failed', e);
|
@@ -31589,6 +31965,7 @@ class Table {
|
|
31589
31965
|
const sortEvent = this.nanoTblBeforeFilter.emit({ filters: this.filters });
|
31590
31966
|
if (sortEvent.defaultPrevented)
|
31591
31967
|
return;
|
31968
|
+
perMark('filter');
|
31592
31969
|
this.currentFilters = JSON.stringify(this.filters);
|
31593
31970
|
// doesn't make sense to leave user in place for a search
|
31594
31971
|
this.scrollToTop();
|
@@ -31597,10 +31974,11 @@ class Table {
|
|
31597
31974
|
const res = await this.customFilterFn(this.filters);
|
31598
31975
|
// if the response is 'true', the custom filter did it's thing
|
31599
31976
|
// handover to finish and stop loading state.
|
31600
|
-
// if response is
|
31977
|
+
// if response is falsy, carry on to do a FE filter
|
31601
31978
|
if (res === true) {
|
31602
31979
|
this.filterComplete();
|
31603
31980
|
this._loading = false;
|
31981
|
+
return;
|
31604
31982
|
}
|
31605
31983
|
}
|
31606
31984
|
catch (e) {
|
@@ -31609,8 +31987,8 @@ class Table {
|
|
31609
31987
|
console.warn('custom filter failed', e);
|
31610
31988
|
this.currentFilters = '';
|
31611
31989
|
this._loading = false;
|
31990
|
+
return;
|
31612
31991
|
}
|
31613
|
-
return;
|
31614
31992
|
}
|
31615
31993
|
try {
|
31616
31994
|
await storeFilter(this.host, this.filters);
|
@@ -31626,13 +32004,22 @@ class Table {
|
|
31626
32004
|
filterComplete() {
|
31627
32005
|
this.columns = this.columns.map((c) => {
|
31628
32006
|
const cFilter = this.filters.find((f) => f.prop === c.prop);
|
31629
|
-
if
|
32007
|
+
// if we found a filter AND
|
32008
|
+
// it isn't true / false and has a length OR
|
32009
|
+
// it is true or false
|
32010
|
+
if (cFilter &&
|
32011
|
+
((typeof cFilter.filter !== 'boolean' && cFilter.filter.length) ||
|
32012
|
+
typeof cFilter.filter === 'boolean'))
|
31630
32013
|
c.filter = cFilter.filter;
|
31631
|
-
|
32014
|
+
// if a filter value is not set OR
|
32015
|
+
// it isn't true / false and has no length
|
32016
|
+
else if ((c.filter !== null && c.filter !== undefined) ||
|
32017
|
+
(!!c.filter && typeof c.filter !== 'boolean' && !c.filter.length))
|
31632
32018
|
c.filter = undefined;
|
31633
32019
|
return c;
|
31634
32020
|
});
|
31635
32021
|
this.nanoTblAfterFilter.emit({ filters: this.filters });
|
32022
|
+
perMark('filter', true);
|
31636
32023
|
}
|
31637
32024
|
/** Scrolls to the top immediately - used whilst sorting / filtering */
|
31638
32025
|
scrollToTop(element) {
|
@@ -31668,6 +32055,7 @@ class Table {
|
|
31668
32055
|
var _a;
|
31669
32056
|
if (!((_a = this.blockElements) === null || _a === void 0 ? void 0 : _a.length))
|
31670
32057
|
return;
|
32058
|
+
perMark('blockDims');
|
31671
32059
|
const testForDimensions = async () => {
|
31672
32060
|
await this.setMeasureElement();
|
31673
32061
|
if (this.unitHeight)
|
@@ -31691,6 +32079,8 @@ class Table {
|
|
31691
32079
|
});
|
31692
32080
|
// we're all finished.
|
31693
32081
|
dimensionsReady.then(() => {
|
32082
|
+
perMark('blockDims', true);
|
32083
|
+
perMark('init', true);
|
31694
32084
|
requestAnimationFrame(() => (this.isReady = true));
|
31695
32085
|
});
|
31696
32086
|
}
|
@@ -31713,6 +32103,8 @@ class Table {
|
|
31713
32103
|
if (!!col) {
|
31714
32104
|
await this.sortStart(col.order, col.prop);
|
31715
32105
|
}
|
32106
|
+
if (this.tablePinnedService)
|
32107
|
+
this.tablePinnedService.assessCols();
|
31716
32108
|
}
|
31717
32109
|
/** Split up all incoming rows into 'blocks' split amongst tbody elements.
|
31718
32110
|
* These can then be hidden / shown to improve performance.
|
@@ -31723,6 +32115,7 @@ class Table {
|
|
31723
32115
|
this.blocks = [];
|
31724
32116
|
return;
|
31725
32117
|
}
|
32118
|
+
perMark('setBlocks');
|
31726
32119
|
// this.ignoreIO = true;
|
31727
32120
|
let i = 1;
|
31728
32121
|
const l = this.virtualTotalItems > dRows.length
|
@@ -31745,6 +32138,7 @@ class Table {
|
|
31745
32138
|
blocks.push({ rows, __uuid: cyrb53(rows.map((b) => b.__uuid).join()) });
|
31746
32139
|
}
|
31747
32140
|
this.blocks = blocks;
|
32141
|
+
perMark('setBlocks', true);
|
31748
32142
|
}
|
31749
32143
|
/**
|
31750
32144
|
* Returns a block render height.
|
@@ -31757,14 +32151,14 @@ class Table {
|
|
31757
32151
|
getBlockHeight(blockIndex) {
|
31758
32152
|
if (this.blockHeights.length) {
|
31759
32153
|
const cachedBlockHeight = this.blockHeights.find((bh) => bh.blockIndex === blockIndex);
|
31760
|
-
if (cachedBlockHeight)
|
32154
|
+
if (cachedBlockHeight && cachedBlockHeight.height)
|
31761
32155
|
return cachedBlockHeight.height;
|
31762
32156
|
}
|
31763
32157
|
const blockLength = this.blocks[blockIndex].rows.length;
|
31764
32158
|
if (blockLength === this.perBlock && this.measureHeight) {
|
31765
32159
|
return this.measureHeight;
|
31766
32160
|
}
|
31767
|
-
return this.unitHeight ? this.unitHeight * blockLength :
|
32161
|
+
return this.unitHeight ? this.unitHeight * blockLength : 100;
|
31768
32162
|
}
|
31769
32163
|
/** cache the height for all active blocks for later renders */
|
31770
32164
|
setBlockHeight() {
|
@@ -31813,10 +32207,13 @@ class Table {
|
|
31813
32207
|
}
|
31814
32208
|
// Component lifecycle
|
31815
32209
|
async componentWillLoad() {
|
32210
|
+
perMark('init');
|
31816
32211
|
// setup stores
|
31817
32212
|
this.store = await generateStore(this.host, this.columns, this.scrollParent, this.isReady);
|
31818
32213
|
await this.handleRowsChange();
|
31819
|
-
this.store.general.onChange('isActive',
|
32214
|
+
this.store.general.onChange('isActive', () => {
|
32215
|
+
this.scrollHandler();
|
32216
|
+
});
|
31820
32217
|
this.store.data.onChange('rows', () => this.setBlocks());
|
31821
32218
|
// setup dom and attach listeners
|
31822
32219
|
this.processSlots();
|
@@ -31830,6 +32227,9 @@ class Table {
|
|
31830
32227
|
}
|
31831
32228
|
componentDidLoad() {
|
31832
32229
|
this.setInitialBlockDimension();
|
32230
|
+
if (!this.tablePinnedService) {
|
32231
|
+
this.tablePinnedService = new TablePinService(this.tableEle, this.scrollParent);
|
32232
|
+
}
|
31833
32233
|
}
|
31834
32234
|
componentShouldUpdate(_newVal, _oldVal, stateName) {
|
31835
32235
|
// stop double rendering - we use the store for rendering internally
|
@@ -31839,9 +32239,11 @@ class Table {
|
|
31839
32239
|
return false;
|
31840
32240
|
}
|
31841
32241
|
componentWillRender() {
|
32242
|
+
perMark('render');
|
31842
32243
|
}
|
31843
32244
|
componentDidRender() {
|
31844
|
-
this.setMeasureElement();
|
32245
|
+
this.setMeasureElement().then(() => this.setBlockHeight());
|
32246
|
+
perMark('render', true);
|
31845
32247
|
}
|
31846
32248
|
disconnectedCallback() {
|
31847
32249
|
if (!this.activeWatcherIo)
|
@@ -31854,28 +32256,31 @@ class Table {
|
|
31854
32256
|
}
|
31855
32257
|
render() {
|
31856
32258
|
this.blockElements = [];
|
31857
|
-
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
|
32259
|
+
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: () => {
|
32260
|
+
if (this.tablePinnedService)
|
32261
|
+
this.tablePinnedService.onResize();
|
32262
|
+
} }), 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: {
|
31858
32263
|
[`${CSSNAMESPACE}__progress-bar`]: true,
|
31859
32264
|
[`${CSSNAMESPACE}__progress-bar--show`]: this._loading,
|
31860
|
-
} }), 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: {
|
32265
|
+
} }), 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: {
|
31861
32266
|
[`${CSSNAMESPACE}__caption`]: true,
|
31862
32267
|
[`${CSSNAMESPACE}__caption--hide`]: !this.showCaption,
|
31863
|
-
}, id: 'table-caption-' + this.renderId }, hAsync("slot", { name: "caption" }, this.caption)), hAsync("thead", null, hAsync(TableHeadFootRow, { rowRenderer: this.headRender
|
31864
|
-
hAsync(TableColHead, { column: colModel, headRenderer: this.headRender, onColumnSortClick: this.sortStart,
|
32268
|
+
}, 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) => [
|
32269
|
+
hAsync(TableColHead, { column: colModel, headRenderer: this.headRender, onColumnSortClick: this.sortStart, defaults: {
|
31865
32270
|
sortable: this.defaultSort,
|
31866
32271
|
} }),
|
31867
|
-
]))), 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
|
32272
|
+
]))), 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) => {
|
31868
32273
|
this.blockElements.push(tb);
|
31869
32274
|
}, class: {
|
31870
32275
|
[`${CSSNAMESPACE}__inactive`]: !this.activeBlocks.includes(blockIndex),
|
31871
32276
|
[`${CSSNAMESPACE}__active`]: this.activeBlocks.includes(blockIndex),
|
31872
32277
|
} }, this.activeBlocks.includes(blockIndex) ? (block.rows.map((row, i) => {
|
31873
32278
|
const rowIndex = blockIndex > 0 ? blockIndex * this.perBlock + i : i;
|
31874
|
-
return (hAsync(TableRow, { rowRenderer: this.rowRender, rowModel: row, rowIndex: rowIndex }, this.store.config.state.columns.map((_colModel, colIndex) => (hAsync(TableCell
|
31875
|
-
})) : (hAsync("tr",
|
32279
|
+
return (hAsync(TableRow, { rowRenderer: this.rowRender, rowModel: row, rowIndex: rowIndex }, this.store.config.state.columns.map((_colModel, colIndex) => (hAsync(TableCell, { rowIndex: rowIndex, colIndex: colIndex })))));
|
32280
|
+
})) : (hAsync("tr", { class: `${CSSNAMESPACE}__tr--placeholder` }, hAsync("td", { colSpan: this.store.config.state.columns.length, style: {
|
31876
32281
|
height: this.getBlockHeight(blockIndex) + 'px',
|
31877
|
-
} })))))), this.showFooter && (hAsync("tfoot", null, hAsync(TableHeadFootRow, { rowRenderer: this.footRender
|
31878
|
-
hAsync(TableColHead, { column: colModel, headRenderer: this.footRender,
|
32282
|
+
} })))))), this.showFooter && (hAsync("tfoot", null, hAsync(TableHeadFootRow, { rowRenderer: this.footRender }, this.store.config.state.columns.map((colModel) => [
|
32283
|
+
hAsync(TableColHead, { column: colModel, headRenderer: this.footRender, onColumnSortClick: this.sortStart, defaults: {
|
31879
32284
|
sortable: this.defaultSort,
|
31880
32285
|
} }),
|
31881
32286
|
]))))), !!this.blocks.length && (hAsync("nano-spinner", { type: "circle", class: {
|
@@ -31895,7 +32300,7 @@ class Table {
|
|
31895
32300
|
"$flags$": 4,
|
31896
32301
|
"$tagName$": "nano-table",
|
31897
32302
|
"$members$": {
|
31898
|
-
"
|
32303
|
+
"customRenderer": [16],
|
31899
32304
|
"type": [1],
|
31900
32305
|
"caption": [1],
|
31901
32306
|
"showCaption": [4, "show-caption"],
|
@@ -31914,6 +32319,7 @@ class Table {
|
|
31914
32319
|
"customSortFn": [16],
|
31915
32320
|
"defaultSort": [4, "default-sort"],
|
31916
32321
|
"virtualTotalItems": [2, "virtual-total-items"],
|
32322
|
+
"appliedFilters": [2064],
|
31917
32323
|
"internalLoading": [32],
|
31918
32324
|
"blocks": [32],
|
31919
32325
|
"activeBlocks": [32],
|