@boomerang-io/carbon-addons-boomerang-react 4.6.11-beta.4 → 4.6.11-beta.41

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 (255) hide show
  1. package/README.md +162 -162
  2. package/dist/cjs/components/AboutPlatform/AboutPlatform.js +50 -50
  3. package/dist/cjs/components/AdvantageSideNav/AdvantageSideNav.js +218 -241
  4. package/dist/cjs/components/AutoSuggest/AutoSuggest.js +101 -101
  5. package/dist/cjs/components/Avatar/Avatar.js +18 -18
  6. package/dist/cjs/components/CheckboxList/CheckboxList.js +34 -34
  7. package/dist/cjs/components/ComboBox/ComboBox.js +103 -103
  8. package/dist/cjs/components/ComboBoxMultiSelect/ComboBoxMultiSelect.js +32 -32
  9. package/dist/cjs/components/ComboBoxMultiSelect/MultiSelect.js +208 -208
  10. package/dist/cjs/components/ComposedModal/ComposedModal.js +80 -80
  11. package/dist/cjs/components/ConfirmModal/ConfirmModal.js +43 -43
  12. package/dist/cjs/components/Creatable/Creatable.js +137 -137
  13. package/dist/cjs/components/DataDrivenInput/DataDrivenInput.js +226 -226
  14. package/dist/cjs/components/DateInput/DateInput.js +35 -35
  15. package/dist/cjs/components/DecisionButtons/DecisionButtons.js +61 -61
  16. package/dist/cjs/components/DelayedRender/DelayedRender.js +17 -17
  17. package/dist/cjs/components/DynamicFormik/DynamicFormik.js +578 -578
  18. package/dist/cjs/components/Error403/Error403.js +13 -13
  19. package/dist/cjs/components/Error403/ForbiddenErrorBackground.js +113 -113
  20. package/dist/cjs/components/Error403/GraphicWrangler/GraphicWrangler.js +62 -62
  21. package/dist/cjs/components/Error404/Error404.js +13 -13
  22. package/dist/cjs/components/Error404/GraphicLoch/GraphicLoch.js +17 -17
  23. package/dist/cjs/components/Error404/NotFoundErrorBackground.js +129 -129
  24. package/dist/cjs/components/ErrorBoundary/ErrorBoundary.js +32 -32
  25. package/dist/cjs/components/ErrorDragon/ErrorDragon.js +13 -13
  26. package/dist/cjs/components/ErrorDragon/assets/ErrorGraphic.js +35 -35
  27. package/dist/cjs/components/ErrorFullPage/ErrorFullPage.js +10 -10
  28. package/dist/cjs/components/ErrorMessage/ErrorMessage.js +22 -22
  29. package/dist/cjs/components/ErrorPage/ErrorPage.js +11 -11
  30. package/dist/cjs/components/ErrorPageCore/ErrorPageCore.js +15 -15
  31. package/dist/cjs/components/ErrorPageCore/GenericErrorBackground.js +124 -124
  32. package/dist/cjs/components/FeatureHeader/FeatureHeader.js +29 -29
  33. package/dist/cjs/components/FeatureNavTab/FeatureNavTab.js +12 -12
  34. package/dist/cjs/components/FeatureNavTabs/FeatureNavTabs.js +12 -12
  35. package/dist/cjs/components/FeatureSideNav/FeatureSideNav.js +12 -12
  36. package/dist/cjs/components/FeatureSideNav/FeatureSideNavFooter.js +8 -8
  37. package/dist/cjs/components/FeatureSideNav/FeatureSideNavHeader.js +8 -8
  38. package/dist/cjs/components/FeatureSideNav/FeatureSideNavLinks.js +14 -14
  39. package/dist/cjs/components/FeatureSideNavLink/FeatureSideNavLink.js +12 -12
  40. package/dist/cjs/components/Feedback/Feedback.js +37 -40
  41. package/dist/cjs/components/FlowModal/FlowModal.js +141 -141
  42. package/dist/cjs/components/FlowModal/FlowModalForm.js +12 -12
  43. package/dist/cjs/components/Header/Header.js +189 -168
  44. package/dist/cjs/components/Header/HeaderAppSwitcher.js +94 -102
  45. package/dist/cjs/components/Header/HeaderMenu.js +7 -7
  46. package/dist/cjs/components/Header/HeaderMenuItem.js +51 -52
  47. package/dist/cjs/components/Header/HeaderTeamSwitcher.js +327 -0
  48. package/dist/cjs/components/Header/UserRequests.js +29 -29
  49. package/dist/cjs/components/ImageModal/ImageModal.js +17 -17
  50. package/dist/cjs/components/Loading/Loading.js +8 -8
  51. package/dist/cjs/components/MemberBar/MemberBar.js +20 -20
  52. package/dist/cjs/components/Modal/Modal.js +20 -20
  53. package/dist/cjs/components/ModalConfirmEdit/ModalConfirmArray.js +14 -14
  54. package/dist/cjs/components/ModalConfirmEdit/ModalConfirmDetails.js +11 -11
  55. package/dist/cjs/components/ModalConfirmEdit/ModalConfirmEdit.js +17 -17
  56. package/dist/cjs/components/ModalForm/ModalForm.js +9 -9
  57. package/dist/cjs/components/Notifications/NotificationsContainer.js +22 -22
  58. package/dist/cjs/components/Notifications/ToastNotification.js +21 -21
  59. package/dist/cjs/components/Notifications/notify.js +17 -17
  60. package/dist/cjs/components/PlatformBanner/PlatformBanner.js +8 -8
  61. package/dist/cjs/components/PlatformNotifications/PlatformNotification.js +17 -17
  62. package/dist/cjs/components/PlatformNotifications/PlatformNotificationsContainer.js +136 -136
  63. package/dist/cjs/components/Portal/Portal.js +14 -14
  64. package/dist/cjs/components/PrivacyRedirect/PrivacyRedirect.js +30 -30
  65. package/dist/cjs/components/PrivacyStatement/PrivacyStatement.js +90 -90
  66. package/dist/cjs/components/ProfileSettings/ProfileSettings.js +124 -124
  67. package/dist/cjs/components/ProtectedRoute/ProtectedRoute.js +13 -13
  68. package/dist/cjs/components/RadioGroup/RadioGroup.js +33 -33
  69. package/dist/cjs/components/RichTextArea/RichTextArea.js +142 -142
  70. package/dist/cjs/components/SignOut/SignOut.js +27 -27
  71. package/dist/cjs/components/SupportCenter/SupportCenter.js +65 -65
  72. package/dist/cjs/components/TextArea/TextArea.js +16 -16
  73. package/dist/cjs/components/TextInput/TextInput.js +13 -13
  74. package/dist/cjs/components/Toggle/Toggle.js +22 -22
  75. package/dist/cjs/components/TooltipHover/TooltipHover.js +39 -39
  76. package/dist/cjs/components/UIShell/UIShell.js +95 -93
  77. package/dist/cjs/config/servicesConfig.js +22 -21
  78. package/dist/cjs/constants/DataDrivenInputTypes.js +74 -74
  79. package/dist/cjs/constants/UserType.js +13 -13
  80. package/dist/cjs/hooks/useHeaderMenu.js +49 -49
  81. package/dist/cjs/hooks/usePortal.js +74 -74
  82. package/dist/cjs/hooks/useWindowSize.js +33 -33
  83. package/dist/cjs/internal/ListBox/ListBox.js +41 -41
  84. package/dist/cjs/internal/ListBox/ListBoxField.js +19 -19
  85. package/dist/cjs/internal/ListBox/ListBoxMenu.js +19 -19
  86. package/dist/cjs/internal/ListBox/ListBoxMenuIcon.js +31 -31
  87. package/dist/cjs/internal/ListBox/ListBoxMenuItem.js +38 -38
  88. package/dist/cjs/internal/ListBox/ListBoxSelection.js +64 -64
  89. package/dist/cjs/internal/ListBox/index.js +10 -10
  90. package/dist/cjs/internal/keyboard/keys.js +16 -16
  91. package/dist/cjs/internal/keyboard/match.js +67 -67
  92. package/dist/cjs/internal/settings.js +5 -5
  93. package/dist/cjs/tools/accessibility.js +13 -13
  94. package/dist/cjs/tools/createPropAdapter.js +44 -44
  95. package/dist/cjs/tools/isUrl.js +39 -39
  96. package/dist/cjs/tools/setupGetInstanceId.js +20 -20
  97. package/dist/cjs/tools/useSetState.js +12 -12
  98. package/dist/cjs/tools/yupAst/astGenerator.js +212 -212
  99. package/dist/cjs/tools/yupAst/customValidators.js +17 -17
  100. package/dist/esm/components/AboutPlatform/AboutPlatform.js +50 -50
  101. package/dist/esm/components/AdvantageSideNav/AdvantageSideNav.js +220 -243
  102. package/dist/esm/components/AutoSuggest/AutoSuggest.js +101 -101
  103. package/dist/esm/components/Avatar/Avatar.js +18 -18
  104. package/dist/esm/components/CheckboxList/CheckboxList.js +34 -34
  105. package/dist/esm/components/ComboBox/ComboBox.js +103 -103
  106. package/dist/esm/components/ComboBoxMultiSelect/ComboBoxMultiSelect.js +32 -32
  107. package/dist/esm/components/ComboBoxMultiSelect/MultiSelect.js +208 -208
  108. package/dist/esm/components/ComposedModal/ComposedModal.js +80 -80
  109. package/dist/esm/components/ConfirmModal/ConfirmModal.js +43 -43
  110. package/dist/esm/components/Creatable/Creatable.js +137 -137
  111. package/dist/esm/components/DataDrivenInput/DataDrivenInput.js +226 -226
  112. package/dist/esm/components/DateInput/DateInput.js +35 -35
  113. package/dist/esm/components/DecisionButtons/DecisionButtons.js +61 -61
  114. package/dist/esm/components/DelayedRender/DelayedRender.js +17 -17
  115. package/dist/esm/components/DynamicFormik/DynamicFormik.js +578 -578
  116. package/dist/esm/components/Error403/Error403.js +13 -13
  117. package/dist/esm/components/Error403/ForbiddenErrorBackground.js +113 -113
  118. package/dist/esm/components/Error403/GraphicWrangler/GraphicWrangler.js +62 -62
  119. package/dist/esm/components/Error404/Error404.js +13 -13
  120. package/dist/esm/components/Error404/GraphicLoch/GraphicLoch.js +17 -17
  121. package/dist/esm/components/Error404/NotFoundErrorBackground.js +129 -129
  122. package/dist/esm/components/ErrorBoundary/ErrorBoundary.js +32 -32
  123. package/dist/esm/components/ErrorDragon/ErrorDragon.js +13 -13
  124. package/dist/esm/components/ErrorDragon/assets/ErrorGraphic.js +35 -35
  125. package/dist/esm/components/ErrorFullPage/ErrorFullPage.js +10 -10
  126. package/dist/esm/components/ErrorMessage/ErrorMessage.js +22 -22
  127. package/dist/esm/components/ErrorPage/ErrorPage.js +11 -11
  128. package/dist/esm/components/ErrorPageCore/ErrorPageCore.js +15 -15
  129. package/dist/esm/components/ErrorPageCore/GenericErrorBackground.js +124 -124
  130. package/dist/esm/components/FeatureHeader/FeatureHeader.js +29 -29
  131. package/dist/esm/components/FeatureNavTab/FeatureNavTab.js +12 -12
  132. package/dist/esm/components/FeatureNavTabs/FeatureNavTabs.js +12 -12
  133. package/dist/esm/components/FeatureSideNav/FeatureSideNav.js +12 -12
  134. package/dist/esm/components/FeatureSideNav/FeatureSideNavFooter.js +8 -8
  135. package/dist/esm/components/FeatureSideNav/FeatureSideNavHeader.js +8 -8
  136. package/dist/esm/components/FeatureSideNav/FeatureSideNavLinks.js +14 -14
  137. package/dist/esm/components/FeatureSideNavLink/FeatureSideNavLink.js +12 -12
  138. package/dist/esm/components/Feedback/Feedback.js +37 -40
  139. package/dist/esm/components/FlowModal/FlowModal.js +141 -141
  140. package/dist/esm/components/FlowModal/FlowModalForm.js +12 -12
  141. package/dist/esm/components/Header/Header.js +189 -168
  142. package/dist/esm/components/Header/HeaderAppSwitcher.js +94 -102
  143. package/dist/esm/components/Header/HeaderMenu.js +7 -7
  144. package/dist/esm/components/Header/HeaderMenuItem.js +52 -53
  145. package/dist/esm/components/Header/HeaderTeamSwitcher.js +318 -0
  146. package/dist/esm/components/Header/UserRequests.js +29 -29
  147. package/dist/esm/components/ImageModal/ImageModal.js +17 -17
  148. package/dist/esm/components/Loading/Loading.js +8 -8
  149. package/dist/esm/components/MemberBar/MemberBar.js +20 -20
  150. package/dist/esm/components/Modal/Modal.js +20 -20
  151. package/dist/esm/components/ModalConfirmEdit/ModalConfirmArray.js +14 -14
  152. package/dist/esm/components/ModalConfirmEdit/ModalConfirmDetails.js +11 -11
  153. package/dist/esm/components/ModalConfirmEdit/ModalConfirmEdit.js +17 -17
  154. package/dist/esm/components/ModalForm/ModalForm.js +9 -9
  155. package/dist/esm/components/Notifications/NotificationsContainer.js +22 -22
  156. package/dist/esm/components/Notifications/ToastNotification.js +21 -21
  157. package/dist/esm/components/Notifications/notify.js +17 -17
  158. package/dist/esm/components/PlatformBanner/PlatformBanner.js +8 -8
  159. package/dist/esm/components/PlatformNotifications/PlatformNotification.js +17 -17
  160. package/dist/esm/components/PlatformNotifications/PlatformNotificationsContainer.js +136 -136
  161. package/dist/esm/components/Portal/Portal.js +14 -14
  162. package/dist/esm/components/PrivacyRedirect/PrivacyRedirect.js +30 -30
  163. package/dist/esm/components/PrivacyStatement/PrivacyStatement.js +90 -90
  164. package/dist/esm/components/ProfileSettings/ProfileSettings.js +124 -124
  165. package/dist/esm/components/ProtectedRoute/ProtectedRoute.js +13 -13
  166. package/dist/esm/components/RadioGroup/RadioGroup.js +33 -33
  167. package/dist/esm/components/RichTextArea/RichTextArea.js +142 -142
  168. package/dist/esm/components/SignOut/SignOut.js +27 -27
  169. package/dist/esm/components/SupportCenter/SupportCenter.js +65 -65
  170. package/dist/esm/components/TextArea/TextArea.js +16 -16
  171. package/dist/esm/components/TextInput/TextInput.js +13 -13
  172. package/dist/esm/components/Toggle/Toggle.js +22 -22
  173. package/dist/esm/components/TooltipHover/TooltipHover.js +39 -39
  174. package/dist/esm/components/UIShell/UIShell.js +96 -94
  175. package/dist/esm/config/servicesConfig.js +22 -21
  176. package/dist/esm/constants/DataDrivenInputTypes.js +74 -74
  177. package/dist/esm/constants/UserType.js +13 -13
  178. package/dist/esm/hooks/useHeaderMenu.js +49 -49
  179. package/dist/esm/hooks/usePortal.js +74 -74
  180. package/dist/esm/hooks/useWindowSize.js +33 -33
  181. package/dist/esm/internal/ListBox/ListBox.js +41 -41
  182. package/dist/esm/internal/ListBox/ListBoxField.js +19 -19
  183. package/dist/esm/internal/ListBox/ListBoxMenu.js +19 -19
  184. package/dist/esm/internal/ListBox/ListBoxMenuIcon.js +31 -31
  185. package/dist/esm/internal/ListBox/ListBoxMenuItem.js +38 -38
  186. package/dist/esm/internal/ListBox/ListBoxSelection.js +64 -64
  187. package/dist/esm/internal/ListBox/index.js +10 -10
  188. package/dist/esm/internal/keyboard/keys.js +16 -16
  189. package/dist/esm/internal/keyboard/match.js +67 -67
  190. package/dist/esm/internal/settings.js +5 -5
  191. package/dist/esm/tools/accessibility.js +13 -13
  192. package/dist/esm/tools/createPropAdapter.js +44 -44
  193. package/dist/esm/tools/isUrl.js +39 -39
  194. package/dist/esm/tools/setupGetInstanceId.js +20 -20
  195. package/dist/esm/tools/useSetState.js +12 -12
  196. package/dist/esm/tools/yupAst/astGenerator.js +212 -212
  197. package/dist/esm/tools/yupAst/customValidators.js +17 -17
  198. package/dist/types/index.d.ts +1355 -1309
  199. package/package.json +167 -167
  200. package/scss/components/AboutPlatform/_aboutPlatform.scss +139 -139
  201. package/scss/components/AdvantageSideNav/_advantageSideNav.scss +261 -261
  202. package/scss/components/AutoSuggest/_autoSuggest.scss +62 -62
  203. package/scss/components/Avatar/_avatar.scss +32 -32
  204. package/scss/components/CheckboxList/_checkboxList.scss +26 -26
  205. package/scss/components/ComboBox/_combobox.scss +23 -23
  206. package/scss/components/ComboBoxMultiSelect/_comboBoxMultiSelect.scss +53 -53
  207. package/scss/components/ConfirmModal/_confirmModal.scss +12 -12
  208. package/scss/components/Creatable/_creatable.scss +48 -48
  209. package/scss/components/DateInput/_dateInput.scss +36 -36
  210. package/scss/components/DecisionButtons/_decisionButtons.scss +132 -132
  211. package/scss/components/DynamicFormik/_dynamicFormik.scss +17 -17
  212. package/scss/components/ErrorBoundary/_errorBoundary.scss +12 -12
  213. package/scss/components/ErrorDragon/_errorDragon.scss +55 -55
  214. package/scss/components/ErrorMessage/_errorMessage.scss +43 -43
  215. package/scss/components/ErrorPage/_errorPage.scss +66 -66
  216. package/scss/components/ErrorPageCore/_errorPageCore.scss +73 -73
  217. package/scss/components/FeatureHeader/_featureHeader.scss +67 -67
  218. package/scss/components/FeatureNavTab/_featureNavTab.scss +27 -27
  219. package/scss/components/FeatureSideNav/_featureSideNav.scss +76 -76
  220. package/scss/components/FeatureSideNavLink/_featureSideNavLink.scss +49 -49
  221. package/scss/components/Feedback/_feedback.scss +46 -46
  222. package/scss/components/Header/_header.scss +179 -179
  223. package/scss/components/Header/_headerAppSwitcher.scss +117 -117
  224. package/scss/components/Header/_headerMenu.scss +30 -30
  225. package/scss/components/Header/_headerMenuItem.scss +65 -65
  226. package/scss/components/Header/_headerTeamSwitcher.scss +195 -0
  227. package/scss/components/Header/_userRequests.scss +36 -36
  228. package/scss/components/ImageModal/_imageModal.scss +51 -51
  229. package/scss/components/MemberBar/_memberBar.scss +99 -99
  230. package/scss/components/Modal/_modal.scss +163 -163
  231. package/scss/components/ModalConfirmEdit/_modalConfirmEdit.scss +113 -113
  232. package/scss/components/Notifications/_notifications.scss +57 -57
  233. package/scss/components/PlatformBanner/_platformBanner.scss +30 -30
  234. package/scss/components/PlatformNotifications/_platformNotifications.scss +230 -230
  235. package/scss/components/PrivacyRedirect/_privacyRedirect.scss +43 -43
  236. package/scss/components/PrivacyStatement/_privacyStatement.scss +137 -137
  237. package/scss/components/ProfileSettings/_profileSettings.scss +117 -117
  238. package/scss/components/ProtectedRoute/_protectedRoute.scss +32 -32
  239. package/scss/components/RadioGroup/_radioGroup.scss +46 -46
  240. package/scss/components/RichTextArea/_richTextArea.scss +82 -82
  241. package/scss/components/SignOut/_signOut.scss +51 -51
  242. package/scss/components/SupportCenter/_supportCenter.scss +16 -16
  243. package/scss/components/TextArea/_textArea.scss +19 -19
  244. package/scss/components/TextInput/_textInput.scss +26 -26
  245. package/scss/components/Toggle/_toggle.scss +80 -80
  246. package/scss/components/TooltipHover/_tooltip.scss +48 -48
  247. package/scss/global/_config.scss +14 -14
  248. package/scss/global/_tippy.scss +49 -49
  249. package/scss/global/index.scss +401 -402
  250. package/scss/global/themes/_boomerang.scss +184 -184
  251. package/scss/global/themes/_default.scss +79 -79
  252. package/scss/global/themes/_shell-tokens.scss +42 -42
  253. package/scss/global/utils/_animations.scss +15 -15
  254. package/scss/global/utils/_mixins.scss +67 -67
  255. package/scss/global/utils/index.scss +10 -10
