@siemens/ix 2.0.3 → 2.0.4

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 (430) hide show
  1. package/components/base-button.js +1 -1
  2. package/components/base-button.js.map +1 -1
  3. package/components/breadcrumb-item.js +1 -1
  4. package/components/breadcrumb-item.js.map +1 -1
  5. package/components/button.js +1 -1
  6. package/components/button.js.map +1 -1
  7. package/components/dropdown.js +53 -2
  8. package/components/dropdown.js.map +1 -1
  9. package/components/group-context-menu.js +1 -1
  10. package/components/group-context-menu.js.map +1 -1
  11. package/components/icon-button.js +1 -1
  12. package/components/icon-button.js.map +1 -1
  13. package/components/ix-blind.js +9 -14
  14. package/components/ix-blind.js.map +1 -1
  15. package/components/ix-category-filter.js +1 -1
  16. package/components/ix-category-filter.js.map +1 -1
  17. package/components/ix-dropdown-button.js +1 -1
  18. package/components/ix-dropdown-button.js.map +1 -1
  19. package/components/ix-dropdown-quick-actions.js +1 -1
  20. package/components/ix-dropdown-quick-actions.js.map +1 -1
  21. package/components/ix-event-list-item.js +1 -1
  22. package/components/ix-event-list-item.js.map +1 -1
  23. package/components/ix-expanding-search.js +1 -1
  24. package/components/ix-expanding-search.js.map +1 -1
  25. package/components/ix-form-field.js +1 -1
  26. package/components/ix-form-field.js.map +1 -1
  27. package/components/ix-group.js +1 -1
  28. package/components/ix-group.js.map +1 -1
  29. package/components/ix-icon-toggle-button.js +1 -1
  30. package/components/ix-icon-toggle-button.js.map +1 -1
  31. package/components/ix-input-group.js +7 -4
  32. package/components/ix-input-group.js.map +1 -1
  33. package/components/ix-kpi.js +1 -1
  34. package/components/ix-kpi.js.map +1 -1
  35. package/components/ix-map-navigation.js +1 -1
  36. package/components/ix-map-navigation.js.map +1 -1
  37. package/components/ix-menu.js +1 -1
  38. package/components/ix-menu.js.map +1 -1
  39. package/components/ix-modal-header.js +7 -5
  40. package/components/ix-modal-header.js.map +1 -1
  41. package/components/ix-modal.js +6 -3
  42. package/components/ix-modal.js.map +1 -1
  43. package/components/ix-pagination.js +1 -1
  44. package/components/ix-pagination.js.map +1 -1
  45. package/components/ix-row.js +1 -1
  46. package/components/ix-row.js.map +1 -1
  47. package/components/ix-slider.js +26 -4
  48. package/components/ix-slider.js.map +1 -1
  49. package/components/ix-tile.js +1 -1
  50. package/components/ix-tile.js.map +1 -1
  51. package/components/ix-toast-container.js +1 -1
  52. package/components/ix-toast-container.js.map +1 -1
  53. package/components/ix-tree.js +3 -2
  54. package/components/ix-tree.js.map +1 -1
  55. package/components/ix-upload.js +1 -1
  56. package/components/ix-upload.js.map +1 -1
  57. package/components/listener.js +69 -0
  58. package/components/listener.js.map +1 -0
  59. package/components/map-navigation-overlay.js +1 -1
  60. package/components/map-navigation-overlay.js.map +1 -1
  61. package/components/menu-service.js +7 -2
  62. package/components/menu-service.js.map +1 -1
  63. package/components/select.js +31 -5
  64. package/components/select.js.map +1 -1
  65. package/components/tabs.js +44 -12
  66. package/components/tabs.js.map +1 -1
  67. package/components/time-picker.js +1 -1
  68. package/components/time-picker.js.map +1 -1
  69. package/components/typography.js +1 -1
  70. package/components/typography.js.map +1 -1
  71. package/dist/cjs/{base-button-c158438e.js → base-button-7af4dae7.js} +2 -2
  72. package/dist/cjs/base-button-7af4dae7.js.map +1 -0
  73. package/dist/cjs/{base-icon-button-bbca2582.js → base-icon-button-d085fd45.js} +2 -2
  74. package/dist/cjs/{base-icon-button-bbca2582.js.map → base-icon-button-d085fd45.js.map} +1 -1
  75. package/dist/cjs/ix-application-header.cjs.entry.js +1 -1
  76. package/dist/cjs/ix-application.cjs.entry.js +1 -1
  77. package/dist/cjs/ix-basic-navigation.cjs.entry.js +1 -1
  78. package/dist/cjs/ix-blind.cjs.entry.js +8 -13
  79. package/dist/cjs/ix-blind.cjs.entry.js.map +1 -1
  80. package/dist/cjs/ix-breadcrumb-item.cjs.entry.js +2 -2
  81. package/dist/cjs/ix-breadcrumb-item.cjs.entry.js.map +1 -1
  82. package/dist/cjs/ix-burger-menu.cjs.entry.js +1 -1
  83. package/dist/cjs/ix-button.cjs.entry.js +2 -2
  84. package/dist/cjs/ix-button.cjs.entry.js.map +1 -1
  85. package/dist/cjs/ix-category-filter.cjs.entry.js +2 -2
  86. package/dist/cjs/ix-category-filter.cjs.entry.js.map +1 -1
  87. package/dist/cjs/ix-date-picker_2.cjs.entry.js +1 -1
  88. package/dist/cjs/ix-date-picker_2.cjs.entry.js.map +1 -1
  89. package/dist/cjs/ix-dropdown-button.cjs.entry.js +1 -1
  90. package/dist/cjs/ix-dropdown-button.cjs.entry.js.map +1 -1
  91. package/dist/cjs/ix-dropdown-quick-actions.cjs.entry.js +1 -1
  92. package/dist/cjs/ix-dropdown-quick-actions.cjs.entry.js.map +1 -1
  93. package/dist/cjs/ix-dropdown.cjs.entry.js +52 -1
  94. package/dist/cjs/ix-dropdown.cjs.entry.js.map +1 -1
  95. package/dist/cjs/ix-event-list-item.cjs.entry.js +1 -1
  96. package/dist/cjs/ix-event-list-item.cjs.entry.js.map +1 -1
  97. package/dist/cjs/ix-expanding-search.cjs.entry.js +1 -1
  98. package/dist/cjs/ix-expanding-search.cjs.entry.js.map +1 -1
  99. package/dist/cjs/ix-form-field.cjs.entry.js +1 -1
  100. package/dist/cjs/ix-form-field.cjs.entry.js.map +1 -1
  101. package/dist/cjs/ix-group-context-menu_2.cjs.entry.js +1 -1
  102. package/dist/cjs/ix-group-context-menu_2.cjs.entry.js.map +1 -1
  103. package/dist/cjs/ix-group.cjs.entry.js +1 -1
  104. package/dist/cjs/ix-group.cjs.entry.js.map +1 -1
  105. package/dist/cjs/ix-icon-button_2.cjs.entry.js +3 -3
  106. package/dist/cjs/ix-icon-button_2.cjs.entry.js.map +1 -1
  107. package/dist/cjs/ix-icon-toggle-button.cjs.entry.js +3 -3
  108. package/dist/cjs/ix-icon-toggle-button.cjs.entry.js.map +1 -1
  109. package/dist/cjs/ix-input-group.cjs.entry.js +7 -4
  110. package/dist/cjs/ix-input-group.cjs.entry.js.map +1 -1
  111. package/dist/cjs/ix-kpi.cjs.entry.js +1 -1
  112. package/dist/cjs/ix-kpi.cjs.entry.js.map +1 -1
  113. package/dist/cjs/ix-map-navigation-overlay.cjs.entry.js +1 -1
  114. package/dist/cjs/ix-map-navigation-overlay.cjs.entry.js.map +1 -1
  115. package/dist/cjs/ix-map-navigation.cjs.entry.js +1 -1
  116. package/dist/cjs/ix-map-navigation.cjs.entry.js.map +1 -1
  117. package/dist/cjs/ix-menu.cjs.entry.js +2 -2
  118. package/dist/cjs/ix-menu.cjs.entry.js.map +1 -1
  119. package/dist/cjs/ix-modal-header.cjs.entry.js +7 -5
  120. package/dist/cjs/ix-modal-header.cjs.entry.js.map +1 -1
  121. package/dist/cjs/ix-modal.cjs.entry.js +6 -3
  122. package/dist/cjs/ix-modal.cjs.entry.js.map +1 -1
  123. package/dist/cjs/ix-pagination.cjs.entry.js +2 -2
  124. package/dist/cjs/ix-pagination.cjs.entry.js.map +1 -1
  125. package/dist/cjs/ix-row.cjs.entry.js +1 -1
  126. package/dist/cjs/ix-row.cjs.entry.js.map +1 -1
  127. package/dist/cjs/ix-select.cjs.entry.js +30 -4
  128. package/dist/cjs/ix-select.cjs.entry.js.map +1 -1
  129. package/dist/cjs/ix-slider.cjs.entry.js +25 -3
  130. package/dist/cjs/ix-slider.cjs.entry.js.map +1 -1
  131. package/dist/cjs/ix-tab-item_2.cjs.entry.js +44 -10
  132. package/dist/cjs/ix-tab-item_2.cjs.entry.js.map +1 -1
  133. package/dist/cjs/ix-tile.cjs.entry.js +1 -1
  134. package/dist/cjs/ix-tile.cjs.entry.js.map +1 -1
  135. package/dist/cjs/ix-toast-container.cjs.entry.js +1 -1
  136. package/dist/cjs/ix-toast-container.cjs.entry.js.map +1 -1
  137. package/dist/cjs/ix-toggle-button.cjs.entry.js +1 -1
  138. package/dist/cjs/ix-tree.cjs.entry.js +3 -2
  139. package/dist/cjs/ix-tree.cjs.entry.js.map +1 -1
  140. package/dist/cjs/ix-typography.cjs.entry.js +1 -1
  141. package/dist/cjs/ix-typography.cjs.entry.js.map +1 -1
  142. package/dist/cjs/ix-upload.cjs.entry.js +1 -1
  143. package/dist/cjs/ix-upload.cjs.entry.js.map +1 -1
  144. package/dist/cjs/listener-0cce68b2.js +71 -0
  145. package/dist/cjs/listener-0cce68b2.js.map +1 -0
  146. package/dist/cjs/loader.cjs.js +1 -1
  147. package/dist/cjs/{menu-service-000df68d.js → menu-service-777bf5ce.js} +8 -3
  148. package/dist/cjs/menu-service-777bf5ce.js.map +1 -0
  149. package/dist/cjs/siemens-ix.cjs.js +1 -1
  150. package/dist/collection/components/blind/blind.css +151 -70
  151. package/dist/collection/components/blind/blind.js +8 -13
  152. package/dist/collection/components/blind/blind.js.map +1 -1
  153. package/dist/collection/components/blind/test/blind.ct.js +16 -0
  154. package/dist/collection/components/blind/test/blind.ct.js.map +1 -0
  155. package/dist/collection/components/breadcrumb-item/breadcrumb-item.css +6 -0
  156. package/dist/collection/components/button/base-button.js +1 -1
  157. package/dist/collection/components/button/base-button.js.map +1 -1
  158. package/dist/collection/components/button/button.css +3 -0
  159. package/dist/collection/components/button/test/button.ct.js +1 -1
  160. package/dist/collection/components/button/test/button.ct.js.map +1 -1
  161. package/dist/collection/components/category-filter/category-filter.css +24 -35
  162. package/dist/collection/components/dropdown/dropdown.js +44 -16
  163. package/dist/collection/components/dropdown/dropdown.js.map +1 -1
  164. package/dist/collection/components/dropdown-button/dropdown-button.css +2 -4
  165. package/dist/collection/components/dropdown-quick-actions/dropdown-quick-actions.css +4 -8
  166. package/dist/collection/components/event-list-item/event-list-item.css +1 -0
  167. package/dist/collection/components/expanding-search/expanding-search.css +10 -31
  168. package/dist/collection/components/form-field/form-field.css +7 -0
  169. package/dist/collection/components/group/group-context-menu.css +3 -6
  170. package/dist/collection/components/group/group.css +1 -2
  171. package/dist/collection/components/icon-button/icon-button.css +3 -0
  172. package/dist/collection/components/icon-toggle-button/icon-toggle-button.css +3 -0
  173. package/dist/collection/components/input-group/input-group.js +7 -4
  174. package/dist/collection/components/input-group/input-group.js.map +1 -1
  175. package/dist/collection/components/input-group/tests/input-group.ct.js +66 -0
  176. package/dist/collection/components/input-group/tests/input-group.ct.js.map +1 -1
  177. package/dist/collection/components/kpi/kpi.css +4 -8
  178. package/dist/collection/components/map-navigation/map-navigation.css +1 -2
  179. package/dist/collection/components/map-navigation-overlay/map-navigation-overlay.css +4 -8
  180. package/dist/collection/components/menu/menu.css +1 -7
  181. package/dist/collection/components/modal/modal.js +6 -3
  182. package/dist/collection/components/modal/modal.js.map +1 -1
  183. package/dist/collection/components/modal-header/modal-header.js +7 -5
  184. package/dist/collection/components/modal-header/modal-header.js.map +1 -1
  185. package/dist/collection/components/pagination/pagination.css +16 -37
  186. package/dist/collection/components/pagination/test/pagination.ct.js +1 -1
  187. package/dist/collection/components/pagination/test/pagination.ct.js.map +1 -1
  188. package/dist/collection/components/row/row.css +1 -2
  189. package/dist/collection/components/select/select.js +22 -10
  190. package/dist/collection/components/select/select.js.map +1 -1
  191. package/dist/collection/components/select/test/select.ct.js +19 -0
  192. package/dist/collection/components/select/test/select.ct.js.map +1 -1
  193. package/dist/collection/components/slider/slider.js +15 -10
  194. package/dist/collection/components/slider/slider.js.map +1 -1
  195. package/dist/collection/components/tabs/tabs.js +21 -12
  196. package/dist/collection/components/tabs/tabs.js.map +1 -1
  197. package/dist/collection/components/tile/tile.css +2 -4
  198. package/dist/collection/components/time-picker/time-picker.css +17 -30
  199. package/dist/collection/components/toast/styles/toast-container.css +1 -2
  200. package/dist/collection/components/tooltip/test/tooltip.ct.js +22 -0
  201. package/dist/collection/components/tooltip/test/tooltip.ct.js.map +1 -0
  202. package/dist/collection/components/tree/tree.js +3 -2
  203. package/dist/collection/components/tree/tree.js.map +1 -1
  204. package/dist/collection/components/typography/typography.css +1 -1
  205. package/dist/collection/components/upload/upload.css +4 -8
  206. package/dist/collection/components/utils/application-layout/service.js +7 -2
  207. package/dist/collection/components/utils/application-layout/service.js.map +1 -1
  208. package/dist/collection/components/utils/listener.js +65 -0
  209. package/dist/collection/components/utils/listener.js.map +1 -0
  210. package/dist/collection/components/utils/requestAnimationFrame.js +24 -0
  211. package/dist/collection/components/utils/requestAnimationFrame.js.map +1 -0
  212. package/dist/esm/{base-button-87048318.js → base-button-a4078c61.js} +2 -2
  213. package/dist/esm/base-button-a4078c61.js.map +1 -0
  214. package/dist/esm/{base-icon-button-afac2d95.js → base-icon-button-a3dc30a2.js} +2 -2
  215. package/dist/esm/{base-icon-button-afac2d95.js.map → base-icon-button-a3dc30a2.js.map} +1 -1
  216. package/dist/esm/ix-application-header.entry.js +1 -1
  217. package/dist/esm/ix-application.entry.js +1 -1
  218. package/dist/esm/ix-basic-navigation.entry.js +1 -1
  219. package/dist/esm/ix-blind.entry.js +9 -14
  220. package/dist/esm/ix-blind.entry.js.map +1 -1
  221. package/dist/esm/ix-breadcrumb-item.entry.js +2 -2
  222. package/dist/esm/ix-breadcrumb-item.entry.js.map +1 -1
  223. package/dist/esm/ix-burger-menu.entry.js +1 -1
  224. package/dist/esm/ix-button.entry.js +2 -2
  225. package/dist/esm/ix-button.entry.js.map +1 -1
  226. package/dist/esm/ix-category-filter.entry.js +2 -2
  227. package/dist/esm/ix-category-filter.entry.js.map +1 -1
  228. package/dist/esm/ix-date-picker_2.entry.js +1 -1
  229. package/dist/esm/ix-date-picker_2.entry.js.map +1 -1
  230. package/dist/esm/ix-dropdown-button.entry.js +1 -1
  231. package/dist/esm/ix-dropdown-button.entry.js.map +1 -1
  232. package/dist/esm/ix-dropdown-quick-actions.entry.js +1 -1
  233. package/dist/esm/ix-dropdown-quick-actions.entry.js.map +1 -1
  234. package/dist/esm/ix-dropdown.entry.js +52 -1
  235. package/dist/esm/ix-dropdown.entry.js.map +1 -1
  236. package/dist/esm/ix-event-list-item.entry.js +1 -1
  237. package/dist/esm/ix-event-list-item.entry.js.map +1 -1
  238. package/dist/esm/ix-expanding-search.entry.js +1 -1
  239. package/dist/esm/ix-expanding-search.entry.js.map +1 -1
  240. package/dist/esm/ix-form-field.entry.js +1 -1
  241. package/dist/esm/ix-form-field.entry.js.map +1 -1
  242. package/dist/esm/ix-group-context-menu_2.entry.js +1 -1
  243. package/dist/esm/ix-group-context-menu_2.entry.js.map +1 -1
  244. package/dist/esm/ix-group.entry.js +1 -1
  245. package/dist/esm/ix-group.entry.js.map +1 -1
  246. package/dist/esm/ix-icon-button_2.entry.js +3 -3
  247. package/dist/esm/ix-icon-button_2.entry.js.map +1 -1
  248. package/dist/esm/ix-icon-toggle-button.entry.js +3 -3
  249. package/dist/esm/ix-icon-toggle-button.entry.js.map +1 -1
  250. package/dist/esm/ix-input-group.entry.js +7 -4
  251. package/dist/esm/ix-input-group.entry.js.map +1 -1
  252. package/dist/esm/ix-kpi.entry.js +1 -1
  253. package/dist/esm/ix-kpi.entry.js.map +1 -1
  254. package/dist/esm/ix-map-navigation-overlay.entry.js +1 -1
  255. package/dist/esm/ix-map-navigation-overlay.entry.js.map +1 -1
  256. package/dist/esm/ix-map-navigation.entry.js +1 -1
  257. package/dist/esm/ix-map-navigation.entry.js.map +1 -1
  258. package/dist/esm/ix-menu.entry.js +2 -2
  259. package/dist/esm/ix-menu.entry.js.map +1 -1
  260. package/dist/esm/ix-modal-header.entry.js +7 -5
  261. package/dist/esm/ix-modal-header.entry.js.map +1 -1
  262. package/dist/esm/ix-modal.entry.js +6 -3
  263. package/dist/esm/ix-modal.entry.js.map +1 -1
  264. package/dist/esm/ix-pagination.entry.js +2 -2
  265. package/dist/esm/ix-pagination.entry.js.map +1 -1
  266. package/dist/esm/ix-row.entry.js +1 -1
  267. package/dist/esm/ix-row.entry.js.map +1 -1
  268. package/dist/esm/ix-select.entry.js +30 -4
  269. package/dist/esm/ix-select.entry.js.map +1 -1
  270. package/dist/esm/ix-slider.entry.js +25 -3
  271. package/dist/esm/ix-slider.entry.js.map +1 -1
  272. package/dist/esm/ix-tab-item_2.entry.js +44 -10
  273. package/dist/esm/ix-tab-item_2.entry.js.map +1 -1
  274. package/dist/esm/ix-tile.entry.js +1 -1
  275. package/dist/esm/ix-tile.entry.js.map +1 -1
  276. package/dist/esm/ix-toast-container.entry.js +1 -1
  277. package/dist/esm/ix-toast-container.entry.js.map +1 -1
  278. package/dist/esm/ix-toggle-button.entry.js +1 -1
  279. package/dist/esm/ix-tree.entry.js +3 -2
  280. package/dist/esm/ix-tree.entry.js.map +1 -1
  281. package/dist/esm/ix-typography.entry.js +1 -1
  282. package/dist/esm/ix-typography.entry.js.map +1 -1
  283. package/dist/esm/ix-upload.entry.js +1 -1
  284. package/dist/esm/ix-upload.entry.js.map +1 -1
  285. package/dist/esm/listener-3ed639e6.js +69 -0
  286. package/dist/esm/listener-3ed639e6.js.map +1 -0
  287. package/dist/esm/loader.js +1 -1
  288. package/dist/esm/{menu-service-5555b4fa.js → menu-service-04c1257c.js} +8 -3
  289. package/dist/esm/menu-service-04c1257c.js.map +1 -0
  290. package/dist/esm/siemens-ix.js +1 -1
  291. package/dist/siemens-ix/{p-aef14f96.entry.js → p-08420b3b.entry.js} +2 -2
  292. package/dist/siemens-ix/{p-aef14f96.entry.js.map → p-08420b3b.entry.js.map} +1 -1
  293. package/dist/siemens-ix/p-222b1672.entry.js +2 -0
  294. package/dist/siemens-ix/p-222b1672.entry.js.map +1 -0
  295. package/dist/siemens-ix/p-28633ffb.entry.js +2 -0
  296. package/dist/siemens-ix/{p-b803c716.entry.js.map → p-28633ffb.entry.js.map} +1 -1
  297. package/dist/siemens-ix/p-2ff2382a.entry.js +2 -0
  298. package/dist/siemens-ix/{p-737fca1b.entry.js.map → p-2ff2382a.entry.js.map} +1 -1
  299. package/dist/siemens-ix/p-3733b547.entry.js +2 -0
  300. package/dist/siemens-ix/{p-655d177c.entry.js.map → p-3733b547.entry.js.map} +1 -1
  301. package/dist/siemens-ix/{p-fa7f3eef.entry.js → p-37e0706d.entry.js} +2 -2
  302. package/dist/siemens-ix/{p-fa7f3eef.entry.js.map → p-37e0706d.entry.js.map} +1 -1
  303. package/dist/siemens-ix/p-39a2bd9d.entry.js +2 -0
  304. package/dist/siemens-ix/p-39a2bd9d.entry.js.map +1 -0
  305. package/dist/siemens-ix/p-51853519.entry.js +2 -0
  306. package/dist/siemens-ix/{p-302cd093.entry.js.map → p-51853519.entry.js.map} +1 -1
  307. package/dist/siemens-ix/{p-ad94f795.entry.js → p-556c4b0c.entry.js} +2 -2
  308. package/dist/siemens-ix/p-556c4b0c.entry.js.map +1 -0
  309. package/dist/siemens-ix/{p-f97f2394.entry.js → p-58fe5c24.entry.js} +2 -2
  310. package/dist/siemens-ix/p-5a0d7f95.entry.js +2 -0
  311. package/dist/siemens-ix/{p-355f9085.entry.js.map → p-5a0d7f95.entry.js.map} +1 -1
  312. package/dist/siemens-ix/p-5d907f16.entry.js +2 -0
  313. package/dist/siemens-ix/{p-b6d40648.entry.js.map → p-5d907f16.entry.js.map} +1 -1
  314. package/dist/siemens-ix/p-616b1eba.entry.js +2 -0
  315. package/dist/siemens-ix/{p-634da7f2.entry.js.map → p-616b1eba.entry.js.map} +1 -1
  316. package/dist/siemens-ix/p-68809439.entry.js +2 -0
  317. package/dist/siemens-ix/{p-9e0af149.entry.js.map → p-68809439.entry.js.map} +1 -1
  318. package/dist/siemens-ix/p-68b2dcca.entry.js +2 -0
  319. package/dist/siemens-ix/p-68b2dcca.entry.js.map +1 -0
  320. package/dist/siemens-ix/p-70bfeb3d.entry.js +2 -0
  321. package/dist/siemens-ix/{p-9249df8d.entry.js.map → p-70bfeb3d.entry.js.map} +1 -1
  322. package/dist/siemens-ix/p-79405d11.entry.js +2 -0
  323. package/dist/siemens-ix/{p-59dc0873.entry.js.map → p-79405d11.entry.js.map} +1 -1
  324. package/dist/siemens-ix/{p-ab452b82.js → p-7c5fc1c9.js} +2 -2
  325. package/dist/siemens-ix/{p-ab452b82.js.map → p-7c5fc1c9.js.map} +1 -1
  326. package/dist/siemens-ix/{p-5516480a.entry.js → p-8968a070.entry.js} +2 -2
  327. package/dist/siemens-ix/{p-5516480a.entry.js.map → p-8968a070.entry.js.map} +1 -1
  328. package/dist/siemens-ix/p-8b0793be.js +2 -0
  329. package/dist/siemens-ix/p-8b0fa98a.entry.js +2 -0
  330. package/dist/siemens-ix/{p-32265ee2.entry.js.map → p-8b0fa98a.entry.js.map} +1 -1
  331. package/dist/siemens-ix/p-8ba5f3c5.entry.js +2 -0
  332. package/dist/siemens-ix/p-8ba5f3c5.entry.js.map +1 -0
  333. package/dist/siemens-ix/{p-d7e974a8.entry.js → p-939376fb.entry.js} +2 -2
  334. package/dist/siemens-ix/p-939376fb.entry.js.map +1 -0
  335. package/dist/siemens-ix/p-9594dcfb.entry.js +2 -0
  336. package/dist/siemens-ix/{p-9848e4de.entry.js.map → p-9594dcfb.entry.js.map} +1 -1
  337. package/dist/siemens-ix/p-9dda017b.entry.js +2 -0
  338. package/dist/siemens-ix/p-9dda017b.entry.js.map +1 -0
  339. package/dist/siemens-ix/{p-b2042a15.entry.js → p-a00079d9.entry.js} +2 -2
  340. package/dist/siemens-ix/p-a00079d9.entry.js.map +1 -0
  341. package/dist/siemens-ix/p-aa89afe7.entry.js +2 -0
  342. package/dist/siemens-ix/{p-5a5e155c.entry.js.map → p-aa89afe7.entry.js.map} +1 -1
  343. package/dist/siemens-ix/{p-847da072.entry.js → p-aaef1367.entry.js} +2 -2
  344. package/dist/siemens-ix/{p-847da072.entry.js.map → p-aaef1367.entry.js.map} +1 -1
  345. package/dist/siemens-ix/p-b59e7155.js +2 -0
  346. package/dist/siemens-ix/p-b59e7155.js.map +1 -0
  347. package/dist/siemens-ix/p-bdc0c1f8.entry.js +2 -0
  348. package/dist/siemens-ix/{p-b735ee5e.entry.js.map → p-bdc0c1f8.entry.js.map} +1 -1
  349. package/dist/siemens-ix/p-c996a0ba.entry.js +2 -0
  350. package/dist/siemens-ix/p-c996a0ba.entry.js.map +1 -0
  351. package/dist/siemens-ix/p-ccf212e4.entry.js +2 -0
  352. package/dist/siemens-ix/{p-4968df15.entry.js.map → p-ccf212e4.entry.js.map} +1 -1
  353. package/dist/siemens-ix/p-cd8c86e2.entry.js +2 -0
  354. package/dist/siemens-ix/{p-da133606.entry.js.map → p-cd8c86e2.entry.js.map} +1 -1
  355. package/dist/siemens-ix/p-ce050115.entry.js +2 -0
  356. package/dist/siemens-ix/{p-167c037c.entry.js.map → p-ce050115.entry.js.map} +1 -1
  357. package/dist/siemens-ix/p-ceeefa96.entry.js +2 -0
  358. package/dist/siemens-ix/{p-dcb957d8.entry.js.map → p-ceeefa96.entry.js.map} +1 -1
  359. package/dist/siemens-ix/p-d0630de9.entry.js +2 -0
  360. package/dist/siemens-ix/p-d0630de9.entry.js.map +1 -0
  361. package/dist/siemens-ix/{p-042b8889.entry.js → p-d11781e7.entry.js} +2 -2
  362. package/dist/siemens-ix/{p-574e3cd1.entry.js → p-db7a632e.entry.js} +2 -2
  363. package/dist/siemens-ix/{p-228c5657.entry.js → p-e483ad44.entry.js} +2 -2
  364. package/dist/siemens-ix/p-e7406217.entry.js +2 -0
  365. package/dist/siemens-ix/{p-d29bcf75.entry.js.map → p-e7406217.entry.js.map} +1 -1
  366. package/dist/siemens-ix/p-f18c11c5.js +2 -0
  367. package/dist/siemens-ix/p-f18c11c5.js.map +1 -0
  368. package/dist/siemens-ix/siemens-ix-core.css +1 -1
  369. package/dist/siemens-ix/siemens-ix.css +26 -48
  370. package/dist/siemens-ix/siemens-ix.esm.js +1 -1
  371. package/dist/siemens-ix/siemens-ix.esm.js.map +1 -1
  372. package/dist/types/components/blind/test/blind.ct.d.ts +1 -0
  373. package/dist/types/components/dropdown/dropdown.d.ts +1 -0
  374. package/dist/types/components/slider/slider.d.ts +1 -1
  375. package/dist/types/components/tabs/tabs.d.ts +3 -2
  376. package/dist/types/components/tooltip/test/tooltip.ct.d.ts +1 -0
  377. package/dist/types/components/utils/listener.d.ts +11 -0
  378. package/dist/types/components/utils/requestAnimationFrame.d.ts +7 -0
  379. package/package.json +1 -1
  380. package/scss/components/form/_input.scss +8 -1
  381. package/scss/legacy/components/_forms.scss +0 -13
  382. package/scss/mixins/_fonts.scss +1 -1
  383. package/dist/cjs/base-button-c158438e.js.map +0 -1
  384. package/dist/cjs/menu-service-000df68d.js.map +0 -1
  385. package/dist/esm/base-button-87048318.js.map +0 -1
  386. package/dist/esm/menu-service-5555b4fa.js.map +0 -1
  387. package/dist/siemens-ix/p-167c037c.entry.js +0 -2
  388. package/dist/siemens-ix/p-1b9b19e6.js +0 -2
  389. package/dist/siemens-ix/p-28d29e36.entry.js +0 -2
  390. package/dist/siemens-ix/p-28d29e36.entry.js.map +0 -1
  391. package/dist/siemens-ix/p-302cd093.entry.js +0 -2
  392. package/dist/siemens-ix/p-32265ee2.entry.js +0 -2
  393. package/dist/siemens-ix/p-355f9085.entry.js +0 -2
  394. package/dist/siemens-ix/p-3ab30153.entry.js +0 -2
  395. package/dist/siemens-ix/p-3ab30153.entry.js.map +0 -1
  396. package/dist/siemens-ix/p-4968df15.entry.js +0 -2
  397. package/dist/siemens-ix/p-59dc0873.entry.js +0 -2
  398. package/dist/siemens-ix/p-5a5e155c.entry.js +0 -2
  399. package/dist/siemens-ix/p-5d172daa.js +0 -2
  400. package/dist/siemens-ix/p-5d172daa.js.map +0 -1
  401. package/dist/siemens-ix/p-634da7f2.entry.js +0 -2
  402. package/dist/siemens-ix/p-655d177c.entry.js +0 -2
  403. package/dist/siemens-ix/p-737fca1b.entry.js +0 -2
  404. package/dist/siemens-ix/p-9249df8d.entry.js +0 -2
  405. package/dist/siemens-ix/p-9848e4de.entry.js +0 -2
  406. package/dist/siemens-ix/p-9e0af149.entry.js +0 -2
  407. package/dist/siemens-ix/p-ad94f795.entry.js.map +0 -1
  408. package/dist/siemens-ix/p-b2042a15.entry.js.map +0 -1
  409. package/dist/siemens-ix/p-b6d40648.entry.js +0 -2
  410. package/dist/siemens-ix/p-b735ee5e.entry.js +0 -2
  411. package/dist/siemens-ix/p-b803c716.entry.js +0 -2
  412. package/dist/siemens-ix/p-bd873b87.entry.js +0 -2
  413. package/dist/siemens-ix/p-bd873b87.entry.js.map +0 -1
  414. package/dist/siemens-ix/p-c1318e16.entry.js +0 -2
  415. package/dist/siemens-ix/p-c1318e16.entry.js.map +0 -1
  416. package/dist/siemens-ix/p-d16a4670.entry.js +0 -2
  417. package/dist/siemens-ix/p-d16a4670.entry.js.map +0 -1
  418. package/dist/siemens-ix/p-d214f57a.entry.js +0 -2
  419. package/dist/siemens-ix/p-d214f57a.entry.js.map +0 -1
  420. package/dist/siemens-ix/p-d29bcf75.entry.js +0 -2
  421. package/dist/siemens-ix/p-d7e974a8.entry.js.map +0 -1
  422. package/dist/siemens-ix/p-da133606.entry.js +0 -2
  423. package/dist/siemens-ix/p-dcb957d8.entry.js +0 -2
  424. package/dist/siemens-ix/p-fd6006d2.entry.js +0 -2
  425. package/dist/siemens-ix/p-fd6006d2.entry.js.map +0 -1
  426. /package/dist/siemens-ix/{p-f97f2394.entry.js.map → p-58fe5c24.entry.js.map} +0 -0
  427. /package/dist/siemens-ix/{p-1b9b19e6.js.map → p-8b0793be.js.map} +0 -0
  428. /package/dist/siemens-ix/{p-042b8889.entry.js.map → p-d11781e7.entry.js.map} +0 -0
  429. /package/dist/siemens-ix/{p-574e3cd1.entry.js.map → p-db7a632e.entry.js.map} +0 -0
  430. /package/dist/siemens-ix/{p-228c5657.entry.js.map → p-e483ad44.entry.js.map} +0 -0
