@baloise/ds-core 16.0.3 → 16.1.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 (473) hide show
  1. package/components/all.d.ts +234 -0
  2. package/components/all.js +350 -0
  3. package/components/aria.js +3 -0
  4. package/components/bal-accordion-details.js +4 -4
  5. package/components/bal-card.js +2 -2
  6. package/components/bal-card2.js +3 -3
  7. package/components/bal-carousel2.js +1 -1
  8. package/components/bal-checkbox-button.js +6 -6
  9. package/components/bal-checkbox-group.js +1 -1
  10. package/components/bal-checkbox2.js +3 -2
  11. package/components/bal-close2.js +1 -1
  12. package/components/bal-content.js +4 -4
  13. package/components/bal-date-calendar-cell.js +2 -2
  14. package/components/bal-date-calendar-cell2.js +3 -3
  15. package/components/bal-date-calendar2.js +3 -3
  16. package/components/bal-datepicker.js +3 -3
  17. package/components/bal-divider.js +4 -4
  18. package/components/bal-dropdown.d.ts +11 -0
  19. package/components/bal-dropdown.js +710 -0
  20. package/components/bal-field.js +12 -2
  21. package/components/bal-file-upload.js +1 -1
  22. package/components/bal-footer.js +4 -4
  23. package/components/bal-input-slider.js +1 -1
  24. package/components/bal-label.js +2 -2
  25. package/components/bal-label2.js +5 -5
  26. package/components/bal-nav-link-grid-col.js +2 -2
  27. package/components/bal-nav-link-grid-col2.js +4 -4
  28. package/components/bal-nav-link-grid.js +2 -2
  29. package/components/bal-nav-link-grid2.js +4 -4
  30. package/components/bal-nav-link-group.js +4 -4
  31. package/components/bal-nav-link.js +2 -2
  32. package/components/bal-nav-link2.js +4 -4
  33. package/components/bal-nav.js +8 -8
  34. package/components/bal-notices.js +3 -3
  35. package/components/bal-number-input.js +31 -13
  36. package/components/bal-option-list.d.ts +11 -0
  37. package/components/bal-option-list.js +459 -0
  38. package/components/bal-option.d.ts +11 -0
  39. package/components/bal-option.js +171 -0
  40. package/components/bal-popup.js +1 -1
  41. package/components/bal-radio-button.js +5 -5
  42. package/components/bal-radio-group.js +1 -1
  43. package/components/bal-radio2.js +1 -1
  44. package/components/bal-select2.js +4 -4
  45. package/components/bal-spinner2.js +54 -6
  46. package/components/bal-stack.js +2 -2
  47. package/components/bal-stack2.js +4 -4
  48. package/components/bal-steps.js +1 -1
  49. package/components/bal-tabs2.js +2 -2
  50. package/components/bal-tag2.js +1 -1
  51. package/components/config.default.js +1 -0
  52. package/components/date.js +5 -1
  53. package/components/index.esm.js +1 -1
  54. package/components/index.js +9 -1
  55. package/components/option.js +46 -0
  56. package/components/tokens.esm.js +1 -1
  57. package/dist/baloise-design-system/baloise-design-system.esm.js +1 -1
  58. package/dist/baloise-design-system/baloise-design-system.js +1 -1
  59. package/dist/baloise-design-system/index.esm.js +1 -1
  60. package/dist/baloise-design-system/p-013b4c72.system.js +1 -0
  61. package/dist/baloise-design-system/p-0639833837.system.entry.js +1 -0
  62. package/dist/baloise-design-system/{p-88852ce68d.system.entry.js → p-06e9a468fc.system.entry.js} +1 -1
  63. package/dist/baloise-design-system/p-0793c0159f.system.entry.js +1 -0
  64. package/dist/baloise-design-system/{p-720c90ea90.system.entry.js → p-0fed7a5f26.system.entry.js} +1 -1
  65. package/dist/baloise-design-system/p-10b8686d91.entry.js +1 -0
  66. package/dist/baloise-design-system/{p-e113196061.system.entry.js → p-126c79c9e9.system.entry.js} +1 -1
  67. package/dist/baloise-design-system/{p-bb2ec275bb.system.entry.js → p-12bb6ea3e7.system.entry.js} +1 -1
  68. package/dist/baloise-design-system/p-12bcc7da.js +1 -0
  69. package/dist/baloise-design-system/{p-762f45ff6f.entry.js → p-135c5759c5.entry.js} +1 -1
  70. package/dist/baloise-design-system/{p-62770d5d.system.js → p-14ae0709.system.js} +1 -1
  71. package/dist/baloise-design-system/{p-3bbf43bb.system.js → p-1509eaa7.system.js} +1 -1
  72. package/dist/baloise-design-system/{p-946e9e784d.system.entry.js → p-1659bb968c.system.entry.js} +1 -1
  73. package/dist/baloise-design-system/p-187f98a1.system.js +1 -0
  74. package/dist/baloise-design-system/p-18e2e391e0.system.entry.js +1 -0
  75. package/dist/baloise-design-system/p-1de6b20b1c.system.entry.js +1 -0
  76. package/dist/baloise-design-system/{p-1c2dee82c4.system.entry.js → p-222bc9b30e.system.entry.js} +1 -1
  77. package/dist/baloise-design-system/p-22b041a511.entry.js +1 -0
  78. package/dist/baloise-design-system/{p-f62222a85d.entry.js → p-25da216e4f.entry.js} +1 -1
  79. package/dist/baloise-design-system/p-25e0d82e89.system.entry.js +1 -0
  80. package/dist/baloise-design-system/p-2d82b78410.entry.js +1 -0
  81. package/dist/baloise-design-system/{p-a0db085f89.entry.js → p-2d8bd11634.entry.js} +1 -1
  82. package/dist/baloise-design-system/p-2db9030ad9.system.entry.js +1 -0
  83. package/dist/baloise-design-system/{p-8444cfcbed.system.entry.js → p-3128128969.system.entry.js} +1 -1
  84. package/dist/baloise-design-system/{p-9a5cb17cb9.entry.js → p-39bc49bc3d.entry.js} +1 -1
  85. package/dist/baloise-design-system/p-3bad0907.system.js +1 -0
  86. package/dist/baloise-design-system/{p-12786937.js → p-3f1c49d0.js} +1 -1
  87. package/dist/baloise-design-system/{p-33fca72859.entry.js → p-4aba4c66ee.entry.js} +1 -1
  88. package/dist/baloise-design-system/{p-9e4fcb76.js → p-54f81c32.js} +1 -1
  89. package/dist/baloise-design-system/{p-922fd809.system.js → p-55faac1d.system.js} +1 -1
  90. package/dist/baloise-design-system/p-5b571a9fb1.entry.js +1 -0
  91. package/dist/baloise-design-system/{p-671a986aff.entry.js → p-60e94f8144.entry.js} +1 -1
  92. package/dist/baloise-design-system/{p-06e959a11a.entry.js → p-6164f99bb8.entry.js} +1 -1
  93. package/dist/baloise-design-system/p-62ab1f0ae2.system.entry.js +1 -0
  94. package/dist/baloise-design-system/{p-6b80dee13f.system.entry.js → p-62b792a34b.system.entry.js} +1 -1
  95. package/dist/baloise-design-system/{p-8998eeb2a7.system.entry.js → p-74f4b9818b.system.entry.js} +1 -1
  96. package/dist/baloise-design-system/p-77f5e777e6.entry.js +1 -0
  97. package/dist/baloise-design-system/p-7c42a363f3.entry.js +1 -0
  98. package/dist/baloise-design-system/p-7cd815d3e8.entry.js +1 -0
  99. package/dist/baloise-design-system/p-80b45dd4d6.system.entry.js +1 -0
  100. package/dist/baloise-design-system/{p-af5b58ab1c.system.entry.js → p-8870e1f3e0.system.entry.js} +1 -1
  101. package/dist/baloise-design-system/{p-3cb83cf9.system.js → p-8a87b9a8.system.js} +1 -1
  102. package/dist/baloise-design-system/{p-a5568e05fb.system.entry.js → p-8c209ac52b.system.entry.js} +1 -1
  103. package/dist/baloise-design-system/p-8f77c423ad.entry.js +1 -0
  104. package/dist/baloise-design-system/{p-32bc2b926a.entry.js → p-8fe94b9e21.entry.js} +1 -1
  105. package/dist/baloise-design-system/{p-1b76afbf.js → p-94efe2aa.js} +1 -1
  106. package/dist/baloise-design-system/{p-0ce86357bd.entry.js → p-9658f4a66f.entry.js} +1 -1
  107. package/dist/baloise-design-system/p-9a0640d065.entry.js +1 -0
  108. package/dist/baloise-design-system/{p-c3bd665a8b.entry.js → p-9e167705ca.entry.js} +1 -1
  109. package/dist/baloise-design-system/p-9ecce014c2.system.entry.js +1 -0
  110. package/dist/baloise-design-system/p-a19d1e1d.js +1 -0
  111. package/dist/baloise-design-system/p-a7e5ee75e2.entry.js +1 -0
  112. package/dist/baloise-design-system/{p-9cc5ae9e5c.entry.js → p-a8022ee701.entry.js} +1 -1
  113. package/dist/baloise-design-system/p-a97cbb7dda.entry.js +1 -0
  114. package/dist/baloise-design-system/p-acb5cea0.system.js +1 -0
  115. package/dist/baloise-design-system/p-ae28b86fe5.entry.js +1 -0
  116. package/dist/baloise-design-system/p-b779742f50.entry.js +1 -0
  117. package/dist/baloise-design-system/{p-cee3cd08.js → p-b8d99064.js} +1 -1
  118. package/dist/baloise-design-system/p-b8f085f7b5.system.entry.js +1 -0
  119. package/dist/baloise-design-system/p-b97d9336a7.system.entry.js +1 -0
  120. package/dist/baloise-design-system/{p-b3a2290c0d.entry.js → p-b9f197815f.entry.js} +1 -1
  121. package/dist/baloise-design-system/{p-9e7610a20f.system.entry.js → p-bb3914c87a.system.entry.js} +1 -1
  122. package/dist/baloise-design-system/p-bb6304d0.system.js +1 -0
  123. package/dist/baloise-design-system/p-bcbb5b59f3.system.entry.js +1 -0
  124. package/dist/baloise-design-system/p-bcca1ed3.system.js +1 -0
  125. package/dist/baloise-design-system/{p-1cdfb98b54.entry.js → p-bcebf41b74.entry.js} +1 -1
  126. package/dist/baloise-design-system/p-bd5de78b2c.entry.js +1 -0
  127. package/dist/baloise-design-system/p-c304d5fa9c.entry.js +1 -0
  128. package/dist/baloise-design-system/{p-8177dec3.system.js → p-cc61fac8.system.js} +1 -1
  129. package/dist/baloise-design-system/{p-ac825842e4.system.entry.js → p-cd8e72d87f.system.entry.js} +1 -1
  130. package/dist/baloise-design-system/{p-a9300668b4.system.entry.js → p-d16557d133.system.entry.js} +1 -1
  131. package/dist/baloise-design-system/p-d7a758b3.js +1 -0
  132. package/dist/baloise-design-system/{p-33cd610840.system.entry.js → p-d919753ed0.system.entry.js} +1 -1
  133. package/dist/baloise-design-system/p-d9b38501.js +1 -0
  134. package/dist/baloise-design-system/p-d9d229a026.entry.js +1 -0
  135. package/dist/baloise-design-system/{p-13227d037a.system.entry.js → p-dbc2d22240.system.entry.js} +1 -1
  136. package/dist/baloise-design-system/{p-aacb0cee66.system.entry.js → p-dce3764ee5.system.entry.js} +1 -1
  137. package/dist/baloise-design-system/p-ddf9b2a289.entry.js +1 -0
  138. package/dist/baloise-design-system/{p-49a8bfb790.system.entry.js → p-e4de708de1.system.entry.js} +1 -1
  139. package/dist/baloise-design-system/p-e60c936359.system.entry.js +1 -0
  140. package/dist/baloise-design-system/p-e78a6409.js +1 -0
  141. package/dist/baloise-design-system/{p-f55c50abfa.system.entry.js → p-f076d1ed4f.system.entry.js} +1 -1
  142. package/dist/baloise-design-system/{p-b34e0daa6e.system.entry.js → p-f0b43f1452.system.entry.js} +1 -1
  143. package/dist/baloise-design-system/p-f12abda2db.entry.js +1 -0
  144. package/dist/baloise-design-system/{p-31d9c875c0.system.entry.js → p-f1b95d78af.system.entry.js} +1 -1
  145. package/dist/baloise-design-system/p-f56fb1a197.entry.js +1 -0
  146. package/dist/baloise-design-system/{p-681d41fc97.entry.js → p-f8974d743d.entry.js} +1 -1
  147. package/dist/baloise-design-system/p-f8a98657a1.entry.js +1 -0
  148. package/dist/cjs/{app-globals-d6bc7866.js → app-globals-ae3a8623.js} +1 -1
  149. package/dist/cjs/aria-c8955a5c.js +5 -0
  150. package/dist/cjs/bal-accordion_4.cjs.entry.js +4 -4
  151. package/dist/cjs/bal-card_6.cjs.entry.js +3 -3
  152. package/dist/cjs/bal-carousel_2.cjs.entry.js +5 -5
  153. package/dist/cjs/bal-checkbox-button.cjs.entry.js +6 -6
  154. package/dist/cjs/bal-checkbox_2.cjs.entry.js +4 -3
  155. package/dist/cjs/bal-close.cjs.entry.js +2 -2
  156. package/dist/cjs/bal-content.cjs.entry.js +4 -4
  157. package/dist/cjs/bal-date-calendar-cell.cjs.entry.js +2 -2
  158. package/dist/cjs/bal-date-calendar_2.cjs.entry.js +5 -5
  159. package/dist/cjs/bal-date.cjs.entry.js +2 -2
  160. package/dist/cjs/bal-datepicker.cjs.entry.js +7 -7
  161. package/dist/cjs/bal-divider.cjs.entry.js +4 -4
  162. package/dist/cjs/bal-dropdown.cjs.entry.js +660 -0
  163. package/dist/cjs/bal-field_5.cjs.entry.js +12 -2
  164. package/dist/cjs/bal-file-upload.cjs.entry.js +1 -1
  165. package/dist/cjs/bal-footer.cjs.entry.js +4 -4
  166. package/dist/cjs/bal-hint_3.cjs.entry.js +3 -3
  167. package/dist/cjs/bal-icon.cjs.entry.js +1 -1
  168. package/dist/cjs/bal-input-slider.cjs.entry.js +1 -1
  169. package/dist/cjs/bal-input-stepper.cjs.entry.js +1 -1
  170. package/dist/cjs/bal-label.cjs.entry.js +6 -6
  171. package/dist/cjs/bal-list_8.cjs.entry.js +3 -3
  172. package/dist/cjs/bal-logo.cjs.entry.js +3 -3
  173. package/dist/cjs/bal-nav_8.cjs.entry.js +28 -28
  174. package/dist/cjs/bal-navbar_5.cjs.entry.js +3 -3
  175. package/dist/cjs/bal-notices.cjs.entry.js +3 -3
  176. package/dist/cjs/bal-number-input.cjs.entry.js +32 -14
  177. package/dist/cjs/bal-option_2.cjs.entry.js +541 -0
  178. package/dist/cjs/bal-pagination.cjs.entry.js +4 -4
  179. package/dist/cjs/bal-popover_2.cjs.entry.js +3 -3
  180. package/dist/cjs/bal-progress-bar.cjs.entry.js +3 -3
  181. package/dist/cjs/bal-radio-button.cjs.entry.js +5 -5
  182. package/dist/cjs/bal-radio_2.cjs.entry.js +2 -2
  183. package/dist/cjs/bal-select_2.cjs.entry.js +3 -3
  184. package/dist/cjs/bal-shape.cjs.entry.js +1 -1
  185. package/dist/cjs/bal-spinner.cjs.entry.js +49 -4
  186. package/dist/cjs/bal-stack.cjs.entry.js +4 -4
  187. package/dist/cjs/bal-steps.cjs.entry.js +4 -4
  188. package/dist/cjs/bal-tab-item_2.cjs.entry.js +5 -5
  189. package/dist/cjs/bal-tag_2.cjs.entry.js +1 -1
  190. package/dist/cjs/bal-time-input.cjs.entry.js +1 -1
  191. package/dist/cjs/baloise-design-system.cjs.js +4 -4
  192. package/dist/cjs/{breakpoints.decorator-7f888011.js → breakpoints.decorator-47fd6060.js} +1 -1
  193. package/dist/cjs/{breakpoints.subject-28c980cd.js → breakpoints.subject-66093c8f.js} +1 -1
  194. package/dist/cjs/{config.default-32725178.js → config.default-5bdd6e3d.js} +1 -0
  195. package/dist/cjs/{date-df1d61a8.js → date-3e33b208.js} +5 -1
  196. package/dist/cjs/index.cjs.js +7 -5
  197. package/dist/cjs/{initialize-e38e7028.js → initialize-2a19d091.js} +9 -2
  198. package/dist/cjs/loader.cjs.js +4 -4
  199. package/dist/cjs/option-c33cf2b8.js +49 -0
  200. package/dist/cjs/{tokens.esm-89d0f18d.js → tokens.esm-bb0ef2db.js} +1 -1
  201. package/dist/collection/collection-manifest.json +14 -0
  202. package/dist/collection/components/bal-accordion/bal-accordion-details/bal-accordion-details.js +2 -2
  203. package/dist/collection/components/bal-card/bal-card.js +1 -1
  204. package/dist/collection/components/bal-carousel/controls/tab-control.js +1 -1
  205. package/dist/collection/components/bal-checkbox/bal-checkbox-button/bal-checkbox-button.css +1 -1
  206. package/dist/collection/components/bal-checkbox/bal-checkbox-button/bal-checkbox-button.js +3 -3
  207. package/dist/collection/components/bal-checkbox/bal-checkbox-group/bal-checkbox-group.js +1 -1
  208. package/dist/collection/components/bal-checkbox/bal-checkbox.js +2 -1
  209. package/dist/collection/components/bal-checkbox/radio-checkbox.css +1 -1
  210. package/dist/collection/components/bal-close/bal-close.js +1 -1
  211. package/dist/collection/components/bal-content/bal-content.js +2 -2
  212. package/dist/collection/components/bal-date/bal-date-calendar/components/bal-date-calendar__gird.js +1 -1
  213. package/dist/collection/components/bal-date/bal-date-calendar/components/bal-date-calendar__list.js +1 -1
  214. package/dist/collection/components/bal-date/bal-date-calendar-cell/bal-date-calendar-cell.js +1 -1
  215. package/dist/collection/components/bal-datepicker/bal-datepicker.js +3 -3
  216. package/dist/collection/components/bal-divider/bal-divider.js +2 -2
  217. package/dist/collection/components/bal-dropdown/bal-dropdown.css +1 -0
  218. package/dist/collection/components/bal-dropdown/bal-dropdown.interfaces.js +4 -0
  219. package/dist/collection/components/bal-dropdown/bal-dropdown.js +882 -0
  220. package/dist/collection/components/bal-field/bal-field.js +12 -2
  221. package/dist/collection/components/bal-file-upload/components/file-list.js +1 -1
  222. package/dist/collection/components/bal-footer/bal-footer.js +3 -3
  223. package/dist/collection/components/bal-input-slider/bal-input-slider.js +1 -1
  224. package/dist/collection/components/bal-label/bal-label.js +3 -3
  225. package/dist/collection/components/bal-nav/bal-nav-link/bal-nav-link.js +2 -2
  226. package/dist/collection/components/bal-nav/bal-nav-link-grid/bal-nav-link-grid.js +2 -2
  227. package/dist/collection/components/bal-nav/bal-nav-link-grid-col/bal-nav-link-grid-col.js +2 -2
  228. package/dist/collection/components/bal-nav/bal-nav-link-group/bal-nav-link-group.js +2 -2
  229. package/dist/collection/components/bal-nav/bal-nav.js +6 -6
  230. package/dist/collection/components/bal-nav/components/section-list.js +2 -2
  231. package/dist/collection/components/bal-nav/components/service-list.js +2 -2
  232. package/dist/collection/components/bal-notices/bal-notices.js +1 -1
  233. package/dist/collection/components/bal-number-input/bal-number-input.js +5 -0
  234. package/dist/collection/components/bal-number-input/bal-number-input.utils.js +27 -14
  235. package/dist/collection/components/bal-number-input/bal-number-input.utils.spec.js +82 -0
  236. package/dist/collection/components/bal-option/bal-option.css +1 -0
  237. package/dist/collection/components/bal-option/bal-option.interfaces.js +4 -0
  238. package/dist/collection/components/bal-option/bal-option.js +360 -0
  239. package/dist/collection/components/bal-option-list/bal-option-list.css +1 -0
  240. package/dist/collection/components/bal-option-list/bal-option-list.interfaces.js +4 -0
  241. package/dist/collection/components/bal-option-list/bal-option-list.js +939 -0
  242. package/dist/collection/components/bal-radio/bal-radio-button/bal-radio-button.js +3 -3
  243. package/dist/collection/components/bal-radio/bal-radio-group/bal-radio-group.js +1 -1
  244. package/dist/collection/components/bal-select/bal-select.js +4 -4
  245. package/dist/collection/components/bal-spinner/bal-spinner.css +1 -1
  246. package/dist/collection/components/bal-spinner/bal-spinner.interfaces.js +4 -0
  247. package/dist/collection/components/bal-spinner/bal-spinner.js +83 -4
  248. package/dist/collection/components/bal-stack/bal-stack.js +2 -2
  249. package/dist/collection/components/bal-steps/bal-steps.js +1 -1
  250. package/dist/collection/components/bal-tabs/components/tab-nav.js +1 -1
  251. package/dist/collection/components/bal-tabs/components/tab-select.js +1 -1
  252. package/dist/collection/components/bal-tag/bal-tag.css +1 -1
  253. package/dist/collection/index.js +1 -0
  254. package/dist/collection/utils/aria.js +1 -0
  255. package/dist/collection/utils/config/config.default.js +1 -0
  256. package/dist/collection/utils/config/config.js +7 -0
  257. package/dist/collection/utils/constants/version.constant.js +1 -1
  258. package/dist/collection/utils/date/date.js +5 -1
  259. package/dist/collection/utils/date/date.spec.js +11 -5
  260. package/dist/collection/utils/dropdown/auto-fill.js +38 -0
  261. package/dist/collection/utils/dropdown/component.js +1 -0
  262. package/dist/collection/utils/dropdown/dropdown.i18n.js +52 -0
  263. package/dist/collection/utils/dropdown/events.js +43 -0
  264. package/dist/collection/utils/dropdown/filters.js +10 -0
  265. package/dist/collection/utils/dropdown/focus.js +19 -0
  266. package/dist/collection/utils/dropdown/form-submit.js +35 -0
  267. package/dist/collection/utils/dropdown/icon.js +15 -0
  268. package/dist/collection/utils/dropdown/index.js +13 -0
  269. package/dist/collection/utils/dropdown/input.js +12 -0
  270. package/dist/collection/utils/dropdown/option-list.js +8 -0
  271. package/dist/collection/utils/dropdown/option.js +44 -0
  272. package/dist/collection/utils/dropdown/popup.js +45 -0
  273. package/dist/collection/utils/dropdown/value.js +103 -0
  274. package/dist/esm/{app-globals-89691d80.js → app-globals-b0dd0fc4.js} +1 -1
  275. package/dist/esm/aria-d5877698.js +3 -0
  276. package/dist/esm/bal-accordion_4.entry.js +4 -4
  277. package/dist/esm/bal-card_6.entry.js +3 -3
  278. package/dist/esm/bal-carousel_2.entry.js +5 -5
  279. package/dist/esm/bal-checkbox-button.entry.js +6 -6
  280. package/dist/esm/bal-checkbox_2.entry.js +5 -4
  281. package/dist/esm/bal-close.entry.js +2 -2
  282. package/dist/esm/bal-content.entry.js +4 -4
  283. package/dist/esm/bal-date-calendar-cell.entry.js +2 -2
  284. package/dist/esm/bal-date-calendar_2.entry.js +6 -6
  285. package/dist/esm/bal-date.entry.js +3 -3
  286. package/dist/esm/bal-datepicker.entry.js +8 -8
  287. package/dist/esm/bal-divider.entry.js +4 -4
  288. package/dist/esm/bal-dropdown.entry.js +656 -0
  289. package/dist/esm/bal-field_5.entry.js +12 -2
  290. package/dist/esm/bal-file-upload.entry.js +2 -2
  291. package/dist/esm/bal-footer.entry.js +5 -5
  292. package/dist/esm/bal-hint_3.entry.js +3 -3
  293. package/dist/esm/bal-icon.entry.js +1 -1
  294. package/dist/esm/bal-input-slider.entry.js +1 -1
  295. package/dist/esm/bal-input-stepper.entry.js +2 -2
  296. package/dist/esm/bal-label.entry.js +6 -6
  297. package/dist/esm/bal-list_8.entry.js +3 -3
  298. package/dist/esm/bal-logo.entry.js +3 -3
  299. package/dist/esm/bal-nav_8.entry.js +24 -24
  300. package/dist/esm/bal-navbar_5.entry.js +3 -3
  301. package/dist/esm/bal-notices.entry.js +3 -3
  302. package/dist/esm/bal-number-input.entry.js +33 -15
  303. package/dist/esm/bal-option_2.entry.js +536 -0
  304. package/dist/esm/bal-pagination.entry.js +4 -4
  305. package/dist/esm/bal-popover_2.entry.js +3 -3
  306. package/dist/esm/bal-popup.entry.js +1 -1
  307. package/dist/esm/bal-progress-bar.entry.js +3 -3
  308. package/dist/esm/bal-radio-button.entry.js +5 -5
  309. package/dist/esm/bal-radio_2.entry.js +3 -3
  310. package/dist/esm/bal-select_2.entry.js +4 -4
  311. package/dist/esm/bal-shape.entry.js +1 -1
  312. package/dist/esm/bal-spinner.entry.js +50 -5
  313. package/dist/esm/bal-stack.entry.js +4 -4
  314. package/dist/esm/bal-steps.entry.js +5 -5
  315. package/dist/esm/bal-tab-item_2.entry.js +6 -6
  316. package/dist/esm/bal-tag_2.entry.js +1 -1
  317. package/dist/esm/bal-time-input.entry.js +1 -1
  318. package/dist/esm/baloise-design-system.js +4 -4
  319. package/dist/esm/{breakpoints.decorator-52979d29.js → breakpoints.decorator-021fbaf0.js} +1 -1
  320. package/dist/esm/{breakpoints.subject-64327a3b.js → breakpoints.subject-ef464f89.js} +1 -1
  321. package/dist/esm/{config.default-79f94bf7.js → config.default-7efdc82d.js} +1 -0
  322. package/dist/esm/{date-db6afc26.js → date-38a0b208.js} +6 -2
  323. package/dist/esm/{index.esm-ec4cba26.js → index.esm-83b1f9c4.js} +1 -1
  324. package/dist/esm/index.js +8 -7
  325. package/dist/esm/{initialize-66615dde.js → initialize-e216cfe4.js} +9 -2
  326. package/dist/esm/loader.js +4 -4
  327. package/dist/esm/option-37cb0282.js +46 -0
  328. package/dist/esm/{tokens.esm-12daa3af.js → tokens.esm-aab9bd61.js} +1 -1
  329. package/dist/esm-es5/app-globals-b0dd0fc4.js +1 -0
  330. package/dist/esm-es5/aria-d5877698.js +1 -0
  331. package/dist/esm-es5/bal-accordion_4.entry.js +1 -1
  332. package/dist/esm-es5/bal-card_6.entry.js +1 -1
  333. package/dist/esm-es5/bal-carousel_2.entry.js +1 -1
  334. package/dist/esm-es5/bal-checkbox-button.entry.js +1 -1
  335. package/dist/esm-es5/bal-checkbox_2.entry.js +1 -1
  336. package/dist/esm-es5/bal-close.entry.js +1 -1
  337. package/dist/esm-es5/bal-content.entry.js +1 -1
  338. package/dist/esm-es5/bal-date-calendar-cell.entry.js +1 -1
  339. package/dist/esm-es5/bal-date-calendar_2.entry.js +1 -1
  340. package/dist/esm-es5/bal-date.entry.js +1 -1
  341. package/dist/esm-es5/bal-datepicker.entry.js +1 -1
  342. package/dist/esm-es5/bal-divider.entry.js +1 -1
  343. package/dist/esm-es5/bal-dropdown.entry.js +1 -0
  344. package/dist/esm-es5/bal-field_5.entry.js +1 -1
  345. package/dist/esm-es5/bal-file-upload.entry.js +1 -1
  346. package/dist/esm-es5/bal-footer.entry.js +1 -1
  347. package/dist/esm-es5/bal-hint_3.entry.js +1 -1
  348. package/dist/esm-es5/bal-icon.entry.js +1 -1
  349. package/dist/esm-es5/bal-input-slider.entry.js +1 -1
  350. package/dist/esm-es5/bal-input-stepper.entry.js +1 -1
  351. package/dist/esm-es5/bal-label.entry.js +1 -1
  352. package/dist/esm-es5/bal-list_8.entry.js +1 -1
  353. package/dist/esm-es5/bal-logo.entry.js +1 -1
  354. package/dist/esm-es5/bal-nav_8.entry.js +1 -1
  355. package/dist/esm-es5/bal-navbar_5.entry.js +1 -1
  356. package/dist/esm-es5/bal-notices.entry.js +1 -1
  357. package/dist/esm-es5/bal-number-input.entry.js +1 -1
  358. package/dist/esm-es5/bal-option_2.entry.js +1 -0
  359. package/dist/esm-es5/bal-pagination.entry.js +1 -1
  360. package/dist/esm-es5/bal-popover_2.entry.js +1 -1
  361. package/dist/esm-es5/bal-popup.entry.js +1 -1
  362. package/dist/esm-es5/bal-progress-bar.entry.js +1 -1
  363. package/dist/esm-es5/bal-radio-button.entry.js +1 -1
  364. package/dist/esm-es5/bal-radio_2.entry.js +1 -1
  365. package/dist/esm-es5/bal-select_2.entry.js +1 -1
  366. package/dist/esm-es5/bal-shape.entry.js +1 -1
  367. package/dist/esm-es5/bal-spinner.entry.js +1 -1
  368. package/dist/esm-es5/bal-stack.entry.js +1 -1
  369. package/dist/esm-es5/bal-steps.entry.js +1 -1
  370. package/dist/esm-es5/bal-tab-item_2.entry.js +1 -1
  371. package/dist/esm-es5/bal-tag_2.entry.js +1 -1
  372. package/dist/esm-es5/bal-time-input.entry.js +1 -1
  373. package/dist/esm-es5/baloise-design-system.js +1 -1
  374. package/dist/esm-es5/breakpoints.decorator-021fbaf0.js +1 -0
  375. package/dist/esm-es5/{breakpoints.subject-64327a3b.js → breakpoints.subject-ef464f89.js} +1 -1
  376. package/dist/esm-es5/{config.default-79f94bf7.js → config.default-7efdc82d.js} +1 -1
  377. package/dist/esm-es5/{date-db6afc26.js → date-38a0b208.js} +1 -1
  378. package/dist/esm-es5/{index.esm-ec4cba26.js → index.esm-83b1f9c4.js} +1 -1
  379. package/dist/esm-es5/index.js +1 -1
  380. package/dist/esm-es5/{initialize-66615dde.js → initialize-e216cfe4.js} +1 -1
  381. package/dist/esm-es5/loader.js +1 -1
  382. package/dist/esm-es5/option-37cb0282.js +1 -0
  383. package/dist/html.html-data.json +357 -0
  384. package/dist/types/components/bal-accordion/bal-accordion-details/bal-accordion-details.d.ts +1 -1
  385. package/dist/types/components/bal-card/bal-card.d.ts +1 -1
  386. package/dist/types/components/bal-checkbox/bal-checkbox-button/bal-checkbox-button.d.ts +1 -1
  387. package/dist/types/components/bal-content/bal-content.d.ts +1 -1
  388. package/dist/types/components/bal-date/bal-date-calendar-cell/bal-date-calendar-cell.d.ts +1 -1
  389. package/dist/types/components/bal-divider/bal-divider.d.ts +1 -1
  390. package/dist/types/components/bal-dropdown/bal-dropdown.d.ts +187 -0
  391. package/dist/types/components/bal-dropdown/bal-dropdown.interfaces.d.ts +14 -0
  392. package/dist/types/components/bal-field/bal-field.d.ts +1 -0
  393. package/dist/types/components/bal-label/bal-label.d.ts +1 -1
  394. package/dist/types/components/bal-nav/bal-nav-link/bal-nav-link.d.ts +1 -1
  395. package/dist/types/components/bal-nav/bal-nav-link-grid/bal-nav-link-grid.d.ts +1 -1
  396. package/dist/types/components/bal-nav/bal-nav-link-grid-col/bal-nav-link-grid-col.d.ts +1 -1
  397. package/dist/types/components/bal-nav/bal-nav-link-group/bal-nav-link-group.d.ts +1 -1
  398. package/dist/types/components/bal-nav/bal-nav.d.ts +1 -1
  399. package/dist/types/components/bal-notices/bal-notices.d.ts +1 -1
  400. package/dist/types/components/bal-number-input/bal-number-input.d.ts +1 -0
  401. package/dist/types/components/bal-number-input/bal-number-input.utils.d.ts +3 -1
  402. package/dist/types/components/bal-option/bal-option.d.ts +91 -0
  403. package/dist/types/components/bal-option/bal-option.interfaces.d.ts +19 -0
  404. package/dist/types/components/bal-option-list/bal-option-list.d.ts +168 -0
  405. package/dist/types/components/bal-option-list/bal-option-list.interfaces.d.ts +5 -0
  406. package/dist/types/components/bal-radio/bal-radio-button/bal-radio-button.d.ts +1 -1
  407. package/dist/types/components/bal-select/bal-select.d.ts +1 -1
  408. package/dist/types/components/bal-spinner/bal-spinner.d.ts +14 -2
  409. package/dist/types/components/bal-spinner/bal-spinner.interfaces.d.ts +6 -0
  410. package/dist/types/components/bal-stack/bal-stack.d.ts +1 -1
  411. package/dist/types/components.d.ts +451 -3
  412. package/dist/types/index.d.ts +1 -0
  413. package/dist/types/interfaces.d.ts +4 -0
  414. package/dist/types/utils/aria.d.ts +1 -0
  415. package/dist/types/utils/config/config.d.ts +2 -0
  416. package/dist/types/utils/config/config.types.d.ts +2 -0
  417. package/dist/types/utils/date/date.d.ts +1 -0
  418. package/dist/types/utils/dropdown/auto-fill.d.ts +8 -0
  419. package/dist/types/utils/dropdown/component.d.ts +34 -0
  420. package/dist/types/utils/dropdown/dropdown.i18n.d.ts +8 -0
  421. package/dist/types/utils/dropdown/events.d.ts +13 -0
  422. package/dist/types/utils/dropdown/filters.d.ts +2 -0
  423. package/dist/types/utils/dropdown/focus.d.ts +13 -0
  424. package/dist/types/utils/dropdown/form-submit.d.ts +22 -0
  425. package/dist/types/utils/dropdown/icon.d.ts +13 -0
  426. package/dist/types/utils/dropdown/index.d.ts +13 -0
  427. package/dist/types/utils/dropdown/input.d.ts +27 -0
  428. package/dist/types/utils/dropdown/option-list.d.ts +17 -0
  429. package/dist/types/utils/dropdown/option.d.ts +25 -0
  430. package/dist/types/utils/dropdown/popup.d.ts +9 -0
  431. package/dist/types/utils/dropdown/value.d.ts +28 -0
  432. package/package.json +8 -7
  433. package/dist/baloise-design-system/p-05b55c958d.system.entry.js +0 -1
  434. package/dist/baloise-design-system/p-0d30cbfab8.entry.js +0 -1
  435. package/dist/baloise-design-system/p-15ca43f2.system.js +0 -1
  436. package/dist/baloise-design-system/p-1e0e5892a3.system.entry.js +0 -1
  437. package/dist/baloise-design-system/p-2c3370fdbe.system.entry.js +0 -1
  438. package/dist/baloise-design-system/p-2d10e25c6b.entry.js +0 -1
  439. package/dist/baloise-design-system/p-2dda46c5f8.entry.js +0 -1
  440. package/dist/baloise-design-system/p-34a9557f.system.js +0 -1
  441. package/dist/baloise-design-system/p-34d1472a.system.js +0 -1
  442. package/dist/baloise-design-system/p-3990d97696.entry.js +0 -1
  443. package/dist/baloise-design-system/p-48a2de5d.js +0 -1
  444. package/dist/baloise-design-system/p-4e218ac923.system.entry.js +0 -1
  445. package/dist/baloise-design-system/p-4f4df156.js +0 -1
  446. package/dist/baloise-design-system/p-5eea406ac6.system.entry.js +0 -1
  447. package/dist/baloise-design-system/p-6496dcd5.js +0 -1
  448. package/dist/baloise-design-system/p-67f25817a6.entry.js +0 -1
  449. package/dist/baloise-design-system/p-6dd26958d2.system.entry.js +0 -1
  450. package/dist/baloise-design-system/p-7e180ac10f.system.entry.js +0 -1
  451. package/dist/baloise-design-system/p-8ea27b553e.system.entry.js +0 -1
  452. package/dist/baloise-design-system/p-90c4c1a5c0.system.entry.js +0 -1
  453. package/dist/baloise-design-system/p-99dcda2fcd.entry.js +0 -1
  454. package/dist/baloise-design-system/p-a9d8b71709.entry.js +0 -1
  455. package/dist/baloise-design-system/p-af8604cef2.entry.js +0 -1
  456. package/dist/baloise-design-system/p-b1c7ddc442.system.entry.js +0 -1
  457. package/dist/baloise-design-system/p-b1e3fc0bc8.entry.js +0 -1
  458. package/dist/baloise-design-system/p-bb291d6067.system.entry.js +0 -1
  459. package/dist/baloise-design-system/p-c0a3d422.system.js +0 -1
  460. package/dist/baloise-design-system/p-c34504aa32.entry.js +0 -1
  461. package/dist/baloise-design-system/p-c6900b09e7.entry.js +0 -1
  462. package/dist/baloise-design-system/p-cf6ccb4dd1.entry.js +0 -1
  463. package/dist/baloise-design-system/p-d4fd428711.entry.js +0 -1
  464. package/dist/baloise-design-system/p-d6fc0dd434.entry.js +0 -1
  465. package/dist/baloise-design-system/p-db3e6b861f.entry.js +0 -1
  466. package/dist/baloise-design-system/p-eba35b2adf.entry.js +0 -1
  467. package/dist/baloise-design-system/p-ec180f9bbf.entry.js +0 -1
  468. package/dist/baloise-design-system/p-f15b12d84f.entry.js +0 -1
  469. package/dist/esm-es5/app-globals-89691d80.js +0 -1
  470. package/dist/esm-es5/breakpoints.decorator-52979d29.js +0 -1
  471. /package/dist/baloise-design-system/{p-61eda028.system.js → p-03c136e2.system.js} +0 -0
  472. /package/dist/baloise-design-system/{p-979368af.js → p-7b9c33ba.js} +0 -0
  473. /package/dist/esm-es5/{tokens.esm-12daa3af.js → tokens.esm-aab9bd61.js} +0 -0