@@ -21,214 +21,214 @@ var Downshift__default = /*#__PURE__*/_interopDefault(Downshift);
21
21
  var cx__default = /*#__PURE__*/_interopDefault(cx);
22
22
  var isEqual__default = /*#__PURE__*/_interopDefault(isEqual);
23
23
 
24
- /*
25
- IBM Confidential
26
- 694970X, 69497O0
27
- © Copyright IBM Corp. 2022, 2024
28
- */
29
- const defaultItemToString = (item) => {
30
- if (typeof item === "string") {
31
- return item;
32
- }
33
- return item && item.label;
34
- };
35
- const defaultShouldFilterItem = ({ item, selectedItems, itemToString, inputValue }) => {
36
- let keepItem = true;
37
- const itemString = itemToString(item);
38
- if (selectedItems.some((selectedItem) => itemString === itemToString(selectedItem)) ||
39
- !itemString.toLowerCase().includes(inputValue.toLowerCase())) {
40
- keepItem = false;
41
- }
42
- return keepItem;
43
- };
44
- const getInputValue = (state) => {
45
- return state.inputValue || "";
46
- };
47
- const getInstanceId = setupGetInstanceId.default();
48
- class MultiSelectComboBox extends React__default.default.Component {
49
- static defaultProps = {
50
- itemToString: defaultItemToString,
51
- };
52
- comboBoxInstanceId;
53
- inputNode;
54
- textInput;
55
- constructor(props) {
56
- super(props);
57
- this.textInput = React__default.default.createRef();
58
- this.comboBoxInstanceId = getInstanceId();
59
- this.state = {
60
- inputValue: getInputValue({}),
61
- isOpen: props.open ?? false,
62
- stateSelectedItems: props.initialSelectedItems || props.selectedItems || [],
63
- };
64
- }
65
- //eslint disable-next-line
66
- static getDerivedStateFromProps(nextProps, state) {
67
- /**
68
- * programmatically control this `open` prop
69
- */
70
- const { open } = nextProps;
71
- const { prevOpen } = state;
72
- return prevOpen === open
73
- ? { inputValue: getInputValue(state) }
74
- : {
75
- isOpen: open,
76
- prevOpen: open,
77
- inputValue: getInputValue(state),
78
- };
79
- }
80
- filterItems = (items, selectedItems, itemToString, inputValue) => {
81
- const { shouldFilterItem = defaultShouldFilterItem } = this.props;
82
- return shouldFilterItem
83
- ? items.filter((item) => shouldFilterItem({
84
- item,
85
- selectedItems,
86
- itemToString,
87
- inputValue,
88
- }))
89
- : items;
90
- };
91
- handleOnInputKeyDown = (event) => {
92
- event.stopPropagation();
93
- };
94
- handleOnInputValueChange = (inputValue) => {
95
- const { onInputChange } = this.props;
96
- this.setState(() => ({
97
- // Default to empty string if we have a false-y `inputValue`
98
- inputValue: inputValue || "",
99
- }), () => {
100
- if (onInputChange) {
101
- onInputChange(inputValue);
102
- }
103
- });
104
- };
105
- handleOnChange = (item) => {
106
- if (!item) {
107
- return;
108
- }
109
- const selectedItems = [...this.state.stateSelectedItems];
110
- let selectedIndex;
111
- selectedItems.forEach((selectedItem, index) => {
112
- if (isEqual__default.default(selectedItem, item)) {
113
- selectedIndex = index;
114
- }
115
- });
116
- if (selectedIndex === undefined) {
117
- selectedItems.push(item);
118
- }
119
- else {
120
- selectedItems.splice(selectedIndex, 1);
121
- }
122
- this.setState({ stateSelectedItems: selectedItems });
123
- if (typeof this.props.onChange === "function") {
124
- this.props.onChange({ selectedItems });
125
- }
126
- };
127
- onToggleClick = (isOpen) => (event) => {
128
- if (this.props.onToggleClick) {
129
- this.props.onToggleClick(event);
130
- }
131
- if (event.target === this.textInput.current && isOpen) {
132
- event.preventDownshiftDefault = true;
133
- event.persist();
134
- }
135
- };
136
- openMenu = () => {
137
- this.setState({ isOpen: true });
138
- };
139
- closeMenu = () => {
140
- this.setState({ isOpen: false });
141
- };
142
- handleClearSelection = () => {
143
- this.setState({ stateSelectedItems: [] });
144
- if (typeof this.props.onChange === "function") {
145
- this.props.onChange({ selectedItems: [] });
146
- }
147
- };
148
- handleInputBlur = (e) => {
149
- this.props.onInputBlur && this.props.onInputBlur(e);
150
- this.closeMenu();
151
- };
152
- handleOnStateChange = (changes) => {
153
- const { type } = changes;
154
- switch (type) {
155
- case Downshift__default.default.stateChangeTypes.keyDownEscape:
156
- case Downshift__default.default.stateChangeTypes.mouseUp:
157
- this.setState({ isOpen: false });
158
- break;
159
- // Opt-in to some cases where we should be toggling the menu based on
160
- // a given key press or mouse handler
161
- // Reference: https://github.com/paypal/downshift/issues/206
162
- case Downshift__default.default.stateChangeTypes.clickButton:
163
- case Downshift__default.default.stateChangeTypes.keyDownSpaceButton:
164
- this.setState(() => {
165
- let nextIsOpen = changes.isOpen || false;
166
- if (changes.isOpen === false) {
167
- // If Downshift is trying to close the menu, but we know the input
168
- // is the active element in the document, then keep the menu open
169
- if (this.inputNode === document.activeElement) {
170
- nextIsOpen = true;
171
- }
172
- }
173
- return {
174
- isOpen: nextIsOpen,
175
- };
176
- });
177
- break;
178
- }
179
- };
180
- render() {
181
- const { ariaLabel = "Choose an item", className: containerClassName, disabled = false, direction, downshiftProps, id, invalid, invalidText, items, itemToString = defaultItemToString, itemToElement, initialSelectedItems, titleText, helperText, placeholder, onChange, onInputBlur, onInputChange, light = false, selectedItems: propsSelectedItems, size,
182
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
183
- shouldFilterItem = defaultShouldFilterItem, tagProps, translateWithId, type = "default", ...rest } = this.props;
184
- const { stateSelectedItems, isOpen } = this.state;
185
- const { ListBox, ListBoxField: Field, ListBoxSelection: Selection, ListBoxMenu: Menu, ListBoxMenuItem: MenuItem, ListBoxMenuIcon: MenuIcon, } = index;
186
- // externally controlled if selectedItems props exist
187
- const selectedItems = propsSelectedItems || stateSelectedItems;
188
- const className = cx__default.default(`${settings.prefix}--combo-box`, containerClassName, {
189
- [`${settings.prefix}--list-box--up`]: direction === "top",
190
- });
191
- const titleClasses = cx__default.default(`${settings.prefix}--label`, {
192
- [`${settings.prefix}--label--disabled`]: disabled,
193
- });
194
- const comboBoxHelperId = !helperText ? undefined : `combobox-helper-text-${this.comboBoxInstanceId}`;
195
- const helperClasses = cx__default.default(`${settings.prefix}--form__helper-text`, {
196
- [`${settings.prefix}--form__helper-text--disabled`]: disabled,
197
- });
198
- const wrapperClasses = cx__default.default(`${settings.prefix}--list-box__wrapper`);
199
- const inputClasses = cx__default.default(`${settings.prefix}--text-input`, {
200
- [`${settings.prefix}--text-input--empty`]: !this.state.inputValue,
201
- });
202
- const ItemToElement = itemToElement;
203
- return (React__default.default.createElement(Downshift__default.default, { ...createPropAdapter.mapDownshiftProps(downshiftProps), onChange: this.handleOnChange, onInputValueChange: this.handleOnInputValueChange, inputValue: this.state.inputValue || "", isOpen: isOpen, itemToString: itemToString, onStateChange: this.handleOnStateChange, onOuterClick: this.closeMenu, selectedItem: selectedItems }, ({ getInputProps, getItemProps, getLabelProps, getMenuProps, getToggleButtonProps, isOpen, inputValue, selectedItem, highlightedIndex, clearSelection, }) => (React__default.default.createElement("div", { className: wrapperClasses },
204
- titleText && (React__default.default.createElement("label", { htmlFor: id, className: titleClasses, ...getLabelProps() }, titleText)),
205
- React__default.default.createElement(ListBox, { className: className, disabled: disabled, invalid: invalid, "aria-label": ariaLabel, invalidText: invalidText, isOpen: isOpen, light: light, type: type, size: size },
206
- React__default.default.createElement("div", { className: `${settings.prefix}--bmrg-multi-select-selected` }, Array.isArray(selectedItems) &&
207
- selectedItems.map((item, index) => {
208
- const itemString = itemToString(item);
209
- return (React__default.default.createElement(react.Tag, { key: `${itemString}-${index}`, disabled: disabled, type: "teal", onClick: () => this.handleOnChange(item), onKeyDown: (e) => accessibility.isAccessibleKeyDownEvent(e) && this.handleOnChange(item), filter: true, ...tagProps }, itemString));
210
- })),
211
- React__default.default.createElement(Field, { id: id, disabled: disabled, ...getToggleButtonProps({
212
- disabled,
213
- onClick: this.onToggleClick(isOpen),
214
- }) },
215
- React__default.default.createElement("input", { className: inputClasses, "aria-label": ariaLabel, "aria-controls": `${id}__menu`, "aria-autocomplete": "list", tabIndex: 0, ref: this.textInput, ...rest, ...getInputProps({
216
- disabled,
217
- id,
218
- placeholder,
219
- onKeyDown: this.handleOnInputKeyDown,
220
- onFocus: this.openMenu,
221
- onBlur: this.handleInputBlur,
222
- }) }),
223
- invalid && React__default.default.createElement(icons.WarningFilled, { size: 16, className: `${settings.prefix}--list-box__invalid-icon` }),
224
- (inputValue || selectedItems.length > 0) && (React__default.default.createElement(Selection, { clearSelection: clearSelection, onClearSelection: this.handleClearSelection, disabled: disabled, translateWithId: translateWithId })),
225
- React__default.default.createElement(MenuIcon, { isOpen: isOpen, translateWithId: translateWithId })),
226
- isOpen && (React__default.default.createElement(Menu, { id: id, ...getMenuProps({ "aria-label": ariaLabel }) }, this.filterItems(items, selectedItem, itemToString, inputValue).map((item, index) => {
227
- const itemProps = getItemProps({ item, index });
228
- return (React__default.default.createElement(MenuItem, { key: itemProps.id, isHighlighted: highlightedIndex === index, title: itemToElement ? item.text : itemToString(item), ...itemProps }, typeof ItemToElement !== "undefined" ? (React__default.default.createElement(ItemToElement, { key: itemToString(item), ...item })) : (itemToString(item))));
229
- })))),
230
- helperText && !invalid && (React__default.default.createElement("div", { id: comboBoxHelperId, className: helperClasses }, helperText))))));
231
- }
24
+ /*
25
+ IBM Confidential
26
+ 694970X, 69497O0
27
+ © Copyright IBM Corp. 2022, 2024
28
+ */
29
+ const defaultItemToString = (item) => {
30
+ if (typeof item === "string") {
31
+ return item;
32
+ }
33
+ return item && item.label;
34
+ };
35
+ const defaultShouldFilterItem = ({ item, selectedItems, itemToString, inputValue }) => {
36
+ let keepItem = true;
37
+ const itemString = itemToString(item);
38
+ if (selectedItems.some((selectedItem) => itemString === itemToString(selectedItem)) ||
39
+ !itemString.toLowerCase().includes(inputValue.toLowerCase())) {
40
+ keepItem = false;
41
+ }
42
+ return keepItem;
43
+ };
44
+ const getInputValue = (state) => {
45
+ return state.inputValue || "";
46
+ };
47
+ const getInstanceId = setupGetInstanceId.default();
48
+ class MultiSelectComboBox extends React__default.default.Component {
49
+ static defaultProps = {
50
+ itemToString: defaultItemToString,
51
+ };
52
+ comboBoxInstanceId;
53
+ inputNode;
54
+ textInput;
55
+ constructor(props) {
56
+ super(props);
57
+ this.textInput = React__default.default.createRef();
58
+ this.comboBoxInstanceId = getInstanceId();
59
+ this.state = {
60
+ inputValue: getInputValue({}),
61
+ isOpen: props.open ?? false,
62
+ stateSelectedItems: props.initialSelectedItems || props.selectedItems || [],
63
+ };
64
+ }
65
+ //eslint disable-next-line
66
+ static getDerivedStateFromProps(nextProps, state) {
67
+ /**
68
+ * programmatically control this `open` prop
69
+ */
70
+ const { open } = nextProps;
71
+ const { prevOpen } = state;
72
+ return prevOpen === open
73
+ ? { inputValue: getInputValue(state) }
74
+ : {
75
+ isOpen: open,
76
+ prevOpen: open,
77
+ inputValue: getInputValue(state),
78
+ };
79
+ }
80
+ filterItems = (items, selectedItems, itemToString, inputValue) => {
81
+ const { shouldFilterItem = defaultShouldFilterItem } = this.props;
82
+ return shouldFilterItem
83
+ ? items.filter((item) => shouldFilterItem({
84
+ item,
85
+ selectedItems,
86
+ itemToString,
87
+ inputValue,
88
+ }))
89
+ : items;
90
+ };
91
+ handleOnInputKeyDown = (event) => {
92
+ event.stopPropagation();
93
+ };
94
+ handleOnInputValueChange = (inputValue) => {
95
+ const { onInputChange } = this.props;
96
+ this.setState(() => ({
97
+ // Default to empty string if we have a false-y `inputValue`
98
+ inputValue: inputValue || "",
99
+ }), () => {
100
+ if (onInputChange) {
101
+ onInputChange(inputValue);
102
+ }
103
+ });
104
+ };
105
+ handleOnChange = (item) => {
106
+ if (!item) {
107
+ return;
108
+ }
109
+ const selectedItems = [...this.state.stateSelectedItems];
110
+ let selectedIndex;
111
+ selectedItems.forEach((selectedItem, index) => {
112
+ if (isEqual__default.default(selectedItem, item)) {
113
+ selectedIndex = index;
114
+ }
115
+ });
116
+ if (selectedIndex === undefined) {
117
+ selectedItems.push(item);
118
+ }
119
+ else {
120
+ selectedItems.splice(selectedIndex, 1);
121
+ }
122
+ this.setState({ stateSelectedItems: selectedItems });
123
+ if (typeof this.props.onChange === "function") {
124
+ this.props.onChange({ selectedItems });
125
+ }
126
+ };
127
+ onToggleClick = (isOpen) => (event) => {
128
+ if (this.props.onToggleClick) {
129
+ this.props.onToggleClick(event);
130
+ }
131
+ if (event.target === this.textInput.current && isOpen) {
132
+ event.preventDownshiftDefault = true;
133
+ event.persist();
134
+ }
135
+ };
136
+ openMenu = () => {
137
+ this.setState({ isOpen: true });
138
+ };
139
+ closeMenu = () => {
140
+ this.setState({ isOpen: false });
141
+ };
142
+ handleClearSelection = () => {
143
+ this.setState({ stateSelectedItems: [] });
144
+ if (typeof this.props.onChange === "function") {
145
+ this.props.onChange({ selectedItems: [] });
146
+ }
147
+ };
148
+ handleInputBlur = (e) => {
149
+ this.props.onInputBlur && this.props.onInputBlur(e);
150
+ this.closeMenu();
151
+ };
152
+ handleOnStateChange = (changes) => {
153
+ const { type } = changes;
154
+ switch (type) {
155
+ case Downshift__default.default.stateChangeTypes.keyDownEscape:
156
+ case Downshift__default.default.stateChangeTypes.mouseUp:
157
+ this.setState({ isOpen: false });
158
+ break;
159
+ // Opt-in to some cases where we should be toggling the menu based on
160
+ // a given key press or mouse handler
161
+ // Reference: https://github.com/paypal/downshift/issues/206
162
+ case Downshift__default.default.stateChangeTypes.clickButton:
163
+ case Downshift__default.default.stateChangeTypes.keyDownSpaceButton:
164
+ this.setState(() => {
165
+ let nextIsOpen = changes.isOpen || false;
166
+ if (changes.isOpen === false) {
167
+ // If Downshift is trying to close the menu, but we know the input
168
+ // is the active element in the document, then keep the menu open
169
+ if (this.inputNode === document.activeElement) {
170
+ nextIsOpen = true;
171
+ }
172
+ }
173
+ return {
174
+ isOpen: nextIsOpen,
175
+ };
176
+ });
177
+ break;
178
+ }
179
+ };
180
+ render() {
181
+ const { ariaLabel = "Choose an item", className: containerClassName, disabled = false, direction, downshiftProps, id, invalid, invalidText, items, itemToString = defaultItemToString, itemToElement, initialSelectedItems, titleText, helperText, placeholder, onChange, onInputBlur, onInputChange, light = false, selectedItems: propsSelectedItems, size,
182
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
183
+ shouldFilterItem = defaultShouldFilterItem, tagProps, translateWithId, type = "default", ...rest } = this.props;
184
+ const { stateSelectedItems, isOpen } = this.state;
185
+ const { ListBox, ListBoxField: Field, ListBoxSelection: Selection, ListBoxMenu: Menu, ListBoxMenuItem: MenuItem, ListBoxMenuIcon: MenuIcon, } = index;
186
+ // externally controlled if selectedItems props exist
187
+ const selectedItems = propsSelectedItems || stateSelectedItems;
188
+ const className = cx__default.default(`${settings.prefix}--combo-box`, containerClassName, {
189
+ [`${settings.prefix}--list-box--up`]: direction === "top",
190
+ });
191
+ const titleClasses = cx__default.default(`${settings.prefix}--label`, {
192
+ [`${settings.prefix}--label--disabled`]: disabled,
193
+ });
194
+ const comboBoxHelperId = !helperText ? undefined : `combobox-helper-text-${this.comboBoxInstanceId}`;
195
+ const helperClasses = cx__default.default(`${settings.prefix}--form__helper-text`, {
196
+ [`${settings.prefix}--form__helper-text--disabled`]: disabled,
197
+ });
198
+ const wrapperClasses = cx__default.default(`${settings.prefix}--list-box__wrapper`);
199
+ const inputClasses = cx__default.default(`${settings.prefix}--text-input`, {
200
+ [`${settings.prefix}--text-input--empty`]: !this.state.inputValue,
201
+ });
202
+ const ItemToElement = itemToElement;
203
+ return (React__default.default.createElement(Downshift__default.default, { ...createPropAdapter.mapDownshiftProps(downshiftProps), onChange: this.handleOnChange, onInputValueChange: this.handleOnInputValueChange, inputValue: this.state.inputValue || "", isOpen: isOpen, itemToString: itemToString, onStateChange: this.handleOnStateChange, onOuterClick: this.closeMenu, selectedItem: selectedItems }, ({ getInputProps, getItemProps, getLabelProps, getMenuProps, getToggleButtonProps, isOpen, inputValue, selectedItem, highlightedIndex, clearSelection, }) => (React__default.default.createElement("div", { className: wrapperClasses },
204
+ titleText && (React__default.default.createElement("label", { htmlFor: id, className: titleClasses, ...getLabelProps() }, titleText)),
205
+ React__default.default.createElement(ListBox, { className: className, disabled: disabled, invalid: invalid, "aria-label": ariaLabel, invalidText: invalidText, isOpen: isOpen, light: light, type: type, size: size },
206
+ React__default.default.createElement("div", { className: `${settings.prefix}--bmrg-multi-select-selected` }, Array.isArray(selectedItems) &&
207
+ selectedItems.map((item, index) => {
208
+ const itemString = itemToString(item);
209
+ return (React__default.default.createElement(react.Tag, { key: `${itemString}-${index}`, disabled: disabled, type: "teal", onClick: () => this.handleOnChange(item), onKeyDown: (e) => accessibility.isAccessibleKeyDownEvent(e) && this.handleOnChange(item), filter: true, ...tagProps }, itemString));
210
+ })),
211
+ React__default.default.createElement(Field, { id: id, disabled: disabled, ...getToggleButtonProps({
212
+ disabled,
213
+ onClick: this.onToggleClick(isOpen),
214
+ }) },
215
+ React__default.default.createElement("input", { className: inputClasses, "aria-label": ariaLabel, "aria-controls": `${id}__menu`, "aria-autocomplete": "list", tabIndex: 0, ref: this.textInput, ...rest, ...getInputProps({
216
+ disabled,
217
+ id,
218
+ placeholder,
219
+ onKeyDown: this.handleOnInputKeyDown,
220
+ onFocus: this.openMenu,
221
+ onBlur: this.handleInputBlur,
222
+ }) }),
223
+ invalid && React__default.default.createElement(icons.WarningFilled, { size: 16, className: `${settings.prefix}--list-box__invalid-icon` }),
224
+ (inputValue || selectedItems.length > 0) && (React__default.default.createElement(Selection, { clearSelection: clearSelection, onClearSelection: this.handleClearSelection, disabled: disabled, translateWithId: translateWithId })),
225
+ React__default.default.createElement(MenuIcon, { isOpen: isOpen, translateWithId: translateWithId })),
226
+ isOpen && (React__default.default.createElement(Menu, { id: id, ...getMenuProps({ "aria-label": ariaLabel }) }, this.filterItems(items, selectedItem, itemToString, inputValue).map((item, index) => {
227
+ const itemProps = getItemProps({ item, index });
228
+ return (React__default.default.createElement(MenuItem, { key: itemProps.id, isHighlighted: highlightedIndex === index, title: itemToElement ? item.text : itemToString(item), ...itemProps }, typeof ItemToElement !== "undefined" ? (React__default.default.createElement(ItemToElement, { key: itemToString(item), ...item })) : (itemToString(item))));
229
+ })))),
230
+ helperText && !invalid && (React__default.default.createElement("div", { id: comboBoxHelperId, className: helperClasses }, helperText))))));
231
+ }
232
232
  }
233
233
 
234
234
  exports.default = MultiSelectComboBox;
@@ -15,86 +15,86 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
15
15
  var React__default = /*#__PURE__*/_interopDefault(React);
16
16
  var cx__default = /*#__PURE__*/_interopDefault(cx);
17
17
 
18
- /*
19
- IBM Confidential
20
- 694970X, 69497O0
21
- © Copyright IBM Corp. 2022, 2024
22
- */
23
- function ComposedModal(props) {
24
- const { appElement = "#app", composedModalProps = {}, isOpen = false, modalHeaderProps = {} } = props;
25
- const [state, setState] = useSetState.default({
26
- isConfirmModalOpen: false,
27
- isOpen: isOpen,
28
- shouldConfirmModalClose: false,
29
- step: 0,
30
- ...props.initialState,
31
- });
32
- // Let it be externally controlled
33
- React.useEffect(() => {
34
- setState({ isOpen });
35
- // eslint-disable-next-line
36
- }, [isOpen]);
37
- /**
38
- * Reset to initial state
39
- * and let parent know
40
- */
41
- const resetInitialState = (stateUpdate) => {
42
- setState({
43
- isConfirmModalOpen: false,
44
- shouldConfirmModalClose: false,
45
- ...props.initialState,
46
- ...stateUpdate,
47
- });
48
- };
49
- const handleOpenModal = () => {
50
- setState({ isOpen: true });
51
- };
52
- /**
53
- * Close modal and call event function for parent if provided
54
- */
55
- const handleCloseModal = () => {
56
- resetInitialState({ isOpen: false });
57
- if (typeof props.onCloseModal === "function") {
58
- props.onCloseModal();
59
- }
60
- };
61
- /**
62
- * Check if should confirm exit with confirm modal or just exit modal flow
63
- */
64
- const handleShouldCloseModal = () => {
65
- if (state.shouldConfirmModalClose) {
66
- setState({ isConfirmModalOpen: true });
67
- }
68
- else {
69
- handleCloseModal();
70
- }
71
- };
72
- const closeConfirmModal = () => {
73
- setState({ isConfirmModalOpen: false });
74
- };
75
- /**
76
- * Method passed to children components and they determine if should confirm exit of modal
77
- * @param {bool} shouldConfirmModalClose - boolean of current component
78
- */
79
- const handleSetShouldConfirmModalClose = (shouldConfirmModalClose) => {
80
- setState({ shouldConfirmModalClose });
81
- };
82
- const { containerClassName, ...restComposedModalProps } = composedModalProps;
83
- const { subtitle, ...restModalHeaderProps } = modalHeaderProps;
84
- return (React__default.default.createElement(React__default.default.Fragment, null,
85
- props.modalTrigger && props.modalTrigger({ openModal: handleOpenModal }),
86
- React__default.default.createElement(Modal.Modal, { appElement: appElement, containerClassName: cx__default.default(`${settings.prefix}--bmrg-modal-composed-container`, `${settings.prefix}--modal-container`, props.size ? `${settings.prefix}--modal-container--${props.size}` : "modal-container-fix-width", containerClassName), isOpen: state.isOpen, onRequestClose: handleShouldCloseModal, shouldCloseOnOverlayClick: false, ...restComposedModalProps },
87
- React__default.default.createElement(react.ModalHeader, { closeModal: handleShouldCloseModal, ...restModalHeaderProps }, subtitle && React__default.default.createElement("p", { className: `${settings.prefix}--bmrg-modal-composed-subtitle` }, subtitle)),
88
- state.isOpen &&
89
- typeof props.children === "function" &&
90
- props.children({
91
- closeModal: handleShouldCloseModal,
92
- forceCloseModal: handleCloseModal,
93
- resetInitialState: resetInitialState,
94
- setShouldConfirmModalClose: handleSetShouldConfirmModalClose,
95
- shouldConfirmModalClose: state.shouldConfirmModalClose,
96
- }),
97
- React__default.default.createElement(ConfirmModal.default, { affirmativeAction: handleCloseModal, appElement: appElement, negativeAction: closeConfirmModal, isOpen: state.isConfirmModalOpen, onCloseModal: closeConfirmModal, ...props.confirmModalProps }))));
18
+ /*
19
+ IBM Confidential
20
+ 694970X, 69497O0
21
+ © Copyright IBM Corp. 2022, 2024
22
+ */
23
+ function ComposedModal(props) {
24
+ const { appElement = "#app", composedModalProps = {}, isOpen = false, modalHeaderProps = {} } = props;
25
+ const [state, setState] = useSetState.default({
26
+ isConfirmModalOpen: false,
27
+ isOpen: isOpen,
28
+ shouldConfirmModalClose: false,
29
+ step: 0,
30
+ ...props.initialState,
31
+ });
32
+ // Let it be externally controlled
33
+ React.useEffect(() => {
34
+ setState({ isOpen });
35
+ // eslint-disable-next-line
36
+ }, [isOpen]);
37
+ /**
38
+ * Reset to initial state
39
+ * and let parent know
40
+ */
41
+ const resetInitialState = (stateUpdate) => {
42
+ setState({
43
+ isConfirmModalOpen: false,
44
+ shouldConfirmModalClose: false,
45
+ ...props.initialState,
46
+ ...stateUpdate,
47
+ });
48
+ };
49
+ const handleOpenModal = () => {
50
+ setState({ isOpen: true });
51
+ };
52
+ /**
53
+ * Close modal and call event function for parent if provided
54
+ */
55
+ const handleCloseModal = () => {
56
+ resetInitialState({ isOpen: false });
57
+ if (typeof props.onCloseModal === "function") {
58
+ props.onCloseModal();
59
+ }
60
+ };
61
+ /**
62
+ * Check if should confirm exit with confirm modal or just exit modal flow
63
+ */
64
+ const handleShouldCloseModal = () => {
65
+ if (state.shouldConfirmModalClose) {
66
+ setState({ isConfirmModalOpen: true });
67
+ }
68
+ else {
69
+ handleCloseModal();
70
+ }
71
+ };
72
+ const closeConfirmModal = () => {
73
+ setState({ isConfirmModalOpen: false });
74
+ };
75
+ /**
76
+ * Method passed to children components and they determine if should confirm exit of modal
77
+ * @param {bool} shouldConfirmModalClose - boolean of current component
78
+ */
79
+ const handleSetShouldConfirmModalClose = (shouldConfirmModalClose) => {
80
+ setState({ shouldConfirmModalClose });
81
+ };
82
+ const { containerClassName, ...restComposedModalProps } = composedModalProps;
83
+ const { subtitle, ...restModalHeaderProps } = modalHeaderProps;
84
+ return (React__default.default.createElement(React__default.default.Fragment, null,
85
+ props.modalTrigger && props.modalTrigger({ openModal: handleOpenModal }),
86
+ React__default.default.createElement(Modal.Modal, { appElement: appElement, containerClassName: cx__default.default(`${settings.prefix}--bmrg-modal-composed-container`, `${settings.prefix}--modal-container`, props.size ? `${settings.prefix}--modal-container--${props.size}` : "modal-container-fix-width", containerClassName), isOpen: state.isOpen, onRequestClose: handleShouldCloseModal, shouldCloseOnOverlayClick: false, ...restComposedModalProps },
87
+ React__default.default.createElement(react.ModalHeader, { closeModal: handleShouldCloseModal, ...restModalHeaderProps }, subtitle && React__default.default.createElement("p", { className: `${settings.prefix}--bmrg-modal-composed-subtitle` }, subtitle)),
88
+ state.isOpen &&
89
+ typeof props.children === "function" &&
90
+ props.children({
91
+ closeModal: handleShouldCloseModal,
92
+ forceCloseModal: handleCloseModal,
93
+ resetInitialState: resetInitialState,
94
+ setShouldConfirmModalClose: handleSetShouldConfirmModalClose,
95
+ shouldConfirmModalClose: state.shouldConfirmModalClose,
96
+ }),
97
+ React__default.default.createElement(ConfirmModal.default, { affirmativeAction: handleCloseModal, appElement: appElement, negativeAction: closeConfirmModal, isOpen: state.isConfirmModalOpen, onCloseModal: closeConfirmModal, ...props.confirmModalProps }))));
98
98
  }
99
99
 
100
100
  exports.ComposedModal = ComposedModal;