@itwin/itwinui-react 1.34.2 → 1.37.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 +43 -0
- package/cjs/core/ButtonGroup/ButtonGroup.js +1 -0
- package/cjs/core/Carousel/Carousel.d.ts +68 -0
- package/cjs/core/Carousel/Carousel.js +130 -0
- package/cjs/core/Carousel/CarouselContext.d.ts +37 -0
- package/cjs/core/Carousel/CarouselContext.js +12 -0
- package/cjs/core/Carousel/CarouselDot.d.ts +13 -0
- package/cjs/core/Carousel/CarouselDot.js +46 -0
- package/cjs/core/Carousel/CarouselDotsList.d.ts +32 -0
- package/cjs/core/Carousel/CarouselDotsList.js +132 -0
- package/cjs/core/Carousel/CarouselNavigation.d.ts +15 -0
- package/cjs/core/Carousel/CarouselNavigation.js +88 -0
- package/cjs/core/Carousel/CarouselSlide.d.ts +14 -0
- package/cjs/core/Carousel/CarouselSlide.js +63 -0
- package/cjs/core/Carousel/CarouselSlider.d.ts +5 -0
- package/cjs/core/Carousel/CarouselSlider.js +94 -0
- package/cjs/core/Carousel/index.d.ts +4 -0
- package/cjs/core/Carousel/index.js +10 -0
- package/cjs/core/ColorPicker/ColorSwatch.d.ts +1 -1
- package/cjs/core/DatePicker/DatePicker.d.ts +5 -0
- package/cjs/core/DatePicker/DatePicker.js +38 -13
- package/cjs/core/Header/HeaderButton.js +1 -0
- package/cjs/core/Menu/Menu.js +8 -3
- package/cjs/core/Modal/Modal.d.ts +5 -0
- package/cjs/core/Modal/Modal.js +11 -9
- package/cjs/core/Modal/ModalContent.d.ts +14 -0
- package/cjs/core/Modal/ModalContent.js +46 -0
- package/cjs/core/Modal/index.d.ts +2 -0
- package/cjs/core/Modal/index.js +3 -1
- package/cjs/core/SkipToContentLink/SkipToContentLink.d.ts +33 -0
- package/cjs/core/SkipToContentLink/SkipToContentLink.js +50 -0
- package/cjs/core/SkipToContentLink/index.d.ts +4 -0
- package/cjs/core/SkipToContentLink/index.js +10 -0
- package/cjs/core/Surface/Surface.d.ts +32 -0
- package/cjs/core/Surface/Surface.js +70 -0
- package/cjs/core/Surface/index.d.ts +4 -0
- package/cjs/core/Surface/index.js +10 -0
- package/cjs/core/Table/Table.d.ts +7 -0
- package/cjs/core/Table/Table.js +51 -27
- package/cjs/core/Table/TableCell.js +3 -3
- package/cjs/core/Table/TableRowMemoized.js +12 -7
- package/cjs/core/Table/actionHandlers/index.d.ts +2 -1
- package/cjs/core/Table/actionHandlers/index.js +5 -1
- package/cjs/core/Table/cells/DefaultCell.d.ts +1 -1
- package/cjs/core/Table/cells/DefaultCell.js +5 -2
- package/cjs/core/Table/columns/actionColumn.d.ts +35 -0
- package/cjs/core/Table/columns/actionColumn.js +91 -0
- package/cjs/core/Table/columns/expanderColumn.d.ts +47 -0
- package/cjs/core/Table/columns/expanderColumn.js +81 -0
- package/cjs/core/Table/columns/index.d.ts +3 -0
- package/cjs/core/Table/columns/index.js +15 -0
- package/cjs/core/Table/columns/selectionColumn.d.ts +35 -0
- package/cjs/core/Table/columns/selectionColumn.js +67 -0
- package/cjs/core/Table/hooks/index.d.ts +2 -2
- package/cjs/core/Table/hooks/index.js +1 -3
- package/cjs/core/Table/hooks/useExpanderCell.d.ts +0 -1
- package/cjs/core/Table/hooks/useExpanderCell.js +25 -39
- package/cjs/core/Table/hooks/useResizeColumns.js +8 -2
- package/cjs/core/Table/hooks/useSelectionCell.d.ts +1 -2
- package/cjs/core/Table/hooks/useSelectionCell.js +8 -53
- package/cjs/core/Table/index.d.ts +1 -0
- package/cjs/core/Table/index.js +5 -1
- package/cjs/core/Table/utils.js +1 -1
- package/cjs/core/Tag/Tag.js +6 -3
- package/cjs/core/Tile/Tile.d.ts +6 -2
- package/cjs/core/Tile/Tile.js +7 -2
- package/cjs/core/Toast/Toast.js +1 -1
- package/cjs/core/Typography/Anchor/Anchor.d.ts +1 -0
- package/cjs/core/Typography/Anchor/Anchor.js +1 -0
- package/cjs/core/index.d.ts +9 -3
- package/cjs/core/index.js +13 -2
- package/cjs/core/utils/components/Popover.js +13 -1
- package/cjs/core/utils/hooks/index.d.ts +1 -0
- package/cjs/core/utils/hooks/index.js +1 -0
- package/cjs/core/utils/hooks/useMediaQuery.d.ts +2 -0
- package/cjs/core/utils/hooks/useMediaQuery.js +46 -0
- package/cjs/core/utils/hooks/useTheme.d.ts +5 -0
- package/cjs/core/utils/hooks/useTheme.js +20 -14
- package/cjs/types/react-table-config.d.ts +18 -0
- package/esm/core/ButtonGroup/ButtonGroup.js +1 -0
- package/esm/core/Carousel/Carousel.d.ts +68 -0
- package/esm/core/Carousel/Carousel.js +124 -0
- package/esm/core/Carousel/CarouselContext.d.ts +37 -0
- package/esm/core/Carousel/CarouselContext.js +6 -0
- package/esm/core/Carousel/CarouselDot.d.ts +13 -0
- package/esm/core/Carousel/CarouselDot.js +40 -0
- package/esm/core/Carousel/CarouselDotsList.d.ts +32 -0
- package/esm/core/Carousel/CarouselDotsList.js +126 -0
- package/esm/core/Carousel/CarouselNavigation.d.ts +15 -0
- package/esm/core/Carousel/CarouselNavigation.js +82 -0
- package/esm/core/Carousel/CarouselSlide.d.ts +14 -0
- package/esm/core/Carousel/CarouselSlide.js +57 -0
- package/esm/core/Carousel/CarouselSlider.d.ts +5 -0
- package/esm/core/Carousel/CarouselSlider.js +88 -0
- package/esm/core/Carousel/index.d.ts +4 -0
- package/esm/core/Carousel/index.js +6 -0
- package/esm/core/ColorPicker/ColorSwatch.d.ts +1 -1
- package/esm/core/DatePicker/DatePicker.d.ts +5 -0
- package/esm/core/DatePicker/DatePicker.js +38 -13
- package/esm/core/Header/HeaderButton.js +1 -0
- package/esm/core/Menu/Menu.js +8 -3
- package/esm/core/Modal/Modal.d.ts +5 -0
- package/esm/core/Modal/Modal.js +11 -9
- package/esm/core/Modal/ModalContent.d.ts +14 -0
- package/esm/core/Modal/ModalContent.js +39 -0
- package/esm/core/Modal/index.d.ts +2 -0
- package/esm/core/Modal/index.js +1 -0
- package/esm/core/SkipToContentLink/SkipToContentLink.d.ts +33 -0
- package/esm/core/SkipToContentLink/SkipToContentLink.js +44 -0
- package/esm/core/SkipToContentLink/index.d.ts +4 -0
- package/esm/core/SkipToContentLink/index.js +6 -0
- package/esm/core/Surface/Surface.d.ts +32 -0
- package/esm/core/Surface/Surface.js +64 -0
- package/esm/core/Surface/index.d.ts +4 -0
- package/esm/core/Surface/index.js +6 -0
- package/esm/core/Table/Table.d.ts +7 -0
- package/esm/core/Table/Table.js +47 -23
- package/esm/core/Table/TableCell.js +2 -2
- package/esm/core/Table/TableRowMemoized.js +12 -7
- package/esm/core/Table/actionHandlers/index.d.ts +2 -1
- package/esm/core/Table/actionHandlers/index.js +2 -1
- package/esm/core/Table/cells/DefaultCell.d.ts +1 -1
- package/esm/core/Table/cells/DefaultCell.js +5 -2
- package/esm/core/Table/columns/actionColumn.d.ts +35 -0
- package/esm/core/Table/columns/actionColumn.js +84 -0
- package/esm/core/Table/columns/expanderColumn.d.ts +47 -0
- package/esm/core/Table/columns/expanderColumn.js +74 -0
- package/esm/core/Table/columns/index.d.ts +3 -0
- package/esm/core/Table/columns/index.js +7 -0
- package/esm/core/Table/columns/selectionColumn.d.ts +35 -0
- package/esm/core/Table/columns/selectionColumn.js +60 -0
- package/esm/core/Table/hooks/index.d.ts +2 -2
- package/esm/core/Table/hooks/index.js +2 -2
- package/esm/core/Table/hooks/useExpanderCell.d.ts +0 -1
- package/esm/core/Table/hooks/useExpanderCell.js +24 -35
- package/esm/core/Table/hooks/useResizeColumns.js +8 -2
- package/esm/core/Table/hooks/useSelectionCell.d.ts +1 -2
- package/esm/core/Table/hooks/useSelectionCell.js +7 -49
- package/esm/core/Table/index.d.ts +1 -0
- package/esm/core/Table/index.js +1 -0
- package/esm/core/Table/utils.js +1 -1
- package/esm/core/Tag/Tag.js +6 -3
- package/esm/core/Tile/Tile.d.ts +6 -2
- package/esm/core/Tile/Tile.js +7 -2
- package/esm/core/Toast/Toast.js +1 -1
- package/esm/core/Typography/Anchor/Anchor.d.ts +1 -0
- package/esm/core/Typography/Anchor/Anchor.js +1 -0
- package/esm/core/index.d.ts +9 -3
- package/esm/core/index.js +5 -2
- package/esm/core/utils/components/Popover.js +13 -1
- package/esm/core/utils/hooks/index.d.ts +1 -0
- package/esm/core/utils/hooks/index.js +1 -0
- package/esm/core/utils/hooks/useMediaQuery.d.ts +2 -0
- package/esm/core/utils/hooks/useMediaQuery.js +39 -0
- package/esm/core/utils/hooks/useTheme.d.ts +5 -0
- package/esm/core/utils/hooks/useTheme.js +20 -14
- package/esm/types/react-table-config.d.ts +18 -0
- package/package.json +3 -2
package/cjs/core/index.d.ts
CHANGED
|
@@ -8,6 +8,8 @@ export { Button, DropdownButton, IconButton, IdeasButton, SplitButton, } from '.
|
|
|
8
8
|
export type { ButtonProps, DropdownButtonProps, IconButtonProps, IdeasButtonProps, SplitButtonProps, } from './Buttons';
|
|
9
9
|
export { ButtonGroup } from './ButtonGroup';
|
|
10
10
|
export type { ButtonGroupProps } from './ButtonGroup';
|
|
11
|
+
export { Carousel } from './Carousel';
|
|
12
|
+
export type { CarouselProps } from './Carousel';
|
|
11
13
|
export { Checkbox } from './Checkbox';
|
|
12
14
|
export type { CheckboxProps } from './Checkbox';
|
|
13
15
|
export { ColorPicker, ColorSwatch, ColorBuilder, ColorInputPanel, ColorPalette, } from './ColorPicker';
|
|
@@ -48,8 +50,8 @@ export { LabeledTextarea } from './LabeledTextarea';
|
|
|
48
50
|
export type { LabeledTextareaProps } from './LabeledTextarea';
|
|
49
51
|
export { Menu, MenuItem, MenuDivider, MenuExtraContent } from './Menu';
|
|
50
52
|
export type { MenuProps, MenuItemProps, MenuDividerProps, MenuExtraContentProps, } from './Menu';
|
|
51
|
-
export { Modal, ModalButtonBar } from './Modal';
|
|
52
|
-
export type { ModalProps, ModalButtonBarProps } from './Modal';
|
|
53
|
+
export { Modal, ModalButtonBar, ModalContent } from './Modal';
|
|
54
|
+
export type { ModalProps, ModalButtonBarProps, ModalContentProps, } from './Modal';
|
|
53
55
|
export { ProgressLinear, ProgressRadial } from './ProgressIndicators';
|
|
54
56
|
export type { ProgressLinearProps, ProgressRadialProps, } from './ProgressIndicators';
|
|
55
57
|
export { Radio } from './Radio';
|
|
@@ -60,11 +62,15 @@ export { Select } from './Select';
|
|
|
60
62
|
export type { SelectProps, SelectOption, ItemRendererProps } from './Select';
|
|
61
63
|
export { SideNavigation, SidenavButton, SidenavSubmenu, SidenavSubmenuHeader, } from './SideNavigation';
|
|
62
64
|
export type { SideNavigationProps, SidenavButtonProps, SidenavSubmenuProps, SidenavSubmenuHeaderProps, } from './SideNavigation';
|
|
65
|
+
export { SkipToContentLink } from './SkipToContentLink';
|
|
66
|
+
export type { SkipToContentLinkProps } from './SkipToContentLink';
|
|
63
67
|
export { Slider } from './Slider';
|
|
64
68
|
export type { SliderProps } from './Slider';
|
|
65
69
|
export { StatusMessage } from './StatusMessage';
|
|
66
70
|
export type { StatusMessageProps } from './StatusMessage';
|
|
67
|
-
export {
|
|
71
|
+
export { Surface } from './Surface';
|
|
72
|
+
export type { SurfaceProps } from './Surface';
|
|
73
|
+
export { Table, tableFilters, FilterButtonBar, DefaultCell, EditableCell, TablePaginator, ActionColumn, ExpanderColumn, SelectionColumn, } from './Table';
|
|
68
74
|
export type { TableProps, TableFilterProps, TableFilterValue, DateRangeFilterOptions, FilterButtonBarProps, DefaultCellProps, EditableCellProps, TablePaginatorProps, TablePaginatorRendererProps, } from './Table';
|
|
69
75
|
export { Tag, TagContainer } from './Tag';
|
|
70
76
|
export type { TagProps, TagContainerProps } from './Tag';
|
package/cjs/core/index.js
CHANGED
|
@@ -3,8 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
7
|
-
exports.
|
|
6
|
+
exports.Modal = exports.MenuExtraContent = exports.MenuDivider = exports.MenuItem = exports.Menu = exports.LabeledTextarea = exports.LabeledSelect = exports.InputGroup = exports.LabeledInput = exports.Label = exports.Input = exports.InformationPanelContent = exports.InformationPanelBody = exports.InformationPanelHeader = exports.InformationPanelWrapper = exports.InformationPanel = exports.HorizontalTab = exports.HorizontalTabs = exports.Tab = exports.VerticalTabs = exports.HeaderLogo = exports.HeaderButton = exports.HeaderBreadcrumbs = exports.Header = exports.Footer = exports.FileUploadTemplate = exports.FileUpload = exports.Fieldset = exports.ExpandableBlock = exports.ErrorPage = exports.DropdownMenu = exports.generateLocalizedStrings = exports.DatePicker = exports.ComboBox = exports.ColorPalette = exports.ColorInputPanel = exports.ColorBuilder = exports.ColorSwatch = exports.ColorPicker = exports.Checkbox = exports.Carousel = exports.ButtonGroup = exports.SplitButton = exports.IdeasButton = exports.IconButton = exports.DropdownButton = exports.Button = exports.Breadcrumbs = exports.Badge = exports.Alert = void 0;
|
|
7
|
+
exports.UserIcon = exports.Text = exports.KbdKeys = exports.Kbd = exports.Code = exports.Blockquote = exports.Title = exports.Subheading = exports.Small = exports.Leading = exports.Headline = exports.Body = exports.Anchor = exports.TreeNodeExpander = exports.TreeNode = exports.Tree = exports.Tooltip = exports.ToggleSwitch = exports.ThemeProvider = exports.toaster = exports.TimePicker = exports.Tile = exports.Textarea = exports.TagContainer = exports.Tag = exports.SelectionColumn = exports.ExpanderColumn = exports.ActionColumn = exports.TablePaginator = exports.EditableCell = exports.DefaultCell = exports.FilterButtonBar = exports.tableFilters = exports.Table = exports.Surface = exports.StatusMessage = exports.Slider = exports.SkipToContentLink = exports.SidenavSubmenuHeader = exports.SidenavSubmenu = exports.SidenavButton = exports.SideNavigation = exports.Select = exports.RadioTileGroup = exports.RadioTile = exports.Radio = exports.ProgressRadial = exports.ProgressLinear = exports.ModalContent = exports.ModalButtonBar = void 0;
|
|
8
|
+
exports.MiddleTextTruncation = exports.ColorValue = exports.useTheme = exports.getUserColor = exports.Wizard = exports.UserIconGroup = void 0;
|
|
8
9
|
/*---------------------------------------------------------------------------------------------
|
|
9
10
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
10
11
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
@@ -23,6 +24,8 @@ Object.defineProperty(exports, "IdeasButton", { enumerable: true, get: function
|
|
|
23
24
|
Object.defineProperty(exports, "SplitButton", { enumerable: true, get: function () { return Buttons_1.SplitButton; } });
|
|
24
25
|
var ButtonGroup_1 = require("./ButtonGroup");
|
|
25
26
|
Object.defineProperty(exports, "ButtonGroup", { enumerable: true, get: function () { return ButtonGroup_1.ButtonGroup; } });
|
|
27
|
+
var Carousel_1 = require("./Carousel");
|
|
28
|
+
Object.defineProperty(exports, "Carousel", { enumerable: true, get: function () { return Carousel_1.Carousel; } });
|
|
26
29
|
var Checkbox_1 = require("./Checkbox");
|
|
27
30
|
Object.defineProperty(exports, "Checkbox", { enumerable: true, get: function () { return Checkbox_1.Checkbox; } });
|
|
28
31
|
var ColorPicker_1 = require("./ColorPicker");
|
|
@@ -85,6 +88,7 @@ Object.defineProperty(exports, "MenuExtraContent", { enumerable: true, get: func
|
|
|
85
88
|
var Modal_1 = require("./Modal");
|
|
86
89
|
Object.defineProperty(exports, "Modal", { enumerable: true, get: function () { return Modal_1.Modal; } });
|
|
87
90
|
Object.defineProperty(exports, "ModalButtonBar", { enumerable: true, get: function () { return Modal_1.ModalButtonBar; } });
|
|
91
|
+
Object.defineProperty(exports, "ModalContent", { enumerable: true, get: function () { return Modal_1.ModalContent; } });
|
|
88
92
|
var ProgressIndicators_1 = require("./ProgressIndicators");
|
|
89
93
|
Object.defineProperty(exports, "ProgressLinear", { enumerable: true, get: function () { return ProgressIndicators_1.ProgressLinear; } });
|
|
90
94
|
Object.defineProperty(exports, "ProgressRadial", { enumerable: true, get: function () { return ProgressIndicators_1.ProgressRadial; } });
|
|
@@ -100,10 +104,14 @@ Object.defineProperty(exports, "SideNavigation", { enumerable: true, get: functi
|
|
|
100
104
|
Object.defineProperty(exports, "SidenavButton", { enumerable: true, get: function () { return SideNavigation_1.SidenavButton; } });
|
|
101
105
|
Object.defineProperty(exports, "SidenavSubmenu", { enumerable: true, get: function () { return SideNavigation_1.SidenavSubmenu; } });
|
|
102
106
|
Object.defineProperty(exports, "SidenavSubmenuHeader", { enumerable: true, get: function () { return SideNavigation_1.SidenavSubmenuHeader; } });
|
|
107
|
+
var SkipToContentLink_1 = require("./SkipToContentLink");
|
|
108
|
+
Object.defineProperty(exports, "SkipToContentLink", { enumerable: true, get: function () { return SkipToContentLink_1.SkipToContentLink; } });
|
|
103
109
|
var Slider_1 = require("./Slider");
|
|
104
110
|
Object.defineProperty(exports, "Slider", { enumerable: true, get: function () { return Slider_1.Slider; } });
|
|
105
111
|
var StatusMessage_1 = require("./StatusMessage");
|
|
106
112
|
Object.defineProperty(exports, "StatusMessage", { enumerable: true, get: function () { return StatusMessage_1.StatusMessage; } });
|
|
113
|
+
var Surface_1 = require("./Surface");
|
|
114
|
+
Object.defineProperty(exports, "Surface", { enumerable: true, get: function () { return Surface_1.Surface; } });
|
|
107
115
|
var Table_1 = require("./Table");
|
|
108
116
|
Object.defineProperty(exports, "Table", { enumerable: true, get: function () { return Table_1.Table; } });
|
|
109
117
|
Object.defineProperty(exports, "tableFilters", { enumerable: true, get: function () { return Table_1.tableFilters; } });
|
|
@@ -111,6 +119,9 @@ Object.defineProperty(exports, "FilterButtonBar", { enumerable: true, get: funct
|
|
|
111
119
|
Object.defineProperty(exports, "DefaultCell", { enumerable: true, get: function () { return Table_1.DefaultCell; } });
|
|
112
120
|
Object.defineProperty(exports, "EditableCell", { enumerable: true, get: function () { return Table_1.EditableCell; } });
|
|
113
121
|
Object.defineProperty(exports, "TablePaginator", { enumerable: true, get: function () { return Table_1.TablePaginator; } });
|
|
122
|
+
Object.defineProperty(exports, "ActionColumn", { enumerable: true, get: function () { return Table_1.ActionColumn; } });
|
|
123
|
+
Object.defineProperty(exports, "ExpanderColumn", { enumerable: true, get: function () { return Table_1.ExpanderColumn; } });
|
|
124
|
+
Object.defineProperty(exports, "SelectionColumn", { enumerable: true, get: function () { return Table_1.SelectionColumn; } });
|
|
114
125
|
var Tag_1 = require("./Tag");
|
|
115
126
|
Object.defineProperty(exports, "Tag", { enumerable: true, get: function () { return Tag_1.Tag; } });
|
|
116
127
|
Object.defineProperty(exports, "TagContainer", { enumerable: true, get: function () { return Tag_1.TagContainer; } });
|
|
@@ -78,7 +78,19 @@ exports.Popover = react_1.default.forwardRef(function (props, ref) {
|
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
80
|
else {
|
|
81
|
-
|
|
81
|
+
// Fixing issue where elements below Popover gets click events.
|
|
82
|
+
// Tippy uses react Portal, which propagates events by react tree, not dom tree.
|
|
83
|
+
// Read more: https://reactjs.org/docs/portals.html#event-bubbling-through-portals
|
|
84
|
+
var clonedContent = react_1.default.isValidElement(props.content)
|
|
85
|
+
? react_1.default.cloneElement(props.content, {
|
|
86
|
+
onClick: function (e) {
|
|
87
|
+
var _a, _b;
|
|
88
|
+
e.stopPropagation();
|
|
89
|
+
(_b = (_a = props.content.props).onClick) === null || _b === void 0 ? void 0 : _b.call(_a, e);
|
|
90
|
+
},
|
|
91
|
+
})
|
|
92
|
+
: props.content;
|
|
93
|
+
computedProps.content = mounted ? clonedContent : '';
|
|
82
94
|
}
|
|
83
95
|
return react_1.default.createElement(react_2.default, __assign({}, computedProps, { ref: refs }));
|
|
84
96
|
});
|
|
@@ -21,3 +21,4 @@ __exportStar(require("./useResizeObserver"), exports);
|
|
|
21
21
|
__exportStar(require("./useContainerWidth"), exports);
|
|
22
22
|
__exportStar(require("./useTheme"), exports);
|
|
23
23
|
__exportStar(require("./useIntersection"), exports);
|
|
24
|
+
__exportStar(require("./useMediaQuery"), exports);
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.useMediaQuery = void 0;
|
|
7
|
+
/*---------------------------------------------------------------------------------------------
|
|
8
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
9
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
10
|
+
*--------------------------------------------------------------------------------------------*/
|
|
11
|
+
var react_1 = __importDefault(require("react"));
|
|
12
|
+
var functions_1 = require("../functions");
|
|
13
|
+
var useMediaQuery = function (queryString) {
|
|
14
|
+
var _a = react_1.default.useState(), matches = _a[0], setMatches = _a[1];
|
|
15
|
+
react_1.default.useLayoutEffect(function () {
|
|
16
|
+
var _a, _b, _c;
|
|
17
|
+
var mediaQueryList = (_b = (_a = (0, functions_1.getWindow)()) === null || _a === void 0 ? void 0 : _a.matchMedia) === null || _b === void 0 ? void 0 : _b.call(_a, queryString);
|
|
18
|
+
var handleChange = function (_a) {
|
|
19
|
+
var matches = _a.matches;
|
|
20
|
+
return setMatches(matches);
|
|
21
|
+
};
|
|
22
|
+
if (mediaQueryList != undefined) {
|
|
23
|
+
setMatches(mediaQueryList.matches);
|
|
24
|
+
try {
|
|
25
|
+
mediaQueryList.addEventListener('change', handleChange);
|
|
26
|
+
}
|
|
27
|
+
catch (_d) {
|
|
28
|
+
// Safari 13 fallback
|
|
29
|
+
(_c = mediaQueryList.addListener) === null || _c === void 0 ? void 0 : _c.call(mediaQueryList, handleChange);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return function () {
|
|
33
|
+
var _a;
|
|
34
|
+
try {
|
|
35
|
+
mediaQueryList === null || mediaQueryList === void 0 ? void 0 : mediaQueryList.removeEventListener('change', handleChange);
|
|
36
|
+
}
|
|
37
|
+
catch (_b) {
|
|
38
|
+
// Safari 13 fallback
|
|
39
|
+
(_a = mediaQueryList === null || mediaQueryList === void 0 ? void 0 : mediaQueryList.removeListener) === null || _a === void 0 ? void 0 : _a.call(mediaQueryList, handleChange);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
}, [queryString]);
|
|
43
|
+
return !!matches;
|
|
44
|
+
};
|
|
45
|
+
exports.useMediaQuery = useMediaQuery;
|
|
46
|
+
exports.default = exports.useMediaQuery;
|
|
@@ -6,6 +6,11 @@ export declare type ThemeOptions = {
|
|
|
6
6
|
* @default document
|
|
7
7
|
*/
|
|
8
8
|
ownerDocument?: Document;
|
|
9
|
+
/**
|
|
10
|
+
* Whether to apply high-contrast versions of light and dark themes.
|
|
11
|
+
* Will default to user preference if browser supports it.
|
|
12
|
+
*/
|
|
13
|
+
highContrast?: boolean;
|
|
9
14
|
};
|
|
10
15
|
export declare type ThemeType = 'light' | 'dark' | 'os';
|
|
11
16
|
/**
|
|
@@ -11,6 +11,7 @@ exports.useTheme = void 0;
|
|
|
11
11
|
var react_1 = __importDefault(require("react"));
|
|
12
12
|
require("@itwin/itwinui-css/css/global.css");
|
|
13
13
|
var dom_1 = require("../functions/dom");
|
|
14
|
+
var useMediaQuery_1 = require("./useMediaQuery");
|
|
14
15
|
/**
|
|
15
16
|
* Hook that applies styling and theme to all components.
|
|
16
17
|
* Defaults to light theme if none provided or set elsewhere.
|
|
@@ -20,6 +21,8 @@ var dom_1 = require("../functions/dom");
|
|
|
20
21
|
var useTheme = function (theme, themeOptions) {
|
|
21
22
|
var _a;
|
|
22
23
|
var ownerDocument = (_a = themeOptions === null || themeOptions === void 0 ? void 0 : themeOptions.ownerDocument) !== null && _a !== void 0 ? _a : (0, dom_1.getDocument)();
|
|
24
|
+
var prefersHighContrast = (0, useMediaQuery_1.useMediaQuery)('(prefers-contrast: more)');
|
|
25
|
+
var highContrast = react_1.default.useMemo(function () { var _a; return !!((_a = themeOptions === null || themeOptions === void 0 ? void 0 : themeOptions.highContrast) !== null && _a !== void 0 ? _a : prefersHighContrast); }, [prefersHighContrast, themeOptions === null || themeOptions === void 0 ? void 0 : themeOptions.highContrast]);
|
|
23
26
|
react_1.default.useLayoutEffect(function () {
|
|
24
27
|
if (!(ownerDocument === null || ownerDocument === void 0 ? void 0 : ownerDocument.body.classList.contains('iui-body'))) {
|
|
25
28
|
ownerDocument === null || ownerDocument === void 0 ? void 0 : ownerDocument.body.classList.add('iui-body');
|
|
@@ -34,20 +37,20 @@ var useTheme = function (theme, themeOptions) {
|
|
|
34
37
|
var addOSTheme = function (_a) {
|
|
35
38
|
var isDark = _a.matches;
|
|
36
39
|
if (isDark) {
|
|
37
|
-
|
|
40
|
+
applyTheme('dark', { ownerDocument: ownerDocument, highContrast: highContrast });
|
|
38
41
|
}
|
|
39
42
|
else {
|
|
40
|
-
|
|
43
|
+
applyTheme('light', { ownerDocument: ownerDocument, highContrast: highContrast });
|
|
41
44
|
}
|
|
42
45
|
};
|
|
43
46
|
switch (theme) {
|
|
44
47
|
case 'light':
|
|
45
48
|
(_c = prefersDarkMediaQuery === null || prefersDarkMediaQuery === void 0 ? void 0 : prefersDarkMediaQuery.removeEventListener) === null || _c === void 0 ? void 0 : _c.call(prefersDarkMediaQuery, 'change', addOSTheme);
|
|
46
|
-
|
|
49
|
+
applyTheme('light', { ownerDocument: ownerDocument, highContrast: highContrast });
|
|
47
50
|
break;
|
|
48
51
|
case 'dark':
|
|
49
52
|
(_d = prefersDarkMediaQuery === null || prefersDarkMediaQuery === void 0 ? void 0 : prefersDarkMediaQuery.removeEventListener) === null || _d === void 0 ? void 0 : _d.call(prefersDarkMediaQuery, 'change', addOSTheme);
|
|
50
|
-
|
|
53
|
+
applyTheme('dark', { ownerDocument: ownerDocument, highContrast: highContrast });
|
|
51
54
|
break;
|
|
52
55
|
case 'os':
|
|
53
56
|
if (prefersDarkMediaQuery != undefined) {
|
|
@@ -55,26 +58,29 @@ var useTheme = function (theme, themeOptions) {
|
|
|
55
58
|
(_e = prefersDarkMediaQuery.addEventListener) === null || _e === void 0 ? void 0 : _e.call(prefersDarkMediaQuery, 'change', addOSTheme);
|
|
56
59
|
}
|
|
57
60
|
else {
|
|
58
|
-
|
|
61
|
+
applyTheme('light', { ownerDocument: ownerDocument, highContrast: highContrast });
|
|
59
62
|
}
|
|
60
63
|
break;
|
|
61
64
|
default:
|
|
62
65
|
if (ownerDocument.documentElement.className.indexOf('iui-theme') === -1) {
|
|
63
|
-
|
|
66
|
+
applyTheme('light', { ownerDocument: ownerDocument, highContrast: highContrast });
|
|
64
67
|
}
|
|
65
68
|
}
|
|
66
69
|
return function () {
|
|
67
70
|
var _a;
|
|
68
71
|
(_a = prefersDarkMediaQuery === null || prefersDarkMediaQuery === void 0 ? void 0 : prefersDarkMediaQuery.removeEventListener) === null || _a === void 0 ? void 0 : _a.call(prefersDarkMediaQuery, 'change', addOSTheme);
|
|
69
72
|
};
|
|
70
|
-
}, [ownerDocument, theme]);
|
|
73
|
+
}, [highContrast, ownerDocument, theme]);
|
|
71
74
|
};
|
|
72
75
|
exports.useTheme = useTheme;
|
|
73
|
-
var
|
|
74
|
-
ownerDocument.
|
|
75
|
-
ownerDocument.documentElement.classList
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
76
|
+
var applyTheme = function (theme, _a) {
|
|
77
|
+
var ownerDocument = _a.ownerDocument, highContrast = _a.highContrast;
|
|
78
|
+
var classList = ownerDocument.documentElement.classList;
|
|
79
|
+
var currentTheme = Array.from(classList).find(function (cls) {
|
|
80
|
+
return cls.startsWith('iui-theme');
|
|
81
|
+
});
|
|
82
|
+
if (currentTheme) {
|
|
83
|
+
classList.remove(currentTheme);
|
|
84
|
+
}
|
|
85
|
+
classList.add("iui-theme-" + theme + (highContrast ? '-hc' : ''));
|
|
80
86
|
};
|
|
@@ -2,9 +2,22 @@
|
|
|
2
2
|
declare module 'react-table' {
|
|
3
3
|
type FieldType = 'text' | 'number' | 'date' | string;
|
|
4
4
|
type CellRendererProps<D extends object = {}> = {
|
|
5
|
+
/**
|
|
6
|
+
* Cell HTML props passed from the Table.
|
|
7
|
+
*/
|
|
5
8
|
cellElementProps: TableCellProps;
|
|
9
|
+
/**
|
|
10
|
+
* Table specific cell props like `column`, `row`.
|
|
11
|
+
*/
|
|
6
12
|
cellProps: CellProps<D>;
|
|
13
|
+
/**
|
|
14
|
+
* Cell's content.
|
|
15
|
+
*/
|
|
7
16
|
children: React.ReactNode;
|
|
17
|
+
/**
|
|
18
|
+
* Function that returns whether the cell is disabled.
|
|
19
|
+
*/
|
|
20
|
+
isDisabled?: (rowData: D) => boolean;
|
|
8
21
|
};
|
|
9
22
|
interface TableOptions<D extends object = {}> extends Omit<UseTableOptions<D>, 'data'>, UseRowSelectOptions<D>, UseExpandedOptions<D>, UseFiltersOptions<D>, UsePaginationOptions<D>, Omit<UseResizeColumnsOptions<D>, 'disableResizing'>, UseSortByOptions<D> {
|
|
10
23
|
/**
|
|
@@ -73,6 +86,11 @@ declare module 'react-table' {
|
|
|
73
86
|
* @default false
|
|
74
87
|
*/
|
|
75
88
|
disableReordering?: boolean;
|
|
89
|
+
/**
|
|
90
|
+
* If true, column's visibility cannot be toggled.
|
|
91
|
+
* @default false
|
|
92
|
+
*/
|
|
93
|
+
disableToggleVisibility?: boolean;
|
|
76
94
|
}
|
|
77
95
|
interface ColumnInstance<D extends object = {}> extends UseFiltersColumnProps<D>, UseGroupByColumnProps<D>, UseResizeColumnsColumnProps<D>, UseSortByColumnProps<D> {
|
|
78
96
|
originalWidth: number;
|
|
@@ -65,6 +65,7 @@ export var ButtonGroup = React.forwardRef(function (props, ref) {
|
|
|
65
65
|
return (React.createElement("div", __assign({ className: cx({
|
|
66
66
|
'iui-button-group': orientation === 'horizontal',
|
|
67
67
|
'iui-button-group-vertical': orientation === 'vertical',
|
|
68
|
+
'iui-button-group-overflow-x': !!overflowButton && orientation === 'horizontal',
|
|
68
69
|
}, className), "aria-orientation": orientation, ref: refs }, rest), !!overflowButton && visibleCount < items.length ? (React.createElement(React.Fragment, null,
|
|
69
70
|
overflowButton && overflowPlacement === 'start' && (React.createElement("div", null, overflowButton(visibleCount))),
|
|
70
71
|
items.slice(0, visibleCount - 1),
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import '@itwin/itwinui-css/css/carousel.css';
|
|
3
|
+
export declare type CarouselProps = {
|
|
4
|
+
/**
|
|
5
|
+
* Index of the currently shown slide.
|
|
6
|
+
* Can be used to set the default index or control the active slide programmatically.
|
|
7
|
+
* @default 0
|
|
8
|
+
*/
|
|
9
|
+
activeSlideIndex?: number;
|
|
10
|
+
/**
|
|
11
|
+
* Callback fired when the current slide changes.
|
|
12
|
+
*/
|
|
13
|
+
onSlideChange?: (index: number) => void;
|
|
14
|
+
} & React.ComponentPropsWithoutRef<'div'>;
|
|
15
|
+
/**
|
|
16
|
+
* The Carousel component consists of a set of slides, normally displayed one at a time. A navigation section is
|
|
17
|
+
* located below the slides, consisting of "dots" and "previous"/"next" buttons, used for changing slides.
|
|
18
|
+
*
|
|
19
|
+
* The currently shown slide can also be changed using the left/right arrow keys or by dragging on a touch device.
|
|
20
|
+
*
|
|
21
|
+
* This component uses a composition approach so it should be used with the provided subcomponents.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* <Carousel>
|
|
25
|
+
* <Carousel.Slider>
|
|
26
|
+
* <Carousel.Slide>...</Carousel.Slide>
|
|
27
|
+
* <Carousel.Slide>...</Carousel.Slide>
|
|
28
|
+
* <Carousel.Slide>...</Carousel.Slide>
|
|
29
|
+
* </Carousel.Slider>
|
|
30
|
+
* <Carousel.Navigation />
|
|
31
|
+
* </Carousel>
|
|
32
|
+
*/
|
|
33
|
+
export declare const Carousel: React.ForwardRefExoticComponent<{
|
|
34
|
+
/**
|
|
35
|
+
* Index of the currently shown slide.
|
|
36
|
+
* Can be used to set the default index or control the active slide programmatically.
|
|
37
|
+
* @default 0
|
|
38
|
+
*/
|
|
39
|
+
activeSlideIndex?: number | undefined;
|
|
40
|
+
/**
|
|
41
|
+
* Callback fired when the current slide changes.
|
|
42
|
+
*/
|
|
43
|
+
onSlideChange?: ((index: number) => void) | undefined;
|
|
44
|
+
} & Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & React.RefAttributes<HTMLElement>> & {
|
|
45
|
+
Slider: React.ForwardRefExoticComponent<Pick<React.DetailedHTMLProps<React.OlHTMLAttributes<HTMLOListElement>, HTMLOListElement>, "key" | keyof React.OlHTMLAttributes<HTMLOListElement>> & React.RefAttributes<HTMLOListElement>>;
|
|
46
|
+
Slide: React.ForwardRefExoticComponent<{
|
|
47
|
+
index?: number | undefined;
|
|
48
|
+
} & Pick<React.DetailedHTMLProps<React.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, "key" | keyof React.LiHTMLAttributes<HTMLLIElement>> & React.RefAttributes<HTMLLIElement>>;
|
|
49
|
+
Navigation: React.ForwardRefExoticComponent<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>, "key" | keyof React.HTMLAttributes<HTMLElement>> & React.RefAttributes<HTMLElement>> & {
|
|
50
|
+
PreviousButton: React.ForwardRefExoticComponent<{
|
|
51
|
+
isActive?: boolean | undefined;
|
|
52
|
+
} & Omit<import("..").ButtonProps<"button">, "startIcon" | "endIcon"> & React.RefAttributes<HTMLButtonElement>>;
|
|
53
|
+
NextButton: React.ForwardRefExoticComponent<{
|
|
54
|
+
isActive?: boolean | undefined;
|
|
55
|
+
} & Omit<import("..").ButtonProps<"button">, "startIcon" | "endIcon"> & React.RefAttributes<HTMLButtonElement>>;
|
|
56
|
+
};
|
|
57
|
+
DotsList: React.ForwardRefExoticComponent<{
|
|
58
|
+
length?: number | undefined;
|
|
59
|
+
currentIndex?: number | undefined;
|
|
60
|
+
onSlideChange?: ((index: number) => void) | undefined;
|
|
61
|
+
} & Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & React.RefAttributes<HTMLDivElement>>;
|
|
62
|
+
Dot: React.ForwardRefExoticComponent<{
|
|
63
|
+
isActive?: boolean | undefined;
|
|
64
|
+
isSmall?: boolean | undefined;
|
|
65
|
+
isSmaller?: boolean | undefined;
|
|
66
|
+
} & Pick<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "key" | keyof React.ButtonHTMLAttributes<HTMLButtonElement>> & React.RefAttributes<HTMLButtonElement>>;
|
|
67
|
+
};
|
|
68
|
+
export default Carousel;
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
13
|
+
var t = {};
|
|
14
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
15
|
+
t[p] = s[p];
|
|
16
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
17
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
18
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
19
|
+
t[p[i]] = s[p[i]];
|
|
20
|
+
}
|
|
21
|
+
return t;
|
|
22
|
+
};
|
|
23
|
+
/*---------------------------------------------------------------------------------------------
|
|
24
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
25
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
26
|
+
*--------------------------------------------------------------------------------------------*/
|
|
27
|
+
import React from 'react';
|
|
28
|
+
import cx from 'classnames';
|
|
29
|
+
import { getRandomValue, useMergedRefs, useTheme } from '../utils';
|
|
30
|
+
import '@itwin/itwinui-css/css/carousel.css';
|
|
31
|
+
import { CarouselContext } from './CarouselContext';
|
|
32
|
+
import { CarouselSlider } from './CarouselSlider';
|
|
33
|
+
import { CarouselSlide } from './CarouselSlide';
|
|
34
|
+
import { CarouselDotsList } from './CarouselDotsList';
|
|
35
|
+
import { CarouselDot } from './CarouselDot';
|
|
36
|
+
import { CarouselNavigation } from './CarouselNavigation';
|
|
37
|
+
/**
|
|
38
|
+
* The Carousel component consists of a set of slides, normally displayed one at a time. A navigation section is
|
|
39
|
+
* located below the slides, consisting of "dots" and "previous"/"next" buttons, used for changing slides.
|
|
40
|
+
*
|
|
41
|
+
* The currently shown slide can also be changed using the left/right arrow keys or by dragging on a touch device.
|
|
42
|
+
*
|
|
43
|
+
* This component uses a composition approach so it should be used with the provided subcomponents.
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* <Carousel>
|
|
47
|
+
* <Carousel.Slider>
|
|
48
|
+
* <Carousel.Slide>...</Carousel.Slide>
|
|
49
|
+
* <Carousel.Slide>...</Carousel.Slide>
|
|
50
|
+
* <Carousel.Slide>...</Carousel.Slide>
|
|
51
|
+
* </Carousel.Slider>
|
|
52
|
+
* <Carousel.Navigation />
|
|
53
|
+
* </Carousel>
|
|
54
|
+
*/
|
|
55
|
+
export var Carousel = Object.assign(React.forwardRef(function (props, ref) {
|
|
56
|
+
var _a = props.activeSlideIndex, userActiveIndex = _a === void 0 ? 0 : _a, onSlideChange = props.onSlideChange, className = props.className, children = props.children, rest = __rest(props, ["activeSlideIndex", "onSlideChange", "className", "children"]);
|
|
57
|
+
// Generate a stateful random id if not specified
|
|
58
|
+
var id = React.useState(function () { var _a; return (_a = props.id) !== null && _a !== void 0 ? _a : "iui-carousel-" + getRandomValue(10); })[0];
|
|
59
|
+
useTheme();
|
|
60
|
+
var isManuallyUpdating = React.useRef(false);
|
|
61
|
+
var scrollInstantly = React.useRef(false);
|
|
62
|
+
var carouselRef = React.useRef(null);
|
|
63
|
+
var refs = useMergedRefs(carouselRef, ref);
|
|
64
|
+
var _b = React.useState(userActiveIndex), currentIndex = _b[0], _setCurrentIndex = _b[1];
|
|
65
|
+
React.useEffect(function () {
|
|
66
|
+
_setCurrentIndex(userActiveIndex);
|
|
67
|
+
}, [userActiveIndex]);
|
|
68
|
+
var setCurrentIndex = React.useCallback(function (index) {
|
|
69
|
+
var _a;
|
|
70
|
+
_setCurrentIndex(index);
|
|
71
|
+
isManuallyUpdating.current = true;
|
|
72
|
+
(_a = carouselRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
73
|
+
}, []);
|
|
74
|
+
var _c = React.useState(0), slideCount = _c[0], setSlideCount = _c[1];
|
|
75
|
+
var _d = React.useState({}), keysPressed = _d[0], setKeysPressed = _d[1];
|
|
76
|
+
var handleKeyDown = function (event) {
|
|
77
|
+
if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {
|
|
81
|
+
setKeysPressed(function (old) {
|
|
82
|
+
var _a;
|
|
83
|
+
return (__assign(__assign({}, old), (_a = {}, _a[event.key] = true, _a)));
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
var handleKeyUp = function (event) {
|
|
88
|
+
switch (event.key) {
|
|
89
|
+
case 'ArrowLeft': {
|
|
90
|
+
setKeysPressed(function (old) { return (__assign(__assign({}, old), { ArrowLeft: false })); });
|
|
91
|
+
setCurrentIndex(function (old) { return (slideCount + old - 1) % slideCount; });
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
case 'ArrowRight': {
|
|
95
|
+
setKeysPressed(function (old) { return (__assign(__assign({}, old), { ArrowRight: false })); });
|
|
96
|
+
setCurrentIndex(function (old) { return (slideCount + old + 1) % slideCount; });
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
var userOnSlideChange = React.useRef(onSlideChange);
|
|
102
|
+
React.useEffect(function () {
|
|
103
|
+
var _a;
|
|
104
|
+
(_a = userOnSlideChange.current) === null || _a === void 0 ? void 0 : _a.call(userOnSlideChange, currentIndex);
|
|
105
|
+
}, [currentIndex]);
|
|
106
|
+
return (React.createElement("section", __assign({ "aria-roledescription": 'carousel', tabIndex: 0, onKeyDown: handleKeyDown, onKeyUp: handleKeyUp, ref: refs, className: cx('iui-carousel', className) }, rest, { id: id }),
|
|
107
|
+
React.createElement(CarouselContext.Provider, { value: {
|
|
108
|
+
currentIndex: currentIndex,
|
|
109
|
+
setCurrentIndex: setCurrentIndex,
|
|
110
|
+
slideCount: slideCount,
|
|
111
|
+
setSlideCount: setSlideCount,
|
|
112
|
+
keysPressed: keysPressed,
|
|
113
|
+
idPrefix: id,
|
|
114
|
+
isManuallyUpdating: isManuallyUpdating,
|
|
115
|
+
scrollInstantly: scrollInstantly,
|
|
116
|
+
} }, children)));
|
|
117
|
+
}), {
|
|
118
|
+
Slider: CarouselSlider,
|
|
119
|
+
Slide: CarouselSlide,
|
|
120
|
+
Navigation: CarouselNavigation,
|
|
121
|
+
DotsList: CarouselDotsList,
|
|
122
|
+
Dot: CarouselDot,
|
|
123
|
+
});
|
|
124
|
+
export default Carousel;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export declare const CarouselContext: React.Context<{
|
|
3
|
+
/**
|
|
4
|
+
* Stateful index of currently active slide.
|
|
5
|
+
*/
|
|
6
|
+
currentIndex: number;
|
|
7
|
+
/**
|
|
8
|
+
* State updater for currentIndex.
|
|
9
|
+
*/
|
|
10
|
+
setCurrentIndex: (index: number | ((old: number) => void)) => void;
|
|
11
|
+
/**
|
|
12
|
+
* Number of slides in the carousel. Gets set in `CarouselSlider` for reading in `CarouselDotsList`.
|
|
13
|
+
*/
|
|
14
|
+
slideCount: number;
|
|
15
|
+
/**
|
|
16
|
+
* State updater for slideCount.
|
|
17
|
+
*/
|
|
18
|
+
setSlideCount: (length: number | ((old: number) => void)) => void;
|
|
19
|
+
/**
|
|
20
|
+
* Stateful value of the left/right arrow keys currently pressed.
|
|
21
|
+
*/
|
|
22
|
+
keysPressed: Record<string, boolean>;
|
|
23
|
+
/**
|
|
24
|
+
* Prefix used for setting id for internal carousel components.
|
|
25
|
+
*/
|
|
26
|
+
idPrefix: string;
|
|
27
|
+
/**
|
|
28
|
+
* Ref object used for preventing intersection observer callback from interfering with manual slide updates.
|
|
29
|
+
*
|
|
30
|
+
* Should be set to true when updating slides using any manual actions (e.g. clicking buttons), and should be set to false when the slide update completes.
|
|
31
|
+
*/
|
|
32
|
+
isManuallyUpdating: React.MutableRefObject<boolean>;
|
|
33
|
+
/**
|
|
34
|
+
* Ref object used to skip smooth scrolling when button is clicked too many times.
|
|
35
|
+
*/
|
|
36
|
+
scrollInstantly: React.MutableRefObject<boolean>;
|
|
37
|
+
} | undefined>;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
import React from 'react';
|
|
6
|
+
export var CarouselContext = React.createContext(undefined);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* `CarouselDot` is the actual "dot" component used to activate a slide on clicking.
|
|
4
|
+
* It should be used as a child of `CarouselDotsList`.
|
|
5
|
+
*/
|
|
6
|
+
export declare const CarouselDot: React.ForwardRefExoticComponent<{
|
|
7
|
+
/** Is this dot currently active? */
|
|
8
|
+
isActive?: boolean | undefined;
|
|
9
|
+
/** Should be set to true for dots that are one spot from the edge of truncation. The dot size becomes small. */
|
|
10
|
+
isSmall?: boolean | undefined;
|
|
11
|
+
/** Should be set to true for dots that are at the edge of truncation. The dot size becomes even smaller. */
|
|
12
|
+
isSmaller?: boolean | undefined;
|
|
13
|
+
} & Pick<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "key" | keyof React.ButtonHTMLAttributes<HTMLButtonElement>> & React.RefAttributes<HTMLButtonElement>>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
13
|
+
var t = {};
|
|
14
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
15
|
+
t[p] = s[p];
|
|
16
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
17
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
18
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
19
|
+
t[p[i]] = s[p[i]];
|
|
20
|
+
}
|
|
21
|
+
return t;
|
|
22
|
+
};
|
|
23
|
+
/*---------------------------------------------------------------------------------------------
|
|
24
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
25
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
26
|
+
*--------------------------------------------------------------------------------------------*/
|
|
27
|
+
import React from 'react';
|
|
28
|
+
import cx from 'classnames';
|
|
29
|
+
/**
|
|
30
|
+
* `CarouselDot` is the actual "dot" component used to activate a slide on clicking.
|
|
31
|
+
* It should be used as a child of `CarouselDotsList`.
|
|
32
|
+
*/
|
|
33
|
+
export var CarouselDot = React.forwardRef(function (props, ref) {
|
|
34
|
+
var isActive = props.isActive, isSmaller = props.isSmaller, isSmall = props.isSmall, className = props.className, rest = __rest(props, ["isActive", "isSmaller", "isSmall", "className"]);
|
|
35
|
+
return (React.createElement("button", __assign({ type: 'button', role: 'tab', tabIndex: -1, className: cx('iui-carousel-navigation-dot', {
|
|
36
|
+
'iui-active': isActive,
|
|
37
|
+
'iui-first': isSmaller,
|
|
38
|
+
'iui-second': isSmall,
|
|
39
|
+
}, className), "aria-selected": isActive, ref: ref }, rest)));
|
|
40
|
+
});
|