@nanoporetech-digital/components 2.8.0 → 2.9.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 (143) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/cjs/{form-control-8f530f7d.js → form-control-d54a847f.js} +26 -19
  3. package/dist/cjs/form-control-d54a847f.js.map +1 -0
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/nano-components.cjs.js +1 -1
  6. package/dist/cjs/nano-datalist_3.cjs.entry.js +4 -3
  7. package/dist/cjs/nano-datalist_3.cjs.entry.js.map +1 -1
  8. package/dist/cjs/nano-input.cjs.entry.js +12 -8
  9. package/dist/cjs/nano-input.cjs.entry.js.map +1 -1
  10. package/dist/cjs/nano-nav-item_2.cjs.entry.js +14 -9
  11. package/dist/cjs/nano-nav-item_2.cjs.entry.js.map +1 -1
  12. package/dist/cjs/nano-resize-observe_2.cjs.entry.js +6 -4
  13. package/dist/cjs/nano-resize-observe_2.cjs.entry.js.map +1 -1
  14. package/dist/collection/components/accordion/accordion.js +1 -1
  15. package/dist/collection/components/alert/alert.js +1 -1
  16. package/dist/collection/components/algolia/algolia-filter.js +2 -2
  17. package/dist/collection/components/algolia/algolia-input.js +5 -5
  18. package/dist/collection/components/algolia/algolia-results.js +1 -1
  19. package/dist/collection/components/algolia/algolia.js +6 -6
  20. package/dist/collection/components/checkbox/checkbox-group.js +2 -2
  21. package/dist/collection/components/checkbox/checkbox.js +3 -3
  22. package/dist/collection/components/datalist/datalist.js +4 -2
  23. package/dist/collection/components/datalist/datalist.js.map +1 -1
  24. package/dist/collection/components/date-input/date-input.js +7 -7
  25. package/dist/collection/components/date-picker/date-picker.js +5 -5
  26. package/dist/collection/components/details/details.js +1 -1
  27. package/dist/collection/components/dialog/dialog.js +1 -1
  28. package/dist/collection/components/dropdown/dropdown.js +1 -1
  29. package/dist/collection/components/file-upload/file-upload.js +4 -4
  30. package/dist/collection/components/form-control/form-control.js +25 -18
  31. package/dist/collection/components/form-control/form-control.js.map +1 -1
  32. package/dist/collection/components/global-nav/global-nav.js +4 -4
  33. package/dist/collection/components/grid/grid-item.js +1 -1
  34. package/dist/collection/components/icon/icon.js +1 -1
  35. package/dist/collection/components/input/input.css +54 -3
  36. package/dist/collection/components/input/input.js +19 -12
  37. package/dist/collection/components/input/input.js.map +1 -1
  38. package/dist/collection/components/menu/menu.js +1 -2
  39. package/dist/collection/components/menu/menu.js.map +1 -1
  40. package/dist/collection/components/nav-item/nav-item.js +4 -4
  41. package/dist/collection/components/range/range.js +4 -4
  42. package/dist/collection/components/resize-observe/resize-observe.js +7 -6
  43. package/dist/collection/components/resize-observe/resize-observe.js.map +1 -1
  44. package/dist/collection/components/select/select.css +57 -3
  45. package/dist/collection/components/select/select.js +21 -14
  46. package/dist/collection/components/select/select.js.map +1 -1
  47. package/dist/collection/components/slides/slides.js +7 -7
  48. package/dist/collection/components/tabs/tab-group.js +2 -2
  49. package/dist/components/datalist.js +3 -1
  50. package/dist/components/datalist.js.map +1 -1
  51. package/dist/components/form-control.js +25 -18
  52. package/dist/components/form-control.js.map +1 -1
  53. package/dist/components/input.js +13 -8
  54. package/dist/components/input.js.map +1 -1
  55. package/dist/components/menu.js +1 -2
  56. package/dist/components/menu.js.map +1 -1
  57. package/dist/components/resize-observe.js +6 -4
  58. package/dist/components/resize-observe.js.map +1 -1
  59. package/dist/components/select.js +14 -8
  60. package/dist/components/select.js.map +1 -1
  61. package/dist/custom-elements/index.js +61 -42
  62. package/dist/custom-elements/index.js.map +1 -1
  63. package/dist/esm/{form-control-c52b6256.js → form-control-cf23c6a2.js} +26 -19
  64. package/dist/esm/form-control-cf23c6a2.js.map +1 -0
  65. package/dist/esm/loader.js +1 -1
  66. package/dist/esm/nano-components.js +1 -1
  67. package/dist/esm/nano-datalist_3.entry.js +4 -3
  68. package/dist/esm/nano-datalist_3.entry.js.map +1 -1
  69. package/dist/esm/nano-input.entry.js +12 -8
  70. package/dist/esm/nano-input.entry.js.map +1 -1
  71. package/dist/esm/nano-nav-item_2.entry.js +14 -9
  72. package/dist/esm/nano-nav-item_2.entry.js.map +1 -1
  73. package/dist/esm/nano-resize-observe_2.entry.js +6 -4
  74. package/dist/esm/nano-resize-observe_2.entry.js.map +1 -1
  75. package/dist/esm-es5/form-control-cf23c6a2.js +5 -0
  76. package/dist/esm-es5/form-control-cf23c6a2.js.map +1 -0
  77. package/dist/esm-es5/loader.js +1 -1
  78. package/dist/esm-es5/loader.js.map +1 -1
  79. package/dist/esm-es5/nano-components.js +1 -1
  80. package/dist/esm-es5/nano-components.js.map +1 -1
  81. package/dist/esm-es5/nano-datalist_3.entry.js +1 -1
  82. package/dist/esm-es5/nano-datalist_3.entry.js.map +1 -1
  83. package/dist/esm-es5/nano-input.entry.js +1 -1
  84. package/dist/esm-es5/nano-input.entry.js.map +1 -1
  85. package/dist/esm-es5/nano-nav-item_2.entry.js +1 -1
  86. package/dist/esm-es5/nano-nav-item_2.entry.js.map +1 -1
  87. package/dist/esm-es5/nano-resize-observe_2.entry.js +2 -2
  88. package/dist/esm-es5/nano-resize-observe_2.entry.js.map +1 -1
  89. package/dist/nano-components/nano-components.esm.js +1 -1
  90. package/dist/nano-components/nano-components.esm.js.map +1 -1
  91. package/dist/nano-components/p-096682d9.system.js +1 -1
  92. package/dist/nano-components/p-096682d9.system.js.map +1 -1
  93. package/dist/nano-components/p-1ca46443.entry.js +5 -0
  94. package/dist/nano-components/p-1ca46443.entry.js.map +1 -0
  95. package/dist/nano-components/p-39a5280e.system.entry.js +5 -0
  96. package/dist/nano-components/p-39a5280e.system.entry.js.map +1 -0
  97. package/dist/nano-components/p-44c08842.system.entry.js +5 -0
  98. package/dist/nano-components/p-44c08842.system.entry.js.map +1 -0
  99. package/dist/nano-components/p-6eb25600.system.js +5 -0
  100. package/dist/nano-components/p-6eb25600.system.js.map +1 -0
  101. package/dist/nano-components/p-6f94d755.entry.js +5 -0
  102. package/dist/nano-components/p-6f94d755.entry.js.map +1 -0
  103. package/dist/nano-components/p-84767e87.entry.js +5 -0
  104. package/dist/nano-components/p-84767e87.entry.js.map +1 -0
  105. package/dist/nano-components/p-933c35a6.system.entry.js +5 -0
  106. package/dist/nano-components/p-933c35a6.system.entry.js.map +1 -0
  107. package/dist/nano-components/p-971b40a4.system.entry.js +5 -0
  108. package/dist/nano-components/p-971b40a4.system.entry.js.map +1 -0
  109. package/dist/nano-components/p-9ea13fbe.entry.js +5 -0
  110. package/dist/nano-components/p-9ea13fbe.entry.js.map +1 -0
  111. package/dist/nano-components/p-a6c84740.js +5 -0
  112. package/dist/nano-components/p-a6c84740.js.map +1 -0
  113. package/dist/types/components/form-control/form-control.d.ts +2 -0
  114. package/dist/types/components/input/input.d.ts +3 -0
  115. package/dist/types/components/resize-observe/resize-observe.d.ts +0 -1
  116. package/dist/types/components/select/select.d.ts +2 -0
  117. package/docs-json.json +19 -3
  118. package/docs-vscode.json +1 -1
  119. package/package.json +2 -2
  120. package/dist/cjs/form-control-8f530f7d.js.map +0 -1
  121. package/dist/esm/form-control-c52b6256.js.map +0 -1
  122. package/dist/esm-es5/form-control-c52b6256.js +0 -5
  123. package/dist/esm-es5/form-control-c52b6256.js.map +0 -1
  124. package/dist/nano-components/p-0618fac6.system.entry.js +0 -5
  125. package/dist/nano-components/p-0618fac6.system.entry.js.map +0 -1
  126. package/dist/nano-components/p-173bae15.system.entry.js +0 -5
  127. package/dist/nano-components/p-173bae15.system.entry.js.map +0 -1
  128. package/dist/nano-components/p-18176c26.system.entry.js +0 -5
  129. package/dist/nano-components/p-18176c26.system.entry.js.map +0 -1
  130. package/dist/nano-components/p-4ee978ff.entry.js +0 -5
  131. package/dist/nano-components/p-4ee978ff.entry.js.map +0 -1
  132. package/dist/nano-components/p-5e7c7d3d.entry.js +0 -5
  133. package/dist/nano-components/p-5e7c7d3d.entry.js.map +0 -1
  134. package/dist/nano-components/p-829d7f05.system.entry.js +0 -5
  135. package/dist/nano-components/p-829d7f05.system.entry.js.map +0 -1
  136. package/dist/nano-components/p-aaef7cc7.js +0 -5
  137. package/dist/nano-components/p-aaef7cc7.js.map +0 -1
  138. package/dist/nano-components/p-af7abf5e.entry.js +0 -5
  139. package/dist/nano-components/p-af7abf5e.entry.js.map +0 -1
  140. package/dist/nano-components/p-df0897ec.system.js +0 -5
  141. package/dist/nano-components/p-df0897ec.system.js.map +0 -1
  142. package/dist/nano-components/p-f79c3ea0.entry.js +0 -5
  143. package/dist/nano-components/p-f79c3ea0.entry.js.map +0 -1
