@nanoporetech-digital/components 2.5.0 → 2.8.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 (211) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/dist/cjs/{form-control-3bc82e3e.js → form-control-8f530f7d.js} +18 -20
  3. package/dist/cjs/form-control-8f530f7d.js.map +1 -0
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/nano-checkbox-group.cjs.entry.js +1 -1
  6. package/dist/cjs/nano-checkbox-group.cjs.entry.js.map +1 -1
  7. package/dist/cjs/nano-checkbox.cjs.entry.js +1 -1
  8. package/dist/cjs/nano-components.cjs.js +1 -1
  9. package/dist/cjs/nano-date-input.cjs.entry.js +1 -1
  10. package/dist/cjs/nano-date-input.cjs.entry.js.map +1 -1
  11. package/dist/cjs/nano-dropdown.cjs.entry.js +1 -1
  12. package/dist/cjs/nano-file-upload.cjs.entry.js +1 -1
  13. package/dist/cjs/nano-file-upload.cjs.entry.js.map +1 -1
  14. package/dist/cjs/nano-global-nav.cjs.entry.js +50 -47
  15. package/dist/cjs/nano-global-nav.cjs.entry.js.map +1 -1
  16. package/dist/cjs/nano-input.cjs.entry.js +6 -6
  17. package/dist/cjs/nano-input.cjs.entry.js.map +1 -1
  18. package/dist/cjs/nano-nav-item_2.cjs.entry.js +18 -13
  19. package/dist/cjs/nano-nav-item_2.cjs.entry.js.map +1 -1
  20. package/dist/cjs/nano-tooltip.cjs.entry.js +1 -1
  21. package/dist/cjs/{popover-8c86d338.js → popover-5f152a19.js} +3 -8
  22. package/dist/cjs/{popover-8c86d338.js.map → popover-5f152a19.js.map} +1 -1
  23. package/dist/collection/components/accordion/accordion.js +1 -1
  24. package/dist/collection/components/alert/alert.js +1 -1
  25. package/dist/collection/components/algolia/algolia-filter.js +2 -2
  26. package/dist/collection/components/algolia/algolia-input.js +5 -5
  27. package/dist/collection/components/algolia/algolia-results.js +1 -1
  28. package/dist/collection/components/algolia/algolia.js +6 -6
  29. package/dist/collection/components/checkbox/checkbox-group.css +4 -1
  30. package/dist/collection/components/checkbox/checkbox-group.js +2 -2
  31. package/dist/collection/components/checkbox/checkbox.css +2 -2
  32. package/dist/collection/components/checkbox/checkbox.js +3 -3
  33. package/dist/collection/components/datalist/datalist.js +1 -1
  34. package/dist/collection/components/date-input/date-input.css +1 -0
  35. package/dist/collection/components/date-input/date-input.js +7 -7
  36. package/dist/collection/components/date-picker/date-picker.js +5 -5
  37. package/dist/collection/components/details/details.js +1 -1
  38. package/dist/collection/components/dialog/dialog.js +1 -1
  39. package/dist/collection/components/dropdown/dropdown.js +1 -1
  40. package/dist/collection/components/file-upload/file-upload.css +2 -2
  41. package/dist/collection/components/file-upload/file-upload.js +4 -4
  42. package/dist/collection/components/form-control/form-control.js +17 -19
  43. package/dist/collection/components/form-control/form-control.js.map +1 -1
  44. package/dist/collection/components/global-nav/global-nav.js +78 -50
  45. package/dist/collection/components/global-nav/global-nav.js.map +1 -1
  46. package/dist/collection/components/grid/grid-item.js +1 -1
  47. package/dist/collection/components/icon/icon.js +1 -1
  48. package/dist/collection/components/input/input.css +200 -258
  49. package/dist/collection/components/input/input.js +9 -9
  50. package/dist/collection/components/input/input.js.map +1 -1
  51. package/dist/collection/components/nav-item/nav-item.css +22 -0
  52. package/dist/collection/components/nav-item/nav-item.js +34 -6
  53. package/dist/collection/components/nav-item/nav-item.js.map +1 -1
  54. package/dist/collection/components/range/range.js +4 -4
  55. package/dist/collection/components/resize-observe/resize-observe.js +1 -1
  56. package/dist/collection/components/select/select.css +223 -274
  57. package/dist/collection/components/select/select.js +15 -18
  58. package/dist/collection/components/select/select.js.map +1 -1
  59. package/dist/collection/components/slides/slides.js +7 -7
  60. package/dist/collection/components/tabs/tab-group.js +2 -2
  61. package/dist/collection/utils/popover.js +2 -7
  62. package/dist/collection/utils/popover.js.map +1 -1
  63. package/dist/components/form-control.js +17 -19
  64. package/dist/components/form-control.js.map +1 -1
  65. package/dist/components/input.js +5 -5
  66. package/dist/components/input.js.map +1 -1
  67. package/dist/components/nano-checkbox-group.js +1 -1
  68. package/dist/components/nano-checkbox-group.js.map +1 -1
  69. package/dist/components/nano-checkbox.js +1 -1
  70. package/dist/components/nano-date-input.js +1 -1
  71. package/dist/components/nano-date-input.js.map +1 -1
  72. package/dist/components/nano-file-upload.js +1 -1
  73. package/dist/components/nano-file-upload.js.map +1 -1
  74. package/dist/components/nano-global-nav.js +51 -47
  75. package/dist/components/nano-global-nav.js.map +1 -1
  76. package/dist/components/nav-item.js +11 -2
  77. package/dist/components/nav-item.js.map +1 -1
  78. package/dist/components/popover.js +2 -7
  79. package/dist/components/popover.js.map +1 -1
  80. package/dist/components/select.js +7 -10
  81. package/dist/components/select.js.map +1 -1
  82. package/dist/custom-elements/index.js +97 -96
  83. package/dist/custom-elements/index.js.map +1 -1
  84. package/dist/esm/{form-control-67eeb108.js → form-control-c52b6256.js} +18 -20
  85. package/dist/esm/form-control-c52b6256.js.map +1 -0
  86. package/dist/esm/loader.js +1 -1
  87. package/dist/esm/nano-checkbox-group.entry.js +1 -1
  88. package/dist/esm/nano-checkbox-group.entry.js.map +1 -1
  89. package/dist/esm/nano-checkbox.entry.js +1 -1
  90. package/dist/esm/nano-components.js +1 -1
  91. package/dist/esm/nano-date-input.entry.js +1 -1
  92. package/dist/esm/nano-date-input.entry.js.map +1 -1
  93. package/dist/esm/nano-dropdown.entry.js +1 -1
  94. package/dist/esm/nano-file-upload.entry.js +1 -1
  95. package/dist/esm/nano-file-upload.entry.js.map +1 -1
  96. package/dist/esm/nano-global-nav.entry.js +50 -47
  97. package/dist/esm/nano-global-nav.entry.js.map +1 -1
  98. package/dist/esm/nano-input.entry.js +6 -6
  99. package/dist/esm/nano-input.entry.js.map +1 -1
  100. package/dist/esm/nano-nav-item_2.entry.js +18 -13
  101. package/dist/esm/nano-nav-item_2.entry.js.map +1 -1
  102. package/dist/esm/nano-tooltip.entry.js +1 -1
  103. package/dist/esm/{popover-7639005b.js → popover-a03563f3.js} +3 -8
  104. package/dist/esm/{popover-7639005b.js.map → popover-a03563f3.js.map} +1 -1
  105. package/dist/esm-es5/form-control-c52b6256.js +5 -0
  106. package/dist/esm-es5/form-control-c52b6256.js.map +1 -0
  107. package/dist/esm-es5/loader.js +1 -1
  108. package/dist/esm-es5/loader.js.map +1 -1
  109. package/dist/esm-es5/nano-checkbox-group.entry.js +1 -1
  110. package/dist/esm-es5/nano-checkbox-group.entry.js.map +1 -1
  111. package/dist/esm-es5/nano-checkbox.entry.js +1 -1
  112. package/dist/esm-es5/nano-components.js +1 -1
  113. package/dist/esm-es5/nano-components.js.map +1 -1
  114. package/dist/esm-es5/nano-date-input.entry.js +1 -1
  115. package/dist/esm-es5/nano-date-input.entry.js.map +1 -1
  116. package/dist/esm-es5/nano-dropdown.entry.js +1 -1
  117. package/dist/esm-es5/nano-file-upload.entry.js +1 -1
  118. package/dist/esm-es5/nano-file-upload.entry.js.map +1 -1
  119. package/dist/esm-es5/nano-global-nav.entry.js +1 -1
  120. package/dist/esm-es5/nano-global-nav.entry.js.map +1 -1
  121. package/dist/esm-es5/nano-input.entry.js +2 -2
  122. package/dist/esm-es5/nano-input.entry.js.map +1 -1
  123. package/dist/esm-es5/nano-nav-item_2.entry.js +1 -1
  124. package/dist/esm-es5/nano-nav-item_2.entry.js.map +1 -1
  125. package/dist/esm-es5/nano-tooltip.entry.js +1 -1
  126. package/dist/esm-es5/{popover-7639005b.js → popover-a03563f3.js} +2 -2
  127. package/dist/esm-es5/popover-a03563f3.js.map +1 -0
  128. package/dist/nano-components/nano-components.esm.js +1 -1
  129. package/dist/nano-components/nano-components.esm.js.map +1 -1
  130. package/dist/nano-components/p-096682d9.system.js +1 -1
  131. package/dist/nano-components/p-096682d9.system.js.map +1 -1
  132. package/dist/nano-components/{p-820d9e23.system.entry.js → p-09e38c5f.system.entry.js} +2 -2
  133. package/dist/nano-components/p-09e38c5f.system.entry.js.map +1 -0
  134. package/dist/nano-components/p-10a6216d.system.entry.js +5 -0
  135. package/dist/nano-components/p-10a6216d.system.entry.js.map +1 -0
  136. package/dist/nano-components/p-18176c26.system.entry.js +5 -0
  137. package/dist/nano-components/p-18176c26.system.entry.js.map +1 -0
  138. package/dist/nano-components/{p-e7fdc62d.entry.js → p-1e8321ea.entry.js} +2 -2
  139. package/dist/nano-components/{p-e7fdc62d.entry.js.map → p-1e8321ea.entry.js.map} +0 -0
  140. package/dist/nano-components/{p-f9e30f31.system.entry.js → p-2057d480.system.entry.js} +2 -2
  141. package/dist/nano-components/p-2057d480.system.entry.js.map +1 -0
  142. package/dist/nano-components/{p-9acc4596.system.entry.js → p-2ae4918d.system.entry.js} +3 -3
  143. package/dist/nano-components/{p-9acc4596.system.entry.js.map → p-2ae4918d.system.entry.js.map} +0 -0
  144. package/dist/nano-components/{p-c9d09839.entry.js → p-313970ff.entry.js} +2 -2
  145. package/dist/nano-components/{p-c9d09839.entry.js.map → p-313970ff.entry.js.map} +0 -0
  146. package/dist/nano-components/{p-178c34e3.js → p-3de7735c.js} +2 -2
  147. package/dist/nano-components/p-3de7735c.js.map +1 -0
  148. package/dist/nano-components/{p-93448bcd.system.entry.js → p-4265cf95.system.entry.js} +2 -2
  149. package/dist/nano-components/{p-93448bcd.system.entry.js.map → p-4265cf95.system.entry.js.map} +0 -0
  150. package/dist/nano-components/{p-f3bf942d.entry.js → p-457d4893.entry.js} +2 -2
  151. package/dist/nano-components/p-457d4893.entry.js.map +1 -0
  152. package/dist/nano-components/{p-383fda90.system.entry.js → p-4870e76d.system.entry.js} +2 -2
  153. package/dist/nano-components/{p-383fda90.system.entry.js.map → p-4870e76d.system.entry.js.map} +0 -0
  154. package/dist/nano-components/{p-20db18f3.entry.js → p-5a315696.entry.js} +2 -2
  155. package/dist/nano-components/{p-20db18f3.entry.js.map → p-5a315696.entry.js.map} +0 -0
  156. package/dist/nano-components/p-802e1416.system.entry.js +5 -0
  157. package/dist/nano-components/{p-ef4e0912.system.entry.js.map → p-802e1416.system.entry.js.map} +1 -1
  158. package/dist/nano-components/p-829d7f05.system.entry.js +5 -0
  159. package/dist/nano-components/p-829d7f05.system.entry.js.map +1 -0
  160. package/dist/nano-components/p-9d35768b.entry.js +5 -0
  161. package/dist/nano-components/p-9d35768b.entry.js.map +1 -0
  162. package/dist/nano-components/p-aaef7cc7.js +5 -0
  163. package/dist/nano-components/p-aaef7cc7.js.map +1 -0
  164. package/dist/nano-components/p-af7abf5e.entry.js +5 -0
  165. package/dist/nano-components/p-af7abf5e.entry.js.map +1 -0
  166. package/dist/nano-components/{p-8de6e276.entry.js → p-b4f8e541.entry.js} +2 -2
  167. package/dist/nano-components/p-b4f8e541.entry.js.map +1 -0
  168. package/dist/nano-components/p-df0897ec.system.js +5 -0
  169. package/dist/nano-components/p-df0897ec.system.js.map +1 -0
  170. package/dist/nano-components/{p-9745d44e.system.js → p-e43ec257.system.js} +2 -2
  171. package/dist/nano-components/p-e43ec257.system.js.map +1 -0
  172. package/dist/nano-components/p-e7c69d4f.entry.js +5 -0
  173. package/dist/nano-components/{p-d6569144.entry.js.map → p-e7c69d4f.entry.js.map} +1 -1
  174. package/dist/nano-components/p-f79c3ea0.entry.js +5 -0
  175. package/dist/nano-components/p-f79c3ea0.entry.js.map +1 -0
  176. package/dist/types/components/global-nav/global-nav.d.ts +10 -3
  177. package/dist/types/components/nav-item/nav-item.d.ts +4 -0
  178. package/dist/types/components/select/select.d.ts +0 -1
  179. package/dist/types/components.d.ts +19 -3
  180. package/docs-json.json +52 -15
  181. package/docs-vscode.json +9 -1
  182. package/package.json +4 -3
  183. package/dist/cjs/form-control-3bc82e3e.js.map +0 -1
  184. package/dist/esm/form-control-67eeb108.js.map +0 -1
  185. package/dist/esm-es5/form-control-67eeb108.js +0 -5
  186. package/dist/esm-es5/form-control-67eeb108.js.map +0 -1
  187. package/dist/esm-es5/popover-7639005b.js.map +0 -1
  188. package/dist/nano-components/p-12f70017.system.entry.js +0 -5
  189. package/dist/nano-components/p-12f70017.system.entry.js.map +0 -1
  190. package/dist/nano-components/p-178c34e3.js.map +0 -1
  191. package/dist/nano-components/p-2559e9c1.entry.js +0 -5
  192. package/dist/nano-components/p-2559e9c1.entry.js.map +0 -1
  193. package/dist/nano-components/p-2be7aab0.system.entry.js +0 -5
  194. package/dist/nano-components/p-2be7aab0.system.entry.js.map +0 -1
  195. package/dist/nano-components/p-2e38a927.entry.js +0 -5
  196. package/dist/nano-components/p-2e38a927.entry.js.map +0 -1
  197. package/dist/nano-components/p-3a13948a.system.entry.js +0 -5
  198. package/dist/nano-components/p-3a13948a.system.entry.js.map +0 -1
  199. package/dist/nano-components/p-672e5547.js +0 -5
  200. package/dist/nano-components/p-672e5547.js.map +0 -1
  201. package/dist/nano-components/p-6dd58c39.entry.js +0 -5
  202. package/dist/nano-components/p-6dd58c39.entry.js.map +0 -1
  203. package/dist/nano-components/p-820d9e23.system.entry.js.map +0 -1
  204. package/dist/nano-components/p-8de6e276.entry.js.map +0 -1
  205. package/dist/nano-components/p-9745d44e.system.js.map +0 -1
  206. package/dist/nano-components/p-d6569144.entry.js +0 -5
  207. package/dist/nano-components/p-ea5eb591.system.js +0 -5
  208. package/dist/nano-components/p-ea5eb591.system.js.map +0 -1
  209. package/dist/nano-components/p-ef4e0912.system.entry.js +0 -5
  210. package/dist/nano-components/p-f3bf942d.entry.js.map +0 -1
  211. package/dist/nano-components/p-f9e30f31.system.entry.js.map +0 -1
