@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
@@ -1,16 +1,16 @@
1
1
  (function (global, factory) {
2
2
  if (typeof define === "function" && define.amd) {
3
- define(["exports", "prop-types", "react", "styled-components", "../Button/Button", "../types", "./CommonStyling", "../styles", "../InputFields"], factory);
3
+ define(["exports", "prop-types", "react", "styled-components", "../Button/Button", "../types", "./CommonStyling", "../styles/typography", "../styles", "../InputFields"], factory);
4
4
  } else if (typeof exports !== "undefined") {
5
- factory(exports, require("prop-types"), require("react"), require("styled-components"), require("../Button/Button"), require("../types"), require("./CommonStyling"), require("../styles"), require("../InputFields"));
5
+ factory(exports, require("prop-types"), require("react"), require("styled-components"), require("../Button/Button"), require("../types"), require("./CommonStyling"), require("../styles/typography"), require("../styles"), require("../InputFields"));
6
6
  } else {
7
7
  var mod = {
8
8
  exports: {}
9
9
  };
10
- factory(mod.exports, global.propTypes, global.react, global.styledComponents, global.Button, global.types, global.CommonStyling, global.styles, global.InputFields);
10
+ factory(mod.exports, global.propTypes, global.react, global.styledComponents, global.Button, global.types, global.CommonStyling, global.typography, global.styles, global.InputFields);
11
11
  global.undefined = mod.exports;
12
12
  }
13
- })(this, function (exports, _propTypes, _react, _styledComponents, _Button, _types, _CommonStyling, _styles, _InputFields) {
13
+ })(this, function (exports, _propTypes, _react, _styledComponents, _Button, _types, _CommonStyling, _typography, _styles, _InputFields) {
14
14
  "use strict";
15
15
 
16
16
  Object.defineProperty(exports, "__esModule", {
@@ -36,7 +36,7 @@
36
36
  display: none;
37
37
  position: absolute;
38
38
  background-color: ${_styles.COLORS.white};
39
-
39
+
40
40
  width: ${props => props.width ? props.width : '100%'};
41
41
  z-index: 1;
42
42
  margin: ${props => props.isButton ? '-4px' : '4px 0px'};
@@ -69,11 +69,25 @@
69
69
 
70
70
  max-height: ${props => !props.scrollable ? 'auto' : props.maxHeight ? props.maxHeight : props.size == _types.Size.Large ? '320px' : props.size == _types.Size.Medium ? '280px' : '240px'};
71
71
  `;
72
+ const ItemsContainer = _styledComponents2.default.div`
73
+ button.dropdownButton {
74
+ ${props => (0, _CommonStyling.DropdownButtonCSS)(props.size)}
75
+ }`;
72
76
  const ListContainer = _styledComponents2.default.div`
73
77
  ${props => props.scrollable ? 'overflow-y: scroll;' : ''}
74
78
  ${props => props.itemsType != 'normal' ? 'margin-left: 4px;' : ''}
75
79
 
76
- div {
80
+
81
+ div.divider {
82
+ display: block;
83
+ width: calc(100% - 40px);
84
+ margin-left: 16px;
85
+ border-top: 1px solid #e5e5e5;
86
+ position: absolute;
87
+ top: 0px;
88
+ }
89
+
90
+ ${ItemsContainer} {
77
91
  padding-top: ${props => props.size == _types.Size.Large ? '8px' : props.size == _types.Size.Medium ? '4px' : '0px'};
78
92
  padding-bottom: ${props => props.size == _types.Size.Large ? '8px' : props.size == _types.Size.Medium ? '4px' : '0px'};
79
93
  }
@@ -102,19 +116,51 @@
102
116
  background: ${_styles.COLORS.neutral_500};
103
117
  }
104
118
  `;
105
- const ItemsContainer = _styledComponents2.default.div`
119
+ const MenuContentContainer = _styledComponents2.default.div`
120
+ h1, h2, h3 {
121
+ margin-block-start: 0px;
122
+ margin-block-end: 0px;
123
+ ${props => props.size == _types.Size.Large && (0, _typography.ComponentXLStyling)(_typography.ComponentTextStyle.Bold, _styles.COLORS.neutral_500)}
124
+ ${props => props.size == _types.Size.Medium && (0, _typography.ComponentLStyling)(_typography.ComponentTextStyle.Bold, _styles.COLORS.neutral_500)}
125
+ ${props => (props.size == _types.Size.Small || !props.size) && (0, _typography.ComponentMStyling)(_typography.ComponentTextStyle.Bold, _styles.COLORS.neutral_500)}
126
+ padding: ${props => props.size == _types.Size.Small || !props.size ? '10px 16px 6px' : props.size == _types.Size.Medium ? '16px 24px 8px' : '16px 32px 8px'};
127
+ }
128
+
129
+ p {
130
+ margin-block-start: 0px;
131
+ margin-block-end: 0px;
132
+ ${props => props.size == _types.Size.Large && (0, _typography.ComponentLStyling)(_typography.ComponentTextStyle.Regular, _styles.COLORS.neutral_500)}
133
+ ${props => props.size == _types.Size.Medium && (0, _typography.ComponentMStyling)(_typography.ComponentTextStyle.Regular, _styles.COLORS.neutral_500)}
134
+ ${props => (props.size == _types.Size.Small || !props.size) && (0, _typography.ComponentSStyling)(_typography.ComponentTextStyle.Regular, _styles.COLORS.neutral_500)}
135
+ padding: ${props => props.size == _types.Size.Small || !props.size ? '8px 16px' : props.size == _types.Size.Medium ? '12px 24px' : '16px 32px'};
136
+ }
137
+ `;
138
+ const DividerContainer = _styledComponents2.default.div`
139
+ position: relative;
140
+
141
+ margin-top: ${props => props.size == _types.Size.Large ? '16px' : props.size == _types.Size.Medium ? '12px' : props.size == _types.Size.Small || !props.size ? '8px' : '6px'};
142
+
143
+ div.divider {
144
+ width: 100%;
145
+ margin: 0px;
146
+ }
106
147
  `;
107
148
  const TopItemContainer = _styledComponents2.default.div`
108
149
  border-bottom-style: solid;
109
150
  border-bottom-color: ${_styles.COLORS.neutral_200};
110
151
  border-bottom-width: 1px;
111
- margin-right: 22px;
152
+ margin-right: 22px;
153
+
154
+ button {
155
+ ${props => (0, _CommonStyling.DropdownButtonCSS)(props.size)}
156
+ }
112
157
  `;
113
158
  const ActionButtonContainer = _styledComponents2.default.div`
114
159
  border-top-style: solid;
115
160
  border-top-color: ${_styles.COLORS.neutral_200};
116
161
  border-top-width: 1px;
117
- padding: 0px 16px 4px 16px;
162
+
163
+ padding: ${props => props.size == _types.Size.Small || !props.size ? '0px 16px' : '8px 16px'};
118
164
 
119
165
  button {
120
166
  width: 100%;
@@ -168,6 +214,11 @@
168
214
  }
169
215
  };
170
216
 
217
+ const getFilteredItems = () => {
218
+ const filtrationString = (filter ?? '').toUpperCase();
219
+ return customizationProps.items.filter(x => x?.value?.toUpperCase().includes(filtrationString) || x?.displayLabel?.toUpperCase().includes(filtrationString));
220
+ };
221
+
171
222
  const handleKeyDown = e => {
172
223
  if (isOpen) {
173
224
  if (e.keyCode === 38) {
@@ -175,7 +226,15 @@
175
226
  var focusedNow = focused;
176
227
 
177
228
  if (focusedNow !== undefined && focusedNow !== null && focusedNow > 0) {
178
- focusedNow -= 1;
229
+ const filtered = getFilteredItems();
230
+
231
+ for (let i = focusedNow - 1; i > 0; i--) {
232
+ if (!filtered[i - 1]?.disabled) {
233
+ focusedNow = i;
234
+ break;
235
+ }
236
+ }
237
+
179
238
  setNewFocusedElement(focusedNow);
180
239
  }
181
240
  } else if (e.keyCode === 40) {
@@ -183,9 +242,16 @@
183
242
  var focusedNow = focused;
184
243
 
185
244
  if (focusedNow !== undefined && focusedNow !== null) {
186
- focusedNow++;
245
+ const filtered = getFilteredItems();
246
+
247
+ for (let i = focusedNow + 1; i <= filtered.length; i++) {
248
+ if (!filtered[i - 1]?.disabled) {
249
+ focusedNow = i;
250
+ break;
251
+ }
252
+ }
187
253
  } else {
188
- focusedNow = 0;
254
+ focusedNow = haveTopItem() ? 0 : 1;
189
255
  }
190
256
 
191
257
  setNewFocusedElement(focusedNow);
@@ -247,11 +313,6 @@
247
313
  if (itemsListRef.current) itemsListRef.current.scrollTop = scrollPosition.current ?? 0;
248
314
  }, [selectedValues]);
249
315
 
250
- const getFilteredItems = () => {
251
- const filtrationString = (filter ?? '').toUpperCase();
252
- return customizationProps.items.filter(x => x?.value?.toUpperCase().includes(filtrationString) || x?.displayLabel?.toUpperCase().includes(filtrationString));
253
- };
254
-
255
316
  const getCorrectRef = ref => {
256
317
  switch (customizationProps.itemsType) {
257
318
  case 'normal':
@@ -299,15 +360,19 @@
299
360
  const allSelected = selectedValues?.filter(x => visibleItems.some(y => y.value == x)).length == visibleItems.length;
300
361
  let showTopItem = false;
301
362
  const suggestions = getSuggestions();
363
+ const displayLabel = selectedValues[0] ? customizationProps.items?.find(c => c.value === selectedValues[0])?.displayLabel : undefined;
302
364
  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;
303
365
  if (!showTopItem) return;
304
- return /*#__PURE__*/_react2.default.createElement(TopItemContainer, null, customizationProps.itemsType == 'radio' && /*#__PURE__*/_react2.default.createElement(_InputFields.RadioButton, {
366
+ const selectedFirst = selectedValues.length > 0 ? visibleItems.find(x => x.value == selectedValues[0]) : null;
367
+ return /*#__PURE__*/_react2.default.createElement(TopItemContainer, {
368
+ size: size
369
+ }, customizationProps.itemsType == 'radio' && /*#__PURE__*/_react2.default.createElement(_InputFields.RadioButton, {
305
370
  ref: elRefs[0],
306
371
  iconPointerEventsTransparent: true,
307
372
  select: () => {},
373
+ label: selectedFirst?.displayLabel ?? selectedFirst?.value,
308
374
  size: size,
309
375
  id: `${id}_topitem`,
310
- label: selectedValues[0],
311
376
  selected: true
312
377
  }), customizationProps.itemsType == 'checkbox' && /*#__PURE__*/_react2.default.createElement(_InputFields.Checkbox, {
313
378
  ref: elRefs[0],
@@ -321,12 +386,13 @@
321
386
  semiSelected: customizationProps.multiSelect && !allSelected && selectedValues?.length > 0,
322
387
  size: size,
323
388
  id: `${id}_checkbox_selectall`,
324
- label: customizationProps.multiSelect ? 'Select all' : selectedValues[0],
389
+ label: customizationProps.multiSelect ? 'Select all' : selectedFirst?.displayLabel ?? selectedFirst?.value,
325
390
  selected: !customizationProps.multiSelect || allSelected
326
- }), customizationProps.itemsType == 'normal' && /*#__PURE__*/_react2.default.createElement(_react2.default.Fragment, null, suggestions.map(x => /*#__PURE__*/_react2.default.createElement(_CommonStyling.DropdownButton, {
391
+ }), customizationProps.itemsType == 'normal' && /*#__PURE__*/_react2.default.createElement(_react2.default.Fragment, null, suggestions.map(x => /*#__PURE__*/_react2.default.createElement("button", {
327
392
  ref: elRefs[0],
328
393
  type: "button",
329
394
  id: `${id}_topitem`,
395
+ key: `${id}_topitem_${x.value}`,
330
396
  onClick: e => {
331
397
  customizationProps.onValueUpdate([x.value]);
332
398
  setSelectedValues([x.value]);
@@ -348,14 +414,21 @@
348
414
 
349
415
  const getElements = () => {
350
416
  if (getFilteredItems().length === 0) {
351
- return /*#__PURE__*/_react2.default.createElement(ItemsContainer, null, /*#__PURE__*/_react2.default.createElement(_CommonStyling.DropdownButton, {
417
+ return /*#__PURE__*/_react2.default.createElement(ItemsContainer, {
418
+ size: size
419
+ }, /*#__PURE__*/_react2.default.createElement("button", {
420
+ className: "dropdownButton",
352
421
  disabled: true
353
422
  }, /*#__PURE__*/_react2.default.createElement("span", null, messageOnNoResults)));
354
423
  }
355
424
 
356
425
  let number = 0;
357
- return /*#__PURE__*/_react2.default.createElement(ItemsContainer, null, getFilteredItems().filter(x => x && (customizationProps.itemsType != 'normal' || !x.suggestion)).map(item => {
358
- return /*#__PURE__*/_react2.default.createElement(_react2.default.Fragment, null, customizationProps.itemsType == 'radio' && /*#__PURE__*/_react2.default.createElement(_InputFields.RadioButton, {
426
+ return /*#__PURE__*/_react2.default.createElement(ItemsContainer, {
427
+ size: size
428
+ }, getFilteredItems().filter(x => x && (customizationProps.itemsType != 'normal' || !x.suggestion)).map(item => {
429
+ return /*#__PURE__*/_react2.default.createElement(_react2.default.Fragment, {
430
+ key: `key_${id}_${item.value}`
431
+ }, item.customContent, !item.customContent && customizationProps.itemsType == 'radio' && /*#__PURE__*/_react2.default.createElement(_InputFields.RadioButton, {
359
432
  select: selected => {
360
433
  if (!selected) return;
361
434
  customizationProps.onValueUpdate && customizationProps.onValueUpdate([item.value]);
@@ -367,9 +440,9 @@
367
440
  disabled: item?.disabled,
368
441
  key: `key_${id}_${number++}`,
369
442
  id: `${id}_${number + 1}`,
370
- label: item.value,
443
+ label: item.displayLabel ?? item.value,
371
444
  selected: selectedValues?.includes(item.value)
372
- }), customizationProps.itemsType == 'checkbox' && /*#__PURE__*/_react2.default.createElement(_InputFields.Checkbox, {
445
+ }), !item.customContent && customizationProps.itemsType == 'checkbox' && /*#__PURE__*/_react2.default.createElement(_InputFields.Checkbox, {
373
446
  select: selected => {
374
447
  let newValue = [];
375
448
 
@@ -386,11 +459,10 @@
386
459
  size: size,
387
460
  key: `key_${id}_${number++}`,
388
461
  id: `${id}_${number + 1}`,
389
- label: item.value,
462
+ label: item.displayLabel ?? item.value,
390
463
  selected: selectedValues?.includes(item.value)
391
- }), (customizationProps.itemsType == 'normal' || !customizationProps.itemsType) && /*#__PURE__*/_react2.default.createElement(_CommonStyling.DropdownButton, {
464
+ }), !item.customContent && (customizationProps.itemsType == 'normal' || !customizationProps.itemsType) && /*#__PURE__*/_react2.default.createElement("button", {
392
465
  type: "button",
393
- size: size,
394
466
  disabled: item?.disabled,
395
467
  ref: elRefs[number + 1],
396
468
  onClick: e => {
@@ -399,7 +471,7 @@
399
471
  setIsOpen(false);
400
472
  setFocused(null);
401
473
  },
402
- className: (item.showDividerAbove ? 'show-divider-above' : '') + ' ' + (selectedValues?.includes(item.value) ? 'active' : ''),
474
+ className: 'dropdownButton ' + (item.showDividerAbove ? 'show-divider-above' : '') + ' ' + (selectedValues?.includes(item.value) ? 'active' : ''),
403
475
  key: `key_${id}_${number++}`,
404
476
  id: `${id}_${number + 1}`
405
477
  }, item.showDividerAbove && /*#__PURE__*/_react2.default.createElement("div", {
@@ -433,11 +505,22 @@
433
505
  onScroll: handleScroll,
434
506
  ref: itemsListRef,
435
507
  scrollable: customizationProps.scrollable
436
- }, customizationProps.pinTopItem && getTopItem(), getElements()), customizationProps.action && customizationProps.actionLabel && /*#__PURE__*/_react2.default.createElement(ActionButtonContainer, null, /*#__PURE__*/_react2.default.createElement(_Button2.default, {
508
+ }, customizationProps.menuContent && /*#__PURE__*/_react2.default.createElement(MenuContentContainer, {
509
+ size: size
510
+ }, customizationProps.menuContent, /*#__PURE__*/_react2.default.createElement(DividerContainer, {
511
+ size: size
512
+ }, /*#__PURE__*/_react2.default.createElement("div", {
513
+ className: "divider"
514
+ }))), customizationProps.pinTopItem && getTopItem(), getElements()), customizationProps.action && customizationProps.actionLabel && /*#__PURE__*/_react2.default.createElement(ActionButtonContainer, {
515
+ size: size
516
+ }, /*#__PURE__*/_react2.default.createElement(_Button2.default, {
437
517
  width: "100%",
438
- variant: "primary",
518
+ variant: customizationProps.actionVariant ?? 'primary',
439
519
  size: size,
440
- onClick: () => customizationProps.action()
520
+ onClick: () => {
521
+ if (customizationProps.action()) //closing the dropdown if action returns 'true'
522
+ setIsOpen(false);
523
+ }
441
524
  }, customizationProps.actionLabel)));
442
525
  /* ),
443
526
  {
@@ -456,6 +539,7 @@
456
539
  isButton: _propTypes2.default.bool.isRequired,
457
540
  customizationProps: _propTypes2.default.shape({
458
541
  itemsType: _propTypes2.default.oneOf(['radio', 'checkbox', 'normal']),
542
+ menuContent: _propTypes2.default.node,
459
543
  scrollable: _propTypes2.default.bool,
460
544
  multiSelect: _propTypes2.default.bool,
461
545
  maxHeight: _propTypes2.default.string,
@@ -470,7 +554,8 @@
470
554
  suggestion: _propTypes2.default.bool,
471
555
  showDividerAbove: _propTypes2.default.bool,
472
556
  disabled: _propTypes2.default.bool,
473
- icon: _propTypes2.default.node
557
+ icon: _propTypes2.default.node,
558
+ customContent: _propTypes2.default.node
474
559
  })).isRequired
475
560
  }).isRequired,
476
561
  alignLeft: _propTypes2.default.bool,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/Dropdown/DropdownContent.tsx"],"names":["DDContainer","styled","div","COLORS","white","props","neutral_100","Size","ListContainer","neutral_600","neutral_500","ItemsContainer","TopItemContainer","neutral_200","ActionButtonContainer","MAX_MENU_HEIGHT","AVG_OPTION_HEIGHT","value","displayLabel","noteLabel","suggestion","showDividerAbove","disabled","icon","itemsType","scrollable","multiSelect","maxHeight","actionLabel","action","pinTopItem","onValueUpdate","items","isButton","customizationProps","alignLeft","isOpen","setIsOpen","id","filter","width","hideOnClickOutside","selectedValues","setSelectedValues","messageOnNoResults","focused","setFocused","DropdownContent","React","dropdownContentRef","size","itemsListRef","determineDropUp","options","node","windowHeight","window","menuHeight","Math","instOffsetWithMenu","setIsUp","setNewFocusedElement","index","newFocusedElement","elRefs","handleKeyDown","e","focusedNow","document","handleClickOutside","x","scrollPosition","handleScroll","useLayoutEffect","getFilteredItems","filtrationString","getCorrectRef","ref","arrLength","setElRefs","Array","haveTopItem","getSuggestions","focusThis","getTopItem","visibleItems","allSelected","y","showTopItem","suggestions","selected","newValues","fontSize","getElements","number","item","newValue","isUp"],"mappings":"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","sourcesContent":["import React, { useLayoutEffect, useMemo, createRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport { CommonInteractionStyling } from '../common';\nimport Button from '../Button/Button';\nimport { Size } from '../types';\nimport { ButtonDropdownContentStyling, DropdownButton } from './CommonStyling';\nimport { BREAKPOINTS, COLORS } from '../styles';\nimport { Checkbox, RadioButton } from '../InputFields';\n\nexport const DDContainer = styled.div<{ isButton: boolean; width?: string; alignLeft?: boolean; size?: Size; scrollable?: boolean; maxHeight?: string }>`\n display: none;\n position: absolute;\n background-color: ${COLORS.white};\n \n width: ${props => props.width ? props.width : '100%'};\n z-index: 1;\n margin: ${props => (props.isButton ? '-4px' : '4px 0px')};\n\n &.show {\n display: flex;\n flex-direction: column;\n justify-content: center;\n }\n\n &.up {\n top: auto;\n bottom: 100%;\n }\n\n ${props => (props.alignLeft ? 'left: 0px;' : '')}\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 padding-top: 4px;\n padding-right: 0px;\n padding-bottom: 4px;\n padding-left: 0px;\n\n min-width: ${props => (props.size == Size.Large ? '320px' : props.size == Size.Medium ? '280px' : '240px')};\n border-radius: ${props => (props.size == Size.Large ? '10px' : props.size == Size.Medium ? '8px' : '6px')};\n\n max-height: ${props => (!props.scrollable ? 'auto' : props.maxHeight ? props.maxHeight : props.size == Size.Large ? '320px' : props.size == Size.Medium ? '280px' : '240px')};\n`;\n\nconst ListContainer = styled.div<{ scrollable?: boolean, size? : Size, itemsType?: string }>`\n ${props => (props.scrollable ? 'overflow-y: scroll;' : '')}\n ${props => (props.itemsType != 'normal' ? 'margin-left: 4px;' : '')}\n\n div {\n padding-top: ${props => props.size == Size.Large ? '8px' : props.size == Size.Medium ? '4px' : '0px' };\n padding-bottom: ${props => props.size == Size.Large ? '8px' : props.size == Size.Medium ? '4px' : '0px' };\n }\n\n /* width */\n ::-webkit-scrollbar {\n width: 4px;\n margin: 0 6px;\n cursor: pointer;\n }\n\n /* Track */\n ::-webkit-scrollbar-track {\n background: ${COLORS.neutral_100};\n border-radius: 8px;\n }\n\n /* Handle */\n ::-webkit-scrollbar-thumb {\n background: ${COLORS.neutral_600};\n border-radius: 8px;\n }\n\n /* Handle on hover */\n ::-webkit-scrollbar-thumb:hover {\n background: ${COLORS.neutral_500};\n }\n`;\n\nconst ItemsContainer = styled.div`\n`;\n\n\nconst TopItemContainer = styled.div`\n border-bottom-style: solid;\n border-bottom-color: ${COLORS.neutral_200};\n border-bottom-width: 1px;\n margin-right: 22px; \n`;\n\nconst ActionButtonContainer = styled.div`\n border-top-style: solid;\n border-top-color: ${COLORS.neutral_200};\n border-top-width: 1px;\n padding: 0px 16px 4px 16px;\n\n button {\n width: 100%;\n }\n`;\n\nconst MAX_MENU_HEIGHT = 240;\nconst AVG_OPTION_HEIGHT = 48;\n\nexport interface DropdownItem {\n value: string;\n displayLabel?: string;\n noteLabel?: string;\n suggestion?: boolean;\n showDividerAbove?: boolean;\n disabled?: boolean;\n icon?: React.ReactNode;\n}\n\nexport interface DropdownCustomizationProps {\n itemsType?: 'radio' | 'checkbox' | 'normal';\n scrollable?: boolean;\n multiSelect?: boolean;\n maxHeight?: string;\n actionLabel?: string;\n action: () => void;\n pinTopItem?: boolean;\n onValueUpdate: (values: string[]) => void;\n items: DropdownItem[];\n}\n\nexport interface DropdownProps {\n isButton: boolean;\n customizationProps: DropdownCustomizationProps;\n alignLeft?: boolean;\n isOpen: boolean;\n setIsOpen: (open: boolean) => void;\n size?: Size;\n id: string;\n filter: string;\n width?: string;\n hideOnClickOutside: boolean;\n selectedValues: string[];\n setSelectedValues: (val: string[]) => void;\n messageOnNoResults: string;\n focused: number | null;\n setFocused: (focused: number | null) => void;\n}\n\nconst DropdownContent: React.FunctionComponent<DropdownProps> = ({\n id,\n customizationProps,\n alignLeft,\n isButton,\n size,\n isOpen,\n hideOnClickOutside,\n width,\n setIsOpen,\n filter,\n focused, \n setFocused,\n selectedValues,\n setSelectedValues,\n messageOnNoResults\n}) => {\n const [isUp, setIsUp] = React.useState<boolean>(false);\n const dropdownContentRef = React.useRef<HTMLDivElement>(null);\n\n if(!customizationProps.itemsType) customizationProps.itemsType = 'normal';\n if(!size) size = Size.Small;\n\n const itemsListRef = React.useRef<HTMLDivElement>(null);\n\n const determineDropUp = () => {\n const options = customizationProps.items;\n const node = dropdownContentRef.current;\n\n if (!node) return;\n\n const windowHeight = window.innerHeight;\n const menuHeight = Math.min(MAX_MENU_HEIGHT, options.length * AVG_OPTION_HEIGHT);\n const instOffsetWithMenu = node.getBoundingClientRect().top + menuHeight;\n setIsUp(instOffsetWithMenu >= windowHeight);\n };\n\n const setNewFocusedElement = (index: number) => {\n const newFocusedElement = elRefs[index];\n if (newFocusedElement) {\n setFocused(index);\n newFocusedElement?.current?.focus();\n }\n };\n \n const handleKeyDown = (e: any) => {\n if (isOpen) {\n if (e.keyCode === 38) {\n e.preventDefault();\n var focusedNow = focused;\n if (focusedNow !== undefined && focusedNow !== null && focusedNow > 0) {\n focusedNow -= 1;\n setNewFocusedElement(focusedNow);\n }\n } else if (e.keyCode === 40) {\n e.preventDefault();\n var focusedNow = focused;\n if (focusedNow !== undefined && focusedNow !== null) {\n focusedNow++;\n } else {\n focusedNow = 0;\n }\n setNewFocusedElement(focusedNow);\n } else if (e.keyCode === 9) {\n e.preventDefault();\n var focusedNow = focused;\n if (focusedNow !== undefined && focusedNow !== null) {\n focusedNow++;\n const newFocusedElement = document.getElementById(`${id}_${focusedNow}`);\n if (!newFocusedElement) {\n setNewFocusedElement(0);\n } else {\n setNewFocusedElement(focusedNow);\n }\n } else {\n setFocused(null);\n }\n } else if (e.keyCode === 27) {\n setIsOpen(false);\n setFocused(null);\n\n //TODO: add onEscapehandler\n /*\n if (!list.includes(input)) {\n setInput('');\n setPlaceholderSearch(placeholder || '');\n }\n styledFieldRef.current?.focus(); */\n }\n }\n };\n\n const handleClickOutside = (e: any) => {\n if (hideOnClickOutside && dropdownContentRef?.current && !dropdownContentRef.current.contains(e.target) && !elRefs.some(x => x?.current?.contains(e.target))) {\n if (isOpen) {\n setIsOpen(false);\n setFocused(null);\n }\n }\n };\n\n React.useEffect(() => {\n document.addEventListener('keydown', handleKeyDown);\n document.addEventListener('click', handleClickOutside);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n document.removeEventListener('click', handleClickOutside);\n };\n });\n\n const scrollPosition = React.useRef<number | undefined>(0); \n const handleScroll = () => {\n scrollPosition.current = itemsListRef.current?.scrollTop;\n }\n useLayoutEffect(() => {\n if (itemsListRef.current) itemsListRef.current.scrollTop = scrollPosition.current ?? 0;\n }, [selectedValues]);\n\n const getFilteredItems = () => {\n const filtrationString = (filter ?? '').toUpperCase();\n return customizationProps.items.\n filter(x => x?.value?.toUpperCase().includes(filtrationString) || x?.displayLabel?.toUpperCase().includes(filtrationString));\n };\n\n const getCorrectRef = (ref: React.RefObject<HTMLElement>): React.RefObject<HTMLElement> => {\n switch(customizationProps.itemsType)\n {\n case 'normal':\n return ref as React.RefObject<HTMLButtonElement> || createRef<HTMLButtonElement>();\n default:\n return ref as React.RefObject<HTMLDivElement> || createRef<HTMLDivElement>();\n }\n }\n\n const arrLength = getFilteredItems().length;\n const [elRefs, setElRefs] = React.useState<React.RefObject<HTMLElement>[]>([]);\n\n React.useEffect(() => {\n setElRefs(elRefs => \n Array(arrLength + 1).fill(null)\n .map((_, i) => getCorrectRef(elRefs[i])));\n }, [isOpen, arrLength, selectedValues]);\n \n React.useEffect(() => {\n determineDropUp();\n }, [isOpen]);\n\n\n const haveTopItem = () => {\n if (customizationProps.itemsType == 'radio' && selectedValues && selectedValues?.length > 0) return true;\n else if (customizationProps.itemsType == 'checkbox' && (customizationProps.multiSelect || selectedValues?.length > 0)) return true;\n else if (customizationProps.itemsType == 'normal' && getSuggestions()?.length > 0) return true;\n return false;\n };\n \n const getSuggestions = () => {\n return getFilteredItems().filter(x => x.suggestion);\n }\n\n React.useLayoutEffect(() => {\n if (isOpen && (focused || focused == 0)) {\n const focusThis = focused == 0 && !haveTopItem() ? 1 : focused;\n if(focusThis != focused)\n setFocused(focusThis);\n const newFocusedElement = elRefs[focusThis];\n newFocusedElement?.current?.focus();\n }\n else\n setFocused(null); //if the dropdown is closed, we don't to keep saved the focused item\n }, [isOpen]);\n\n \n\n const getTopItem = () => {\n if (!customizationProps.pinTopItem) return;\n const visibleItems = getFilteredItems();\n const allSelected = selectedValues?.filter(x => visibleItems.some(y => y.value == x)).length == visibleItems.length;\n let showTopItem = false;\n const suggestions = getSuggestions();\n\n if (customizationProps.itemsType == 'radio' && selectedValues && selectedValues?.length > 0) showTopItem = true;\n else if (customizationProps.itemsType == 'checkbox' && (customizationProps.multiSelect || selectedValues?.length > 0)) showTopItem = true;\n else if (customizationProps.itemsType == 'normal' && suggestions.length > 0) showTopItem = true;\n\n if (!showTopItem) return;\n \n return (\n <TopItemContainer>\n {customizationProps.itemsType == 'radio' && (\n <RadioButton\n ref={elRefs[0] as React.RefObject<HTMLDivElement>}\n iconPointerEventsTransparent={true}\n select={() => {}} size={size} id={`${id}_topitem`} label={selectedValues[0]} selected={true} />\n )}\n {customizationProps.itemsType == 'checkbox' && (\n <Checkbox\n ref={elRefs[0] as React.RefObject<HTMLDivElement>}\n select={(selected: boolean) => {\n if (!customizationProps.multiSelect) return;\n\n const newValues = selected ? visibleItems.map(x => x.value) : [];\n setSelectedValues(newValues);\n customizationProps.onValueUpdate && customizationProps.onValueUpdate(newValues);\n }}\n iconPointerEventsTransparent={true}\n semiSelected={customizationProps.multiSelect && !allSelected && selectedValues?.length > 0}\n size={size}\n id={`${id}_checkbox_selectall`}\n label={customizationProps.multiSelect ? 'Select all' : selectedValues[0]}\n selected={!customizationProps.multiSelect || allSelected}\n />\n )}\n {customizationProps.itemsType == 'normal' && (\n <>\n {suggestions.map(x => \n <DropdownButton ref={elRefs[0] as React.RefObject<HTMLButtonElement>} type=\"button\" id={`${id}_topitem`}\n onClick={(e: any) => {\n customizationProps.onValueUpdate([x.value]);\n setSelectedValues([x.value]);\n setIsOpen(false);\n setFocused(null);\n }}>\n <div className=\"item-content\">\n {x?.icon && <div className=\"item-icon\">{x?.icon}</div>}\n <div className=\"item-label\">\n {x?.displayLabel ?? x?.value}\n {x?.noteLabel && <div style={{fontSize: '12px'}}>{x.noteLabel}</div>}\n </div>\n </div>\n </DropdownButton>)}\n </>\n )}\n </TopItemContainer>\n );\n };\n\n const getElements = () => {\n if (getFilteredItems().length === 0) {\n return (\n <ItemsContainer>\n <DropdownButton disabled>\n <span>{messageOnNoResults}</span>\n </DropdownButton>\n </ItemsContainer>\n );\n }\n let number = 0;\n return (\n <ItemsContainer>\n {getFilteredItems().filter(x => x && (customizationProps.itemsType != 'normal' || !x.suggestion)).map(item => {\n return (\n <>\n {customizationProps.itemsType == 'radio' && (\n <RadioButton\n select={(selected: boolean) => {\n if (!selected) return;\n customizationProps.onValueUpdate && customizationProps.onValueUpdate([item.value]);\n setSelectedValues([item.value]);\n }}\n ref={elRefs[number + 1] as React.RefObject<HTMLDivElement>}\n size={size}\n iconPointerEventsTransparent={true}\n disabled={item?.disabled}\n key={`key_${id}_${number++}`}\n id={`${id}_${number + 1}`}\n label={item.value}\n selected={selectedValues?.includes(item.value)}\n />\n )}\n {customizationProps.itemsType == 'checkbox' && (\n <Checkbox\n select={(selected: boolean) => {\n let newValue: string[] = [];\n if (customizationProps.multiSelect) {\n if (selected) newValue = [...selectedValues, item.value];\n else newValue = selectedValues.filter(x => x != item.value);\n } else newValue = selected ? [item.value] : [];\n\n setSelectedValues(newValue);\n customizationProps.onValueUpdate(newValue);\n }}\n iconPointerEventsTransparent={true}\n disabled={item?.disabled} \n ref={elRefs[number + 1] as React.RefObject<HTMLDivElement>}\n size={size}\n key={`key_${id}_${number++}`}\n id={`${id}_${number + 1}`}\n label={item.value}\n selected={selectedValues?.includes(item.value)}\n />\n )}\n {(customizationProps.itemsType == 'normal' || !customizationProps.itemsType) && (\n <DropdownButton\n type=\"button\"\n size={size}\n disabled={item?.disabled}\n ref={elRefs[number + 1] as React.RefObject<HTMLButtonElement>}\n onClick={(e: any) => {\n customizationProps.onValueUpdate([item.value]);\n setSelectedValues([item.value]);\n setIsOpen(false);\n setFocused(null);\n }}\n className={ (item.showDividerAbove ? 'show-divider-above' : '') + ' ' + (selectedValues?.includes(item.value) ? 'active' : '')}\n key={`key_${id}_${number++}`}\n id={`${id}_${number + 1}`}>\n {item.showDividerAbove && <div className=\"divider\"/>}\n <div className=\"item-content\">\n {item.icon && <div className=\"item-icon\">{item.icon}</div>}\n <div className=\"item-label\">\n {item.displayLabel ?? item.value}\n {item.noteLabel && <div style={{fontSize: '12px'}}>{item.noteLabel}</div>}\n </div>\n </div>\n </DropdownButton>\n )}\n </>\n );\n })}\n </ItemsContainer>\n );\n };\n\n return <DDContainer\n ref={dropdownContentRef}\n size={size}\n width={width}\n isButton={isButton}\n alignLeft={alignLeft}\n scrollable={customizationProps.scrollable}\n maxHeight={customizationProps.maxHeight}\n className={[isOpen && 'show', isUp && 'up'].filter(e => !!e).join(' ')}>\n <ListContainer size={size} itemsType={customizationProps.itemsType} onScroll={handleScroll} ref={itemsListRef} scrollable={customizationProps.scrollable}>\n {customizationProps.pinTopItem && getTopItem()}\n {getElements()}\n </ListContainer>\n {customizationProps.action && customizationProps.actionLabel && (\n <ActionButtonContainer>\n <Button width=\"100%\" variant=\"primary\" size={size} onClick={() => customizationProps.action()}>\n {customizationProps.actionLabel}\n </Button>\n </ActionButtonContainer>\n )}\n </DDContainer>;\n /* ),\n {\n handleClickOutside: () => () => {\n if (isOpen) {\n setIsOpen(false);\n setFocused(null);\n }\n },\n },\n );\n\n return <Wrapped />; */\n};\n\nexport default DropdownContent;\n"],"file":"DropdownContent.js"}
1
+ {"version":3,"sources":["../../../src/Dropdown/DropdownContent.tsx"],"names":["DDContainer","styled","div","COLORS","white","props","neutral_100","Size","ItemsContainer","DropdownButtonCSS","ListContainer","neutral_600","neutral_500","MenuContentContainer","ComponentXLStyling","ComponentTextStyle","ComponentLStyling","ComponentMStyling","ComponentSStyling","DividerContainer","TopItemContainer","neutral_200","ActionButtonContainer","MAX_MENU_HEIGHT","AVG_OPTION_HEIGHT","value","displayLabel","noteLabel","suggestion","showDividerAbove","disabled","icon","customContent","itemsType","menuContent","scrollable","multiSelect","maxHeight","actionLabel","action","pinTopItem","onValueUpdate","items","isButton","customizationProps","alignLeft","isOpen","setIsOpen","id","filter","width","hideOnClickOutside","selectedValues","setSelectedValues","messageOnNoResults","focused","setFocused","DropdownContent","React","dropdownContentRef","size","itemsListRef","determineDropUp","options","node","windowHeight","window","menuHeight","Math","instOffsetWithMenu","setIsUp","setNewFocusedElement","index","newFocusedElement","elRefs","getFilteredItems","filtrationString","x","handleKeyDown","e","focusedNow","filtered","i","haveTopItem","document","handleClickOutside","scrollPosition","handleScroll","useLayoutEffect","getCorrectRef","ref","arrLength","setElRefs","Array","getSuggestions","focusThis","getTopItem","visibleItems","allSelected","y","showTopItem","suggestions","c","selectedFirst","selected","newValues","fontSize","getElements","number","item","newValue","isUp"],"mappings":"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","sourcesContent":["import React, { useLayoutEffect, useMemo, createRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport { CommonInteractionStyling } from '../common';\nimport Button from '../Button/Button';\nimport { Size } from '../types';\nimport { ButtonDropdownContentStyling, DropdownButtonCSS } from './CommonStyling';\nimport { ComponentLStyling, ComponentXLStyling, ComponentMStyling, ComponentSStyling, ComponentTextStyle } from '../styles/typography';\nimport { COLORS } from '../styles';\nimport { Checkbox, RadioButton } from '../InputFields';\n\nexport const DDContainer = styled.div<{ isButton: boolean; width?: string; alignLeft?: boolean; size?: Size; scrollable?: boolean; maxHeight?: string }>`\n display: none;\n position: absolute;\n background-color: ${COLORS.white};\n\n width: ${(props) => (props.width ? props.width : '100%')};\n z-index: 1;\n margin: ${(props) => (props.isButton ? '-4px' : '4px 0px')};\n\n &.show {\n display: flex;\n flex-direction: column;\n justify-content: center;\n }\n\n &.up {\n top: auto;\n bottom: 100%;\n }\n\n ${(props) => (props.alignLeft ? 'left: 0px;' : '')}\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 padding-top: 4px;\n padding-right: 0px;\n padding-bottom: 4px;\n padding-left: 0px;\n\n min-width: ${(props) => (props.size == Size.Large ? '320px' : props.size == Size.Medium ? '280px' : '240px')};\n border-radius: ${(props) => (props.size == Size.Large ? '10px' : props.size == Size.Medium ? '8px' : '6px')};\n\n max-height: ${(props) => (!props.scrollable ? 'auto' : props.maxHeight ? props.maxHeight : props.size == Size.Large ? '320px' : props.size == Size.Medium ? '280px' : '240px')};\n`;\n\nconst ItemsContainer = styled.div<{size? : Size}>`\n button.dropdownButton {\n ${props => DropdownButtonCSS(props.size)}\n }`;\n \nconst ListContainer = styled.div<{ scrollable?: boolean; size?: Size; itemsType?: string }>`\n ${(props) => (props.scrollable ? 'overflow-y: scroll;' : '')}\n ${(props) => (props.itemsType != 'normal' ? 'margin-left: 4px;' : '')}\n\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 ${ItemsContainer} {\n padding-top: ${props => props.size == Size.Large ? '8px' : props.size == Size.Medium ? '4px' : '0px' };\n padding-bottom: ${props => props.size == Size.Large ? '8px' : props.size == Size.Medium ? '4px' : '0px' };\n }\n\n /* width */\n ::-webkit-scrollbar {\n width: 4px;\n margin: 0 6px;\n cursor: pointer;\n }\n\n /* Track */\n ::-webkit-scrollbar-track {\n background: ${COLORS.neutral_100};\n border-radius: 8px;\n }\n\n /* Handle */\n ::-webkit-scrollbar-thumb {\n background: ${COLORS.neutral_600};\n border-radius: 8px;\n }\n\n /* Handle on hover */\n ::-webkit-scrollbar-thumb:hover {\n background: ${COLORS.neutral_500};\n }\n`;\n\n\nconst MenuContentContainer = styled.div<{size? : Size}>`\n h1, h2, h3 {\n margin-block-start: 0px;\n margin-block-end: 0px;\n ${props => props.size == Size.Large && ComponentXLStyling(ComponentTextStyle.Bold, COLORS.neutral_500)}\n ${props => props.size == Size.Medium && ComponentLStyling(ComponentTextStyle.Bold, COLORS.neutral_500)}\n ${props => (props.size == Size.Small || !props.size) && ComponentMStyling(ComponentTextStyle.Bold, COLORS.neutral_500)}\n padding: ${props => props.size == Size.Small || !props.size ? '10px 16px 6px' :\n props.size == Size.Medium ? '16px 24px 8px' : '16px 32px 8px'};\n }\n\n p {\n margin-block-start: 0px;\n margin-block-end: 0px;\n ${props => props.size == Size.Large && ComponentLStyling(ComponentTextStyle.Regular, COLORS.neutral_500)}\n ${props => props.size == Size.Medium && ComponentMStyling(ComponentTextStyle.Regular, COLORS.neutral_500)}\n ${props => (props.size == Size.Small || !props.size) && ComponentSStyling(ComponentTextStyle.Regular, COLORS.neutral_500)}\n padding: ${props => props.size == Size.Small || !props.size ? '8px 16px' :\n props.size == Size.Medium ? '12px 24px' : '16px 32px'};\n }\n`;\n\nconst DividerContainer = styled.div<{size? : Size}>`\n position: relative;\n\n margin-top: ${props => props.size == Size.Large ? '16px' : \n props.size == Size.Medium ? '12px' : \n (props.size == Size.Small || !props.size) ? '8px' : '6px'};\n\n div.divider {\n width: 100%;\n margin: 0px;\n }\n`;\n\nconst TopItemContainer = styled.div<{size?:Size}>`\n border-bottom-style: solid;\n border-bottom-color: ${COLORS.neutral_200};\n border-bottom-width: 1px;\n margin-right: 22px;\n\n button {\n ${props => DropdownButtonCSS(props.size)}\n }\n`;\n\nconst ActionButtonContainer = styled.div<{size?:Size}>`\n border-top-style: solid;\n border-top-color: ${COLORS.neutral_200};\n border-top-width: 1px;\n \n padding: ${props => props.size == Size.Small || !props.size ? '0px 16px' : '8px 16px'};\n\n button {\n width: 100%;\n }\n`;\n\nconst MAX_MENU_HEIGHT = 240;\nconst AVG_OPTION_HEIGHT = 48;\n\nexport interface DropdownItem {\n value: string;\n displayLabel?: string;\n noteLabel?: string;\n suggestion?: boolean;\n showDividerAbove?: boolean;\n disabled?: boolean;\n icon?: React.ReactNode;\n customContent?: React.ReactNode;\n}\n\nexport interface DropdownCustomizationProps {\n itemsType?: 'radio' | 'checkbox' | 'normal';\n menuContent?: React.ReactNode;\n scrollable?: boolean;\n multiSelect?: boolean;\n maxHeight?: string;\n actionLabel?: string;\n actionVariant?: 'primary' | 'secondary' | 'tertiary' | undefined;\n action: () => boolean | void | undefined;\n pinTopItem?: boolean;\n onValueUpdate: (values: string[]) => void;\n items: DropdownItem[];\n}\n\nexport interface DropdownProps {\n isButton: boolean;\n customizationProps: DropdownCustomizationProps;\n alignLeft?: boolean;\n isOpen: boolean;\n setIsOpen: (open: boolean) => void;\n size?: Size;\n id: string;\n filter: string;\n width?: string;\n hideOnClickOutside: boolean;\n selectedValues: string[];\n setSelectedValues: (val: string[]) => void;\n messageOnNoResults: string;\n focused: number | null;\n setFocused: (focused: number | null) => void;\n}\n\nconst DropdownContent: React.FunctionComponent<DropdownProps> = ({\n id,\n customizationProps,\n alignLeft,\n isButton,\n size,\n isOpen,\n hideOnClickOutside,\n width,\n setIsOpen,\n filter,\n focused,\n setFocused,\n selectedValues,\n setSelectedValues,\n messageOnNoResults,\n}) => {\n const [isUp, setIsUp] = React.useState<boolean>(false);\n const dropdownContentRef = React.useRef<HTMLDivElement>(null);\n\n if (!customizationProps.itemsType) customizationProps.itemsType = 'normal';\n if (!size) size = Size.Small;\n\n const itemsListRef = React.useRef<HTMLDivElement>(null);\n\n const determineDropUp = () => {\n const options = customizationProps.items;\n const node = dropdownContentRef.current;\n\n if (!node) return;\n\n const windowHeight = window.innerHeight;\n const menuHeight = Math.min(MAX_MENU_HEIGHT, options.length * AVG_OPTION_HEIGHT);\n const instOffsetWithMenu = node.getBoundingClientRect().top + menuHeight;\n setIsUp(instOffsetWithMenu >= windowHeight);\n };\n\n const setNewFocusedElement = (index: number) => {\n const newFocusedElement = elRefs[index];\n if (newFocusedElement) {\n setFocused(index);\n newFocusedElement?.current?.focus();\n }\n };\n\n const getFilteredItems = () => {\n const filtrationString = (filter ?? '').toUpperCase();\n return customizationProps.items.filter((x) => x?.value?.toUpperCase().includes(filtrationString) || x?.displayLabel?.toUpperCase().includes(filtrationString));\n };\n\n const handleKeyDown = (e: any) => {\n if (isOpen) {\n if (e.keyCode === 38) {\n e.preventDefault();\n var focusedNow = focused;\n if (focusedNow !== undefined && focusedNow !== null && focusedNow > 0) {\n const filtered = getFilteredItems();\n for (let i = focusedNow - 1; i > 0; i--) {\n if (!filtered[i - 1]?.disabled) {\n focusedNow = i;\n break;\n }\n }\n setNewFocusedElement(focusedNow);\n }\n } else if (e.keyCode === 40) {\n e.preventDefault();\n var focusedNow = focused;\n if (focusedNow !== undefined && focusedNow !== null) {\n const filtered = getFilteredItems();\n for (let i = focusedNow + 1; i <= filtered.length; i++) {\n if (!filtered[i - 1]?.disabled) {\n focusedNow = i;\n break;\n }\n }\n } else {\n focusedNow = haveTopItem() ? 0 : 1;\n }\n setNewFocusedElement(focusedNow);\n } else if (e.keyCode === 9) {\n e.preventDefault();\n var focusedNow = focused;\n if (focusedNow !== undefined && focusedNow !== null) {\n focusedNow++;\n const newFocusedElement = document.getElementById(`${id}_${focusedNow}`);\n if (!newFocusedElement) {\n setNewFocusedElement(0);\n } else {\n setNewFocusedElement(focusedNow);\n }\n } else {\n setFocused(null);\n }\n } else if (e.keyCode === 27) {\n setIsOpen(false);\n setFocused(null);\n\n //TODO: add onEscapehandler\n /*\n if (!list.includes(input)) {\n setInput('');\n setPlaceholderSearch(placeholder || '');\n }\n styledFieldRef.current?.focus(); */\n }\n }\n };\n\n const handleClickOutside = (e: any) => {\n if (hideOnClickOutside && dropdownContentRef?.current && !dropdownContentRef.current.contains(e.target) && !elRefs.some((x) => x?.current?.contains(e.target))) {\n if (isOpen) {\n setIsOpen(false);\n setFocused(null);\n }\n }\n };\n\n React.useEffect(() => {\n document.addEventListener('keydown', handleKeyDown);\n document.addEventListener('click', handleClickOutside);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n document.removeEventListener('click', handleClickOutside);\n };\n });\n\n const scrollPosition = React.useRef<number | undefined>(0);\n const handleScroll = () => {\n scrollPosition.current = itemsListRef.current?.scrollTop;\n };\n useLayoutEffect(() => {\n if (itemsListRef.current) itemsListRef.current.scrollTop = scrollPosition.current ?? 0;\n }, [selectedValues]);\n\n const getCorrectRef = (ref: React.RefObject<HTMLElement>): React.RefObject<HTMLElement> => {\n switch (customizationProps.itemsType) {\n case 'normal':\n return (ref as React.RefObject<HTMLButtonElement>) || createRef<HTMLButtonElement>();\n default:\n return (ref as React.RefObject<HTMLDivElement>) || createRef<HTMLDivElement>();\n }\n };\n\n const arrLength = getFilteredItems().length;\n const [elRefs, setElRefs] = React.useState<React.RefObject<HTMLElement>[]>([]);\n\n React.useEffect(() => {\n setElRefs((elRefs) =>\n Array(arrLength + 1)\n .fill(null)\n .map((_, i) => getCorrectRef(elRefs[i])),\n );\n }, [isOpen, arrLength, selectedValues]);\n\n React.useEffect(() => {\n determineDropUp();\n }, [isOpen]);\n\n const haveTopItem = () => {\n if (customizationProps.itemsType == 'radio' && selectedValues && selectedValues?.length > 0) return true;\n else if (customizationProps.itemsType == 'checkbox' && (customizationProps.multiSelect || selectedValues?.length > 0)) return true;\n else if (customizationProps.itemsType == 'normal' && getSuggestions()?.length > 0) return true;\n return false;\n };\n\n const getSuggestions = () => {\n return getFilteredItems().filter((x) => x.suggestion);\n };\n\n React.useLayoutEffect(() => {\n if (isOpen && (focused || focused == 0)) {\n const focusThis = focused == 0 && !haveTopItem() ? 1 : focused;\n if (focusThis != focused) setFocused(focusThis);\n const newFocusedElement = elRefs[focusThis];\n newFocusedElement?.current?.focus();\n } else setFocused(null); //if the dropdown is closed, we don't to keep saved the focused item\n }, [isOpen]);\n\n const getTopItem = () => {\n if (!customizationProps.pinTopItem) return;\n const visibleItems = getFilteredItems();\n const allSelected = selectedValues?.filter((x) => visibleItems.some((y) => y.value == x)).length == visibleItems.length;\n let showTopItem = false;\n const suggestions = getSuggestions();\n const displayLabel = selectedValues[0] ? customizationProps.items?.find((c) => c.value === selectedValues[0])?.displayLabel : undefined;\n if (customizationProps.itemsType == 'radio' && selectedValues && selectedValues?.length > 0) showTopItem = true;\n else if (customizationProps.itemsType == 'checkbox' && (customizationProps.multiSelect || selectedValues?.length > 0)) showTopItem = true;\n else if (customizationProps.itemsType == 'normal' && suggestions.length > 0) showTopItem = true;\n\n if (!showTopItem) return;\n\n const selectedFirst = selectedValues.length > 0 ? visibleItems.find(x => x.value == selectedValues[0]) : null;\n \n return (\n <TopItemContainer size={size}>\n {customizationProps.itemsType == 'radio' && (\n <RadioButton\n ref={elRefs[0] as React.RefObject<HTMLDivElement>}\n iconPointerEventsTransparent={true}\n select={() => {}} label={selectedFirst?.displayLabel ?? selectedFirst?.value} \n size={size}\n id={`${id}_topitem`}\n selected={true}\n />\n )}\n {customizationProps.itemsType == 'checkbox' && (\n <Checkbox\n ref={elRefs[0] as React.RefObject<HTMLDivElement>}\n select={(selected: boolean) => {\n if (!customizationProps.multiSelect) return;\n\n const newValues = selected ? visibleItems.map((x) => x.value) : [];\n setSelectedValues(newValues);\n customizationProps.onValueUpdate && customizationProps.onValueUpdate(newValues);\n }}\n iconPointerEventsTransparent={true}\n semiSelected={customizationProps.multiSelect && !allSelected && selectedValues?.length > 0}\n size={size}\n id={`${id}_checkbox_selectall`}\n label={customizationProps.multiSelect ? 'Select all' : (selectedFirst?.displayLabel ?? selectedFirst?.value)}\n selected={!customizationProps.multiSelect || allSelected}\n />\n )}\n {customizationProps.itemsType == 'normal' && (\n <>\n {suggestions.map((x) => (\n <button\n ref={elRefs[0] as React.RefObject<HTMLButtonElement>}\n type=\"button\"\n id={`${id}_topitem`}\n key={`${id}_topitem_${x.value}`}\n onClick={(e: any) => {\n customizationProps.onValueUpdate([x.value]);\n setSelectedValues([x.value]);\n setIsOpen(false);\n setFocused(null);\n }}>\n <div className=\"item-content\">\n {x?.icon && <div className=\"item-icon\">{x?.icon}</div>}\n <div className=\"item-label\">\n {x?.displayLabel ?? x?.value}\n {x?.noteLabel && <div style={{ fontSize: '12px' }}>{x.noteLabel}</div>}\n </div>\n </div>\n </button>))}\n </>\n )}\n </TopItemContainer>\n );\n };\n\n const getElements = () => {\n if (getFilteredItems().length === 0) {\n return (\n <ItemsContainer size={size}>\n <button className=\"dropdownButton\" disabled>\n <span>{messageOnNoResults}</span>\n </button>\n </ItemsContainer>\n );\n }\n let number = 0;\n return (\n <ItemsContainer size={size}>\n {getFilteredItems()\n .filter((x) => x && (customizationProps.itemsType != 'normal' || !x.suggestion))\n .map((item) => {\n return (\n <React.Fragment key={`key_${id}_${item.value}`}>\n {item.customContent}\n {!item.customContent && customizationProps.itemsType == 'radio' && (\n <RadioButton\n select={(selected: boolean) => {\n if (!selected) return;\n customizationProps.onValueUpdate && customizationProps.onValueUpdate([item.value]);\n setSelectedValues([item.value]);\n }}\n ref={elRefs[number + 1] as React.RefObject<HTMLDivElement>}\n size={size}\n iconPointerEventsTransparent={true}\n disabled={item?.disabled}\n key={`key_${id}_${number++}`}\n id={`${id}_${number + 1}`}\n label={item.displayLabel ?? item.value}\n selected={selectedValues?.includes(item.value)}\n />\n )}\n {!item.customContent && customizationProps.itemsType == 'checkbox' && (\n <Checkbox\n select={(selected: boolean) => {\n let newValue: string[] = [];\n if (customizationProps.multiSelect) {\n if (selected) newValue = [...selectedValues, item.value];\n else newValue = selectedValues.filter((x) => x != item.value);\n } else newValue = selected ? [item.value] : [];\n\n setSelectedValues(newValue);\n customizationProps.onValueUpdate(newValue);\n }}\n iconPointerEventsTransparent={true}\n disabled={item?.disabled}\n ref={elRefs[number + 1] as React.RefObject<HTMLDivElement>}\n size={size}\n key={`key_${id}_${number++}`}\n id={`${id}_${number + 1}`}\n label={item.displayLabel ?? item.value}\n selected={selectedValues?.includes(item.value)}\n />\n )}\n {!item.customContent && (customizationProps.itemsType == 'normal' || !customizationProps.itemsType) && (\n <button\n type=\"button\"\n disabled={item?.disabled}\n ref={elRefs[number + 1] as React.RefObject<HTMLButtonElement>}\n onClick={(e: any) => {\n customizationProps.onValueUpdate([item.value]);\n setSelectedValues([item.value]);\n setIsOpen(false);\n setFocused(null);\n }}\n className={ 'dropdownButton ' + (item.showDividerAbove ? 'show-divider-above' : '') + ' ' + (selectedValues?.includes(item.value) ? 'active' : '')}\n key={`key_${id}_${number++}`}\n id={`${id}_${number + 1}`}>\n {item.showDividerAbove && <div className=\"divider\" />}\n <div className=\"item-content\">\n {item.icon && <div className=\"item-icon\">{item.icon}</div>}\n <div className=\"item-label\">\n {item.displayLabel ?? item.value}\n {item.noteLabel && <div style={{ fontSize: '12px' }}>{item.noteLabel}</div>}\n </div>\n </div>\n </button>\n )}\n </React.Fragment>\n );\n })}\n </ItemsContainer>\n );\n };\n\n return (\n <DDContainer\n ref={dropdownContentRef}\n size={size}\n width={width}\n isButton={isButton}\n alignLeft={alignLeft}\n scrollable={customizationProps.scrollable}\n maxHeight={customizationProps.maxHeight}\n className={[isOpen && 'show', isUp && 'up'].filter((e) => !!e).join(' ')}>\n <ListContainer size={size} itemsType={customizationProps.itemsType} onScroll={handleScroll} ref={itemsListRef} scrollable={customizationProps.scrollable}>\n {customizationProps.menuContent &&\n <MenuContentContainer size={size}>\n {customizationProps.menuContent}\n <DividerContainer size={size}>\n <div className=\"divider\" />\n </DividerContainer>\n </MenuContentContainer>}\n {customizationProps.pinTopItem && getTopItem()}\n {getElements()}\n </ListContainer>\n {customizationProps.action && customizationProps.actionLabel && (\n <ActionButtonContainer size={size}>\n <Button width=\"100%\" variant={customizationProps.actionVariant ?? 'primary'} size={size} onClick={() => \n {\n if(customizationProps.action()) //closing the dropdown if action returns 'true'\n setIsOpen(false);\n }}>\n {customizationProps.actionLabel}\n </Button>\n </ActionButtonContainer>\n )}\n </DDContainer>\n );\n /* ),\n {\n handleClickOutside: () => () => {\n if (isOpen) {\n setIsOpen(false);\n setFocused(null);\n }\n },\n },\n );\n\n return <Wrapped />; */\n};\n\nexport default DropdownContent;\n"],"file":"DropdownContent.js"}
@@ -84,6 +84,10 @@
84
84
  margin: auto 0 auto auto;
85
85
  align-items: center;
86
86
  height: 48px;
87
+
88
+ a {
89
+ text-decoration: none;
90
+ }
87
91
 
88
92
  ${_styles.BREAKPOINTS.SMALL} {
89
93
  height: 56px;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/GlobalNavigationBar/RightSideNav.tsx"],"names":["NavContainer","styled","div","BREAKPOINTS","SMALL","MEDIUM","SecondaryButton","ComponentMStyling","ComponentTextStyle","navigationOptions","RightSideNav","secondaryButton","preventFocusOnClick","e","getNavItem","navOption","label","no","action"],"mappings":";;;;;;;;;;;;;;;;;;;;;MAAA,K;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,QAAMA,YAAY,GAAGC,2BAAOC,GAAI;AAChC;AACA;AACA;AACA;AACA;AACA,IAAIC,oBAAYC,KAAM;AACtB;AACA;AACA,IAAID,oBAAYE,MAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAlBA,CAAA;AAqBA,QAAMC,eAAe,GAAGL,gCAAM,cAANA,CAAe;AACvC;AACA;AACA;AACA,IAAIM,mCAAkBC,2BAAD,IAAjBD,EAAiB,OAAjBA,CAAoD;AAJxD,CAAA;;AAYA,QAAMG,YAAY,GAAG,CAAC;AAAA,IAAA,iBAAA;AAAqBC,IAAAA;AAArB,GAAD,KAA8E;AACjG,UAAMC,mBAAmB,GAAIC,CAAD,IAAY;AACtCA,MAAAA,CAAC,CAADA,cAAAA;AADF,KAAA;;AAGA,UAAMC,UAAU,GAAIC,SAAD,IAA0B;AAC3C,UAAIA,SAAS,EAAb,QAAA,EAAyB;AACvB,eAAA,aACE,KAAA,CAAA,aAAA,CAAA,gBAAA,EAAA;AAAS,UAAA,EAAE,EAAX,cAAA;AAAqB,UAAA,SAAS,EAA9B,UAAA;AAA0C,UAAA,GAAG,EAAEA,SAAS,EAAEC;AAA1D,SAAA,EACGD,SAAS,EAFd,KACE,CADF;AADF,OAAA,MAMO;AACL,eAAA,aACE,KAAA,CAAA,aAAA,CAAA,gBAAA,EAAA;AACE,UAAA,EAAE,EADJ,uBAAA;AAEE,UAAA,KAAK,EAAEA,SAAS,EAFlB,KAAA;AAGE,UAAA,EAAE,EAAEA,SAAS,EAATA,EAAAA,IAHN,EAAA;AAIE,UAAA,GAAG,EAAEA,SAAS,EAJhB,KAAA;AAKE,UAAA,WAAW,EALb,mBAAA;AAME,UAAA,OAAO,EAAE,MAAM;AACb,gBAAIA,SAAS,EAAb,OAAA,EAAwB;AACtBA,cAAAA,SAAS,EAATA,OAAAA;AACD;AACF;AAVH,SAAA,EAWGA,SAAS,EAZd,KACE,CADF;AAeD;AAvBH,KAAA;;AAyBA,WAAA,aACE,KAAA,CAAA,aAAA,CAAA,YAAA,EAAA,IAAA,EACGN,iBAAiB,EAAjBA,OAAAA,GAAAA,GAAAA,CAAiCQ,EAAE,IAAIH,UAAU,CADpD,EACoD,CAAjDL,CADH,EAGGE,eAAe,IAAA,aACd,KAAA,CAAA,aAAA,CAAA,eAAA,EAAA;AAAiB,MAAA,OAAO,EAAxB,WAAA;AAAqC,MAAA,OAAO,EAAEA,eAAe,EAAEO;AAA/D,KAAA,EACGP,eAAe,CANxB,KAKM,CAJJ,CADF;AA7BF,GAAA;;;AAJEF,IAAAA,iB;;oBA8CF,Y","sourcesContent":["import * as React from 'react';\nimport styled from 'styled-components';\nimport {NavLink} from 'react-router-dom';\n\nimport {NavItem} from '../NavItem';\nimport {NavButton, NavOption} from '../types';\nimport {BREAKPOINTS, ComponentTextStyle} from '../styles';\nimport {Button} from '../Button';\nimport {ComponentMStyling} from '../styles/typography';\n\nconst NavContainer = styled.div`\n display: flex;\n margin: auto 0 auto auto;\n align-items: center;\n height: 48px;\n\n ${BREAKPOINTS.SMALL} {\n height: 56px;\n }\n ${BREAKPOINTS.MEDIUM} {\n height: 64px;\n }\n\n button,\n div {\n &:hover {\n cursor: pointer;\n }\n }\n`;\n\nconst SecondaryButton = styled(Button)`\n height: 40px;\n margin: 0 8px;\n\n ${ComponentMStyling(ComponentTextStyle.Bold, 'unset')}\n`;\n\ntype Props = {\n navigationOptions?: NavOption[];\n secondaryButton?: NavButton;\n};\n\nconst RightSideNav = ({ navigationOptions, secondaryButton }: Props): React.ReactElement<Props> => {\n const preventFocusOnClick = (e: any) => {\n e.preventDefault();\n };\n const getNavItem = (navOption: NavOption) => {\n if (navOption?.disabled) {\n return (\n <NavItem as={Button} className=\"disabled\" key={navOption?.label}>\n {navOption?.label}\n </NavItem>\n );\n } else {\n return (\n <NavItem\n as={NavLink}\n exact={navOption?.exact}\n to={navOption?.to || ''}\n key={navOption?.label}\n onMouseDown={preventFocusOnClick}\n onClick={() => {\n if (navOption?.onClick) {\n navOption?.onClick();\n }\n }}>\n {navOption?.label}\n </NavItem>\n );\n }\n };\n return (\n <NavContainer>\n {navigationOptions?.reverse().map(no => getNavItem(no))}\n\n {secondaryButton && (\n <SecondaryButton variant=\"secondary\" onClick={secondaryButton?.action}>\n {secondaryButton.label}\n </SecondaryButton>\n )}\n </NavContainer>\n );\n};\n\nexport default RightSideNav;\n"],"file":"RightSideNav.js"}
1
+ {"version":3,"sources":["../../../src/GlobalNavigationBar/RightSideNav.tsx"],"names":["NavContainer","styled","div","BREAKPOINTS","SMALL","MEDIUM","SecondaryButton","ComponentMStyling","ComponentTextStyle","navigationOptions","RightSideNav","secondaryButton","preventFocusOnClick","e","getNavItem","navOption","label","no","action"],"mappings":";;;;;;;;;;;;;;;;;;;;;MAAA,K;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,QAAMA,YAAY,GAAGC,2BAAOC,GAAI;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAIC,oBAAYC,KAAM;AACtB;AACA;AACA,IAAID,oBAAYE,MAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAtBA,CAAA;AAyBA,QAAMC,eAAe,GAAGL,gCAAM,cAANA,CAAe;AACvC;AACA;AACA;AACA,IAAIM,mCAAkBC,2BAAD,IAAjBD,EAAiB,OAAjBA,CAAoD;AAJxD,CAAA;;AAYA,QAAMG,YAAY,GAAG,CAAC;AAAA,IAAA,iBAAA;AAAqBC,IAAAA;AAArB,GAAD,KAA8E;AACjG,UAAMC,mBAAmB,GAAIC,CAAD,IAAY;AACtCA,MAAAA,CAAC,CAADA,cAAAA;AADF,KAAA;;AAGA,UAAMC,UAAU,GAAIC,SAAD,IAA0B;AAC3C,UAAIA,SAAS,EAAb,QAAA,EAAyB;AACvB,eAAA,aACE,KAAA,CAAA,aAAA,CAAA,gBAAA,EAAA;AAAS,UAAA,EAAE,EAAX,cAAA;AAAqB,UAAA,SAAS,EAA9B,UAAA;AAA0C,UAAA,GAAG,EAAEA,SAAS,EAAEC;AAA1D,SAAA,EACGD,SAAS,EAFd,KACE,CADF;AADF,OAAA,MAMO;AACL,eAAA,aACE,KAAA,CAAA,aAAA,CAAA,gBAAA,EAAA;AACE,UAAA,EAAE,EADJ,uBAAA;AAEE,UAAA,KAAK,EAAEA,SAAS,EAFlB,KAAA;AAGE,UAAA,EAAE,EAAEA,SAAS,EAATA,EAAAA,IAHN,EAAA;AAIE,UAAA,GAAG,EAAEA,SAAS,EAJhB,KAAA;AAKE,UAAA,WAAW,EALb,mBAAA;AAME,UAAA,OAAO,EAAE,MAAM;AACb,gBAAIA,SAAS,EAAb,OAAA,EAAwB;AACtBA,cAAAA,SAAS,EAATA,OAAAA;AACD;AACF;AAVH,SAAA,EAWGA,SAAS,EAZd,KACE,CADF;AAeD;AAvBH,KAAA;;AAyBA,WAAA,aACE,KAAA,CAAA,aAAA,CAAA,YAAA,EAAA,IAAA,EACGN,iBAAiB,EAAjBA,OAAAA,GAAAA,GAAAA,CAAiCQ,EAAE,IAAIH,UAAU,CADpD,EACoD,CAAjDL,CADH,EAGGE,eAAe,IAAA,aACd,KAAA,CAAA,aAAA,CAAA,eAAA,EAAA;AAAiB,MAAA,OAAO,EAAxB,WAAA;AAAqC,MAAA,OAAO,EAAEA,eAAe,EAAEO;AAA/D,KAAA,EACGP,eAAe,CANxB,KAKM,CAJJ,CADF;AA7BF,GAAA;;;AAJEF,IAAAA,iB;;oBA8CF,Y","sourcesContent":["import * as React from 'react';\nimport styled from 'styled-components';\nimport {NavLink} from 'react-router-dom';\n\nimport {NavItem} from '../NavItem';\nimport {NavButton, NavOption} from '../types';\nimport {BREAKPOINTS, ComponentTextStyle} from '../styles';\nimport {Button} from '../Button';\nimport {ComponentMStyling} from '../styles/typography';\n\nconst NavContainer = styled.div`\n display: flex;\n margin: auto 0 auto auto;\n align-items: center;\n height: 48px;\n \n a {\n text-decoration: none;\n }\n\n ${BREAKPOINTS.SMALL} {\n height: 56px;\n }\n ${BREAKPOINTS.MEDIUM} {\n height: 64px;\n }\n\n button,\n div {\n &:hover {\n cursor: pointer;\n }\n }\n`;\n\nconst SecondaryButton = styled(Button)`\n height: 40px;\n margin: 0 8px;\n\n ${ComponentMStyling(ComponentTextStyle.Bold, 'unset')}\n`;\n\ntype Props = {\n navigationOptions?: NavOption[];\n secondaryButton?: NavButton;\n};\n\nconst RightSideNav = ({ navigationOptions, secondaryButton }: Props): React.ReactElement<Props> => {\n const preventFocusOnClick = (e: any) => {\n e.preventDefault();\n };\n const getNavItem = (navOption: NavOption) => {\n if (navOption?.disabled) {\n return (\n <NavItem as={Button} className=\"disabled\" key={navOption?.label}>\n {navOption?.label}\n </NavItem>\n );\n } else {\n return (\n <NavItem\n as={NavLink}\n exact={navOption?.exact}\n to={navOption?.to || ''}\n key={navOption?.label}\n onMouseDown={preventFocusOnClick}\n onClick={() => {\n if (navOption?.onClick) {\n navOption?.onClick();\n }\n }}>\n {navOption?.label}\n </NavItem>\n );\n }\n };\n return (\n <NavContainer>\n {navigationOptions?.reverse().map(no => getNavItem(no))}\n\n {secondaryButton && (\n <SecondaryButton variant=\"secondary\" onClick={secondaryButton?.action}>\n {secondaryButton.label}\n </SecondaryButton>\n )}\n </NavContainer>\n );\n};\n\nexport default RightSideNav;\n"],"file":"RightSideNav.js"}