@laerdal/life-react-components 1.1.2-dev.8 → 1.2.1-dev.2

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 (241) hide show
  1. package/dist/esm/Breadcrumb/Breadcrumb.js +96 -49
  2. package/dist/esm/Breadcrumb/Breadcrumb.js.map +1 -1
  3. package/dist/esm/Button/DualFunctionButton.js +0 -3
  4. package/dist/esm/Button/DualFunctionButton.js.map +1 -1
  5. package/dist/esm/Button/Iconbutton.js +6 -2
  6. package/dist/esm/Button/Iconbutton.js.map +1 -1
  7. package/dist/esm/Button/index.js +0 -1
  8. package/dist/esm/Button/index.js.map +1 -1
  9. package/dist/esm/Chips/ChoiceChips.js +1 -2
  10. package/dist/esm/Chips/ChoiceChips.js.map +1 -1
  11. package/dist/esm/Dropdown/BasicDropdown.js +11 -3
  12. package/dist/esm/Dropdown/BasicDropdown.js.map +1 -1
  13. package/dist/esm/Dropdown/CommonStyling.js +15 -13
  14. package/dist/esm/Dropdown/CommonStyling.js.map +1 -1
  15. package/dist/esm/Dropdown/DropdownButton.js +20 -8
  16. package/dist/esm/Dropdown/DropdownButton.js.map +1 -1
  17. package/dist/esm/Dropdown/DropdownContent.js +117 -31
  18. package/dist/esm/Dropdown/DropdownContent.js.map +1 -1
  19. package/dist/esm/GlobalNavigationBar/RightSideNav.js +4 -0
  20. package/dist/esm/GlobalNavigationBar/RightSideNav.js.map +1 -1
  21. package/dist/esm/List/ListRow.js +204 -90
  22. package/dist/esm/List/ListRow.js.map +1 -1
  23. package/dist/esm/List/__tests__/ListRow.tests.js +7 -43
  24. package/dist/esm/List/__tests__/ListRow.tests.js.map +1 -1
  25. package/dist/esm/List/index.js +1 -2
  26. package/dist/esm/List/index.js.map +1 -1
  27. package/dist/esm/Modals/ModalContainer.js +1 -0
  28. package/dist/esm/Modals/ModalContainer.js.map +1 -1
  29. package/dist/esm/Modals/ModalDialog.js +12 -3
  30. package/dist/esm/Modals/ModalDialog.js.map +1 -1
  31. package/dist/esm/Modals/ModalNote.js +56 -0
  32. package/dist/esm/Modals/ModalNote.js.map +1 -0
  33. package/dist/esm/Modals/ModalStyles.js +48 -0
  34. package/dist/esm/Modals/ModalStyles.js.map +1 -1
  35. package/dist/esm/NotificationDot/NotificationDot.js +41 -0
  36. package/dist/esm/NotificationDot/NotificationDot.js.map +1 -0
  37. package/dist/esm/NotificationDot/index.js +2 -0
  38. package/dist/esm/NotificationDot/index.js.map +1 -0
  39. package/dist/esm/Tabs/TabLink.js +25 -20
  40. package/dist/esm/Tabs/TabLink.js.map +1 -1
  41. package/dist/esm/Tabs/VerticalTabs.js +4 -1
  42. package/dist/esm/Tabs/VerticalTabs.js.map +1 -1
  43. package/dist/esm/Toggles/ToggleSwitch.js +14 -9
  44. package/dist/esm/Toggles/ToggleSwitch.js.map +1 -1
  45. package/dist/esm/Toggles/TogglerStyles.js +101 -74
  46. package/dist/esm/Toggles/TogglerStyles.js.map +1 -1
  47. package/dist/esm/Toggles/TogglerTypes.js +0 -4
  48. package/dist/esm/Toggles/TogglerTypes.js.map +1 -1
  49. package/dist/esm/Tooltips/TooltipStyles.js +77 -0
  50. package/dist/esm/Tooltips/TooltipStyles.js.map +1 -0
  51. package/dist/esm/Tooltips/TooltipTypes.js +6 -0
  52. package/dist/esm/Tooltips/TooltipTypes.js.map +1 -0
  53. package/dist/esm/Tooltips/TooltipWrapper.js +24 -0
  54. package/dist/esm/Tooltips/TooltipWrapper.js.map +1 -0
  55. package/dist/esm/Tooltips/index.js +4 -0
  56. package/dist/esm/Tooltips/index.js.map +1 -0
  57. package/dist/esm/icons/contenticons/ContentIcons.js +454 -322
  58. package/dist/esm/icons/contenticons/ContentIcons.js.map +1 -1
  59. package/dist/esm/icons/index.js +55 -24
  60. package/dist/esm/icons/index.js.map +1 -1
  61. package/dist/esm/icons/systemicons/SystemIcons.js +652 -488
  62. package/dist/esm/icons/systemicons/SystemIcons.js.map +1 -1
  63. package/dist/esm/index.js +1 -0
  64. package/dist/esm/index.js.map +1 -1
  65. package/dist/esm/types.js +1 -0
  66. package/dist/esm/types.js.map +1 -1
  67. package/dist/js/Breadcrumb/Breadcrumb.d.ts +5 -2
  68. package/dist/js/Breadcrumb/Breadcrumb.js +94 -36
  69. package/dist/js/Breadcrumb/Breadcrumb.js.map +1 -1
  70. package/dist/js/Button/DualFunctionButton.d.ts +0 -1
  71. package/dist/js/Button/DualFunctionButton.js +0 -3
  72. package/dist/js/Button/DualFunctionButton.js.map +1 -1
  73. package/dist/js/Button/Iconbutton.js +2 -2
  74. package/dist/js/Button/Iconbutton.js.map +1 -1
  75. package/dist/js/Button/index.d.ts +0 -1
  76. package/dist/js/Button/index.js +0 -8
  77. package/dist/js/Button/index.js.map +1 -1
  78. package/dist/js/Chips/ChipTypes.d.ts +1 -0
  79. package/dist/js/Chips/ChoiceChips.js +1 -2
  80. package/dist/js/Chips/ChoiceChips.js.map +1 -1
  81. package/dist/js/Dropdown/BasicDropdown.d.ts +3 -2
  82. package/dist/js/Dropdown/BasicDropdown.js +18 -3
  83. package/dist/js/Dropdown/BasicDropdown.js.map +1 -1
  84. package/dist/js/Dropdown/CommonStyling.d.ts +1 -0
  85. package/dist/js/Dropdown/CommonStyling.js +12 -12
  86. package/dist/js/Dropdown/CommonStyling.js.map +1 -1
  87. package/dist/js/Dropdown/DropdownButton.d.ts +1 -1
  88. package/dist/js/Dropdown/DropdownButton.js +19 -9
  89. package/dist/js/Dropdown/DropdownButton.js.map +1 -1
  90. package/dist/js/Dropdown/DropdownButtonTypes.d.ts +1 -0
  91. package/dist/js/Dropdown/DropdownContent.d.ts +4 -1
  92. package/dist/js/Dropdown/DropdownContent.js +117 -38
  93. package/dist/js/Dropdown/DropdownContent.js.map +1 -1
  94. package/dist/js/GlobalNavigationBar/RightSideNav.js +1 -1
  95. package/dist/js/GlobalNavigationBar/RightSideNav.js.map +1 -1
  96. package/dist/js/List/ListRow.d.ts +12 -5
  97. package/dist/js/List/ListRow.js +77 -55
  98. package/dist/js/List/ListRow.js.map +1 -1
  99. package/dist/js/List/__tests__/ListRow.tests.js +8 -53
  100. package/dist/js/List/__tests__/ListRow.tests.js.map +1 -1
  101. package/dist/js/List/index.d.ts +1 -2
  102. package/dist/js/List/index.js +0 -8
  103. package/dist/js/List/index.js.map +1 -1
  104. package/dist/js/Modals/ModalContainer.js +1 -1
  105. package/dist/js/Modals/ModalContainer.js.map +1 -1
  106. package/dist/js/Modals/ModalDialog.d.ts +2 -0
  107. package/dist/js/Modals/ModalDialog.js +13 -3
  108. package/dist/js/Modals/ModalDialog.js.map +1 -1
  109. package/dist/js/Modals/ModalNote.d.ts +9 -0
  110. package/dist/js/Modals/ModalNote.js +79 -0
  111. package/dist/js/Modals/ModalNote.js.map +1 -0
  112. package/dist/js/Modals/ModalStyles.d.ts +6 -0
  113. package/dist/js/Modals/ModalStyles.js +58 -4
  114. package/dist/js/Modals/ModalStyles.js.map +1 -1
  115. package/dist/js/NotificationDot/NotificationDot.d.ts +8 -0
  116. package/dist/js/NotificationDot/NotificationDot.js +70 -0
  117. package/dist/js/NotificationDot/NotificationDot.js.map +1 -0
  118. package/dist/js/NotificationDot/index.d.ts +1 -0
  119. package/dist/js/NotificationDot/index.js +16 -0
  120. package/dist/js/NotificationDot/index.js.map +1 -0
  121. package/dist/js/Tabs/TabLink.d.ts +3 -1
  122. package/dist/js/Tabs/TabLink.js +26 -11
  123. package/dist/js/Tabs/TabLink.js.map +1 -1
  124. package/dist/js/Tabs/VerticalTabs.d.ts +1 -0
  125. package/dist/js/Tabs/VerticalTabs.js +4 -1
  126. package/dist/js/Tabs/VerticalTabs.js.map +1 -1
  127. package/dist/js/Toggles/ToggleSwitch.d.ts +1 -1
  128. package/dist/js/Toggles/ToggleSwitch.js +16 -8
  129. package/dist/js/Toggles/ToggleSwitch.js.map +1 -1
  130. package/dist/js/Toggles/TogglerStyles.d.ts +3 -0
  131. package/dist/js/Toggles/TogglerStyles.js +16 -6
  132. package/dist/js/Toggles/TogglerStyles.js.map +1 -1
  133. package/dist/js/Toggles/TogglerTypes.d.ts +2 -0
  134. package/dist/js/Toggles/TogglerTypes.js +0 -5
  135. package/dist/js/Toggles/TogglerTypes.js.map +1 -1
  136. package/dist/js/Tooltips/TooltipStyles.d.ts +10 -0
  137. package/dist/js/Tooltips/TooltipStyles.js +86 -0
  138. package/dist/js/Tooltips/TooltipStyles.js.map +1 -0
  139. package/dist/js/Tooltips/TooltipTypes.d.ts +14 -0
  140. package/dist/js/Tooltips/TooltipTypes.js +11 -0
  141. package/dist/js/Tooltips/TooltipTypes.js.map +1 -0
  142. package/dist/js/Tooltips/TooltipWrapper.d.ts +3 -0
  143. package/dist/js/Tooltips/TooltipWrapper.js +43 -0
  144. package/dist/js/Tooltips/TooltipWrapper.js.map +1 -0
  145. package/dist/js/Tooltips/index.d.ts +3 -0
  146. package/dist/js/Tooltips/index.js +30 -0
  147. package/dist/js/Tooltips/index.js.map +1 -0
  148. package/dist/js/icons/contenticons/ContentIcons.js +1513 -1381
  149. package/dist/js/icons/contenticons/ContentIcons.js.map +1 -1
  150. package/dist/js/icons/index.d.ts +2 -0
  151. package/dist/js/icons/index.js +68 -25
  152. package/dist/js/icons/index.js.map +1 -1
  153. package/dist/js/icons/systemicons/SystemIcons.js +652 -488
  154. package/dist/js/icons/systemicons/SystemIcons.js.map +1 -1
  155. package/dist/js/index.d.ts +1 -0
  156. package/dist/js/index.js +13 -0
  157. package/dist/js/index.js.map +1 -1
  158. package/dist/js/types.d.ts +1 -0
  159. package/dist/js/types.js +1 -0
  160. package/dist/js/types.js.map +1 -1
  161. package/dist/umd/Breadcrumb/Breadcrumb.js +97 -51
  162. package/dist/umd/Breadcrumb/Breadcrumb.js.map +1 -1
  163. package/dist/umd/Button/DualFunctionButton.js +10 -15
  164. package/dist/umd/Button/DualFunctionButton.js.map +1 -1
  165. package/dist/umd/Button/Iconbutton.js +6 -2
  166. package/dist/umd/Button/Iconbutton.js.map +1 -1
  167. package/dist/umd/Button/index.js +4 -10
  168. package/dist/umd/Button/index.js.map +1 -1
  169. package/dist/umd/Chips/ChoiceChips.js +1 -2
  170. package/dist/umd/Chips/ChoiceChips.js.map +1 -1
  171. package/dist/umd/Dropdown/BasicDropdown.js +11 -3
  172. package/dist/umd/Dropdown/BasicDropdown.js.map +1 -1
  173. package/dist/umd/Dropdown/CommonStyling.js +18 -14
  174. package/dist/umd/Dropdown/CommonStyling.js.map +1 -1
  175. package/dist/umd/Dropdown/DropdownButton.js +20 -8
  176. package/dist/umd/Dropdown/DropdownButton.js.map +1 -1
  177. package/dist/umd/Dropdown/DropdownContent.js +119 -34
  178. package/dist/umd/Dropdown/DropdownContent.js.map +1 -1
  179. package/dist/umd/GlobalNavigationBar/RightSideNav.js +4 -0
  180. package/dist/umd/GlobalNavigationBar/RightSideNav.js.map +1 -1
  181. package/dist/umd/List/ListRow.js +218 -92
  182. package/dist/umd/List/ListRow.js.map +1 -1
  183. package/dist/umd/List/__tests__/ListRow.tests.js +9 -46
  184. package/dist/umd/List/__tests__/ListRow.tests.js.map +1 -1
  185. package/dist/umd/List/index.js +5 -8
  186. package/dist/umd/List/index.js.map +1 -1
  187. package/dist/umd/Modals/ModalContainer.js +1 -0
  188. package/dist/umd/Modals/ModalContainer.js.map +1 -1
  189. package/dist/umd/Modals/ModalDialog.js +15 -7
  190. package/dist/umd/Modals/ModalDialog.js.map +1 -1
  191. package/dist/umd/Modals/ModalNote.js +133 -0
  192. package/dist/umd/Modals/ModalNote.js.map +1 -0
  193. package/dist/umd/Modals/ModalStyles.js +54 -5
  194. package/dist/umd/Modals/ModalStyles.js.map +1 -1
  195. package/dist/umd/NotificationDot/NotificationDot.js +119 -0
  196. package/dist/umd/NotificationDot/NotificationDot.js.map +1 -0
  197. package/dist/umd/NotificationDot/index.js +32 -0
  198. package/dist/umd/NotificationDot/index.js.map +1 -0
  199. package/dist/umd/Tabs/TabLink.js +28 -24
  200. package/dist/umd/Tabs/TabLink.js.map +1 -1
  201. package/dist/umd/Tabs/VerticalTabs.js +4 -1
  202. package/dist/umd/Tabs/VerticalTabs.js.map +1 -1
  203. package/dist/umd/Toggles/ToggleSwitch.js +16 -12
  204. package/dist/umd/Toggles/ToggleSwitch.js.map +1 -1
  205. package/dist/umd/Toggles/TogglerStyles.js +100 -73
  206. package/dist/umd/Toggles/TogglerStyles.js.map +1 -1
  207. package/dist/umd/Toggles/TogglerTypes.js +0 -5
  208. package/dist/umd/Toggles/TogglerTypes.js.map +1 -1
  209. package/dist/umd/Tooltips/TooltipStyles.js +101 -0
  210. package/dist/umd/Tooltips/TooltipStyles.js.map +1 -0
  211. package/dist/umd/Tooltips/TooltipTypes.js +25 -0
  212. package/dist/umd/Tooltips/TooltipTypes.js.map +1 -0
  213. package/dist/umd/Tooltips/TooltipWrapper.js +92 -0
  214. package/dist/umd/Tooltips/TooltipWrapper.js.map +1 -0
  215. package/dist/umd/Tooltips/index.js +33 -0
  216. package/dist/umd/Tooltips/index.js.map +1 -0
  217. package/dist/umd/icons/contenticons/ContentIcons.js +604 -471
  218. package/dist/umd/icons/contenticons/ContentIcons.js.map +1 -1
  219. package/dist/umd/icons/index.js +62 -29
  220. package/dist/umd/icons/index.js.map +1 -1
  221. package/dist/umd/icons/systemicons/SystemIcons.js +652 -488
  222. package/dist/umd/icons/systemicons/SystemIcons.js.map +1 -1
  223. package/dist/umd/index.js +13 -4
  224. package/dist/umd/index.js.map +1 -1
  225. package/dist/umd/types.js +1 -0
  226. package/dist/umd/types.js.map +1 -1
  227. package/package.json +1 -1
  228. package/dist/esm/Button/Anchor.js +0 -76
  229. package/dist/esm/Button/Anchor.js.map +0 -1
  230. package/dist/esm/List/ListRowDropdown.js +0 -105
  231. package/dist/esm/List/ListRowDropdown.js.map +0 -1
  232. package/dist/js/Button/Anchor.d.ts +0 -7
  233. package/dist/js/Button/Anchor.js +0 -66
  234. package/dist/js/Button/Anchor.js.map +0 -1
  235. package/dist/js/List/ListRowDropdown.d.ts +0 -8
  236. package/dist/js/List/ListRowDropdown.js +0 -110
  237. package/dist/js/List/ListRowDropdown.js.map +0 -1
  238. package/dist/umd/Button/Anchor.js +0 -201
  239. package/dist/umd/Button/Anchor.js.map +0 -1
  240. package/dist/umd/List/ListRowDropdown.js +0 -182
  241. package/dist/umd/List/ListRowDropdown.js.map +0 -1
