@itwin/itwinui-react 3.0.0-dev.0 → 3.0.0-dev.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +38 -0
- package/README.md +28 -22
- package/cjs/core/Alert/Alert.d.ts +47 -29
- package/cjs/core/Alert/Alert.js +73 -22
- package/cjs/core/Avatar/Avatar.d.ts +0 -1
- package/cjs/core/Avatar/Avatar.js +1 -2
- package/cjs/core/AvatarGroup/AvatarGroup.d.ts +0 -1
- package/cjs/core/AvatarGroup/AvatarGroup.js +1 -2
- package/cjs/core/Backdrop/Backdrop.d.ts +0 -1
- package/cjs/core/Backdrop/Backdrop.js +0 -1
- package/cjs/core/Badge/Badge.d.ts +0 -1
- package/cjs/core/Badge/Badge.js +0 -1
- package/cjs/core/Breadcrumbs/Breadcrumbs.d.ts +0 -1
- package/cjs/core/Breadcrumbs/Breadcrumbs.js +2 -4
- package/cjs/core/ButtonGroup/ButtonGroup.d.ts +0 -1
- package/cjs/core/ButtonGroup/ButtonGroup.js +1 -5
- package/cjs/core/Buttons/Button/Button.d.ts +0 -1
- package/cjs/core/Buttons/Button/Button.js +0 -1
- package/cjs/core/Buttons/DropdownButton/DropdownButton.d.ts +0 -1
- package/cjs/core/Buttons/DropdownButton/DropdownButton.js +3 -6
- package/cjs/core/Buttons/IconButton/IconButton.d.ts +0 -2
- package/cjs/core/Buttons/IconButton/IconButton.js +0 -2
- package/cjs/core/Buttons/SplitButton/SplitButton.d.ts +0 -1
- package/cjs/core/Buttons/SplitButton/SplitButton.js +0 -1
- package/cjs/core/Carousel/Carousel.d.ts +2 -3
- package/cjs/core/Carousel/Carousel.js +3 -6
- package/cjs/core/Carousel/CarouselDotsList.d.ts +0 -1
- package/cjs/core/Carousel/CarouselDotsList.js +8 -11
- package/cjs/core/Carousel/CarouselNavigation.d.ts +2 -2
- package/cjs/core/Carousel/CarouselNavigation.js +3 -5
- package/cjs/core/Carousel/CarouselSlider.js +10 -15
- package/cjs/core/Checkbox/Checkbox.d.ts +0 -1
- package/cjs/core/Checkbox/Checkbox.js +0 -1
- package/cjs/core/ColorPicker/ColorBuilder.d.ts +0 -1
- package/cjs/core/ColorPicker/ColorBuilder.js +7 -11
- package/cjs/core/ColorPicker/ColorInputPanel.d.ts +0 -1
- package/cjs/core/ColorPicker/ColorInputPanel.js +12 -16
- package/cjs/core/ColorPicker/ColorPalette.d.ts +0 -1
- package/cjs/core/ColorPicker/ColorPalette.js +4 -7
- package/cjs/core/ColorPicker/ColorPicker.d.ts +0 -1
- package/cjs/core/ColorPicker/ColorPicker.js +3 -4
- package/cjs/core/ColorPicker/ColorSwatch.d.ts +0 -1
- package/cjs/core/ColorPicker/ColorSwatch.js +0 -1
- package/cjs/core/ComboBox/ComboBox.d.ts +0 -1
- package/cjs/core/ComboBox/ComboBox.js +25 -33
- package/cjs/core/ComboBox/ComboBoxDropdown.js +1 -2
- package/cjs/core/ComboBox/ComboBoxEndIcon.js +1 -1
- package/cjs/core/ComboBox/ComboBoxInput.js +21 -20
- package/cjs/core/ComboBox/ComboBoxMenu.js +3 -4
- package/cjs/core/ComboBox/ComboBoxMenuItem.js +2 -2
- package/cjs/core/ComboBox/helpers.js +4 -5
- package/cjs/core/DatePicker/DatePicker.d.ts +0 -1
- package/cjs/core/DatePicker/DatePicker.js +32 -33
- package/cjs/core/Dialog/Dialog.d.ts +0 -1
- package/cjs/core/Dialog/Dialog.js +12 -5
- package/cjs/core/Dialog/DialogBackdrop.js +1 -1
- package/cjs/core/Dialog/DialogButtonBar.d.ts +0 -1
- package/cjs/core/Dialog/DialogButtonBar.js +0 -1
- package/cjs/core/Dialog/DialogContent.d.ts +0 -1
- package/cjs/core/Dialog/DialogContent.js +0 -1
- package/cjs/core/Dialog/DialogContext.d.ts +15 -0
- package/cjs/core/Dialog/DialogMain.d.ts +0 -1
- package/cjs/core/Dialog/DialogMain.js +18 -25
- package/cjs/core/Dialog/DialogTitleBar.d.ts +0 -1
- package/cjs/core/Dialog/DialogTitleBar.js +0 -1
- package/cjs/core/Dialog/DialogTitleBarTitle.d.ts +0 -1
- package/cjs/core/Dialog/DialogTitleBarTitle.js +0 -1
- package/cjs/core/DropdownMenu/DropdownMenu.js +6 -8
- package/cjs/core/ExpandableBlock/ExpandableBlock.d.ts +5 -1
- package/cjs/core/ExpandableBlock/ExpandableBlock.js +8 -6
- package/cjs/core/Fieldset/Fieldset.d.ts +0 -1
- package/cjs/core/Fieldset/Fieldset.js +0 -1
- package/cjs/core/FileUpload/FileEmptyCard.js +1 -1
- package/cjs/core/FileUpload/FileUpload.d.ts +0 -1
- package/cjs/core/FileUpload/FileUpload.js +3 -7
- package/cjs/core/FileUpload/FileUploadCard.d.ts +0 -1
- package/cjs/core/FileUpload/FileUploadCard.js +10 -12
- package/cjs/core/FileUpload/FileUploadTemplate.d.ts +0 -1
- package/cjs/core/FileUpload/FileUploadTemplate.js +0 -1
- package/cjs/core/Footer/Footer.d.ts +0 -1
- package/cjs/core/Footer/Footer.js +0 -1
- package/cjs/core/Footer/FooterItem.d.ts +0 -1
- package/cjs/core/Footer/FooterItem.js +0 -1
- package/cjs/core/Footer/FooterList.d.ts +0 -1
- package/cjs/core/Footer/FooterList.js +0 -1
- package/cjs/core/Footer/FooterSeparator.d.ts +0 -1
- package/cjs/core/Footer/FooterSeparator.js +0 -1
- package/cjs/core/Header/Header.d.ts +0 -1
- package/cjs/core/Header/Header.js +0 -1
- package/cjs/core/Header/HeaderBreadcrumbs.d.ts +0 -1
- package/cjs/core/Header/HeaderBreadcrumbs.js +0 -1
- package/cjs/core/Header/HeaderButton.d.ts +0 -1
- package/cjs/core/Header/HeaderButton.js +0 -1
- package/cjs/core/Header/HeaderLogo.d.ts +0 -1
- package/cjs/core/Header/HeaderLogo.js +0 -1
- package/cjs/core/InformationPanel/InformationPanel.d.ts +0 -1
- package/cjs/core/InformationPanel/InformationPanel.js +1 -5
- package/cjs/core/InformationPanel/InformationPanelBody.d.ts +0 -1
- package/cjs/core/InformationPanel/InformationPanelBody.js +0 -1
- package/cjs/core/InformationPanel/InformationPanelContent.d.ts +0 -1
- package/cjs/core/InformationPanel/InformationPanelContent.js +0 -1
- package/cjs/core/InformationPanel/InformationPanelHeader.d.ts +0 -1
- package/cjs/core/InformationPanel/InformationPanelHeader.js +0 -1
- package/cjs/core/InformationPanel/InformationPanelWrapper.d.ts +0 -1
- package/cjs/core/InformationPanel/InformationPanelWrapper.js +0 -1
- package/cjs/core/Input/Input.d.ts +0 -1
- package/cjs/core/Input/Input.js +0 -1
- package/cjs/core/InputGroup/InputGroup.d.ts +0 -1
- package/cjs/core/InputGroup/InputGroup.js +0 -1
- package/cjs/core/Label/Label.d.ts +0 -1
- package/cjs/core/Label/Label.js +0 -1
- package/cjs/core/LabeledInput/LabeledInput.d.ts +0 -1
- package/cjs/core/LabeledInput/LabeledInput.js +1 -2
- package/cjs/core/LabeledSelect/LabeledSelect.d.ts +0 -1
- package/cjs/core/LabeledSelect/LabeledSelect.js +0 -1
- package/cjs/core/LabeledTextarea/LabeledTextarea.d.ts +0 -1
- package/cjs/core/LabeledTextarea/LabeledTextarea.js +1 -2
- package/cjs/core/List/List.d.ts +0 -1
- package/cjs/core/List/List.js +0 -1
- package/cjs/core/List/ListItem.d.ts +0 -1
- package/cjs/core/List/ListItem.js +0 -1
- package/cjs/core/Menu/Menu.d.ts +0 -1
- package/cjs/core/Menu/Menu.js +3 -5
- package/cjs/core/Menu/MenuDivider.d.ts +0 -1
- package/cjs/core/Menu/MenuDivider.js +0 -1
- package/cjs/core/Menu/MenuExtraContent.d.ts +0 -1
- package/cjs/core/Menu/MenuExtraContent.js +0 -1
- package/cjs/core/Menu/MenuItem.d.ts +0 -1
- package/cjs/core/Menu/MenuItem.js +8 -12
- package/cjs/core/Menu/MenuItemSkeleton.d.ts +0 -1
- package/cjs/core/Menu/MenuItemSkeleton.js +0 -1
- package/cjs/core/Modal/Modal.d.ts +8 -10
- package/cjs/core/Modal/Modal.js +7 -18
- package/cjs/core/NonIdealState/NonIdealState.d.ts +0 -1
- package/cjs/core/NonIdealState/NonIdealState.js +0 -1
- package/cjs/core/NotificationMarker/NotificationMarker.d.ts +0 -1
- package/cjs/core/NotificationMarker/NotificationMarker.js +0 -1
- package/cjs/core/ProgressIndicators/ProgressLinear/ProgressLinear.d.ts +0 -1
- package/cjs/core/ProgressIndicators/ProgressLinear/ProgressLinear.js +0 -1
- package/cjs/core/ProgressIndicators/ProgressRadial/ProgressRadial.d.ts +0 -1
- package/cjs/core/ProgressIndicators/ProgressRadial/ProgressRadial.js +0 -1
- package/cjs/core/Radio/Radio.d.ts +0 -1
- package/cjs/core/Radio/Radio.js +0 -1
- package/cjs/core/RadioTiles/RadioTile.d.ts +0 -1
- package/cjs/core/RadioTiles/RadioTile.js +0 -1
- package/cjs/core/RadioTiles/RadioTileGroup.d.ts +0 -1
- package/cjs/core/RadioTiles/RadioTileGroup.js +0 -1
- package/cjs/core/SearchBox/SearchBox.d.ts +0 -1
- package/cjs/core/SearchBox/SearchBox.js +12 -13
- package/cjs/core/Select/Select.d.ts +0 -1
- package/cjs/core/Select/Select.js +12 -18
- package/cjs/core/Select/SelectTag.d.ts +0 -1
- package/cjs/core/Select/SelectTag.js +0 -1
- package/cjs/core/SideNavigation/SideNavigation.d.ts +0 -1
- package/cjs/core/SideNavigation/SideNavigation.js +2 -3
- package/cjs/core/SideNavigation/SidenavButton.d.ts +0 -1
- package/cjs/core/SideNavigation/SidenavButton.js +0 -1
- package/cjs/core/SideNavigation/SidenavSubmenu.d.ts +0 -1
- package/cjs/core/SideNavigation/SidenavSubmenu.js +0 -1
- package/cjs/core/SideNavigation/SidenavSubmenuHeader.d.ts +0 -1
- package/cjs/core/SideNavigation/SidenavSubmenuHeader.js +0 -1
- package/cjs/core/SkipToContentLink/SkipToContentLink.d.ts +0 -1
- package/cjs/core/SkipToContentLink/SkipToContentLink.js +0 -1
- package/cjs/core/Slider/Slider.d.ts +0 -1
- package/cjs/core/Slider/Slider.js +16 -20
- package/cjs/core/Slider/Thumb.js +1 -1
- package/cjs/core/Slider/Track.js +2 -1
- package/cjs/core/StatusMessage/StatusMessage.js +1 -1
- package/cjs/core/Stepper/Stepper.d.ts +0 -1
- package/cjs/core/Stepper/Stepper.js +1 -2
- package/cjs/core/Stepper/StepperStep.js +1 -1
- package/cjs/core/Stepper/WorkflowDiagram.d.ts +0 -1
- package/cjs/core/Stepper/WorkflowDiagram.js +0 -1
- package/cjs/core/Surface/Surface.d.ts +0 -1
- package/cjs/core/Surface/Surface.js +0 -1
- package/cjs/core/Table/Table.d.ts +0 -1
- package/cjs/core/Table/Table.js +33 -34
- package/cjs/core/Table/TableCell.js +3 -2
- package/cjs/core/Table/TablePaginator.d.ts +0 -1
- package/cjs/core/Table/TablePaginator.js +10 -12
- package/cjs/core/Table/TableRowMemoized.js +40 -47
- package/cjs/core/Table/actionHandlers/expandHandler.js +3 -3
- package/cjs/core/Table/actionHandlers/filterHandler.js +4 -5
- package/cjs/core/Table/actionHandlers/selectHandler.js +6 -6
- package/cjs/core/Table/cells/DefaultCell.js +4 -3
- package/cjs/core/Table/cells/EditableCell.js +7 -13
- package/cjs/core/Table/columns/actionColumn.js +3 -6
- package/cjs/core/Table/columns/expanderColumn.js +3 -3
- package/cjs/core/Table/columns/selectionColumn.js +4 -4
- package/cjs/core/Table/filters/BaseFilter.d.ts +0 -1
- package/cjs/core/Table/filters/BaseFilter.js +1 -2
- package/cjs/core/Table/filters/DateRangeFilter/DatePickerInput.js +2 -4
- package/cjs/core/Table/filters/DateRangeFilter/DateRangeFilter.d.ts +0 -1
- package/cjs/core/Table/filters/DateRangeFilter/DateRangeFilter.js +2 -4
- package/cjs/core/Table/filters/FilterButtonBar.d.ts +0 -1
- package/cjs/core/Table/filters/FilterButtonBar.js +1 -2
- package/cjs/core/Table/filters/FilterToggle.d.ts +0 -1
- package/cjs/core/Table/filters/FilterToggle.js +0 -1
- package/cjs/core/Table/filters/NumberRangeFilter/NumberRangeFilter.d.ts +0 -1
- package/cjs/core/Table/filters/NumberRangeFilter/NumberRangeFilter.js +2 -4
- package/cjs/core/Table/filters/TextFilter/TextFilter.d.ts +0 -1
- package/cjs/core/Table/filters/TextFilter/TextFilter.js +1 -3
- package/cjs/core/Table/hooks/useColumnDragAndDrop.js +8 -4
- package/cjs/core/Table/hooks/useResizeColumns.js +16 -22
- package/cjs/core/Table/hooks/useScrollToRow.js +1 -2
- package/cjs/core/Table/hooks/useStickyColumns.js +3 -5
- package/cjs/core/Table/hooks/useSubRowFiltering.js +2 -4
- package/cjs/core/Tabs/Tab.d.ts +0 -1
- package/cjs/core/Tabs/Tab.js +0 -1
- package/cjs/core/Tabs/Tabs.d.ts +0 -1
- package/cjs/core/Tabs/Tabs.js +16 -19
- package/cjs/core/Tag/Tag.d.ts +0 -1
- package/cjs/core/Tag/Tag.js +0 -1
- package/cjs/core/Tag/TagContainer.d.ts +0 -1
- package/cjs/core/Tag/TagContainer.js +0 -1
- package/cjs/core/Textarea/Textarea.d.ts +0 -1
- package/cjs/core/Textarea/Textarea.js +0 -1
- package/cjs/core/ThemeProvider/ThemeContext.d.ts +1 -1
- package/cjs/core/ThemeProvider/ThemeProvider.d.ts +2 -5
- package/cjs/core/ThemeProvider/ThemeProvider.js +11 -15
- package/cjs/core/Tile/Tile.d.ts +0 -1
- package/cjs/core/Tile/Tile.js +3 -7
- package/cjs/core/TimePicker/TimePicker.d.ts +0 -1
- package/cjs/core/TimePicker/TimePicker.js +13 -14
- package/cjs/core/Toast/Toast.d.ts +0 -1
- package/cjs/core/Toast/Toast.js +2 -4
- package/cjs/core/Toast/ToastWrapper.d.ts +0 -1
- package/cjs/core/Toast/ToastWrapper.js +0 -1
- package/cjs/core/Toast/Toaster.js +6 -11
- package/cjs/core/ToggleSwitch/ToggleSwitch.d.ts +0 -1
- package/cjs/core/ToggleSwitch/ToggleSwitch.js +1 -3
- package/cjs/core/Tooltip/Tooltip.d.ts +0 -1
- package/cjs/core/Tooltip/Tooltip.js +0 -1
- package/cjs/core/TransferList/TransferList.d.ts +69 -0
- package/cjs/core/TransferList/TransferList.js +147 -0
- package/cjs/core/TransferList/index.d.ts +3 -0
- package/cjs/core/TransferList/index.js +10 -0
- package/cjs/core/Tree/Tree.d.ts +0 -1
- package/cjs/core/Tree/Tree.js +9 -14
- package/cjs/core/Tree/TreeNode.d.ts +0 -1
- package/cjs/core/Tree/TreeNode.js +9 -11
- package/cjs/core/Tree/TreeNodeExpander.d.ts +0 -1
- package/cjs/core/Tree/TreeNodeExpander.js +0 -1
- package/cjs/core/Typography/Anchor/Anchor.d.ts +0 -1
- package/cjs/core/Typography/Anchor/Anchor.js +0 -1
- package/cjs/core/Typography/Blockquote/Blockquote.d.ts +0 -1
- package/cjs/core/Typography/Blockquote/Blockquote.js +0 -1
- package/cjs/core/Typography/Code/Code.d.ts +0 -1
- package/cjs/core/Typography/Code/Code.js +0 -1
- package/cjs/core/Typography/Kbd/Kbd.d.ts +0 -1
- package/cjs/core/Typography/Kbd/Kbd.js +0 -1
- package/cjs/core/Typography/Text/Text.d.ts +0 -1
- package/cjs/core/Typography/Text/Text.js +0 -1
- package/cjs/core/index.d.ts +1 -0
- package/cjs/core/index.js +118 -116
- package/cjs/core/utils/color/ColorValue.js +9 -15
- package/cjs/core/utils/components/AutoclearingHiddenLiveRegion.js +2 -3
- package/cjs/core/utils/components/Divider.d.ts +0 -1
- package/cjs/core/utils/components/Divider.js +0 -1
- package/cjs/core/utils/components/Flex.d.ts +0 -1
- package/cjs/core/utils/components/Flex.js +0 -1
- package/cjs/core/utils/components/FocusTrap.js +4 -4
- package/cjs/core/utils/components/Icon.d.ts +0 -1
- package/cjs/core/utils/components/Icon.js +0 -1
- package/cjs/core/utils/components/InputContainer.d.ts +0 -1
- package/cjs/core/utils/components/InputContainer.js +0 -1
- package/cjs/core/utils/components/InputFlexContainer.d.ts +0 -1
- package/cjs/core/utils/components/InputFlexContainer.js +0 -1
- package/cjs/core/utils/components/LinkAction.d.ts +0 -1
- package/cjs/core/utils/components/LinkAction.js +0 -1
- package/cjs/core/utils/components/MiddleTextTruncation.js +1 -2
- package/cjs/core/utils/components/Popover.d.ts +0 -1
- package/cjs/core/utils/components/Popover.js +5 -9
- package/cjs/core/utils/components/Resizer.js +7 -6
- package/cjs/core/utils/components/VirtualScroll.js +14 -21
- package/cjs/core/utils/components/VisuallyHidden.d.ts +0 -1
- package/cjs/core/utils/components/VisuallyHidden.js +0 -1
- package/cjs/core/utils/functions/dom.d.ts +6 -0
- package/cjs/core/utils/functions/dom.js +24 -6
- package/cjs/core/utils/functions/index.d.ts +0 -1
- package/cjs/core/utils/functions/index.js +0 -1
- package/cjs/core/utils/functions/polymorphic.js +9 -1
- package/cjs/core/utils/functions/supports.js +1 -1
- package/cjs/core/utils/hooks/index.d.ts +0 -1
- package/cjs/core/utils/hooks/index.js +0 -1
- package/cjs/core/utils/hooks/useContainerWidth.js +1 -1
- package/cjs/core/utils/hooks/useDragAndDrop.js +8 -10
- package/cjs/core/utils/hooks/useEventListener.js +1 -1
- package/cjs/core/utils/hooks/useGlobals.d.ts +9 -4
- package/cjs/core/utils/hooks/useGlobals.js +6 -6
- package/cjs/core/utils/hooks/useId.js +1 -2
- package/cjs/core/utils/hooks/useIntersection.js +2 -3
- package/cjs/core/utils/hooks/useMediaQuery.js +6 -8
- package/cjs/core/utils/hooks/useOverflow.js +1 -2
- package/cjs/core/utils/hooks/useResizeObserver.js +3 -4
- package/cjs/styles.d.ts +5 -0
- package/cjs/styles.js +450 -0
- package/esm/core/Alert/Alert.d.ts +47 -29
- package/esm/core/Alert/Alert.js +74 -23
- package/esm/core/Avatar/Avatar.d.ts +0 -1
- package/esm/core/Avatar/Avatar.js +1 -2
- package/esm/core/AvatarGroup/AvatarGroup.d.ts +0 -1
- package/esm/core/AvatarGroup/AvatarGroup.js +1 -2
- package/esm/core/Backdrop/Backdrop.d.ts +0 -1
- package/esm/core/Backdrop/Backdrop.js +0 -1
- package/esm/core/Badge/Badge.d.ts +0 -1
- package/esm/core/Badge/Badge.js +0 -1
- package/esm/core/Breadcrumbs/Breadcrumbs.d.ts +0 -1
- package/esm/core/Breadcrumbs/Breadcrumbs.js +2 -4
- package/esm/core/ButtonGroup/ButtonGroup.d.ts +0 -1
- package/esm/core/ButtonGroup/ButtonGroup.js +1 -5
- package/esm/core/Buttons/Button/Button.d.ts +0 -1
- package/esm/core/Buttons/Button/Button.js +0 -1
- package/esm/core/Buttons/DropdownButton/DropdownButton.d.ts +0 -1
- package/esm/core/Buttons/DropdownButton/DropdownButton.js +3 -6
- package/esm/core/Buttons/IconButton/IconButton.d.ts +0 -2
- package/esm/core/Buttons/IconButton/IconButton.js +0 -2
- package/esm/core/Buttons/SplitButton/SplitButton.d.ts +0 -1
- package/esm/core/Buttons/SplitButton/SplitButton.js +0 -1
- package/esm/core/Carousel/Carousel.d.ts +2 -3
- package/esm/core/Carousel/Carousel.js +3 -6
- package/esm/core/Carousel/CarouselDotsList.d.ts +0 -1
- package/esm/core/Carousel/CarouselDotsList.js +8 -11
- package/esm/core/Carousel/CarouselNavigation.d.ts +2 -2
- package/esm/core/Carousel/CarouselNavigation.js +3 -5
- package/esm/core/Carousel/CarouselSlider.js +10 -15
- package/esm/core/Checkbox/Checkbox.d.ts +0 -1
- package/esm/core/Checkbox/Checkbox.js +0 -1
- package/esm/core/ColorPicker/ColorBuilder.d.ts +0 -1
- package/esm/core/ColorPicker/ColorBuilder.js +7 -11
- package/esm/core/ColorPicker/ColorInputPanel.d.ts +0 -1
- package/esm/core/ColorPicker/ColorInputPanel.js +12 -16
- package/esm/core/ColorPicker/ColorPalette.d.ts +0 -1
- package/esm/core/ColorPicker/ColorPalette.js +4 -7
- package/esm/core/ColorPicker/ColorPicker.d.ts +0 -1
- package/esm/core/ColorPicker/ColorPicker.js +3 -4
- package/esm/core/ColorPicker/ColorSwatch.d.ts +0 -1
- package/esm/core/ColorPicker/ColorSwatch.js +0 -1
- package/esm/core/ComboBox/ComboBox.d.ts +0 -1
- package/esm/core/ComboBox/ComboBox.js +25 -33
- package/esm/core/ComboBox/ComboBoxDropdown.js +1 -2
- package/esm/core/ComboBox/ComboBoxEndIcon.js +1 -1
- package/esm/core/ComboBox/ComboBoxInput.js +21 -20
- package/esm/core/ComboBox/ComboBoxMenu.js +3 -4
- package/esm/core/ComboBox/ComboBoxMenuItem.js +2 -2
- package/esm/core/ComboBox/helpers.js +4 -5
- package/esm/core/DatePicker/DatePicker.d.ts +0 -1
- package/esm/core/DatePicker/DatePicker.js +32 -33
- package/esm/core/Dialog/Dialog.d.ts +0 -1
- package/esm/core/Dialog/Dialog.js +13 -6
- package/esm/core/Dialog/DialogBackdrop.js +1 -1
- package/esm/core/Dialog/DialogButtonBar.d.ts +0 -1
- package/esm/core/Dialog/DialogButtonBar.js +0 -1
- package/esm/core/Dialog/DialogContent.d.ts +0 -1
- package/esm/core/Dialog/DialogContent.js +0 -1
- package/esm/core/Dialog/DialogContext.d.ts +15 -0
- package/esm/core/Dialog/DialogMain.d.ts +0 -1
- package/esm/core/Dialog/DialogMain.js +18 -25
- package/esm/core/Dialog/DialogTitleBar.d.ts +0 -1
- package/esm/core/Dialog/DialogTitleBar.js +0 -1
- package/esm/core/Dialog/DialogTitleBarTitle.d.ts +0 -1
- package/esm/core/Dialog/DialogTitleBarTitle.js +0 -1
- package/esm/core/DropdownMenu/DropdownMenu.js +6 -8
- package/esm/core/ExpandableBlock/ExpandableBlock.d.ts +5 -1
- package/esm/core/ExpandableBlock/ExpandableBlock.js +8 -6
- package/esm/core/Fieldset/Fieldset.d.ts +0 -1
- package/esm/core/Fieldset/Fieldset.js +0 -1
- package/esm/core/FileUpload/FileEmptyCard.js +1 -1
- package/esm/core/FileUpload/FileUpload.d.ts +0 -1
- package/esm/core/FileUpload/FileUpload.js +3 -7
- package/esm/core/FileUpload/FileUploadCard.d.ts +0 -1
- package/esm/core/FileUpload/FileUploadCard.js +10 -12
- package/esm/core/FileUpload/FileUploadTemplate.d.ts +0 -1
- package/esm/core/FileUpload/FileUploadTemplate.js +0 -1
- package/esm/core/Footer/Footer.d.ts +0 -1
- package/esm/core/Footer/Footer.js +0 -1
- package/esm/core/Footer/FooterItem.d.ts +0 -1
- package/esm/core/Footer/FooterItem.js +0 -1
- package/esm/core/Footer/FooterList.d.ts +0 -1
- package/esm/core/Footer/FooterList.js +0 -1
- package/esm/core/Footer/FooterSeparator.d.ts +0 -1
- package/esm/core/Footer/FooterSeparator.js +0 -1
- package/esm/core/Header/Header.d.ts +0 -1
- package/esm/core/Header/Header.js +0 -1
- package/esm/core/Header/HeaderBreadcrumbs.d.ts +0 -1
- package/esm/core/Header/HeaderBreadcrumbs.js +0 -1
- package/esm/core/Header/HeaderButton.d.ts +0 -1
- package/esm/core/Header/HeaderButton.js +0 -1
- package/esm/core/Header/HeaderLogo.d.ts +0 -1
- package/esm/core/Header/HeaderLogo.js +0 -1
- package/esm/core/InformationPanel/InformationPanel.d.ts +0 -1
- package/esm/core/InformationPanel/InformationPanel.js +1 -5
- package/esm/core/InformationPanel/InformationPanelBody.d.ts +0 -1
- package/esm/core/InformationPanel/InformationPanelBody.js +0 -1
- package/esm/core/InformationPanel/InformationPanelContent.d.ts +0 -1
- package/esm/core/InformationPanel/InformationPanelContent.js +0 -1
- package/esm/core/InformationPanel/InformationPanelHeader.d.ts +0 -1
- package/esm/core/InformationPanel/InformationPanelHeader.js +0 -1
- package/esm/core/InformationPanel/InformationPanelWrapper.d.ts +0 -1
- package/esm/core/InformationPanel/InformationPanelWrapper.js +0 -1
- package/esm/core/Input/Input.d.ts +0 -1
- package/esm/core/Input/Input.js +0 -1
- package/esm/core/InputGroup/InputGroup.d.ts +0 -1
- package/esm/core/InputGroup/InputGroup.js +0 -1
- package/esm/core/Label/Label.d.ts +0 -1
- package/esm/core/Label/Label.js +0 -1
- package/esm/core/LabeledInput/LabeledInput.d.ts +0 -1
- package/esm/core/LabeledInput/LabeledInput.js +1 -2
- package/esm/core/LabeledSelect/LabeledSelect.d.ts +0 -1
- package/esm/core/LabeledSelect/LabeledSelect.js +0 -1
- package/esm/core/LabeledTextarea/LabeledTextarea.d.ts +0 -1
- package/esm/core/LabeledTextarea/LabeledTextarea.js +1 -2
- package/esm/core/List/List.d.ts +0 -1
- package/esm/core/List/List.js +0 -1
- package/esm/core/List/ListItem.d.ts +0 -1
- package/esm/core/List/ListItem.js +0 -1
- package/esm/core/Menu/Menu.d.ts +0 -1
- package/esm/core/Menu/Menu.js +3 -5
- package/esm/core/Menu/MenuDivider.d.ts +0 -1
- package/esm/core/Menu/MenuDivider.js +0 -1
- package/esm/core/Menu/MenuExtraContent.d.ts +0 -1
- package/esm/core/Menu/MenuExtraContent.js +0 -1
- package/esm/core/Menu/MenuItem.d.ts +0 -1
- package/esm/core/Menu/MenuItem.js +8 -12
- package/esm/core/Menu/MenuItemSkeleton.d.ts +0 -1
- package/esm/core/Menu/MenuItemSkeleton.js +0 -1
- package/esm/core/Modal/Modal.d.ts +8 -10
- package/esm/core/Modal/Modal.js +3 -11
- package/esm/core/NonIdealState/NonIdealState.d.ts +0 -1
- package/esm/core/NonIdealState/NonIdealState.js +0 -1
- package/esm/core/NotificationMarker/NotificationMarker.d.ts +0 -1
- package/esm/core/NotificationMarker/NotificationMarker.js +0 -1
- package/esm/core/ProgressIndicators/ProgressLinear/ProgressLinear.d.ts +0 -1
- package/esm/core/ProgressIndicators/ProgressLinear/ProgressLinear.js +0 -1
- package/esm/core/ProgressIndicators/ProgressRadial/ProgressRadial.d.ts +0 -1
- package/esm/core/ProgressIndicators/ProgressRadial/ProgressRadial.js +0 -1
- package/esm/core/Radio/Radio.d.ts +0 -1
- package/esm/core/Radio/Radio.js +0 -1
- package/esm/core/RadioTiles/RadioTile.d.ts +0 -1
- package/esm/core/RadioTiles/RadioTile.js +0 -1
- package/esm/core/RadioTiles/RadioTileGroup.d.ts +0 -1
- package/esm/core/RadioTiles/RadioTileGroup.js +0 -1
- package/esm/core/SearchBox/SearchBox.d.ts +0 -1
- package/esm/core/SearchBox/SearchBox.js +12 -13
- package/esm/core/Select/Select.d.ts +0 -1
- package/esm/core/Select/Select.js +12 -18
- package/esm/core/Select/SelectTag.d.ts +0 -1
- package/esm/core/Select/SelectTag.js +0 -1
- package/esm/core/SideNavigation/SideNavigation.d.ts +0 -1
- package/esm/core/SideNavigation/SideNavigation.js +2 -3
- package/esm/core/SideNavigation/SidenavButton.d.ts +0 -1
- package/esm/core/SideNavigation/SidenavButton.js +0 -1
- package/esm/core/SideNavigation/SidenavSubmenu.d.ts +0 -1
- package/esm/core/SideNavigation/SidenavSubmenu.js +0 -1
- package/esm/core/SideNavigation/SidenavSubmenuHeader.d.ts +0 -1
- package/esm/core/SideNavigation/SidenavSubmenuHeader.js +0 -1
- package/esm/core/SkipToContentLink/SkipToContentLink.d.ts +0 -1
- package/esm/core/SkipToContentLink/SkipToContentLink.js +0 -1
- package/esm/core/Slider/Slider.d.ts +0 -1
- package/esm/core/Slider/Slider.js +16 -20
- package/esm/core/Slider/Thumb.js +1 -1
- package/esm/core/Slider/Track.js +2 -1
- package/esm/core/StatusMessage/StatusMessage.js +1 -1
- package/esm/core/Stepper/Stepper.d.ts +0 -1
- package/esm/core/Stepper/Stepper.js +1 -2
- package/esm/core/Stepper/StepperStep.js +1 -1
- package/esm/core/Stepper/WorkflowDiagram.d.ts +0 -1
- package/esm/core/Stepper/WorkflowDiagram.js +0 -1
- package/esm/core/Surface/Surface.d.ts +0 -1
- package/esm/core/Surface/Surface.js +0 -1
- package/esm/core/Table/Table.d.ts +0 -1
- package/esm/core/Table/Table.js +34 -35
- package/esm/core/Table/TableCell.js +3 -2
- package/esm/core/Table/TablePaginator.d.ts +0 -1
- package/esm/core/Table/TablePaginator.js +11 -13
- package/esm/core/Table/TableRowMemoized.js +41 -48
- package/esm/core/Table/actionHandlers/expandHandler.js +3 -3
- package/esm/core/Table/actionHandlers/filterHandler.js +4 -5
- package/esm/core/Table/actionHandlers/selectHandler.js +6 -6
- package/esm/core/Table/cells/DefaultCell.js +4 -3
- package/esm/core/Table/cells/EditableCell.js +8 -14
- package/esm/core/Table/columns/actionColumn.js +3 -6
- package/esm/core/Table/columns/expanderColumn.js +3 -3
- package/esm/core/Table/columns/selectionColumn.js +4 -4
- package/esm/core/Table/filters/BaseFilter.d.ts +0 -1
- package/esm/core/Table/filters/BaseFilter.js +2 -3
- package/esm/core/Table/filters/DateRangeFilter/DatePickerInput.js +2 -4
- package/esm/core/Table/filters/DateRangeFilter/DateRangeFilter.d.ts +0 -1
- package/esm/core/Table/filters/DateRangeFilter/DateRangeFilter.js +2 -4
- package/esm/core/Table/filters/FilterButtonBar.d.ts +0 -1
- package/esm/core/Table/filters/FilterButtonBar.js +2 -3
- package/esm/core/Table/filters/FilterToggle.d.ts +0 -1
- package/esm/core/Table/filters/FilterToggle.js +0 -1
- package/esm/core/Table/filters/NumberRangeFilter/NumberRangeFilter.d.ts +0 -1
- package/esm/core/Table/filters/NumberRangeFilter/NumberRangeFilter.js +2 -4
- package/esm/core/Table/filters/TextFilter/TextFilter.d.ts +0 -1
- package/esm/core/Table/filters/TextFilter/TextFilter.js +1 -3
- package/esm/core/Table/hooks/useColumnDragAndDrop.js +5 -4
- package/esm/core/Table/hooks/useResizeColumns.js +16 -22
- package/esm/core/Table/hooks/useScrollToRow.js +1 -2
- package/esm/core/Table/hooks/useStickyColumns.js +3 -5
- package/esm/core/Table/hooks/useSubRowFiltering.js +2 -4
- package/esm/core/Tabs/Tab.d.ts +0 -1
- package/esm/core/Tabs/Tab.js +0 -1
- package/esm/core/Tabs/Tabs.d.ts +0 -1
- package/esm/core/Tabs/Tabs.js +16 -19
- package/esm/core/Tag/Tag.d.ts +0 -1
- package/esm/core/Tag/Tag.js +0 -1
- package/esm/core/Tag/TagContainer.d.ts +0 -1
- package/esm/core/Tag/TagContainer.js +0 -1
- package/esm/core/Textarea/Textarea.d.ts +0 -1
- package/esm/core/Textarea/Textarea.js +0 -1
- package/esm/core/ThemeProvider/ThemeContext.d.ts +1 -1
- package/esm/core/ThemeProvider/ThemeProvider.d.ts +2 -5
- package/esm/core/ThemeProvider/ThemeProvider.js +12 -16
- package/esm/core/Tile/Tile.d.ts +0 -1
- package/esm/core/Tile/Tile.js +3 -7
- package/esm/core/TimePicker/TimePicker.d.ts +0 -1
- package/esm/core/TimePicker/TimePicker.js +13 -14
- package/esm/core/Toast/Toast.d.ts +0 -1
- package/esm/core/Toast/Toast.js +2 -4
- package/esm/core/Toast/ToastWrapper.d.ts +0 -1
- package/esm/core/Toast/ToastWrapper.js +0 -1
- package/esm/core/Toast/Toaster.js +6 -11
- package/esm/core/ToggleSwitch/ToggleSwitch.d.ts +0 -1
- package/esm/core/ToggleSwitch/ToggleSwitch.js +1 -3
- package/esm/core/Tooltip/Tooltip.d.ts +0 -1
- package/esm/core/Tooltip/Tooltip.js +0 -1
- package/esm/core/TransferList/TransferList.d.ts +69 -0
- package/esm/core/TransferList/TransferList.js +141 -0
- package/esm/core/TransferList/index.d.ts +3 -0
- package/esm/core/TransferList/index.js +6 -0
- package/esm/core/Tree/Tree.d.ts +0 -1
- package/esm/core/Tree/Tree.js +9 -14
- package/esm/core/Tree/TreeNode.d.ts +0 -1
- package/esm/core/Tree/TreeNode.js +9 -11
- package/esm/core/Tree/TreeNodeExpander.d.ts +0 -1
- package/esm/core/Tree/TreeNodeExpander.js +0 -1
- package/esm/core/Typography/Anchor/Anchor.d.ts +0 -1
- package/esm/core/Typography/Anchor/Anchor.js +0 -1
- package/esm/core/Typography/Blockquote/Blockquote.d.ts +0 -1
- package/esm/core/Typography/Blockquote/Blockquote.js +0 -1
- package/esm/core/Typography/Code/Code.d.ts +0 -1
- package/esm/core/Typography/Code/Code.js +0 -1
- package/esm/core/Typography/Kbd/Kbd.d.ts +0 -1
- package/esm/core/Typography/Kbd/Kbd.js +0 -1
- package/esm/core/Typography/Text/Text.d.ts +0 -1
- package/esm/core/Typography/Text/Text.js +0 -1
- package/esm/core/index.d.ts +1 -0
- package/esm/core/index.js +1 -0
- package/esm/core/utils/color/ColorValue.js +9 -15
- package/esm/core/utils/components/AutoclearingHiddenLiveRegion.js +2 -3
- package/esm/core/utils/components/Divider.d.ts +0 -1
- package/esm/core/utils/components/Divider.js +0 -1
- package/esm/core/utils/components/Flex.d.ts +0 -1
- package/esm/core/utils/components/Flex.js +0 -1
- package/esm/core/utils/components/FocusTrap.js +4 -4
- package/esm/core/utils/components/Icon.d.ts +0 -1
- package/esm/core/utils/components/Icon.js +0 -1
- package/esm/core/utils/components/InputContainer.d.ts +0 -1
- package/esm/core/utils/components/InputContainer.js +0 -1
- package/esm/core/utils/components/InputFlexContainer.d.ts +0 -1
- package/esm/core/utils/components/InputFlexContainer.js +0 -1
- package/esm/core/utils/components/LinkAction.d.ts +0 -1
- package/esm/core/utils/components/LinkAction.js +0 -1
- package/esm/core/utils/components/MiddleTextTruncation.js +1 -2
- package/esm/core/utils/components/Popover.d.ts +0 -1
- package/esm/core/utils/components/Popover.js +5 -9
- package/esm/core/utils/components/Resizer.js +7 -6
- package/esm/core/utils/components/VirtualScroll.js +14 -21
- package/esm/core/utils/components/VisuallyHidden.d.ts +0 -1
- package/esm/core/utils/components/VisuallyHidden.js +0 -1
- package/esm/core/utils/functions/dom.d.ts +6 -0
- package/esm/core/utils/functions/dom.js +19 -5
- package/esm/core/utils/functions/index.d.ts +0 -1
- package/esm/core/utils/functions/index.js +0 -1
- package/esm/core/utils/functions/polymorphic.js +9 -1
- package/esm/core/utils/functions/supports.js +1 -1
- package/esm/core/utils/hooks/index.d.ts +0 -1
- package/esm/core/utils/hooks/index.js +0 -1
- package/esm/core/utils/hooks/useContainerWidth.js +1 -1
- package/esm/core/utils/hooks/useDragAndDrop.js +8 -10
- package/esm/core/utils/hooks/useEventListener.js +1 -1
- package/esm/core/utils/hooks/useGlobals.d.ts +9 -4
- package/esm/core/utils/hooks/useGlobals.js +6 -6
- package/esm/core/utils/hooks/useId.js +1 -2
- package/esm/core/utils/hooks/useIntersection.js +2 -3
- package/esm/core/utils/hooks/useMediaQuery.js +6 -8
- package/esm/core/utils/hooks/useOverflow.js +1 -2
- package/esm/core/utils/hooks/useResizeObserver.js +3 -4
- package/esm/styles.d.ts +5 -0
- package/esm/styles.js +451 -0
- package/package.json +14 -11
- package/styles.css +1940 -0
- package/cjs/core/utils/functions/styles.d.ts +0 -6
- package/cjs/core/utils/functions/styles.js +0 -21
- package/cjs/core/utils/hooks/useIsThemeAlreadySet.d.ts +0 -7
- package/cjs/core/utils/hooks/useIsThemeAlreadySet.js +0 -54
- package/esm/core/utils/functions/styles.d.ts +0 -6
- package/esm/core/utils/functions/styles.js +0 -17
- package/esm/core/utils/hooks/useIsThemeAlreadySet.d.ts +0 -7
- package/esm/core/utils/hooks/useIsThemeAlreadySet.js +0 -27
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { PolymorphicForwardRefComponent } from '../utils/index.js';
|
|
2
|
-
import '@itwin/itwinui-css/css/date-picker.css';
|
|
3
2
|
import type { TimePickerProps } from '../TimePicker/TimePicker.js';
|
|
4
3
|
/**
|
|
5
4
|
* Generate localized months and days strings using `Intl.DateTimeFormat` for passed locale to use in DatePicker component.
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
import cx from 'classnames';
|
|
6
6
|
import * as React from 'react';
|
|
7
7
|
import { SvgChevronLeft, SvgChevronRight, SvgChevronLeftDouble, SvgChevronRightDouble, isBefore, Box, } from '../utils/index.js';
|
|
8
|
-
import '@itwin/itwinui-css/css/date-picker.css';
|
|
9
8
|
import { IconButton } from '../Buttons/IconButton/index.js';
|
|
10
9
|
import { TimePicker } from '../TimePicker/index.js';
|
|
11
10
|
const isSameDay = (a, b) => {
|
|
@@ -111,17 +110,20 @@ export const generateLocalizedStrings = (locale) => {
|
|
|
111
110
|
* <DatePicker date={new Date()} onChange={(e) => console.log('New date value: ' + e)} />
|
|
112
111
|
*/
|
|
113
112
|
export const DatePicker = React.forwardRef((props, forwardedRef) => {
|
|
114
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
115
113
|
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;
|
|
116
|
-
const monthNames =
|
|
117
|
-
const shortDays =
|
|
118
|
-
const longDays =
|
|
114
|
+
const monthNames = localizedNames?.months ?? defaultMonths;
|
|
115
|
+
const shortDays = localizedNames?.shortDays ?? defaultShortDays;
|
|
116
|
+
const longDays = localizedNames?.days ?? defaultLongDays;
|
|
119
117
|
const [selectedDay, setSelectedDay] = React.useState(date);
|
|
120
118
|
const [selectedStartDay, setSelectedStartDay] = React.useState(startDate);
|
|
121
119
|
const [selectedEndDay, setSelectedEndDay] = React.useState(endDate);
|
|
122
|
-
const [focusedDay, setFocusedDay] = React.useState(
|
|
123
|
-
const [displayedMonthIndex, setDisplayedMonthIndex] = React.useState(
|
|
124
|
-
|
|
120
|
+
const [focusedDay, setFocusedDay] = React.useState(selectedStartDay ?? selectedDay ?? new Date());
|
|
121
|
+
const [displayedMonthIndex, setDisplayedMonthIndex] = React.useState(selectedStartDay?.getMonth() ??
|
|
122
|
+
selectedDay?.getMonth() ??
|
|
123
|
+
new Date().getMonth());
|
|
124
|
+
const [displayedYear, setDisplayedYear] = React.useState(selectedStartDay?.getFullYear() ??
|
|
125
|
+
selectedDay?.getFullYear() ??
|
|
126
|
+
new Date().getFullYear());
|
|
125
127
|
// boolean that toggles between the user picking the start date and end date for date range
|
|
126
128
|
const [isSelectingStartDate, setIsSelectingStartDate] = React.useState(true);
|
|
127
129
|
// Used to focus days only when days are changed
|
|
@@ -137,15 +139,16 @@ export const DatePicker = React.forwardRef((props, forwardedRef) => {
|
|
|
137
139
|
setDisplayedYear(newYear);
|
|
138
140
|
}, []);
|
|
139
141
|
React.useEffect(() => {
|
|
140
|
-
var _a, _b, _c, _d;
|
|
141
142
|
const currentDate = new Date();
|
|
142
143
|
setSelectedDay(date);
|
|
143
144
|
setSelectedStartDay(startDate);
|
|
144
145
|
setSelectedEndDay(endDate);
|
|
145
146
|
if (!enableRangeSelect) {
|
|
146
|
-
setFocusedDay(date
|
|
147
|
+
setFocusedDay(date ?? currentDate);
|
|
147
148
|
}
|
|
148
|
-
setMonthAndYear(
|
|
149
|
+
setMonthAndYear(startDate?.getMonth() ?? date?.getMonth() ?? currentDate.getMonth(), startDate?.getFullYear() ??
|
|
150
|
+
date?.getFullYear() ??
|
|
151
|
+
currentDate.getFullYear());
|
|
149
152
|
}, [date, setMonthAndYear, startDate, endDate, enableRangeSelect]);
|
|
150
153
|
const days = React.useMemo(() => {
|
|
151
154
|
let offsetToFirst = new Date(displayedYear, displayedMonthIndex, 1).getDay();
|
|
@@ -170,8 +173,7 @@ export const DatePicker = React.forwardRef((props, forwardedRef) => {
|
|
|
170
173
|
return weeksInMonth;
|
|
171
174
|
}, [days]);
|
|
172
175
|
const getNewFocusedDate = (newYear, newMonth) => {
|
|
173
|
-
|
|
174
|
-
const currentDate = (_a = selectedStartDay !== null && selectedStartDay !== void 0 ? selectedStartDay : selectedDay) !== null && _a !== void 0 ? _a : new Date();
|
|
176
|
+
const currentDate = selectedStartDay ?? selectedDay ?? new Date();
|
|
175
177
|
const newDate = new Date(newYear, newMonth, currentDate.getDate(), currentDate.getHours(), currentDate.getMinutes(), currentDate.getSeconds());
|
|
176
178
|
return newDate;
|
|
177
179
|
};
|
|
@@ -200,51 +202,51 @@ export const DatePicker = React.forwardRef((props, forwardedRef) => {
|
|
|
200
202
|
const onDayClick = (day) => {
|
|
201
203
|
// single date selection
|
|
202
204
|
if (!enableRangeSelect) {
|
|
203
|
-
if (day.getMonth() !==
|
|
205
|
+
if (day.getMonth() !== selectedDay?.getMonth()) {
|
|
204
206
|
setMonthAndYear(day.getMonth(), day.getFullYear());
|
|
205
207
|
}
|
|
206
|
-
const currentDate = selectedDay
|
|
208
|
+
const currentDate = selectedDay ?? new Date();
|
|
207
209
|
const newDate = new Date(day.getFullYear(), day.getMonth(), day.getDate(), currentDate.getHours(), currentDate.getMinutes(), currentDate.getSeconds());
|
|
208
210
|
setSelectedDay(newDate);
|
|
209
211
|
setFocusedDay(newDate);
|
|
210
|
-
isSingleOnChange(onChange, enableRangeSelect) &&
|
|
212
|
+
isSingleOnChange(onChange, enableRangeSelect) && onChange?.(newDate);
|
|
211
213
|
}
|
|
212
214
|
// start date selection (date range only)
|
|
213
215
|
else if (isSelectingStartDate) {
|
|
214
|
-
if (day.getMonth() !==
|
|
216
|
+
if (day.getMonth() !== selectedStartDay?.getMonth()) {
|
|
215
217
|
setMonthAndYear(day.getMonth(), day.getFullYear());
|
|
216
218
|
}
|
|
217
|
-
const currentStartDate = selectedStartDay
|
|
219
|
+
const currentStartDate = selectedStartDay ?? new Date();
|
|
218
220
|
const newStartDate = new Date(day.getFullYear(), day.getMonth(), day.getDate(), currentStartDate.getHours(), currentStartDate.getMinutes(), currentStartDate.getSeconds());
|
|
219
221
|
setSelectedStartDay(newStartDate);
|
|
220
222
|
setFocusedDay(newStartDate);
|
|
221
223
|
// if the start date is after the end date or the end date is undefined, reset the end date
|
|
222
224
|
if (!isBefore(newStartDate, selectedEndDay)) {
|
|
223
225
|
setSelectedEndDay(newStartDate);
|
|
224
|
-
onChange
|
|
226
|
+
onChange?.(newStartDate, newStartDate);
|
|
225
227
|
}
|
|
226
228
|
else {
|
|
227
|
-
selectedEndDay &&
|
|
229
|
+
selectedEndDay && onChange?.(newStartDate, selectedEndDay);
|
|
228
230
|
}
|
|
229
231
|
setIsSelectingStartDate(false);
|
|
230
232
|
}
|
|
231
233
|
// end date selection (date range only)
|
|
232
234
|
else {
|
|
233
|
-
if (day.getMonth() !==
|
|
235
|
+
if (day.getMonth() !== selectedEndDay?.getMonth()) {
|
|
234
236
|
setMonthAndYear(day.getMonth(), day.getFullYear());
|
|
235
237
|
}
|
|
236
|
-
const currentEndDate = selectedEndDay
|
|
238
|
+
const currentEndDate = selectedEndDay ?? new Date();
|
|
237
239
|
const newEndDate = new Date(day.getFullYear(), day.getMonth(), day.getDate(), currentEndDate.getHours(), currentEndDate.getMinutes(), currentEndDate.getSeconds());
|
|
238
240
|
setFocusedDay(newEndDate);
|
|
239
241
|
// if the end date is before the start date, move back the start date and still have user select end date
|
|
240
242
|
if (!isBefore(newEndDate, selectedStartDay)) {
|
|
241
243
|
setSelectedEndDay(newEndDate);
|
|
242
|
-
selectedStartDay &&
|
|
244
|
+
selectedStartDay && onChange?.(selectedStartDay, newEndDate);
|
|
243
245
|
setIsSelectingStartDate(true);
|
|
244
246
|
}
|
|
245
247
|
else {
|
|
246
248
|
setSelectedStartDay(newEndDate);
|
|
247
|
-
selectedEndDay &&
|
|
249
|
+
selectedEndDay && onChange?.(newEndDate, selectedEndDay);
|
|
248
250
|
}
|
|
249
251
|
}
|
|
250
252
|
};
|
|
@@ -296,7 +298,7 @@ export const DatePicker = React.forwardRef((props, forwardedRef) => {
|
|
|
296
298
|
case 'Enter':
|
|
297
299
|
case ' ':
|
|
298
300
|
case 'Spacebar':
|
|
299
|
-
if (!
|
|
301
|
+
if (!isDateDisabled?.(focusedDay)) {
|
|
300
302
|
onDayClick(focusedDay);
|
|
301
303
|
}
|
|
302
304
|
event.preventDefault();
|
|
@@ -349,17 +351,14 @@ export const DatePicker = React.forwardRef((props, forwardedRef) => {
|
|
|
349
351
|
React.createElement("div", { onKeyDown: handleCalendarKeyDown, role: 'listbox' }, weeks.map((weekDays, weekIndex) => {
|
|
350
352
|
return (React.createElement(Box, { key: `week-${displayedMonthIndex}-${weekIndex}`, className: 'iui-calendar-week' }, weekDays.map((weekDay, dayIndex) => {
|
|
351
353
|
const dateValue = weekDay.getDate();
|
|
352
|
-
const isDisabled = isDateDisabled
|
|
354
|
+
const isDisabled = isDateDisabled?.(weekDay);
|
|
353
355
|
return (React.createElement(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) &&
|
|
354
356
|
needFocus.current &&
|
|
355
|
-
|
|
357
|
+
element?.focus() }, dateValue));
|
|
356
358
|
})));
|
|
357
359
|
}))),
|
|
358
|
-
showTime && (React.createElement(TimePicker, { date: selectedStartDay
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
? onChange === null || onChange === void 0 ? void 0 : onChange(date)
|
|
362
|
-
: 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()));
|
|
363
|
-
} }))));
|
|
360
|
+
showTime && (React.createElement(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)
|
|
361
|
+
? onChange?.(date)
|
|
362
|
+
: 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())) }))));
|
|
364
363
|
});
|
|
365
364
|
export default DatePicker;
|
|
@@ -3,19 +3,26 @@
|
|
|
3
3
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
import * as React from 'react';
|
|
6
|
+
import * as ReactDOM from 'react-dom';
|
|
6
7
|
import cx from 'classnames';
|
|
7
|
-
import '@itwin/itwinui-css/css/dialog.css';
|
|
8
8
|
import { DialogTitleBar } from './DialogTitleBar.js';
|
|
9
9
|
import { DialogContent } from './DialogContent.js';
|
|
10
10
|
import { DialogBackdrop } from './DialogBackdrop.js';
|
|
11
11
|
import { DialogContext } from './DialogContext.js';
|
|
12
12
|
import { DialogButtonBar } from './DialogButtonBar.js';
|
|
13
13
|
import { DialogMain } from './DialogMain.js';
|
|
14
|
-
import { useMergedRefs, Box } from '../utils/index.js';
|
|
14
|
+
import { useMergedRefs, Box, useGlobals, getDocument, useIsClient, } from '../utils/index.js';
|
|
15
15
|
const DialogComponent = React.forwardRef((props, ref) => {
|
|
16
|
-
const { trapFocus = false, setFocus = false, preventDocumentScroll = false, isOpen = false, isDismissible = true, closeOnEsc = true, closeOnExternalClick = false, onClose, isDraggable = false, isResizable = false, relativeTo = 'viewport', className, ...rest } = props;
|
|
16
|
+
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;
|
|
17
17
|
const dialogRootRef = React.useRef(null);
|
|
18
|
-
const
|
|
18
|
+
const context = useGlobals();
|
|
19
|
+
const isClient = useIsClient();
|
|
20
|
+
const portalTo = typeof portal !== 'boolean'
|
|
21
|
+
? portal.to
|
|
22
|
+
: portal
|
|
23
|
+
? context?.portalContainerRef?.current ?? getDocument()?.body
|
|
24
|
+
: null;
|
|
25
|
+
const dialog = (React.createElement(Box, { className: cx('iui-dialog-wrapper', className), "data-iui-relative": relativeTo === 'container', ref: useMergedRefs(ref, dialogRootRef), ...rest }));
|
|
19
26
|
return (React.createElement(DialogContext.Provider, { value: {
|
|
20
27
|
isOpen,
|
|
21
28
|
onClose,
|
|
@@ -29,8 +36,8 @@ const DialogComponent = React.forwardRef((props, ref) => {
|
|
|
29
36
|
isResizable,
|
|
30
37
|
relativeTo,
|
|
31
38
|
dialogRootRef,
|
|
32
|
-
|
|
33
|
-
|
|
39
|
+
placement,
|
|
40
|
+
} }, portalTo && isClient ? ReactDOM.createPortal(dialog, portalTo) : dialog));
|
|
34
41
|
});
|
|
35
42
|
/**
|
|
36
43
|
* Dialog component.
|
|
@@ -27,7 +27,7 @@ export const DialogBackdrop = React.forwardRef((props, ref) => {
|
|
|
27
27
|
if (isDismissible && closeOnExternalClick && onClose) {
|
|
28
28
|
onClose(event);
|
|
29
29
|
}
|
|
30
|
-
onMouseDown
|
|
30
|
+
onMouseDown?.(event);
|
|
31
31
|
};
|
|
32
32
|
return (React.createElement(Backdrop, { isVisible: isVisible, className: cx({ 'iui-backdrop-fixed': relativeTo === 'viewport' }, className), ref: refs, onMouseDown: handleMouseDown, style: {
|
|
33
33
|
pointerEvents: 'auto',
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
import { polymorphic } from '../utils/index.js';
|
|
6
|
-
import '@itwin/itwinui-css/css/dialog.css';
|
|
7
6
|
/**
|
|
8
7
|
* Container for Buttons in `Dialog`. Recommended to be used as a child of `Dialog`.
|
|
9
8
|
* @example
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
import { polymorphic } from '../utils/index.js';
|
|
6
|
-
import '@itwin/itwinui-css/css/dialog.css';
|
|
7
6
|
/**
|
|
8
7
|
* Container for content in `Dialog`. Recommended to be used as a child of `Dialog`.
|
|
9
8
|
* @example
|
|
@@ -61,10 +61,25 @@ 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
|
*/
|
|
67
78
|
dialogRootRef?: React.RefObject<HTMLDivElement>;
|
|
79
|
+
/**
|
|
80
|
+
* Determines the positioning of Dialog on page.
|
|
81
|
+
*/
|
|
82
|
+
placement?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
|
|
68
83
|
};
|
|
69
84
|
export declare const DialogContext: React.Context<DialogContextProps | undefined>;
|
|
70
85
|
export declare const useDialogContext: () => DialogContextProps;
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
import * as React from 'react';
|
|
6
6
|
import cx from 'classnames';
|
|
7
7
|
import { FocusTrap, getTranslateValues, Resizer, useMergedRefs, useIsomorphicLayoutEffect, Box, } from '../utils/index.js';
|
|
8
|
-
import '@itwin/itwinui-css/css/dialog.css';
|
|
9
8
|
import { useDialogContext } from './DialogContext.js';
|
|
10
9
|
import { CSSTransition } from 'react-transition-group';
|
|
11
10
|
import { DialogDragContext } from './DialogDragContext.js';
|
|
@@ -32,7 +31,7 @@ import useDragAndDrop from '../utils/hooks/useDragAndDrop.js';
|
|
|
32
31
|
*/
|
|
33
32
|
export const DialogMain = React.forwardRef((props, ref) => {
|
|
34
33
|
const dialogContext = useDialogContext();
|
|
35
|
-
const { className, children, styleType = 'default', isOpen = dialogContext.isOpen, isDismissible = dialogContext.isDismissible, onClose = dialogContext.onClose, closeOnEsc = dialogContext.closeOnEsc, trapFocus = dialogContext.trapFocus, setFocus = dialogContext.setFocus, preventDocumentScroll = dialogContext.preventDocumentScroll, onKeyDown, isDraggable = dialogContext.isDraggable, isResizable = dialogContext.isResizable, style: propStyle, ...rest } = props;
|
|
34
|
+
const { className, children, styleType = 'default', isOpen = dialogContext.isOpen, isDismissible = dialogContext.isDismissible, onClose = dialogContext.onClose, closeOnEsc = dialogContext.closeOnEsc, trapFocus = dialogContext.trapFocus, setFocus = dialogContext.setFocus, preventDocumentScroll = dialogContext.preventDocumentScroll, onKeyDown, isDraggable = dialogContext.isDraggable, isResizable = dialogContext.isResizable, style: propStyle, placement = dialogContext.placement, ...rest } = props;
|
|
36
35
|
const [style, setStyle] = React.useState();
|
|
37
36
|
const dialogRef = React.useRef(null);
|
|
38
37
|
const refs = useMergedRefs(dialogRef, ref);
|
|
@@ -46,8 +45,7 @@ export const DialogMain = React.forwardRef((props, ref) => {
|
|
|
46
45
|
}, [isOpen]);
|
|
47
46
|
// Prevents document from scrolling when the dialog is open.
|
|
48
47
|
React.useEffect(() => {
|
|
49
|
-
|
|
50
|
-
const ownerDocument = (_a = dialogRef.current) === null || _a === void 0 ? void 0 : _a.ownerDocument;
|
|
48
|
+
const ownerDocument = dialogRef.current?.ownerDocument;
|
|
51
49
|
// If there is no `ownerDocument` or `preventDocumentScroll` is false or
|
|
52
50
|
// document body originally has `overflow: hidden` (possibly from other/parent dialog), then do nothing.
|
|
53
51
|
if (!ownerDocument ||
|
|
@@ -74,7 +72,7 @@ export const DialogMain = React.forwardRef((props, ref) => {
|
|
|
74
72
|
if (isDismissible && closeOnEsc && event.key === 'Escape' && onClose) {
|
|
75
73
|
onClose(event);
|
|
76
74
|
}
|
|
77
|
-
onKeyDown
|
|
75
|
+
onKeyDown?.(event);
|
|
78
76
|
};
|
|
79
77
|
const { onPointerDown, transform } = useDragAndDrop(dialogRef, dialogContext.dialogRootRef, isDraggable);
|
|
80
78
|
const handlePointerDown = React.useCallback((event) => {
|
|
@@ -84,23 +82,19 @@ export const DialogMain = React.forwardRef((props, ref) => {
|
|
|
84
82
|
}, [isDraggable, onPointerDown]);
|
|
85
83
|
// Prevents dialog from moving when window is being resized
|
|
86
84
|
useIsomorphicLayoutEffect(() => {
|
|
87
|
-
var _a;
|
|
88
85
|
if (!isDraggable || !isOpen) {
|
|
89
86
|
return;
|
|
90
87
|
}
|
|
91
|
-
const rect =
|
|
88
|
+
const rect = dialogRef.current?.getBoundingClientRect();
|
|
92
89
|
const [translateX, translateY] = getTranslateValues(dialogRef.current);
|
|
93
|
-
setStyle((oldStyle) => {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
transform: `translate(${translateX}px,${translateY}px)`,
|
|
102
|
-
});
|
|
103
|
-
});
|
|
90
|
+
setStyle((oldStyle) => ({
|
|
91
|
+
...oldStyle,
|
|
92
|
+
width: rect?.width,
|
|
93
|
+
height: rect?.height,
|
|
94
|
+
left: dialogRef.current?.offsetLeft,
|
|
95
|
+
top: dialogRef.current?.offsetTop,
|
|
96
|
+
transform: `translate(${translateX}px,${translateY}px)`,
|
|
97
|
+
}));
|
|
104
98
|
}, [isDraggable, isOpen]);
|
|
105
99
|
const setResizeStyle = React.useCallback((newStyle) => {
|
|
106
100
|
setStyle((oldStyle) => ({
|
|
@@ -113,7 +107,7 @@ export const DialogMain = React.forwardRef((props, ref) => {
|
|
|
113
107
|
'iui-dialog-full-page': styleType === 'fullPage',
|
|
114
108
|
'iui-dialog-visible': isOpen,
|
|
115
109
|
'iui-dialog-draggable': isDraggable,
|
|
116
|
-
}, className), role: 'dialog', ref: refs, onKeyDown: handleKeyDown, tabIndex: -1, style: {
|
|
110
|
+
}, className), role: 'dialog', ref: refs, onKeyDown: handleKeyDown, tabIndex: -1, "data-iui-placement": placement, style: {
|
|
117
111
|
transform,
|
|
118
112
|
overflow: 'unset',
|
|
119
113
|
...style,
|
|
@@ -132,15 +126,14 @@ export const DialogMain = React.forwardRef((props, ref) => {
|
|
|
132
126
|
}, timeout: { exit: 600 },
|
|
133
127
|
// Focuses dialog when opened
|
|
134
128
|
onEntered: () => {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
setFocus &&
|
|
129
|
+
previousFocusedElement.current = dialogRef.current?.ownerDocument
|
|
130
|
+
.activeElement;
|
|
131
|
+
setFocus && dialogRef.current?.focus({ preventScroll: true });
|
|
138
132
|
},
|
|
139
133
|
// Brings back focus to the previously focused element when closed
|
|
140
134
|
onExit: () => {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
(_c = previousFocusedElement.current) === null || _c === void 0 ? void 0 : _c.focus();
|
|
135
|
+
if (dialogRef.current?.contains(dialogRef.current?.ownerDocument.activeElement)) {
|
|
136
|
+
previousFocusedElement.current?.focus();
|
|
144
137
|
}
|
|
145
138
|
}, unmountOnExit: true, nodeRef: dialogRef },
|
|
146
139
|
React.createElement(DialogDragContext.Provider, { value: { onPointerDown: handlePointerDown } },
|
|
@@ -6,7 +6,6 @@ import * as React from 'react';
|
|
|
6
6
|
import cx from 'classnames';
|
|
7
7
|
import { SvgClose, mergeEventHandlers, Box } from '../utils/index.js';
|
|
8
8
|
import { IconButton } from '../Buttons/index.js';
|
|
9
|
-
import '@itwin/itwinui-css/css/dialog.css';
|
|
10
9
|
import { useDialogContext } from './DialogContext.js';
|
|
11
10
|
import { DialogTitleBarTitle } from './DialogTitleBarTitle.js';
|
|
12
11
|
import { useDialogDragContext } from './DialogDragContext.js';
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
import { polymorphic } from '../utils/index.js';
|
|
6
|
-
import '@itwin/itwinui-css/css/dialog.css';
|
|
7
6
|
/**
|
|
8
7
|
* Dialog title bar. Recommended to be used as a child of `Dialog`.
|
|
9
8
|
* @example
|
|
@@ -26,29 +26,27 @@ import { Menu } from '../Menu/index.js';
|
|
|
26
26
|
*/
|
|
27
27
|
export const DropdownMenu = (props) => {
|
|
28
28
|
const { menuItems, children, className, style, role = 'menu', visible, placement = 'bottom-start', onShow, onHide, trigger, id, ...rest } = props;
|
|
29
|
-
const [isVisible, setIsVisible] = React.useState(visible
|
|
29
|
+
const [isVisible, setIsVisible] = React.useState(visible ?? false);
|
|
30
30
|
React.useEffect(() => {
|
|
31
|
-
setIsVisible(visible
|
|
31
|
+
setIsVisible(visible ?? false);
|
|
32
32
|
}, [visible]);
|
|
33
33
|
const open = React.useCallback(() => setIsVisible(true), []);
|
|
34
34
|
const close = React.useCallback(() => setIsVisible(false), []);
|
|
35
35
|
const targetRef = React.useRef(null);
|
|
36
36
|
const onShowHandler = React.useCallback((instance) => {
|
|
37
37
|
setIsVisible(true);
|
|
38
|
-
onShow
|
|
38
|
+
onShow?.(instance);
|
|
39
39
|
}, [onShow]);
|
|
40
40
|
const onHideHandler = React.useCallback((instance) => {
|
|
41
|
-
var _a;
|
|
42
41
|
setIsVisible(false);
|
|
43
|
-
|
|
44
|
-
onHide
|
|
42
|
+
targetRef.current?.focus();
|
|
43
|
+
onHide?.(instance);
|
|
45
44
|
}, [onHide]);
|
|
46
45
|
return (React.createElement(Popover, { content: React.createElement(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, {
|
|
47
46
|
ref: mergeRefs(targetRef, props.children.ref),
|
|
48
47
|
onClick: (args) => {
|
|
49
|
-
var _a, _b;
|
|
50
48
|
trigger === undefined && (isVisible ? close() : open());
|
|
51
|
-
|
|
49
|
+
children.props.onClick?.(args);
|
|
52
50
|
},
|
|
53
51
|
})));
|
|
54
52
|
};
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import type { PolymorphicForwardRefComponent } from '../utils/index.js';
|
|
3
|
-
import '@itwin/itwinui-css/css/expandable-block.css';
|
|
4
3
|
declare type ExpandableBlockProps = {
|
|
5
4
|
/**
|
|
6
5
|
* The main text displayed on the block, regardless of state.
|
|
@@ -44,6 +43,11 @@ declare type ExpandableBlockProps = {
|
|
|
44
43
|
* @default 'default'
|
|
45
44
|
*/
|
|
46
45
|
styleType?: 'default' | 'borderless';
|
|
46
|
+
/**
|
|
47
|
+
* Disables ExpandableBlock.
|
|
48
|
+
* @default false
|
|
49
|
+
*/
|
|
50
|
+
disabled?: boolean;
|
|
47
51
|
};
|
|
48
52
|
/**
|
|
49
53
|
* Container that allows content to be hidden behind a brief title and a caption.
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
import cx from 'classnames';
|
|
6
6
|
import * as React from 'react';
|
|
7
7
|
import { StatusIconMap, WithCSSTransition, SvgChevronRight, Icon, Box, } from '../utils/index.js';
|
|
8
|
-
import '@itwin/itwinui-css/css/expandable-block.css';
|
|
9
8
|
/**
|
|
10
9
|
* Container that allows content to be hidden behind a brief title and a caption.
|
|
11
10
|
* @example
|
|
@@ -16,18 +15,21 @@ import '@itwin/itwinui-css/css/expandable-block.css';
|
|
|
16
15
|
* <ExpandableBlock title='Block with icon' endIcon={<SvgPlaceholder />}>Content</ExpandableBlock>
|
|
17
16
|
*/
|
|
18
17
|
export const ExpandableBlock = React.forwardRef((props, ref) => {
|
|
19
|
-
const { caption, children, className, title, onToggle, style, isExpanded = false, endIcon, status, size = 'default', styleType = 'default', ...rest } = props;
|
|
20
|
-
const icon = endIcon
|
|
18
|
+
const { caption, children, className, title, onToggle, style, isExpanded = false, endIcon, status, size = 'default', styleType = 'default', disabled = false, ...rest } = props;
|
|
19
|
+
const icon = endIcon ?? (status && StatusIconMap[status]());
|
|
21
20
|
const [expanded, setExpanded] = React.useState(isExpanded);
|
|
22
21
|
React.useEffect(() => {
|
|
23
22
|
setExpanded(isExpanded);
|
|
24
23
|
}, [isExpanded]);
|
|
25
24
|
const handleToggle = () => {
|
|
25
|
+
if (disabled) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
26
28
|
setExpanded(!expanded);
|
|
27
|
-
onToggle
|
|
29
|
+
onToggle?.(!expanded);
|
|
28
30
|
};
|
|
29
31
|
const onKeyDown = (event) => {
|
|
30
|
-
if (event.altKey) {
|
|
32
|
+
if (event.altKey || disabled) {
|
|
31
33
|
return;
|
|
32
34
|
}
|
|
33
35
|
if (event.key === 'Enter' ||
|
|
@@ -42,7 +44,7 @@ export const ExpandableBlock = React.forwardRef((props, ref) => {
|
|
|
42
44
|
'iui-small': size === 'small',
|
|
43
45
|
'iui-borderless': styleType === 'borderless',
|
|
44
46
|
}, className), style: style, ref: ref, ...rest },
|
|
45
|
-
React.createElement(Box, { "aria-expanded": expanded, className: 'iui-header', tabIndex: 0, onClick: handleToggle, onKeyDown: onKeyDown },
|
|
47
|
+
React.createElement(Box, { role: 'button', "aria-expanded": expanded, className: 'iui-header', "aria-disabled": disabled, tabIndex: 0, onClick: handleToggle, onKeyDown: onKeyDown },
|
|
46
48
|
React.createElement(SvgChevronRight, { className: 'iui-icon', "aria-hidden": true }),
|
|
47
49
|
React.createElement(Box, { as: 'span', className: 'iui-expandable-block-label' },
|
|
48
50
|
React.createElement(Box, { className: 'iui-title' }, title),
|
|
@@ -18,7 +18,7 @@ const FileEmptyCardText = polymorphic.span('iui-file-card-empty-action');
|
|
|
18
18
|
// FileEmptyCard component
|
|
19
19
|
const FileEmptyCardComponent = React.forwardRef((props, ref) => {
|
|
20
20
|
const { children, className, ...rest } = props;
|
|
21
|
-
return (React.createElement(Box, { className: cx('iui-file-card-empty', className), ref: ref, ...rest }, children
|
|
21
|
+
return (React.createElement(Box, { className: cx('iui-file-card-empty', className), ref: ref, ...rest }, children ?? (React.createElement(React.Fragment, null,
|
|
22
22
|
React.createElement(FileEmptyCard.Icon, null),
|
|
23
23
|
React.createElement(FileEmptyCard.Text, null,
|
|
24
24
|
React.createElement(FileUploadCard.InputLabel, null, "Choose a file"),
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import type { PolymorphicForwardRefComponent } from '../utils/index.js';
|
|
3
|
-
import '@itwin/itwinui-css/css/file-upload.css';
|
|
4
3
|
declare type FileUploadProps = {
|
|
5
4
|
/**
|
|
6
5
|
* Content shown over `children` when file is being dragged onto the component.
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
import * as React from 'react';
|
|
6
6
|
import cx from 'classnames';
|
|
7
7
|
import { Box, useMergedRefs } from '../utils/index.js';
|
|
8
|
-
import '@itwin/itwinui-css/css/file-upload.css';
|
|
9
8
|
/**
|
|
10
9
|
* File upload component to be wrapped around `FileUploadTemplate` or any arbitrary component.
|
|
11
10
|
* Provides support for dragging and dropping multiple files.
|
|
@@ -23,31 +22,28 @@ export const FileUpload = React.forwardRef((props, ref) => {
|
|
|
23
22
|
e.stopPropagation();
|
|
24
23
|
};
|
|
25
24
|
const onDragEnterHandler = (e) => {
|
|
26
|
-
var _a, _b, _c;
|
|
27
25
|
e.preventDefault();
|
|
28
26
|
e.stopPropagation();
|
|
29
27
|
// only set active if a file is dragged over
|
|
30
|
-
if (!isDragActive &&
|
|
28
|
+
if (!isDragActive && e.dataTransfer?.items?.[0]?.kind === 'file') {
|
|
31
29
|
setIsDragActive(true);
|
|
32
30
|
}
|
|
33
31
|
};
|
|
34
32
|
const onDragLeaveHandler = (e) => {
|
|
35
|
-
var _a;
|
|
36
33
|
e.preventDefault();
|
|
37
34
|
e.stopPropagation();
|
|
38
35
|
// only set inactive if secondary target is outside the component
|
|
39
36
|
if (isDragActive &&
|
|
40
|
-
!
|
|
37
|
+
!fileUploadRef.current?.contains(e.relatedTarget)) {
|
|
41
38
|
setIsDragActive(false);
|
|
42
39
|
}
|
|
43
40
|
};
|
|
44
41
|
const onDropHandler = (e) => {
|
|
45
|
-
var _a;
|
|
46
42
|
e.preventDefault();
|
|
47
43
|
e.stopPropagation();
|
|
48
44
|
if (isDragActive) {
|
|
49
45
|
setIsDragActive(false);
|
|
50
|
-
onFileDropped(
|
|
46
|
+
onFileDropped(e.dataTransfer?.files);
|
|
51
47
|
}
|
|
52
48
|
};
|
|
53
49
|
return (React.createElement(Box, { className: cx('iui-file-upload', { 'iui-drag': isDragActive }, className), onDragEnter: onDragEnterHandler, onDragOver: onDragOverHandler, onDragLeave: onDragLeaveHandler, onDrop: onDropHandler, ref: refs, ...rest },
|