@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
@@ -7,7 +7,7 @@ const index = require('./index-219b2f52.js');
7
7
  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}";
8
8
  const BalNoticesStyle0 = balNoticesCss;
9
9
 
10
- const BalNotices = class {
10
+ const Notices = class {
11
11
  constructor(hostRef) {
12
12
  index.registerInstance(this, hostRef);
13
13
  this.interface = 'toast';
@@ -20,6 +20,6 @@ const BalNotices = class {
20
20
  } }, index.h("slot", null)));
21
21
  }
22
22
  };
23
- BalNotices.style = BalNoticesStyle0;
23
+ Notices.style = BalNoticesStyle0;
24
24
 
25
- exports.bal_notices = BalNotices;
25
+ exports.bal_notices = Notices;
@@ -8,7 +8,7 @@ const formInput = require('./form-input-134c5116.js');
8
8
  const helpers = require('./helpers-2a8c8333.js');
9
9
  const attributes = require('./attributes-9f366716.js');
10
10
  const index_esm = require('./index.esm-4587dbf0.js');
11
- const config_default = require('./config.default-32725178.js');
11
+ const config_default = require('./config.default-5bdd6e3d.js');
12
12
  const config_utils = require('./config.utils-e4cd49d6.js');
13
13
  const bem = require('./bem-81bc6a2d.js');
14
14
  const form = require('./form-2279fb2f.js');
@@ -157,25 +157,33 @@ function isNotNumber(value) {
157
157
  return !isNumber(value) && value !== '' && value !== getNegativeSymbol() && value !== getDecimalSeparator();
158
158
  }
