@otto-de/b2b-core-components 1.31.4 → 1.32.1

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 (287) hide show
  1. package/dist/b2b-core-components/b2b-core-components.esm.js +1 -1
  2. package/dist/b2b-core-components/{p-61bc1384.entry.js → p-01f46118.entry.js} +1 -1
  3. package/dist/b2b-core-components/{p-6913515c.entry.js → p-0322b052.entry.js} +1 -1
  4. package/dist/b2b-core-components/{p-6536595a.entry.js → p-092855b3.entry.js} +1 -1
  5. package/dist/b2b-core-components/{p-f5b69b85.entry.js → p-0bd177d4.entry.js} +1 -1
  6. package/dist/b2b-core-components/{p-d31df455.entry.js → p-0bf2c192.entry.js} +1 -1
  7. package/dist/b2b-core-components/{p-a6ccf7f6.entry.js → p-15df2a47.entry.js} +1 -1
  8. package/dist/b2b-core-components/{p-74db37ef.entry.js → p-16872771.entry.js} +1 -1
  9. package/dist/b2b-core-components/{p-72dbc623.entry.js → p-190a7350.entry.js} +1 -1
  10. package/dist/b2b-core-components/{p-3d881765.entry.js → p-1abe3f2f.entry.js} +1 -1
  11. package/dist/b2b-core-components/p-1cfaf44a.js +1 -0
  12. package/dist/b2b-core-components/{p-05010d10.entry.js → p-1d6f73dd.entry.js} +1 -1
  13. package/dist/b2b-core-components/{p-71a4c9da.entry.js → p-26755654.entry.js} +1 -1
  14. package/dist/b2b-core-components/p-28a06853.entry.js +1 -0
  15. package/dist/b2b-core-components/{p-b9fed5dc.entry.js → p-2d625559.entry.js} +1 -1
  16. package/dist/b2b-core-components/{p-42058858.entry.js → p-3a088f2b.entry.js} +1 -1
  17. package/dist/b2b-core-components/p-3f8dc6e5.entry.js +1 -0
  18. package/dist/b2b-core-components/{p-a155219a.entry.js → p-40371f89.entry.js} +1 -1
  19. package/dist/b2b-core-components/{p-b510e8c5.entry.js → p-521303c4.entry.js} +1 -1
  20. package/dist/b2b-core-components/{p-9efb72c4.entry.js → p-58e9953b.entry.js} +1 -1
  21. package/dist/b2b-core-components/{p-e56705a6.entry.js → p-639d68a2.entry.js} +1 -1
  22. package/dist/b2b-core-components/{p-025896df.entry.js → p-660c758b.entry.js} +1 -1
  23. package/dist/b2b-core-components/p-67484ecc.entry.js +1 -0
  24. package/dist/b2b-core-components/{p-d13c613b.entry.js → p-6749d668.entry.js} +1 -1
  25. package/dist/b2b-core-components/p-6b291a01.entry.js +1 -0
  26. package/dist/b2b-core-components/{p-943a3829.entry.js → p-6c60d337.entry.js} +1 -1
  27. package/dist/b2b-core-components/p-6d64a994.entry.js +1 -0
  28. package/dist/b2b-core-components/{p-5077207f.entry.js → p-797c85c2.entry.js} +1 -1
  29. package/dist/b2b-core-components/{p-359e5f9d.entry.js → p-7df12ddf.entry.js} +1 -1
  30. package/dist/b2b-core-components/{p-d1c8105b.entry.js → p-82a2809e.entry.js} +1 -1
  31. package/dist/b2b-core-components/{p-66ab9de5.entry.js → p-848e4af7.entry.js} +1 -1
  32. package/dist/b2b-core-components/p-9fb493de.entry.js +1 -0
  33. package/dist/b2b-core-components/p-ae7ec34a.entry.js +1 -0
  34. package/dist/b2b-core-components/{p-2e0f9821.entry.js → p-b1191aa7.entry.js} +1 -1
  35. package/dist/b2b-core-components/{p-6ae8c29f.entry.js → p-bade1cab.entry.js} +1 -1
  36. package/dist/b2b-core-components/{p-1036bf3d.entry.js → p-bf9c8817.entry.js} +1 -1
  37. package/dist/b2b-core-components/p-d88113f5.entry.js +1 -0
  38. package/dist/b2b-core-components/{p-e78f9131.entry.js → p-db92de92.entry.js} +1 -1
  39. package/dist/b2b-core-components/p-dbf44caf.js +1 -0
  40. package/dist/b2b-core-components/{p-39a9ff8d.entry.js → p-dcef84a5.entry.js} +1 -1
  41. package/dist/b2b-core-components/{p-bd567ca9.entry.js → p-e2518c43.entry.js} +1 -1
  42. package/dist/b2b-core-components/{p-301695a4.entry.js → p-e7590b6e.entry.js} +1 -1
  43. package/dist/b2b-core-components/p-ed5c6006.entry.js +1 -0
  44. package/dist/b2b-core-components/{p-11f5ef4c.entry.js → p-ef598009.entry.js} +1 -1
  45. package/dist/b2b-core-components/{p-ccff4b4e.entry.js → p-f661154c.entry.js} +1 -1
  46. package/dist/b2b-core-components/{p-9c76af72.entry.js → p-fb0338a8.entry.js} +1 -1
  47. package/dist/b2b-core-components/{p-fc73eb96.entry.js → p-fc431bbe.entry.js} +1 -1
  48. package/dist/b2b-core-components/{p-46fc97cc.entry.js → p-fedefca2.entry.js} +1 -1
  49. package/dist/b2b-core-components/{p-27d8f295.entry.js → p-ff6a0874.entry.js} +1 -1
  50. package/dist/cjs/b2b-button_2.cjs.entry.js +1 -1
  51. package/dist/cjs/b2b-chip-component_2.cjs.entry.js +2 -2
  52. package/dist/cjs/b2b-core-components.cjs.js +1 -1
  53. package/dist/cjs/b2b-custom-dropdown-option.cjs.entry.js +57 -0
  54. package/dist/cjs/b2b-custom-dropdown.cjs.entry.js +94 -0
  55. package/dist/cjs/b2b-date-picker-days_5.cjs.entry.js +9 -9
  56. package/dist/cjs/b2b-date-picker.cjs.entry.js +5 -21
  57. package/dist/cjs/b2b-dropdown.cjs.entry.js +2 -2
  58. package/dist/cjs/b2b-flyout-menu-option.cjs.entry.js +1 -1
  59. package/dist/cjs/b2b-flyout-menu.cjs.entry.js +5 -23
  60. package/dist/cjs/b2b-grid-col.cjs.entry.js +1 -1
  61. package/dist/cjs/b2b-grid-row.cjs.entry.js +2 -2
  62. package/dist/cjs/b2b-grid.cjs.entry.js +1 -1
  63. package/dist/cjs/b2b-input-group_2.cjs.entry.js +3 -3
  64. package/dist/cjs/b2b-input-label.cjs.entry.js +2 -2
  65. package/dist/cjs/b2b-input_2.cjs.entry.js +5 -5
  66. package/dist/cjs/b2b-label.cjs.entry.js +2 -2
  67. package/dist/cjs/b2b-modal.cjs.entry.js +2 -2
  68. package/dist/cjs/b2b-multiselect-dropdown.cjs.entry.js +8 -20
  69. package/dist/cjs/b2b-pagination.cjs.entry.js +1 -1
  70. package/dist/cjs/b2b-paragraph.cjs.entry.js +2 -2
  71. package/dist/cjs/b2b-progress-bar.cjs.entry.js +3 -3
  72. package/dist/cjs/b2b-radio-button.cjs.entry.js +2 -2
  73. package/dist/cjs/b2b-radio-group.cjs.entry.js +2 -2
  74. package/dist/cjs/b2b-required-separator.cjs.entry.js +1 -1
  75. package/dist/cjs/b2b-rounded-icon.cjs.entry.js +4 -4
  76. package/dist/cjs/b2b-scrollable-container.cjs.entry.js +1 -1
  77. package/dist/cjs/b2b-search.cjs.entry.js +1 -1
  78. package/dist/cjs/b2b-separator.cjs.entry.js +1 -1
  79. package/dist/cjs/b2b-shimmer.cjs.entry.js +1 -1
  80. package/dist/cjs/b2b-snackbar.cjs.entry.js +4 -4
  81. package/dist/cjs/b2b-tab-group.cjs.entry.js +1 -1
  82. package/dist/cjs/b2b-tab-panel.cjs.entry.js +1 -1
  83. package/dist/cjs/b2b-tab.cjs.entry.js +2 -2
  84. package/dist/cjs/b2b-table-cell_2.cjs.entry.js +3 -3
  85. package/dist/cjs/b2b-table-row.cjs.entry.js +2 -2
  86. package/dist/cjs/b2b-table-rowgroup.cjs.entry.js +2 -2
  87. package/dist/cjs/b2b-table.cjs.entry.js +2 -2
  88. package/dist/cjs/b2b-textarea.cjs.entry.js +2 -2
  89. package/dist/cjs/b2b-toggle-button.cjs.entry.js +3 -3
  90. package/dist/cjs/b2b-toggle-chip.cjs.entry.js +3 -3
  91. package/dist/cjs/b2b-toggle-group.cjs.entry.js +2 -2
  92. package/dist/cjs/b2b-toggle-switch.cjs.entry.js +4 -4
  93. package/dist/cjs/b2b-tooltip.cjs.entry.js +3 -3
  94. package/dist/cjs/b2b-wizard-icon.cjs.entry.js +1 -1
  95. package/dist/cjs/b2b-wizard-step.cjs.entry.js +2 -2
  96. package/dist/cjs/b2b-wizard.cjs.entry.js +1 -1
  97. package/dist/cjs/index-668808fd.js +12 -4
  98. package/dist/cjs/json-property-binding-util-f532af53.js +20 -0
  99. package/dist/cjs/loader.cjs.js +1 -1
  100. package/dist/cjs/utils-7919f19f.js +22 -0
  101. package/dist/collection/collection-manifest.json +2 -0
  102. package/dist/collection/components/custom-dropdown/custom-dropdown-option.css +296 -0
  103. package/dist/collection/components/custom-dropdown/custom-dropdown-option.js +247 -0
  104. package/dist/collection/components/custom-dropdown/custom-dropdown.css +280 -0
  105. package/dist/collection/components/custom-dropdown/custom-dropdown.e2e.js +66 -0
  106. package/dist/collection/components/custom-dropdown/custom-dropdown.js +227 -0
  107. package/dist/collection/components/custom-dropdown/custom-dropdown.stories.js +197 -0
  108. package/dist/collection/components/date-picker/date-picker-days-header.js +1 -1
  109. package/dist/collection/components/date-picker/date-picker-days.js +1 -1
  110. package/dist/collection/components/date-picker/date-picker-header.js +5 -5
  111. package/dist/collection/components/date-picker/date-picker-months.js +1 -1
  112. package/dist/collection/components/date-picker/date-picker-years.js +1 -1
  113. package/dist/collection/components/date-picker/date-picker.js +5 -21
  114. package/dist/collection/components/dropdown/dropdown.js +2 -2
  115. package/dist/collection/components/flyout-menu/flyout-menu-option.js +1 -1
  116. package/dist/collection/components/flyout-menu/flyout-menu.js +3 -3
  117. package/dist/collection/components/grid/column.js +1 -1
  118. package/dist/collection/components/grid/grid.js +1 -1
  119. package/dist/collection/components/grid/row.js +2 -2
  120. package/dist/collection/components/input/input.js +4 -4
  121. package/dist/collection/components/input-group/input-group.js +1 -1
  122. package/dist/collection/components/input-label/input-label.js +2 -2
  123. package/dist/collection/components/input-list/input-list-option.js +1 -1
  124. package/dist/collection/components/input-list/input-list.js +2 -2
  125. package/dist/collection/components/label/label.js +2 -2
  126. package/dist/collection/components/modal/modal.js +2 -2
  127. package/dist/collection/components/multiselect-dropdown/multiselect-dropdown.js +8 -20
  128. package/dist/collection/components/multiselect-dropdown/multiselect-option/multiselect-option.js +2 -2
  129. package/dist/collection/components/pagination/pagination.js +1 -1
  130. package/dist/collection/components/paragraph/paragraph.js +2 -2
  131. package/dist/collection/components/progress-bar/progress-bar.js +3 -3
  132. package/dist/collection/components/radio/radio.js +2 -2
  133. package/dist/collection/components/radio-group/radio-group.js +2 -2
  134. package/dist/collection/components/required-separator/required-separator.js +1 -1
  135. package/dist/collection/components/rounded-icon/rounded-icon.js +4 -4
  136. package/dist/collection/components/scrollable-container/scrollable-container.js +1 -1
  137. package/dist/collection/components/search/search.js +1 -1
  138. package/dist/collection/components/separator/separator.js +1 -1
  139. package/dist/collection/components/shimmer/shimmer.js +1 -1
  140. package/dist/collection/components/snackbar/snackbar.js +4 -4
  141. package/dist/collection/components/spinner/spinner.js +1 -1
  142. package/dist/collection/components/tab/tab.js +2 -2
  143. package/dist/collection/components/tab-group/tab-group.js +1 -1
  144. package/dist/collection/components/tab-panel/tab-panel.js +1 -1
  145. package/dist/collection/components/table/table-cell/table-cell.js +2 -2
  146. package/dist/collection/components/table/table-header/table-header.js +1 -1
  147. package/dist/collection/components/table/table-row/table-row.js +2 -2
  148. package/dist/collection/components/table/table-rowgroup/table-rowgroup.js +2 -2
  149. package/dist/collection/components/table/table.js +2 -2
  150. package/dist/collection/components/textarea/textarea.js +2 -2
  151. package/dist/collection/components/toggle-button/toggle-button.js +3 -3
  152. package/dist/collection/components/toggle-chip/toggle-chip.js +3 -3
  153. package/dist/collection/components/toggle-group/toggle-group.js +2 -2
  154. package/dist/collection/components/toggle-switch/toggle-switch.js +4 -4
  155. package/dist/collection/components/tooltip/tooltip.js +3 -3
  156. package/dist/collection/components/wizard/wizard-step.js +2 -2
  157. package/dist/collection/components/wizard/wizard.js +1 -1
  158. package/dist/collection/components/wizard-icon/wizard-icon.js +1 -1
  159. package/dist/collection/utils/json-property-binding-util.js +16 -0
  160. package/dist/components/b2b-background-box.js +1 -51
  161. package/dist/components/b2b-custom-dropdown-option.d.ts +11 -0
  162. package/dist/components/b2b-custom-dropdown-option.js +87 -0
  163. package/dist/components/b2b-custom-dropdown.d.ts +11 -0
  164. package/dist/components/b2b-custom-dropdown.js +142 -0
  165. package/dist/components/b2b-date-picker.js +5 -21
  166. package/dist/components/b2b-dropdown.js +2 -2
  167. package/dist/components/b2b-flyout-menu-option.js +1 -1
  168. package/dist/components/b2b-flyout-menu.js +4 -22
  169. package/dist/components/b2b-grid-col.js +1 -1
  170. package/dist/components/b2b-grid-row.js +2 -2
  171. package/dist/components/b2b-grid.js +1 -1
  172. package/dist/components/b2b-label.js +2 -2
  173. package/dist/components/b2b-modal.js +2 -2
  174. package/dist/components/b2b-multiselect-dropdown.js +8 -20
  175. package/dist/components/b2b-pagination.js +1 -1
  176. package/dist/components/b2b-paragraph.js +2 -2
  177. package/dist/components/b2b-progress-bar.js +3 -3
  178. package/dist/components/b2b-radio-button.js +2 -2
  179. package/dist/components/b2b-radio-group.js +2 -2
  180. package/dist/components/b2b-required-separator.js +1 -1
  181. package/dist/components/b2b-scrollable-container.js +1 -1
  182. package/dist/components/b2b-search.js +1 -1
  183. package/dist/components/b2b-shimmer.js +1 -1
  184. package/dist/components/b2b-snackbar.js +4 -4
  185. package/dist/components/b2b-tab-group.js +1 -1
  186. package/dist/components/b2b-tab-panel.js +1 -1
  187. package/dist/components/b2b-tab.js +2 -2
  188. package/dist/components/b2b-table-row.js +3 -3
  189. package/dist/components/b2b-table-rowgroup.js +3 -3
  190. package/dist/components/b2b-table.js +3 -3
  191. package/dist/components/b2b-textarea.js +2 -2
  192. package/dist/components/b2b-toggle-button.js +3 -3
  193. package/dist/components/b2b-toggle-chip.js +3 -3
  194. package/dist/components/b2b-toggle-group.js +2 -2
  195. package/dist/components/b2b-toggle-switch.js +4 -4
  196. package/dist/components/b2b-tooltip.js +3 -3
  197. package/dist/components/b2b-wizard-step.js +2 -2
  198. package/dist/components/b2b-wizard.js +1 -1
  199. package/dist/components/background-box.js +53 -0
  200. package/dist/components/date-picker-days-header.js +1 -1
  201. package/dist/components/date-picker-days.js +1 -1
  202. package/dist/components/date-picker-header.js +5 -5
  203. package/dist/components/date-picker-months.js +1 -1
  204. package/dist/components/date-picker-years.js +1 -1
  205. package/dist/components/input-group.js +1 -1
  206. package/dist/components/input-label.js +2 -2
  207. package/dist/components/input-list-option.js +1 -1
  208. package/dist/components/input-list.js +2 -2
  209. package/dist/components/input.js +4 -4
  210. package/dist/components/json-property-binding-util.js +18 -0
  211. package/dist/components/multiselect-option.js +2 -2
  212. package/dist/components/rounded-icon.js +4 -4
  213. package/dist/components/separator.js +1 -1
  214. package/dist/components/spinner.js +1 -1
  215. package/dist/components/table-cell.js +3 -3
  216. package/dist/components/table-header.js +2 -2
  217. package/dist/components/utils.js +18 -68
  218. package/dist/components/utils2.js +70 -0
  219. package/dist/components/wizard-icon.js +1 -1
  220. package/dist/custom-elements.json +74 -0
  221. package/dist/esm/b2b-button_2.entry.js +1 -1
  222. package/dist/esm/b2b-chip-component_2.entry.js +2 -2
  223. package/dist/esm/b2b-core-components.js +1 -1
  224. package/dist/esm/b2b-custom-dropdown-option.entry.js +53 -0
  225. package/dist/esm/b2b-custom-dropdown.entry.js +90 -0
  226. package/dist/esm/b2b-date-picker-days_5.entry.js +9 -9
  227. package/dist/esm/b2b-date-picker.entry.js +5 -21
  228. package/dist/esm/b2b-dropdown.entry.js +2 -2
  229. package/dist/esm/b2b-flyout-menu-option.entry.js +1 -1
  230. package/dist/esm/b2b-flyout-menu.entry.js +4 -22
  231. package/dist/esm/b2b-grid-col.entry.js +1 -1
  232. package/dist/esm/b2b-grid-row.entry.js +2 -2
  233. package/dist/esm/b2b-grid.entry.js +1 -1
  234. package/dist/esm/b2b-input-group_2.entry.js +3 -3
  235. package/dist/esm/b2b-input-label.entry.js +2 -2
  236. package/dist/esm/b2b-input_2.entry.js +5 -5
  237. package/dist/esm/b2b-label.entry.js +2 -2
  238. package/dist/esm/b2b-modal.entry.js +2 -2
  239. package/dist/esm/b2b-multiselect-dropdown.entry.js +8 -20
  240. package/dist/esm/b2b-pagination.entry.js +1 -1
  241. package/dist/esm/b2b-paragraph.entry.js +2 -2
  242. package/dist/esm/b2b-progress-bar.entry.js +3 -3
  243. package/dist/esm/b2b-radio-button.entry.js +2 -2
  244. package/dist/esm/b2b-radio-group.entry.js +2 -2
  245. package/dist/esm/b2b-required-separator.entry.js +1 -1
  246. package/dist/esm/b2b-rounded-icon.entry.js +4 -4
  247. package/dist/esm/b2b-scrollable-container.entry.js +1 -1
  248. package/dist/esm/b2b-search.entry.js +1 -1
  249. package/dist/esm/b2b-separator.entry.js +1 -1
  250. package/dist/esm/b2b-shimmer.entry.js +1 -1
  251. package/dist/esm/b2b-snackbar.entry.js +4 -4
  252. package/dist/esm/b2b-tab-group.entry.js +1 -1
  253. package/dist/esm/b2b-tab-panel.entry.js +1 -1
  254. package/dist/esm/b2b-tab.entry.js +2 -2
  255. package/dist/esm/b2b-table-cell_2.entry.js +3 -3
  256. package/dist/esm/b2b-table-row.entry.js +2 -2
  257. package/dist/esm/b2b-table-rowgroup.entry.js +2 -2
  258. package/dist/esm/b2b-table.entry.js +2 -2
  259. package/dist/esm/b2b-textarea.entry.js +2 -2
  260. package/dist/esm/b2b-toggle-button.entry.js +3 -3
  261. package/dist/esm/b2b-toggle-chip.entry.js +3 -3
  262. package/dist/esm/b2b-toggle-group.entry.js +2 -2
  263. package/dist/esm/b2b-toggle-switch.entry.js +4 -4
  264. package/dist/esm/b2b-tooltip.entry.js +3 -3
  265. package/dist/esm/b2b-wizard-icon.entry.js +1 -1
  266. package/dist/esm/b2b-wizard-step.entry.js +2 -2
  267. package/dist/esm/b2b-wizard.entry.js +1 -1
  268. package/dist/esm/index-ab9eb36d.js +12 -4
  269. package/dist/esm/json-property-binding-util-5513739e.js +18 -0
  270. package/dist/esm/loader.js +1 -1
  271. package/dist/esm/utils-17e4d283.js +20 -0
  272. package/dist/types/components/custom-dropdown/custom-dropdown-option.d.ts +29 -0
  273. package/dist/types/components/custom-dropdown/custom-dropdown.d.ts +29 -0
  274. package/dist/types/components/custom-dropdown/custom-dropdown.stories.d.ts +12 -0
  275. package/dist/types/components/date-picker/date-picker.d.ts +0 -1
  276. package/dist/types/components/multiselect-dropdown/multiselect-dropdown.d.ts +0 -1
  277. package/dist/types/components.d.ts +157 -0
  278. package/dist/types/utils/json-property-binding-util.d.ts +1 -0
  279. package/dist/web-types.json +176 -1
  280. package/package.json +2 -2
  281. package/dist/b2b-core-components/p-383d0a10.entry.js +0 -1
  282. package/dist/b2b-core-components/p-3845cd27.entry.js +0 -1
  283. package/dist/b2b-core-components/p-400fa973.entry.js +0 -1
  284. package/dist/b2b-core-components/p-ca46f7fe.entry.js +0 -1
  285. package/dist/b2b-core-components/p-cfc55372.entry.js +0 -1
  286. package/dist/b2b-core-components/p-db205434.entry.js +0 -1
  287. package/dist/b2b-core-components/p-f5786cad.entry.js +0 -1