@@ -26,7 +26,6 @@ export class Select {
26
26
  this.selectId = `nano-select-${selectIds++}`;
27
27
  this.rtl = false;
28
28
  this.onInit = true;
29
- this.isLegacy = 'registerElement' in document;
30
29
  this.currInsertIndex = -1;
31
30
  this.showErrorMsg = false;
32
31
  this.errorMessage = '';
@@ -535,14 +534,14 @@ export class Select {
535
534
  disabled,
536
535
  clearControl: this.clearSelect,
537
536
  }))(this);
538
- return (h(Host, { type: this.multiple ? 'select-multiple' : 'select-one', "aria-disabled": this.disabled ? 'true' : null, class: Object.assign(Object.assign({}, createColorClasses(this.color)), { 'has-value': !!this.value.length || !!this.inputSearchVal.length, 'has-focus': this.hasFocus, 'is-invalid': this.invalid, 'has-label': this.label !== null && !this.floatLabel, 'has-float-label': this.label !== null && this.floatLabel, rtl: this.rtl, 'has-multiple': this.multiple, 'has-clr-btn': this.clearSelect, masked: this.mask, legacy: this.isLegacy }) },
537
+ return (h(Host, { type: this.multiple ? 'select-multiple' : 'select-one', "aria-disabled": this.disabled ? 'true' : null, class: Object.assign(Object.assign({}, createColorClasses(this.color)), { 'has-value': !!this.value.length || !!this.inputSearchVal.length, 'has-focus': this.hasFocus, 'is-invalid': this.invalid, 'has-label': this.label !== null && !this.floatLabel, 'has-float-label': this.label !== null && this.floatLabel, rtl: this.rtl, 'has-multiple': this.multiple, 'has-clr-btn': this.clearSelect, masked: this.mask }) },
539
538
  h(FormControlWrap, Object.assign({}, wrapOptions),
540
539
  h(FormControl, Object.assign({}, controlOptions, { onClearText: this.clearSelectValue, control: this.el, ref: (el) => (this.selectWrap = el), endValueSlot: h("slot", { name: "down-arrow" },
541
540
  h("nano-icon", { slot: "value-end", name: "light/chevron-down" })) }),
542
- this.multiple && (h("div", { class: "multi-wrap" }, this.multipleValues(labelId, moreId))),
541
+ this.multiple && (h("div", { class: "select__multi-wrap select" }, this.multipleValues(labelId, moreId))),
543
542
  !this.multiple && [
544
- this.mask && (h("div", { class: "select-mask" }, this.getLabel(this.value))),
545
- h("input", { id: this.selectId, class: "native-input", ref: (input) => (this.inputCtrl = input), "aria-labelledby": labelId + ' ' + moreId, disabled: this.disabled, form: this.form, placeholder: !this.floatLabel && this.placeholder ? this.placeholder : '', readOnly: true, required: this.required, value: this.getLabel(this.value), onFocus: this.onFocus }),
543
+ 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 }),
546
545
  ])),
547
546
  !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) => {
548
547
  e.preventDefault();
@@ -554,7 +553,7 @@ export class Select {
554
553
  this.inputSearchVal,
555
554
  "'")),
556
555
  h("slot", null))),
557
- h("select", { id: this.selectId + '-hidden', class: "native-select", 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 },
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 },
558
557
  this.allowCustomValues &&
559
558
  this.valArray.map((val) => {
560
559
  return (h("option", { value: val, selected: true }, val));
@@ -565,15 +564,13 @@ export class Select {
565
564
  }))));
566
565
  }
