@nanoporetech-digital/components 8.4.2 → 8.5.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.
Files changed (76) hide show
  1. package/dist/cjs/{fade-DBuNbJEw.js → fade-BLXO4NX4.js} +1 -1
  2. package/dist/cjs/{fullscreen-Bk4jXSN0.js → fullscreen-Bh553is8.js} +1 -1
  3. package/dist/cjs/{lazyload-gQqOMvpr.js → lazyload-C1nc-whI.js} +1 -1
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/{local-logged-in-CLtc2TZa.js → local-logged-in-AF3ywQXV.js} +1 -1
  6. package/dist/cjs/{local-logged-out-Ao69_vQl.js → local-logged-out-DYEfc64n.js} +1 -1
  7. package/dist/cjs/nano-components.cjs.js +1 -1
  8. package/dist/cjs/nano-global-nav.cjs.entry.js +2 -2
  9. package/dist/cjs/nano-in-page-nav.cjs.entry.js +92 -13
  10. package/dist/cjs/{nano-slides-C73bSG0h.js → nano-slides-CrJKcnQs.js} +5 -5
  11. package/dist/cjs/nano-slides.cjs.entry.js +1 -1
  12. package/dist/cjs/{page-dots-BLPta5z5.js → page-dots-CJkZc-XU.js} +4 -3
  13. package/dist/collection/components/breadcrumb/breadcrumb.js +1 -1
  14. package/dist/collection/components/global-nav/assets/local-logged-in.json +2 -2
  15. package/dist/collection/components/global-nav/assets/local-logged-out.json +2 -2
  16. package/dist/collection/components/in-page-nav/in-page-nav.css +12 -0
  17. package/dist/collection/components/in-page-nav/in-page-nav.js +125 -18
  18. package/dist/collection/components/slides/lib/js/page-dots.js +3 -2
  19. package/dist/collection/components/slides/slides.css +0 -1
  20. package/dist/components/local-logged-in.js +1 -1
  21. package/dist/components/local-logged-out.js +1 -1
  22. package/dist/components/nano-in-page-nav.js +100 -15
  23. package/dist/components/page-dots.js +3 -2
  24. package/dist/components/slides.js +1 -1
  25. package/dist/esm/{fade-C0NluV0K.js → fade--IBFBe-0.js} +1 -1
  26. package/dist/esm/{fullscreen-Ck_w6MCZ.js → fullscreen-BO0-v_-N.js} +1 -1
  27. package/dist/esm/{lazyload-DddTyM-A.js → lazyload-DZWueTsT.js} +1 -1
  28. package/dist/esm/loader.js +1 -1
  29. package/dist/esm/{local-logged-in-Bh5fOkeO.js → local-logged-in-B3A7tw10.js} +1 -1
  30. package/dist/esm/{local-logged-out-BQyUtSml.js → local-logged-out-BuucpKxf.js} +1 -1
  31. package/dist/esm/nano-components.js +1 -1
  32. package/dist/esm/nano-global-nav.entry.js +2 -2
  33. package/dist/esm/nano-in-page-nav.entry.js +92 -13
  34. package/dist/esm/{nano-slides-BiPGpe5F.js → nano-slides-Cumys6rw.js} +5 -5
  35. package/dist/esm/nano-slides.entry.js +1 -1
  36. package/dist/esm/{page-dots-WKehEjjM.js → page-dots-Czwlqg1b.js} +4 -3
  37. package/dist/nano-assets/hash.txt +1 -1
  38. package/dist/nano-assets/local-logged-in.json +2 -2
  39. package/dist/nano-assets/local-logged-out.json +2 -2
  40. package/dist/nano-components/assets/local-logged-in.json +2 -2
  41. package/dist/nano-components/assets/local-logged-out.json +2 -2
  42. package/dist/nano-components/{fade-C0NluV0K.js → fade--IBFBe-0.js} +1 -1
  43. package/dist/nano-components/{fullscreen-Ck_w6MCZ.js → fullscreen-BO0-v_-N.js} +1 -1
  44. package/dist/nano-components/lazyload-DZWueTsT.js +4 -0
  45. package/dist/nano-components/{local-logged-in-Bh5fOkeO.js → local-logged-in-B3A7tw10.js} +1 -1
  46. package/dist/nano-components/{local-logged-out-BQyUtSml.js → local-logged-out-BuucpKxf.js} +1 -1
  47. package/dist/nano-components/nano-components.css +11 -0
  48. package/dist/nano-components/nano-components.esm.js +1 -1
  49. package/dist/nano-components/nano-global-nav.entry.js +1 -1
  50. package/dist/nano-components/nano-in-page-nav.entry.js +1 -1
  51. package/dist/nano-components/{nano-slides-BiPGpe5F.js → nano-slides-Cumys6rw.js} +3 -3
  52. package/dist/nano-components/nano-slides.entry.js +1 -1
  53. package/dist/nano-components/page-dots-Czwlqg1b.js +4 -0
  54. package/dist/style/components.css +1 -1
  55. package/dist/style/components.css.map +1 -1
  56. package/dist/style/nano.css +1 -1
  57. package/dist/style/nano.css.map +1 -1
  58. package/dist/types/components/in-page-nav/in-page-nav.d.ts +13 -5
  59. package/dist/types/components.d.ts +14 -4
  60. package/docs-json.json +38 -13
  61. package/docs-vscode.json +11 -2
  62. package/hydrate/index.js +98 -20
  63. package/hydrate/index.mjs +98 -20
  64. package/package.json +2 -2
  65. package/dist/nano-components/lazyload-DddTyM-A.js +0 -4
  66. package/dist/nano-components/page-dots-WKehEjjM.js +0 -4
  67. /package/dist/types/builds/{WUhA-BsM → hHVyLZ9F}/0/Digital/nano-components/packages/components/.stencil/plugins/stencil/vue-output/generate-vue-component.d.ts +0 -0
  68. /package/dist/types/builds/{WUhA-BsM → hHVyLZ9F}/0/Digital/nano-components/packages/components/.stencil/plugins/stencil/vue-output/index.d.ts +0 -0
  69. /package/dist/types/builds/{WUhA-BsM → hHVyLZ9F}/0/Digital/nano-components/packages/components/.stencil/plugins/stencil/vue-output/output-vue.d.ts +0 -0
  70. /package/dist/types/builds/{WUhA-BsM → hHVyLZ9F}/0/Digital/nano-components/packages/components/.stencil/plugins/stencil/vue-output/plugin.d.ts +0 -0
  71. /package/dist/types/builds/{WUhA-BsM → hHVyLZ9F}/0/Digital/nano-components/packages/components/.stencil/plugins/stencil/vue-output/types.d.ts +0 -0
  72. /package/dist/types/builds/{WUhA-BsM → hHVyLZ9F}/0/Digital/nano-components/packages/components/.stencil/plugins/stencil/vue-output/utils.d.ts +0 -0
  73. /package/dist/types/builds/{WUhA-BsM → hHVyLZ9F}/0/Digital/nano-components/packages/components/.stencil/stencil.config.d.ts +0 -0
  74. /package/dist/types/builds/{WUhA-BsM → hHVyLZ9F}/0/Digital/nano-components/packages/components/.stencil/stencil.config.prod.d.ts +0 -0
  75. /package/dist/types/builds/{WUhA-BsM → hHVyLZ9F}/0/Digital/nano-components/packages/components/.stencil/testing/mocks/intersection-observer.d.ts +0 -0
  76. /package/dist/types/builds/{WUhA-BsM → hHVyLZ9F}/0/Digital/nano-components/packages/components/.stencil/wdio.conf.d.ts +0 -0
@@ -7,26 +7,26 @@ var index = require('./index-DGttnXif.js');
7
7
  var renderer = require('./renderer-B9M1kXq8.js');