@@ -3,7 +3,7 @@ import { r as registerInstance, h, H as Host } from './index-b6003bc7.js';
3
3
  const balNoticesCss = ".bal-notices{position:fixed !important;display:-ms-flexbox !important;display:flex !important;top:0 !important;bottom:0 !important;left:0 !important;right:0 !important;padding:1rem !important;margin:0 !important;overflow:hidden !important;z-index:var(--bal-z-index-toast) !important;pointer-events:none !important;-ms-flex-direction:column !important;flex-direction:column !important}.bal-notices .container{width:100% !important}.bal-notices.has-snackbar{-ms-flex-pack:end;justify-content:flex-end;-ms-flex-align:end;align-items:flex-end;-ms-flex-direction:column-reverse;flex-direction:column-reverse;margin:.5em}.bal-notices.has-snackbar .bal-snackbar{-ms-flex-pack:end;justify-content:flex-end;-ms-flex-item-align:end;align-self:flex-end;pointer-events:auto !important}.bal-notices.has-toast{-ms-flex-pack:start;justify-content:flex-start;-ms-flex-align:center;align-items:center;margin:.5em}.bal-notices.has-toast .bal-toast{-ms-flex-pack:center;justify-content:center;-ms-flex-item-align:center;align-self:center}";
4
4
  const BalNoticesStyle0 = balNoticesCss;