@@ -248,17 +248,21 @@ export const DropdownContentStyling = styled.div`
248
248
  }
249
249
  `;
250
250
  export const DropdownButton = styled.button`
251
+ ${props => DropdownButtonCSS(props.size)}
252
+ `;
253
+ export const DropdownButtonCSS = size => {
254
+ return css`
251
255
 
252
- ${props => props.size == Size.Small && ComponentSStyling(ComponentTextStyle.Regular, COLORS.neutral_600)}
253
- ${props => props.size == Size.Medium && ComponentMStyling(ComponentTextStyle.Regular, COLORS.neutral_600)}
254
- ${props => props.size == Size.Large && ComponentLStyling(ComponentTextStyle.Regular, COLORS.neutral_600)}
256
+ ${size == Size.Small && ComponentSStyling(ComponentTextStyle.Regular, COLORS.neutral_600)}
257
+ ${size == Size.Medium && ComponentMStyling(ComponentTextStyle.Regular, COLORS.neutral_600)}
258
+ ${size == Size.Large && ComponentLStyling(ComponentTextStyle.Regular, COLORS.neutral_600)}
255
259
 
256
260
  position: relative;
257
261
  text-decoration: none;
258
262
  display: flex;
259
263
  flex-direction: row;
260
264
  align-items: center;
261
- min-height: ${props => props.size == Size.Large ? '64px' : props.size == Size.Medium ? '56px' : '48px'};
265
+ min-height: ${size == Size.Large ? '64px' : size == Size.Medium ? '56px' : '48px'};
262
266
  background-color: ${COLORS.white};
263
267
  border: none;
264
268
  cursor: pointer;
@@ -266,15 +270,6 @@ export const DropdownButton = styled.button`
266
270
  width: 100%;
267
271
  text-align: left;
268
272
 
269
- div.divider {
270
- display: block;
271
- width: calc(100% - 40px);
272
- margin-left: 16px;
273
- border-top: 1px solid #e5e5e5;
274
- position: absolute;
275
- top: 0px;
276
- }
277
-
278
273
  span {
279
274
  margin: auto 0 auto 16px;
280
275
  line-height: 48px;
@@ -317,6 +312,12 @@ export const DropdownButton = styled.button`
317
312
  }
318
313
  }
319
314
 
315
+ &:disabled {
316
+ background-color: transparent;
317
+ cursor: not-allowed;
318
+ color: ${COLORS.neutral_200}
319
+ }
320
+
320
321
  &.active:hover {
321
322
  background-color: ${COLORS.primary_20};
322
323
 
@@ -341,6 +342,7 @@ export const DropdownButton = styled.button`
341
342
  }
342
343
  }
