@duetds/components 8.5.5 → 8.6.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 (212) hide show
  1. package/hydrate/index.js +289 -113
  2. package/lib/cjs/duet-alert.cjs.entry.js +1 -1
  3. package/lib/cjs/duet-banner.cjs.entry.js +1 -1
  4. package/lib/cjs/duet-callout.cjs.entry.js +1 -1
  5. package/lib/cjs/duet-chip.cjs.entry.js +9 -2
  6. package/lib/cjs/duet-choice_2.cjs.entry.js +1 -1
  7. package/lib/cjs/duet-collapsible.cjs.entry.js +1 -1
  8. package/lib/cjs/duet-combobox.cjs.entry.js +260 -127
  9. package/lib/cjs/duet-date-picker.cjs.entry.js +1 -1
  10. package/lib/cjs/duet-fieldset.cjs.entry.js +1 -1
  11. package/lib/cjs/duet-hero.cjs.entry.js +1 -1
  12. package/lib/cjs/duet-input_2.cjs.entry.js +39 -3
  13. package/lib/cjs/duet-modal.cjs.entry.js +1 -1
  14. package/lib/cjs/duet-multiselect.cjs.entry.js +1 -1
  15. package/lib/cjs/duet-number-input.cjs.entry.js +1 -1
  16. package/lib/cjs/duet-promo-card.cjs.entry.js +1 -1
  17. package/lib/cjs/duet-radio_2.cjs.entry.js +1 -1
  18. package/lib/cjs/duet-scrollable_3.cjs.entry.js +1 -1
  19. package/lib/cjs/duet-select.cjs.entry.js +1 -1
  20. package/lib/cjs/duet-slideout-panel.cjs.entry.js +1 -1
  21. package/lib/cjs/duet-slideout.cjs.entry.js +1 -1
  22. package/lib/cjs/duet-textarea.cjs.entry.js +1 -1
  23. package/lib/cjs/duet.cjs.js +1 -1
  24. package/lib/cjs/loader.cjs.js +1 -1
  25. package/lib/cjs/{slot-utils-f5073417.js → slot-utils-03a40c78.js} +3 -1
  26. package/lib/collection/components/duet-chip/duet-chip.css +7 -0
  27. package/lib/collection/components/duet-chip/duet-chip.js +29 -2
  28. package/lib/collection/components/duet-combobox/duet-combobox-select-single.js +2 -2
  29. package/lib/collection/components/duet-combobox/duet-combobox.css +10 -2
  30. package/lib/collection/components/duet-combobox/duet-combobox.e2e.js +81 -51
  31. package/lib/collection/components/duet-combobox/duet-combobox.js +321 -142
  32. package/lib/collection/components/duet-input/duet-input.css +29 -0
  33. package/lib/collection/components/duet-input/duet-input.js +159 -3
  34. package/lib/collection/utils/slot-utils.js +3 -1
  35. package/lib/dist-custom-elements/duet-action-button.js +1 -1
  36. package/lib/dist-custom-elements/duet-alert.js +1 -1
  37. package/lib/dist-custom-elements/duet-banner.js +1 -1
  38. package/lib/dist-custom-elements/duet-breadcrumb.js +1 -1
  39. package/lib/dist-custom-elements/duet-callout.js +1 -1
  40. package/lib/dist-custom-elements/duet-card.js +1 -1
  41. package/lib/dist-custom-elements/duet-chip.js +1 -273
  42. package/lib/dist-custom-elements/duet-choice-group.js +5 -5
  43. package/lib/dist-custom-elements/duet-choice.js +2 -2
  44. package/lib/dist-custom-elements/duet-collapsible.js +2 -2
  45. package/lib/dist-custom-elements/duet-combobox.js +326 -132
  46. package/lib/dist-custom-elements/duet-cookie-consent.js +1 -1
  47. package/lib/dist-custom-elements/duet-date-picker.js +6 -6
  48. package/lib/dist-custom-elements/duet-editable-table.js +2 -2
  49. package/lib/dist-custom-elements/duet-fieldset.js +1 -1
  50. package/lib/dist-custom-elements/duet-footer.js +1 -1
  51. package/lib/dist-custom-elements/duet-header.js +1 -1
  52. package/lib/dist-custom-elements/duet-hero.js +1 -1
  53. package/lib/dist-custom-elements/duet-input.js +1 -1
  54. package/lib/dist-custom-elements/duet-menu-bar-dropdown-link.js +1 -1
  55. package/lib/dist-custom-elements/duet-menu-bar-dropdown.js +1 -1
  56. package/lib/dist-custom-elements/duet-modal.js +2 -2
  57. package/lib/dist-custom-elements/duet-multiselect.js +5 -5
  58. package/lib/dist-custom-elements/duet-notification-drawer.js +1 -1
  59. package/lib/dist-custom-elements/duet-notification.js +1 -1
  60. package/lib/dist-custom-elements/duet-number-input.js +6 -6
  61. package/lib/dist-custom-elements/duet-pagination.js +6 -6
  62. package/lib/dist-custom-elements/duet-popup-menu.js +1 -1
  63. package/lib/dist-custom-elements/duet-promo-card.js +1 -1
  64. package/lib/dist-custom-elements/duet-radio-group.js +5 -5
  65. package/lib/dist-custom-elements/duet-range-slider.js +1 -1
  66. package/lib/dist-custom-elements/duet-range-stepper.js +2 -2
  67. package/lib/dist-custom-elements/duet-scrollable.js +1 -1
  68. package/lib/dist-custom-elements/duet-select.js +1 -1
  69. package/lib/dist-custom-elements/duet-show-more.js +1 -1
  70. package/lib/dist-custom-elements/duet-slideout-panel.js +1 -1
  71. package/lib/dist-custom-elements/duet-slideout.js +2 -2
  72. package/lib/dist-custom-elements/duet-step.js +1 -1
  73. package/lib/dist-custom-elements/duet-submenu-bar-dropdown-link.js +1 -1
  74. package/lib/dist-custom-elements/duet-submenu-bar-dropdown.js +1 -1
  75. package/lib/dist-custom-elements/duet-submenu-bar-item.js +1 -1
  76. package/lib/dist-custom-elements/duet-submenu-bar-link.js +1 -1
  77. package/lib/dist-custom-elements/duet-tab-group.js +6 -6
  78. package/lib/dist-custom-elements/duet-tab.js +1 -1
  79. package/lib/dist-custom-elements/duet-textarea.js +4 -4
  80. package/lib/dist-custom-elements/duet-toggle.js +1 -1
  81. package/lib/dist-custom-elements/duet-toolbar-dropdown-link.js +1 -1
  82. package/lib/dist-custom-elements/duet-toolbar-dropdown.js +1 -1
  83. package/lib/dist-custom-elements/duet-tooltip-button.js +1 -1
  84. package/lib/dist-custom-elements/duet-tooltip-popup.js +1 -1
  85. package/lib/dist-custom-elements/duet-tooltip.js +1 -1
  86. package/lib/dist-custom-elements/duet-tray.js +1 -1
  87. package/lib/dist-custom-elements/duet-upload-item.js +1 -1
  88. package/lib/dist-custom-elements/duet-upload.js +5 -5
  89. package/lib/dist-custom-elements/{p-cff358b0.js → p-014c1177.js} +49 -8
  90. package/lib/dist-custom-elements/{p-c3d02eb2.js → p-03152b20.js} +1 -1
  91. package/lib/dist-custom-elements/{p-d87f6dd5.js → p-06e608ae.js} +3 -1
  92. package/lib/dist-custom-elements/{p-9cdbc360.js → p-0cee8a12.js} +1 -1
  93. package/lib/dist-custom-elements/{p-12a0876b.js → p-24693e9a.js} +1 -1
  94. package/lib/dist-custom-elements/{p-9a833e56.js → p-28ec3461.js} +1 -1
  95. package/lib/dist-custom-elements/{p-d191ba9e.js → p-45fd4d84.js} +1 -1
  96. package/lib/dist-custom-elements/{p-89d58b60.js → p-6d366100.js} +3 -3
  97. package/lib/dist-custom-elements/p-755dd68f.js +285 -0
  98. package/lib/dist-custom-elements/{p-e44c0eff.js → p-785686e3.js} +1 -1
  99. package/lib/dist-custom-elements/{p-e00d43f3.js → p-92a16064.js} +1 -1
  100. package/lib/dist-custom-elements/{p-f9f9e33d.js → p-a02e62f3.js} +3 -3
  101. package/lib/dist-custom-elements/{p-0d5c0a22.js → p-c8415e2f.js} +1 -1
  102. package/lib/dist-custom-elements/{p-d848b48d.js → p-e702eb52.js} +4 -4
  103. package/lib/duet/duet.esm.js +1 -1
  104. package/lib/duet/{p-88a46585.system.entry.js → p-061f4be0.system.entry.js} +1 -1
  105. package/lib/duet/p-06e608ae.js +4 -0
  106. package/lib/duet/{p-8ca813cb.system.entry.js → p-0778ccde.system.entry.js} +1 -1
  107. package/lib/duet/p-07ac7f3e.system.entry.js +4 -0
  108. package/lib/duet/p-15e24bf0.entry.js +4 -0
  109. package/lib/duet/{p-0dac34a4.system.entry.js → p-1ef0e5ca.system.entry.js} +1 -1
  110. package/lib/duet/{p-c9781f22.entry.js → p-2084a65f.entry.js} +1 -1
  111. package/lib/duet/{p-fd0bb0bf.entry.js → p-23cecf9f.entry.js} +1 -1
  112. package/lib/duet/{p-09e4195f.system.entry.js → p-257800b7.system.entry.js} +1 -1
  113. package/lib/duet/{p-1afd901a.entry.js → p-29491f9f.entry.js} +1 -1
  114. package/lib/duet/{p-3b5ff822.entry.js → p-3302d75d.entry.js} +1 -1
  115. package/lib/duet/{p-7629cd0a.entry.js → p-40375e30.entry.js} +1 -1
  116. package/lib/duet/{p-ba4445cf.system.entry.js → p-45bb3cd0.system.entry.js} +1 -1
  117. package/lib/duet/p-4781cd58.entry.js +4 -0
  118. package/lib/duet/p-4cb5943c.entry.js +4 -0
  119. package/lib/duet/{p-b2f2992f.system.entry.js → p-4de910bd.system.entry.js} +1 -1
  120. package/lib/duet/p-6151635f.system.js +1 -1
  121. package/lib/duet/{p-d349dd93.entry.js → p-67382632.entry.js} +1 -1
  122. package/lib/duet/{p-699a98b4.entry.js → p-76e54ff5.entry.js} +1 -1
  123. package/lib/duet/{p-4d2ef0e2.entry.js → p-7a161455.entry.js} +1 -1
  124. package/lib/duet/{p-3d38079c.entry.js → p-7ca15c93.entry.js} +1 -1
  125. package/lib/duet/{p-bb09fff0.system.entry.js → p-7de614df.system.entry.js} +1 -1
  126. package/lib/duet/{p-480f37b6.entry.js → p-83238fe7.entry.js} +1 -1
  127. package/lib/duet/{p-7c1db591.system.entry.js → p-8a4ba903.system.entry.js} +1 -1
  128. package/lib/duet/{p-4f32a7ee.entry.js → p-8ba91848.entry.js} +1 -1
  129. package/lib/duet/{p-708359ec.system.entry.js → p-999fff8d.system.entry.js} +1 -1
  130. package/lib/duet/{p-9d91a1dd.system.entry.js → p-9e75e5d8.system.entry.js} +1 -1
  131. package/lib/duet/{p-343d037e.entry.js → p-a3afb1af.entry.js} +1 -1
  132. package/lib/duet/{p-2ca6a8a0.system.entry.js → p-a3e90064.system.entry.js} +1 -1
  133. package/lib/duet/{p-892a5644.system.entry.js → p-aba91113.system.entry.js} +1 -1
  134. package/lib/duet/p-ae21ad57.system.js +4 -0
  135. package/lib/duet/{p-ce05fe6d.system.entry.js → p-b2fc4b72.system.entry.js} +1 -1
  136. package/lib/duet/{p-84778369.entry.js → p-b5595969.entry.js} +1 -1
  137. package/lib/duet/{p-bf51f8a5.system.entry.js → p-c68602c9.system.entry.js} +1 -1
  138. package/lib/duet/{p-f6530332.system.entry.js → p-d5721f0d.system.entry.js} +1 -1
  139. package/lib/duet/{p-c00fe4ed.entry.js → p-dc133655.entry.js} +1 -1
  140. package/lib/duet/p-de5054b6.system.entry.js +4 -0
  141. package/lib/duet/{p-61feb701.entry.js → p-df345202.entry.js} +1 -1
  142. package/lib/duet/{p-2628a322.entry.js → p-e0907f29.entry.js} +1 -1
  143. package/lib/duet/p-e333b9fc.system.entry.js +4 -0
  144. package/lib/duet/p-e411627f.entry.js +4 -0
  145. package/lib/duet/{p-da51c71f.system.entry.js → p-eafed149.system.entry.js} +1 -1
  146. package/lib/duet/p-f2279e1e.entry.js +4 -0
  147. package/lib/duet/{p-b1ab1664.system.entry.js → p-fa311641.system.entry.js} +1 -1
  148. package/lib/duet/{p-320318de.system.entry.js → p-fa72c79b.system.entry.js} +1 -1
  149. package/lib/esm/duet-alert.entry.js +1 -1
  150. package/lib/esm/duet-banner.entry.js +1 -1
  151. package/lib/esm/duet-callout.entry.js +1 -1
  152. package/lib/esm/duet-chip.entry.js +9 -2
  153. package/lib/esm/duet-choice_2.entry.js +1 -1
  154. package/lib/esm/duet-collapsible.entry.js +1 -1
  155. package/lib/esm/duet-combobox.entry.js +261 -128
  156. package/lib/esm/duet-date-picker.entry.js +1 -1
  157. package/lib/esm/duet-fieldset.entry.js +1 -1
  158. package/lib/esm/duet-hero.entry.js +1 -1
  159. package/lib/esm/duet-input_2.entry.js +39 -3
  160. package/lib/esm/duet-modal.entry.js +1 -1
  161. package/lib/esm/duet-multiselect.entry.js +1 -1
  162. package/lib/esm/duet-number-input.entry.js +1 -1
  163. package/lib/esm/duet-promo-card.entry.js +1 -1
  164. package/lib/esm/duet-radio_2.entry.js +1 -1
  165. package/lib/esm/duet-scrollable_3.entry.js +1 -1
  166. package/lib/esm/duet-select.entry.js +1 -1
  167. package/lib/esm/duet-slideout-panel.entry.js +1 -1
  168. package/lib/esm/duet-slideout.entry.js +1 -1
  169. package/lib/esm/duet-textarea.entry.js +1 -1
  170. package/lib/esm/duet.js +1 -1
  171. package/lib/esm/loader.js +1 -1
  172. package/lib/esm/{slot-utils-1115a819.js → slot-utils-b50aaef5.js} +3 -1
  173. package/lib/esm-es5/duet-alert.entry.js +1 -1
  174. package/lib/esm-es5/duet-banner.entry.js +1 -1
  175. package/lib/esm-es5/duet-callout.entry.js +1 -1
  176. package/lib/esm-es5/duet-chip.entry.js +1 -1
  177. package/lib/esm-es5/duet-choice_2.entry.js +1 -1
  178. package/lib/esm-es5/duet-collapsible.entry.js +1 -1
  179. package/lib/esm-es5/duet-combobox.entry.js +2 -2
  180. package/lib/esm-es5/duet-date-picker.entry.js +1 -1
  181. package/lib/esm-es5/duet-fieldset.entry.js +1 -1
  182. package/lib/esm-es5/duet-hero.entry.js +1 -1
  183. package/lib/esm-es5/duet-input_2.entry.js +2 -2
  184. package/lib/esm-es5/duet-modal.entry.js +1 -1
  185. package/lib/esm-es5/duet-multiselect.entry.js +1 -1
  186. package/lib/esm-es5/duet-number-input.entry.js +2 -2
  187. package/lib/esm-es5/duet-promo-card.entry.js +2 -2
  188. package/lib/esm-es5/duet-radio_2.entry.js +1 -1
  189. package/lib/esm-es5/duet-scrollable_3.entry.js +1 -1
  190. package/lib/esm-es5/duet-select.entry.js +1 -1
  191. package/lib/esm-es5/duet-slideout-panel.entry.js +1 -1
  192. package/lib/esm-es5/duet-slideout.entry.js +1 -1
  193. package/lib/esm-es5/duet-textarea.entry.js +1 -1
  194. package/lib/esm-es5/duet.js +1 -1
  195. package/lib/esm-es5/loader.js +1 -1
  196. package/lib/esm-es5/slot-utils-b50aaef5.js +4 -0
  197. package/lib/types/components/duet-chip/duet-chip.d.ts +4 -0
  198. package/lib/types/components/duet-combobox/duet-combobox.d.ts +49 -35
  199. package/lib/types/components/duet-input/duet-input.d.ts +30 -0
  200. package/lib/types/components.d.ts +44 -21
  201. package/package.json +2 -2
  202. package/lib/duet/p-7cf03aa8.system.js +0 -4
  203. package/lib/duet/p-92e1181c.entry.js +0 -4
  204. package/lib/duet/p-985c0c67.system.entry.js +0 -4
  205. package/lib/duet/p-9d27bc65.entry.js +0 -4
  206. package/lib/duet/p-afe29a3e.entry.js +0 -4
  207. package/lib/duet/p-cc4a8964.entry.js +0 -4
  208. package/lib/duet/p-d50ad3ed.entry.js +0 -4
  209. package/lib/duet/p-d87f6dd5.js +0 -4
  210. package/lib/duet/p-f1b01db9.system.entry.js +0 -4
  211. package/lib/duet/p-fa21a3b6.system.entry.js +0 -4
  212. package/lib/esm-es5/slot-utils-1115a819.js +0 -4