159
159
  function toNumber(value, decimalPoints = 0) {
160
- if (value === '' ||
161
- value === undefined ||
162
- value === null ||
163
- lodash_isnan(value) ||
164
- value === getNegativeSymbol() ||
165
- value === getDecimalSeparator() ||
166
- !isNumber(value)) {
160
+ let val = value;
161
+ if (val === '' ||
162
+ val === undefined ||
163
+ val === null ||
164
+ lodash_isnan(val) ||
165
+ val === getNegativeSymbol() ||
166
+ val === getDecimalSeparator() ||
167
+ !isNumber(val)) {
167
168
  return undefined;
168
169
  }
169
- return decimalPoints === 0 ? parseInt(value, 10) : parseFloat(value);
170
+ if (typeof val === 'string') {
171
+ val = val.split(getThousandSeparator()).join('').split('`').join('').split("'").join('');
172
+ }
173
+ return decimalPoints === 0 ? parseInt(val, 10) : parseFloat(val);
170
174
  }
171
175
  function toFixedNumber(value, decimalPoints = 0) {
172
- if (index.lodash_isnil(value)) {
176
+ let val = value;
177
+ if (index.lodash_isnil(val)) {
173
178
  return '';
174
179
  }
175
- if (value.charAt(0) === getDecimalSeparator()) {
176
- value = `0${value}`;
180
+ if (typeof val === 'string') {
181
+ val = val.split(getThousandSeparator()).join('').split('`').join('').split("'").join('');
177
182
  }
178
- const num = decimalPoints === 0 ? parseInt(value, 10) : parseFloat(value.replace(getDecimalSeparator(), '.'));
183
+ if (val.charAt(0) === getDecimalSeparator()) {
184
+ val = `0${val}`;
185
+ }
186
+ const num = decimalPoints === 0 ? parseInt(val, 10) : parseFloat(val.replace(getDecimalSeparator(), '.'));
179
187
  return lodash_isnan(num) ? '' : num.toFixed(decimalPoints);
180
188
  }
181
189
  function mapDecimalSeparator(value) {
@@ -193,7 +201,12 @@ function toUserFormattedNumber(value, decimalPoints = 0, suffix = '') {
193
201
  return lodash_isnan(num) ? '' : formatLocaleNumber(num, decimalPoints) + formattedSuffix;
194
202
  }
195
203
  const countDecimalSeparators = (value) => (value.split(getDecimalSeparator()) || []).length - 1 || 0;
196
- function validateKeyDown({ key, selectionStart, selectionEnd, newValue, decimal, }) {
204
+ function validateKeyDown({ key, ctrlKey, metaKey, selectionStart, selectionEnd, newValue, decimal, }) {
205
+ //
206
+ // allow select all, copy and paste
207
+ if (['a', 'c', 'v'].includes(key) && (ctrlKey || metaKey)) {
208
+ return true;
209
+ }
197
210
  //
198
211
  // only allow negative symbols at the start of the input
199
212
  if (key === getNegativeSymbol() && selectionStart && selectionStart > 0 && selectionEnd && selectionEnd > 0) {
@@ -269,6 +282,8 @@ const NumberInput = class {
269
282
  // restore the input with the last user value without the formatting
270
283
  if (this.nativeInput) {
271
284
  this.nativeInputValue = mapDecimalSeparator(this.lastValue || '');
285
+ clearTimeout(this.selectTimeout);
286
+ this.selectTimeout = setTimeout(() => this.nativeInput.select());
272
287
  }
273
288
  };
274
289
  this.onBlur = (ev) => {
@@ -278,6 +293,7 @@ const NumberInput = class {
278
293
  if (this.nativeInput) {
279
294
  this.lastValue = toFixedNumber(this.lastValueGetter, this.decimal);
280
295
  this.nativeInputValue = toUserFormattedNumber(this.lastValueGetter, this.decimal, this.suffix);
296
+ this.nativeInput.value = this.nativeInputValue;
281
297
  }
282
298
  this.inputValue = toNumber(this.lastValueGetter, this.decimal);
283
299
  formInput.inputHandleChange(this);
@@ -289,6 +305,8 @@ const NumberInput = class {
289
305
  if (input &&
290
306
  !validateKeyDown({
291
307
  key: ev.key,
308
+ ctrlKey: ev.ctrlKey,
309
+ metaKey: ev.metaKey,
292
310
  decimal: this.decimal,
293
311
  newValue,
294
312
  oldValue,
@@ -0,0 +1,541 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const index = require('./index-219b2f52.js');
6
+ const tslib_es6 = require('./tslib.es6-a680968e.js');
7
+ const bem = require('./bem-81bc6a2d.js');
8
+ const log = require('./log-33398c2a.js');
9
+ const aria = require('./aria-c8955a5c.js');
10
+ const formInput = require('./form-input-134c5116.js');
11
+ const elementStates_decorator = require('./element-states.decorator-9ce5ff3b.js');
12
+ const index$1 = require('./index-e6a233be.js');
13
+ const attributes = require('./attributes-9f366716.js');
14
+ const helpers = require('./helpers-2a8c8333.js');
15
+ const utils = require('./utils-9ea175af.js');
16
+ const form = require('./form-2279fb2f.js');
17
+ require('./browser-1d542d0f.js');
18
+ require('./listener-52d2e5fd.js');
19
+ require('./icons.constant-7c82086a.js');
20
+ require('./config.utils-e4cd49d6.js');
21
+
22
+ 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}";
23
+ const BalOptionStyle0 = balOptionCss;
24
+
25
+ const Option = class {
26
+ constructor(hostRef) {
27
+ index.registerInstance(this, hostRef);
28
+ this.balOptionChange = index.createEvent(this, "balOptionChange", 7);
29
+ this.balOptionFocus = index.createEvent(this, "balOptionFocus", 7);
30
+ this.inputId = `bal-option-${balOptionIds++}`;
31
+ /**
32
+ * EVENT BINDING
33
+ * ------------------------------------------------------
34
+ */
35
+ this.onClick = (ev) => {
36
+ const listEl = this.el.closest('bal-option-list');
37
+ if (this.disabled || (listEl && listEl.disabled)) {
38
+ formInput.stopEventBubbling(ev);
39
+ }
40
+ else {
41
+ if (listEl && listEl.required && !listEl.multiple) {
42
+ if (!this.selected) {
43
+ this.select(true);
44
+ }
45
+ }
46
+ else {
47
+ this.select(!this.selected);
48
+ }
49
+ }
50
+ };
51
+ this.checkbox = false;
52
+ this.interactionState = elementStates_decorator.BalElementStateListener.DefaultState;
53
+ this.label = '';
54
+ this.value = '';
55
+ this.disabled = false;
56
+ this.multiline = false;
57
+ this.invalid = false;
58
+ this.selected = false;
59
+ this.focused = false;
60
+ this.hidden = false;
61
+ }
62
+ createLogger(log) {
63
+ this.log = log;
64
+ }
65
+ /**
66
+ * LIFECYCLE
67
+ * ------------------------------------------------------
68
+ */
69
+ componentWillRender() {
70
+ if (this.el) {
71
+ const optionListEl = this.el.closest('bal-option-list');
72
+ if (optionListEl) {
73
+ this.checkbox = !!optionListEl.multiple;
74
+ }
75
+ }
76
+ }
77
+ /**
78
+ * LISTENERS
79
+ * ------------------------------------------------------
80
+ */
81
+ listenToMouseEnter() {
82
+ const { label, value, selected, disabled, hidden } = this;
83
+ if (!hidden && !disabled) {
84
+ this.balOptionFocus.emit({ label, value, selected });
85
+ }
86
+ }
87
+ elementStateListener(info) {
88
+ this.interactionChildElements.forEach(element => {
89
+ element.hovered = info.hovered;
90
+ element.pressed = info.pressed;
91
+ });
92
+ }
93
+ /**
94
+ * PUBLIC METHODS
95
+ * ------------------------------------------------------
96
+ */
97
+ /**
98
+ * Selects or deselects the option and informs other components
99
+ */
100
+ async select(selected = true) {
101
+ this.selected = selected;
102
+ const { label, value } = this;
103
+ this.balOptionChange.emit({ label, value, selected });
104
+ }
105
+ /**
106
+ * PRIVATE METHODS
107
+ * ------------------------------------------------------
108
+ */
109
+ get interactionChildElements() {
110
+ return Array.from(this.el.querySelectorAll('bal-checkbox'));
111
+ }
112
+ /**
113
+ * RENDER
114
+ * ------------------------------------------------------
115
+ */
116
+ render() {
117
+ const block = bem.BEM.block('option');
118
+ return (index.h(index.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": aria.ariaBooleanToString(this.hidden), "aria-selected": aria.ariaBooleanToString(this.selected), "aria-checked": aria.ariaBooleanToString(this.selected), "aria-disabled": aria.ariaBooleanToString(this.disabled), "aria-invalid": aria.ariaBooleanToString(this.invalid), tabIndex: -1, onClick: this.onClick }, index.h("bal-stack", { py: "small", space: "x-small" }, this.checkbox ? (index.h("bal-checkbox", { flat: true, nonSubmit: true, "label-hidden": true, checked: this.selected, disabled: this.disabled, invalid: this.invalid, tabindex: -1 })) : (''), index.h("div", { class: Object.assign(Object.assign({}, block.element('inner').class()), block.element('inner').modifier('multiline').class(this.multiline)) }, index.h("slot", null)), this.selected && !this.checkbox ? (index.h("bal-icon", { name: "check", size: "small", color: this.disabled ? 'grey' : this.invalid ? 'danger' : 'primary' })) : (''))));
119
+ }
120
+ get el() { return index.getElement(this); }
121
+ };
122
+ tslib_es6.__decorate([
123
+ log.Logger('bal-option'),
124
+ tslib_es6.__metadata("design:type", Function),
125
+ tslib_es6.__metadata("design:paramtypes", [Function]),
126
+ tslib_es6.__metadata("design:returntype", void 0)
127
+ ], Option.prototype, "createLogger", null);
128
+ tslib_es6.__decorate([
129
+ elementStates_decorator.ListenToElementStates(),
130
+ tslib_es6.__metadata("design:type", Function),
131
+ tslib_es6.__metadata("design:paramtypes", [Object]),
132
+ tslib_es6.__metadata("design:returntype", void 0)
133
+ ], Option.prototype, "elementStateListener", null);
134
+ let balOptionIds = 0;
135
+ Option.style = BalOptionStyle0;
136
+
137
+ 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}";
138
+ const BalOptionListStyle0 = balOptionListCss;
139
+
140
+ const OptionList = class {
141
+ constructor(hostRef) {
142
+ index.registerInstance(this, hostRef);
143
+ this.inputId = `bal-option-list-${balOptionListIds++}`;
144
+ this.inheritAttributes = {};
145
+ this.ariaForm = form.defaultBalAriaForm;
146
+ this.multiple = false;
147
+ this.disabled = false;
148
+ this.required = false;
149
+ this.focusIndex = -1;
150
+ this.labelledby = undefined;
151
+ this.filter = 'includes';
152
+ this.contentHeight = 262;
153
+ }
154
+ createLogger(log) {
155
+ this.log = log;
156
+ }
157
+ contentHeightChanged(value) {
158
+ if (value === undefined) {
159
+ this.el.style.removeProperty('--bal-option-list-max-height');
160
+ }
161
+ else {
162
+ this.el.style.setProperty('--bal-option-list-max-height', `${value}px`);
163
+ }
164
+ }
165
+ /**
166
+ * LIFECYCLE
167
+ * ------------------------------------------------------
168
+ */
169
+ componentDidLoad() {
170
+ this.contentHeightChanged(this.contentHeight);
171
+ }
172
+ componentWillRender() {
173
+ this.inheritAttributes = attributes.inheritAttributes(this.el, ['aria-multiselectable', 'aria-labelledby']);
174
+ }
175
+ /**
176
+ * LISTENERS
177
+ * ------------------------------------------------------
178
+ */
179
+ listenToMouseEnter(ev) {
180
+ const options = this.options;
181
+ const indexToFocus = this.getOptionIndex(options, ev.detail.value);
182
+ if (indexToFocus !== undefined) {
183
+ this.updateFocus(options, indexToFocus);
184
+ }
185
+ }
186
+ listenToOptionChange({ detail }) {
187
+ if (!this.multiple) {
188
+ this.options.filter(option => option.value !== detail.value).forEach(option => (option.selected = false));
189
+ }
190
+ }
191
+ /**
192
+ * PUBLIC METHODS
193
+ * ------------------------------------------------------
194
+ */
195
+ /**
196
+ * Focus the first visible option in the list
197
+ * @returns focusIndex
198
+ */
199
+ async focusFirst() {
200
+ const options = this.options;
201
+ const indexToFocus = this.getFirstOptionIndex(options);
202
+ this.updateFocus(options, indexToFocus);
203
+ const option = options[indexToFocus];
204
+ this.updateScrollTopPosition(option);
205
+ await helpers.waitAfterFramePaint();
206
+ return indexToFocus;
207
+ }
208
+ /**
209
+ * Focus the last visible option in the list
210
+ * @returns focusIndex
211
+ */
212
+ async focusLast() {
213
+ const options = this.options;
214
+ const indexToFocus = this.getLastOptionIndex(options);
215
+ this.updateFocus(options, indexToFocus);
216
+ const option = options[indexToFocus];
217
+ this.updateScrollBottomPosition(option);
218
+ await helpers.waitAfterFramePaint();
219
+ return indexToFocus;
220
+ }
221
+ /**
222
+ * Focus the next visible option in the list
223
+ * @returns focusIndex
224
+ */
225
+ async focusNext() {
226
+ const options = this.options;
227
+ const indexToFocus = this.getNextOptionIndex(options);
228
+ this.updateFocus(options, indexToFocus);
229
+ const option = options[indexToFocus];
230
+ this.updateScrollBottomPosition(option);
231
+ await helpers.waitAfterFramePaint();
232
+ return indexToFocus;
233
+ }
234
+ /**
235
+ * Focus the previous visible option in the list
236
+ * @returns focusIndex
237
+ */
238
+ async focusPrevious() {
239
+ const options = this.options;
240
+ const indexToFocus = this.getPreviousOptionIndex(options);
241
+ this.updateFocus(options, indexToFocus);
242
+ const option = options[indexToFocus];
243
+ this.updateScrollTopPosition(option);
244
+ await helpers.waitAfterFramePaint();
245
+ return indexToFocus;
246
+ }
247
+ /**
248
+ * Focus the option with the label that starts with the search property
249
+ * @returns focusIndex
250
+ */
251
+ async focusByLabel(search, config) {
252
+ const options = this.options;
253
+ const indexToFocus = this.getOptionIndexByLabel(options, search);
254
+ this.updateFocus(options, indexToFocus);
255
+ const option = options[indexToFocus];
256
+ this.updateScrollTopPosition(option);
257
+ await helpers.waitAfterFramePaint();
258
+ if (config.select) {
259
+ await option.select();
260
+ }
261
+ return indexToFocus;
262
+ }
263
+ /**
264
+ * Filter the options by the given filter property and hides options
265
+ * @returns focusIndex
266
+ */
267
+ async filterByContent(search) {
268
+ const options = this.allOptions;
269
+ this.filterOptions(options, search);
270
+ await helpers.waitAfterFramePaint();
271
+ return this.focusFirst();
272
+ }
273
+ /**
274
+ * Shows or hides all options
275
+ */
276
+ async resetHidden(hidden = false) {
277
+ this.options.forEach(option => (option.hidden = hidden));
278
+ await helpers.waitAfterFramePaint();
279
+ this.resetFocus();
280
+ }
281
+ /**
282
+ * Selects or deselects all options
283
+ */
284
+ async resetSelected(selected = false) {
285
+ this.options.forEach(option => (option.selected = selected));
286
+ await helpers.waitAfterFramePaint();
287
+ }
288
+ /**
289
+ * Updates options
290
+ */
291
+ async updateSelected(values) {
292
+ this.options.forEach(option => (option.selected = values.includes(option.value)));
293
+ await helpers.waitAfterFramePaint();
294
+ }
295
+ /**
296
+ * Resets the focus index to pristine and scrolls to the top of the list
297
+ */
298
+ async resetFocus() {
299
+ const options = this.options;
300
+ const indexToFocus = -1;
301
+ this.updateFocus(options, indexToFocus);
302
+ this.scrollTo(0);
303
+ await helpers.waitAfterFramePaint();
304
+ return indexToFocus;
305
+ }
306
+ /**
307
+ * Returns a list of option values
308
+ */
309
+ async getSelectedValues() {
310
+ const options = this.options;
311
+ return options.filter(option => option.selected).map(option => option.value);
312
+ }
313
+ /**
314
+ * Returns a list of option labels
315
+ */
316
+ async getSelectedOptions(values) {
317
+ const options = this.options;
318
+ if (values && values.length > 0) {
319
+ return options.filter(option => values.includes(option.value)).map(option => option);
320
+ }
321
+ return options.filter(option => option.selected).map(option => option);
322
+ }
323
+ /**
324
+ * Returns a list of options
325
+ */
326
+ async getValues() {
327
+ return this.options.map(option => option.value);
328
+ }
329
+ /**
330
+ * Returns a list of options
331
+ */
332
+ async getLabels() {
333
+ return this.options.map(option => option.label);
334
+ }
335
+ /**
336
+ * Returns a list of accessible options
337
+ */
338
+ async getOptions() {
339
+ return this.options.filter(o => !o.disabled || !o.hidden);
340
+ }
341
+ /**
342
+ * Selects the option with the current focus
343
+ */
344
+ async selectByFocus() {
345
+ const options = this.options;
346
+ const option = options[this.focusIndex];
347
+ if (option) {
348
+ if (this.multiple) {
349
+ option.select(!option.selected);
350
+ }
351
+ else {
352
+ option.select(true);
353
+ }
354
+ }
355
+ }
356
+ /**
357
+ * @internal
358
+ */
359
+ async setAriaForm(ariaForm) {
360
+ this.ariaForm = Object.assign({}, ariaForm);
361
+ }
362
+ /**
363
+ * GETTERS
364
+ * ------------------------------------------------------
365
+ */
366
+ get options() {
367
+ return Array.from(this.el.querySelectorAll('bal-option')).filter(o => !o.hidden);
368
+ }
369
+ get allOptions() {
370
+ return Array.from(this.el.querySelectorAll('bal-option'));
371
+ }
372
+ /**
373
+ * PRIVATE METHODS
374
+ * ------------------------------------------------------
375
+ */
376
+ filterOptions(options, search) {
377
+ const filteredOptions = [];
378
+ const filter = this.filter === 'includes' ? utils.includes : utils.startsWith;
379
+ for (let index = 0; index < options.length; index++) {
380
+ const option = options[index];
381
+ const content = option.textContent || '';
382
+ if (filter(content, search)) {
383
+ filteredOptions.push(option);
384
+ option.hidden = false;
385
+ }
386
+ else {
387
+ option.hidden = true;
388
+ }
389
+ }
390
+ return filteredOptions;
391
+ }
392
+ isOptionVisible(option) {
393
+ const visibleHeight = this.el.clientHeight;
394
+ const topPosition = this.el.scrollTop;
395
+ const bottomPosition = topPosition + visibleHeight;
396
+ const isVisible = topPosition <= option.offsetTop && option.offsetTop + option.clientHeight <= bottomPosition;
397
+ return isVisible;
398
+ }
399
+ updateScrollTopPosition(option) {
400
+ if (option) {
401
+ const isVisible = this.isOptionVisible(option);
402
+ if (!isVisible) {
403
+ this.scrollTo(this.getScrollTopForTopPosition(option));
404
+ }
405
+ }
406
+ }
407
+ updateScrollBottomPosition(option) {
408
+ if (option) {
409
+ const isVisible = this.isOptionVisible(option);
410
+ if (!isVisible) {
411
+ this.scrollTo(this.getScrollTopForBottomPosition(option));
412
+ }
413
+ }
414
+ }
415
+ getScrollTopForTopPosition(option) {
416
+ const topPosition = option.offsetTop;
417
+ const scrollTop = topPosition;
418
+ if (scrollTop < 0) {
419
+ return 0;
420
+ }
421
+ return scrollTop;
422
+ }
423
+ getScrollTopForBottomPosition(option) {
424
+ const visibleHeight = this.el.clientHeight;
425
+ const bottomPosition = option.offsetTop + option.clientHeight;
426
+ const scrollTop = bottomPosition - visibleHeight;
427
+ if (scrollTop < 0) {
428
+ return 0;
429
+ }
430
+ return scrollTop;
431
+ }
432
+ async scrollTo(scrollTop) {
433
+ if (scrollTop !== undefined && scrollTop !== null) {
434
+ if (this.focusRaf !== undefined) {
435
+ cancelAnimationFrame(this.focusRaf);
436
+ }
437
+ this.focusRaf = helpers.raf(async () => {
438
+ this.el.scrollTop = scrollTop;
439
+ });
440
+ }
441
+ }
442
+ updateFocus(options, indexToFocus) {
443
+ this.focusIndex = indexToFocus;
444
+ for (let index = 0; index < options.length; index++) {
445
+ const option = options[index];
446
+ option.focused = index === indexToFocus;
447
+ }
448
+ }
449
+ getOptionIndex(options, value) {
450
+ for (let index = 0; index < options.length; index++) {
451
+ const option = options[index];
452
+ if (option.value === value) {
453
+ return index;
454
+ }
455
+ }
456
+ return undefined;
457
+ }
458
+ getFirstOptionIndex(options) {
459
+ for (let index = 0; index < options.length; index++) {
460
+ const option = options[index];
461
+ if (!option.disabled) {
462
+ return index;
463
+ }
464
+ }
465
+ return this.focusIndex;
466
+ }
467
+ getNextOptionIndex(options, index = this.focusIndex) {
468
+ if (index < 0) {
469
+ return this.getFirstOptionIndex(options);
470
+ }
471
+ const lastIndex = this.getLength(options);
472
+ let newIndex = index;
473
+ if (index < lastIndex) {
474
+ newIndex = index + 1;
475
+ if (options[newIndex].disabled) {
476
+ return this.getNextOptionIndex(options, newIndex);
477
+ }
478
+ }
479
+ return newIndex;
480
+ }
481
+ getPreviousOptionIndex(options, index = this.focusIndex) {
482
+ const firstIndex = this.getFirstOptionIndex(options);
483
+ if (index <= firstIndex) {
484
+ return firstIndex;
485
+ }
486
+ let newIndex = index;
487
+ newIndex = index - 1;
488
+ if (options[newIndex].disabled) {
489
+ return this.getPreviousOptionIndex(options, newIndex);
490
+ }
491
+ return newIndex;
492
+ }
493
+ getLastOptionIndex(options) {
494
+ for (let index = options.length - 1; index >= 0; index--) {
495
+ const option = options[index];
496
+ if (!option.disabled) {
497
+ return index;
498
+ }
499
+ }
500
+ return this.focusIndex;
501
+ }
502
+ getOptionIndexByLabel(options, label) {
503
+ if (label === undefined || label === '') {
504
+ return this.focusIndex;
505
+ }
506
+ const option = options.find(o => utils.startsWith(o.label || '', label));
507
+ if (!index$1.lodash_isnil(option) && option.id) {
508
+ return options.indexOf(option);
509
+ }
510
+ return this.focusIndex;
511
+ }
512
+ getLength(options) {
513
+ const indexes = options.map((option, index) => (option.disabled ? 0 : index));
514
+ const length = Math.max(...indexes);
515
+ return length;
516
+ }
517
+ /**
518
+ * RENDER
519
+ * ------------------------------------------------------
520
+ */
521
+ render() {
522
+ const block = bem.BEM.block('option-list');
523
+ const labelledby = this.labelledby || this.ariaForm.labelId;
524
+ return (index.h(index.Host, { class: Object.assign({}, block.class()), id: this.inputId, tabIndex: -1 }, index.h("div", Object.assign({ role: "listbox", "aria-labelledby": labelledby, "aria-disabled": this.disabled, class: Object.assign({}, block.element('container').class()) }, this.inheritAttributes), index.h("slot", null))));
525
+ }
526
+ get el() { return index.getElement(this); }
527
+ static get watchers() { return {
528
+ "contentHeight": ["contentHeightChanged"]
529
+ }; }
530
+ };
531
+ tslib_es6.__decorate([
532
+ log.Logger('bal-option-list'),
533
+ tslib_es6.__metadata("design:type", Function),
534
+ tslib_es6.__metadata("design:paramtypes", [Function]),
535
+ tslib_es6.__metadata("design:returntype", void 0)
536
+ ], OptionList.prototype, "createLogger", null);
537
+ let balOptionListIds = 0;
538
+ OptionList.style = BalOptionListStyle0;
539
+
540
+ exports.bal_option = Option;
541
+ exports.bal_option_list = OptionList;
@@ -5,9 +5,9 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  const index = require('./index-219b2f52.js');
6
6
  const tslib_es6 = require('./tslib.es6-a680968e.js');
7
7
  const bem = require('./bem-81bc6a2d.js');
8
- const breakpoints_subject = require('./breakpoints.subject-28c980cd.js');
9
- const config_default = require('./config.default-32725178.js');
10
- const breakpoints_decorator = require('./breakpoints.decorator-7f888011.js');
8
+ const breakpoints_subject = require('./breakpoints.subject-66093c8f.js');
9
+ const config_default = require('./config.default-5bdd6e3d.js');
10
+ const breakpoints_decorator = require('./breakpoints.decorator-47fd6060.js');
11
11
  const config_decorator = require('./config.decorator-b393a72f.js');
12
12
  require('./helpers-2a8c8333.js');
13
13
  require('./browser-1d542d0f.js');
@@ -15,7 +15,7 @@ require('./icons.constant-7c82086a.js');
15
15
  require('./config.utils-e4cd49d6.js');
16
16
  require('./device-9f97a845.js');
17
17
  require('./listener-52d2e5fd.js');
18
- require('./tokens.esm-89d0f18d.js');
18
+ require('./tokens.esm-bb0ef2db.js');
19
19
  require('./log-33398c2a.js');
20
20
 
21
21
  function generatePaginationControl(value, totalPages, pageRange) {