@itwin/itwinui-react 1.32.0 → 1.34.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 +28 -0
- package/cjs/core/ButtonGroup/ButtonGroup.d.ts +6 -1
- package/cjs/core/ButtonGroup/ButtonGroup.js +6 -3
- package/cjs/core/ComboBox/ComboBox.d.ts +6 -1
- package/cjs/core/ComboBox/ComboBox.js +4 -2
- package/cjs/core/Footer/Footer.d.ts +14 -2
- package/cjs/core/Footer/Footer.js +40 -17
- package/cjs/core/InputGroup/InputGroup.js +12 -2
- package/cjs/core/LabeledSelect/LabeledSelect.js +10 -4
- package/cjs/core/Slider/Slider.js +10 -1
- package/cjs/core/StatusMessage/StatusMessage.d.ts +24 -0
- package/cjs/core/StatusMessage/StatusMessage.js +39 -0
- package/cjs/core/StatusMessage/index.d.ts +4 -0
- package/cjs/core/StatusMessage/index.js +10 -0
- package/cjs/core/Table/Table.d.ts +5 -0
- package/cjs/core/Table/Table.js +8 -8
- package/cjs/core/Table/TableRowMemoized.js +1 -0
- package/cjs/core/Table/actionHandlers/resizeHandler.d.ts +2 -0
- package/cjs/core/Table/actionHandlers/selectHandler.d.ts +1 -0
- package/cjs/core/Table/filters/BaseFilter.js +1 -1
- package/cjs/core/Table/filters/FilterToggle.js +4 -4
- package/cjs/core/Table/hooks/index.d.ts +1 -0
- package/cjs/core/Table/hooks/index.js +3 -1
- package/cjs/core/Table/hooks/useColumnDragAndDrop.d.ts +2 -0
- package/cjs/core/Table/hooks/useColumnDragAndDrop.js +120 -0
- package/cjs/core/Table/hooks/useExpanderCell.js +1 -0
- package/cjs/core/Table/hooks/useResizeColumns.js +8 -4
- package/cjs/core/Table/hooks/useSelectionCell.js +2 -2
- package/cjs/core/ToggleSwitch/ToggleSwitch.js +13 -10
- package/cjs/core/UserIcon/UserIcon.js +1 -10
- package/cjs/core/index.d.ts +2 -0
- package/cjs/core/index.js +3 -1
- package/cjs/core/utils/components/InputContainer.d.ts +1 -0
- package/cjs/core/utils/components/InputContainer.js +8 -7
- package/cjs/core/utils/hooks/useIntersection.d.ts +4 -3
- package/cjs/core/utils/hooks/useIntersection.js +10 -5
- package/cjs/core/utils/hooks/useOverflow.d.ts +3 -2
- package/cjs/core/utils/hooks/useOverflow.js +24 -21
- package/cjs/types/react-table-config.d.ts +7 -0
- package/esm/core/ButtonGroup/ButtonGroup.d.ts +6 -1
- package/esm/core/ButtonGroup/ButtonGroup.js +6 -3
- package/esm/core/ComboBox/ComboBox.d.ts +6 -1
- package/esm/core/ComboBox/ComboBox.js +4 -2
- package/esm/core/Footer/Footer.d.ts +14 -2
- package/esm/core/Footer/Footer.js +40 -17
- package/esm/core/InputGroup/InputGroup.js +12 -2
- package/esm/core/LabeledSelect/LabeledSelect.js +10 -4
- package/esm/core/Slider/Slider.js +10 -1
- package/esm/core/StatusMessage/StatusMessage.d.ts +24 -0
- package/esm/core/StatusMessage/StatusMessage.js +32 -0
- package/esm/core/StatusMessage/index.d.ts +4 -0
- package/esm/core/StatusMessage/index.js +6 -0
- package/esm/core/Table/Table.d.ts +5 -0
- package/esm/core/Table/Table.js +10 -10
- package/esm/core/Table/TableRowMemoized.js +1 -0
- package/esm/core/Table/actionHandlers/resizeHandler.d.ts +2 -0
- package/esm/core/Table/actionHandlers/selectHandler.d.ts +1 -0
- package/esm/core/Table/filters/BaseFilter.js +1 -1
- package/esm/core/Table/filters/FilterToggle.js +4 -4
- package/esm/core/Table/hooks/index.d.ts +1 -0
- package/esm/core/Table/hooks/index.js +1 -0
- package/esm/core/Table/hooks/useColumnDragAndDrop.d.ts +2 -0
- package/esm/core/Table/hooks/useColumnDragAndDrop.js +116 -0
- package/esm/core/Table/hooks/useExpanderCell.js +1 -0
- package/esm/core/Table/hooks/useResizeColumns.js +8 -4
- package/esm/core/Table/hooks/useSelectionCell.js +2 -2
- package/esm/core/ToggleSwitch/ToggleSwitch.js +13 -10
- package/esm/core/UserIcon/UserIcon.js +1 -10
- package/esm/core/index.d.ts +2 -0
- package/esm/core/index.js +1 -0
- package/esm/core/utils/components/InputContainer.d.ts +1 -0
- package/esm/core/utils/components/InputContainer.js +8 -7
- package/esm/core/utils/hooks/useIntersection.d.ts +4 -3
- package/esm/core/utils/hooks/useIntersection.js +10 -5
- package/esm/core/utils/hooks/useOverflow.d.ts +3 -2
- package/esm/core/utils/hooks/useOverflow.js +24 -21
- package/esm/types/react-table-config.d.ts +7 -0
- package/package.json +15 -14
|
@@ -0,0 +1,120 @@
|
|
|
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 __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
14
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
15
|
+
if (ar || !(i in from)) {
|
|
16
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
17
|
+
ar[i] = from[i];
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
21
|
+
};
|
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.useColumnDragAndDrop = void 0;
|
|
24
|
+
var react_table_1 = require("react-table");
|
|
25
|
+
var REORDER_ACTIONS = {
|
|
26
|
+
columnDragStart: 'columnDragStart',
|
|
27
|
+
columnDragEnd: 'columnDragEnd',
|
|
28
|
+
};
|
|
29
|
+
var useColumnDragAndDrop = function (isEnabled) { return function (hooks) {
|
|
30
|
+
hooks.getDragAndDropProps = [defaultGetDragAndDropProps(isEnabled)];
|
|
31
|
+
hooks.stateReducers.push(reducer);
|
|
32
|
+
hooks.useInstance.push(useInstance);
|
|
33
|
+
}; };
|
|
34
|
+
exports.useColumnDragAndDrop = useColumnDragAndDrop;
|
|
35
|
+
var defaultGetDragAndDropProps = function (isEnabled) { return function (props, _a) {
|
|
36
|
+
var instance = _a.instance, header = _a.header;
|
|
37
|
+
if (!isEnabled || header.disableReordering) {
|
|
38
|
+
return props;
|
|
39
|
+
}
|
|
40
|
+
var onDragStart = function () {
|
|
41
|
+
instance.dispatch({
|
|
42
|
+
type: REORDER_ACTIONS.columnDragStart,
|
|
43
|
+
columnIndex: instance.flatHeaders.indexOf(header),
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
var setOnDragColumnStyle = function (event, position) {
|
|
47
|
+
var columnElement = event.currentTarget;
|
|
48
|
+
columnElement.classList.remove('iui-reorder-column-right');
|
|
49
|
+
columnElement.classList.remove('iui-reorder-column-left');
|
|
50
|
+
if (position === 'left') {
|
|
51
|
+
columnElement.classList.add('iui-reorder-column-left');
|
|
52
|
+
}
|
|
53
|
+
else if (position === 'right') {
|
|
54
|
+
columnElement.classList.add('iui-reorder-column-right');
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
var reorderColumns = function (tableColumns, srcIndex, dstIndex) {
|
|
58
|
+
var newTableColumns = __spreadArray([], tableColumns, true);
|
|
59
|
+
var removed = newTableColumns.splice(srcIndex, 1)[0];
|
|
60
|
+
newTableColumns.splice(dstIndex, 0, removed);
|
|
61
|
+
return newTableColumns;
|
|
62
|
+
};
|
|
63
|
+
var onDragOver = function (event) {
|
|
64
|
+
event.preventDefault();
|
|
65
|
+
var headerIndex = instance.flatHeaders.indexOf(header);
|
|
66
|
+
if (instance.state.columnReorderStartIndex !== headerIndex) {
|
|
67
|
+
setOnDragColumnStyle(event, instance.state.columnReorderStartIndex > headerIndex ? 'left' : 'right');
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
var onDragLeave = function (event) {
|
|
71
|
+
setOnDragColumnStyle(event);
|
|
72
|
+
};
|
|
73
|
+
var onDrop = function (event) {
|
|
74
|
+
event.preventDefault();
|
|
75
|
+
setOnDragColumnStyle(event);
|
|
76
|
+
var columnIds = instance.flatHeaders.map(function (x) { return x.id; });
|
|
77
|
+
var srcIndex = instance.state.columnReorderStartIndex;
|
|
78
|
+
var dstIndex = columnIds.findIndex(function (x) { return x === header.id; });
|
|
79
|
+
if (srcIndex === dstIndex || srcIndex === -1 || dstIndex === -1) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
instance.setColumnOrder(reorderColumns(columnIds, srcIndex, dstIndex));
|
|
83
|
+
instance.dispatch({
|
|
84
|
+
type: REORDER_ACTIONS.columnDragEnd,
|
|
85
|
+
columnIndex: -1,
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
return [
|
|
89
|
+
props,
|
|
90
|
+
{
|
|
91
|
+
draggable: true,
|
|
92
|
+
onDragStart: onDragStart,
|
|
93
|
+
onDragOver: onDragOver,
|
|
94
|
+
onDragLeave: onDragLeave,
|
|
95
|
+
onDrop: onDrop,
|
|
96
|
+
},
|
|
97
|
+
];
|
|
98
|
+
}; };
|
|
99
|
+
var reducer = function (newState, action) {
|
|
100
|
+
switch (action.type) {
|
|
101
|
+
case react_table_1.actions.init:
|
|
102
|
+
return __assign(__assign({}, newState), { columnReorderStartIndex: -1 });
|
|
103
|
+
case REORDER_ACTIONS.columnDragStart:
|
|
104
|
+
return __assign(__assign({}, newState), { columnReorderStartIndex: action.columnIndex });
|
|
105
|
+
case REORDER_ACTIONS.columnDragEnd:
|
|
106
|
+
return __assign(__assign({}, newState), { columnReorderStartIndex: -1 });
|
|
107
|
+
default:
|
|
108
|
+
return newState;
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
var useInstance = function (instance) {
|
|
112
|
+
var flatHeaders = instance.flatHeaders, getHooks = instance.getHooks;
|
|
113
|
+
var getInstance = (0, react_table_1.useGetLatest)(instance);
|
|
114
|
+
flatHeaders.forEach(function (header) {
|
|
115
|
+
header.getDragAndDropProps = (0, react_table_1.makePropGetter)(getHooks().getDragAndDropProps, {
|
|
116
|
+
instance: getInstance(),
|
|
117
|
+
header: header,
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
};
|
|
@@ -35,6 +35,7 @@ var useExpanderCell = function (subComponent, expanderCell, isRowDisabled) { ret
|
|
|
35
35
|
maxWidth: 48,
|
|
36
36
|
columnClassName: 'iui-slot',
|
|
37
37
|
cellClassName: 'iui-slot',
|
|
38
|
+
disableReordering: true,
|
|
38
39
|
Cell: function (props) {
|
|
39
40
|
var row = props.row;
|
|
40
41
|
if (!subComponent(row)) {
|
|
@@ -112,16 +112,20 @@ var defaultGetResizerProps = function (ownerDocument) { return function (props,
|
|
|
112
112
|
return [
|
|
113
113
|
props,
|
|
114
114
|
{
|
|
115
|
-
|
|
116
|
-
e.persist();
|
|
115
|
+
onClick: function (e) {
|
|
117
116
|
// Prevents from triggering sort
|
|
118
117
|
e.stopPropagation();
|
|
118
|
+
},
|
|
119
|
+
onMouseDown: function (e) {
|
|
120
|
+
e.persist();
|
|
121
|
+
// Prevents from triggering drag'n'drop
|
|
122
|
+
e.preventDefault();
|
|
119
123
|
onResizeStart(e, header);
|
|
120
124
|
},
|
|
121
125
|
onTouchStart: function (e) {
|
|
122
126
|
e.persist();
|
|
123
|
-
// Prevents from triggering
|
|
124
|
-
e.
|
|
127
|
+
// Prevents from triggering drag'n'drop
|
|
128
|
+
e.preventDefault();
|
|
125
129
|
onResizeStart(e, header);
|
|
126
130
|
},
|
|
127
131
|
style: {
|
|
@@ -45,6 +45,7 @@ var useSelectionCell = function (isSelectable, isRowDisabled) { return function
|
|
|
45
45
|
maxWidth: 48,
|
|
46
46
|
columnClassName: 'iui-slot',
|
|
47
47
|
cellClassName: 'iui-slot',
|
|
48
|
+
disableReordering: true,
|
|
48
49
|
Header: function (_a) {
|
|
49
50
|
var getToggleAllRowsSelectedProps = _a.getToggleAllRowsSelectedProps, rows = _a.rows, initialRows = _a.initialRows, state = _a.state;
|
|
50
51
|
var disabled = rows.every(function (row) { return isRowDisabled === null || isRowDisabled === void 0 ? void 0 : isRowDisabled(row.original); });
|
|
@@ -55,8 +56,7 @@ var useSelectionCell = function (isSelectable, isRowDisabled) { return function
|
|
|
55
56
|
},
|
|
56
57
|
Cell: function (_a) {
|
|
57
58
|
var row = _a.row;
|
|
58
|
-
return (react_1.default.createElement(
|
|
59
|
-
react_1.default.createElement(Checkbox_1.Checkbox, __assign({}, row.getToggleRowSelectedProps(), { disabled: isRowDisabled === null || isRowDisabled === void 0 ? void 0 : isRowDisabled(row.original) }))));
|
|
59
|
+
return (react_1.default.createElement(Checkbox_1.Checkbox, __assign({}, row.getToggleRowSelectedProps(), { disabled: isRowDisabled === null || isRowDisabled === void 0 ? void 0 : isRowDisabled(row.original), onClick: function (e) { return e.stopPropagation(); } })));
|
|
60
60
|
},
|
|
61
61
|
}
|
|
62
62
|
], columns, true); });
|
|
@@ -57,20 +57,23 @@ exports.ToggleSwitch = react_1.default.forwardRef(function (props, ref) {
|
|
|
57
57
|
(0, utils_1.useTheme)();
|
|
58
58
|
var inputElementRef = react_1.default.useRef(null);
|
|
59
59
|
var refs = (0, utils_1.useMergedRefs)(inputElementRef, ref);
|
|
60
|
+
var WrapperComponent = label ? 'label' : 'div';
|
|
60
61
|
react_1.default.useEffect(function () {
|
|
61
62
|
if (inputElementRef.current && setFocus) {
|
|
62
63
|
inputElementRef.current.focus();
|
|
63
64
|
}
|
|
64
65
|
}, [setFocus]);
|
|
65
|
-
return (react_1.default.createElement(
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
66
|
+
return (react_1.default.createElement(WrapperComponent, { className: (0, classnames_1.default)('iui-toggle-switch-wrapper', {
|
|
67
|
+
'iui-disabled': disabled,
|
|
68
|
+
'iui-label-on-right': label && labelPosition === 'right',
|
|
69
|
+
'iui-label-on-left': label && labelPosition === 'left',
|
|
70
|
+
}, className), style: style },
|
|
71
|
+
react_1.default.createElement("input", __assign({ className: 'iui-toggle-switch', type: 'checkbox', role: 'switch', disabled: disabled, ref: refs }, rest)),
|
|
72
|
+
icon &&
|
|
73
|
+
react_1.default.cloneElement(icon, {
|
|
74
|
+
className: (0, classnames_1.default)('iui-toggle-switch-icon', icon.props.className),
|
|
75
|
+
'aria-hidden': true,
|
|
76
|
+
}),
|
|
77
|
+
label && react_1.default.createElement("span", { className: 'iui-toggle-switch-label' }, label)));
|
|
75
78
|
});
|
|
76
79
|
exports.default = exports.ToggleSwitch;
|
|
@@ -30,9 +30,6 @@ exports.UserIcon = exports.defaultStatusTitles = void 0;
|
|
|
30
30
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
31
31
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
32
32
|
*--------------------------------------------------------------------------------------------*/
|
|
33
|
-
var Away_1 = __importDefault(require("@itwin/itwinui-icons-react/cjs/icons/Away"));
|
|
34
|
-
var Checkmark_1 = __importDefault(require("@itwin/itwinui-icons-react/cjs/icons/Checkmark"));
|
|
35
|
-
var CloseSmall_1 = __importDefault(require("@itwin/itwinui-icons-react/cjs/icons/CloseSmall"));
|
|
36
33
|
var classnames_1 = __importDefault(require("classnames"));
|
|
37
34
|
var react_1 = __importDefault(require("react"));
|
|
38
35
|
var utils_1 = require("../utils");
|
|
@@ -63,17 +60,11 @@ var UserIcon = function (props) {
|
|
|
63
60
|
var _c = props.size, size = _c === void 0 ? 'small' : _c, status = props.status, abbreviation = props.abbreviation, image = props.image, _d = props.backgroundColor, backgroundColor = _d === void 0 ? 'white' : _d, title = props.title, translatedStatusTitles = props.translatedStatusTitles, className = props.className, style = props.style, rest = __rest(props, ["size", "status", "abbreviation", "image", "backgroundColor", "title", "translatedStatusTitles", "className", "style"]);
|
|
64
61
|
(0, utils_1.useTheme)();
|
|
65
62
|
var statusTitles = __assign(__assign({}, exports.defaultStatusTitles), translatedStatusTitles);
|
|
66
|
-
var iconMap = {
|
|
67
|
-
away: react_1.default.createElement(Away_1.default, { className: 'iui-status-symbol', "aria-hidden": true }),
|
|
68
|
-
offline: react_1.default.createElement(CloseSmall_1.default, { className: 'iui-status-symbol', "aria-hidden": true }),
|
|
69
|
-
online: react_1.default.createElement(Checkmark_1.default, { className: 'iui-status-symbol', "aria-hidden": true }),
|
|
70
|
-
busy: react_1.default.createElement(react_1.default.Fragment, null),
|
|
71
|
-
};
|
|
72
63
|
return (react_1.default.createElement("span", __assign({ className: (0, classnames_1.default)('iui-user-icon', (_a = {}, _a["iui-" + size] = size !== 'medium', _a), className), title: title, style: style }, rest), image !== null && image !== void 0 ? image : (react_1.default.createElement("abbr", { className: 'iui-initials', style: { backgroundColor: backgroundColor } }, abbreviation === null || abbreviation === void 0 ? void 0 : abbreviation.substring(0, 2))),
|
|
73
64
|
react_1.default.createElement("span", { className: 'iui-stroke' }),
|
|
74
65
|
status && (react_1.default.createElement("span", { title: statusTitles[status], className: (0, classnames_1.default)('iui-status', (_b = {},
|
|
75
66
|
_b["iui-" + status] = !!status,
|
|
76
|
-
_b)), "aria-label": statusTitles[status] }
|
|
67
|
+
_b)), "aria-label": statusTitles[status] }))));
|
|
77
68
|
};
|
|
78
69
|
exports.UserIcon = UserIcon;
|
|
79
70
|
exports.default = exports.UserIcon;
|
package/cjs/core/index.d.ts
CHANGED
|
@@ -62,6 +62,8 @@ export { SideNavigation, SidenavButton, SidenavSubmenu, SidenavSubmenuHeader, }
|
|
|
62
62
|
export type { SideNavigationProps, SidenavButtonProps, SidenavSubmenuProps, SidenavSubmenuHeaderProps, } from './SideNavigation';
|
|
63
63
|
export { Slider } from './Slider';
|
|
64
64
|
export type { SliderProps } from './Slider';
|
|
65
|
+
export { StatusMessage } from './StatusMessage';
|
|
66
|
+
export type { StatusMessageProps } from './StatusMessage';
|
|
65
67
|
export { Table, tableFilters, FilterButtonBar, DefaultCell, EditableCell, TablePaginator, } from './Table';
|
|
66
68
|
export type { TableProps, TableFilterProps, TableFilterValue, DateRangeFilterOptions, FilterButtonBarProps, DefaultCellProps, EditableCellProps, TablePaginatorProps, TablePaginatorRendererProps, } from './Table';
|
|
67
69
|
export { Tag, TagContainer } from './Tag';
|
package/cjs/core/index.js
CHANGED
|
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.ModalButtonBar = 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.ButtonGroup = exports.SplitButton = exports.IdeasButton = exports.IconButton = exports.DropdownButton = exports.Button = exports.Breadcrumbs = exports.Badge = exports.Alert = void 0;
|
|
7
|
-
exports.MiddleTextTruncation = exports.ColorValue = exports.useTheme = exports.getUserColor = exports.Wizard = exports.UserIconGroup = 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.TablePaginator = exports.EditableCell = exports.DefaultCell = exports.FilterButtonBar = exports.tableFilters = exports.Table = exports.Slider = exports.SidenavSubmenuHeader = exports.SidenavSubmenu = exports.SidenavButton = exports.SideNavigation = exports.Select = exports.RadioTileGroup = exports.RadioTile = exports.Radio = exports.ProgressRadial = exports.ProgressLinear = void 0;
|
|
7
|
+
exports.MiddleTextTruncation = exports.ColorValue = exports.useTheme = exports.getUserColor = exports.Wizard = exports.UserIconGroup = 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.TablePaginator = exports.EditableCell = exports.DefaultCell = exports.FilterButtonBar = exports.tableFilters = exports.Table = exports.StatusMessage = exports.Slider = exports.SidenavSubmenuHeader = exports.SidenavSubmenu = exports.SidenavButton = exports.SideNavigation = exports.Select = exports.RadioTileGroup = exports.RadioTile = exports.Radio = exports.ProgressRadial = exports.ProgressLinear = void 0;
|
|
8
8
|
/*---------------------------------------------------------------------------------------------
|
|
9
9
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
10
10
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
@@ -102,6 +102,8 @@ Object.defineProperty(exports, "SidenavSubmenu", { enumerable: true, get: functi
|
|
|
102
102
|
Object.defineProperty(exports, "SidenavSubmenuHeader", { enumerable: true, get: function () { return SideNavigation_1.SidenavSubmenuHeader; } });
|
|
103
103
|
var Slider_1 = require("./Slider");
|
|
104
104
|
Object.defineProperty(exports, "Slider", { enumerable: true, get: function () { return Slider_1.Slider; } });
|
|
105
|
+
var StatusMessage_1 = require("./StatusMessage");
|
|
106
|
+
Object.defineProperty(exports, "StatusMessage", { enumerable: true, get: function () { return StatusMessage_1.StatusMessage; } });
|
|
105
107
|
var Table_1 = require("./Table");
|
|
106
108
|
Object.defineProperty(exports, "Table", { enumerable: true, get: function () { return Table_1.Table; } });
|
|
107
109
|
Object.defineProperty(exports, "tableFilters", { enumerable: true, get: function () { return Table_1.tableFilters; } });
|
|
@@ -9,6 +9,7 @@ export declare type InputContainerProps<T extends React.ElementType = 'div'> = {
|
|
|
9
9
|
icon?: JSX.Element;
|
|
10
10
|
isLabelInline?: boolean;
|
|
11
11
|
isIconInline?: boolean;
|
|
12
|
+
statusMessage?: React.ReactNode;
|
|
12
13
|
} & React.ComponentPropsWithoutRef<T>;
|
|
13
14
|
/**
|
|
14
15
|
* Input container to wrap inputs with label, and add optional message and icon.
|
|
@@ -39,23 +39,24 @@ var classnames_1 = __importDefault(require("classnames"));
|
|
|
39
39
|
var InputContainer = function (props) {
|
|
40
40
|
var _a;
|
|
41
41
|
var _b;
|
|
42
|
-
var _c = props.as, Element = _c === void 0 ? 'div' : _c, label = props.label, disabled = props.disabled, required = props.required, status = props.status, message = props.message, icon = props.icon, isLabelInline = props.isLabelInline, isIconInline = props.isIconInline, children = props.children, className = props.className, style = props.style, rest = __rest(props, ["as", "label", "disabled", "required", "status", "message", "icon", "isLabelInline", "isIconInline", "children", "className", "style"]);
|
|
42
|
+
var _c = props.as, Element = _c === void 0 ? 'div' : _c, label = props.label, disabled = props.disabled, required = props.required, status = props.status, message = props.message, icon = props.icon, isLabelInline = props.isLabelInline, isIconInline = props.isIconInline, children = props.children, className = props.className, style = props.style, statusMessage = props.statusMessage, rest = __rest(props, ["as", "label", "disabled", "required", "status", "message", "icon", "isLabelInline", "isIconInline", "children", "className", "style", "statusMessage"]);
|
|
43
43
|
return (react_1.default.createElement(Element, __assign({ className: (0, classnames_1.default)('iui-input-container', (_a = {
|
|
44
44
|
'iui-disabled': disabled
|
|
45
45
|
},
|
|
46
46
|
_a["iui-" + status] = !!status,
|
|
47
47
|
_a['iui-inline-label'] = isLabelInline,
|
|
48
48
|
_a['iui-inline-icon'] = isIconInline,
|
|
49
|
-
_a['iui-with-message'] = !!message && !isLabelInline,
|
|
49
|
+
_a['iui-with-message'] = (!!message || !!icon || !!statusMessage) && !isLabelInline,
|
|
50
50
|
_a), className), style: style }, rest),
|
|
51
51
|
label && (react_1.default.createElement("div", { className: (0, classnames_1.default)('iui-label', {
|
|
52
52
|
'iui-required': required,
|
|
53
53
|
}) }, label)),
|
|
54
54
|
children,
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
55
|
+
statusMessage ? (statusMessage) : (react_1.default.createElement(react_1.default.Fragment, null,
|
|
56
|
+
icon &&
|
|
57
|
+
react_1.default.cloneElement(icon, {
|
|
58
|
+
className: (0, classnames_1.default)('iui-input-icon', (_b = icon.props) === null || _b === void 0 ? void 0 : _b.className),
|
|
59
|
+
}),
|
|
60
|
+
message && !isLabelInline && (react_1.default.createElement("div", { className: 'iui-message' }, message))))));
|
|
60
61
|
};
|
|
61
62
|
exports.InputContainer = InputContainer;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Hook that uses `IntersectionObserver` to trigger `onIntersect` callback when element is in viewport.
|
|
3
|
-
* Callback is called only once.
|
|
4
|
-
*
|
|
3
|
+
* Callback is called only once by default (can be changed using the `once` parameter).
|
|
4
|
+
* @returns a callback ref that needs to be set on the element you want to observe.
|
|
5
|
+
* @private
|
|
5
6
|
* @example
|
|
6
7
|
* const onIntersection = React.useCallback(() => {
|
|
7
8
|
* console.log('Element is in viewport!');
|
|
@@ -9,4 +10,4 @@
|
|
|
9
10
|
* const ref = useIntersection(onIntersection);
|
|
10
11
|
* return (<div ref={ref}>One of many elements</div>);
|
|
11
12
|
*/
|
|
12
|
-
export declare const useIntersection: (onIntersect: () => void, options?: IntersectionObserverInit) => (node: HTMLElement | null) => void;
|
|
13
|
+
export declare const useIntersection: (onIntersect: () => void, options?: IntersectionObserverInit, once?: boolean) => (node: HTMLElement | null) => void;
|
|
@@ -12,8 +12,9 @@ var react_1 = __importDefault(require("react"));
|
|
|
12
12
|
var dom_1 = require("../functions/dom");
|
|
13
13
|
/**
|
|
14
14
|
* Hook that uses `IntersectionObserver` to trigger `onIntersect` callback when element is in viewport.
|
|
15
|
-
* Callback is called only once.
|
|
16
|
-
*
|
|
15
|
+
* Callback is called only once by default (can be changed using the `once` parameter).
|
|
16
|
+
* @returns a callback ref that needs to be set on the element you want to observe.
|
|
17
|
+
* @private
|
|
17
18
|
* @example
|
|
18
19
|
* const onIntersection = React.useCallback(() => {
|
|
19
20
|
* console.log('Element is in viewport!');
|
|
@@ -21,8 +22,9 @@ var dom_1 = require("../functions/dom");
|
|
|
21
22
|
* const ref = useIntersection(onIntersection);
|
|
22
23
|
* return (<div ref={ref}>One of many elements</div>);
|
|
23
24
|
*/
|
|
24
|
-
var useIntersection = function (onIntersect, options) {
|
|
25
|
+
var useIntersection = function (onIntersect, options, once) {
|
|
25
26
|
if (options === void 0) { options = {}; }
|
|
27
|
+
if (once === void 0) { once = true; }
|
|
26
28
|
var root = options.root, rootMargin = options.rootMargin, threshold = options.threshold;
|
|
27
29
|
var observer = react_1.default.useRef();
|
|
28
30
|
var setRef = react_1.default.useCallback(function (node) {
|
|
@@ -39,12 +41,15 @@ var useIntersection = function (onIntersect, options) {
|
|
|
39
41
|
observer.current = new IntersectionObserver(function (_a, obs) {
|
|
40
42
|
var entry = _a[0];
|
|
41
43
|
if (entry.isIntersecting) {
|
|
42
|
-
|
|
44
|
+
if (once) {
|
|
45
|
+
obs.disconnect();
|
|
46
|
+
}
|
|
43
47
|
onIntersect();
|
|
44
48
|
}
|
|
45
49
|
}, { root: root, rootMargin: rootMargin, threshold: threshold });
|
|
46
50
|
observer.current.observe(node);
|
|
47
|
-
}, [onIntersect, root, rootMargin, threshold]);
|
|
51
|
+
}, [onIntersect, once, root, rootMargin, threshold]);
|
|
52
|
+
react_1.default.useEffect(function () { return function () { var _a; return (_a = observer.current) === null || _a === void 0 ? void 0 : _a.disconnect(); }; }, []);
|
|
48
53
|
return setRef;
|
|
49
54
|
};
|
|
50
55
|
exports.useIntersection = useIntersection;
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
/**
|
|
3
3
|
* Hook that observes the size of an element and returns the number of items
|
|
4
|
-
* that should be visible based on the
|
|
4
|
+
* that should be visible based on the size of the container element.
|
|
5
5
|
*
|
|
6
6
|
* The returned number should be used to render the element with fewer items.
|
|
7
7
|
*
|
|
8
8
|
* @private
|
|
9
9
|
* @param items Items that this element contains.
|
|
10
10
|
* @param disabled Set to true to disconnect the observer.
|
|
11
|
+
* @param dimension 'horizontal' (default) or 'vertical'
|
|
11
12
|
* @returns [callback ref to set on container, stateful count of visible items]
|
|
12
13
|
*
|
|
13
14
|
* @example
|
|
@@ -20,4 +21,4 @@ import React from 'react';
|
|
|
20
21
|
* </div>
|
|
21
22
|
* );
|
|
22
23
|
*/
|
|
23
|
-
export declare const useOverflow: <T extends HTMLElement>(items: React.ReactNode[] | string, disabled?: boolean) => readonly [(instance: T | null) => void, number];
|
|
24
|
+
export declare const useOverflow: <T extends HTMLElement>(items: React.ReactNode[] | string, disabled?: boolean, orientation?: 'horizontal' | 'vertical') => readonly [(instance: T | null) => void, number];
|
|
@@ -14,13 +14,14 @@ var useResizeObserver_1 = require("./useResizeObserver");
|
|
|
14
14
|
var STARTING_MAX_ITEMS_COUNT = 20;
|
|
15
15
|
/**
|
|
16
16
|
* Hook that observes the size of an element and returns the number of items
|
|
17
|
-
* that should be visible based on the
|
|
17
|
+
* that should be visible based on the size of the container element.
|
|
18
18
|
*
|
|
19
19
|
* The returned number should be used to render the element with fewer items.
|
|
20
20
|
*
|
|
21
21
|
* @private
|
|
22
22
|
* @param items Items that this element contains.
|
|
23
23
|
* @param disabled Set to true to disconnect the observer.
|
|
24
|
+
* @param dimension 'horizontal' (default) or 'vertical'
|
|
24
25
|
* @returns [callback ref to set on container, stateful count of visible items]
|
|
25
26
|
*
|
|
26
27
|
* @example
|
|
@@ -33,20 +34,21 @@ var STARTING_MAX_ITEMS_COUNT = 20;
|
|
|
33
34
|
* </div>
|
|
34
35
|
* );
|
|
35
36
|
*/
|
|
36
|
-
var useOverflow = function (items, disabled) {
|
|
37
|
+
var useOverflow = function (items, disabled, orientation) {
|
|
37
38
|
if (disabled === void 0) { disabled = false; }
|
|
39
|
+
if (orientation === void 0) { orientation = 'horizontal'; }
|
|
38
40
|
var containerRef = react_1.default.useRef(null);
|
|
39
41
|
var _a = react_1.default.useState(function () {
|
|
40
42
|
return disabled ? items.length : Math.min(items.length, STARTING_MAX_ITEMS_COUNT);
|
|
41
43
|
}), visibleCount = _a[0], setVisibleCount = _a[1];
|
|
42
44
|
var needsFullRerender = react_1.default.useRef(true);
|
|
43
|
-
var _b = react_1.default.useState(0),
|
|
44
|
-
var
|
|
45
|
-
var
|
|
46
|
-
var width = _a.width;
|
|
47
|
-
return
|
|
48
|
-
}, []);
|
|
49
|
-
var _c = (0, useResizeObserver_1.useResizeObserver)(
|
|
45
|
+
var _b = react_1.default.useState(0), containerSize = _b[0], setContainerSize = _b[1];
|
|
46
|
+
var previousContainerSize = react_1.default.useRef(0);
|
|
47
|
+
var updateContainerSize = react_1.default.useCallback(function (_a) {
|
|
48
|
+
var width = _a.width, height = _a.height;
|
|
49
|
+
return setContainerSize(orientation === 'horizontal' ? width : height);
|
|
50
|
+
}, [orientation]);
|
|
51
|
+
var _c = (0, useResizeObserver_1.useResizeObserver)(updateContainerSize), resizeRef = _c[0], observer = _c[1];
|
|
50
52
|
var resizeObserverRef = react_1.default.useRef(observer);
|
|
51
53
|
react_1.default.useLayoutEffect(function () {
|
|
52
54
|
if (disabled) {
|
|
@@ -56,7 +58,7 @@ var useOverflow = function (items, disabled) {
|
|
|
56
58
|
setVisibleCount(Math.min(items.length, STARTING_MAX_ITEMS_COUNT));
|
|
57
59
|
needsFullRerender.current = true;
|
|
58
60
|
}
|
|
59
|
-
}, [
|
|
61
|
+
}, [containerSize, disabled, items]);
|
|
60
62
|
var mergedRefs = (0, useMergedRefs_1.useMergedRefs)(containerRef, resizeRef);
|
|
61
63
|
react_1.default.useLayoutEffect(function () {
|
|
62
64
|
var _a;
|
|
@@ -64,25 +66,26 @@ var useOverflow = function (items, disabled) {
|
|
|
64
66
|
(_a = resizeObserverRef.current) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
65
67
|
return;
|
|
66
68
|
}
|
|
67
|
-
var
|
|
68
|
-
var
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
var
|
|
69
|
+
var dimension = orientation === 'horizontal' ? 'Width' : 'Height';
|
|
70
|
+
var availableSize = containerRef.current["offset" + dimension];
|
|
71
|
+
var requiredSize = containerRef.current["scroll" + dimension];
|
|
72
|
+
if (availableSize < requiredSize) {
|
|
73
|
+
var avgItemSize = requiredSize / visibleCount;
|
|
74
|
+
var visibleItems = Math.floor(availableSize / avgItemSize);
|
|
72
75
|
setVisibleCount(visibleItems);
|
|
73
76
|
}
|
|
74
77
|
else if (needsFullRerender.current) {
|
|
75
|
-
var
|
|
76
|
-
var
|
|
77
|
-
var visibleItems = Math.floor(
|
|
78
|
+
var childrenSize = Array.from(containerRef.current.children).reduce(function (sum, child) { return sum + child["offset" + dimension]; }, 0);
|
|
79
|
+
var avgItemSize = childrenSize / visibleCount;
|
|
80
|
+
var visibleItems = Math.floor(availableSize / avgItemSize);
|
|
78
81
|
// Doubling the visible items to overflow the container. Just to be safe.
|
|
79
82
|
setVisibleCount(Math.min(items.length, visibleItems * 2));
|
|
80
83
|
}
|
|
81
84
|
needsFullRerender.current = false;
|
|
82
|
-
}, [
|
|
85
|
+
}, [containerSize, visibleCount, disabled, items.length, orientation]);
|
|
83
86
|
react_1.default.useLayoutEffect(function () {
|
|
84
|
-
|
|
85
|
-
}, [
|
|
87
|
+
previousContainerSize.current = containerSize;
|
|
88
|
+
}, [containerSize]);
|
|
86
89
|
return [mergedRefs, visibleCount];
|
|
87
90
|
};
|
|
88
91
|
exports.useOverflow = useOverflow;
|
|
@@ -32,6 +32,7 @@ declare module 'react-table' {
|
|
|
32
32
|
isResizingColumn?: string;
|
|
33
33
|
};
|
|
34
34
|
isTableResizing?: boolean;
|
|
35
|
+
columnReorderStartIndex: number;
|
|
35
36
|
}
|
|
36
37
|
interface ColumnInterface<D extends object = {}> extends UseSortByColumnOptions<D>, UseFiltersColumnOptions<D>, UseResizeColumnsColumnOptions<D> {
|
|
37
38
|
/**
|
|
@@ -67,11 +68,17 @@ declare module 'react-table' {
|
|
|
67
68
|
* }
|
|
68
69
|
*/
|
|
69
70
|
cellRenderer?: (props: CellRendererProps<D>) => React.ReactNode;
|
|
71
|
+
/**
|
|
72
|
+
* If true, column can't be reordered.
|
|
73
|
+
* @default false
|
|
74
|
+
*/
|
|
75
|
+
disableReordering?: boolean;
|
|
70
76
|
}
|
|
71
77
|
interface ColumnInstance<D extends object = {}> extends UseFiltersColumnProps<D>, UseGroupByColumnProps<D>, UseResizeColumnsColumnProps<D>, UseSortByColumnProps<D> {
|
|
72
78
|
originalWidth: number;
|
|
73
79
|
resizeWidth?: number;
|
|
74
80
|
isResizerVisible?: boolean;
|
|
81
|
+
getDragAndDropProps: () => TableKeyedProps;
|
|
75
82
|
}
|
|
76
83
|
interface Cell<D extends object = {}> extends UseGroupByCellProps<D>, UseRowStateCellProps<D> {
|
|
77
84
|
}
|
|
@@ -20,6 +20,11 @@ export declare type ButtonGroupProps = {
|
|
|
20
20
|
* @default 'end'
|
|
21
21
|
*/
|
|
22
22
|
overflowPlacement?: 'start' | 'end';
|
|
23
|
+
/**
|
|
24
|
+
* Should the buttons be placed in a horizontal or vertical layout?
|
|
25
|
+
* @default 'horizontal'
|
|
26
|
+
*/
|
|
27
|
+
orientation?: 'horizontal' | 'vertical';
|
|
23
28
|
} & React.ComponentPropsWithRef<'div'>;
|
|
24
29
|
/**
|
|
25
30
|
* Group buttons together for common actions.
|
|
@@ -49,5 +54,5 @@ export declare type ButtonGroupProps = {
|
|
|
49
54
|
* {buttons}
|
|
50
55
|
* </ButtonGroup>
|
|
51
56
|
*/
|
|
52
|
-
export declare const ButtonGroup: React.ForwardRefExoticComponent<Pick<ButtonGroupProps, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "overflowButton" | "overflowPlacement"> & React.RefAttributes<HTMLDivElement>>;
|
|
57
|
+
export declare const ButtonGroup: React.ForwardRefExoticComponent<Pick<ButtonGroupProps, "orientation" | "key" | keyof React.HTMLAttributes<HTMLDivElement> | "overflowButton" | "overflowPlacement"> & React.RefAttributes<HTMLDivElement>>;
|
|
53
58
|
export default ButtonGroup;
|
|
@@ -57,12 +57,15 @@ import '@itwin/itwinui-css/css/button.css';
|
|
|
57
57
|
* </ButtonGroup>
|
|
58
58
|
*/
|
|
59
59
|
export var ButtonGroup = React.forwardRef(function (props, ref) {
|
|
60
|
-
var children = props.children, className = props.className,
|
|
60
|
+
var children = props.children, className = props.className, overflowButton = props.overflowButton, _a = props.overflowPlacement, overflowPlacement = _a === void 0 ? 'end' : _a, _b = props.orientation, orientation = _b === void 0 ? 'horizontal' : _b, rest = __rest(props, ["children", "className", "overflowButton", "overflowPlacement", "orientation"]);
|
|
61
61
|
var items = React.useMemo(function () { var _a; return (_a = React.Children.map(children, function (child) { return React.createElement("div", null, child); })) !== null && _a !== void 0 ? _a : []; }, [children]);
|
|
62
62
|
useTheme();
|
|
63
|
-
var
|
|
63
|
+
var _c = useOverflow(items, !overflowButton, orientation), overflowRef = _c[0], visibleCount = _c[1];
|
|
64
64
|
var refs = useMergedRefs(overflowRef, ref);
|
|
65
|
-
return (React.createElement("div", __assign({ className: cx(
|
|
65
|
+
return (React.createElement("div", __assign({ className: cx({
|
|
66
|
+
'iui-button-group': orientation === 'horizontal',
|
|
67
|
+
'iui-button-group-vertical': orientation === 'vertical',
|
|
68
|
+
}, className), "aria-orientation": orientation, ref: refs }, rest), !!overflowButton && visibleCount < items.length ? (React.createElement(React.Fragment, null,
|
|
66
69
|
overflowButton && overflowPlacement === 'start' && (React.createElement("div", null, overflowButton(visibleCount))),
|
|
67
70
|
items.slice(0, visibleCount - 1),
|
|
68
71
|
overflowButton && overflowPlacement === 'end' && (React.createElement("div", null, overflowButton(visibleCount))))) : (items)));
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import { InputProps } from '../Input';
|
|
3
3
|
import { SelectOption } from '../Select';
|
|
4
4
|
import { PopoverProps, CommonProps, InputContainerProps } from '../utils';
|
|
@@ -12,6 +12,11 @@ export declare type ComboBoxProps<T> = {
|
|
|
12
12
|
* Controlled value of ComboBox.
|
|
13
13
|
*/
|
|
14
14
|
value?: T;
|
|
15
|
+
/**
|
|
16
|
+
* Message shown below the combobox.
|
|
17
|
+
* Use `StatusMessage` component.
|
|
18
|
+
*/
|
|
19
|
+
message?: React.ReactNode;
|
|
15
20
|
/**
|
|
16
21
|
* Callback fired when selected value changes.
|
|
17
22
|
*/
|
|
@@ -32,6 +32,7 @@ import { Text } from '../Typography';
|
|
|
32
32
|
import { InputContainer, useTheme, Popover, getFocusableElements, getRandomValue, mergeRefs, } from '../utils';
|
|
33
33
|
import SvgCaretDownSmall from '@itwin/itwinui-icons-react/cjs/icons/CaretDownSmall';
|
|
34
34
|
import 'tippy.js/animations/shift-away.css';
|
|
35
|
+
import { StatusMessage } from '../StatusMessage';
|
|
35
36
|
/**
|
|
36
37
|
* ComboBox component that allows typing a value to filter the options in dropdown list.
|
|
37
38
|
* Values can be selected either using mouse clicks or using the Enter key.
|
|
@@ -46,7 +47,7 @@ import 'tippy.js/animations/shift-away.css';
|
|
|
46
47
|
* />
|
|
47
48
|
*/
|
|
48
49
|
export var ComboBox = function (props) {
|
|
49
|
-
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, itemRenderer = props.itemRenderer, rest = __rest(props, ["options", "value", "onChange", "filterFunction", "className", "inputProps", "dropdownMenuProps", "emptyStateMessage", "itemRenderer"]);
|
|
50
|
+
var options = props.options, value = props.value, onChange = props.onChange, filterFunction = props.filterFunction, className = props.className, inputProps = props.inputProps, dropdownMenuProps = props.dropdownMenuProps, message = props.message, status = props.status, _a = props.emptyStateMessage, emptyStateMessage = _a === void 0 ? 'No options found' : _a, itemRenderer = props.itemRenderer, rest = __rest(props, ["options", "value", "onChange", "filterFunction", "className", "inputProps", "dropdownMenuProps", "message", "status", "emptyStateMessage", "itemRenderer"]);
|
|
50
51
|
// Generate a stateful random id if not specified
|
|
51
52
|
var id = React.useState(function () {
|
|
52
53
|
var _a, _b;
|
|
@@ -268,7 +269,8 @@ export var ComboBox = function (props) {
|
|
|
268
269
|
itemRenderer,
|
|
269
270
|
memoizedItems,
|
|
270
271
|
]);
|
|
271
|
-
return (React.createElement(InputContainer, __assign({ className: className,
|
|
272
|
+
return (React.createElement(InputContainer, __assign({ className: className, status: status, statusMessage: typeof message === 'string' ? (React.createElement(StatusMessage, { status: status }, message)) : (React.isValidElement(message) &&
|
|
273
|
+
React.cloneElement(message, { status: status })) }, rest, { id: id }),
|
|
272
274
|
React.createElement("div", { className: 'iui-input-with-icon' },
|
|
273
275
|
React.createElement(Popover, __assign({ placement: 'bottom-start', visible: isOpen, onClickOutside: function (_, _a) {
|
|
274
276
|
var _b;
|