8
8
  var slot = require('./slot-CJgcluNw.js');
9
9
  var dom = require('./dom-Dxk5vXYq.js');
10
+ var scroll = require('./scroll-C6pO9RvO.js');
10
11
 
11
- const inPageNavCss = ":host,*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}@media (prefers-reduced-motion: reduce){:host,*,*::before,*::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important}}:host,*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}@media (prefers-reduced-motion: reduce){:host,*,*::before,*::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important}}:host{display:block}.desktop-nav{display:block}@media (width <= 767px){.desktop-nav{display:none}}.mobile-nav{display:none}@media (width <= 767px){.mobile-nav{display:block}}nav{background-color:var(--color-bg);padding:0}nav:has(.details-wrapper[open]){box-shadow:var(--nano-shadow-l1)}.header{padding:var(--spacing-l2) var(--spacing-l2) 0;display:flex;flex-direction:column;gap:var(--spacing-l2);font-size:var(--font-size)}.header ::slotted(a[slot=back]),.header::slotted(a[slot=back]){display:flex !important;align-items:center !important;padding:0 !important;margin:0;gap:var(--spacing-l3) !important;cursor:pointer}.header ::slotted(a[slot=back])::before,.header::slotted(a[slot=back])::before{content:\"\";display:inline-block;background-size:cover;inline-size:1rem;block-size:1rem;background-color:var(--color-primary);-webkit-mask-image:var(--nano-component-icon-chevron);mask-image:var(--nano-component-icon-chevron);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;transform-origin:center;rotate:calc(180deg * var(--flip-icon-ltr))}.details-wrapper{--padding:0;--btn-bg-color:transparent;--btn-bg-color--hover:transparent;--btn-text-color:var(--color-text);border:none}.details-wrapper::part(header){font-size:var(--font-size);line-height:var(--line-height);font-weight:var(--font-weight);letter-spacing:var(--letter-spacing);padding:var(--spacing-l2)}.details-wrapper[open]::part(header){background-color:var(--nano-color-primary-75)}.details-wrapper::part(content){padding:0}.details-wrapper::part(body){padding:0}.details-wrapper.sticky.stuck[open]::part(header){z-index:var(--nano-z-index-menubar);inset-block-start:0;position:sticky;box-shadow:var(--nano-shadow-l1);padding:var(--spacing-l2)}.details-wrapper a,.details-wrapper ul,.details-wrapper li{all:unset}.details-wrapper ul{display:flex;flex-direction:column;list-style:none}.details-wrapper ul:not(ul ul){padding:0 var(--spacing-l2) 0 var(--spacing-l2)}.details-wrapper a{cursor:pointer}.details-wrapper a:hover{text-decoration:underline}.details-wrapper a:focus-visible{outline:var(--nano-focus-ring);outline-offset:var(--nano-focus-ring-offset)}.details-wrapper ul>li:not(ul>li li){margin:0;padding:var(--spacing-l2) 0;display:flex;flex-direction:column;align-items:stretch;justify-content:stretch;inline-size:100%}.details-wrapper ul>li:not(ul>li li):not(:last-of-type){border-block-end:1px solid var(--color-bottom-border)}.details-wrapper ul>li:not(ul>li li) a{color:var(--color-text)}.details-wrapper ul>li:not(ul>li li) a.is-active{border-inline-start:var(--border-active);padding-inline-start:1rem}.details-wrapper ul>li:not(ul>li li) a:hover{color:var(--color-text-hover)}.details-wrapper ul>li>ul,.details-wrapper ul>li>.nano-details>ul{padding:var(--list-gap) 0 0 var(--spacing-l2);gap:var(--list-gap)}.details-wrapper ul>li>ul a,.details-wrapper ul>li>.nano-details>ul a{color:var(--color-primary) !important}.details-wrapper ul>li>ul>li>.nano-details>ul,.details-wrapper ul>li>.nano-details>ul>li>.nano-details>ul{padding:var(--list-gap) 0 0 var(--nano-spacing-xl)}.details-wrapper .nano-details .nano-details:not(.nano-details .nano-details .nano-details){color:var(--color-text)}.details-wrapper .nano-details{--padding:0;--btn-bg-color:transparent;--btn-bg-color--open:var(--nano-color-primary-75);--btn-bg-color--hover:transparent;border:none;color:var(--color-primary)}.details-wrapper .nano-details .is-active::part(header){border-inline-start:var(--border-active);padding-inline-start:1rem !important;color:var(--color-primary)}.details-wrapper .nano-details[open]>[slot=icon-start]{rotate:90deg}.details-wrapper .nano-details::part(icon--start){margin-inline-end:var(--spacing-l3)}.details-wrapper .nano-details::part(header){font-size:var(--font-size);line-height:var(--line-height);font-weight:var(--font-weight);letter-spacing:var(--letter-spacing)}.details-wrapper .nano-details::part(header):hover{text-decoration:underline}.details-wrapper .nano-details:not(.nav-details){color:var(--color-primary)}";
12
+ const inPageNavCss = ":host,*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}@media (prefers-reduced-motion: reduce){:host,*,*::before,*::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important}}:host,*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}@media (prefers-reduced-motion: reduce){:host,*,*::before,*::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important}}:host{display:block}:host(.external-links){--color-bg:var(--nano-color-base-0) !important}.desktop-nav{display:block}@media (width <= 767px){.desktop-nav{display:none}}.mobile-nav{display:none}@media (width <= 767px){.mobile-nav{display:block}}nav{background-color:var(--color-bg);padding:0}nav:has(.details-wrapper[open]){box-shadow:var(--nano-shadow-l1)}.header{padding:var(--spacing-l2) var(--spacing-l2) 0;display:flex;flex-direction:column;gap:var(--spacing-l2);font-size:var(--font-size)}.header ::slotted(a[slot=back]),.header::slotted(a[slot=back]){display:flex !important;align-items:center !important;padding:0 !important;margin:0;gap:var(--spacing-l3) !important;cursor:pointer}.header ::slotted(a[slot=back])::before,.header::slotted(a[slot=back])::before{content:\"\";display:inline-block;background-size:cover;inline-size:1rem;block-size:1rem;background-color:var(--color-primary);-webkit-mask-image:var(--nano-component-icon-chevron);mask-image:var(--nano-component-icon-chevron);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;transform-origin:center;rotate:calc(180deg * var(--flip-icon-ltr))}.details-wrapper{--padding:0;--btn-bg-color:transparent;--btn-bg-color--hover:transparent;--btn-text-color:var(--color-text);border:none}.details-wrapper::part(header){font-size:var(--font-size);line-height:var(--line-height);font-weight:var(--font-weight);letter-spacing:var(--letter-spacing);padding:var(--spacing-l2)}.details-wrapper[open]::part(header){background-color:var(--nano-color-primary-75)}.details-wrapper::part(content){padding:0}.details-wrapper::part(body){padding:0}.details-wrapper.sticky.stuck[open]::part(header){z-index:var(--nano-z-index-menubar);inset-block-start:0;position:sticky;box-shadow:var(--nano-shadow-l1);padding:var(--spacing-l2)}.details-wrapper :host(.external-links),.details-wrapper .external-links{--color-bg:var(--nano-color-base-0) !important}.details-wrapper :host(.external-links) ul ul,.details-wrapper .external-links ul ul{--color-border-active:var(--nano-color-neutral-1200) !important}.details-wrapper a,.details-wrapper ul,.details-wrapper li{all:unset}.details-wrapper ul{display:flex;flex-direction:column;list-style:none}.details-wrapper ul:not(ul ul){padding:0 var(--spacing-l2) 0 var(--spacing-l2)}.details-wrapper a{cursor:pointer}.details-wrapper a:hover{text-decoration:underline}.details-wrapper a:focus-visible{outline:var(--nano-focus-ring);outline-offset:var(--nano-focus-ring-offset)}.details-wrapper ul>li:not(ul>li li){margin:0;padding:var(--spacing-l2) 0;display:flex;flex-direction:column;align-items:stretch;justify-content:stretch;inline-size:100%}.details-wrapper ul>li:not(ul>li li):not(:last-of-type){border-block-end:1px solid var(--color-bottom-border)}.details-wrapper ul>li:not(ul>li li) a{color:var(--color-text)}.details-wrapper ul>li:not(ul>li li) a.is-active{border-inline-start:var(--border-active);padding-inline-start:1rem}.details-wrapper ul>li:not(ul>li li) a:hover{color:var(--color-text-hover)}.details-wrapper ul>li>ul,.details-wrapper ul>li>.nano-details>ul{padding:var(--list-gap) 0 0 var(--spacing-l2);gap:var(--list-gap)}.details-wrapper ul>li>ul a,.details-wrapper ul>li>.nano-details>ul a{color:var(--color-primary) !important}.details-wrapper ul>li>ul>li>.nano-details>ul,.details-wrapper ul>li>.nano-details>ul>li>.nano-details>ul{padding:var(--list-gap) 0 0 var(--nano-spacing-xl)}.details-wrapper .nano-details .nano-details:not(.nano-details .nano-details .nano-details){color:var(--color-text)}.details-wrapper .nano-details{--padding:0;--btn-bg-color:transparent;--btn-bg-color--open:var(--nano-color-primary-75);--btn-bg-color--hover:transparent;border:none;color:var(--color-primary)}.details-wrapper .nano-details .is-active::part(header){border-inline-start:var(--border-active);padding-inline-start:1rem !important;color:var(--color-primary)}.details-wrapper .nano-details[open]>[slot=icon-start]{rotate:90deg}.details-wrapper .nano-details::part(icon--start){margin-inline-end:var(--spacing-l3)}.details-wrapper .nano-details::part(header){font-size:var(--font-size);line-height:var(--line-height);font-weight:var(--font-weight);letter-spacing:var(--letter-spacing)}.details-wrapper .nano-details::part(header):hover{text-decoration:underline}.details-wrapper .nano-details:not(.nav-details){color:var(--color-primary)}";
12
13
 