package/hydrate/index.js CHANGED
@@ -8525,7 +8525,9 @@ const getElementsFromDefaultSlot = (element) => {
8525
8525
  return childElements.filter(el => !el.getAttribute("slot"));
8526
8526
  };
8527
8527
  const hasSlot = (element, slotName) => {
8528
- return getElementsFromNamedSlot(element, slotName).length > 0;
8528
+ return slotName
8529
+ ? getElementsFromNamedSlot(element, slotName).length > 0
8530
+ : getElementsFromDefaultSlot(element).length > 0;
8529
8531
  };
8530
8532
  /**
8531
8533
  * Check if the slotted element matches the given selector.
@@ -9724,12 +9726,13 @@ class DuetCheckmark {
9724
9726
  }; }
9725
9727
  }
9726
9728
 
9727
- const duetChipCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-chip,*.sc-duet-chip::after,*.sc-duet-chip::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-chip-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-right:8px !important;margin-bottom:12px !important;position:relative;display:inline-block;width:auto;max-width:100%;vertical-align:bottom;-webkit-tap-highlight-color:transparent}/*!@:host:last-child, :host:last-of-type*/.sc-duet-chip-h:last-child,.sc-duet-chip-h:last-of-type{margin-right:0 !important}/*!@.duet-chip-container*/.duet-chip-container.sc-duet-chip{-webkit-user-select:none;user-select:none;position:relative;z-index:100;display:block;width:100%;padding:1px;hyphens:none;line-height:1.1;color:rgb(0, 41, 77) !important;text-align:center;cursor:pointer;background:rgb(255, 255, 255);border-color:rgb(207, 210, 212);border-style:solid;border-width:1px;border-radius:8px;transition:background-color 300ms ease, color 300ms ease, border-color 300ms ease}/*!@.duet-chip-container.duet-p-0*/.duet-chip-container.duet-p-0.sc-duet-chip{padding:0 !important}/*!@.duet-chip-container.duet-m-0*/.duet-chip-container.duet-m-0.sc-duet-chip{margin:0 !important}/*!@.duet-chip-container.duet-theme-turva*/.duet-chip-container.duet-theme-turva.sc-duet-chip{color:rgb(23, 28, 58) !important;background:rgb(255, 255, 255);border-color:rgb(207, 207, 209)}/*!@.duet-chip-container.duet-theme-turva:hover*/.duet-chip-container.duet-theme-turva.sc-duet-chip:hover{border-color:rgb(198, 12, 48)}/*!@.duet-chip-container:hover*/.duet-chip-container.sc-duet-chip:hover{padding:0 !important;border-color:rgb(0, 119, 179);border-width:2px}/*!@.duet-chip-container.duet-chip-disabled*/.duet-chip-container.duet-chip-disabled.sc-duet-chip{color:rgb(101, 119, 135) !important;cursor:default;background:rgb(245, 248, 250) !important;border-color:rgb(245, 248, 250) !important}/*!@.duet-chip-container.duet-chip-disabled.duet-theme-turva*/.duet-chip-container.duet-chip-disabled.duet-theme-turva.sc-duet-chip{color:rgb(116, 116, 117) !important;background:rgb(245, 245, 247);border-color:rgb(245, 245, 247)}/*!@.duet-chip-container.duet-chip-disabled:hover*/.duet-chip-container.duet-chip-disabled.sc-duet-chip:hover{background:rgb(245, 248, 250);border-color:rgb(245, 248, 250)}/*!@.duet-chip-container.duet-chip-disabled:hover.duet-theme-turva*/.duet-chip-container.duet-chip-disabled.sc-duet-chip:hover.duet-theme-turva{background:rgb(245, 245, 247);border-color:rgb(245, 245, 247)}/*!@.duet-chip-container.duet-chip-disabled button,\n.duet-chip-container.duet-chip-disabled label*/.duet-chip-container.duet-chip-disabled.sc-duet-chip button.sc-duet-chip,.duet-chip-container.duet-chip-disabled.sc-duet-chip label.sc-duet-chip{cursor:default}/*!@.duet-chip-container button,\n.duet-chip-container label*/.duet-chip-container.sc-duet-chip button.sc-duet-chip,.duet-chip-container.sc-duet-chip label.sc-duet-chip{display:flex;align-items:center;width:100%;height:100%;padding:8px 14px;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:0.875rem;font-weight:600;line-height:1rem;color:rgb(0, 41, 77) !important;cursor:pointer}/*!@.duet-chip-container button:focus,\n.duet-chip-container label:focus*/.duet-chip-container.sc-duet-chip button.sc-duet-chip:focus,.duet-chip-container.sc-duet-chip label.sc-duet-chip:focus{outline:none}/*!@.duet-chip-container .duet-chip-icon-container*/.duet-chip-container.sc-duet-chip .duet-chip-icon-container.sc-duet-chip{display:flex;align-items:center;height:16px;padding:0;transition:padding 300ms ease}/*!@.duet-chip-container.duet-chip-has-icon .duet-chip-icon-container*/.duet-chip-container.duet-chip-has-icon.sc-duet-chip .duet-chip-icon-container.sc-duet-chip{width:24px;height:16px;padding-right:10px}/*!@.duet-chip-container.duet-chip-has-icon.duet-chip-filter-checked .duet-chip-icon-container, .duet-chip-container.duet-chip-has-icon.duet-chip-radio-checked .duet-chip-icon-container*/.duet-chip-container.duet-chip-has-icon.duet-chip-filter-checked.sc-duet-chip .duet-chip-icon-container.sc-duet-chip,.duet-chip-container.duet-chip-has-icon.duet-chip-radio-checked.sc-duet-chip .duet-chip-icon-container.sc-duet-chip{padding-right:11px;padding-left:3px}/*!@.duet-chip-container.duet-chip-has-icon button,\n.duet-chip-container.duet-chip-has-icon label*/.duet-chip-container.duet-chip-has-icon.sc-duet-chip button.sc-duet-chip,.duet-chip-container.duet-chip-has-icon.sc-duet-chip label.sc-duet-chip{padding-left:10px}/*!@.duet-chip-container.duet-chip-has-popup button,\n.duet-chip-container.duet-chip-has-popup label*/.duet-chip-container.duet-chip-has-popup.sc-duet-chip button.sc-duet-chip,.duet-chip-container.duet-chip-has-popup.sc-duet-chip label.sc-duet-chip{padding-right:8px}/*!@.duet-chip-container duet-icon:not(.check-mark)*/.duet-chip-container.sc-duet-chip duet-icon.sc-duet-chip:not(.check-mark){width:auto;visibility:visible;transition:width 300ms ease, transform 300ms ease;transform:scaleX(1)}/*!@.duet-chip-container duet-icon.check-mark*/.duet-chip-container.sc-duet-chip duet-icon.check-mark.sc-duet-chip{width:0;overflow:hidden;visibility:hidden;transition:width 300ms ease, transform 300ms ease;transform:scaleX(0)}/*!@.duet-chip-container.duet-chip-filter-checked, .duet-chip-container.duet-chip-radio-checked*/.duet-chip-container.duet-chip-filter-checked.sc-duet-chip,.duet-chip-container.duet-chip-radio-checked.sc-duet-chip{padding:0 !important;background:rgb(230, 242, 248);border-color:rgb(0, 119, 179);border-width:2px}/*!@.duet-chip-container.duet-chip-filter-checked:hover, .duet-chip-container.duet-chip-radio-checked:hover*/.duet-chip-container.duet-chip-filter-checked.sc-duet-chip:hover,.duet-chip-container.duet-chip-radio-checked.sc-duet-chip:hover{background:rgb(205, 229, 241)}/*!@.duet-chip-container.duet-chip-filter-checked.chip-has-icon button,\n.duet-chip-container.duet-chip-filter-checked.chip-has-icon label, .duet-chip-container.duet-chip-radio-checked.chip-has-icon button,\n.duet-chip-container.duet-chip-radio-checked.chip-has-icon label*/.duet-chip-container.duet-chip-filter-checked.chip-has-icon.sc-duet-chip button.sc-duet-chip,.duet-chip-container.duet-chip-filter-checked.chip-has-icon.sc-duet-chip label.sc-duet-chip,.duet-chip-container.duet-chip-radio-checked.chip-has-icon.sc-duet-chip button.sc-duet-chip,.duet-chip-container.duet-chip-radio-checked.chip-has-icon.sc-duet-chip label.sc-duet-chip{padding-left:10px}/*!@.duet-chip-container.duet-chip-filter-checked .duet-chip-icon-container, .duet-chip-container.duet-chip-radio-checked .duet-chip-icon-container*/.duet-chip-container.duet-chip-filter-checked.sc-duet-chip .duet-chip-icon-container.sc-duet-chip,.duet-chip-container.duet-chip-radio-checked.sc-duet-chip .duet-chip-icon-container.sc-duet-chip{padding-right:10px}/*!@.duet-chip-container.duet-chip-filter-checked .duet-chip-icon-container duet-icon:not(.check-mark), .duet-chip-container.duet-chip-radio-checked .duet-chip-icon-container duet-icon:not(.check-mark)*/.duet-chip-container.duet-chip-filter-checked.sc-duet-chip .duet-chip-icon-container.sc-duet-chip duet-icon.sc-duet-chip:not(.check-mark),.duet-chip-container.duet-chip-radio-checked.sc-duet-chip .duet-chip-icon-container.sc-duet-chip duet-icon.sc-duet-chip:not(.check-mark){width:0;overflow:hidden;visibility:hidden;transition:width 300ms ease, transform 300ms ease;transform:scaleX(0)}/*!@.duet-chip-container.duet-chip-filter-checked .duet-chip-icon-container duet-icon.check-mark, .duet-chip-container.duet-chip-radio-checked .duet-chip-icon-container duet-icon.check-mark*/.duet-chip-container.duet-chip-filter-checked.sc-duet-chip .duet-chip-icon-container.sc-duet-chip duet-icon.check-mark.sc-duet-chip,.duet-chip-container.duet-chip-radio-checked.sc-duet-chip .duet-chip-icon-container.sc-duet-chip duet-icon.check-mark.sc-duet-chip{width:auto;visibility:visible;transition:width 300ms ease, transform 300ms ease;transform:scaleX(1)}/*!@.duet-chip-container.duet-chip-filter-checked.duet-theme-turva, .duet-chip-container.duet-chip-radio-checked.duet-theme-turva*/.duet-chip-container.duet-chip-filter-checked.duet-theme-turva.sc-duet-chip,.duet-chip-container.duet-chip-radio-checked.duet-theme-turva.sc-duet-chip{background:rgb(245, 245, 247);border-color:rgb(198, 12, 48)}/*!@.duet-chip-container.duet-chip-filter-checked.duet-theme-turva:hover, .duet-chip-container.duet-chip-radio-checked.duet-theme-turva:hover*/.duet-chip-container.duet-chip-filter-checked.duet-theme-turva.sc-duet-chip:hover,.duet-chip-container.duet-chip-radio-checked.duet-theme-turva.sc-duet-chip:hover{background:rgb(228, 228, 230)}/*!@.duet-chip-container .duet-chip-popup-disclosure*/.duet-chip-container.sc-duet-chip .duet-chip-popup-disclosure.sc-duet-chip{padding-right:4.5px;padding-left:12.5px}/*!@.duet-chip-container .duet-chip-popup-disclosure duet-icon*/.duet-chip-container.sc-duet-chip .duet-chip-popup-disclosure.sc-duet-chip duet-icon.sc-duet-chip{transition:transform 300ms ease}/*!@.duet-chip-container.duet-chip-filter-popup-open*/.duet-chip-container.duet-chip-filter-popup-open.sc-duet-chip{background:rgb(243, 249, 252);border-color:rgb(243, 249, 252)}/*!@.duet-chip-container.duet-chip-filter-popup-open.duet-theme-turva*/.duet-chip-container.duet-chip-filter-popup-open.duet-theme-turva.sc-duet-chip{background:rgb(245, 245, 247);border-color:rgb(245, 245, 247)}/*!@.duet-chip-container.duet-chip-filter-popup-open .duet-chip-popup-disclosure duet-icon*/.duet-chip-container.duet-chip-filter-popup-open.sc-duet-chip .duet-chip-popup-disclosure.sc-duet-chip duet-icon.sc-duet-chip{transform:rotate(180deg)}/*!@.duet-chip-container.duet-chip-input*/.duet-chip-container.duet-chip-input.sc-duet-chip{display:flex;align-items:center;padding-right:0 !important}/*!@.duet-chip-container.duet-chip-input .duet-chip-input-button*/.duet-chip-container.duet-chip-input.sc-duet-chip .duet-chip-input-button.sc-duet-chip{flex-grow:1}/*!@.duet-chip-container.duet-chip-input .duet-chip-remove-button*/.duet-chip-container.duet-chip-input.sc-duet-chip .duet-chip-remove-button.sc-duet-chip{width:26px;padding:8px 16px 8px 0;margin:-8px 0}/*!@.duet-chip-container.large button,\n.duet-chip-container.large label*/.duet-chip-container.large.sc-duet-chip button.sc-duet-chip,.duet-chip-container.large.sc-duet-chip label.sc-duet-chip{padding:15px 22px}/*!@:host(.user-is-tabbing) .duet-chip-focus*/.user-is-tabbing.sc-duet-chip-h .duet-chip-focus.sc-duet-chip{box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}/*!@:host(.user-is-tabbing) .duet-chip-focus.duet-theme-turva*/.user-is-tabbing.sc-duet-chip-h .duet-chip-focus.duet-theme-turva.sc-duet-chip{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}/*!@.duet-chip-container input*/.duet-chip-container.sc-duet-chip input.sc-duet-chip{position:absolute !important;top:0;left:0;z-index:-1;width:100%;height:100%;cursor:pointer;opacity:0}";
9729
+ const duetChipCss = "/*!@*,\n*::after,\n*::before*/*.sc-duet-chip,*.sc-duet-chip::after,*.sc-duet-chip::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}/*!@:host*/.sc-duet-chip-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-right:8px !important;margin-bottom:12px !important;position:relative;display:inline-block;width:auto;max-width:100%;vertical-align:bottom;-webkit-tap-highlight-color:transparent}/*!@:host:last-child, :host:last-of-type*/.sc-duet-chip-h:last-child,.sc-duet-chip-h:last-of-type{margin-right:0 !important}/*!@:host(.input)*/.input.sc-duet-chip-h{margin-top:6px !important;margin-right:0 !important;margin-bottom:6px !important;margin-left:4px !important}/*!@.duet-chip-container*/.duet-chip-container.sc-duet-chip{-webkit-user-select:none;user-select:none;position:relative;z-index:100;display:block;width:100%;padding:1px;hyphens:none;line-height:1.1;color:rgb(0, 41, 77) !important;text-align:center;cursor:pointer;background:rgb(255, 255, 255);border-color:rgb(207, 210, 212);border-style:solid;border-width:1px;border-radius:8px;transition:background-color 300ms ease, color 300ms ease, border-color 300ms ease}/*!@.duet-chip-container.duet-p-0*/.duet-chip-container.duet-p-0.sc-duet-chip{padding:0 !important}/*!@.duet-chip-container.duet-m-0*/.duet-chip-container.duet-m-0.sc-duet-chip{margin:0 !important}/*!@.duet-chip-container.duet-theme-turva*/.duet-chip-container.duet-theme-turva.sc-duet-chip{color:rgb(23, 28, 58) !important;background:rgb(255, 255, 255);border-color:rgb(207, 207, 209)}/*!@.duet-chip-container.duet-theme-turva:hover*/.duet-chip-container.duet-theme-turva.sc-duet-chip:hover{border-color:rgb(198, 12, 48)}/*!@.duet-chip-container:hover*/.duet-chip-container.sc-duet-chip:hover{padding:0 !important;border-color:rgb(0, 119, 179);border-width:2px}/*!@.duet-chip-container.duet-chip-disabled*/.duet-chip-container.duet-chip-disabled.sc-duet-chip{color:rgb(101, 119, 135) !important;cursor:default;background:rgb(245, 248, 250) !important;border-color:rgb(245, 248, 250) !important}/*!@.duet-chip-container.duet-chip-disabled.duet-theme-turva*/.duet-chip-container.duet-chip-disabled.duet-theme-turva.sc-duet-chip{color:rgb(116, 116, 117) !important;background:rgb(245, 245, 247);border-color:rgb(245, 245, 247)}/*!@.duet-chip-container.duet-chip-disabled:hover*/.duet-chip-container.duet-chip-disabled.sc-duet-chip:hover{background:rgb(245, 248, 250);border-color:rgb(245, 248, 250)}/*!@.duet-chip-container.duet-chip-disabled:hover.duet-theme-turva*/.duet-chip-container.duet-chip-disabled.sc-duet-chip:hover.duet-theme-turva{background:rgb(245, 245, 247);border-color:rgb(245, 245, 247)}/*!@.duet-chip-container.duet-chip-disabled button,\n.duet-chip-container.duet-chip-disabled label*/.duet-chip-container.duet-chip-disabled.sc-duet-chip button.sc-duet-chip,.duet-chip-container.duet-chip-disabled.sc-duet-chip label.sc-duet-chip{cursor:default}/*!@.duet-chip-container button,\n.duet-chip-container label*/.duet-chip-container.sc-duet-chip button.sc-duet-chip,.duet-chip-container.sc-duet-chip label.sc-duet-chip{display:flex;align-items:center;width:100%;height:100%;padding:8px 14px;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:0.875rem;font-weight:600;line-height:1rem;color:rgb(0, 41, 77) !important;cursor:pointer}/*!@.duet-chip-container button:focus,\n.duet-chip-container label:focus*/.duet-chip-container.sc-duet-chip button.sc-duet-chip:focus,.duet-chip-container.sc-duet-chip label.sc-duet-chip:focus{outline:none}/*!@.duet-chip-container .duet-chip-icon-container*/.duet-chip-container.sc-duet-chip .duet-chip-icon-container.sc-duet-chip{display:flex;align-items:center;height:16px;padding:0;transition:padding 300ms ease}/*!@.duet-chip-container.duet-chip-has-icon .duet-chip-icon-container*/.duet-chip-container.duet-chip-has-icon.sc-duet-chip .duet-chip-icon-container.sc-duet-chip{width:24px;height:16px;padding-right:10px}/*!@.duet-chip-container.duet-chip-has-icon.duet-chip-filter-checked .duet-chip-icon-container, .duet-chip-container.duet-chip-has-icon.duet-chip-radio-checked .duet-chip-icon-container*/.duet-chip-container.duet-chip-has-icon.duet-chip-filter-checked.sc-duet-chip .duet-chip-icon-container.sc-duet-chip,.duet-chip-container.duet-chip-has-icon.duet-chip-radio-checked.sc-duet-chip .duet-chip-icon-container.sc-duet-chip{padding-right:11px;padding-left:3px}/*!@.duet-chip-container.duet-chip-has-icon button,\n.duet-chip-container.duet-chip-has-icon label*/.duet-chip-container.duet-chip-has-icon.sc-duet-chip button.sc-duet-chip,.duet-chip-container.duet-chip-has-icon.sc-duet-chip label.sc-duet-chip{padding-left:10px}/*!@.duet-chip-container.duet-chip-has-popup button,\n.duet-chip-container.duet-chip-has-popup label*/.duet-chip-container.duet-chip-has-popup.sc-duet-chip button.sc-duet-chip,.duet-chip-container.duet-chip-has-popup.sc-duet-chip label.sc-duet-chip{padding-right:8px}/*!@.duet-chip-container duet-icon:not(.check-mark)*/.duet-chip-container.sc-duet-chip duet-icon.sc-duet-chip:not(.check-mark){width:auto;visibility:visible;transition:width 300ms ease, transform 300ms ease;transform:scaleX(1)}/*!@.duet-chip-container duet-icon.check-mark*/.duet-chip-container.sc-duet-chip duet-icon.check-mark.sc-duet-chip{width:0;overflow:hidden;visibility:hidden;transition:width 300ms ease, transform 300ms ease;transform:scaleX(0)}/*!@.duet-chip-container.duet-chip-filter-checked, .duet-chip-container.duet-chip-radio-checked*/.duet-chip-container.duet-chip-filter-checked.sc-duet-chip,.duet-chip-container.duet-chip-radio-checked.sc-duet-chip{padding:0 !important;background:rgb(230, 242, 248);border-color:rgb(0, 119, 179);border-width:2px}/*!@.duet-chip-container.duet-chip-filter-checked:hover, .duet-chip-container.duet-chip-radio-checked:hover*/.duet-chip-container.duet-chip-filter-checked.sc-duet-chip:hover,.duet-chip-container.duet-chip-radio-checked.sc-duet-chip:hover{background:rgb(205, 229, 241)}/*!@.duet-chip-container.duet-chip-filter-checked.chip-has-icon button,\n.duet-chip-container.duet-chip-filter-checked.chip-has-icon label, .duet-chip-container.duet-chip-radio-checked.chip-has-icon button,\n.duet-chip-container.duet-chip-radio-checked.chip-has-icon label*/.duet-chip-container.duet-chip-filter-checked.chip-has-icon.sc-duet-chip button.sc-duet-chip,.duet-chip-container.duet-chip-filter-checked.chip-has-icon.sc-duet-chip label.sc-duet-chip,.duet-chip-container.duet-chip-radio-checked.chip-has-icon.sc-duet-chip button.sc-duet-chip,.duet-chip-container.duet-chip-radio-checked.chip-has-icon.sc-duet-chip label.sc-duet-chip{padding-left:10px}/*!@.duet-chip-container.duet-chip-filter-checked .duet-chip-icon-container, .duet-chip-container.duet-chip-radio-checked .duet-chip-icon-container*/.duet-chip-container.duet-chip-filter-checked.sc-duet-chip .duet-chip-icon-container.sc-duet-chip,.duet-chip-container.duet-chip-radio-checked.sc-duet-chip .duet-chip-icon-container.sc-duet-chip{padding-right:10px}/*!@.duet-chip-container.duet-chip-filter-checked .duet-chip-icon-container duet-icon:not(.check-mark), .duet-chip-container.duet-chip-radio-checked .duet-chip-icon-container duet-icon:not(.check-mark)*/.duet-chip-container.duet-chip-filter-checked.sc-duet-chip .duet-chip-icon-container.sc-duet-chip duet-icon.sc-duet-chip:not(.check-mark),.duet-chip-container.duet-chip-radio-checked.sc-duet-chip .duet-chip-icon-container.sc-duet-chip duet-icon.sc-duet-chip:not(.check-mark){width:0;overflow:hidden;visibility:hidden;transition:width 300ms ease, transform 300ms ease;transform:scaleX(0)}/*!@.duet-chip-container.duet-chip-filter-checked .duet-chip-icon-container duet-icon.check-mark, .duet-chip-container.duet-chip-radio-checked .duet-chip-icon-container duet-icon.check-mark*/.duet-chip-container.duet-chip-filter-checked.sc-duet-chip .duet-chip-icon-container.sc-duet-chip duet-icon.check-mark.sc-duet-chip,.duet-chip-container.duet-chip-radio-checked.sc-duet-chip .duet-chip-icon-container.sc-duet-chip duet-icon.check-mark.sc-duet-chip{width:auto;visibility:visible;transition:width 300ms ease, transform 300ms ease;transform:scaleX(1)}/*!@.duet-chip-container.duet-chip-filter-checked.duet-theme-turva, .duet-chip-container.duet-chip-radio-checked.duet-theme-turva*/.duet-chip-container.duet-chip-filter-checked.duet-theme-turva.sc-duet-chip,.duet-chip-container.duet-chip-radio-checked.duet-theme-turva.sc-duet-chip{background:rgb(245, 245, 247);border-color:rgb(198, 12, 48)}/*!@.duet-chip-container.duet-chip-filter-checked.duet-theme-turva:hover, .duet-chip-container.duet-chip-radio-checked.duet-theme-turva:hover*/.duet-chip-container.duet-chip-filter-checked.duet-theme-turva.sc-duet-chip:hover,.duet-chip-container.duet-chip-radio-checked.duet-theme-turva.sc-duet-chip:hover{background:rgb(228, 228, 230)}/*!@.duet-chip-container .duet-chip-popup-disclosure*/.duet-chip-container.sc-duet-chip .duet-chip-popup-disclosure.sc-duet-chip{padding-right:4.5px;padding-left:12.5px}/*!@.duet-chip-container .duet-chip-popup-disclosure duet-icon*/.duet-chip-container.sc-duet-chip .duet-chip-popup-disclosure.sc-duet-chip duet-icon.sc-duet-chip{transition:transform 300ms ease}/*!@.duet-chip-container.duet-chip-filter-popup-open*/.duet-chip-container.duet-chip-filter-popup-open.sc-duet-chip{background:rgb(243, 249, 252);border-color:rgb(243, 249, 252)}/*!@.duet-chip-container.duet-chip-filter-popup-open.duet-theme-turva*/.duet-chip-container.duet-chip-filter-popup-open.duet-theme-turva.sc-duet-chip{background:rgb(245, 245, 247);border-color:rgb(245, 245, 247)}/*!@.duet-chip-container.duet-chip-filter-popup-open .duet-chip-popup-disclosure duet-icon*/.duet-chip-container.duet-chip-filter-popup-open.sc-duet-chip .duet-chip-popup-disclosure.sc-duet-chip duet-icon.sc-duet-chip{transform:rotate(180deg)}/*!@.duet-chip-container.duet-chip-input*/.duet-chip-container.duet-chip-input.sc-duet-chip{display:flex;align-items:center;padding-right:0 !important}/*!@.duet-chip-container.duet-chip-input .duet-chip-input-button*/.duet-chip-container.duet-chip-input.sc-duet-chip .duet-chip-input-button.sc-duet-chip{flex-grow:1}/*!@.duet-chip-container.duet-chip-input .duet-chip-remove-button*/.duet-chip-container.duet-chip-input.sc-duet-chip .duet-chip-remove-button.sc-duet-chip{width:26px;padding:8px 16px 8px 0;margin:-8px 0}/*!@.duet-chip-container.large button,\n.duet-chip-container.large label*/.duet-chip-container.large.sc-duet-chip button.sc-duet-chip,.duet-chip-container.large.sc-duet-chip label.sc-duet-chip{padding:15px 22px}/*!@:host(.user-is-tabbing) .duet-chip-focus*/.user-is-tabbing.sc-duet-chip-h .duet-chip-focus.sc-duet-chip{box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}/*!@:host(.user-is-tabbing) .duet-chip-focus.duet-theme-turva*/.user-is-tabbing.sc-duet-chip-h .duet-chip-focus.duet-theme-turva.sc-duet-chip{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}/*!@.duet-chip-container input*/.duet-chip-container.sc-duet-chip input.sc-duet-chip{position:absolute !important;top:0;left:0;z-index:-1;width:100%;height:100%;cursor:pointer;opacity:0}";
9728
9730
 