@@ -516,7 +516,7 @@ export class NavItem {
516
516
  "references": {
517
517
  "NavItemEventDetail": {
518
518
  "location": "import",
519
- "path": "/builds/RxH386Vg/0/Digital/nano-components/packages/components/src/interface.d.ts"
519
+ "path": "/builds/99mRzSBj/0/Digital/nano-components/packages/components/src/interface.d.ts"
520
520
  }
521
521
  }
522
522
  }
@@ -536,7 +536,7 @@ export class NavItem {
536
536
  "references": {
537
537
  "NavItemEventDetail": {
538
538
  "location": "import",
539
- "path": "/builds/RxH386Vg/0/Digital/nano-components/packages/components/src/interface.d.ts"
539
+ "path": "/builds/99mRzSBj/0/Digital/nano-components/packages/components/src/interface.d.ts"
540
540
  }
541
541
  }
542
542
  }
@@ -556,7 +556,7 @@ export class NavItem {
556
556
  "references": {
557
557
  "NavItemEventDetail": {
558
558
  "location": "import",
559
- "path": "/builds/RxH386Vg/0/Digital/nano-components/packages/components/src/interface.d.ts"
559
+ "path": "/builds/99mRzSBj/0/Digital/nano-components/packages/components/src/interface.d.ts"
560
560
  }
561
561
  }
562
562
  }