13
14
  const NanoInPageNav = class {
14
15
  constructor(hostRef) {
15
16
  index.registerInstance(this, hostRef);
16
17
  }
17
- /** Whether the headers should be sticky (small screen only). Defaults to true */
18
- stickyHeaders = true;
19
- get el() { return index.getElement(this); }
20
- // private stickyClass = 'sticky';
21
- // private stuckClass: string = 'stuck';
22
- // private stickyObserver!: IntersectionObserver;
18
+ scrollElement;
19
+ get host() { return index.getElement(this); }
20
+ autoExternalLinks = false;
21
+ io;
23
22
  mobileNavWrapper;
24
- slotCtrl = new slot.HasSlotController(this, '[default]', 'mobile', 'back', 'accessory');
25
- componentDidLoad() {
26
- this.createMobileMenu();
27
- }
23
+ slotCtrl = new slot.HasSlotController(this, '[default]', 'back', 'accessory');
24
+ /** Whether the active link should be automatically set based on when a corresponding #id is in view. Defaults to true */
25
+ autoActive = true;
26
+ /** Menus that contain links to external pages should have different styling from in-page anchors */
27
+ externalLinks = 'auto';
28
28
  createMobileMenu() {
29
- const ul = dom.getDirectChildren(this.el, 'ul')[0];
29
+ const ul = dom.getDirectChildren(this.host, 'ul')[0];
30
30
  if (!ul)
31
31
  return;
32
32
  const cloned = ul.cloneNode(true);
@@ -52,8 +52,87 @@ const NanoInPageNav = class {
52
52
  node.appendChild(submenu);
53
53
  return node;
54
54
  }
55
+ assessLinks() {
56
+ const anchors = this.host.querySelectorAll('a[href^="#"]');
57
+ if (this.externalLinks === 'auto') {
58
+ const allLinks = this.host.querySelectorAll('a[href]');
59
+ if (anchors.length > allLinks.length / 2) {
60
+ this.autoExternalLinks = false;
61
+ }
62
+ else {
63
+ this.autoExternalLinks = true;
64
+ }
65
+ }
66
+ if (!this.autoActive)
67
+ return;
68
+ const sections = [];
69
+ anchors.forEach((link) => {
70
+ const id = link.getAttribute('href')?.substring(1);
71
+ if (!id)
72
+ return;
73
+ const section = document.getElementById(id);
74
+ if (section)
75
+ sections.push(section);
76
+ });
77
+ if (this.io)
78
+ this.io.disconnect();
79
+ this.io = new IntersectionObserver((entries) => {
80
+ entries.forEach((entry) => {
81
+ const id = entry.target.getAttribute('id');
82
+ if (!id)
83
+ return;
84
+ const link = this.host.querySelector(`a[href="#${id}"]`);
85
+ if (!link)
86
+ return;
87
+ if (entry.isIntersecting) {
88
+ entry.target.classList.add('in-view');
89
+ }
90
+ else {
91
+ entry.target.classList.remove('in-view');
92
+ }
93
+ });
94
+ // pick the section nearest to the top
95
+ const visible = sections.filter((s) => s.classList.contains('in-view'));
96
+ if (visible.length) {
97
+ // sort by boundingClientRect.top
98
+ visible.sort((a, b) => b.getBoundingClientRect().top - a.getBoundingClientRect().top);
99
+ anchors.forEach((l) => l.classList.remove('is-active'));
100
+ const topId = visible[0].getAttribute('id');
101
+ const activeLink = this.host.querySelector(`a[href="#${topId}"]`);
102
+ activeLink?.classList.add('is-active');
103
+ }
104
+ }, {
105
+ root: this.scrollElement === document.documentElement
106
+ ? null
107
+ : this.scrollElement,
108
+ rootMargin: '0px 0px -60% 0px',
109
+ threshold: 0,
110
+ });
111
+ sections.forEach((section) => this.io.observe(section));
112
+ }
113
+ handleSlotChange = () => {
114
+ this.assessLinks();
115
+ this.createMobileMenu();
116
+ };
117
+ componentDidLoad() {
118
+ this.createMobileMenu();
119
+ }
120
+ connectedCallback() {
121
+ this.scrollElement = scroll.findScrollParent(this.host);
122
+ this.assessLinks();
123
+ }
124
+ disconnectedCallback() {
125
+ if (this.io) {
126
+ this.io.disconnect();
127
+ this.io = null;
128
+ }
129
+ }
55
130
  render() {
56
- return (renderer.h(index.Host, { key: '8b88cd04f960c4c8ea7ae2dd79a6ec82694570e6', class: "nano-in-page-nav" }, renderer.h("nav", { key: '4df4a5ef8aecad356c6ad1acd9a6a886edce8139', part: "root" }, (this.slotCtrl.has('back') || this.slotCtrl.has('accessory')) && (renderer.h("div", { key: 'ed1315ac689d77ffd4005df5a6eeb01f3fc9f599', class: "header" }, renderer.h("slot", { key: '0db0fb3919268a14fb924b292302c563181e87c0', name: "back" }), renderer.h("slot", { key: '95a5fafda43239ef7cc9208efc254fb335bc9f66', name: "accessory" }))), renderer.h("div", { key: '5a273c033b193efe7d4c72c3ccfdbf30b4442eae', class: "desktop-nav" }, renderer.h("slot", { key: '7d0cff62b54d21daa5b8e7d9551a9d0ed08cfe6f' })), renderer.h("nano-details", { key: 'c337ce8ac65560e5914f8566304f9382540316f2', label: "Menu", class: "details-wrapper mobile-nav", ref: (el) => (this.mobileNavWrapper = el) }))));
131
+ return (renderer.h(index.Host, { key: 'ea33348437e8e117df2e7ffff285ca60d8caf98b', class: {
132
+ 'nano-in-page-nav': true,
133
+ 'external-links': this.externalLinks === true ||
134
+ (this.externalLinks === 'auto' && this.autoExternalLinks),
135
+ } }, renderer.h("nav", { key: '4d4647bafee9aff8902dd988eb941bb89e02b0ed', part: "root" }, (this.slotCtrl.has('back') || this.slotCtrl.has('accessory')) && (renderer.h("div", { key: '26c306537b6188b822b714c0df1d49b8ba060cf3', class: "header" }, renderer.h("slot", { key: 'f9319b724393e10d0cd789ddf58a0e006f829afd', name: "back" }), renderer.h("slot", { key: '2c6bf0022d52af8710d6086beb558b9069557eb2', name: "accessory" }))), renderer.h("div", { key: '6c82ddaf8d25319ed7a0a46637047e4e750c5834', class: "desktop-nav" }, renderer.h("slot", { key: '4f01aa6544750860aae61cdb9309c62b37f45ef6', onSlotchange: () => this.handleSlotChange })), renderer.h("nano-details", { key: 'ff9b16866753cb24279c5bfc83ca637803333101', label: "Menu", class: "details-wrapper mobile-nav", ref: (el) => (this.mobileNavWrapper = el) }))));
57
136
  }
58
137
  };
59
138
  NanoInPageNav.style = inPageNavCss;
@@ -2469,7 +2469,7 @@ drag();
2469
2469
  nowNext();
2470
2470
  player();
2471
2471
 
2472
- const slidesCss = ":host,*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}@media (prefers-reduced-motion: reduce){:host,*,*::before,*::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important}}:host,*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}@media (prefers-reduced-motion: reduce){:host,*,*::before,*::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important}}:host{--dot-color:var(--nano-color-neutral-400);--dot-color-active:var(--nano-color-primary-1000);--navbtns-icon-color:var(--dot-color-active);--navbtns-bg-color:transparent;--navbtns-icon-color-disabled:var(--dot-color-active);--navbtns-bg-color-disabled:transparent;--navbtns-width:1.875rem;--navbtns-height:2.75rem;--fsbtn-icon-color:var(--dot-color-active);--fsbtn-bg-color:transparent;--flip-icon-ltr:0;--flip-icon-rtl:1;display:block;-webkit-user-select:none;user-select:none;overflow:hidden;transition:opacity 0.2s;opacity:0;max-inline-size:100vw}:host:dir(rtl){--flip-icon-ltr:1;--flip-icon-rtl:0}:host([ready]){opacity:1}.slideshow{max-block-size:100%;min-block-size:inherit;block-size:inherit;position:relative}.slideshow.not-ready{inline-size:100%;max-block-size:300px;overflow:hidden}.flickity-container{opacity:0;transition:opacity 0.2s;display:flex;inline-size:fit-content;block-size:fit-content}.not-ready .flickity-container{inline-size:fit-content;block-size:fit-content}.flickity-container.slides-ready{min-block-size:inherit;max-block-size:inherit;block-size:inherit;inline-size:auto}[hidden]{display:none !important}.ui-extras{pointer-events:none;position:absolute;block-size:100%;inline-size:100%;inset-block-start:0;inset-inline-start:0}.ui-extras *{pointer-events:all}/*! Flickity v2.2.1\nhttps://flickity.metafizzy.co\n---------------------------------------------- */.flickity-enabled{position:relative;opacity:1}.flickity-enabled:focus{outline:none}.flickity-viewport{overflow:hidden;position:relative;min-block-size:100%;flex:1}.flickity-slider{position:absolute;inline-size:100%;block-size:100%}.flickity-enabled.is-draggable{-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}.flickity-enabled.is-draggable .flickity-viewport{cursor:move;cursor:grab;cursor:grab}.flickity-enabled.is-draggable .flickity-viewport.is-pointer-down{cursor:grabbing}.flickity-button{position:absolute;background:var(--navbtns-bg-color);border:none;color:#333;opacity:0.75}.flickity-button:hover{opacity:1;cursor:pointer}.flickity-button:focus{outline:var(--nano-focus-ring);outline-offset:var(--nano-focus-ring-offset)}.flickity-button:active{opacity:0.6}.flickity-button:disabled{opacity:0.3;cursor:auto;pointer-events:none;background:var(--navbtns-bg-color-disabled)}.button-icon{display:block}.button-icon::after{content:\"\";display:block;background-size:cover;inline-size:var(--navbtns-width);block-size:var(--navbtns-height);background-color:var(--navbtns-icon-color);-webkit-mask-image:var(--nano-component-icon-chevron);mask-image:var(--nano-component-icon-chevron);transition:color var(--nano-transition-fast) ease;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;transform-origin:center;margin-inline-start:auto;rotate:calc(180deg * var(--flip-icon-ltr));-webkit-mask-size:cover;mask-size:cover}.button-icon--previous::after{rotate:calc(180deg * var(--flip-icon-rtl))}.flickity-button:disabled .button-icon::after{background-color:var(--navbtns-icon-color-disabled)}.flickity-prev-next-button{inset-block-start:50%;transform:translateY(-50%)}.flickity-prev-next-button.previous{inset-inline-start:10px}.flickity-prev-next-button.next{inset-inline-end:10px}.flickity-rtl .flickity-prev-next-button.previous{inset-inline:auto 10px}.flickity-rtl .flickity-prev-next-button.next{inset-inline:10px auto}.flickity-prev-next-button .flickity-button-icon{position:absolute;inset-inline-start:20%;inset-block-start:20%;inline-size:60%;block-size:60%}.flickity-page-dots{position:absolute;inline-size:100%;padding:0;margin:0;text-align:center;line-height:1;z-index:4;display:inline-flex;justify-content:center;inset-block-end:0}.flickity-rtl .flickity-page-dots{direction:rtl}.flickity-page-dots .dot{all:unset;text-indent:200%;white-space:nowrap;overflow:hidden;display:inline-block;display:inline-block;position:relative;inline-size:1.25rem;block-size:0.375rem;margin-block:0;cursor:pointer;padding:calc(var(--nano-spacing-md) / 2)}.flickity-page-dots .dot::after{content:\"\";position:absolute;inset:0;background:currentcolor;background:var(--dot-color);margin:calc(var(--nano-spacing-md) / 2)}.flickity-page-dots .dot:focus-visible{outline:var(--nano-focus-ring);outline-offset:var(--nano-focus-ring-offset);z-index:1}.flickity-page-dots .dot.is-selected::after{background:var(--dot-color-active)}.flickity-enabled.is-fullscreen{position:fixed;inset-inline-start:0;inset-block-start:0;inline-size:100%;block-size:100%;background:hsla(0, 0%, 0%, 0.9);padding-block-end:35px;z-index:100}.flickity-enabled.is-fullscreen .flickity-page-dots{inset-block-end:45px}html.is-flickity-fullscreen{overflow:hidden}.flickity-fullscreen-button{display:block;inset-inline-end:10px;inset-block-start:10px;inline-size:24px;block-size:24px;border-radius:4px;background:var(--fsbtn-bg-color);fill:var(--fsbtn-icon-color)}.flickity-rtl .flickity-fullscreen-button{inset-inline:10px auto}.flickity-fullscreen-button-exit{display:none}.flickity-enabled.is-fullscreen .flickity-fullscreen-button-exit{display:block}.flickity-enabled.is-fullscreen .flickity-fullscreen-button-view{display:none}.flickity-fullscreen-button .flickity-button-icon{position:absolute;inline-size:16px;block-size:16px;inset-inline-start:4px;inset-block-start:4px}.flickity-enabled.is-fade .flickity-slider>*{pointer-events:none;z-index:0}.flickity-enabled.is-fade .flickity-slider ::slotted(.is-selected){pointer-events:auto;z-index:1}";
2472
+ const slidesCss = ":host,*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}@media (prefers-reduced-motion: reduce){:host,*,*::before,*::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important}}:host,*,*::before,*::after{box-sizing:border-box}[hidden]{display:none !important}@media (prefers-reduced-motion: reduce){:host,*,*::before,*::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important}}:host{--dot-color:var(--nano-color-neutral-400);--dot-color-active:var(--nano-color-primary-1000);--navbtns-icon-color:var(--dot-color-active);--navbtns-bg-color:transparent;--navbtns-icon-color-disabled:var(--dot-color-active);--navbtns-bg-color-disabled:transparent;--navbtns-width:1.875rem;--navbtns-height:2.75rem;--fsbtn-icon-color:var(--dot-color-active);--fsbtn-bg-color:transparent;--flip-icon-ltr:0;--flip-icon-rtl:1;display:block;-webkit-user-select:none;user-select:none;overflow:hidden;transition:opacity 0.2s;opacity:0;max-inline-size:100vw}:host:dir(rtl){--flip-icon-ltr:1;--flip-icon-rtl:0}:host([ready]){opacity:1}.slideshow{max-block-size:100%;min-block-size:inherit;block-size:inherit;position:relative}.slideshow.not-ready{inline-size:100%;max-block-size:300px;overflow:hidden}.flickity-container{opacity:0;transition:opacity 0.2s;display:flex;inline-size:fit-content;block-size:fit-content}.not-ready .flickity-container{inline-size:fit-content;block-size:fit-content}.flickity-container.slides-ready{min-block-size:inherit;max-block-size:inherit;block-size:inherit;inline-size:auto}[hidden]{display:none !important}.ui-extras{pointer-events:none;position:absolute;block-size:100%;inline-size:100%;inset-block-start:0;inset-inline-start:0}.ui-extras *{pointer-events:all}/*! Flickity v2.2.1\nhttps://flickity.metafizzy.co\n---------------------------------------------- */.flickity-enabled{position:relative;opacity:1}.flickity-enabled:focus{outline:none}.flickity-viewport{overflow:hidden;position:relative;min-block-size:100%;flex:1}.flickity-slider{position:absolute;inline-size:100%;block-size:100%}.flickity-enabled.is-draggable{-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}.flickity-enabled.is-draggable .flickity-viewport{cursor:move;cursor:grab;cursor:grab}.flickity-enabled.is-draggable .flickity-viewport.is-pointer-down{cursor:grabbing}.flickity-button{position:absolute;background:var(--navbtns-bg-color);border:none;color:#333;opacity:0.75}.flickity-button:hover{opacity:1;cursor:pointer}.flickity-button:focus{outline:var(--nano-focus-ring);outline-offset:var(--nano-focus-ring-offset)}.flickity-button:active{opacity:0.6}.flickity-button:disabled{opacity:0.3;cursor:auto;pointer-events:none;background:var(--navbtns-bg-color-disabled)}.button-icon{display:block}.button-icon::after{content:\"\";display:block;background-size:cover;inline-size:var(--navbtns-width);block-size:var(--navbtns-height);background-color:var(--navbtns-icon-color);-webkit-mask-image:var(--nano-component-icon-chevron);mask-image:var(--nano-component-icon-chevron);transition:color var(--nano-transition-fast) ease;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;transform-origin:center;margin-inline-start:auto;rotate:calc(180deg * var(--flip-icon-ltr));-webkit-mask-size:cover;mask-size:cover}.button-icon--previous::after{rotate:calc(180deg * var(--flip-icon-rtl))}.flickity-button:disabled .button-icon::after{background-color:var(--navbtns-icon-color-disabled)}.flickity-prev-next-button{inset-block-start:50%;transform:translateY(-50%)}.flickity-prev-next-button.previous{inset-inline-start:10px}.flickity-prev-next-button.next{inset-inline-end:10px}.flickity-rtl .flickity-prev-next-button.previous{inset-inline:auto 10px}.flickity-rtl .flickity-prev-next-button.next{inset-inline:10px auto}.flickity-prev-next-button .flickity-button-icon{position:absolute;inset-inline-start:20%;inset-block-start:20%;inline-size:60%;block-size:60%}.flickity-page-dots{inline-size:100%;padding:0;margin:0;text-align:center;line-height:1;z-index:4;display:inline-flex;justify-content:center;inset-block-end:0}.flickity-rtl .flickity-page-dots{direction:rtl}.flickity-page-dots .dot{all:unset;text-indent:200%;white-space:nowrap;overflow:hidden;display:inline-block;display:inline-block;position:relative;inline-size:1.25rem;block-size:0.375rem;margin-block:0;cursor:pointer;padding:calc(var(--nano-spacing-md) / 2)}.flickity-page-dots .dot::after{content:\"\";position:absolute;inset:0;background:currentcolor;background:var(--dot-color);margin:calc(var(--nano-spacing-md) / 2)}.flickity-page-dots .dot:focus-visible{outline:var(--nano-focus-ring);outline-offset:var(--nano-focus-ring-offset);z-index:1}.flickity-page-dots .dot.is-selected::after{background:var(--dot-color-active)}.flickity-enabled.is-fullscreen{position:fixed;inset-inline-start:0;inset-block-start:0;inline-size:100%;block-size:100%;background:hsla(0, 0%, 0%, 0.9);padding-block-end:35px;z-index:100}.flickity-enabled.is-fullscreen .flickity-page-dots{inset-block-end:45px}html.is-flickity-fullscreen{overflow:hidden}.flickity-fullscreen-button{display:block;inset-inline-end:10px;inset-block-start:10px;inline-size:24px;block-size:24px;border-radius:4px;background:var(--fsbtn-bg-color);fill:var(--fsbtn-icon-color)}.flickity-rtl .flickity-fullscreen-button{inset-inline:10px auto}.flickity-fullscreen-button-exit{display:none}.flickity-enabled.is-fullscreen .flickity-fullscreen-button-exit{display:block}.flickity-enabled.is-fullscreen .flickity-fullscreen-button-view{display:none}.flickity-fullscreen-button .flickity-button-icon{position:absolute;inline-size:16px;block-size:16px;inset-inline-start:4px;inset-block-start:4px}.flickity-enabled.is-fade .flickity-slider>*{pointer-events:none;z-index:0}.flickity-enabled.is-fade .flickity-slider ::slotted(.is-selected){pointer-events:auto;z-index:1}";
2473
2473
 
2474
2474
  const modulo = (num, div) => {
2475
2475
  return ((num % div) + div) % div;
@@ -2813,19 +2813,19 @@ const Slides = class {
2813
2813
  }
2814
2814
  async loadFlickityModules(opts) {
2815
2815
  if (!this.hasFullScreenModule && opts.fullscreen) {
2816
- await Promise.resolve().then(function () { return require('./fullscreen-Bk4jXSN0.js'); });
2816
+ await Promise.resolve().then(function () { return require('./fullscreen-Bh553is8.js'); });
2817
2817
  this.hasFullScreenModule = true;
2818
2818
  }
2819
2819
  if (!this.hasLazyLoadModule && opts.lazyLoad) {
2820
- await Promise.resolve().then(function () { return require('./lazyload-gQqOMvpr.js'); });
2820
+ await Promise.resolve().then(function () { return require('./lazyload-C1nc-whI.js'); });
2821
2821
  this.hasLazyLoadModule = true;
2822
2822
  }
2823
2823
  if (!this.hasDotsModule && opts.pageDots) {
2824
- await Promise.resolve().then(function () { return require('./page-dots-BLPta5z5.js'); });
2824
+ await Promise.resolve().then(function () { return require('./page-dots-CJkZc-XU.js'); });
2825
2825
  this.hasDotsModule = true;
2826
2826
  }
2827
2827
  if (!this.hasFadeModule && opts.fade) {
2828
- await Promise.resolve().then(function () { return require('./fade-DBuNbJEw.js'); });
2828
+ await Promise.resolve().then(function () { return require('./fade-BLXO4NX4.js'); });
2829
2829
  this.hasFadeModule = true;
2830
2830
  }
2831
2831
  }
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var nanoSlides_entry = require('./nano-slides-C73bSG0h.js');
6
+ var nanoSlides_entry = require('./nano-slides-CrJKcnQs.js');
7
7
  require('./index-DGttnXif.js');
8
8
  require('./renderer-B9M1kXq8.js');
9
9
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var nanoSlides_entry = require('./nano-slides-C73bSG0h.js');
6
+ var nanoSlides_entry = require('./nano-slides-CrJKcnQs.js');
7
7
  require('./index-DGttnXif.js');
8
8
  require('./renderer-B9M1kXq8.js');
9
9
 
@@ -11,6 +11,7 @@ require('./renderer-B9M1kXq8.js');
11
11
  function PageDots(parent) {
12
12
  this.parent = parent;
13
13
  this.parentElement = this.parent.element.shadowRoot || this.parent.element;
14
+ this.containingEl = this.parentElement.parentNode || this.parentElement;
14
15
  this._create();
15
16
  }
16
17
  PageDots.prototype = Object.create(nanoSlides_entry.Unipointer.prototype);
@@ -30,13 +31,13 @@ PageDots.prototype.activate = function () {
30
31
  this.holder.addEventListener('click', this.handleClick);
31
32
  this.bindStartEvent(this.holder);
32
33
  // add to DOM
33
- this.parentElement.appendChild(this.holder);
34
+ this.containingEl.appendChild(this.holder);
34
35
  };
35
36
  PageDots.prototype.deactivate = function () {
36
37
  this.holder.removeEventListener('click', this.handleClick);
37
38
  this.unbindStartEvent(this.holder);
38
39
  // remove from DOM
39
- this.parentElement.removeChild(this.holder);
40
+ this.containingEl.removeChild(this.holder);
40
41
  };
41
42
  PageDots.prototype.setDots = function () {
42
43
  // get difference between number of slides and number of dots
@@ -89,7 +89,7 @@ export class NanoBreadcrumb {
89
89
  "references": {
90
90
  "Breadcrumb": {
91
91
  "location": "local",
92
- "path": "/builds/WUhA-BsM/0/Digital/nano-components/packages/components/src/components/breadcrumb/breadcrumb.tsx",
92
+ "path": "/builds/hHVyLZ9F/0/Digital/nano-components/packages/components/src/components/breadcrumb/breadcrumb.tsx",
93
93
  "id": "src/components/breadcrumb/breadcrumb.tsx::Breadcrumb"
94
94
  }
95
95
  }
@@ -96,7 +96,7 @@
96
96
  },
97
97
  "search": {
98
98
  "app_id": "N8NZI5A47F",
99
- "api_key": "MDQ0OWZiMzhmZjI4YmZmMmIzY2NhNzI3NGU4Yjc5YWVhNmExMzcxNDRlZTNlN2U2NGEwNzRlZmJjZTZkZmExZWZpbHRlcnM9JTI4JTI3cmVnaW9uJTI3JTNBJTI3dXMlMjcrT1IrJTI3cmVnaW9uJTI3JTNBJTI3YW55JTI3JTI5K0FORCslMjhOT1QrJTI3dHlwZSUyNyUzQSUyN3doaXRlX3BhcGVyJTI3JTI5K0FORCslMjhOT1QrJTI3b3JpZ2luJTI3JTNBJTI3Y29tbXVuaXR5JTI3JTI5JnZhbGlkVW50aWw9MTc1NTk0Mzc5MA==",
99
+ "api_key": "MDRhNGI1ZjFkMDU3MjAyNTQ2ZDA4MmQ2ZTBjODBhM2ViODZjMWNhYTFjZmI5YjM3ODljYWUyNTY0MDAyZGJmOWZpbHRlcnM9JTI4JTI3cmVnaW9uJTI3JTNBJTI3dXMlMjcrT1IrJTI3cmVnaW9uJTI3JTNBJTI3YW55JTI3JTI5K0FORCslMjhOT1QrJTI3dHlwZSUyNyUzQSUyN3doaXRlX3BhcGVyJTI3JTI5K0FORCslMjhOT1QrJTI3b3JpZ2luJTI3JTNBJTI3Y29tbXVuaXR5JTI3JTI5JnZhbGlkVW50aWw9MjA3MTkwOTQ0MA==",
100
100
  "indeces": [
101
101
  {
102
102
  "index": "ont_prod_en_v3",
@@ -199,4 +199,4 @@
199
199
  }
200
200
  ]
201
201
  }
202
- }
202
+ }
@@ -92,7 +92,7 @@
92
92
  },