9729
9731
  class DuetChip {
9730
9732
  constructor(hostRef) {
9731
9733
  registerInstance(this, hostRef);
9732
9734
  this.duetChange = createEvent$2(this, "duetChange", 3);
9735
+ this.duetRemove = createEvent$2(this, "duetRemove", 3);
9733
9736
  this.duetFocus = createEvent$2(this, "duetFocus", 7);
9734
9737
  this.duetBlur = createEvent$2(this, "duetBlur", 7);
9735
9738
  /**
@@ -9856,6 +9859,12 @@ class DuetChip {
9856
9859
  this.onRemoveClick = (evt) => {
9857
9860
  evt.stopPropagation();
9858
9861
  evt.preventDefault();
9862
+ this.duetRemove.emit({
9863
+ originalEvent: evt,
9864
+ checked: this.checked,
9865
+ value: this.value,
9866
+ component: "duet-chip",
9867
+ });
9859
9868
  this.element.remove();
9860
9869
  };
9861
9870
  this.focus = false;
@@ -9943,7 +9952,7 @@ class DuetChip {
9943
9952
  onBlur: this.onBlur,
9944
9953
  ref: el => (this.focusableElement = el),
9945
9954
  };
9946
- return (hAsync(Host, null, this.variation === "button" && (hAsync("span", { class: classes }, hAsync("button", Object.assign({ id: identifier, "aria-label": this.accessibleLabel, "aria-disabled": this.disabled ? "true" : undefined, name: this.name, value: this.value, onClick: this.disabled ? evt => evt.stopPropagation() : undefined }, focusHandlers), hAsync("span", { class: "duet-chip-icon-container" }, this.icon && (hAsync("duet-icon", { name: this.icon, size: "x-small", margin: "none", color: "currentColor" }))), hAsync("slot", null)))), this.variation === "input" && (hAsync("span", { class: classes }, hAsync("button", Object.assign({ id: identifier, class: "duet-chip-input-button", "aria-label": this.accessibleLabel }, focusHandlers), hAsync("span", { class: "duet-chip-icon-container" }, this.icon && (hAsync("duet-icon", { name: this.icon, size: "x-small", margin: "none", color: "currentColor" }))), hAsync("slot", null)), hAsync("button", { class: "duet-chip-remove-button", onClick: this.onRemoveClick }, hAsync("duet-icon", { name: "activity-close", size: "xx-small", margin: "none", color: "currentColor" })))), this.variation === "filter" && (hAsync("span", { class: classes }, hAsync("input", Object.assign({ "aria-haspopup": this.getAccessiblePopup(), "aria-controls": (_a = this.popupElement) === null || _a === void 0 ? void 0 : _a.id, "aria-expanded": this.getAccessibleExpanded(), "aria-disabled": this.disabled ? "true" : undefined, id: identifier, type: "checkbox", name: this.name, value: this.value, checked: this.checked, onClick: this.onFilterClick, onChange: this.onFilterChange }, focusHandlers)), hAsync("label", { htmlFor: identifier }, this.icon && (hAsync("span", { class: "duet-chip-icon-container" }, hAsync("duet-icon", { name: this.icon, size: "x-small", margin: "none", color: "currentColor" }), hAsync("duet-icon", { name: "messaging-checked-small", size: "xx-small", margin: "none", color: "currentColor", class: "check-mark" }))), hAsync("slot", null), this.popupElement && (hAsync("span", { class: "duet-chip-popup-disclosure" }, hAsync("duet-icon", { name: "action-arrow-down-small", size: "xxx-small", margin: "none", color: "currentColor" })))))), this.variation === "radio" && (hAsync("span", { class: classes }, hAsync("input", Object.assign({ "aria-disabled": this.disabled ? "true" : undefined, id: identifier, type: "radio", name: this.name, value: this.value, checked: this.checked, onChange: this.onRadioChange, onClick: this.disabled ? evt => evt.preventDefault() : undefined }, focusHandlers)), hAsync("label", { htmlFor: identifier }, this.icon && (hAsync("span", { class: "duet-chip-icon-container" }, hAsync("duet-icon", { name: this.icon, size: "x-small", margin: "none", color: "currentColor" }), hAsync("duet-icon", { name: "messaging-checked-small", size: "xx-small", margin: "none", color: "currentColor", class: "check-mark" }))), hAsync("slot", null))))));
9955
+ return (hAsync(Host, { class: { [this.variation]: true } }, this.variation === "button" && (hAsync("span", { class: classes }, hAsync("button", Object.assign({ id: identifier, "aria-label": this.accessibleLabel, "aria-disabled": this.disabled ? "true" : undefined, name: this.name, value: this.value, onClick: this.disabled ? evt => evt.stopPropagation() : undefined }, focusHandlers), hAsync("span", { class: "duet-chip-icon-container" }, this.icon && (hAsync("duet-icon", { name: this.icon, size: "x-small", margin: "none", color: "currentColor" }))), hAsync("slot", null)))), this.variation === "input" && (hAsync("span", { class: classes }, hAsync("button", Object.assign({ id: identifier, class: "duet-chip-input-button", value: this.value, "aria-label": this.accessibleLabel }, focusHandlers), hAsync("span", { class: "duet-chip-icon-container" }, this.icon && (hAsync("duet-icon", { name: this.icon, size: "x-small", margin: "none", color: "currentColor" }))), hAsync("slot", null)), hAsync("button", { class: "duet-chip-remove-button", onClick: this.onRemoveClick }, hAsync("duet-icon", { name: "activity-close", size: "xx-small", margin: "none", color: "currentColor" })))), this.variation === "filter" && (hAsync("span", { class: classes }, hAsync("input", Object.assign({ "aria-haspopup": this.getAccessiblePopup(), "aria-controls": (_a = this.popupElement) === null || _a === void 0 ? void 0 : _a.id, "aria-expanded": this.getAccessibleExpanded(), "aria-disabled": this.disabled ? "true" : undefined, id: identifier, type: "checkbox", name: this.name, value: this.value, checked: this.checked, onClick: this.onFilterClick, onChange: this.onFilterChange }, focusHandlers)), hAsync("label", { htmlFor: identifier }, this.icon && (hAsync("span", { class: "duet-chip-icon-container" }, hAsync("duet-icon", { name: this.icon, size: "x-small", margin: "none", color: "currentColor" }), hAsync("duet-icon", { name: "messaging-checked-small", size: "xx-small", margin: "none", color: "currentColor", class: "check-mark" }))), hAsync("slot", null), this.popupElement && (hAsync("span", { class: "duet-chip-popup-disclosure" }, hAsync("duet-icon", { name: "action-arrow-down-small", size: "xxx-small", margin: "none", color: "currentColor" })))))), this.variation === "radio" && (hAsync("span", { class: classes }, hAsync("input", Object.assign({ "aria-disabled": this.disabled ? "true" : undefined, id: identifier, type: "radio", name: this.name, value: this.value, checked: this.checked, onChange: this.onRadioChange, onClick: this.disabled ? evt => evt.preventDefault() : undefined }, focusHandlers)), hAsync("label", { htmlFor: identifier }, this.icon && (hAsync("span", { class: "duet-chip-icon-container" }, hAsync("duet-icon", { name: this.icon, size: "x-small", margin: "none", color: "currentColor" }), hAsync("duet-icon", { name: "messaging-checked-small", size: "xx-small", margin: "none", color: "currentColor", class: "check-mark" }))), hAsync("slot", null))))));
9947
9956
  }
9948
9957
  get element() { return getElement(this); }
9949
9958
  static get watchers() { return {
@@ -9961,7 +9970,7 @@ class DuetChip {
9961
9970
  "icon": [1],
9962
9971
  "theme": [1025],
9963
9972
  "identifier": [1],
9964
- "value": [1025],
9973
+ "value": [1537],
9965
9974
  "name": [1],
9966
9975
  "checked": [1540],
9967
9976
  "disabled": [4],
@@ -9974,7 +9983,7 @@ class DuetChip {
9974
9983
  },
9975
9984
  "$listeners$": undefined,
9976
9985
  "$lazyBundleId$": "-",
9977
- "$attrsToReflect$": [["checked", "checked"], ["accessibleExpanded", "accessible-expanded"], ["accessiblePopup", "accessible-popup"]]
9986
+ "$attrsToReflect$": [["value", "value"], ["checked", "checked"], ["accessibleExpanded", "accessible-expanded"], ["accessiblePopup", "accessible-popup"]]
9978
9987
  }; }
9979
9988
  }
9980
9989
 
@@ -11067,7 +11076,7 @@ class DuetCollapsible {
11067
11076
  }; }
11068
11077
  }
11069
11078
 
11070
- const duetComboboxCss = ".sc-duet-combobox-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;position:relative;display:inline-block;width:100%;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:rgb(0, 41, 77)}.sc-duet-combobox-h a.sc-duet-combobox{color:rgb(0, 41, 77);transition:none}.duet-theme-turva.sc-duet-combobox-h{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:rgb(23, 28, 58)}.duet-theme-turva.sc-duet-combobox-h a.sc-duet-combobox{color:rgb(23, 28, 58)}.duet-theme-turva.sc-duet-combobox-h .duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.option.sc-duet-combobox .option-tags.sc-duet-combobox{color:rgb(116, 116, 117)}.duet-theme-turva.sc-duet-combobox-h .duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.option.selected.sc-duet-combobox{background:rgb(244, 207, 214)}.duet-theme-turva.sc-duet-combobox-h .duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.active.sc-duet-combobox,.duet-theme-turva.sc-duet-combobox-h .duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.sc-duet-combobox:focus,.duet-theme-turva.sc-duet-combobox-h .duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.sc-duet-combobox:hover{color:rgb(255, 255, 255);background:rgb(198, 12, 48)}.duet-theme-turva.sc-duet-combobox-h .duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.active.sc-duet-combobox .option-tags.sc-duet-combobox,.duet-theme-turva.sc-duet-combobox-h .duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.sc-duet-combobox:focus .option-tags.sc-duet-combobox,.duet-theme-turva.sc-duet-combobox-h .duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.sc-duet-combobox:hover .option-tags.sc-duet-combobox{color:rgb(255, 255, 255)}.duet-theme-turva.sc-duet-combobox-h .duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.active.sc-duet-combobox a.sc-duet-combobox,.duet-theme-turva.sc-duet-combobox-h .duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.sc-duet-combobox:focus a.sc-duet-combobox,.duet-theme-turva.sc-duet-combobox-h .duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.sc-duet-combobox:hover a.sc-duet-combobox{color:rgb(255, 255, 255)}.duet-combobox-list.sc-duet-combobox{position:absolute;top:calc(100% - 12px);z-index:700;display:none;background:rgb(255, 255, 255);border-radius:0 4px;box-shadow:0 2px 10px 0 rgba(0, 41, 77, 0.1)}.duet-combobox-list.open.sc-duet-combobox{display:block}.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox{max-height:200px;padding:0.75rem 0;margin:0;overflow-y:scroll;font-weight:600;list-style:none;cursor:pointer;scroll-behavior:smooth}.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.sc-duet-combobox{padding:4px 0}.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.sc-duet-combobox:not(.selected){padding-left:16px}.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.sc-duet-combobox:not(.selected) .highlight.sc-duet-combobox{text-decoration:underline}.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.option.sc-duet-combobox .option-link.sc-duet-combobox{display:block;width:100%}.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.option.sc-duet-combobox .option-tags.sc-duet-combobox{float:right;padding-right:0.875rem;font-weight:400;color:rgb(144, 149, 153)}.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.option-link.sc-duet-combobox{display:block;width:100%}.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.selected.sc-duet-combobox{padding-left:0;background:rgb(205, 229, 241)}.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.selected.option.sc-duet-combobox .option-icon.sc-duet-combobox{padding:0 8px 0 8px}.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.selected.option.sc-duet-combobox .option-tags.sc-duet-combobox{color:rgb(144, 149, 153)}.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.active.sc-duet-combobox,.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.sc-duet-combobox:focus,.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.sc-duet-combobox:hover{color:rgb(255, 255, 255);background:rgb(0, 119, 179)}.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.active.sc-duet-combobox .option-tags.sc-duet-combobox,.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.sc-duet-combobox:focus .option-tags.sc-duet-combobox,.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.sc-duet-combobox:hover .option-tags.sc-duet-combobox{color:rgb(255, 255, 255)}.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.active.sc-duet-combobox a.sc-duet-combobox,.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.sc-duet-combobox:focus a.sc-duet-combobox,.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.sc-duet-combobox:hover a.sc-duet-combobox{color:rgb(255, 255, 255)}";
11079
+ const duetComboboxCss = ".sc-duet-combobox-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;position:relative;display:inline-block;width:100%;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:rgb(0, 41, 77)}.sc-duet-combobox-h a.sc-duet-combobox{color:rgb(0, 41, 77);transition:none}.duet-theme-turva.sc-duet-combobox-h{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:rgb(23, 28, 58)}.duet-theme-turva.sc-duet-combobox-h a.sc-duet-combobox{color:rgb(23, 28, 58)}.duet-theme-turva.sc-duet-combobox-h .duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.option.sc-duet-combobox .option-tags.sc-duet-combobox{color:rgb(116, 116, 117)}.duet-theme-turva.sc-duet-combobox-h .duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.option.selected.sc-duet-combobox{background:rgb(244, 207, 214)}.duet-theme-turva.sc-duet-combobox-h .duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.active.sc-duet-combobox,.duet-theme-turva.sc-duet-combobox-h .duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.sc-duet-combobox:focus,.duet-theme-turva.sc-duet-combobox-h .duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.sc-duet-combobox:hover{color:rgb(255, 255, 255);background:rgb(198, 12, 48)}.duet-theme-turva.sc-duet-combobox-h .duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.active.sc-duet-combobox .option-tags.sc-duet-combobox,.duet-theme-turva.sc-duet-combobox-h .duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.sc-duet-combobox:focus .option-tags.sc-duet-combobox,.duet-theme-turva.sc-duet-combobox-h .duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.sc-duet-combobox:hover .option-tags.sc-duet-combobox{color:rgb(255, 255, 255)}.duet-theme-turva.sc-duet-combobox-h .duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.active.sc-duet-combobox a.sc-duet-combobox,.duet-theme-turva.sc-duet-combobox-h .duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.sc-duet-combobox:focus a.sc-duet-combobox,.duet-theme-turva.sc-duet-combobox-h .duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.sc-duet-combobox:hover a.sc-duet-combobox{color:rgb(255, 255, 255)}.duet-combobox-list.sc-duet-combobox{position:absolute;top:calc(100% - 12px);z-index:700;margin:8px 0 0;visibility:hidden;background:rgb(255, 255, 255);border-radius:0 4px;box-shadow:0 2px 10px 0 rgba(0, 41, 77, 0.1);opacity:0;transition:transform 300ms ease, opacity 300ms ease, visibility 300ms ease;transform:scale(0.96) translateZ(0) translateY(-20px);transform-origin:top right}.duet-combobox-list.open.sc-duet-combobox{visibility:visible;opacity:1;transition-property:transform, opacity;transform:scale(1.0001) translateZ(0) translateY(0)}.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox{max-height:200px;padding:0.75rem 0;margin:0;overflow-y:scroll;font-weight:600;list-style:none;cursor:pointer;scroll-behavior:smooth}.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.sc-duet-combobox{padding:4px 0}.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.sc-duet-combobox:not(.selected){padding-left:16px}.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.sc-duet-combobox:not(.selected) .highlight.sc-duet-combobox{text-decoration:underline}.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.option.sc-duet-combobox .option-link.sc-duet-combobox{display:block;width:100%}.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.option.sc-duet-combobox .option-tags.sc-duet-combobox{float:right;padding-right:0.875rem;font-weight:400;color:rgb(144, 149, 153)}.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.option-link.sc-duet-combobox{display:block;width:100%}.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.selected.sc-duet-combobox{padding-left:0;background:rgb(205, 229, 241)}.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.selected.option.sc-duet-combobox .option-icon.sc-duet-combobox{padding:0 8px 0 8px}.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.selected.option.sc-duet-combobox .option-tags.sc-duet-combobox{color:rgb(144, 149, 153)}.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.active.sc-duet-combobox,.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.sc-duet-combobox:focus,.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.sc-duet-combobox:hover{color:rgb(255, 255, 255);background:rgb(0, 119, 179)}.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.active.sc-duet-combobox .option-tags.sc-duet-combobox,.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.sc-duet-combobox:focus .option-tags.sc-duet-combobox,.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.sc-duet-combobox:hover .option-tags.sc-duet-combobox{color:rgb(255, 255, 255)}.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.active.sc-duet-combobox a.sc-duet-combobox,.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.sc-duet-combobox:focus a.sc-duet-combobox,.duet-combobox-list.sc-duet-combobox .duet-combobox-listbox.sc-duet-combobox .list-item.sc-duet-combobox:hover a.sc-duet-combobox{color:rgb(255, 255, 255)}";
11071
11080
 
11072
11081
  class DuetCombobox {
11073
11082
  constructor(hostRef) {
@@ -11083,24 +11092,63 @@ class DuetCombobox {
11083
11092
  // this.listElement.style.width = `${currentWidth + 1}px`
11084
11093
  }
11085
11094
  }, 100));
11086
- this.handleInputKeyDownEvent = (e) => {
11095
+ this.onInputChange = async (e) => {
11096
+ const newValue = e.detail.value;
11097
+ this.inputValue = newValue;
11098
+ };
11099
+ this.onInputClick = () => {
11100
+ var _a, _b;
11101
+ if (this.openListOnClick) {
11102
+ this.listOpen = !this.listOpen;
11103
+ }
11104
+ else {
11105
+ this.listOpen = ((_a = this.inputValue) === null || _a === void 0 ? void 0 : _a.length) >= this.minCharacters;
11106
+ }
11107
+ if (!((_b = this.getFilteredItems()) === null || _b === void 0 ? void 0 : _b.length)) {
11108
+ this.listOpen = false;
11109
+ }
11110
+ };
11111
+ this.onInputTyping = async (e) => {
11112
+ var _a;
11113
+ const newValue = e.detail.value;
11114
+ if (!this.force && !this.multiple && this.selectedItems.size > 0 && newValue !== this.getSelectedItemLabel()) {
11115
+ this.selectedItems.clear();
11116
+ }
11117
+ this.listOpen = String(newValue).length >= this.minCharacters && ((_a = this.getFilteredItems()) === null || _a === void 0 ? void 0 : _a.length) > 0;
11118
+ };
11119
+ this.onKeyDown = (e) => {
11087
11120
  //if selection is made, close the list and update internal and external values
11121
+ const listItems = this.returnFilteredOrNonFiltered();
11088
11122
  // this should be set to undefined on everything BUT up/down arrow according to the aria 1.1 specs
11089
11123
  // https://www.w3.org/TR/wai-aria-practices-1.1/#combobox
11090
11124
  this.input.accessibleActiveDescendant = undefined;
11091
11125
  if (isEnterKey(e)) {
11092
11126
  e.preventDefault();
11093
- this.selectActiveItem();
11094
- this.updateInputText(false);
11127
+ if (this.listOpen && this.activeItem !== undefined && listItems[this.activeItem]) {
11128
+ if (this.multiple) {
11129
+ this.addSelectedItem(listItems[this.activeItem].id, true);
11130
+ }
11131
+ else {
11132
+ this.updateSelectedItem(listItems[this.activeItem].id, true);
11133
+ }
11134
+ }
11135
+ this.activeItem = undefined;
11095
11136
  this.listOpen = false;
11096
11137
  return;
11097
11138
  }
11098
- //tabbing out or escaping, restore initial state
11099
11139
  if (isEscapeKey(e) || isTabKey(e)) {
11100
11140
  this.updateInputText(true);
11141
+ this.activeItem = undefined;
11101
11142
  this.listOpen = false;
11102
11143
  return;
11103
11144
  }
11145
+ if (isBackspaceKey(e) && this.inputValue === "") {
11146
+ if (this.multiple && this.selectedItems.size > 0) {
11147
+ const lastItem = Array.from(this.selectedItems).pop();
11148
+ this.removeSelectedItem(lastItem, true);
11149
+ }
11150
+ return;
11151
+ }
11104
11152
  //handle arrow up/down navigation
11105
11153
  let nextActiveItem = this.activeItem;
11106
11154
  if (isArrowUpKey(e)) {
@@ -11113,7 +11161,6 @@ class DuetCombobox {
11113
11161
  this.listOpen = true;
11114
11162
  }
11115
11163
  if (isArrowDownKey(e) || isArrowUpKey(e)) {
11116
- const listItems = this.shouldListBeFiltered() ? this.getFilteredItems() : this.processedItems;
11117
11164
  if (nextActiveItem < 0 || !nextActiveItem) {
11118
11165
  nextActiveItem = 0;
11119
11166
  }
@@ -11126,13 +11173,10 @@ class DuetCombobox {
11126
11173
  this.activeItem = nextActiveItem;
11127
11174
  this.scrollToActive();
11128
11175
  }
11129
- this.announceActive();
11130
11176
  return;
11131
11177
  };
11132
11178
  this.processedItems = null;
11133
- this.inputWidth = 0;
11134
11179
  this.inputValue = "";
11135
- this.selectionMsg = "";
11136
11180
  this.listOpen = false;
11137
11181
  this.selectedItems = new Set();
11138
11182
  this.activeItem = undefined;
@@ -11154,8 +11198,11 @@ class DuetCombobox {
11154
11198
  },
11155
11199
  };
11156
11200
  this.accessibleLabels = getLocaleString(this.accessibleLabelDefaults, getLanguage());
11201
+ this.label = "";
11202
+ this.caption = "";
11157
11203
  this.theme = "";
11158
11204
  this.force = false;
11205
+ this.multiple = false;
11159
11206
  this.items = undefined;
11160
11207
  this.formatter = (item) => item && item.name ? item.name : "";
11161
11208
  this.value = undefined;
@@ -11171,7 +11218,7 @@ class DuetCombobox {
11171
11218
  const path = e.composedPath();
11172
11219
  const isClickOutside = path.every(el => el !== this.element);
11173
11220
  if (isClickOutside) {
11174
- this.updateInputText(true, true);
11221
+ this.updateInputText(true);
11175
11222
  this.listOpen = false;
11176
11223
  }
11177
11224
  }
@@ -11182,17 +11229,67 @@ class DuetCombobox {
11182
11229
  async formatItem(item) {
11183
11230
  return this.formatter(item);
11184
11231
  }
11185
- async processItems() {
11186
- this.items = this.processedItems = parsePossibleJSON(this.items);
11187
- await this.updateInputText();
11232
+ processItems() {
11233
+ const ids = [];
11234
+ this.processedItems = parsePossibleJSON(this.items);
11235
+ if (!Array.isArray(this.processedItems)) {
11236
+ console.error("DuetCombobox: Items should be an array");
11237
+ return;
11238
+ }
11239
+ if (this.processedItems.length !== new Set([...this.processedItems]).size) {
11240
+ console.warn("DuetCombobox: Duplicate item values found in the list");
11241
+ }
11242
+ this.processedItems = this.processedItems.map((item, index) => {
11243
+ if (typeof item === "string") {
11244
+ item = { name: item, value: item };
11245
+ }
11246
+ if (item.id !== undefined) {
11247
+ item.id = String(item.id);
11248
+ }
11249
+ else {
11250
+ item.id = `${JSON.stringify(item.value)}-${item.name}`;
11251
+ }
11252
+ if (ids.includes(item.id)) {
11253
+ console.warn("DuetCombobox: Duplicate item id found in the list, postfixed with index");
11254
+ item.id = `${item.id}-${index}`;
11255
+ }
11256
+ ids.push(item.id);
11257
+ return item;
11258
+ });
11259
+ // remove any item selections that are no longer in the items list
11260
+ const selectionsMissing = Array.from(this.selectedItems).filter(id => !this.processedItems.find(item => item.id === id));
11261
+ if (selectionsMissing.length) {
11262
+ if (this.multiple) {
11263
+ selectionsMissing.forEach(id => this.removeSelectedItem(id));
11264
+ }
11265
+ else {
11266
+ this.updateSelectedItem(selectionsMissing[0], true);
11267
+ }
11268
+ }
11188
11269
  }
11189
- async processValue() {
11190
- if (this.value) {
11191
- const selectedItem = this.items.find(item => item.value === this.value);
11192
- this.updateSelectedItems(selectedItem.id);
11270
+ processValue() {
11271
+ // empty string may be valid item value
11272
+ if (this.value !== "" && !this.value) {
11273
+ this.selectedItems.clear();
11274
+ return;
11275
+ }
11276
+ const values = Array.isArray(this.value) ? this.value : [this.value];
11277
+ const ids = this.processedItems.filter(item => values.includes(item.value)).map(item => item.id);
11278
+ // if value corresponds to the selectedItems, do nothing
11279
+ if (ids.length === this.selectedItems.size && ids.every(id => this.selectedItems.has(id))) {
11280
+ return;
11281
+ }
11282
+ if (this.multiple) {
11283
+ this.selectedItems.clear();
11284
+ this.input.clearChips();
11285
+ ids.forEach(id => this.addSelectedItem(id));
11286
+ }
11287
+ else {
11288
+ const selectedItem = this.processedItems.find(item => item.value === this.value);
11289
+ this.updateSelectedItem(selectedItem.id);
11193
11290
  }
11194
11291
  }
11195
- async processListOpenChange() {
11292
+ processListOpenChange() {
11196
11293
  if (this.openListOnClick) {
11197
11294
  this.input.icon = this.listOpen ? "action-arrow-up" : "action-arrow-down";
11198
11295
  }
@@ -11217,30 +11314,14 @@ class DuetCombobox {
11217
11314
  componentDidLoad() {
11218
11315
  // observe resize events to dynamically adjust size of dropdown area
11219
11316
  this.resizeObserver.observe(this.input);
11220
- this.listElement.addEventListener("click", e => {
11221
- e.stopPropagation();
11222
- });
11223
11317
  this.processValue();
11224
11318
  }
11225
- /**
11226
- * Updates the input text based on the selected/clicked items.
11227
- * @param event - event
11228
- *'param item: DuetComboboxItem - the item that was selected
11229
- */
11230
- onListClick(e, item) {
11231
- e.preventDefault();
11232
- // update selected item with id
11233
- this.updateSelectedItems(item.id, true);
11234
- this.listOpen = false;
11235
- return this.listOpen;
11236
- }
11237
11319
  /**
11238
11320
  * Helper function that checks inputs in the field, compares it with the item list and returns true when inputvalue matches selectedItem id
11239
- * TODO: this should be disabled in multiple mode
11240
11321
  */
11241
11322
  shouldListBeFiltered() {
11242
- if (this.selectedItems.size && this.input.value === this.inputValue) {
11243
- const item = this.items.filter(item => this.selectedItems.has(item.id));
11323
+ if (!this.multiple && this.selectedItems.size && this.input.value === this.inputValue) {
11324
+ const item = this.processedItems.find(item => this.selectedItems.has(item.id));
11244
11325
  return !(this.formatter(item).toLowerCase() === this.input.value.toLowerCase());
11245
11326
  }
11246
11327
  return true;
@@ -11255,91 +11336,135 @@ class DuetCombobox {
11255
11336
  : this.sortFilteredItems(this.processedItems)
11256
11337
  : [];
11257
11338
  }
11339
+ emitChangeEvent(id) {
11340
+ const item = this.processedItems.find(item => item.id === id);
11341
+ this.duetChange.emit({
11342
+ item,
11343
+ value: this.value,
11344
+ component: "duet-combobox",
11345
+ });
11346
+ }
11258
11347
  /**
11259
- * Updates the selected items based on the item id.
11260
- * @param id
11261
- * @private
11348
+ * Updates the value after selected items have changed for multiple selection.
11262
11349
  */
11263
- async updateSelectedItems(id, emitEvent) {
11264
- // for a multiple scenario wrap this in an if/else and just don't clear here
11265
- this.selectedItems.clear();
11266
- if (this.selectedItems) {
11267
- if (this.selectedItems.has(id)) {
11268
- this.selectedItems.delete(id);
11269
- }
11270
- else {
11271
- this.selectedItems.add(id);
11272
- }
11350
+ updateMultipleValue() {
11351
+ this.value = this.processedItems.filter(item => this.selectedItems.has(item.id)).map(item => item.value);
11352
+ this.input.value = "";
11353
+ this.updateChips();
11354
+ }
11355
+ /**
11356
+ * Add item with id to the selectedItems set. Used only when multiple is true.
11357
+ */
11358
+ addSelectedItem(id, emitEvent) {
11359
+ if (this.selectedItems.has(id)) {
11360
+ return;
11273
11361
  }
11362
+ this.selectedItems.add(id);
11363
+ this.updateMultipleValue();
11274
11364
  if (emitEvent) {
11275
- const item = this.selectedItems.size === 0 ? [] : this.items.filter(item => this.selectedItems.has(item.id));
11276
- this.duetChange.emit({
11277
- value: item[0].value,
11278
- item: item[0],
11279
- component: "duet-combobox",
11280
- });
11365
+ this.emitChangeEvent(id);
11281
11366
  }
11282
- await this.updateInputText();
11283
11367
  }
11284
11368
  /**
11285
- * Updates the input text based on the selected/clicked items.
11286
- * @param bool -override to clear if invoked by "click outside"
11369
+ * Remove item with id from the selectedItems set. Used only when multiple is true.
11287
11370
  */
11288
- async updateInputText(isBlurred = false, isClickOutside = false) {
11289
- const item = this.selectedItems.size === 0 ? [] : this.items.filter(item => this.selectedItems.has(item.id));
11290
- //if items changed and given id no longer exists
11291
- if (item.length === 0 && this.selectedItems.size > 0) {
11292
- this.selectedItems.clear();
11293
- this.input.value = "";
11371
+ removeSelectedItem(id, emitEvent) {
11372
+ if (!this.selectedItems.has(id)) {
11373
+ return;
11374
+ }
11375
+ this.selectedItems.delete(id);
11376
+ this.updateMultipleValue();
11377
+ if (emitEvent) {
11378
+ this.emitChangeEvent(id);
11379
+ }
11380
+ }
11381
+ /**
11382
+ * Updates the selected item based on the item id. Used only when multiple is false.
11383
+ */
11384
+ async updateSelectedItem(id, emitEvent) {
11385
+ if (this.selectedItems.has(id)) {
11386
+ this.selectedItems.delete(id);
11294
11387
  this.value = undefined;
11295
- this.activeItem = undefined;
11296
11388
  }
11297
- if (!isClickOutside && this.selectedItems.size === 1) {
11298
- this.input.value = ""; // set value to empty so that cursor position follows accordingly
11299
- this.input.value = await this.formatItem(item[0]);
11300
- this.input.scrollLeft = this.input.scrollWidth;
11301
- this.activeItem = undefined;
11302
- this.value = item[0].value;
11389
+ else {
11390
+ this.selectedItems.clear();
11391
+ this.selectedItems.add(id);
11392
+ this.value = this.processedItems.find(item => item.id === id).value;
11303
11393
  }
11304
- if (isBlurred) {
11305
- if (this.selectedItems.size === 0) {
11306
- this.activeItem = undefined;
11307
- if (this.force) {
11308
- this.inputValue = "";
11309
- this.input.value = "";
11310
- }
11394
+ if (emitEvent) {
11395
+ this.emitChangeEvent(id);
11396
+ }
11397
+ await this.updateInputText();
11398
+ }
11399
+ /**
11400
+ * Add or remove chips of the input based on the selectedItems Set.
11401
+ */
11402
+ async updateChips() {
11403
+ const ids = Array.from(this.selectedItems);
11404
+ const chips = await this.input.getChips();
11405
+ ids.forEach(async (id) => {
11406
+ const item = this.processedItems.find(i => i.id === id);
11407
+ const text = await this.formatItem(item);
11408
+ const chipExists = await this.input.hasChip({ value: `${id}`, text });
11409
+ if (!chipExists) {
11410
+ const chip = document.createElement("duet-chip");
11411
+ chip.variation = "input";
11412
+ chip.value = `${id}`;
11413
+ chip.textContent = text;
11414
+ chip.addEventListener("duetRemove", evt => {
11415
+ const id = evt.detail.value;
11416
+ this.removeSelectedItem(id, true);
11417
+ });
11418
+ this.input.addChip(chip);
11311
11419
  }
11312
- else if (this.force) {
11313
- const selectedValueIndex = [...this.selectedItems][0];
11314
- const selectedValueLabel = await this.formatItem(this.items[selectedValueIndex]);
11315
- this.inputValue = selectedValueLabel;
11316
- this.input.value = selectedValueLabel;
11420
+ });
11421
+ chips.forEach(chip => {
11422
+ if (!ids.includes(chip.value)) {
11423
+ chip.remove();
11317
11424
  }
11318
- }
11319
- this.listOpen = false;
11425
+ });
11320
11426
  }
11321
- updateInputValue(e) {
11322
- var _a;
11323
- this.inputValue = e.detail.value;
11324
- this.listOpen = String(this.inputValue).length >= this.minCharacters && ((_a = this.getFilteredItems()) === null || _a === void 0 ? void 0 : _a.length) > 0;
11427
+ async getSelectedItemLabel() {
11428
+ const item = this.processedItems.find(item => this.selectedItems.has(item.id));
11429
+ const label = item ? await this.formatItem(item) : "";
11430
+ return label;
11325
11431
  }
11326
- selectActiveItem() {
11327
- if (this.activeItem === undefined) {
11432
+ /**
11433
+ * Updates the input text when the combobox loses focus or when a selection is made.
11434
+ */
11435
+ async updateInputText(isBlurred = false) {
11436
+ if (isBlurred && this.multiple) {
11437
+ this.input.value = "";
11328
11438
  return;
11329
11439
  }
11330
- const filteredItem = this.returnFilteredOrNonFiltered();
11331
- const item = filteredItem[this.activeItem];
11332
- this.updateSelectedItems(item.id, true);
11440
+ if (isBlurred && this.force) {
11441
+ if (this.selectedItems.size === 0) {
11442
+ this.input.value = "";
11443
+ }
11444
+ else {
11445
+ this.input.value = await this.getSelectedItemLabel();
11446
+ }
11447
+ }
11448
+ if (!isBlurred && this.selectedItems.size > 0) {
11449
+ this.input.value = ""; // set value to empty so that cursor position follows accordingly
11450
+ this.input.value = await this.getSelectedItemLabel();
11451
+ this.input.scrollLeft = this.input.scrollWidth;
11452
+ }
11333
11453
  }
11334
- announceActive(items) {
11335
- if (!items) {
11336
- items = this.returnFilteredOrNonFiltered();
11454
+ // Event handlers
11455
+ onListClick(e, item) {
11456
+ e.preventDefault();
11457
+ e.stopPropagation();
11458
+ // update selected item with id
11459
+ if (this.multiple) {
11460
+ this.addSelectedItem(item.id, true);
11337
11461
  }
11338
- if (this.activeItem === undefined || this.activeItem === -1) {
11339
- return;
11462
+ else {
11463
+ this.updateSelectedItem(item.id, true);
11340
11464
  }
11341
- const item = items[this.activeItem];
11342
- this.selectionMsg = structuredClone(this.formatLabel(item, items.length, this.items.length));
11465
+ this.activeItem = undefined;
11466
+ this.listOpen = false;
11467
+ return this.listOpen;
11343
11468
  }
11344
11469
  //function that scrolls to the li element with the class "active"
11345
11470
  scrollToActive() {
@@ -11367,16 +11492,27 @@ class DuetCombobox {
11367
11492
  */
11368
11493
  getFilteredItems() {
11369
11494
  // filter items based on user inputs
11370
- const filteredItems = this.processedItems.filter(item => {
11371
- var _a, _b, _c, _d;
11495
+ const filteredItems = this.processedItems
11496
+ .filter(item => {
11497
+ var _a, _b, _c, _d, _e;
11372
11498
  // filter by name and value
11373
11499
  // if value contains inputvalue
11374
11500
  return ((_a = String(item.value)) === null || _a === void 0 ? void 0 : _a.toLowerCase()[this.filterType]((_b = this.inputValue) === null || _b === void 0 ? void 0 : _b.toLowerCase())) ||
11375
11501
  (
11376
11502
  // if name contains input value
11377
11503
  (_c = String(item.name)) === null || _c === void 0 ? void 0 : _c.toLowerCase()[this.filterType]((_d = this.inputValue) === null || _d === void 0 ? void 0 : _d.toLowerCase())) ||
11504
+ // if name contains input value
11505
+ this.formatter(item).toLowerCase()[this.filterType]((_e = this.inputValue) === null || _e === void 0 ? void 0 : _e.toLowerCase()) ||
11378
11506
  // if the item is selected
11379
11507
  this.selectedItems.has(item.id);
11508
+ })
11509
+ // if multiple, filter out the selected items
11510
+ .filter(item => {
11511
+ let include = true;
11512
+ if (this.multiple && this.selectedItems.has(item.id)) {
11513
+ include = false;
11514
+ }
11515
+ return include;
11380
11516
  });
11381
11517
  return this.sortFilteredItems(filteredItems);
11382
11518
  }
@@ -11418,8 +11554,11 @@ class DuetCombobox {
11418
11554
  "$members$": {
11419
11555
  "accessibleLabelDefaults": [1, "accessible-label-defaults"],
11420
11556
  "accessibleLabels": [1040],
11557
+ "label": [1],
11558
+ "caption": [1],
11421
11559
  "theme": [1025],
11422
11560
  "force": [4],
11561
+ "multiple": [4],
11423
11562
  "items": [1032],
11424
11563
  "formatter": [16],
11425
11564
  "value": [1537],
@@ -11427,9 +11566,7 @@ class DuetCombobox {
11427
11566
  "openListOnClick": [4, "open-list-on-click"],
11428
11567
  "filterType": [1, "filter-type"],
11429
11568
  "processedItems": [32],
11430
- "inputWidth": [32],
11431
11569
  "inputValue": [32],
11432
- "selectionMsg": [32],
11433
11570
  "listOpen": [32],
11434
11571
  "selectedItems": [32],
11435
11572
  "activeItem": [32],
@@ -14183,7 +14320,7 @@ function cleanValue(input, regex) {
14183
14320
  return newValue;
14184
14321
  }
14185
14322
 
14186
- const duetInputCss = "*.sc-duet-input,*.sc-duet-input::after,*.sc-duet-input::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.sc-duet-input-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-right:16px !important;margin-bottom:12px !important;display:inline-flex;width:100%;min-width:calc(33.333% - 8px);max-width:100%;text-align:left;vertical-align:bottom}.sc-duet-input-h:last-child,.sc-duet-input-h:last-of-type{margin-right:0 !important}@media (min-width: 36em){.sc-duet-input-h{width:calc(50% - 16px - 3px)}}.duet-expand.sc-duet-input-h{width:100% !important}.duet-m-0.sc-duet-input-h{margin:0 !important}input[type=search].sc-duet-input::-webkit-search-cancel-button{-webkit-appearance:none}duet-tooltip.sc-duet-input,.sc-duet-input-s>duet-tooltip{position:relative;top:12px;right:0}@media (min-width: 48em){duet-tooltip.sc-duet-input,.sc-duet-input-s>duet-tooltip{right:auto}}duet-caption.sc-duet-input:not(:last-of-type){margin-bottom:0}.duet-input-placeholder.sc-duet-input{position:absolute;top:-9px;left:9px;z-index:200;display:block;width:auto;max-width:60%;padding:0 0.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:rgb(255, 255, 255)}.duet-input-icon.sc-duet-input{position:absolute;top:50%;right:16px;z-index:200;width:20px;height:20px;font-size:0;line-height:normal;color:rgb(0, 41, 77);pointer-events:none;transform:translateY(-50%)}.duet-theme-turva.sc-duet-input .duet-input-icon.sc-duet-input{color:rgb(23, 28, 58)}.duet-input-container.sc-duet-input{position:relative;width:100%;height:100%}.duet-input-container.has-clear.sc-duet-input .duet-input-clear-icon.sc-duet-input{position:relative;z-index:250}.duet-input-container.has-clear.sc-duet-input .duet-input-clear-icon.sc-duet-input button.sc-duet-input{position:absolute;top:-24px;right:-24px;min-width:48px;min-height:48px;color:rgb(0, 77, 128)}.duet-input-container.has-clear.sc-duet-input .duet-input-clear-icon.sc-duet-input button.sc-duet-input:focus{outline:0;box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}.duet-theme-turva.sc-duet-input .duet-input-container.has-clear.sc-duet-input .duet-input-clear-icon.sc-duet-input button.sc-duet-input:focus,.duet-input-container.has-clear.sc-duet-input .duet-input-clear-icon.sc-duet-input button.sc-duet-input:focus.duet-theme-turva{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}.duet-input-container.has-clear.sc-duet-input .duet-input-clear-icon.sc-duet-input button.sc-duet-input:active{opacity:0.75;transition:none}.duet-input-container.has-clear.sc-duet-input .duet-input-clear-icon.duet-input-clear-icon-single.sc-duet-input button.sc-duet-input{top:-48px;right:0}.duet-input-container.has-clear.sc-duet-input .duet-input-clear-icon.duet-input-clear-icon-double.sc-duet-input button.sc-duet-input{top:-24px;right:12px}.duet-input-container.has-clear.sc-duet-input .duet-input-clear-icon.duet-input-clear-icon-button.sc-duet-input button.sc-duet-input{top:-24px;right:0}.duet-input-container.has-clear.has-icon.sc-duet-input .duet-input-clear-icon.sc-duet-input{top:-24px;right:24px}.duet-input-container.duet-theme-turva.has-clear.sc-duet-input .duet-input-clear-icon.sc-duet-input button.sc-duet-input{color:rgb(0, 41, 77)}.duet-input-label-container.sc-duet-input{display:flex;flex-direction:row;align-items:flex-start;justify-content:space-between}@media (min-width: 48em){.duet-input-label-container.sc-duet-input{justify-content:flex-start}}.duet-input.sc-duet-input{position:relative;z-index:100;display:block !important;width:100% !important;min-width:8rem;max-width:initial !important;height:auto !important;padding:12px 14px !important;margin:initial !important;margin-bottom:initial !important;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-weight:400 !important;font-variant-numeric:tabular-nums;line-height:1.5 !important;color:rgb(0, 41, 77) !important;cursor:initial !important;background:rgb(255, 255, 255) !important;background-clip:initial !important;border:1px solid rgb(144, 149, 153) !important;border-radius:4px !important;box-shadow:initial !important;transition:box-shadow 150ms ease, border 150ms ease !important}.duet-input.is-number.sc-duet-input{padding-right:112px !important}.duet-input.is-date.sc-duet-input{padding-right:64px !important}.has-error.sc-duet-input .duet-input.sc-duet-input{border-color:rgb(222, 35, 98) !important}.has-error.sc-duet-input .duet-input.sc-duet-input+.duet-input-icon.sc-duet-input{color:rgb(222, 35, 98) !important}.duet-theme-turva.has-error.sc-duet-input .duet-input.sc-duet-input{border-color:rgb(224, 42, 13) !important}.duet-theme-turva.has-error.sc-duet-input .duet-input.sc-duet-input+.duet-input-icon.sc-duet-input{color:rgb(224, 42, 13) !important}.has-icon.sc-duet-input .duet-input.sc-duet-input{padding-right:48px !important}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:rgb(23, 28, 58) !important;border-color:rgb(116, 116, 117) !important}.duet-input.sc-duet-input::-ms-clear{display:none}.duet-input.sc-duet-input::-webkit-contacts-auto-fill-button{display:none !important}.duet-input.sc-duet-input::-webkit-input-placeholder{color:rgb(101, 119, 135);opacity:1 !important;transition:color 300ms ease}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input::-webkit-input-placeholder{color:rgb(116, 116, 117)}.duet-input.sc-duet-input:focus::-webkit-input-placeholder{color:rgb(207, 210, 212)}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus::-webkit-input-placeholder{color:rgb(207, 207, 209)}.duet-input.sc-duet-input::-moz-placeholder{color:rgb(101, 119, 135);opacity:1 !important}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input::-moz-placeholder{color:rgb(116, 116, 117)}.duet-input.sc-duet-input:focus::-moz-placeholder{color:rgb(207, 210, 212)}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus::-moz-placeholder{color:rgb(207, 207, 209)}.duet-input.sc-duet-input:-ms-input-placeholder{color:rgb(101, 119, 135)}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:-ms-input-placeholder{color:rgb(116, 116, 117)}.duet-input.sc-duet-input:focus:-ms-input-placeholder{color:rgb(207, 210, 212)}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus:-ms-input-placeholder{color:rgb(207, 207, 209)}.duet-input[disabled].sc-duet-input{color:rgb(0, 41, 77) !important;cursor:not-allowed !important;background:rgb(245, 248, 250) !important;border-color:rgb(245, 248, 250) !important;box-shadow:none !important;opacity:1 !important;-webkit-text-fill-color:rgb(0, 41, 77) !important}.duet-theme-turva.sc-duet-input .duet-input[disabled].sc-duet-input{color:rgb(23, 28, 58) !important;background:rgb(245, 245, 247) !important;border-color:rgb(245, 245, 247) !important;-webkit-text-fill-color:rgb(23, 28, 58) !important}.duet-input.sc-duet-input:hover:not(:disabled){box-shadow:0 0 0 1px #909599 !important}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:hover:not(:disabled){box-shadow:0 0 0 1px #747475 !important}.has-error.sc-duet-input .duet-input.sc-duet-input:hover:not(:disabled){box-shadow:0 0 0 1px #de2362}.duet-theme-turva.has-error.sc-duet-input .duet-input.sc-duet-input:hover:not(:disabled){box-shadow:0 0 0 1px #e55039}.duet-input.sc-duet-input:focus{border-color:rgb(0, 119, 179) !important;outline:0;box-shadow:0 0 0 1px #0077b3 !important;transition:none}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus{border-color:rgb(23, 28, 58) !important;box-shadow:0 0 0 1px #171c3a !important}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus+.duet-input-icon.sc-duet-input{color:rgb(23, 28, 58)}.has-error.sc-duet-input .duet-input.sc-duet-input:focus{box-shadow:0 0 0 1px #de2362}.duet-theme-turva.has-error.sc-duet-input .duet-input.sc-duet-input:focus{box-shadow:0 0 0 1px #e55039}.duet-input.sc-duet-input:focus+.duet-input-icon.sc-duet-input{color:rgb(0, 119, 179)}.duet-input[type=search].sc-duet-input:not(:placeholder-shown):focus+.duet-input-icon.sc-duet-input{display:none}.duet-input.sc-duet-input:not(:focus):not(:hover):invalid{box-shadow:none !important}.duet-input[type=number].sc-duet-input::-webkit-inner-spin-button,.duet-input[type=number].sc-duet-input::-webkit-outer-spin-button,.duet-input[type=time].sc-duet-input::-webkit-inner-spin-button,.duet-input[type=time].sc-duet-input::-webkit-outer-spin-button{display:none;margin:0;-webkit-appearance:none}.duet-input.sc-duet-input::-webkit-search-cancel-button{margin-right:-28px}.duet-input-help.sc-duet-input{display:block;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:0.875rem;font-weight:400;line-height:1.25;color:rgb(101, 119, 135);border-radius:4px}.duet-input-help.sc-duet-input span.sc-duet-input{display:block;margin-top:8px}.duet-theme-turva.sc-duet-input .duet-input-help.sc-duet-input{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:rgb(116, 116, 117)}.has-error.sc-duet-input .duet-input-help.sc-duet-input{color:rgb(222, 35, 98)}.duet-theme-turva.has-error.sc-duet-input .duet-input-help.sc-duet-input{color:rgb(224, 42, 13)}.duet-label-hidden.sc-duet-input duet-label.sc-duet-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}.duet-input-relative.sc-duet-input{position:relative;width:100%}.duet-input-variation-button.sc-duet-input{position:relative;width:100%}.duet-input-variation-button.sc-duet-input .duet-input-relative.sc-duet-input{display:flex;flex-direction:row;flex-wrap:nowrap;align-content:center;align-items:center;justify-content:flex-start;width:auto}.duet-input-variation-button.sc-duet-input .duet-input-relative.sc-duet-input duet-button.sc-duet-input{z-index:250;margin-bottom:0}.duet-input-variation-button.sc-duet-input .duet-input-relative.sc-duet-input .duet-input.sc-duet-input{border-right-width:0 !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important}.duet-input-variation-revealable.sc-duet-input{position:relative;width:100%}.duet-input-variation-revealable.sc-duet-input .sc-duet-input::-ms-reveal{display:none}.duet-input-variation-revealable.sc-duet-input .duet-input-relative.sc-duet-input{display:flex;flex-direction:row;flex-wrap:nowrap;align-content:center;align-items:center;justify-content:flex-start;width:auto;border:1px solid rgb(144, 149, 153);border-radius:4px;box-shadow:initial;transition:box-shadow 150ms ease, border 150ms ease}.duet-theme-turva.sc-duet-input .duet-input-variation-revealable.sc-duet-input .duet-input-relative.sc-duet-input{border-color:rgb(116, 116, 117)}.duet-input-variation-revealable.sc-duet-input .duet-input-relative.sc-duet-input duet-button.sc-duet-input{z-index:250;margin-bottom:0}.duet-input-variation-revealable.sc-duet-input .duet-input-relative.sc-duet-input .duet-input.sc-duet-input{border-width:0 !important}.duet-input-variation-revealable.sc-duet-input .duet-input-relative.sc-duet-input .duet-input.sc-duet-input:focus,.duet-input-variation-revealable.sc-duet-input .duet-input-relative.sc-duet-input .duet-input.sc-duet-input:hover{border-width:0 !important;box-shadow:none !important}.duet-input-variation-revealable.disabled.sc-duet-input .duet-input-relative.sc-duet-input{background:rgb(245, 248, 250);border-color:rgb(225, 227, 230);box-shadow:none}.duet-input-variation-revealable.has-error.sc-duet-input .duet-input-relative.sc-duet-input{border-color:rgb(222, 35, 98)}.duet-input-variation-revealable.duet-theme-turva.has-error.sc-duet-input .duet-input-relative.sc-duet-input{border-color:rgb(224, 42, 13)}.duet-input-variation-revealable.has-focus.sc-duet-input .duet-input-relative.sc-duet-input{border-color:rgb(0, 119, 179);box-shadow:0 0 0 1px #0077b3 !important}.duet-input-variation-revealable.duet-theme-turva.has-focus.sc-duet-input .duet-input-relative.sc-duet-input{border-color:rgb(23, 28, 58);box-shadow:0 0 0 1px #171c3a !important}.duet-input-variation-revealable.sc-duet-input:hover:not(.disabled) .duet-input-relative.sc-duet-input{box-shadow:0 0 0 1px #909599}.duet-input-variation-revealable.duet-theme-turva.sc-duet-input:hover:not(.disabled) .duet-input-relative.sc-duet-input{box-shadow:0 0 0 1px #747475}.duet-input-variation-revealable.has-error.sc-duet-input:hover:not(.disabled) .duet-input-relative.sc-duet-input{box-shadow:0 0 0 1px #de2362}.duet-input-variation-revealable.duet-theme-turva.has-error.sc-duet-input:hover:not(.disabled) .duet-input-relative.sc-duet-input{box-shadow:0 0 0 1px #e55039}";
14323
+ const duetInputCss = "*.sc-duet-input,*.sc-duet-input::after,*.sc-duet-input::before{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none}.sc-duet-input-h{box-sizing:border-box;padding:0;margin:0;background:transparent;border:0;-moz-appearance:none;-webkit-appearance:none;appearance:none;margin-right:16px !important;margin-bottom:12px !important;display:inline-flex;width:100%;min-width:calc(33.333% - 8px);max-width:100%;text-align:left;vertical-align:bottom}.sc-duet-input-h:last-child,.sc-duet-input-h:last-of-type{margin-right:0 !important}@media (min-width: 36em){.sc-duet-input-h{width:calc(50% - 16px - 3px)}}.duet-expand.sc-duet-input-h{width:100% !important}.duet-m-0.sc-duet-input-h{margin:0 !important}input[type=search].sc-duet-input::-webkit-search-cancel-button{-webkit-appearance:none}duet-tooltip.sc-duet-input,.sc-duet-input-s>duet-tooltip{position:relative;top:12px;right:0}@media (min-width: 48em){duet-tooltip.sc-duet-input,.sc-duet-input-s>duet-tooltip{right:auto}}duet-caption.sc-duet-input:not(:last-of-type){margin-bottom:0}.duet-input-placeholder.sc-duet-input{position:absolute;top:-9px;left:9px;z-index:200;display:block;width:auto;max-width:60%;padding:0 0.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:rgb(255, 255, 255)}.duet-input-icon.sc-duet-input{position:absolute;top:50%;right:16px;z-index:200;width:20px;height:20px;font-size:0;line-height:normal;color:rgb(0, 41, 77);pointer-events:none;transform:translateY(-50%)}.duet-theme-turva.sc-duet-input .duet-input-icon.sc-duet-input{color:rgb(23, 28, 58)}.duet-input-container.sc-duet-input{position:relative;width:100%;height:100%}.duet-input-container.has-clear.sc-duet-input .duet-input-clear-icon.sc-duet-input{position:relative;z-index:250}.duet-input-container.has-clear.sc-duet-input .duet-input-clear-icon.sc-duet-input button.sc-duet-input{position:absolute;top:-24px;right:-24px;min-width:48px;min-height:48px;color:rgb(0, 77, 128)}.duet-input-container.has-clear.sc-duet-input .duet-input-clear-icon.sc-duet-input button.sc-duet-input:focus{outline:0;box-shadow:0 0 0 4px rgba(0, 119, 179, 0.3), 0 0 0 1px #0077b3}.duet-theme-turva.sc-duet-input .duet-input-container.has-clear.sc-duet-input .duet-input-clear-icon.sc-duet-input button.sc-duet-input:focus,.duet-input-container.has-clear.sc-duet-input .duet-input-clear-icon.sc-duet-input button.sc-duet-input:focus.duet-theme-turva{box-shadow:0 0 0 4px rgba(23, 28, 58, 0.2), 0 0 0 1px #171c3a}.duet-input-container.has-clear.sc-duet-input .duet-input-clear-icon.sc-duet-input button.sc-duet-input:active{opacity:0.75;transition:none}.duet-input-container.has-clear.sc-duet-input .duet-input-clear-icon.duet-input-clear-icon-single.sc-duet-input button.sc-duet-input{top:-48px;right:0}.duet-input-container.has-clear.sc-duet-input .duet-input-clear-icon.duet-input-clear-icon-double.sc-duet-input button.sc-duet-input{top:-24px;right:12px}.duet-input-container.has-clear.sc-duet-input .duet-input-clear-icon.duet-input-clear-icon-button.sc-duet-input button.sc-duet-input{top:-24px;right:0}.duet-input-container.has-clear.has-icon.sc-duet-input .duet-input-clear-icon.sc-duet-input{top:-24px;right:24px}.duet-input-container.duet-theme-turva.has-clear.sc-duet-input .duet-input-clear-icon.sc-duet-input button.sc-duet-input{color:rgb(0, 41, 77)}.duet-input-label-container.sc-duet-input{display:flex;flex-direction:row;align-items:flex-start;justify-content:space-between}@media (min-width: 48em){.duet-input-label-container.sc-duet-input{justify-content:flex-start}}.duet-input.sc-duet-input{position:relative;z-index:100;display:block !important;width:100% !important;min-width:8rem;max-width:initial !important;height:auto !important;padding:12px 14px !important;margin:initial !important;margin-bottom:initial !important;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:1rem;font-weight:400 !important;font-variant-numeric:tabular-nums;line-height:1.5 !important;color:rgb(0, 41, 77) !important;cursor:initial !important;background:rgb(255, 255, 255) !important;background-clip:initial !important;border:1px solid rgb(144, 149, 153) !important;border-radius:4px !important;box-shadow:initial !important;transition:box-shadow 150ms ease, border 150ms ease !important}.duet-input.is-number.sc-duet-input{padding-right:112px !important}.duet-input.is-date.sc-duet-input{padding-right:64px !important}.duet-input.after-chip.sc-duet-input{padding-left:8px !important}.has-error.sc-duet-input .duet-input.sc-duet-input{border-color:rgb(222, 35, 98) !important}.has-error.sc-duet-input .duet-input.sc-duet-input+.duet-input-icon.sc-duet-input{color:rgb(222, 35, 98) !important}.duet-theme-turva.has-error.sc-duet-input .duet-input.sc-duet-input{border-color:rgb(224, 42, 13) !important}.duet-theme-turva.has-error.sc-duet-input .duet-input.sc-duet-input+.duet-input-icon.sc-duet-input{color:rgb(224, 42, 13) !important}.has-icon.sc-duet-input .duet-input.sc-duet-input{padding-right:48px !important}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:rgb(23, 28, 58) !important;border-color:rgb(116, 116, 117) !important}.duet-input.sc-duet-input::-ms-clear{display:none}.duet-input.sc-duet-input::-webkit-contacts-auto-fill-button{display:none !important}.duet-input.sc-duet-input::-webkit-input-placeholder{color:rgb(101, 119, 135);opacity:1 !important;transition:color 300ms ease}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input::-webkit-input-placeholder{color:rgb(116, 116, 117)}.duet-input.sc-duet-input:focus::-webkit-input-placeholder{color:rgb(207, 210, 212)}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus::-webkit-input-placeholder{color:rgb(207, 207, 209)}.duet-input.sc-duet-input::-moz-placeholder{color:rgb(101, 119, 135);opacity:1 !important}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input::-moz-placeholder{color:rgb(116, 116, 117)}.duet-input.sc-duet-input:focus::-moz-placeholder{color:rgb(207, 210, 212)}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus::-moz-placeholder{color:rgb(207, 207, 209)}.duet-input.sc-duet-input:-ms-input-placeholder{color:rgb(101, 119, 135)}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:-ms-input-placeholder{color:rgb(116, 116, 117)}.duet-input.sc-duet-input:focus:-ms-input-placeholder{color:rgb(207, 210, 212)}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus:-ms-input-placeholder{color:rgb(207, 207, 209)}.duet-input[disabled].sc-duet-input{color:rgb(0, 41, 77) !important;cursor:not-allowed !important;background:rgb(245, 248, 250) !important;border-color:rgb(245, 248, 250) !important;box-shadow:none !important;opacity:1 !important;-webkit-text-fill-color:rgb(0, 41, 77) !important}.duet-theme-turva.sc-duet-input .duet-input[disabled].sc-duet-input{color:rgb(23, 28, 58) !important;background:rgb(245, 245, 247) !important;border-color:rgb(245, 245, 247) !important;-webkit-text-fill-color:rgb(23, 28, 58) !important}.duet-input.sc-duet-input:hover:not(:disabled){box-shadow:0 0 0 1px #909599 !important}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:hover:not(:disabled){box-shadow:0 0 0 1px #747475 !important}.has-error.sc-duet-input .duet-input.sc-duet-input:hover:not(:disabled){box-shadow:0 0 0 1px #de2362}.duet-theme-turva.has-error.sc-duet-input .duet-input.sc-duet-input:hover:not(:disabled){box-shadow:0 0 0 1px #e55039}.duet-input.sc-duet-input:focus{border-color:rgb(0, 119, 179) !important;outline:0;box-shadow:0 0 0 1px #0077b3 !important;transition:none}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus{border-color:rgb(23, 28, 58) !important;box-shadow:0 0 0 1px #171c3a !important}.duet-theme-turva.sc-duet-input .duet-input.sc-duet-input:focus+.duet-input-icon.sc-duet-input{color:rgb(23, 28, 58)}.has-error.sc-duet-input .duet-input.sc-duet-input:focus{box-shadow:0 0 0 1px #de2362}.duet-theme-turva.has-error.sc-duet-input .duet-input.sc-duet-input:focus{box-shadow:0 0 0 1px #e55039}.duet-input.sc-duet-input:focus+.duet-input-icon.sc-duet-input{color:rgb(0, 119, 179)}.duet-input[type=search].sc-duet-input:not(:placeholder-shown):focus+.duet-input-icon.sc-duet-input{display:none}.duet-input.sc-duet-input:not(:focus):not(:hover):invalid{box-shadow:none !important}.duet-input[type=number].sc-duet-input::-webkit-inner-spin-button,.duet-input[type=number].sc-duet-input::-webkit-outer-spin-button,.duet-input[type=time].sc-duet-input::-webkit-inner-spin-button,.duet-input[type=time].sc-duet-input::-webkit-outer-spin-button{display:none;margin:0;-webkit-appearance:none}.duet-input.sc-duet-input::-webkit-search-cancel-button{margin-right:-28px}.duet-input-help.sc-duet-input{display:block;font-family:\"localtapiola-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";font-size:0.875rem;font-weight:400;line-height:1.25;color:rgb(101, 119, 135);border-radius:4px}.duet-input-help.sc-duet-input span.sc-duet-input{display:block;margin-top:8px}.duet-theme-turva.sc-duet-input .duet-input-help.sc-duet-input{font-family:\"turva-sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:rgb(116, 116, 117)}.has-error.sc-duet-input .duet-input-help.sc-duet-input{color:rgb(222, 35, 98)}.duet-theme-turva.has-error.sc-duet-input .duet-input-help.sc-duet-input{color:rgb(224, 42, 13)}.duet-label-hidden.sc-duet-input duet-label.sc-duet-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}.duet-input-relative.sc-duet-input{position:relative;width:100%}.duet-input-variation-button.sc-duet-input{position:relative;width:100%}.duet-input-variation-button.sc-duet-input .duet-input-relative.sc-duet-input{display:flex;flex-direction:row;flex-wrap:nowrap;align-content:center;align-items:center;justify-content:flex-start;width:auto}.duet-input-variation-button.sc-duet-input .duet-input-relative.sc-duet-input duet-button.sc-duet-input{z-index:250;margin-bottom:0}.duet-input-variation-button.sc-duet-input .duet-input-relative.sc-duet-input .duet-input.sc-duet-input{border-right-width:0 !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important}.duet-input-variation-revealable.sc-duet-input{position:relative;width:100%}.duet-input-variation-revealable.sc-duet-input .sc-duet-input::-ms-reveal{display:none}.duet-input-variation-revealable.sc-duet-input .duet-input-relative.sc-duet-input{display:flex;flex-direction:row;flex-wrap:nowrap;align-content:center;align-items:center;justify-content:flex-start;width:auto;border:1px solid rgb(144, 149, 153);border-radius:4px;box-shadow:initial;transition:box-shadow 150ms ease, border 150ms ease}.duet-theme-turva.sc-duet-input .duet-input-variation-revealable.sc-duet-input .duet-input-relative.sc-duet-input{border-color:rgb(116, 116, 117)}.duet-input-variation-revealable.sc-duet-input .duet-input-relative.sc-duet-input duet-button.sc-duet-input{z-index:250;margin-bottom:0}.duet-input-variation-revealable.sc-duet-input .duet-input-relative.sc-duet-input .duet-input.sc-duet-input{border-width:0 !important}.duet-input-variation-revealable.sc-duet-input .duet-input-relative.sc-duet-input .duet-input.sc-duet-input:focus,.duet-input-variation-revealable.sc-duet-input .duet-input-relative.sc-duet-input .duet-input.sc-duet-input:hover{border-width:0 !important;box-shadow:none !important}.duet-input-variation-revealable.disabled.sc-duet-input .duet-input-relative.sc-duet-input{background:rgb(245, 248, 250);border-color:rgb(225, 227, 230);box-shadow:none}.duet-input-variation-revealable.has-error.sc-duet-input .duet-input-relative.sc-duet-input{border-color:rgb(222, 35, 98)}.duet-input-variation-revealable.duet-theme-turva.has-error.sc-duet-input .duet-input-relative.sc-duet-input{border-color:rgb(224, 42, 13)}.duet-input-variation-revealable.has-focus.sc-duet-input .duet-input-relative.sc-duet-input{border-color:rgb(0, 119, 179);box-shadow:0 0 0 1px #0077b3 !important}.duet-input-variation-revealable.duet-theme-turva.has-focus.sc-duet-input .duet-input-relative.sc-duet-input{border-color:rgb(23, 28, 58);box-shadow:0 0 0 1px #171c3a !important}.duet-input-variation-revealable.sc-duet-input:hover:not(.disabled) .duet-input-relative.sc-duet-input{box-shadow:0 0 0 1px #909599}.duet-input-variation-revealable.duet-theme-turva.sc-duet-input:hover:not(.disabled) .duet-input-relative.sc-duet-input{box-shadow:0 0 0 1px #747475}.duet-input-variation-revealable.has-error.sc-duet-input:hover:not(.disabled) .duet-input-relative.sc-duet-input{box-shadow:0 0 0 1px #de2362}.duet-input-variation-revealable.duet-theme-turva.has-error.sc-duet-input:hover:not(.disabled) .duet-input-relative.sc-duet-input{box-shadow:0 0 0 1px #e55039}.duet-input-container.has-chips.sc-duet-input .duet-input-relative.sc-duet-input{display:flex;flex-direction:row;flex-wrap:wrap;align-content:center;align-items:center;justify-content:flex-start;width:auto;border:1px solid rgb(144, 149, 153);border-radius:4px;box-shadow:initial;transition:box-shadow 150ms ease, border 150ms ease}.duet-theme-turva.sc-duet-input .duet-input-container.has-chips.sc-duet-input .duet-input-relative.sc-duet-input{border-color:rgb(116, 116, 117)}.duet-input-container.has-chips.sc-duet-input .duet-input-relative.sc-duet-input .duet-input.sc-duet-input{flex-basis:4rem;flex-grow:1;border-width:0 !important}.duet-input-container.has-chips.sc-duet-input .duet-input-relative.sc-duet-input .duet-input.sc-duet-input:focus,.duet-input-container.has-chips.sc-duet-input .duet-input-relative.sc-duet-input .duet-input.sc-duet-input:hover{border-width:0 !important;box-shadow:none !important}";
14187
14324
 
14188
14325
  /**
14189
14326
  * @slot tooltip - Use to place a tooltip alongside the label.
@@ -14350,6 +14487,7 @@ class DuetInput {
14350
14487
  this.required = false;
14351
14488
  this.type = "text";
14352
14489
  this.variation = "default";
14490
+ this.chips = false;
14353
14491
  this.label = "Label";
14354
14492
  this.labelColor = undefined;
14355
14493
  this.labelWeight = undefined;
@@ -14378,7 +14516,7 @@ class DuetInput {
14378
14516
  if (((_a = this === null || this === void 0 ? void 0 : this.nativeInput) === null || _a === void 0 ? void 0 : _a.value) !== this.value) {
14379
14517
  const restoreCursor = resetCursor(this.nativeInput);
14380
14518
  this.nativeInput.value = this.value;
14381
- // restore selection position after having set value
14519
+ // restore selection position after having set valuea
14382
14520
  // (in webkit based browsers settings value trigger cursor position and will set it to EndOfText)
14383
14521
  restoreCursor();
14384
14522
  }
@@ -14448,6 +14586,39 @@ class DuetInput {
14448
14586
  this.value = "";
14449
14587
  }
14450
14588
  }
14589
+ getAllChips() {
14590
+ return Array.from(this.element.querySelectorAll(".duet-input-relative duet-chip"));
14591
+ }
14592
+ /**
14593
+ * @internal
14594
+ * Add a chip to the input
14595
+ */
14596
+ async addChip(chip) {
14597
+ const container = this.element.querySelector(".duet-input-relative");
14598
+ const input = container.querySelector("input");
14599
+ container.insertBefore(chip, input);
14600
+ }
14601
+ /**
14602
+ * @internal
14603
+ * Does the input have a chip with the given value and text
14604
+ */
14605
+ async hasChip({ value, text }) {
14606
+ return this.getAllChips().some(chip => chip.value === value && chip.textContent === text);
14607
+ }
14608
+ /**
14609
+ * @internal
14610
+ * Get all chips from the input
14611
+ */
14612
+ async getChips() {
14613
+ return this.getAllChips();
14614
+ }
14615
+ /**
14616
+ * @internal
14617
+ * Remove all chips from the input
14618
+ */
14619
+ async clearChips() {
14620
+ this.getAllChips().forEach(chip => chip.remove());
14621
+ }
14451
14622
  /**
14452
14623
  * render() function
14453
14624
  * Always the last one in the class.
@@ -14490,6 +14661,7 @@ class DuetInput {
14490
14661
  "required": [4],
14491
14662
  "type": [1],
14492
14663
  "variation": [1],
14664
+ "chips": [4],
14493
14665
  "label": [1025],
14494
14666
  "labelColor": [1025, "label-color"],
14495
14667
  "labelWeight": [1025, "label-weight"],
@@ -14514,7 +14686,11 @@ class DuetInput {
14514
14686
  "isFocused": [32],
14515
14687
  "setFocus": [64],
14516
14688
  "resetCursor": [64],
14517
- "clearInput": [64]
14689
+ "clearInput": [64],
14690
+ "addChip": [64],
14691
+ "hasChip": [64],
14692
+ "getChips": [64],
14693
+ "clearChips": [64]
14518
14694
  },
14519
14695
  "$listeners$": undefined,
14520
14696
  "$lazyBundleId$": "-",