@@ -576,7 +576,7 @@ export class NavItem {
576
576
  "references": {
577
577
  "NavItemEventDetail": {
578
578
  "location": "import",
579
- "path": "/builds/RxH386Vg/0/Digital/nano-components/packages/components/src/interface.d.ts"
579
+ "path": "/builds/99mRzSBj/0/Digital/nano-components/packages/components/src/interface.d.ts"
580
580
  }
581
581
  }
582
582
  }
@@ -370,7 +370,7 @@ export class Range {
370
370
  "references": {
371
371
  "Color": {
372
372
  "location": "import",
373
- "path": "/builds/RxH386Vg/0/Digital/nano-components/packages/components/src/interface.d.ts"
373
+ "path": "/builds/99mRzSBj/0/Digital/nano-components/packages/components/src/interface.d.ts"
374
374
  }
375
375
  }
376
376
  },
@@ -594,7 +594,7 @@ export class Range {
594
594
  "references": {
595
595
  "RangeValue": {
596
596
  "location": "import",
597
- "path": "/builds/RxH386Vg/0/Digital/nano-components/packages/components/src/interface.d.ts"
597
+ "path": "/builds/99mRzSBj/0/Digital/nano-components/packages/components/src/interface.d.ts"
598
598
  }
599
599
  }
600
600
  },
@@ -632,7 +632,7 @@ export class Range {
632
632
  "references": {
633
633
  "RangeChangeEventDetail": {
634
634
  "location": "import",
635
- "path": "/builds/RxH386Vg/0/Digital/nano-components/packages/components/src/interface.d.ts"
635
+ "path": "/builds/99mRzSBj/0/Digital/nano-components/packages/components/src/interface.d.ts"
636
636
  }
637
637
  }
638
638
  }
@@ -655,7 +655,7 @@ export class Range {
655
655
  "references": {
656
656
  "StyleEventDetail": {
657
657
  "location": "import",
658
- "path": "/builds/RxH386Vg/0/Digital/nano-components/packages/components/src/interface.d.ts"
658
+ "path": "/builds/99mRzSBj/0/Digital/nano-components/packages/components/src/interface.d.ts"
659
659
  }
660
660
  }
661
661
  }
@@ -38,6 +38,8 @@ export class ResizeObserve {
38
38
  });
39
39
  if (hasChanged)
40
40
  this.applyChanges(changedStates);
41
+ else if (!this.classNames.includes('is-ready'))
42
+ this.classNames = ['is-ready'];
41
43
  };
42
44
  }
43
45
  dimensionChanged() {
@@ -84,7 +86,7 @@ export class ResizeObserve {
84
86
  });
85
87
  });
86
88
  });
87
- this.classNames = classNames;
89
+ this.classNames = ['is-ready', ...classNames];
88
90
  this.nanoResizeStateChange.emit(this.toSimpleObj(changes));
89
91
  }
90
92
  toSimpleObj(stateMaps) {
@@ -103,7 +105,7 @@ export class ResizeObserve {
103
105
  this.currentHeight = entry.contentRect.height;
104
106
  }
105
107
  });
106
- this.ro.observe(this.el);
108
+ this.ro.observe(this.host);
107
109
  }
