@itwin/itwinui-react 3.14.2 → 3.15.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 +68 -2
- package/DEV-cjs/core/Carousel/CarouselDotsList.js +11 -4
- package/DEV-cjs/core/Carousel/CarouselSlider.js +3 -3
- package/DEV-cjs/core/ColorPicker/ColorBuilder.js +72 -24
- package/DEV-cjs/core/ColorPicker/ColorInputPanel.js +35 -7
- package/DEV-cjs/core/ColorPicker/ColorPalette.js +21 -3
- package/DEV-cjs/core/ComboBox/ComboBox.js +2 -1
- package/DEV-cjs/core/ComboBox/ComboBoxMenu.js +2 -2
- package/DEV-cjs/core/DropdownMenu/DropdownMenu.js +20 -19
- package/DEV-cjs/core/Overlay/Overlay.js +0 -18
- package/DEV-cjs/core/Popover/Popover.js +17 -10
- package/DEV-cjs/core/Select/Select.js +4 -2
- package/DEV-cjs/core/Table/Table.js +50 -25
- package/DEV-cjs/core/Table/TableExpandableContentMemoized.js +47 -0
- package/DEV-cjs/core/Table/TableRowMemoized.js +0 -18
- package/DEV-cjs/core/Table/hooks/useColumnDragAndDrop.js +12 -14
- package/DEV-cjs/core/ThemeProvider/ThemeProvider.js +18 -0
- package/DEV-cjs/core/Toast/Toast.js +6 -7
- package/DEV-cjs/styles.js +1 -1
- package/DEV-cjs/utils/components/ShadowRoot.js +22 -8
- package/DEV-cjs/utils/hooks/useWarningLogger.js +5 -3
- package/DEV-esm/core/Carousel/CarouselDotsList.js +10 -5
- package/DEV-esm/core/Carousel/CarouselSlider.js +2 -3
- package/DEV-esm/core/ColorPicker/ColorBuilder.js +56 -22
- package/DEV-esm/core/ColorPicker/ColorInputPanel.js +37 -8
- package/DEV-esm/core/ColorPicker/ColorPalette.js +18 -3
- package/DEV-esm/core/ComboBox/ComboBox.js +2 -1
- package/DEV-esm/core/ComboBox/ComboBoxMenu.js +2 -2
- package/DEV-esm/core/DropdownMenu/DropdownMenu.js +20 -19
- package/DEV-esm/core/Overlay/Overlay.js +1 -19
- package/DEV-esm/core/Popover/Popover.js +18 -10
- package/DEV-esm/core/Select/Select.js +4 -2
- package/DEV-esm/core/Table/Table.js +50 -25
- package/DEV-esm/core/Table/TableExpandableContentMemoized.js +33 -0
- package/DEV-esm/core/Table/TableRowMemoized.js +1 -21
- package/DEV-esm/core/Table/hooks/useColumnDragAndDrop.js +12 -6
- package/DEV-esm/core/ThemeProvider/ThemeProvider.js +18 -0
- package/DEV-esm/core/Toast/Toast.js +5 -5
- package/DEV-esm/styles.js +1 -1
- package/DEV-esm/utils/components/ShadowRoot.js +22 -8
- package/DEV-esm/utils/hooks/useWarningLogger.js +4 -3
- package/cjs/core/Buttons/SplitButton.d.ts +5 -0
- package/cjs/core/Carousel/CarouselDotsList.js +11 -4
- package/cjs/core/Carousel/CarouselSlider.js +3 -3
- package/cjs/core/ColorPicker/ColorBuilder.d.ts +22 -1
- package/cjs/core/ColorPicker/ColorBuilder.js +72 -24
- package/cjs/core/ColorPicker/ColorInputPanel.d.ts +18 -0
- package/cjs/core/ColorPicker/ColorInputPanel.js +35 -7
- package/cjs/core/ColorPicker/ColorPalette.d.ts +8 -0
- package/cjs/core/ColorPicker/ColorPalette.js +21 -3
- package/cjs/core/ComboBox/ComboBox.d.ts +3 -2
- package/cjs/core/ComboBox/ComboBox.js +2 -1
- package/cjs/core/ComboBox/ComboBoxMenu.js +2 -2
- package/cjs/core/DropdownMenu/DropdownMenu.d.ts +11 -0
- package/cjs/core/DropdownMenu/DropdownMenu.js +20 -19
- package/cjs/core/Overlay/Overlay.js +0 -18
- package/cjs/core/Popover/Popover.d.ts +4 -1
- package/cjs/core/Popover/Popover.js +17 -10
- package/cjs/core/Select/Select.d.ts +14 -2
- package/cjs/core/Select/Select.js +4 -2
- package/cjs/core/Table/Table.js +50 -25
- package/cjs/core/Table/TableExpandableContentMemoized.d.ts +10 -0
- package/cjs/core/Table/TableExpandableContentMemoized.js +47 -0
- package/cjs/core/Table/TableRowMemoized.js +0 -18
- package/cjs/core/Table/hooks/useColumnDragAndDrop.js +12 -14
- package/cjs/core/ThemeProvider/ThemeProvider.js +18 -0
- package/cjs/core/Toast/Toast.js +6 -7
- package/cjs/styles.js +1 -1
- package/cjs/utils/components/ShadowRoot.js +22 -8
- package/cjs/utils/hooks/useWarningLogger.js +1 -0
- package/esm/core/Buttons/SplitButton.d.ts +5 -0
- package/esm/core/Carousel/CarouselDotsList.js +10 -5
- package/esm/core/Carousel/CarouselSlider.js +2 -3
- package/esm/core/ColorPicker/ColorBuilder.d.ts +22 -1
- package/esm/core/ColorPicker/ColorBuilder.js +56 -22
- package/esm/core/ColorPicker/ColorInputPanel.d.ts +18 -0
- package/esm/core/ColorPicker/ColorInputPanel.js +37 -8
- package/esm/core/ColorPicker/ColorPalette.d.ts +8 -0
- package/esm/core/ColorPicker/ColorPalette.js +18 -3
- package/esm/core/ComboBox/ComboBox.d.ts +3 -2
- package/esm/core/ComboBox/ComboBox.js +2 -1
- package/esm/core/ComboBox/ComboBoxMenu.js +2 -2
- package/esm/core/DropdownMenu/DropdownMenu.d.ts +11 -0
- package/esm/core/DropdownMenu/DropdownMenu.js +20 -19
- package/esm/core/Overlay/Overlay.js +1 -19
- package/esm/core/Popover/Popover.d.ts +4 -1
- package/esm/core/Popover/Popover.js +18 -10
- package/esm/core/Select/Select.d.ts +14 -2
- package/esm/core/Select/Select.js +4 -2
- package/esm/core/Table/Table.js +50 -25
- package/esm/core/Table/TableExpandableContentMemoized.d.ts +10 -0
- package/esm/core/Table/TableExpandableContentMemoized.js +33 -0
- package/esm/core/Table/TableRowMemoized.js +1 -21
- package/esm/core/Table/hooks/useColumnDragAndDrop.js +12 -6
- package/esm/core/ThemeProvider/ThemeProvider.js +18 -0
- package/esm/core/Toast/Toast.js +5 -5
- package/esm/styles.js +1 -1
- package/esm/utils/components/ShadowRoot.js +22 -8
- package/esm/utils/hooks/useWarningLogger.js +1 -0
- package/package.json +8 -6
- package/styles.css +8 -8
|
@@ -31,6 +31,7 @@ const _index1 = require('./hooks/index.js');
|
|
|
31
31
|
const _index2 = require('./actionHandlers/index.js');
|
|
32
32
|
const _index3 = require('./columns/index.js');
|
|
33
33
|
const _ColumnHeader = require('./ColumnHeader.js');
|
|
34
|
+
const _TableExpandableContentMemoized = require('./TableExpandableContentMemoized.js');
|
|
34
35
|
const singleRowSelectedAction = 'singleRowSelected';
|
|
35
36
|
const shiftRowSelectedAction = 'shiftRowSelected';
|
|
36
37
|
const tableResizeStartAction = 'tableResizeStart';
|
|
@@ -224,6 +225,17 @@ const Table = (props) => {
|
|
|
224
225
|
),
|
|
225
226
|
[data, getSubRows],
|
|
226
227
|
);
|
|
228
|
+
let [rowHasParent] = _react.useState(() => new WeakSet());
|
|
229
|
+
let getSubRowsWithSubComponents = _react.useCallback(
|
|
230
|
+
(originalRow) => {
|
|
231
|
+
if (!rowHasParent.has(originalRow)) {
|
|
232
|
+
rowHasParent.add(originalRow);
|
|
233
|
+
return [originalRow];
|
|
234
|
+
}
|
|
235
|
+
return originalRow.subRows || [];
|
|
236
|
+
},
|
|
237
|
+
[rowHasParent],
|
|
238
|
+
);
|
|
227
239
|
let instance = (0, _reacttable.useTable)(
|
|
228
240
|
{
|
|
229
241
|
manualPagination: !paginatorRenderer,
|
|
@@ -236,7 +248,7 @@ const Table = (props) => {
|
|
|
236
248
|
filterTypes,
|
|
237
249
|
selectSubRows,
|
|
238
250
|
data,
|
|
239
|
-
getSubRows,
|
|
251
|
+
getSubRows: subComponent ? getSubRowsWithSubComponents : getSubRows,
|
|
240
252
|
initialState: {
|
|
241
253
|
pageSize,
|
|
242
254
|
...props.initialState,
|
|
@@ -437,39 +449,54 @@ const Table = (props) => {
|
|
|
437
449
|
(0, _index.useLayoutEffect)(() => {
|
|
438
450
|
if (scrollToIndex)
|
|
439
451
|
virtualizer.scrollToIndex(scrollToIndex, {
|
|
440
|
-
align: '
|
|
452
|
+
align: 'start',
|
|
441
453
|
});
|
|
442
454
|
}, [virtualizer, scrollToIndex]);
|
|
443
455
|
let getPreparedRow = _react.useCallback(
|
|
444
456
|
(index, virtualItem, virtualizer) => {
|
|
445
457
|
let row = page[index];
|
|
446
458
|
prepareRow(row);
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
459
|
+
if (row.subRows.length > 0 || !subComponent)
|
|
460
|
+
return _react.createElement(_TableRowMemoized.TableRowMemoized, {
|
|
461
|
+
row: row,
|
|
462
|
+
rowProps: rowProps,
|
|
463
|
+
isLast: index === page.length - 1,
|
|
464
|
+
onRowInViewport: onRowInViewportRef,
|
|
465
|
+
onBottomReached: onBottomReachedRef,
|
|
466
|
+
intersectionMargin: intersectionMargin,
|
|
467
|
+
state: state,
|
|
468
|
+
key: row.getRowProps().key,
|
|
469
|
+
onClick: onRowClickHandler,
|
|
470
|
+
subComponent: subComponent,
|
|
471
|
+
isDisabled: !!isRowDisabled?.(row.original),
|
|
472
|
+
tableHasSubRows: hasAnySubRows,
|
|
473
|
+
tableInstance: instance,
|
|
474
|
+
expanderCell: expanderCell,
|
|
475
|
+
scrollContainerRef: tableRef.current,
|
|
476
|
+
tableRowRef: enableVirtualization ? void 0 : tableRowRef(row),
|
|
477
|
+
density: density,
|
|
478
|
+
virtualItem: virtualItem,
|
|
479
|
+
virtualizer: virtualizer,
|
|
480
|
+
});
|
|
481
|
+
return _react.createElement(
|
|
482
|
+
_TableExpandableContentMemoized.TableExpandableContentMemoized,
|
|
483
|
+
{
|
|
484
|
+
key: row.getRowProps().key,
|
|
485
|
+
virtualItem: virtualItem,
|
|
486
|
+
ref: enableVirtualization
|
|
487
|
+
? virtualizer?.measureElement
|
|
488
|
+
: tableRowRef(row),
|
|
489
|
+
isDisabled: !!isRowDisabled?.(row.original),
|
|
490
|
+
},
|
|
491
|
+
subComponent(row),
|
|
492
|
+
);
|
|
468
493
|
},
|
|
469
494
|
[
|
|
470
495
|
page,
|
|
471
496
|
prepareRow,
|
|
472
497
|
rowProps,
|
|
498
|
+
onRowInViewportRef,
|
|
499
|
+
onBottomReachedRef,
|
|
473
500
|
intersectionMargin,
|
|
474
501
|
state,
|
|
475
502
|
onRowClickHandler,
|
|
@@ -481,8 +508,6 @@ const Table = (props) => {
|
|
|
481
508
|
enableVirtualization,
|
|
482
509
|
tableRowRef,
|
|
483
510
|
density,
|
|
484
|
-
onBottomReachedRef,
|
|
485
|
-
onRowInViewportRef,
|
|
486
511
|
],
|
|
487
512
|
);
|
|
488
513
|
let updateStickyState = () => {
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
Object.defineProperty(exports, '__esModule', {
|
|
3
|
+
value: true,
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, 'TableExpandableContentMemoized', {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function () {
|
|
8
|
+
return TableExpandableContentMemoized;
|
|
9
|
+
},
|
|
10
|
+
});
|
|
11
|
+
const _interop_require_default = require('@swc/helpers/_/_interop_require_default');
|
|
12
|
+
const _interop_require_wildcard = require('@swc/helpers/_/_interop_require_wildcard');
|
|
13
|
+
const _classnames = _interop_require_default._(require('classnames'));
|
|
14
|
+
const _react = _interop_require_wildcard._(require('react'));
|
|
15
|
+
const _index = require('../../utils/index.js');
|
|
16
|
+
const TableExpandableContent = _react.forwardRef((props, ref) => {
|
|
17
|
+
let { children, className, style, isDisabled, virtualItem, ...rest } = props;
|
|
18
|
+
return _react.createElement(
|
|
19
|
+
_index.Box,
|
|
20
|
+
{
|
|
21
|
+
className: (0, _classnames.default)(
|
|
22
|
+
'iui-table-row',
|
|
23
|
+
'iui-table-expanded-content',
|
|
24
|
+
className,
|
|
25
|
+
),
|
|
26
|
+
style: {
|
|
27
|
+
flex: '0 0 auto',
|
|
28
|
+
minWidth: '100%',
|
|
29
|
+
...(null != virtualItem
|
|
30
|
+
? {
|
|
31
|
+
transform: `translateY(${virtualItem.start}px)`,
|
|
32
|
+
}
|
|
33
|
+
: {}),
|
|
34
|
+
...style,
|
|
35
|
+
},
|
|
36
|
+
'aria-disabled': isDisabled,
|
|
37
|
+
'data-iui-index': virtualItem?.index,
|
|
38
|
+
...(null != virtualItem && {
|
|
39
|
+
'data-iui-virtualizer': 'item',
|
|
40
|
+
}),
|
|
41
|
+
ref: ref,
|
|
42
|
+
...rest,
|
|
43
|
+
},
|
|
44
|
+
children,
|
|
45
|
+
);
|
|
46
|
+
});
|
|
47
|
+
const TableExpandableContentMemoized = _react.memo(TableExpandableContent);
|
|
@@ -122,24 +122,6 @@ const TableRow = (props) => {
|
|
|
122
122
|
}),
|
|
123
123
|
),
|
|
124
124
|
),
|
|
125
|
-
subComponent &&
|
|
126
|
-
_react.createElement(
|
|
127
|
-
_index.WithCSSTransition,
|
|
128
|
-
{
|
|
129
|
-
in: row.isExpanded,
|
|
130
|
-
},
|
|
131
|
-
_react.createElement(
|
|
132
|
-
_index.Box,
|
|
133
|
-
{
|
|
134
|
-
className: (0, _classnames.default)(
|
|
135
|
-
'iui-table-row',
|
|
136
|
-
'iui-table-expanded-content',
|
|
137
|
-
),
|
|
138
|
-
'aria-disabled': isDisabled,
|
|
139
|
-
},
|
|
140
|
-
subComponent(row),
|
|
141
|
-
),
|
|
142
|
-
),
|
|
143
125
|
);
|
|
144
126
|
};
|
|
145
127
|
const hasAnySelectedSubRow = (row, selectedRowIds) => {
|
|
@@ -10,6 +10,8 @@ Object.defineProperty(exports, 'useColumnDragAndDrop', {
|
|
|
10
10
|
});
|
|
11
11
|
const _reacttable = require('react-table');
|
|
12
12
|
const _styles = require('../../../styles.js');
|
|
13
|
+
const leftClassName = _styles.styles['iui-table-reorder-column-left'];
|
|
14
|
+
const rightClassName = _styles.styles['iui-table-reorder-column-right'];
|
|
13
15
|
const REORDER_ACTIONS = {
|
|
14
16
|
columnDragStart: 'columnDragStart',
|
|
15
17
|
columnDragEnd: 'columnDragEnd',
|
|
@@ -31,20 +33,16 @@ const defaultGetDragAndDropProps =
|
|
|
31
33
|
};
|
|
32
34
|
let setOnDragColumnStyle = (event, position) => {
|
|
33
35
|
let columnElement = event.currentTarget;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
columnElement.classList.
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
else if ('right' === position)
|
|
45
|
-
columnElement.classList.add(
|
|
46
|
-
_styles.styles['iui-table-reorder-column-right'],
|
|
47
|
-
);
|
|
36
|
+
if ('left' === position) {
|
|
37
|
+
columnElement.classList.remove(rightClassName);
|
|
38
|
+
columnElement.classList.add(leftClassName);
|
|
39
|
+
} else if ('right' === position) {
|
|
40
|
+
columnElement.classList.remove(leftClassName);
|
|
41
|
+
columnElement.classList.add(rightClassName);
|
|
42
|
+
} else {
|
|
43
|
+
columnElement.classList.remove(leftClassName);
|
|
44
|
+
columnElement.classList.remove(rightClassName);
|
|
45
|
+
}
|
|
48
46
|
};
|
|
49
47
|
let reorderColumns = (tableColumns, srcIndex, dstIndex) => {
|
|
50
48
|
let newTableColumns = [...tableColumns];
|
|
@@ -30,6 +30,7 @@ const ThemeProvider = _react.forwardRef((props, forwardedRef) => {
|
|
|
30
30
|
includeCss = 'inherit' === themeProp,
|
|
31
31
|
...rest
|
|
32
32
|
} = props;
|
|
33
|
+
useInertPolyfill();
|
|
33
34
|
let [rootElement, setRootElement] = _react.useState(null);
|
|
34
35
|
let parent = useParentThemeAndContext(rootElement);
|
|
35
36
|
let theme = 'inherit' === themeProp ? parent.theme || 'light' : themeProp;
|
|
@@ -291,3 +292,20 @@ const useIuiDebugRef = () => {
|
|
|
291
292
|
};
|
|
292
293
|
_globalThis1.__iui.versions.add(JSON.stringify(_meta.meta));
|
|
293
294
|
};
|
|
295
|
+
const useInertPolyfill = () => {
|
|
296
|
+
let loaded = _react.useRef(false);
|
|
297
|
+
let modulePath =
|
|
298
|
+
'https://cdn.jsdelivr.net/npm/wicg-inert@3.1.2/dist/inert.min.js';
|
|
299
|
+
_react.useEffect(() => {
|
|
300
|
+
(async () => {
|
|
301
|
+
if (
|
|
302
|
+
!HTMLElement.prototype.hasOwnProperty('inert') &&
|
|
303
|
+
!loaded.current &&
|
|
304
|
+
!_index.isUnitTest
|
|
305
|
+
) {
|
|
306
|
+
await new Function('url', 'return import(url)')(modulePath);
|
|
307
|
+
loaded.current = true;
|
|
308
|
+
}
|
|
309
|
+
})();
|
|
310
|
+
}, []);
|
|
311
|
+
};
|
|
@@ -25,10 +25,6 @@ const _classnames = _interop_require_default._(require('classnames'));
|
|
|
25
25
|
const _index = require('../../utils/index.js');
|
|
26
26
|
const _IconButton = require('../Buttons/IconButton.js');
|
|
27
27
|
const _Toaster = require('./Toaster.js');
|
|
28
|
-
const isMotionOk = () =>
|
|
29
|
-
(0, _index.getWindow)()?.matchMedia?.(
|
|
30
|
-
'(prefers-reduced-motion: no-preference)',
|
|
31
|
-
)?.matches;
|
|
32
28
|
const Toast = (props) => {
|
|
33
29
|
let {
|
|
34
30
|
content,
|
|
@@ -52,6 +48,9 @@ const Toast = (props) => {
|
|
|
52
48
|
let [height, setHeight] = _react.useState(0);
|
|
53
49
|
let thisElement = _react.useRef(null);
|
|
54
50
|
let [margin, setMargin] = _react.useState(0);
|
|
51
|
+
let motionOk = (0, _index.useMediaQuery)(
|
|
52
|
+
'(prefers-reduced-motion: no-preference)',
|
|
53
|
+
);
|
|
55
54
|
let marginStyle = () => {
|
|
56
55
|
if ('top' === placementPosition)
|
|
57
56
|
return {
|
|
@@ -116,16 +115,16 @@ const Toast = (props) => {
|
|
|
116
115
|
appear: true,
|
|
117
116
|
unmountOnExit: true,
|
|
118
117
|
onEnter: (node) => {
|
|
119
|
-
if (
|
|
118
|
+
if (motionOk) {
|
|
120
119
|
node.style.transform = 'translateY(15%)';
|
|
121
120
|
node.style.transitionTimingFunction = 'ease';
|
|
122
121
|
}
|
|
123
122
|
},
|
|
124
123
|
onEntered: (node) => {
|
|
125
|
-
if (
|
|
124
|
+
if (motionOk) node.style.transform = 'translateY(0)';
|
|
126
125
|
},
|
|
127
126
|
onExiting: (node) => {
|
|
128
|
-
if (
|
|
127
|
+
if (motionOk) {
|
|
129
128
|
let { translateX, translateY } = calculateOutAnimation(node);
|
|
130
129
|
node.style.transform = animateOutTo
|
|
131
130
|
? `scale(0.9) translate(${translateX}px,${translateY}px)`
|
package/DEV-cjs/styles.js
CHANGED
|
@@ -61,6 +61,19 @@ function useShadowRoot(templateRef, { css = '' }) {
|
|
|
61
61
|
let styleSheet = _react.useRef();
|
|
62
62
|
let latestCss = (0, _index.useLatestRef)(css);
|
|
63
63
|
let latestShadowRoot = (0, _index.useLatestRef)(shadowRoot);
|
|
64
|
+
let createStyleSheet = _react.useCallback(
|
|
65
|
+
(shadow) => {
|
|
66
|
+
if (shadow && supportsAdoptedStylesheets) {
|
|
67
|
+
let currentWindow = shadow.ownerDocument.defaultView || globalThis;
|
|
68
|
+
if (styleSheet.current instanceof currentWindow.CSSStyleSheet) return;
|
|
69
|
+
styleSheet.current = new currentWindow.CSSStyleSheet();
|
|
70
|
+
shadow.adoptedStyleSheets.push(styleSheet.current);
|
|
71
|
+
if (latestCss.current)
|
|
72
|
+
styleSheet.current.replaceSync(latestCss.current);
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
[latestCss],
|
|
76
|
+
);
|
|
64
77
|
(0, _index.useLayoutEffect)(() => {
|
|
65
78
|
let parent = templateRef.current?.parentElement;
|
|
66
79
|
if (!parent) return;
|
|
@@ -72,22 +85,23 @@ function useShadowRoot(templateRef, { css = '' }) {
|
|
|
72
85
|
parent.attachShadow({
|
|
73
86
|
mode: 'open',
|
|
74
87
|
});
|
|
75
|
-
|
|
76
|
-
let currentWindow = shadow.ownerDocument.defaultView || globalThis;
|
|
77
|
-
styleSheet.current = new currentWindow.CSSStyleSheet();
|
|
78
|
-
shadow.adoptedStyleSheets = [styleSheet.current];
|
|
79
|
-
if (latestCss.current)
|
|
80
|
-
styleSheet.current.replaceSync(latestCss.current);
|
|
81
|
-
}
|
|
88
|
+
createStyleSheet(shadow);
|
|
82
89
|
_reactdom.flushSync(() => setShadowRoot(shadow));
|
|
83
90
|
};
|
|
84
91
|
queueMicrotask(() => {
|
|
85
92
|
setupOrReuseShadowRoot();
|
|
86
93
|
});
|
|
87
94
|
return () => void setShadowRoot(null);
|
|
88
|
-
}, [templateRef,
|
|
95
|
+
}, [templateRef, createStyleSheet, latestShadowRoot]);
|
|
89
96
|
(0, _index.useLayoutEffect)(() => {
|
|
90
97
|
if (css && supportsAdoptedStylesheets) styleSheet.current?.replaceSync(css);
|
|
91
98
|
}, [css]);
|
|
99
|
+
_react.useEffect(() => {
|
|
100
|
+
let listener = () => createStyleSheet(latestShadowRoot.current);
|
|
101
|
+
window.addEventListener('appui:reparent', listener);
|
|
102
|
+
return () => {
|
|
103
|
+
window.removeEventListener('appui:reparent', listener);
|
|
104
|
+
};
|
|
105
|
+
}, [createStyleSheet, latestShadowRoot]);
|
|
92
106
|
return shadowRoot;
|
|
93
107
|
}
|
|
@@ -11,6 +11,7 @@ Object.defineProperty(exports, 'useWarningLogger', {
|
|
|
11
11
|
const _interop_require_wildcard = require('@swc/helpers/_/_interop_require_wildcard');
|
|
12
12
|
const _react = _interop_require_wildcard._(require('react'));
|
|
13
13
|
const _dev = require('../functions/dev.js');
|
|
14
|
+
const _dom = require('../functions/dom.js');
|
|
14
15
|
const _React = _react;
|
|
15
16
|
const ReactInternals =
|
|
16
17
|
_React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
|
|
@@ -18,13 +19,13 @@ const useWarningLogger = _dev.isUnitTest
|
|
|
18
19
|
? () => () => {}
|
|
19
20
|
: function () {
|
|
20
21
|
let loggedRef = _react.useRef(false);
|
|
21
|
-
let timeoutRef = _react.useRef(
|
|
22
|
+
let timeoutRef = _react.useRef(void 0);
|
|
22
23
|
let stack = ReactInternals?.ReactDebugCurrentFrame?.getCurrentStack?.();
|
|
23
24
|
let componentName = stack?.trim().split('\n')[1]?.trim();
|
|
24
25
|
let prefix = componentName ? `Warning (${componentName}):` : 'Warning:';
|
|
25
26
|
let logWarning = _react.useCallback(
|
|
26
27
|
(message) => {
|
|
27
|
-
timeoutRef.current =
|
|
28
|
+
timeoutRef.current = (0, _dom.getWindow)()?.setTimeout(() => {
|
|
28
29
|
if (!loggedRef.current) {
|
|
29
30
|
console.error(prefix, message);
|
|
30
31
|
loggedRef.current = true;
|
|
@@ -35,7 +36,8 @@ const useWarningLogger = _dev.isUnitTest
|
|
|
35
36
|
);
|
|
36
37
|
_react.useEffect(
|
|
37
38
|
() => () => {
|
|
38
|
-
if (timeoutRef.current)
|
|
39
|
+
if (timeoutRef.current)
|
|
40
|
+
(0, _dom.getWindow)()?.clearTimeout(timeoutRef.current);
|
|
39
41
|
},
|
|
40
42
|
[],
|
|
41
43
|
);
|
|
@@ -3,7 +3,7 @@ import cx from 'classnames';
|
|
|
3
3
|
import { CarouselContext } from './CarouselContext.js';
|
|
4
4
|
import {
|
|
5
5
|
getBoundedValue,
|
|
6
|
-
|
|
6
|
+
useMediaQuery,
|
|
7
7
|
useMergedRefs,
|
|
8
8
|
useResizeObserver,
|
|
9
9
|
Box,
|
|
@@ -96,18 +96,23 @@ export const CarouselDotsList = React.forwardRef((props, ref) => {
|
|
|
96
96
|
handleSlideChange,
|
|
97
97
|
],
|
|
98
98
|
);
|
|
99
|
+
let motionOk = useMediaQuery('(prefers-reduced-motion: no-preference)');
|
|
99
100
|
React.useEffect(() => {
|
|
100
101
|
let firstDot = listRef.current?.children[firstVisibleDotIndex];
|
|
101
102
|
if (!listRef.current || !firstDot) return;
|
|
102
|
-
let motionOk = getWindow()?.matchMedia(
|
|
103
|
-
'(prefers-reduced-motion: no-preference)',
|
|
104
|
-
)?.matches;
|
|
105
103
|
listRef.current.scrollTo({
|
|
106
104
|
left: firstDot.offsetLeft - listRef.current.offsetLeft,
|
|
107
105
|
behavior: motionOk && !justMounted.current ? 'smooth' : 'auto',
|
|
108
106
|
});
|
|
109
107
|
if (justMounted.current) justMounted.current = false;
|
|
110
|
-
}, [
|
|
108
|
+
}, [
|
|
109
|
+
currentIndex,
|
|
110
|
+
firstVisibleDotIndex,
|
|
111
|
+
motionOk,
|
|
112
|
+
slideCount,
|
|
113
|
+
visibleCount,
|
|
114
|
+
width,
|
|
115
|
+
]);
|
|
111
116
|
let handleKeyDown = (event) => {
|
|
112
117
|
if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey)
|
|
113
118
|
return;
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
useMergedRefs,
|
|
7
7
|
useLayoutEffect,
|
|
8
8
|
Box,
|
|
9
|
+
useMediaQuery,
|
|
9
10
|
} from '../../utils/index.js';
|
|
10
11
|
export const CarouselSlider = React.forwardRef((props, ref) => {
|
|
11
12
|
let { children, className, ...rest } = props;
|
|
@@ -30,13 +31,11 @@ export const CarouselSlider = React.forwardRef((props, ref) => {
|
|
|
30
31
|
}, [items.length, setSlideCount]);
|
|
31
32
|
let sliderRef = React.useRef(null);
|
|
32
33
|
let refs = useMergedRefs(sliderRef, ref);
|
|
34
|
+
let motionOk = useMediaQuery('(prefers-reduced-motion: no-preference)');
|
|
33
35
|
scrollToSlide.current = (slideIndex, { instant } = {}) => {
|
|
34
36
|
isManuallyUpdating.current = true;
|
|
35
37
|
let slideToShow = sliderRef.current?.children.item(slideIndex);
|
|
36
38
|
if (!sliderRef.current || !slideToShow) return;
|
|
37
|
-
let motionOk = getWindow()?.matchMedia(
|
|
38
|
-
'(prefers-reduced-motion: no-preference)',
|
|
39
|
-
)?.matches;
|
|
40
39
|
sliderRef.current.scrollTo({
|
|
41
40
|
left: slideToShow.offsetLeft - sliderRef.current.offsetLeft,
|
|
42
41
|
behavior: instant || !motionOk ? 'instant' : 'smooth',
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
useEventListener,
|
|
7
7
|
useMergedRefs,
|
|
8
8
|
Box,
|
|
9
|
+
mergeEventHandlers,
|
|
9
10
|
} from '../../utils/index.js';
|
|
10
11
|
import { Slider } from '../Slider/Slider.js';
|
|
11
12
|
import { useColorPickerContext } from './ColorPickerContext.js';
|
|
@@ -18,7 +19,14 @@ let getHorizontalPercentageOfRectangle = (rect, pointer) => {
|
|
|
18
19
|
return ((position - rect.left) / rect.width) * 100;
|
|
19
20
|
};
|
|
20
21
|
export const ColorBuilder = React.forwardRef((props, ref) => {
|
|
21
|
-
let {
|
|
22
|
+
let {
|
|
23
|
+
className,
|
|
24
|
+
colorFieldProps,
|
|
25
|
+
colorDotProps,
|
|
26
|
+
opacitySliderProps,
|
|
27
|
+
hueSliderProps,
|
|
28
|
+
...rest
|
|
29
|
+
} = props;
|
|
22
30
|
let builderRef = React.useRef();
|
|
23
31
|
let refs = useMergedRefs(builderRef, ref);
|
|
24
32
|
let {
|
|
@@ -206,54 +214,74 @@ export const ColorBuilder = React.forwardRef((props, ref) => {
|
|
|
206
214
|
React.createElement(
|
|
207
215
|
Box,
|
|
208
216
|
{
|
|
209
|
-
|
|
217
|
+
as: 'div',
|
|
218
|
+
...colorFieldProps,
|
|
219
|
+
className: cx('iui-color-field', colorFieldProps?.className),
|
|
210
220
|
style: {
|
|
211
221
|
'--iui-color-field-hue': hueColorString,
|
|
212
222
|
'--iui-color-picker-selected-color': dotColorString,
|
|
223
|
+
...colorFieldProps?.style,
|
|
213
224
|
},
|
|
214
|
-
ref: squareRef,
|
|
215
|
-
onPointerDown: (
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
225
|
+
ref: useMergedRefs(squareRef, colorFieldProps?.ref),
|
|
226
|
+
onPointerDown: mergeEventHandlers(
|
|
227
|
+
colorFieldProps?.onPointerDown,
|
|
228
|
+
(event) => {
|
|
229
|
+
event.preventDefault();
|
|
230
|
+
updateSquareValue(event, 'onClick');
|
|
231
|
+
setColorDotActive(true);
|
|
232
|
+
colorDotRef.current?.focus();
|
|
233
|
+
},
|
|
234
|
+
),
|
|
221
235
|
},
|
|
222
236
|
React.createElement(Box, {
|
|
223
|
-
|
|
237
|
+
as: 'div',
|
|
238
|
+
...colorDotProps,
|
|
239
|
+
className: cx('iui-color-dot', colorDotProps?.className),
|
|
224
240
|
style: {
|
|
225
241
|
'--iui-color-dot-inset-block': `${squareTop.toString()}% auto`,
|
|
226
242
|
'--iui-color-dot-inset-inline': `${squareLeft.toString()}% auto`,
|
|
243
|
+
...colorDotProps?.style,
|
|
227
244
|
},
|
|
228
|
-
onPointerDown: () => {
|
|
245
|
+
onPointerDown: mergeEventHandlers(colorDotProps?.onPointerDown, () => {
|
|
229
246
|
setColorDotActive(true);
|
|
230
247
|
colorDotRef.current?.focus();
|
|
231
|
-
},
|
|
232
|
-
onKeyDown:
|
|
233
|
-
|
|
248
|
+
}),
|
|
249
|
+
onKeyDown: mergeEventHandlers(
|
|
250
|
+
colorDotProps?.onKeyDown,
|
|
251
|
+
handleColorDotKeyDown,
|
|
252
|
+
),
|
|
253
|
+
onKeyUp: mergeEventHandlers(
|
|
254
|
+
colorDotProps?.onKeyUp,
|
|
255
|
+
handleColorDotKeyUp,
|
|
256
|
+
),
|
|
234
257
|
tabIndex: 0,
|
|
235
|
-
ref: colorDotRef,
|
|
258
|
+
ref: useMergedRefs(colorDotRef, colorDotProps?.ref),
|
|
236
259
|
}),
|
|
237
260
|
),
|
|
238
261
|
React.createElement(Slider, {
|
|
239
262
|
minLabel: '',
|
|
240
263
|
maxLabel: '',
|
|
241
264
|
values: [sliderValue],
|
|
242
|
-
className: 'iui-hue-slider',
|
|
243
265
|
trackDisplayMode: 'none',
|
|
266
|
+
min: 0,
|
|
267
|
+
max: 359,
|
|
268
|
+
...hueSliderProps,
|
|
269
|
+
className: cx('iui-hue-slider', hueSliderProps?.className),
|
|
244
270
|
tooltipProps: () => ({
|
|
245
271
|
visible: false,
|
|
272
|
+
...hueSliderProps?.tooltipProps,
|
|
246
273
|
}),
|
|
247
274
|
onChange: (values) => {
|
|
275
|
+
hueSliderProps?.onChange?.(values);
|
|
248
276
|
updateHueSlider(values[0], true);
|
|
249
277
|
},
|
|
250
278
|
onUpdate: (values) => {
|
|
279
|
+
hueSliderProps?.onUpdate?.(values);
|
|
251
280
|
updateHueSlider(values[0], false);
|
|
252
281
|
},
|
|
253
|
-
min: 0,
|
|
254
|
-
max: 359,
|
|
255
282
|
thumbProps: () => ({
|
|
256
283
|
'aria-label': 'Hue',
|
|
284
|
+
...hueSliderProps?.thumbProps,
|
|
257
285
|
}),
|
|
258
286
|
}),
|
|
259
287
|
showAlpha &&
|
|
@@ -261,25 +289,31 @@ export const ColorBuilder = React.forwardRef((props, ref) => {
|
|
|
261
289
|
minLabel: '',
|
|
262
290
|
maxLabel: '',
|
|
263
291
|
values: [alphaValue],
|
|
264
|
-
className: 'iui-opacity-slider',
|
|
265
292
|
trackDisplayMode: 'none',
|
|
293
|
+
min: 0,
|
|
294
|
+
max: 1,
|
|
295
|
+
step: 0.01,
|
|
296
|
+
...opacitySliderProps,
|
|
297
|
+
className: cx('iui-opacity-slider', opacitySliderProps?.className),
|
|
266
298
|
tooltipProps: () => ({
|
|
267
299
|
visible: false,
|
|
300
|
+
...opacitySliderProps?.tooltipProps,
|
|
268
301
|
}),
|
|
269
302
|
onChange: (values) => {
|
|
303
|
+
opacitySliderProps?.onChange?.(values);
|
|
270
304
|
updateOpacitySlider(values[0], true);
|
|
271
305
|
},
|
|
272
306
|
onUpdate: (values) => {
|
|
307
|
+
opacitySliderProps?.onUpdate?.(values);
|
|
273
308
|
updateOpacitySlider(values[0], false);
|
|
274
309
|
},
|
|
275
|
-
min: 0,
|
|
276
|
-
max: 1,
|
|
277
|
-
step: 0.01,
|
|
278
310
|
style: {
|
|
279
311
|
'--iui-color-picker-selected-color': hueColorString,
|
|
312
|
+
...opacitySliderProps?.style,
|
|
280
313
|
},
|
|
281
314
|
thumbProps: () => ({
|
|
282
315
|
'aria-label': 'Opacity',
|
|
316
|
+
...opacitySliderProps?.thumbProps,
|
|
283
317
|
}),
|
|
284
318
|
}),
|
|
285
319
|
);
|