567
566
  multipleValues(labelId, moreId) {
568
- let input = (h("input", { class: "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.floatLabel && !this.value.length
569
- ? this.placeholder
570
- : '', "aria-labelledby": 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 }));
571
568
  if (!this.value.length)
572
569
  return input;
573
570
  return this.value.map((val, i) => {
574
- let toReturn = (h("span", { onDragStart: this.onDragStart, onDragLeave: this.onDragLeave, onDragEnd: this.onDragEnd, onDragOver: (e) => e.preventDefault(), draggable: true, "data-value": val, ref: (span) => this.valueItems.push(span), class: "multi-value" },
571
+ let toReturn = (h("span", { onDragStart: this.onDragStart, onDragLeave: this.onDragLeave, onDragEnd: this.onDragEnd, onDragOver: (e) => e.preventDefault(), draggable: true, "data-value": val, ref: (span) => this.valueItems.push(span), class: "select__multi-value" },
575
572
  h("span", null, this.getLabel(val)),
576
- h("button", { class: "multi-value-remove", type: "button", tabindex: "-1", onTouchEnd: () => {
573
+ h("button", { class: "select__multi-value-remove", type: "button", tabindex: "-1", onTouchEnd: () => {
577
574
  this.removeValue(val);
578
575
  }, onMouseUp: () => {
579
576
  this.removeValue(val);
@@ -624,7 +621,7 @@ export class Select {
624
621
  "references": {
625
622
  "Color": {
626
623
  "location": "import",
627
- "path": "/builds/zfg2rJd-/0/Digital/nano-components/packages/components/src/interface.d.ts"
624
+ "path": "/builds/RxH386Vg/0/Digital/nano-components/packages/components/src/interface.d.ts"
628
625
  }
629
626
  }
630
627
  },
@@ -1005,7 +1002,7 @@ export class Select {
1005
1002
  },
1006
1003
  "OptionInterface": {
1007
1004
  "location": "import",
1008
- "path": "/builds/zfg2rJd-/0/Digital/nano-components/packages/components/src/components/option/option-interface.ts"
1005
+ "path": "/builds/RxH386Vg/0/Digital/nano-components/packages/components/src/components/option/option-interface.ts"
1009
1006
  }
1010
1007
  }
1011
1008
  },
@@ -1090,7 +1087,7 @@ export class Select {
1090
1087
  },
1091
1088
  "Dropdown": {
1092
1089
  "location": "import",
1093
- "path": "/builds/zfg2rJd-/0/Digital/nano-components/packages/components/src/components/dropdown/dropdown.tsx"
1090
+ "path": "/builds/RxH386Vg/0/Digital/nano-components/packages/components/src/components/dropdown/dropdown.tsx"
1094
1091
  }
1095
1092
  }
1096
1093
  },
@@ -1131,7 +1128,7 @@ export class Select {
1131
1128
  "references": {
1132
1129
  "SelectChangeEventDetail": {
1133
1130
  "location": "import",
1134
- "path": "/builds/zfg2rJd-/0/Digital/nano-components/packages/components/src/interface.d.ts"
1131
+ "path": "/builds/RxH386Vg/0/Digital/nano-components/packages/components/src/interface.d.ts"
1135
1132
  }
1136
1133
  }
1137
1134
  }
@@ -1217,7 +1214,7 @@ export class Select {
1217
1214
  "references": {
1218
1215
  "InputChangeEventDetail": {
1219
1216
  "location": "import",
1220
- "path": "/builds/zfg2rJd-/0/Digital/nano-components/packages/components/src/interface.d.ts"
1217
+ "path": "/builds/RxH386Vg/0/Digital/nano-components/packages/components/src/interface.d.ts"
1221
1218
  }
1222
1219
  }
1223
1220
  }
@@ -1240,7 +1237,7 @@ export class Select {
1240
1237
  "references": {
1241
1238
  "ControlValidityEventDetail": {
1242
1239
  "location": "import",
1243
- "path": "/builds/zfg2rJd-/0/Digital/nano-components/packages/components/src/interface.d.ts"
1240
+ "path": "/builds/RxH386Vg/0/Digital/nano-components/packages/components/src/interface.d.ts"
1244
1241
  }
1245
1242
  }
1246
1243
  }
@@ -1262,7 +1259,7 @@ export class Select {
1262
1259
  },
1263
1260
  "ControlValidity": {
1264
1261
  "location": "import",
1265
- "path": "/builds/zfg2rJd-/0/Digital/nano-components/packages/components/src/interface.d.ts"
1262
+ "path": "/builds/RxH386Vg/0/Digital/nano-components/packages/components/src/interface.d.ts"
1266
1263
  }
1267
1264
  },
1268
1265
  "return": "Promise<ControlValidity>"
@@ -1 +1 @@
1
- {"version":3,"file":"select.js","sourceRoot":"","sources":["../../../src/components/select/select.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Build,\n Component,\n ComponentInterface,\n Element,\n Event,\n EventEmitter,\n Host,\n Method,\n Prop,\n State,\n Watch,\n h,\n VNode,\n Listen,\n} from '@stencil/core';\n\nimport {\n Color,\n SelectChangeEventDetail,\n InputChangeEventDetail,\n ControlValidityEventDetail,\n ControlValidity,\n} from '../../interface';\nimport {\n debounceEvent,\n createColorClasses,\n closestElement,\n raf,\n getActiveElement,\n} from '../../utils';\nimport type { Dropdown } from '../dropdown/dropdown';\nimport { FormControl, FormControlWrap } from '../form-control/form-control';\nimport { OptionInterface } from '../option/option-interface';\n\nlet selectIds = 0;\n\n/**\n * The select component is a wrapper to the HTML select element with custom styling and additional functionality.\n * It accepts most of the same properties as the HTML [select](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select).\n * It's multi selection functionality is vastly improved from the native solution. It allows for the control of\n * value order through drag and drop or changing the insertion point with arrow keys. It also can allow for user defined values.\n *\n * @slot start - suitable for inline action buttons or icons that may add extra contextual information\n * @slot end - suitable for inline action buttons or icons that may add extra contextual information\n * @slot value-start - similar to 'start', 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\n * @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\n * @slot label - if you do not set a label attribute, you can use this slot for more complex markup\n * @slot helper - helper text to accompany the form field underneath.\n * @slot down-arrow - use this to replace the default down arrow\n * @slot - default slot; nest `nano-option` elements\n */\n@Component({\n tag: 'nano-select',\n styleUrl: 'select.scss',\n scoped: true,\n})\nexport class Select implements ComponentInterface {\n private nativeSelect?: HTMLSelectElement;\n private inputCtrl?: HTMLInputElement;\n private valueItems: Array<HTMLSpanElement> = [];\n private dragVal: string;\n private mo?: MutationObserver;\n private selectId = `nano-select-${selectIds++}`;\n private rtl: boolean = false;\n private onInit: boolean = true;\n private isLegacy: boolean = 'registerElement' in document;\n\n // we don't want these rendered eles decorated with @State\n // because that will cause re-renders. Use get/set to set datalist options\n private _selectWrap: HTMLElement;\n private get selectWrap() {\n return this._selectWrap;\n }\n private set selectWrap(ele: HTMLElement) {\n if (this._selectWrap === ele) return;\n this._selectWrap = ele;\n this.setDataListOpts();\n }\n\n private _datalist: HTMLNanoDatalistElement;\n private get datalist() {\n return this._datalist;\n }\n private set datalist(ele: HTMLNanoDatalistElement) {\n if (this._datalist === ele) return;\n this._datalist = ele;\n this.setDataListOpts();\n }\n\n @State() currInsertIndex: number = -1;\n @State() showErrorMsg = false;\n @State() errorMessage: string = '';\n @State() hasFocus = false;\n @State() hasLabelSlot: boolean = false;\n @State() hasHelperSlot: boolean = false;\n @State() inputSearchVal: string = '';\n\n @Element() el!: HTMLNanoSelectElement;\n\n /**\n * This will be true when the control is in an invalid state.\n * Validity is determined by the `required` prop. Or if custom validity message is set.\n */\n @Prop({ reflect: true })\n get invalid() {\n return this._invalid;\n }\n private _invalid = false;\n\n /**\n * The color to use from your application's color palette.\n * Default options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\n */\n @Prop() color?: Color;\n\n /**\n * This Boolean attribute lets you specify that a form control should have select focus when the page loads.\n */\n @Prop() autofocus = false;\n\n /**\n * If `true`, the user cannot interact with the select.\n */\n @Prop({ reflect: true }) disabled = false;\n\n /**\n * When should the field perform validation\n */\n @Prop({ mutable: true }) validateOn?: 'dirty' | 'submit' | 'submitThenDirty' =\n 'submit';\n\n /**\n * Whether to show validation errors underneath input\n */\n @Prop({ reflect: true }) showInlineError = true;\n\n /**\n * String to place within a label element. Alternatively use the 'label' slot\n */\n @Prop() label!: string;\n\n /**\n * Visually hide the label - but make it accessible.\n */\n @Prop() hideLabel?: boolean = false;\n\n /**\n * Enable floating label behaviour. Will disable placeholder if set.\n */\n @Prop() floatLabel: boolean = false;\n\n /**\n * If `true`, the user can enter more than one value. This attribute applies when the type attribute is set to `\"email\"` or `\"file\"`, otherwise it is ignored.\n */\n @Prop() multiple?: boolean = false;\n\n /**\n * The name of the control, which is submitted with the form data.\n */\n @Prop() name: string = this.selectId + '-name';\n\n /**\n * Instructional text that shows before the select has a value. Text set here will be placed inside the label when a value is set. If you don't want this behaviour just set the first option to have no value.\n */\n @Prop() placeholder?: string | null;\n\n /**\n * If `true`, the user cannot modify the value.\n */\n @Prop({ reflect: true }) readonly = false;\n\n /**\n * If `true`, the user must fill in a value before submitting a form.\n */\n @Prop() required = false;\n\n /**\n * The initial size of the control.\n */\n @Prop() size?: number;\n\n /**\n * Maximum number of options that can be selected when multiple is true\n */\n @Prop() max?: number;\n\n /**\n * Minimum number of options that can be selected when multiple is true\n */\n @Prop() min?: number;\n\n /**\n * The form element to associate the select with (its form owner). Must be the id of a form.\n */\n @Prop() form?: string | null;\n\n /**\n * in multiple mode, allow users to enter their own values\n */\n @Prop() allowCustomValues: boolean = false;\n\n /**\n * The value of the select.\n */\n @Prop()\n get value() {\n return this._value;\n }\n set value(val: string | string[]) {\n if (typeof val === 'string') {\n if (this.multiple) this._value = val.split(',');\n else this._value = val;\n } else if (Array.isArray(val)) {\n if (this.multiple) this._value = val;\n else this._value = val[0];\n }\n }\n private _value: Array<string> | string = this.multiple ? [] : '';\n\n /**\n * You can set options via js as an array of strings: `domElement.options = ['option 1', 'option 2']` or\n * objects `domElement.options = [{label: 'option 1', value: 'opt-1'}]`. See `nano-option` docs for all available properties.\n * Alternatively, you can nest `<nano-option>` elements within a `<nano-select>`\n * Regardless - reading `options` will return the current component options - slotted or otherwise\n */\n @Prop()\n get options(): Array<OptionInterface | string> {\n if (this._options.length) return this._options;\n\n if (!this.datalist || !this.datalist.activeOptions) return [];\n\n return this._eOptions.map((ao) => {\n const { value, selected, label, filterMeta } = ao;\n return { value, selected, label, filterMeta };\n });\n }\n set options(opts: Array<OptionInterface | string>) {\n this._options = opts.map((opt) => {\n if (typeof opt === 'string') return { value: opt, label: opt };\n else return opt;\n });\n }\n private _options: OptionInterface[] = [];\n @State() _eOptions: OptionInterface[] = [];\n\n /**\n * If `true`, a clear icon will appear in the select when there is a value. Clicking it clears the select.\n */\n @Prop() clearSelect = false;\n\n /**\n * Hide the native select element and cover with a value 'mask'.\n * Enables a fluid nano-select width upon value change (if required). Doesn't work with multiple=\"true\".\n */\n @Prop() mask = false;\n\n /**\n * Set the amount of time, in milliseconds, to wait to trigger the `nanoSearchChange` event after each keystroke.\n */\n @Prop() debounce = 0;\n\n @Watch('debounce')\n protected debounceChanged() {\n this.nanoSearchChange = debounceEvent(this.nanoSearchChange, this.debounce);\n }\n\n @Watch('required')\n @Watch('disabled')\n @Watch('min')\n @Watch('max')\n @Watch('validateOn')\n @Watch('readonly')\n protected shouldValidate() {\n if (this.onInit) return;\n if (this.invalid) this.showErrorMsg = this._invalid = false;\n\n this.customValidate();\n if (this.validateOn !== 'dirty') return;\n this.showInlineValidation();\n }\n\n /**\n * Update the native select element when the value changes\n */\n // eslint-disable-next-line @stencil/no-unused-watch\n @Watch('value')\n valueChanged() {\n if (this.onInit) {\n if (this.multiple) this.currInsertIndex = this.value.length - 1;\n return;\n }\n setTimeout((_) => this.shouldValidate(), 20);\n this.nanoChange.emit({ value: this.value });\n }\n\n /** nano-dropdown config options you can pass to the nested dropdown component */\n @Prop({ mutable: true }) dropDownConfig?: Partial<Dropdown> = {};\n\n @Watch('dropDownConfig')\n setDataListOpts() {\n if (!this.datalist || !this.selectWrap) return;\n const currDWConfig = this.datalist.dropDownConfig || {};\n this.datalist.dropDownConfig = {\n ...currDWConfig,\n ...this.dropDownConfig,\n tetherTo: this.selectWrap,\n };\n this.datalist.input = this.inputCtrl;\n }\n\n // Custom Events\n\n /**\n * Emitted when the value has changed.\n */\n @Event() nanoChange!: EventEmitter<SelectChangeEventDetail>;\n\n /**\n * Emitted when the select loses focus.\n */\n @Event() nanoBlur!: EventEmitter<void>;\n\n /**\n * Emitted when the select has focus.\n */\n @Event() nanoFocus!: EventEmitter<void>;\n\n /**\n * Emitted when the select has been created.\n * @internal\n */\n @Event() nanoDidLoad!: EventEmitter<void>;\n\n /**\n * Emitted when the select has been removed.\n * @internal\n */\n @Event() nanoDidUnload!: EventEmitter<void>;\n\n /**\n * Emitted when a keyboard input occurred on a multiple=\"true\" input\n */\n @Event() nanoSearchChange!: EventEmitter<InputChangeEventDetail>;\n\n /**\n * Called when validation is performed (which depends on `validateOn`).\n * @returns event.detail: `{ isValid: boolean, errorMessage: string, originalEvent: Event }`.\n */\n @Event() nanoValidate: EventEmitter<ControlValidityEventDetail>;\n\n // Public Methods\n\n /**\n * Get the current state of the control.\n * @param validateFirst - perform validation first before reporting\n * @returns `{ isValid: boolean, errorMessage: string }`\n */\n @Method()\n async reportValidity(validateFirst: boolean): Promise<ControlValidity> {\n if (validateFirst) this.showInlineValidation();\n return {\n isValid: !this.invalid,\n errorMessage: this.errorMessage,\n };\n }\n\n /**\n * Sets focus on the specified `nano-select`. Use this method instead of the global\n * `select.focus()`.\n */\n @Method()\n async setFocus() {\n this.inputCtrl.focus();\n setTimeout(() => this.inputCtrl.click(), 50);\n }\n\n /**\n * Returns the native `<select>` element used under the hood.\n */\n @Method()\n getSelectElement(): Promise<HTMLSelectElement> {\n return Promise.resolve(this.nativeSelect!);\n }\n\n /**\n * Invalidate the field and show a custom error message.\n * To clear the error you will need to re-call this method with an empty string.\n */\n @Method()\n async showError(message: string) {\n if (this.nativeSelect) {\n this.nativeSelect.setCustomValidity(message);\n this.showInlineValidation();\n }\n }\n\n /* Logic */\n\n private get valArray() {\n return typeof this.value === 'string'\n ? this.value.length\n ? [this.value]\n : []\n : this.value;\n }\n\n private isValidValues() {\n return this.valArray.find((val) =>\n (this.options as OptionInterface[]).find((opt) => opt.value === val)\n );\n }\n\n private customValidate = () => {\n this.nativeSelect.setCustomValidity('');\n\n // add custom validations 'cos html5 validations are a bit rubbish on selects\n if (this.required && !this.valArray.length) {\n this.nativeSelect.setCustomValidity('Please fill in this field.');\n return true;\n }\n if (\n this.valArray.length &&\n !this.allowCustomValues &&\n !this.isValidValues()\n ) {\n this.nativeSelect.setCustomValidity(\n 'Please choose an item from this field.'\n );\n return true;\n }\n if (this.max && this.valArray.length > this.max) {\n this.nativeSelect.setCustomValidity(\n `Only up to ${this.max} values are allowed.`\n );\n return true;\n }\n if (this.min && this.valArray.length < this.min) {\n this.nativeSelect.setCustomValidity(\n `You must select a minimum of ${this.min} values.`\n );\n return true;\n }\n return false;\n };\n\n private showInlineValidation = (ev?: Event) => {\n if (this.validateOn === 'submitThenDirty') this.validateOn = 'dirty';\n\n this._invalid = false;\n this.showErrorMsg = false;\n this.errorMessage = '';\n\n if (!this.nativeSelect.validity.valid) {\n this.errorMessage = this.nativeSelect.validationMessage;\n this._invalid = true;\n this.showErrorMsg = true;\n }\n this.nanoValidate.emit({\n isValid: !this.invalid,\n errorMessage: this.errorMessage,\n originalEvent: ev,\n });\n };\n\n private handleInvalid = (ev: Event) => {\n this._invalid = true;\n\n if (this.validateOn === 'submit')\n this._invalid = this.showErrorMsg = this.customValidate();\n if (this.showInlineError) ev.preventDefault();\n\n setTimeout((_) => this.showInlineValidation(ev), 20);\n };\n\n private setValue = (e: CustomEvent<HTMLNanoOptionElement>) => {\n e.preventDefault();\n\n if (!this.multiple) {\n this.value = e.detail.value;\n this.selectWrap.clientWidth; // force reflow\n this.inputCtrl.focus();\n return;\n }\n if (this.value && this.value.length && this.value.includes(e.detail.value))\n return;\n if (this.max && this.value.length === this.max) return;\n\n this.currInsertIndex++;\n this.value = [\n ...this.value.slice(0, this.currInsertIndex),\n e.detail.value,\n ...this.value.slice(this.currInsertIndex),\n ];\n this.inputSearchVal = '';\n // this.selectWrap.clientWidth; // force reflow\n };\n\n private removeValue = (toFind?: string) => {\n if (!this.multiple || !this.value.length) return;\n\n if (!toFind) toFind = this.value[this.value.length - 1];\n this.value = (this.value as Array<string>).filter((val) => val !== toFind);\n\n this.currInsertIndex--;\n // this.selectWrap.clientWidth; // force reflow\n this.setFocus();\n };\n\n private slotChangeObserver() {\n const mo = (this.mo = new MutationObserver(() =>\n this.processSlottedContent()\n ));\n mo.observe(this.el, { childList: true, subtree: true });\n }\n\n private processSlottedContent() {\n // see if we have label / helper content\n this.hasLabelSlot = !!this.el.querySelectorAll('[slot=\"label\"]').length;\n this.hasHelperSlot = !!this.el.querySelector('[slot=\"helper\"]');\n\n // breaking change introduced in v2. Rm in v3\n if (\n !!this.el.querySelector('select:not([class*=\"sc-nano-select\"]) option')\n ) {\n console.warn(\n 'nesting `<option>` elements was removed in v2. Please update your code to use `<nano-option>` elements instead.',\n this.el\n );\n }\n\n // breaking change introduced in v2. Rm in v3\n if (!!this.el.querySelector('[slot=\"legacy\"]')) {\n console.warn(\n 'The `legacy` slot has been removed. Please update your code',\n this.el\n );\n }\n }\n\n private getLabel(toFind: string) {\n let label = (this.options as OptionInterface[]).find((opt) => {\n return !opt.disabled && opt.value?.length && opt.value === toFind;\n });\n return label && label.label ? label.label : toFind;\n }\n\n /* Event handling */\n\n @Listen('mousedown', { target: 'body' })\n @Listen('keydown')\n handleBlur(e: KeyboardEvent | MouseEvent) {\n if (!this.hasFocus) return;\n\n const kev = e as KeyboardEvent;\n let target: Element;\n\n raf(() => {\n if (kev.key) {\n if (kev.key !== 'Tab') return;\n target = getActiveElement();\n } else target = e.target as Element;\n\n if (closestElement(this.el.tagName.toLowerCase(), target) !== this.el) {\n this.onBlur();\n }\n });\n }\n\n private setOptions = () => {\n if (\n !this.datalist ||\n !this.datalist.activeOptions ||\n !this.datalist.activeOptions.length\n )\n return;\n\n this._eOptions = this.datalist.activeOptions.map((ao) => {\n const { value, selected, label, filterMeta } = ao;\n return { value, selected, label, filterMeta };\n });\n };\n\n private handleDocumentKeyDown = (ev: KeyboardEvent) => {\n if (!this.multiple || !this.hasFocus) return;\n\n if (!this.inputSearchVal) {\n let rm: HTMLSpanElement;\n\n switch (ev.key) {\n case 'Backspace':\n if (this.inputCtrl.previousElementSibling)\n rm = this.inputCtrl.previousElementSibling as HTMLSpanElement;\n else break;\n\n this.removeValue(rm.dataset.value || null);\n break;\n\n case 'Delete':\n if (this.inputCtrl.nextElementSibling)\n rm = this.inputCtrl.nextElementSibling as HTMLSpanElement;\n else break;\n\n this.removeValue(rm.dataset.value || null);\n break;\n\n case 'ArrowLeft':\n case 'ArrowRight':\n if (!this.value.length) break;\n\n if (ev.key === 'ArrowLeft' && this.inputCtrl.previousSibling)\n this.currInsertIndex--;\n if (ev.key === 'ArrowRight' && this.inputCtrl.nextSibling)\n this.currInsertIndex++;\n\n setTimeout(() => {\n this.inputCtrl.focus();\n }, 20);\n ev.preventDefault();\n break;\n }\n }\n };\n\n private onBlur = () => {\n this.hasFocus = false;\n\n setTimeout(() => {\n if (this.validateOn === 'dirty' && !this.hasFocus)\n this.showInlineValidation();\n }, 20);\n this.nanoBlur.emit();\n\n if (!this.allowCustomValues && this.multiple) {\n this.inputSearchVal = '';\n const event = new window.Event('change');\n this.inputCtrl.dispatchEvent(event);\n }\n };\n\n private onFocus = () => {\n this.hasFocus = true;\n this.nanoFocus.emit();\n };\n\n private clearSelectValue = (ev?: Event) => {\n if (this.clearSelect && !this.readonly && !this.disabled && ev) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n if (this.multiple) {\n this.value = [];\n this.currInsertIndex = -1;\n } else this.value = '';\n\n this.inputCtrl.value = '';\n const event = new window.Event('change');\n this.inputCtrl.dispatchEvent(event);\n };\n\n private onClick = () => {\n this.setFocus();\n };\n\n /* Multi event handlers */\n\n private onDragStart = (ev: MouseEvent) => {\n let ele = ev.target as HTMLSpanElement;\n this.dragVal = ele.dataset.value;\n };\n\n private onDragEnd = (ev) => {\n this.dragVal = null;\n ev.preventDefault();\n };\n\n private onDragLeave = (ev: MouseEvent) => {\n let ele = ev.target as HTMLSpanElement;\n let spanVal: string =\n ele.dataset && ele.dataset.value ? ele.dataset.value : null;\n\n if (\n !spanVal ||\n this.dragVal === spanVal ||\n !this.value.includes(this.dragVal)\n ) {\n ev.preventDefault();\n return;\n }\n\n let to = this.value.indexOf(spanVal);\n let from = this.value.indexOf(this.dragVal);\n let tmpArr = this.value as Array<string>;\n let tmpVal = tmpArr[to];\n\n tmpArr[to] = tmpArr[from];\n tmpArr[from] = tmpVal;\n this.value = [...tmpArr];\n };\n\n private onMultiInput = (ev) => {\n this.inputSearchVal = ev.target.value.trim();\n this.nanoSearchChange.emit({ value: ev.target.value.trim() });\n };\n\n /* Stencil Component lifecycle hooks */\n\n connectedCallback() {\n this.debounceChanged();\n\n if (!Build.isBrowser) return;\n\n this.el.dispatchEvent(\n new CustomEvent('nanoDidLoad', {\n detail: this.el,\n })\n );\n }\n\n disconnectedCallback() {\n document.dispatchEvent(\n new CustomEvent('nanoDidUnload', {\n detail: this.el,\n })\n );\n\n if (!Build.isBrowser) return;\n if (this.mo) this.mo.disconnect();\n }\n\n componentDidLoad() {\n this.slotChangeObserver();\n this.customValidate();\n this.setDataListOpts();\n raf(() => (this.onInit = false));\n }\n\n componentWillLoad() {\n this.processSlottedContent();\n }\n\n render() {\n const labelId = this.selectId + '-lbl';\n const moreId =\n this.showInlineError || this.hasHelperSlot\n ? this.selectId + '-moreId'\n : '';\n\n this.rtl = (this.el.ownerDocument as Document).dir === 'rtl';\n this.valueItems = [];\n\n const compWrapOptions = (({\n el,\n floatLabel,\n label,\n errorMessage,\n showInlineError,\n hasHelperSlot,\n hasLabelSlot,\n hideLabel,\n placeholder,\n rtl,\n }) => ({\n el,\n floatLabel,\n label,\n errorMessage,\n showInlineError,\n hasHelperSlot,\n hasLabelSlot,\n hideLabel,\n placeholder,\n rtl,\n }))(this);\n const wrapOptions = {\n ...compWrapOptions,\n labelId,\n moreId,\n hasValue: !!this.value.length || !!this.inputSearchVal.length,\n controlId: this.selectId,\n };\n\n const controlOptions = (({ readonly, disabled }) => ({\n readonly,\n disabled,\n clearControl: this.clearSelect,\n }))(this);\n\n return (\n <Host\n type={this.multiple ? 'select-multiple' : 'select-one'}\n aria-disabled={this.disabled ? 'true' : null}\n class={{\n ...createColorClasses(this.color),\n 'has-value': !!this.value.length || !!this.inputSearchVal.length,\n 'has-focus': this.hasFocus,\n 'is-invalid': this.invalid,\n 'has-label': this.label !== null && !this.floatLabel,\n 'has-float-label': this.label !== null && this.floatLabel,\n rtl: this.rtl,\n 'has-multiple': this.multiple,\n 'has-clr-btn': this.clearSelect,\n masked: this.mask,\n legacy: this.isLegacy,\n }}\n >\n <FormControlWrap {...wrapOptions}>\n <FormControl\n {...controlOptions}\n onClearText={this.clearSelectValue}\n control={this.el}\n ref={(el) => (this.selectWrap = el)}\n endValueSlot={\n <slot name=\"down-arrow\">\n <nano-icon slot=\"value-end\" name=\"light/chevron-down\" />\n </slot>\n }\n >\n {this.multiple && (\n <div class=\"multi-wrap\">\n {this.multipleValues(labelId, moreId)}\n </div>\n )}\n {!this.multiple && [\n this.mask && (\n <div class=\"select-mask\">\n {this.getLabel(this.value as string)}\n </div>\n ),\n <input\n id={this.selectId}\n class=\"native-input\"\n ref={(input) => (this.inputCtrl = input)}\n aria-labelledby={labelId + ' ' + moreId}\n disabled={this.disabled}\n form={this.form}\n placeholder={\n !this.floatLabel && this.placeholder ? this.placeholder : ''\n }\n readOnly={true}\n required={this.required}\n value={this.getLabel(this.value as string)}\n onFocus={this.onFocus}\n />,\n ]}\n </FormControl>\n </FormControlWrap>\n {!this.readonly && !this.disabled && (\n <nano-datalist\n onNanoOptionsUpdated={this.setOptions}\n ref={(el) => (this.datalist = el)}\n selected={this.valArray}\n type={this.multiple ? 'selctMulti' : 'select'}\n onNanoSelect={this.setValue}\n onNanoDeselect={(e) => {\n e.preventDefault();\n this.removeValue(e.detail.value);\n }}\n options={this._options.length ? this._options : undefined}\n >\n {this.allowCustomValues && this.multiple && !!this.inputSearchVal && (\n <nano-option\n slot=\"list-top\"\n value={this.inputSearchVal}\n selected={false}\n label={this.inputSearchVal}\n onNanoSelect={() => this.inputCtrl.focus()}\n >\n <span slot=\"check-icon\"></span>\n Add '{this.inputSearchVal}'\n </nano-option>\n )}\n <slot />\n </nano-datalist>\n )}\n\n <select\n id={this.selectId + '-hidden'}\n class=\"native-select\"\n ref={(select) => (this.nativeSelect = select)}\n aria-labelledby={labelId + ' ' + moreId}\n disabled={this.disabled}\n form={this.form}\n multiple={this.multiple}\n name={this.name}\n required={this.required}\n onInvalid={this.handleInvalid}\n >\n {this.allowCustomValues &&\n this.valArray.map((val) => {\n return (\n <option value={val} selected={true}>\n {val}\n </option>\n );\n })}\n {!this.allowCustomValues &&\n this.options.map((opt: OptionInterface) => {\n return (\n <option\n value={opt.value}\n selected={this.valArray.includes(opt.value)}\n disabled={opt.disabled}\n label={opt.label}\n >\n {this.valArray.includes(opt.value)}\n </option>\n );\n })}\n </select>\n </Host>\n );\n }\n\n private multipleValues(\n labelId: string,\n moreId: string\n ): VNode | (VNode | VNode[])[] {\n let input: VNode = (\n <input\n class=\"multi-input\"\n id={this.selectId}\n ref={(input) => (this.inputCtrl = input)}\n readOnly={this.readonly}\n disabled={this.disabled}\n autoFocus={this.autofocus}\n autocomplete=\"off\"\n onKeyDown={this.handleDocumentKeyDown}\n onInput={this.onMultiInput}\n value={this.inputSearchVal}\n onTouchStart={this.onClick}\n onMouseDown={this.onClick}\n onFocus={this.onFocus}\n placeholder={\n this.placeholder && !this.floatLabel && !this.value.length\n ? this.placeholder\n : ''\n }\n aria-labelledby={labelId + ' ' + moreId}\n />\n );\n if (!this.value.length) return input;\n\n return (this.value as Array<string>).map((val, i) => {\n let toReturn: VNode | VNode[] = (\n <span\n onDragStart={this.onDragStart}\n onDragLeave={this.onDragLeave}\n onDragEnd={this.onDragEnd}\n onDragOver={(e) => e.preventDefault()}\n draggable\n data-value={val}\n ref={(span) => this.valueItems.push(span)}\n class=\"multi-value\"\n >\n <span>{this.getLabel(val)}</span>\n <button\n class=\"multi-value-remove\"\n type=\"button\"\n tabindex=\"-1\"\n onTouchEnd={() => {\n this.removeValue(val);\n }}\n onMouseUp={() => {\n this.removeValue(val);\n }}\n >\n <nano-icon name=\"light/times\"></nano-icon>\n </button>\n </span>\n );\n if (i === 0 && this.currInsertIndex < 0)\n toReturn = [input, toReturn as VNode];\n else if (i === this.currInsertIndex)\n toReturn = [toReturn as VNode, input];\n return toReturn;\n });\n }\n}\n"]}
1
+ {"version":3,"file":"select.js","sourceRoot":"","sources":["../../../src/components/select/select.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Build,\n Component,\n ComponentInterface,\n Element,\n Event,\n EventEmitter,\n Host,\n Method,\n Prop,\n State,\n Watch,\n h,\n VNode,\n Listen,\n} from '@stencil/core';\n\nimport {\n Color,\n SelectChangeEventDetail,\n InputChangeEventDetail,\n ControlValidityEventDetail,\n ControlValidity,\n} from '../../interface';\nimport {\n debounceEvent,\n createColorClasses,\n closestElement,\n raf,\n getActiveElement,\n} from '../../utils';\nimport type { Dropdown } from '../dropdown/dropdown';\nimport { FormControl, FormControlWrap } from '../form-control/form-control';\nimport { OptionInterface } from '../option/option-interface';\n\nlet selectIds = 0;\n\n/**\n * The select component is a wrapper to the HTML select element with custom styling and additional functionality.\n * It accepts most of the same properties as the HTML [select](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select).\n * It's multi selection functionality is vastly improved from the native solution. It allows for the control of\n * value order through drag and drop or changing the insertion point with arrow keys. It also can allow for user defined values.\n *\n * @slot start - suitable for inline action buttons or icons that may add extra contextual information\n * @slot end - suitable for inline action buttons or icons that may add extra contextual information\n * @slot value-start - similar to 'start', 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\n * @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\n * @slot label - if you do not set a label attribute, you can use this slot for more complex markup\n * @slot helper - helper text to accompany the form field underneath.\n * @slot down-arrow - use this to replace the default down arrow\n * @slot - default slot; nest `nano-option` elements\n */\n@Component({\n tag: 'nano-select',\n styleUrl: 'select.scss',\n scoped: true,\n})\nexport class Select implements ComponentInterface {\n private nativeSelect?: HTMLSelectElement;\n private inputCtrl?: HTMLInputElement;\n private valueItems: Array<HTMLSpanElement> = [];\n private dragVal: string;\n private mo?: MutationObserver;\n private selectId = `nano-select-${selectIds++}`;\n private rtl: boolean = false;\n private onInit: boolean = true;\n\n // we don't want these rendered eles decorated with @State\n // because that will cause re-renders. Use get/set to set datalist options\n private _selectWrap: HTMLElement;\n private get selectWrap() {\n return this._selectWrap;\n }\n private set selectWrap(ele: HTMLElement) {\n if (this._selectWrap === ele) return;\n this._selectWrap = ele;\n this.setDataListOpts();\n }\n\n private _datalist: HTMLNanoDatalistElement;\n private get datalist() {\n return this._datalist;\n }\n private set datalist(ele: HTMLNanoDatalistElement) {\n if (this._datalist === ele) return;\n this._datalist = ele;\n this.setDataListOpts();\n }\n\n @State() currInsertIndex: number = -1;\n @State() showErrorMsg = false;\n @State() errorMessage: string = '';\n @State() hasFocus = false;\n @State() hasLabelSlot: boolean = false;\n @State() hasHelperSlot: boolean = false;\n @State() inputSearchVal: string = '';\n\n @Element() el!: HTMLNanoSelectElement;\n\n /**\n * This will be true when the control is in an invalid state.\n * Validity is determined by the `required` prop. Or if custom validity message is set.\n */\n @Prop({ reflect: true })\n get invalid() {\n return this._invalid;\n }\n private _invalid = false;\n\n /**\n * The color to use from your application's color palette.\n * Default options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\n */\n @Prop() color?: Color;\n\n /**\n * This Boolean attribute lets you specify that a form control should have select focus when the page loads.\n */\n @Prop() autofocus = false;\n\n /**\n * If `true`, the user cannot interact with the select.\n */\n @Prop({ reflect: true }) disabled = false;\n\n /**\n * When should the field perform validation\n */\n @Prop({ mutable: true }) validateOn?: 'dirty' | 'submit' | 'submitThenDirty' =\n 'submit';\n\n /**\n * Whether to show validation errors underneath input\n */\n @Prop({ reflect: true }) showInlineError = true;\n\n /**\n * String to place within a label element. Alternatively use the 'label' slot\n */\n @Prop() label!: string;\n\n /**\n * Visually hide the label - but make it accessible.\n */\n @Prop() hideLabel?: boolean = false;\n\n /**\n * Enable floating label behaviour. Will disable placeholder if set.\n */\n @Prop() floatLabel: boolean = false;\n\n /**\n * If `true`, the user can enter more than one value. This attribute applies when the type attribute is set to `\"email\"` or `\"file\"`, otherwise it is ignored.\n */\n @Prop() multiple?: boolean = false;\n\n /**\n * The name of the control, which is submitted with the form data.\n */\n @Prop() name: string = this.selectId + '-name';\n\n /**\n * Instructional text that shows before the select has a value. Text set here will be placed inside the label when a value is set. If you don't want this behaviour just set the first option to have no value.\n */\n @Prop() placeholder?: string | null;\n\n /**\n * If `true`, the user cannot modify the value.\n */\n @Prop({ reflect: true }) readonly = false;\n\n /**\n * If `true`, the user must fill in a value before submitting a form.\n */\n @Prop() required = false;\n\n /**\n * The initial size of the control.\n */\n @Prop() size?: number;\n\n /**\n * Maximum number of options that can be selected when multiple is true\n */\n @Prop() max?: number;\n\n /**\n * Minimum number of options that can be selected when multiple is true\n */\n @Prop() min?: number;\n\n /**\n * The form element to associate the select with (its form owner). Must be the id of a form.\n */\n @Prop() form?: string | null;\n\n /**\n * in multiple mode, allow users to enter their own values\n */\n @Prop() allowCustomValues: boolean = false;\n\n /**\n * The value of the select.\n */\n @Prop()\n get value() {\n return this._value;\n }\n set value(val: string | string[]) {\n if (typeof val === 'string') {\n if (this.multiple) this._value = val.split(',');\n else this._value = val;\n } else if (Array.isArray(val)) {\n if (this.multiple) this._value = val;\n else this._value = val[0];\n }\n }\n private _value: Array<string> | string = this.multiple ? [] : '';\n\n /**\n * You can set options via js as an array of strings: `domElement.options = ['option 1', 'option 2']` or\n * objects `domElement.options = [{label: 'option 1', value: 'opt-1'}]`. See `nano-option` docs for all available properties.\n * Alternatively, you can nest `<nano-option>` elements within a `<nano-select>`\n * Regardless - reading `options` will return the current component options - slotted or otherwise\n */\n @Prop()\n get options(): Array<OptionInterface | string> {\n if (this._options.length) return this._options;\n\n if (!this.datalist || !this.datalist.activeOptions) return [];\n\n return this._eOptions.map((ao) => {\n const { value, selected, label, filterMeta } = ao;\n return { value, selected, label, filterMeta };\n });\n }\n set options(opts: Array<OptionInterface | string>) {\n this._options = opts.map((opt) => {\n if (typeof opt === 'string') return { value: opt, label: opt };\n else return opt;\n });\n }\n private _options: OptionInterface[] = [];\n @State() _eOptions: OptionInterface[] = [];\n\n /**\n * If `true`, a clear icon will appear in the select when there is a value. Clicking it clears the select.\n */\n @Prop() clearSelect = false;\n\n /**\n * Hide the native select element and cover with a value 'mask'.\n * Enables a fluid nano-select width upon value change (if required). Doesn't work with multiple=\"true\".\n */\n @Prop() mask = false;\n\n /**\n * Set the amount of time, in milliseconds, to wait to trigger the `nanoSearchChange` event after each keystroke.\n */\n @Prop() debounce = 0;\n\n @Watch('debounce')\n protected debounceChanged() {\n this.nanoSearchChange = debounceEvent(this.nanoSearchChange, this.debounce);\n }\n\n @Watch('required')\n @Watch('disabled')\n @Watch('min')\n @Watch('max')\n @Watch('validateOn')\n @Watch('readonly')\n protected shouldValidate() {\n if (this.onInit) return;\n if (this.invalid) this.showErrorMsg = this._invalid = false;\n\n this.customValidate();\n if (this.validateOn !== 'dirty') return;\n this.showInlineValidation();\n }\n\n /**\n * Update the native select element when the value changes\n */\n // eslint-disable-next-line @stencil/no-unused-watch\n @Watch('value')\n valueChanged() {\n if (this.onInit) {\n if (this.multiple) this.currInsertIndex = this.value.length - 1;\n return;\n }\n setTimeout((_) => this.shouldValidate(), 20);\n this.nanoChange.emit({ value: this.value });\n }\n\n /** nano-dropdown config options you can pass to the nested dropdown component */\n @Prop({ mutable: true }) dropDownConfig?: Partial<Dropdown> = {};\n\n @Watch('dropDownConfig')\n setDataListOpts() {\n if (!this.datalist || !this.selectWrap) return;\n const currDWConfig = this.datalist.dropDownConfig || {};\n this.datalist.dropDownConfig = {\n ...currDWConfig,\n ...this.dropDownConfig,\n tetherTo: this.selectWrap,\n };\n this.datalist.input = this.inputCtrl;\n }\n\n // Custom Events\n\n /**\n * Emitted when the value has changed.\n */\n @Event() nanoChange!: EventEmitter<SelectChangeEventDetail>;\n\n /**\n * Emitted when the select loses focus.\n */\n @Event() nanoBlur!: EventEmitter<void>;\n\n /**\n * Emitted when the select has focus.\n */\n @Event() nanoFocus!: EventEmitter<void>;\n\n /**\n * Emitted when the select has been created.\n * @internal\n */\n @Event() nanoDidLoad!: EventEmitter<void>;\n\n /**\n * Emitted when the select has been removed.\n * @internal\n */\n @Event() nanoDidUnload!: EventEmitter<void>;\n\n /**\n * Emitted when a keyboard input occurred on a multiple=\"true\" input\n */\n @Event() nanoSearchChange!: EventEmitter<InputChangeEventDetail>;\n\n /**\n * Called when validation is performed (which depends on `validateOn`).\n * @returns event.detail: `{ isValid: boolean, errorMessage: string, originalEvent: Event }`.\n */\n @Event() nanoValidate: EventEmitter<ControlValidityEventDetail>;\n\n // Public Methods\n\n /**\n * Get the current state of the control.\n * @param validateFirst - perform validation first before reporting\n * @returns `{ isValid: boolean, errorMessage: string }`\n */\n @Method()\n async reportValidity(validateFirst: boolean): Promise<ControlValidity> {\n if (validateFirst) this.showInlineValidation();\n return {\n isValid: !this.invalid,\n errorMessage: this.errorMessage,\n };\n }\n\n /**\n * Sets focus on the specified `nano-select`. Use this method instead of the global\n * `select.focus()`.\n */\n @Method()\n async setFocus() {\n this.inputCtrl.focus();\n setTimeout(() => this.inputCtrl.click(), 50);\n }\n\n /**\n * Returns the native `<select>` element used under the hood.\n */\n @Method()\n getSelectElement(): Promise<HTMLSelectElement> {\n return Promise.resolve(this.nativeSelect!);\n }\n\n /**\n * Invalidate the field and show a custom error message.\n * To clear the error you will need to re-call this method with an empty string.\n */\n @Method()\n async showError(message: string) {\n if (this.nativeSelect) {\n this.nativeSelect.setCustomValidity(message);\n this.showInlineValidation();\n }\n }\n\n /* Logic */\n\n private get valArray() {\n return typeof this.value === 'string'\n ? this.value.length\n ? [this.value]\n : []\n : this.value;\n }\n\n private isValidValues() {\n return this.valArray.find((val) =>\n (this.options as OptionInterface[]).find((opt) => opt.value === val)\n );\n }\n\n private customValidate = () => {\n this.nativeSelect.setCustomValidity('');\n\n // add custom validations 'cos html5 validations are a bit rubbish on selects\n if (this.required && !this.valArray.length) {\n this.nativeSelect.setCustomValidity('Please fill in this field.');\n return true;\n }\n if (\n this.valArray.length &&\n !this.allowCustomValues &&\n !this.isValidValues()\n ) {\n this.nativeSelect.setCustomValidity(\n 'Please choose an item from this field.'\n );\n return true;\n }\n if (this.max && this.valArray.length > this.max) {\n this.nativeSelect.setCustomValidity(\n `Only up to ${this.max} values are allowed.`\n );\n return true;\n }\n if (this.min && this.valArray.length < this.min) {\n this.nativeSelect.setCustomValidity(\n `You must select a minimum of ${this.min} values.`\n );\n return true;\n }\n return false;\n };\n\n private showInlineValidation = (ev?: Event) => {\n if (this.validateOn === 'submitThenDirty') this.validateOn = 'dirty';\n\n this._invalid = false;\n this.showErrorMsg = false;\n this.errorMessage = '';\n\n if (!this.nativeSelect.validity.valid) {\n this.errorMessage = this.nativeSelect.validationMessage;\n this._invalid = true;\n this.showErrorMsg = true;\n }\n this.nanoValidate.emit({\n isValid: !this.invalid,\n errorMessage: this.errorMessage,\n originalEvent: ev,\n });\n };\n\n private handleInvalid = (ev: Event) => {\n this._invalid = true;\n\n if (this.validateOn === 'submit')\n this._invalid = this.showErrorMsg = this.customValidate();\n if (this.showInlineError) ev.preventDefault();\n\n setTimeout((_) => this.showInlineValidation(ev), 20);\n };\n\n private setValue = (e: CustomEvent<HTMLNanoOptionElement>) => {\n e.preventDefault();\n\n if (!this.multiple) {\n this.value = e.detail.value;\n this.selectWrap.clientWidth; // force reflow\n this.inputCtrl.focus();\n return;\n }\n if (this.value && this.value.length && this.value.includes(e.detail.value))\n return;\n if (this.max && this.value.length === this.max) return;\n\n this.currInsertIndex++;\n this.value = [\n ...this.value.slice(0, this.currInsertIndex),\n e.detail.value,\n ...this.value.slice(this.currInsertIndex),\n ];\n this.inputSearchVal = '';\n // this.selectWrap.clientWidth; // force reflow\n };\n\n private removeValue = (toFind?: string) => {\n if (!this.multiple || !this.value.length) return;\n\n if (!toFind) toFind = this.value[this.value.length - 1];\n this.value = (this.value as Array<string>).filter((val) => val !== toFind);\n\n this.currInsertIndex--;\n // this.selectWrap.clientWidth; // force reflow\n this.setFocus();\n };\n\n private slotChangeObserver() {\n const mo = (this.mo = new MutationObserver(() =>\n this.processSlottedContent()\n ));\n mo.observe(this.el, { childList: true, subtree: true });\n }\n\n private processSlottedContent() {\n // see if we have label / helper content\n this.hasLabelSlot = !!this.el.querySelectorAll('[slot=\"label\"]').length;\n this.hasHelperSlot = !!this.el.querySelector('[slot=\"helper\"]');\n\n // breaking change introduced in v2. Rm in v3\n if (\n !!this.el.querySelector('select:not([class*=\"sc-nano-select\"]) option')\n ) {\n console.warn(\n 'nesting `<option>` elements was removed in v2. Please update your code to use `<nano-option>` elements instead.',\n this.el\n );\n }\n\n // breaking change introduced in v2. Rm in v3\n if (!!this.el.querySelector('[slot=\"legacy\"]')) {\n console.warn(\n 'The `legacy` slot has been removed. Please update your code',\n this.el\n );\n }\n }\n\n private getLabel(toFind: string) {\n let label = (this.options as OptionInterface[]).find((opt) => {\n return !opt.disabled && opt.value?.length && opt.value === toFind;\n });\n return label && label.label ? label.label : toFind;\n }\n\n /* Event handling */\n\n @Listen('mousedown', { target: 'body' })\n @Listen('keydown')\n handleBlur(e: KeyboardEvent | MouseEvent) {\n if (!this.hasFocus) return;\n\n const kev = e as KeyboardEvent;\n let target: Element;\n\n raf(() => {\n if (kev.key) {\n if (kev.key !== 'Tab') return;\n target = getActiveElement();\n } else target = e.target as Element;\n\n if (closestElement(this.el.tagName.toLowerCase(), target) !== this.el) {\n this.onBlur();\n }\n });\n }\n\n private setOptions = () => {\n if (\n !this.datalist ||\n !this.datalist.activeOptions ||\n !this.datalist.activeOptions.length\n )\n return;\n\n this._eOptions = this.datalist.activeOptions.map((ao) => {\n const { value, selected, label, filterMeta } = ao;\n return { value, selected, label, filterMeta };\n });\n };\n\n private handleDocumentKeyDown = (ev: KeyboardEvent) => {\n if (!this.multiple || !this.hasFocus) return;\n\n if (!this.inputSearchVal) {\n let rm: HTMLSpanElement;\n\n switch (ev.key) {\n case 'Backspace':\n if (this.inputCtrl.previousElementSibling)\n rm = this.inputCtrl.previousElementSibling as HTMLSpanElement;\n else break;\n\n this.removeValue(rm.dataset.value || null);\n break;\n\n case 'Delete':\n if (this.inputCtrl.nextElementSibling)\n rm = this.inputCtrl.nextElementSibling as HTMLSpanElement;\n else break;\n\n this.removeValue(rm.dataset.value || null);\n break;\n\n case 'ArrowLeft':\n case 'ArrowRight':\n if (!this.value.length) break;\n\n if (ev.key === 'ArrowLeft' && this.inputCtrl.previousSibling)\n this.currInsertIndex--;\n if (ev.key === 'ArrowRight' && this.inputCtrl.nextSibling)\n this.currInsertIndex++;\n\n setTimeout(() => {\n this.inputCtrl.focus();\n }, 20);\n ev.preventDefault();\n break;\n }\n }\n };\n\n private onBlur = () => {\n this.hasFocus = false;\n\n setTimeout(() => {\n if (this.validateOn === 'dirty' && !this.hasFocus)\n this.showInlineValidation();\n }, 20);\n this.nanoBlur.emit();\n\n if (!this.allowCustomValues && this.multiple) {\n this.inputSearchVal = '';\n const event = new window.Event('change');\n this.inputCtrl.dispatchEvent(event);\n }\n };\n\n private onFocus = () => {\n this.hasFocus = true;\n this.nanoFocus.emit();\n };\n\n private clearSelectValue = (ev?: Event) => {\n if (this.clearSelect && !this.readonly && !this.disabled && ev) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n if (this.multiple) {\n this.value = [];\n this.currInsertIndex = -1;\n } else this.value = '';\n\n this.inputCtrl.value = '';\n const event = new window.Event('change');\n this.inputCtrl.dispatchEvent(event);\n };\n\n private onClick = () => {\n this.setFocus();\n };\n\n /* Multi event handlers */\n\n private onDragStart = (ev: MouseEvent) => {\n let ele = ev.target as HTMLSpanElement;\n this.dragVal = ele.dataset.value;\n };\n\n private onDragEnd = (ev) => {\n this.dragVal = null;\n ev.preventDefault();\n };\n\n private onDragLeave = (ev: MouseEvent) => {\n let ele = ev.target as HTMLSpanElement;\n let spanVal: string =\n ele.dataset && ele.dataset.value ? ele.dataset.value : null;\n\n if (\n !spanVal ||\n this.dragVal === spanVal ||\n !this.value.includes(this.dragVal)\n ) {\n ev.preventDefault();\n return;\n }\n\n let to = this.value.indexOf(spanVal);\n let from = this.value.indexOf(this.dragVal);\n let tmpArr = this.value as Array<string>;\n let tmpVal = tmpArr[to];\n\n tmpArr[to] = tmpArr[from];\n tmpArr[from] = tmpVal;\n this.value = [...tmpArr];\n };\n\n private onMultiInput = (ev) => {\n this.inputSearchVal = ev.target.value.trim();\n this.nanoSearchChange.emit({ value: ev.target.value.trim() });\n };\n\n /* Stencil Component lifecycle hooks */\n\n connectedCallback() {\n this.debounceChanged();\n\n if (!Build.isBrowser) return;\n\n this.el.dispatchEvent(\n new CustomEvent('nanoDidLoad', {\n detail: this.el,\n })\n );\n }\n\n disconnectedCallback() {\n document.dispatchEvent(\n new CustomEvent('nanoDidUnload', {\n detail: this.el,\n })\n );\n\n if (!Build.isBrowser) return;\n if (this.mo) this.mo.disconnect();\n }\n\n componentDidLoad() {\n this.slotChangeObserver();\n this.customValidate();\n this.setDataListOpts();\n raf(() => (this.onInit = false));\n }\n\n componentWillLoad() {\n this.processSlottedContent();\n }\n\n render() {\n const labelId = this.selectId + '-lbl';\n const moreId =\n this.showInlineError || this.hasHelperSlot\n ? this.selectId + '-moreId'\n : '';\n\n this.rtl = (this.el.ownerDocument as Document).dir === 'rtl';\n this.valueItems = [];\n\n const compWrapOptions = (({\n el,\n floatLabel,\n label,\n errorMessage,\n showInlineError,\n hasHelperSlot,\n hasLabelSlot,\n hideLabel,\n placeholder,\n rtl,\n }) => ({\n el,\n floatLabel,\n label,\n errorMessage,\n showInlineError,\n hasHelperSlot,\n hasLabelSlot,\n hideLabel,\n placeholder,\n rtl,\n }))(this);\n const wrapOptions = {\n ...compWrapOptions,\n labelId,\n moreId,\n hasValue: !!this.value.length || !!this.inputSearchVal.length,\n controlId: this.selectId,\n };\n\n const controlOptions = (({ readonly, disabled }) => ({\n readonly,\n disabled,\n clearControl: this.clearSelect,\n }))(this);\n\n return (\n <Host\n type={this.multiple ? 'select-multiple' : 'select-one'}\n aria-disabled={this.disabled ? 'true' : null}\n class={{\n ...createColorClasses(this.color),\n 'has-value': !!this.value.length || !!this.inputSearchVal.length,\n 'has-focus': this.hasFocus,\n 'is-invalid': this.invalid,\n 'has-label': this.label !== null && !this.floatLabel,\n 'has-float-label': this.label !== null && this.floatLabel,\n rtl: this.rtl,\n 'has-multiple': this.multiple,\n 'has-clr-btn': this.clearSelect,\n masked: this.mask,\n }}\n >\n <FormControlWrap {...wrapOptions}>\n <FormControl\n {...controlOptions}\n onClearText={this.clearSelectValue}\n control={this.el}\n ref={(el) => (this.selectWrap = el)}\n endValueSlot={\n <slot name=\"down-arrow\">\n <nano-icon slot=\"value-end\" name=\"light/chevron-down\" />\n </slot>\n }\n >\n {this.multiple && (\n <div class=\"select__multi-wrap select\">\n {this.multipleValues(labelId, moreId)}\n </div>\n )}\n {!this.multiple && [\n this.mask && (\n <div class=\"select__mask\">\n {this.getLabel(this.value as string)}\n </div>\n ),\n <input\n id={this.selectId}\n class=\"select__native-input\"\n ref={(input) => (this.inputCtrl = input)}\n aria-labelledby={labelId + ' ' + moreId}\n disabled={this.disabled}\n form={this.form}\n placeholder={this.placeholder}\n readOnly={true}\n required={this.required}\n value={this.getLabel(this.value as string)}\n onFocus={this.onFocus}\n />,\n ]}\n </FormControl>\n </FormControlWrap>\n {!this.readonly && !this.disabled && (\n <nano-datalist\n onNanoOptionsUpdated={this.setOptions}\n ref={(el) => (this.datalist = el)}\n selected={this.valArray}\n type={this.multiple ? 'selctMulti' : 'select'}\n onNanoSelect={this.setValue}\n onNanoDeselect={(e) => {\n e.preventDefault();\n this.removeValue(e.detail.value);\n }}\n options={this._options.length ? this._options : undefined}\n >\n {this.allowCustomValues && this.multiple && !!this.inputSearchVal && (\n <nano-option\n slot=\"list-top\"\n value={this.inputSearchVal}\n selected={false}\n label={this.inputSearchVal}\n onNanoSelect={() => this.inputCtrl.focus()}\n >\n <span slot=\"check-icon\"></span>\n Add '{this.inputSearchVal}'\n </nano-option>\n )}\n <slot />\n </nano-datalist>\n )}\n\n <select\n id={this.selectId + '-hidden'}\n class=\"select__native-ctrl\"\n ref={(select) => (this.nativeSelect = select)}\n aria-labelledby={labelId + ' ' + moreId}\n disabled={this.disabled}\n form={this.form}\n multiple={this.multiple}\n name={this.name}\n required={this.required}\n onInvalid={this.handleInvalid}\n >\n {this.allowCustomValues &&\n this.valArray.map((val) => {\n return (\n <option value={val} selected={true}>\n {val}\n </option>\n );\n })}\n {!this.allowCustomValues &&\n this.options.map((opt: OptionInterface) => {\n return (\n <option\n value={opt.value}\n selected={this.valArray.includes(opt.value)}\n disabled={opt.disabled}\n label={opt.label}\n >\n {this.valArray.includes(opt.value)}\n </option>\n );\n })}\n </select>\n </Host>\n );\n }\n\n private multipleValues(\n labelId: string,\n moreId: string\n ): VNode | (VNode | VNode[])[] {\n let input: VNode = (\n <input\n class=\"select__multi-input\"\n id={this.selectId}\n ref={(input) => (this.inputCtrl = input)}\n readOnly={this.readonly}\n disabled={this.disabled}\n autoFocus={this.autofocus}\n autocomplete=\"off\"\n onKeyDown={this.handleDocumentKeyDown}\n onInput={this.onMultiInput}\n value={this.inputSearchVal}\n onTouchStart={this.onClick}\n onMouseDown={this.onClick}\n onFocus={this.onFocus}\n placeholder={\n this.placeholder && !this.value.length ? this.placeholder : ''\n }\n aria-labelledby={labelId + ' ' + moreId}\n />\n );\n if (!this.value.length) return input;\n\n return (this.value as Array<string>).map((val, i) => {\n let toReturn: VNode | VNode[] = (\n <span\n onDragStart={this.onDragStart}\n onDragLeave={this.onDragLeave}\n onDragEnd={this.onDragEnd}\n onDragOver={(e) => e.preventDefault()}\n draggable\n data-value={val}\n ref={(span) => this.valueItems.push(span)}\n class=\"select__multi-value\"\n >\n <span>{this.getLabel(val)}</span>\n <button\n class=\"select__multi-value-remove\"\n type=\"button\"\n tabindex=\"-1\"\n onTouchEnd={() => {\n this.removeValue(val);\n }}\n onMouseUp={() => {\n this.removeValue(val);\n }}\n >\n <nano-icon name=\"light/times\"></nano-icon>\n </button>\n </span>\n );\n if (i === 0 && this.currInsertIndex < 0)\n toReturn = [input, toReturn as VNode];\n else if (i === this.currInsertIndex)\n toReturn = [toReturn as VNode, input];\n return toReturn;\n });\n }\n}\n"]}
@@ -453,7 +453,7 @@ export class Slides {
453
453
  "references": {
454
454
  "FlickityOptions": {
455
455
  "location": "import",
456
- "path": "/builds/zfg2rJd-/0/Digital/nano-components/packages/components/src/interface.d.ts"
456
+ "path": "/builds/RxH386Vg/0/Digital/nano-components/packages/components/src/interface.d.ts"
457
457
  }
458
458
  }
459
459
  },
@@ -556,7 +556,7 @@ export class Slides {
556
556
  "references": {
557
557
  "SlideAnimation": {
558
558
  "location": "import",
559
- "path": "/builds/zfg2rJd-/0/Digital/nano-components/packages/components/src/interface.d.ts"
559
+ "path": "/builds/RxH386Vg/0/Digital/nano-components/packages/components/src/interface.d.ts"
560
560
  }
561
561
  }
562
562
  },
@@ -747,7 +747,7 @@ export class Slides {
747
747
  "references": {
748
748
  "DragEvent": {
749
749
  "location": "import",
750
- "path": "/builds/zfg2rJd-/0/Digital/nano-components/packages/components/src/interface.d.ts"
750
+ "path": "/builds/RxH386Vg/0/Digital/nano-components/packages/components/src/interface.d.ts"
751
751
  }
752
752
  }
753
753
  }
@@ -767,7 +767,7 @@ export class Slides {
767
767
  "references": {
768
768
  "DragEvent": {
769
769
  "location": "import",
770
- "path": "/builds/zfg2rJd-/0/Digital/nano-components/packages/components/src/interface.d.ts"
770
+ "path": "/builds/RxH386Vg/0/Digital/nano-components/packages/components/src/interface.d.ts"
771
771
  }
772
772
  }
773
773
  }
@@ -787,7 +787,7 @@ export class Slides {
787
787
  "references": {
788
788
  "DragEvent": {
789
789
  "location": "import",
790
- "path": "/builds/zfg2rJd-/0/Digital/nano-components/packages/components/src/interface.d.ts"
790
+ "path": "/builds/RxH386Vg/0/Digital/nano-components/packages/components/src/interface.d.ts"
791
791
  }
792
792
  }
793
793
  }
@@ -807,7 +807,7 @@ export class Slides {
807
807
  "references": {
808
808
  "DragEvent": {
809
809
  "location": "import",
810
- "path": "/builds/zfg2rJd-/0/Digital/nano-components/packages/components/src/interface.d.ts"
810
+ "path": "/builds/RxH386Vg/0/Digital/nano-components/packages/components/src/interface.d.ts"
811
811
  }
812
812
  }
813
813
  }
@@ -1114,7 +1114,7 @@ export class Slides {
1114
1114
  },
1115
1115
  "Flickity": {
1116
1116
  "location": "import",
1117
- "path": "/builds/zfg2rJd-/0/Digital/nano-components/packages/components/src/interface.d.ts"
1117
+ "path": "/builds/RxH386Vg/0/Digital/nano-components/packages/components/src/interface.d.ts"
1118
1118
  }
1119
1119
  },
1120
1120
  "return": "Promise<Flickity>"
@@ -502,7 +502,7 @@ export class TabGroup {
502
502
  "references": {
503
503
  "Color": {
504
504
  "location": "import",
505
- "path": "/builds/zfg2rJd-/0/Digital/nano-components/packages/components/src/interface.d.ts"
505
+ "path": "/builds/RxH386Vg/0/Digital/nano-components/packages/components/src/interface.d.ts"
506
506
  }
507
507
  }
508
508
  },
@@ -545,7 +545,7 @@ export class TabGroup {
545
545
  "references": {
546
546
  "StorageMethods": {
547
547
  "location": "import",
548
- "path": "/builds/zfg2rJd-/0/Digital/nano-components/packages/components/src/utils/store/component-store.ts"
548
+ "path": "/builds/RxH386Vg/0/Digital/nano-components/packages/components/src/utils/store/component-store.ts"
549
549
  }
550
550
  }
551
551
  },
@@ -96,15 +96,10 @@ export default class Popover {
96
96
  name: 'offset',
97
97
  options: {
98
98
  padding: 5,
99
- offset: ({ reference, placement, popper }) => {
99
+ offset: ({ reference }) => {
100
100
  if (this.options.placement !== 'center')
101
101
  return [this.options.skidding, this.options.distance];
102
- return [
103
- this.options.skidding,
104
- ['top', 'bottom'].includes(placement)
105
- ? -reference.height - (popper.height - reference.height) / 2
106
- : -reference.width - (popper.width - reference.width) / 2,
107
- ];
102
+ return [this.options.skidding, (reference.height + 1) * -1];
108
103
  },
109
104
  },
110
105
  },
@@ -1 +1 @@
1
- {"version":3,"file":"popover.js","sourceRoot":"","sources":["../../src/utils/popover.ts"],"names":[],"mappings":"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","sourcesContent":["//\n// A positioning utility for popovers that handles show/hide/transitionEnd events with simple callbacks.\n//\n// Powered by Popper.js.\n//\n// NOTE:\n//\n// - The popover MUST have at least one property that transitions, otherwise transitionEnd won't fire and the popover\n// won't be hidden. If transitions are delegated to a child element, set the `transitionElement` property accordingly.\n//\n// - When the popover is shown, it's assigned `PopoverOptions.visibleClass`. You can use this class to provide different\n// transitions for show/hide.\n//\n// - Popper uses `translate3d` to position elements, so adding a transition to the `transform` property may have an\n// undesired effect when the element is shown and when its placement changes.\n//\nimport { Instance as PopperInstance, createPopper } from '@popperjs/core';\nimport { raf } from './index';\n\nexport type PopoverPlacement =\n | 'auto'\n | 'auto-start'\n | 'auto-end'\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n | 'left'\n | 'left-start'\n | 'left-end'\n | 'center';\n\ninterface PopoverOptions {\n distance?: number;\n placement?: PopoverPlacement;\n skidding?: number;\n strategy?: 'absolute' | 'fixed';\n transitionElement?: HTMLElement;\n visibleClass?: string;\n onAfterShow?: () => any;\n onAfterHide?: () => any;\n onTransitionEnd?: (event: TransitionEvent) => any;\n}\n\nexport default class Popover {\n anchor: HTMLElement;\n isVisible: boolean;\n popover: HTMLElement;\n popper: PopperInstance;\n options: PopoverOptions;\n\n constructor(\n anchor: HTMLElement,\n popover: HTMLElement,\n options?: PopoverOptions\n ) {\n this.handleTransitionEnd = this.handleTransitionEnd.bind(this);\n\n this.anchor = anchor;\n this.popover = popover;\n this.options = Object.assign(\n {\n skidding: 0,\n distance: 0,\n placement: 'bottom-start',\n strategy: 'absolute',\n transitionElement: this.popover,\n visibleClass: 'popover-visible',\n onAfterShow: () => {},\n onAfterHide: () => {},\n onTransitionEnd: () => {},\n },\n options\n );\n\n // this.isVisible = false;\n this.popover.hidden = true;\n this.popover.classList.remove(this.options.visibleClass);\n\n this.popover.addEventListener('transitionend', this.handleTransitionEnd);\n }\n\n private handleTransitionEnd(event: TransitionEvent) {\n const target = event.target as HTMLElement;\n\n // Make sure the transition event originates from from the correct element, and not one that has bubbled up\n if (target === this.options.transitionElement) {\n // This is called before the element is hidden so users can do things like reset scroll. It will fire once for\n // every transition property. Use `event.propertyName` to determine which property has finished transitioning.\n this.options.onTransitionEnd.call(this, event);\n\n // Make sure we only do this once, since transitionend will fire for every transition\n if (this.isVisible === false && !this.popover.hidden) {\n this.popover.hidden = true;\n this.popover.classList.remove(this.options.visibleClass);\n this.options.onAfterHide.call(this);\n }\n }\n }\n\n destroy() {\n this.popover.removeEventListener('transitionend', this.handleTransitionEnd);\n if (this.popper) {\n this.popper.destroy();\n this.popper = null;\n }\n }\n\n show() {\n this.isVisible = true;\n this.popover.hidden = false;\n this.popover.clientWidth; // force reflow\n\n raf(() => this.popover.classList.add(this.options.visibleClass));\n\n if (this.popper) {\n this.popper.destroy();\n }\n\n const safePlacement: Exclude<PopoverPlacement, 'center'> =\n this.options.placement.includes('center')\n ? 'top'\n : (this.options.placement as Exclude<PopoverPlacement, 'center'>);\n\n this.popper = createPopper(this.anchor, this.popover, {\n placement: safePlacement,\n strategy: this.options.strategy,\n modifiers: [\n {\n name: 'sameWidth',\n enabled: true,\n fn: ({ state }) => {\n state.styles.popper.minWidth = `${state.rects.reference.width}px`;\n },\n phase: 'beforeWrite',\n requires: ['computeStyles'],\n },\n {\n name: 'flip',\n options: {\n boundary: 'viewport',\n },\n },\n {\n name: 'offset',\n options: {\n padding: 5,\n offset: ({ reference, placement, popper }) => {\n if (this.options.placement !== 'center')\n return [this.options.skidding, this.options.distance];\n return [\n this.options.skidding,\n ['top', 'bottom'].includes(placement)\n ? -reference.height - (popper.height - reference.height) / 2\n : -reference.width - (popper.width - reference.width) / 2,\n ];\n },\n },\n },\n ],\n });\n\n this.popover.addEventListener(\n 'transitionend',\n () => this.options.onAfterShow.call(this),\n { once: true }\n );\n\n // Reposition the menu after it appears in case a modifier kicked in\n requestAnimationFrame(() => this.popper.update());\n }\n\n hide() {\n // Apply the hidden styles and wait for the transition before hiding completely\n this.isVisible = false;\n this.popover.classList.remove(this.options.visibleClass);\n }\n\n setOptions(options: PopoverOptions) {\n this.options = Object.assign(this.options, options);\n this.isVisible\n ? this.popover.classList.add(this.options.visibleClass)\n : this.popover.classList.remove(this.options.visibleClass);\n\n const safePlacement: Exclude<PopoverPlacement, 'center'> =\n this.options.placement.includes('center')\n ? 'top'\n : (this.options.placement as Exclude<PopoverPlacement, 'center'>);\n\n // Update popper options\n if (this.popper) {\n this.popper.setOptions({\n placement: safePlacement,\n strategy: this.options.strategy,\n });\n\n requestAnimationFrame(() => this.popper.update());\n }\n }\n}\n"]}
1
+ {"version":3,"file":"popover.js","sourceRoot":"","sources":["../../src/utils/popover.ts"],"names":[],"mappings":"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","sourcesContent":["//\n// A positioning utility for popovers that handles show/hide/transitionEnd events with simple callbacks.\n//\n// Powered by Popper.js.\n//\n// NOTE:\n//\n// - The popover MUST have at least one property that transitions, otherwise transitionEnd won't fire and the popover\n// won't be hidden. If transitions are delegated to a child element, set the `transitionElement` property accordingly.\n//\n// - When the popover is shown, it's assigned `PopoverOptions.visibleClass`. You can use this class to provide different\n// transitions for show/hide.\n//\n// - Popper uses `translate3d` to position elements, so adding a transition to the `transform` property may have an\n// undesired effect when the element is shown and when its placement changes.\n//\nimport { Instance as PopperInstance, createPopper } from '@popperjs/core';\nimport { raf } from './index';\n\nexport type PopoverPlacement =\n | 'auto'\n | 'auto-start'\n | 'auto-end'\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n | 'left'\n | 'left-start'\n | 'left-end'\n | 'center';\n\ninterface PopoverOptions {\n distance?: number;\n placement?: PopoverPlacement;\n skidding?: number;\n strategy?: 'absolute' | 'fixed';\n transitionElement?: HTMLElement;\n visibleClass?: string;\n onAfterShow?: () => any;\n onAfterHide?: () => any;\n onTransitionEnd?: (event: TransitionEvent) => any;\n}\n\nexport default class Popover {\n anchor: HTMLElement;\n isVisible: boolean;\n popover: HTMLElement;\n popper: PopperInstance;\n options: PopoverOptions;\n\n constructor(\n anchor: HTMLElement,\n popover: HTMLElement,\n options?: PopoverOptions\n ) {\n this.handleTransitionEnd = this.handleTransitionEnd.bind(this);\n\n this.anchor = anchor;\n this.popover = popover;\n this.options = Object.assign(\n {\n skidding: 0,\n distance: 0,\n placement: 'bottom-start',\n strategy: 'absolute',\n transitionElement: this.popover,\n visibleClass: 'popover-visible',\n onAfterShow: () => {},\n onAfterHide: () => {},\n onTransitionEnd: () => {},\n },\n options\n );\n\n // this.isVisible = false;\n this.popover.hidden = true;\n this.popover.classList.remove(this.options.visibleClass);\n\n this.popover.addEventListener('transitionend', this.handleTransitionEnd);\n }\n\n private handleTransitionEnd(event: TransitionEvent) {\n const target = event.target as HTMLElement;\n\n // Make sure the transition event originates from from the correct element, and not one that has bubbled up\n if (target === this.options.transitionElement) {\n // This is called before the element is hidden so users can do things like reset scroll. It will fire once for\n // every transition property. Use `event.propertyName` to determine which property has finished transitioning.\n this.options.onTransitionEnd.call(this, event);\n\n // Make sure we only do this once, since transitionend will fire for every transition\n if (this.isVisible === false && !this.popover.hidden) {\n this.popover.hidden = true;\n this.popover.classList.remove(this.options.visibleClass);\n this.options.onAfterHide.call(this);\n }\n }\n }\n\n destroy() {\n this.popover.removeEventListener('transitionend', this.handleTransitionEnd);\n if (this.popper) {\n this.popper.destroy();\n this.popper = null;\n }\n }\n\n show() {\n this.isVisible = true;\n this.popover.hidden = false;\n this.popover.clientWidth; // force reflow\n\n raf(() => this.popover.classList.add(this.options.visibleClass));\n\n if (this.popper) {\n this.popper.destroy();\n }\n\n const safePlacement: Exclude<PopoverPlacement, 'center'> =\n this.options.placement.includes('center')\n ? 'top'\n : (this.options.placement as Exclude<PopoverPlacement, 'center'>);\n\n this.popper = createPopper(this.anchor, this.popover, {\n placement: safePlacement,\n strategy: this.options.strategy,\n modifiers: [\n {\n name: 'sameWidth',\n enabled: true,\n fn: ({ state }) => {\n state.styles.popper.minWidth = `${state.rects.reference.width}px`;\n },\n phase: 'beforeWrite',\n requires: ['computeStyles'],\n },\n {\n name: 'flip',\n options: {\n boundary: 'viewport',\n },\n },\n {\n name: 'offset',\n options: {\n padding: 5,\n offset: ({ reference }) => {\n if (this.options.placement !== 'center')\n return [this.options.skidding, this.options.distance];\n return [this.options.skidding, (reference.height + 1) * -1];\n },\n },\n },\n ],\n });\n\n this.popover.addEventListener(\n 'transitionend',\n () => this.options.onAfterShow.call(this),\n { once: true }\n );\n\n // Reposition the menu after it appears in case a modifier kicked in\n requestAnimationFrame(() => this.popper.update());\n }\n\n hide() {\n // Apply the hidden styles and wait for the transition before hiding completely\n this.isVisible = false;\n this.popover.classList.remove(this.options.visibleClass);\n }\n\n setOptions(options: PopoverOptions) {\n this.options = Object.assign(this.options, options);\n this.isVisible\n ? this.popover.classList.add(this.options.visibleClass)\n : this.popover.classList.remove(this.options.visibleClass);\n\n const safePlacement: Exclude<PopoverPlacement, 'center'> =\n this.options.placement.includes('center')\n ? 'top'\n : (this.options.placement as Exclude<PopoverPlacement, 'center'>);\n\n // Update popper options\n if (this.popper) {\n this.popper.setOptions({\n placement: safePlacement,\n strategy: this.options.strategy,\n });\n\n requestAnimationFrame(() => this.popper.update());\n }\n }\n}\n"]}
@@ -7,45 +7,43 @@ const renderLabel = ({ label, hasLabelSlot, controlId, labelId, floatLabel, plac
7
7
  if (!label && !hasLabelSlot)
8
8
  return;
9
9
  if (floatLabel) {
10
- return (h("label", { class: "placeholder-as-label", htmlFor: controlId, id: labelId },
10
+ return (h("label", { class: "form-ctrl__float-label", htmlFor: controlId, id: labelId },
11
11
  label && label,
12
12
  !label && hasLabelSlot && h("slot", { name: "label" })));
13
13
  }
14
14
  else {
15
- return (h("label", { class: { label: true, 'visually-hide': hideLabel }, htmlFor: controlId, id: labelId },
16
- h("div", { class: "label-placeholder" },
17
- placeholder && hasValue && rtl && (h("span", { class: "placeholder" },
15
+ return (h("label", { class: { 'form-ctrl__label': true, 'visually-hide': hideLabel }, htmlFor: controlId, id: labelId },
16
+ h("div", { class: "form-ctrl__label-wrap" },
17
+ placeholder && hasValue && rtl && (h("span", { class: "form-ctrl__label-placeholder" },
18
18
  placeholder,
19
19
  " / ")),
20
- h("span", { class: "labeltext" },
20
+ h("span", { class: "form-ctrl__labeltext" },
21
21
  label && label,
22
22
  !label && hasLabelSlot && h("slot", { name: "label" })),
23
- placeholder && hasValue && !rtl && (h("span", { class: "placeholder" },
23
+ placeholder && hasValue && !rtl && (h("span", { class: "form-ctrl__label-placeholder" },
24
24
  " / ",
25
25
  placeholder))),
26
- showCharCount && (h("span", { class: "charcount" }, maxlength
26
+ showCharCount && (h("span", { class: "form-ctrl__label-charcount" }, maxlength
27
27
  ? maxlength - charCount + ' left'
28
28
  : charCount + ' characters'))));
29
29
  }
30
30
  };
31
31
  const FormControlWrap = (props, children) => {
32
32
  const { rtl, floatLabel, label, moreId, type, hasHelperSlot, showInlineError, errorMessage, } = props;
33
- const isLegacy = !document.head.attachShadow;
34
33
  return [
35
34
  !floatLabel ? renderLabel(Object.assign({}, props)) : '',
36
35
  h("div", { class: {
37
36
  'has-label': label !== null && !floatLabel,
38
37
  'has-float-label': label !== null && floatLabel,
39
38
  rtl,
40
- legacy: isLegacy,
41
- input: true,
42
- textarea: type === 'textarea',
39
+ 'form-ctrl__input': true,
40
+ 'form-ctrl__textarea': type === 'textarea',
43
41
  } },
44
42
  floatLabel && renderLabel(Object.assign(Object.assign({}, props), { rtl })),
45
43
  children),
46
- showInlineError || hasHelperSlot ? (h("div", { class: "more", id: moreId },
47
- !!showInlineError ? h("div", { class: "error" }, errorMessage) : '',
48
- h("div", { class: "helper" },
44
+ showInlineError || hasHelperSlot ? (h("div", { class: "form-ctrl__more", id: moreId },
45
+ !!showInlineError ? (h("div", { class: "form-ctrl__error" }, errorMessage)) : (''),
46
+ h("div", { class: "form-ctrl__helper" },
49
47
  h("slot", { name: "helper" })))) : (''),
50
48
  ];
51
49
  };
@@ -54,20 +52,20 @@ const FormControl = (props, children) => {
54
52
  const clickThrough = () => {
55
53
  control.setFocus();
56
54
  };
57
- return (h("div", { class: "native-input-wrap", ref: (el) => {
55
+ return (h("div", { class: "form-ctrl__input-wrap", ref: (el) => {
58
56
  if (ref)
59
57
  ref(el);
60
58
  } },
61
- h("span", { class: "start" },
59
+ h("span", { class: "form-ctrl__slot-start" },
62
60
  h("slot", { name: "start" }),
63
61
  startSlot),
64
62
  children,
65
- clearControl && !readonly && !disabled && (h("button", { type: "button", class: "icon input-clear-icon", tabindex: "-1", onTouchStart: onClearText, onMouseDown: onClearText },
63
+ clearControl && !readonly && !disabled && (h("button", { type: "button", class: "icon form-ctrl__clear-btn", tabindex: "-1", onTouchStart: onClearText, onMouseDown: onClearText },
66
64
  h("nano-icon", { name: "light/times" }))),
67
- h("span", { class: "value-end", onClick: clickThrough },
65
+ h("span", { class: "form-ctrl__slot-value-end", onClick: clickThrough },
68
66
  h("slot", { name: "value-end" }),
69
67
  endValueSlot),
70
- h("span", { class: "end" },
68
+ h("span", { class: "form-ctrl__slot-end" },
71
69
  h("slot", { name: "end" }),
72
70
  endSlot)));
73
71
  };