108
110
  connectedCallback() {
109
111
  this.assessChanges = debounce(this.assessChanges, 50);
@@ -113,7 +115,7 @@ export class ResizeObserve {
113
115
  return;
114
116
  if (!this.currentWidth || !this.currentHeight) {
115
117
  readTask(() => {
116
- const { width, height } = this.el.getBoundingClientRect();
118
+ const { width, height } = this.host.getBoundingClientRect();
117
119
  this.currentWidth = width;
118
120
  this.currentHeight = height;
119
121
  });
@@ -128,8 +130,7 @@ export class ResizeObserve {
128
130
  return (h(Host, { class: {
129
131
  [this.classNames.join(' ')]: true,
130
132
  } },
131
- h("div", { ref: (div) => (this.el = div) },
132
- h("slot", null))));
133
+ h("slot", null)));
133
134
  }
134
135
  static get is() { return "nano-resize-observe"; }
135
136
  static get encapsulation() { return "shadow"; }
@@ -176,7 +177,7 @@ export class ResizeObserve {
176
177
  "references": {
177
178
  "ResizeStateChangeEventDetail": {
178
179
  "location": "import",
179
- "path": "/builds/RxH386Vg/0/Digital/nano-components/packages/components/src/interface.d.ts"
180
+ "path": "/builds/99mRzSBj/0/Digital/nano-components/packages/components/src/interface.d.ts"
180
181
  }
181
182
  }
182
183
  }
@@ -1 +1 @@
1
- {"version":3,"file":"resize-observe.js","sourceRoot":"","sources":["../../../src/components/resize-observe/resize-observe.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n h,\n Prop,\n Element,\n Host,\n State,\n Watch,\n ComponentInterface,\n Event,\n EventEmitter,\n readTask,\n} from '@stencil/core';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport { debounce } from '../../utils';\nimport type { ResizeStateChangeEventDetail } from '../../interface';\n\ntype ResizeObserverState = { states?: string[]; applied?: boolean };\ninterface StateMaps {\n h: Map<number, ResizeObserverState>;\n w: Map<number, ResizeObserverState>;\n}\n\n/**\n * A Resize-Observer utility component.\n * Takes a string list of sizes and optional class-names. Adds class-names and fires `nanoResizeStateChange` events when the component reaches those sizes.\n * @slot - Main slot for any content.\n */\n@Component({\n tag: 'nano-resize-observe',\n shadow: true,\n styles: `:host { display: inline-block } div { height: 100%; }`,\n})\nexport class ResizeObserve implements ComponentInterface {\n private ro: ResizeObserver;\n private appliedStates: StateMaps;\n private el: HTMLDivElement;\n\n @Element() host: HTMLNanoResizeObserveElement;\n @State() currentWidth: number;\n @State() currentHeight: number;\n @State() classNames: string[] = [];\n\n /** string list of sizes and optional class-names. Adds class-names and fires nanoResizeStateChange events. Upon hitting breakpoints.\n * Format: `states=\"800w, 300h class1 class2\"` */\n @Prop() states: string;\n\n /** A resize break point is switched on or off */\n @Event() nanoResizeStateChange!: EventEmitter<ResizeStateChangeEventDetail>;\n\n @Watch('currentHeight')\n @Watch('currentWidth')\n dimensionChanged() {\n this.assessChanges();\n }\n\n @Watch('states')\n statesChanged() {\n if (!this.states) return;\n if (!this.ro) this.attachRO();\n\n const toBpDir = (bpDir: string) => {\n const bpDirSpl = bpDir.split(/(\\d+)/).filter((bs) => bs.length);\n return { bp: parseInt(bpDirSpl[0]), dir: bpDirSpl[1] };\n };\n this.appliedStates = { h: new Map(), w: new Map() };\n\n // parse state string\n this.states.split(',').map((st) => {\n st = st.trim();\n if (st.includes(' ')) {\n const [key, ...classes] = st.split(' ');\n const { bp, dir } = toBpDir(key);\n this.appliedStates[dir as keyof StateMaps].set(bp, {\n states: classes,\n applied: false,\n });\n } else {\n const { bp, dir } = toBpDir(st);\n this.appliedStates[dir as keyof StateMaps].set(bp, { applied: false });\n }\n });\n }\n\n private assessChanges = () => {\n if (!this.currentWidth && !this.currentHeight) return;\n const changedStates: StateMaps = { h: new Map(), w: new Map() };\n let hasChanged = false;\n\n Object.keys(this.appliedStates).forEach((dimType) => {\n let dim: number;\n if (dimType === 'h') dim = this.currentHeight;\n else dim = this.currentWidth;\n\n this.appliedStates[dimType].forEach(\n (state: ResizeObserverState, bp: number) => {\n if (dim >= bp && state.applied === false) {\n state.applied = true;\n changedStates[dimType].set(bp, state);\n hasChanged = true;\n } else if (dim < bp && state.applied === true) {\n state.applied = false;\n changedStates[dimType].set(bp, state);\n hasChanged = true;\n }\n }\n );\n });\n if (hasChanged) this.applyChanges(changedStates);\n };\n\n private applyChanges(changes: StateMaps) {\n let classNames = [...this.classNames];\n Object.keys(changes).forEach((dimType: keyof StateMaps) => {\n changes[dimType].forEach((state) => {\n if (!state.states) return;\n state.states.map((st) => {\n if (state.applied) classNames.push(st);\n else classNames = classNames.filter((cl) => cl !== st);\n });\n });\n });\n this.classNames = classNames;\n this.nanoResizeStateChange.emit(this.toSimpleObj(changes));\n }\n\n private toSimpleObj(stateMaps: StateMaps) {\n const retObj = {};\n Object.keys(stateMaps).forEach((dimType: keyof StateMaps) => {\n stateMaps[dimType].forEach((state: ResizeObserverState, bp: number) => {\n retObj[bp + dimType] = state.applied;\n });\n });\n return retObj;\n }\n\n private attachRO() {\n this.ro = new ResizeObserver((entries) => {\n for (const entry of entries) {\n this.currentWidth = entry.contentRect.width;\n this.currentHeight = entry.contentRect.height;\n }\n });\n this.ro.observe(this.el);\n }\n\n connectedCallback() {\n this.assessChanges = debounce(this.assessChanges, 50);\n }\n\n componentDidLoad() {\n if (!this.states) return;\n if (!this.currentWidth || !this.currentHeight) {\n readTask(() => {\n const { width, height } = this.el.getBoundingClientRect();\n this.currentWidth = width;\n this.currentHeight = height;\n });\n }\n this.statesChanged();\n }\n\n disconnectedCallback() {\n if (this.ro) this.ro.disconnect();\n }\n\n render() {\n return (\n <Host\n class={{\n [this.classNames.join(' ')]: true,\n }}\n >\n <div ref={(div) => (this.el = div)}>\n <slot />\n </div>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"resize-observe.js","sourceRoot":"","sources":["../../../src/components/resize-observe/resize-observe.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n h,\n Prop,\n Element,\n Host,\n State,\n Watch,\n ComponentInterface,\n Event,\n EventEmitter,\n readTask,\n} from '@stencil/core';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport { debounce } from '../../utils';\nimport type { ResizeStateChangeEventDetail } from '../../interface';\n\ntype ResizeObserverState = { states?: string[]; applied?: boolean };\ninterface StateMaps {\n h: Map<number, ResizeObserverState>;\n w: Map<number, ResizeObserverState>;\n}\n\n/**\n * A Resize-Observer utility component.\n * Takes a string list of sizes and optional class-names. Adds class-names and fires `nanoResizeStateChange` events when the component reaches those sizes.\n * @slot - Main slot for any content.\n */\n@Component({\n tag: 'nano-resize-observe',\n shadow: true,\n styles: `:host { display: inline-block } div { height: 100%; }`,\n})\nexport class ResizeObserve implements ComponentInterface {\n private ro: ResizeObserver;\n private appliedStates: StateMaps;\n\n @Element() host: HTMLNanoResizeObserveElement;\n @State() currentWidth: number;\n @State() currentHeight: number;\n @State() classNames: string[] = [];\n\n /** string list of sizes and optional class-names. Adds class-names and fires nanoResizeStateChange events. Upon hitting breakpoints.\n * Format: `states=\"800w, 300h class1 class2\"` */\n @Prop() states: string;\n\n /** A resize break point is switched on or off */\n @Event() nanoResizeStateChange!: EventEmitter<ResizeStateChangeEventDetail>;\n\n @Watch('currentHeight')\n @Watch('currentWidth')\n dimensionChanged() {\n this.assessChanges();\n }\n\n @Watch('states')\n statesChanged() {\n if (!this.states) return;\n if (!this.ro) this.attachRO();\n\n const toBpDir = (bpDir: string) => {\n const bpDirSpl = bpDir.split(/(\\d+)/).filter((bs) => bs.length);\n return { bp: parseInt(bpDirSpl[0]), dir: bpDirSpl[1] };\n };\n this.appliedStates = { h: new Map(), w: new Map() };\n\n // parse state string\n this.states.split(',').map((st) => {\n st = st.trim();\n if (st.includes(' ')) {\n const [key, ...classes] = st.split(' ');\n const { bp, dir } = toBpDir(key);\n this.appliedStates[dir as keyof StateMaps].set(bp, {\n states: classes,\n applied: false,\n });\n } else {\n const { bp, dir } = toBpDir(st);\n this.appliedStates[dir as keyof StateMaps].set(bp, { applied: false });\n }\n });\n }\n\n private assessChanges = () => {\n if (!this.currentWidth && !this.currentHeight) return;\n const changedStates: StateMaps = { h: new Map(), w: new Map() };\n let hasChanged = false;\n\n Object.keys(this.appliedStates).forEach((dimType) => {\n let dim: number;\n if (dimType === 'h') dim = this.currentHeight;\n else dim = this.currentWidth;\n\n this.appliedStates[dimType].forEach(\n (state: ResizeObserverState, bp: number) => {\n if (dim >= bp && state.applied === false) {\n state.applied = true;\n changedStates[dimType].set(bp, state);\n hasChanged = true;\n } else if (dim < bp && state.applied === true) {\n state.applied = false;\n changedStates[dimType].set(bp, state);\n hasChanged = true;\n }\n }\n );\n });\n if (hasChanged) this.applyChanges(changedStates);\n else if (!this.classNames.includes('is-ready'))\n this.classNames = ['is-ready'];\n };\n\n private applyChanges(changes: StateMaps) {\n let classNames = [...this.classNames];\n Object.keys(changes).forEach((dimType: keyof StateMaps) => {\n changes[dimType].forEach((state) => {\n if (!state.states) return;\n state.states.map((st) => {\n if (state.applied) classNames.push(st);\n else classNames = classNames.filter((cl) => cl !== st);\n });\n });\n });\n this.classNames = ['is-ready', ...classNames];\n this.nanoResizeStateChange.emit(this.toSimpleObj(changes));\n }\n\n private toSimpleObj(stateMaps: StateMaps) {\n const retObj = {};\n Object.keys(stateMaps).forEach((dimType: keyof StateMaps) => {\n stateMaps[dimType].forEach((state: ResizeObserverState, bp: number) => {\n retObj[bp + dimType] = state.applied;\n });\n });\n return retObj;\n }\n\n private attachRO() {\n this.ro = new ResizeObserver((entries) => {\n for (const entry of entries) {\n this.currentWidth = entry.contentRect.width;\n this.currentHeight = entry.contentRect.height;\n }\n });\n this.ro.observe(this.host);\n }\n\n connectedCallback() {\n this.assessChanges = debounce(this.assessChanges, 50);\n }\n\n componentDidLoad() {\n if (!this.states) return;\n if (!this.currentWidth || !this.currentHeight) {\n readTask(() => {\n const { width, height } = this.host.getBoundingClientRect();\n this.currentWidth = width;\n this.currentHeight = height;\n });\n }\n this.statesChanged();\n }\n\n disconnectedCallback() {\n if (this.ro) this.ro.disconnect();\n }\n\n render() {\n return (\n <Host\n class={{\n [this.classNames.join(' ')]: true,\n }}\n >\n <slot />\n </Host>\n );\n }\n}\n"]}
@@ -14,6 +14,39 @@
14
14
  opacity: 0.5;
15
15
  }
16
16
 
17
+ .form-ctrl {
18
+ min-width: 100%;
19
+ display: block;
20
+ }
21
+ .form-ctrl.has-helper-end {
22
+ display: -webkit-box;
23
+ display: -ms-flexbox;
24
+ display: flex;
25
+ gap: 1rem;
26
+ opacity: 0;
27
+ }
28
+ .form-ctrl.has-helper-end.is-ready {
29
+ opacity: 1;
30
+ }
31
+ .form-ctrl.has-helper-end .form-ctrl__wrapper {
32
+ -webkit-box-flex: 1;
33
+ -ms-flex: 1 1 100%;
34
+ flex: 1 1 100%;
35
+ }
36
+ .form-ctrl.has-helper-end .form-ctrl__helper-end {
37
+ display: none;
38
+ }
39
+ .form-ctrl.has-helper-end.has-enough-width .form-ctrl__helper-end {
40
+ display: block;
41
+ }
42
+ .form-ctrl.has-helper-end.has-enough-width .form-ctrl__helper {
43
+ display: none;
44
+ }
45
+
46
+ .form-ctrl__wrapper {
47
+ display: block;
48
+ }
49
+
17
50
  label,
18
51
  .form-ctrl__more,
19
52
  .form-ctrl__error,
@@ -64,6 +97,14 @@ label.visually-hide,
64
97
  font-size: 0.8em;
65
98
  opacity: 0.7;
66
99
  }
100
+ .form-ctrl__float-label .form-ctrl__label-charcount {
101
+ opacity: 0;
102
+ -webkit-transition: opacity 0.125s ease-in;
103
+ transition: opacity 0.125s ease-in;
104
+ }
105
+ :host(.has-focus) .form-ctrl__float-label .form-ctrl__label-charcount, :host(.has-value) .form-ctrl__float-label .form-ctrl__label-charcount {
106
+ opacity: 1;
107
+ }
67
108
  .form-ctrl__textarea .form-ctrl__float-label {
68
109
  top: 50%;
69
110
  }
@@ -181,6 +222,16 @@ label.visually-hide,
181
222
  opacity: 0;
182
223
  }
183
224
 
225
+ .form-ctrl__helper-end {
226
+ -webkit-box-flex: 1;
227
+ -ms-flex: 1 1 30%;
228
+ flex: 1 1 30%;
229
+ min-width: 150px;
230
+ font-size: var(--invalid-msg-font-size);
231
+ color: var(--help-msg-color);
232
+ font-style: italic;
233
+ }
234
+
184
235
  .form-ctrl__error {
185
236
  opacity: 0;
186
237
  color: var(--invalid-msg-color);
@@ -453,7 +504,7 @@ label.visually-hide,
453
504
  width: 100%;
454
505
  padding: 0 !important;
455
506
  font-family: var(--nano-font-family, inherit);
456
- display: inline-block;
507
+ display: block;
457
508
  }
458
509
 
459
510
  :host(.nano-color) {
@@ -714,7 +765,7 @@ select {
714
765
  padding-top: calc(var(--padding-top) / 2);
715
766
  padding-bottom: 0;
716
767
  min-width: 50px;
717
- max-width: 100%;
768
+ width: 100%;
718
769
  max-height: 100%;
719
770
  -webkit-appearance: none;
720
771
  -moz-appearance: none;
@@ -727,7 +778,7 @@ select {
727
778
  -ms-flex: 0;
728
779
  flex: 0;
729
780
  position: relative;
730
- min-height: calc(2.6em - var(--padding-top));
781
+ min-height: calc(2.5em - var(--padding-top));
731
782
  -webkit-box-sizing: border-box;
732
783
  box-sizing: border-box;
733
784
  }
@@ -828,6 +879,9 @@ select {
828
879
  --color: var(--multi-input-value-text-color);
829
880
  }
830
881
 
882
+ .form-ctrl__float-label {
883
+ width: calc(100% - (1em + (var(--padding-start) * 2)));
884
+ }
831
885
  :host(.has-focus.has-multiple) .form-ctrl__float-label {
832
886
  -webkit-transform: translateY(-110%);
833
887
  transform: translateY(-110%);
@@ -17,6 +17,7 @@ let selectIds = 0;
17
17
  * @slot value-end - similar to 'end', however clicking elements using this slot will activate the input control. This would be suitable to show a secodary 'value' for context or to show a dropdown arrow if using a datalist
18
18
  * @slot label - if you do not set a label attribute, you can use this slot for more complex markup
19
19
  * @slot helper - helper text to accompany the form field underneath.
20
+ * @slot helper-end - helper text to accompany the form field on the side.
20
21
  * @slot down-arrow - use this to replace the default down arrow
21
22
  * @slot - default slot; nest `nano-option` elements
22
23
  */
@@ -32,6 +33,7 @@ export class Select {
32
33
  this.hasFocus = false;
33
34
  this.hasLabelSlot = false;
34
35
  this.hasHelperSlot = false;
36
+ this.hasHelperEndSlot = false;
35
37
  this.inputSearchVal = '';
36
38
  this._invalid = false;
37
39
  /**
@@ -446,6 +448,7 @@ export class Select {
446
448
  // see if we have label / helper content
447
449
  this.hasLabelSlot = !!this.el.querySelectorAll('[slot="label"]').length;
448
450
  this.hasHelperSlot = !!this.el.querySelector('[slot="helper"]');
451
+ this.hasHelperEndSlot = !!this.el.querySelector('[slot="helper-end"]');
449
452
  // breaking change introduced in v2. Rm in v3
450
453
  if (!!this.el.querySelector('select:not([class*="sc-nano-select"]) option')) {
451
454
  console.warn('nesting `<option>` elements was removed in v2. Please update your code to use `<nano-option>` elements instead.', this.el);
@@ -513,22 +516,25 @@ export class Select {
513
516
  const moreId = this.showInlineError || this.hasHelperSlot
514
517
  ? this.selectId + '-moreId'
515
518
  : '';
519
+ const helperEndId = this.hasHelperEndSlot ? this.selectId + '-helper' : '';
516
520
  this.rtl = this.el.ownerDocument.dir === 'rtl';
517
521
  this.valueItems = [];
518
- const compWrapOptions = (({ el, floatLabel, label, errorMessage, showInlineError, hasHelperSlot, hasLabelSlot, hideLabel, placeholder, rtl, }) => ({
522
+ const compWrapOptions = (({ el, floatLabel, label, errorMessage, showInlineError, hasHelperSlot, hasHelperEndSlot, hasLabelSlot, hideLabel, placeholder, rtl, }) => ({
519
523
  el,
520
524
  floatLabel,
521
525
  label,
522
526
  errorMessage,
523
527
  showInlineError,
524
528
  hasHelperSlot,
529
+ hasHelperEndSlot,
525
530
  hasLabelSlot,
526
531
  hideLabel,
527
532
  placeholder,
528
533
  rtl,
529
534
  }))(this);
530
535
  const wrapOptions = Object.assign(Object.assign({}, compWrapOptions), { labelId,
531
- moreId, hasValue: !!this.value.length || !!this.inputSearchVal.length, controlId: this.selectId });
536
+ moreId,
537
+ helperEndId, hasValue: !!this.value.length || !!this.inputSearchVal.length, controlId: this.selectId });
532
538
  const controlOptions = (({ readonly, disabled }) => ({
533
539
  readonly,
534
540
  disabled,
@@ -538,10 +544,10 @@ export class Select {
538
544
  h(FormControlWrap, Object.assign({}, wrapOptions),
539
545
  h(FormControl, Object.assign({}, controlOptions, { onClearText: this.clearSelectValue, control: this.el, ref: (el) => (this.selectWrap = el), endValueSlot: h("slot", { name: "down-arrow" },
540
546
  h("nano-icon", { slot: "value-end", name: "light/chevron-down" })) }),
541
- this.multiple && (h("div", { class: "select__multi-wrap select" }, this.multipleValues(labelId, moreId))),
547
+ this.multiple && (h("div", { class: "select__multi-wrap select" }, this.multipleValues(labelId, moreId, helperEndId))),
542
548
  !this.multiple && [
543
549
  this.mask && (h("div", { class: "select__mask" }, this.getLabel(this.value))),
544
- h("input", { id: this.selectId, class: "select__native-input", ref: (input) => (this.inputCtrl = input), "aria-labelledby": labelId + ' ' + moreId, disabled: this.disabled, form: this.form, placeholder: this.placeholder, readOnly: true, required: this.required, value: this.getLabel(this.value), onFocus: this.onFocus }),
550
+ h("input", { id: this.selectId, class: "select__native-input", ref: (input) => (this.inputCtrl = input), "aria-labelledby": labelId + ' ' + moreId + ' ' + helperEndId, disabled: this.disabled, form: this.form, placeholder: this.placeholder, readOnly: true, required: this.required, value: this.getLabel(this.value), onFocus: this.onFocus }),
545
551
  ])),
546
552
  !this.readonly && !this.disabled && (h("nano-datalist", { onNanoOptionsUpdated: this.setOptions, ref: (el) => (this.datalist = el), selected: this.valArray, type: this.multiple ? 'selctMulti' : 'select', onNanoSelect: this.setValue, onNanoDeselect: (e) => {
547
553
  e.preventDefault();
@@ -553,7 +559,7 @@ export class Select {
553
559
  this.inputSearchVal,
554
560
  "'")),
555
561
  h("slot", null))),
556
- h("select", { id: this.selectId + '-hidden', class: "select__native-ctrl", ref: (select) => (this.nativeSelect = select), "aria-labelledby": labelId + ' ' + moreId, disabled: this.disabled, form: this.form, multiple: this.multiple, name: this.name, required: this.required, onInvalid: this.handleInvalid },
562
+ h("select", { id: this.selectId + '-hidden', class: "select__native-ctrl", ref: (select) => (this.nativeSelect = select), "aria-labelledby": labelId + ' ' + moreId + ' ' + helperEndId, disabled: this.disabled, form: this.form, multiple: this.multiple, name: this.name, required: this.required, onInvalid: this.handleInvalid },
557
563
  this.allowCustomValues &&
558
564
  this.valArray.map((val) => {
559
565
  return (h("option", { value: val, selected: true }, val));
@@ -563,8 +569,8 @@ export class Select {
563
569
  return (h("option", { value: opt.value, selected: this.valArray.includes(opt.value), disabled: opt.disabled, label: opt.label }, this.valArray.includes(opt.value)));
564
570
  }))));
565
571
  }
566
- multipleValues(labelId, moreId) {
567
- let input = (h("input", { class: "select__multi-input", id: this.selectId, ref: (input) => (this.inputCtrl = input), readOnly: this.readonly, disabled: this.disabled, autoFocus: this.autofocus, autocomplete: "off", onKeyDown: this.handleDocumentKeyDown, onInput: this.onMultiInput, value: this.inputSearchVal, onTouchStart: this.onClick, onMouseDown: this.onClick, onFocus: this.onFocus, placeholder: this.placeholder && !this.value.length ? this.placeholder : '', "aria-labelledby": labelId + ' ' + moreId }));
572
+ multipleValues(labelId, moreId, helperEndId) {
573
+ let input = (h("input", { class: "select__multi-input", id: this.selectId, ref: (input) => (this.inputCtrl = input), readOnly: this.readonly, disabled: this.disabled, autoFocus: this.autofocus, autocomplete: "off", onKeyDown: this.handleDocumentKeyDown, onInput: this.onMultiInput, value: this.inputSearchVal, onTouchStart: this.onClick, onMouseDown: this.onClick, onFocus: this.onFocus, placeholder: this.placeholder && !this.value.length ? this.placeholder : '', "aria-labelledby": labelId + ' ' + moreId + ' ' + helperEndId }));
568
574
  if (!this.value.length)
569
575
  return input;
570
576
  return this.value.map((val, i) => {
@@ -621,7 +627,7 @@ export class Select {
621
627
  "references": {
622
628
  "Color": {
623
629
  "location": "import",
624
- "path": "/builds/RxH386Vg/0/Digital/nano-components/packages/components/src/interface.d.ts"
630
+ "path": "/builds/99mRzSBj/0/Digital/nano-components/packages/components/src/interface.d.ts"
625
631
  }
626
632
  }
627
633
  },
@@ -1002,7 +1008,7 @@ export class Select {
1002
1008
  },
1003
1009
  "OptionInterface": {
1004
1010
  "location": "import",
1005
- "path": "/builds/RxH386Vg/0/Digital/nano-components/packages/components/src/components/option/option-interface.ts"
1011
+ "path": "/builds/99mRzSBj/0/Digital/nano-components/packages/components/src/components/option/option-interface.ts"
1006
1012
  }
1007
1013
  }
1008
1014
  },
@@ -1087,7 +1093,7 @@ export class Select {
1087
1093
  },
1088
1094
  "Dropdown": {
1089
1095
  "location": "import",
1090
- "path": "/builds/RxH386Vg/0/Digital/nano-components/packages/components/src/components/dropdown/dropdown.tsx"
1096
+ "path": "/builds/99mRzSBj/0/Digital/nano-components/packages/components/src/components/dropdown/dropdown.tsx"
1091
1097
  }
1092
1098
  }
1093
1099
  },
@@ -1109,6 +1115,7 @@ export class Select {
1109
1115
  "hasFocus": {},
1110
1116
  "hasLabelSlot": {},
1111
1117
  "hasHelperSlot": {},
1118
+ "hasHelperEndSlot": {},
1112
1119
  "inputSearchVal": {},
1113
1120
  "_eOptions": {}
1114
1121
  }; }
@@ -1128,7 +1135,7 @@ export class Select {
1128
1135
  "references": {
1129
1136
  "SelectChangeEventDetail": {
1130
1137
  "location": "import",
1131
- "path": "/builds/RxH386Vg/0/Digital/nano-components/packages/components/src/interface.d.ts"
1138
+ "path": "/builds/99mRzSBj/0/Digital/nano-components/packages/components/src/interface.d.ts"
1132
1139
  }
1133
1140
  }
1134
1141
  }
@@ -1214,7 +1221,7 @@ export class Select {
1214
1221
  "references": {
1215
1222
  "InputChangeEventDetail": {
1216
1223
  "location": "import",
1217
- "path": "/builds/RxH386Vg/0/Digital/nano-components/packages/components/src/interface.d.ts"
1224
+ "path": "/builds/99mRzSBj/0/Digital/nano-components/packages/components/src/interface.d.ts"
1218
1225
  }
1219
1226
  }
1220
1227
  }
@@ -1237,7 +1244,7 @@ export class Select {
1237
1244
  "references": {
1238
1245
  "ControlValidityEventDetail": {
1239
1246
  "location": "import",
1240
- "path": "/builds/RxH386Vg/0/Digital/nano-components/packages/components/src/interface.d.ts"
1247
+ "path": "/builds/99mRzSBj/0/Digital/nano-components/packages/components/src/interface.d.ts"
1241
1248
  }
1242
1249
  }
1243
1250
  }
@@ -1259,7 +1266,7 @@ export class Select {
1259
1266
  },
1260
1267
  "ControlValidity": {
1261
1268
  "location": "import",
1262
- "path": "/builds/RxH386Vg/0/Digital/nano-components/packages/components/src/interface.d.ts"
1269
+ "path": "/builds/99mRzSBj/0/Digital/nano-components/packages/components/src/interface.d.ts"
1263
1270
  }
1264
1271
  },
1265
1272
  "return": "Promise<ControlValidity>"