343
344
  `;
345
+ };
344
346
  export const ButtonDropdownWrapper = styled.div`
345
347
  box-sizing: border-box;
346
348
  min-height: 48px;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/Dropdown/CommonStyling.tsx"],"names":["styled","css","CommonInteractionStyling","BREAKPOINTS","COLORS","ComponentTextStyle","ComponentMStyling","ComponentLStyling","ComponentSStyling","ComponentXSStyling","ComponentXXSStyling","Size","Dropdown","div","props","isButton","locked","disabled","margin","primary_600","primary_800","lockedState","neutral_100","neutral_300","neutral_600","disabledState","white","activeValidationMessage","warning_400","placeholderStyling","Italic","InputField","input","Regular","black","MEDIUM","StyledField","neutral_400","primary_200","primary_300","Bold","neutral_800","neutral_20","showValidationMessage","isPlaceholder","ButtonDropdownContentStyling","DropdownContentStyling","neutral_200","DropdownButton","button","size","Small","Medium","Large","primary_500","primary_20","primary_100","ButtonDropdownWrapper","primary_700"],"mappings":"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AC4B,OAApB,EAA6B7B,MAAM,CAACoB,WAApC,CAAiD;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgBV,KAAK,IAAIA,KAAK,CAACoC,IAAN,IAAcvC,IAAI,CAAC0C,KAAnB,GAA2B,MAA3B,GAAoCvC,KAAK,CAACoC,IAAN,IAAcvC,IAAI,CAACyC,MAAnB,GAA4B,MAA5B,GAAqC,MAAO;AACzG,sBAAsBhD,MAAM,CAACsB,KAAM;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAIxB,wBAAyB;AAC7B;AACA;AACA,kBAAkBE,MAAM,CAACsC,UAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0BtC,MAAM,CAACkD,WAAY;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwBlD,MAAM,CAACmD,UAAW;AAC1C;AACA;AACA,eAAenD,MAAM,CAACe,WAAY;AAClC;AACA;AACA;AACA,0BAA0Bf,MAAM,CAACkD,WAAY;AAC7C;AACA;AACA;AACA;AACA,wBAAwBlD,MAAM,CAACoD,WAAY;AAC3C;AACA;AACA,eAAepD,MAAM,CAACgB,WAAY;AAClC;AACA;AACA;AACA,0BAA0BhB,MAAM,CAACkD,WAAY;AAC7C;AACA;AACA,CA7FO;AA+FP,OAAO,MAAMG,qBAAqB,GAAGzD,MAAM,CAACa,GAA8C;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAKC,KAAD,IAAYA,KAAK,CAACE,MAAN,IAAgBF,KAAK,CAACG,QAAtB,GAAiC,sBAAjC,GAA0D,kBAAoB;AAC9F,IAAKH,KAAD,IAAYA,KAAK,CAACG,QAAN,GAAiB,uBAAjB,GAA2C,EAAI;AAC/D;AACA;AACA;AACA,wBAAwBb,MAAM,CAACmD,UAAW;AAC1C,aAAanD,MAAM,CAACsD,WAAY;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwBtD,MAAM,CAACoD,WAAY;AAC3C,aAAapD,MAAM,CAACgB,WAAY;AAChC;AACA;AACA,EA5CO","sourcesContent":["import styled, {css} from 'styled-components';\nimport {CommonInteractionStyling} from '../common';\nimport {BREAKPOINTS, COLORS, ComponentTextStyle} from '../styles';\nimport {ComponentMStyling, ComponentLStyling, ComponentSStyling, ComponentXSStyling, ComponentXXSStyling} from '../styles/typography';\nimport { Size } from '../types';\n\nexport const Dropdown = styled.div<{ isButton: boolean; locked?: boolean; disabled?: boolean; margin?: string }>`\n position: relative;\n display: inline-block;\n ${(props) => !props.isButton && 'width: 100%; min-width: 344px;'}\n ${(props) => (props.locked || props.disabled ? 'cursor: not-allowed;' : '')}\n ${(props) => (props.margin ? `margin: ${props.margin};` : '')}\n\n .show {\n display: block;\n }\n\n .value {\n flex-grow: 1;\n }\n\n input:hover + div {\n color: ${COLORS.primary_600};\n }\n\n input:active + div {\n color: ${COLORS.primary_800};\n }\n`;\n\nconst lockedState = css`\n background-color: ${COLORS.neutral_100};\n box-shadow: inset 0px 0px 0px 1px ${COLORS.neutral_300};\n color: ${COLORS.neutral_600};\n pointer-events: none;\n cursor: not-allowed;\n input {\n color: ${COLORS.neutral_600} !important;\n }\n`;\n\nconst disabledState = css`\n background-color: ${COLORS.white};\n box-shadow: inset 0px 0px 0px 1px ${COLORS.neutral_100};\n color: ${COLORS.neutral_300};\n pointer-events: none;\n cursor: not-allowed;\n svg {\n color: ${COLORS.neutral_300} !important;\n }\n input {\n color: ${COLORS.neutral_300} !important;\n ::placeholder {\n color: ${COLORS.neutral_300} !important;\n }\n }\n`;\n\nconst activeValidationMessage = css`\n -webkit-box-shadow: inset 0px 0px 0px 2px ${COLORS.warning_400};\n -moz-box-shadow: inset 0px 0px 0px 2px ${COLORS.warning_400};\n box-shadow: inset 0px 0px 0px 2px ${COLORS.warning_400};\n`;\n\nconst placeholderStyling = css`\n ${ComponentMStyling(ComponentTextStyle.Italic, COLORS.neutral_600)}\n`;\n\nexport const InputField = styled.input`\n ${ComponentMStyling(ComponentTextStyle.Regular, COLORS.black)}\n border: none;\n outline: none;\n background-color: inherit;\n cursor: pointer;\n color: ${COLORS.black} !important;\n padding: 0;\n ::-webkit-search-decoration,\n ::-webkit-search-cancel-button,\n ::-webkit-search-results-button,\n ::-webkit-search-results-decoration {\n -webkit-appearance: none;\n }\n ::placeholder {\n ${ComponentSStyling(ComponentTextStyle.Italic, COLORS.neutral_600)}\n\n ${BREAKPOINTS.MEDIUM} {\n ${ComponentMStyling(ComponentTextStyle.Italic, COLORS.neutral_600)}\n }\n &.small {\n ${ComponentSStyling(ComponentTextStyle.Italic, COLORS.neutral_600)}\n }\n &.medium {\n ${ComponentMStyling(ComponentTextStyle.Italic, COLORS.neutral_600)}\n }\n }\n`;\n\nexport const StyledField = styled.div<{ disabled: boolean; locked: boolean; showValidationMessage?: boolean; isPlaceholder?: boolean; fontSize?: string }>`\n ${ComponentSStyling(ComponentTextStyle.Regular, 'inherit')}\n\n padding: 12px 16px;\n height: 48px;\n min-width: 344px;\n width: 100%;\n\n background: ${COLORS.white};\n box-shadow: inset 0px 0px 0px 1px ${COLORS.neutral_400};\n box-sizing: border-box;\n border-radius: 4px;\n cursor: pointer;\n\n display: flex;\n align-items: center;\n gap: 4px;\n \n input{\n font-size: inherit;\n line-height: inherit;\n color: inherit;\n }\n\n &::placeholder {\n ${ComponentXXSStyling(ComponentTextStyle.Italic, COLORS.neutral_600)}\n }\n\n ${BREAKPOINTS.MEDIUM} {\n ${ComponentMStyling(ComponentTextStyle.Regular, 'inherit')}\n padding: 16px;\n height: 56px;\n &::placeholder {\n ${ComponentXSStyling(ComponentTextStyle.Italic, COLORS.neutral_600)}\n }\n }\n\n &.small {\n ${ComponentSStyling(ComponentTextStyle.Regular, 'inherit')}\n padding: 12px 16px;\n height: 48px;\n &::placeholder {\n ${ComponentXXSStyling(ComponentTextStyle.Italic, COLORS.neutral_600)}\n }\n }\n &.medium {\n ${ComponentMStyling(ComponentTextStyle.Regular, 'inherit')}\n height: 56px;\n padding: 16px;\n &::placeholder {\n ${ComponentXSStyling(ComponentTextStyle.Italic, COLORS.neutral_600)}\n }\n }\n\n &:focus {\n outline: 3px solid #ddd;\n }\n &:focus-within {\n -webkit-box-shadow: inset 0px 0px 0px 2px ${COLORS.primary_800};\n -moz-box-shadow: inset 0px 0px 0px 2px ${COLORS.primary_800};\n box-shadow: inset 0px 0px 0px 2px ${COLORS.primary_800};\n }\n &:hover {\n box-shadow: inset 0px 0px 0px 1px ${COLORS.primary_200};\n input {\n ::placeholder {\n color: ${COLORS.primary_600};\n }\n }\n cursor: pointer;\n }\n &:active {\n box-shadow: inset 0px 0px 0px 1px ${COLORS.primary_300};\n input {\n ::placeholder {\n color: ${COLORS.primary_800};\n }\n }\n }\n\n &.button {\n ${(props) => ComponentSStyling(ComponentTextStyle.Bold, props.disabled ? COLORS.neutral_300 : COLORS.neutral_600)}\n\n box-sizing: border-box;\n height: 32px;\n padding: 0 8px;\n width: initial;\n min-width: initial;\n border: none !important;\n box-shadow: none;\n border-radius: 4px;\n\n &.expanded {\n color: ${COLORS.neutral_800};\n background: ${COLORS.neutral_20};\n }\n }\n\n ${(props) => (props.disabled ? disabledState : '')}\n ${(props) => (props.locked ? lockedState : '')}\n ${(props) => (props.showValidationMessage ? activeValidationMessage : '')}\n ${(props) => (props.isPlaceholder ? placeholderStyling : '')}\n\n ${CommonInteractionStyling};\n`;\n\nexport const ButtonDropdownContentStyling = css`\n min-width: 344px;\n right: 0;\n`;\n\nexport const DropdownContentStyling = styled.div<{ isButton: boolean }>`\n display: none;\n position: absolute;\n background-color: ${COLORS.white};\n width: 100%;\n z-index: 1;\n margin-top: ${(props) => (props.isButton ? '-4px' : '2px')};\n\n &.show {\n display: block;\n }\n\n &.up {\n top: auto;\n bottom: 100%;\n }\n\n ${(props) => (props.isButton ? ButtonDropdownContentStyling : '')};\n\n border: 1px solid ${COLORS.neutral_100};\n box-sizing: border-box;\n box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n padding: 4px 0;\n\n max-height: 240px;\n overflow-y: auto;\n\n /* width */\n ::-webkit-scrollbar {\n width: 4px;\n cursor: pointer;\n }\n\n /* Track */\n ::-webkit-scrollbar-track {\n background: ${COLORS.white};\n }\n\n /* Handle */\n ::-webkit-scrollbar-thumb {\n background: ${COLORS.neutral_200};\n border-radius: 8px;\n }\n\n /* Handle on hover */\n ::-webkit-scrollbar-thumb:hover {\n background: ${COLORS.neutral_400};\n }\n`;\n\nexport const DropdownButton = styled.button<{ size?: Size }>`\n\n ${props => props.size == Size.Small && ComponentSStyling(ComponentTextStyle.Regular, COLORS.neutral_600)}\n ${props => props.size == Size.Medium && ComponentMStyling(ComponentTextStyle.Regular, COLORS.neutral_600)}\n ${props => props.size == Size.Large && ComponentLStyling(ComponentTextStyle.Regular, COLORS.neutral_600)}\n\n position: relative;\n text-decoration: none;\n display: flex;\n flex-direction: row;\n align-items: center;\n min-height: ${props => props.size == Size.Large ? '64px' : props.size == Size.Medium ? '56px' : '48px'};\n background-color: ${COLORS.white};\n border: none;\n cursor: pointer;\n background: transparent;\n width: 100%;\n text-align: left;\n\n div.divider {\n display: block;\n width: calc(100% - 40px);\n margin-left: 16px;\n border-top: 1px solid #e5e5e5;\n position: absolute;\n top: 0px;\n }\n\n span {\n margin: auto 0 auto 16px;\n line-height: 48px;\n }\n\n div.item-content {\n margin: auto 0 auto 16px;\n display: flex;\n align-items: center;\n\n div.item-label {\n flex: 1 0 calc(100% - 40px);\n }\n\n div.item-icon {\n margin-right: 6px;\n }\n div.item-icon-old {\n flex: 1 0 40px;\n display: flex;\n justify-content: flex-end;\n }\n }\n\n ${CommonInteractionStyling};\n\n &.active {\n background: ${COLORS.neutral_20};\n\n &::after {\n position: absolute;\n content: ' ';\n width: 4px;\n top: 0;\n bottom: 0;\n left: 2px;\n background-color: ${COLORS.primary_500};\n\n border-radius: 2px;\n }\n }\n\n &.active:hover {\n background-color: ${COLORS.primary_20};\n\n svg {\n color: ${COLORS.primary_600};\n }\n\n &::after {\n background-color: ${COLORS.primary_500};\n }\n }\n\n &.active:active {\n background-color: ${COLORS.primary_100};\n\n svg {\n color: ${COLORS.primary_800};\n }\n\n &::after {\n background-color: ${COLORS.primary_500};\n }\n }\n`;\n\nexport const ButtonDropdownWrapper = styled.div<{ locked?: boolean; disabled?: boolean }>`\n box-sizing: border-box;\n min-height: 48px;\n display: flex;\n align-items: center;\n width: fit-content;\n\n .button {\n min-width: 64px;\n }\n\n .value {\n flex-grow: 1;\n display: flex;\n justify-content: center;\n }\n\n .dropdown-arrow {\n width: 24px;\n height: 24px;\n }\n\n ${(props) => (props.locked || props.disabled ? 'cursor: not-allowed;' : 'cursor: pointer;')}\n ${(props) => (props.disabled ? 'pointer-events: none;' : '')}\n \n &:hover .button,\n & > .button:hover {\n background-color: ${COLORS.primary_20};\n color: ${COLORS.primary_700};\n }\n\n &:focus .button,\n & > .button:focus {\n box-shadow: 0 4px 12px rgba(46, 127, 161, 0.25), 0 0 8px #2e7fa1;\n outline: none;\n }\n\n &:active .button,\n & > .button:active {\n box-shadow: none;\n background-color: ${COLORS.primary_100};\n color: ${COLORS.primary_800};\n }\n\n}`;\n"],"file":"CommonStyling.js"}
