@itwin/itwinui-react 1.37.3 → 1.39.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 +34 -0
- package/cjs/core/Breadcrumbs/Breadcrumbs.js +3 -5
- 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/ColorPicker/ColorSwatch.d.ts +1 -1
- package/cjs/core/ComboBox/ComboBox.d.ts +11 -2
- package/cjs/core/ComboBox/ComboBox.js +138 -246
- package/cjs/core/ComboBox/ComboBoxDropdown.d.ts +7 -0
- package/cjs/core/ComboBox/ComboBoxDropdown.js +55 -0
- package/cjs/core/ComboBox/ComboBoxEndIcon.d.ts +5 -0
- package/cjs/core/ComboBox/ComboBoxEndIcon.js +54 -0
- package/cjs/core/ComboBox/ComboBoxInput.d.ts +5 -0
- package/cjs/core/ComboBox/ComboBoxInput.js +152 -0
- package/cjs/core/ComboBox/ComboBoxInputContainer.d.ts +8 -0
- package/cjs/core/ComboBox/ComboBoxInputContainer.js +45 -0
- package/cjs/core/ComboBox/ComboBoxMenu.d.ts +3 -0
- package/cjs/core/ComboBox/ComboBoxMenu.js +89 -0
- package/cjs/core/ComboBox/ComboBoxMenuItem.d.ts +21 -0
- package/cjs/core/ComboBox/ComboBoxMenuItem.js +64 -0
- package/cjs/core/ComboBox/helpers.d.ts +32 -0
- package/cjs/core/ComboBox/helpers.js +50 -0
- package/cjs/core/DatePicker/DatePicker.d.ts +1 -1
- package/cjs/core/Modal/Modal.d.ts +1 -1
- package/cjs/core/Modal/Modal.js +6 -6
- package/cjs/core/Modal/ModalButtonBar.d.ts +1 -1
- package/cjs/core/Modal/ModalButtonBar.js +2 -2
- package/cjs/core/Modal/ModalContent.d.ts +1 -1
- package/cjs/core/Modal/ModalContent.js +2 -2
- package/cjs/core/RadioTiles/RadioTile.d.ts +1 -1
- package/cjs/core/RadioTiles/RadioTile.js +7 -9
- package/cjs/core/Select/Select.js +1 -1
- package/cjs/core/Table/Table.js +33 -23
- package/cjs/core/Table/TablePaginator.js +1 -1
- package/cjs/core/Table/filters/FilterToggle.js +3 -2
- package/cjs/core/Table/filters/tableFilters.d.ts +3 -3
- package/cjs/core/Table/hooks/useExpanderCell.js +11 -1
- package/cjs/core/Toast/ToastWrapper.d.ts +7 -5
- package/cjs/core/Toast/ToastWrapper.js +8 -4
- package/cjs/core/Toast/Toaster.d.ts +3 -0
- package/cjs/core/Toast/Toaster.js +110 -6
- package/cjs/core/utils/components/Popover.d.ts +1 -18
- package/cjs/core/utils/components/VirtualScroll.d.ts +35 -1
- package/cjs/core/utils/components/VirtualScroll.js +159 -26
- package/cjs/core/utils/components/WithCSSTransition.d.ts +1 -2
- package/cjs/core/utils/components/icons.d.ts +4 -4
- package/cjs/core/utils/hooks/index.d.ts +1 -0
- package/cjs/core/utils/hooks/index.js +1 -0
- package/cjs/core/utils/hooks/useOverflow.js +4 -2
- package/cjs/core/utils/hooks/useSafeContext.d.ts +6 -0
- package/cjs/core/utils/hooks/useSafeContext.js +23 -0
- package/cjs/core/utils/hooks/useTheme.d.ts +1 -1
- package/esm/core/Breadcrumbs/Breadcrumbs.js +3 -5
- 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/ColorPicker/ColorSwatch.d.ts +1 -1
- package/esm/core/ComboBox/ComboBox.d.ts +11 -2
- package/esm/core/ComboBox/ComboBox.js +140 -248
- package/esm/core/ComboBox/ComboBoxDropdown.d.ts +7 -0
- package/esm/core/ComboBox/ComboBoxDropdown.js +49 -0
- package/esm/core/ComboBox/ComboBoxEndIcon.d.ts +5 -0
- package/esm/core/ComboBox/ComboBoxEndIcon.js +48 -0
- package/esm/core/ComboBox/ComboBoxInput.d.ts +5 -0
- package/esm/core/ComboBox/ComboBoxInput.js +146 -0
- package/esm/core/ComboBox/ComboBoxInputContainer.d.ts +8 -0
- package/esm/core/ComboBox/ComboBoxInputContainer.js +38 -0
- package/esm/core/ComboBox/ComboBoxMenu.d.ts +3 -0
- package/esm/core/ComboBox/ComboBoxMenu.js +83 -0
- package/esm/core/ComboBox/ComboBoxMenuItem.d.ts +21 -0
- package/esm/core/ComboBox/ComboBoxMenuItem.js +58 -0
- package/esm/core/ComboBox/helpers.d.ts +32 -0
- package/esm/core/ComboBox/helpers.js +43 -0
- package/esm/core/DatePicker/DatePicker.d.ts +1 -1
- package/esm/core/Modal/Modal.d.ts +1 -1
- package/esm/core/Modal/Modal.js +6 -6
- package/esm/core/Modal/ModalButtonBar.d.ts +1 -1
- package/esm/core/Modal/ModalButtonBar.js +2 -2
- package/esm/core/Modal/ModalContent.d.ts +1 -1
- package/esm/core/Modal/ModalContent.js +2 -2
- package/esm/core/RadioTiles/RadioTile.d.ts +1 -1
- package/esm/core/RadioTiles/RadioTile.js +7 -9
- package/esm/core/Select/Select.js +1 -1
- package/esm/core/Table/Table.js +33 -23
- package/esm/core/Table/TablePaginator.js +1 -1
- package/esm/core/Table/filters/FilterToggle.js +3 -2
- package/esm/core/Table/filters/tableFilters.d.ts +3 -3
- package/esm/core/Table/hooks/useExpanderCell.js +8 -1
- package/esm/core/Toast/ToastWrapper.d.ts +7 -5
- package/esm/core/Toast/ToastWrapper.js +8 -3
- package/esm/core/Toast/Toaster.d.ts +3 -0
- package/esm/core/Toast/Toaster.js +88 -7
- package/esm/core/utils/components/Popover.d.ts +1 -18
- package/esm/core/utils/components/VirtualScroll.d.ts +35 -1
- package/esm/core/utils/components/VirtualScroll.js +157 -25
- package/esm/core/utils/components/WithCSSTransition.d.ts +1 -2
- package/esm/core/utils/components/icons.d.ts +4 -4
- package/esm/core/utils/hooks/index.d.ts +1 -0
- package/esm/core/utils/hooks/index.js +1 -0
- package/esm/core/utils/hooks/useOverflow.js +4 -2
- package/esm/core/utils/hooks/useSafeContext.d.ts +6 -0
- package/esm/core/utils/hooks/useSafeContext.js +16 -0
- package/esm/core/utils/hooks/useTheme.d.ts +1 -1
- package/package.json +27 -70
package/cjs/core/Table/Table.js
CHANGED
|
@@ -186,7 +186,13 @@ var Table = function (props) {
|
|
|
186
186
|
}
|
|
187
187
|
return result;
|
|
188
188
|
}, {});
|
|
189
|
-
var areFiltersSet = allColumns.some(function (column) { return
|
|
189
|
+
var areFiltersSet = allColumns.some(function (column) { return column.filterValue != null && column.filterValue !== ''; });
|
|
190
|
+
var showFilterButton = function (column) {
|
|
191
|
+
return (data.length !== 0 || areFiltersSet) && column.canFilter;
|
|
192
|
+
};
|
|
193
|
+
var showSortButton = function (column) {
|
|
194
|
+
return data.length !== 0 && column.canSort;
|
|
195
|
+
};
|
|
190
196
|
var onRowClickHandler = react_1.default.useCallback(function (event, row) {
|
|
191
197
|
var isDisabled = isRowDisabled === null || isRowDisabled === void 0 ? void 0 : isRowDisabled(row.original);
|
|
192
198
|
if (!isDisabled) {
|
|
@@ -297,28 +303,32 @@ var Table = function (props) {
|
|
|
297
303
|
className: (0, classnames_1.default)('iui-table', (_a = {}, _a["iui-".concat(density)] = density !== 'default', _a), className),
|
|
298
304
|
style: style,
|
|
299
305
|
}), ariaDataAttributes),
|
|
300
|
-
react_1.default.createElement("div", { className: 'iui-table-header', ref: headerRef },
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
306
|
+
react_1.default.createElement("div", { className: 'iui-table-header-wrapper', ref: headerRef },
|
|
307
|
+
react_1.default.createElement("div", { className: 'iui-table-header' }, headerGroups.slice(1).map(function (headerGroup) {
|
|
308
|
+
var headerGroupProps = headerGroup.getHeaderGroupProps({
|
|
309
|
+
className: 'iui-row',
|
|
310
|
+
});
|
|
311
|
+
return (react_1.default.createElement("div", __assign({}, headerGroupProps, { key: headerGroupProps.key }), headerGroup.headers.map(function (column, index) {
|
|
312
|
+
var columnProps = column.getHeaderProps(__assign(__assign({}, column.getSortByToggleProps()), { className: (0, classnames_1.default)('iui-cell', { 'iui-actionable': column.canSort }, { 'iui-sorted': column.isSorted }, column.columnClassName), style: (0, utils_2.getCellStyle)(column, !!state.isTableResizing) }));
|
|
313
|
+
return (react_1.default.createElement("div", __assign({}, columnProps, column.getDragAndDropProps(), { key: columnProps.key, title: undefined, ref: function (el) {
|
|
314
|
+
if (el && isResizable) {
|
|
315
|
+
columnRefs.current[column.id] = el;
|
|
316
|
+
column.resizeWidth = el.getBoundingClientRect().width;
|
|
317
|
+
}
|
|
318
|
+
} }),
|
|
319
|
+
column.render('Header'),
|
|
320
|
+
(showFilterButton(column) ||
|
|
321
|
+
showSortButton(column)) && (react_1.default.createElement("div", { className: 'iui-table-header-actions-container' },
|
|
322
|
+
showFilterButton(column) && (react_1.default.createElement(filters_1.FilterToggle, { column: column, ownerDocument: ownerDocument })),
|
|
323
|
+
showSortButton(column) && (react_1.default.createElement("div", { className: 'iui-cell-end-icon' }, column.isSorted && column.isSortedDesc ? (react_1.default.createElement(SortDown_1.default, { className: 'iui-icon iui-sort', "aria-hidden": true })) : (react_1.default.createElement(SortUp_1.default, { className: 'iui-icon iui-sort', "aria-hidden": true })))))),
|
|
324
|
+
isResizable &&
|
|
325
|
+
column.isResizerVisible &&
|
|
326
|
+
index !== headerGroup.headers.length - 1 && (react_1.default.createElement("div", __assign({}, column.getResizerProps(), { className: 'iui-resizer' }),
|
|
327
|
+
react_1.default.createElement("div", { className: 'iui-resizer-bar' }))),
|
|
328
|
+
enableColumnReordering &&
|
|
329
|
+
!column.disableReordering && (react_1.default.createElement("div", { className: 'iui-reorder-bar' }))));
|
|
330
|
+
})));
|
|
331
|
+
}))),
|
|
322
332
|
react_1.default.createElement("div", __assign({}, getTableBodyProps({
|
|
323
333
|
className: (0, classnames_1.default)('iui-table-body', {
|
|
324
334
|
'iui-zebra-striping': styleType === 'zebra-rows',
|
|
@@ -149,7 +149,7 @@ var TablePaginator = function (props) {
|
|
|
149
149
|
}
|
|
150
150
|
var hasNoRows = totalPagesCount === 0;
|
|
151
151
|
var showPagesList = totalPagesCount > 1 || isLoading;
|
|
152
|
-
var showPageSizeList = pageSizeList && onPageSizeChange && !!totalRowsCount;
|
|
152
|
+
var showPageSizeList = pageSizeList && !!onPageSizeChange && !!totalRowsCount;
|
|
153
153
|
var ellipsis = (react_1.default.createElement("span", { className: (0, classnames_1.default)('iui-paginator-ellipsis', {
|
|
154
154
|
'iui-paginator-ellipsis-small': size === 'small',
|
|
155
155
|
}) }, "\u2026"));
|
|
@@ -53,11 +53,12 @@ var FilterToggle = function (props) {
|
|
|
53
53
|
column.setFilter(undefined);
|
|
54
54
|
close();
|
|
55
55
|
}, [close, column]);
|
|
56
|
+
var isColumnFiltered = column.filterValue != null && column.filterValue !== '';
|
|
56
57
|
return (react_1.default.createElement(react_1.default.Fragment, null, column.canFilter && column.Filter && (react_1.default.createElement(utils_1.Popover, { content: column.render('Filter', { close: close, setFilter: setFilter, clearFilter: clearFilter }), placement: 'bottom-start', visible: isVisible, onClickOutside: close, appendTo: ownerDocument === null || ownerDocument === void 0 ? void 0 : ownerDocument.body },
|
|
57
|
-
react_1.default.createElement(Buttons_1.IconButton, __assign({ styleType: 'borderless', isActive: isVisible ||
|
|
58
|
+
react_1.default.createElement(Buttons_1.IconButton, __assign({ styleType: 'borderless', isActive: isVisible || isColumnFiltered, className: (0, classnames_1.default)('iui-filter-button', className), onClick: function (e) {
|
|
58
59
|
setIsVisible(function (v) { return !v; });
|
|
59
60
|
// Prevents from triggering sort
|
|
60
61
|
e.stopPropagation();
|
|
61
|
-
} }, rest),
|
|
62
|
+
} }, rest), isColumnFiltered ? react_1.default.createElement(Filter_1.default, null) : react_1.default.createElement(FilterHollow_1.default, null))))));
|
|
62
63
|
};
|
|
63
64
|
exports.FilterToggle = FilterToggle;
|
|
@@ -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
|
};
|
|
@@ -19,8 +19,16 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
19
19
|
}
|
|
20
20
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
21
21
|
};
|
|
22
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
23
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
24
|
+
};
|
|
22
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
26
|
exports.useExpanderCell = void 0;
|
|
27
|
+
/*---------------------------------------------------------------------------------------------
|
|
28
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
29
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
30
|
+
*--------------------------------------------------------------------------------------------*/
|
|
31
|
+
var react_1 = __importDefault(require("react"));
|
|
24
32
|
var columns_1 = require("../columns");
|
|
25
33
|
var useExpanderCell = function (subComponent, expanderCell, isRowDisabled) { return function (hooks) {
|
|
26
34
|
if (!subComponent) {
|
|
@@ -36,7 +44,9 @@ var useExpanderCell = function (subComponent, expanderCell, isRowDisabled) { ret
|
|
|
36
44
|
isDisabled: isRowDisabled,
|
|
37
45
|
});
|
|
38
46
|
return __spreadArray([
|
|
39
|
-
__assign(__assign({}, expanderColumn), { Cell: expanderCell
|
|
47
|
+
__assign(__assign({}, expanderColumn), { Cell: expanderCell
|
|
48
|
+
? function (cellProps) { return react_1.default.createElement(react_1.default.Fragment, null, expanderCell(cellProps)); }
|
|
49
|
+
: expanderColumn.Cell })
|
|
40
50
|
], columns, true);
|
|
41
51
|
});
|
|
42
52
|
}; };
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import '@itwin/itwinui-css/css/toast-notification.css';
|
|
2
|
+
import React from 'react';
|
|
3
3
|
import { ToastProps } from './Toast';
|
|
4
4
|
import { ToasterSettings } from './Toaster';
|
|
5
|
-
declare type
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
declare type ToastPlacement = NonNullable<ToasterSettings['placement']>;
|
|
6
|
+
export declare type ToastWrapperHandle = {
|
|
7
|
+
setToasts: (toasts: ToastProps[]) => void;
|
|
8
|
+
setPlacement: (placement: ToastPlacement) => void;
|
|
9
|
+
};
|
|
10
|
+
export declare const ToastWrapper: React.ForwardRefExoticComponent<React.RefAttributes<ToastWrapperHandle>>;
|
|
9
11
|
export {};
|
|
@@ -23,11 +23,15 @@ require("@itwin/itwinui-css/css/toast-notification.css");
|
|
|
23
23
|
var react_1 = __importDefault(require("react"));
|
|
24
24
|
var classnames_1 = __importDefault(require("classnames"));
|
|
25
25
|
var Toast_1 = __importDefault(require("./Toast"));
|
|
26
|
-
|
|
27
|
-
var
|
|
26
|
+
exports.ToastWrapper = react_1.default.forwardRef(function (_, ref) {
|
|
27
|
+
var _a = react_1.default.useState([]), toasts = _a[0], setToasts = _a[1];
|
|
28
|
+
var _b = react_1.default.useState('top'), placement = _b[0], setPlacement = _b[1];
|
|
28
29
|
var placementPosition = placement.startsWith('top') ? 'top' : 'bottom';
|
|
30
|
+
react_1.default.useImperativeHandle(ref, function () { return ({
|
|
31
|
+
setToasts: setToasts,
|
|
32
|
+
setPlacement: setPlacement,
|
|
33
|
+
}); }, []);
|
|
29
34
|
return (react_1.default.createElement("span", { className: (0, classnames_1.default)("iui-toast-wrapper", "iui-placement-".concat(placement)) }, toasts.map(function (toastProps) {
|
|
30
35
|
return (react_1.default.createElement(Toast_1.default, __assign({ key: toastProps.id, placementPosition: placementPosition }, toastProps)));
|
|
31
36
|
})));
|
|
32
|
-
};
|
|
33
|
-
exports.ToastWrapper = ToastWrapper;
|
|
37
|
+
});
|
|
@@ -20,6 +20,9 @@ export default class Toaster {
|
|
|
20
20
|
private toasts;
|
|
21
21
|
private lastId;
|
|
22
22
|
private settings;
|
|
23
|
+
private toastsRef;
|
|
24
|
+
private isInitialized;
|
|
25
|
+
private asyncInit;
|
|
23
26
|
/**
|
|
24
27
|
* Set global Toaster settings for toasts order and placement.
|
|
25
28
|
* Settings will be applied to new toasts on the page.
|
|
@@ -10,6 +10,65 @@ var __assign = (this && this.__assign) || function () {
|
|
|
10
10
|
};
|
|
11
11
|
return __assign.apply(this, arguments);
|
|
12
12
|
};
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
28
|
+
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
+
if (mod && mod.__esModule) return mod;
|
|
31
|
+
var result = {};
|
|
32
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
+
__setModuleDefault(result, mod);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
36
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
37
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
38
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
39
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
40
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
41
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
42
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
46
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
47
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
48
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
49
|
+
function step(op) {
|
|
50
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
51
|
+
while (_) try {
|
|
52
|
+
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;
|
|
53
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
54
|
+
switch (op[0]) {
|
|
55
|
+
case 0: case 1: t = op; break;
|
|
56
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
57
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
58
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
59
|
+
default:
|
|
60
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
61
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
62
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
63
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
64
|
+
if (t[2]) _.ops.pop();
|
|
65
|
+
_.trys.pop(); continue;
|
|
66
|
+
}
|
|
67
|
+
op = body.call(thisArg, _);
|
|
68
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
69
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
70
|
+
}
|
|
71
|
+
};
|
|
13
72
|
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
14
73
|
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
15
74
|
if (ar || !(i in from)) {
|
|
@@ -28,30 +87,75 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
28
87
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
29
88
|
*--------------------------------------------------------------------------------------------*/
|
|
30
89
|
var react_1 = __importDefault(require("react"));
|
|
31
|
-
var
|
|
90
|
+
var ReactDOM = __importStar(require("react-dom"));
|
|
32
91
|
var utils_1 = require("../utils");
|
|
33
92
|
var ToastWrapper_1 = require("./ToastWrapper");
|
|
34
93
|
var TOASTS_CONTAINER_ID = 'iui-toasts-container';
|
|
35
94
|
var Toaster = /** @class */ (function () {
|
|
36
95
|
function Toaster() {
|
|
96
|
+
var _this = this;
|
|
37
97
|
this.toasts = [];
|
|
38
98
|
this.lastId = 0;
|
|
39
99
|
this.settings = {
|
|
40
100
|
order: 'descending',
|
|
41
101
|
placement: 'top',
|
|
42
102
|
};
|
|
103
|
+
this.toastsRef = react_1.default.createRef();
|
|
104
|
+
this.isInitialized = false;
|
|
105
|
+
// Create container on demand.
|
|
106
|
+
// Cannot do it in constructor, because SSG/SSR apps would fail.
|
|
107
|
+
this.asyncInit = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
108
|
+
var container, toastWrapper, _ReactDOM, _ReactDOMInternals, root;
|
|
109
|
+
var _a, _b;
|
|
110
|
+
return __generator(this, function (_c) {
|
|
111
|
+
if (this.isInitialized) {
|
|
112
|
+
return [2 /*return*/];
|
|
113
|
+
}
|
|
114
|
+
container = (_a = (0, utils_1.getContainer)(TOASTS_CONTAINER_ID)) !== null && _a !== void 0 ? _a : (_b = (0, utils_1.getDocument)()) === null || _b === void 0 ? void 0 : _b.body;
|
|
115
|
+
if (!container) {
|
|
116
|
+
return [2 /*return*/];
|
|
117
|
+
}
|
|
118
|
+
this.isInitialized = true;
|
|
119
|
+
toastWrapper = react_1.default.createElement(ToastWrapper_1.ToastWrapper, { ref: this.toastsRef });
|
|
120
|
+
_ReactDOM = ReactDOM;
|
|
121
|
+
// v18 mode
|
|
122
|
+
if (_ReactDOM.createRoot) {
|
|
123
|
+
_ReactDOMInternals = _ReactDOM.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
|
|
124
|
+
// suppress warning about importing createRoot from react-dom/client
|
|
125
|
+
if (_ReactDOMInternals) {
|
|
126
|
+
_ReactDOMInternals.usingClientEntryPoint = true;
|
|
127
|
+
}
|
|
128
|
+
root = _ReactDOM.createRoot(container);
|
|
129
|
+
root.render(toastWrapper);
|
|
130
|
+
// revert suppression, not to influence users app
|
|
131
|
+
if (_ReactDOMInternals) {
|
|
132
|
+
_ReactDOMInternals.usingClientEntryPoint = false;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
// v17 and before
|
|
137
|
+
ReactDOM.render(toastWrapper, container);
|
|
138
|
+
}
|
|
139
|
+
return [2 /*return*/];
|
|
140
|
+
});
|
|
141
|
+
}); };
|
|
43
142
|
}
|
|
44
143
|
/**
|
|
45
144
|
* Set global Toaster settings for toasts order and placement.
|
|
46
145
|
* Settings will be applied to new toasts on the page.
|
|
47
146
|
*/
|
|
48
147
|
Toaster.prototype.setSettings = function (newSettings) {
|
|
148
|
+
var _this = this;
|
|
49
149
|
var _a, _b, _c;
|
|
50
150
|
(_a = newSettings.placement) !== null && _a !== void 0 ? _a : (newSettings.placement = this.settings.placement);
|
|
51
151
|
(_b = newSettings.order) !== null && _b !== void 0 ? _b : (newSettings.order = ((_c = newSettings.placement) === null || _c === void 0 ? void 0 : _c.startsWith('bottom'))
|
|
52
152
|
? 'ascending'
|
|
53
153
|
: 'descending');
|
|
54
154
|
this.settings = newSettings;
|
|
155
|
+
this.asyncInit().then(function () {
|
|
156
|
+
var _a, _b;
|
|
157
|
+
(_a = _this.toastsRef.current) === null || _a === void 0 ? void 0 : _a.setPlacement((_b = _this.settings.placement) !== null && _b !== void 0 ? _b : 'top');
|
|
158
|
+
});
|
|
55
159
|
};
|
|
56
160
|
Toaster.prototype.positive = function (content, options) {
|
|
57
161
|
return this.createToast(content, 'positive', options);
|
|
@@ -84,11 +188,11 @@ var Toaster = /** @class */ (function () {
|
|
|
84
188
|
this.updateView();
|
|
85
189
|
};
|
|
86
190
|
Toaster.prototype.updateView = function () {
|
|
87
|
-
var
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
191
|
+
var _this = this;
|
|
192
|
+
this.asyncInit().then(function () {
|
|
193
|
+
var _a;
|
|
194
|
+
(_a = _this.toastsRef.current) === null || _a === void 0 ? void 0 : _a.setToasts(_this.toasts);
|
|
195
|
+
});
|
|
92
196
|
};
|
|
93
197
|
Toaster.prototype.closeToast = function (toastId) {
|
|
94
198
|
this.toasts = this.toasts.map(function (toast) {
|
|
@@ -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" | "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" | "children" | "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.
|
|
@@ -16,6 +16,10 @@ export declare type VirtualScrollProps = {
|
|
|
16
16
|
* @default 10
|
|
17
17
|
*/
|
|
18
18
|
bufferSize?: number;
|
|
19
|
+
/**
|
|
20
|
+
* Index of the first element on initial render.
|
|
21
|
+
*/
|
|
22
|
+
scrollToIndex?: number;
|
|
19
23
|
} & React.ComponentPropsWithRef<'div'>;
|
|
20
24
|
/**
|
|
21
25
|
* `VirtualScroll` component is used to render a huge amount of items in the DOM. It renders only the ones which are visible
|
|
@@ -38,5 +42,35 @@ export declare type VirtualScrollProps = {
|
|
|
38
42
|
* />
|
|
39
43
|
* @private
|
|
40
44
|
*/
|
|
41
|
-
export declare const VirtualScroll: React.ForwardRefExoticComponent<Pick<VirtualScrollProps, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "itemsLength" | "itemRenderer" | "bufferSize"> & React.RefAttributes<HTMLDivElement>>;
|
|
45
|
+
export declare const VirtualScroll: React.ForwardRefExoticComponent<Pick<VirtualScrollProps, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "itemsLength" | "itemRenderer" | "bufferSize" | "scrollToIndex"> & React.RefAttributes<HTMLDivElement>>;
|
|
46
|
+
/**
|
|
47
|
+
* `useVirtualization` is used for efficiently rendering only the visible rows from a large list.
|
|
48
|
+
* It returns `outerProps` and `innerProps`, which need to be applied on 2 container elements and `visibleChildren` which is a list of virtualized items.
|
|
49
|
+
* @example
|
|
50
|
+
* const itemRenderer = React.useCallback((index: number) => (
|
|
51
|
+
* <li key={index}>
|
|
52
|
+
* This is my item #{index}
|
|
53
|
+
* </li>
|
|
54
|
+
* ), [])
|
|
55
|
+
*
|
|
56
|
+
* const { outerProps, innerProps, visibleChildren } = useVirtualization({itemsLength: 1000, itemRenderer: itemRenderer});
|
|
57
|
+
* return (
|
|
58
|
+
* <div {...outerProps}>
|
|
59
|
+
* <ul {...innerProps}>
|
|
60
|
+
* {visibleChildren}
|
|
61
|
+
* </ul>
|
|
62
|
+
* </div>
|
|
63
|
+
* );
|
|
64
|
+
* @private
|
|
65
|
+
*/
|
|
66
|
+
export declare const useVirtualization: (props: VirtualScrollProps) => {
|
|
67
|
+
outerProps: React.HTMLAttributes<HTMLElement>;
|
|
68
|
+
innerProps: {
|
|
69
|
+
readonly style: {
|
|
70
|
+
readonly willChange: "transform";
|
|
71
|
+
};
|
|
72
|
+
readonly ref: (instance: HTMLElement | null) => void;
|
|
73
|
+
};
|
|
74
|
+
visibleChildren: JSX.Element[];
|
|
75
|
+
};
|
|
42
76
|
export default VirtualScroll;
|