93
93
  "search": {
94
94
  "app_id": "N8NZI5A47F",
95
- "api_key": "MDQ0OWZiMzhmZjI4YmZmMmIzY2NhNzI3NGU4Yjc5YWVhNmExMzcxNDRlZTNlN2U2NGEwNzRlZmJjZTZkZmExZWZpbHRlcnM9JTI4JTI3cmVnaW9uJTI3JTNBJTI3dXMlMjcrT1IrJTI3cmVnaW9uJTI3JTNBJTI3YW55JTI3JTI5K0FORCslMjhOT1QrJTI3dHlwZSUyNyUzQSUyN3doaXRlX3BhcGVyJTI3JTI5K0FORCslMjhOT1QrJTI3b3JpZ2luJTI3JTNBJTI3Y29tbXVuaXR5JTI3JTI5JnZhbGlkVW50aWw9MTc1NTk0Mzc5MA==",
95
+ "api_key": "MDRhNGI1ZjFkMDU3MjAyNTQ2ZDA4MmQ2ZTBjODBhM2ViODZjMWNhYTFjZmI5YjM3ODljYWUyNTY0MDAyZGJmOWZpbHRlcnM9JTI4JTI3cmVnaW9uJTI3JTNBJTI3dXMlMjcrT1IrJTI3cmVnaW9uJTI3JTNBJTI3YW55JTI3JTI5K0FORCslMjhOT1QrJTI3dHlwZSUyNyUzQSUyN3doaXRlX3BhcGVyJTI3JTI5K0FORCslMjhOT1QrJTI3b3JpZ2luJTI3JTNBJTI3Y29tbXVuaXR5JTI3JTI5JnZhbGlkVW50aWw9MjA3MTkwOTQ0MA==",
96
96
  "indeces": [
97
97
  {
98
98
  "index": "ont_prod_en_v3",
@@ -195,4 +195,4 @@
195
195
  }
196
196
  ]
197
197
  }