1
+ {"version":3,"sources":["../../../src/Dropdown/CommonStyling.tsx"],"names":["styled","css","CommonInteractionStyling","BREAKPOINTS","COLORS","ComponentTextStyle","ComponentMStyling","ComponentLStyling","ComponentSStyling","ComponentXSStyling","ComponentXXSStyling","Size","Dropdown","div","props","isButton","locked","disabled","margin","primary_600","primary_800","lockedState","neutral_100","neutral_300","neutral_600","disabledState","white","activeValidationMessage","warning_400","placeholderStyling","Italic","InputField","input","Regular","black","MEDIUM","StyledField","neutral_400","primary_200","primary_300","Bold","neutral_800","neutral_20","showValidationMessage","isPlaceholder","ButtonDropdownContentStyling","DropdownContentStyling","neutral_200","DropdownButton","button","DropdownButtonCSS","size","Small","Medium","Large","primary_500","primary_20","primary_100","ButtonDropdownWrapper","primary_700"],"mappings":"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IAAI,IAAIxC,IAAI,CAAC2C,KAAb,IAAsB/C,iBAAiB,CAACF,kBAAkB,CAAC4B,OAApB,EAA6B7B,MAAM,CAACoB,WAApC,CAAiD;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB2B,IAAI,IAAIxC,IAAI,CAAC2C,KAAb,GAAqB,MAArB,GAA8BH,IAAI,IAAIxC,IAAI,CAAC0C,MAAb,GAAsB,MAAtB,GAA+B,MAAO;AACpF,sBAAsBjD,MAAM,CAACsB,KAAM;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAIxB,wBAAyB;AAC7B;AACA;AACA,kBAAkBE,MAAM,CAACsC,UAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0BtC,MAAM,CAACmD,WAAY;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAanD,MAAM,CAAC2C,WAAY;AAChC;AACA;AACA;AACA,wBAAwB3C,MAAM,CAACoD,UAAW;AAC1C;AACA;AACA,eAAepD,MAAM,CAACe,WAAY;AAClC;AACA;AACA;AACA,0BAA0Bf,MAAM,CAACmD,WAAY;AAC7C;AACA;AACA;AACA;AACA,wBAAwBnD,MAAM,CAACqD,WAAY;AAC3C;AACA;AACA,eAAerD,MAAM,CAACgB,WAAY;AAClC;AACA;AACA;AACA,0BAA0BhB,MAAM,CAACmD,WAAY;AAC7C;AACA;AACA,CA1FE;AA2FD,CA5FM;AA8FP,OAAO,MAAMG,qBAAqB,GAAG1D,MAAM,CAACa,GAA8C;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAKC,KAAD,IAAYA,KAAK,CAACE,MAAN,IAAgBF,KAAK,CAACG,QAAtB,GAAiC,sBAAjC,GAA0D,kBAAoB;AAC9F,IAAKH,KAAD,IAAYA,KAAK,CAACG,QAAN,GAAiB,uBAAjB,GAA2C,EAAI;AAC/D;AACA;AACA;AACA,wBAAwBb,MAAM,CAACoD,UAAW;AAC1C,aAAapD,MAAM,CAACuD,WAAY;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwBvD,MAAM,CAACqD,WAAY;AAC3C,aAAarD,MAAM,CAACgB,WAAY;AAChC;AACA;AACA,EA5CO","sourcesContent":["import styled, {css} from 'styled-components';\nimport {CommonInteractionStyling} from '../common';\nimport {BREAKPOINTS, COLORS, ComponentTextStyle} from '../styles';\nimport {ComponentMStyling, ComponentLStyling, ComponentSStyling, ComponentXSStyling, ComponentXXSStyling} from '../styles/typography';\nimport { Size } from '../types';\n\nexport const Dropdown = styled.div<{ isButton: boolean; locked?: boolean; disabled?: boolean; margin?: string }>`\n position: relative;\n display: inline-block;\n ${(props) => !props.isButton && 'width: 100%; min-width: 344px;'}\n ${(props) => (props.locked || props.disabled ? 'cursor: not-allowed;' : '')}\n ${(props) => (props.margin ? `margin: ${props.margin};` : '')}\n\n .show {\n display: block;\n }\n\n .value {\n flex-grow: 1;\n }\n\n input:hover + div {\n color: ${COLORS.primary_600};\n }\n\n input:active + div {\n color: ${COLORS.primary_800};\n }\n`;\n\nconst lockedState = css`\n background-color: ${COLORS.neutral_100};\n box-shadow: inset 0px 0px 0px 1px ${COLORS.neutral_300};\n color: ${COLORS.neutral_600};\n pointer-events: none;\n cursor: not-allowed;\n input {\n color: ${COLORS.neutral_600} !important;\n }\n`;\n\nconst disabledState = css`\n background-color: ${COLORS.white};\n box-shadow: inset 0px 0px 0px 1px ${COLORS.neutral_100};\n color: ${COLORS.neutral_300};\n pointer-events: none;\n cursor: not-allowed;\n svg {\n color: ${COLORS.neutral_300} !important;\n }\n input {\n color: ${COLORS.neutral_300} !important;\n ::placeholder {\n color: ${COLORS.neutral_300} !important;\n }\n }\n`;\n\nconst activeValidationMessage = css`\n -webkit-box-shadow: inset 0px 0px 0px 2px ${COLORS.warning_400};\n -moz-box-shadow: inset 0px 0px 0px 2px ${COLORS.warning_400};\n box-shadow: inset 0px 0px 0px 2px ${COLORS.warning_400};\n`;\n\nconst placeholderStyling = css`\n ${ComponentMStyling(ComponentTextStyle.Italic, COLORS.neutral_600)}\n`;\n\nexport const InputField = styled.input`\n ${ComponentMStyling(ComponentTextStyle.Regular, COLORS.black)}\n border: none;\n outline: none;\n background-color: inherit;\n cursor: pointer;\n color: ${COLORS.black} !important;\n padding: 0;\n ::-webkit-search-decoration,\n ::-webkit-search-cancel-button,\n ::-webkit-search-results-button,\n ::-webkit-search-results-decoration {\n -webkit-appearance: none;\n }\n ::placeholder {\n ${ComponentSStyling(ComponentTextStyle.Italic, COLORS.neutral_600)}\n\n ${BREAKPOINTS.MEDIUM} {\n ${ComponentMStyling(ComponentTextStyle.Italic, COLORS.neutral_600)}\n }\n &.small {\n ${ComponentSStyling(ComponentTextStyle.Italic, COLORS.neutral_600)}\n }\n &.medium {\n ${ComponentMStyling(ComponentTextStyle.Italic, COLORS.neutral_600)}\n }\n }\n`;\n\nexport const StyledField = styled.div<{ disabled: boolean; locked: boolean; showValidationMessage?: boolean; isPlaceholder?: boolean; fontSize?: string }>`\n ${ComponentSStyling(ComponentTextStyle.Regular, 'inherit')}\n\n padding: 12px 16px;\n height: 48px;\n min-width: 344px;\n width: 100%;\n\n background: ${COLORS.white};\n box-shadow: inset 0px 0px 0px 1px ${COLORS.neutral_400};\n box-sizing: border-box;\n border-radius: 4px;\n cursor: pointer;\n\n display: flex;\n align-items: center;\n gap: 4px;\n \n input{\n font-size: inherit;\n line-height: inherit;\n color: inherit;\n }\n\n &::placeholder {\n ${ComponentXXSStyling(ComponentTextStyle.Italic, COLORS.neutral_600)}\n }\n\n ${BREAKPOINTS.MEDIUM} {\n ${ComponentMStyling(ComponentTextStyle.Regular, 'inherit')}\n padding: 16px;\n height: 56px;\n &::placeholder {\n ${ComponentXSStyling(ComponentTextStyle.Italic, COLORS.neutral_600)}\n }\n }\n\n &.small {\n ${ComponentSStyling(ComponentTextStyle.Regular, 'inherit')}\n padding: 12px 16px;\n height: 48px;\n &::placeholder {\n ${ComponentXXSStyling(ComponentTextStyle.Italic, COLORS.neutral_600)}\n }\n }\n &.medium {\n ${ComponentMStyling(ComponentTextStyle.Regular, 'inherit')}\n height: 56px;\n padding: 16px;\n &::placeholder {\n ${ComponentXSStyling(ComponentTextStyle.Italic, COLORS.neutral_600)}\n }\n }\n\n &:focus {\n outline: 3px solid #ddd;\n }\n &:focus-within {\n -webkit-box-shadow: inset 0px 0px 0px 2px ${COLORS.primary_800};\n -moz-box-shadow: inset 0px 0px 0px 2px ${COLORS.primary_800};\n box-shadow: inset 0px 0px 0px 2px ${COLORS.primary_800};\n }\n &:hover {\n box-shadow: inset 0px 0px 0px 1px ${COLORS.primary_200};\n input {\n ::placeholder {\n color: ${COLORS.primary_600};\n }\n }\n cursor: pointer;\n }\n &:active {\n box-shadow: inset 0px 0px 0px 1px ${COLORS.primary_300};\n input {\n ::placeholder {\n color: ${COLORS.primary_800};\n }\n }\n }\n\n &.button {\n ${(props) => ComponentSStyling(ComponentTextStyle.Bold, props.disabled ? COLORS.neutral_300 : COLORS.neutral_600)}\n\n box-sizing: border-box;\n height: 32px;\n padding: 0 8px;\n width: initial;\n min-width: initial;\n border: none !important;\n box-shadow: none;\n border-radius: 4px;\n\n &.expanded {\n color: ${COLORS.neutral_800};\n background: ${COLORS.neutral_20};\n }\n }\n\n ${(props) => (props.disabled ? disabledState : '')}\n ${(props) => (props.locked ? lockedState : '')}\n ${(props) => (props.showValidationMessage ? activeValidationMessage : '')}\n ${(props) => (props.isPlaceholder ? placeholderStyling : '')}\n\n ${CommonInteractionStyling};\n`;\n\nexport const ButtonDropdownContentStyling = css`\n min-width: 344px;\n right: 0;\n`;\n\nexport const DropdownContentStyling = styled.div<{ isButton: boolean }>`\n display: none;\n position: absolute;\n background-color: ${COLORS.white};\n width: 100%;\n z-index: 1;\n margin-top: ${(props) => (props.isButton ? '-4px' : '2px')};\n\n &.show {\n display: block;\n }\n\n &.up {\n top: auto;\n bottom: 100%;\n }\n\n ${(props) => (props.isButton ? ButtonDropdownContentStyling : '')};\n\n border: 1px solid ${COLORS.neutral_100};\n box-sizing: border-box;\n box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n padding: 4px 0;\n\n max-height: 240px;\n overflow-y: auto;\n\n /* width */\n ::-webkit-scrollbar {\n width: 4px;\n cursor: pointer;\n }\n\n /* Track */\n ::-webkit-scrollbar-track {\n background: ${COLORS.white};\n }\n\n /* Handle */\n ::-webkit-scrollbar-thumb {\n background: ${COLORS.neutral_200};\n border-radius: 8px;\n }\n\n /* Handle on hover */\n ::-webkit-scrollbar-thumb:hover {\n background: ${COLORS.neutral_400};\n }\n`;\n\nexport const DropdownButton = styled.button<{size? : Size}>`\n ${props => DropdownButtonCSS(props.size)}\n`;\n\nexport const DropdownButtonCSS = (size? : Size) => {\n return css`\n\n ${size == Size.Small && ComponentSStyling(ComponentTextStyle.Regular, COLORS.neutral_600)}\n ${size == Size.Medium && ComponentMStyling(ComponentTextStyle.Regular, COLORS.neutral_600)}\n ${size == Size.Large && ComponentLStyling(ComponentTextStyle.Regular, COLORS.neutral_600)}\n\n position: relative;\n text-decoration: none;\n display: flex;\n flex-direction: row;\n align-items: center;\n min-height: ${size == Size.Large ? '64px' : size == Size.Medium ? '56px' : '48px'};\n background-color: ${COLORS.white};\n border: none;\n cursor: pointer;\n background: transparent;\n width: 100%;\n text-align: left;\n\n span {\n margin: auto 0 auto 16px;\n line-height: 48px;\n }\n\n div.item-content {\n margin: auto 0 auto 16px;\n display: flex;\n align-items: center;\n\n div.item-label {\n flex: 1 0 calc(100% - 40px);\n }\n\n div.item-icon {\n margin-right: 6px;\n }\n div.item-icon-old {\n flex: 1 0 40px;\n display: flex;\n justify-content: flex-end;\n }\n }\n\n ${CommonInteractionStyling};\n\n &.active {\n background: ${COLORS.neutral_20};\n\n &::after {\n position: absolute;\n content: ' ';\n width: 4px;\n top: 0;\n bottom: 0;\n left: 2px;\n background-color: ${COLORS.primary_500};\n\n border-radius: 2px;\n }\n }\n\n &:disabled {\n background-color: transparent;\n cursor: not-allowed;\n color: ${COLORS.neutral_200}\n }\n\n &.active:hover {\n background-color: ${COLORS.primary_20};\n\n svg {\n color: ${COLORS.primary_600};\n }\n\n &::after {\n background-color: ${COLORS.primary_500};\n }\n }\n\n &.active:active {\n background-color: ${COLORS.primary_100};\n\n svg {\n color: ${COLORS.primary_800};\n }\n\n &::after {\n background-color: ${COLORS.primary_500};\n }\n }\n`;\n};\n\nexport const ButtonDropdownWrapper = styled.div<{ locked?: boolean; disabled?: boolean }>`\n box-sizing: border-box;\n min-height: 48px;\n display: flex;\n align-items: center;\n width: fit-content;\n\n .button {\n min-width: 64px;\n }\n\n .value {\n flex-grow: 1;\n display: flex;\n justify-content: center;\n }\n\n .dropdown-arrow {\n width: 24px;\n height: 24px;\n }\n\n ${(props) => (props.locked || props.disabled ? 'cursor: not-allowed;' : 'cursor: pointer;')}\n ${(props) => (props.disabled ? 'pointer-events: none;' : '')}\n \n &:hover .button,\n & > .button:hover {\n background-color: ${COLORS.primary_20};\n color: ${COLORS.primary_700};\n }\n\n &:focus .button,\n & > .button:focus {\n box-shadow: 0 4px 12px rgba(46, 127, 161, 0.25), 0 0 8px #2e7fa1;\n outline: none;\n }\n\n &:active .button,\n & > .button:active {\n box-shadow: none;\n background-color: ${COLORS.primary_100};\n color: ${COLORS.primary_800};\n }\n\n}`;\n"],"file":"CommonStyling.js"}
@@ -26,6 +26,7 @@ const DropdownButton = ({
26
26
  itemsType = 'normal',
27
27
  action,
28
28
  actionLabel = '',
29
+ actionVariant,
29
30
  width,
30
31
  size,
31
32
  alignLeft,
@@ -45,20 +46,23 @@ const DropdownButton = ({
45
46
  onClick(values);
46
47
  };
47
48
 
48
- const handleKeyPress = e => {
49
+ const handleKeyDown = e => {
49
50
  if (buttonRef?.current && buttonRef.current.contains(e.target)) {
50
- if (e.keyCode === 13) {
51
- setDropdownOpen(!dropdownOpen);
52
- } else if (e.keyCode === 40) {
53
- setDropdownOpen(!dropdownOpen);
51
+ if (e.keyCode === 13 || e.keyCode === 40 || e.keyCode === 32) {
52
+ if (!dropdownOpen) setFocused(0);
53
+
54
+ if (e.keyCode != 40) {
55
+ e.preventDefault();
56
+ buttonRef?.current.click();
57
+ }
54
58
  }
55
59
  }
56
60
  };
57
61
 
58
62
  React.useEffect(() => {
59
- document.addEventListener('keypress', handleKeyPress);
63
+ document.addEventListener('keydown', handleKeyDown);
60
64
  return () => {
61
- document.removeEventListener('keypress', handleKeyPress);
65
+ document.removeEventListener('keydown', handleKeyDown);
62
66
  };
63
67
  });
64
68
  /**
@@ -71,7 +75,14 @@ const DropdownButton = ({
71
75
  ref: buttonRef,
72
76
  variant: "secondary",
73
77
  shape: "circular",
74
- action: () => setDropdownOpen(!dropdownOpen),
78
+ action: event => {
79
+ if (!event) {
80
+ //if no event details passed, then this means that user pressed 'enter'
81
+ if (!dropdownOpen) setFocused(0);
82
+ }
83
+
84
+ setDropdownOpen(!dropdownOpen);
85
+ },
75
86
  disabled: disabled
76
87
  }, icon);
77
88
  };
@@ -81,6 +92,7 @@ const DropdownButton = ({
81
92
  itemsType: itemsType,
82
93
  action: action ?? (() => {}),
83
94
  actionLabel: actionLabel,
95
+ actionVariant: actionVariant,
84
96
  onValueUpdate: handleValueSelect,
85
97
  multiSelect: multiSelect,
86
98
  scrollable: scrollable,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/Dropdown/DropdownButton.tsx"],"names":["React","IconButton","DropdownContent","styled","Wrapper","div","DropdownButton","items","icon","disabled","onClick","itemsType","action","actionLabel","width","size","alignLeft","multiSelect","scrollable","pinTopItem","maxHeight","dropdownOpen","setDropdownOpen","useState","selectedValues","setSelectedValues","focused","setFocused","buttonRef","useRef","handleValueSelect","values","handleKeyPress","e","current","contains","target","keyCode","useEffect","document","addEventListener","removeEventListener","renderIconButton","onValueUpdate"],"mappings":"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","sourcesContent":["/**\n * Import React libraries.\n */\nimport * as React from 'react';\n\n/**\n * Import custom components.\n */\nimport { IconButton } from '../Button';\nimport DropdownContent from './DropdownContent';\nimport styled from 'styled-components';\n\n/**\n * Import custom types.\n */\nimport { DropdownButtonProps } from './DropdownButtonTypes';\n\nconst Wrapper = styled.div`\n position: relative;\n display: inline-block;\n`;\n\nconst DropdownButton = ({ \n items, \n icon, \n disabled,\n onClick,\n itemsType = 'normal',\n action,\n actionLabel = '',\n width,\n size,\n alignLeft,\n multiSelect = false,\n scrollable = false,\n pinTopItem = false,\n maxHeight }: DropdownButtonProps) => {\n // Globally used variables within the view.\n const [dropdownOpen, setDropdownOpen] = React.useState<boolean>(false);\n const [selectedValues, setSelectedValues] = React.useState<string[]>([]);\n const [focused, setFocused] = React.useState<number | null>(null);\n const buttonRef = React.useRef<HTMLButtonElement>(null);\n\n const handleValueSelect = (values: string[]) => {\n // Do all required actions\n onClick(values);\n };\n\n \n const handleKeyPress = (e: any) => {\n if (buttonRef?.current && buttonRef.current.contains(e.target)) {\n if (e.keyCode === 13) {\n setDropdownOpen(!dropdownOpen);\n \n } else if (e.keyCode === 40) {\n setDropdownOpen(!dropdownOpen);\n }\n }\n };\n\n React.useEffect(() => {\n document.addEventListener('keypress', handleKeyPress);\n return () => {\n document.removeEventListener('keypress', handleKeyPress);\n };\n });\n\n /**\n * Renders Icon Button dropdown menu.\n * @returns HTML View for the Icon button dropdown menu.\n */\n const renderIconButton = () => {\n return (\n <IconButton ref={buttonRef} variant=\"secondary\" shape=\"circular\" action={() => setDropdownOpen(!dropdownOpen)} disabled={disabled}>\n {icon}\n </IconButton>\n );\n };\n\n return (\n <Wrapper>\n {renderIconButton()}\n <DropdownContent\n customizationProps={{\n itemsType: itemsType,\n action: action ?? (() => {}),\n actionLabel: actionLabel,\n onValueUpdate: handleValueSelect,\n multiSelect: multiSelect,\n scrollable: scrollable,\n pinTopItem: pinTopItem,\n maxHeight: maxHeight,\n items: items\n }}\n focused={focused}\n setFocused={setFocused}\n size={size}\n width={width}\n alignLeft={alignLeft}\n isOpen={dropdownOpen}\n setIsOpen={setDropdownOpen}\n hideOnClickOutside={true}\n filter=''\n selectedValues={itemsType == 'normal' ? [] : selectedValues}\n setSelectedValues={setSelectedValues}\n messageOnNoResults='No results'\n isButton={true}\n id='dropdown-content'\n />\n </Wrapper>\n );\n};\n\nexport default DropdownButton;\n"],"file":"DropdownButton.js"}
1
+ {"version":3,"sources":["../../../src/Dropdown/DropdownButton.tsx"],"names":["React","IconButton","DropdownContent","styled","Wrapper","div","DropdownButton","items","icon","disabled","onClick","itemsType","action","actionLabel","actionVariant","width","size","alignLeft","multiSelect","scrollable","pinTopItem","maxHeight","dropdownOpen","setDropdownOpen","useState","selectedValues","setSelectedValues","focused","setFocused","buttonRef","useRef","handleValueSelect","values","handleKeyDown","e","current","contains","target","keyCode","preventDefault","click","useEffect","document","addEventListener","removeEventListener","renderIconButton","event","onValueUpdate"],"mappings":"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","sourcesContent":["/**\n * Import React libraries.\n */\nimport * as React from 'react';\n\n/**\n * Import custom components.\n */\nimport { IconButton } from '../Button';\nimport DropdownContent from './DropdownContent';\nimport styled from 'styled-components';\n\n/**\n * Import custom types.\n */\nimport { DropdownButtonProps } from './DropdownButtonTypes';\n\nconst Wrapper = styled.div`\n position: relative;\n display: inline-block;\n`;\n\nconst DropdownButton = ({ \n items, \n icon, \n disabled,\n onClick,\n itemsType = 'normal',\n action,\n actionLabel = '',\n actionVariant,\n width,\n size,\n alignLeft,\n multiSelect = false,\n scrollable = false,\n pinTopItem = false,\n maxHeight }: DropdownButtonProps) => {\n // Globally used variables within the view.\n const [dropdownOpen, setDropdownOpen] = React.useState<boolean>(false);\n const [selectedValues, setSelectedValues] = React.useState<string[]>([]);\n const [focused, setFocused] = React.useState<number | null>(null);\n const buttonRef = React.useRef<HTMLButtonElement>(null);\n\n const handleValueSelect = (values: string[]) => {\n // Do all required actions\n onClick(values);\n };\n\n \n const handleKeyDown = (e: any) => {\n if (buttonRef?.current && buttonRef.current.contains(e.target)) {\n if (e.keyCode === 13 || e.keyCode === 40 || e.keyCode === 32) {\n if(!dropdownOpen)\n setFocused(0);\n \n if(e.keyCode != 40)\n {\n e.preventDefault();\n buttonRef?.current.click();\n }\n }\n }\n };\n\n React.useEffect(() => {\n document.addEventListener('keydown', handleKeyDown);\n return () => {\n document.removeEventListener('keydown', handleKeyDown); \n };\n });\n\n /**\n * Renders Icon Button dropdown menu.\n * @returns HTML View for the Icon button dropdown menu.\n */\n const renderIconButton = () => {\n return (\n <IconButton ref={buttonRef} variant=\"secondary\" shape=\"circular\" action={(event: any) => \n {\n if(!event) { //if no event details passed, then this means that user pressed 'enter'\n if(!dropdownOpen)\n setFocused(0);\n }\n setDropdownOpen(!dropdownOpen);\n }} disabled={disabled}>\n {icon}\n </IconButton>\n );\n };\n\n return (\n <Wrapper>\n {renderIconButton()}\n <DropdownContent\n customizationProps={{\n itemsType: itemsType,\n action: action ?? (() => {}),\n actionLabel: actionLabel,\n actionVariant: actionVariant,\n onValueUpdate: handleValueSelect,\n multiSelect: multiSelect,\n scrollable: scrollable,\n pinTopItem: pinTopItem,\n maxHeight: maxHeight,\n items: items\n }}\n focused={focused}\n setFocused={setFocused}\n size={size}\n width={width}\n alignLeft={alignLeft}\n isOpen={dropdownOpen}\n setIsOpen={setDropdownOpen}\n hideOnClickOutside={true}\n filter=''\n selectedValues={itemsType == 'normal' ? [] : selectedValues}\n setSelectedValues={setSelectedValues}\n messageOnNoResults='No results'\n isButton={true}\n id='dropdown-content'\n />\n </Wrapper>\n );\n};\n\nexport default DropdownButton;\n"],"file":"DropdownButton.js"}
@@ -3,14 +3,15 @@ import React, { useLayoutEffect, createRef } from 'react';
3
3
  import styled from 'styled-components';
4
4
  import Button from '../Button/Button';
5
5
  import { Size } from '../types';
6
- import { ButtonDropdownContentStyling, DropdownButton } from './CommonStyling';
6
+ import { ButtonDropdownContentStyling, DropdownButtonCSS } from './CommonStyling';
7
+ import { ComponentLStyling, ComponentXLStyling, ComponentMStyling, ComponentSStyling, ComponentTextStyle } from '../styles/typography';
7
8
  import { COLORS } from '../styles';
8
9
  import { Checkbox, RadioButton } from '../InputFields';
9
10
  export const DDContainer = styled.div`
10
11
  display: none;
11
12
  position: absolute;
12
13
  background-color: ${COLORS.white};
13
-
14
+
14
15
  width: ${props => props.width ? props.width : '100%'};
15
16
  z-index: 1;
16
17
  margin: ${props => props.isButton ? '-4px' : '4px 0px'};
@@ -43,11 +44,25 @@ export const DDContainer = styled.div`
43
44
 
44
45
  max-height: ${props => !props.scrollable ? 'auto' : props.maxHeight ? props.maxHeight : props.size == Size.Large ? '320px' : props.size == Size.Medium ? '280px' : '240px'};
45
46
  `;
47
+ const ItemsContainer = styled.div`
48
+ button.dropdownButton {
49
+ ${props => DropdownButtonCSS(props.size)}
50
+ }`;
46
51
  const ListContainer = styled.div`
47
52
  ${props => props.scrollable ? 'overflow-y: scroll;' : ''}
48
53
  ${props => props.itemsType != 'normal' ? 'margin-left: 4px;' : ''}
49
54
 
50
- div {
55
+
56
+ div.divider {
57
+ display: block;
58
+ width: calc(100% - 40px);
59
+ margin-left: 16px;
60
+ border-top: 1px solid #e5e5e5;
61
+ position: absolute;
62
+ top: 0px;
63
+ }
64
+
65
+ ${ItemsContainer} {
51
66
  padding-top: ${props => props.size == Size.Large ? '8px' : props.size == Size.Medium ? '4px' : '0px'};
52
67
  padding-bottom: ${props => props.size == Size.Large ? '8px' : props.size == Size.Medium ? '4px' : '0px'};
53
68
  }
@@ -76,19 +91,51 @@ const ListContainer = styled.div`
76
91
  background: ${COLORS.neutral_500};
77
92
  }
78
93
  `;
79
- const ItemsContainer = styled.div`
94
+ const MenuContentContainer = styled.div`
95
+ h1, h2, h3 {
96
+ margin-block-start: 0px;
97
+ margin-block-end: 0px;
98
+ ${props => props.size == Size.Large && ComponentXLStyling(ComponentTextStyle.Bold, COLORS.neutral_500)}
99
+ ${props => props.size == Size.Medium && ComponentLStyling(ComponentTextStyle.Bold, COLORS.neutral_500)}
100
+ ${props => (props.size == Size.Small || !props.size) && ComponentMStyling(ComponentTextStyle.Bold, COLORS.neutral_500)}
101
+ padding: ${props => props.size == Size.Small || !props.size ? '10px 16px 6px' : props.size == Size.Medium ? '16px 24px 8px' : '16px 32px 8px'};
102
+ }
103
+
104
+ p {
105
+ margin-block-start: 0px;
106
+ margin-block-end: 0px;
107
+ ${props => props.size == Size.Large && ComponentLStyling(ComponentTextStyle.Regular, COLORS.neutral_500)}
108
+ ${props => props.size == Size.Medium && ComponentMStyling(ComponentTextStyle.Regular, COLORS.neutral_500)}
109
+ ${props => (props.size == Size.Small || !props.size) && ComponentSStyling(ComponentTextStyle.Regular, COLORS.neutral_500)}
110
+ padding: ${props => props.size == Size.Small || !props.size ? '8px 16px' : props.size == Size.Medium ? '12px 24px' : '16px 32px'};
111
+ }
112
+ `;
113
+ const DividerContainer = styled.div`
114
+ position: relative;
115
+
116
+ margin-top: ${props => props.size == Size.Large ? '16px' : props.size == Size.Medium ? '12px' : props.size == Size.Small || !props.size ? '8px' : '6px'};
117
+
118
+ div.divider {
119
+ width: 100%;
120
+ margin: 0px;
121
+ }
80
122
  `;
81
123
  const TopItemContainer = styled.div`
82
124
  border-bottom-style: solid;
83
125
  border-bottom-color: ${COLORS.neutral_200};
84
126
  border-bottom-width: 1px;
85
- margin-right: 22px;
127
+ margin-right: 22px;
128
+
129
+ button {
130
+ ${props => DropdownButtonCSS(props.size)}
131
+ }
86
132
  `;
87
133
  const ActionButtonContainer = styled.div`
88
134
  border-top-style: solid;
89
135
  border-top-color: ${COLORS.neutral_200};
90
136
  border-top-width: 1px;
91
- padding: 0px 16px 4px 16px;
137
+
138
+ padding: ${props => props.size == Size.Small || !props.size ? '0px 16px' : '8px 16px'};
92
139
 
93
140
  button {
94
141
  width: 100%;
@@ -139,6 +186,11 @@ const DropdownContent = ({
139
186
  }
140
187
  };
141
188
 
189
+ const getFilteredItems = () => {
190
+ const filtrationString = (filter ?? '').toUpperCase();
191
+ return customizationProps.items.filter(x => x?.value?.toUpperCase().includes(filtrationString) || x?.displayLabel?.toUpperCase().includes(filtrationString));
192
+ };
193
+
142
194
  const handleKeyDown = e => {
143
195
  if (isOpen) {
144
196
  if (e.keyCode === 38) {
@@ -146,7 +198,15 @@ const DropdownContent = ({
146
198
  var focusedNow = focused;
147
199
 
148
200
  if (focusedNow !== undefined && focusedNow !== null && focusedNow > 0) {
149
- focusedNow -= 1;
201
+ const filtered = getFilteredItems();
202
+
203
+ for (let i = focusedNow - 1; i > 0; i--) {
204
+ if (!filtered[i - 1]?.disabled) {
205
+ focusedNow = i;
206
+ break;
207
+ }
208
+ }
209
+
150
210
  setNewFocusedElement(focusedNow);
151
211
  }
152
212
  } else if (e.keyCode === 40) {
@@ -154,9 +214,16 @@ const DropdownContent = ({
154
214
  var focusedNow = focused;
155
215
 
156
216
  if (focusedNow !== undefined && focusedNow !== null) {
157
- focusedNow++;
217
+ const filtered = getFilteredItems();
218
+
219
+ for (let i = focusedNow + 1; i <= filtered.length; i++) {
220
+ if (!filtered[i - 1]?.disabled) {
221
+ focusedNow = i;
222
+ break;
223
+ }
224
+ }
158
225
  } else {
159
- focusedNow = 0;
226
+ focusedNow = haveTopItem() ? 0 : 1;
160
227
  }
161
228
 
162
229
  setNewFocusedElement(focusedNow);
@@ -217,11 +284,6 @@ const DropdownContent = ({
217
284
  if (itemsListRef.current) itemsListRef.current.scrollTop = scrollPosition.current ?? 0;
218
285
  }, [selectedValues]);
219
286
 
220
- const getFilteredItems = () => {
221
- const filtrationString = (filter ?? '').toUpperCase();
222
- return customizationProps.items.filter(x => x?.value?.toUpperCase().includes(filtrationString) || x?.displayLabel?.toUpperCase().includes(filtrationString));
223
- };
224
-
225
287
  const getCorrectRef = ref => {
226
288
  switch (customizationProps.itemsType) {
227
289
  case 'normal':
@@ -266,15 +328,19 @@ const DropdownContent = ({
266
328
  const allSelected = selectedValues?.filter(x => visibleItems.some(y => y.value == x)).length == visibleItems.length;
267
329
  let showTopItem = false;
268
330
  const suggestions = getSuggestions();
331
+ const displayLabel = selectedValues[0] ? customizationProps.items?.find(c => c.value === selectedValues[0])?.displayLabel : undefined;
269
332
  if (customizationProps.itemsType == 'radio' && selectedValues && selectedValues?.length > 0) showTopItem = true;else if (customizationProps.itemsType == 'checkbox' && (customizationProps.multiSelect || selectedValues?.length > 0)) showTopItem = true;else if (customizationProps.itemsType == 'normal' && suggestions.length > 0) showTopItem = true;
270
333
  if (!showTopItem) return;
271
- return /*#__PURE__*/React.createElement(TopItemContainer, null, customizationProps.itemsType == 'radio' && /*#__PURE__*/React.createElement(RadioButton, {
334
+ const selectedFirst = selectedValues.length > 0 ? visibleItems.find(x => x.value == selectedValues[0]) : null;
335
+ return /*#__PURE__*/React.createElement(TopItemContainer, {
336
+ size: size
337
+ }, customizationProps.itemsType == 'radio' && /*#__PURE__*/React.createElement(RadioButton, {
272
338
  ref: elRefs[0],
273
339
  iconPointerEventsTransparent: true,
274
340
  select: () => {},
341
+ label: selectedFirst?.displayLabel ?? selectedFirst?.value,
275
342
  size: size,
276
343
  id: `${id}_topitem`,
277
- label: selectedValues[0],
278
344
  selected: true
279
345
  }), customizationProps.itemsType == 'checkbox' && /*#__PURE__*/React.createElement(Checkbox, {
280
346
  ref: elRefs[0],
@@ -288,12 +354,13 @@ const DropdownContent = ({
288
354
  semiSelected: customizationProps.multiSelect && !allSelected && selectedValues?.length > 0,
289
355
  size: size,
290
356
  id: `${id}_checkbox_selectall`,
291
- label: customizationProps.multiSelect ? 'Select all' : selectedValues[0],
357
+ label: customizationProps.multiSelect ? 'Select all' : selectedFirst?.displayLabel ?? selectedFirst?.value,
292
358
  selected: !customizationProps.multiSelect || allSelected
293
- }), customizationProps.itemsType == 'normal' && /*#__PURE__*/React.createElement(React.Fragment, null, suggestions.map(x => /*#__PURE__*/React.createElement(DropdownButton, {
359
+ }), customizationProps.itemsType == 'normal' && /*#__PURE__*/React.createElement(React.Fragment, null, suggestions.map(x => /*#__PURE__*/React.createElement("button", {
294
360
  ref: elRefs[0],
295
361
  type: "button",
296
362
  id: `${id}_topitem`,
363
+ key: `${id}_topitem_${x.value}`,
297
364
  onClick: e => {
298
365
  customizationProps.onValueUpdate([x.value]);
299
366
  setSelectedValues([x.value]);
@@ -315,14 +382,21 @@ const DropdownContent = ({
315
382
 
316
383
  const getElements = () => {
317
384
  if (getFilteredItems().length === 0) {
318
- return /*#__PURE__*/React.createElement(ItemsContainer, null, /*#__PURE__*/React.createElement(DropdownButton, {
385
+ return /*#__PURE__*/React.createElement(ItemsContainer, {
386
+ size: size
387
+ }, /*#__PURE__*/React.createElement("button", {
388
+ className: "dropdownButton",
319
389
  disabled: true
320
390
  }, /*#__PURE__*/React.createElement("span", null, messageOnNoResults)));
321
391
  }
322
392
 
323
393
  let number = 0;
324
- return /*#__PURE__*/React.createElement(ItemsContainer, null, getFilteredItems().filter(x => x && (customizationProps.itemsType != 'normal' || !x.suggestion)).map(item => {
325
- return /*#__PURE__*/React.createElement(React.Fragment, null, customizationProps.itemsType == 'radio' && /*#__PURE__*/React.createElement(RadioButton, {
394
+ return /*#__PURE__*/React.createElement(ItemsContainer, {
395
+ size: size
396
+ }, getFilteredItems().filter(x => x && (customizationProps.itemsType != 'normal' || !x.suggestion)).map(item => {
397
+ return /*#__PURE__*/React.createElement(React.Fragment, {
398
+ key: `key_${id}_${item.value}`
399
+ }, item.customContent, !item.customContent && customizationProps.itemsType == 'radio' && /*#__PURE__*/React.createElement(RadioButton, {
326
400
  select: selected => {
327
401
  if (!selected) return;
328
402
  customizationProps.onValueUpdate && customizationProps.onValueUpdate([item.value]);
@@ -334,9 +408,9 @@ const DropdownContent = ({
334
408
  disabled: item?.disabled,
335
409
  key: `key_${id}_${number++}`,
336
410
  id: `${id}_${number + 1}`,
337
- label: item.value,
411
+ label: item.displayLabel ?? item.value,
338
412
  selected: selectedValues?.includes(item.value)
339
- }), customizationProps.itemsType == 'checkbox' && /*#__PURE__*/React.createElement(Checkbox, {
413
+ }), !item.customContent && customizationProps.itemsType == 'checkbox' && /*#__PURE__*/React.createElement(Checkbox, {
340
414
  select: selected => {
341
415
  let newValue = [];
342
416
 
@@ -353,11 +427,10 @@ const DropdownContent = ({
353
427
  size: size,
354
428
  key: `key_${id}_${number++}`,
355
429
  id: `${id}_${number + 1}`,
356
- label: item.value,
430
+ label: item.displayLabel ?? item.value,
357
431
  selected: selectedValues?.includes(item.value)
358
- }), (customizationProps.itemsType == 'normal' || !customizationProps.itemsType) && /*#__PURE__*/React.createElement(DropdownButton, {
432
+ }), !item.customContent && (customizationProps.itemsType == 'normal' || !customizationProps.itemsType) && /*#__PURE__*/React.createElement("button", {
359
433
  type: "button",
360
- size: size,
361
434
  disabled: item?.disabled,
362
435
  ref: elRefs[number + 1],
363
436
  onClick: e => {
@@ -366,7 +439,7 @@ const DropdownContent = ({
366
439
  setIsOpen(false);
367
440
  setFocused(null);
368
441
  },
369
- className: (item.showDividerAbove ? 'show-divider-above' : '') + ' ' + (selectedValues?.includes(item.value) ? 'active' : ''),
442
+ className: 'dropdownButton ' + (item.showDividerAbove ? 'show-divider-above' : '') + ' ' + (selectedValues?.includes(item.value) ? 'active' : ''),
370
443
  key: `key_${id}_${number++}`,
371
444
  id: `${id}_${number + 1}`
372
445
  }, item.showDividerAbove && /*#__PURE__*/React.createElement("div", {
@@ -400,11 +473,22 @@ const DropdownContent = ({
400
473
  onScroll: handleScroll,
401
474
  ref: itemsListRef,
402
475
  scrollable: customizationProps.scrollable
403
- }, customizationProps.pinTopItem && getTopItem(), getElements()), customizationProps.action && customizationProps.actionLabel && /*#__PURE__*/React.createElement(ActionButtonContainer, null, /*#__PURE__*/React.createElement(Button, {
476
+ }, customizationProps.menuContent && /*#__PURE__*/React.createElement(MenuContentContainer, {
477
+ size: size
478
+ }, customizationProps.menuContent, /*#__PURE__*/React.createElement(DividerContainer, {
479
+ size: size
480
+ }, /*#__PURE__*/React.createElement("div", {
481
+ className: "divider"
482
+ }))), customizationProps.pinTopItem && getTopItem(), getElements()), customizationProps.action && customizationProps.actionLabel && /*#__PURE__*/React.createElement(ActionButtonContainer, {
483
+ size: size
484
+ }, /*#__PURE__*/React.createElement(Button, {
404
485
  width: "100%",
405
- variant: "primary",
486
+ variant: customizationProps.actionVariant ?? 'primary',
406
487
  size: size,
407
- onClick: () => customizationProps.action()
488
+ onClick: () => {
489
+ if (customizationProps.action()) //closing the dropdown if action returns 'true'
490
+ setIsOpen(false);
491
+ }
408
492
  }, customizationProps.actionLabel)));
409
493
  /* ),
410
494
  {
@@ -423,6 +507,7 @@ DropdownContent.propTypes = {
423
507
  isButton: _pt.bool.isRequired,
424
508
  customizationProps: _pt.shape({
425
509
  itemsType: _pt.oneOf(['radio', 'checkbox', 'normal']),
510
+ menuContent: _pt.node,
426
511
  scrollable: _pt.bool,
427
512
  multiSelect: _pt.bool,
428
513
  maxHeight: _pt.string,
@@ -437,7 +522,8 @@ DropdownContent.propTypes = {
437
522
  suggestion: _pt.bool,
438
523
  showDividerAbove: _pt.bool,
439
524
  disabled: _pt.bool,
440
- icon: _pt.node
525
+ icon: _pt.node,
526
+ customContent: _pt.node
441
527
  })).isRequired
442
528
  }).isRequired,
443
529
  alignLeft: _pt.bool,