@@ -0,0 +1,247 @@
1
+ import { h, Host, } from "@stencil/core";
2
+ export class CustomDropdownOptionComponent {
3
+ constructor() {
4
+ this.handleClick = () => {
5
+ if (!this.disabled) {
6
+ this.b2bOptionSelected.emit({ selectedOption: this.option });
7
+ }
8
+ };
9
+ this.option = undefined;
10
+ this.disabled = false;
11
+ this.separator = false;
12
+ this.selected = false;
13
+ this.hoverIcon = null;
14
+ this.hoverIconColor = 'b2b-color-black-100';
15
+ this.selectedIcon = null;
16
+ this.selectedIconColor = 'b2b-color-black-100';
17
+ this.isHovered = false;
18
+ }
19
+ handleMouseEnter() {
20
+ this.isHovered = true;
21
+ }
22
+ handleMouseLeave() {
23
+ this.isHovered = false;
24
+ }
25
+ formatColorVariable(color) {
26
+ if (color.startsWith('var(--b2b-color-') && color.endsWith(')')) {
27
+ return color;
28
+ }
29
+ return `var(--${color})`;
30
+ }
31
+ render() {
32
+ return (h(Host, { key: '3a2103f763b42234fdba4b0d86747061a9d38433', class: {
33
+ 'b2b-custom-dropdown__option': true,
34
+ 'b2b-custom-dropdown__option-hover': this.isHovered && !this.selected,
35
+ 'b2b-custom-dropdown__option--disabled': this.disabled,
36
+ 'b2b-custom-dropdown__option--separator': this.separator,
37
+ 'b2b-custom-dropdown__option--selected': this.selected,
38
+ }, onClick: this.handleClick, disabled: this.disabled, "aria-disabled": this.disabled, role: "option", "aria-selected": this.selected.toString() }, h("div", { key: 'd9fd6073f7f6d402617aefd3f96f882250f4dff3', class: "b2b-option-container" }, h("div", { key: '8bf64fbbf02755bf0557016c22ac60874f4fa584', class: "b2b-custom-dropdown__text-content" }, this.option), h("div", { key: '1b27ba43dca79d5620620c5a2a61982f677a6c35', class: "b2b-custom-dropdown__icon-container" }, this.isHovered && !this.selected && this.hoverIcon ? (h("b2b-icon-100", { icon: this.hoverIcon, style: {
39
+ color: this.formatColorVariable(this.hoverIconColor),
40
+ } })) : this.selected && this.selectedIcon ? (h("b2b-icon-100", { icon: this.selectedIcon, style: {
41
+ color: this.formatColorVariable(this.selectedIconColor),
42
+ } })) : null))));
43
+ }
44
+ static get is() { return "b2b-custom-dropdown-option"; }
45
+ static get encapsulation() { return "shadow"; }
46
+ static get originalStyleUrls() {
47
+ return {
48
+ "$": ["custom-dropdown-option.scss"]
49
+ };
50
+ }
51
+ static get styleUrls() {
52
+ return {
53
+ "$": ["custom-dropdown-option.css"]
54
+ };
55
+ }
56
+ static get properties() {
57
+ return {
58
+ "option": {
59
+ "type": "string",
60
+ "mutable": false,
61
+ "complexType": {
62
+ "original": "string",
63
+ "resolved": "string",
64
+ "references": {}
65
+ },
66
+ "required": true,
67
+ "optional": false,
68
+ "docs": {
69
+ "tags": [],
70
+ "text": "The option name."
71
+ },
72
+ "attribute": "option",
73
+ "reflect": false
74
+ },
75
+ "disabled": {
76
+ "type": "boolean",
77
+ "mutable": false,
78
+ "complexType": {
79
+ "original": "boolean",
80
+ "resolved": "boolean",
81
+ "references": {}
82
+ },
83
+ "required": false,
84
+ "optional": false,
85
+ "docs": {
86
+ "tags": [],
87
+ "text": "Whether the option is disabled. Per default it is false. If disabled is true, the option cannot be selected."
88
+ },
89
+ "attribute": "disabled",
90
+ "reflect": true,
91
+ "defaultValue": "false"
92
+ },
93
+ "separator": {
94
+ "type": "boolean",
95
+ "mutable": false,
96
+ "complexType": {
97
+ "original": "boolean",
98
+ "resolved": "boolean",
99
+ "references": {}
100
+ },
101
+ "required": false,
102
+ "optional": false,
103
+ "docs": {
104
+ "tags": [],
105
+ "text": "Whether the option has a separator at the bottom. Per default it is false."
106
+ },
107
+ "attribute": "separator",
108
+ "reflect": false,
109
+ "defaultValue": "false"
110
+ },
111
+ "selected": {
112
+ "type": "boolean",
113
+ "mutable": false,
114
+ "complexType": {
115
+ "original": "boolean",
116
+ "resolved": "boolean",
117
+ "references": {}
118
+ },
119
+ "required": false,
120
+ "optional": false,
121
+ "docs": {
122
+ "tags": [],
123
+ "text": "Whether the option is currently selected."
124
+ },
125
+ "attribute": "selected",
126
+ "reflect": true,
127
+ "defaultValue": "false"
128
+ },
129
+ "hoverIcon": {
130
+ "type": "any",
131
+ "mutable": false,
132
+ "complexType": {
133
+ "original": "any | null",
134
+ "resolved": "any",
135
+ "references": {}
136
+ },
137
+ "required": false,
138
+ "optional": false,
139
+ "docs": {
140
+ "tags": [],
141
+ "text": "The icon to display when the option is hovered and not selected. Defaults to null (no icon)."
142
+ },
143
+ "attribute": "hover-icon",
144
+ "reflect": true,
145
+ "defaultValue": "null"
146
+ },
147
+ "hoverIconColor": {
148
+ "type": "string",
149
+ "mutable": false,
150
+ "complexType": {
151
+ "original": "string",
152
+ "resolved": "string",
153
+ "references": {}
154
+ },
155
+ "required": false,
156
+ "optional": false,
157
+ "docs": {
158
+ "tags": [],
159
+ "text": "The color of the icon when the option is hovered. Defaults to 'b2b-color-black-100'."
160
+ },
161
+ "attribute": "hover-icon-color",
162
+ "reflect": true,
163
+ "defaultValue": "'b2b-color-black-100'"
164
+ },
165
+ "selectedIcon": {
166
+ "type": "any",
167
+ "mutable": false,
168
+ "complexType": {
169
+ "original": "any | null",
170
+ "resolved": "any",
171
+ "references": {}
172
+ },
173
+ "required": false,
174
+ "optional": false,
175
+ "docs": {
176
+ "tags": [],
177
+ "text": "The icon to display when the option is selected. Defaults to null (no icon)."
178
+ },
179
+ "attribute": "selected-icon",
180
+ "reflect": true,
181
+ "defaultValue": "null"
182
+ },
183
+ "selectedIconColor": {
184
+ "type": "string",
185
+ "mutable": false,
186
+ "complexType": {
187
+ "original": "string",
188
+ "resolved": "string",
189
+ "references": {}
190
+ },
191
+ "required": false,
192
+ "optional": false,
193
+ "docs": {
194
+ "tags": [],
195
+ "text": "The color of the icon when the option is selected. Defaults to 'b2b-color-black-100'."
196
+ },
197
+ "attribute": "selected-icon-color",
198
+ "reflect": true,
199
+ "defaultValue": "'b2b-color-black-100'"
200
+ }
201
+ };
202
+ }
203
+ static get states() {
204
+ return {
205
+ "isHovered": {}
206
+ };
207
+ }
208
+ static get events() {
209
+ return [{
210
+ "method": "b2bOptionSelected",
211
+ "name": "b2b-custom-dropdown-option-selected",
212
+ "bubbles": true,
213
+ "cancelable": true,
214
+ "composed": true,
215
+ "docs": {
216
+ "tags": [],
217
+ "text": "Emits the option as a string whenever an option is selected."
218
+ },
219
+ "complexType": {
220
+ "original": "OptionSelectedEventDetail",
221
+ "resolved": "OptionSelectedEventDetail<any>",
222
+ "references": {
223
+ "OptionSelectedEventDetail": {
224
+ "location": "import",
225
+ "path": "../../utils/interfaces/form.interface",
226
+ "id": "src/utils/interfaces/form.interface.d.ts::OptionSelectedEventDetail"
227
+ }
228
+ }
229
+ }
230
+ }];
231
+ }
232
+ static get listeners() {
233
+ return [{
234
+ "name": "mouseenter",
235
+ "method": "handleMouseEnter",
236
+ "target": undefined,
237
+ "capture": false,
238
+ "passive": true
239
+ }, {
240
+ "name": "mouseleave",
241
+ "method": "handleMouseLeave",
242
+ "target": undefined,
243
+ "capture": false,
244
+ "passive": true
245
+ }];
246
+ }
247
+ }
@@ -0,0 +1,280 @@
1
+ /**
2
+ * Do not edit directly, this file was auto-generated.
3
+ */
4
+ :root, :host {
5
+ --b2b-color-black-50: #333333;
6
+ --b2b-color-black-100: #222222;
7
+ --b2b-color-white-100: #FFFFFF;
8
+ --b2b-color-grey-10: #F0F0F0;
9
+ --b2b-color-grey-25: #F6F6F6;
10
+ --b2b-color-grey-50: #EEEEEE;
11
+ --b2b-color-grey-100: #E6E6E6;
12
+ --b2b-color-grey-150: #D5D5D5;
13
+ --b2b-color-grey-200: #C4C4C4;
14
+ --b2b-color-grey-250: #B1B1B1;
15
+ --b2b-color-grey-300: #9E9E9E;
16
+ --b2b-color-grey-400: #777777;
17
+ --b2b-color-red-50: #FFDDE3;
18
+ --b2b-color-red-100: #D4021D;
19
+ --b2b-color-red-150: #E6344B;
20
+ --b2b-color-red-200: #BB0004;
21
+ --b2b-color-red-250: #850012;
22
+ --b2b-color-blue-10: #F2F7FF;
23
+ --b2b-color-blue-25: #DBE7FA;
24
+ --b2b-color-blue-50: #87B1F0;
25
+ --b2b-color-blue-100: #0F63E1;
26
+ --b2b-color-blue-200: #093E90;
27
+ --b2b-color-primary: #D4021D;
28
+ --b2b-color-error-100: #E6344B;
29
+ --b2b-color-warning-50: #FFD998;
30
+ --b2b-color-warning-100: #FFB432;
31
+ --b2b-color-success-50: #D6E0CC;
32
+ --b2b-color-success-100: #326400;
33
+ --b2b-color-info-50: #CCD6E0;
34
+ --b2b-color-info-100: #003264;
35
+ --b2b-color-hover-default: #DBE7FA;
36
+ --b2b-color-hover-black: #3B3B3B;
37
+ --b2b-color-background-overlay-transparent-80: #22222280;
38
+ --b2b-color-background-overlay-transparent-40: #22222240;
39
+ --b2b-color-table-selected-default: #CCE9FF;
40
+ --b2b-color-table-expand-hover: #DBE7FA;
41
+ --b2b-font-family-default: OttoSans, Arial, Helvetica, sans-serif;
42
+ --b2b-font-weight-thin: 100;
43
+ --b2b-font-weight-normal: 500;
44
+ --b2b-font-weight-bold: 700;
45
+ --b2b-size-1: 0.0625rem; /** 1px */
46
+ --b2b-size-5: 0.125rem; /** 2px */
47
+ --b2b-size-7: 0.1875rem; /** 3px */
48
+ --b2b-size-10: 0.25rem; /** 4px */
49
+ --b2b-size-13: 0.3125rem; /** 5px */
50
+ --b2b-size-15: 0.375rem; /** 6px */
51
+ --b2b-size-20: 0.5rem; /** 8px */
52
+ --b2b-size-25: 0.625rem; /** 10px */
53
+ --b2b-size-30: 0.75rem; /** 12px */
54
+ --b2b-size-35: 0.875rem; /** 14px */
55
+ --b2b-size-40: 1rem; /** 16px */
56
+ --b2b-size-45: 1.125rem; /** 18px */
57
+ --b2b-size-50: 1.25rem; /** 20px */
58
+ --b2b-size-53: 1.3125rem; /** 21px */
59
+ --b2b-size-55: 1.375rem; /** 22px */
60
+ --b2b-size-60: 1.5rem; /** 24px */
61
+ --b2b-size-70: 1.75rem; /** 28px */
62
+ --b2b-size-80: 2rem; /** 32px */
63
+ --b2b-size-90: 2.25rem; /** 36px */
64
+ --b2b-size-100: 2.5rem; /** 40px */
65
+ --b2b-size-120: 3rem; /** 48px */
66
+ --b2b-size-140: 3.5rem; /** 56px */
67
+ --b2b-size-150: 3.75rem; /** 60px */
68
+ --b2b-size-160: 4rem; /** 64px */
69
+ --b2b-size-200: 5rem; /** 80px */
70
+ --b2b-color-error-50: var(--b2b-color-red-50);
71
+ --b2b-color-background-page: var(--b2b-color-grey-10);
72
+ --b2b-color-background-box: var(--b2b-color-white-100);
73
+ --b2b-color-background-card: var(--b2b-color-white-100);
74
+ --b2b-color-background-overlay: var(--b2b-color-black-100);
75
+ --b2b-color-border-100: var(--b2b-color-grey-200);
76
+ --b2b-color-copy-default: var(--b2b-color-black-100);
77
+ --b2b-color-copy-secondary: var(--b2b-color-grey-400);
78
+ --b2b-color-copy-inverted: var(--b2b-color-white-100);
79
+ --b2b-color-copy-overlay: var(--b2b-color-white-100);
80
+ --b2b-color-headline-title: var(--b2b-color-red-100);
81
+ --b2b-color-headline-default: var(--b2b-color-black-100);
82
+ --b2b-color-headline-inverted: var(--b2b-color-white-100);
83
+ --b2b-color-icon-default: var(--b2b-color-black-100);
84
+ --b2b-color-icon-secondary: var(--b2b-color-grey-400);
85
+ --b2b-color-icon-inverted: var(--b2b-color-white-100);
86
+ --b2b-color-table-expand-default: var(--b2b-color-grey-25);
87
+ --b2b-size-icon-50: var(--b2b-size-40);
88
+ --b2b-size-icon-100: var(--b2b-size-60);
89
+ --b2b-size-icon-200: var(--b2b-size-80);
90
+ --b2b-size-icon-400: var(--b2b-size-120);
91
+ --b2b-size-space-25: var(--b2b-size-10);
92
+ --b2b-size-space-50: var(--b2b-size-20);
93
+ --b2b-size-space-75: var(--b2b-size-30);
94
+ --b2b-size-space-100: var(--b2b-size-40);
95
+ --b2b-size-space-150: var(--b2b-size-60);
96
+ --b2b-size-space-175: var(--b2b-size-80);
97
+ --b2b-size-space-200: var(--b2b-size-100);
98
+ --b2b-size-space-250: var(--b2b-size-160);
99
+ --b2b-size-space-300: var(--b2b-size-200);
100
+ --b2b-size-padding-50: var(--b2b-size-20);
101
+ --b2b-size-padding-100: var(--b2b-size-40);
102
+ --b2b-size-padding-150: var(--b2b-size-60);
103
+ --b2b-size-padding-175: var(--b2b-size-80);
104
+ --b2b-size-border-width-50: var(--b2b-size-1);
105
+ --b2b-size-border-width-100: var(--b2b-size-5);
106
+ --b2b-size-border-width-150: var(--b2b-size-10);
107
+ --b2b-size-border-radius-100: var(--b2b-size-7);
108
+ --b2b-size-border-no-radius-left: 0 var(--b2b-size-7) var(--b2b-size-7) 0;
109
+ --b2b-size-border-no-radius-right: var(--b2b-size-7) 0 0 var(--b2b-size-7);
110
+ --b2b-size-border-no-radius-top: 0 0 var(--b2b-size-7) var(--b2b-size-7);
111
+ --b2b-size-border-no-radius-bottom: var(--b2b-size-7) var(--b2b-size-7) 0 0;
112
+ --b2b-size-copy-50: var(--b2b-size-30);
113
+ --b2b-size-copy-100: var(--b2b-size-35);
114
+ --b2b-size-copy-125: var(--b2b-size-40);
115
+ --b2b-size-copy-200: var(--b2b-size-45);
116
+ --b2b-size-copy-300: var(--b2b-size-60);
117
+ --b2b-size-copy-line-height-50: var(--b2b-size-40);
118
+ --b2b-size-copy-line-height-75: var(--b2b-size-45); /** Will use 18px until design facelift */
119
+ --b2b-size-copy-line-height-100: var(--b2b-size-53); /** Will use 21px until design facelift */
120
+ --b2b-size-copy-line-height-125: var(--b2b-size-60);
121
+ --b2b-size-copy-line-height-200: var(--b2b-size-60);
122
+ --b2b-size-copy-line-height-300: var(--b2b-size-90);
123
+ --b2b-size-headline-100: var(--b2b-size-40);
124
+ --b2b-size-headline-200: var(--b2b-size-45);
125
+ --b2b-size-headline-400: var(--b2b-size-60);
126
+ --b2b-size-headline-line-height-100: var(--b2b-size-60);
127
+ --b2b-size-headline-line-height-200: var(--b2b-size-60);
128
+ --b2b-size-headline-line-height-400: var(--b2b-size-60);
129
+ }
130
+ /**
131
+ * Do not edit directly, this file was auto-generated.
132
+ */
133
+ :root [data-theme="dark"] {
134
+ --b2b-color-black-50: #333333;
135
+ --b2b-color-black-100: #222222;
136
+ --b2b-color-white-100: #FFFFFF;
137
+ --b2b-color-grey-10: #F0F0F0;
138
+ --b2b-color-grey-25: #F6F6F6;
139
+ --b2b-color-grey-50: #EEEEEE;
140
+ --b2b-color-grey-100: #E6E6E6;
141
+ --b2b-color-grey-150: #D5D5D5;
142
+ --b2b-color-grey-200: #C4C4C4;
143
+ --b2b-color-grey-250: #B1B1B1;
144
+ --b2b-color-grey-300: #9E9E9E;
145
+ --b2b-color-grey-400: #777777;
146
+ --b2b-color-red-50: #FFDDE3;
147
+ --b2b-color-red-100: #D4021D;
148
+ --b2b-color-red-150: #E6344B;
149
+ --b2b-color-red-200: #BB0004;
150
+ --b2b-color-red-250: #850012;
151
+ --b2b-color-blue-10: #F2F7FF;
152
+ --b2b-color-blue-25: #DBE7FA;
153
+ --b2b-color-blue-50: #87B1F0;
154
+ --b2b-color-blue-100: #0F63E1;
155
+ --b2b-color-blue-200: #093E90;
156
+ --b2b-color-primary: #D4021D;
157
+ --b2b-color-error-100: #E6344B;
158
+ --b2b-color-warning-50: #FFD998;
159
+ --b2b-color-warning-100: #FFB432;
160
+ --b2b-color-success-50: #D6E0CC;
161
+ --b2b-color-success-100: #326400;
162
+ --b2b-color-info-50: #CCD6E0;
163
+ --b2b-color-info-100: #003264;
164
+ --b2b-color-hover-default: #DBE7FA;
165
+ --b2b-color-hover-black: #3B3B3B;
166
+ --b2b-font-family-default: OttoSans, Arial, Helvetica, sans-serif;
167
+ --b2b-font-weight-thin: 100;
168
+ --b2b-font-weight-normal: 500;
169
+ --b2b-font-weight-bold: 700;
170
+ --b2b-size-1: 0.0625rem; /** 1px */
171
+ --b2b-size-5: 0.125rem; /** 2px */
172
+ --b2b-size-7: 0.1875rem; /** 3px */
173
+ --b2b-size-10: 0.25rem; /** 4px */
174
+ --b2b-size-13: 0.3125rem; /** 5px */
175
+ --b2b-size-15: 0.375rem; /** 6px */
176
+ --b2b-size-20: 0.5rem; /** 8px */
177
+ --b2b-size-25: 0.625rem; /** 10px */
178
+ --b2b-size-30: 0.75rem; /** 12px */
179
+ --b2b-size-35: 0.875rem; /** 14px */
180
+ --b2b-size-40: 1rem; /** 16px */
181
+ --b2b-size-45: 1.125rem; /** 18px */
182
+ --b2b-size-50: 1.25rem; /** 20px */
183
+ --b2b-size-53: 1.3125rem; /** 21px */
184
+ --b2b-size-55: 1.375rem; /** 22px */
185
+ --b2b-size-60: 1.5rem; /** 24px */
186
+ --b2b-size-70: 1.75rem; /** 28px */
187
+ --b2b-size-80: 2rem; /** 32px */
188
+ --b2b-size-90: 2.25rem; /** 36px */
189
+ --b2b-size-100: 2.5rem; /** 40px */
190
+ --b2b-size-120: 3rem; /** 48px */
191
+ --b2b-size-140: 3.5rem; /** 56px */
192
+ --b2b-size-150: 3.75rem; /** 60px */
193
+ --b2b-size-160: 4rem; /** 64px */
194
+ --b2b-size-200: 5rem; /** 80px */
195
+ --b2b-color-error-50: var(--b2b-color-red-50);
196
+ --b2b-color-background-box: var(--b2b-color-black-50);
197
+ --b2b-color-background-card: var(--b2b-color-black-50);
198
+ --b2b-color-background-page: var(--b2b-color-grey-100);
199
+ --b2b-color-border-100: var(--b2b-color-white-100);
200
+ --b2b-color-copy-default: var(--b2b-color-white-100);
201
+ --b2b-color-copy-secondary: var(--b2b-color-grey-100);
202
+ --b2b-color-copy-inverted: var(--b2b-color-black-100);
203
+ --b2b-color-headline-title: var(--b2b-color-red-50);
204
+ --b2b-color-headline-default: var(--b2b-color-white-100);
205
+ --b2b-color-headline-inverted: var(--b2b-color-black-100);
206
+ --b2b-color-icon-default: var(--b2b-color-white-100);
207
+ --b2b-color-icon-secondary: var(--b2b-color-grey-400);
208
+ --b2b-color-icon-inverted: var(--b2b-color-black-100);
209
+ }
210
+ @font-face {
211
+ font-family: OttoSans;
212
+ src: url("https://pattern-library.portal.otto.market/static/assets/fonts/otto-sans.ttf");
213
+ font-weight: normal;
214
+ font-style: normal;
215
+ }
216
+ @font-face {
217
+ font-family: OttoSans;
218
+ src: url("https://pattern-library.portal.otto.market/static/assets/fonts/otto-sans-bold.woff") format("woff"), url("https://pattern-library.portal.otto.market/static/assets/fonts/otto-sans-bold.ttf") format("truetype");
219
+ font-weight: bold;
220
+ font-style: normal;
221
+ }
222
+ @font-face {
223
+ font-family: OttoSans;
224
+ src: url("https://pattern-library.portal.otto.market/static/assets/fonts/otto-sans-thin.woff") format("woff"), url("https://pattern-library.portal.otto.market/static/assets/fonts/otto-sans-thin.ttf") format("truetype");
225
+ font-weight: 100;
226
+ font-style: normal;
227
+ }
228
+ @font-face {
229
+ font-family: ObcIcons;
230
+ src: url("https://pattern-library.portal.otto.market/static/assets/fonts/obc-icons.woff");
231
+ }
232
+ :host {
233
+ width: 100%;
234
+ }
235
+ .b2b-custom-dropdown__trigger {
236
+ position: relative;
237
+ display: inline !important;
238
+ cursor: pointer;
239
+ }
240
+ .b2b-custom-dropdown {
241
+ display: none;
242
+ }
243
+ .b2b-custom-dropdown--on {
244
+ display: block;
245
+ }
246
+ .b2b-custom-dropdown--drop-shadow {
247
+ box-shadow: 0 0 5px rgba(0, 0, 0, 0.2);
248
+ }
249
+ .b2b-custom-dropdown--border {
250
+ border: 1px solid var(--b2b-color-grey-200);
251
+ }
252
+ .b2b-custom-dropdown-search {
253
+ padding: var(--b2b-size-30);
254
+ display: none;
255
+ }
256
+ .b2b-custom-dropdown-search--enabled {
257
+ display: block;
258
+ border-bottom: var(--b2b-size-1) solid var(--b2b-color-border-100);
259
+ }
260
+ .b2b-custom-dropdown__options-scroll-container {
261
+ position: relative;
262
+ display: block;
263
+ max-height: 288px;
264
+ overflow-y: auto;
265
+ margin: 0;
266
+ }
267
+ .b2b-custom-dropdown__options-container {
268
+ position: relative;
269
+ display: block;
270
+ margin: 0;
271
+ }
272
+ .b2b-custom-dropdown__options-container--disabled {
273
+ display: none;
274
+ }
275
+ .b2b-custom-dropdown__option--hidden {
276
+ display: none;
277
+ }
278
+ ::slotted(b2b-custom-dropdown-option.b2b-custom-dropdown__option--hidden) {
279
+ display: none;
280
+ }
@@ -0,0 +1,66 @@
1
+ import { newE2EPage } from "@stencil/core/testing";
2
+ describe('b2b-custom-dropdown', () => {
3
+ let page;
4
+ beforeEach(async () => {
5
+ page = await newE2EPage();
6
+ await page.setContent(`
7
+ <b2b-custom-dropdown placeholder="Select an option">
8
+ <b2b-icon-100 icon="b2b_icon-ellipsis" slot='trigger' clickable focusable></b2b-icon-100>
9
+ <b2b-custom-dropdown-option slot='option' option='option1' separator="true">
10
+ </b2b-custom-dropdown-option>
11
+ <b2b-custom-dropdown-option slot='option' option='option2' separator="false">
12
+ </b2b-custom-dropdown-option>
13
+ <b2b-custom-dropdown-option slot='option' option='option3' separator="false">
14
+ </b2b-custom-dropdown-option>
15
+ <b2b-custom-dropdown-option slot='option' option='option4' separator="false">
16
+ </b2b-custom-dropdown-option>
17
+ </b2b-custom-dropdown>
18
+ `);
19
+ });
20
+ it('should render with placeholder', async () => {
21
+ const b2bInput = await page.find('b2b-custom-dropdown >>> b2b-input');
22
+ expect(b2bInput).not.toBeNull();
23
+ const placeholder = await b2bInput.getProperty('placeholder');
24
+ expect(placeholder).toEqual('Select an option');
25
+ });
26
+ it('should show the dropdown options when trigger is clicked', async () => {
27
+ const trigger = await page.find('b2b-custom-dropdown [slot="trigger"]');
28
+ await trigger.click();
29
+ await page.waitForChanges();
30
+ const customDropdownOption = await page.find('b2b-custom-dropdown-option');
31
+ expect(customDropdownOption).not.toBeNull();
32
+ expect(await customDropdownOption.isVisible()).toBe(true);
33
+ });
34
+ it('should hide the dropdown when it loses focus', async () => {
35
+ const trigger = await page.find('b2b-custom-dropdown [slot="trigger"]');
36
+ await trigger.click();
37
+ await page.waitForChanges();
38
+ const customDropdownOption = await page.find('b2b-custom-dropdown-option');
39
+ expect(await customDropdownOption.isVisible()).toBe(true);
40
+ await page.keyboard.press('Tab');
41
+ await page.waitForChanges();
42
+ const dropdown = await page.find('b2b-custom-dropdown');
43
+ expect(dropdown).not.toHaveClass('b2b-custom-dropdown--on');
44
+ });
45
+ it('should display separator after an option when separator is true', async () => {
46
+ const trigger = await page.find('b2b-custom-dropdown [slot="trigger"]');
47
+ await trigger.click();
48
+ await page.waitForChanges();
49
+ const dropdownOptions = await page.findAll('b2b-custom-dropdown-option');
50
+ const agencyOption = dropdownOptions[0];
51
+ const separatorAgencyOption = await agencyOption.getProperty('separator');
52
+ expect(separatorAgencyOption).toBe(true);
53
+ const option1 = dropdownOptions[1];
54
+ const separatorOption1 = await option1.getProperty('separator');
55
+ expect(separatorOption1).toBe(false);
56
+ });
57
+ it('should display the correct list of options', async () => {
58
+ const trigger = await page.find('b2b-custom-dropdown [slot="trigger"]');
59
+ await trigger.click();
60
+ await page.waitForChanges();
61
+ const dropdownOptions = await page.findAll('b2b-custom-dropdown-option');
62
+ expect(dropdownOptions.length).toEqual(4);
63
+ const optionTexts = await Promise.all(dropdownOptions.map(option => option.getProperty('option')));
64
+ expect(optionTexts).toEqual(['option1', 'option2', 'option3', 'option4']);
65
+ });
66
+ });