@nanoporetech-digital/components 4.3.1 → 4.4.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 +22 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/nano-components.cjs.js +1 -1
- package/dist/cjs/nano-overflow-nav.cjs.entry.js +49 -24
- package/dist/cjs/nano-overflow-nav.cjs.entry.js.map +1 -1
- package/dist/cjs/{nano-table-b59537e5.js → nano-table-80866352.js} +2 -2
- package/dist/cjs/{nano-table-b59537e5.js.map → nano-table-80866352.js.map} +1 -1
- package/dist/cjs/nano-table.cjs.entry.js +1 -1
- package/dist/cjs/{table.worker-590fb88b.js → table.worker-33992a3a.js} +2 -2
- package/dist/cjs/table.worker-33992a3a.js.map +1 -0
- package/dist/collection/components/overflow-nav/overflow-nav.css +3 -0
- package/dist/collection/components/overflow-nav/overflow-nav.js +90 -35
- package/dist/collection/components/overflow-nav/overflow-nav.js.map +1 -1
- package/dist/components/nano-overflow-nav.js +52 -25
- package/dist/components/nano-overflow-nav.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/nano-components.js +1 -1
- package/dist/esm/nano-overflow-nav.entry.js +49 -24
- package/dist/esm/nano-overflow-nav.entry.js.map +1 -1
- package/dist/esm/{nano-table-b20d3a48.js → nano-table-fda0efef.js} +2 -2
- package/dist/esm/{nano-table-b20d3a48.js.map → nano-table-fda0efef.js.map} +1 -1
- package/dist/esm/nano-table.entry.js +1 -1
- package/dist/esm/{table.worker-9cfa17ca.js → table.worker-2fd6f263.js} +2 -2
- package/dist/esm/table.worker-2fd6f263.js.map +1 -0
- 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-3a761d77.entry.js +5 -0
- package/dist/nano-components/p-3a761d77.entry.js.map +1 -0
- package/dist/nano-components/p-69bb4ec0.js +5 -0
- package/dist/nano-components/{p-e3ee4c68.entry.js → p-9e6b78df.entry.js} +2 -2
- package/dist/nano-components/{p-aeaa2ed9.js → p-a1bfd5c9.js} +2 -2
- package/dist/types/components/overflow-nav/overflow-nav.d.ts +16 -6
- package/dist/types/components.d.ts +22 -12
- package/docs-json.json +38 -14
- package/hydrate/index.js +52 -25
- package/package.json +2 -2
- package/dist/cjs/table.worker-590fb88b.js.map +0 -1
- package/dist/esm/table.worker-9cfa17ca.js.map +0 -1
- package/dist/nano-components/p-556b6e8a.entry.js +0 -5
- package/dist/nano-components/p-556b6e8a.entry.js.map +0 -1
- package/dist/nano-components/p-b5805a8c.js +0 -5
- /package/dist/nano-components/{p-b5805a8c.js.map → p-69bb4ec0.js.map} +0 -0
- /package/dist/nano-components/{p-e3ee4c68.entry.js.map → p-9e6b78df.entry.js.map} +0 -0
- /package/dist/nano-components/{p-aeaa2ed9.js.map → p-a1bfd5c9.js.map} +0 -0
@@ -1633,22 +1633,25 @@ export namespace Components {
|
|
1633
1633
|
interface NanoOverflowNav {
|
1634
1634
|
/**
|
1635
1635
|
* A function called when an item becomes 'active' (via click or keyboard)
|
1636
|
-
* @param item
|
1636
|
+
* @param item - html element currently being assessed
|
1637
|
+
* @param _index - the index of the html element currently being assessed
|
1637
1638
|
* @returns void
|
1638
1639
|
*/
|
1639
|
-
"activeHandler": (item: HTMLElement) => void;
|
1640
|
+
"activeHandler": (item: HTMLElement, _index: number) => void;
|
1640
1641
|
/**
|
1641
1642
|
* A function called when an item becomes 'inactive' (because another item was made active)
|
1642
|
-
* @param item
|
1643
|
+
* @param item - html element currently being assessed
|
1644
|
+
* @param _index - the index of the html element currently being assessed
|
1643
1645
|
* @returns void
|
1644
1646
|
*/
|
1645
|
-
"inActiveHandler": (item: HTMLElement) => void;
|
1647
|
+
"inActiveHandler": (item: HTMLElement, _index: number) => void;
|
1646
1648
|
/**
|
1647
1649
|
* A function called to assess an initial, active item
|
1648
|
-
* @param item
|
1650
|
+
* @param item - html element currently being assessed
|
1651
|
+
* @param _index - the index of the html element currently being assessed
|
1649
1652
|
* @returns void
|
1650
1653
|
*/
|
1651
|
-
"isActiveHandler": (item: HTMLElement) => boolean;
|
1654
|
+
"isActiveHandler": (item: HTMLElement, _index: number) => boolean;
|
1652
1655
|
/**
|
1653
1656
|
* The flex direction of the element
|
1654
1657
|
*/
|
@@ -1657,6 +1660,10 @@ export namespace Components {
|
|
1657
1660
|
* Disables the scroll arrow buttons that appear when content overflows
|
1658
1661
|
*/
|
1659
1662
|
"scrollControls": boolean;
|
1663
|
+
/**
|
1664
|
+
* Sync up the view to the active item. Use this when the active item changes outside of this component.
|
1665
|
+
*/
|
1666
|
+
"syncActiveItem": () => Promise<void>;
|
1660
1667
|
}
|
1661
1668
|
/**
|
1662
1669
|
* Used to show the status of an ongoing operation.
|
@@ -4848,22 +4855,25 @@ declare namespace LocalJSX {
|
|
4848
4855
|
interface NanoOverflowNav {
|
4849
4856
|
/**
|
4850
4857
|
* A function called when an item becomes 'active' (via click or keyboard)
|
4851
|
-
* @param item
|
4858
|
+
* @param item - html element currently being assessed
|
4859
|
+
* @param _index - the index of the html element currently being assessed
|
4852
4860
|
* @returns void
|
4853
4861
|
*/
|
4854
|
-
"activeHandler"?: (item: HTMLElement) => void;
|
4862
|
+
"activeHandler"?: (item: HTMLElement, _index: number) => void;
|
4855
4863
|
/**
|
4856
4864
|
* A function called when an item becomes 'inactive' (because another item was made active)
|
4857
|
-
* @param item
|
4865
|
+
* @param item - html element currently being assessed
|
4866
|
+
* @param _index - the index of the html element currently being assessed
|
4858
4867
|
* @returns void
|
4859
4868
|
*/
|
4860
|
-
"inActiveHandler"?: (item: HTMLElement) => void;
|
4869
|
+
"inActiveHandler"?: (item: HTMLElement, _index: number) => void;
|
4861
4870
|
/**
|
4862
4871
|
* A function called to assess an initial, active item
|
4863
|
-
* @param item
|
4872
|
+
* @param item - html element currently being assessed
|
4873
|
+
* @param _index - the index of the html element currently being assessed
|
4864
4874
|
* @returns void
|
4865
4875
|
*/
|
4866
|
-
"isActiveHandler"?: (item: HTMLElement) => boolean;
|
4876
|
+
"isActiveHandler"?: (item: HTMLElement, _index: number) => boolean;
|
4867
4877
|
/**
|
4868
4878
|
* The flex direction of the element
|
4869
4879
|
*/
|
package/docs-json.json
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
{
|
2
|
-
"timestamp": "2023-03-
|
2
|
+
"timestamp": "2023-03-10T11:01:02",
|
3
3
|
"compiler": {
|
4
4
|
"name": "@stencil/core",
|
5
5
|
"version": "2.23.0",
|
@@ -10906,24 +10906,28 @@
|
|
10906
10906
|
"props": [
|
10907
10907
|
{
|
10908
10908
|
"name": "activeHandler",
|
10909
|
-
"type": "(item: HTMLElement) => void",
|
10909
|
+
"type": "(item: HTMLElement, _index: number) => void",
|
10910
10910
|
"mutable": false,
|
10911
10911
|
"reflectToAttr": false,
|
10912
10912
|
"docs": "A function called when an item becomes 'active' (via click or keyboard)",
|
10913
10913
|
"docsTags": [
|
10914
10914
|
{
|
10915
10915
|
"name": "param",
|
10916
|
-
"text": "item"
|
10916
|
+
"text": "item - html element currently being assessed"
|
10917
|
+
},
|
10918
|
+
{
|
10919
|
+
"name": "param",
|
10920
|
+
"text": "_index - the index of the html element currently being assessed"
|
10917
10921
|
},
|
10918
10922
|
{
|
10919
10923
|
"name": "returns",
|
10920
10924
|
"text": "void"
|
10921
10925
|
}
|
10922
10926
|
],
|
10923
|
-
"default": "(item: HTMLElement)
|
10927
|
+
"default": "(item: HTMLElement, _index: number) =>\n item.classList.add('active')",
|
10924
10928
|
"values": [
|
10925
10929
|
{
|
10926
|
-
"type": "(item: HTMLElement) => void"
|
10930
|
+
"type": "(item: HTMLElement, _index: number) => void"
|
10927
10931
|
}
|
10928
10932
|
],
|
10929
10933
|
"optional": false,
|
@@ -10933,24 +10937,28 @@
|
|
10933
10937
|
},
|
10934
10938
|
{
|
10935
10939
|
"name": "inActiveHandler",
|
10936
|
-
"type": "(item: HTMLElement) => void",
|
10940
|
+
"type": "(item: HTMLElement, _index: number) => void",
|
10937
10941
|
"mutable": false,
|
10938
10942
|
"reflectToAttr": false,
|
10939
10943
|
"docs": "A function called when an item becomes 'inactive'\n(because another item was made active)",
|
10940
10944
|
"docsTags": [
|
10941
10945
|
{
|
10942
10946
|
"name": "param",
|
10943
|
-
"text": "item"
|
10947
|
+
"text": "item - html element currently being assessed"
|
10948
|
+
},
|
10949
|
+
{
|
10950
|
+
"name": "param",
|
10951
|
+
"text": "_index - the index of the html element currently being assessed"
|
10944
10952
|
},
|
10945
10953
|
{
|
10946
10954
|
"name": "returns",
|
10947
10955
|
"text": "void"
|
10948
10956
|
}
|
10949
10957
|
],
|
10950
|
-
"default": "(item: HTMLElement) =>\n item.classList.remove('active')",
|
10958
|
+
"default": "(item: HTMLElement, _index: number) =>\n item.classList.remove('active')",
|
10951
10959
|
"values": [
|
10952
10960
|
{
|
10953
|
-
"type": "(item: HTMLElement) => void"
|
10961
|
+
"type": "(item: HTMLElement, _index: number) => void"
|
10954
10962
|
}
|
10955
10963
|
],
|
10956
10964
|
"optional": false,
|
@@ -10960,24 +10968,28 @@
|
|
10960
10968
|
},
|
10961
10969
|
{
|
10962
10970
|
"name": "isActiveHandler",
|
10963
|
-
"type": "(item: HTMLElement) => boolean",
|
10971
|
+
"type": "(item: HTMLElement, _index: number) => boolean",
|
10964
10972
|
"mutable": false,
|
10965
10973
|
"reflectToAttr": false,
|
10966
10974
|
"docs": "A function called to assess an initial, active item",
|
10967
10975
|
"docsTags": [
|
10968
10976
|
{
|
10969
10977
|
"name": "param",
|
10970
|
-
"text": "item"
|
10978
|
+
"text": "item - html element currently being assessed"
|
10979
|
+
},
|
10980
|
+
{
|
10981
|
+
"name": "param",
|
10982
|
+
"text": "_index - the index of the html element currently being assessed"
|
10971
10983
|
},
|
10972
10984
|
{
|
10973
10985
|
"name": "returns",
|
10974
10986
|
"text": "void"
|
10975
10987
|
}
|
10976
10988
|
],
|
10977
|
-
"default": "(item: HTMLElement) =>\n item.classList.contains('active')",
|
10989
|
+
"default": "(item: HTMLElement, _index: number) =>\n item.classList.contains('active')",
|
10978
10990
|
"values": [
|
10979
10991
|
{
|
10980
|
-
"type": "(item: HTMLElement) => boolean"
|
10992
|
+
"type": "(item: HTMLElement, _index: number) => boolean"
|
10981
10993
|
}
|
10982
10994
|
],
|
10983
10995
|
"optional": false,
|
@@ -11029,7 +11041,19 @@
|
|
11029
11041
|
"setter": false
|
11030
11042
|
}
|
11031
11043
|
],
|
11032
|
-
"methods": [
|
11044
|
+
"methods": [
|
11045
|
+
{
|
11046
|
+
"name": "syncActiveItem",
|
11047
|
+
"returns": {
|
11048
|
+
"type": "Promise<void>",
|
11049
|
+
"docs": ""
|
11050
|
+
},
|
11051
|
+
"signature": "syncActiveItem() => Promise<void>",
|
11052
|
+
"parameters": [],
|
11053
|
+
"docs": "Sync up the view to the active item.\nUse this when the active item changes outside of this component.",
|
11054
|
+
"docsTags": []
|
11055
|
+
}
|
11056
|
+
],
|
11033
11057
|
"events": [],
|
11034
11058
|
"listeners": [],
|
11035
11059
|
"styles": [
|
package/hydrate/index.js
CHANGED
@@ -21109,7 +21109,7 @@ class Option {
|
|
21109
21109
|
}; }
|
21110
21110
|
}
|
21111
21111
|
|
21112
|
-
const overflowNavCss = "/*!@:host*/.sc-nano-overflow-nav-h{box-sizing:border-box}/*!@*,\n*::before,\n*::after*/*.sc-nano-overflow-nav,*.sc-nano-overflow-nav::before,*.sc-nano-overflow-nav::after{box-sizing:border-box}/*!@[hidden]*/[hidden].sc-nano-overflow-nav{display:none !important}/*!@:host*/.sc-nano-overflow-nav-h{--indicator-transition:var(--nano-transition-fast, 0.3s);--indicator-color:#90c6e7;--indicator-size:0;--indicator-track-color:#e4e6e8;--indicator-track-size:var(--indicator-size);--scroll-btn-color:\"currentColor\";--fade-size:1.75rem;--fade-transparency:0;--padding:var(--fade-size);position:relative;z-index:var(--nano-layer-index-raised, 5)}/*!@:host([orientation=horizontal])*/[orientation=horizontal].sc-nano-overflow-nav-h{display:block}/*!@:host([orientation=vertical])*/[orientation=vertical].sc-nano-overflow-nav-h{display:flex}/*!@.onav__scroller*/.onav__scroller.sc-nano-overflow-nav{scrollbar-width:none;-ms-overflow-style:none;display:flex;transition:var(--nano-transition-medium, 0.5s) ease;background-image:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=\");-webkit-mask-size:calc(100% + var(--fade-size) * 4);mask-size:calc(100% + var(--fade-size) * 4);-webkit-mask-position:calc(var(--fade-size) * -2);mask-position:calc(var(--fade-size) * -2)}/*!@.onav__scroller::-webkit-scrollbar*/.onav__scroller.sc-nano-overflow-nav::-webkit-scrollbar{inline-size:0;block-size:0}/*!@.onav__scroller::after*/.onav__scroller.sc-nano-overflow-nav::after{content:\" \";line-height:1;flex:0 0 auto;display:block}/*!@.onav--has-scroll-controls-start .onav__scroller*/.onav--has-scroll-controls-start.sc-nano-overflow-nav .onav__scroller.sc-nano-overflow-nav{-webkit-mask-position:0;mask-position:0;-webkit-mask-size:calc(100% + var(--fade-size) * 2);mask-size:calc(100% + var(--fade-size) * 2)}/*!@.onav--has-scroll-controls-end .onav__scroller*/.onav--has-scroll-controls-end.sc-nano-overflow-nav .onav__scroller.sc-nano-overflow-nav{-webkit-mask-position:calc(var(--fade-size) * -1);mask-position:calc(var(--fade-size) * -1);-webkit-mask-size:calc(100% + var(--fade-size));mask-size:calc(100% + var(--fade-size))}/*!@.onav--has-scroll-controls-start.onav--has-scroll-controls-end .onav__scroller*/.onav--has-scroll-controls-start.onav--has-scroll-controls-end.sc-nano-overflow-nav .onav__scroller.sc-nano-overflow-nav{-webkit-mask-size:100%;mask-size:100%;-webkit-mask-position:0;mask-position:0}/*!@.onav__items*/.onav__items.sc-nano-overflow-nav{flex:1 1 auto;position:relative;width:auto;flex-wrap:nowrap;display:flex}/*!@.onav__items::before*/.onav__items.sc-nano-overflow-nav::before{content:\"\";background:var(--indicator-track-color);display:block;position:absolute;z-index:1}/*!@.onav__active-indicator*/.onav__active-indicator.sc-nano-overflow-nav{position:absolute;z-index:10;transition:var(--indicator-transition) transform ease, var(--indicator-transition) width ease, var(--indicator-transition) height ease}/*!@.onav nano-icon-button.onav__scroll-button*/.onav.sc-nano-overflow-nav nano-icon-button.onav__scroll-button.sc-nano-overflow-nav{--nano-color-base:var(--scroll-btn-color);display:flex;align-items:center;justify-content:center;position:absolute;border:unset;z-index:2;transition:var(--nano-transition-fast, 0.3s) ease opacity;opacity:0;color:var(--scroll-btn-color);pointer-events:none}/*!@.onav nano-icon-button.onav__scroll-button:focus*/.onav.sc-nano-overflow-nav nano-icon-button.onav__scroll-button.sc-nano-overflow-nav:focus{outline:none}/*!@.onav nano-icon-button.onav__scroll-button.is-shown*/.onav.sc-nano-overflow-nav nano-icon-button.onav__scroll-button.is-shown.sc-nano-overflow-nav{opacity:1;pointer-events:all}/*!@.onav nano-icon-button.onav__scroll-button:focus-visible*/.onav.sc-nano-overflow-nav nano-icon-button.onav__scroll-button.sc-nano-overflow-nav:focus-visible{box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8))) inset}/*!@.onav--horizontal .onav__scroller*/.onav--horizontal.sc-nano-overflow-nav .onav__scroller.sc-nano-overflow-nav{overflow-x:auto;overflow-y:hidden;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;padding-inline:var(--padding);-webkit-mask-image:linear-gradient(to left, rgb(0 0 0/var(--fade-transparency)) 0, rgb(0 0 0/var(--fade-transparency)) var(--fade-size), black calc(var(--fade-size) * 2), black calc(100% - var(--fade-size) * 2), rgb(0 0 0/var(--fade-transparency)) calc(100% - var(--fade-size)), rgb(0 0 0/var(--fade-transparency)));mask-image:linear-gradient(to left, rgb(0 0 0/var(--fade-transparency)) 0, rgb(0 0 0/var(--fade-transparency)) var(--fade-size), black calc(var(--fade-size) * 2), black calc(100% - var(--fade-size) * 2), rgb(0 0 0/var(--fade-transparency)) calc(100% - var(--fade-size)), rgb(0 0 0/var(--fade-transparency)))}/*!@.onav--horizontal .onav__scroller::after*/.onav--horizontal.sc-nano-overflow-nav .onav__scroller.sc-nano-overflow-nav::after{padding-inline:0 var(--fade-size);padding-block:0 0}/*!@.onav--horizontal.onav--has-scroll-controls .onav__scroller*/.onav--horizontal.onav--has-scroll-controls.sc-nano-overflow-nav .onav__scroller.sc-nano-overflow-nav{padding-inline:var(--fade-size) 0;-webkit-padding-before:0;padding-block-start:0;-webkit-padding-after:0;padding-block-end:0}/*!@.onav--horizontal .onav__items*/.onav--horizontal.sc-nano-overflow-nav .onav__items.sc-nano-overflow-nav{flex-direction:row}/*!@.onav--horizontal .onav__items::before*/.onav--horizontal.sc-nano-overflow-nav .onav__items.sc-nano-overflow-nav::before{content:\"\";width:100%;height:var(--indicator-track-size);inset-block-end:0}/*!@.onav--horizontal .onav__active-indicator*/.onav--horizontal.sc-nano-overflow-nav .onav__active-indicator.sc-nano-overflow-nav{inset-block-end:0;-webkit-border-after:solid var(--indicator-size) var(--indicator-color);border-block-end:solid var(--indicator-size) var(--indicator-color)}/*!@.onav--horizontal .onav__scroll-button*/.onav--horizontal.sc-nano-overflow-nav .onav__scroll-button.sc-nano-overflow-nav{inset-block:0}/*!@.onav--horizontal .onav__scroll-button--start*/.onav--horizontal.sc-nano-overflow-nav .onav__scroll-button--start.sc-nano-overflow-nav{inset-inline-start:0}/*!@.onav--horizontal .onav__scroll-button--end*/.onav--horizontal.sc-nano-overflow-nav .onav__scroll-button--end.sc-nano-overflow-nav{inset-inline-end:0}/*!@.onav--vertical*/.onav--vertical.sc-nano-overflow-nav{width:100%}/*!@.onav--vertical .onav__nav*/.onav--vertical.sc-nano-overflow-nav .onav__nav.sc-nano-overflow-nav{max-height:100%;display:flex}/*!@.onav--vertical .onav__scroller*/.onav--vertical.sc-nano-overflow-nav .onav__scroller.sc-nano-overflow-nav{width:100%;overflow-y:auto;overflow-x:hidden;flex-direction:column;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;padding-block:var(--padding);-webkit-mask-image:linear-gradient(to top, rgb(0 0 0/var(--fade-transparency)) 0, rgb(0 0 0/var(--fade-transparency)) var(--fade-size), black calc(var(--fade-size) * 2), black calc(100% - var(--fade-size) * 2), rgb(0 0 0/var(--fade-transparency)) calc(100% - var(--fade-size)), rgb(0 0 0/var(--fade-transparency)));mask-image:linear-gradient(to top, rgb(0 0 0/var(--fade-transparency)) 0, rgb(0 0 0/var(--fade-transparency)) var(--fade-size), black calc(var(--fade-size) * 2), black calc(100% - var(--fade-size) * 2), rgb(0 0 0/var(--fade-transparency)) calc(100% - var(--fade-size)), rgb(0 0 0/var(--fade-transparency)));padding-inline:0 0;-webkit-padding-before:calc(var(--fade-size) + 12px);padding-block-start:calc(var(--fade-size) + 12px);-webkit-padding-after:var(--fade-size);padding-block-end:var(--fade-size)}/*!@.onav--vertical .onav__scroller::after*/.onav--vertical.sc-nano-overflow-nav .onav__scroller.sc-nano-overflow-nav::after{padding-inline:0 0;padding-block:0 var(--fade-size)}/*!@.onav--vertical .onav__items*/.onav--vertical.sc-nano-overflow-nav .onav__items.sc-nano-overflow-nav{flex-direction:column;width:-moz-fit-content;width:fit-content}/*!@.onav--vertical .onav__items::before*/.onav--vertical.sc-nano-overflow-nav .onav__items.sc-nano-overflow-nav::before{content:\"\";height:100%;width:var(--indicator-track-size);inset-inline-start:0}/*!@.onav--vertical .onav__active-indicator*/.onav--vertical.sc-nano-overflow-nav .onav__active-indicator.sc-nano-overflow-nav{inset-inline-start:0;-webkit-border-start:solid var(--indicator-size) var(--indicator-color);border-inline-start:solid var(--indicator-size) var(--indicator-color)}/*!@.onav--vertical .onav__scroll-button*/.onav--vertical.sc-nano-overflow-nav .onav__scroll-button.sc-nano-overflow-nav{inset-inline:0}/*!@.onav--vertical .onav__scroll-button--start*/.onav--vertical.sc-nano-overflow-nav .onav__scroll-button--start.sc-nano-overflow-nav{inset-block-start:0}/*!@.onav--vertical .onav__scroll-button--end*/.onav--vertical.sc-nano-overflow-nav .onav__scroll-button--end.sc-nano-overflow-nav{inset-block-end:0}";
|
21112
|
+
const overflowNavCss = "/*!@:host*/.sc-nano-overflow-nav-h{box-sizing:border-box}/*!@*,\n*::before,\n*::after*/*.sc-nano-overflow-nav,*.sc-nano-overflow-nav::before,*.sc-nano-overflow-nav::after{box-sizing:border-box}/*!@[hidden]*/[hidden].sc-nano-overflow-nav{display:none !important}/*!@:host*/.sc-nano-overflow-nav-h{--indicator-transition:var(--nano-transition-fast, 0.3s);--indicator-color:#90c6e7;--indicator-size:0;--indicator-track-color:#e4e6e8;--indicator-track-size:var(--indicator-size);--scroll-btn-color:\"currentColor\";--fade-size:1.75rem;--fade-transparency:0;--padding:var(--fade-size);position:relative;z-index:var(--nano-layer-index-raised, 5)}/*!@:host([orientation=horizontal])*/[orientation=horizontal].sc-nano-overflow-nav-h{display:block}/*!@:host([orientation=vertical])*/[orientation=vertical].sc-nano-overflow-nav-h{display:flex}/*!@.onav--no-transitions **/.onav--no-transitions.sc-nano-overflow-nav *.sc-nano-overflow-nav{transition-duration:0s !important}/*!@.onav__scroller*/.onav__scroller.sc-nano-overflow-nav{scrollbar-width:none;-ms-overflow-style:none;display:flex;transition:var(--nano-transition-medium, 0.5s) ease;background-image:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=\");-webkit-mask-size:calc(100% + var(--fade-size) * 4);mask-size:calc(100% + var(--fade-size) * 4);-webkit-mask-position:calc(var(--fade-size) * -2);mask-position:calc(var(--fade-size) * -2)}/*!@.onav__scroller::-webkit-scrollbar*/.onav__scroller.sc-nano-overflow-nav::-webkit-scrollbar{inline-size:0;block-size:0}/*!@.onav__scroller::after*/.onav__scroller.sc-nano-overflow-nav::after{content:\" \";line-height:1;flex:0 0 auto;display:block}/*!@.onav--has-scroll-controls-start .onav__scroller*/.onav--has-scroll-controls-start.sc-nano-overflow-nav .onav__scroller.sc-nano-overflow-nav{-webkit-mask-position:0;mask-position:0;-webkit-mask-size:calc(100% + var(--fade-size) * 2);mask-size:calc(100% + var(--fade-size) * 2)}/*!@.onav--has-scroll-controls-end .onav__scroller*/.onav--has-scroll-controls-end.sc-nano-overflow-nav .onav__scroller.sc-nano-overflow-nav{-webkit-mask-position:calc(var(--fade-size) * -1);mask-position:calc(var(--fade-size) * -1);-webkit-mask-size:calc(100% + var(--fade-size));mask-size:calc(100% + var(--fade-size))}/*!@.onav--has-scroll-controls-start.onav--has-scroll-controls-end .onav__scroller*/.onav--has-scroll-controls-start.onav--has-scroll-controls-end.sc-nano-overflow-nav .onav__scroller.sc-nano-overflow-nav{-webkit-mask-size:100%;mask-size:100%;-webkit-mask-position:0;mask-position:0}/*!@.onav__items*/.onav__items.sc-nano-overflow-nav{flex:1 1 auto;position:relative;width:auto;flex-wrap:nowrap;display:flex}/*!@.onav__items::before*/.onav__items.sc-nano-overflow-nav::before{content:\"\";background:var(--indicator-track-color);display:block;position:absolute;z-index:1}/*!@.onav__active-indicator*/.onav__active-indicator.sc-nano-overflow-nav{position:absolute;z-index:10;transition:var(--indicator-transition) transform ease, var(--indicator-transition) width ease, var(--indicator-transition) height ease}/*!@.onav nano-icon-button.onav__scroll-button*/.onav.sc-nano-overflow-nav nano-icon-button.onav__scroll-button.sc-nano-overflow-nav{--nano-color-base:var(--scroll-btn-color);display:flex;align-items:center;justify-content:center;position:absolute;border:unset;z-index:2;transition:var(--nano-transition-fast, 0.3s) ease opacity;opacity:0;color:var(--scroll-btn-color);pointer-events:none}/*!@.onav nano-icon-button.onav__scroll-button:focus*/.onav.sc-nano-overflow-nav nano-icon-button.onav__scroll-button.sc-nano-overflow-nav:focus{outline:none}/*!@.onav nano-icon-button.onav__scroll-button.is-shown*/.onav.sc-nano-overflow-nav nano-icon-button.onav__scroll-button.is-shown.sc-nano-overflow-nav{opacity:1;pointer-events:all}/*!@.onav nano-icon-button.onav__scroll-button:focus-visible*/.onav.sc-nano-overflow-nav nano-icon-button.onav__scroll-button.sc-nano-overflow-nav:focus-visible{box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8))) inset}/*!@.onav--horizontal .onav__scroller*/.onav--horizontal.sc-nano-overflow-nav .onav__scroller.sc-nano-overflow-nav{overflow-x:auto;overflow-y:hidden;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;padding-inline:var(--padding);-webkit-mask-image:linear-gradient(to left, rgb(0 0 0/var(--fade-transparency)) 0, rgb(0 0 0/var(--fade-transparency)) var(--fade-size), black calc(var(--fade-size) * 2), black calc(100% - var(--fade-size) * 2), rgb(0 0 0/var(--fade-transparency)) calc(100% - var(--fade-size)), rgb(0 0 0/var(--fade-transparency)));mask-image:linear-gradient(to left, rgb(0 0 0/var(--fade-transparency)) 0, rgb(0 0 0/var(--fade-transparency)) var(--fade-size), black calc(var(--fade-size) * 2), black calc(100% - var(--fade-size) * 2), rgb(0 0 0/var(--fade-transparency)) calc(100% - var(--fade-size)), rgb(0 0 0/var(--fade-transparency)))}/*!@.onav--horizontal .onav__scroller::after*/.onav--horizontal.sc-nano-overflow-nav .onav__scroller.sc-nano-overflow-nav::after{padding-inline:0 var(--fade-size);padding-block:0 0}/*!@.onav--horizontal.onav--has-scroll-controls .onav__scroller*/.onav--horizontal.onav--has-scroll-controls.sc-nano-overflow-nav .onav__scroller.sc-nano-overflow-nav{padding-inline:var(--fade-size) 0;-webkit-padding-before:0;padding-block-start:0;-webkit-padding-after:0;padding-block-end:0}/*!@.onav--horizontal .onav__items*/.onav--horizontal.sc-nano-overflow-nav .onav__items.sc-nano-overflow-nav{flex-direction:row}/*!@.onav--horizontal .onav__items::before*/.onav--horizontal.sc-nano-overflow-nav .onav__items.sc-nano-overflow-nav::before{content:\"\";width:100%;height:var(--indicator-track-size);inset-block-end:0}/*!@.onav--horizontal .onav__active-indicator*/.onav--horizontal.sc-nano-overflow-nav .onav__active-indicator.sc-nano-overflow-nav{inset-block-end:0;-webkit-border-after:solid var(--indicator-size) var(--indicator-color);border-block-end:solid var(--indicator-size) var(--indicator-color)}/*!@.onav--horizontal .onav__scroll-button*/.onav--horizontal.sc-nano-overflow-nav .onav__scroll-button.sc-nano-overflow-nav{inset-block:0}/*!@.onav--horizontal .onav__scroll-button--start*/.onav--horizontal.sc-nano-overflow-nav .onav__scroll-button--start.sc-nano-overflow-nav{inset-inline-start:0}/*!@.onav--horizontal .onav__scroll-button--end*/.onav--horizontal.sc-nano-overflow-nav .onav__scroll-button--end.sc-nano-overflow-nav{inset-inline-end:0}/*!@.onav--vertical*/.onav--vertical.sc-nano-overflow-nav{width:100%}/*!@.onav--vertical .onav__nav*/.onav--vertical.sc-nano-overflow-nav .onav__nav.sc-nano-overflow-nav{max-height:100%;display:flex}/*!@.onav--vertical .onav__scroller*/.onav--vertical.sc-nano-overflow-nav .onav__scroller.sc-nano-overflow-nav{width:100%;overflow-y:auto;overflow-x:hidden;flex-direction:column;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;padding-block:var(--padding);-webkit-mask-image:linear-gradient(to top, rgb(0 0 0/var(--fade-transparency)) 0, rgb(0 0 0/var(--fade-transparency)) var(--fade-size), black calc(var(--fade-size) * 2), black calc(100% - var(--fade-size) * 2), rgb(0 0 0/var(--fade-transparency)) calc(100% - var(--fade-size)), rgb(0 0 0/var(--fade-transparency)));mask-image:linear-gradient(to top, rgb(0 0 0/var(--fade-transparency)) 0, rgb(0 0 0/var(--fade-transparency)) var(--fade-size), black calc(var(--fade-size) * 2), black calc(100% - var(--fade-size) * 2), rgb(0 0 0/var(--fade-transparency)) calc(100% - var(--fade-size)), rgb(0 0 0/var(--fade-transparency)));padding-inline:0 0;-webkit-padding-before:calc(var(--fade-size) + 12px);padding-block-start:calc(var(--fade-size) + 12px);-webkit-padding-after:var(--fade-size);padding-block-end:var(--fade-size)}/*!@.onav--vertical .onav__scroller::after*/.onav--vertical.sc-nano-overflow-nav .onav__scroller.sc-nano-overflow-nav::after{padding-inline:0 0;padding-block:0 var(--fade-size)}/*!@.onav--vertical .onav__items*/.onav--vertical.sc-nano-overflow-nav .onav__items.sc-nano-overflow-nav{flex-direction:column;width:-moz-fit-content;width:fit-content}/*!@.onav--vertical .onav__items::before*/.onav--vertical.sc-nano-overflow-nav .onav__items.sc-nano-overflow-nav::before{content:\"\";height:100%;width:var(--indicator-track-size);inset-inline-start:0}/*!@.onav--vertical .onav__active-indicator*/.onav--vertical.sc-nano-overflow-nav .onav__active-indicator.sc-nano-overflow-nav{inset-inline-start:0;-webkit-border-start:solid var(--indicator-size) var(--indicator-color);border-inline-start:solid var(--indicator-size) var(--indicator-color)}/*!@.onav--vertical .onav__scroll-button*/.onav--vertical.sc-nano-overflow-nav .onav__scroll-button.sc-nano-overflow-nav{inset-inline:0}/*!@.onav--vertical .onav__scroll-button--start*/.onav--vertical.sc-nano-overflow-nav .onav__scroll-button--start.sc-nano-overflow-nav{inset-block-start:0}/*!@.onav--vertical .onav__scroll-button--end*/.onav--vertical.sc-nano-overflow-nav .onav__scroll-button--end.sc-nano-overflow-nav{inset-block-end:0}";
|
21113
21113
|
|
21114
21114
|
/**
|
21115
21115
|
* Primarily used to display navigational items that may not fit on smaller screens.
|
@@ -21130,12 +21130,21 @@ const overflowNavCss = "/*!@:host*/.sc-nano-overflow-nav-h{box-sizing:border-box
|
|
21130
21130
|
*/
|
21131
21131
|
class OverflowNav {
|
21132
21132
|
watchIsActiveHandler() {
|
21133
|
-
this.
|
21134
|
-
this.
|
21133
|
+
this.instantReCalc = true;
|
21134
|
+
this.activeItem = this.allActiveItems.find((el, i) => this.isActiveHandler(el, i));
|
21135
|
+
setTimeout(() => (this.instantReCalc = false), 300);
|
21136
|
+
}
|
21137
|
+
/**
|
21138
|
+
* Sync up the view to the active item.
|
21139
|
+
* Use this when the active item changes outside of this component.
|
21140
|
+
*/
|
21141
|
+
async syncActiveItem() {
|
21142
|
+
this.activeItem = this.allActiveItems.find((el, i) => this.isActiveHandler(el, i));
|
21135
21143
|
}
|
21136
21144
|
// private state
|
21137
21145
|
constructor(hostRef) {
|
21138
21146
|
registerInstance(this, hostRef);
|
21147
|
+
this.mutationObservers = new WeakMap();
|
21139
21148
|
this.updateScrollControls = () => {
|
21140
21149
|
if (!this.nav)
|
21141
21150
|
return;
|
@@ -21192,10 +21201,22 @@ class OverflowNav {
|
|
21192
21201
|
this.slotChangeHandler = () => {
|
21193
21202
|
if (this.allActiveItems.length < 2)
|
21194
21203
|
return;
|
21195
|
-
const item = this.allActiveItems.find((el) => this.isActiveHandler(el));
|
21204
|
+
const item = this.allActiveItems.find((el, i) => this.isActiveHandler(el, i));
|
21196
21205
|
if (item)
|
21197
21206
|
this.activeItem = item;
|
21198
21207
|
this.recalculatePositions();
|
21208
|
+
/** maintain a weakmap of mutation observers to maintain item / indicator position on all changes. */
|
21209
|
+
this.allActiveItems.forEach((item) => {
|
21210
|
+
if (this.mutationObservers.get(item))
|
21211
|
+
return;
|
21212
|
+
const mo = new MutationObserver(() => this.syncActiveItemIndicator());
|
21213
|
+
mo.observe(item, {
|
21214
|
+
characterData: true,
|
21215
|
+
childList: true,
|
21216
|
+
subtree: true,
|
21217
|
+
});
|
21218
|
+
this.mutationObservers.set(item, mo);
|
21219
|
+
});
|
21199
21220
|
};
|
21200
21221
|
this.handleClick = (event) => {
|
21201
21222
|
if (this.allActiveItems.length < 2)
|
@@ -21216,20 +21237,21 @@ class OverflowNav {
|
|
21216
21237
|
this.activeItem = foundItem;
|
21217
21238
|
}
|
21218
21239
|
};
|
21219
|
-
this.recalculatePositions = (
|
21240
|
+
this.recalculatePositions = () => {
|
21220
21241
|
this.updateScrollControls();
|
21221
|
-
this.syncActiveItemIndicator(
|
21222
|
-
this.scrollToActiveItem(
|
21242
|
+
this.syncActiveItemIndicator();
|
21243
|
+
this.scrollToActiveItem();
|
21223
21244
|
};
|
21224
21245
|
this.scrollControls = true;
|
21225
21246
|
this.orientation = 'horizontal';
|
21226
|
-
this.activeHandler = (item) => item.classList.add('active');
|
21227
|
-
this.inActiveHandler = (item) => item.classList.remove('active');
|
21228
|
-
this.isActiveHandler = (item) => item.classList.contains('active');
|
21247
|
+
this.activeHandler = (item, _index) => item.classList.add('active');
|
21248
|
+
this.inActiveHandler = (item, _index) => item.classList.remove('active');
|
21249
|
+
this.isActiveHandler = (item, _index) => item.classList.contains('active');
|
21250
|
+
this.instantReCalc = false;
|
21229
21251
|
this.hasScrollControls = false;
|
21230
21252
|
this.hideControlEnd = true;
|
21231
21253
|
this.hideControlStart = true;
|
21232
|
-
this.recalculatePositions = debounce$2(this.recalculatePositions,
|
21254
|
+
this.recalculatePositions = debounce$2(this.recalculatePositions.bind(this), 80);
|
21233
21255
|
}
|
21234
21256
|
get scrollProp() {
|
21235
21257
|
return this.orientation === 'horizontal' ? 'scrollWidth' : 'scrollHeight';
|
@@ -21285,14 +21307,13 @@ class OverflowNav {
|
|
21285
21307
|
return;
|
21286
21308
|
}
|
21287
21309
|
this._activeItem = item;
|
21288
|
-
this.allActiveItems.forEach((el) => {
|
21310
|
+
this.allActiveItems.forEach((el, i) => {
|
21289
21311
|
if (el === this._activeItem)
|
21290
|
-
this.activeHandler(el);
|
21312
|
+
this.activeHandler(el, i);
|
21291
21313
|
else
|
21292
|
-
this.inActiveHandler(el);
|
21314
|
+
this.inActiveHandler(el, i);
|
21293
21315
|
});
|
21294
|
-
this.
|
21295
|
-
this.scrollToActiveItem();
|
21316
|
+
this.recalculatePositions();
|
21296
21317
|
}
|
21297
21318
|
get navDim() {
|
21298
21319
|
if (!this.nav)
|
@@ -21310,18 +21331,18 @@ class OverflowNav {
|
|
21310
21331
|
parseFloat(computedStyle.paddingBottom));
|
21311
21332
|
}
|
21312
21333
|
}
|
21313
|
-
scrollToActiveItem(
|
21334
|
+
scrollToActiveItem() {
|
21314
21335
|
if (!this.nav || !this.activeItem)
|
21315
21336
|
return;
|
21316
|
-
|
21337
|
+
setTimeout(() => {
|
21317
21338
|
this.activeItem.scrollIntoView({
|
21318
|
-
behavior:
|
21339
|
+
behavior: this.instantReCalc ? 'auto' : 'smooth',
|
21319
21340
|
block: 'center',
|
21320
21341
|
inline: 'center',
|
21321
21342
|
});
|
21322
|
-
});
|
21343
|
+
}, 100);
|
21323
21344
|
}
|
21324
|
-
syncActiveItemIndicator(
|
21345
|
+
syncActiveItemIndicator() {
|
21325
21346
|
if (!this.activeItem)
|
21326
21347
|
return;
|
21327
21348
|
const item = this.activeItem;
|
@@ -21332,7 +21353,7 @@ class OverflowNav {
|
|
21332
21353
|
return;
|
21333
21354
|
const offsetTop = offset.top;
|
21334
21355
|
const offsetLeft = offset.left;
|
21335
|
-
if (
|
21356
|
+
if (this.instantReCalc)
|
21336
21357
|
this.activeIndicator.style.transition = 'none';
|
21337
21358
|
switch (this.orientation) {
|
21338
21359
|
case 'horizontal':
|
@@ -21350,8 +21371,11 @@ class OverflowNav {
|
|
21350
21371
|
}
|
21351
21372
|
// lifecycle
|
21352
21373
|
connectedCallback() {
|
21374
|
+
this.instantReCalc = true;
|
21353
21375
|
this.isRtl =
|
21354
21376
|
this.orientation === 'horizontal' && !!this.host.closest('[dir="rtl"]');
|
21377
|
+
if (window['MutationObserver'])
|
21378
|
+
this.slotChangeHandler();
|
21355
21379
|
if (!window['ResizeObserver'])
|
21356
21380
|
return;
|
21357
21381
|
if (this.ro) {
|
@@ -21362,8 +21386,8 @@ class OverflowNav {
|
|
21362
21386
|
mo.observe(this.host);
|
21363
21387
|
}
|
21364
21388
|
componentDidLoad() {
|
21365
|
-
this.activeItem = this.allActiveItems.find((el) => this.isActiveHandler(el));
|
21366
|
-
this.
|
21389
|
+
this.activeItem = this.allActiveItems.find((el, i) => this.isActiveHandler(el, i));
|
21390
|
+
this.instantReCalc = false;
|
21367
21391
|
}
|
21368
21392
|
disconnectedCallback() {
|
21369
21393
|
if (this.ro) {
|
@@ -21378,6 +21402,7 @@ class OverflowNav {
|
|
21378
21402
|
'onav--has-scroll-controls': this.hasScrollControls,
|
21379
21403
|
'onav--has-scroll-controls-start': !this.hideControlStart,
|
21380
21404
|
'onav--has-scroll-controls-end': !this.hideControlEnd,
|
21405
|
+
'onav--no-transitions': this.instantReCalc,
|
21381
21406
|
}, onClick: this.handleClick, onKeyDown: this.handleKeyDown }, hAsync("div", { class: "onav__nav" }, this.scrollControls && (hAsync("nano-icon-button", { part: "scroll-button scroll-button-prev", class: {
|
21382
21407
|
'onav__scroll-button': true,
|
21383
21408
|
'onav__scroll-button--start': true,
|
@@ -21407,9 +21432,11 @@ class OverflowNav {
|
|
21407
21432
|
"activeHandler": [16],
|
21408
21433
|
"inActiveHandler": [16],
|
21409
21434
|
"isActiveHandler": [16],
|
21435
|
+
"instantReCalc": [32],
|
21410
21436
|
"hasScrollControls": [32],
|
21411
21437
|
"hideControlEnd": [32],
|
21412
|
-
"hideControlStart": [32]
|
21438
|
+
"hideControlStart": [32],
|
21439
|
+
"syncActiveItem": [64]
|
21413
21440
|
},
|
21414
21441
|
"$listeners$": undefined,
|
21415
21442
|
"$lazyBundleId$": "-",
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@nanoporetech-digital/components",
|
3
|
-
"version": "4.
|
3
|
+
"version": "4.4.0",
|
4
4
|
"repository": {
|
5
5
|
"type": "git",
|
6
6
|
"url": "https://git.oxfordnanolabs.local/Digital/nano-components"
|
@@ -130,7 +130,7 @@
|
|
130
130
|
"nanopore",
|
131
131
|
"digital"
|
132
132
|
],
|
133
|
-
"gitHead": "
|
133
|
+
"gitHead": "fb91e173651970e1d23a73b661444c6dec923154",
|
134
134
|
"volta": {
|
135
135
|
"node": "14.18.1",
|
136
136
|
"npm": "8.6.0"
|
@@ -1 +0,0 @@
|
|
1
|
-
{"file":"table.worker-590fb88b.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"file":"table.worker-9cfa17ca.js","mappings":";;;;;;;;;;;;;;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
|
@@ -1,5 +0,0 @@
|
|
1
|
-
/*!
|
2
|
-
* Web Components for Nanopore digital Web Apps
|
3
|
-
*/
|
4
|
-
import{r as t,h as i,a,g as e}from"./p-f6a8467a.js";import{g as s,a as o}from"./p-257432ff.js";import{d as r}from"./p-9746b0a5.js";const n=':host{box-sizing:border-box}*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}:host{--indicator-transition:var(--nano-transition-fast, 0.3s);--indicator-color:#90c6e7;--indicator-size:0;--indicator-track-color:#e4e6e8;--indicator-track-size:var(--indicator-size);--scroll-btn-color:"currentColor";--fade-size:1.75rem;--fade-transparency:0;--padding:var(--fade-size);position:relative;z-index:var(--nano-layer-index-raised, 5)}:host([orientation=horizontal]){display:block}:host([orientation=vertical]){display:flex}.onav__scroller{scrollbar-width:none;-ms-overflow-style:none;display:flex;transition:var(--nano-transition-medium, 0.5s) ease;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=");-webkit-mask-size:calc(100% + var(--fade-size) * 4);mask-size:calc(100% + var(--fade-size) * 4);-webkit-mask-position:calc(var(--fade-size) * -2);mask-position:calc(var(--fade-size) * -2)}.onav__scroller::-webkit-scrollbar{inline-size:0;block-size:0}.onav__scroller::after{content:" ";line-height:1;flex:0 0 auto;display:block}.onav--has-scroll-controls-start .onav__scroller{-webkit-mask-position:0;mask-position:0;-webkit-mask-size:calc(100% + var(--fade-size) * 2);mask-size:calc(100% + var(--fade-size) * 2)}.onav--has-scroll-controls-end .onav__scroller{-webkit-mask-position:calc(var(--fade-size) * -1);mask-position:calc(var(--fade-size) * -1);-webkit-mask-size:calc(100% + var(--fade-size));mask-size:calc(100% + var(--fade-size))}.onav--has-scroll-controls-start.onav--has-scroll-controls-end .onav__scroller{-webkit-mask-size:100%;mask-size:100%;-webkit-mask-position:0;mask-position:0}.onav__items{flex:1 1 auto;position:relative;width:auto;flex-wrap:nowrap;display:flex}.onav__items::before{content:"";background:var(--indicator-track-color);display:block;position:absolute;z-index:1}.onav__active-indicator{position:absolute;z-index:10;transition:var(--indicator-transition) transform ease, var(--indicator-transition) width ease, var(--indicator-transition) height ease}.onav nano-icon-button.onav__scroll-button{--nano-color-base:var(--scroll-btn-color);display:flex;align-items:center;justify-content:center;position:absolute;border:unset;z-index:2;transition:var(--nano-transition-fast, 0.3s) ease opacity;opacity:0;color:var(--scroll-btn-color);pointer-events:none}.onav nano-icon-button.onav__scroll-button:focus{outline:none}.onav nano-icon-button.onav__scroll-button.is-shown{opacity:1;pointer-events:all}.onav nano-icon-button.onav__scroll-button:focus-visible{box-shadow:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8))) inset}.onav--horizontal .onav__scroller{overflow-x:auto;overflow-y:hidden;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;padding-inline:var(--padding);-webkit-mask-image:linear-gradient(to left, rgb(0 0 0/var(--fade-transparency)) 0, rgb(0 0 0/var(--fade-transparency)) var(--fade-size), black calc(var(--fade-size) * 2), black calc(100% - var(--fade-size) * 2), rgb(0 0 0/var(--fade-transparency)) calc(100% - var(--fade-size)), rgb(0 0 0/var(--fade-transparency)));mask-image:linear-gradient(to left, rgb(0 0 0/var(--fade-transparency)) 0, rgb(0 0 0/var(--fade-transparency)) var(--fade-size), black calc(var(--fade-size) * 2), black calc(100% - var(--fade-size) * 2), rgb(0 0 0/var(--fade-transparency)) calc(100% - var(--fade-size)), rgb(0 0 0/var(--fade-transparency)))}.onav--horizontal .onav__scroller::after{padding-inline:0 var(--fade-size);padding-block:0 0}.onav--horizontal.onav--has-scroll-controls .onav__scroller{padding-inline:var(--fade-size) 0;-webkit-padding-before:0;padding-block-start:0;-webkit-padding-after:0;padding-block-end:0}.onav--horizontal .onav__items{flex-direction:row}.onav--horizontal .onav__items::before{content:"";width:100%;height:var(--indicator-track-size);inset-block-end:0}.onav--horizontal .onav__active-indicator{inset-block-end:0;-webkit-border-after:solid var(--indicator-size) var(--indicator-color);border-block-end:solid var(--indicator-size) var(--indicator-color)}.onav--horizontal .onav__scroll-button{inset-block:0}.onav--horizontal .onav__scroll-button--start{inset-inline-start:0}.onav--horizontal .onav__scroll-button--end{inset-inline-end:0}.onav--vertical{width:100%}.onav--vertical .onav__nav{max-height:100%;display:flex}.onav--vertical .onav__scroller{width:100%;overflow-y:auto;overflow-x:hidden;flex-direction:column;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;padding-block:var(--padding);-webkit-mask-image:linear-gradient(to top, rgb(0 0 0/var(--fade-transparency)) 0, rgb(0 0 0/var(--fade-transparency)) var(--fade-size), black calc(var(--fade-size) * 2), black calc(100% - var(--fade-size) * 2), rgb(0 0 0/var(--fade-transparency)) calc(100% - var(--fade-size)), rgb(0 0 0/var(--fade-transparency)));mask-image:linear-gradient(to top, rgb(0 0 0/var(--fade-transparency)) 0, rgb(0 0 0/var(--fade-transparency)) var(--fade-size), black calc(var(--fade-size) * 2), black calc(100% - var(--fade-size) * 2), rgb(0 0 0/var(--fade-transparency)) calc(100% - var(--fade-size)), rgb(0 0 0/var(--fade-transparency)));padding-inline:0 0;-webkit-padding-before:calc(var(--fade-size) + 12px);padding-block-start:calc(var(--fade-size) + 12px);-webkit-padding-after:var(--fade-size);padding-block-end:var(--fade-size)}.onav--vertical .onav__scroller::after{padding-inline:0 0;padding-block:0 var(--fade-size)}.onav--vertical .onav__items{flex-direction:column;width:-moz-fit-content;width:fit-content}.onav--vertical .onav__items::before{content:"";height:100%;width:var(--indicator-track-size);inset-inline-start:0}.onav--vertical .onav__active-indicator{inset-inline-start:0;-webkit-border-start:solid var(--indicator-size) var(--indicator-color);border-inline-start:solid var(--indicator-size) var(--indicator-color)}.onav--vertical .onav__scroll-button{inset-inline:0}.onav--vertical .onav__scroll-button--start{inset-block-start:0}.onav--vertical .onav__scroll-button--end{inset-block-end:0}';const l=class{watchIsActiveHandler(){this.activeItem=this.allActiveItems.find((t=>this.isActiveHandler(t)));this.recalculatePositions(true)}constructor(i){t(this,i);this.updateScrollControls=()=>{if(!this.nav)return;this.hasScrollControls=this.nav[this.scrollProp]>this.nav[this.clientDimProp]&&this.nav[this.scrollProp]>this.itemContainer[this.clientDimProp];this.handleScroll()};this.handleScroll=()=>{if(!this.hasScrollControls){this.hideControlStart=this.hideControlEnd=true;return}const t=this.isRtl?this.nav[this.scrollOffset]===0:Math.abs(this.nav[this.clientDimProp]-(this.nav[this.scrollProp]-this.nav[this.scrollOffset]))<2;const i=this.isRtl?Math.abs(this.nav[this.scrollProp]+this.nav[this.scrollOffset]-this.nav[this.clientDimProp])<2:this.nav[this.scrollOffset]===0;if(i){this.hideControlStart=true;this.hideControlEnd=false}else if(t){this.hideControlStart=false;this.hideControlEnd=true}else{this.hideControlEnd=false;this.hideControlStart=false}};this.handleBtnClick=(t=false)=>{const i=this.navDim;let a;if(t)a=this.nav[this.scrollOffset]+i-20;else a=this.nav[this.scrollOffset]-i+20;try{this.nav.scroll({left:this.orientation==="horizontal"?a:0,top:this.orientation==="vertical"?a:0,behavior:"smooth"})}catch(t){this.nav[this.scrollOffset]=a}};this.slotChangeHandler=()=>{if(this.allActiveItems.length<2)return;const t=this.allActiveItems.find((t=>this.isActiveHandler(t)));if(t)this.activeItem=t;this.recalculatePositions()};this.handleClick=t=>{if(this.allActiveItems.length<2)return;const i=t.composedPath().find((t=>this.allActiveItems.includes(t)));if(i)this.activeItem=i};this.handleKeyDown=t=>{if(["Enter"," "].includes(t.key)){const i=t.composedPath().find((t=>this.allActiveItems.includes(t)));if(i)this.activeItem=i}};this.recalculatePositions=t=>{this.updateScrollControls();this.syncActiveItemIndicator(t);this.scrollToActiveItem(t)};this.scrollControls=true;this.orientation="horizontal";this.activeHandler=t=>t.classList.add("active");this.inActiveHandler=t=>t.classList.remove("active");this.isActiveHandler=t=>t.classList.contains("active");this.hasScrollControls=false;this.hideControlEnd=true;this.hideControlStart=true;this.recalculatePositions=r(this.recalculatePositions,50)}get scrollProp(){return this.orientation==="horizontal"?"scrollWidth":"scrollHeight"}get clientDimProp(){return this.orientation==="horizontal"?"clientWidth":"clientHeight"}get scrollOffset(){return this.orientation==="horizontal"?"scrollLeft":"scrollTop"}watchScrollControls(){if(this.hasScrollControls)this.handleScroll();else this.hideControlStart=this.hideControlEnd=true}hideEndBtn(){if(!this.endBtn)return;this.activateBtn(this.endBtn,!this.hideControlEnd)}hideStartBtn(){if(!this.startBtn)return;this.activateBtn(this.startBtn,!this.hideControlStart)}activateBtn(t,i=true){if(!i){t.tabIndex=-1;t.disabled=true;t.classList.remove("is-shown");return}t.tabIndex=0;t.disabled=false;t.classList.add("is-shown")}get allActiveItems(){return this.allItems.filter((t=>!t.disabled||t.classList.contains("disabled")))}get allItems(){return s(this.host,"*",true)}get activeItem(){return this._activeItem}set activeItem(t){if(!t||t===this.activeItem||t.disabled||!this.allActiveItems.includes(t)){return}this._activeItem=t;this.allActiveItems.forEach((t=>{if(t===this._activeItem)this.activeHandler(t);else this.inActiveHandler(t)}));this.syncActiveItemIndicator();this.scrollToActiveItem()}get navDim(){if(!this.nav)return 0;const t=getComputedStyle(this.nav);let i=this.nav[this.clientDimProp];if(this.orientation==="horizontal"){return i-=parseFloat(t.paddingLeft)+parseFloat(t.paddingRight)}else{return i-=parseFloat(t.paddingTop)+parseFloat(t.paddingBottom)}}scrollToActiveItem(t){if(!this.nav||!this.activeItem)return;requestAnimationFrame((()=>{this.activeItem.scrollIntoView({behavior:t?"auto":"smooth",block:"center",inline:"center"})}))}syncActiveItemIndicator(t){if(!this.activeItem)return;const i=this.activeItem;const a=i.clientWidth||0;const e=i.clientHeight+2||0;const s=o(i,this.itemContainer);if(!this.activeIndicator)return;const r=s.top;const n=s.left;if(t)this.activeIndicator.style.transition="none";switch(this.orientation){case"horizontal":this.activeIndicator.style.width=`${a}px`;this.activeIndicator.style.height=null;this.activeIndicator.style.transform=`translateX(${n}px)`;break;case"vertical":this.activeIndicator.style.width=null;this.activeIndicator.style.height=`${e}px`;this.activeIndicator.style.transform=`translateY(${r}px)`;break}setTimeout((()=>this.activeIndicator.style.transition=null),400)}connectedCallback(){this.isRtl=this.orientation==="horizontal"&&!!this.host.closest('[dir="rtl"]');if(!window["ResizeObserver"])return;if(this.ro){this.ro.disconnect();this.ro=undefined}const t=this.ro=new ResizeObserver(this.recalculatePositions);t.observe(this.host)}componentDidLoad(){this.activeItem=this.allActiveItems.find((t=>this.isActiveHandler(t)));this.recalculatePositions(true)}disconnectedCallback(){if(this.ro){this.ro.disconnect();this.ro=undefined}}render(){return i(a,{dir:this.isRtl?"rtl":null},i("div",{part:"base",class:{onav:true,[`onav--${this.orientation}`]:true,"onav--has-scroll-controls":this.hasScrollControls,"onav--has-scroll-controls-start":!this.hideControlStart,"onav--has-scroll-controls-end":!this.hideControlEnd},onClick:this.handleClick,onKeyDown:this.handleKeyDown},i("div",{class:"onav__nav"},this.scrollControls&&i("nano-icon-button",{part:"scroll-button scroll-button-prev",class:{"onav__scroll-button":true,"onav__scroll-button--start":true},ref:t=>this.startBtn=t,onClick:()=>this.handleBtnClick(false),label:"Click to scroll",iconName:this.orientation==="horizontal"?"light/chevron-left":"light/chevron-up"}),i("div",{part:"scroller",ref:t=>this.nav=t,class:"onav__scroller",onScroll:this.handleScroll},i("div",{part:"items",ref:t=>this.itemContainer=t,class:"onav__items"},i("div",{part:"indicator",ref:t=>this.activeIndicator=t,class:"onav__active-indicator"}),i("slot",{onSlotchange:this.slotChangeHandler}))),this.scrollControls&&i("nano-icon-button",{part:"scroll-button scroll-button-next",class:{"onav__scroll-button":true,"onav__scroll-button--end":true},ref:t=>this.endBtn=t,onClick:()=>this.handleBtnClick(true),label:"Click to scroll",iconName:this.orientation==="horizontal"?"light/chevron-right":"light/chevron-down"}))))}get host(){return e(this)}static get watchers(){return{isActiveHandler:["watchIsActiveHandler"],hasScrollControls:["watchScrollControls"],hideControlEnd:["hideEndBtn"],hideControlStart:["hideStartBtn"]}}};l.style=n;export{l as nano_overflow_nav};
|
5
|
-
//# sourceMappingURL=p-556b6e8a.entry.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["overflowNavCss","OverflowNav","watchIsActiveHandler","this","activeItem","allActiveItems","find","el","isActiveHandler","recalculatePositions","constructor","hostRef","updateScrollControls","nav","hasScrollControls","scrollProp","clientDimProp","itemContainer","handleScroll","hideControlStart","hideControlEnd","finishEnd","isRtl","scrollOffset","Math","abs","finishStart","handleBtnClick","goEnd","navDim","scrollAmt","scroll","left","orientation","top","behavior","e","slotChangeHandler","length","item","handleClick","event","foundItem","composedPath","includes","handleKeyDown","key","init","syncActiveItemIndicator","scrollToActiveItem","classList","add","remove","contains","debounce","watchScrollControls","hideEndBtn","endBtn","activateBtn","hideStartBtn","startBtn","btn","activate","tabIndex","disabled","allItems","filter","getDirectChildren","host","_activeItem","forEach","activeHandler","inActiveHandler","computedStyle","getComputedStyle","clientDim","parseFloat","paddingLeft","paddingRight","paddingTop","paddingBottom","instant","requestAnimationFrame","scrollIntoView","block","inline","width","clientWidth","height","clientHeight","offset","getOffset","activeIndicator","offsetTop","offsetLeft","style","transition","transform","setTimeout","connectedCallback","closest","window","ro","disconnect","undefined","mo","ResizeObserver","observe","componentDidLoad","disconnectedCallback","render","h","Host","dir","part","class","onav","onClick","onKeyDown","scrollControls","ref","label","iconName","onScroll","onSlotchange"],"sources":["./src/components/overflow-nav/overflow-nav.scss?tag=nano-overflow-nav&encapsulation=shadow","./src/components/overflow-nav/overflow-nav.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:host {\n /**\n * @prop --indicator-transition: Defaults to #{$transition-fast}\n * @prop --indicator-color: Defaults to #{map.get($colors, lightblue)};\n * @prop --indicator-size: Defaults to 0;\n * @prop --indicator-track-color: Defaults to #{map.get($colors, lightgrey)};\n * @prop --indicator-track-size: Defaults to var(--indicator-size);\n\n * @prop --scroll-btn-color: Defaults to 'currentColor';\n * @prop --fade-size: The size of the fade areas (when items do not fit). Defaults to 1.75rem;\n * @prop --fade-transparency: Defaults to 0;\n *\n * @prop --padding: Padding that matches the fade size will stop items shifting if fade areas are added (i.e when items do not fit). Defaults to var(--fade-size);\n */\n\n --indicator-transition: #{$transition-fast};\n --indicator-color: #{map.get($colors, lightblue)};\n --indicator-size: 0;\n --indicator-track-color: #{map.get($colors, lightgrey)};\n --indicator-track-size: var(--indicator-size);\n --scroll-btn-color: 'currentColor';\n --fade-size: 1.75rem;\n --fade-transparency: 0;\n --padding: var(--fade-size);\n\n position: relative;\n z-index: #{$layer-index-raised};\n}\n\n:host([orientation=\"horizontal\"]) {\n display: block;\n}\n\n:host([orientation=\"vertical\"]) {\n display: flex;\n}\n\n.onav {\n $root: &;\n\n &__scroller {\n @include hide-scrollbar();\n\n display: flex;\n transition: #{$transition-medium} ease;\n background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=');\n mask-size: calc(100% + calc(var(--fade-size) * 4));\n mask-position: calc(var(--fade-size) * -2);\n\n &::after {\n content: ' ';\n line-height: 1;\n flex: 0 0 auto;\n display: block;\n }\n\n #{$root}--has-scroll-controls-start & {\n mask-position: 0;\n mask-size: calc(100% + (var(--fade-size) * 2));\n }\n\n #{$root}--has-scroll-controls-end & {\n mask-position: calc(var(--fade-size) * -1);\n mask-size: calc(100% + var(--fade-size));\n }\n\n #{$root}--has-scroll-controls-start#{$root}--has-scroll-controls-end & {\n mask-size: 100%;\n mask-position: 0;\n }\n }\n\n &__items {\n flex: 1 1 auto;\n position: relative;\n width: auto;\n flex-wrap: nowrap;\n display: flex;\n\n &::before {\n content: '';\n background: var(--indicator-track-color);\n display: block;\n position: absolute;\n z-index: 1;\n }\n }\n\n &__active-indicator {\n position: absolute;\n z-index: 10;\n transition:\n var(--indicator-transition) transform ease,\n var(--indicator-transition) width ease,\n var(--indicator-transition) height ease;\n }\n\n nano-icon-button.onav__scroll-button {\n --nano-color-base: var(--scroll-btn-color);\n\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n border: unset;\n z-index: 2;\n transition: #{$transition-fast} ease opacity;\n opacity: 0;\n color: var(--scroll-btn-color);\n pointer-events: none;\n\n &:focus {\n outline: none;\n }\n\n &.is-shown {\n opacity: 1;\n pointer-events: all;\n }\n\n &:focus-visible {\n box-shadow: #{$control-focus-style} inset;\n }\n }\n\n ///////////// HORIZONTAL ///////////////\n\n &--horizontal {\n\n #{$root}__scroller {\n overflow-x: auto;\n overflow-y: hidden;\n mask-repeat: no-repeat;\n padding-inline: var(--padding);\n mask-image:\n linear-gradient(\n to left,\n rgb(0 0 0 / var(--fade-transparency)) 0,\n rgb(0 0 0 / var(--fade-transparency)) var(--fade-size),\n rgb(0 0 0 / 100%) calc(var(--fade-size) * 2),\n rgb(0 0 0 / 100%) calc(100% - (var(--fade-size) * 2)),\n rgb(0 0 0 / var(--fade-transparency))\n calc(100% - var(--fade-size)),\n rgb(0 0 0 / var(--fade-transparency))\n );\n\n &::after {\n padding-inline: 0 var(--fade-size);\n padding-block: 0 0;\n }\n }\n\n &#{$root}--has-scroll-controls #{$root}__scroller {\n padding-inline: var(--fade-size) 0;\n padding-block-start: 0;\n padding-block-end: 0;\n }\n\n #{$root}__items {\n flex-direction: row;\n\n &::before {\n content: '';\n width: 100%;\n height: var(--indicator-track-size);\n inset-block-end: 0;\n }\n }\n\n #{$root}__active-indicator {\n inset-block-end: 0;\n border-block-end: solid var(--indicator-size) var(--indicator-color);\n }\n\n #{$root}__scroll-button {\n inset-block: 0;\n\n &--start {\n inset-inline-start: 0;\n }\n\n &--end {\n inset-inline-end: 0;\n }\n }\n }\n\n ///////////// VERTICAL ///////////////\n\n &--vertical {\n width: 100%;\n\n #{$root}__nav {\n max-height: 100%;\n display: flex;\n }\n\n #{$root}__scroller {\n width: 100%;\n overflow-y: auto;\n overflow-x: hidden;\n flex-direction: column;\n mask-repeat: no-repeat;\n padding-block: var(--padding);\n mask-image:\n linear-gradient(\n to top,\n rgb(0 0 0 / var(--fade-transparency)) 0,\n rgb(0 0 0 / var(--fade-transparency)) var(--fade-size),\n rgb(0 0 0 / 100%) calc(var(--fade-size) * 2),\n rgb(0 0 0 / 100%) calc(100% - (var(--fade-size) * 2)),\n rgb(0 0 0 / var(--fade-transparency))\n calc(100% - var(--fade-size)),\n rgb(0 0 0 / var(--fade-transparency))\n );\n padding-inline: 0 0;\n padding-block-start: calc(var(--fade-size) + 12px);\n padding-block-end: var(--fade-size);\n\n &::after {\n padding-inline: 0 0;\n padding-block: 0 var(--fade-size);\n }\n }\n\n #{$root}__items {\n flex-direction: column;\n width: fit-content;\n\n &::before {\n content: '';\n height: 100%;\n width: var(--indicator-track-size);\n inset-inline-start: 0;\n }\n }\n\n #{$root}__active-indicator {\n inset-inline-start: 0;\n border-inline-start: solid var(--indicator-size) var(--indicator-color);\n }\n\n #{$root}__scroll-button {\n inset-inline: 0;\n\n &--start {\n inset-block-start: 0;\n }\n\n &--end {\n inset-block-end: 0;\n }\n }\n }\n}\n","import {\n Component,\n ComponentInterface,\n Host,\n h,\n Element,\n Prop,\n Watch,\n State,\n} from '@stencil/core';\nimport { getDirectChildren, getOffset } from '../../utils/dom';\nimport { debounce } from '../../utils/throttle';\n\n/**\n * Primarily used to display navigational items that may not fit on smaller screens.\n *\n * - Accepts any collection of elements\n * - Gives visual cues of 'more' with auto display fade effect and scroll buttons\n * - Auto scrolls to the active item onload\n *\n * @slot - Default slot to place items.\n *\n * @part base - root, wrapper element\n * @part scroller - the scrolling element\n * @part items - the item wrapper element\n * @part indicator - the animated, indicator element\n * @part scroll-button - The buttons shown at either side of the scrolling area\n * @part scroll-button-prev - The button shown at the start of the scrolling area\n * @part scroll-button-next - The button shown at the end of the scrolling area\n */\n\n@Component({\n tag: 'nano-overflow-nav',\n styleUrl: 'overflow-nav.scss',\n shadow: true,\n})\nexport class OverflowNav implements ComponentInterface {\n // public surface\n\n /** Disables the scroll arrow buttons that appear when content overflows */\n @Prop() scrollControls = true;\n\n /** The flex direction of the element */\n @Prop({ reflect: true }) orientation: 'horizontal' | 'vertical' =\n 'horizontal';\n\n /**\n * A function called when an item becomes 'active' (via click or keyboard)\n * @param item\n * @returns void */\n @Prop() activeHandler = (item: HTMLElement) => item.classList.add('active');\n\n /**\n * A function called when an item becomes 'inactive'\n * (because another item was made active)\n * @param item\n * @returns void */\n @Prop() inActiveHandler = (item: HTMLElement) =>\n item.classList.remove('active');\n\n /**\n * A function called to assess an initial, active item\n * @param item\n * @returns void */\n @Prop() isActiveHandler = (item: HTMLElement) =>\n item.classList.contains('active');\n\n @Watch('isActiveHandler')\n watchIsActiveHandler() {\n this.activeItem = this.allActiveItems.find((el) =>\n this.isActiveHandler(el)\n );\n this.recalculatePositions(true);\n }\n\n // private state\n\n constructor() {\n this.recalculatePositions = debounce(this.recalculatePositions, 50);\n }\n\n private ro?: ResizeObserver;\n private nav?: HTMLElement;\n private itemContainer?: HTMLElement;\n private isRtl?: boolean;\n private endBtn: HTMLNanoIconButtonElement;\n private startBtn: HTMLNanoIconButtonElement;\n private activeIndicator: HTMLElement;\n\n get scrollProp() {\n return this.orientation === 'horizontal' ? 'scrollWidth' : 'scrollHeight';\n }\n\n get clientDimProp() {\n return this.orientation === 'horizontal' ? 'clientWidth' : 'clientHeight';\n }\n\n get scrollOffset() {\n return this.orientation === 'horizontal' ? 'scrollLeft' : 'scrollTop';\n }\n\n @Element() host: HTMLNanoOverflowNavElement;\n\n @State() hasScrollControls = false;\n\n @Watch('hasScrollControls')\n watchScrollControls() {\n if (this.hasScrollControls) this.handleScroll();\n else this.hideControlStart = this.hideControlEnd = true;\n }\n\n @State() hideControlEnd = true;\n\n @Watch('hideControlEnd')\n hideEndBtn() {\n if (!this.endBtn) return;\n this.activateBtn(this.endBtn, !this.hideControlEnd);\n }\n\n @State() hideControlStart = true;\n\n @Watch('hideControlStart')\n hideStartBtn() {\n if (!this.startBtn) return;\n this.activateBtn(this.startBtn, !this.hideControlStart);\n }\n\n // private logic\n\n private activateBtn(btn: HTMLNanoIconButtonElement, activate = true) {\n if (!activate) {\n btn.tabIndex = -1;\n btn.disabled = true;\n btn.classList.remove('is-shown');\n return;\n }\n btn.tabIndex = 0;\n btn.disabled = false;\n btn.classList.add('is-shown');\n }\n\n get allActiveItems() {\n return this.allItems.filter(\n (el: any) => !el.disabled || el.classList.contains('disabled')\n );\n }\n\n get allItems() {\n return getDirectChildren<HTMLElement>(this.host, '*', true);\n }\n\n get activeItem() {\n return this._activeItem;\n }\n\n set activeItem(item: HTMLElement) {\n if (\n !item ||\n item === this.activeItem ||\n (item as any).disabled ||\n !this.allActiveItems.includes(item)\n ) {\n return;\n }\n\n this._activeItem = item;\n this.allActiveItems.forEach((el) => {\n if (el === this._activeItem) this.activeHandler(el);\n else this.inActiveHandler(el);\n });\n this.syncActiveItemIndicator();\n this.scrollToActiveItem();\n }\n private _activeItem: HTMLElement;\n\n get navDim() {\n if (!this.nav) return 0;\n\n const computedStyle = getComputedStyle(this.nav);\n let clientDim = this.nav[this.clientDimProp];\n\n if (this.orientation === 'horizontal') {\n return (clientDim -=\n parseFloat(computedStyle.paddingLeft) +\n parseFloat(computedStyle.paddingRight));\n } else {\n return (clientDim -=\n parseFloat(computedStyle.paddingTop) +\n parseFloat(computedStyle.paddingBottom));\n }\n }\n\n private scrollToActiveItem(instant?: boolean) {\n if (!this.nav || !this.activeItem) return;\n requestAnimationFrame(() => {\n this.activeItem.scrollIntoView({\n behavior: instant ? 'auto' : 'smooth',\n block: 'center',\n inline: 'center',\n });\n });\n }\n\n private syncActiveItemIndicator(instant?: boolean) {\n if (!this.activeItem) return;\n\n const item = this.activeItem;\n const width = item.clientWidth || 0;\n const height = item.clientHeight + 2 || 0;\n const offset = getOffset(item, this.itemContainer);\n\n if (!this.activeIndicator) return;\n\n const offsetTop = offset.top;\n const offsetLeft = offset.left;\n\n if (instant) this.activeIndicator.style.transition = 'none';\n\n switch (this.orientation) {\n case 'horizontal':\n this.activeIndicator.style.width = `${width}px`;\n this.activeIndicator.style.height = null;\n this.activeIndicator.style.transform = `translateX(${offsetLeft}px)`;\n break;\n\n case 'vertical':\n this.activeIndicator.style.width = null;\n this.activeIndicator.style.height = `${height}px`;\n this.activeIndicator.style.transform = `translateY(${offsetTop}px)`;\n break;\n }\n setTimeout(() => (this.activeIndicator.style.transition = null), 400);\n }\n\n private updateScrollControls = () => {\n if (!this.nav) return;\n\n this.hasScrollControls =\n this.nav[this.scrollProp] > this.nav[this.clientDimProp] &&\n this.nav[this.scrollProp] > this.itemContainer[this.clientDimProp];\n this.handleScroll();\n };\n\n private handleScroll = () => {\n if (!this.hasScrollControls) {\n this.hideControlStart = this.hideControlEnd = true;\n return;\n }\n const finishEnd = this.isRtl\n ? this.nav[this.scrollOffset] === 0\n : Math.abs(\n this.nav[this.clientDimProp] -\n (this.nav[this.scrollProp] - this.nav[this.scrollOffset])\n ) < 2;\n\n const finishStart = this.isRtl\n ? Math.abs(\n this.nav[this.scrollProp] +\n this.nav[this.scrollOffset] -\n this.nav[this.clientDimProp]\n ) < 2\n : this.nav[this.scrollOffset] === 0;\n\n if (finishStart) {\n this.hideControlStart = true;\n this.hideControlEnd = false;\n } else if (finishEnd) {\n this.hideControlStart = false;\n this.hideControlEnd = true;\n } else {\n this.hideControlEnd = false;\n this.hideControlStart = false;\n }\n };\n\n private handleBtnClick = (goEnd: boolean = false) => {\n const navDim = this.navDim;\n let scrollAmt;\n if (goEnd) scrollAmt = this.nav[this.scrollOffset] + navDim - 20;\n else scrollAmt = this.nav[this.scrollOffset] - navDim + 20;\n\n try {\n this.nav.scroll({\n left: this.orientation === 'horizontal' ? scrollAmt : 0,\n top: this.orientation === 'vertical' ? scrollAmt : 0,\n behavior: 'smooth',\n });\n } catch (e) {\n this.nav[this.scrollOffset] = scrollAmt;\n }\n };\n\n private slotChangeHandler = () => {\n if (this.allActiveItems.length < 2) return;\n const item = this.allActiveItems.find((el) => this.isActiveHandler(el));\n if (item) this.activeItem = item;\n this.recalculatePositions();\n };\n\n private handleClick = (event: MouseEvent) => {\n if (this.allActiveItems.length < 2) return;\n const foundItem = event\n .composedPath()\n .find((e) => this.allActiveItems.includes(e as any)) as HTMLElement;\n if (foundItem) this.activeItem = foundItem;\n };\n\n private handleKeyDown = (event: KeyboardEvent) => {\n // Activate a tab\n if (['Enter', ' '].includes(event.key)) {\n const foundItem = event\n .composedPath()\n .find((e) => this.allActiveItems.includes(e as any)) as HTMLElement;\n if (foundItem) this.activeItem = foundItem;\n }\n };\n\n private recalculatePositions = (init?: any) => {\n this.updateScrollControls();\n this.syncActiveItemIndicator(init);\n this.scrollToActiveItem(init);\n };\n\n // lifecycle\n\n connectedCallback(): void {\n this.isRtl =\n this.orientation === 'horizontal' && !!this.host.closest('[dir=\"rtl\"]');\n\n if (!window['ResizeObserver']) return;\n\n if (this.ro) {\n this.ro.disconnect();\n this.ro = undefined;\n }\n const mo = (this.ro = new ResizeObserver(this.recalculatePositions));\n mo.observe(this.host);\n }\n\n componentDidLoad(): void {\n this.activeItem = this.allActiveItems.find((el) =>\n this.isActiveHandler(el)\n );\n this.recalculatePositions(true);\n }\n\n disconnectedCallback(): void {\n if (this.ro) {\n this.ro.disconnect();\n this.ro = undefined;\n }\n }\n\n render() {\n return (\n <Host dir={this.isRtl ? 'rtl' : null}>\n <div\n part=\"base\"\n class={{\n onav: true,\n [`onav--${this.orientation}`]: true,\n 'onav--has-scroll-controls': this.hasScrollControls,\n 'onav--has-scroll-controls-start': !this.hideControlStart,\n 'onav--has-scroll-controls-end': !this.hideControlEnd,\n }}\n onClick={this.handleClick}\n onKeyDown={this.handleKeyDown}\n >\n <div class=\"onav__nav\">\n {this.scrollControls && (\n <nano-icon-button\n part=\"scroll-button scroll-button-prev\"\n class={{\n 'onav__scroll-button': true,\n 'onav__scroll-button--start': true,\n }}\n ref={(btn) => (this.startBtn = btn)}\n onClick={() => this.handleBtnClick(false)}\n label=\"Click to scroll\"\n iconName={\n this.orientation === 'horizontal'\n ? 'light/chevron-left'\n : 'light/chevron-up'\n }\n />\n )}\n\n <div\n part=\"scroller\"\n ref={(el) => (this.nav = el)}\n class=\"onav__scroller\"\n onScroll={this.handleScroll}\n >\n <div\n part=\"items\"\n ref={(el) => (this.itemContainer = el)}\n class=\"onav__items\"\n >\n <div\n part=\"indicator\"\n ref={(el) => (this.activeIndicator = el)}\n class=\"onav__active-indicator\"\n />\n <slot onSlotchange={this.slotChangeHandler} />\n </div>\n </div>\n\n {this.scrollControls && (\n <nano-icon-button\n part=\"scroll-button scroll-button-next\"\n class={{\n 'onav__scroll-button': true,\n 'onav__scroll-button--end': true,\n }}\n ref={(btn) => (this.endBtn = btn)}\n onClick={() => this.handleBtnClick(true)}\n label=\"Click to scroll\"\n iconName={\n this.orientation === 'horizontal'\n ? 'light/chevron-right'\n : 'light/chevron-down'\n }\n />\n )}\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":";;;mIAAA,MAAMA,EAAiB,47L,MCoCVC,EAAW,MAgCtBC,uBACEC,KAAKC,WAAaD,KAAKE,eAAeC,MAAMC,GAC1CJ,KAAKK,gBAAgBD,KAEvBJ,KAAKM,qBAAqB,K,CAK5BC,YAAAC,G,UA6JQR,KAAAS,qBAAuB,KAC7B,IAAKT,KAAKU,IAAK,OAEfV,KAAKW,kBACHX,KAAKU,IAAIV,KAAKY,YAAcZ,KAAKU,IAAIV,KAAKa,gBAC1Cb,KAAKU,IAAIV,KAAKY,YAAcZ,KAAKc,cAAcd,KAAKa,eACtDb,KAAKe,cAAc,EAGbf,KAAAe,aAAe,KACrB,IAAKf,KAAKW,kBAAmB,CAC3BX,KAAKgB,iBAAmBhB,KAAKiB,eAAiB,KAC9C,M,CAEF,MAAMC,EAAYlB,KAAKmB,MACnBnB,KAAKU,IAAIV,KAAKoB,gBAAkB,EAChCC,KAAKC,IACHtB,KAAKU,IAAIV,KAAKa,gBACXb,KAAKU,IAAIV,KAAKY,YAAcZ,KAAKU,IAAIV,KAAKoB,gBAC3C,EAER,MAAMG,EAAcvB,KAAKmB,MACrBE,KAAKC,IACHtB,KAAKU,IAAIV,KAAKY,YACZZ,KAAKU,IAAIV,KAAKoB,cACdpB,KAAKU,IAAIV,KAAKa,gBACd,EACJb,KAAKU,IAAIV,KAAKoB,gBAAkB,EAEpC,GAAIG,EAAa,CACfvB,KAAKgB,iBAAmB,KACxBhB,KAAKiB,eAAiB,K,MACjB,GAAIC,EAAW,CACpBlB,KAAKgB,iBAAmB,MACxBhB,KAAKiB,eAAiB,I,KACjB,CACLjB,KAAKiB,eAAiB,MACtBjB,KAAKgB,iBAAmB,K,GAIpBhB,KAAAwB,eAAiB,CAACC,EAAiB,SACzC,MAAMC,EAAS1B,KAAK0B,OACpB,IAAIC,EACJ,GAAIF,EAAOE,EAAY3B,KAAKU,IAAIV,KAAKoB,cAAgBM,EAAS,QACzDC,EAAY3B,KAAKU,IAAIV,KAAKoB,cAAgBM,EAAS,GAExD,IACE1B,KAAKU,IAAIkB,OAAO,CACdC,KAAM7B,KAAK8B,cAAgB,aAAeH,EAAY,EACtDI,IAAK/B,KAAK8B,cAAgB,WAAaH,EAAY,EACnDK,SAAU,U,CAEZ,MAAOC,GACPjC,KAAKU,IAAIV,KAAKoB,cAAgBO,C,GAI1B3B,KAAAkC,kBAAoB,KAC1B,GAAIlC,KAAKE,eAAeiC,OAAS,EAAG,OACpC,MAAMC,EAAOpC,KAAKE,eAAeC,MAAMC,GAAOJ,KAAKK,gBAAgBD,KACnE,GAAIgC,EAAMpC,KAAKC,WAAamC,EAC5BpC,KAAKM,sBAAsB,EAGrBN,KAAAqC,YAAeC,IACrB,GAAItC,KAAKE,eAAeiC,OAAS,EAAG,OACpC,MAAMI,EAAYD,EACfE,eACArC,MAAM8B,GAAMjC,KAAKE,eAAeuC,SAASR,KAC5C,GAAIM,EAAWvC,KAAKC,WAAasC,CAAS,EAGpCvC,KAAA0C,cAAiBJ,IAEvB,GAAI,CAAC,QAAS,KAAKG,SAASH,EAAMK,KAAM,CACtC,MAAMJ,EAAYD,EACfE,eACArC,MAAM8B,GAAMjC,KAAKE,eAAeuC,SAASR,KAC5C,GAAIM,EAAWvC,KAAKC,WAAasC,C,GAI7BvC,KAAAM,qBAAwBsC,IAC9B5C,KAAKS,uBACLT,KAAK6C,wBAAwBD,GAC7B5C,KAAK8C,mBAAmBF,EAAK,E,oBAxRN,K,iBAIvB,a,mBAMuBR,GAAsBA,EAAKW,UAAUC,IAAI,U,qBAOvCZ,GACzBA,EAAKW,UAAUE,OAAO,U,qBAMGb,GACzBA,EAAKW,UAAUG,SAAS,U,uBAsCG,M,oBAQH,K,sBAQE,KAzC1BlD,KAAKM,qBAAuB6C,EAASnD,KAAKM,qBAAsB,G,CAW9DM,iBACF,OAAOZ,KAAK8B,cAAgB,aAAe,cAAgB,c,CAGzDjB,oBACF,OAAOb,KAAK8B,cAAgB,aAAe,cAAgB,c,CAGzDV,mBACF,OAAOpB,KAAK8B,cAAgB,aAAe,aAAe,W,CAQ5DsB,sBACE,GAAIpD,KAAKW,kBAAmBX,KAAKe,oBAC5Bf,KAAKgB,iBAAmBhB,KAAKiB,eAAiB,I,CAMrDoC,aACE,IAAKrD,KAAKsD,OAAQ,OAClBtD,KAAKuD,YAAYvD,KAAKsD,QAAStD,KAAKiB,e,CAMtCuC,eACE,IAAKxD,KAAKyD,SAAU,OACpBzD,KAAKuD,YAAYvD,KAAKyD,UAAWzD,KAAKgB,iB,CAKhCuC,YAAYG,EAAgCC,EAAW,MAC7D,IAAKA,EAAU,CACbD,EAAIE,UAAY,EAChBF,EAAIG,SAAW,KACfH,EAAIX,UAAUE,OAAO,YACrB,M,CAEFS,EAAIE,SAAW,EACfF,EAAIG,SAAW,MACfH,EAAIX,UAAUC,IAAI,W,CAGhB9C,qBACF,OAAOF,KAAK8D,SAASC,QAClB3D,IAAaA,EAAGyD,UAAYzD,EAAG2C,UAAUG,SAAS,a,CAInDY,eACF,OAAOE,EAA+BhE,KAAKiE,KAAM,IAAK,K,CAGpDhE,iBACF,OAAOD,KAAKkE,W,CAGVjE,eAAWmC,GACb,IACGA,GACDA,IAASpC,KAAKC,YACbmC,EAAayB,WACb7D,KAAKE,eAAeuC,SAASL,GAC9B,CACA,M,CAGFpC,KAAKkE,YAAc9B,EACnBpC,KAAKE,eAAeiE,SAAS/D,IAC3B,GAAIA,IAAOJ,KAAKkE,YAAalE,KAAKoE,cAAchE,QAC3CJ,KAAKqE,gBAAgBjE,EAAG,IAE/BJ,KAAK6C,0BACL7C,KAAK8C,oB,CAIHpB,aACF,IAAK1B,KAAKU,IAAK,OAAO,EAEtB,MAAM4D,EAAgBC,iBAAiBvE,KAAKU,KAC5C,IAAI8D,EAAYxE,KAAKU,IAAIV,KAAKa,eAE9B,GAAIb,KAAK8B,cAAgB,aAAc,CACrC,OAAQ0C,GACNC,WAAWH,EAAcI,aACzBD,WAAWH,EAAcK,a,KACtB,CACL,OAAQH,GACNC,WAAWH,EAAcM,YACzBH,WAAWH,EAAcO,c,EAIvB/B,mBAAmBgC,GACzB,IAAK9E,KAAKU,MAAQV,KAAKC,WAAY,OACnC8E,uBAAsB,KACpB/E,KAAKC,WAAW+E,eAAe,CAC7BhD,SAAU8C,EAAU,OAAS,SAC7BG,MAAO,SACPC,OAAQ,UACR,G,CAIErC,wBAAwBiC,GAC9B,IAAK9E,KAAKC,WAAY,OAEtB,MAAMmC,EAAOpC,KAAKC,WAClB,MAAMkF,EAAQ/C,EAAKgD,aAAe,EAClC,MAAMC,EAASjD,EAAKkD,aAAe,GAAK,EACxC,MAAMC,EAASC,EAAUpD,EAAMpC,KAAKc,eAEpC,IAAKd,KAAKyF,gBAAiB,OAE3B,MAAMC,EAAYH,EAAOxD,IACzB,MAAM4D,EAAaJ,EAAO1D,KAE1B,GAAIiD,EAAS9E,KAAKyF,gBAAgBG,MAAMC,WAAa,OAErD,OAAQ7F,KAAK8B,aACX,IAAK,aACH9B,KAAKyF,gBAAgBG,MAAMT,MAAQ,GAAGA,MACtCnF,KAAKyF,gBAAgBG,MAAMP,OAAS,KACpCrF,KAAKyF,gBAAgBG,MAAME,UAAY,cAAcH,OACrD,MAEF,IAAK,WACH3F,KAAKyF,gBAAgBG,MAAMT,MAAQ,KACnCnF,KAAKyF,gBAAgBG,MAAMP,OAAS,GAAGA,MACvCrF,KAAKyF,gBAAgBG,MAAME,UAAY,cAAcJ,OACrD,MAEJK,YAAW,IAAO/F,KAAKyF,gBAAgBG,MAAMC,WAAa,MAAO,I,CA8FnEG,oBACEhG,KAAKmB,MACHnB,KAAK8B,cAAgB,gBAAkB9B,KAAKiE,KAAKgC,QAAQ,eAE3D,IAAKC,OAAO,kBAAmB,OAE/B,GAAIlG,KAAKmG,GAAI,CACXnG,KAAKmG,GAAGC,aACRpG,KAAKmG,GAAKE,S,CAEZ,MAAMC,EAAMtG,KAAKmG,GAAK,IAAII,eAAevG,KAAKM,sBAC9CgG,EAAGE,QAAQxG,KAAKiE,K,CAGlBwC,mBACEzG,KAAKC,WAAaD,KAAKE,eAAeC,MAAMC,GAC1CJ,KAAKK,gBAAgBD,KAEvBJ,KAAKM,qBAAqB,K,CAG5BoG,uBACE,GAAI1G,KAAKmG,GAAI,CACXnG,KAAKmG,GAAGC,aACRpG,KAAKmG,GAAKE,S,EAIdM,SACE,OACEC,EAACC,EAAI,CAACC,IAAK9G,KAAKmB,MAAQ,MAAQ,MAC9ByF,EAAA,OACEG,KAAK,OACLC,MAAO,CACLC,KAAM,KACN,CAAC,SAASjH,KAAK8B,eAAgB,KAC/B,4BAA6B9B,KAAKW,kBAClC,mCAAoCX,KAAKgB,iBACzC,iCAAkChB,KAAKiB,gBAEzCiG,QAASlH,KAAKqC,YACd8E,UAAWnH,KAAK0C,eAEhBkE,EAAA,OAAKI,MAAM,aACRhH,KAAKoH,gBACJR,EAAA,oBACEG,KAAK,mCACLC,MAAO,CACL,sBAAuB,KACvB,6BAA8B,MAEhCK,IAAM3D,GAAS1D,KAAKyD,SAAWC,EAC/BwD,QAAS,IAAMlH,KAAKwB,eAAe,OACnC8F,MAAM,kBACNC,SACEvH,KAAK8B,cAAgB,aACjB,qBACA,qBAKV8E,EAAA,OACEG,KAAK,WACLM,IAAMjH,GAAQJ,KAAKU,IAAMN,EACzB4G,MAAM,iBACNQ,SAAUxH,KAAKe,cAEf6F,EAAA,OACEG,KAAK,QACLM,IAAMjH,GAAQJ,KAAKc,cAAgBV,EACnC4G,MAAM,eAENJ,EAAA,OACEG,KAAK,YACLM,IAAMjH,GAAQJ,KAAKyF,gBAAkBrF,EACrC4G,MAAM,2BAERJ,EAAA,QAAMa,aAAczH,KAAKkC,sBAI5BlC,KAAKoH,gBACJR,EAAA,oBACEG,KAAK,mCACLC,MAAO,CACL,sBAAuB,KACvB,2BAA4B,MAE9BK,IAAM3D,GAAS1D,KAAKsD,OAASI,EAC7BwD,QAAS,IAAMlH,KAAKwB,eAAe,MACnC8F,MAAM,kBACNC,SACEvH,KAAK8B,cAAgB,aACjB,sBACA,yB"}
|
@@ -1,5 +0,0 @@
|
|
1
|
-
/*!
|
2
|
-
* Web Components for Nanopore digital Web Apps
|
3
|
-
*/
|
4
|
-
import{c as t}from"./p-aeaa2ed9.js";import"./p-f6a8467a.js";import"./p-ee045579.js";import"./p-9746b0a5.js";import"./p-9ebbb814.js";const o="table.worker";const p="stencil.table.worker";const e=new URL("p-e2f9ccfa.js",import.meta.url).href;const s=new Blob(['importScripts("'+e+'")'],{type:"text/javascript"});const r=URL.createObjectURL(s);const a=t(r,o,p);URL.revokeObjectURL(r);export{a as worker,p as workerMsgId,o as workerName,e as workerPath};
|
5
|
-
//# sourceMappingURL=p-b5805a8c.js.map
|
File without changes
|
File without changes
|
File without changes
|