5
5
 
6
- const BalNotices = class {
6
+ const Notices = class {
7
7
  constructor(hostRef) {
8
8
  registerInstance(this, hostRef);
9
9
  this.interface = 'toast';
@@ -16,6 +16,6 @@ const BalNotices = class {
16
16
  } }, h("slot", null)));
17
17
  }
18
18
  };
19
- BalNotices.style = BalNoticesStyle0;
19
+ Notices.style = BalNoticesStyle0;
20
20
 
21
- export { BalNotices as bal_notices };
21
+ export { Notices as bal_notices };
@@ -3,8 +3,8 @@ import { _ as __decorate, a as __metadata } from './tslib.es6-654e2c24.js';
3
3
  import { h as inputHandleClick, a as inputHandleHostClick, i as inputHandleFocus, e as inputHandleBlur, f as inputHandleChange, k as getNativeInputValue, l as getUpcomingValue, s as stopEventBubbling, b as inputListenOnClick, j as inputHandleReset, c as inputSetFocus, d as inputSetBlur } from './form-input-28a08ec5.js';
4
4
  import { m as debounceEvent } from './helpers-c201154e.js';
5
5
  import { i as inheritAttributes } from './attributes-4fa7040f.js';
6
- import { s as getDecimalSeparator$1, u as getThousandSeparator$1, q as formatLocaleNumber$1 } from './index.esm-ec4cba26.js';
7
- import { a as defaultLocale, d as defaultConfig } from './config.default-79f94bf7.js';
6
+ import { w as getDecimalSeparator$1, x as getThousandSeparator$1, v as formatLocaleNumber$1 } from './index.esm-83b1f9c4.js';
7
+ import { a as defaultLocale, d as defaultConfig } from './config.default-7efdc82d.js';
8
8
  import { g as useBalConfig } from './config.utils-6ac6c9bd.js';
