@itwin/itwinui-react 1.20.0 → 1.21.0
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 +7 -0
- package/cjs/core/Alert/Alert.d.ts +1 -1
- package/cjs/core/Alert/Alert.js +3 -4
- package/cjs/core/Badge/Badge.d.ts +1 -2
- package/cjs/core/Badge/Badge.js +4 -5
- package/cjs/core/Breadcrumbs/Breadcrumbs.d.ts +1 -1
- package/cjs/core/Breadcrumbs/Breadcrumbs.js +4 -6
- package/cjs/core/ButtonGroup/ButtonGroup.d.ts +1 -1
- package/cjs/core/ButtonGroup/ButtonGroup.js +3 -4
- package/cjs/core/Buttons/Button/Button.js +2 -2
- package/cjs/core/Buttons/DropdownButton/DropdownButton.js +3 -4
- package/cjs/core/Buttons/IconButton/IconButton.js +2 -2
- package/cjs/core/Buttons/IdeasButton/IdeasButton.js +2 -2
- package/cjs/core/Buttons/SplitButton/SplitButton.js +2 -2
- package/cjs/core/Checkbox/Checkbox.js +3 -4
- package/cjs/core/ComboBox/ComboBox.d.ts +51 -0
- package/cjs/core/ComboBox/ComboBox.js +268 -0
- package/cjs/core/ComboBox/index.d.ts +4 -0
- package/cjs/core/ComboBox/index.js +10 -0
- package/cjs/core/DatePicker/DatePicker.js +2 -2
- package/cjs/core/DropdownMenu/DropdownMenu.d.ts +1 -2
- package/cjs/core/DropdownMenu/DropdownMenu.js +4 -6
- package/cjs/core/ErrorPage/ErrorPage.js +2 -2
- package/cjs/core/ExpandableBlock/ExpandableBlock.d.ts +1 -1
- package/cjs/core/ExpandableBlock/ExpandableBlock.js +3 -4
- package/cjs/core/Fieldset/Fieldset.js +2 -2
- package/cjs/core/FileUpload/FileUpload.d.ts +2 -2
- package/cjs/core/FileUpload/FileUpload.js +3 -4
- package/cjs/core/FileUpload/FileUploadTemplate.js +2 -2
- package/cjs/core/Footer/Footer.d.ts +1 -1
- package/cjs/core/Footer/Footer.js +2 -2
- package/cjs/core/Header/Header.d.ts +1 -1
- package/cjs/core/Header/Header.js +2 -2
- package/cjs/core/Header/HeaderBreadcrumbs.js +2 -2
- package/cjs/core/Header/HeaderButton.js +2 -2
- package/cjs/core/Header/HeaderLogo.d.ts +1 -1
- package/cjs/core/Header/HeaderLogo.js +2 -2
- package/cjs/core/Input/Input.js +3 -4
- package/cjs/core/InputGroup/InputGroup.d.ts +1 -1
- package/cjs/core/InputGroup/InputGroup.js +4 -6
- package/cjs/core/LabeledInput/LabeledInput.js +4 -6
- package/cjs/core/LabeledSelect/LabeledSelect.js +4 -6
- package/cjs/core/LabeledTextarea/LabeledTextarea.js +4 -6
- package/cjs/core/Menu/Menu.d.ts +11 -1
- package/cjs/core/Menu/Menu.js +11 -11
- package/cjs/core/Menu/MenuDivider.js +2 -2
- package/cjs/core/Menu/MenuItem.d.ts +2 -2
- package/cjs/core/Menu/MenuItem.js +5 -7
- package/cjs/core/Modal/Modal.d.ts +1 -1
- package/cjs/core/Modal/Modal.js +5 -7
- package/cjs/core/Modal/ModalButtonBar.js +2 -2
- package/cjs/core/ProgressIndicators/ProgressLinear/ProgressLinear.d.ts +1 -1
- package/cjs/core/ProgressIndicators/ProgressLinear/ProgressLinear.js +2 -2
- package/cjs/core/ProgressIndicators/ProgressRadial/ProgressRadial.d.ts +1 -1
- package/cjs/core/ProgressIndicators/ProgressRadial/ProgressRadial.js +2 -2
- package/cjs/core/Radio/Radio.js +3 -4
- package/cjs/core/RadioTiles/RadioTile.js +3 -4
- package/cjs/core/RadioTiles/RadioTileGroup.js +2 -2
- package/cjs/core/Select/Select.d.ts +1 -2
- package/cjs/core/Select/Select.js +4 -4
- package/cjs/core/SideNavigation/SideNavigation.d.ts +1 -1
- package/cjs/core/SideNavigation/SideNavigation.js +2 -2
- package/cjs/core/SideNavigation/SidenavButton.js +2 -2
- package/cjs/core/Slider/Slider.d.ts +1 -1
- package/cjs/core/Slider/Slider.js +7 -9
- package/cjs/core/Table/Table.d.ts +1 -1
- package/cjs/core/Table/Table.js +4 -4
- package/cjs/core/Table/TableRowMemoized.js +3 -4
- package/cjs/core/Table/filters/BaseFilter.d.ts +1 -1
- package/cjs/core/Table/filters/BaseFilter.js +2 -2
- package/cjs/core/Table/filters/DateRangeFilter/DatePickerInput.js +2 -2
- package/cjs/core/Table/filters/DateRangeFilter/DateRangeFilter.js +2 -2
- package/cjs/core/Table/filters/FilterButtonBar.d.ts +1 -1
- package/cjs/core/Table/filters/FilterButtonBar.js +2 -2
- package/cjs/core/Table/filters/FilterToggle.d.ts +1 -1
- package/cjs/core/Table/filters/FilterToggle.js +4 -6
- package/cjs/core/Table/filters/NumberRangeFilter/NumberRangeFilter.js +2 -2
- package/cjs/core/Table/filters/TextFilter/TextFilter.js +2 -2
- package/cjs/core/Tabs/Tab.js +2 -2
- package/cjs/core/Tabs/Tabs.js +6 -9
- package/cjs/core/Tag/Tag.d.ts +1 -1
- package/cjs/core/Tag/Tag.js +2 -2
- package/cjs/core/Tag/TagContainer.d.ts +1 -1
- package/cjs/core/Tag/TagContainer.js +2 -2
- package/cjs/core/Textarea/Textarea.js +3 -4
- package/cjs/core/ThemeProvider/ThemeProvider.d.ts +1 -1
- package/cjs/core/ThemeProvider/ThemeProvider.js +2 -2
- package/cjs/core/Tile/Tile.d.ts +2 -2
- package/cjs/core/Tile/Tile.js +4 -4
- package/cjs/core/TimePicker/TimePicker.d.ts +1 -1
- package/cjs/core/TimePicker/TimePicker.js +2 -2
- package/cjs/core/Toast/Toast.d.ts +1 -1
- package/cjs/core/Toast/Toast.js +5 -6
- package/cjs/core/Toast/Toaster.js +2 -2
- package/cjs/core/ToggleSwitch/ToggleSwitch.d.ts +1 -1
- package/cjs/core/ToggleSwitch/ToggleSwitch.js +3 -4
- package/cjs/core/Tooltip/Tooltip.d.ts +1 -2
- package/cjs/core/Tooltip/Tooltip.js +3 -4
- package/cjs/core/Typography/Blockquote/Blockquote.js +2 -2
- package/cjs/core/Typography/Body/Body.js +2 -2
- package/cjs/core/Typography/Code/Code.d.ts +1 -1
- package/cjs/core/Typography/Code/Code.js +2 -2
- package/cjs/core/Typography/Headline/Headline.js +2 -2
- package/cjs/core/Typography/Kbd/Kbd.d.ts +1 -1
- package/cjs/core/Typography/Kbd/Kbd.js +2 -2
- package/cjs/core/Typography/Leading/Leading.js +2 -2
- package/cjs/core/Typography/Small/Small.js +2 -2
- package/cjs/core/Typography/Subheading/Subheading.js +2 -2
- package/cjs/core/Typography/Text/Text.d.ts +1 -1
- package/cjs/core/Typography/Text/Text.js +2 -2
- package/cjs/core/Typography/Title/Title.js +2 -2
- package/cjs/core/UserIcon/UserIcon.d.ts +1 -1
- package/cjs/core/UserIcon/UserIcon.js +2 -2
- package/cjs/core/UserIconGroup/UserIconGroup.d.ts +1 -1
- package/cjs/core/UserIconGroup/UserIconGroup.js +2 -2
- package/cjs/core/Wizard/Step.d.ts +1 -1
- package/cjs/core/Wizard/Wizard.js +2 -2
- package/cjs/core/index.d.ts +4 -3
- package/cjs/core/index.js +7 -6
- package/cjs/core/utils/{FocusTrap.d.ts → components/FocusTrap.d.ts} +0 -0
- package/cjs/core/utils/{FocusTrap.js → components/FocusTrap.js} +3 -3
- package/cjs/core/utils/{InputContainer.d.ts → components/InputContainer.d.ts} +0 -0
- package/cjs/core/utils/{InputContainer.js → components/InputContainer.js} +25 -3
- package/cjs/core/utils/{Popover.d.ts → components/Popover.d.ts} +1 -1
- package/cjs/core/utils/{Popover.js → components/Popover.js} +1 -1
- package/cjs/core/utils/components/icons.d.ts +8 -0
- package/cjs/core/utils/components/icons.js +32 -0
- package/cjs/core/utils/components/index.d.ts +4 -0
- package/cjs/core/utils/components/index.js +20 -0
- package/cjs/core/utils/functions/colors.d.ts +20 -0
- package/cjs/core/utils/functions/colors.js +52 -0
- package/cjs/core/utils/functions/dom.d.ts +18 -0
- package/cjs/core/utils/functions/dom.js +42 -0
- package/cjs/core/utils/functions/focusable.d.ts +8 -0
- package/cjs/core/utils/functions/focusable.js +34 -0
- package/cjs/core/utils/functions/index.d.ts +4 -0
- package/cjs/core/utils/functions/index.js +20 -0
- package/cjs/core/utils/functions/numbers.d.ts +8 -0
- package/cjs/core/utils/functions/numbers.js +27 -0
- package/cjs/core/utils/hooks/index.d.ts +6 -0
- package/cjs/core/utils/hooks/index.js +22 -0
- package/cjs/core/utils/hooks/useIntersection.js +2 -2
- package/cjs/core/utils/hooks/useResizeObserver.js +2 -2
- package/cjs/core/utils/hooks/useTheme.js +3 -3
- package/cjs/core/utils/index.d.ts +4 -0
- package/cjs/core/utils/index.js +20 -0
- package/esm/core/Alert/Alert.d.ts +1 -1
- package/esm/core/Alert/Alert.js +1 -2
- package/esm/core/Badge/Badge.d.ts +1 -2
- package/esm/core/Badge/Badge.js +1 -2
- package/esm/core/Breadcrumbs/Breadcrumbs.d.ts +1 -1
- package/esm/core/Breadcrumbs/Breadcrumbs.js +1 -3
- package/esm/core/ButtonGroup/ButtonGroup.d.ts +1 -1
- package/esm/core/ButtonGroup/ButtonGroup.js +1 -2
- package/esm/core/Buttons/Button/Button.js +1 -1
- package/esm/core/Buttons/DropdownButton/DropdownButton.js +1 -2
- package/esm/core/Buttons/IconButton/IconButton.js +1 -1
- package/esm/core/Buttons/IdeasButton/IdeasButton.js +1 -1
- package/esm/core/Buttons/SplitButton/SplitButton.js +1 -1
- package/esm/core/Checkbox/Checkbox.js +1 -2
- package/esm/core/ComboBox/ComboBox.d.ts +51 -0
- package/esm/core/ComboBox/ComboBox.js +261 -0
- package/esm/core/ComboBox/index.d.ts +4 -0
- package/esm/core/ComboBox/index.js +6 -0
- package/esm/core/DatePicker/DatePicker.js +1 -1
- package/esm/core/DropdownMenu/DropdownMenu.d.ts +1 -2
- package/esm/core/DropdownMenu/DropdownMenu.js +1 -3
- package/esm/core/ErrorPage/ErrorPage.js +1 -1
- package/esm/core/ExpandableBlock/ExpandableBlock.d.ts +1 -1
- package/esm/core/ExpandableBlock/ExpandableBlock.js +1 -2
- package/esm/core/Fieldset/Fieldset.js +1 -1
- package/esm/core/FileUpload/FileUpload.d.ts +2 -2
- package/esm/core/FileUpload/FileUpload.js +1 -2
- package/esm/core/FileUpload/FileUploadTemplate.js +1 -1
- package/esm/core/Footer/Footer.d.ts +1 -1
- package/esm/core/Footer/Footer.js +1 -1
- package/esm/core/Header/Header.d.ts +1 -1
- package/esm/core/Header/Header.js +1 -1
- package/esm/core/Header/HeaderBreadcrumbs.js +1 -1
- package/esm/core/Header/HeaderButton.js +1 -1
- package/esm/core/Header/HeaderLogo.d.ts +1 -1
- package/esm/core/Header/HeaderLogo.js +1 -1
- package/esm/core/Input/Input.js +1 -2
- package/esm/core/InputGroup/InputGroup.d.ts +1 -1
- package/esm/core/InputGroup/InputGroup.js +1 -3
- package/esm/core/LabeledInput/LabeledInput.js +1 -3
- package/esm/core/LabeledSelect/LabeledSelect.js +1 -3
- package/esm/core/LabeledTextarea/LabeledTextarea.js +1 -3
- package/esm/core/Menu/Menu.d.ts +11 -1
- package/esm/core/Menu/Menu.js +7 -7
- package/esm/core/Menu/MenuDivider.js +1 -1
- package/esm/core/Menu/MenuItem.d.ts +2 -2
- package/esm/core/Menu/MenuItem.js +2 -4
- package/esm/core/Modal/Modal.d.ts +1 -1
- package/esm/core/Modal/Modal.js +1 -3
- package/esm/core/Modal/ModalButtonBar.js +1 -1
- package/esm/core/ProgressIndicators/ProgressLinear/ProgressLinear.d.ts +1 -1
- package/esm/core/ProgressIndicators/ProgressLinear/ProgressLinear.js +1 -1
- package/esm/core/ProgressIndicators/ProgressRadial/ProgressRadial.d.ts +1 -1
- package/esm/core/ProgressIndicators/ProgressRadial/ProgressRadial.js +1 -1
- package/esm/core/Radio/Radio.js +1 -2
- package/esm/core/RadioTiles/RadioTile.js +1 -2
- package/esm/core/RadioTiles/RadioTileGroup.js +1 -1
- package/esm/core/Select/Select.d.ts +1 -2
- package/esm/core/Select/Select.js +2 -2
- package/esm/core/SideNavigation/SideNavigation.d.ts +1 -1
- package/esm/core/SideNavigation/SideNavigation.js +1 -1
- package/esm/core/SideNavigation/SidenavButton.js +1 -1
- package/esm/core/Slider/Slider.d.ts +1 -1
- package/esm/core/Slider/Slider.js +1 -3
- package/esm/core/Table/Table.d.ts +1 -1
- package/esm/core/Table/Table.js +1 -1
- package/esm/core/Table/TableRowMemoized.js +1 -2
- package/esm/core/Table/filters/BaseFilter.d.ts +1 -1
- package/esm/core/Table/filters/BaseFilter.js +1 -1
- package/esm/core/Table/filters/DateRangeFilter/DatePickerInput.js +1 -1
- package/esm/core/Table/filters/DateRangeFilter/DateRangeFilter.js +1 -1
- package/esm/core/Table/filters/FilterButtonBar.d.ts +1 -1
- package/esm/core/Table/filters/FilterButtonBar.js +1 -1
- package/esm/core/Table/filters/FilterToggle.d.ts +1 -1
- package/esm/core/Table/filters/FilterToggle.js +1 -3
- package/esm/core/Table/filters/NumberRangeFilter/NumberRangeFilter.js +1 -1
- package/esm/core/Table/filters/TextFilter/TextFilter.js +1 -1
- package/esm/core/Tabs/Tab.js +1 -1
- package/esm/core/Tabs/Tabs.js +1 -4
- package/esm/core/Tag/Tag.d.ts +1 -1
- package/esm/core/Tag/Tag.js +1 -1
- package/esm/core/Tag/TagContainer.d.ts +1 -1
- package/esm/core/Tag/TagContainer.js +1 -1
- package/esm/core/Textarea/Textarea.js +1 -2
- package/esm/core/ThemeProvider/ThemeProvider.d.ts +1 -1
- package/esm/core/ThemeProvider/ThemeProvider.js +1 -1
- package/esm/core/Tile/Tile.d.ts +2 -2
- package/esm/core/Tile/Tile.js +3 -3
- package/esm/core/TimePicker/TimePicker.d.ts +1 -1
- package/esm/core/TimePicker/TimePicker.js +1 -1
- package/esm/core/Toast/Toast.d.ts +1 -1
- package/esm/core/Toast/Toast.js +1 -2
- package/esm/core/Toast/Toaster.js +1 -1
- package/esm/core/ToggleSwitch/ToggleSwitch.d.ts +1 -1
- package/esm/core/ToggleSwitch/ToggleSwitch.js +1 -2
- package/esm/core/Tooltip/Tooltip.d.ts +1 -2
- package/esm/core/Tooltip/Tooltip.js +1 -2
- package/esm/core/Typography/Blockquote/Blockquote.js +1 -1
- package/esm/core/Typography/Body/Body.js +1 -1
- package/esm/core/Typography/Code/Code.d.ts +1 -1
- package/esm/core/Typography/Code/Code.js +1 -1
- package/esm/core/Typography/Headline/Headline.js +1 -1
- package/esm/core/Typography/Kbd/Kbd.d.ts +1 -1
- package/esm/core/Typography/Kbd/Kbd.js +1 -1
- package/esm/core/Typography/Leading/Leading.js +1 -1
- package/esm/core/Typography/Small/Small.js +1 -1
- package/esm/core/Typography/Subheading/Subheading.js +1 -1
- package/esm/core/Typography/Text/Text.d.ts +1 -1
- package/esm/core/Typography/Text/Text.js +1 -1
- package/esm/core/Typography/Title/Title.js +1 -1
- package/esm/core/UserIcon/UserIcon.d.ts +1 -1
- package/esm/core/UserIcon/UserIcon.js +1 -1
- package/esm/core/UserIconGroup/UserIconGroup.d.ts +1 -1
- package/esm/core/UserIconGroup/UserIconGroup.js +1 -1
- package/esm/core/Wizard/Step.d.ts +1 -1
- package/esm/core/Wizard/Wizard.js +1 -1
- package/esm/core/index.d.ts +4 -3
- package/esm/core/index.js +2 -2
- package/esm/core/utils/{FocusTrap.d.ts → components/FocusTrap.d.ts} +0 -0
- package/esm/core/utils/{FocusTrap.js → components/FocusTrap.js} +2 -2
- package/esm/core/utils/{InputContainer.d.ts → components/InputContainer.d.ts} +0 -0
- package/esm/core/utils/{InputContainer.js → components/InputContainer.js} +25 -3
- package/esm/core/utils/{Popover.d.ts → components/Popover.d.ts} +1 -1
- package/esm/core/utils/{Popover.js → components/Popover.js} +1 -1
- package/esm/core/utils/components/icons.d.ts +8 -0
- package/esm/core/utils/components/icons.js +26 -0
- package/esm/core/utils/components/index.d.ts +4 -0
- package/esm/core/utils/components/index.js +8 -0
- package/esm/core/utils/functions/colors.d.ts +20 -0
- package/esm/core/utils/functions/colors.js +47 -0
- package/esm/core/utils/functions/dom.d.ts +18 -0
- package/esm/core/utils/functions/dom.js +36 -0
- package/esm/core/utils/functions/focusable.d.ts +8 -0
- package/esm/core/utils/functions/focusable.js +29 -0
- package/esm/core/utils/functions/index.d.ts +4 -0
- package/esm/core/utils/functions/index.js +8 -0
- package/esm/core/utils/functions/numbers.d.ts +8 -0
- package/esm/core/utils/functions/numbers.js +22 -0
- package/esm/core/utils/hooks/index.d.ts +6 -0
- package/esm/core/utils/hooks/index.js +10 -0
- package/esm/core/utils/hooks/useIntersection.js +1 -1
- package/esm/core/utils/hooks/useResizeObserver.js +1 -1
- package/esm/core/utils/hooks/useTheme.js +1 -1
- package/esm/core/utils/index.d.ts +4 -0
- package/esm/core/utils/index.js +8 -0
- package/package.json +5 -3
- package/cjs/core/utils/common.d.ts +0 -58
- package/cjs/core/utils/common.js +0 -146
- package/esm/core/utils/common.d.ts +0 -58
- package/esm/core/utils/common.js +0 -132
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.21.0](https://www.github.com/iTwin/iTwinUI-react/compare/v1.20.0...v1.21.0) (2021-10-05)
|
|
4
|
+
|
|
5
|
+
### What's new
|
|
6
|
+
|
|
7
|
+
* **ComboBox:** Add new `ComboBox` component with list autocomplete (list is filtered when typing in input) ([#338](https://www.github.com/iTwin/iTwinUI-react/issues/338)) ([92ac59e](https://www.github.com/iTwin/iTwinUI-react/commit/92ac59e01614bb658783d8a49aa7558f6bf61938))
|
|
8
|
+
* **Tile:** Make `thumbnail` prop optional ([#354](https://www.github.com/iTwin/iTwinUI-react/issues/354)) ([b5a5a4e](https://www.github.com/iTwin/iTwinUI-react/commit/b5a5a4ed295ffd373180b84635ed198966f3a993))
|
|
9
|
+
|
|
3
10
|
## [1.20.0](https://www.github.com/iTwin/iTwinUI-react/compare/v1.19.0...v1.20.0) (2021-09-28)
|
|
4
11
|
|
|
5
12
|
### What's new
|
package/cjs/core/Alert/Alert.js
CHANGED
|
@@ -33,10 +33,9 @@ exports.Alert = void 0;
|
|
|
33
33
|
var CloseSmall_1 = __importDefault(require("@itwin/itwinui-icons-react/cjs/icons/CloseSmall"));
|
|
34
34
|
var classnames_1 = __importDefault(require("classnames"));
|
|
35
35
|
var react_1 = __importDefault(require("react"));
|
|
36
|
-
var
|
|
36
|
+
var utils_1 = require("../utils");
|
|
37
37
|
require("@itwin/itwinui-css/css/alert.css");
|
|
38
38
|
var IconButton_1 = require("../Buttons/IconButton");
|
|
39
|
-
var common_1 = require("../utils/common");
|
|
40
39
|
/**
|
|
41
40
|
* A small box to quickly grab user attention and communicate a brief message
|
|
42
41
|
* @example
|
|
@@ -48,8 +47,8 @@ var common_1 = require("../utils/common");
|
|
|
48
47
|
*/
|
|
49
48
|
var Alert = function (props) {
|
|
50
49
|
var children = props.children, className = props.className, _a = props.type, type = _a === void 0 ? 'informational' : _a, clickableText = props.clickableText, onClick = props.onClick, onClose = props.onClose, style = props.style, _b = props.isSticky, isSticky = _b === void 0 ? false : _b, rest = __rest(props, ["children", "className", "type", "clickableText", "onClick", "onClose", "style", "isSticky"]);
|
|
51
|
-
(0,
|
|
52
|
-
var StatusIcon =
|
|
50
|
+
(0, utils_1.useTheme)();
|
|
51
|
+
var StatusIcon = utils_1.StatusIconMap[type];
|
|
53
52
|
return (react_1.default.createElement("div", __assign({ className: (0, classnames_1.default)('iui-alert', "iui-" + type, { 'iui-sticky': isSticky }, className), style: style }, rest),
|
|
54
53
|
react_1.default.createElement(StatusIcon, { className: 'iui-icon' }),
|
|
55
54
|
react_1.default.createElement("span", { className: 'iui-message' },
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import { CommonProps } from '../utils
|
|
2
|
+
import { CommonProps, SoftBackgrounds } from '../utils';
|
|
3
3
|
import '@itwin/itwinui-css/css/badge.css';
|
|
4
|
-
import { SoftBackgrounds } from '../utils/common';
|
|
5
4
|
export declare type BadgeProps = {
|
|
6
5
|
/**
|
|
7
6
|
* Background color of the badge.
|
package/cjs/core/Badge/Badge.js
CHANGED
|
@@ -32,9 +32,8 @@ exports.Badge = void 0;
|
|
|
32
32
|
*--------------------------------------------------------------------------------------------*/
|
|
33
33
|
var react_1 = __importDefault(require("react"));
|
|
34
34
|
var classnames_1 = __importDefault(require("classnames"));
|
|
35
|
-
var
|
|
35
|
+
var utils_1 = require("../utils");
|
|
36
36
|
require("@itwin/itwinui-css/css/badge.css");
|
|
37
|
-
var common_1 = require("../utils/common");
|
|
38
37
|
/**
|
|
39
38
|
* Helper function that returns one of the preset badge color values.
|
|
40
39
|
*/
|
|
@@ -52,7 +51,7 @@ var getBadgeColorValue = function (color) {
|
|
|
52
51
|
case 'warning':
|
|
53
52
|
return '#F9D7AB';
|
|
54
53
|
default:
|
|
55
|
-
return (0,
|
|
54
|
+
return (0, utils_1.isSoftBackground)(color) ? utils_1.SoftBackgrounds[color] : color;
|
|
56
55
|
}
|
|
57
56
|
};
|
|
58
57
|
/**
|
|
@@ -65,9 +64,9 @@ var getBadgeColorValue = function (color) {
|
|
|
65
64
|
var Badge = function (props) {
|
|
66
65
|
var _a, _b, _c;
|
|
67
66
|
var backgroundColor = props.backgroundColor, style = props.style, className = props.className, children = props.children, rest = __rest(props, ["backgroundColor", "style", "className", "children"]);
|
|
68
|
-
(0,
|
|
67
|
+
(0, utils_1.useTheme)();
|
|
69
68
|
var _style = backgroundColor &&
|
|
70
|
-
((_c = (_b = (_a = (0,
|
|
69
|
+
((_c = (_b = (_a = (0, utils_1.getWindow)()) === null || _a === void 0 ? void 0 : _a.CSS) === null || _b === void 0 ? void 0 : _b.supports) === null || _c === void 0 ? void 0 : _c.call(_b, "--badge-color: " + backgroundColor))
|
|
71
70
|
? __assign({ '--badge-color': getBadgeColorValue(backgroundColor) }, style) : __assign({ backgroundColor: getBadgeColorValue(backgroundColor) }, style);
|
|
72
71
|
return (react_1.default.createElement("span", __assign({ className: (0, classnames_1.default)('iui-badge', className), style: _style }, rest), children));
|
|
73
72
|
};
|
|
@@ -32,11 +32,9 @@ exports.Breadcrumbs = void 0;
|
|
|
32
32
|
*--------------------------------------------------------------------------------------------*/
|
|
33
33
|
var react_1 = __importDefault(require("react"));
|
|
34
34
|
var classnames_1 = __importDefault(require("classnames"));
|
|
35
|
-
var
|
|
35
|
+
var utils_1 = require("../utils");
|
|
36
36
|
var ChevronRight_1 = __importDefault(require("@itwin/itwinui-icons-react/cjs/icons/ChevronRight"));
|
|
37
37
|
require("@itwin/itwinui-css/css/breadcrumbs.css");
|
|
38
|
-
var useMergedRefs_1 = require("../utils/hooks/useMergedRefs");
|
|
39
|
-
var useOverflow_1 = require("../utils/hooks/useOverflow");
|
|
40
38
|
/**
|
|
41
39
|
* A breadcrumb trail is used as a navigational aid to help users keep track
|
|
42
40
|
* of their place in the application. It is often placed before a page's main content.
|
|
@@ -61,9 +59,9 @@ var useOverflow_1 = require("../utils/hooks/useOverflow");
|
|
|
61
59
|
*/
|
|
62
60
|
exports.Breadcrumbs = react_1.default.forwardRef(function (props, ref) {
|
|
63
61
|
var items = props.children, _a = props.currentIndex, currentIndex = _a === void 0 ? items.length - 1 : _a, separator = props.separator, className = props.className, rest = __rest(props, ["children", "currentIndex", "separator", "className"]);
|
|
64
|
-
(0,
|
|
65
|
-
var _b = (0,
|
|
66
|
-
var refs = (0,
|
|
62
|
+
(0, utils_1.useTheme)();
|
|
63
|
+
var _b = (0, utils_1.useOverflow)(items), overflowRef = _b[0], visibleCount = _b[1];
|
|
64
|
+
var refs = (0, utils_1.useMergedRefs)(overflowRef, ref);
|
|
67
65
|
var Separator = function () { return (react_1.default.createElement("li", { className: 'iui-breadcrumbs-separator', "aria-hidden": true }, separator !== null && separator !== void 0 ? separator : react_1.default.createElement(ChevronRight_1.default, null))); };
|
|
68
66
|
var ListItem = function (_a) {
|
|
69
67
|
var _b;
|
|
@@ -32,8 +32,7 @@ exports.ButtonGroup = void 0;
|
|
|
32
32
|
*--------------------------------------------------------------------------------------------*/
|
|
33
33
|
var react_1 = __importDefault(require("react"));
|
|
34
34
|
var classnames_1 = __importDefault(require("classnames"));
|
|
35
|
-
var
|
|
36
|
-
var useOverflow_1 = require("../utils/hooks/useOverflow");
|
|
35
|
+
var utils_1 = require("../utils");
|
|
37
36
|
require("@itwin/itwinui-css/css/button.css");
|
|
38
37
|
/**
|
|
39
38
|
* Group buttons together for common actions.
|
|
@@ -68,8 +67,8 @@ var ButtonGroup = function (props) {
|
|
|
68
67
|
var items = react_1.default.useMemo(function () { return react_1.default.Children.toArray(children); }, [
|
|
69
68
|
children,
|
|
70
69
|
]);
|
|
71
|
-
(0,
|
|
72
|
-
var _a = (0,
|
|
70
|
+
(0, utils_1.useTheme)();
|
|
71
|
+
var _a = (0, utils_1.useOverflow)(items, !overflowButton), overflowRef = _a[0], visibleCount = _a[1];
|
|
73
72
|
return (react_1.default.createElement("div", __assign({ className: (0, classnames_1.default)('iui-button-group', className), style: __assign(__assign({}, (!!overflowButton && { width: '100%' })), style), ref: overflowRef }, rest), !!overflowButton && visibleCount < items.length ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
74
73
|
items.slice(0, visibleCount - 1),
|
|
75
74
|
overflowButton(visibleCount))) : (children)));
|
|
@@ -32,7 +32,7 @@ exports.Button = void 0;
|
|
|
32
32
|
*--------------------------------------------------------------------------------------------*/
|
|
33
33
|
var classnames_1 = __importDefault(require("classnames"));
|
|
34
34
|
var react_1 = __importDefault(require("react"));
|
|
35
|
-
var
|
|
35
|
+
var utils_1 = require("../../utils");
|
|
36
36
|
require("@itwin/itwinui-css/css/button.css");
|
|
37
37
|
/**
|
|
38
38
|
* Generic button component
|
|
@@ -46,7 +46,7 @@ require("@itwin/itwinui-css/css/button.css");
|
|
|
46
46
|
exports.Button = react_1.default.forwardRef(function (props, ref) {
|
|
47
47
|
var _a;
|
|
48
48
|
var children = props.children, className = props.className, size = props.size, style = props.style, _b = props.styleType, styleType = _b === void 0 ? 'default' : _b, _c = props.type, type = _c === void 0 ? 'button' : _c, startIcon = props.startIcon, endIcon = props.endIcon, rest = __rest(props, ["children", "className", "size", "style", "styleType", "type", "startIcon", "endIcon"]);
|
|
49
|
-
(0,
|
|
49
|
+
(0, utils_1.useTheme)();
|
|
50
50
|
return (react_1.default.createElement("button", __assign({ ref: ref, className: (0, classnames_1.default)('iui-button', (_a = {},
|
|
51
51
|
_a["iui-" + size] = !!size,
|
|
52
52
|
_a["iui-" + styleType] = styleType !== 'default',
|
|
@@ -36,8 +36,7 @@ var Button_1 = require("../Button");
|
|
|
36
36
|
var DropdownMenu_1 = require("../../DropdownMenu");
|
|
37
37
|
var CaretDownSmall_1 = __importDefault(require("@itwin/itwinui-icons-react/cjs/icons/CaretDownSmall"));
|
|
38
38
|
var CaretUpSmall_1 = __importDefault(require("@itwin/itwinui-icons-react/cjs/icons/CaretUpSmall"));
|
|
39
|
-
var
|
|
40
|
-
var useMergedRefs_1 = require("../../utils/hooks/useMergedRefs");
|
|
39
|
+
var utils_1 = require("../../utils");
|
|
41
40
|
require("@itwin/itwinui-css/css/button.css");
|
|
42
41
|
/**
|
|
43
42
|
* Button that opens a DropdownMenu.
|
|
@@ -50,11 +49,11 @@ require("@itwin/itwinui-css/css/button.css");
|
|
|
50
49
|
*/
|
|
51
50
|
exports.DropdownButton = react_1.default.forwardRef(function (props, ref) {
|
|
52
51
|
var menuItems = props.menuItems, className = props.className, size = props.size, styleType = props.styleType, children = props.children, rest = __rest(props, ["menuItems", "className", "size", "styleType", "children"]);
|
|
53
|
-
(0,
|
|
52
|
+
(0, utils_1.useTheme)();
|
|
54
53
|
var _a = react_1.default.useState(false), isMenuOpen = _a[0], setIsMenuOpen = _a[1];
|
|
55
54
|
var _b = react_1.default.useState(0), menuWidth = _b[0], setMenuWidth = _b[1];
|
|
56
55
|
var buttonRef = react_1.default.useRef(null);
|
|
57
|
-
var refs = (0,
|
|
56
|
+
var refs = (0, utils_1.useMergedRefs)(ref, buttonRef);
|
|
58
57
|
react_1.default.useEffect(function () {
|
|
59
58
|
if (buttonRef.current) {
|
|
60
59
|
setMenuWidth(buttonRef.current.offsetWidth);
|
|
@@ -32,7 +32,7 @@ exports.IconButton = void 0;
|
|
|
32
32
|
*--------------------------------------------------------------------------------------------*/
|
|
33
33
|
var classnames_1 = __importDefault(require("classnames"));
|
|
34
34
|
var react_1 = __importDefault(require("react"));
|
|
35
|
-
var
|
|
35
|
+
var utils_1 = require("../../utils");
|
|
36
36
|
require("@itwin/itwinui-css/css/button.css");
|
|
37
37
|
/**
|
|
38
38
|
* Icon button
|
|
@@ -43,7 +43,7 @@ require("@itwin/itwinui-css/css/button.css");
|
|
|
43
43
|
exports.IconButton = react_1.default.forwardRef(function (props, ref) {
|
|
44
44
|
var _a;
|
|
45
45
|
var isActive = props.isActive, children = props.children, _b = props.styleType, styleType = _b === void 0 ? 'default' : _b, size = props.size, _c = props.type, type = _c === void 0 ? 'button' : _c, className = props.className, rest = __rest(props, ["isActive", "children", "styleType", "size", "type", "className"]);
|
|
46
|
-
(0,
|
|
46
|
+
(0, utils_1.useTheme)();
|
|
47
47
|
return (react_1.default.createElement("button", __assign({ ref: ref, className: (0, classnames_1.default)('iui-button', (_a = {},
|
|
48
48
|
_a["iui-" + size] = !!size,
|
|
49
49
|
_a["iui-" + styleType] = styleType !== 'default',
|
|
@@ -32,7 +32,7 @@ exports.IdeasButton = void 0;
|
|
|
32
32
|
*--------------------------------------------------------------------------------------------*/
|
|
33
33
|
var react_1 = __importDefault(require("react"));
|
|
34
34
|
var SmileyHappy_1 = __importDefault(require("@itwin/itwinui-icons-react/cjs/icons/SmileyHappy"));
|
|
35
|
-
var
|
|
35
|
+
var utils_1 = require("../../utils");
|
|
36
36
|
var Button_1 = require("../Button");
|
|
37
37
|
/**
|
|
38
38
|
* Ideas button
|
|
@@ -41,7 +41,7 @@ var Button_1 = require("../Button");
|
|
|
41
41
|
*/
|
|
42
42
|
exports.IdeasButton = react_1.default.forwardRef(function (props, ref) {
|
|
43
43
|
var _a = props.feedbackLabel, feedbackLabel = _a === void 0 ? 'Feedback' : _a, onClick = props.onClick, rest = __rest(props, ["feedbackLabel", "onClick"]);
|
|
44
|
-
(0,
|
|
44
|
+
(0, utils_1.useTheme)();
|
|
45
45
|
return (react_1.default.createElement(Button_1.Button, __assign({ ref: ref, className: 'iui-idea', onClick: onClick, startIcon: react_1.default.createElement(SmileyHappy_1.default, { "aria-hidden": true }) }, rest), feedbackLabel));
|
|
46
46
|
});
|
|
47
47
|
exports.default = exports.IdeasButton;
|
|
@@ -37,7 +37,7 @@ var IconButton_1 = require("../IconButton");
|
|
|
37
37
|
var DropdownMenu_1 = require("../../DropdownMenu");
|
|
38
38
|
var CaretDownSmall_1 = __importDefault(require("@itwin/itwinui-icons-react/cjs/icons/CaretDownSmall"));
|
|
39
39
|
var CaretUpSmall_1 = __importDefault(require("@itwin/itwinui-icons-react/cjs/icons/CaretUpSmall"));
|
|
40
|
-
var
|
|
40
|
+
var utils_1 = require("../../utils");
|
|
41
41
|
require("@itwin/itwinui-css/css/button.css");
|
|
42
42
|
/**
|
|
43
43
|
* Split button component with a DropdownMenu.
|
|
@@ -51,7 +51,7 @@ require("@itwin/itwinui-css/css/button.css");
|
|
|
51
51
|
*/
|
|
52
52
|
var SplitButton = function (props) {
|
|
53
53
|
var onClick = props.onClick, menuItems = props.menuItems, className = props.className, _a = props.menuPlacement, menuPlacement = _a === void 0 ? 'bottom-end' : _a, _b = props.styleType, styleType = _b === void 0 ? 'default' : _b, size = props.size, children = props.children, style = props.style, title = props.title, rest = __rest(props, ["onClick", "menuItems", "className", "menuPlacement", "styleType", "size", "children", "style", "title"]);
|
|
54
|
-
(0,
|
|
54
|
+
(0, utils_1.useTheme)();
|
|
55
55
|
var _c = react_1.default.useState(false), isMenuOpen = _c[0], setIsMenuOpen = _c[1];
|
|
56
56
|
var _d = react_1.default.useState(0), menuWidth = _d[0], setMenuWidth = _d[1];
|
|
57
57
|
var ref = react_1.default.useRef(null);
|
|
@@ -33,8 +33,7 @@ exports.Checkbox = void 0;
|
|
|
33
33
|
var classnames_1 = __importDefault(require("classnames"));
|
|
34
34
|
var react_1 = __importDefault(require("react"));
|
|
35
35
|
var ProgressIndicators_1 = require("../ProgressIndicators");
|
|
36
|
-
var
|
|
37
|
-
var useTheme_1 = require("../utils/hooks/useTheme");
|
|
36
|
+
var utils_1 = require("../utils");
|
|
38
37
|
require("@itwin/itwinui-css/css/inputs.css");
|
|
39
38
|
/**
|
|
40
39
|
* Simple input checkbox
|
|
@@ -49,9 +48,9 @@ require("@itwin/itwinui-css/css/inputs.css");
|
|
|
49
48
|
exports.Checkbox = react_1.default.forwardRef(function (props, ref) {
|
|
50
49
|
var _a;
|
|
51
50
|
var className = props.className, _b = props.disabled, disabled = _b === void 0 ? false : _b, _c = props.indeterminate, indeterminate = _c === void 0 ? false : _c, label = props.label, status = props.status, setFocus = props.setFocus, _d = props.isLoading, isLoading = _d === void 0 ? false : _d, style = props.style, checkmarkClassName = props.checkmarkClassName, checkmarkStyle = props.checkmarkStyle, rest = __rest(props, ["className", "disabled", "indeterminate", "label", "status", "setFocus", "isLoading", "style", "checkmarkClassName", "checkmarkStyle"]);
|
|
52
|
-
(0,
|
|
51
|
+
(0, utils_1.useTheme)();
|
|
53
52
|
var inputElementRef = react_1.default.useRef(null);
|
|
54
|
-
var refs = (0,
|
|
53
|
+
var refs = (0, utils_1.useMergedRefs)(inputElementRef, ref);
|
|
55
54
|
react_1.default.useEffect(function () {
|
|
56
55
|
if (inputElementRef.current && setFocus) {
|
|
57
56
|
inputElementRef.current.focus();
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { InputProps } from '../Input';
|
|
3
|
+
import { SelectOption } from '../Select';
|
|
4
|
+
import { PopoverProps, CommonProps } from '../utils';
|
|
5
|
+
import 'tippy.js/animations/shift-away.css';
|
|
6
|
+
export declare type ComboBoxProps<T> = {
|
|
7
|
+
/**
|
|
8
|
+
* Array of options that populate the dropdown list.
|
|
9
|
+
*/
|
|
10
|
+
options: SelectOption<T>[];
|
|
11
|
+
/**
|
|
12
|
+
* Controlled value of ComboBox.
|
|
13
|
+
*/
|
|
14
|
+
value?: T;
|
|
15
|
+
/**
|
|
16
|
+
* Callback fired when selected value changes.
|
|
17
|
+
*/
|
|
18
|
+
onChange?: (value: T) => void;
|
|
19
|
+
/**
|
|
20
|
+
* Function to customize the default filtering logic.
|
|
21
|
+
*/
|
|
22
|
+
filterFunction?: (options: SelectOption<T>[], inputValue: string) => SelectOption<T>[];
|
|
23
|
+
/**
|
|
24
|
+
* Native input element props.
|
|
25
|
+
*/
|
|
26
|
+
inputProps?: Omit<InputProps, 'setFocus'>;
|
|
27
|
+
/**
|
|
28
|
+
* Props to customize dropdown menu behavior.
|
|
29
|
+
*/
|
|
30
|
+
dropdownMenuProps?: PopoverProps;
|
|
31
|
+
/**
|
|
32
|
+
* Message shown when no options are available.
|
|
33
|
+
* @default 'No options found'
|
|
34
|
+
*/
|
|
35
|
+
emptyStateMessage?: string;
|
|
36
|
+
} & Omit<CommonProps, 'title'>;
|
|
37
|
+
/**
|
|
38
|
+
* ComboBox component that allows typing a value to filter the options in dropdown list.
|
|
39
|
+
* Values can be selected either using mouse clicks or using the Enter key.
|
|
40
|
+
* @example
|
|
41
|
+
* <ComboBox
|
|
42
|
+
* options={[
|
|
43
|
+
* { label: 'Item 1', value: 1 },
|
|
44
|
+
* { label: 'Item 2', value: 2 },
|
|
45
|
+
* { label: 'Item 3', value: 3 },
|
|
46
|
+
* ]}
|
|
47
|
+
* onChange={() => {}}
|
|
48
|
+
* />
|
|
49
|
+
*/
|
|
50
|
+
export declare const ComboBox: <T>(props: ComboBoxProps<T>) => JSX.Element;
|
|
51
|
+
export default ComboBox;
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
14
|
+
var t = {};
|
|
15
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
16
|
+
t[p] = s[p];
|
|
17
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
18
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
19
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
20
|
+
t[p[i]] = s[p[i]];
|
|
21
|
+
}
|
|
22
|
+
return t;
|
|
23
|
+
};
|
|
24
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
25
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
26
|
+
};
|
|
27
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
+
exports.ComboBox = void 0;
|
|
29
|
+
/*---------------------------------------------------------------------------------------------
|
|
30
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
31
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
32
|
+
*--------------------------------------------------------------------------------------------*/
|
|
33
|
+
var react_1 = __importDefault(require("react"));
|
|
34
|
+
var classnames_1 = __importDefault(require("classnames"));
|
|
35
|
+
var Input_1 = require("../Input");
|
|
36
|
+
var Menu_1 = require("../Menu");
|
|
37
|
+
var Typography_1 = require("../Typography");
|
|
38
|
+
var utils_1 = require("../utils");
|
|
39
|
+
var CaretDownSmall_1 = __importDefault(require("@itwin/itwinui-icons-react/cjs/icons/CaretDownSmall"));
|
|
40
|
+
require("tippy.js/animations/shift-away.css");
|
|
41
|
+
/**
|
|
42
|
+
* ComboBox component that allows typing a value to filter the options in dropdown list.
|
|
43
|
+
* Values can be selected either using mouse clicks or using the Enter key.
|
|
44
|
+
* @example
|
|
45
|
+
* <ComboBox
|
|
46
|
+
* options={[
|
|
47
|
+
* { label: 'Item 1', value: 1 },
|
|
48
|
+
* { label: 'Item 2', value: 2 },
|
|
49
|
+
* { label: 'Item 3', value: 3 },
|
|
50
|
+
* ]}
|
|
51
|
+
* onChange={() => {}}
|
|
52
|
+
* />
|
|
53
|
+
*/
|
|
54
|
+
var ComboBox = function (props) {
|
|
55
|
+
var options = props.options, value = props.value, onChange = props.onChange, filterFunction = props.filterFunction, className = props.className, inputProps = props.inputProps, dropdownMenuProps = props.dropdownMenuProps, _a = props.emptyStateMessage, emptyStateMessage = _a === void 0 ? 'No options found' : _a, rest = __rest(props, ["options", "value", "onChange", "filterFunction", "className", "inputProps", "dropdownMenuProps", "emptyStateMessage"]);
|
|
56
|
+
// Generate a stateful random id if not specified
|
|
57
|
+
var id = react_1.default.useState(function () { var _a, _b; return (_b = (_a = props.id) !== null && _a !== void 0 ? _a : (inputProps === null || inputProps === void 0 ? void 0 : inputProps.id) + "-cb") !== null && _b !== void 0 ? _b : "iui-cb-" + (0, utils_1.getRandomValue)(10); })[0];
|
|
58
|
+
(0, utils_1.useTheme)();
|
|
59
|
+
/** Generates a memoized id for an option, given the index from original list */
|
|
60
|
+
var getOptionId = react_1.default.useCallback(function (index) {
|
|
61
|
+
var _a;
|
|
62
|
+
return (_a = options[index].id) !== null && _a !== void 0 ? _a : id + "-option" + options.findIndex(function (_a) {
|
|
63
|
+
var value = _a.value;
|
|
64
|
+
return value === options[index].value;
|
|
65
|
+
});
|
|
66
|
+
}, [options, id]);
|
|
67
|
+
var memoizedItems = react_1.default.useMemo(function () {
|
|
68
|
+
return options.map(function (_a, index) {
|
|
69
|
+
var label = _a.label, value = _a.value, rest = __rest(_a, ["label", "value"]);
|
|
70
|
+
return (react_1.default.createElement(Menu_1.MenuItem, __assign({ id: getOptionId(index), key: getOptionId(index), value: value, role: 'option', onClick: function (value) {
|
|
71
|
+
setSelectedValue(value);
|
|
72
|
+
setIsOpen(false);
|
|
73
|
+
} }, rest), label));
|
|
74
|
+
});
|
|
75
|
+
}, [options, getOptionId]);
|
|
76
|
+
var inputRef = react_1.default.useRef(null);
|
|
77
|
+
var menuRef = react_1.default.useRef(null);
|
|
78
|
+
var toggleButtonRef = react_1.default.useRef(null);
|
|
79
|
+
var _b = react_1.default.useState(false), isOpen = _b[0], setIsOpen = _b[1];
|
|
80
|
+
// Set min-width of menu to be same as input
|
|
81
|
+
var _c = react_1.default.useState(0), minWidth = _c[0], setMinWidth = _c[1];
|
|
82
|
+
react_1.default.useEffect(function () {
|
|
83
|
+
if (inputRef.current) {
|
|
84
|
+
setMinWidth(inputRef.current.offsetWidth);
|
|
85
|
+
}
|
|
86
|
+
}, [isOpen]);
|
|
87
|
+
var _d = react_1.default.useState(options), filteredOptions = _d[0], setFilteredOptions = _d[1];
|
|
88
|
+
var _e = react_1.default.useState(function () {
|
|
89
|
+
return options.findIndex(function (option) { return value === option.value; });
|
|
90
|
+
}), focusedIndex = _e[0], setFocusedIndex = _e[1];
|
|
91
|
+
// Maintain internal selected value state synced with `value` prop
|
|
92
|
+
var _f = react_1.default.useState(), selectedValue = _f[0], setSelectedValue = _f[1];
|
|
93
|
+
react_1.default.useEffect(function () {
|
|
94
|
+
setSelectedValue(value);
|
|
95
|
+
}, [value]);
|
|
96
|
+
// Controlled input value
|
|
97
|
+
var _g = react_1.default.useState(''), inputValue = _g[0], setInputValue = _g[1];
|
|
98
|
+
var onInput = react_1.default.useCallback(function (event) {
|
|
99
|
+
var _a;
|
|
100
|
+
setInputValue(event.target.value);
|
|
101
|
+
(_a = inputProps === null || inputProps === void 0 ? void 0 : inputProps.onChange) === null || _a === void 0 ? void 0 : _a.call(inputProps, event);
|
|
102
|
+
}, [inputProps]);
|
|
103
|
+
// Fire onChange callback and update inputValue every time selected value changes
|
|
104
|
+
react_1.default.useEffect(function () {
|
|
105
|
+
var _a, _b;
|
|
106
|
+
if (selectedValue != undefined) {
|
|
107
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(selectedValue);
|
|
108
|
+
setInputValue((_b = (_a = options.find(function (_a) {
|
|
109
|
+
var value = _a.value;
|
|
110
|
+
return value === selectedValue;
|
|
111
|
+
})) === null || _a === void 0 ? void 0 : _a.label) !== null && _b !== void 0 ? _b : '');
|
|
112
|
+
}
|
|
113
|
+
}, [selectedValue, onChange, options]);
|
|
114
|
+
// Filter options and update focus when input value changes
|
|
115
|
+
react_1.default.useEffect(function () {
|
|
116
|
+
var _a;
|
|
117
|
+
if (!isOpen) {
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
// if input is empty or same as selected value, show the whole list
|
|
121
|
+
var selectedOption = options.find(function (_a) {
|
|
122
|
+
var value = _a.value;
|
|
123
|
+
return value === selectedValue;
|
|
124
|
+
});
|
|
125
|
+
if (!inputValue || (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.label) === inputValue) {
|
|
126
|
+
setFilteredOptions(options);
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
var _filteredOptions = (_a = filterFunction === null || filterFunction === void 0 ? void 0 : filterFunction(options, inputValue)) !== null && _a !== void 0 ? _a : options.filter(function (option) {
|
|
130
|
+
return option.label.toLowerCase().includes(inputValue === null || inputValue === void 0 ? void 0 : inputValue.trim().toLowerCase());
|
|
131
|
+
});
|
|
132
|
+
setFilteredOptions(_filteredOptions);
|
|
133
|
+
setFocusedIndex(function (previouslyFocusedIndex) {
|
|
134
|
+
if (_filteredOptions.includes(options[previouslyFocusedIndex])) {
|
|
135
|
+
return previouslyFocusedIndex;
|
|
136
|
+
}
|
|
137
|
+
else if (_filteredOptions.find(function (_a) {
|
|
138
|
+
var value = _a.value;
|
|
139
|
+
return value === selectedValue;
|
|
140
|
+
})) {
|
|
141
|
+
return options.findIndex(function (_a) {
|
|
142
|
+
var value = _a.value;
|
|
143
|
+
return value === selectedValue;
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
return -1; // reset focus if previously focused or selected value is not in filtered list
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
}, [inputValue, options, selectedValue, isOpen, filterFunction]);
|
|
151
|
+
var onKeyDown = react_1.default.useCallback(function (event) {
|
|
152
|
+
var focusableOptions = (0, utils_1.getFocusableElements)(menuRef.current);
|
|
153
|
+
var focusedIndexInFilteredList = focusableOptions.findIndex(function (_a) {
|
|
154
|
+
var _b;
|
|
155
|
+
var id = _a.id;
|
|
156
|
+
return id === ((_b = inputRef.current) === null || _b === void 0 ? void 0 : _b.getAttribute('aria-activedescendant'));
|
|
157
|
+
});
|
|
158
|
+
switch (event.key) {
|
|
159
|
+
case 'ArrowDown':
|
|
160
|
+
if (isOpen) {
|
|
161
|
+
var nextIndex_1 = Math.min(focusedIndexInFilteredList + 1, focusableOptions.length - 1);
|
|
162
|
+
setFocusedIndex(options.findIndex(function (_, index) {
|
|
163
|
+
return getOptionId(index) === focusableOptions[nextIndex_1].id;
|
|
164
|
+
}));
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
setIsOpen(true); // reopen menu if closed when typing
|
|
168
|
+
}
|
|
169
|
+
event.preventDefault();
|
|
170
|
+
event.stopPropagation();
|
|
171
|
+
break;
|
|
172
|
+
case 'ArrowUp':
|
|
173
|
+
if (isOpen) {
|
|
174
|
+
var previousIndex_1 = Math.max(focusedIndexInFilteredList - 1, 0);
|
|
175
|
+
setFocusedIndex(options.findIndex(function (_, index) {
|
|
176
|
+
return getOptionId(index) === focusableOptions[previousIndex_1].id;
|
|
177
|
+
}));
|
|
178
|
+
}
|
|
179
|
+
event.preventDefault();
|
|
180
|
+
event.stopPropagation();
|
|
181
|
+
break;
|
|
182
|
+
case 'Enter':
|
|
183
|
+
if (isOpen) {
|
|
184
|
+
setSelectedValue(options[focusedIndex].value);
|
|
185
|
+
}
|
|
186
|
+
setIsOpen(function (open) { return !open; });
|
|
187
|
+
event.preventDefault();
|
|
188
|
+
event.stopPropagation();
|
|
189
|
+
break;
|
|
190
|
+
case 'Escape':
|
|
191
|
+
setIsOpen(false);
|
|
192
|
+
event.preventDefault();
|
|
193
|
+
event.stopPropagation();
|
|
194
|
+
break;
|
|
195
|
+
case 'Tab':
|
|
196
|
+
setIsOpen(false);
|
|
197
|
+
break;
|
|
198
|
+
default:
|
|
199
|
+
if (!isOpen) {
|
|
200
|
+
setIsOpen(true); // reopen menu if closed when typing
|
|
201
|
+
}
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
}, [focusedIndex, isOpen, options, getOptionId]);
|
|
205
|
+
var menuItems = react_1.default.useMemo(function () {
|
|
206
|
+
if (filteredOptions.length === 0) {
|
|
207
|
+
return (react_1.default.createElement(Menu_1.MenuItem, { className: 'iui-menu-content', role: 'presentation' },
|
|
208
|
+
react_1.default.createElement(Typography_1.Text, { isMuted: true }, emptyStateMessage)));
|
|
209
|
+
}
|
|
210
|
+
return filteredOptions.map(function (option) {
|
|
211
|
+
var index = options.findIndex(function (_a) {
|
|
212
|
+
var value = _a.value;
|
|
213
|
+
return option.value === value;
|
|
214
|
+
});
|
|
215
|
+
return focusedIndex !== index && selectedValue !== option.value
|
|
216
|
+
? memoizedItems[index]
|
|
217
|
+
: react_1.default.cloneElement(memoizedItems[index], {
|
|
218
|
+
className: (0, classnames_1.default)({ 'iui-focused': focusedIndex === index }),
|
|
219
|
+
isSelected: selectedValue === option.value,
|
|
220
|
+
ref: function (el) {
|
|
221
|
+
return focusedIndex === index && (el === null || el === void 0 ? void 0 : el.scrollIntoView(false));
|
|
222
|
+
},
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
}, [
|
|
226
|
+
filteredOptions,
|
|
227
|
+
emptyStateMessage,
|
|
228
|
+
options,
|
|
229
|
+
focusedIndex,
|
|
230
|
+
selectedValue,
|
|
231
|
+
memoizedItems,
|
|
232
|
+
]);
|
|
233
|
+
return (react_1.default.createElement(utils_1.InputContainer, __assign({ className: className, isIconInline: true, icon: react_1.default.createElement("span", { ref: toggleButtonRef, className: (0, classnames_1.default)('iui-actionable', { 'iui-open': isOpen }), onClick: function () {
|
|
234
|
+
var _a;
|
|
235
|
+
if (isOpen) {
|
|
236
|
+
setIsOpen(false);
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
(_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
240
|
+
}
|
|
241
|
+
} },
|
|
242
|
+
react_1.default.createElement(CaretDownSmall_1.default, { "aria-hidden": true })) }, rest, { id: id }),
|
|
243
|
+
react_1.default.createElement(utils_1.Popover, __assign({ placement: 'bottom-start', visible: isOpen, onClickOutside: function (_, _a) {
|
|
244
|
+
var _b;
|
|
245
|
+
var target = _a.target;
|
|
246
|
+
if (!((_b = toggleButtonRef.current) === null || _b === void 0 ? void 0 : _b.contains(target))) {
|
|
247
|
+
setIsOpen(false);
|
|
248
|
+
}
|
|
249
|
+
}, animation: 'shift-away', duration: 200 }, dropdownMenuProps, { content: react_1.default.createElement(Menu_1.Menu, { id: id + "-list", className: 'iui-scroll', style: {
|
|
250
|
+
minWidth: minWidth,
|
|
251
|
+
maxWidth: "min(" + minWidth * 2 + "px, 90vw)",
|
|
252
|
+
maxHeight: 300,
|
|
253
|
+
}, setFocus: false, role: 'listbox', ref: menuRef }, menuItems), onHide: function (instance) {
|
|
254
|
+
var _a;
|
|
255
|
+
var selectedIndex = options.findIndex(function (_a) {
|
|
256
|
+
var value = _a.value;
|
|
257
|
+
return value === selectedValue;
|
|
258
|
+
});
|
|
259
|
+
setFocusedIndex(selectedIndex);
|
|
260
|
+
if (selectedIndex > -1) {
|
|
261
|
+
setInputValue(options[selectedIndex].label); // update input value to be same as selected value
|
|
262
|
+
}
|
|
263
|
+
(_a = dropdownMenuProps === null || dropdownMenuProps === void 0 ? void 0 : dropdownMenuProps.onHide) === null || _a === void 0 ? void 0 : _a.call(dropdownMenuProps, instance);
|
|
264
|
+
} }),
|
|
265
|
+
react_1.default.createElement(Input_1.Input, __assign({ ref: inputRef, onKeyDown: onKeyDown, onFocus: function () { return setIsOpen(true); }, onChange: onInput, value: inputValue, "aria-activedescendant": isOpen && focusedIndex > -1 ? getOptionId(focusedIndex) : undefined, role: 'combobox', "aria-controls": isOpen ? id + "-list" : undefined, "aria-autocomplete": 'list', spellCheck: false, autoCapitalize: 'none', autoCorrect: 'off' }, inputProps)))));
|
|
266
|
+
};
|
|
267
|
+
exports.ComboBox = ComboBox;
|
|
268
|
+
exports.default = exports.ComboBox;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ComboBox = void 0;
|
|
4
|
+
/*---------------------------------------------------------------------------------------------
|
|
5
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
6
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
7
|
+
*--------------------------------------------------------------------------------------------*/
|
|
8
|
+
var ComboBox_1 = require("./ComboBox");
|
|
9
|
+
Object.defineProperty(exports, "ComboBox", { enumerable: true, get: function () { return ComboBox_1.ComboBox; } });
|
|
10
|
+
exports.default = './ComboBox';
|
|
@@ -34,7 +34,7 @@ var ChevronLeft_1 = __importDefault(require("@itwin/itwinui-icons-react/cjs/icon
|
|
|
34
34
|
var ChevronRight_1 = __importDefault(require("@itwin/itwinui-icons-react/cjs/icons/ChevronRight"));
|
|
35
35
|
var classnames_1 = __importDefault(require("classnames"));
|
|
36
36
|
var react_1 = __importDefault(require("react"));
|
|
37
|
-
var
|
|
37
|
+
var utils_1 = require("../utils");
|
|
38
38
|
require("@itwin/itwinui-css/css/date-picker.css");
|
|
39
39
|
var IconButton_1 = require("../Buttons/IconButton");
|
|
40
40
|
var TimePicker_1 = require("../TimePicker");
|
|
@@ -128,7 +128,7 @@ exports.generateLocalizedStrings = generateLocalizedStrings;
|
|
|
128
128
|
var DatePicker = function (props) {
|
|
129
129
|
var _a, _b, _c;
|
|
130
130
|
var date = props.date, onChange = props.onChange, localizedNames = props.localizedNames, className = props.className, style = props.style, _d = props.setFocus, setFocus = _d === void 0 ? false : _d, _e = props.showTime, showTime = _e === void 0 ? false : _e, _f = props.use12Hours, use12Hours = _f === void 0 ? false : _f, precision = props.precision, hourStep = props.hourStep, minuteStep = props.minuteStep, secondStep = props.secondStep, rest = __rest(props, ["date", "onChange", "localizedNames", "className", "style", "setFocus", "showTime", "use12Hours", "precision", "hourStep", "minuteStep", "secondStep"]);
|
|
131
|
-
(0,
|
|
131
|
+
(0, utils_1.useTheme)();
|
|
132
132
|
var monthNames = (_a = localizedNames === null || localizedNames === void 0 ? void 0 : localizedNames.months) !== null && _a !== void 0 ? _a : defaultMonths;
|
|
133
133
|
var shortDays = (_b = localizedNames === null || localizedNames === void 0 ? void 0 : localizedNames.shortDays) !== null && _b !== void 0 ? _b : defaultShortDays;
|
|
134
134
|
var longDays = (_c = localizedNames === null || localizedNames === void 0 ? void 0 : localizedNames.days) !== null && _c !== void 0 ? _c : defaultLongDays;
|