@itwin/itwinui-react 3.0.0-dev.1 → 3.0.0-dev.3

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 (239) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/cjs/core/Alert/Alert.d.ts +47 -28
  3. package/cjs/core/Alert/Alert.js +73 -21
  4. package/cjs/core/Avatar/Avatar.js +1 -1
  5. package/cjs/core/AvatarGroup/AvatarGroup.js +1 -1
  6. package/cjs/core/Breadcrumbs/Breadcrumbs.js +2 -3
  7. package/cjs/core/ButtonGroup/ButtonGroup.js +1 -4
  8. package/cjs/core/Buttons/DropdownButton/DropdownButton.js +3 -5
  9. package/cjs/core/Carousel/Carousel.d.ts +2 -2
  10. package/cjs/core/Carousel/Carousel.js +3 -5
  11. package/cjs/core/Carousel/CarouselDotsList.js +8 -10
  12. package/cjs/core/Carousel/CarouselNavigation.d.ts +2 -2
  13. package/cjs/core/Carousel/CarouselNavigation.js +3 -5
  14. package/cjs/core/Carousel/CarouselSlider.js +10 -15
  15. package/cjs/core/ColorPicker/ColorBuilder.js +7 -10
  16. package/cjs/core/ColorPicker/ColorInputPanel.js +12 -15
  17. package/cjs/core/ColorPicker/ColorPalette.js +4 -6
  18. package/cjs/core/ColorPicker/ColorPicker.js +3 -3
  19. package/cjs/core/ComboBox/ComboBox.js +25 -32
  20. package/cjs/core/ComboBox/ComboBoxDropdown.js +1 -2
  21. package/cjs/core/ComboBox/ComboBoxEndIcon.js +1 -1
  22. package/cjs/core/ComboBox/ComboBoxInput.js +21 -20
  23. package/cjs/core/ComboBox/ComboBoxMenu.js +3 -4
  24. package/cjs/core/ComboBox/ComboBoxMenuItem.js +2 -2
  25. package/cjs/core/ComboBox/helpers.js +4 -5
  26. package/cjs/core/DatePicker/DatePicker.js +32 -32
  27. package/cjs/core/Dialog/Dialog.js +11 -4
  28. package/cjs/core/Dialog/DialogBackdrop.js +1 -1
  29. package/cjs/core/Dialog/DialogContext.d.ts +11 -0
  30. package/cjs/core/Dialog/DialogMain.js +16 -22
  31. package/cjs/core/DropdownMenu/DropdownMenu.js +6 -8
  32. package/cjs/core/ExpandableBlock/ExpandableBlock.js +2 -2
  33. package/cjs/core/FileUpload/FileEmptyCard.js +1 -1
  34. package/cjs/core/FileUpload/FileUpload.d.ts +3 -4
  35. package/cjs/core/FileUpload/FileUpload.js +5 -8
  36. package/cjs/core/FileUpload/FileUploadCard.js +9 -10
  37. package/cjs/core/FileUpload/FileUploadTemplate.d.ts +1 -0
  38. package/cjs/core/FileUpload/FileUploadTemplate.js +1 -0
  39. package/cjs/core/InformationPanel/InformationPanel.js +1 -4
  40. package/cjs/core/LabeledInput/LabeledInput.js +1 -1
  41. package/cjs/core/LabeledTextarea/LabeledTextarea.js +1 -1
  42. package/cjs/core/Menu/Menu.js +3 -4
  43. package/cjs/core/Menu/MenuItem.js +8 -11
  44. package/cjs/core/Modal/Modal.d.ts +8 -9
  45. package/cjs/core/Modal/Modal.js +7 -17
  46. package/cjs/core/SearchBox/SearchBox.js +12 -12
  47. package/cjs/core/Select/Select.js +12 -17
  48. package/cjs/core/SideNavigation/SideNavigation.js +2 -2
  49. package/cjs/core/Slider/Slider.js +16 -19
  50. package/cjs/core/Slider/Thumb.js +1 -1
  51. package/cjs/core/StatusMessage/StatusMessage.js +1 -1
  52. package/cjs/core/Stepper/Stepper.js +1 -1
  53. package/cjs/core/Stepper/StepperStep.js +1 -1
  54. package/cjs/core/Table/Table.js +15 -15
  55. package/cjs/core/Table/TablePaginator.js +2 -3
  56. package/cjs/core/Table/TableRowMemoized.js +38 -45
  57. package/cjs/core/Table/actionHandlers/expandHandler.js +3 -3
  58. package/cjs/core/Table/actionHandlers/filterHandler.js +4 -5
  59. package/cjs/core/Table/actionHandlers/selectHandler.js +6 -6
  60. package/cjs/core/Table/cells/DefaultCell.js +1 -1
  61. package/cjs/core/Table/cells/EditableCell.js +6 -12
  62. package/cjs/core/Table/columns/actionColumn.js +3 -6
  63. package/cjs/core/Table/columns/expanderColumn.js +3 -3
  64. package/cjs/core/Table/columns/selectionColumn.js +4 -4
  65. package/cjs/core/Table/filters/DateRangeFilter/DatePickerInput.js +2 -4
  66. package/cjs/core/Table/filters/DateRangeFilter/DateRangeFilter.js +2 -3
  67. package/cjs/core/Table/filters/NumberRangeFilter/NumberRangeFilter.js +2 -3
  68. package/cjs/core/Table/filters/TextFilter/TextFilter.js +1 -2
  69. package/cjs/core/Table/hooks/useResizeColumns.js +16 -22
  70. package/cjs/core/Table/hooks/useScrollToRow.js +1 -2
  71. package/cjs/core/Table/hooks/useStickyColumns.js +3 -5
  72. package/cjs/core/Table/hooks/useSubRowFiltering.js +2 -4
  73. package/cjs/core/Tabs/Tabs.js +13 -16
  74. package/cjs/core/ThemeProvider/ThemeContext.d.ts +1 -1
  75. package/cjs/core/ThemeProvider/ThemeProvider.d.ts +2 -3
  76. package/cjs/core/ThemeProvider/ThemeProvider.js +14 -13
  77. package/cjs/core/Tile/Tile.js +2 -3
  78. package/cjs/core/TimePicker/TimePicker.js +13 -13
  79. package/cjs/core/Toast/Toast.d.ts +5 -10
  80. package/cjs/core/Toast/Toast.js +17 -16
  81. package/cjs/core/Toast/Toaster.d.ts +24 -26
  82. package/cjs/core/Toast/Toaster.js +91 -121
  83. package/cjs/core/Toast/index.d.ts +1 -4
  84. package/cjs/core/Toast/index.js +3 -6
  85. package/cjs/core/TransferList/TransferList.js +3 -4
  86. package/cjs/core/Tree/Tree.js +9 -13
  87. package/cjs/core/Tree/TreeNode.js +9 -10
  88. package/cjs/core/index.d.ts +1 -2
  89. package/cjs/core/index.js +2 -5
  90. package/cjs/core/utils/color/ColorValue.js +9 -15
  91. package/cjs/core/utils/components/AutoclearingHiddenLiveRegion.js +2 -3
  92. package/cjs/core/utils/components/FocusTrap.js +4 -4
  93. package/cjs/core/utils/components/MiddleTextTruncation.js +1 -2
  94. package/cjs/core/utils/components/Popover.d.ts +1 -1
  95. package/cjs/core/utils/components/Popover.js +5 -8
  96. package/cjs/core/utils/components/Resizer.js +7 -6
  97. package/cjs/core/utils/components/VirtualScroll.js +14 -21
  98. package/cjs/core/utils/functions/dom.d.ts +0 -8
  99. package/cjs/core/utils/functions/dom.js +3 -26
  100. package/cjs/core/utils/functions/polymorphic.d.ts +1 -1
  101. package/cjs/core/utils/functions/polymorphic.js +1 -1
  102. package/cjs/core/utils/functions/supports.js +1 -1
  103. package/cjs/core/utils/hooks/index.d.ts +0 -1
  104. package/cjs/core/utils/hooks/index.js +0 -1
  105. package/cjs/core/utils/hooks/useContainerWidth.js +1 -1
  106. package/cjs/core/utils/hooks/useDragAndDrop.js +8 -10
  107. package/cjs/core/utils/hooks/useEventListener.js +1 -1
  108. package/cjs/core/utils/hooks/useGlobals.d.ts +9 -2
  109. package/cjs/core/utils/hooks/useGlobals.js +6 -4
  110. package/cjs/core/utils/hooks/useId.js +1 -2
  111. package/cjs/core/utils/hooks/useIntersection.js +2 -3
  112. package/cjs/core/utils/hooks/useMediaQuery.js +6 -8
  113. package/cjs/core/utils/hooks/useOverflow.js +1 -2
  114. package/cjs/core/utils/hooks/useResizeObserver.js +3 -4
  115. package/cjs/styles.js +1 -4
  116. package/esm/core/Alert/Alert.d.ts +47 -28
  117. package/esm/core/Alert/Alert.js +74 -22
  118. package/esm/core/Avatar/Avatar.js +1 -1
  119. package/esm/core/AvatarGroup/AvatarGroup.js +1 -1
  120. package/esm/core/Breadcrumbs/Breadcrumbs.js +2 -3
  121. package/esm/core/ButtonGroup/ButtonGroup.js +1 -4
  122. package/esm/core/Buttons/DropdownButton/DropdownButton.js +3 -5
  123. package/esm/core/Carousel/Carousel.d.ts +2 -2
  124. package/esm/core/Carousel/Carousel.js +3 -5
  125. package/esm/core/Carousel/CarouselDotsList.js +8 -10
  126. package/esm/core/Carousel/CarouselNavigation.d.ts +2 -2
  127. package/esm/core/Carousel/CarouselNavigation.js +3 -5
  128. package/esm/core/Carousel/CarouselSlider.js +10 -15
  129. package/esm/core/ColorPicker/ColorBuilder.js +7 -10
  130. package/esm/core/ColorPicker/ColorInputPanel.js +12 -15
  131. package/esm/core/ColorPicker/ColorPalette.js +4 -6
  132. package/esm/core/ColorPicker/ColorPicker.js +3 -3
  133. package/esm/core/ComboBox/ComboBox.js +25 -32
  134. package/esm/core/ComboBox/ComboBoxDropdown.js +1 -2
  135. package/esm/core/ComboBox/ComboBoxEndIcon.js +1 -1
  136. package/esm/core/ComboBox/ComboBoxInput.js +21 -20
  137. package/esm/core/ComboBox/ComboBoxMenu.js +3 -4
  138. package/esm/core/ComboBox/ComboBoxMenuItem.js +2 -2
  139. package/esm/core/ComboBox/helpers.js +4 -5
  140. package/esm/core/DatePicker/DatePicker.js +32 -32
  141. package/esm/core/Dialog/Dialog.js +12 -5
  142. package/esm/core/Dialog/DialogBackdrop.js +1 -1
  143. package/esm/core/Dialog/DialogContext.d.ts +11 -0
  144. package/esm/core/Dialog/DialogMain.js +16 -22
  145. package/esm/core/DropdownMenu/DropdownMenu.js +6 -8
  146. package/esm/core/ExpandableBlock/ExpandableBlock.js +2 -2
  147. package/esm/core/FileUpload/FileEmptyCard.js +1 -1
  148. package/esm/core/FileUpload/FileUpload.d.ts +3 -4
  149. package/esm/core/FileUpload/FileUpload.js +5 -8
  150. package/esm/core/FileUpload/FileUploadCard.js +9 -10
  151. package/esm/core/FileUpload/FileUploadTemplate.d.ts +1 -0
  152. package/esm/core/FileUpload/FileUploadTemplate.js +1 -0
  153. package/esm/core/InformationPanel/InformationPanel.js +1 -4
  154. package/esm/core/LabeledInput/LabeledInput.js +1 -1
  155. package/esm/core/LabeledTextarea/LabeledTextarea.js +1 -1
  156. package/esm/core/Menu/Menu.js +3 -4
  157. package/esm/core/Menu/MenuItem.js +8 -11
  158. package/esm/core/Modal/Modal.d.ts +8 -9
  159. package/esm/core/Modal/Modal.js +3 -10
  160. package/esm/core/SearchBox/SearchBox.js +12 -12
  161. package/esm/core/Select/Select.js +12 -17
  162. package/esm/core/SideNavigation/SideNavigation.js +2 -2
  163. package/esm/core/Slider/Slider.js +16 -19
  164. package/esm/core/Slider/Thumb.js +1 -1
  165. package/esm/core/StatusMessage/StatusMessage.js +1 -1
  166. package/esm/core/Stepper/Stepper.js +1 -1
  167. package/esm/core/Stepper/StepperStep.js +1 -1
  168. package/esm/core/Table/Table.js +15 -15
  169. package/esm/core/Table/TablePaginator.js +2 -3
  170. package/esm/core/Table/TableRowMemoized.js +38 -45
  171. package/esm/core/Table/actionHandlers/expandHandler.js +3 -3
  172. package/esm/core/Table/actionHandlers/filterHandler.js +4 -5
  173. package/esm/core/Table/actionHandlers/selectHandler.js +6 -6
  174. package/esm/core/Table/cells/DefaultCell.js +1 -1
  175. package/esm/core/Table/cells/EditableCell.js +6 -12
  176. package/esm/core/Table/columns/actionColumn.js +3 -6
  177. package/esm/core/Table/columns/expanderColumn.js +3 -3
  178. package/esm/core/Table/columns/selectionColumn.js +4 -4
  179. package/esm/core/Table/filters/DateRangeFilter/DatePickerInput.js +2 -4
  180. package/esm/core/Table/filters/DateRangeFilter/DateRangeFilter.js +2 -3
  181. package/esm/core/Table/filters/NumberRangeFilter/NumberRangeFilter.js +2 -3
  182. package/esm/core/Table/filters/TextFilter/TextFilter.js +1 -2
  183. package/esm/core/Table/hooks/useResizeColumns.js +16 -22
  184. package/esm/core/Table/hooks/useScrollToRow.js +1 -2
  185. package/esm/core/Table/hooks/useStickyColumns.js +3 -5
  186. package/esm/core/Table/hooks/useSubRowFiltering.js +2 -4
  187. package/esm/core/Tabs/Tabs.js +13 -16
  188. package/esm/core/ThemeProvider/ThemeContext.d.ts +1 -1
  189. package/esm/core/ThemeProvider/ThemeProvider.d.ts +2 -3
  190. package/esm/core/ThemeProvider/ThemeProvider.js +15 -14
  191. package/esm/core/Tile/Tile.js +2 -3
  192. package/esm/core/TimePicker/TimePicker.js +13 -13
  193. package/esm/core/Toast/Toast.d.ts +5 -10
  194. package/esm/core/Toast/Toast.js +18 -17
  195. package/esm/core/Toast/Toaster.d.ts +24 -26
  196. package/esm/core/Toast/Toaster.js +85 -121
  197. package/esm/core/Toast/index.d.ts +1 -4
  198. package/esm/core/Toast/index.js +1 -3
  199. package/esm/core/TransferList/TransferList.js +3 -4
  200. package/esm/core/Tree/Tree.js +9 -13
  201. package/esm/core/Tree/TreeNode.js +9 -10
  202. package/esm/core/index.d.ts +1 -2
  203. package/esm/core/index.js +1 -1
  204. package/esm/core/utils/color/ColorValue.js +9 -15
  205. package/esm/core/utils/components/AutoclearingHiddenLiveRegion.js +2 -3
  206. package/esm/core/utils/components/FocusTrap.js +4 -4
  207. package/esm/core/utils/components/MiddleTextTruncation.js +1 -2
  208. package/esm/core/utils/components/Popover.d.ts +1 -1
  209. package/esm/core/utils/components/Popover.js +5 -8
  210. package/esm/core/utils/components/Resizer.js +7 -6
  211. package/esm/core/utils/components/VirtualScroll.js +14 -21
  212. package/esm/core/utils/functions/dom.d.ts +0 -8
  213. package/esm/core/utils/functions/dom.js +2 -21
  214. package/esm/core/utils/functions/polymorphic.d.ts +1 -1
  215. package/esm/core/utils/functions/polymorphic.js +1 -1
  216. package/esm/core/utils/functions/supports.js +1 -1
  217. package/esm/core/utils/hooks/index.d.ts +0 -1
  218. package/esm/core/utils/hooks/index.js +0 -1
  219. package/esm/core/utils/hooks/useContainerWidth.js +1 -1
  220. package/esm/core/utils/hooks/useDragAndDrop.js +8 -10
  221. package/esm/core/utils/hooks/useEventListener.js +1 -1
  222. package/esm/core/utils/hooks/useGlobals.d.ts +9 -2
  223. package/esm/core/utils/hooks/useGlobals.js +6 -4
  224. package/esm/core/utils/hooks/useId.js +1 -2
  225. package/esm/core/utils/hooks/useIntersection.js +2 -3
  226. package/esm/core/utils/hooks/useMediaQuery.js +6 -8
  227. package/esm/core/utils/hooks/useOverflow.js +1 -2
  228. package/esm/core/utils/hooks/useResizeObserver.js +3 -4
  229. package/esm/styles.js +1 -4
  230. package/package.json +2 -2
  231. package/styles.css +19 -20
  232. package/cjs/core/Toast/ToastWrapper.d.ts +0 -10
  233. package/cjs/core/Toast/ToastWrapper.js +0 -49
  234. package/cjs/core/utils/hooks/useIsThemeAlreadySet.d.ts +0 -7
  235. package/cjs/core/utils/hooks/useIsThemeAlreadySet.js +0 -54
  236. package/esm/core/Toast/ToastWrapper.d.ts +0 -10
  237. package/esm/core/Toast/ToastWrapper.js +0 -20
  238. package/esm/core/utils/hooks/useIsThemeAlreadySet.d.ts +0 -7
  239. package/esm/core/utils/hooks/useIsThemeAlreadySet.js +0 -27
