@itwin/itwinui-react 1.38.1 → 1.40.1
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 +30 -0
- package/cjs/core/Carousel/Carousel.js +21 -12
- package/cjs/core/Carousel/CarouselContext.d.ts +4 -2
- package/cjs/core/Carousel/CarouselDotsList.js +1 -0
- package/cjs/core/Carousel/CarouselNavigation.js +8 -10
- package/cjs/core/Carousel/CarouselSlide.js +3 -7
- package/cjs/core/Carousel/CarouselSlider.js +23 -28
- package/cjs/core/ColorPicker/ColorPickerContext.d.ts +2 -2
- package/cjs/core/ComboBox/ComboBox.d.ts +10 -1
- package/cjs/core/ComboBox/ComboBox.js +39 -20
- package/cjs/core/ComboBox/ComboBoxDropdown.d.ts +5 -6
- package/cjs/core/ComboBox/ComboBoxInput.js +28 -9
- package/cjs/core/ComboBox/ComboBoxMenu.js +10 -2
- package/cjs/core/ComboBox/helpers.d.ts +1 -1
- package/cjs/core/ComboBox/helpers.js +1 -1
- package/cjs/core/DatePicker/DatePicker.d.ts +1 -1
- package/cjs/core/Menu/MenuItemSkeleton.d.ts +32 -0
- package/cjs/core/Menu/MenuItemSkeleton.js +53 -0
- package/cjs/core/Menu/index.d.ts +2 -0
- package/cjs/core/Menu/index.js +3 -1
- package/cjs/core/Table/Table.js +68 -25
- package/cjs/core/Table/TableCell.js +10 -3
- package/cjs/core/Table/TablePaginator.js +1 -1
- package/cjs/core/Table/TableRowMemoized.js +5 -1
- package/cjs/core/Table/actionHandlers/resizeHandler.d.ts +8 -0
- package/cjs/core/Table/actionHandlers/selectHandler.d.ts +4 -0
- package/cjs/core/Table/columns/selectionColumn.js +4 -2
- package/cjs/core/Table/filters/tableFilters.d.ts +3 -3
- package/cjs/core/Table/hooks/index.d.ts +1 -0
- package/cjs/core/Table/hooks/index.js +3 -1
- package/cjs/core/Table/hooks/useExpanderCell.js +11 -1
- package/cjs/core/Table/hooks/useStickyColumns.d.ts +2 -0
- package/cjs/core/Table/hooks/useStickyColumns.js +84 -0
- package/cjs/core/Table/utils.d.ts +1 -0
- package/cjs/core/Table/utils.js +36 -1
- package/cjs/core/Toast/Toaster.js +97 -18
- package/cjs/core/index.d.ts +2 -2
- package/cjs/core/index.js +4 -3
- package/cjs/core/utils/components/Popover.d.ts +1 -18
- package/cjs/core/utils/components/VirtualScroll.js +2 -2
- package/cjs/core/utils/components/VisuallyHidden.d.ts +9 -0
- package/cjs/core/utils/components/VisuallyHidden.js +44 -0
- package/cjs/core/utils/components/WithCSSTransition.d.ts +1 -2
- package/cjs/core/utils/components/icons.d.ts +4 -4
- package/cjs/core/utils/components/index.d.ts +1 -0
- package/cjs/core/utils/components/index.js +1 -0
- package/cjs/core/utils/hooks/useOverflow.js +4 -2
- package/cjs/core/utils/hooks/useTheme.d.ts +1 -1
- package/cjs/types/react-table-config.d.ts +9 -0
- package/esm/core/Carousel/Carousel.js +21 -12
- package/esm/core/Carousel/CarouselContext.d.ts +4 -2
- package/esm/core/Carousel/CarouselDotsList.js +1 -0
- package/esm/core/Carousel/CarouselNavigation.js +8 -10
- package/esm/core/Carousel/CarouselSlide.js +3 -7
- package/esm/core/Carousel/CarouselSlider.js +24 -29
- package/esm/core/ColorPicker/ColorPickerContext.d.ts +2 -2
- package/esm/core/ComboBox/ComboBox.d.ts +10 -1
- package/esm/core/ComboBox/ComboBox.js +39 -20
- package/esm/core/ComboBox/ComboBoxDropdown.d.ts +5 -6
- package/esm/core/ComboBox/ComboBoxInput.js +28 -9
- package/esm/core/ComboBox/ComboBoxMenu.js +10 -2
- package/esm/core/ComboBox/helpers.d.ts +1 -1
- package/esm/core/ComboBox/helpers.js +1 -1
- package/esm/core/DatePicker/DatePicker.d.ts +1 -1
- package/esm/core/Menu/MenuItemSkeleton.d.ts +32 -0
- package/esm/core/Menu/MenuItemSkeleton.js +46 -0
- package/esm/core/Menu/index.d.ts +2 -0
- package/esm/core/Menu/index.js +1 -0
- package/esm/core/Table/Table.js +70 -27
- package/esm/core/Table/TableCell.js +11 -4
- package/esm/core/Table/TablePaginator.js +1 -1
- package/esm/core/Table/TableRowMemoized.js +5 -1
- package/esm/core/Table/actionHandlers/resizeHandler.d.ts +8 -0
- package/esm/core/Table/actionHandlers/selectHandler.d.ts +4 -0
- package/esm/core/Table/columns/selectionColumn.js +4 -2
- package/esm/core/Table/filters/tableFilters.d.ts +3 -3
- package/esm/core/Table/hooks/index.d.ts +1 -0
- package/esm/core/Table/hooks/index.js +1 -0
- package/esm/core/Table/hooks/useExpanderCell.js +8 -1
- package/esm/core/Table/hooks/useStickyColumns.d.ts +2 -0
- package/esm/core/Table/hooks/useStickyColumns.js +80 -0
- package/esm/core/Table/utils.d.ts +1 -0
- package/esm/core/Table/utils.js +34 -0
- package/esm/core/Toast/Toaster.js +75 -19
- package/esm/core/index.d.ts +2 -2
- package/esm/core/index.js +1 -1
- package/esm/core/utils/components/Popover.d.ts +1 -18
- package/esm/core/utils/components/VirtualScroll.js +2 -2
- package/esm/core/utils/components/VisuallyHidden.d.ts +9 -0
- package/esm/core/utils/components/VisuallyHidden.js +38 -0
- package/esm/core/utils/components/WithCSSTransition.d.ts +1 -2
- package/esm/core/utils/components/icons.d.ts +4 -4
- package/esm/core/utils/components/index.d.ts +1 -0
- package/esm/core/utils/components/index.js +1 -0
- package/esm/core/utils/hooks/useOverflow.js +4 -2
- package/esm/core/utils/hooks/useTheme.d.ts +1 -1
- package/esm/types/react-table-config.d.ts +9 -0
- package/package.json +24 -39
|
@@ -143,7 +143,7 @@ export var TablePaginator = function (props) {
|
|
|
143
143
|
}
|
|
144
144
|
var hasNoRows = totalPagesCount === 0;
|
|
145
145
|
var showPagesList = totalPagesCount > 1 || isLoading;
|
|
146
|
-
var showPageSizeList = pageSizeList && onPageSizeChange && !!totalRowsCount;
|
|
146
|
+
var showPageSizeList = pageSizeList && !!onPageSizeChange && !!totalRowsCount;
|
|
147
147
|
var ellipsis = (React.createElement("span", { className: cx('iui-paginator-ellipsis', {
|
|
148
148
|
'iui-paginator-ellipsis-small': size === 'small',
|
|
149
149
|
}) }, "\u2026"));
|
|
@@ -92,5 +92,9 @@ export var TableRowMemoized = React.memo(TableRow, function (prevProp, nextProp)
|
|
|
92
92
|
prevProp.tableHasSubRows === nextProp.tableHasSubRows &&
|
|
93
93
|
prevProp.state.columnOrder === nextProp.state.columnOrder &&
|
|
94
94
|
!nextProp.state.columnResizing.isResizingColumn &&
|
|
95
|
-
prevProp.state.isTableResizing === nextProp.state.isTableResizing
|
|
95
|
+
prevProp.state.isTableResizing === nextProp.state.isTableResizing &&
|
|
96
|
+
prevProp.state.sticky.isScrolledToLeft ===
|
|
97
|
+
nextProp.state.sticky.isScrolledToLeft &&
|
|
98
|
+
prevProp.state.sticky.isScrolledToRight ===
|
|
99
|
+
nextProp.state.sticky.isScrolledToRight;
|
|
96
100
|
});
|
|
@@ -12,6 +12,10 @@ export declare const onTableResizeStart: <T extends Record<string, unknown>>(sta
|
|
|
12
12
|
isResizingColumn?: string | undefined;
|
|
13
13
|
};
|
|
14
14
|
columnReorderStartIndex: number;
|
|
15
|
+
sticky: {
|
|
16
|
+
isScrolledToRight?: boolean | undefined;
|
|
17
|
+
isScrolledToLeft?: boolean | undefined;
|
|
18
|
+
};
|
|
15
19
|
columnOrder: import("react-table").IdType<T>[];
|
|
16
20
|
expanded: Record<import("react-table").IdType<T>, boolean>;
|
|
17
21
|
filters: import("react-table").Filters<T>;
|
|
@@ -38,6 +42,10 @@ export declare const onTableResizeEnd: <T extends Record<string, unknown>>(state
|
|
|
38
42
|
};
|
|
39
43
|
hiddenColumns?: import("react-table").IdType<T>[] | undefined;
|
|
40
44
|
columnReorderStartIndex: number;
|
|
45
|
+
sticky: {
|
|
46
|
+
isScrolledToRight?: boolean | undefined;
|
|
47
|
+
isScrolledToLeft?: boolean | undefined;
|
|
48
|
+
};
|
|
41
49
|
columnOrder: import("react-table").IdType<T>[];
|
|
42
50
|
expanded: Record<import("react-table").IdType<T>, boolean>;
|
|
43
51
|
filters: import("react-table").Filters<T>;
|
|
@@ -20,6 +20,10 @@ export declare const onSingleSelectHandler: <T extends Record<string, unknown>>(
|
|
|
20
20
|
};
|
|
21
21
|
isTableResizing?: boolean | undefined;
|
|
22
22
|
columnReorderStartIndex: number;
|
|
23
|
+
sticky: {
|
|
24
|
+
isScrolledToRight?: boolean | undefined;
|
|
25
|
+
isScrolledToLeft?: boolean | undefined;
|
|
26
|
+
};
|
|
23
27
|
columnOrder: import("react-table").IdType<T>[];
|
|
24
28
|
expanded: Record<import("react-table").IdType<T>, boolean>;
|
|
25
29
|
filters: import("react-table").Filters<T>;
|
|
@@ -49,11 +49,13 @@ export var SelectionColumn = function (props) {
|
|
|
49
49
|
var getToggleAllRowsSelectedProps = _a.getToggleAllRowsSelectedProps, rows = _a.rows, initialRows = _a.initialRows, state = _a.state;
|
|
50
50
|
var disabled = rows.every(function (row) { return isDisabled === null || isDisabled === void 0 ? void 0 : isDisabled(row.original); });
|
|
51
51
|
var checked = initialRows.every(function (row) { return state.selectedRowIds[row.id] || (isDisabled === null || isDisabled === void 0 ? void 0 : isDisabled(row.original)); });
|
|
52
|
-
return (React.createElement(Checkbox, __assign({}, getToggleAllRowsSelectedProps(), { style: {},
|
|
52
|
+
return (React.createElement(Checkbox, __assign({}, getToggleAllRowsSelectedProps(), { style: {}, title: '' // Removes default title that comes from react-table
|
|
53
|
+
, checked: checked && !disabled, indeterminate: !checked && Object.keys(state.selectedRowIds).length > 0, disabled: disabled })));
|
|
53
54
|
},
|
|
54
55
|
Cell: function (_a) {
|
|
55
56
|
var row = _a.row;
|
|
56
|
-
return (React.createElement(Checkbox, __assign({}, row.getToggleRowSelectedProps(), { style: {},
|
|
57
|
+
return (React.createElement(Checkbox, __assign({}, row.getToggleRowSelectedProps(), { style: {}, title: '' // Removes default title that comes from react-table
|
|
58
|
+
, disabled: isDisabled === null || isDisabled === void 0 ? void 0 : isDisabled(row.original), onClick: function (e) { return e.stopPropagation(); } })));
|
|
57
59
|
},
|
|
58
60
|
cellRenderer: function (props) { return (React.createElement(DefaultCell, __assign({}, props, { isDisabled: function (rowData) { return !!(isDisabled === null || isDisabled === void 0 ? void 0 : isDisabled(rowData)); } }))); },
|
|
59
61
|
};
|
|
@@ -28,7 +28,7 @@ export declare const tableFilters: {
|
|
|
28
28
|
* Basic filter with a single input field.
|
|
29
29
|
* @param translatedLabels Translated filter labels.
|
|
30
30
|
*/
|
|
31
|
-
TextFilter: (translatedLabels?: FilterButtonBarTranslation
|
|
31
|
+
TextFilter: (translatedLabels?: FilterButtonBarTranslation) => <T extends Record<string, unknown>>(props: TableFilterProps<T>) => JSX.Element;
|
|
32
32
|
/**
|
|
33
33
|
* Date range filter.
|
|
34
34
|
*
|
|
@@ -39,7 +39,7 @@ export declare const tableFilters: {
|
|
|
39
39
|
* If your data is different type e.g. `string`, you can use `accessor` property in column description:
|
|
40
40
|
* `accessor: (rowData) => new Date(rowData.date)`.
|
|
41
41
|
*/
|
|
42
|
-
DateRangeFilter: (options?: DateRangeFilterOptions
|
|
42
|
+
DateRangeFilter: (options?: DateRangeFilterOptions) => <T_1 extends Record<string, unknown>>(props: TableFilterProps<T_1>) => JSX.Element;
|
|
43
43
|
/**
|
|
44
44
|
* Number range filter.
|
|
45
45
|
*
|
|
@@ -48,5 +48,5 @@ export declare const tableFilters: {
|
|
|
48
48
|
* `accessor: (rowData) => Number(rowData.numberProp)`.
|
|
49
49
|
* @param translatedLabels Translated filter labels.
|
|
50
50
|
*/
|
|
51
|
-
NumberRangeFilter: (translatedLabels?:
|
|
51
|
+
NumberRangeFilter: (translatedLabels?: NumberRangeTranslation & FilterButtonBarTranslation) => <T_2 extends Record<string, unknown>>(props: NumberRangeFilterProps<T_2>) => JSX.Element;
|
|
52
52
|
};
|
|
@@ -4,3 +4,4 @@ export { useSubRowFiltering } from './useSubRowFiltering';
|
|
|
4
4
|
export { useSubRowSelection } from './useSubRowSelection';
|
|
5
5
|
export { useResizeColumns } from './useResizeColumns';
|
|
6
6
|
export { useColumnDragAndDrop } from './useColumnDragAndDrop';
|
|
7
|
+
export { useStickyColumns } from './useStickyColumns';
|
|
@@ -8,3 +8,4 @@ export { useSubRowFiltering } from './useSubRowFiltering';
|
|
|
8
8
|
export { useSubRowSelection } from './useSubRowSelection';
|
|
9
9
|
export { useResizeColumns } from './useResizeColumns';
|
|
10
10
|
export { useColumnDragAndDrop } from './useColumnDragAndDrop';
|
|
11
|
+
export { useStickyColumns } from './useStickyColumns';
|
|
@@ -18,6 +18,11 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
18
18
|
}
|
|
19
19
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
20
20
|
};
|
|
21
|
+
/*---------------------------------------------------------------------------------------------
|
|
22
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
23
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
24
|
+
*--------------------------------------------------------------------------------------------*/
|
|
25
|
+
import React from 'react';
|
|
21
26
|
import { ExpanderColumn, EXPANDER_CELL_ID } from '../columns';
|
|
22
27
|
export var useExpanderCell = function (subComponent, expanderCell, isRowDisabled) { return function (hooks) {
|
|
23
28
|
if (!subComponent) {
|
|
@@ -33,7 +38,9 @@ export var useExpanderCell = function (subComponent, expanderCell, isRowDisabled
|
|
|
33
38
|
isDisabled: isRowDisabled,
|
|
34
39
|
});
|
|
35
40
|
return __spreadArray([
|
|
36
|
-
__assign(__assign({}, expanderColumn), { Cell: expanderCell
|
|
41
|
+
__assign(__assign({}, expanderColumn), { Cell: expanderCell
|
|
42
|
+
? function (cellProps) { return React.createElement(React.Fragment, null, expanderCell(cellProps)); }
|
|
43
|
+
: expanderColumn.Cell })
|
|
37
44
|
], columns, true);
|
|
38
45
|
});
|
|
39
46
|
}; };
|
|
@@ -0,0 +1,80 @@
|
|
|
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 __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
13
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
14
|
+
if (ar || !(i in from)) {
|
|
15
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
16
|
+
ar[i] = from[i];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
20
|
+
};
|
|
21
|
+
/*---------------------------------------------------------------------------------------------
|
|
22
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
23
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
24
|
+
*--------------------------------------------------------------------------------------------*/
|
|
25
|
+
import { actions, } from 'react-table';
|
|
26
|
+
actions.setScrolledLeft = 'setScrolledLeft';
|
|
27
|
+
actions.setScrolledRight = 'setScrolledRight';
|
|
28
|
+
export var useStickyColumns = function (hooks) {
|
|
29
|
+
hooks.stateReducers.push(reducer);
|
|
30
|
+
hooks.useInstance.push(useInstance);
|
|
31
|
+
};
|
|
32
|
+
var reducer = function (newState, action) {
|
|
33
|
+
var _a, _b;
|
|
34
|
+
if (action.type === actions.init) {
|
|
35
|
+
return __assign(__assign({}, newState), { sticky: {} });
|
|
36
|
+
}
|
|
37
|
+
if (action.type === actions.setScrolledLeft &&
|
|
38
|
+
((_a = newState.sticky) === null || _a === void 0 ? void 0 : _a.isScrolledToLeft) !== action.value // Prevents unnecessary re-render
|
|
39
|
+
) {
|
|
40
|
+
return __assign(__assign({}, newState), { sticky: __assign(__assign({}, newState.sticky), { isScrolledToLeft: action.value }) });
|
|
41
|
+
}
|
|
42
|
+
if (action.type === actions.setScrolledRight &&
|
|
43
|
+
((_b = newState.sticky) === null || _b === void 0 ? void 0 : _b.isScrolledToRight) !== action.value // Prevents unnecessary re-render
|
|
44
|
+
) {
|
|
45
|
+
return __assign(__assign({}, newState), { sticky: __assign(__assign({}, newState.sticky), { isScrolledToRight: action.value }) });
|
|
46
|
+
}
|
|
47
|
+
return newState;
|
|
48
|
+
};
|
|
49
|
+
var useInstance = function (instance) {
|
|
50
|
+
var flatHeaders = instance.flatHeaders;
|
|
51
|
+
// Edge case. Saving original sticky state in case sticky columns are reordered.
|
|
52
|
+
flatHeaders.forEach(function (header) {
|
|
53
|
+
var _a;
|
|
54
|
+
if (!header.originalSticky) {
|
|
55
|
+
header.originalSticky = (_a = header.sticky) !== null && _a !== void 0 ? _a : 'none';
|
|
56
|
+
}
|
|
57
|
+
header.sticky =
|
|
58
|
+
header.originalSticky === 'none' ? undefined : header.originalSticky;
|
|
59
|
+
});
|
|
60
|
+
// If there is a column that is sticked to the left, make every column prior to that sticky too.
|
|
61
|
+
var hasLeftStickyColumn = false;
|
|
62
|
+
__spreadArray([], flatHeaders, true).reverse().forEach(function (header) {
|
|
63
|
+
if (header.sticky === 'left') {
|
|
64
|
+
hasLeftStickyColumn = true;
|
|
65
|
+
}
|
|
66
|
+
if (hasLeftStickyColumn) {
|
|
67
|
+
header.sticky = 'left';
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
// If there is a column that is sticked to the right, make every column after to that sticky too.
|
|
71
|
+
var hasRightStickyColumn = false;
|
|
72
|
+
flatHeaders.forEach(function (header) {
|
|
73
|
+
if (header.sticky === 'right') {
|
|
74
|
+
hasRightStickyColumn = true;
|
|
75
|
+
}
|
|
76
|
+
if (hasRightStickyColumn) {
|
|
77
|
+
header.sticky = 'right';
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
};
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
import { ColumnInstance } from 'react-table';
|
|
2
2
|
export declare const getCellStyle: <T extends Record<string, unknown>>(column: ColumnInstance<T>, isTableResizing: boolean) => React.CSSProperties | undefined;
|
|
3
|
+
export declare const getStickyStyle: <T extends Record<string, unknown>>(column: ColumnInstance<T>, columnList: ColumnInstance<T>[]) => React.CSSProperties;
|
package/esm/core/Table/utils.js
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
2
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
3
|
+
if (ar || !(i in from)) {
|
|
4
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
5
|
+
ar[i] = from[i];
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
9
|
+
};
|
|
1
10
|
export var getCellStyle = function (column, isTableResizing) {
|
|
2
11
|
var style = {};
|
|
3
12
|
style.flex = "1 1 145px";
|
|
@@ -20,3 +29,28 @@ export var getCellStyle = function (column, isTableResizing) {
|
|
|
20
29
|
}
|
|
21
30
|
return style;
|
|
22
31
|
};
|
|
32
|
+
export var getStickyStyle = function (column, columnList) {
|
|
33
|
+
if (!column.sticky) {
|
|
34
|
+
return {};
|
|
35
|
+
}
|
|
36
|
+
var left = 0;
|
|
37
|
+
for (var _i = 0, columnList_1 = columnList; _i < columnList_1.length; _i++) {
|
|
38
|
+
var col = columnList_1[_i];
|
|
39
|
+
if (col.id === column.id) {
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
left += Number(col.width || col.resizeWidth || 0);
|
|
43
|
+
}
|
|
44
|
+
var right = 0;
|
|
45
|
+
for (var _a = 0, _b = __spreadArray([], columnList, true).reverse(); _a < _b.length; _a++) {
|
|
46
|
+
var col = _b[_a];
|
|
47
|
+
if (col.id === column.id) {
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
right += Number(col.width || col.resizeWidth || 0);
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
'--iui-table-sticky-left': column.sticky === 'left' ? "".concat(left, "px") : undefined,
|
|
54
|
+
'--iui-table-sticky-right': column.sticky === 'right' ? "".concat(right, "px") : undefined,
|
|
55
|
+
};
|
|
56
|
+
};
|
|
@@ -9,6 +9,42 @@ var __assign = (this && this.__assign) || function () {
|
|
|
9
9
|
};
|
|
10
10
|
return __assign.apply(this, arguments);
|
|
11
11
|
};
|
|
12
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
13
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
14
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
15
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
16
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
17
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
18
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
22
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
23
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
24
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
25
|
+
function step(op) {
|
|
26
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
27
|
+
while (_) try {
|
|
28
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
29
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
30
|
+
switch (op[0]) {
|
|
31
|
+
case 0: case 1: t = op; break;
|
|
32
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
33
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
34
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
35
|
+
default:
|
|
36
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
37
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
38
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
39
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
40
|
+
if (t[2]) _.ops.pop();
|
|
41
|
+
_.trys.pop(); continue;
|
|
42
|
+
}
|
|
43
|
+
op = body.call(thisArg, _);
|
|
44
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
45
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
46
|
+
}
|
|
47
|
+
};
|
|
12
48
|
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
13
49
|
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
14
50
|
if (ar || !(i in from)) {
|
|
@@ -23,8 +59,8 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
23
59
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
24
60
|
*--------------------------------------------------------------------------------------------*/
|
|
25
61
|
import React from 'react';
|
|
26
|
-
import ReactDOM from 'react-dom';
|
|
27
|
-
import { getContainer } from '../utils';
|
|
62
|
+
import * as ReactDOM from 'react-dom';
|
|
63
|
+
import { getContainer, getDocument } from '../utils';
|
|
28
64
|
import { ToastWrapper } from './ToastWrapper';
|
|
29
65
|
var TOASTS_CONTAINER_ID = 'iui-toasts-container';
|
|
30
66
|
var Toaster = /** @class */ (function () {
|
|
@@ -40,21 +76,41 @@ var Toaster = /** @class */ (function () {
|
|
|
40
76
|
this.isInitialized = false;
|
|
41
77
|
// Create container on demand.
|
|
42
78
|
// Cannot do it in constructor, because SSG/SSR apps would fail.
|
|
43
|
-
this.asyncInit =
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
79
|
+
this.asyncInit = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
80
|
+
var container, toastWrapper, _ReactDOM, _ReactDOMInternals, root;
|
|
81
|
+
var _a, _b;
|
|
82
|
+
return __generator(this, function (_c) {
|
|
83
|
+
if (this.isInitialized) {
|
|
84
|
+
return [2 /*return*/];
|
|
85
|
+
}
|
|
86
|
+
container = (_a = getContainer(TOASTS_CONTAINER_ID)) !== null && _a !== void 0 ? _a : (_b = getDocument()) === null || _b === void 0 ? void 0 : _b.body;
|
|
87
|
+
if (!container) {
|
|
88
|
+
return [2 /*return*/];
|
|
89
|
+
}
|
|
90
|
+
this.isInitialized = true;
|
|
91
|
+
toastWrapper = React.createElement(ToastWrapper, { ref: this.toastsRef });
|
|
92
|
+
_ReactDOM = ReactDOM;
|
|
93
|
+
// v18 mode
|
|
94
|
+
if (_ReactDOM.createRoot) {
|
|
95
|
+
_ReactDOMInternals = _ReactDOM.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
|
|
96
|
+
// suppress warning about importing createRoot from react-dom/client
|
|
97
|
+
if (_ReactDOMInternals) {
|
|
98
|
+
_ReactDOMInternals.usingClientEntryPoint = true;
|
|
99
|
+
}
|
|
100
|
+
root = _ReactDOM.createRoot(container);
|
|
101
|
+
root.render(toastWrapper);
|
|
102
|
+
// revert suppression, not to influence users app
|
|
103
|
+
if (_ReactDOMInternals) {
|
|
104
|
+
_ReactDOMInternals.usingClientEntryPoint = false;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
// v17 and before
|
|
109
|
+
ReactDOM.render(toastWrapper, container);
|
|
110
|
+
}
|
|
111
|
+
return [2 /*return*/];
|
|
112
|
+
});
|
|
113
|
+
}); };
|
|
58
114
|
}
|
|
59
115
|
/**
|
|
60
116
|
* Set global Toaster settings for toasts order and placement.
|
|
@@ -68,7 +124,7 @@ var Toaster = /** @class */ (function () {
|
|
|
68
124
|
? 'ascending'
|
|
69
125
|
: 'descending');
|
|
70
126
|
this.settings = newSettings;
|
|
71
|
-
this.asyncInit.then(function () {
|
|
127
|
+
this.asyncInit().then(function () {
|
|
72
128
|
var _a, _b;
|
|
73
129
|
(_a = _this.toastsRef.current) === null || _a === void 0 ? void 0 : _a.setPlacement((_b = _this.settings.placement) !== null && _b !== void 0 ? _b : 'top');
|
|
74
130
|
});
|
|
@@ -105,7 +161,7 @@ var Toaster = /** @class */ (function () {
|
|
|
105
161
|
};
|
|
106
162
|
Toaster.prototype.updateView = function () {
|
|
107
163
|
var _this = this;
|
|
108
|
-
this.asyncInit.then(function () {
|
|
164
|
+
this.asyncInit().then(function () {
|
|
109
165
|
var _a;
|
|
110
166
|
(_a = _this.toastsRef.current) === null || _a === void 0 ? void 0 : _a.setToasts(_this.toasts);
|
|
111
167
|
});
|
package/esm/core/index.d.ts
CHANGED
|
@@ -48,8 +48,8 @@ export { LabeledSelect } from './LabeledSelect';
|
|
|
48
48
|
export type { LabeledSelectProps } from './LabeledSelect';
|
|
49
49
|
export { LabeledTextarea } from './LabeledTextarea';
|
|
50
50
|
export type { LabeledTextareaProps } from './LabeledTextarea';
|
|
51
|
-
export { Menu, MenuItem, MenuDivider, MenuExtraContent } from './Menu';
|
|
52
|
-
export type { MenuProps, MenuItemProps, MenuDividerProps, MenuExtraContentProps, } from './Menu';
|
|
51
|
+
export { Menu, MenuItem, MenuDivider, MenuExtraContent, MenuItemSkeleton, } from './Menu';
|
|
52
|
+
export type { MenuProps, MenuItemProps, MenuDividerProps, MenuExtraContentProps, MenuItemSkeletonProps, } from './Menu';
|
|
53
53
|
export { Modal, ModalButtonBar, ModalContent } from './Modal';
|
|
54
54
|
export type { ModalProps, ModalButtonBarProps, ModalContentProps, } from './Modal';
|
|
55
55
|
export { ProgressLinear, ProgressRadial } from './ProgressIndicators';
|
package/esm/core/index.js
CHANGED
|
@@ -27,7 +27,7 @@ export { LabeledInput } from './LabeledInput';
|
|
|
27
27
|
export { InputGroup } from './InputGroup';
|
|
28
28
|
export { LabeledSelect } from './LabeledSelect';
|
|
29
29
|
export { LabeledTextarea } from './LabeledTextarea';
|
|
30
|
-
export { Menu, MenuItem, MenuDivider, MenuExtraContent } from './Menu';
|
|
30
|
+
export { Menu, MenuItem, MenuDivider, MenuExtraContent, MenuItemSkeleton, } from './Menu';
|
|
31
31
|
export { Modal, ModalButtonBar, ModalContent } from './Modal';
|
|
32
32
|
export { ProgressLinear, ProgressRadial } from './ProgressIndicators';
|
|
33
33
|
export { Radio } from './Radio';
|
|
@@ -26,24 +26,7 @@ export declare type PopoverProps = {
|
|
|
26
26
|
* with pre-configured props and plugins (e.g. lazy mounting, focus, etc).
|
|
27
27
|
* @private
|
|
28
28
|
*/
|
|
29
|
-
export declare const Popover: React.ForwardRefExoticComponent<Pick<
|
|
30
|
-
/**
|
|
31
|
-
* Controlled flag for whether the popover is visible.
|
|
32
|
-
*/
|
|
33
|
-
visible?: boolean | undefined;
|
|
34
|
-
/**
|
|
35
|
-
* Determines the events that cause the popover to show.
|
|
36
|
-
* Should not be used when `visible` is set.
|
|
37
|
-
* @see [tippy.js trigger prop](https://atomiks.github.io/tippyjs/v6/all-props/#trigger)
|
|
38
|
-
*/
|
|
39
|
-
trigger?: string | undefined;
|
|
40
|
-
/**
|
|
41
|
-
* Placement of the popover content.
|
|
42
|
-
* @default 'bottom-start'
|
|
43
|
-
* @see [tippy.js placement prop](https://atomiks.github.io/tippyjs/v6/all-props/#placement).
|
|
44
|
-
*/
|
|
45
|
-
placement?: import("@popperjs/core").Placement | undefined;
|
|
46
|
-
} & Omit<TippyProps, "placement" | "trigger" | "visible">, "disabled" | "children" | "placement" | "trigger" | "visible" | "content" | "render" | "animateFill" | "appendTo" | "aria" | "delay" | "duration" | "followCursor" | "getReferenceClientRect" | "hideOnClick" | "ignoreAttributes" | "inlinePositioning" | "interactive" | "interactiveBorder" | "interactiveDebounce" | "moveTransition" | "offset" | "plugins" | "popperOptions" | "showOnCreate" | "sticky" | "touch" | "triggerTarget" | "onAfterUpdate" | "onBeforeUpdate" | "onCreate" | "onDestroy" | "onHidden" | "onHide" | "onMount" | "onShow" | "onShown" | "onTrigger" | "onUntrigger" | "onClickOutside" | "allowHTML" | "animation" | "arrow" | "inertia" | "maxWidth" | "role" | "theme" | "zIndex" | "className" | "singleton" | "reference"> & React.RefAttributes<unknown>>;
|
|
29
|
+
export declare const Popover: React.ForwardRefExoticComponent<Pick<PopoverProps, "disabled" | "children" | "placement" | "trigger" | "visible" | "content" | "render" | "animateFill" | "appendTo" | "aria" | "delay" | "duration" | "followCursor" | "getReferenceClientRect" | "hideOnClick" | "ignoreAttributes" | "inlinePositioning" | "interactive" | "interactiveBorder" | "interactiveDebounce" | "moveTransition" | "offset" | "plugins" | "popperOptions" | "showOnCreate" | "sticky" | "touch" | "triggerTarget" | "onAfterUpdate" | "onBeforeUpdate" | "onCreate" | "onDestroy" | "onHidden" | "onHide" | "onMount" | "onShow" | "onShown" | "onTrigger" | "onUntrigger" | "onClickOutside" | "allowHTML" | "animation" | "arrow" | "inertia" | "maxWidth" | "role" | "theme" | "zIndex" | "className" | "singleton" | "reference"> & React.RefAttributes<unknown>>;
|
|
47
30
|
/**
|
|
48
31
|
* Plugin to hide Popover when either Esc key is pressed,
|
|
49
32
|
* or when the content inside is not tabbable and Tab key is pressed.
|
|
@@ -285,11 +285,11 @@ export var useVirtualization = function (props) {
|
|
|
285
285
|
updateVirtualScroll();
|
|
286
286
|
}, [scrollContainerHeight, updateVirtualScroll]);
|
|
287
287
|
return {
|
|
288
|
-
outerProps: __assign({ style: __assign({
|
|
288
|
+
outerProps: __assign({ style: __assign({ minHeight: itemsLength > 1
|
|
289
289
|
? Math.max(itemsLength - 2, 0) * childHeight.current.middle +
|
|
290
290
|
childHeight.current.first +
|
|
291
291
|
childHeight.current.last
|
|
292
|
-
: childHeight.current.middle,
|
|
292
|
+
: childHeight.current.middle, minWidth: '100%' }, style) }, rest),
|
|
293
293
|
innerProps: {
|
|
294
294
|
style: { willChange: 'transform' },
|
|
295
295
|
ref: mergeRefs(parentRef), // convert object ref to callback ref for better types
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export declare type VisuallyHiddenProps = React.ComponentPropsWithRef<'div'>;
|
|
3
|
+
/**
|
|
4
|
+
* Hides content visually but is still accessible to screen readers.
|
|
5
|
+
*/
|
|
6
|
+
export declare const VisuallyHidden: React.ForwardRefExoticComponent<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
7
|
+
ref?: ((instance: HTMLDivElement | null) => void) | React.RefObject<HTMLDivElement> | null | undefined;
|
|
8
|
+
}, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & React.RefAttributes<HTMLDivElement>>;
|
|
9
|
+
export default VisuallyHidden;
|
|
@@ -0,0 +1,38 @@
|
|
|
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 { useTheme } from '../hooks';
|
|
30
|
+
/**
|
|
31
|
+
* Hides content visually but is still accessible to screen readers.
|
|
32
|
+
*/
|
|
33
|
+
export var VisuallyHidden = React.forwardRef(function (props, ref) {
|
|
34
|
+
var className = props.className, rest = __rest(props, ["className"]);
|
|
35
|
+
useTheme();
|
|
36
|
+
return (React.createElement("div", __assign({ className: cx('iui-visually-hidden', className), ref: ref }, rest)));
|
|
37
|
+
});
|
|
38
|
+
export default VisuallyHidden;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import { CSSTransition } from 'react-transition-group';
|
|
3
2
|
import { CSSTransitionProps } from 'react-transition-group/CSSTransition';
|
|
4
|
-
export declare const WithCSSTransition: (props: Partial<
|
|
3
|
+
export declare const WithCSSTransition: (props: Partial<CSSTransitionProps<undefined>> & {
|
|
5
4
|
children: JSX.Element;
|
|
6
5
|
dimension?: "width" | "height" | undefined;
|
|
7
6
|
}) => JSX.Element;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { CommonProps } from '../props';
|
|
3
3
|
export declare const StatusIconMap: {
|
|
4
|
-
negative: (args?: CommonProps
|
|
5
|
-
positive: (args?: CommonProps
|
|
6
|
-
warning: (args?: CommonProps
|
|
7
|
-
informational: (args?: CommonProps
|
|
4
|
+
negative: (args?: CommonProps) => JSX.Element;
|
|
5
|
+
positive: (args?: CommonProps) => JSX.Element;
|
|
6
|
+
warning: (args?: CommonProps) => JSX.Element;
|
|
7
|
+
informational: (args?: CommonProps) => JSX.Element;
|
|
8
8
|
};
|
|
@@ -72,8 +72,10 @@ export var useOverflow = function (items, disabled, orientation) {
|
|
|
72
72
|
var childrenSize = Array.from(containerRef.current.children).reduce(function (sum, child) { return sum + child["offset".concat(dimension)]; }, 0);
|
|
73
73
|
var avgItemSize = childrenSize / visibleCount;
|
|
74
74
|
var visibleItems = Math.floor(availableSize / avgItemSize);
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
if (!isNaN(visibleItems)) {
|
|
76
|
+
// Doubling the visible items to overflow the container. Just to be safe.
|
|
77
|
+
setVisibleCount(Math.min(items.length, visibleItems * 2));
|
|
78
|
+
}
|
|
77
79
|
}
|
|
78
80
|
needsFullRerender.current = false;
|
|
79
81
|
}, [containerSize, visibleCount, disabled, items.length, orientation]);
|
|
@@ -19,4 +19,4 @@ export declare type ThemeType = 'light' | 'dark' | 'os';
|
|
|
19
19
|
* @param theme Light, dark, or based on OS setting.
|
|
20
20
|
* @param themeOptions Options that override default theming behavior.
|
|
21
21
|
*/
|
|
22
|
-
export declare const useTheme: (theme?: ThemeType
|
|
22
|
+
export declare const useTheme: (theme?: ThemeType, themeOptions?: ThemeOptions) => void;
|
|
@@ -46,6 +46,10 @@ declare module 'react-table' {
|
|
|
46
46
|
};
|
|
47
47
|
isTableResizing?: boolean;
|
|
48
48
|
columnReorderStartIndex: number;
|
|
49
|
+
sticky: {
|
|
50
|
+
isScrolledToRight?: boolean;
|
|
51
|
+
isScrolledToLeft?: boolean;
|
|
52
|
+
};
|
|
49
53
|
}
|
|
50
54
|
interface ColumnInterface<D extends object = {}> extends UseSortByColumnOptions<D>, UseFiltersColumnOptions<D>, UseResizeColumnsColumnOptions<D> {
|
|
51
55
|
/**
|
|
@@ -91,12 +95,17 @@ declare module 'react-table' {
|
|
|
91
95
|
* @default false
|
|
92
96
|
*/
|
|
93
97
|
disableToggleVisibility?: boolean;
|
|
98
|
+
/**
|
|
99
|
+
* Side on which column should be sticked to.
|
|
100
|
+
*/
|
|
101
|
+
sticky?: 'left' | 'right';
|
|
94
102
|
}
|
|
95
103
|
interface ColumnInstance<D extends object = {}> extends UseFiltersColumnProps<D>, UseGroupByColumnProps<D>, UseResizeColumnsColumnProps<D>, UseSortByColumnProps<D> {
|
|
96
104
|
originalWidth: number;
|
|
97
105
|
resizeWidth?: number;
|
|
98
106
|
isResizerVisible?: boolean;
|
|
99
107
|
getDragAndDropProps: () => TableKeyedProps;
|
|
108
|
+
originalSticky?: 'left' | 'right' | 'none';
|
|
100
109
|
}
|
|
101
110
|
interface Cell<D extends object = {}> extends UseGroupByCellProps<D>, UseRowStateCellProps<D> {
|
|
102
111
|
}
|