@nanoporetech-digital/components 8.12.3 → 8.14.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 (95) hide show
  1. package/dist/cjs/loader.cjs.js +1 -1
  2. package/dist/cjs/nano-alert.cjs.entry.js +1 -1
  3. package/dist/cjs/nano-avatar_5.cjs.entry.js +1 -1
  4. package/dist/cjs/nano-checkbox-group.cjs.entry.js +1 -1
  5. package/dist/cjs/nano-components.cjs.js +1 -1
  6. package/dist/cjs/{nano-data-table-B07AITiQ.js → nano-data-table-CiPPql2J.js} +3 -3
  7. package/dist/cjs/nano-data-table.cjs.entry.js +1 -1
  8. package/dist/cjs/nano-datalist_3.cjs.entry.js +5 -5
  9. package/dist/cjs/nano-details.cjs.entry.js +1 -1
  10. package/dist/cjs/nano-dialog.cjs.entry.js +1 -1
  11. package/dist/cjs/nano-dropdown_2.cjs.entry.js +1 -1
  12. package/dist/cjs/nano-in-page-nav.cjs.entry.js +1 -1
  13. package/dist/cjs/nano-input-otp.cjs.entry.js +19 -6
  14. package/dist/cjs/nano-menu-drawer.cjs.entry.js +1 -1
  15. package/dist/cjs/nano-nav-item.cjs.entry.js +1 -1
  16. package/dist/cjs/{slot-BUMYLmup.js → slot-CM4lrtVE.js} +3 -2
  17. package/dist/cjs/{table.worker-Ctqp7IJT.js → table.worker-D7SJpZlV.js} +1 -1
  18. package/dist/collection/components/breadcrumb/breadcrumb.js +1 -1
  19. package/dist/collection/components/checkbox/checkbox-group.css +5 -3
  20. package/dist/collection/components/data-table/table.cell.js +1 -1
  21. package/dist/collection/components/data-table/table.utils.js +1 -1
  22. package/dist/collection/components/datalist/datalist.js +5 -5
  23. package/dist/collection/components/icon/pictogram/accessible-and-affordable.svg +6 -0
  24. package/dist/collection/components/icon/pictogram/faster-results.svg +3 -0
  25. package/dist/collection/components/icon/pictogram/richer-insights.svg +9 -0
  26. package/dist/collection/components/input-otp/input-otp.js +49 -5
  27. package/dist/collection/utils/slot.js +3 -2
  28. package/dist/components/datalist.js +5 -5
  29. package/dist/components/nano-checkbox-group.js +1 -1
  30. package/dist/components/nano-data-table.js +2 -2
  31. package/dist/components/nano-input-otp.js +20 -6
  32. package/dist/components/slot.js +3 -2
  33. package/dist/esm/loader.js +1 -1
  34. package/dist/esm/nano-alert.entry.js +1 -1
  35. package/dist/esm/nano-avatar_5.entry.js +1 -1
  36. package/dist/esm/nano-checkbox-group.entry.js +1 -1
  37. package/dist/esm/nano-components.js +1 -1
  38. package/dist/esm/{nano-data-table-B3_-hFqj.js → nano-data-table-BXdzSqWC.js} +3 -3
  39. package/dist/esm/nano-data-table.entry.js +1 -1
  40. package/dist/esm/nano-datalist_3.entry.js +5 -5
  41. package/dist/esm/nano-details.entry.js +1 -1
  42. package/dist/esm/nano-dialog.entry.js +1 -1
  43. package/dist/esm/nano-dropdown_2.entry.js +1 -1
  44. package/dist/esm/nano-in-page-nav.entry.js +1 -1
  45. package/dist/esm/nano-input-otp.entry.js +19 -6
  46. package/dist/esm/nano-menu-drawer.entry.js +1 -1
  47. package/dist/esm/nano-nav-item.entry.js +1 -1
  48. package/dist/esm/{slot-D31cEKyt.js → slot-BeXeAw-u.js} +3 -2
  49. package/dist/esm/{table.worker-By3ZdRHH.js → table.worker-DftFV8Z7.js} +1 -1
  50. package/dist/nano-assets/hash.txt +1 -1
  51. package/dist/nano-assets/icon/pictogram/accessible-and-affordable.svg +6 -0
  52. package/dist/nano-assets/icon/pictogram/faster-results.svg +3 -0
  53. package/dist/nano-assets/icon/pictogram/richer-insights.svg +9 -0
  54. package/dist/nano-components/nano-alert.entry.js +1 -1
  55. package/dist/nano-components/nano-avatar_5.entry.js +1 -1
  56. package/dist/nano-components/nano-checkbox-group.entry.js +1 -1
  57. package/dist/nano-components/nano-components.css +1 -1
  58. package/dist/nano-components/nano-components.esm.js +1 -1
  59. package/dist/nano-components/{nano-data-table-B3_-hFqj.js → nano-data-table-BXdzSqWC.js} +1 -1
  60. package/dist/nano-components/nano-data-table.entry.js +1 -1
  61. package/dist/nano-components/nano-datalist_3.entry.js +1 -1
  62. package/dist/nano-components/nano-details.entry.js +1 -1
  63. package/dist/nano-components/nano-dialog.entry.js +1 -1
  64. package/dist/nano-components/nano-dropdown_2.entry.js +1 -1
  65. package/dist/nano-components/nano-in-page-nav.entry.js +1 -1
  66. package/dist/nano-components/nano-input-otp.entry.js +1 -1
  67. package/dist/nano-components/nano-menu-drawer.entry.js +1 -1
  68. package/dist/nano-components/nano-nav-item.entry.js +1 -1
  69. package/dist/nano-components/pictogram/accessible-and-affordable.svg +6 -0
  70. package/dist/nano-components/pictogram/faster-results.svg +3 -0
  71. package/dist/nano-components/pictogram/richer-insights.svg +9 -0
  72. package/dist/nano-components/slot-BeXeAw-u.js +4 -0
  73. package/dist/nano-components/{table.worker-By3ZdRHH.js → table.worker-DftFV8Z7.js} +1 -1
  74. package/dist/style/components.css +1 -1
  75. package/dist/style/components.css.map +1 -1
  76. package/dist/style/nano.css +1 -1
  77. package/dist/style/nano.css.map +1 -1
  78. package/dist/types/components/input-otp/input-otp.d.ts +8 -0
  79. package/dist/types/components.d.ts +9 -0
  80. package/dist/types/utils/renderer.d.ts +1 -1
  81. package/docs-json.json +43 -2
  82. package/hydrate/index.js +31 -16
  83. package/hydrate/index.mjs +31 -16
  84. package/package.json +2 -2
  85. package/dist/nano-components/slot-D31cEKyt.js +0 -4
  86. /package/dist/types/builds/{vSRqAuzi → RG1Ezkr-}/0/Digital/nano-components/packages/components/.stencil/plugins/stencil/vue-output/generate-vue-component.d.ts +0 -0
  87. /package/dist/types/builds/{vSRqAuzi → RG1Ezkr-}/0/Digital/nano-components/packages/components/.stencil/plugins/stencil/vue-output/index.d.ts +0 -0
  88. /package/dist/types/builds/{vSRqAuzi → RG1Ezkr-}/0/Digital/nano-components/packages/components/.stencil/plugins/stencil/vue-output/output-vue.d.ts +0 -0
  89. /package/dist/types/builds/{vSRqAuzi → RG1Ezkr-}/0/Digital/nano-components/packages/components/.stencil/plugins/stencil/vue-output/plugin.d.ts +0 -0
  90. /package/dist/types/builds/{vSRqAuzi → RG1Ezkr-}/0/Digital/nano-components/packages/components/.stencil/plugins/stencil/vue-output/types.d.ts +0 -0
  91. /package/dist/types/builds/{vSRqAuzi → RG1Ezkr-}/0/Digital/nano-components/packages/components/.stencil/plugins/stencil/vue-output/utils.d.ts +0 -0
  92. /package/dist/types/builds/{vSRqAuzi → RG1Ezkr-}/0/Digital/nano-components/packages/components/.stencil/stencil.config.d.ts +0 -0
  93. /package/dist/types/builds/{vSRqAuzi → RG1Ezkr-}/0/Digital/nano-components/packages/components/.stencil/stencil.config.prod.d.ts +0 -0
  94. /package/dist/types/builds/{vSRqAuzi → RG1Ezkr-}/0/Digital/nano-components/packages/components/.stencil/testing/mocks/intersection-observer.d.ts +0 -0
  95. /package/dist/types/builds/{vSRqAuzi → RG1Ezkr-}/0/Digital/nano-components/packages/components/.stencil/wdio.conf.d.ts +0 -0