9
9
  import { B as BEM } from './bem-8c7d2eb0.js';
10
10
  import { d as defaultBalAriaForm } from './form-fb8dd9f5.js';
@@ -153,25 +153,33 @@ function isNotNumber(value) {
153
153
  return !isNumber(value) && value !== '' && value !== getNegativeSymbol() && value !== getDecimalSeparator();
154
154
  }
155
155
  function toNumber(value, decimalPoints = 0) {
156
- if (value === '' ||
157
- value === undefined ||
158
- value === null ||
159
- lodash_isnan(value) ||
160
- value === getNegativeSymbol() ||
161
- value === getDecimalSeparator() ||
162
- !isNumber(value)) {
156
+ let val = value;
157
+ if (val === '' ||
158
+ val === undefined ||
159
+ val === null ||
160
+ lodash_isnan(val) ||
161
+ val === getNegativeSymbol() ||
162
+ val === getDecimalSeparator() ||
163
+ !isNumber(val)) {
163
164
  return undefined;
164
165
  }
165
- return decimalPoints === 0 ? parseInt(value, 10) : parseFloat(value);
166
+ if (typeof val === 'string') {
167
+ val = val.split(getThousandSeparator()).join('').split('`').join('').split("'").join('');
168
+ }
169
+ return decimalPoints === 0 ? parseInt(val, 10) : parseFloat(val);
166
170
  }
167
171
  function toFixedNumber(value, decimalPoints = 0) {
168
- if (lodash_isnil(value)) {
172
+ let val = value;
173
+ if (lodash_isnil(val)) {
169
174
  return '';
170
175
  }
171
- if (value.charAt(0) === getDecimalSeparator()) {
172
- value = `0${value}`;
176
+ if (typeof val === 'string') {
177
+ val = val.split(getThousandSeparator()).join('').split('`').join('').split("'").join('');
173
178
  }
174
- const num = decimalPoints === 0 ? parseInt(value, 10) : parseFloat(value.replace(getDecimalSeparator(), '.'));
179
+ if (val.charAt(0) === getDecimalSeparator()) {
180
+ val = `0${val}`;
181
+ }
182
+ const num = decimalPoints === 0 ? parseInt(val, 10) : parseFloat(val.replace(getDecimalSeparator(), '.'));
175
183
  return lodash_isnan(num) ? '' : num.toFixed(decimalPoints);
176
184
  }
177
185
  function mapDecimalSeparator(value) {
@@ -189,7 +197,12 @@ function toUserFormattedNumber(value, decimalPoints = 0, suffix = '') {
189
197
  return lodash_isnan(num) ? '' : formatLocaleNumber(num, decimalPoints) + formattedSuffix;
190
198
  }
191
199
  const countDecimalSeparators = (value) => (value.split(getDecimalSeparator()) || []).length - 1 || 0;
192
- function validateKeyDown({ key, selectionStart, selectionEnd, newValue, decimal, }) {
200
+ function validateKeyDown({ key, ctrlKey, metaKey, selectionStart, selectionEnd, newValue, decimal, }) {
201
+ //
202
+ // allow select all, copy and paste
203
+ if (['a', 'c', 'v'].includes(key) && (ctrlKey || metaKey)) {
204
+ return true;
205
+ }
193
206
  //
194
207
  // only allow negative symbols at the start of the input
195
208
  if (key === getNegativeSymbol() && selectionStart && selectionStart > 0 && selectionEnd && selectionEnd > 0) {
@@ -265,6 +278,8 @@ const NumberInput = class {
265
278
  // restore the input with the last user value without the formatting
266
279
  if (this.nativeInput) {
267
280
  this.nativeInputValue = mapDecimalSeparator(this.lastValue || '');
281
+ clearTimeout(this.selectTimeout);
282
+ this.selectTimeout = setTimeout(() => this.nativeInput.select());
268
283
  }
269
284
  };
270
285
  this.onBlur = (ev) => {
@@ -274,6 +289,7 @@ const NumberInput = class {
274
289
  if (this.nativeInput) {
275
290
  this.lastValue = toFixedNumber(this.lastValueGetter, this.decimal);
276
291
  this.nativeInputValue = toUserFormattedNumber(this.lastValueGetter, this.decimal, this.suffix);
292
+ this.nativeInput.value = this.nativeInputValue;
277
293
  }
278
294
  this.inputValue = toNumber(this.lastValueGetter, this.decimal);
279
295
  inputHandleChange(this);
@@ -285,6 +301,8 @@ const NumberInput = class {
285
301
  if (input &&
286
302
  !validateKeyDown({
287
303
  key: ev.key,
304
+ ctrlKey: ev.ctrlKey,
305
+ metaKey: ev.metaKey,
288
306
  decimal: this.decimal,
289
307
  newValue,
290
308
  oldValue,
@@ -0,0 +1,536 @@
1
+ import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-b6003bc7.js';
2
+ import { _ as __decorate, a as __metadata } from './tslib.es6-654e2c24.js';
3
+ import { B as BEM } from './bem-8c7d2eb0.js';
4
+ import { L as Logger } from './log-dfd1c19f.js';
5
+ import { a as ariaBooleanToString } from './aria-d5877698.js';
6
+ import { s as stopEventBubbling } from './form-input-28a08ec5.js';
7
+ import { B as BalElementStateListener, L as ListenToElementStates } from './element-states.decorator-071e2b6b.js';
8
+ import { l as lodash_isnil } from './index-82aff103.js';
9
+ import { i as inheritAttributes } from './attributes-4fa7040f.js';
10
+ import { b as waitAfterFramePaint, l as raf } from './helpers-c201154e.js';
11
+ import { s as startsWith, i as includes } from './utils-9fbab1d3.js';
12
+ import { d as defaultBalAriaForm } from './form-fb8dd9f5.js';
13
+ import './browser-a8073d92.js';
14
+ import './listener-04842ae9.js';
15
+ import './icons.constant-a7885631.js';
16
+ import './config.utils-6ac6c9bd.js';
17
+
18
+ const balOptionCss = ":root{--bal-option-padding-x:var(--bal-space-small);--bal-option-min-height:1.5rem;--bal-option-background:var(--bal-color-white);--bal-option-background-hovered:var(--bal-color-grey-2);--bal-option-background-selected:var(--bal-color-primary-1);--bal-option-background-selected-hovered:#dddfeb;--bal-option-background-invalid:var(--bal-color-danger-1);--bal-option-background-invalid-hovered:#fbe0de;--bal-option-border-width:var(--bal-border-width-normal);--bal-option-border-color:var(--bal-color-grey-2);--bal-option-font-family:var(--bal-font-family-text);--bal-option-font-weight:var(--bal-font-weight-regular);--bal-option-line-height:1.125rem;--bal-option-text-hovered:var(--bal-color-text-primary-hovered);--bal-option-text-pressed:var(--bal-color-text-primary-pressed);--bal-option-text-disabled:var(--bal-color-text-grey-light)}.bal-option{font-size:16px;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;display:block;list-style:none;cursor:pointer;border-bottom-width:var(--bal-option-border-width);border-bottom-color:var(--bal-option-border-color);border-bottom-style:solid;background:var(--bal-option-background);padding-left:var(--bal-option-padding-x);padding-right:var(--bal-option-padding-x);min-height:var(--bal-option-min-height)}.bal-option>bal-stack{min-height:var(--bal-option-min-height)}.bal-option:last-child{border-bottom:none}.bal-option::-moz-focus-inner{border:none}.bal-option--hidden{display:none;visibility:hidden}.bal-option__inner{font-family:var(--bal-option-font-family);font-weight:var(--bal-option-font-weight);line-height:var(--bal-option-line-height);word-break:break-word;white-space:normal;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-ms-flex:1;flex:1}.bal-option__inner--multiline{white-space:normal}.bal-option--focused{background:var(--bal-option-background-hovered)}@media (hover: hover)and (pointer: fine){.bal-option:hover{background:var(--bal-option-background-hovered);color:var(--bal-option-text-hovered)}}.bal-option:active{background:var(--bal-option-background-hovered);color:var(--bal-option-text-pressed)}.bal-option--selected{background:var(--bal-option-background-selected)}@media (hover: hover)and (pointer: fine){.bal-option--selected:hover{background:var(--bal-option-background-selected-hovered)}}.bal-option--selected:active{background:var(--bal-option-background-selected-hovered)}.bal-option--selected .bal-option__inner{font-weight:var(--bal-font-weight-bold)}.bal-option--selected.bal-option--focused{background:var(--bal-option-background-selected-hovered)}.bal-option--selected.bal-option--focused .bal-option__inner{font-weight:var(--bal-font-weight-bold)}.bal-option--invalid{background:var(--bal-option-background-invalid)}@media (hover: hover)and (pointer: fine){.bal-option--invalid:hover{background:var(--bal-option-background-invalid-hovered)}}.bal-option--invalid:active{background:var(--bal-option-background-invalid-hovered)}.bal-option--invalid.bal-option--focused{background:var(--bal-option-background-invalid-hovered)}.bal-option--invalid .bal-option__inner{color:var(--bal-color-text-danger-hovered)}@media (hover: hover)and (pointer: fine){.bal-option--invalid:hover .bal-option__inner{color:var(--bal-color-text-danger-hovered)}}.bal-option--invalid:active .bal-option__inner{color:var(--bal-color-text-danger-pressed)}.bal-option--disabled,.bal-option--disabled.bal-option--focused{background:var(--bal-option-background) !important;color:var(--bal-option-text-disabled) !important;cursor:default !important}.bal-option--disabled:hover,.bal-option--disabled.bal-option--focused:hover{background:var(--bal-option-background) !important}.bal-option{--bal-radio-checkbox-symbol-size:1.125rem;--bal-radio-checkbox-symbol-width:calc(0.375rem - 1px);--bal-radio-checkbox-symbol-height:calc(0.656rem - 1px);--bal-radio-checkbox-symbol-left:calc(0.375rem + 1px);--bal-radio-checkbox-symbol-margin-top:0.188rem;--bal-radio-checkbox-label-min-height:1.125rem}";
19
+ const BalOptionStyle0 = balOptionCss;
20
+
21
+ const Option = class {
22
+ constructor(hostRef) {
23
+ registerInstance(this, hostRef);
24
+ this.balOptionChange = createEvent(this, "balOptionChange", 7);
25
+ this.balOptionFocus = createEvent(this, "balOptionFocus", 7);
26
+ this.inputId = `bal-option-${balOptionIds++}`;
27
+ /**
28
+ * EVENT BINDING
29
+ * ------------------------------------------------------
30
+ */
31
+ this.onClick = (ev) => {
32
+ const listEl = this.el.closest('bal-option-list');
33
+ if (this.disabled || (listEl && listEl.disabled)) {
34
+ stopEventBubbling(ev);
35
+ }
36
+ else {
37
+ if (listEl && listEl.required && !listEl.multiple) {
38
+ if (!this.selected) {
39
+ this.select(true);
40
+ }
41
+ }
42
+ else {
43
+ this.select(!this.selected);
44
+ }
45
+ }
46
+ };
47
+ this.checkbox = false;
48
+ this.interactionState = BalElementStateListener.DefaultState;
49
+ this.label = '';
50
+ this.value = '';
51
+ this.disabled = false;
52
+ this.multiline = false;
53
+ this.invalid = false;
54
+ this.selected = false;
55
+ this.focused = false;
56
+ this.hidden = false;
57
+ }
58
+ createLogger(log) {
59
+ this.log = log;
60
+ }
61
+ /**
62
+ * LIFECYCLE
63
+ * ------------------------------------------------------
64
+ */
65
+ componentWillRender() {
66
+ if (this.el) {
67
+ const optionListEl = this.el.closest('bal-option-list');
68
+ if (optionListEl) {
69
+ this.checkbox = !!optionListEl.multiple;
70
+ }
71
+ }
72
+ }
73
+ /**
74
+ * LISTENERS
75
+ * ------------------------------------------------------
76
+ */
77
+ listenToMouseEnter() {
78
+ const { label, value, selected, disabled, hidden } = this;
79
+ if (!hidden && !disabled) {
80
+ this.balOptionFocus.emit({ label, value, selected });
81
+ }
82
+ }
83
+ elementStateListener(info) {
84
+ this.interactionChildElements.forEach(element => {
85
+ element.hovered = info.hovered;
86
+ element.pressed = info.pressed;
87
+ });
88
+ }
89
+ /**
90
+ * PUBLIC METHODS
91
+ * ------------------------------------------------------
92
+ */
93
+ /**
94
+ * Selects or deselects the option and informs other components
95
+ */
96
+ async select(selected = true) {
97
+ this.selected = selected;
98
+ const { label, value } = this;
99
+ this.balOptionChange.emit({ label, value, selected });
100
+ }
101
+ /**
102
+ * PRIVATE METHODS
103
+ * ------------------------------------------------------
104
+ */
105
+ get interactionChildElements() {
106
+ return Array.from(this.el.querySelectorAll('bal-checkbox'));
107
+ }
108
+ /**
109
+ * RENDER
110
+ * ------------------------------------------------------
111
+ */
112
+ render() {
113
+ const block = BEM.block('option');
114
+ return (h(Host, { class: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, block.class()), block.modifier('checkbox').class(this.checkbox)), block.modifier('focused').class(this.focused)), block.modifier('invalid').class(this.invalid)), block.modifier('selected').class(this.selected)), block.modifier('disabled').class(this.disabled)), block.modifier('hidden').class(this.hidden)), role: "option", id: this.inputId, "data-value": this.value, "data-label": this.label, "aria-label": this.label, "aria-hidden": ariaBooleanToString(this.hidden), "aria-selected": ariaBooleanToString(this.selected), "aria-checked": ariaBooleanToString(this.selected), "aria-disabled": ariaBooleanToString(this.disabled), "aria-invalid": ariaBooleanToString(this.invalid), tabIndex: -1, onClick: this.onClick }, h("bal-stack", { py: "small", space: "x-small" }, this.checkbox ? (h("bal-checkbox", { flat: true, nonSubmit: true, "label-hidden": true, checked: this.selected, disabled: this.disabled, invalid: this.invalid, tabindex: -1 })) : (''), h("div", { class: Object.assign(Object.assign({}, block.element('inner').class()), block.element('inner').modifier('multiline').class(this.multiline)) }, h("slot", null)), this.selected && !this.checkbox ? (h("bal-icon", { name: "check", size: "small", color: this.disabled ? 'grey' : this.invalid ? 'danger' : 'primary' })) : (''))));
115
+ }
116
+ get el() { return getElement(this); }
117
+ };
118
+ __decorate([
119
+ Logger('bal-option'),
120
+ __metadata("design:type", Function),
121
+ __metadata("design:paramtypes", [Function]),
122
+ __metadata("design:returntype", void 0)
123
+ ], Option.prototype, "createLogger", null);
124
+ __decorate([
125
+ ListenToElementStates(),
126
+ __metadata("design:type", Function),
127
+ __metadata("design:paramtypes", [Object]),
128
+ __metadata("design:returntype", void 0)
129
+ ], Option.prototype, "elementStateListener", null);
130
+ let balOptionIds = 0;
131
+ Option.style = BalOptionStyle0;
132
+
133
+ const balOptionListCss = ".bal-option-list{display:block;position:relative;width:100%;list-style:none;margin:0;outline:0;max-height:var(--bal-option-list-max-height);border-radius:var(--bal-radius-normal);overflow:hidden auto}";
134
+ const BalOptionListStyle0 = balOptionListCss;
135
+
136
+ const OptionList = class {
137
+ constructor(hostRef) {
138
+ registerInstance(this, hostRef);
139
+ this.inputId = `bal-option-list-${balOptionListIds++}`;
140
+ this.inheritAttributes = {};
141
+ this.ariaForm = defaultBalAriaForm;
142
+ this.multiple = false;
143
+ this.disabled = false;
144
+ this.required = false;
145
+ this.focusIndex = -1;
146
+ this.labelledby = undefined;
147
+ this.filter = 'includes';
148
+ this.contentHeight = 262;
149
+ }
150
+ createLogger(log) {
151
+ this.log = log;
152
+ }
153
+ contentHeightChanged(value) {
154
+ if (value === undefined) {
155
+ this.el.style.removeProperty('--bal-option-list-max-height');
156
+ }
157
+ else {
158
+ this.el.style.setProperty('--bal-option-list-max-height', `${value}px`);
159
+ }
160
+ }
161
+ /**
162
+ * LIFECYCLE
163
+ * ------------------------------------------------------
164
+ */
165
+ componentDidLoad() {
166
+ this.contentHeightChanged(this.contentHeight);
167
+ }
168
+ componentWillRender() {
169
+ this.inheritAttributes = inheritAttributes(this.el, ['aria-multiselectable', 'aria-labelledby']);
170
+ }
171
+ /**
172
+ * LISTENERS
173
+ * ------------------------------------------------------
174
+ */
175
+ listenToMouseEnter(ev) {
176
+ const options = this.options;
177
+ const indexToFocus = this.getOptionIndex(options, ev.detail.value);
178
+ if (indexToFocus !== undefined) {
179
+ this.updateFocus(options, indexToFocus);
180
+ }
181
+ }
182
+ listenToOptionChange({ detail }) {
183
+ if (!this.multiple) {
184
+ this.options.filter(option => option.value !== detail.value).forEach(option => (option.selected = false));
185
+ }
186
+ }
187
+ /**
188
+ * PUBLIC METHODS
189
+ * ------------------------------------------------------
190
+ */
191
+ /**
192
+ * Focus the first visible option in the list
193
+ * @returns focusIndex
194
+ */
195
+ async focusFirst() {
196
+ const options = this.options;
197
+ const indexToFocus = this.getFirstOptionIndex(options);
198
+ this.updateFocus(options, indexToFocus);
199
+ const option = options[indexToFocus];
200
+ this.updateScrollTopPosition(option);
201
+ await waitAfterFramePaint();
202
+ return indexToFocus;
203
+ }
204
+ /**
205
+ * Focus the last visible option in the list
206
+ * @returns focusIndex
207
+ */
208
+ async focusLast() {
209
+ const options = this.options;
210
+ const indexToFocus = this.getLastOptionIndex(options);
211
+ this.updateFocus(options, indexToFocus);
212
+ const option = options[indexToFocus];
213
+ this.updateScrollBottomPosition(option);
214
+ await waitAfterFramePaint();
215
+ return indexToFocus;
216
+ }
217
+ /**
218
+ * Focus the next visible option in the list
219
+ * @returns focusIndex
220
+ */
221
+ async focusNext() {
222
+ const options = this.options;
223
+ const indexToFocus = this.getNextOptionIndex(options);
224
+ this.updateFocus(options, indexToFocus);
225
+ const option = options[indexToFocus];
226
+ this.updateScrollBottomPosition(option);
227
+ await waitAfterFramePaint();
228
+ return indexToFocus;
229
+ }
230
+ /**
231
+ * Focus the previous visible option in the list
232
+ * @returns focusIndex
233
+ */
234
+ async focusPrevious() {
235
+ const options = this.options;
236
+ const indexToFocus = this.getPreviousOptionIndex(options);
237
+ this.updateFocus(options, indexToFocus);
238
+ const option = options[indexToFocus];
239
+ this.updateScrollTopPosition(option);
240
+ await waitAfterFramePaint();
241
+ return indexToFocus;
242
+ }
243
+ /**
244
+ * Focus the option with the label that starts with the search property
245
+ * @returns focusIndex
246
+ */
247
+ async focusByLabel(search, config) {
248
+ const options = this.options;
249
+ const indexToFocus = this.getOptionIndexByLabel(options, search);
250
+ this.updateFocus(options, indexToFocus);
251
+ const option = options[indexToFocus];
252
+ this.updateScrollTopPosition(option);
253
+ await waitAfterFramePaint();
254
+ if (config.select) {
255
+ await option.select();
256
+ }
257
+ return indexToFocus;
258
+ }
259
+ /**
260
+ * Filter the options by the given filter property and hides options
261
+ * @returns focusIndex
262
+ */
263
+ async filterByContent(search) {
264
+ const options = this.allOptions;
265
+ this.filterOptions(options, search);
266
+ await waitAfterFramePaint();
267
+ return this.focusFirst();
268
+ }
269
+ /**
270
+ * Shows or hides all options
271
+ */
272
+ async resetHidden(hidden = false) {
273
+ this.options.forEach(option => (option.hidden = hidden));
274
+ await waitAfterFramePaint();
275
+ this.resetFocus();
276
+ }
277
+ /**
278
+ * Selects or deselects all options
279
+ */
280
+ async resetSelected(selected = false) {
281
+ this.options.forEach(option => (option.selected = selected));
282
+ await waitAfterFramePaint();
283
+ }
284
+ /**
285
+ * Updates options
286
+ */
287
+ async updateSelected(values) {
288
+ this.options.forEach(option => (option.selected = values.includes(option.value)));
289
+ await waitAfterFramePaint();
290
+ }
291
+ /**
292
+ * Resets the focus index to pristine and scrolls to the top of the list
293
+ */
294
+ async resetFocus() {
295
+ const options = this.options;
296
+ const indexToFocus = -1;
297
+ this.updateFocus(options, indexToFocus);
298
+ this.scrollTo(0);
299
+ await waitAfterFramePaint();
300
+ return indexToFocus;
301
+ }
302
+ /**
303
+ * Returns a list of option values
304
+ */
305
+ async getSelectedValues() {
306
+ const options = this.options;
307
+ return options.filter(option => option.selected).map(option => option.value);
308
+ }
309
+ /**
310
+ * Returns a list of option labels
311
+ */
312
+ async getSelectedOptions(values) {
313
+ const options = this.options;
314
+ if (values && values.length > 0) {
315
+ return options.filter(option => values.includes(option.value)).map(option => option);
316
+ }
317
+ return options.filter(option => option.selected).map(option => option);
318
+ }
319
+ /**
320
+ * Returns a list of options
321
+ */
322
+ async getValues() {
323
+ return this.options.map(option => option.value);
324
+ }
325
+ /**
326
+ * Returns a list of options
327
+ */
328
+ async getLabels() {
329
+ return this.options.map(option => option.label);
330
+ }
331
+ /**
332
+ * Returns a list of accessible options
333
+ */
334
+ async getOptions() {
335
+ return this.options.filter(o => !o.disabled || !o.hidden);
336
+ }
337
+ /**
338
+ * Selects the option with the current focus
339
+ */
340
+ async selectByFocus() {
341
+ const options = this.options;
342
+ const option = options[this.focusIndex];
343
+ if (option) {
344
+ if (this.multiple) {
345
+ option.select(!option.selected);
346
+ }
347
+ else {
348
+ option.select(true);
349
+ }
350
+ }
351
+ }
352
+ /**
353
+ * @internal
354
+ */
355
+ async setAriaForm(ariaForm) {
356
+ this.ariaForm = Object.assign({}, ariaForm);
357
+ }
358
+ /**
359
+ * GETTERS
360
+ * ------------------------------------------------------
361
+ */
362
+ get options() {
363
+ return Array.from(this.el.querySelectorAll('bal-option')).filter(o => !o.hidden);
364
+ }
365
+ get allOptions() {
366
+ return Array.from(this.el.querySelectorAll('bal-option'));
367
+ }
368
+ /**
369
+ * PRIVATE METHODS
370
+ * ------------------------------------------------------
371
+ */
372
+ filterOptions(options, search) {
373
+ const filteredOptions = [];
374
+ const filter = this.filter === 'includes' ? includes : startsWith;
375
+ for (let index = 0; index < options.length; index++) {
376
+ const option = options[index];
377
+ const content = option.textContent || '';
378
+ if (filter(content, search)) {
379
+ filteredOptions.push(option);
380
+ option.hidden = false;
381
+ }
382
+ else {
383
+ option.hidden = true;
384
+ }
385
+ }
386
+ return filteredOptions;
387
+ }
388
+ isOptionVisible(option) {
389
+ const visibleHeight = this.el.clientHeight;
390
+ const topPosition = this.el.scrollTop;
391
+ const bottomPosition = topPosition + visibleHeight;
392
+ const isVisible = topPosition <= option.offsetTop && option.offsetTop + option.clientHeight <= bottomPosition;
393
+ return isVisible;
394
+ }
395
+ updateScrollTopPosition(option) {
396
+ if (option) {
397
+ const isVisible = this.isOptionVisible(option);
398
+ if (!isVisible) {
399
+ this.scrollTo(this.getScrollTopForTopPosition(option));
400
+ }
401
+ }
402
+ }
403
+ updateScrollBottomPosition(option) {
404
+ if (option) {
405
+ const isVisible = this.isOptionVisible(option);
406
+ if (!isVisible) {
407
+ this.scrollTo(this.getScrollTopForBottomPosition(option));
408
+ }
409
+ }
410
+ }
411
+ getScrollTopForTopPosition(option) {
412
+ const topPosition = option.offsetTop;
413
+ const scrollTop = topPosition;
414
+ if (scrollTop < 0) {
415
+ return 0;
416
+ }
417
+ return scrollTop;
418
+ }
419
+ getScrollTopForBottomPosition(option) {
420
+ const visibleHeight = this.el.clientHeight;
421
+ const bottomPosition = option.offsetTop + option.clientHeight;
422
+ const scrollTop = bottomPosition - visibleHeight;
423
+ if (scrollTop < 0) {
424
+ return 0;
425
+ }
426
+ return scrollTop;
427
+ }
428
+ async scrollTo(scrollTop) {
429
+ if (scrollTop !== undefined && scrollTop !== null) {
430
+ if (this.focusRaf !== undefined) {
431
+ cancelAnimationFrame(this.focusRaf);
432
+ }
433
+ this.focusRaf = raf(async () => {
434
+ this.el.scrollTop = scrollTop;
435
+ });
436
+ }
437
+ }
438
+ updateFocus(options, indexToFocus) {
439
+ this.focusIndex = indexToFocus;
440
+ for (let index = 0; index < options.length; index++) {
441
+ const option = options[index];
442
+ option.focused = index === indexToFocus;
443
+ }
444
+ }
445
+ getOptionIndex(options, value) {
446
+ for (let index = 0; index < options.length; index++) {
447
+ const option = options[index];
448
+ if (option.value === value) {
449
+ return index;
450
+ }
451
+ }
452
+ return undefined;
453
+ }
454
+ getFirstOptionIndex(options) {
455
+ for (let index = 0; index < options.length; index++) {
456
+ const option = options[index];
457
+ if (!option.disabled) {
458
+ return index;
459
+ }
460
+ }
461
+ return this.focusIndex;
462
+ }
463
+ getNextOptionIndex(options, index = this.focusIndex) {
464
+ if (index < 0) {
465
+ return this.getFirstOptionIndex(options);
466
+ }
467
+ const lastIndex = this.getLength(options);
468
+ let newIndex = index;
469
+ if (index < lastIndex) {
470
+ newIndex = index + 1;
471
+ if (options[newIndex].disabled) {
472
+ return this.getNextOptionIndex(options, newIndex);
473
+ }
474
+ }
475
+ return newIndex;
476
+ }
477
+ getPreviousOptionIndex(options, index = this.focusIndex) {
478
+ const firstIndex = this.getFirstOptionIndex(options);
479
+ if (index <= firstIndex) {
480
+ return firstIndex;
481
+ }
482
+ let newIndex = index;
483
+ newIndex = index - 1;
484
+ if (options[newIndex].disabled) {
485
+ return this.getPreviousOptionIndex(options, newIndex);
486
+ }
487
+ return newIndex;
488
+ }
489
+ getLastOptionIndex(options) {
490
+ for (let index = options.length - 1; index >= 0; index--) {
491
+ const option = options[index];
492
+ if (!option.disabled) {
493
+ return index;
494
+ }
495
+ }
496
+ return this.focusIndex;
497
+ }
498
+ getOptionIndexByLabel(options, label) {
499
+ if (label === undefined || label === '') {
500
+ return this.focusIndex;
501
+ }
502
+ const option = options.find(o => startsWith(o.label || '', label));
503
+ if (!lodash_isnil(option) && option.id) {
504
+ return options.indexOf(option);
505
+ }
506
+ return this.focusIndex;
507
+ }
508
+ getLength(options) {
509
+ const indexes = options.map((option, index) => (option.disabled ? 0 : index));
510
+ const length = Math.max(...indexes);
511
+ return length;
512
+ }
513
+ /**
514
+ * RENDER
515
+ * ------------------------------------------------------
516
+ */
517
+ render() {
518
+ const block = BEM.block('option-list');
519
+ const labelledby = this.labelledby || this.ariaForm.labelId;
520
+ return (h(Host, { class: Object.assign({}, block.class()), id: this.inputId, tabIndex: -1 }, h("div", Object.assign({ role: "listbox", "aria-labelledby": labelledby, "aria-disabled": this.disabled, class: Object.assign({}, block.element('container').class()) }, this.inheritAttributes), h("slot", null))));
521
+ }
522
+ get el() { return getElement(this); }
523
+ static get watchers() { return {
524
+ "contentHeight": ["contentHeightChanged"]
525
+ }; }
526
+ };
527
+ __decorate([
528
+ Logger('bal-option-list'),
529
+ __metadata("design:type", Function),
530
+ __metadata("design:paramtypes", [Function]),
531
+ __metadata("design:returntype", void 0)
532
+ ], OptionList.prototype, "createLogger", null);
533
+ let balOptionListIds = 0;
534
+ OptionList.style = BalOptionListStyle0;
535
+
536
+ export { Option as bal_option, OptionList as bal_option_list };
@@ -1,9 +1,9 @@
1
1
  import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-b6003bc7.js';
2
2
  import { _ as __decorate, a as __metadata } from './tslib.es6-654e2c24.js';
3
3
  import { B as BEM } from './bem-8c7d2eb0.js';
4
- import { b as balBreakpoints } from './breakpoints.subject-64327a3b.js';
5
- import { d as defaultConfig } from './config.default-79f94bf7.js';
6
- import { L as ListenToBreakpoints } from './breakpoints.decorator-52979d29.js';
4
+ import { b as balBreakpoints } from './breakpoints.subject-ef464f89.js';
5
+ import { d as defaultConfig } from './config.default-7efdc82d.js';
6
+ import { L as ListenToBreakpoints } from './breakpoints.decorator-021fbaf0.js';
7
7
  import { L as ListenToConfig } from './config.decorator-d18abfe1.js';
8
8
  import './helpers-c201154e.js';
9
9
  import './browser-a8073d92.js';
@@ -11,7 +11,7 @@ import './icons.constant-a7885631.js';
11
11
  import './config.utils-6ac6c9bd.js';
12
12
  import './device-8c6d2881.js';
13
13
  import './listener-04842ae9.js';
14
- import './tokens.esm-12daa3af.js';
14
+ import './tokens.esm-aab9bd61.js';
15
15
  import './log-dfd1c19f.js';
16
16
 
17
17
  function generatePaginationControl(value, totalPages, pageRange) {