198
- }
198
+ }
@@ -53,6 +53,10 @@
53
53
  display: block;
54
54
  }
55
55
 
56
+ :host(.external-links) {
57
+ --color-bg: var(--nano-color-base-0) !important;
58
+ }
59
+
56
60
  .desktop-nav {
57
61
  display: block;
58
62
  }
@@ -141,6 +145,14 @@ nav:has(.details-wrapper[open]) {
141
145
  box-shadow: var(--nano-shadow-l1);
142
146
  padding: var(--spacing-l2);
143
147
  }
148
+ .details-wrapper :host(.external-links),
149
+ .details-wrapper .external-links {
150
+ --color-bg: var(--nano-color-base-0) !important;
151
+ }
152
+ .details-wrapper :host(.external-links) ul ul,
153
+ .details-wrapper .external-links ul ul {
154
+ --color-border-active: var(--nano-color-neutral-1200) !important;
155
+ }
144
156
  .details-wrapper a,
145
157
  .details-wrapper ul,
146
158
  .details-wrapper li {
@@ -1,10 +1,11 @@
1
1
  /*!
2
2
  * Custom elements for Nanopore-Digital Web applications
3
3
  */
4
- import { Host, } from "@stencil/core";
4
+ import { Host, Build, } from "@stencil/core";
5
5
  import { h } from "../../utils/renderer";
6
6
  import { HasSlotController } from "../../utils/slot";
7
7
  import { getDirectChildren } from "../../utils/dom";
8
+ import { findScrollParent } from "../../utils/scroll";
8
9
  /**
9
10
  * In-page navigation allows users to quickly find different sections on a page.
10
11
  *
@@ -12,26 +13,24 @@ import { getDirectChildren } from "../../utils/dom";
12
13
  * @version 8.0.0
13
14
  *
14
15
  * @slot default - The default slot.
15
- * @slot mobile - An escape hatch to add a custom mobile nav to override the provided one.
16
16
  * @slot back - For a link to navigate back to the previous section.
17
17
  * @slot accessory - To add nav accessories, such as a text input.
18
18
  *
19
19
  * @part root - The root element of the navigation.
20
20
  */
21
21
  export class NanoInPageNav {
22
- /** Whether the headers should be sticky (small screen only). Defaults to true */
23
- stickyHeaders = true;
24
- el;
25
- // private stickyClass = 'sticky';
26
- // private stuckClass: string = 'stuck';
27
- // private stickyObserver!: IntersectionObserver;
22
+ scrollElement;
23
+ host;
24
+ autoExternalLinks = false;
25
+ io;
28
26
  mobileNavWrapper;
29
- slotCtrl = new HasSlotController(this, '[default]', 'mobile', 'back', 'accessory');
30
- componentDidLoad() {
31
- this.createMobileMenu();
32
- }
27
+ slotCtrl = new HasSlotController(this, '[default]', 'back', 'accessory');
28
+ /** Whether the active link should be automatically set based on when a corresponding #id is in view. Defaults to true */
29
+ autoActive = true;
30
+ /** Menus that contain links to external pages should have different styling from in-page anchors */
31
+ externalLinks = 'auto';
33
32
  createMobileMenu() {
34
- const ul = getDirectChildren(this.el, 'ul')[0];
33
+ const ul = getDirectChildren(this.host, 'ul')[0];
35
34
  if (!ul)
36
35
  return;
37
36
  const cloned = ul.cloneNode(true);
@@ -57,8 +56,91 @@ export class NanoInPageNav {
57
56
  node.appendChild(submenu);
58
57
  return node;
59
58
  }
59
+ assessLinks() {
60
+ const anchors = this.host.querySelectorAll('a[href^="#"]');
61
+ if (this.externalLinks === 'auto') {
62
+ const allLinks = this.host.querySelectorAll('a[href]');
63
+ if (anchors.length > allLinks.length / 2) {
64
+ this.autoExternalLinks = false;
65
+ }
66
+ else {
67
+ this.autoExternalLinks = true;
68
+ }
69
+ }
70
+ if (!this.autoActive)
71
+ return;
72
+ const sections = [];
73
+ anchors.forEach((link) => {
74
+ const id = link.getAttribute('href')?.substring(1);
75
+ if (!id)
76
+ return;
77
+ const section = document.getElementById(id);
78
+ if (section)
79
+ sections.push(section);
80
+ });
81
+ if (this.io)
82
+ this.io.disconnect();
83
+ this.io = new IntersectionObserver((entries) => {
84
+ entries.forEach((entry) => {
85
+ const id = entry.target.getAttribute('id');
86
+ if (!id)
87
+ return;
88
+ const link = this.host.querySelector(`a[href="#${id}"]`);
89
+ if (!link)
90
+ return;
91
+ if (entry.isIntersecting) {
92
+ entry.target.classList.add('in-view');
93
+ }
94
+ else {
95
+ entry.target.classList.remove('in-view');
96
+ }
97
+ });
98
+ // pick the section nearest to the top
99
+ const visible = sections.filter((s) => s.classList.contains('in-view'));
100
+ if (visible.length) {
101
+ // sort by boundingClientRect.top
102
+ visible.sort((a, b) => b.getBoundingClientRect().top - a.getBoundingClientRect().top);
103
+ anchors.forEach((l) => l.classList.remove('is-active'));
104
+ const topId = visible[0].getAttribute('id');
105
+ const activeLink = this.host.querySelector(`a[href="#${topId}"]`);
106
+ activeLink?.classList.add('is-active');
107
+ }
108
+ }, {
109
+ root: this.scrollElement === document.documentElement
110
+ ? null
111
+ : this.scrollElement,
112
+ rootMargin: '0px 0px -60% 0px',
113
+ threshold: 0,
114
+ });
115
+ sections.forEach((section) => this.io.observe(section));
116
+ }
117
+ handleSlotChange = () => {
118
+ if (Build.isServer)
119
+ return;
120
+ this.assessLinks();
121
+ this.createMobileMenu();
122
+ };
123
+ componentDidLoad() {
124
+ this.createMobileMenu();
125
+ }
126
+ connectedCallback() {
127
+ if (Build.isServer)
128
+ return;
129
+ this.scrollElement = findScrollParent(this.host);
130
+ this.assessLinks();
131
+ }
132
+ disconnectedCallback() {
133
+ if (this.io) {
134
+ this.io.disconnect();
135
+ this.io = null;
136
+ }
137
+ }
60
138
  render() {
61
- return (h(Host, { key: '8b88cd04f960c4c8ea7ae2dd79a6ec82694570e6', class: "nano-in-page-nav" }, h("nav", { key: '4df4a5ef8aecad356c6ad1acd9a6a886edce8139', part: "root" }, (this.slotCtrl.has('back') || this.slotCtrl.has('accessory')) && (h("div", { key: 'ed1315ac689d77ffd4005df5a6eeb01f3fc9f599', class: "header" }, h("slot", { key: '0db0fb3919268a14fb924b292302c563181e87c0', name: "back" }), h("slot", { key: '95a5fafda43239ef7cc9208efc254fb335bc9f66', name: "accessory" }))), h("div", { key: '5a273c033b193efe7d4c72c3ccfdbf30b4442eae', class: "desktop-nav" }, h("slot", { key: '7d0cff62b54d21daa5b8e7d9551a9d0ed08cfe6f' })), h("nano-details", { key: 'c337ce8ac65560e5914f8566304f9382540316f2', label: "Menu", class: "details-wrapper mobile-nav", ref: (el) => (this.mobileNavWrapper = el) }))));
139
+ return (h(Host, { key: 'ea33348437e8e117df2e7ffff285ca60d8caf98b', class: {
140
+ 'nano-in-page-nav': true,
141
+ 'external-links': this.externalLinks === true ||
142
+ (this.externalLinks === 'auto' && this.autoExternalLinks),
143
+ } }, h("nav", { key: '4d4647bafee9aff8902dd988eb941bb89e02b0ed', part: "root" }, (this.slotCtrl.has('back') || this.slotCtrl.has('accessory')) && (h("div", { key: '26c306537b6188b822b714c0df1d49b8ba060cf3', class: "header" }, h("slot", { key: 'f9319b724393e10d0cd789ddf58a0e006f829afd', name: "back" }), h("slot", { key: '2c6bf0022d52af8710d6086beb558b9069557eb2', name: "accessory" }))), h("div", { key: '6c82ddaf8d25319ed7a0a46637047e4e750c5834', class: "desktop-nav" }, h("slot", { key: '4f01aa6544750860aae61cdb9309c62b37f45ef6', onSlotchange: () => this.handleSlotChange })), h("nano-details", { key: 'ff9b16866753cb24279c5bfc83ca637803333101', label: "Menu", class: "details-wrapper mobile-nav", ref: (el) => (this.mobileNavWrapper = el) }))));
62
144
  }
63
145
  static get is() { return "nano-in-page-nav"; }
64
146
  static get encapsulation() { return "shadow"; }
@@ -74,9 +156,9 @@ export class NanoInPageNav {
74
156
  }
75
157
  static get properties() {
76
158
  return {
77
- "stickyHeaders": {
159
+ "autoActive": {
78
160
  "type": "boolean",
79
- "attribute": "sticky-headers",
161
+ "attribute": "auto-active",
80
162
  "mutable": false,
81
163
  "complexType": {
82
164
  "original": "boolean",
@@ -87,14 +169,39 @@ export class NanoInPageNav {
87
169
  "optional": true,
88
170
  "docs": {
89
171
  "tags": [],
90
- "text": "Whether the headers should be sticky (small screen only). Defaults to true"
172
+ "text": "Whether the active link should be automatically set based on when a corresponding #id is in view. Defaults to true"
91
173
  },
92
174
  "getter": false,
93
175
  "setter": false,
94
176
  "reflect": false,
95
177
  "defaultValue": "true"
178
+ },
179
+ "externalLinks": {
180
+ "type": "any",
181
+ "attribute": "external-links",
182
+ "mutable": false,
183
+ "complexType": {
184
+ "original": "true | false | 'auto'",
185
+ "resolved": "\"auto\" | boolean",
186
+ "references": {}
187
+ },
188
+ "required": false,
189
+ "optional": true,
190
+ "docs": {
191
+ "tags": [],
192
+ "text": "Menus that contain links to external pages should have different styling from in-page anchors"
193
+ },
194
+ "getter": false,
195
+ "setter": false,
196
+ "reflect": false,
197
+ "defaultValue": "'auto'"
96
198
  }
97
199
  };
98
200
  }
99
- static get elementRef() { return "el"; }
201
+ static get states() {
202
+ return {
203
+ "autoExternalLinks": {}
204
+ };
205
+ }
206
+ static get elementRef() { return "host"; }
100
207
  }
@@ -8,6 +8,7 @@ import { utils } from "./utils/utils";
8
8
  function PageDots(parent) {
9
9
  this.parent = parent;
10
10
  this.parentElement = this.parent.element.shadowRoot || this.parent.element;
11
+ this.containingEl = this.parentElement.parentNode || this.parentElement;
11
12
  this._create();
12
13
  }
13
14
  PageDots.prototype = Object.create(Unipointer.prototype);
@@ -27,13 +28,13 @@ PageDots.prototype.activate = function () {
27
28
  this.holder.addEventListener('click', this.handleClick);
28
29
  this.bindStartEvent(this.holder);
29
30
  // add to DOM
30
- this.parentElement.appendChild(this.holder);
31
+ this.containingEl.appendChild(this.holder);
31
32
  };
32
33
  PageDots.prototype.deactivate = function () {
33
34
  this.holder.removeEventListener('click', this.handleClick);
34
35
  this.unbindStartEvent(this.holder);
35
36
  // remove from DOM
36
- this.parentElement.removeChild(this.holder);
37
+ this.containingEl.removeChild(this.holder);
37
38
  };
38
39
  PageDots.prototype.setDots = function () {
39
40
  // get difference between number of slides and number of dots
@@ -264,7 +264,6 @@ https://flickity.metafizzy.co
264
264
 
265
265
  /* ---- page dots ---- */
266
266
  .flickity-page-dots {
267
- position: absolute;
268
267
  inline-size: 100%;
269
268
  padding: 0;
270
269
  margin: 0;
@@ -98,7 +98,7 @@ const urls = {
98
98
  };
99
99
  const search = {
100
100
  app_id: "N8NZI5A47F",
101
- api_key: "MDQ0OWZiMzhmZjI4YmZmMmIzY2NhNzI3NGU4Yjc5YWVhNmExMzcxNDRlZTNlN2U2NGEwNzRlZmJjZTZkZmExZWZpbHRlcnM9JTI4JTI3cmVnaW9uJTI3JTNBJTI3dXMlMjcrT1IrJTI3cmVnaW9uJTI3JTNBJTI3YW55JTI3JTI5K0FORCslMjhOT1QrJTI3dHlwZSUyNyUzQSUyN3doaXRlX3BhcGVyJTI3JTI5K0FORCslMjhOT1QrJTI3b3JpZ2luJTI3JTNBJTI3Y29tbXVuaXR5JTI3JTI5JnZhbGlkVW50aWw9MTc1NTk0Mzc5MA==",
101
+ api_key: "MDRhNGI1ZjFkMDU3MjAyNTQ2ZDA4MmQ2ZTBjODBhM2ViODZjMWNhYTFjZmI5YjM3ODljYWUyNTY0MDAyZGJmOWZpbHRlcnM9JTI4JTI3cmVnaW9uJTI3JTNBJTI3dXMlMjcrT1IrJTI3cmVnaW9uJTI3JTNBJTI3YW55JTI3JTI5K0FORCslMjhOT1QrJTI3dHlwZSUyNyUzQSUyN3doaXRlX3BhcGVyJTI3JTI5K0FORCslMjhOT1QrJTI3b3JpZ2luJTI3JTNBJTI3Y29tbXVuaXR5JTI3JTI5JnZhbGlkVW50aWw9MjA3MTkwOTQ0MA==",
102
102
  indeces: [
103
103
  {
104
104
  index: "ont_prod_en_v3",
@@ -94,7 +94,7 @@ const urls = {
94
94
  };
95
95
  const search = {
96
96
  app_id: "N8NZI5A47F",
97
- api_key: "MDQ0OWZiMzhmZjI4YmZmMmIzY2NhNzI3NGU4Yjc5YWVhNmExMzcxNDRlZTNlN2U2NGEwNzRlZmJjZTZkZmExZWZpbHRlcnM9JTI4JTI3cmVnaW9uJTI3JTNBJTI3dXMlMjcrT1IrJTI3cmVnaW9uJTI3JTNBJTI3YW55JTI3JTI5K0FORCslMjhOT1QrJTI3dHlwZSUyNyUzQSUyN3doaXRlX3BhcGVyJTI3JTI5K0FORCslMjhOT1QrJTI3b3JpZ2luJTI3JTNBJTI3Y29tbXVuaXR5JTI3JTI5JnZhbGlkVW50aWw9MTc1NTk0Mzc5MA==",
97
+ api_key: "MDRhNGI1ZjFkMDU3MjAyNTQ2ZDA4MmQ2ZTBjODBhM2ViODZjMWNhYTFjZmI5YjM3ODljYWUyNTY0MDAyZGJmOWZpbHRlcnM9JTI4JTI3cmVnaW9uJTI3JTNBJTI3dXMlMjcrT1IrJTI3cmVnaW9uJTI3JTNBJTI3YW55JTI3JTI5K0FORCslMjhOT1QrJTI3dHlwZSUyNyUzQSUyN3doaXRlX3BhcGVyJTI3JTI5K0FORCslMjhOT1QrJTI3b3JpZ2luJTI3JTNBJTI3Y29tbXVuaXR5JTI3JTI5JnZhbGlkVW50aWw9MjA3MTkwOTQ0MA==",
98
98
  indeces: [
99
99
  {
100
100
  index: "ont_prod_en_v3",