@@ -140,17 +140,20 @@ exports.generateLocalizedStrings = generateLocalizedStrings;
140
140
  * <DatePicker date={new Date()} onChange={(e) => console.log('New date value: ' + e)} />
141
141
  */
142
142
  exports.DatePicker = React.forwardRef((props, forwardedRef) => {
143
- var _a, _b, _c, _d, _e, _f, _g, _h;
144
143
  const { date, onChange, localizedNames, className, setFocus = false, showTime = false, use12Hours = false, precision, hourStep, minuteStep, secondStep, useCombinedRenderer, combinedRenderer, hourRenderer, minuteRenderer, secondRenderer, meridiemRenderer, showYearSelection = false, enableRangeSelect = false, startDate, endDate, isDateDisabled, ...rest } = props;
145
- const monthNames = (_a = localizedNames === null || localizedNames === void 0 ? void 0 : localizedNames.months) !== null && _a !== void 0 ? _a : defaultMonths;
146
- const shortDays = (_b = localizedNames === null || localizedNames === void 0 ? void 0 : localizedNames.shortDays) !== null && _b !== void 0 ? _b : defaultShortDays;
147
- const longDays = (_c = localizedNames === null || localizedNames === void 0 ? void 0 : localizedNames.days) !== null && _c !== void 0 ? _c : defaultLongDays;
144
+ const monthNames = localizedNames?.months ?? defaultMonths;
145
+ const shortDays = localizedNames?.shortDays ?? defaultShortDays;
146
+ const longDays = localizedNames?.days ?? defaultLongDays;
148
147
  const [selectedDay, setSelectedDay] = React.useState(date);
149
148
  const [selectedStartDay, setSelectedStartDay] = React.useState(startDate);
150
149
  const [selectedEndDay, setSelectedEndDay] = React.useState(endDate);
151
- const [focusedDay, setFocusedDay] = React.useState((_d = selectedStartDay !== null && selectedStartDay !== void 0 ? selectedStartDay : selectedDay) !== null && _d !== void 0 ? _d : new Date());
152
- const [displayedMonthIndex, setDisplayedMonthIndex] = React.useState((_f = (_e = selectedStartDay === null || selectedStartDay === void 0 ? void 0 : selectedStartDay.getMonth()) !== null && _e !== void 0 ? _e : selectedDay === null || selectedDay === void 0 ? void 0 : selectedDay.getMonth()) !== null && _f !== void 0 ? _f : new Date().getMonth());
153
- const [displayedYear, setDisplayedYear] = React.useState((_h = (_g = selectedStartDay === null || selectedStartDay === void 0 ? void 0 : selectedStartDay.getFullYear()) !== null && _g !== void 0 ? _g : selectedDay === null || selectedDay === void 0 ? void 0 : selectedDay.getFullYear()) !== null && _h !== void 0 ? _h : new Date().getFullYear());
150
+ const [focusedDay, setFocusedDay] = React.useState(selectedStartDay ?? selectedDay ?? new Date());
151
+ const [displayedMonthIndex, setDisplayedMonthIndex] = React.useState(selectedStartDay?.getMonth() ??
152
+ selectedDay?.getMonth() ??
153
+ new Date().getMonth());
154
+ const [displayedYear, setDisplayedYear] = React.useState(selectedStartDay?.getFullYear() ??
155
+ selectedDay?.getFullYear() ??
156
+ new Date().getFullYear());
154
157
  // boolean that toggles between the user picking the start date and end date for date range
155
158
  const [isSelectingStartDate, setIsSelectingStartDate] = React.useState(true);
156
159
  // Used to focus days only when days are changed
@@ -166,15 +169,16 @@ exports.DatePicker = React.forwardRef((props, forwardedRef) => {
166
169
  setDisplayedYear(newYear);
167
170
  }, []);
168
171
  React.useEffect(() => {
169
- var _a, _b, _c, _d;
170
172
  const currentDate = new Date();
171
173
  setSelectedDay(date);
172
174
  setSelectedStartDay(startDate);
173
175
  setSelectedEndDay(endDate);
174
176
  if (!enableRangeSelect) {
175
- setFocusedDay(date !== null && date !== void 0 ? date : currentDate);
177
+ setFocusedDay(date ?? currentDate);
176
178
  }
177
- setMonthAndYear((_b = (_a = startDate === null || startDate === void 0 ? void 0 : startDate.getMonth()) !== null && _a !== void 0 ? _a : date === null || date === void 0 ? void 0 : date.getMonth()) !== null && _b !== void 0 ? _b : currentDate.getMonth(), (_d = (_c = startDate === null || startDate === void 0 ? void 0 : startDate.getFullYear()) !== null && _c !== void 0 ? _c : date === null || date === void 0 ? void 0 : date.getFullYear()) !== null && _d !== void 0 ? _d : currentDate.getFullYear());
179
+ setMonthAndYear(startDate?.getMonth() ?? date?.getMonth() ?? currentDate.getMonth(), startDate?.getFullYear() ??
180
+ date?.getFullYear() ??
181
+ currentDate.getFullYear());
178
182
  }, [date, setMonthAndYear, startDate, endDate, enableRangeSelect]);
179
183
  const days = React.useMemo(() => {
180
184
  let offsetToFirst = new Date(displayedYear, displayedMonthIndex, 1).getDay();
@@ -199,8 +203,7 @@ exports.DatePicker = React.forwardRef((props, forwardedRef) => {
199
203
  return weeksInMonth;
200
204
  }, [days]);
201
205
  const getNewFocusedDate = (newYear, newMonth) => {
202
- var _a;
203
- const currentDate = (_a = selectedStartDay !== null && selectedStartDay !== void 0 ? selectedStartDay : selectedDay) !== null && _a !== void 0 ? _a : new Date();
206
+ const currentDate = selectedStartDay ?? selectedDay ?? new Date();
204
207
  const newDate = new Date(newYear, newMonth, currentDate.getDate(), currentDate.getHours(), currentDate.getMinutes(), currentDate.getSeconds());
205
208
  return newDate;
206
209
  };
@@ -229,51 +232,51 @@ exports.DatePicker = React.forwardRef((props, forwardedRef) => {
229
232
  const onDayClick = (day) => {
230
233
  // single date selection
231
234
  if (!enableRangeSelect) {
232
- if (day.getMonth() !== (selectedDay === null || selectedDay === void 0 ? void 0 : selectedDay.getMonth())) {
235
+ if (day.getMonth() !== selectedDay?.getMonth()) {
233
236
  setMonthAndYear(day.getMonth(), day.getFullYear());
234
237
  }
235
- const currentDate = selectedDay !== null && selectedDay !== void 0 ? selectedDay : new Date();
238
+ const currentDate = selectedDay ?? new Date();
236
239
  const newDate = new Date(day.getFullYear(), day.getMonth(), day.getDate(), currentDate.getHours(), currentDate.getMinutes(), currentDate.getSeconds());
237
240
  setSelectedDay(newDate);
238
241
  setFocusedDay(newDate);
239
- isSingleOnChange(onChange, enableRangeSelect) && (onChange === null || onChange === void 0 ? void 0 : onChange(newDate));
242
+ isSingleOnChange(onChange, enableRangeSelect) && onChange?.(newDate);
240
243
  }
241
244
  // start date selection (date range only)
242
245
  else if (isSelectingStartDate) {
243
- if (day.getMonth() !== (selectedStartDay === null || selectedStartDay === void 0 ? void 0 : selectedStartDay.getMonth())) {
246
+ if (day.getMonth() !== selectedStartDay?.getMonth()) {
244
247
  setMonthAndYear(day.getMonth(), day.getFullYear());
245
248
  }
246
- const currentStartDate = selectedStartDay !== null && selectedStartDay !== void 0 ? selectedStartDay : new Date();
249
+ const currentStartDate = selectedStartDay ?? new Date();
247
250
  const newStartDate = new Date(day.getFullYear(), day.getMonth(), day.getDate(), currentStartDate.getHours(), currentStartDate.getMinutes(), currentStartDate.getSeconds());
248
251
  setSelectedStartDay(newStartDate);
249
252
  setFocusedDay(newStartDate);
250
253
  // if the start date is after the end date or the end date is undefined, reset the end date
251
254
  if (!(0, index_js_1.isBefore)(newStartDate, selectedEndDay)) {
252
255
  setSelectedEndDay(newStartDate);
253
- onChange === null || onChange === void 0 ? void 0 : onChange(newStartDate, newStartDate);
256
+ onChange?.(newStartDate, newStartDate);
254
257
  }
255
258
  else {
256
- selectedEndDay && (onChange === null || onChange === void 0 ? void 0 : onChange(newStartDate, selectedEndDay));
259
+ selectedEndDay && onChange?.(newStartDate, selectedEndDay);
257
260
  }
258
261
  setIsSelectingStartDate(false);
259
262
  }
260
263
  // end date selection (date range only)
261
264
  else {
262
- if (day.getMonth() !== (selectedEndDay === null || selectedEndDay === void 0 ? void 0 : selectedEndDay.getMonth())) {
265
+ if (day.getMonth() !== selectedEndDay?.getMonth()) {
263
266
  setMonthAndYear(day.getMonth(), day.getFullYear());
264
267
  }
265
- const currentEndDate = selectedEndDay !== null && selectedEndDay !== void 0 ? selectedEndDay : new Date();
268
+ const currentEndDate = selectedEndDay ?? new Date();
266
269
  const newEndDate = new Date(day.getFullYear(), day.getMonth(), day.getDate(), currentEndDate.getHours(), currentEndDate.getMinutes(), currentEndDate.getSeconds());
267
270
  setFocusedDay(newEndDate);
268
271
  // if the end date is before the start date, move back the start date and still have user select end date
269
272
  if (!(0, index_js_1.isBefore)(newEndDate, selectedStartDay)) {
270
273
  setSelectedEndDay(newEndDate);
271
- selectedStartDay && (onChange === null || onChange === void 0 ? void 0 : onChange(selectedStartDay, newEndDate));
274
+ selectedStartDay && onChange?.(selectedStartDay, newEndDate);
272
275
  setIsSelectingStartDate(true);
273
276
  }
274
277
  else {
275
278
  setSelectedStartDay(newEndDate);
276
- selectedEndDay && (onChange === null || onChange === void 0 ? void 0 : onChange(newEndDate, selectedEndDay));
279
+ selectedEndDay && onChange?.(newEndDate, selectedEndDay);
277
280
  }
278
281
  }
279
282
  };
@@ -325,7 +328,7 @@ exports.DatePicker = React.forwardRef((props, forwardedRef) => {
325
328
  case 'Enter':
326
329
  case ' ':
327
330
  case 'Spacebar':
328
- if (!(isDateDisabled === null || isDateDisabled === void 0 ? void 0 : isDateDisabled(focusedDay))) {
331
+ if (!isDateDisabled?.(focusedDay)) {
329
332
  onDayClick(focusedDay);
330
333
  }
331
334
  event.preventDefault();
@@ -378,17 +381,14 @@ exports.DatePicker = React.forwardRef((props, forwardedRef) => {
378
381
  React.createElement("div", { onKeyDown: handleCalendarKeyDown, role: 'listbox' }, weeks.map((weekDays, weekIndex) => {
379
382
  return (React.createElement(index_js_1.Box, { key: `week-${displayedMonthIndex}-${weekIndex}`, className: 'iui-calendar-week' }, weekDays.map((weekDay, dayIndex) => {
380
383
  const dateValue = weekDay.getDate();
381
- const isDisabled = isDateDisabled === null || isDateDisabled === void 0 ? void 0 : isDateDisabled(weekDay);
384
+ const isDisabled = isDateDisabled?.(weekDay);
382
385
  return (React.createElement(index_js_1.Box, { key: `day-${displayedMonthIndex}-${dayIndex}`, className: getDayClass(weekDay), onClick: () => !isDisabled && onDayClick(weekDay), role: 'option', tabIndex: isSameDay(weekDay, focusedDay) ? 0 : -1, "aria-disabled": isDisabled ? 'true' : undefined, ref: (element) => isSameDay(weekDay, focusedDay) &&
383
386
  needFocus.current &&
384
- (element === null || element === void 0 ? void 0 : element.focus()) }, dateValue));
387
+ element?.focus() }, dateValue));
385
388
  })));
386
389
  }))),
387
- showTime && (React.createElement(index_js_3.TimePicker, { date: selectedStartDay !== null && selectedStartDay !== void 0 ? selectedStartDay : selectedDay, use12Hours: use12Hours, precision: precision, hourStep: hourStep, minuteStep: minuteStep, secondStep: secondStep, useCombinedRenderer: useCombinedRenderer, combinedRenderer: combinedRenderer, hourRenderer: hourRenderer, minuteRenderer: minuteRenderer, secondRenderer: secondRenderer, meridiemRenderer: meridiemRenderer, onChange: (date) => {
388
- var _a, _b, _c, _d, _e, _f;
389
- return isSingleOnChange(onChange, enableRangeSelect)
390
- ? onChange === null || onChange === void 0 ? void 0 : onChange(date)
391
- : onChange === null || onChange === void 0 ? void 0 : onChange(new Date((_a = selectedStartDay === null || selectedStartDay === void 0 ? void 0 : selectedStartDay.getFullYear()) !== null && _a !== void 0 ? _a : date.getFullYear(), (_b = selectedStartDay === null || selectedStartDay === void 0 ? void 0 : selectedStartDay.getMonth()) !== null && _b !== void 0 ? _b : date.getMonth(), (_c = selectedStartDay === null || selectedStartDay === void 0 ? void 0 : selectedStartDay.getDate()) !== null && _c !== void 0 ? _c : date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds()), new Date((_d = selectedEndDay === null || selectedEndDay === void 0 ? void 0 : selectedEndDay.getFullYear()) !== null && _d !== void 0 ? _d : date.getFullYear(), (_e = selectedEndDay === null || selectedEndDay === void 0 ? void 0 : selectedEndDay.getMonth()) !== null && _e !== void 0 ? _e : date.getMonth(), (_f = selectedEndDay === null || selectedEndDay === void 0 ? void 0 : selectedEndDay.getDate()) !== null && _f !== void 0 ? _f : date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds()));
392
- } }))));
390
+ showTime && (React.createElement(index_js_3.TimePicker, { date: selectedStartDay ?? selectedDay, use12Hours: use12Hours, precision: precision, hourStep: hourStep, minuteStep: minuteStep, secondStep: secondStep, useCombinedRenderer: useCombinedRenderer, combinedRenderer: combinedRenderer, hourRenderer: hourRenderer, minuteRenderer: minuteRenderer, secondRenderer: secondRenderer, meridiemRenderer: meridiemRenderer, onChange: (date) => isSingleOnChange(onChange, enableRangeSelect)
391
+ ? onChange?.(date)
392
+ : onChange?.(new Date(selectedStartDay?.getFullYear() ?? date.getFullYear(), selectedStartDay?.getMonth() ?? date.getMonth(), selectedStartDay?.getDate() ?? date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds()), new Date(selectedEndDay?.getFullYear() ?? date.getFullYear(), selectedEndDay?.getMonth() ?? date.getMonth(), selectedEndDay?.getDate() ?? date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds())) }))));
393
393
  });
394
394
  exports.default = exports.DatePicker;
@@ -32,6 +32,7 @@ exports.Dialog = void 0;
32
32
  * See LICENSE.md in the project root for license terms and full copyright notice.
33
33
  *--------------------------------------------------------------------------------------------*/
34
34
  const React = __importStar(require("react"));
35
+ const ReactDOM = __importStar(require("react-dom"));
35
36
  const classnames_1 = __importDefault(require("classnames"));
36
37
  const DialogTitleBar_js_1 = require("./DialogTitleBar.js");
37
38
  const DialogContent_js_1 = require("./DialogContent.js");
@@ -41,9 +42,16 @@ const DialogButtonBar_js_1 = require("./DialogButtonBar.js");
41
42
  const DialogMain_js_1 = require("./DialogMain.js");
42
43
  const index_js_1 = require("../utils/index.js");
43
44
  const DialogComponent = React.forwardRef((props, ref) => {
44
- const { trapFocus = false, setFocus = false, preventDocumentScroll = false, isOpen = false, isDismissible = true, closeOnEsc = true, closeOnExternalClick = false, onClose, isDraggable = false, isResizable = false, relativeTo = 'viewport', placement, className, ...rest } = props;
45
+ const { trapFocus = false, setFocus = false, preventDocumentScroll = false, isOpen = false, isDismissible = true, closeOnEsc = true, closeOnExternalClick = false, onClose, isDraggable = false, isResizable = false, relativeTo = 'viewport', placement, className, portal = false, ...rest } = props;
45
46
  const dialogRootRef = React.useRef(null);
46
- const refs = (0, index_js_1.useMergedRefs)(ref, dialogRootRef);
47
+ const context = (0, index_js_1.useGlobals)();
48
+ const isClient = (0, index_js_1.useIsClient)();
49
+ const portalTo = typeof portal !== 'boolean'
50
+ ? portal.to
51
+ : portal
52
+ ? context?.portalContainerRef?.current ?? (0, index_js_1.getDocument)()?.body
53
+ : null;
54
+ const dialog = (React.createElement(index_js_1.Box, { className: (0, classnames_1.default)('iui-dialog-wrapper', className), "data-iui-relative": relativeTo === 'container', ref: (0, index_js_1.useMergedRefs)(ref, dialogRootRef), ...rest }));
47
55
  return (React.createElement(DialogContext_js_1.DialogContext.Provider, { value: {
48
56
  isOpen,
49
57
  onClose,
@@ -58,8 +66,7 @@ const DialogComponent = React.forwardRef((props, ref) => {
58
66
  relativeTo,
59
67
  dialogRootRef,
60
68
  placement,
61
- } },
62
- React.createElement(index_js_1.Box, { className: (0, classnames_1.default)('iui-dialog-wrapper', className), "data-iui-relative": relativeTo === 'container', ref: refs, ...rest })));
69
+ } }, portalTo && isClient ? ReactDOM.createPortal(dialog, portalTo) : dialog));
63
70
  });
64
71
  /**
65
72
  * Dialog component.
@@ -56,7 +56,7 @@ exports.DialogBackdrop = React.forwardRef((props, ref) => {
56
56
  if (isDismissible && closeOnExternalClick && onClose) {
57
57
  onClose(event);
58
58
  }
59
- onMouseDown === null || onMouseDown === void 0 ? void 0 : onMouseDown(event);
59
+ onMouseDown?.(event);
60
60
  };
61
61
  return (React.createElement(index_js_1.Backdrop, { isVisible: isVisible, className: (0, classnames_1.default)({ 'iui-backdrop-fixed': relativeTo === 'viewport' }, className), ref: refs, onMouseDown: handleMouseDown, style: {
62
62
  pointerEvents: 'auto',
@@ -61,6 +61,17 @@ export declare type DialogContextProps = {
61
61
  * @default 'viewport'
62
62
  */
63
63
  relativeTo?: 'container' | 'viewport';
64
+ /**
65
+ * If true, the dialog will be portaled into a <div> inside the nearest `ThemeProvider`.
66
+ * Recommended to set to true when for modal dialogs that use `relativeTo='viewport'`.
67
+ *
68
+ * Can be set to an object with a `to` property to portal into a specific element.
69
+ *
70
+ * @default false
71
+ */
72
+ portal?: boolean | {
73
+ to: HTMLElement;
74
+ };
64
75
  /**
65
76
  * Dialog root ref. For internal use.
66
77
  */
@@ -74,8 +74,7 @@ exports.DialogMain = React.forwardRef((props, ref) => {
74
74
  }, [isOpen]);
75
75
  // Prevents document from scrolling when the dialog is open.
76
76
  React.useEffect(() => {
77
- var _a;
78
- const ownerDocument = (_a = dialogRef.current) === null || _a === void 0 ? void 0 : _a.ownerDocument;
77
+ const ownerDocument = dialogRef.current?.ownerDocument;
79
78
  // If there is no `ownerDocument` or `preventDocumentScroll` is false or
80
79
  // document body originally has `overflow: hidden` (possibly from other/parent dialog), then do nothing.
81
80
  if (!ownerDocument ||
@@ -102,7 +101,7 @@ exports.DialogMain = React.forwardRef((props, ref) => {
102
101
  if (isDismissible && closeOnEsc && event.key === 'Escape' && onClose) {
103
102
  onClose(event);
104
103
  }
105
- onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(event);
104
+ onKeyDown?.(event);
106
105
  };
107
106
  const { onPointerDown, transform } = (0, useDragAndDrop_js_1.default)(dialogRef, dialogContext.dialogRootRef, isDraggable);
108
107
  const handlePointerDown = React.useCallback((event) => {
@@ -112,23 +111,19 @@ exports.DialogMain = React.forwardRef((props, ref) => {
112
111
  }, [isDraggable, onPointerDown]);
113
112
  // Prevents dialog from moving when window is being resized
114
113
  (0, index_js_1.useIsomorphicLayoutEffect)(() => {
115
- var _a;
116
114
  if (!isDraggable || !isOpen) {
117
115
  return;
118
116
  }
119
- const rect = (_a = dialogRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
117
+ const rect = dialogRef.current?.getBoundingClientRect();
120
118
  const [translateX, translateY] = (0, index_js_1.getTranslateValues)(dialogRef.current);
121
- setStyle((oldStyle) => {
122
- var _a, _b;
123
- return ({
124
- ...oldStyle,
125
- width: rect === null || rect === void 0 ? void 0 : rect.width,
126
- height: rect === null || rect === void 0 ? void 0 : rect.height,
127
- left: (_a = dialogRef.current) === null || _a === void 0 ? void 0 : _a.offsetLeft,
128
- top: (_b = dialogRef.current) === null || _b === void 0 ? void 0 : _b.offsetTop,
129
- transform: `translate(${translateX}px,${translateY}px)`,
130
- });
131
- });
119
+ setStyle((oldStyle) => ({
120
+ ...oldStyle,
121
+ width: rect?.width,
122
+ height: rect?.height,
123
+ left: dialogRef.current?.offsetLeft,
124
+ top: dialogRef.current?.offsetTop,
125
+ transform: `translate(${translateX}px,${translateY}px)`,
126
+ }));
132
127
  }, [isDraggable, isOpen]);
133
128
  const setResizeStyle = React.useCallback((newStyle) => {
134
129
  setStyle((oldStyle) => ({
@@ -160,15 +155,14 @@ exports.DialogMain = React.forwardRef((props, ref) => {
160
155
  }, timeout: { exit: 600 },
161
156
  // Focuses dialog when opened
162
157
  onEntered: () => {
163
- var _a, _b;
164
- previousFocusedElement.current = (_a = dialogRef.current) === null || _a === void 0 ? void 0 : _a.ownerDocument.activeElement;
165
- setFocus && ((_b = dialogRef.current) === null || _b === void 0 ? void 0 : _b.focus({ preventScroll: true }));
158
+ previousFocusedElement.current = dialogRef.current?.ownerDocument
159
+ .activeElement;
160
+ setFocus && dialogRef.current?.focus({ preventScroll: true });
166
161
  },
167
162
  // Brings back focus to the previously focused element when closed
168
163
  onExit: () => {
169
- var _a, _b, _c;
170
- if ((_a = dialogRef.current) === null || _a === void 0 ? void 0 : _a.contains((_b = dialogRef.current) === null || _b === void 0 ? void 0 : _b.ownerDocument.activeElement)) {
171
- (_c = previousFocusedElement.current) === null || _c === void 0 ? void 0 : _c.focus();
164
+ if (dialogRef.current?.contains(dialogRef.current?.ownerDocument.activeElement)) {
165
+ previousFocusedElement.current?.focus();
172
166
  }
173
167
  }, unmountOnExit: true, nodeRef: dialogRef },
174
168
  React.createElement(DialogDragContext_js_1.DialogDragContext.Provider, { value: { onPointerDown: handlePointerDown } },
@@ -52,29 +52,27 @@ const index_js_2 = require("../Menu/index.js");
52
52
  */
53
53
  const DropdownMenu = (props) => {
54
54
  const { menuItems, children, className, style, role = 'menu', visible, placement = 'bottom-start', onShow, onHide, trigger, id, ...rest } = props;
55
- const [isVisible, setIsVisible] = React.useState(visible !== null && visible !== void 0 ? visible : false);
55
+ const [isVisible, setIsVisible] = React.useState(visible ?? false);
56
56
  React.useEffect(() => {
57
- setIsVisible(visible !== null && visible !== void 0 ? visible : false);
57
+ setIsVisible(visible ?? false);
58
58
  }, [visible]);
59
59
  const open = React.useCallback(() => setIsVisible(true), []);
60
60
  const close = React.useCallback(() => setIsVisible(false), []);
61
61
  const targetRef = React.useRef(null);
62
62
  const onShowHandler = React.useCallback((instance) => {
63
63
  setIsVisible(true);
64
- onShow === null || onShow === void 0 ? void 0 : onShow(instance);
64
+ onShow?.(instance);
65
65
  }, [onShow]);
66
66
  const onHideHandler = React.useCallback((instance) => {
67
- var _a;
68
67
  setIsVisible(false);
69
- (_a = targetRef.current) === null || _a === void 0 ? void 0 : _a.focus();
70
- onHide === null || onHide === void 0 ? void 0 : onHide(instance);
68
+ targetRef.current?.focus();
69
+ onHide?.(instance);
71
70
  }, [onHide]);
72
71
  return (React.createElement(index_js_1.Popover, { content: React.createElement(index_js_2.Menu, { className: className, style: style, role: role, id: id }, React.useMemo(() => menuItems(close), [menuItems, close])), visible: trigger === undefined ? isVisible : undefined, onClickOutside: close, placement: placement, onShow: onShowHandler, onHide: onHideHandler, trigger: visible === undefined ? trigger : undefined, ...rest }, React.cloneElement(children, {
73
72
  ref: (0, index_js_1.mergeRefs)(targetRef, props.children.ref),
74
73
  onClick: (args) => {
75
- var _a, _b;
76
74
  trigger === undefined && (isVisible ? close() : open());
77
- (_b = (_a = children.props).onClick) === null || _b === void 0 ? void 0 : _b.call(_a, args);
75
+ children.props.onClick?.(args);
78
76
  },
79
77
  })));
80
78
  };
@@ -45,7 +45,7 @@ const index_js_1 = require("../utils/index.js");
45
45
  */
46
46
  exports.ExpandableBlock = React.forwardRef((props, ref) => {
47
47
  const { caption, children, className, title, onToggle, style, isExpanded = false, endIcon, status, size = 'default', styleType = 'default', disabled = false, ...rest } = props;
48
- const icon = endIcon !== null && endIcon !== void 0 ? endIcon : (status && index_js_1.StatusIconMap[status]());
48
+ const icon = endIcon ?? (status && index_js_1.StatusIconMap[status]());
49
49
  const [expanded, setExpanded] = React.useState(isExpanded);
50
50
  React.useEffect(() => {
51
51
  setExpanded(isExpanded);
@@ -55,7 +55,7 @@ exports.ExpandableBlock = React.forwardRef((props, ref) => {
55
55
  return;
56
56
  }
57
57
  setExpanded(!expanded);
58
- onToggle === null || onToggle === void 0 ? void 0 : onToggle(!expanded);
58
+ onToggle?.(!expanded);
59
59
  };
60
60
  const onKeyDown = (event) => {
61
61
  if (event.altKey || disabled) {
@@ -47,7 +47,7 @@ const FileEmptyCardText = index_js_1.polymorphic.span('iui-file-card-empty-actio
47
47
  // FileEmptyCard component
48
48
  const FileEmptyCardComponent = React.forwardRef((props, ref) => {
49
49
  const { children, className, ...rest } = props;
50
- return (React.createElement(index_js_1.Box, { className: (0, classnames_1.default)('iui-file-card-empty', className), ref: ref, ...rest }, children !== null && children !== void 0 ? children : (React.createElement(React.Fragment, null,
50
+ return (React.createElement(index_js_1.Box, { className: (0, classnames_1.default)('iui-file-card-empty', className), ref: ref, ...rest }, children ?? (React.createElement(React.Fragment, null,
51
51
  React.createElement(exports.FileEmptyCard.Icon, null),
52
52
  React.createElement(exports.FileEmptyCard.Text, null,
53
53
  React.createElement(FileUploadCard_js_1.default.InputLabel, null, "Choose a file"),
@@ -4,7 +4,6 @@ declare type FileUploadProps = {
4
4
  /**
5
5
  * Content shown over `children` when file is being dragged onto the component.
6
6
  * Should always be used when drag content differs from `children` being wrapped.
7
- * Can be skipped if wrapping `FileUploadTemplate`.
8
7
  */
9
8
  dragContent?: React.ReactNode;
10
9
  /**
@@ -13,15 +12,15 @@ declare type FileUploadProps = {
13
12
  onFileDropped: (files: FileList) => void;
14
13
  /**
15
14
  * Component to wrap `FileUpload` around.
16
- * Either pass `FileUploadTemplate` (for default state) or a different component to wrap.
15
+ * Either pass `FileUploadCard` (for default state) or a different component to wrap.
17
16
  */
18
17
  children: React.ReactNode;
19
18
  };
20
19
  /**
21
- * File upload component to be wrapped around `FileUploadTemplate` or any arbitrary component.
20
+ * File upload component to be wrapped around `FileUploadCard` or any arbitrary component.
22
21
  * Provides support for dragging and dropping multiple files.
23
22
  * @example
24
- * <FileUpload onFileDropped={console.log}><FileUploadTemplate /></FileUpload>
23
+ * <FileUpload onFileDropped={console.log}><FileUploadCard /></FileUpload>
25
24
  * <FileUpload dragContent='Drop file here' onFileDropped={console.log}><Textarea /></FileUpload>
26
25
  */
27
26
  export declare const FileUpload: PolymorphicForwardRefComponent<"div", FileUploadProps>;
@@ -35,10 +35,10 @@ const React = __importStar(require("react"));
35
35
  const classnames_1 = __importDefault(require("classnames"));
36
36
  const index_js_1 = require("../utils/index.js");
37
37
  /**
38
- * File upload component to be wrapped around `FileUploadTemplate` or any arbitrary component.
38
+ * File upload component to be wrapped around `FileUploadCard` or any arbitrary component.
39
39
  * Provides support for dragging and dropping multiple files.
40
40
  * @example
41
- * <FileUpload onFileDropped={console.log}><FileUploadTemplate /></FileUpload>
41
+ * <FileUpload onFileDropped={console.log}><FileUploadCard /></FileUpload>
42
42
  * <FileUpload dragContent='Drop file here' onFileDropped={console.log}><Textarea /></FileUpload>
43
43
  */
44
44
  exports.FileUpload = React.forwardRef((props, ref) => {
@@ -51,31 +51,28 @@ exports.FileUpload = React.forwardRef((props, ref) => {
51
51
  e.stopPropagation();
52
52
  };
53
53
  const onDragEnterHandler = (e) => {
54
- var _a, _b, _c;
55
54
  e.preventDefault();
56
55
  e.stopPropagation();
57
56
  // only set active if a file is dragged over
58
- if (!isDragActive && ((_c = (_b = (_a = e.dataTransfer) === null || _a === void 0 ? void 0 : _a.items) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.kind) === 'file') {
57
+ if (!isDragActive && e.dataTransfer?.items?.[0]?.kind === 'file') {
59
58
  setIsDragActive(true);
60
59
  }
61
60
  };
62
61
  const onDragLeaveHandler = (e) => {
63
- var _a;
64
62
  e.preventDefault();
65
63
  e.stopPropagation();
66
64
  // only set inactive if secondary target is outside the component
67
65
  if (isDragActive &&
68
- !((_a = fileUploadRef.current) === null || _a === void 0 ? void 0 : _a.contains(e.relatedTarget))) {
66
+ !fileUploadRef.current?.contains(e.relatedTarget)) {
69
67
  setIsDragActive(false);
70
68
  }
71
69
  };
72
70
  const onDropHandler = (e) => {
73
- var _a;
74
71
  e.preventDefault();
75
72
  e.stopPropagation();
76
73
  if (isDragActive) {
77
74
  setIsDragActive(false);
78
- onFileDropped((_a = e.dataTransfer) === null || _a === void 0 ? void 0 : _a.files);
75
+ onFileDropped(e.dataTransfer?.files);
79
76
  }
80
77
  };
81
78
  return (React.createElement(index_js_1.Box, { className: (0, classnames_1.default)('iui-file-upload', { 'iui-drag': isDragActive }, className), onDragEnter: onDragEnterHandler, onDragOver: onDragOverHandler, onDragLeave: onDragLeaveHandler, onDrop: onDropHandler, ref: refs, ...rest },
@@ -64,7 +64,7 @@ const FileUploadCardTitle = React.forwardRef((props, ref) => {
64
64
  const { children, className, ...rest } = props;
65
65
  const { files } = (0, index_js_1.useSafeContext)(exports.FileUploadCardContext);
66
66
  const title = files.length > 1 ? files.length + ' files selected' : files[0].name;
67
- return (React.createElement(index_js_1.Box, { as: 'span', className: (0, classnames_1.default)('iui-file-card-title', className), ref: ref, ...rest }, children !== null && children !== void 0 ? children : title));
67
+ return (React.createElement(index_js_1.Box, { as: 'span', className: (0, classnames_1.default)('iui-file-card-title', className), ref: ref, ...rest }, children ?? title));
68
68
  });
69
69
  FileUploadCardTitle.displayName = 'FileUploadCard.Title';
70
70
  // ----------------------------------------------------------------------------
@@ -78,7 +78,7 @@ const FileUploadCardDescription = React.forwardRef((props, ref) => {
78
78
  if (files.length > 2) {
79
79
  description += ', and ' + (files.length - 2) + ' others';
80
80
  }
81
- return (React.createElement(index_js_1.Box, { as: 'span', className: (0, classnames_1.default)('iui-file-card-description', className), ref: ref, ...rest }, children !== null && children !== void 0 ? children : description));
81
+ return (React.createElement(index_js_1.Box, { as: 'span', className: (0, classnames_1.default)('iui-file-card-description', className), ref: ref, ...rest }, children ?? description));
82
82
  });
83
83
  FileUploadCardDescription.displayName = 'FileUploadCard.Description';
84
84
  // ----------------------------------------------------------------------------
@@ -99,8 +99,7 @@ const FileUploadCardInput = React.forwardRef((props, ref) => {
99
99
  const { children, onChange, id, ...rest } = props;
100
100
  const { files, onFilesChange, setInternalFiles, inputId, setInputId } = (0, index_js_1.useSafeContext)(exports.FileUploadCardContext);
101
101
  const setNativeFilesRef = React.useCallback((node) => {
102
- var _a;
103
- if (!node || !((_a = (0, index_js_1.getWindow)()) === null || _a === void 0 ? void 0 : _a.DataTransfer)) {
102
+ if (!node || !(0, index_js_1.getWindow)()?.DataTransfer) {
104
103
  return;
105
104
  }
106
105
  const dataTransfer = new DataTransfer();
@@ -117,19 +116,18 @@ const FileUploadCardInput = React.forwardRef((props, ref) => {
117
116
  return (React.createElement(React.Fragment, null,
118
117
  React.createElement(index_js_1.VisuallyHidden, { as: 'input', type: 'file', unhideOnFocus: false, onChange: (0, index_js_1.mergeEventHandlers)(onChange, (e) => {
119
118
  const _files = Array.from(e.currentTarget.files || []);
120
- onFilesChange === null || onFilesChange === void 0 ? void 0 : onFilesChange(_files);
119
+ onFilesChange?.(_files);
121
120
  setInternalFiles(_files);
122
- }), ref: refs, id: id !== null && id !== void 0 ? id : inputId, ...rest }),
121
+ }), ref: refs, id: id ?? inputId, ...rest }),
123
122
  children));
124
123
  });
125
124
  FileUploadCardInput.displayName = 'FileUploadCard.Input';
126
125
  const FileUploadCardComponent = React.forwardRef((props, ref) => {
127
- var _a;
128
126
  const { className, children, files: filesProp, onFilesChange, emptyCard = React.createElement(FileEmptyCard_js_1.FileEmptyCard, null), input, ...rest } = props;
129
127
  const [internalFiles, setInternalFiles] = React.useState();
130
128
  const uid = (0, index_js_1.useId)();
131
129
  const [inputId, setInputId] = React.useState(uid);
132
- const files = (_a = filesProp !== null && filesProp !== void 0 ? filesProp : internalFiles) !== null && _a !== void 0 ? _a : [];
130
+ const files = filesProp ?? internalFiles ?? [];
133
131
  return (React.createElement(exports.FileUploadCardContext.Provider, { value: {
134
132
  files,
135
133
  onFilesChange,
@@ -137,13 +135,14 @@ const FileUploadCardComponent = React.forwardRef((props, ref) => {
137
135
  inputId,
138
136
  setInputId,
139
137
  } },
140
- (files === null || files === void 0 ? void 0 : files.length) ? (React.createElement(index_js_1.Box, { className: (0, classnames_1.default)('iui-file-card', className), ref: ref, ...rest }, children !== null && children !== void 0 ? children : (React.createElement(React.Fragment, null,
138
+ files?.length ? (React.createElement(index_js_1.Box, { className: (0, classnames_1.default)('iui-file-card', className), ref: ref, ...rest }, children ?? (React.createElement(React.Fragment, null,
141
139
  React.createElement(exports.FileUploadCard.Icon, null),
142
140
  React.createElement(exports.FileUploadCard.Info, null,
143
141
  React.createElement(exports.FileUploadCard.Title, null),
144
142
  React.createElement(exports.FileUploadCard.Description, null)),
145
143
  React.createElement(exports.FileUploadCard.Action, null,
146
- React.createElement(exports.FileUploadCard.InputLabel, null, "Replace")))))) : (emptyCard), input !== null && input !== void 0 ? input : React.createElement(exports.FileUploadCard.Input, null)));
144
+ React.createElement(exports.FileUploadCard.InputLabel, null, "Replace")))))) : (emptyCard),
145
+ input ?? React.createElement(exports.FileUploadCard.Input, null)));
147
146
  });
148
147
  /**
149
148
  * Default card to be used with the `FileUpload` wrapper component for single-file uploading.
@@ -32,6 +32,7 @@ declare type FileUploadTemplateProps = {
32
32
  children?: React.ReactNode;
33
33
  };
34
34
  /**
35
+ * @deprecated Use `FileUploadCard` instead.
35
36
  * Default template to be used with the `FileUpload` wrapper component.
36
37
  * Contains a hidden input with styled labels (customizable).
37
38
  * @example
@@ -36,6 +36,7 @@ const classnames_1 = __importDefault(require("classnames"));
36
36
  const index_js_1 = require("../utils/index.js");
37
37
  const Anchor_js_1 = require("../Typography/Anchor/Anchor.js");
38
38
  /**
39
+ * @deprecated Use `FileUploadCard` instead.
39
40
  * Default template to be used with the `FileUpload` wrapper component.
40
41
  * Contains a hidden input with styled labels (customizable).
41
42
  * @example
@@ -69,10 +69,7 @@ exports.InformationPanel = React.forwardRef((props, ref) => {
69
69
  e.preventDefault();
70
70
  e.stopPropagation();
71
71
  infoPanelRef.current.ownerDocument.addEventListener('pointermove', onResize);
72
- infoPanelRef.current.ownerDocument.addEventListener('pointerup', () => {
73
- var _a;
74
- return (_a = infoPanelRef.current) === null || _a === void 0 ? void 0 : _a.ownerDocument.removeEventListener('pointermove', onResize);
75
- }, { once: true });
72
+ infoPanelRef.current.ownerDocument.addEventListener('pointerup', () => infoPanelRef.current?.ownerDocument.removeEventListener('pointermove', onResize), { once: true });
76
73
  };
77
74
  const onResize = React.useCallback((e) => {
78
75
  e.preventDefault();
@@ -42,7 +42,7 @@ const index_js_1 = require("../utils/index.js");
42
42
  exports.LabeledInput = React.forwardRef((props, ref) => {
43
43
  const uid = (0, index_js_1.useId)();
44
44
  const { className, disabled = false, label, message, status, svgIcon, style, inputClassName, inputStyle, displayStyle = 'default', iconDisplayStyle = displayStyle === 'default' ? 'block' : 'inline', required = false, id = uid, ...rest } = props;
45
- const icon = svgIcon !== null && svgIcon !== void 0 ? svgIcon : (status && index_js_1.StatusIconMap[status]());
45
+ const icon = svgIcon ?? (status && index_js_1.StatusIconMap[status]());
46
46
  return (React.createElement(index_js_1.InputContainer, { label: label, disabled: disabled, required: required, status: status, message: message, icon: icon, isLabelInline: displayStyle === 'inline', isIconInline: iconDisplayStyle === 'inline', className: className, style: style, inputId: id },
47
47
  React.createElement(Input_js_1.Input, { disabled: disabled, className: inputClassName, style: inputStyle, required: required, ref: ref, id: id, ...rest })));
48
48
  });
@@ -55,7 +55,7 @@ const index_js_2 = require("../Textarea/index.js");
55
55
  exports.LabeledTextarea = React.forwardRef((props, ref) => {
56
56
  const uid = (0, index_js_1.useId)();
57
57
  const { className, style, disabled = false, label, message, status, textareaClassName, textareaStyle, displayStyle = 'default', iconDisplayStyle = displayStyle === 'default' ? 'block' : 'inline', svgIcon, required = false, id = uid, ...textareaProps } = props;
58
- const icon = svgIcon !== null && svgIcon !== void 0 ? svgIcon : (status && index_js_1.StatusIconMap[status]());
58
+ const icon = svgIcon ?? (status && index_js_1.StatusIconMap[status]());
59
59
  return (React.createElement(index_js_1.InputContainer, { label: label, disabled: disabled, required: required, status: status, message: message, icon: icon, isLabelInline: displayStyle === 'inline', isIconInline: iconDisplayStyle === 'inline', className: className, style: style, inputId: id },
60
60
  React.createElement(index_js_2.Textarea, { disabled: disabled, className: textareaClassName, style: textareaStyle, required: required, id: id, ...textareaProps, ref: ref })));
61
61
  });
@@ -48,10 +48,9 @@ exports.Menu = React.forwardRef((props, ref) => {
48
48
  return focusableItems.filter((i) => !focusableItems.some((p) => p.contains(i.parentElement)));
49
49
  }, []);
50
50
  React.useEffect(() => {
51
- var _a;
52
51
  const items = getFocusableNodes();
53
52
  if (focusedIndex != null) {
54
- (_a = items === null || items === void 0 ? void 0 : items[focusedIndex]) === null || _a === void 0 ? void 0 : _a.focus();
53
+ items?.[focusedIndex]?.focus();
55
54
  return;
56
55
  }
57
56
  const selectedIndex = items.findIndex((el) => el.getAttribute('aria-selected') === 'true');
@@ -64,10 +63,10 @@ exports.Menu = React.forwardRef((props, ref) => {
64
63
  return;
65
64
  }
66
65
  const items = getFocusableNodes();
67
- if (!(items === null || items === void 0 ? void 0 : items.length)) {
66
+ if (!items?.length) {
68
67
  return;
69
68
  }
70
- const currentIndex = focusedIndex !== null && focusedIndex !== void 0 ? focusedIndex : 0;
69
+ const currentIndex = focusedIndex ?? 0;
71
70
  switch (event.key) {
72
71
  case 'ArrowDown': {
73
72
  setFocusedIndex(Math.min(currentIndex + 1, items.length - 1));