@@ -201,6 +201,9 @@
201
201
  :host .content-start {
202
202
  width: 100%;
203
203
  }
204
+ :host .icon {
205
+ pointer-events: none;
206
+ }
204
207
 
205
208
  :host(.disabled) {
206
209
  cursor: default;
@@ -658,8 +661,7 @@
658
661
  padding: 0.25rem 0.5rem;
659
662
  }
660
663
  .dropdown-buttons ix-icon-button + ix-icon-button {
661
- -webkit-margin-start: 0.5rem;
662
- margin-inline-start: 0.5rem;
664
+ margin-inline-start: 0.5rem;
663
665
  }
664
666
 
665
667
  .dropdown-item {
@@ -708,8 +710,7 @@
708
710
  }
709
711
  .dropdown-item > .glyph {
710
712
  color: var(--theme-menu-item-icon--color);
711
- -webkit-margin-end: 0.5rem;
712
- margin-inline-end: 0.5rem;
713
+ margin-inline-end: 0.5rem;
713
714
  }
714
715
  .dropdown-item > .glyph.disabled {
715
716
  color: var(--color-weak-text);
@@ -805,10 +806,8 @@ button.dropdown-toggle::after {
805
806
  background-color: var(--theme-input--background);
806
807
  border: solid 1px var(--theme-input--border-color);
807
808
  box-shadow: var(--theme-input--box-shadow);
808
- -webkit-padding-start: 0.5rem;
809
- padding-inline-start: 0.5rem;
810
- -webkit-padding-end: 0.5rem;
811
- padding-inline-end: 0.5rem;
809
+ padding-inline-start: 0.5rem;
810
+ padding-inline-end: 0.5rem;
812
811
  }
813
812
  .form-control::-moz-placeholder, .form-control-plaintext::-moz-placeholder {
814
813
  color: var(--theme-input-hint--color);
@@ -868,12 +867,9 @@ button.dropdown-toggle::after {
868
867
  .form-control.readonly,
869
868
  .form-control[readonly] {
870
869
  background: transparent !important;
871
- -webkit-border-before: none !important;
872
- border-block-start: none !important;
873
- -webkit-border-start: none !important;
874
- border-inline-start: none !important;
875
- -webkit-border-end: none !important;
876
- border-inline-end: none !important;
870
+ border-block-start: none !important;
871
+ border-inline-start: none !important;
872
+ border-inline-end: none !important;
877
873
  border-radius: 0rem;
878
874
  }
879
875
 
@@ -909,12 +905,9 @@ button.dropdown-toggle::after {
909
905
  .form-control:disabled,
910
906
  .form-control.disabled {
911
907
  background: transparent !important;
912
- -webkit-border-before: none !important;
913
- border-block-start: none !important;
914
- -webkit-border-start: none !important;
915
- border-inline-start: none !important;
916
- -webkit-border-end: none !important;
917
- border-inline-end: none !important;
908
+ border-block-start: none !important;
909
+ border-inline-start: none !important;
910
+ border-inline-end: none !important;
918
911
  border-radius: 0rem;
919
912
  color: var(--theme-color-weak-text);
920
913
  border-color: var(--theme-input--border-color-bottom--disabled);
@@ -944,13 +937,11 @@ button.dropdown-toggle::after {
944
937
  .input-wrapper > .glyph {
945
938
  display: block;
946
939
  position: absolute;
947
- -webkit-margin-start: 0.312rem;
948
- margin-inline-start: 0.312rem;
940
+ margin-inline-start: 0.312rem;
949
941
  color: var(--theme-color-std-text);
950
942
  }
951
943
  .input-wrapper > input {
952
- -webkit-padding-start: 2.2rem;
953
- padding-inline-start: 2.2rem;
944
+ padding-inline-start: 2.2rem;
954
945
  }
955
946
 
956
947
  select.form-control {
@@ -961,17 +952,6 @@ textarea.form-control {
961
952
  padding: 0.375rem 0.5rem;
962
953
  }
963
954
 
964
- .was-validated .form-control:invalid,
965
- .was-validated .is-invalid {
966
- background-color: var(--theme-input-error--background);
967
- background-image: url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='512px' height='512px' viewBox='0 0 512 512' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3C!-- Generator: sketchtool 62 (101010) - https://sketch.com --%3E%3Ctitle%3Eerror%3C/title%3E%3Cdesc%3ECreated with sketchtool.%3C/desc%3E%3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' fill-opacity='0.75'%3E%3Cg id='error' fill='%23ff2640'%3E%3Cg id='error/error'%3E%3Cpath d='M256,42.6666667 C373.626371,42.6666667 469.333333,138.373627 469.333333,256 C469.333333,373.626371 373.626371,469.333333 256,469.333333 C138.373627,469.333333 42.6666667,373.626371 42.6666667,256 C42.6666667,138.373627 138.373627,42.6666667 256,42.6666667 Z M256,85.3333333 C161.559631,85.3333333 85.3333333,161.559631 85.3333333,256 C85.3333333,350.44037 161.559631,426.666667 256,426.666667 C350.44037,426.666667 426.666667,350.44037 426.666667,256 C426.666667,161.559631 350.44037,85.3333333 256,85.3333333 Z M326.248389,155.581722 L356.418278,185.751611 L286.168667,255.999667 L356.418278,326.248389 L326.248389,356.418278 L255.999667,286.168667 L185.751611,356.418278 L155.581722,326.248389 L225.829667,255.999667 L155.581722,185.751611 L185.751611,155.581722 L255.999667,225.829667 L326.248389,155.581722 Z' id='Combined-Shape'%3E%3C/path%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E") !important;
968
- background-position: left calc(0.375em + 0.1875rem) center !important;
969
- padding-right: 0.75rem;
970
- padding-left: calc(1.5em + 0.75rem);
971
- background-size: 18px;
972
- background-repeat: no-repeat;
973
- }
974
-
975
955
  input.disabled, input:disabled {
976
956
  color: var(--theme-input--color--disabled);
977
957
  }
@@ -1035,6 +1015,7 @@ input, input:-webkit-autofill {
1035
1015
  padding: 0.25rem 0.5rem;
1036
1016
  background-color: var(--theme-input--background);
1037
1017
  color: var(--theme-input--color);
1018
+ text-overflow: ellipsis;
1038
1019
  border: var(--theme-input--border-thickness, 1px) solid var(--theme-input--border-color);
1039
1020
  border-radius: var(--theme-input--border-radius);
1040
1021
  box-shadow: var(--theme-input--box-shadow);
@@ -1126,6 +1107,7 @@ textarea, textarea:-webkit-autofill {
1126
1107
  padding: 0.25rem 0.5rem;
1127
1108
  background-color: var(--theme-input--background);
1128
1109
  color: var(--theme-input--color);
1110
+ text-overflow: ellipsis;
1129
1111
  border: var(--theme-input--border-thickness, 1px) solid var(--theme-input--border-color);
1130
1112
  border-radius: var(--theme-input--border-radius);
1131
1113
  box-shadow: var(--theme-input--box-shadow);
@@ -1240,6 +1222,11 @@ form.was-validated .is-valid ~ .valid-feedback {
1240
1222
  display: block;
1241
1223
  }
1242
1224
 
1225
+ form:not(.was-validated) .invalid-feedback,
1226
+ form:not(.was-validated) .valid-feedback {
1227
+ display: none !important;
1228
+ }
1229
+
1243
1230
  :host {
1244
1231
  /* width */
1245
1232
  /* Track */
@@ -1312,6 +1299,7 @@ form.was-validated .is-valid ~ .valid-feedback {
1312
1299
  padding: 0.25rem 0.5rem;
1313
1300
  background-color: var(--theme-input--background);
1314
1301
  color: var(--theme-input--color);
1302
+ text-overflow: ellipsis;
1315
1303
  border: var(--theme-input--border-thickness, 1px) solid var(--theme-input--border-color);
1316
1304
  border-radius: var(--theme-input--border-radius);
1317
1305
  box-shadow: var(--theme-input--box-shadow);
@@ -1370,6 +1358,7 @@ form.was-validated .is-valid ~ .valid-feedback {
1370
1358
  padding: 0.25rem 0.5rem;
1371
1359
  background-color: var(--theme-input--background);
1372
1360
  color: var(--theme-input--color);
1361
+ text-overflow: ellipsis;
1373
1362
  border: var(--theme-input--border-thickness, 1px) solid var(--theme-input--border-color);
1374
1363
  border-radius: var(--theme-input--border-radius);
1375
1364
  box-shadow: var(--theme-input--box-shadow);
@@ -6,8 +6,19 @@
6
6
  * This source code is licensed under the MIT license found in the
7
7
  * LICENSE file in the root directory of this source tree.
8
8
  */
9
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
10
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
11
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
12
+ r = Reflect.decorate(decorators, target, key, desc);
13
+ else
14
+ for (var i = decorators.length - 1; i >= 0; i--)
15
+ if (d = decorators[i])
16
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
17
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
18
+ };
9
19
  import { autoUpdate, computePosition, flip, inline, offset, shift, } from '@floating-ui/dom';
10
20
  import { h, Host, } from '@stencil/core';
21
+ import { OnListener } from '../utils/listener';
11
22
  const dropdownDisposer = new Map();
12
23
  let sequenceId = 0;
13
24
  export class Dropdown {
@@ -33,7 +44,33 @@ export class Dropdown {
33
44
  dropdownDisposer.set(this.localUId, {
34
45
  dispose: this.close.bind(this),
35
46
  element: this.hostElement,
47
+ child: null,
36
48
  });
49
+ const parentDropdown = this.closestPassShadow(this.hostElement.parentNode, 'ix-dropdown');
50
+ if (parentDropdown) {
51
+ for (let entry of dropdownDisposer.values()) {
52
+ if (entry.element === parentDropdown) {
53
+ entry.child = this.hostElement;
54
+ }
55
+ }
56
+ }
57
+ }
58
+ closestPassShadow(node, selector) {
59
+ if (!node) {
60
+ return null;
61
+ }
62
+ if (node instanceof ShadowRoot) {
63
+ return this.closestPassShadow(node.host, selector);
64
+ }
65
+ if (node instanceof HTMLElement) {
66
+ if (node.matches(selector)) {
67
+ return node;
68
+ }
69
+ else {
70
+ return this.closestPassShadow(node.parentNode, selector);
71
+ }
72
+ }
73
+ return this.closestPassShadow(node.parentNode, selector);
37
74
  }
38
75
  get dropdownItems() {
39
76
  return Array.from(this.hostElement.querySelectorAll('ix-dropdown-item'));
@@ -130,7 +167,7 @@ export class Dropdown {
130
167
  dropdownDisposer.forEach((entry, id) => {
131
168
  if (id !== this.localUId &&
132
169
  !this.isAnchorSubmenu() &&
133
- !entry.element.contains(this.hostElement)) {
170
+ entry.child !== this.hostElement) {
134
171
  entry.dispose();
135
172
  }
136
173
  });
@@ -609,20 +646,11 @@ export class Dropdown {
609
646
  "methodName": "changedTrigger"
610
647
  }];
611
648
  }
612
- static get listeners() {
613
- return [{
614
- "name": "click",
615
- "method": "clickOutside",
616
- "target": "window",
617
- "capture": false,
618
- "passive": false
619
- }, {
620
- "name": "keydown",
621
- "method": "keydown",
622
- "target": "window",
623
- "capture": false,
624
- "passive": false
625
- }];
626
- }
627
649
  }
650
+ __decorate([
651
+ OnListener('click', (self) => self.show)
652
+ ], Dropdown.prototype, "clickOutside", null);
653
+ __decorate([
654
+ OnListener('keydown', (self) => self.show)
655
+ ], Dropdown.prototype, "keydown", null);
628
656
  //# sourceMappingURL=dropdown.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown.js","sourceRoot":"","sources":["../../../src/components/dropdown/dropdown.tsx"],"names":[],"mappings":"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","sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n autoUpdate,\n computePosition,\n ComputePositionConfig,\n flip,\n inline,\n offset,\n shift,\n} from '@floating-ui/dom';\nimport {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Method,\n Prop,\n Watch,\n} from '@stencil/core';\nimport { AlignedPlacement } from './placement';\n\n/**\n * @internal\n */\nexport type DropdownTriggerEvent = 'click' | 'hover' | 'focus';\n\ntype DisposeDropdown = () => void;\ntype DropdownDisposerEntry = {\n element: HTMLIxDropdownElement;\n dispose: DisposeDropdown;\n};\nconst dropdownDisposer = new Map<string, DropdownDisposerEntry>();\nlet sequenceId = 0;\n\n@Component({\n tag: 'ix-dropdown',\n styleUrl: 'dropdown.scss',\n shadow: true,\n})\nexport class Dropdown {\n @Element() hostElement!: HTMLIxDropdownElement;\n\n /**\n * Suppress the automatic placement of the dropdown.\n *\n * @since 2.0.0\n */\n @Prop() suppressAutomaticPlacement = false;\n\n /**\n * Show dropdown\n */\n @Prop({ mutable: true, reflect: true }) show = false;\n\n /**\n * Define an element that triggers the dropdown.\n * A trigger can either be a string that will be interpreted as id attribute or a DOM element.\n */\n @Prop() trigger: string | HTMLElement;\n\n /**\n * Define an anchor element\n */\n @Prop() anchor: string | HTMLElement;\n\n /**\n * Controls if the dropdown will be closed in response to a click event depending on the position of the event relative to the dropdown.\n */\n @Prop() closeBehavior: 'inside' | 'outside' | 'both' | boolean = 'both';\n\n /**\n * Placement of the dropdown\n */\n @Prop() placement: AlignedPlacement = 'bottom-start';\n\n /**\n * Position strategy\n */\n @Prop() positioningStrategy: 'absolute' | 'fixed' = 'fixed';\n\n /**\n * An optional header shown at the top of the dropdown\n */\n @Prop() header?: string;\n\n /**\n * Move dropdown along main axis of alignment\n *\n * @internal\n */\n @Prop() offset: {\n mainAxis?: number;\n crossAxis?: number;\n alignmentAxis?: number;\n };\n\n /**\n * Define one or more events to open dropdown\n * @internal\n */\n @Prop() triggerEvent: DropdownTriggerEvent | DropdownTriggerEvent[] = 'click';\n\n /**\n * @internal\n */\n @Prop() overwriteDropdownStyle: (delegate: {\n dropdownRef: HTMLElement;\n triggerRef?: HTMLElement;\n }) => Promise<Partial<CSSStyleDeclaration>>;\n\n /**\n * Fire event after visibility of dropdown has changed\n */\n @Event() showChanged: EventEmitter<boolean>;\n\n private autoUpdateCleanup: () => void = null;\n\n private triggerElement?: Element;\n private anchorElement?: Element;\n\n private dropdownRef: HTMLElement;\n\n private toggleBind: any;\n private openBind: any;\n\n private localUId = `dropdown-${sequenceId++}-${new Date().valueOf()}`;\n\n constructor() {\n this.toggleBind = this.toggle.bind(this);\n this.openBind = this.open.bind(this);\n\n if (dropdownDisposer.has(this.localUId)) {\n console.warn('Dropdown with duplicated id detected');\n }\n\n dropdownDisposer.set(this.localUId, {\n dispose: this.close.bind(this),\n element: this.hostElement,\n });\n }\n\n get dropdownItems() {\n return Array.from(this.hostElement.querySelectorAll('ix-dropdown-item'));\n }\n\n get slotElement() {\n return this.hostElement.shadowRoot.querySelector('slot');\n }\n\n private addEventListenersFor(triggerEvent: DropdownTriggerEvent) {\n switch (triggerEvent) {\n case 'click':\n this.triggerElement.addEventListener('click', this.openBind);\n break;\n\n case 'hover':\n this.triggerElement.addEventListener('mouseenter', this.openBind);\n break;\n\n case 'focus':\n this.triggerElement.addEventListener('focusin', this.openBind);\n break;\n }\n }\n\n private removeEventListenersFor(\n triggerEvent: DropdownTriggerEvent,\n triggerElement: Element\n ) {\n switch (triggerEvent) {\n case 'click':\n if (this.closeBehavior === 'outside') {\n triggerElement.removeEventListener('click', this.openBind);\n } else {\n triggerElement.removeEventListener('click', this.toggleBind);\n }\n break;\n\n case 'hover':\n triggerElement.removeEventListener('mouseenter', this.openBind);\n break;\n\n case 'focus':\n triggerElement.removeEventListener('focusin', this.openBind);\n break;\n }\n }\n\n private async registerListener(element: string | HTMLElement) {\n this.triggerElement = await this.resolveElement(element);\n if (this.triggerElement) {\n if (Array.isArray(this.triggerEvent)) {\n this.triggerEvent.forEach((triggerEvent) => {\n this.addEventListenersFor(triggerEvent);\n });\n } else {\n this.addEventListenersFor(this.triggerEvent);\n }\n }\n }\n\n private async unregisterListener(element: string | HTMLElement) {\n const trigger = await this.resolveElement(element);\n if (Array.isArray(this.triggerEvent)) {\n this.triggerEvent.forEach((triggerEvent) => {\n this.removeEventListenersFor(triggerEvent, trigger);\n });\n } else {\n this.removeEventListenersFor(this.triggerEvent, trigger);\n }\n }\n\n private resolveElement(element: string | HTMLElement): Promise<Element> {\n if (typeof element !== 'string') {\n return Promise.resolve(element);\n }\n\n const selector = `#${element}`;\n return new Promise((resolve) => {\n if (document.querySelector(selector)) {\n return resolve(document.querySelector(selector));\n }\n\n const observer = new MutationObserver(() => {\n if (document.querySelector(selector)) {\n resolve(document.querySelector(selector));\n observer.disconnect();\n }\n });\n\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n });\n });\n }\n\n @Watch('show')\n async changedShow(newShow: boolean) {\n if (newShow) {\n this.anchorElement = await (this.anchor\n ? this.resolveElement(this.anchor)\n : this.resolveElement(this.trigger));\n\n if (this.anchorElement) {\n this.applyDropdownPosition();\n }\n }\n\n if (newShow) {\n dropdownDisposer.forEach((entry, id) => {\n if (\n id !== this.localUId &&\n !this.isAnchorSubmenu() &&\n !entry.element.contains(this.hostElement)\n ) {\n entry.dispose();\n }\n });\n }\n }\n\n @Watch('trigger')\n changedTrigger(\n newTriggerValue: string | HTMLElement,\n oldTriggerValue: string | HTMLElement\n ) {\n if (newTriggerValue) {\n this.registerListener(newTriggerValue);\n }\n\n if (oldTriggerValue) {\n this.unregisterListener(oldTriggerValue);\n }\n }\n\n @Listen('click', {\n target: 'window',\n })\n clickOutside(event: PointerEvent) {\n const target = event.target as HTMLElement;\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (\n this.show === false ||\n this.closeBehavior === false ||\n this.anchorElement?.contains(target) ||\n this.triggerElement?.contains(target)\n ) {\n return;\n }\n\n const clickInsideDropdown = this.isClickInsideDropdown(event);\n\n switch (this.closeBehavior) {\n case 'outside':\n if (!clickInsideDropdown || this.anchor === target) {\n this.close();\n }\n break;\n case 'inside':\n if (clickInsideDropdown && this.hostElement !== target) {\n this.close();\n }\n break;\n case 'both':\n if (this.hostElement !== target) {\n this.close();\n }\n break;\n default:\n this.close();\n }\n }\n\n @Listen('keydown', {\n target: 'window',\n })\n keydown(event: KeyboardEvent) {\n if (this.show === true && event.code === 'Escape') {\n this.close();\n }\n }\n\n private isNestedDropdown(element: Element) {\n return element.closest('ix-dropdown');\n }\n\n private isAnchorSubmenu() {\n const anchor = this.anchorElement?.closest('ix-dropdown-item');\n if (!anchor) {\n return false;\n }\n\n return true;\n }\n\n private toggle(event: Event) {\n event.preventDefault();\n\n if (this.isNestedDropdown(event.target as HTMLElement)) {\n event.stopPropagation();\n }\n\n const { defaultPrevented } = this.showChanged.emit(this.show);\n\n if (!defaultPrevented) {\n this.show = !this.show;\n }\n }\n\n private open(event: Event) {\n event.preventDefault();\n\n if (this.isNestedDropdown(event.target as HTMLElement)) {\n event.stopPropagation();\n }\n\n const { defaultPrevented } = this.showChanged.emit(true);\n\n if (!defaultPrevented) {\n this.show = true;\n }\n }\n\n private close() {\n const { defaultPrevented } = this.showChanged.emit(false);\n\n if (!defaultPrevented) {\n this.show = false;\n }\n }\n\n private async applyDropdownPosition() {\n if (!this.anchorElement) {\n return;\n }\n if (!this.dropdownRef) {\n return;\n }\n const isSubmenu = this.isAnchorSubmenu();\n\n let positionConfig: Partial<ComputePositionConfig> = {\n strategy: this.positioningStrategy,\n middleware: [],\n };\n\n if (!this.suppressAutomaticPlacement) {\n positionConfig.middleware.push(\n flip({ fallbackStrategy: 'initialPlacement' })\n );\n }\n\n positionConfig.placement = isSubmenu ? 'right-start' : this.placement;\n\n positionConfig.middleware = [\n ...positionConfig.middleware,\n inline(),\n shift(),\n ];\n\n if (this.offset) {\n positionConfig.middleware.push(offset(this.offset));\n }\n\n if (this.autoUpdateCleanup) {\n this.autoUpdateCleanup();\n this.autoUpdateCleanup = null;\n }\n\n this.autoUpdateCleanup = autoUpdate(\n this.anchorElement,\n this.dropdownRef,\n async () => {\n const computeResponse = await computePosition(\n this.anchorElement,\n this.dropdownRef,\n positionConfig\n );\n\n Object.assign(this.dropdownRef.style, {\n top: '0',\n left: '0',\n transform: `translate(${Math.round(computeResponse.x)}px,${Math.round(\n computeResponse.y\n )}px)`,\n });\n if (this.overwriteDropdownStyle) {\n const overwriteStyle = await this.overwriteDropdownStyle({\n dropdownRef: this.dropdownRef,\n triggerRef: this.triggerElement as HTMLElement,\n });\n\n Object.assign(this.dropdownRef.style, overwriteStyle);\n }\n },\n {\n ancestorResize: true,\n ancestorScroll: true,\n elementResize: true,\n }\n );\n }\n\n async componentDidLoad() {\n this.changedTrigger(this.trigger, null);\n }\n\n async componentDidRender() {\n await this.applyDropdownPosition();\n this.anchorElement = await (this.anchor\n ? this.resolveElement(this.anchor)\n : this.resolveElement(this.trigger));\n\n if (\n this.isAnchorSubmenu() &&\n this.anchorElement?.tagName === 'IX-DROPDOWN-ITEM'\n ) {\n (this.anchorElement as HTMLIxDropdownItemElement).isSubMenu = true;\n }\n }\n\n private isClickInsideDropdown(event: PointerEvent) {\n const rect = this.dropdownRef.getBoundingClientRect();\n return (\n rect.top <= event.clientY &&\n event.clientY <= rect.top + rect.height &&\n rect.left <= event.clientX &&\n event.clientX <= rect.left + rect.width\n );\n }\n\n disconnectedCallback() {\n if (this.autoUpdateCleanup) {\n this.autoUpdateCleanup();\n }\n\n if (dropdownDisposer.has(this.localUId)) {\n dropdownDisposer.delete(this.localUId);\n }\n }\n\n /**\n * Update position of dropdown\n */\n @Method()\n async updatePosition() {\n this.applyDropdownPosition();\n }\n\n render() {\n return (\n <Host\n ref={(ref) => (this.dropdownRef = ref)}\n class={{\n 'dropdown-menu': true,\n show: this.show,\n overflow: true,\n }}\n style={{\n margin: '0',\n minWidth: '0px',\n position: this.positioningStrategy,\n }}\n role=\"list\"\n >\n <div style={{ display: 'contents' }}>\n {this.header ? <div class=\"dropdown-header\">{this.header}</div> : ''}\n\n <slot></slot>\n </div>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"dropdown.js","sourceRoot":"","sources":["../../../src/components/dropdown/dropdown.tsx"],"names":[],"mappings":"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","sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n autoUpdate,\n computePosition,\n ComputePositionConfig,\n flip,\n inline,\n offset,\n shift,\n} from '@floating-ui/dom';\nimport {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n Watch,\n} from '@stencil/core';\nimport { OnListener } from '../utils/listener';\nimport { AlignedPlacement } from './placement';\n\n/**\n * @internal\n */\nexport type DropdownTriggerEvent = 'click' | 'hover' | 'focus';\n\ntype DisposeDropdown = () => void;\ntype DropdownDisposerEntry = {\n element: HTMLIxDropdownElement;\n child: HTMLIxDropdownElement;\n dispose: DisposeDropdown;\n};\nconst dropdownDisposer = new Map<string, DropdownDisposerEntry>();\nlet sequenceId = 0;\n\n@Component({\n tag: 'ix-dropdown',\n styleUrl: 'dropdown.scss',\n shadow: true,\n})\nexport class Dropdown {\n @Element() hostElement!: HTMLIxDropdownElement;\n\n /**\n * Suppress the automatic placement of the dropdown.\n *\n * @since 2.0.0\n */\n @Prop() suppressAutomaticPlacement = false;\n\n /**\n * Show dropdown\n */\n @Prop({ mutable: true, reflect: true }) show = false;\n\n /**\n * Define an element that triggers the dropdown.\n * A trigger can either be a string that will be interpreted as id attribute or a DOM element.\n */\n @Prop() trigger: string | HTMLElement;\n\n /**\n * Define an anchor element\n */\n @Prop() anchor: string | HTMLElement;\n\n /**\n * Controls if the dropdown will be closed in response to a click event depending on the position of the event relative to the dropdown.\n */\n @Prop() closeBehavior: 'inside' | 'outside' | 'both' | boolean = 'both';\n\n /**\n * Placement of the dropdown\n */\n @Prop() placement: AlignedPlacement = 'bottom-start';\n\n /**\n * Position strategy\n */\n @Prop() positioningStrategy: 'absolute' | 'fixed' = 'fixed';\n\n /**\n * An optional header shown at the top of the dropdown\n */\n @Prop() header?: string;\n\n /**\n * Move dropdown along main axis of alignment\n *\n * @internal\n */\n @Prop() offset: {\n mainAxis?: number;\n crossAxis?: number;\n alignmentAxis?: number;\n };\n\n /**\n * Define one or more events to open dropdown\n * @internal\n */\n @Prop() triggerEvent: DropdownTriggerEvent | DropdownTriggerEvent[] = 'click';\n\n /**\n * @internal\n */\n @Prop() overwriteDropdownStyle: (delegate: {\n dropdownRef: HTMLElement;\n triggerRef?: HTMLElement;\n }) => Promise<Partial<CSSStyleDeclaration>>;\n\n /**\n * Fire event after visibility of dropdown has changed\n */\n @Event() showChanged: EventEmitter<boolean>;\n\n private autoUpdateCleanup: () => void = null;\n\n private triggerElement?: Element;\n private anchorElement?: Element;\n\n private dropdownRef: HTMLElement;\n\n private toggleBind: any;\n private openBind: any;\n\n private localUId = `dropdown-${sequenceId++}-${new Date().valueOf()}`;\n\n constructor() {\n this.toggleBind = this.toggle.bind(this);\n this.openBind = this.open.bind(this);\n\n if (dropdownDisposer.has(this.localUId)) {\n console.warn('Dropdown with duplicated id detected');\n }\n\n dropdownDisposer.set(this.localUId, {\n dispose: this.close.bind(this),\n element: this.hostElement,\n child: null,\n });\n\n const parentDropdown = this.closestPassShadow(\n this.hostElement.parentNode,\n 'ix-dropdown'\n );\n if (parentDropdown) {\n for (let entry of dropdownDisposer.values()) {\n if (entry.element === parentDropdown) {\n entry.child = this.hostElement;\n }\n }\n }\n }\n\n closestPassShadow(node, selector) {\n if (!node) {\n return null;\n }\n\n if (node instanceof ShadowRoot) {\n return this.closestPassShadow(node.host, selector);\n }\n\n if (node instanceof HTMLElement) {\n if (node.matches(selector)) {\n return node;\n } else {\n return this.closestPassShadow(node.parentNode, selector);\n }\n }\n\n return this.closestPassShadow(node.parentNode, selector);\n }\n\n get dropdownItems() {\n return Array.from(this.hostElement.querySelectorAll('ix-dropdown-item'));\n }\n\n get slotElement() {\n return this.hostElement.shadowRoot.querySelector('slot');\n }\n\n private addEventListenersFor(triggerEvent: DropdownTriggerEvent) {\n switch (triggerEvent) {\n case 'click':\n this.triggerElement.addEventListener('click', this.openBind);\n break;\n\n case 'hover':\n this.triggerElement.addEventListener('mouseenter', this.openBind);\n break;\n\n case 'focus':\n this.triggerElement.addEventListener('focusin', this.openBind);\n break;\n }\n }\n\n private removeEventListenersFor(\n triggerEvent: DropdownTriggerEvent,\n triggerElement: Element\n ) {\n switch (triggerEvent) {\n case 'click':\n if (this.closeBehavior === 'outside') {\n triggerElement.removeEventListener('click', this.openBind);\n } else {\n triggerElement.removeEventListener('click', this.toggleBind);\n }\n break;\n\n case 'hover':\n triggerElement.removeEventListener('mouseenter', this.openBind);\n break;\n\n case 'focus':\n triggerElement.removeEventListener('focusin', this.openBind);\n break;\n }\n }\n\n private async registerListener(element: string | HTMLElement) {\n this.triggerElement = await this.resolveElement(element);\n if (this.triggerElement) {\n if (Array.isArray(this.triggerEvent)) {\n this.triggerEvent.forEach((triggerEvent) => {\n this.addEventListenersFor(triggerEvent);\n });\n } else {\n this.addEventListenersFor(this.triggerEvent);\n }\n }\n }\n\n private async unregisterListener(element: string | HTMLElement) {\n const trigger = await this.resolveElement(element);\n if (Array.isArray(this.triggerEvent)) {\n this.triggerEvent.forEach((triggerEvent) => {\n this.removeEventListenersFor(triggerEvent, trigger);\n });\n } else {\n this.removeEventListenersFor(this.triggerEvent, trigger);\n }\n }\n\n private resolveElement(element: string | HTMLElement): Promise<Element> {\n if (typeof element !== 'string') {\n return Promise.resolve(element);\n }\n\n const selector = `#${element}`;\n return new Promise((resolve) => {\n if (document.querySelector(selector)) {\n return resolve(document.querySelector(selector));\n }\n\n const observer = new MutationObserver(() => {\n if (document.querySelector(selector)) {\n resolve(document.querySelector(selector));\n observer.disconnect();\n }\n });\n\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n });\n });\n }\n\n @Watch('show')\n async changedShow(newShow: boolean) {\n if (newShow) {\n this.anchorElement = await (this.anchor\n ? this.resolveElement(this.anchor)\n : this.resolveElement(this.trigger));\n\n if (this.anchorElement) {\n this.applyDropdownPosition();\n }\n }\n\n if (newShow) {\n dropdownDisposer.forEach((entry, id) => {\n if (\n id !== this.localUId &&\n !this.isAnchorSubmenu() &&\n entry.child !== this.hostElement\n ) {\n entry.dispose();\n }\n });\n }\n }\n\n @Watch('trigger')\n changedTrigger(\n newTriggerValue: string | HTMLElement,\n oldTriggerValue: string | HTMLElement\n ) {\n if (newTriggerValue) {\n this.registerListener(newTriggerValue);\n }\n\n if (oldTriggerValue) {\n this.unregisterListener(oldTriggerValue);\n }\n }\n\n @OnListener<Dropdown>('click', (self) => self.show)\n clickOutside(event: PointerEvent) {\n const target = event.target as HTMLElement;\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (\n this.show === false ||\n this.closeBehavior === false ||\n this.anchorElement?.contains(target) ||\n this.triggerElement?.contains(target)\n ) {\n return;\n }\n\n const clickInsideDropdown = this.isClickInsideDropdown(event);\n\n switch (this.closeBehavior) {\n case 'outside':\n if (!clickInsideDropdown || this.anchor === target) {\n this.close();\n }\n break;\n case 'inside':\n if (clickInsideDropdown && this.hostElement !== target) {\n this.close();\n }\n break;\n case 'both':\n if (this.hostElement !== target) {\n this.close();\n }\n break;\n default:\n this.close();\n }\n }\n\n @OnListener<Dropdown>('keydown', (self) => self.show)\n keydown(event: KeyboardEvent) {\n if (this.show === true && event.code === 'Escape') {\n this.close();\n }\n }\n\n private isNestedDropdown(element: Element) {\n return element.closest('ix-dropdown');\n }\n\n private isAnchorSubmenu() {\n const anchor = this.anchorElement?.closest('ix-dropdown-item');\n if (!anchor) {\n return false;\n }\n\n return true;\n }\n\n private toggle(event: Event) {\n event.preventDefault();\n\n if (this.isNestedDropdown(event.target as HTMLElement)) {\n event.stopPropagation();\n }\n\n const { defaultPrevented } = this.showChanged.emit(this.show);\n\n if (!defaultPrevented) {\n this.show = !this.show;\n }\n }\n\n private open(event: Event) {\n event.preventDefault();\n\n if (this.isNestedDropdown(event.target as HTMLElement)) {\n event.stopPropagation();\n }\n\n const { defaultPrevented } = this.showChanged.emit(true);\n\n if (!defaultPrevented) {\n this.show = true;\n }\n }\n\n private close() {\n const { defaultPrevented } = this.showChanged.emit(false);\n\n if (!defaultPrevented) {\n this.show = false;\n }\n }\n\n private async applyDropdownPosition() {\n if (!this.anchorElement) {\n return;\n }\n if (!this.dropdownRef) {\n return;\n }\n const isSubmenu = this.isAnchorSubmenu();\n\n let positionConfig: Partial<ComputePositionConfig> = {\n strategy: this.positioningStrategy,\n middleware: [],\n };\n\n if (!this.suppressAutomaticPlacement) {\n positionConfig.middleware.push(\n flip({ fallbackStrategy: 'initialPlacement' })\n );\n }\n\n positionConfig.placement = isSubmenu ? 'right-start' : this.placement;\n\n positionConfig.middleware = [\n ...positionConfig.middleware,\n inline(),\n shift(),\n ];\n\n if (this.offset) {\n positionConfig.middleware.push(offset(this.offset));\n }\n\n if (this.autoUpdateCleanup) {\n this.autoUpdateCleanup();\n this.autoUpdateCleanup = null;\n }\n\n this.autoUpdateCleanup = autoUpdate(\n this.anchorElement,\n this.dropdownRef,\n async () => {\n const computeResponse = await computePosition(\n this.anchorElement,\n this.dropdownRef,\n positionConfig\n );\n\n Object.assign(this.dropdownRef.style, {\n top: '0',\n left: '0',\n transform: `translate(${Math.round(computeResponse.x)}px,${Math.round(\n computeResponse.y\n )}px)`,\n });\n if (this.overwriteDropdownStyle) {\n const overwriteStyle = await this.overwriteDropdownStyle({\n dropdownRef: this.dropdownRef,\n triggerRef: this.triggerElement as HTMLElement,\n });\n\n Object.assign(this.dropdownRef.style, overwriteStyle);\n }\n },\n {\n ancestorResize: true,\n ancestorScroll: true,\n elementResize: true,\n }\n );\n }\n\n async componentDidLoad() {\n this.changedTrigger(this.trigger, null);\n }\n\n async componentDidRender() {\n await this.applyDropdownPosition();\n this.anchorElement = await (this.anchor\n ? this.resolveElement(this.anchor)\n : this.resolveElement(this.trigger));\n\n if (\n this.isAnchorSubmenu() &&\n this.anchorElement?.tagName === 'IX-DROPDOWN-ITEM'\n ) {\n (this.anchorElement as HTMLIxDropdownItemElement).isSubMenu = true;\n }\n }\n\n private isClickInsideDropdown(event: PointerEvent) {\n const rect = this.dropdownRef.getBoundingClientRect();\n return (\n rect.top <= event.clientY &&\n event.clientY <= rect.top + rect.height &&\n rect.left <= event.clientX &&\n event.clientX <= rect.left + rect.width\n );\n }\n\n disconnectedCallback() {\n if (this.autoUpdateCleanup) {\n this.autoUpdateCleanup();\n }\n\n if (dropdownDisposer.has(this.localUId)) {\n dropdownDisposer.delete(this.localUId);\n }\n }\n\n /**\n * Update position of dropdown\n */\n @Method()\n async updatePosition() {\n this.applyDropdownPosition();\n }\n\n render() {\n return (\n <Host\n ref={(ref) => (this.dropdownRef = ref)}\n class={{\n 'dropdown-menu': true,\n show: this.show,\n overflow: true,\n }}\n style={{\n margin: '0',\n minWidth: '0px',\n position: this.positioningStrategy,\n }}\n role=\"list\"\n >\n <div style={{ display: 'contents' }}>\n {this.header ? <div class=\"dropdown-header\">{this.header}</div> : ''}\n\n <slot></slot>\n </div>\n </Host>\n );\n }\n}\n"]}
@@ -98,10 +98,8 @@
98
98
  }
99
99
  :host .triangle {
100
100
  position: absolute;
101
- -webkit-margin-start: 1.5625rem;
102
- margin-inline-start: 1.5625rem;
103
- -webkit-margin-before: -0.4375rem;
104
- margin-block-start: -0.4375rem;
101
+ margin-inline-start: 1.5625rem;
102
+ margin-block-start: -0.4375rem;
105
103
  border-right: 0 solid transparent;
106
104
  border-left: 4px solid transparent;
107
105
  border-top: 0 solid transparent;
@@ -22,15 +22,11 @@
22
22
  display: flex;
23
23
  justify-content: center;
24
24
  align-items: center;
25
- -webkit-margin-start: 1.5rem;
26
- margin-inline-start: 1.5rem;
27
- -webkit-margin-end: 1.5rem;
28
- margin-inline-end: 1.5rem;
29
- -webkit-margin-after: 0.25rem;
30
- margin-block-end: 0.25rem;
25
+ margin-inline-start: 1.5rem;
26
+ margin-inline-end: 1.5rem;
27
+ margin-block-end: 0.25rem;
31
28
  }
32
29
  :host slot::slotted(*) {
33
30
  display: flex;
34
- -webkit-margin-end: 0.625rem;
35
- margin-inline-end: 0.625rem;
31
+ margin-inline-end: 0.625rem;
36
32
  }
@@ -143,6 +143,7 @@
143
143
  max-height: var(--event-list-item-height, 100%);
144
144
  white-space: var(--event-list-item-content-white-space, inherit);
145
145
  overflow: hidden;
146
+ padding-inline-end: 0.5rem;
146
147
  }
147
148
  :host .event-list-item .chevron-icon {
148
149
  margin-left: auto;
@@ -82,10 +82,8 @@
82
82
  background-color: var(--theme-input--background);
83
83
  border: solid 1px var(--theme-input--border-color);
84
84
  box-shadow: var(--theme-input--box-shadow);
85
- -webkit-padding-start: 0.5rem;
86
- padding-inline-start: 0.5rem;
87
- -webkit-padding-end: 0.5rem;
88
- padding-inline-end: 0.5rem;
85
+ padding-inline-start: 0.5rem;
86
+ padding-inline-end: 0.5rem;
89
87
  }
90
88
  .form-control::-moz-placeholder, .form-control-plaintext::-moz-placeholder {
91
89
  color: var(--theme-input-hint--color);
@@ -145,12 +143,9 @@
145
143
  .form-control.readonly,
146
144
  .form-control[readonly] {
147
145
  background: transparent !important;
148
- -webkit-border-before: none !important;
149
- border-block-start: none !important;
150
- -webkit-border-start: none !important;
151
- border-inline-start: none !important;
152
- -webkit-border-end: none !important;
153
- border-inline-end: none !important;
146
+ border-block-start: none !important;
147
+ border-inline-start: none !important;
148
+ border-inline-end: none !important;
154
149
  border-radius: 0rem;
155
150
  }
156
151
 
@@ -186,12 +181,9 @@
186
181
  .form-control:disabled,
187
182
  .form-control.disabled {
188
183
  background: transparent !important;
189
- -webkit-border-before: none !important;
190
- border-block-start: none !important;
191
- -webkit-border-start: none !important;
192
- border-inline-start: none !important;
193
- -webkit-border-end: none !important;
194
- border-inline-end: none !important;
184
+ border-block-start: none !important;
185
+ border-inline-start: none !important;
186
+ border-inline-end: none !important;
195
187
  border-radius: 0rem;
196
188
  color: var(--theme-color-weak-text);
197
189
  border-color: var(--theme-input--border-color-bottom--disabled);
@@ -221,13 +213,11 @@
221
213
  .input-wrapper > .glyph {
222
214
  display: block;
223
215
  position: absolute;
224
- -webkit-margin-start: 0.312rem;
225
- margin-inline-start: 0.312rem;
216
+ margin-inline-start: 0.312rem;
226
217
  color: var(--theme-color-std-text);
227
218
  }
228
219
  .input-wrapper > input {
229
- -webkit-padding-start: 2.2rem;
230
- padding-inline-start: 2.2rem;
220
+ padding-inline-start: 2.2rem;
231
221
  }
232
222
 
233
223
  select.form-control {
@@ -238,17 +228,6 @@ textarea.form-control {
238
228
  padding: 0.375rem 0.5rem;
239
229
  }
240
230
 
241
- .was-validated .form-control:invalid,
242
- .was-validated .is-invalid {
243
- background-color: var(--theme-input-error--background);
244
- background-image: url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='512px' height='512px' viewBox='0 0 512 512' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3C!-- Generator: sketchtool 62 (101010) - https://sketch.com --%3E%3Ctitle%3Eerror%3C/title%3E%3Cdesc%3ECreated with sketchtool.%3C/desc%3E%3Cg id='Page-1' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' fill-opacity='0.75'%3E%3Cg id='error' fill='%23ff2640'%3E%3Cg id='error/error'%3E%3Cpath d='M256,42.6666667 C373.626371,42.6666667 469.333333,138.373627 469.333333,256 C469.333333,373.626371 373.626371,469.333333 256,469.333333 C138.373627,469.333333 42.6666667,373.626371 42.6666667,256 C42.6666667,138.373627 138.373627,42.6666667 256,42.6666667 Z M256,85.3333333 C161.559631,85.3333333 85.3333333,161.559631 85.3333333,256 C85.3333333,350.44037 161.559631,426.666667 256,426.666667 C350.44037,426.666667 426.666667,350.44037 426.666667,256 C426.666667,161.559631 350.44037,85.3333333 256,85.3333333 Z M326.248389,155.581722 L356.418278,185.751611 L286.168667,255.999667 L356.418278,326.248389 L326.248389,356.418278 L255.999667,286.168667 L185.751611,356.418278 L155.581722,326.248389 L225.829667,255.999667 L155.581722,185.751611 L185.751611,155.581722 L255.999667,225.829667 L326.248389,155.581722 Z' id='Combined-Shape'%3E%3C/path%3E%3C/g%3E%3C/g%3E%3C/g%3E%3C/svg%3E") !important;
245
- background-position: left calc(0.375em + 0.1875rem) center !important;
246
- padding-right: 0.75rem;
247
- padding-left: calc(1.5em + 0.75rem);
248
- background-size: 18px;
249
- background-repeat: no-repeat;
250
- }
251
-
252
231
  input.disabled, input:disabled {
253
232
  color: var(--theme-input--color--disabled);
254
233
  }
@@ -59,6 +59,7 @@ input, input:-webkit-autofill {
59
59
  padding: 0.25rem 0.5rem;
60
60
  background-color: var(--theme-input--background);
61
61
  color: var(--theme-input--color);
62
+ text-overflow: ellipsis;
62
63
  border: var(--theme-input--border-thickness, 1px) solid var(--theme-input--border-color);
63
64
  border-radius: var(--theme-input--border-radius);
64
65
  box-shadow: var(--theme-input--box-shadow);
@@ -150,6 +151,7 @@ textarea, textarea:-webkit-autofill {
150
151
  padding: 0.25rem 0.5rem;
151
152
  background-color: var(--theme-input--background);
152
153
  color: var(--theme-input--color);
154
+ text-overflow: ellipsis;
153
155
  border: var(--theme-input--border-thickness, 1px) solid var(--theme-input--border-color);
154
156
  border-radius: var(--theme-input--border-radius);
155
157
  box-shadow: var(--theme-input--box-shadow);
@@ -264,6 +266,11 @@ form.was-validated .is-valid ~ .valid-feedback {
264
266
  display: block;
265
267
  }
266
268
 
269
+ form:not(.was-validated) .invalid-feedback,
270
+ form:not(.was-validated) .valid-feedback {
271
+ display: none !important;
272
+ }
273
+
267
274
  :host {
268
275
  display: contents;
269
276
  }
@@ -11,12 +11,9 @@
11
11
  position: relative;
12
12
  height: 2rem;
13
13
  width: 2rem;
14
- -webkit-margin-before: 0.3125rem;
15
- margin-block-start: 0.3125rem;
16
- -webkit-margin-end: 0.3125rem;
17
- margin-inline-end: 0.3125rem;
18
- -webkit-margin-start: auto;
19
- margin-inline-start: auto;
14
+ margin-block-start: 0.3125rem;
15
+ margin-inline-end: 0.3125rem;
16
+ margin-inline-start: auto;
20
17
  }
21
18
  :host .hide {
22
19
  visibility: collapse;
@@ -151,8 +151,7 @@
151
151
  }
152
152
  :host .btn-expand-header {
153
153
  margin: 0.5rem;
154
- -webkit-margin-end: 0.25rem;
155
- margin-inline-end: 0.25rem;
154
+ margin-inline-end: 0.25rem;
156
155
  min-width: 1.5rem;
157
156
  }
158
157
  :host .group-content {
@@ -169,6 +169,9 @@
169
169
  :host .content-start {
170
170
  width: 100%;
171
171
  }
172
+ :host .icon {
173
+ pointer-events: none;
174
+ }
172
175
 
173
176
  :host(.disabled) {
174
177
  cursor: default;
@@ -169,6 +169,9 @@
169
169
  :host .content-start {
170
170
  width: 100%;
171
171
  }
172
+ :host .icon {
173
+ pointer-events: none;
174
+ }
172
175
 
173
176
  :host(.disabled) {
174
177
  cursor: default;
@@ -86,10 +86,13 @@ export class InputGroup {
86
86
  if (!this.inputElement) {
87
87
  return;
88
88
  }
89
- if ((((_a = this.inputElement.form) === null || _a === void 0 ? void 0 : _a.classList.contains('was-validated')) ||
90
- ((_b = this.inputElement.form) === null || _b === void 0 ? void 0 : _b.noValidate) === false) &&
91
- !this.inputElement.validity.valid) {
92
- this.inputElement.style.backgroundPositionX = `${this.inputPaddingLeft}px`;
89
+ const isInputInvalid = !this.inputElement.validity.valid ||
90
+ this.inputElement.classList.contains('is-invalid');
91
+ const formWasValidated = ((_a = this.inputElement.form) === null || _a === void 0 ? void 0 : _a.classList.contains('was-validated')) ||
92
+ ((_b = this.inputElement.form) === null || _b === void 0 ? void 0 : _b.noValidate) === false;
93
+ if (formWasValidated && isInputInvalid) {
94
+ const left = this.inputPaddingLeft !== 0 ? this.inputPaddingLeft : 8;
95
+ this.inputElement.style.backgroundPosition = `left ${left}px center`;
93
96
  this.inputPaddingLeft += 32;
94
97
  }
95
98
  });
@@ -1 +1 @@
1
- {"version":3,"file":"input-group.js","sourceRoot":"","sources":["../../../src/components/input-group/input-group.tsx"],"names":[],"mappings":"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","sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { Component, Element, h, Host, State } from '@stencil/core';\nimport { getSlottedElements } from '../utils/shadow-dom';\n\n@Component({\n tag: 'ix-input-group',\n styleUrl: 'input-group.scss',\n shadow: true,\n})\nexport class InputGroup {\n @Element() hostElement!: HTMLIxInputGroupElement;\n\n @State() inputPaddingLeft = 0;\n @State() inputPaddingRight = 0;\n\n private get inputElement() {\n return this.hostElement.querySelector('input') as HTMLInputElement;\n }\n\n private observer: MutationObserver;\n\n componentWillLoad() {\n const { valid } = this.inputElement.validity;\n this.inputElement.addEventListener('valid', () => {\n this.onValidInput();\n });\n this.inputElement.addEventListener('invalid', () => {\n this.onInvalidInput();\n });\n this.inputElement.addEventListener('input', () => {\n this.startSlotChanged();\n });\n\n this.inputElement.form?.addEventListener('submit', () => {\n this.startSlotChanged();\n });\n\n valid ? this.onValidInput() : this.onInvalidInput();\n\n this.observer = new MutationObserver(() => {\n this.startSlotChanged();\n this.endSlotChanged();\n });\n\n this.observer.observe(this.hostElement, {\n subtree: true,\n childList: true,\n attributes: true,\n characterData: true,\n });\n }\n\n componentDidRender() {\n this.prepareInputElement();\n }\n\n private onValidInput() {\n this.startSlotChanged();\n }\n\n private onInvalidInput() {\n this.startSlotChanged();\n }\n\n private prepareInputElement() {\n if (this.inputElement) {\n this.inputElement.style.width = '100%';\n\n if (this.inputPaddingRight !== 0) {\n this.inputElement.style.paddingRight = this.inputPaddingRight + 'px';\n } else {\n this.inputElement.style.paddingRight = '0.5rem';\n }\n\n if (this.inputPaddingLeft !== 0) {\n this.inputElement.style.paddingLeft = this.inputPaddingLeft + 'px';\n } else {\n this.inputElement.style.paddingLeft = '0.5rem';\n }\n } else {\n console.warn(\n 'You used the ix-input-group without an input tag, e.g. <input class=\"form-control\" />'\n );\n }\n }\n\n private startSlotChanged() {\n const slot = this.hostElement.shadowRoot.querySelector(\n 'slot[name=\"input-start\"]'\n );\n\n setTimeout(() => {\n const startPadding = this.getChildrenWidth(slot);\n\n if (startPadding !== 0) {\n this.inputPaddingLeft = 15 + startPadding;\n } else {\n this.inputPaddingLeft = 0;\n }\n\n if (!this.inputElement) {\n return;\n }\n\n if (\n (this.inputElement.form?.classList.contains('was-validated') ||\n this.inputElement.form?.noValidate === false) &&\n !this.inputElement.validity.valid\n ) {\n this.inputElement.style.backgroundPositionX = `${this.inputPaddingLeft}px`;\n this.inputPaddingLeft += 32;\n }\n });\n }\n\n private endSlotChanged() {\n const slot = this.hostElement.shadowRoot.querySelector(\n 'slot[name=\"input-end\"]'\n );\n\n setTimeout(() => {\n this.inputPaddingRight = 15 + this.getChildrenWidth(slot);\n });\n }\n\n private getChildrenWidth(slotElement: Element) {\n if (!slotElement) {\n return 0;\n }\n\n const endElements = getSlottedElements<HTMLElement>(slotElement);\n if (endElements.length === 0) {\n return 0;\n }\n\n let width = 0;\n\n endElements.forEach((element) => {\n width += element.getBoundingClientRect().width;\n });\n\n return width;\n }\n\n render() {\n return (\n <Host>\n <div class=\"group group-start\">\n <slot name=\"input-start\"></slot>\n </div>\n <slot></slot>\n <div class=\"group group-end\">\n <slot name=\"input-end\"></slot>\n </div>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"input-group.js","sourceRoot":"","sources":["../../../src/components/input-group/input-group.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAOzD,MAAM,OAAO,UAAU;;4BAGO,CAAC;6BACA,CAAC;;EAE9B,IAAY,YAAY;IACtB,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAqB,CAAC;EACrE,CAAC;EAID,iBAAiB;;IACf,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;IAC7C,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;MAC/C,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,EAAE;MACjD,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;MAC/C,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,MAAA,IAAI,CAAC,YAAY,CAAC,IAAI,0CAAE,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE;MACtD,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;IAEpD,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,GAAG,EAAE;MACxC,IAAI,CAAC,gBAAgB,EAAE,CAAC;MACxB,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE;MACtC,OAAO,EAAE,IAAI;MACb,SAAS,EAAE,IAAI;MACf,UAAU,EAAE,IAAI;MAChB,aAAa,EAAE,IAAI;KACpB,CAAC,CAAC;EACL,CAAC;EAED,kBAAkB;IAChB,IAAI,CAAC,mBAAmB,EAAE,CAAC;EAC7B,CAAC;EAEO,YAAY;IAClB,IAAI,CAAC,gBAAgB,EAAE,CAAC;EAC1B,CAAC;EAEO,cAAc;IACpB,IAAI,CAAC,gBAAgB,EAAE,CAAC;EAC1B,CAAC;EAEO,mBAAmB;IACzB,IAAI,IAAI,CAAC,YAAY,EAAE;MACrB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;MAEvC,IAAI,IAAI,CAAC,iBAAiB,KAAK,CAAC,EAAE;QAChC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;OACtE;WAAM;QACL,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,GAAG,QAAQ,CAAC;OACjD;MAED,IAAI,IAAI,CAAC,gBAAgB,KAAK,CAAC,EAAE;QAC/B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;OACpE;WAAM;QACL,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC;OAChD;KACF;SAAM;MACL,OAAO,CAAC,IAAI,CACV,uFAAuF,CACxF,CAAC;KACH;EACH,CAAC;EAEO,gBAAgB;IACtB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,aAAa,CACpD,0BAA0B,CAC3B,CAAC;IAEF,UAAU,CAAC,GAAG,EAAE;;MACd,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;MAEjD,IAAI,YAAY,KAAK,CAAC,EAAE;QACtB,IAAI,CAAC,gBAAgB,GAAG,EAAE,GAAG,YAAY,CAAC;OAC3C;WAAM;QACL,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;OAC3B;MAED,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;QACtB,OAAO;OACR;MAED,MAAM,cAAc,GAClB,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK;QACjC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;MAErD,MAAM,gBAAgB,GACpB,CAAA,MAAA,IAAI,CAAC,YAAY,CAAC,IAAI,0CAAE,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC3D,CAAA,MAAA,IAAI,CAAC,YAAY,CAAC,IAAI,0CAAE,UAAU,MAAK,KAAK,CAAC;MAE/C,IAAI,gBAAgB,IAAI,cAAc,EAAE;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,kBAAkB,GAAG,QAAQ,IAAI,WAAW,CAAC;QACrE,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC;OAC7B;IACH,CAAC,CAAC,CAAC;EACL,CAAC;EAEO,cAAc;IACpB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,aAAa,CACpD,wBAAwB,CACzB,CAAC;IAEF,UAAU,CAAC,GAAG,EAAE;MACd,IAAI,CAAC,iBAAiB,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;EACL,CAAC;EAEO,gBAAgB,CAAC,WAAoB;IAC3C,IAAI,CAAC,WAAW,EAAE;MAChB,OAAO,CAAC,CAAC;KACV;IAED,MAAM,WAAW,GAAG,kBAAkB,CAAc,WAAW,CAAC,CAAC;IACjE,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;MAC5B,OAAO,CAAC,CAAC;KACV;IAED,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,WAAW,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;MAC9B,KAAK,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;EACf,CAAC;EAED,MAAM;IACJ,OAAO,CACL,EAAC,IAAI;MACH,WAAK,KAAK,EAAC,mBAAmB;QAC5B,YAAM,IAAI,EAAC,aAAa,GAAQ,CAC5B;MACN,eAAa;MACb,WAAK,KAAK,EAAC,iBAAiB;QAC1B,YAAM,IAAI,EAAC,WAAW,GAAQ,CAC1B,CACD,CACR,CAAC;EACJ,CAAC;;;;;;;;;;;;;;CACF","sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { Component, Element, h, Host, State } from '@stencil/core';\nimport { getSlottedElements } from '../utils/shadow-dom';\n\n@Component({\n tag: 'ix-input-group',\n styleUrl: 'input-group.scss',\n shadow: true,\n})\nexport class InputGroup {\n @Element() hostElement!: HTMLIxInputGroupElement;\n\n @State() inputPaddingLeft = 0;\n @State() inputPaddingRight = 0;\n\n private get inputElement() {\n return this.hostElement.querySelector('input') as HTMLInputElement;\n }\n\n private observer: MutationObserver;\n\n componentWillLoad() {\n const { valid } = this.inputElement.validity;\n this.inputElement.addEventListener('valid', () => {\n this.onValidInput();\n });\n this.inputElement.addEventListener('invalid', () => {\n this.onInvalidInput();\n });\n this.inputElement.addEventListener('input', () => {\n this.startSlotChanged();\n });\n\n this.inputElement.form?.addEventListener('submit', () => {\n this.startSlotChanged();\n });\n\n valid ? this.onValidInput() : this.onInvalidInput();\n\n this.observer = new MutationObserver(() => {\n this.startSlotChanged();\n this.endSlotChanged();\n });\n\n this.observer.observe(this.hostElement, {\n subtree: true,\n childList: true,\n attributes: true,\n characterData: true,\n });\n }\n\n componentDidRender() {\n this.prepareInputElement();\n }\n\n private onValidInput() {\n this.startSlotChanged();\n }\n\n private onInvalidInput() {\n this.startSlotChanged();\n }\n\n private prepareInputElement() {\n if (this.inputElement) {\n this.inputElement.style.width = '100%';\n\n if (this.inputPaddingRight !== 0) {\n this.inputElement.style.paddingRight = this.inputPaddingRight + 'px';\n } else {\n this.inputElement.style.paddingRight = '0.5rem';\n }\n\n if (this.inputPaddingLeft !== 0) {\n this.inputElement.style.paddingLeft = this.inputPaddingLeft + 'px';\n } else {\n this.inputElement.style.paddingLeft = '0.5rem';\n }\n } else {\n console.warn(\n 'You used the ix-input-group without an input tag, e.g. <input class=\"form-control\" />'\n );\n }\n }\n\n private startSlotChanged() {\n const slot = this.hostElement.shadowRoot.querySelector(\n 'slot[name=\"input-start\"]'\n );\n\n setTimeout(() => {\n const startPadding = this.getChildrenWidth(slot);\n\n if (startPadding !== 0) {\n this.inputPaddingLeft = 15 + startPadding;\n } else {\n this.inputPaddingLeft = 0;\n }\n\n if (!this.inputElement) {\n return;\n }\n\n const isInputInvalid =\n !this.inputElement.validity.valid ||\n this.inputElement.classList.contains('is-invalid');\n\n const formWasValidated =\n this.inputElement.form?.classList.contains('was-validated') ||\n this.inputElement.form?.noValidate === false;\n\n if (formWasValidated && isInputInvalid) {\n const left = this.inputPaddingLeft !== 0 ? this.inputPaddingLeft : 8;\n this.inputElement.style.backgroundPosition = `left ${left}px center`;\n this.inputPaddingLeft += 32;\n }\n });\n }\n\n private endSlotChanged() {\n const slot = this.hostElement.shadowRoot.querySelector(\n 'slot[name=\"input-end\"]'\n );\n\n setTimeout(() => {\n this.inputPaddingRight = 15 + this.getChildrenWidth(slot);\n });\n }\n\n private getChildrenWidth(slotElement: Element) {\n if (!slotElement) {\n return 0;\n }\n\n const endElements = getSlottedElements<HTMLElement>(slotElement);\n if (endElements.length === 0) {\n return 0;\n }\n\n let width = 0;\n\n endElements.forEach((element) => {\n width += element.getBoundingClientRect().width;\n });\n\n return width;\n }\n\n render() {\n return (\n <Host>\n <div class=\"group group-start\">\n <slot name=\"input-start\"></slot>\n </div>\n <slot></slot>\n <div class=\"group group-end\">\n <slot name=\"input-end\"></slot>\n </div>\n </Host>\n );\n }\n}\n"]}