@nanoporetech-digital/components 3.0.0 → 3.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +31 -0
- package/dist/cjs/index-41582c2a.js +8 -4
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/nano-checkbox-group.cjs.entry.js +12 -3
- 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-details.cjs.entry.js +2 -2
- package/dist/cjs/nano-details.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-field-validator.cjs.entry.js +2 -0
- package/dist/cjs/nano-field-validator.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js +3 -3
- package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-global-nav.cjs.entry.js +18 -20
- package/dist/cjs/nano-global-nav.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-input.cjs.entry.js +1 -1
- package/dist/cjs/nano-input.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-menu-drawer.cjs.entry.js +1 -1
- package/dist/cjs/nano-menu-drawer.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-progress-bar.cjs.entry.js +33 -0
- package/dist/cjs/nano-progress-bar.cjs.entry.js.map +1 -0
- package/dist/cjs/nano-resize-observe_2.cjs.entry.js +2 -2
- package/dist/cjs/nano-resize-observe_2.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-spinner.cjs.entry.js +1 -1
- package/dist/cjs/nano-spinner.cjs.entry.js.map +1 -1
- package/dist/cjs/nano-tab-group.cjs.entry.js +1 -1
- package/dist/cjs/nano-tab.cjs.entry.js +1 -1
- package/dist/cjs/nano-tab.cjs.entry.js.map +1 -1
- package/dist/cjs/{nano-table-8a898621.js → nano-table-844394ad.js} +146 -58
- package/dist/cjs/nano-table-844394ad.js.map +1 -0
- package/dist/cjs/nano-table.cjs.entry.js +2 -1
- package/dist/cjs/nano-table.cjs.entry.js.map +1 -1
- package/dist/cjs/{table.worker-b0b0044a.js → table.worker-1bc19978.js} +3 -2
- package/dist/cjs/table.worker-1bc19978.js.map +1 -0
- package/dist/cjs/{transitions-d295a09e.js → transitions-5cd8f697.js} +10 -8
- package/dist/cjs/transitions-5cd8f697.js.map +1 -0
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/checkbox/checkbox-group.js +12 -3
- package/dist/collection/components/checkbox/checkbox-group.js.map +1 -1
- package/dist/collection/components/details/details.css +1 -0
- package/dist/collection/components/field-validator/field-validator.js +2 -0
- package/dist/collection/components/field-validator/field-validator.js.map +1 -1
- package/dist/collection/components/global-nav/assets/ont-logo.svg +89 -47
- package/dist/collection/components/global-nav/global-nav-interface.js.map +1 -1
- package/dist/collection/components/global-nav/global-nav.js +19 -21
- package/dist/collection/components/global-nav/global-nav.js.map +1 -1
- package/dist/collection/components/global-nav/{global-nav.css → style/global-nav.css} +465 -405
- package/dist/collection/components/input/input.css +2 -0
- package/dist/collection/components/menu-drawer/menu-drawer.css +1 -0
- package/dist/collection/components/nav-item/nav-item.css +6 -6
- package/dist/collection/components/progress-bar/progress-bar.css +84 -0
- package/dist/collection/components/progress-bar/progress-bar.js +106 -0
- package/dist/collection/components/progress-bar/progress-bar.js.map +1 -0
- package/dist/collection/components/select/select.css +4 -0
- package/dist/collection/components/skeleton/skeleton.css +8 -5
- package/dist/collection/components/skeleton/skeleton.js +1 -1
- package/dist/collection/components/skeleton/skeleton.js.map +1 -1
- package/dist/collection/components/spinner/spinner.css +5 -9
- package/dist/collection/components/table/table.children.js +43 -17
- package/dist/collection/components/table/table.children.js.map +1 -1
- package/dist/collection/components/table/table.css +97 -27
- package/dist/collection/components/table/table.js +143 -33
- package/dist/collection/components/table/table.js.map +1 -1
- package/dist/collection/components/table/table.service.js +1 -10
- package/dist/collection/components/table/table.service.js.map +1 -1
- package/dist/collection/components/table/table.store.js +11 -11
- package/dist/collection/components/table/table.store.js.map +1 -1
- package/dist/collection/components/tabs/tab.css +1 -0
- package/dist/collection/utils/transitions.js +9 -7
- package/dist/collection/utils/transitions.js.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +1 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/input.js +1 -1
- package/dist/components/input.js.map +1 -1
- package/dist/components/nano-checkbox-group.js +12 -3
- package/dist/components/nano-checkbox-group.js.map +1 -1
- package/dist/components/nano-details.js +1 -1
- package/dist/components/nano-details.js.map +1 -1
- package/dist/components/nano-field-validator.js +2 -0
- package/dist/components/nano-field-validator.js.map +1 -1
- package/dist/components/nano-global-nav.js +17 -19
- package/dist/components/nano-global-nav.js.map +1 -1
- package/dist/components/nano-menu-drawer.js +1 -1
- package/dist/components/nano-menu-drawer.js.map +1 -1
- package/dist/components/nano-progress-bar.d.ts +11 -0
- package/dist/components/nano-progress-bar.js +11 -0
- package/dist/components/nano-progress-bar.js.map +1 -0
- package/dist/components/nano-tab.js +1 -1
- package/dist/components/nano-tab.js.map +1 -1
- package/dist/components/nano-table.js +167 -58
- package/dist/components/nano-table.js.map +1 -1
- package/dist/components/nav-item.js +1 -1
- package/dist/components/nav-item.js.map +1 -1
- package/dist/components/progress-bar.js +48 -0
- package/dist/components/progress-bar.js.map +1 -0
- package/dist/components/select.js +1 -1
- package/dist/components/select.js.map +1 -1
- package/dist/components/skeleton.js +2 -2
- package/dist/components/skeleton.js.map +1 -1
- package/dist/components/spinner.js +1 -1
- package/dist/components/spinner.js.map +1 -1
- package/dist/components/transitions.js +9 -7
- package/dist/components/transitions.js.map +1 -1
- package/dist/custom-elements/index.d.ts +6 -0
- package/dist/custom-elements/index.js +219 -96
- package/dist/custom-elements/index.js.map +1 -1
- package/dist/esm/index-3c280603.js +8 -4
- package/dist/esm/loader.js +1 -1
- package/dist/esm/nano-checkbox-group.entry.js +12 -3
- package/dist/esm/nano-checkbox-group.entry.js.map +1 -1
- package/dist/esm/nano-components.js +1 -1
- package/dist/esm/nano-details.entry.js +2 -2
- package/dist/esm/nano-details.entry.js.map +1 -1
- package/dist/esm/nano-field-validator.entry.js +2 -0
- package/dist/esm/nano-field-validator.entry.js.map +1 -1
- package/dist/esm/nano-global-nav-user-profile_3.entry.js +3 -3
- package/dist/esm/nano-global-nav-user-profile_3.entry.js.map +1 -1
- package/dist/esm/nano-global-nav.entry.js +18 -20
- package/dist/esm/nano-global-nav.entry.js.map +1 -1
- package/dist/esm/nano-input.entry.js +1 -1
- package/dist/esm/nano-input.entry.js.map +1 -1
- package/dist/esm/nano-menu-drawer.entry.js +1 -1
- package/dist/esm/nano-menu-drawer.entry.js.map +1 -1
- package/dist/esm/nano-progress-bar.entry.js +29 -0
- package/dist/esm/nano-progress-bar.entry.js.map +1 -0
- package/dist/esm/nano-resize-observe_2.entry.js +2 -2
- package/dist/esm/nano-resize-observe_2.entry.js.map +1 -1
- package/dist/esm/nano-spinner.entry.js +1 -1
- package/dist/esm/nano-spinner.entry.js.map +1 -1
- package/dist/esm/nano-tab-group.entry.js +1 -1
- package/dist/esm/nano-tab.entry.js +1 -1
- package/dist/esm/nano-tab.entry.js.map +1 -1
- package/dist/esm/{nano-table-efdf3dba.js → nano-table-19d19d72.js} +146 -58
- package/dist/esm/nano-table-19d19d72.js.map +1 -0
- package/dist/esm/nano-table.entry.js +2 -1
- package/dist/esm/nano-table.entry.js.map +1 -1
- package/dist/esm/{table.worker-10ba1126.js → table.worker-c82cecdf.js} +3 -2
- package/dist/esm/table.worker-c82cecdf.js.map +1 -0
- package/dist/esm/{transitions-d75d242e.js → transitions-71cca3ed.js} +10 -8
- package/dist/esm/transitions-71cca3ed.js.map +1 -0
- package/dist/nano-components/assets/ont-logo.svg +89 -47
- 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-02df1f62.entry.js +5 -0
- package/dist/nano-components/{p-9f8b091a.entry.js.map → p-02df1f62.entry.js.map} +1 -1
- package/dist/nano-components/p-167b9165.js +5 -0
- package/dist/nano-components/p-167b9165.js.map +1 -0
- package/dist/nano-components/p-1ae8c03e.entry.js +5 -0
- package/dist/nano-components/p-1ae8c03e.entry.js.map +1 -0
- package/dist/nano-components/p-28b43ee9.entry.js +5 -0
- package/dist/nano-components/{p-49a831a3.entry.js.map → p-28b43ee9.entry.js.map} +1 -1
- package/dist/nano-components/{p-8ef2363b.entry.js → p-6cd59e58.entry.js} +2 -2
- package/dist/nano-components/{p-8ef2363b.entry.js.map → p-6cd59e58.entry.js.map} +0 -0
- package/dist/nano-components/{p-687350a5.entry.js → p-701e8ebf.entry.js} +2 -2
- package/dist/nano-components/p-701e8ebf.entry.js.map +1 -0
- package/dist/nano-components/p-7ade1695.js +5 -0
- package/dist/nano-components/{p-8a6834ff.entry.js.map → p-7ade1695.js.map} +0 -0
- package/dist/nano-components/p-8a52a411.entry.js +5 -0
- package/dist/nano-components/{p-68b18b99.entry.js.map → p-8a52a411.entry.js.map} +1 -1
- package/dist/nano-components/p-a2d0d7b9.entry.js.map +1 -1
- package/dist/nano-components/p-b4a045a2.entry.js +5 -0
- package/dist/nano-components/{p-b7b06e04.js.map → p-b4a045a2.entry.js.map} +0 -0
- package/dist/nano-components/p-b7901427.entry.js +5 -0
- package/dist/nano-components/p-b7901427.entry.js.map +1 -0
- package/dist/nano-components/p-b83a8320.js +5 -0
- package/dist/nano-components/p-b83a8320.js.map +1 -0
- package/dist/nano-components/p-d8e8d7e3.entry.js +5 -0
- package/dist/nano-components/p-d8e8d7e3.entry.js.map +1 -0
- package/dist/nano-components/p-efa8c520.entry.js +5 -0
- package/dist/nano-components/{p-47bd0f5d.entry.js.map → p-efa8c520.entry.js.map} +1 -1
- package/dist/nano-components/p-f95a263c.entry.js +5 -0
- package/dist/nano-components/p-f95a263c.entry.js.map +1 -0
- package/dist/nano-components/p-fa2a6733.entry.js +5 -0
- package/dist/nano-components/p-fa2a6733.entry.js.map +1 -0
- package/dist/themes/london-calling.css.map +1 -1
- package/dist/themes/nanopore.css.map +1 -1
- package/dist/types/components/global-nav/global-nav-interface.d.ts +43 -0
- package/dist/types/components/global-nav/global-nav.d.ts +1 -1
- package/dist/types/components/progress-bar/progress-bar.d.ts +19 -0
- package/dist/types/components/table/table.children.d.ts +2 -1
- package/dist/types/components/table/table.d.ts +25 -7
- package/dist/types/components/table/table.service.d.ts +1 -7
- package/dist/types/components/table/table.store.d.ts +4 -2
- package/dist/types/components.d.ts +60 -5
- package/docs-json.json +274 -49
- package/docs-vscode.json +31 -2
- package/package.json +3 -3
- package/dist/cjs/nano-table-8a898621.js.map +0 -1
- package/dist/cjs/table.worker-b0b0044a.js.map +0 -1
- package/dist/cjs/transitions-d295a09e.js.map +0 -1
- package/dist/esm/nano-table-efdf3dba.js.map +0 -1
- package/dist/esm/table.worker-10ba1126.js.map +0 -1
- package/dist/esm/transitions-d75d242e.js.map +0 -1
- package/dist/nano-components/p-03402e69.entry.js +0 -5
- package/dist/nano-components/p-03402e69.entry.js.map +0 -1
- package/dist/nano-components/p-2382d5e9.entry.js +0 -5
- package/dist/nano-components/p-2382d5e9.entry.js.map +0 -1
- package/dist/nano-components/p-47bd0f5d.entry.js +0 -5
- package/dist/nano-components/p-49a831a3.entry.js +0 -5
- package/dist/nano-components/p-4c6ef60b.js +0 -5
- package/dist/nano-components/p-4c6ef60b.js.map +0 -1
- package/dist/nano-components/p-61bfb8b9.entry.js +0 -5
- package/dist/nano-components/p-61bfb8b9.entry.js.map +0 -1
- package/dist/nano-components/p-687350a5.entry.js.map +0 -1
- package/dist/nano-components/p-68b18b99.entry.js +0 -5
- package/dist/nano-components/p-82295d91.js +0 -5
- package/dist/nano-components/p-82295d91.js.map +0 -1
- package/dist/nano-components/p-8a6834ff.entry.js +0 -5
- package/dist/nano-components/p-9f2524d4.entry.js +0 -5
- package/dist/nano-components/p-9f2524d4.entry.js.map +0 -1
- package/dist/nano-components/p-9f8b091a.entry.js +0 -5
- package/dist/nano-components/p-b7b06e04.js +0 -5
@@ -1 +1 @@
|
|
1
|
-
{"file":"nano-spinner.entry.js","mappings":";;;;;AAAA,MAAM,UAAU,GAAG,
|
1
|
+
{"file":"nano-spinner.entry.js","mappings":";;;;;AAAA,MAAM,UAAU,GAAG,oqMAAoqM;;MCkB1qM,OAAO;;;mBAEU,KAAK;gBAGA,KAAK;mBAGM,KAAK;;EAEjD,iBAAiB;IACf,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;GAC5C;EAED,MAAM;IACJ,QACE,WAAK,KAAK,EAAC,SAAS,eAAW,MAAM,eAAW,QAAQ,IACtD,WAAK,KAAK,EAAC,iBAAiB,IACzB,IAAI,CAAC,IAAI,KAAK,KAAK,KAClB,WAAK,KAAK,EAAC,cAAc,IACvB,WAAK,KAAK,EAAC,wCAAwC,IACjD,WAAK,KAAK,EAAC,oCAAoC,GAAO,EACtD,WAAK,KAAK,EAAC,oCAAoC,GAAO,CAClD,EACN,WAAK,KAAK,EAAC,wCAAwC,IACjD,WAAK,KAAK,EAAC,oCAAoC,GAAO,EACtD,WAAK,KAAK,EAAC,oCAAoC,GAAO,CAClD,EACN,WAAK,KAAK,EAAC,wCAAwC,IACjD,WAAK,KAAK,EAAC,oCAAoC,GAAO,EACtD,WAAK,KAAK,EAAC,oCAAoC,GAAO,CAClD,EACN,WAAK,KAAK,EAAC,wCAAwC,IACjD,WAAK,KAAK,EAAC,oCAAoC,GAAO,EACtD,WAAK,KAAK,EAAC,oCAAoC,GAAO,CAClD,EACN,WAAK,KAAK,EAAC,wCAAwC,IACjD,WAAK,KAAK,EAAC,oCAAoC,GAAO,EACtD,WAAK,KAAK,EAAC,qCAAqC,GAAO,CACnD,CACF,CACP,EACA,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,YAAM,KAAK,EAAC,eAAe,GAAQ,CAC1D,EACL,IAAI,CAAC,OAAO,KACX,WAAK,KAAK,EAAC,eAAe,IACxB,eAAQ,CACJ,CACP,EACA,IAAI,CAAC,OAAO,IAAI,WAAK,KAAK,EAAC,kBAAkB,GAAO,CACjD,EACN;GACH;;;;;;;","names":[],"sources":["./src/components/spinner/spinner.scss?tag=nano-spinner&encapsulation=shadow","./src/components/spinner/spinner.tsx"],"sourcesContent":["@import '../../global/style/nano-theme/components';\n@import '../../global/style/nano-theme/layers';\n\n:host {\n /**\n * @prop --base-color-rgb: default #{$progress-indicator-color-rgb}\n * @prop --indicator-color: default var(--nano-indicator-color, rgba(var(--base-color-rgb), 1));\n * @prop --track-color: default var(--nano-track-color, rgba(var(--base-color-rgb), 0.2));\n * @prop --spinner-scale: optional scaling of the spinner. default contextual font-size\n * @prop --overlay-color: #{$layer-overlay-light};\n */\n\n display: inline-block;\n\n // --spinner-scale: 5em;\n --base-color-rgb: #{$progress-indicator-color-rgb};\n --indicator-color: var(--nano-indicator-color, rgba(var(--base-color-rgb), 1));\n --track-color: var(--nano-track-color, rgba(var(--base-color-rgb), 0.2));\n --overlay-color: #{$layer-overlay-light};\n}\n\n.spinner {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n\n :host([overlay]:not([overlay='false'])) & {\n position: absolute;\n inset: 0;\n\n .spinner__loader,\n .spinner__text {\n z-index: 1;\n }\n }\n\n &__overlay {\n background: var(--overlay-color);\n position: absolute;\n inset: 0;\n z-index: 0;\n backdrop-filter: blur(#{$layer-overlay-blur});\n }\n\n &__loader {\n font-size: var(--spinner-scale, 1em);\n }\n\n &__spin {\n display: block;\n margin: auto;\n inline-size: 1em;\n block-size: 1em;\n border-radius: 50%;\n border: solid 0.1em var(--track-color);\n border-block-start-color: var(--indicator-color);\n border-inline-end-color: var(--indicator-color);\n border-inline-start-color: var(--indicator-color);\n animation: 1s linear infinite spin;\n }\n\n &__dna {\n font-size: 0.2286em;\n display: flex;\n }\n\n &__dnatrack {\n position: relative;\n padding-block: 0;\n padding-inline: 0.625em;\n block-size: 4.375em;\n inline-size: 0.625em;\n overflow: hidden;\n\n &::before {\n content: '';\n position: absolute;\n inset-block-start: 1.875em;\n inset-inline-start: 50%;\n transform: translateX(-50%) translateZ(0);\n inline-size: 0.0625em;\n inline-size: #{'max(.0625em, 1px)'};\n block-size: 0.625em;\n background: var(--track-color);\n animation: flex 1.5s linear infinite;\n transform-origin: center center;\n }\n\n &--2::before {\n animation: flex 1.5s -1.3s linear infinite;\n }\n\n &--3::before {\n animation: flex 1.5s -1.1s linear infinite;\n }\n\n &--4::before {\n animation: flex 1.5s -0.9s linear infinite;\n }\n\n &--5::before {\n animation: flex 1.5s -0.75s linear infinite;\n }\n }\n\n &__dnadot {\n position: absolute;\n inline-size: 0.5em;\n block-size: 0.5em;\n border-radius: 50% 50%;\n background: var(--indicator-color);\n animation: rotate 1.5s linear infinite;\n transform-origin: center center;\n inset-inline-start: 50%;\n transform: translateX(-50%) translateZ(0) translateY(0);\n\n &--2 {\n animation: rotate 1.5s -0.75s linear infinite;\n }\n\n &--3 {\n animation: rotate 1.5s -1.3s linear infinite;\n }\n\n &--4 {\n animation: rotate 1.5s -0.55s linear infinite;\n }\n\n &--5 {\n animation: rotate 1.5s -1.1s linear infinite;\n }\n\n &--6 {\n animation: rotate 1.5s -0.35s linear infinite;\n }\n\n &--7 {\n animation: rotate 1.5s -0.9s linear infinite;\n }\n\n &--8 {\n animation: rotate 1.5s -0.15s linear infinite;\n }\n\n &--9 {\n animation: rotate 1.5s -0.75s linear infinite;\n }\n\n &--10 {\n animation: rotate 1.5s 0s linear infinite;\n }\n }\n\n &__text {\n text-align: center;\n position: relative;\n margin-block-start: 0.5em;\n }\n\n @keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n }\n\n @keyframes rotate {\n 0%,\n 100% {\n transform: translateX(-50%) translateY(0) scale(1);\n }\n\n 25% {\n transform: translateX(-50%) translateY(1.875em) scale(2);\n }\n\n 50% {\n transform: translateX(-50%) translateY(3.75em) scale(1);\n }\n\n 75% {\n transform: translateX(-50%) translateY(1.875em) scale(0.3);\n }\n }\n\n @keyframes flex {\n 0%,\n 100% {\n transform: translateX(-50%) scaleY(5);\n }\n\n 25% {\n transform: translateX(-50%) scaleY(1);\n }\n\n 50% {\n transform: translateX(-50%) scaleY(5);\n }\n\n 75% {\n transform: translateX(-50%) scaleY(1);\n }\n }\n}\n","import {\n Component,\n h,\n ComponentInterface,\n Prop,\n Element,\n State,\n} from '@stencil/core';\n\n/**\n * Spinners are used to show the progress of an indeterminate operation.\n * @slot - Used for loading messages\n */\n@Component({\n tag: 'nano-spinner',\n styleUrl: 'spinner.scss',\n shadow: true,\n})\nexport class Spinner implements ComponentInterface {\n @Element() el: HTMLNanoSpinnerElement;\n @State() hasText: boolean = false;\n\n /** The type of spinner animation. dna should be used for larger, page loads. Circle for smaller component loaders. */\n @Prop() type: 'dna' | 'circle' = 'dna';\n\n /** Displays absolutely with an overlay */\n @Prop({ reflect: true }) overlay: boolean = false;\n\n componentWillLoad() {\n this.hasText = !!this.el.childNodes.length;\n }\n\n render() {\n return (\n <div class=\"spinner\" aria-busy=\"true\" aria-live=\"polite\">\n <div class=\"spinner__loader\">\n {this.type === 'dna' && (\n <div class=\"spinner__dna\">\n <div class=\"spinner__dnatrack spinner__dnatrack--1\">\n <div class=\"spinner__dnadot spinner__dnadot--1\"></div>\n <div class=\"spinner__dnadot spinner__dnadot--2\"></div>\n </div>\n <div class=\"spinner__dnatrack spinner__dnatrack--2\">\n <div class=\"spinner__dnadot spinner__dnadot--3\"></div>\n <div class=\"spinner__dnadot spinner__dnadot--4\"></div>\n </div>\n <div class=\"spinner__dnatrack spinner__dnatrack--3\">\n <div class=\"spinner__dnadot spinner__dnadot--5\"></div>\n <div class=\"spinner__dnadot spinner__dnadot--6\"></div>\n </div>\n <div class=\"spinner__dnatrack spinner__dnatrack--4\">\n <div class=\"spinner__dnadot spinner__dnadot--7\"></div>\n <div class=\"spinner__dnadot spinner__dnadot--8\"></div>\n </div>\n <div class=\"spinner__dnatrack spinner__dnatrack--5\">\n <div class=\"spinner__dnadot spinner__dnadot--9\"></div>\n <div class=\"spinner__dnadot spinner__dnadot--10\"></div>\n </div>\n </div>\n )}\n {this.type === 'circle' && <span class=\"spinner__spin\"></span>}\n </div>\n {this.hasText && (\n <div class=\"spinner__text\">\n <slot />\n </div>\n )}\n {this.overlay && <div class=\"spinner__overlay\"></div>}\n </div>\n );\n }\n}\n"],"version":3}
|
@@ -7,7 +7,7 @@ import { f as focusVisible } from './focus-visible-8b2c14da.js';
|
|
7
7
|
import { s as scrollIntoView } from './scroll-a1e59d8c.js';
|
8
8
|
import { C as ComponentStore } from './component-store-ec512820.js';
|
9
9
|
import { c as createColorClasses } from './theme-931bd452.js';
|
10
|
-
import { d as displayTransition } from './transitions-
|
10
|
+
import { d as displayTransition } from './transitions-71cca3ed.js';
|
11
11
|
import './throttle-7836544e.js';
|
12
12
|
import './_commonjsHelpers-e401b2a2.js';
|
13
13
|
|
@@ -3,7 +3,7 @@
|
|
3
3
|
*/
|
4
4
|
import { r as registerInstance, c as createEvent, h, a as Host, g as getElement } from './index-3c280603.js';
|
5
5
|
|
6
|
-
const tabCss = ":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{--focus-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));--padding:0.75rem 1rem;--bg-rgb:var(--nano-layer-bg-rgb, 255, 255, 255);--active-bg:rgba(var(--bg-rgb), 1);--inactive-bg:rgba(var(--bg-rgb), 0.7);--disabled-bg-rgb:var(--bg-rgb);--text-color:#007495;--disabled-text-color:#455556;--active-text-color:#0c5a71;--h-font-size:0.93em;--v-font-size:0.875em;--tab-spacing:0.5rem;--tab-divider-size:0;--tab-divider-color:#90c6e7;--tab-indicator-size:5px;display:inline-block}:host([direction=vertical]){--padding:1rem}:host([direction=vertical]) .nanotab{font-size:var(--v-font-size)}:host([direction=vertical]) .nanotab.nanotab--active{font-weight:600;color:var(--active-text-color)}:host([direction=horizontal]) .nanotab{font-size:var(--h-font-size);-webkit-margin-before:var(--tab-indicator-size);margin-block-start:var(--tab-indicator-size);-webkit-border-end:solid var(--tab-divider-size) var(--tab-divider-color);border-inline-end:solid var(--tab-divider-size) var(--tab-divider-color)}:host([direction=horizontal]) .nanotab.nanotab--active{-webkit-margin-before:0;margin-block-start:0;-webkit-border-before:solid var(--tab-indicator-size) var(--tab-indicator-color);border-block-start:solid var(--tab-indicator-size) var(--tab-indicator-color);background:var(--active-bg);color:var(--active-text-color)}.nanotab{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;-webkit-margin-end:var(--tab-spacing);margin-inline-end:var(--tab-spacing);padding:var(--padding);display:-webkit-box;display:-ms-flexbox;display:flex;block-size:100%;inline-size:auto;background:var(--inactive-bg);border-radius:var(--border-radius) var(--border-radius) 0 0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;overflow:visible;white-space:nowrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.nanotab ::slotted(*){display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}:host(:last-of-type) .nanotab{-webkit-margin-end:0;margin-inline-end:0}.nanotab:hover:not(.tab--disabled){text-shadow:0 0 0.01px var(--text-color)}.nanotab:focus{outline:none;outline-style:none;-webkit-box-shadow:none;box-shadow:none;border-color:transparent}.nanotab:focus:not(.nanotab--disabled){-webkit-box-shadow:var(--focus-shadow) inset;box-shadow:var(--focus-shadow) inset}.nanotab--disabled{background:rgba(var(--disabled-bg-rgb), 1);opacity:0.5;cursor:not-allowed;color:var(--disabled-text-color)}.nanotab__close-button{-webkit-margin-start:var(--nano-spacing-small, 8px);margin-inline-start:var(--nano-spacing-small, 8px);--padding:var(--nano-spacing-xsmall, 4px) !important}";
|
6
|
+
const tabCss = ":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{--focus-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));--padding:0.75rem 1rem;--bg-rgb:var(--nano-layer-bg-rgb, 255, 255, 255);--active-bg:rgba(var(--bg-rgb), 1);--inactive-bg:rgba(var(--bg-rgb), 0.7);--disabled-bg-rgb:var(--bg-rgb);--text-color:#007495;--disabled-text-color:#455556;--active-text-color:#0c5a71;--h-font-size:0.93em;--v-font-size:0.875em;--tab-spacing:0.5rem;--tab-divider-size:0;--tab-divider-color:#90c6e7;--tab-indicator-size:5px;display:inline-block}:host([direction=vertical]){--padding:1rem}:host([direction=vertical]) .nanotab{font-size:var(--v-font-size)}:host([direction=vertical]) .nanotab.nanotab--active{font-weight:600;color:var(--active-text-color)}:host([direction=horizontal]) .nanotab{font-size:var(--h-font-size);-webkit-margin-before:var(--tab-indicator-size);margin-block-start:var(--tab-indicator-size);-webkit-border-end:solid var(--tab-divider-size) var(--tab-divider-color);border-inline-end:solid var(--tab-divider-size) var(--tab-divider-color)}:host([direction=horizontal]) .nanotab.nanotab--active{-webkit-margin-before:0;margin-block-start:0;-webkit-border-before:solid var(--tab-indicator-size) var(--tab-indicator-color);border-block-start:solid var(--tab-indicator-size) var(--tab-indicator-color);background:var(--active-bg);color:var(--active-text-color)}.nanotab{font-family:inherit;font-size:inherit;font-stretch:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;-webkit-margin-end:var(--tab-spacing);margin-inline-end:var(--tab-spacing);padding:var(--padding);display:-webkit-box;display:-ms-flexbox;display:flex;block-size:100%;inline-size:auto;background:var(--inactive-bg);border-radius:var(--border-radius) var(--border-radius) 0 0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;overflow:visible;white-space:nowrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.nanotab ::slotted(*){display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}:host(:last-of-type) .nanotab{-webkit-margin-end:0;margin-inline-end:0}.nanotab:hover:not(.tab--disabled){text-shadow:0 0 0.01px var(--text-color)}.nanotab:focus{outline:none;outline-style:none;-webkit-box-shadow:none;box-shadow:none;border-color:transparent}.nanotab:focus:not(.nanotab--disabled){-webkit-box-shadow:var(--focus-shadow) inset;box-shadow:var(--focus-shadow) inset}.nanotab--disabled{background:rgba(var(--disabled-bg-rgb), 1);opacity:0.5;cursor:not-allowed;color:var(--disabled-text-color)}.nanotab__close-button{-webkit-margin-start:var(--nano-spacing-small, 8px);margin-inline-start:var(--nano-spacing-small, 8px);--padding:var(--nano-spacing-xsmall, 4px) !important}";
|
7
7
|
|
8
8
|
let id = 0;
|
9
9
|
const Tab = class {
|
@@ -1 +1 @@
|
|
1
|
-
{"file":"nano-tab.entry.js","mappings":";;;;;AAAA,MAAM,MAAM,GAAG,
|
1
|
+
{"file":"nano-tab.entry.js","mappings":";;;;;AAAA,MAAM,MAAM,GAAG,i+FAAi+F;;ACYh/F,IAAI,EAAE,GAAG,CAAC,CAAC;MAWE,GAAG;;;;IACN,UAAK,GAAG,YAAY,EAAE,EAAE,EAAE,CAAC;IAgC3B,qBAAgB,GAAG;MACzB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;KAC1B,CAAC;IAEM,uBAAkB,GAAG,CAAC,CAAgB;MAC5C,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG;QAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAC5C,CAAC;iBAhC+B,EAAE;kBAGD,KAAK;oBAGH,KAAK;oBAGtB,KAAK;;;EAOxB,MAAM,QAAQ;IACZ,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;GACzC;;EAID,MAAM,WAAW;IACf,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;GACjB;EAUD,MAAM;IACJ,QACE,EAAC,IAAI,IAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK,IAClC,WACE,IAAI,EAAC,MAAM,EACX,GAAG,EAAE,CAAC,EAAE,MAAM,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,EAC5B,KAAK,EAAE;QACL,OAAO,EAAE,IAAI;QACb,iBAAiB,EAAE,IAAI,CAAC,MAAM;QAC9B,mBAAmB,EAAE,IAAI,CAAC,QAAQ;QAClC,mBAAmB,EAAE,IAAI,CAAC,QAAQ;OACnC,EACD,IAAI,EAAC,KAAK,mBACK,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,OAAO,mBAChC,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,EAC7C,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,GAAG,IAEpD,eAAQ,EACP,IAAI,CAAC,QAAQ,KACZ,wBACE,KAAK,EAAC,gBAAgB,EACtB,QAAQ,EAAC,aAAa,EACtB,KAAK,EAAC,uBAAuB,EAC7B,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAC9B,SAAS,EAAE,IAAI,CAAC,kBAAkB,EAClC,QAAQ,EAAE,CAAC,CAAC,GACZ,CACH,CACG,CACD,EACP;GACH;;;;;;;","names":[],"sources":["./src/components/tabs/tab.scss?tag=nano-tab&encapsulation=shadow","./src/components/tabs/tab.tsx"],"sourcesContent":["@use 'sass:map';\n@use 'sass:list';\n\n@import '../../global/style/utilities/globals';\n@import '../../global/style/nano-theme/form';\n@import '../../global/style/nano-theme/base';\n@import '../../global/style/nano-theme/layers';\n\n/**\n * @prop --focus-shadow: Defaults to #{$control-focus-style};\n\n * @prop --padding: Defaults to .75rem 1rem on placement 'top' and 1rem on placement 'start';\n\n * @prop --bg-rgb: Defaults to #{$layer-bg-color-rgb};\n * @prop --active-bg: Defaults to rgba(var(--bg-rgb), 1);\n * @prop --disabled-bg-rgb: Defaults to var(--bg-rgb);\n * @prop --inactive-bg: Defaults to rgba(var(--bg-rgb), 0.7);\n\n * @prop --text-color: Defaults to #{map.get($colors, blue)};\n * @prop --disabled-text-color: Defaults to #{map.get($colors, darkgrey)};\n * @prop --active-text-color: Defaults to #{map.get($colors, darkblue)};\n\n * @prop --h-font-size: Defaults to .93em;\n * @prop --v-font-size: Defaults to .875em;\n * @prop --tab-spacing: Gap between tabs. Defaults to 1rem;\n * @prop --tab-divider-size: Defaults to 0;\n * @prop --tab-divider-color: Defaults to #{map.get($colors, lightblue)};\n */\n\n:host {\n --focus-shadow: #{$control-focus-style};\n --padding: 0.75rem 1rem;\n --bg-rgb: #{$layer-bg-color-rgb};\n --active-bg: rgba(var(--bg-rgb), 1);\n --inactive-bg: rgba(var(--bg-rgb), 0.7);\n --disabled-bg-rgb: var(--bg-rgb);\n --text-color: #{map.get($colors, blue)};\n --disabled-text-color: #{map.get($colors, darkgrey)};\n --active-text-color: #{map.get($colors, darkblue)};\n --h-font-size: 0.93em;\n --v-font-size: 0.875em;\n --tab-spacing: 0.5rem;\n --tab-divider-size: 0;\n --tab-divider-color: #{map.get($colors, lightblue)};\n --tab-indicator-size: 5px;\n\n display: inline-block;\n}\n\n:host([direction='vertical']) {\n --padding: 1rem;\n\n .nanotab {\n font-size: var(--v-font-size);\n\n &.nanotab--active {\n font-weight: 600;\n color: var(--active-text-color);\n }\n }\n}\n\n:host([direction='horizontal']) {\n .nanotab {\n font-size: var(--h-font-size);\n margin-block-start: var(--tab-indicator-size);\n border-inline-end: solid var(--tab-divider-size) var(--tab-divider-color);\n\n &.nanotab--active {\n margin-block-start: 0;\n border-block-start: solid var(--tab-indicator-size) var(--tab-indicator-color);\n background: var(--active-bg);\n color: var(--active-text-color);\n }\n }\n}\n\n.nanotab {\n @include text-inherit();\n\n margin-inline-end: var(--tab-spacing);\n padding: var(--padding);\n display: flex;\n block-size: 100%;\n inline-size: auto;\n background: var(--inactive-bg);\n border-radius: var(--border-radius) var(--border-radius) 0 0;\n user-select: none;\n cursor: pointer;\n overflow: visible;\n white-space: nowrap;\n align-items: center;\n\n & ::slotted(*) {\n display: flex;\n align-items: center;\n }\n\n :host(:last-of-type) & {\n margin-inline-end: 0;\n }\n\n &:hover:not(.tab--disabled) {\n text-shadow: 0 0 0.01px var(--text-color);\n }\n\n &:focus {\n outline: none;\n outline-style: none;\n box-shadow: none;\n border-color: transparent;\n }\n\n &:focus:not(.nanotab--disabled) {\n box-shadow: var(--focus-shadow) inset;\n }\n\n &--disabled {\n background: rgba(var(--disabled-bg-rgb), 1);\n opacity: 0.5;\n cursor: not-allowed;\n color: var(--disabled-text-color);\n }\n\n &__close-button {\n margin-inline-start: #{$spacing-small};\n\n --padding: #{$spacing-xsmall} !important;\n }\n}\n","import {\n Component,\n Element,\n Host,\n ComponentInterface,\n Method,\n Prop,\n h,\n Event,\n EventEmitter,\n} from '@stencil/core';\n\nlet id = 0;\n\n/**\n * @slot - The tab's label.\n */\n\n@Component({\n tag: 'nano-tab',\n styleUrl: 'tab.scss',\n shadow: true,\n})\nexport class Tab implements ComponentInterface {\n private tabId = `nano-tab-${++id}`;\n private tab: HTMLElement;\n\n @Element() host: HTMLNanoTabElement;\n\n /** The name of the tab panel the tab will control. The panel must be located in the same tab group. */\n @Prop({ reflect: true }) panel = '';\n\n /** The active, selected tab. If none active, the first will automatically be selected. */\n @Prop({ reflect: true }) active = false;\n\n /** Set to true to draw the tab in an active state. */\n @Prop({ reflect: true }) disabled = false;\n\n /** When true, the tab will be rendered with a close icon. */\n @Prop() closable = false;\n\n /** Emitted when the tab is closable and the close button is activated. */\n @Event() nanoTabClose: EventEmitter;\n\n /** Sets focus to the tab. */\n @Method()\n async setFocus() {\n this.tab.focus({ preventScroll: true });\n }\n\n /** Removes focus from the tab. */\n @Method()\n async removeFocus() {\n this.tab.blur();\n }\n\n private handleCloseClick = () => {\n this.nanoTabClose.emit();\n };\n\n private handleCloseKeydown = (e: KeyboardEvent) => {\n if (e.key === ' ') this.handleCloseClick();\n };\n\n render() {\n return (\n <Host id={this.host.id || this.tabId}>\n <div\n part=\"base\"\n ref={(el) => (this.tab = el)}\n class={{\n nanotab: true,\n 'nanotab--active': this.active,\n 'nanotab--disabled': this.disabled,\n 'nanotab--closable': this.closable,\n }}\n role=\"tab\"\n aria-disabled={this.disabled ? 'true' : 'false'}\n aria-selected={this.active ? 'true' : 'false'}\n tabindex={this.disabled || !this.active ? '-1' : '0'}\n >\n <slot />\n {this.closable && (\n <nano-icon-button\n label=\"Close this tab\"\n iconName=\"light/times\"\n class=\"nanotab__close-button\"\n onClick={this.handleCloseClick}\n onKeyDown={this.handleCloseKeydown}\n tabIndex={-1}\n />\n )}\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|
@@ -3,6 +3,7 @@
|
|
3
3
|
*/
|
4
4
|
import { j as consoleError, h, F as Fragment, g as getElement, e as getRenderingRef, r as registerInstance, c as createEvent, d as readTask, a as Host } from './index-3c280603.js';
|
5
5
|
import { a as cyrb53 } from './math-c02ddfda.js';
|
6
|
+
import { d as debounce } from './throttle-7836544e.js';
|
6
7
|
import { c as createStore } from './index-c752dae1.js';
|
7
8
|
|
8
9
|
const CSSNAMESPACE = 'nano-tbl';
|
@@ -109,7 +110,7 @@ const createWorkerProxy = (worker, workerMsgId, exportedMethod) => (
|
|
109
110
|
})
|
110
111
|
);
|
111
112
|
|
112
|
-
const workerPromise = import('./table.worker-
|
113
|
+
const workerPromise = import('./table.worker-c82cecdf.js').then(m => m.worker);
|
113
114
|
const createWorkerStore = /*@__PURE__*/createWorkerProxy(workerPromise, 'stencil.table.worker', 'createWorkerStore');
|
114
115
|
const syncConfigToWorker = /*@__PURE__*/createWorkerProxy(workerPromise, 'stencil.table.worker', 'syncConfigToWorker');
|
115
116
|
const syncDataToWorker = /*@__PURE__*/createWorkerProxy(workerPromise, 'stencil.table.worker', 'syncDataToWorker');
|
@@ -128,17 +129,11 @@ function colsToWorker(columns) {
|
|
128
129
|
return safeColumns;
|
129
130
|
}
|
130
131
|
const stores = new WeakMap();
|
131
|
-
async function generateStore(host,
|
132
|
-
// augment data with some internal props
|
133
|
-
rows = rows.map((row, i) => ({
|
134
|
-
...row,
|
135
|
-
__index: i,
|
136
|
-
__uuid: cyrb53(Object.values(row).join()),
|
137
|
-
}));
|
132
|
+
async function generateStore(host, columns, scrollParent) {
|
138
133
|
const store = {
|
139
|
-
data: createStore({ rows }),
|
134
|
+
data: createStore({ rows: [] }),
|
140
135
|
config: createStore({ columns }),
|
141
|
-
general: createStore({ workerId: null }),
|
136
|
+
general: createStore({ workerId: null, scrollParent, host }),
|
142
137
|
};
|
143
138
|
const id = await createWorkerStore(store.data.state.rows, colsToWorker(store.config.state.columns));
|
144
139
|
store.general.state.workerId = id;
|
@@ -173,9 +168,15 @@ function storeSetData(host, rows) {
|
|
173
168
|
const store = stores.get(host);
|
174
169
|
if (!store)
|
175
170
|
return;
|
176
|
-
|
177
|
-
|
171
|
+
// augment data with some internal props
|
172
|
+
rows = rows.map((row, i) => ({
|
173
|
+
...row,
|
174
|
+
__index: i,
|
175
|
+
__uuid: cyrb53(Object.values(row).join()),
|
176
|
+
}));
|
178
177
|
store.data.state.rows = rows;
|
178
|
+
if (store.general.state.workerId)
|
179
|
+
return syncDataToWorker(store.general.state.workerId, rows);
|
179
180
|
}
|
180
181
|
function storeSetConfig(host, columns) {
|
181
182
|
const store = stores.get(host);
|
@@ -330,7 +331,7 @@ function cellRender(rowIndex, colIndex) {
|
|
330
331
|
* @param col - the current column config object
|
331
332
|
* @returns - a JSX node
|
332
333
|
*/
|
333
|
-
function
|
334
|
+
function colheadFootRender(col) {
|
334
335
|
const tpl = col?.colTemplate;
|
335
336
|
return tpl ? (tpl(h, col)) : (h(Fragment, null, col.title));
|
336
337
|
}
|
@@ -357,33 +358,56 @@ const stickyVIOs = new WeakMap();
|
|
357
358
|
function addHObserver(el, pos, cb) {
|
358
359
|
if (stickyHIOs.get(el))
|
359
360
|
return;
|
361
|
+
const store = fetchStores();
|
362
|
+
const root = store.general.state.scrollParent;
|
363
|
+
const host = store.general.state.host;
|
360
364
|
const observer = new IntersectionObserver(([e]) => {
|
361
365
|
const positions = {};
|
362
|
-
if (pos === 'start')
|
363
|
-
positions.start =
|
364
|
-
|
366
|
+
if (pos === 'start') {
|
367
|
+
positions.start =
|
368
|
+
e.boundingClientRect.x -
|
369
|
+
(host.getBoundingClientRect().x + root.scrollLeft) <
|
370
|
+
0 && !e.isIntersecting;
|
371
|
+
}
|
372
|
+
if (pos === 'end') {
|
373
|
+
// TODO - sort these out for RtL
|
365
374
|
positions.end =
|
366
|
-
e.boundingClientRect.
|
375
|
+
e.boundingClientRect.right > e.boundingClientRect.width &&
|
367
376
|
!e.isIntersecting;
|
377
|
+
}
|
368
378
|
cb(positions);
|
369
|
-
}, {
|
379
|
+
}, {
|
380
|
+
threshold: [1],
|
381
|
+
rootMargin: '1px 0px 1px 0px',
|
382
|
+
root: root === document.scrollingElement ? null : root,
|
383
|
+
});
|
370
384
|
stickyHIOs.set(el, observer);
|
371
385
|
requestAnimationFrame(() => observer.observe(el));
|
372
386
|
}
|
373
387
|
function addVObserver(el, pos, cb) {
|
374
388
|
if (stickyVIOs.get(el))
|
375
389
|
return;
|
390
|
+
const store = fetchStores();
|
391
|
+
const root = store.general.state.scrollParent;
|
392
|
+
const host = store.general.state.host;
|
376
393
|
const observer = new IntersectionObserver(([e]) => {
|
377
|
-
console.log(e);
|
378
394
|
const positions = {};
|
379
|
-
if (pos === 'top')
|
380
|
-
positions.top =
|
395
|
+
if (pos === 'top') {
|
396
|
+
positions.top =
|
397
|
+
e.boundingClientRect.y -
|
398
|
+
(host.getBoundingClientRect().y + root.scrollTop) <
|
399
|
+
0 && !e.isIntersecting;
|
400
|
+
}
|
381
401
|
if (pos === 'bottom')
|
382
402
|
positions.bottom =
|
383
403
|
e.boundingClientRect.height > e.intersectionRect.height &&
|
384
404
|
!e.isIntersecting;
|
385
405
|
cb(positions);
|
386
|
-
}, {
|
406
|
+
}, {
|
407
|
+
threshold: [0.99],
|
408
|
+
rootMargin: '0px 100px 0px 100px',
|
409
|
+
root: root === document.scrollingElement ? null : root,
|
410
|
+
});
|
387
411
|
stickyVIOs.set(el, observer);
|
388
412
|
requestAnimationFrame(() => observer.observe(el));
|
389
413
|
}
|
@@ -456,7 +480,7 @@ const TableColHead = ({ column, headRenderer, onColumnOrderClick, onColumnPinned
|
|
456
480
|
default:
|
457
481
|
order = 'asc';
|
458
482
|
}
|
459
|
-
onColumnOrderClick(order, column.prop, e.target.
|
483
|
+
onColumnOrderClick(order, column.prop, e.target.closest('th'));
|
460
484
|
}
|
461
485
|
let extraProps = {};
|
462
486
|
if (column.columnProperties) {
|
@@ -472,7 +496,7 @@ const TableColHead = ({ column, headRenderer, onColumnOrderClick, onColumnPinned
|
|
472
496
|
},
|
473
497
|
};
|
474
498
|
let props = extraProps ? mergeProperties(baseProps, extraProps) : baseProps;
|
475
|
-
const content =
|
499
|
+
const content = colheadFootRender(column);
|
476
500
|
if (!content)
|
477
501
|
return h(Fragment, null);
|
478
502
|
props =
|
@@ -490,8 +514,11 @@ const TableColHead = ({ column, headRenderer, onColumnOrderClick, onColumnPinned
|
|
490
514
|
if (['top', 'bottom'].includes(headRenderer.pinned))
|
491
515
|
addVObserver(th, headRenderer.pinned, onColumnPinned);
|
492
516
|
} },
|
493
|
-
h("button", { class:
|
494
|
-
|
517
|
+
h("button", { class: {
|
518
|
+
[`${CSSNAMESPACE}__order-btn`]: true,
|
519
|
+
[`${CSSNAMESPACE}__cell-content`]: true,
|
520
|
+
}, onClick: handleColumnOrderClick },
|
521
|
+
colheadFootRender(column),
|
495
522
|
!!column.filter && h("nano-icon", { name: "light/filter" }),
|
496
523
|
!!column.order &&
|
497
524
|
(column.order === 'desc' ? (h("nano-icon", { name: "solid/long-arrow-down" })) : (h("nano-icon", { name: "solid/long-arrow-up" }))),
|
@@ -504,11 +531,12 @@ const TableColHead = ({ column, headRenderer, onColumnOrderClick, onColumnPinned
|
|
504
531
|
if (['top', 'bottom'].includes(headRenderer.pinned))
|
505
532
|
addVObserver(th, headRenderer.pinned, onColumnPinned);
|
506
533
|
} },
|
507
|
-
|
508
|
-
|
534
|
+
h("div", { class: `${CSSNAMESPACE}__cell-content` },
|
535
|
+
colheadFootRender(column),
|
536
|
+
!!column.filter && h("nano-icon", { name: "light/bars-filter" }))));
|
509
537
|
};
|
510
|
-
const TableCell = ({ rowIndex, colIndex, }) => {
|
511
|
-
const content = cellRender(rowIndex, colIndex);
|
538
|
+
const TableCell = ({ rowIndex, colIndex, nestedContent, }) => {
|
539
|
+
const content = nestedContent || cellRender(rowIndex, colIndex);
|
512
540
|
if (!content)
|
513
541
|
return h(Fragment, null);
|
514
542
|
const store = fetchStores();
|
@@ -532,7 +560,8 @@ const TableCell = ({ rowIndex, colIndex, }) => {
|
|
532
560
|
}
|
533
561
|
return (h(CellType
|
534
562
|
// role="gridcell"
|
535
|
-
, { ...props },
|
563
|
+
, { ...props },
|
564
|
+
h("div", { class: `${CSSNAMESPACE}__cell-content` }, content)));
|
536
565
|
};
|
537
566
|
|
538
567
|
const detectScrollSpeed = (() => {
|
@@ -590,7 +619,7 @@ function isInViewport(el, percentVisible = 100) {
|
|
590
619
|
percentVisible);
|
591
620
|
}
|
592
621
|
|
593
|
-
const tableCss = ":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}nano-table{display:
|
622
|
+
const tableCss = ":host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}@charset \"UTF-8\";nano-table{display:table;width:100%;--max-col-width:200px;--color:var(--nano-color-mediumgrey, #68767e);--font-size:0.87rem;--cell-line-height:1.5;--border-color:var(--nano-color-palegrey, #b5aea7);--border-style:1px solid var(--border-color);--border-tint-color:var(--nano-color-blue, #90c6e7);--border-tint-style:2px solid var(--border-tint-color);--cell-bg-rgb:var(--nano-color-white-rgb, 255 255 255);--head-bg-rgb:var(--cell-bg-rgb);--foot-bg-rgb:var(--cell-bg-rgb);--th-row-bg-rgb:var(--cell-bg-rgb);--ordered-bg-rgb:var(--nano-color-offwhite-rgb, 249 249 251);--td-padding:0.5rem 0.625rem 0.4125rem;--th-padding:0.875rem 0.625rem 0.6875rem;--head-th-padding:var(--th-padding);--foot-th-padding:var(--td-padding);--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}.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}.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;-moz-appearance:none;appearance:none;color:inherit;display:-webkit-box;display:-ms-flexbox;display:flex;gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%}.nano-tbl__status-icons{margin-inline:auto 10px;display:-webkit-box;display:-ms-flexbox;display:flex;gap:10px}.nano-tbl__progress-bar{font-size:0.2rem;position:sticky;inset-block-start:0;inset-inline:0;z-index:10;-webkit-transition:scale 0.25s;transition:scale 0.25s;scale:0;width:100%;height:0}.nano-tbl__progress-bar--show{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-after:var(--border-style);border-block-end:var(--border-style);max-width:var(--max-col-width);background-color:rgb(var(--cell-bg-rgb))}@media (min-width: 768px){.nano-tbl__td:first-child .nano-tbl__cell-content,.nano-tbl__th:first-child .nano-tbl__cell-content{-webkit-padding-start:var(--bookend-col-padding) !important;padding-inline-start:var(--bookend-col-padding) !important}.nano-tbl__td:last-child .nano-tbl__cell-content,.nano-tbl__th:last-child .nano-tbl__cell-content{-webkit-padding-end:var(--bookend-col-padding) !important;padding-inline-end:var(--bookend-col-padding) !important}}thead .nano-tbl__td,thead .nano-tbl__th{font-weight:800;background:rgba(var(--head-bg-rgb), 90%)}thead .nano-tbl__td .nano-tbl__cell-content,thead .nano-tbl__th .nano-tbl__cell-content{padding:var(--head-th-padding)}tfoot .nano-tbl__td,tfoot .nano-tbl__th{font-weight:800;-webkit-border-after:none;border-block-end:none;background:rgba(var(--foot-bg-rgb), 90%)}tfoot .nano-tbl__td .nano-tbl__cell-content,tfoot .nano-tbl__th .nano-tbl__cell-content{padding:var(--foot-th-padding)}.nano-tbl__td.nano-tbl__ordered,.nano-tbl__th.nano-tbl__ordered{background-color:rgba(var(--ordered-bg-rgb), 0.8) !important}.nano-tbl__cell-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:var(--td-padding)}.nano-tbl tbody{will-change:scroll-position;visibility:visible}.nano-tbl tbody.nano-tbl__inactive{visibility:hidden}.nano-tbl th[scope=row]{font-weight:800;max-width:65vw;margin:0}.nano-tbl__pin{position:sticky;z-index:1}.nano-tbl__pin--start{inset-inline:-1px auto;-webkit-transition:max-width 0.25s;transition:max-width 0.25s}.nano-tbl__pin--start::after{content:\"\";position:absolute;inset:0;-webkit-box-shadow:5px 0 4px 0 rgba(0, 0, 0, 0.2);box-shadow:5px 0 4px 0 rgba(0, 0, 0, 0.2);opacity:0;z-index:-1}.nano-tbl__pinned--start .nano-tbl__pin--start{z-index:2}@media (max-width: 576px){.nano-tbl__pinned--start .nano-tbl__pin--start{max-width:25vw !important}}.nano-tbl__pinned--start .nano-tbl__pin--start::after{opacity:1}.nano-tbl__pin--end{inset-inline:auto -1px;max-width:min(50vw, 200px);}.nano-tbl__pin--end::after{content:\"\";position:absolute;inset:0;-webkit-box-shadow:-5px 0 4px 0 rgba(0, 0, 0, 0.2);box-shadow:-5px 0 4px 0 rgba(0, 0, 0, 0.2);opacity:0;z-index:-1}.nano-tbl__pinned--end .nano-tbl__pin--end{z-index:3}.nano-tbl__pinned--end .nano-tbl__pin--end::after{opacity:1}@media (max-width: 576px){.nano-tbl__pin--start~.nano-tbl__pin--end{inset-inline:auto auto}.nano-tbl__pin--start~.nano-tbl__pin--end::after{display:none}}.nano-tbl__pin--top{inset-block:-1px auto}.nano-tbl__pinned--top .nano-tbl__pin--top{z-index:4}.nano-tbl__pin--bottom{inset-block:auto -1px}.nano-tbl__pinned--bottom .nano-tbl__pin--bottom{z-index:5;-webkit-border-before:var(--border-tint-style);border-block-start:var(--border-tint-style)}.nano-tbl__pinned--top.nano-tbl__pinned--start .nano-tbl__pin--top.nano-tbl__pin--start{z-index:6}.nano-tbl__pinned--top.nano-tbl__pinned--end .nano-tbl__pin--top.nano-tbl__pin--end{z-index:6}.nano-tbl__pinned--bottom.nano-tbl__pinned--start .nano-tbl__pin--bottom.nano-tbl__pin--start{z-index:6}.nano-tbl__pinned--bottom.nano-tbl__pinned--end .nano-tbl__pin--bottom.nano-tbl__pin--end{z-index:6}.nano-tbl thead tr:last-of-type td,.nano-tbl thead tr:last-of-type th,.nano-tbl tfoot tr:last-of-type td,.nano-tbl tfoot tr:last-of-type th{-webkit-border-after:var(--border-tint-style);border-block-end:var(--border-tint-style)}.nano-tbl .unlimited-width{max-width:none}.nano-tbl__spinner{font-size:1.5rem;-webkit-transition:scale 0.25s;transition:scale 0.25s;scale:0;padding:0.5rem;position:absolute;inset-block-end:0;inset-inline-start:calc(50% - 0.75rem);z-index:-1}.nano-tbl__spinner--show{scale:1;position:sticky}.nano-tbl nano-skeleton{line-height:var(--cell-line-height)}";
|
594
623
|
|
595
624
|
let id = 0;
|
596
625
|
const Table = class {
|
@@ -604,6 +633,9 @@ const Table = class {
|
|
604
633
|
this.nanoTblAfterFilter = createEvent(this, "nanoTblAfterFilter", 7);
|
605
634
|
this.nanoTblBeforeSearch = createEvent(this, "nanoTblBeforeSearch", 7);
|
606
635
|
this.nanoTblAfterSearch = createEvent(this, "nanoTblAfterSearch", 7);
|
636
|
+
this.debounceSetLoading = (l) => {
|
637
|
+
this._loading = l;
|
638
|
+
};
|
607
639
|
this.renderId = 'tbl-' + id++;
|
608
640
|
this.filters = [];
|
609
641
|
this.currentFilters = '';
|
@@ -621,8 +653,10 @@ const Table = class {
|
|
621
653
|
* @returns A promise
|
622
654
|
*/
|
623
655
|
this.sortStart = async (order, column, element) => {
|
656
|
+
// did order change?
|
624
657
|
if (this.currentSort === order + ':' + column)
|
625
658
|
return;
|
659
|
+
this.loading = true;
|
626
660
|
const sortEvent = this.nanoTblBeforeSort.emit({ column: column, order });
|
627
661
|
if (sortEvent.defaultPrevented)
|
628
662
|
return;
|
@@ -647,10 +681,13 @@ const Table = class {
|
|
647
681
|
console.warn('sort failed', e);
|
648
682
|
this.currentSort = '';
|
649
683
|
}
|
684
|
+
finally {
|
685
|
+
this.loading = false;
|
686
|
+
}
|
650
687
|
};
|
651
688
|
/**
|
652
|
-
* Attaches an intersection observer to each rendered tbody
|
653
|
-
* shows / hides intersecting blocks' and sets heights for when
|
689
|
+
* Attaches an intersection observer to each rendered tbody element
|
690
|
+
* shows / hides intersecting blocks' and sets heights for when they're hidden
|
654
691
|
* @param el - the tbody element to observe
|
655
692
|
* @param blockIndex - the rendering tbody we're attaching the IO to
|
656
693
|
*/
|
@@ -665,8 +702,8 @@ const Table = class {
|
|
665
702
|
// The Intersection Observer (IO) fires in an incorrect order when the scrolling is very fast
|
666
703
|
// i.e. we go past blocks 3, 2, 1 and land on 0, but 3 can fire as 'intersecting' after 0.
|
667
704
|
// To fix that, we check - for realsies - if the block IS visible.
|
668
|
-
// BUT that test is not as sensitive to a block being visible
|
669
|
-
// so doesn't always fire if scrolling
|
705
|
+
// BUT that test is not as sensitive to a block being visible via the IO,
|
706
|
+
// so doesn't always fire if scrolling slowly
|
670
707
|
// *sigh*
|
671
708
|
readTask(() => {
|
672
709
|
if (this.scrollSpeed < 100 || isInViewport(el, 0.01)) {
|
@@ -683,7 +720,12 @@ const Table = class {
|
|
683
720
|
}
|
684
721
|
});
|
685
722
|
}
|
686
|
-
}, {
|
723
|
+
}, {
|
724
|
+
threshold: [0],
|
725
|
+
root: this.scrollParent === document.scrollingElement
|
726
|
+
? null
|
727
|
+
: this.scrollParent,
|
728
|
+
});
|
687
729
|
blockIo.observe(el);
|
688
730
|
this.blockIos.set(el, blockIo);
|
689
731
|
};
|
@@ -695,7 +737,9 @@ const Table = class {
|
|
695
737
|
this.type = 'table';
|
696
738
|
this.caption = undefined;
|
697
739
|
this.showCaption = false;
|
698
|
-
this.
|
740
|
+
this._loading = true;
|
741
|
+
this.placeholderSize = 5;
|
742
|
+
this.rows = undefined;
|
699
743
|
this.columns = [];
|
700
744
|
this.headRender = { pinned: 'top' };
|
701
745
|
this.rowRender = undefined;
|
@@ -708,9 +752,29 @@ const Table = class {
|
|
708
752
|
this.blocks = [];
|
709
753
|
this.activeBlocks = [0, 1, 2];
|
710
754
|
this.measureHeight = 0;
|
755
|
+
this.debounceSetLoading = debounce(this.debounceSetLoading.bind(this), 50);
|
756
|
+
}
|
757
|
+
/** Will show a loading state when true.
|
758
|
+
* Will be shown automatically if `rows` is a promise waiting to resolve
|
759
|
+
* or when performing custom filtering or sorting */
|
760
|
+
get loading() {
|
761
|
+
return this._loading;
|
762
|
+
}
|
763
|
+
set loading(l) {
|
764
|
+
this.debounceSetLoading(l);
|
711
765
|
}
|
712
766
|
handleRowsChange() {
|
713
|
-
|
767
|
+
if (!this.rows)
|
768
|
+
return;
|
769
|
+
this.loading = true;
|
770
|
+
Promise.resolve(this.rows).then(async (rows) => {
|
771
|
+
await storeSetData(this.host, rows);
|
772
|
+
if (!this.isReady) {
|
773
|
+
await this.columnInit();
|
774
|
+
this.setInitialBlockDimension();
|
775
|
+
}
|
776
|
+
this.loading = false;
|
777
|
+
});
|
714
778
|
}
|
715
779
|
handleColsChange() {
|
716
780
|
storeSetConfig(this.host, this.columns);
|
@@ -758,6 +822,8 @@ const Table = class {
|
|
758
822
|
}
|
759
823
|
// uses the first 'tr' of an active block as our yard stick
|
760
824
|
set measureEle(el) {
|
825
|
+
if (!el)
|
826
|
+
return;
|
761
827
|
this.measureHeight = el.getBoundingClientRect().height;
|
762
828
|
this.unitHeight =
|
763
829
|
el.querySelector('tr')?.getBoundingClientRect().height || this.unitHeight;
|
@@ -804,6 +870,7 @@ const Table = class {
|
|
804
870
|
this.nanoTblAfterSort.emit({ column: column, order });
|
805
871
|
}
|
806
872
|
async searchStart() {
|
873
|
+
this.loading = true;
|
807
874
|
const sortEvent = this.nanoTblBeforeSearch.emit({ term: this.searchTerm });
|
808
875
|
if (sortEvent.defaultPrevented)
|
809
876
|
return;
|
@@ -813,7 +880,12 @@ const Table = class {
|
|
813
880
|
await storeSearch(this.host, this.searchTerm);
|
814
881
|
this.nanoTblAfterSearch.emit({ term: this.searchTerm });
|
815
882
|
}
|
816
|
-
catch (e) {
|
883
|
+
catch (e) {
|
884
|
+
console.warn('search failed', e);
|
885
|
+
}
|
886
|
+
finally {
|
887
|
+
this.loading = false;
|
888
|
+
}
|
817
889
|
}
|
818
890
|
async filterStart(filters, additive = true) {
|
819
891
|
if (filters) {
|
@@ -829,6 +901,7 @@ const Table = class {
|
|
829
901
|
}
|
830
902
|
if (this.currentFilters === JSON.stringify(this.filters))
|
831
903
|
return;
|
904
|
+
this.loading = true;
|
832
905
|
const sortEvent = this.nanoTblBeforeFilter.emit({ filters: this.filters });
|
833
906
|
if (sortEvent.defaultPrevented)
|
834
907
|
return;
|
@@ -850,7 +923,12 @@ const Table = class {
|
|
850
923
|
await storeFilter(this.host, this.filters);
|
851
924
|
this.filterComplete();
|
852
925
|
}
|
853
|
-
catch (e) {
|
926
|
+
catch (e) {
|
927
|
+
console.warn('filter failed', e);
|
928
|
+
}
|
929
|
+
finally {
|
930
|
+
this.loading = false;
|
931
|
+
}
|
854
932
|
}
|
855
933
|
filterComplete() {
|
856
934
|
this.columns = this.columns.map((c) => {
|
@@ -864,16 +942,20 @@ const Table = class {
|
|
864
942
|
/** Scrolls to the top immediately - used whilst sorting / filtering */
|
865
943
|
scrollToTop(element) {
|
866
944
|
const scrollBehaviour = this.scrollParent.style?.scrollBehavior;
|
945
|
+
const scrollX = this.scrollParent.scrollLeft;
|
867
946
|
this.scrollParent.style.scrollBehavior = 'auto';
|
868
|
-
this.
|
947
|
+
if (this.topAnchorEle && !isInViewport(this.topAnchorEle, 0.1))
|
948
|
+
this.topAnchorEle.scrollIntoView();
|
869
949
|
if (element)
|
870
|
-
element.scrollIntoView();
|
950
|
+
element.scrollIntoView({ block: 'start' });
|
951
|
+
if (scrollX)
|
952
|
+
this.scrollParent.scrollLeft = scrollX;
|
871
953
|
if (scrollBehaviour)
|
872
954
|
this.scrollParent.style.scrollBehavior = scrollBehaviour;
|
873
955
|
}
|
874
956
|
setMeasureElement() {
|
875
957
|
readTask(() => {
|
876
|
-
this.measureEle = this.blockElements.find((b) => !b
|
958
|
+
this.measureEle = this.blockElements.find((b) => !b?.classList?.contains(`${CSSNAMESPACE}__inactive`));
|
877
959
|
});
|
878
960
|
}
|
879
961
|
/**
|
@@ -898,11 +980,6 @@ const Table = class {
|
|
898
980
|
}
|
899
981
|
if (i === this.blockElements.length - 1)
|
900
982
|
resolve();
|
901
|
-
// const heightGuess = this.getBlockHeight(this.blockElements.indexOf(el));
|
902
|
-
// writeTask(() => {
|
903
|
-
// el.style.height = heightGuess;
|
904
|
-
// if (i === this.blockElements.length - 1) resolve();
|
905
|
-
// });
|
906
983
|
});
|
907
984
|
});
|
908
985
|
});
|
@@ -986,8 +1063,8 @@ const Table = class {
|
|
986
1063
|
if (!el)
|
987
1064
|
return;
|
988
1065
|
const height = el.getBoundingClientRect().height;
|
989
|
-
// cache height to our block heights
|
990
|
-
//
|
1066
|
+
// cache height to our block heights array
|
1067
|
+
// for subsequent renders
|
991
1068
|
const fBhI = this.blockHeights.findIndex((bh) => bh.blockIndex === blockIndex);
|
992
1069
|
if (fBhI > 0) {
|
993
1070
|
this.blockHeights[fBhI] = { height, blockIndex };
|
@@ -1006,8 +1083,8 @@ const Table = class {
|
|
1006
1083
|
}
|
1007
1084
|
// Component lifecycle
|
1008
1085
|
async componentWillLoad() {
|
1009
|
-
this.store = await generateStore(this.host, this.
|
1010
|
-
await this.
|
1086
|
+
this.store = await generateStore(this.host, this.columns, this.scrollParent);
|
1087
|
+
await this.handleRowsChange();
|
1011
1088
|
this.processSlots();
|
1012
1089
|
this.setBlocks();
|
1013
1090
|
this.store.data.onChange('rows', () => this.setBlocks());
|
@@ -1033,9 +1110,17 @@ const Table = class {
|
|
1033
1110
|
}
|
1034
1111
|
render() {
|
1035
1112
|
this.blockElements = [];
|
1036
|
-
return (h(Host, null, h("div", {
|
1113
|
+
return (h(Host, null, h("div", { class: `${CSSNAMESPACE}__top-anchor`, ref: (a) => (this.topAnchorEle = a) }, "\u00A0"), h("div", { "aria-labelledby": 'table-caption-' + this.renderId, tabindex: this.type === 'grid' ? '0' : undefined }, h("nano-progress-bar", { indeterminate: true, class: {
|
1114
|
+
[`${CSSNAMESPACE}__progress-bar`]: true,
|
1115
|
+
[`${CSSNAMESPACE}__progress-bar--show`]: this.loading,
|
1116
|
+
} }), h("table", { role: this.type === 'grid' ? 'grid' : undefined, "aria-readonly": this.type === 'table' ? 'true' : undefined, "aria-rowcount": this.store.data.state.rows.length, "aria-colcount": this.store.config.state.columns.length, class: `${CSSNAMESPACE}`, ref: (tbl) => (this.tableEle = tbl) }, h("caption", { class: {
|
1117
|
+
[`${CSSNAMESPACE}__caption`]: true,
|
1118
|
+
[`${CSSNAMESPACE}__caption--hide`]: !this.showCaption,
|
1119
|
+
}, id: 'table-caption-' + this.renderId }, h("slot", { name: "caption" }, this.caption)), h("thead", null, h(TableHeadFootRow, { rowRenderer: this.headRender, onColumnPinned: this.handleColumnPinned }, this.store.config.state.columns.map((colModel) => [
|
1037
1120
|
h(TableColHead, { column: colModel, headRenderer: this.headRender, onColumnOrderClick: this.sortStart, onColumnPinned: this.handleColumnPinned }),
|
1038
|
-
]))), this.
|
1121
|
+
]))), this.loading &&
|
1122
|
+
!this.blocks.length &&
|
1123
|
+
[...Array(10).keys()].map((rowIndex) => (h("tr", null, this.store.config.state.columns.map((_colModel, colIndex) => (h(TableCell, { rowIndex: rowIndex, colIndex: colIndex, nestedContent: h("nano-skeleton", null) })))))), this.blocks.map((block, blockIndex) => (h("tbody", { key: block.__uuid, id: `tbody-${this.renderId}-${blockIndex}`, ref: (tb) => {
|
1039
1124
|
this.blockElements.push(tb);
|
1040
1125
|
this.setupBlockIO(tb, blockIndex);
|
1041
1126
|
}, class: {
|
@@ -1046,9 +1131,12 @@ const Table = class {
|
|
1046
1131
|
return (h(TableRow, { rowRenderer: this.rowRender, row: row }, this.store.config.state.columns.map((_colModel, colIndex) => (h(TableCell, { rowIndex: rowIndex, colIndex: colIndex })))));
|
1047
1132
|
})) : (h("td", { colSpan: this.store.config.state.columns.length, style: {
|
1048
1133
|
height: this.getBlockHeight(blockIndex),
|
1049
|
-
} }))))),
|
1134
|
+
} }))))), this.showFooter && (h("tfoot", null, h(TableHeadFootRow, { rowRenderer: this.footRender, onColumnPinned: this.handleColumnPinned }, this.store.config.state.columns.map((colModel) => [
|
1050
1135
|
h(TableColHead, { column: colModel, headRenderer: this.footRender, onColumnPinned: this.handleColumnPinned }),
|
1051
|
-
])))))
|
1136
|
+
]))))), !!this.blocks.length && (h("nano-spinner", { type: "circle", class: {
|
1137
|
+
[`${CSSNAMESPACE}__spinner`]: true,
|
1138
|
+
[`${CSSNAMESPACE}__spinner--show`]: this.loading,
|
1139
|
+
} })))));
|
1052
1140
|
}
|
1053
1141
|
get host() { return getElement(this); }
|
1054
1142
|
static get watchers() { return {
|
@@ -1061,4 +1149,4 @@ Table.style = tableCss;
|
|
1061
1149
|
|
1062
1150
|
export { Table as T, createWorker as c };
|
1063
1151
|
|
1064
|
-
//# sourceMappingURL=nano-table-
|
1152
|
+
//# sourceMappingURL=nano-table-19d19d72.js.map
|