@@ -113,6 +113,10 @@ export declare class InputOTP implements ComponentInterface {
113
113
  * Emitted when the input group loses focus.
114
114
  */
115
115
  nanoBlur: EventEmitter<FocusEvent>;
116
+ /**
117
+ * Emitted when the input group is cleared.
118
+ */
119
+ nanoClear: EventEmitter<void>;
116
120
  /**
117
121
  * Emitted when the input group has focus.
118
122
  */
@@ -124,6 +128,10 @@ export declare class InputOTP implements ComponentInterface {
124
128
  * Otherwise, the first empty input box or the last input if all are filled will be focused.
125
129
  */
126
130
  setFocus(index?: number): Promise<void>;
131
+ /**
132
+ * Resets the input boxes to empty values.
133
+ */
134
+ clear(): Promise<void>;
127
135
  valueChanged(): void;
128
136
  componentWillLoad(): void;
129
137
  componentDidLoad(): void;
@@ -2196,6 +2196,10 @@ export namespace Components {
2196
2196
  * @default false
2197
2197
  */
2198
2198
  "allowInvalid": boolean;
2199
+ /**
2200
+ * Resets the input boxes to empty values.
2201
+ */
2202
+ "clear": () => Promise<void>;
2199
2203
  /**
2200
2204
  * If `true`, the user cannot interact with the input.
2201
2205
  * @default false
@@ -4485,6 +4489,7 @@ declare global {
4485
4489
  "nanoChange": InputOtpChangeEventDetail;
4486
4490
  "nanoComplete": InputOtpCompleteEventDetail;
4487
4491
  "nanoBlur": FocusEvent;
4492
+ "nanoClear": void;
4488
4493
  "nanoFocus": FocusEvent;
4489
4494
  }
4490
4495
  /**
@@ -7410,6 +7415,10 @@ declare namespace LocalJSX {
7410
7415
  * The `nanoChange` event is fired when the user modifies the input's value. Unlike the `nanoInput` event, the `nanoChange` event is only fired when changes are committed, not as the user types. The `nanoChange` event fires when the `<nano-input-otp>` component loses focus after its value has changed. This event will not emit when programmatically setting the `value` property.
7411
7416
  */
7412
7417
  "onNanoChange"?: (event: NanoInputOtpCustomEvent<InputOtpChangeEventDetail>) => void;
7418
+ /**
7419
+ * Emitted when the input group is cleared.
7420
+ */
7421
+ "onNanoClear"?: (event: NanoInputOtpCustomEvent<void>) => void;
7413
7422
  /**
7414
7423
  * Emitted when all input boxes have been filled with valid values.
7415
7424
  */
@@ -4,7 +4,7 @@ import { h as stencilH } from '../stencil-public-runtime';
4
4
  * @param tag
5
5
  * @returns the transformed tag
6
6
  */
7
- export declare function transformTag(tag: string): string;
7
+ export declare function transformTag<T extends string>(tag: T): T;
8
8
  /**
9
9
  * Augment Stencil's `h()` function to add a tag prefix
10
10
  * @param args incoming JSX arguments
package/docs-json.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "timestamp": "2025-10-17T15:38:23",
2
+ "timestamp": "2025-10-29T17:36:06",
3
3
  "compiler": {
4
4
  "name": "@stencil/core",
5
5
  "version": "4.36.1",
@@ -3369,7 +3369,7 @@
3369
3369
  "references": {
3370
3370
  "Breadcrumb": {
3371
3371
  "location": "local",
3372
- "path": "/builds/vSRqAuzi/0/Digital/nano-components/packages/components/src/components/breadcrumb/breadcrumb.tsx",
3372
+ "path": "/builds/RG1Ezkr-/0/Digital/nano-components/packages/components/src/components/breadcrumb/breadcrumb.tsx",
3373
3373
  "id": "src/components/breadcrumb/breadcrumb.tsx::Breadcrumb"
3374
3374
  }
3375
3375
  }
@@ -4911,6 +4911,11 @@
4911
4911
  }
4912
4912
  ],
4913
4913
  "styles": [
4914
+ {
4915
+ "name": "--gap",
4916
+ "annotation": "prop",
4917
+ "docs": "The gap between checkboxes. Defaults to var(--nano-spacing-md)."
4918
+ },
4914
4919
  {
4915
4920
  "name": "--help-msg-color",
4916
4921
  "annotation": "prop",
@@ -18208,6 +18213,28 @@
18208
18213
  }
18209
18214
  ],
18210
18215
  "methods": [
18216
+ {
18217
+ "name": "clear",
18218
+ "returns": {
18219
+ "type": "Promise<void>",
18220
+ "docs": ""
18221
+ },
18222
+ "complexType": {
18223
+ "signature": "() => Promise<void>",
18224
+ "parameters": [],
18225
+ "references": {
18226
+ "Promise": {
18227
+ "location": "global",
18228
+ "id": "global::Promise"
18229
+ }
18230
+ },
18231
+ "return": "Promise<void>"
18232
+ },
18233
+ "signature": "clear() => Promise<void>",
18234
+ "parameters": [],
18235
+ "docs": "Resets the input boxes to empty values.",
18236
+ "docsTags": []
18237
+ },
18211
18238
  {
18212
18239
  "name": "setFocus",
18213
18240
  "returns": {
@@ -18288,6 +18315,20 @@
18288
18315
  "docs": "The `nanoChange` event is fired when the user modifies the input's value.\nUnlike the `nanoInput` event, the `nanoChange` event is only fired when changes\nare committed, not as the user types.\n\nThe `nanoChange` event fires when the `<nano-input-otp>` component loses\nfocus after its value has changed.\n\nThis event will not emit when programmatically setting the `value` property.",
18289
18316
  "docsTags": []
18290
18317
  },
18318
+ {
18319
+ "event": "nanoClear",
18320
+ "detail": "void",
18321
+ "bubbles": true,
18322
+ "complexType": {
18323
+ "original": "void",
18324
+ "resolved": "void",
18325
+ "references": {}
18326
+ },
18327
+ "cancelable": true,
18328
+ "composed": true,
18329
+ "docs": "Emitted when the input group is cleared.",
18330
+ "docsTags": []
18331
+ },
18291
18332
  {
18292
18333
  "event": "nanoComplete",
18293
18334
  "detail": "InputOtpCompleteEventDetail",
package/hydrate/index.js CHANGED
@@ -3836,7 +3836,8 @@ class HasSlotController {
3836
3836
  // * Regular shadow DOM component *
3837
3837
  childNodes = [...this.host.shadowRoot.childNodes];
3838
3838
  }
3839
- else if (!this.host.classList.contains('hydrated')) {
3839
+ else if (!this.host.classList.contains('hydrated') &&
3840
+ this.host.__childNodes) {
3840
3841
  // * Non-shadow, polyfilled component *
3841
3842
  // Component has not done initial render. Return component internals
3842
3843
  childNodes = [...(this.host?.__childNodes ?? [])];
@@ -3846,7 +3847,7 @@ class HasSlotController {
3846
3847
  childNodes = [...this.host.childNodes];
3847
3848
  }
3848
3849
  return childNodes.some((node) => {
3849
- if (node.nodeType === Node.TEXT_NODE && node.textContent.trim() !== '') {
3850
+ if (node.nodeType === Node.TEXT_NODE && !!node.textContent.trim()) {
3850
3851
  return true;
3851
3852
  }
3852
3853
  if (node.nodeType === Node.ELEMENT_NODE) {
@@ -8470,7 +8471,7 @@ const getClassMap = (classes) => {
8470
8471
  return map;
8471
8472
  };
8472
8473
 
8473
- const checkboxGroupCss = ".sc-nano-checkbox-group-h,*.sc-nano-checkbox-group,*.sc-nano-checkbox-group::before,*.sc-nano-checkbox-group::after{box-sizing:border-box}[hidden].sc-nano-checkbox-group{display:none !important}@media (prefers-reduced-motion: reduce){.sc-nano-checkbox-group-h,*.sc-nano-checkbox-group,*.sc-nano-checkbox-group::before,*.sc-nano-checkbox-group::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important}}.sc-nano-checkbox-group-h,*.sc-nano-checkbox-group,*.sc-nano-checkbox-group::before,*.sc-nano-checkbox-group::after{box-sizing:border-box}[hidden].sc-nano-checkbox-group{display:none !important}@media (prefers-reduced-motion: reduce){.sc-nano-checkbox-group-h,*.sc-nano-checkbox-group,*.sc-nano-checkbox-group::before,*.sc-nano-checkbox-group::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important}}.sc-nano-checkbox-group-h{--label-color:var(--nano-color-base-1000);--label-font-size:var(--nano-font-size-xs);--invalid-msg-color:var(--nano-color-danger-1100);--help-msg-color:var(--nano-color-base-1000);--more-font-size:var(--nano-font-size-2xs);display:block;inline-size:100%}.sc-nano-checkbox-group-h *.sc-nano-checkbox-group{box-sizing:inherit}.cbgroup.sc-nano-checkbox-group{margin:0;padding:0;border:0}.cbgroup__error.sc-nano-checkbox-group,.cbgroup__help.sc-nano-checkbox-group,.cbgroup__more.sc-nano-checkbox-group{display:block;inline-size:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.cbgroup__error.sc-nano-checkbox-group,.cbgroup__help.sc-nano-checkbox-group{inset-block-start:0;inset-inline-start:0;position:absolute;font-size:var(--more-font-size);line-height:1.2;transition:0.3s ease-out opacity;font-style:italic}.show-error.sc-nano-checkbox-group .cbgroup__error.sc-nano-checkbox-group,.show-error.sc-nano-checkbox-group .cbgroup__help.sc-nano-checkbox-group{opacity:1}.cbgroup__error.sc-nano-checkbox-group{color:var(--invalid-msg-color);opacity:0}.has-error.sc-nano-checkbox-group .cbgroup__error.sc-nano-checkbox-group{opacity:1}.cbgroup__help.sc-nano-checkbox-group{opacity:1;color:var(--help-msg-color)}.has-error.sc-nano-checkbox-group .cbgroup__help.sc-nano-checkbox-group{opacity:0}.cbgroup__more.sc-nano-checkbox-group{block-size:1em;margin-block:var(--nano-spacing-sm) 0;position:relative;opacity:0;display:none;transition:all var(--nano-transition-fast) ease;transition-behavior:allow-discrete}.has-helper.sc-nano-checkbox-group .cbgroup__more.sc-nano-checkbox-group,.has-error.sc-nano-checkbox-group .cbgroup__more.sc-nano-checkbox-group{display:block;opacity:1}.cbgroup__legend.sc-nano-checkbox-group{font-size:var(--nano-font-size-xs);line-height:var(--nano-line-height-normal);letter-spacing:var(--nano-letter-spacing-loose);padding:0 0 0.9375rem;margin:0;display:block;inline-size:100%}.cbgroup__legend.visually-hide.sc-nano-checkbox-group{clip-path:inset(50%);block-size:1px;overflow:hidden;position:absolute;white-space:nowrap;inline-size:1px}.cbgroup__cbs.sc-nano-checkbox-group{margin:0;padding:0;display:flex;flex-direction:column;gap:var(--nano-spacing-md)}.types-segment.sc-nano-checkbox-group-h .cbgroup__cbs.sc-nano-checkbox-group{flex-direction:row;gap:0}.types-tag.sc-nano-checkbox-group-h .cbgroup__cbs.sc-nano-checkbox-group{flex-direction:row;gap:var(--nano-spacing-sm)}";
8474
+ const checkboxGroupCss = ".sc-nano-checkbox-group-h,*.sc-nano-checkbox-group,*.sc-nano-checkbox-group::before,*.sc-nano-checkbox-group::after{box-sizing:border-box}[hidden].sc-nano-checkbox-group{display:none !important}@media (prefers-reduced-motion: reduce){.sc-nano-checkbox-group-h,*.sc-nano-checkbox-group,*.sc-nano-checkbox-group::before,*.sc-nano-checkbox-group::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important}}.sc-nano-checkbox-group-h,*.sc-nano-checkbox-group,*.sc-nano-checkbox-group::before,*.sc-nano-checkbox-group::after{box-sizing:border-box}[hidden].sc-nano-checkbox-group{display:none !important}@media (prefers-reduced-motion: reduce){.sc-nano-checkbox-group-h,*.sc-nano-checkbox-group,*.sc-nano-checkbox-group::before,*.sc-nano-checkbox-group::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important}}.sc-nano-checkbox-group-h{--label-color:var(--nano-color-base-1000);--label-font-size:var(--nano-font-size-xs);--invalid-msg-color:var(--nano-color-danger-1100);--help-msg-color:var(--nano-color-base-1000);--more-font-size:var(--nano-font-size-2xs);--gap:var(--nano-spacing-md);display:block;inline-size:100%}.sc-nano-checkbox-group-h *.sc-nano-checkbox-group{box-sizing:inherit}.cbgroup.sc-nano-checkbox-group{margin:0;padding:0;border:0}.cbgroup__error.sc-nano-checkbox-group,.cbgroup__help.sc-nano-checkbox-group,.cbgroup__more.sc-nano-checkbox-group{display:block;inline-size:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.cbgroup__error.sc-nano-checkbox-group,.cbgroup__help.sc-nano-checkbox-group{inset-block-start:0;inset-inline-start:0;position:absolute;font-size:var(--more-font-size);line-height:1.2;transition:0.3s ease-out opacity;font-style:italic}.show-error.sc-nano-checkbox-group .cbgroup__error.sc-nano-checkbox-group,.show-error.sc-nano-checkbox-group .cbgroup__help.sc-nano-checkbox-group{opacity:1}.cbgroup__error.sc-nano-checkbox-group{color:var(--invalid-msg-color);opacity:0}.has-error.sc-nano-checkbox-group .cbgroup__error.sc-nano-checkbox-group{opacity:1}.cbgroup__help.sc-nano-checkbox-group{opacity:1;color:var(--help-msg-color)}.has-error.sc-nano-checkbox-group .cbgroup__help.sc-nano-checkbox-group{opacity:0}.cbgroup__more.sc-nano-checkbox-group{block-size:1em;margin-block:var(--nano-spacing-sm) 0;position:relative;opacity:0;display:none;transition:all var(--nano-transition-fast) ease;transition-behavior:allow-discrete}.has-helper.sc-nano-checkbox-group .cbgroup__more.sc-nano-checkbox-group,.has-error.sc-nano-checkbox-group .cbgroup__more.sc-nano-checkbox-group{display:block;opacity:1}.cbgroup__legend.sc-nano-checkbox-group{font-size:var(--nano-font-size-xs);line-height:var(--nano-line-height-normal);letter-spacing:var(--nano-letter-spacing-loose);padding:0 0 0.9375rem;margin:0;display:block;inline-size:100%}.cbgroup__legend.visually-hide.sc-nano-checkbox-group{clip-path:inset(50%);block-size:1px;overflow:hidden;position:absolute;white-space:nowrap;inline-size:1px}.cbgroup__cbs.sc-nano-checkbox-group{margin:0;padding:0;display:flex;flex-direction:column;gap:var(--gap)}.types-segment.sc-nano-checkbox-group-h .cbgroup__cbs.sc-nano-checkbox-group{flex-direction:row;--gap:0}.types-tag.sc-nano-checkbox-group-h .cbgroup__cbs.sc-nano-checkbox-group{flex-direction:row;--gap:var(--nano-spacing-sm)}";
8474
8475
 
8475
8476
  /**
8476
8477
  * Checkbox group is an optional wrapper for all [checkbox](/components/checkbox) controls.
@@ -9534,18 +9535,18 @@ class DataList {
9534
9535
  }
9535
9536
  }
9536
9537
  render() {
9537
- return (h(Host, { key: '269f57e6eccd251685f84a94d53f380d6545a3cb', class: "nano-datalist", role: this.actvOptEles.length ? 'listbox' : undefined, "aria-owns": this.optionIds.length ? this.optionIds.join(' ') : undefined, "aria-label": this.optionIds.length
9538
+ return (h(Host, { key: '8acb3be76246d665171db96444cff3a5141e1132', class: "nano-datalist", role: this.actvOptEles.length ? 'listbox' : undefined, "aria-owns": this.optionIds.length ? this.optionIds.join(' ') : undefined, "aria-label": this.optionIds.length
9538
9539
  ? 'Select options from the list below'
9539
- : undefined }, h("nano-dropdown", { key: 'ee6398b356dc1a0ff9fa35e84955314fc95435b6', part: "dropdown", exportparts: "trigger:dropdown__trigger, panel:dropdown__panel", ...this.dropDownConfig, ref: (el) => (this.nanoDropdown = el), dialogTitle: "Select options from the list below", class: {
9540
+ : undefined }, h("nano-dropdown", { key: '56c051873a20a3dab17a36eec1a2f040f83247fa', part: "dropdown", exportparts: "trigger:dropdown__trigger, panel:dropdown__panel", ...this.dropDownConfig, ref: (el) => (this.nanoDropdown = el), dialogTitle: "Select options from the list below", class: {
9540
9541
  dlist__dropdown: true,
9541
9542
  'dlist--isfiltered': this.isFiltered,
9542
- }, onNanoAfterShow: this.handleShow, onNanoAfterHide: this.handleHide, role: "group" }, h("nano-menu", { key: 'f80006a5ba62c227094da52672b4abf6ee6335dc', part: "main-menu", ref: (el) => (this.listBox = el), hidden: !this.actvOptEles.length, type: "listbox", label: this.inputLabel ? this.inputLabel.textContent : undefined, class: {
9543
+ }, onNanoAfterShow: this.handleShow, onNanoAfterHide: this.handleHide, role: "group" }, h("nano-menu", { key: '7559b648617c8d32f61c670e4dc78c0d60d36dc4', part: "main-menu", ref: (el) => (this.listBox = el), hidden: !this.actvOptEles.length, type: "listbox", label: this.inputLabel ? this.inputLabel.textContent : undefined, class: {
9543
9544
  dlist__menu: true,
9544
9545
  'dlist__menu--open': this.dropwdownOpen,
9545
- }, tabIndex: -1, onNanoSelect: this.optSelected, onKeyDown: this.optionKeyDown }, h("slot", { key: '8a2d3160b990c99baeaf4fd9bdd7bb04229d642c', name: "list-top" }), h("slot", { key: '2230e4458be0998d59d18250e1d22188baf2f6b1' }), h("slot", { key: 'fca84cbd01495e4b62ba95c4c07681f506939d3f', name: "internal-opts" }), h("slot", { key: '076fd81c15f5ac6590e5311503262a07f60e8454', name: "list-bottom" })), h("nano-menu", { key: 'd4878bc502b4fcc0de01f67b5065ad017f445f75', part: "no-result-menu", type: "listbox", label: "No results found", hidden: !!this.actvOptEles.length, class: {
9546
+ }, tabIndex: -1, onNanoSelect: this.optSelected, onKeyDown: this.optionKeyDown }, h("slot", { key: '02bd8ba511db314637e8991d29234a22967cf27d', name: "list-top" }), h("slot", { key: 'cb0234e0dd103293c1f1292af62575dd766af730' }), h("slot", { key: '0adac42b20ee0338de74217e6e91c00be6b5b6a7', name: "internal-opts" }), h("slot", { key: '906255e4e6fdc87fa8bf6e278ad076f179553925', name: "list-bottom" })), h("nano-menu", { key: '9aa978054227c9bb928c06ce93303ceda48cbf29', part: "no-result-menu", type: "listbox", label: "No results found", hidden: !!this.actvOptEles.length, class: {
9546
9547
  dlist__menu: true,
9547
9548
  'dlist__menu--open': this.dropwdownOpen,
9548
- } }, h("slot", { key: '2ac583af3ac8b24ace627637ab86471999df9465', name: "no-result" })), !!this.actvOptEles && (h("div", { key: '4971780255baf694fcc447756ca02e1115ece871', class: "dlist__status" }, this.actvOptEles.length, " result", this.actvOptEles.length > 1 ? 's' : '', " available.")))));
9549
+ } }, h("slot", { key: '4e2ce9dcb39d0c823ed27f13dc8c9a8873f0ca9f', name: "no-result" })), !!this.actvOptEles && (h("div", { key: 'c6bf0c88d7b1fcd24b2882c7db851ffca2e77ba3', class: "dlist__status" }, this.actvOptEles.length, " result", this.actvOptEles.length > 1 ? 's' : '', " available.")))));
9549
9550
  }
9550
9551
  static get watchers() { return {
9551
9552
  "open": ["openWatcher"],
@@ -17768,6 +17769,7 @@ class InputOTP {
17768
17769
  this.nanoChange = createEvent(this, "nanoChange", 7);
17769
17770
  this.nanoComplete = createEvent(this, "nanoComplete", 7);
17770
17771
  this.nanoBlur = createEvent(this, "nanoBlur", 7);
17772
+ this.nanoClear = createEvent(this, "nanoClear", 7);
17771
17773
  this.nanoFocus = createEvent(this, "nanoFocus", 7);
17772
17774
  }
17773
17775
  inputRefs = [];
@@ -17871,6 +17873,10 @@ class InputOTP {
17871
17873
  * Emitted when the input group loses focus.
17872
17874
  */
17873
17875
  nanoBlur;
17876
+ /**
17877
+ * Emitted when the input group is cleared.
17878
+ */
17879
+ nanoClear;
17874
17880
  /**
17875
17881
  * Emitted when the input group has focus.
17876
17882
  */
@@ -17891,6 +17897,16 @@ class InputOTP {
17891
17897
  this.inputRefs[tabbableIndex]?.focus();
17892
17898
  }
17893
17899
  }
17900
+ /**
17901
+ * Resets the input boxes to empty values.
17902
+ */
17903
+ async clear() {
17904
+ this.value = '';
17905
+ this.inputRefs.forEach((input, index) => {
17906
+ input.value = this.inputValues[index] || '';
17907
+ });
17908
+ this.nanoClear.emit();
17909
+ }
17894
17910
  valueChanged() {
17895
17911
  this.initializeValues();
17896
17912
  this.updateTabIndexes();
@@ -18431,31 +18447,29 @@ class InputOTP {
18431
18447
  * - `valid` is true if all input boxes are filled with valid values.
18432
18448
  */
18433
18449
  computeValidity() {
18434
- const { inputValues } = this;
18435
18450
  this.invalid =
18436
18451
  this.allowInvalid &&
18437
18452
  this.inputValues.some((val) => val !== '' && !this.validKeyPattern.test(val));
18438
18453
  this.valid =
18439
18454
  this.inputValues.length === this.length &&
18440
18455
  this.inputValues.every((val) => val !== '' && this.validKeyPattern.test(val));
18441
- inputValues.some((v) => v !== '' && !this.validKeyPattern.test(v));
18442
18456
  }
18443
18457
  render() {
18444
18458
  const { disabled, hasFocus, inputId, inputRefs, inputValues, length, readonly, invalid, valid, } = this;
18445
18459
  const inputmode = this.getInputmode();
18446
18460
  const tabbableIndex = this.getTabbableIndex();
18447
18461
  const pattern = this.getPattern();
18448
- return (hAsync(Host, { key: '9b64211ca6a227c5f905a76a50ca3a44eff0a96b', class: {
18462
+ return (hAsync(Host, { key: '69c1b3c4a4cae21665bb7e3646a27a89f8d0a73b', class: {
18449
18463
  'has-focus': hasFocus,
18450
18464
  'input-otp-disabled': disabled,
18451
18465
  'input-otp-readonly': readonly,
18452
18466
  'nano-invalid': invalid,
18453
18467
  'nano-valid': valid,
18454
- } }, hAsync("div", { key: 'cc7fb4411962398f143d2dd17c40448111956e80', class: "input-otp-container" }, hAsync("div", { key: '4408d19628b34a25cb3bc39a0df1dd859700399f', class: "input-otp-group", role: "group", "aria-label": "One-time password input" }, Array.from({ length }).map((_, index) => (hAsync(Fragment, null, hAsync("div", { class: "native-wrapper" }, hAsync("input", { class: "native-input", id: `${inputId}-${index}`, "aria-label": `Input ${index + 1} of ${length}`, type: "text", inputmode: inputmode, pattern: pattern, disabled: disabled, readOnly: readonly, tabIndex: index === tabbableIndex ? 0 : -1, value: inputValues[index] || '', autocomplete: "one-time-code", ref: (el) => (inputRefs[index] = el), onInput: this.onInput(index), onBlur: this.onBlur, onFocus: this.onFocus(index), onKeyDown: this.onKeyDown(index), onPaste: this.onPaste })), this.showSeparator(index) && (hAsync("div", { class: "input-otp-separator" })))))), this.showValidity && (hAsync("div", { key: 'cc45bac1e7f7675b467bae6153d9ffa586ec6655', class: {
18468
+ } }, hAsync("div", { key: '9fcd9882d552cde88adfa7578e556155651bbb4d', class: "input-otp-container" }, hAsync("div", { key: '3e2c1a83282c08c1ccef81c4f13a895f1efeec13', class: "input-otp-group", role: "group", "aria-label": "One-time password input" }, Array.from({ length }).map((_, index) => (hAsync(Fragment, null, hAsync("div", { class: "native-wrapper" }, hAsync("input", { class: "native-input", id: `${inputId}-${index}`, "aria-label": `Input ${index + 1} of ${length}`, type: "text", inputmode: inputmode, pattern: pattern, disabled: disabled, readOnly: readonly, tabIndex: index === tabbableIndex ? 0 : -1, value: inputValues[index] || '', autocomplete: "one-time-code", ref: (el) => (inputRefs[index] = el), onInput: this.onInput(index), onBlur: this.onBlur, onFocus: this.onFocus(index), onKeyDown: this.onKeyDown(index), onPaste: this.onPaste })), this.showSeparator(index) && (hAsync("div", { class: "input-otp-separator" })))))), this.showValidity && (hAsync("div", { key: 'b5d9d9f3023cca6fcf9d8a394287de2333eeff54', class: {
18455
18469
  'input-otp-icon': true,
18456
18470
  'input-otp-icon--valid': valid,
18457
18471
  'input-otp-icon--invalid': invalid,
18458
- }, part: "validity-icon" }, hAsync("slot", { key: '84bd77959eaa572898cd48525512d93b6406b6b6', name: "validity-icon" }, hAsync("nano-icon", { key: 'c903d61964571e006aca28afea7a911f47527d43', hidden: !valid, name: "light/circle-check", class: "input-otp-valid-icon", "aria-label": "Valid input" }))))), this.slotCtrl.has('[default]') && (hAsync("div", { key: 'ddbf6145b86b48ad942227ec15ab419612e5ef41', class: "input-otp-description" }, hAsync("slot", { key: '56862b93b96aee7ecad1b36472666f94f2021a5f' })))));
18472
+ }, part: "validity-icon" }, hAsync("slot", { key: 'd4a3123b713487f579a503ea1158e73b97a35198', name: "validity-icon" }, hAsync("nano-icon", { key: '2d7886aadaaa786f3594ace3d4fa3d2ebbdc30c3', hidden: !valid, name: "light/circle-check", class: "input-otp-valid-icon", "aria-label": "Valid input" }))))), this.slotCtrl.has('[default]') && (hAsync("div", { key: '32b6883425e8f62bda344ad6f92ff63a5fef98f4', class: "input-otp-description" }, hAsync("slot", { key: '81b5c65f7c8bab2f8bf371c03bc5a2ae455b6c3f' })))));
18459
18473
  }
18460
18474
  static get watchers() { return {
18461
18475
  "value": ["valueChanged"]
@@ -18479,7 +18493,8 @@ class InputOTP {
18479
18493
  "previousInputValues": [32],
18480
18494
  "invalid": [32],
18481
18495
  "valid": [32],
18482
- "setFocus": [64]
18496
+ "setFocus": [64],
18497
+ "clear": [64]
18483
18498
  },
18484
18499
  "$listeners$": undefined,
18485
18500
  "$lazyBundleId$": "-",
@@ -21148,7 +21163,7 @@ function mergeCellProperties(rowIndex, colIndex, defaultProps) {
21148
21163
  */
21149
21164
  function colheadFootRender(col) {
21150
21165
  const tpl = col?.columnTemplate;
21151
- return tpl ? (tpl(hAsync, col)) : (hAsync(Fragment, null, col.title));
21166
+ return tpl ? tpl(hAsync, col) : (hAsync(Fragment, null, col.title));
21152
21167
  }
21153
21168
  function headerPinClasses(type, vPinned, toString = false) {
21154
21169
  const classes = {
@@ -21285,7 +21300,7 @@ function cellRender(rowIndex, colIndex) {
21285
21300
  // custom rendering can render to the templateEle OR return a promise<string>
21286
21301
  tplResult = result && result['then'] ? result : templateEle;
21287
21302
  }
21288
- return tplResult ? (tplResult) : model.cellModel !== undefined && model.cellModel !== null ? (h(Fragment, null, model.cellModel?.toString())) : ('');
21303
+ return tplResult ? tplResult : model.cellModel !== undefined && model.cellModel !== null ? (h(Fragment, null, model.cellModel?.toString())) : ('');
21289
21304
  }
21290
21305
  const baseCellClasses = (colIndex, toString = false) => {
21291
21306
  const store = fetchStores();
package/hydrate/index.mjs CHANGED
@@ -3834,7 +3834,8 @@ class HasSlotController {
3834
3834
  // * Regular shadow DOM component *
3835
3835
  childNodes = [...this.host.shadowRoot.childNodes];
3836
3836
  }
3837
- else if (!this.host.classList.contains('hydrated')) {
3837
+ else if (!this.host.classList.contains('hydrated') &&
3838
+ this.host.__childNodes) {
3838
3839
  // * Non-shadow, polyfilled component *
3839
3840
  // Component has not done initial render. Return component internals
3840
3841
  childNodes = [...(this.host?.__childNodes ?? [])];
@@ -3844,7 +3845,7 @@ class HasSlotController {
3844
3845
  childNodes = [...this.host.childNodes];
3845
3846
  }
3846
3847
  return childNodes.some((node) => {
3847
- if (node.nodeType === Node.TEXT_NODE && node.textContent.trim() !== '') {
3848
+ if (node.nodeType === Node.TEXT_NODE && !!node.textContent.trim()) {
3848
3849
  return true;
3849
3850
  }
3850
3851
  if (node.nodeType === Node.ELEMENT_NODE) {
@@ -8468,7 +8469,7 @@ const getClassMap = (classes) => {
8468
8469
  return map;
8469
8470
  };
8470
8471
 
8471
- const checkboxGroupCss = ".sc-nano-checkbox-group-h,*.sc-nano-checkbox-group,*.sc-nano-checkbox-group::before,*.sc-nano-checkbox-group::after{box-sizing:border-box}[hidden].sc-nano-checkbox-group{display:none !important}@media (prefers-reduced-motion: reduce){.sc-nano-checkbox-group-h,*.sc-nano-checkbox-group,*.sc-nano-checkbox-group::before,*.sc-nano-checkbox-group::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important}}.sc-nano-checkbox-group-h,*.sc-nano-checkbox-group,*.sc-nano-checkbox-group::before,*.sc-nano-checkbox-group::after{box-sizing:border-box}[hidden].sc-nano-checkbox-group{display:none !important}@media (prefers-reduced-motion: reduce){.sc-nano-checkbox-group-h,*.sc-nano-checkbox-group,*.sc-nano-checkbox-group::before,*.sc-nano-checkbox-group::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important}}.sc-nano-checkbox-group-h{--label-color:var(--nano-color-base-1000);--label-font-size:var(--nano-font-size-xs);--invalid-msg-color:var(--nano-color-danger-1100);--help-msg-color:var(--nano-color-base-1000);--more-font-size:var(--nano-font-size-2xs);display:block;inline-size:100%}.sc-nano-checkbox-group-h *.sc-nano-checkbox-group{box-sizing:inherit}.cbgroup.sc-nano-checkbox-group{margin:0;padding:0;border:0}.cbgroup__error.sc-nano-checkbox-group,.cbgroup__help.sc-nano-checkbox-group,.cbgroup__more.sc-nano-checkbox-group{display:block;inline-size:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.cbgroup__error.sc-nano-checkbox-group,.cbgroup__help.sc-nano-checkbox-group{inset-block-start:0;inset-inline-start:0;position:absolute;font-size:var(--more-font-size);line-height:1.2;transition:0.3s ease-out opacity;font-style:italic}.show-error.sc-nano-checkbox-group .cbgroup__error.sc-nano-checkbox-group,.show-error.sc-nano-checkbox-group .cbgroup__help.sc-nano-checkbox-group{opacity:1}.cbgroup__error.sc-nano-checkbox-group{color:var(--invalid-msg-color);opacity:0}.has-error.sc-nano-checkbox-group .cbgroup__error.sc-nano-checkbox-group{opacity:1}.cbgroup__help.sc-nano-checkbox-group{opacity:1;color:var(--help-msg-color)}.has-error.sc-nano-checkbox-group .cbgroup__help.sc-nano-checkbox-group{opacity:0}.cbgroup__more.sc-nano-checkbox-group{block-size:1em;margin-block:var(--nano-spacing-sm) 0;position:relative;opacity:0;display:none;transition:all var(--nano-transition-fast) ease;transition-behavior:allow-discrete}.has-helper.sc-nano-checkbox-group .cbgroup__more.sc-nano-checkbox-group,.has-error.sc-nano-checkbox-group .cbgroup__more.sc-nano-checkbox-group{display:block;opacity:1}.cbgroup__legend.sc-nano-checkbox-group{font-size:var(--nano-font-size-xs);line-height:var(--nano-line-height-normal);letter-spacing:var(--nano-letter-spacing-loose);padding:0 0 0.9375rem;margin:0;display:block;inline-size:100%}.cbgroup__legend.visually-hide.sc-nano-checkbox-group{clip-path:inset(50%);block-size:1px;overflow:hidden;position:absolute;white-space:nowrap;inline-size:1px}.cbgroup__cbs.sc-nano-checkbox-group{margin:0;padding:0;display:flex;flex-direction:column;gap:var(--nano-spacing-md)}.types-segment.sc-nano-checkbox-group-h .cbgroup__cbs.sc-nano-checkbox-group{flex-direction:row;gap:0}.types-tag.sc-nano-checkbox-group-h .cbgroup__cbs.sc-nano-checkbox-group{flex-direction:row;gap:var(--nano-spacing-sm)}";
8472
+ const checkboxGroupCss = ".sc-nano-checkbox-group-h,*.sc-nano-checkbox-group,*.sc-nano-checkbox-group::before,*.sc-nano-checkbox-group::after{box-sizing:border-box}[hidden].sc-nano-checkbox-group{display:none !important}@media (prefers-reduced-motion: reduce){.sc-nano-checkbox-group-h,*.sc-nano-checkbox-group,*.sc-nano-checkbox-group::before,*.sc-nano-checkbox-group::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important}}.sc-nano-checkbox-group-h,*.sc-nano-checkbox-group,*.sc-nano-checkbox-group::before,*.sc-nano-checkbox-group::after{box-sizing:border-box}[hidden].sc-nano-checkbox-group{display:none !important}@media (prefers-reduced-motion: reduce){.sc-nano-checkbox-group-h,*.sc-nano-checkbox-group,*.sc-nano-checkbox-group::before,*.sc-nano-checkbox-group::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important}}.sc-nano-checkbox-group-h{--label-color:var(--nano-color-base-1000);--label-font-size:var(--nano-font-size-xs);--invalid-msg-color:var(--nano-color-danger-1100);--help-msg-color:var(--nano-color-base-1000);--more-font-size:var(--nano-font-size-2xs);--gap:var(--nano-spacing-md);display:block;inline-size:100%}.sc-nano-checkbox-group-h *.sc-nano-checkbox-group{box-sizing:inherit}.cbgroup.sc-nano-checkbox-group{margin:0;padding:0;border:0}.cbgroup__error.sc-nano-checkbox-group,.cbgroup__help.sc-nano-checkbox-group,.cbgroup__more.sc-nano-checkbox-group{display:block;inline-size:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.cbgroup__error.sc-nano-checkbox-group,.cbgroup__help.sc-nano-checkbox-group{inset-block-start:0;inset-inline-start:0;position:absolute;font-size:var(--more-font-size);line-height:1.2;transition:0.3s ease-out opacity;font-style:italic}.show-error.sc-nano-checkbox-group .cbgroup__error.sc-nano-checkbox-group,.show-error.sc-nano-checkbox-group .cbgroup__help.sc-nano-checkbox-group{opacity:1}.cbgroup__error.sc-nano-checkbox-group{color:var(--invalid-msg-color);opacity:0}.has-error.sc-nano-checkbox-group .cbgroup__error.sc-nano-checkbox-group{opacity:1}.cbgroup__help.sc-nano-checkbox-group{opacity:1;color:var(--help-msg-color)}.has-error.sc-nano-checkbox-group .cbgroup__help.sc-nano-checkbox-group{opacity:0}.cbgroup__more.sc-nano-checkbox-group{block-size:1em;margin-block:var(--nano-spacing-sm) 0;position:relative;opacity:0;display:none;transition:all var(--nano-transition-fast) ease;transition-behavior:allow-discrete}.has-helper.sc-nano-checkbox-group .cbgroup__more.sc-nano-checkbox-group,.has-error.sc-nano-checkbox-group .cbgroup__more.sc-nano-checkbox-group{display:block;opacity:1}.cbgroup__legend.sc-nano-checkbox-group{font-size:var(--nano-font-size-xs);line-height:var(--nano-line-height-normal);letter-spacing:var(--nano-letter-spacing-loose);padding:0 0 0.9375rem;margin:0;display:block;inline-size:100%}.cbgroup__legend.visually-hide.sc-nano-checkbox-group{clip-path:inset(50%);block-size:1px;overflow:hidden;position:absolute;white-space:nowrap;inline-size:1px}.cbgroup__cbs.sc-nano-checkbox-group{margin:0;padding:0;display:flex;flex-direction:column;gap:var(--gap)}.types-segment.sc-nano-checkbox-group-h .cbgroup__cbs.sc-nano-checkbox-group{flex-direction:row;--gap:0}.types-tag.sc-nano-checkbox-group-h .cbgroup__cbs.sc-nano-checkbox-group{flex-direction:row;--gap:var(--nano-spacing-sm)}";
8472
8473
 
8473
8474
  /**
8474
8475
  * Checkbox group is an optional wrapper for all [checkbox](/components/checkbox) controls.
@@ -9532,18 +9533,18 @@ class DataList {
9532
9533
  }
9533
9534
  }
9534
9535
  render() {
9535
- return (h(Host, { key: '269f57e6eccd251685f84a94d53f380d6545a3cb', class: "nano-datalist", role: this.actvOptEles.length ? 'listbox' : undefined, "aria-owns": this.optionIds.length ? this.optionIds.join(' ') : undefined, "aria-label": this.optionIds.length
9536
+ return (h(Host, { key: '8acb3be76246d665171db96444cff3a5141e1132', class: "nano-datalist", role: this.actvOptEles.length ? 'listbox' : undefined, "aria-owns": this.optionIds.length ? this.optionIds.join(' ') : undefined, "aria-label": this.optionIds.length
9536
9537
  ? 'Select options from the list below'
9537
- : undefined }, h("nano-dropdown", { key: 'ee6398b356dc1a0ff9fa35e84955314fc95435b6', part: "dropdown", exportparts: "trigger:dropdown__trigger, panel:dropdown__panel", ...this.dropDownConfig, ref: (el) => (this.nanoDropdown = el), dialogTitle: "Select options from the list below", class: {
9538
+ : undefined }, h("nano-dropdown", { key: '56c051873a20a3dab17a36eec1a2f040f83247fa', part: "dropdown", exportparts: "trigger:dropdown__trigger, panel:dropdown__panel", ...this.dropDownConfig, ref: (el) => (this.nanoDropdown = el), dialogTitle: "Select options from the list below", class: {
9538
9539
  dlist__dropdown: true,
9539
9540
  'dlist--isfiltered': this.isFiltered,
9540
- }, onNanoAfterShow: this.handleShow, onNanoAfterHide: this.handleHide, role: "group" }, h("nano-menu", { key: 'f80006a5ba62c227094da52672b4abf6ee6335dc', part: "main-menu", ref: (el) => (this.listBox = el), hidden: !this.actvOptEles.length, type: "listbox", label: this.inputLabel ? this.inputLabel.textContent : undefined, class: {
9541
+ }, onNanoAfterShow: this.handleShow, onNanoAfterHide: this.handleHide, role: "group" }, h("nano-menu", { key: '7559b648617c8d32f61c670e4dc78c0d60d36dc4', part: "main-menu", ref: (el) => (this.listBox = el), hidden: !this.actvOptEles.length, type: "listbox", label: this.inputLabel ? this.inputLabel.textContent : undefined, class: {
9541
9542
  dlist__menu: true,
9542
9543
  'dlist__menu--open': this.dropwdownOpen,
9543
- }, tabIndex: -1, onNanoSelect: this.optSelected, onKeyDown: this.optionKeyDown }, h("slot", { key: '8a2d3160b990c99baeaf4fd9bdd7bb04229d642c', name: "list-top" }), h("slot", { key: '2230e4458be0998d59d18250e1d22188baf2f6b1' }), h("slot", { key: 'fca84cbd01495e4b62ba95c4c07681f506939d3f', name: "internal-opts" }), h("slot", { key: '076fd81c15f5ac6590e5311503262a07f60e8454', name: "list-bottom" })), h("nano-menu", { key: 'd4878bc502b4fcc0de01f67b5065ad017f445f75', part: "no-result-menu", type: "listbox", label: "No results found", hidden: !!this.actvOptEles.length, class: {
9544
+ }, tabIndex: -1, onNanoSelect: this.optSelected, onKeyDown: this.optionKeyDown }, h("slot", { key: '02bd8ba511db314637e8991d29234a22967cf27d', name: "list-top" }), h("slot", { key: 'cb0234e0dd103293c1f1292af62575dd766af730' }), h("slot", { key: '0adac42b20ee0338de74217e6e91c00be6b5b6a7', name: "internal-opts" }), h("slot", { key: '906255e4e6fdc87fa8bf6e278ad076f179553925', name: "list-bottom" })), h("nano-menu", { key: '9aa978054227c9bb928c06ce93303ceda48cbf29', part: "no-result-menu", type: "listbox", label: "No results found", hidden: !!this.actvOptEles.length, class: {
9544
9545
  dlist__menu: true,
9545
9546
  'dlist__menu--open': this.dropwdownOpen,
9546
- } }, h("slot", { key: '2ac583af3ac8b24ace627637ab86471999df9465', name: "no-result" })), !!this.actvOptEles && (h("div", { key: '4971780255baf694fcc447756ca02e1115ece871', class: "dlist__status" }, this.actvOptEles.length, " result", this.actvOptEles.length > 1 ? 's' : '', " available.")))));
9547
+ } }, h("slot", { key: '4e2ce9dcb39d0c823ed27f13dc8c9a8873f0ca9f', name: "no-result" })), !!this.actvOptEles && (h("div", { key: 'c6bf0c88d7b1fcd24b2882c7db851ffca2e77ba3', class: "dlist__status" }, this.actvOptEles.length, " result", this.actvOptEles.length > 1 ? 's' : '', " available.")))));
9547
9548
  }
9548
9549
  static get watchers() { return {
9549
9550
  "open": ["openWatcher"],
@@ -17766,6 +17767,7 @@ class InputOTP {
17766
17767
  this.nanoChange = createEvent(this, "nanoChange", 7);
17767
17768
  this.nanoComplete = createEvent(this, "nanoComplete", 7);
17768
17769
  this.nanoBlur = createEvent(this, "nanoBlur", 7);
17770
+ this.nanoClear = createEvent(this, "nanoClear", 7);
17769
17771
  this.nanoFocus = createEvent(this, "nanoFocus", 7);
17770
17772
  }
17771
17773
  inputRefs = [];
@@ -17869,6 +17871,10 @@ class InputOTP {
17869
17871
  * Emitted when the input group loses focus.
17870
17872
  */
17871
17873
  nanoBlur;
17874
+ /**
17875
+ * Emitted when the input group is cleared.
17876
+ */
17877
+ nanoClear;
17872
17878
  /**
17873
17879
  * Emitted when the input group has focus.
17874
17880
  */
@@ -17889,6 +17895,16 @@ class InputOTP {
17889
17895
  this.inputRefs[tabbableIndex]?.focus();
17890
17896
  }
17891
17897
  }
17898
+ /**
17899
+ * Resets the input boxes to empty values.
17900
+ */
17901
+ async clear() {
17902
+ this.value = '';
17903
+ this.inputRefs.forEach((input, index) => {
17904
+ input.value = this.inputValues[index] || '';
17905
+ });
17906
+ this.nanoClear.emit();
17907
+ }
17892
17908
  valueChanged() {
17893
17909
  this.initializeValues();
17894
17910
  this.updateTabIndexes();
@@ -18429,31 +18445,29 @@ class InputOTP {
18429
18445
  * - `valid` is true if all input boxes are filled with valid values.
18430
18446
  */
18431
18447
  computeValidity() {
18432
- const { inputValues } = this;
18433
18448
  this.invalid =
18434
18449
  this.allowInvalid &&
18435
18450
  this.inputValues.some((val) => val !== '' && !this.validKeyPattern.test(val));
18436
18451
  this.valid =
18437
18452
  this.inputValues.length === this.length &&
18438
18453
  this.inputValues.every((val) => val !== '' && this.validKeyPattern.test(val));
18439
- inputValues.some((v) => v !== '' && !this.validKeyPattern.test(v));
18440
18454
  }
18441
18455
  render() {
18442
18456
  const { disabled, hasFocus, inputId, inputRefs, inputValues, length, readonly, invalid, valid, } = this;
18443
18457
  const inputmode = this.getInputmode();
18444
18458
  const tabbableIndex = this.getTabbableIndex();
18445
18459
  const pattern = this.getPattern();
18446
- return (hAsync(Host, { key: '9b64211ca6a227c5f905a76a50ca3a44eff0a96b', class: {
18460
+ return (hAsync(Host, { key: '69c1b3c4a4cae21665bb7e3646a27a89f8d0a73b', class: {
18447
18461
  'has-focus': hasFocus,
18448
18462
  'input-otp-disabled': disabled,
18449
18463
  'input-otp-readonly': readonly,
18450
18464
  'nano-invalid': invalid,
18451
18465
  'nano-valid': valid,
18452
- } }, hAsync("div", { key: 'cc7fb4411962398f143d2dd17c40448111956e80', class: "input-otp-container" }, hAsync("div", { key: '4408d19628b34a25cb3bc39a0df1dd859700399f', class: "input-otp-group", role: "group", "aria-label": "One-time password input" }, Array.from({ length }).map((_, index) => (hAsync(Fragment, null, hAsync("div", { class: "native-wrapper" }, hAsync("input", { class: "native-input", id: `${inputId}-${index}`, "aria-label": `Input ${index + 1} of ${length}`, type: "text", inputmode: inputmode, pattern: pattern, disabled: disabled, readOnly: readonly, tabIndex: index === tabbableIndex ? 0 : -1, value: inputValues[index] || '', autocomplete: "one-time-code", ref: (el) => (inputRefs[index] = el), onInput: this.onInput(index), onBlur: this.onBlur, onFocus: this.onFocus(index), onKeyDown: this.onKeyDown(index), onPaste: this.onPaste })), this.showSeparator(index) && (hAsync("div", { class: "input-otp-separator" })))))), this.showValidity && (hAsync("div", { key: 'cc45bac1e7f7675b467bae6153d9ffa586ec6655', class: {
18466
+ } }, hAsync("div", { key: '9fcd9882d552cde88adfa7578e556155651bbb4d', class: "input-otp-container" }, hAsync("div", { key: '3e2c1a83282c08c1ccef81c4f13a895f1efeec13', class: "input-otp-group", role: "group", "aria-label": "One-time password input" }, Array.from({ length }).map((_, index) => (hAsync(Fragment, null, hAsync("div", { class: "native-wrapper" }, hAsync("input", { class: "native-input", id: `${inputId}-${index}`, "aria-label": `Input ${index + 1} of ${length}`, type: "text", inputmode: inputmode, pattern: pattern, disabled: disabled, readOnly: readonly, tabIndex: index === tabbableIndex ? 0 : -1, value: inputValues[index] || '', autocomplete: "one-time-code", ref: (el) => (inputRefs[index] = el), onInput: this.onInput(index), onBlur: this.onBlur, onFocus: this.onFocus(index), onKeyDown: this.onKeyDown(index), onPaste: this.onPaste })), this.showSeparator(index) && (hAsync("div", { class: "input-otp-separator" })))))), this.showValidity && (hAsync("div", { key: 'b5d9d9f3023cca6fcf9d8a394287de2333eeff54', class: {
18453
18467
  'input-otp-icon': true,
18454
18468
  'input-otp-icon--valid': valid,
18455
18469
  'input-otp-icon--invalid': invalid,
18456
- }, part: "validity-icon" }, hAsync("slot", { key: '84bd77959eaa572898cd48525512d93b6406b6b6', name: "validity-icon" }, hAsync("nano-icon", { key: 'c903d61964571e006aca28afea7a911f47527d43', hidden: !valid, name: "light/circle-check", class: "input-otp-valid-icon", "aria-label": "Valid input" }))))), this.slotCtrl.has('[default]') && (hAsync("div", { key: 'ddbf6145b86b48ad942227ec15ab419612e5ef41', class: "input-otp-description" }, hAsync("slot", { key: '56862b93b96aee7ecad1b36472666f94f2021a5f' })))));
18470
+ }, part: "validity-icon" }, hAsync("slot", { key: 'd4a3123b713487f579a503ea1158e73b97a35198', name: "validity-icon" }, hAsync("nano-icon", { key: '2d7886aadaaa786f3594ace3d4fa3d2ebbdc30c3', hidden: !valid, name: "light/circle-check", class: "input-otp-valid-icon", "aria-label": "Valid input" }))))), this.slotCtrl.has('[default]') && (hAsync("div", { key: '32b6883425e8f62bda344ad6f92ff63a5fef98f4', class: "input-otp-description" }, hAsync("slot", { key: '81b5c65f7c8bab2f8bf371c03bc5a2ae455b6c3f' })))));
18457
18471
  }
18458
18472
  static get watchers() { return {
18459
18473
  "value": ["valueChanged"]
@@ -18477,7 +18491,8 @@ class InputOTP {
18477
18491
  "previousInputValues": [32],
18478
18492
  "invalid": [32],
18479
18493
  "valid": [32],
18480
- "setFocus": [64]
18494
+ "setFocus": [64],
18495
+ "clear": [64]
18481
18496
  },
18482
18497
  "$listeners$": undefined,
18483
18498
  "$lazyBundleId$": "-",
@@ -21146,7 +21161,7 @@ function mergeCellProperties(rowIndex, colIndex, defaultProps) {
21146
21161
  */
21147
21162
  function colheadFootRender(col) {
21148
21163
  const tpl = col?.columnTemplate;
21149
- return tpl ? (tpl(hAsync, col)) : (hAsync(Fragment, null, col.title));
21164
+ return tpl ? tpl(hAsync, col) : (hAsync(Fragment, null, col.title));
21150
21165
  }
21151
21166
  function headerPinClasses(type, vPinned, toString = false) {
21152
21167
  const classes = {
@@ -21283,7 +21298,7 @@ function cellRender(rowIndex, colIndex) {
21283
21298
  // custom rendering can render to the templateEle OR return a promise<string>
21284
21299
  tplResult = result && result['then'] ? result : templateEle;
21285
21300
  }
21286
- return tplResult ? (tplResult) : model.cellModel !== undefined && model.cellModel !== null ? (h(Fragment, null, model.cellModel?.toString())) : ('');
21301
+ return tplResult ? tplResult : model.cellModel !== undefined && model.cellModel !== null ? (h(Fragment, null, model.cellModel?.toString())) : ('');
21287
21302
  }
21288
21303
  const baseCellClasses = (colIndex, toString = false) => {
21289
21304
  const store = fetchStores();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nanoporetech-digital/components",
3
- "version": "8.12.3",
3
+ "version": "8.14.0",
4
4
  "sideEffects": false,
5
5
  "repository": {
6
6
  "type": "git",
@@ -60,7 +60,7 @@
60
60
  "smart-array-filter": "^4.0.2",
61
61
  "stencil-wormhole": "3.2.1",
62
62
  "tyqs": "^0.1.3",
63
- "@nanoporetech-digital/style": "8.12.3"
63
+ "@nanoporetech-digital/style": "8.14.0"
64
64
  },
65
65
  "devDependencies": {
66
66
  "@algolia/client-search": "^4.22.1",
@@ -1,4 +0,0 @@
1
- /*!
2
- * Custom elements for Nanopore-Digital Web applications
3
- */
4
- import{g as t,j as s}from"./index-BM3Om9WE.js";import{g as h}from"./dom-dlicJTEJ.js";function i(t){const s=t.getRootNode();return s.host?s.host.innerText:t.innerText}class o{host;slotNames=[];constructor(s,...h){this.slotNames=h;const i=s.componentWillLoad;s.componentWillLoad=()=>{this.host=t(s),i&&i.call(s)};const o=s.connectedCallback;s.connectedCallback=()=>{this.host=t(s),this.hostConnected(),o&&o.call(s)};const e=s.disconnectedCallback;s.disconnectedCallback=()=>{this.hostDisconnected(),this.host=void 0,e&&e.call(s)}}hasDefaultSlot(){if(!this.host)return!1;let t;return t=this.host.shadowRoot?[...this.host.shadowRoot.childNodes]:this.host.classList.contains("hydrated")?[...this.host.childNodes]:[...this.host?.__childNodes??[]],t.some((t=>t.nodeType===Node.TEXT_NODE&&""!==t.textContent.trim()||t.nodeType===Node.ELEMENT_NODE&&!t.hasAttribute("slot")))}hasNamedSlot(t){return!!this.host&&h(this.host,`[slot="${t}"]`,!0).length>0}has(t){return"[default]"===t?this.hasDefaultSlot():this.hasNamedSlot(t)}hostConnected(){(this.host.shadowRoot??this.host).addEventListener("slotchange",this.handleSlotChange)}hostDisconnected(){this.host&&(this.host.shadowRoot??this.host).removeEventListener("slotchange",this.handleSlotChange)}handleSlotChange=t=>{const h=t.target;(this.slotNames.includes("[default]")&&!h.name||h.name&&this.slotNames.includes(h.name))&&s(this.host)}}export{o as H,i as g}