@itwin/itwinui-react 1.42.0 → 1.44.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 +30 -0
- package/cjs/core/Backdrop/Backdrop.d.ts +10 -0
- package/cjs/core/Backdrop/Backdrop.js +41 -0
- package/cjs/core/Backdrop/index.d.ts +2 -0
- package/cjs/core/Backdrop/index.js +9 -0
- package/cjs/core/Breadcrumbs/Breadcrumbs.js +18 -18
- package/cjs/core/ButtonGroup/ButtonGroup.js +11 -4
- package/cjs/core/Dialog/Dialog.d.ts +41 -0
- package/cjs/core/Dialog/Dialog.js +59 -0
- package/cjs/core/Dialog/DialogBackdrop.d.ts +12 -0
- package/cjs/core/Dialog/DialogBackdrop.js +61 -0
- package/cjs/core/Dialog/DialogButtonBar.d.ts +18 -0
- package/cjs/core/Dialog/DialogButtonBar.js +50 -0
- package/cjs/core/Dialog/DialogContent.d.ts +17 -0
- package/cjs/core/Dialog/DialogContent.js +49 -0
- package/cjs/core/Dialog/DialogContext.d.ts +39 -0
- package/cjs/core/Dialog/DialogContext.js +16 -0
- package/cjs/core/Dialog/DialogMain.d.ts +36 -0
- package/cjs/core/Dialog/DialogMain.js +120 -0
- package/cjs/core/Dialog/DialogTitleBar.d.ts +34 -0
- package/cjs/core/Dialog/DialogTitleBar.js +69 -0
- package/cjs/core/Dialog/DialogTitleBarTitle.d.ts +15 -0
- package/cjs/core/Dialog/DialogTitleBarTitle.js +47 -0
- package/cjs/core/Dialog/index.d.ts +8 -0
- package/cjs/core/Dialog/index.js +10 -0
- package/cjs/core/Footer/Footer.d.ts +16 -2
- package/cjs/core/Footer/Footer.js +57 -45
- package/cjs/core/Footer/FooterItem.d.ts +8 -0
- package/cjs/core/Footer/FooterItem.js +46 -0
- package/cjs/core/Footer/FooterList.d.ts +8 -0
- package/cjs/core/Footer/FooterList.js +46 -0
- package/cjs/core/Footer/FooterSeparator.d.ts +8 -0
- package/cjs/core/Footer/FooterSeparator.js +46 -0
- package/cjs/core/Footer/index.d.ts +1 -1
- package/cjs/core/Footer/index.js +2 -1
- package/cjs/core/Menu/Menu.js +0 -3
- package/cjs/core/Modal/Modal.d.ts +4 -14
- package/cjs/core/Modal/Modal.js +9 -74
- package/cjs/core/Modal/ModalButtonBar.d.ts +1 -2
- package/cjs/core/Modal/ModalButtonBar.js +2 -39
- package/cjs/core/Modal/ModalContent.d.ts +1 -2
- package/cjs/core/Modal/ModalContent.js +2 -39
- package/cjs/core/Select/Select.d.ts +23 -8
- package/cjs/core/Select/Select.js +82 -25
- package/cjs/core/Select/SelectTag.d.ts +15 -0
- package/cjs/core/Select/SelectTag.js +48 -0
- package/cjs/core/Select/index.d.ts +1 -1
- package/cjs/core/Slider/Slider.d.ts +10 -0
- package/cjs/core/Slider/Slider.js +20 -14
- package/cjs/core/Slider/Thumb.d.ts +2 -1
- package/cjs/core/Slider/Thumb.js +5 -3
- package/cjs/core/Slider/Track.d.ts +2 -1
- package/cjs/core/Slider/Track.js +23 -4
- package/cjs/core/Table/Table.d.ts +2 -1
- package/cjs/core/Table/Table.js +8 -2
- package/cjs/core/Table/columns/actionColumn.d.ts +8 -3
- package/cjs/core/Table/columns/actionColumn.js +33 -2
- package/cjs/core/Table/hooks/useScrollToRow.d.ts +1 -1
- package/cjs/core/Table/hooks/useScrollToRow.js +3 -3
- package/cjs/core/index.d.ts +4 -2
- package/cjs/core/index.js +6 -3
- package/cjs/core/utils/components/FocusTrap.js +1 -1
- package/cjs/core/utils/components/MiddleTextTruncation.js +1 -1
- package/cjs/core/utils/hooks/useOverflow.js +4 -1
- package/esm/core/Backdrop/Backdrop.d.ts +10 -0
- package/esm/core/Backdrop/Backdrop.js +35 -0
- package/esm/core/Backdrop/index.d.ts +2 -0
- package/esm/core/Backdrop/index.js +5 -0
- package/esm/core/Breadcrumbs/Breadcrumbs.js +18 -18
- package/esm/core/ButtonGroup/ButtonGroup.js +11 -4
- package/esm/core/Dialog/Dialog.d.ts +41 -0
- package/esm/core/Dialog/Dialog.js +53 -0
- package/esm/core/Dialog/DialogBackdrop.d.ts +12 -0
- package/esm/core/Dialog/DialogBackdrop.js +55 -0
- package/esm/core/Dialog/DialogButtonBar.d.ts +18 -0
- package/esm/core/Dialog/DialogButtonBar.js +44 -0
- package/esm/core/Dialog/DialogContent.d.ts +17 -0
- package/esm/core/Dialog/DialogContent.js +43 -0
- package/esm/core/Dialog/DialogContext.d.ts +39 -0
- package/esm/core/Dialog/DialogContext.js +9 -0
- package/esm/core/Dialog/DialogMain.d.ts +36 -0
- package/esm/core/Dialog/DialogMain.js +114 -0
- package/esm/core/Dialog/DialogTitleBar.d.ts +34 -0
- package/esm/core/Dialog/DialogTitleBar.js +63 -0
- package/esm/core/Dialog/DialogTitleBarTitle.d.ts +15 -0
- package/esm/core/Dialog/DialogTitleBarTitle.js +41 -0
- package/esm/core/Dialog/index.d.ts +8 -0
- package/esm/core/Dialog/index.js +6 -0
- package/esm/core/Footer/Footer.d.ts +16 -2
- package/esm/core/Footer/Footer.js +56 -43
- package/esm/core/Footer/FooterItem.d.ts +8 -0
- package/esm/core/Footer/FooterItem.js +39 -0
- package/esm/core/Footer/FooterList.d.ts +8 -0
- package/esm/core/Footer/FooterList.js +39 -0
- package/esm/core/Footer/FooterSeparator.d.ts +8 -0
- package/esm/core/Footer/FooterSeparator.js +39 -0
- package/esm/core/Footer/index.d.ts +1 -1
- package/esm/core/Footer/index.js +1 -1
- package/esm/core/Menu/Menu.js +0 -3
- package/esm/core/Modal/Modal.d.ts +4 -14
- package/esm/core/Modal/Modal.js +10 -75
- package/esm/core/Modal/ModalButtonBar.d.ts +1 -2
- package/esm/core/Modal/ModalButtonBar.js +2 -35
- package/esm/core/Modal/ModalContent.d.ts +1 -2
- package/esm/core/Modal/ModalContent.js +2 -35
- package/esm/core/Select/Select.d.ts +23 -8
- package/esm/core/Select/Select.js +83 -26
- package/esm/core/Select/SelectTag.d.ts +15 -0
- package/esm/core/Select/SelectTag.js +41 -0
- package/esm/core/Select/index.d.ts +1 -1
- package/esm/core/Slider/Slider.d.ts +10 -0
- package/esm/core/Slider/Slider.js +20 -14
- package/esm/core/Slider/Thumb.d.ts +2 -1
- package/esm/core/Slider/Thumb.js +5 -3
- package/esm/core/Slider/Track.d.ts +2 -1
- package/esm/core/Slider/Track.js +23 -4
- package/esm/core/Table/Table.d.ts +2 -1
- package/esm/core/Table/Table.js +8 -2
- package/esm/core/Table/columns/actionColumn.d.ts +8 -3
- package/esm/core/Table/columns/actionColumn.js +33 -2
- package/esm/core/Table/hooks/useScrollToRow.d.ts +1 -1
- package/esm/core/Table/hooks/useScrollToRow.js +3 -3
- package/esm/core/index.d.ts +4 -2
- package/esm/core/index.js +2 -1
- package/esm/core/utils/components/FocusTrap.js +1 -1
- package/esm/core/utils/components/MiddleTextTruncation.js +1 -1
- package/esm/core/utils/hooks/useOverflow.js +4 -1
- package/package.json +6 -5
|
@@ -45,9 +45,13 @@ var utils_1 = require("../utils");
|
|
|
45
45
|
require("@itwin/itwinui-css/css/slider.css");
|
|
46
46
|
var Track_1 = require("./Track");
|
|
47
47
|
var Thumb_1 = require("./Thumb");
|
|
48
|
-
var getPercentageOfRectangle = function (rect,
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
var getPercentageOfRectangle = function (rect, pointerX, pointerY, orientation) {
|
|
49
|
+
if (orientation === 'horizontal') {
|
|
50
|
+
var position_1 = (0, utils_1.getBoundedValue)(pointerX, rect.left, rect.right);
|
|
51
|
+
return (position_1 - rect.left) / rect.width;
|
|
52
|
+
}
|
|
53
|
+
var position = (0, utils_1.getBoundedValue)(pointerY, rect.top, rect.bottom);
|
|
54
|
+
return (rect.bottom - position) / rect.height;
|
|
51
55
|
};
|
|
52
56
|
var getClosestValueIndex = function (values, pointerValue) {
|
|
53
57
|
if (1 === values.length) {
|
|
@@ -94,20 +98,20 @@ var focusThumb = function (sliderContainer, activeIndex) {
|
|
|
94
98
|
*/
|
|
95
99
|
exports.Slider = react_1.default.forwardRef(function (props, ref) {
|
|
96
100
|
var _a, _b;
|
|
97
|
-
var _c = props.min, min = _c === void 0 ? 0 : _c, _d = props.max, max = _d === void 0 ? 100 : _d, values = props.values, _e = props.step, step = _e === void 0 ? 1 : _e, _f = props.setFocus, setFocus = _f === void 0 ? false : _f, tooltipProps = props.tooltipProps, _g = props.disabled, disabled = _g === void 0 ? false : _g, tickLabels = props.tickLabels, minLabel = props.minLabel, maxLabel = props.maxLabel, _h = props.trackDisplayMode, trackDisplayMode = _h === void 0 ? 'auto' : _h, _j = props.thumbMode, thumbMode = _j === void 0 ? 'inhibit-crossing' : _j, onChange = props.onChange, onUpdate = props.onUpdate, thumbProps = props.thumbProps, className = props.className, railContainerProps = props.railContainerProps, rest = __rest(props, ["min", "max", "values", "step", "setFocus", "tooltipProps", "disabled", "tickLabels", "minLabel", "maxLabel", "trackDisplayMode", "thumbMode", "onChange", "onUpdate", "thumbProps", "className", "railContainerProps"]);
|
|
98
|
-
var
|
|
101
|
+
var _c = props.min, min = _c === void 0 ? 0 : _c, _d = props.max, max = _d === void 0 ? 100 : _d, values = props.values, _e = props.step, step = _e === void 0 ? 1 : _e, _f = props.setFocus, setFocus = _f === void 0 ? false : _f, tooltipProps = props.tooltipProps, _g = props.disabled, disabled = _g === void 0 ? false : _g, tickLabels = props.tickLabels, minLabel = props.minLabel, maxLabel = props.maxLabel, _h = props.trackDisplayMode, trackDisplayMode = _h === void 0 ? 'auto' : _h, _j = props.thumbMode, thumbMode = _j === void 0 ? 'inhibit-crossing' : _j, onChange = props.onChange, onUpdate = props.onUpdate, thumbProps = props.thumbProps, className = props.className, railContainerProps = props.railContainerProps, _k = props.orientation, orientation = _k === void 0 ? 'horizontal' : _k, rest = __rest(props, ["min", "max", "values", "step", "setFocus", "tooltipProps", "disabled", "tickLabels", "minLabel", "maxLabel", "trackDisplayMode", "thumbMode", "onChange", "onUpdate", "thumbProps", "className", "railContainerProps", "orientation"]);
|
|
102
|
+
var _l = react_1.default.useState(values), currentValues = _l[0], setCurrentValues = _l[1];
|
|
99
103
|
react_1.default.useEffect(function () {
|
|
100
104
|
setCurrentValues(values);
|
|
101
105
|
}, [values]);
|
|
102
|
-
var
|
|
106
|
+
var _m = react_1.default.useState(function () { return minLabel !== null && minLabel !== void 0 ? minLabel : min.toString(); }), minValueLabel = _m[0], setMinValueLabel = _m[1];
|
|
103
107
|
react_1.default.useEffect(function () {
|
|
104
108
|
setMinValueLabel(minLabel !== null && minLabel !== void 0 ? minLabel : min.toString());
|
|
105
109
|
}, [minLabel, min]);
|
|
106
|
-
var
|
|
110
|
+
var _o = react_1.default.useState(function () { return maxLabel !== null && maxLabel !== void 0 ? maxLabel : max.toString(); }), maxValueLabel = _o[0], setMaxValueLabel = _o[1];
|
|
107
111
|
react_1.default.useEffect(function () {
|
|
108
112
|
setMaxValueLabel(maxLabel !== null && maxLabel !== void 0 ? maxLabel : max.toString());
|
|
109
113
|
}, [maxLabel, max]);
|
|
110
|
-
var
|
|
114
|
+
var _p = react_1.default.useState(function () { return getDefaultTrackDisplay(trackDisplayMode, currentValues); }), trackDisplay = _p[0], setTrackDisplay = _p[1];
|
|
111
115
|
react_1.default.useEffect(function () {
|
|
112
116
|
setTrackDisplay(getDefaultTrackDisplay(trackDisplayMode, currentValues));
|
|
113
117
|
}, [trackDisplayMode, currentValues]);
|
|
@@ -133,10 +137,10 @@ exports.Slider = react_1.default.forwardRef(function (props, ref) {
|
|
|
133
137
|
}
|
|
134
138
|
return [min, max];
|
|
135
139
|
}, [max, min, step, thumbMode, currentValues]);
|
|
136
|
-
var
|
|
140
|
+
var _q = react_1.default.useState(undefined), activeThumbIndex = _q[0], setActiveThumbIndex = _q[1];
|
|
137
141
|
var updateThumbValue = react_1.default.useCallback(function (event, callbackType) {
|
|
138
142
|
if (containerRef.current && undefined !== activeThumbIndex) {
|
|
139
|
-
var percent = getPercentageOfRectangle(containerRef.current.getBoundingClientRect(), event.clientX);
|
|
143
|
+
var percent = getPercentageOfRectangle(containerRef.current.getBoundingClientRect(), event.clientX, event.clientY, orientation);
|
|
140
144
|
var pointerValue = min + (max - min) * percent;
|
|
141
145
|
pointerValue = roundValueToClosestStep(pointerValue, step, min);
|
|
142
146
|
var _a = getAllowableThumbRange(activeThumbIndex), minVal = _a[0], maxVal = _a[1];
|
|
@@ -162,6 +166,7 @@ exports.Slider = react_1.default.forwardRef(function (props, ref) {
|
|
|
162
166
|
currentValues,
|
|
163
167
|
onUpdate,
|
|
164
168
|
onChange,
|
|
169
|
+
orientation,
|
|
165
170
|
]);
|
|
166
171
|
var handlePointerMove = react_1.default.useCallback(function (event) {
|
|
167
172
|
if (activeThumbIndex === undefined) {
|
|
@@ -195,7 +200,7 @@ exports.Slider = react_1.default.forwardRef(function (props, ref) {
|
|
|
195
200
|
}, [activeThumbIndex, updateThumbValue]);
|
|
196
201
|
var handlePointerDownOnSlider = react_1.default.useCallback(function (event) {
|
|
197
202
|
if (containerRef.current) {
|
|
198
|
-
var percent = getPercentageOfRectangle(containerRef.current.getBoundingClientRect(), event.clientX);
|
|
203
|
+
var percent = getPercentageOfRectangle(containerRef.current.getBoundingClientRect(), event.clientX, event.clientY, orientation);
|
|
199
204
|
var pointerValue = min + (max - min) * percent;
|
|
200
205
|
pointerValue = roundValueToClosestStep(pointerValue, step, min);
|
|
201
206
|
var closestValueIndex = getClosestValueIndex(currentValues, pointerValue);
|
|
@@ -221,6 +226,7 @@ exports.Slider = react_1.default.forwardRef(function (props, ref) {
|
|
|
221
226
|
getAllowableThumbRange,
|
|
222
227
|
onChange,
|
|
223
228
|
onUpdate,
|
|
229
|
+
orientation,
|
|
224
230
|
]);
|
|
225
231
|
(0, utils_1.useEventListener)('pointermove', handlePointerMove, (_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.ownerDocument);
|
|
226
232
|
(0, utils_1.useEventListener)('pointerup', handlePointerUp, (_b = containerRef.current) === null || _b === void 0 ? void 0 : _b.ownerDocument);
|
|
@@ -241,7 +247,7 @@ exports.Slider = react_1.default.forwardRef(function (props, ref) {
|
|
|
241
247
|
? outProps.content
|
|
242
248
|
: formatNumberValue(val, step, getNumDecimalPlaces) });
|
|
243
249
|
}, [getNumDecimalPlaces, step, tooltipProps]);
|
|
244
|
-
return (react_1.default.createElement("div", __assign({ ref: ref, className: (0, classnames_1.default)('iui-slider-component-container', { 'iui-disabled': disabled }, className) }, rest),
|
|
250
|
+
return (react_1.default.createElement("div", __assign({ ref: ref, className: (0, classnames_1.default)('iui-slider-component-container', "iui-slider-".concat(orientation), { 'iui-disabled': disabled }, className) }, rest),
|
|
245
251
|
minValueLabel && (react_1.default.createElement("span", { className: 'iui-slider-min' }, minValueLabel)),
|
|
246
252
|
react_1.default.createElement("div", __assign({ ref: containerRef, className: (0, classnames_1.default)('iui-slider-container', {
|
|
247
253
|
'iui-grabbing': undefined !== activeThumbIndex,
|
|
@@ -251,9 +257,9 @@ exports.Slider = react_1.default.forwardRef(function (props, ref) {
|
|
|
251
257
|
var _a;
|
|
252
258
|
var _b = getAllowableThumbRange(index), minVal = _b[0], maxVal = _b[1];
|
|
253
259
|
var thisThumbProps = thumbProps === null || thumbProps === void 0 ? void 0 : thumbProps(index);
|
|
254
|
-
return (react_1.default.createElement(Thumb_1.Thumb, { key: (_a = thisThumbProps === null || thisThumbProps === void 0 ? void 0 : thisThumbProps.id) !== null && _a !== void 0 ? _a : index, index: index, disabled: disabled, isActive: activeThumbIndex === index, onThumbActivated: onThumbActivated, onThumbValueChanged: onThumbValueChanged, minVal: minVal, maxVal: maxVal, value: thumbValue, tooltipProps: generateTooltipProps(index, thumbValue), thumbProps: thisThumbProps, step: step, sliderMin: min, sliderMax: max }));
|
|
260
|
+
return (react_1.default.createElement(Thumb_1.Thumb, { key: (_a = thisThumbProps === null || thisThumbProps === void 0 ? void 0 : thisThumbProps.id) !== null && _a !== void 0 ? _a : index, index: index, disabled: disabled, isActive: activeThumbIndex === index, onThumbActivated: onThumbActivated, onThumbValueChanged: onThumbValueChanged, minVal: minVal, maxVal: maxVal, value: thumbValue, tooltipProps: generateTooltipProps(index, thumbValue), thumbProps: thisThumbProps, step: step, sliderMin: min, sliderMax: max, orientation: orientation }));
|
|
255
261
|
}),
|
|
256
|
-
react_1.default.createElement(Track_1.Track, { trackDisplayMode: trackDisplay, sliderMin: min, sliderMax: max, values: currentValues }),
|
|
262
|
+
react_1.default.createElement(Track_1.Track, { trackDisplayMode: trackDisplay, sliderMin: min, sliderMax: max, values: currentValues, orientation: orientation }),
|
|
257
263
|
tickMarkArea),
|
|
258
264
|
maxValueLabel && (react_1.default.createElement("span", { className: 'iui-slider-max' }, maxValueLabel))));
|
|
259
265
|
});
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { TooltipProps } from '../Tooltip';
|
|
3
|
+
import { SliderProps } from './Slider';
|
|
3
4
|
export declare type ThumbProps = {
|
|
4
5
|
/**
|
|
5
6
|
* Thumb value.
|
|
@@ -53,7 +54,7 @@ export declare type ThumbProps = {
|
|
|
53
54
|
* Additional props for Thumb.
|
|
54
55
|
*/
|
|
55
56
|
thumbProps?: React.HTMLAttributes<HTMLDivElement>;
|
|
56
|
-
}
|
|
57
|
+
} & Pick<SliderProps, 'orientation'>;
|
|
57
58
|
/**
|
|
58
59
|
* Thumb is a local component used to show and modify the values maintained by the Slider.
|
|
59
60
|
* Only one Thumb can be active at a time. A Thumb is made active when the user selects
|
package/cjs/core/Slider/Thumb.js
CHANGED
|
@@ -39,7 +39,7 @@ var Tooltip_1 = require("../Tooltip");
|
|
|
39
39
|
* it with pointer. Whenever a Thumb is active, focused, or hovered its tooltip is shown.
|
|
40
40
|
*/
|
|
41
41
|
var Thumb = function (props) {
|
|
42
|
-
var value = props.value, index = props.index, minVal = props.minVal, maxVal = props.maxVal, step = props.step, sliderMin = props.sliderMin, sliderMax = props.sliderMax, isActive = props.isActive, onThumbActivated = props.onThumbActivated, onThumbValueChanged = props.onThumbValueChanged, tooltipProps = props.tooltipProps, thumbProps = props.thumbProps, disabled = props.disabled;
|
|
42
|
+
var value = props.value, index = props.index, minVal = props.minVal, maxVal = props.maxVal, step = props.step, sliderMin = props.sliderMin, sliderMax = props.sliderMax, isActive = props.isActive, onThumbActivated = props.onThumbActivated, onThumbValueChanged = props.onThumbValueChanged, tooltipProps = props.tooltipProps, thumbProps = props.thumbProps, disabled = props.disabled, orientation = props.orientation;
|
|
43
43
|
var thumbRef = react_1.default.useRef(null);
|
|
44
44
|
var handleOnKeyDown = react_1.default.useCallback(function (event) {
|
|
45
45
|
if (disabled || event.altKey) {
|
|
@@ -79,7 +79,7 @@ var Thumb = function (props) {
|
|
|
79
79
|
}
|
|
80
80
|
return value;
|
|
81
81
|
}, [sliderMax, sliderMin, value]);
|
|
82
|
-
var
|
|
82
|
+
var lowPercent = react_1.default.useMemo(function () {
|
|
83
83
|
if (sliderMax === sliderMin) {
|
|
84
84
|
return 0;
|
|
85
85
|
}
|
|
@@ -87,6 +87,8 @@ var Thumb = function (props) {
|
|
|
87
87
|
}, [adjustedValue, sliderMax, sliderMin]);
|
|
88
88
|
var _c = thumbProps || {}, style = _c.style, className = _c.className, rest = __rest(_c, ["style", "className"]);
|
|
89
89
|
return (react_1.default.createElement(Tooltip_1.Tooltip, __assign({ visible: isActive || hasFocus || isHovered, placement: 'top' }, tooltipProps),
|
|
90
|
-
react_1.default.createElement("div", __assign({}, rest, { "data-index": index, ref: thumbRef, style: __assign(__assign({}, style),
|
|
90
|
+
react_1.default.createElement("div", __assign({}, rest, { "data-index": index, ref: thumbRef, style: __assign(__assign({}, style), (orientation === 'horizontal'
|
|
91
|
+
? { left: "".concat(lowPercent, "%") }
|
|
92
|
+
: { bottom: "".concat(lowPercent, "%") })), className: (0, classnames_1.default)('iui-slider-thumb', { 'iui-active': isActive }, className), role: 'slider', tabIndex: disabled ? undefined : 0, "aria-valuemin": minVal, "aria-valuenow": value, "aria-valuemax": maxVal, "aria-disabled": disabled, onPointerDown: handlePointerDownOnThumb, onKeyDown: handleOnKeyDown, onFocus: function () { return setHasFocus(true); }, onBlur: function () { return setHasFocus(false); }, onMouseEnter: function () { return setIsHovered(true); }, onMouseLeave: function () { return setIsHovered(false); } }))));
|
|
91
93
|
};
|
|
92
94
|
exports.Thumb = Thumb;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import { TrackDisplayMode } from './Slider';
|
|
2
|
+
import { SliderProps, TrackDisplayMode } from './Slider';
|
|
3
3
|
export declare type TrackProps = {
|
|
4
4
|
trackDisplayMode: TrackDisplayMode;
|
|
5
5
|
sliderMin: number;
|
|
6
6
|
sliderMax: number;
|
|
7
7
|
values: number[];
|
|
8
|
+
orientation: SliderProps['orientation'];
|
|
8
9
|
};
|
|
9
10
|
/**
|
|
10
11
|
* Track displays color segments above Rail. Which, if any, segments that are
|
package/cjs/core/Slider/Track.js
CHANGED
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
2
13
|
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
3
14
|
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
4
15
|
if (ar || !(i in from)) {
|
|
@@ -50,7 +61,7 @@ function generateSegments(values, min, max) {
|
|
|
50
61
|
* colorized is based on `trackDisplayMode`.
|
|
51
62
|
*/
|
|
52
63
|
var Track = function (props) {
|
|
53
|
-
var trackDisplayMode = props.trackDisplayMode, sliderMin = props.sliderMin, sliderMax = props.sliderMax, values = props.values;
|
|
64
|
+
var trackDisplayMode = props.trackDisplayMode, sliderMin = props.sliderMin, sliderMax = props.sliderMax, values = props.values, orientation = props.orientation;
|
|
54
65
|
var _a = react_1.default.useState(function () {
|
|
55
66
|
return generateSegments(values, sliderMin, sliderMax);
|
|
56
67
|
}), segments = _a[0], setSegments = _a[1];
|
|
@@ -59,14 +70,22 @@ var Track = function (props) {
|
|
|
59
70
|
}, [values, sliderMin, sliderMax]);
|
|
60
71
|
return (react_1.default.createElement(react_1.default.Fragment, null, 'none' !== trackDisplayMode &&
|
|
61
72
|
segments.map(function (segment, index) {
|
|
62
|
-
var
|
|
73
|
+
var lowPercent = segment.left >= sliderMin && sliderMax !== sliderMin
|
|
63
74
|
? (100.0 * (segment.left - sliderMin)) / (sliderMax - sliderMin)
|
|
64
75
|
: 0;
|
|
65
|
-
var
|
|
76
|
+
var highPercent = segment.right >= sliderMin && sliderMax !== sliderMin
|
|
66
77
|
? 100.0 -
|
|
67
78
|
(100.0 * (segment.right - sliderMin)) / (sliderMax - sliderMin)
|
|
68
79
|
: 100;
|
|
69
|
-
return (react_1.default.createElement(react_1.default.Fragment, { key: index }, shouldDisplaySegment(index, trackDisplayMode) ? (react_1.default.createElement("div", { className: 'iui-slider-track', style: {
|
|
80
|
+
return (react_1.default.createElement(react_1.default.Fragment, { key: index }, shouldDisplaySegment(index, trackDisplayMode) ? (react_1.default.createElement("div", { className: 'iui-slider-track', style: __assign({}, (orientation === 'horizontal'
|
|
81
|
+
? {
|
|
82
|
+
left: "".concat(lowPercent, "%"),
|
|
83
|
+
right: "".concat(highPercent, "%"),
|
|
84
|
+
}
|
|
85
|
+
: {
|
|
86
|
+
top: "".concat(highPercent, "%"),
|
|
87
|
+
bottom: "".concat(lowPercent, "%"),
|
|
88
|
+
})) })) : null));
|
|
70
89
|
})));
|
|
71
90
|
};
|
|
72
91
|
exports.Track = Track;
|
|
@@ -185,7 +185,8 @@ export declare type TableProps<T extends Record<string, unknown> = Record<string
|
|
|
185
185
|
/**
|
|
186
186
|
* Function that returns index of the row that you want to scroll to.
|
|
187
187
|
*
|
|
188
|
-
*
|
|
188
|
+
* When using with lazy-loading table, you need to take care that row is already loaded.
|
|
189
|
+
* It doesn't work with paginated tables.
|
|
189
190
|
* @beta
|
|
190
191
|
* @example
|
|
191
192
|
* <Table
|
package/cjs/core/Table/Table.js
CHANGED
|
@@ -333,7 +333,12 @@ var Table = function (props) {
|
|
|
333
333
|
className: (0, classnames_1.default)('iui-table', (_a = {}, _a["iui-".concat(density)] = density !== 'default', _a), className),
|
|
334
334
|
style: __assign({ minWidth: 0 }, style),
|
|
335
335
|
}), ariaDataAttributes),
|
|
336
|
-
react_1.default.createElement("div", { className: 'iui-table-header-wrapper', ref: headerRef
|
|
336
|
+
react_1.default.createElement("div", { className: 'iui-table-header-wrapper', ref: headerRef, onScroll: function () {
|
|
337
|
+
if (headerRef.current && bodyRef.current) {
|
|
338
|
+
bodyRef.current.scrollLeft = headerRef.current.scrollLeft;
|
|
339
|
+
updateStickyState();
|
|
340
|
+
}
|
|
341
|
+
} },
|
|
337
342
|
react_1.default.createElement("div", { className: 'iui-table-header' }, headerGroups.slice(1).map(function (headerGroup) {
|
|
338
343
|
var headerGroupProps = headerGroup.getHeaderGroupProps({
|
|
339
344
|
className: 'iui-row',
|
|
@@ -354,7 +359,8 @@ var Table = function (props) {
|
|
|
354
359
|
(showFilterButton(column) ||
|
|
355
360
|
showSortButton(column)) && (react_1.default.createElement("div", { className: 'iui-table-header-actions-container' },
|
|
356
361
|
showFilterButton(column) && (react_1.default.createElement(filters_1.FilterToggle, { column: column, ownerDocument: ownerDocument })),
|
|
357
|
-
showSortButton(column) && (react_1.default.createElement("div", { className: 'iui-cell-end-icon' }, column.
|
|
362
|
+
showSortButton(column) && (react_1.default.createElement("div", { className: 'iui-cell-end-icon' }, column.isSortedDesc ||
|
|
363
|
+
(!column.isSorted && column.sortDescFirst) ? (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 })))))),
|
|
358
364
|
isResizable &&
|
|
359
365
|
column.isResizerVisible &&
|
|
360
366
|
index !== headerGroup.headers.length - 1 && (react_1.default.createElement("div", __assign({}, column.getResizerProps(), { className: 'iui-resizer' }),
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { HeaderProps } from 'react-table';
|
|
3
|
+
import { DropdownMenuProps } from '../../DropdownMenu';
|
|
4
|
+
declare type ActionColumnProps = {
|
|
5
|
+
columnManager?: boolean | {
|
|
6
|
+
dropdownMenuProps: Omit<DropdownMenuProps, 'menuItems' | 'children'>;
|
|
7
|
+
};
|
|
8
|
+
};
|
|
3
9
|
/**
|
|
4
10
|
* Action column that adds column manager to the Table header.
|
|
5
11
|
* It is recommended to add this column to the end of the Table
|
|
@@ -19,9 +25,7 @@ import { HeaderProps } from 'react-table';
|
|
|
19
25
|
* ),
|
|
20
26
|
* },
|
|
21
27
|
*/
|
|
22
|
-
export declare const ActionColumn: <T extends Record<string, unknown>>({ columnManager, }?: {
|
|
23
|
-
columnManager?: boolean | undefined;
|
|
24
|
-
}) => {
|
|
28
|
+
export declare const ActionColumn: <T extends Record<string, unknown>>({ columnManager, }?: ActionColumnProps) => {
|
|
25
29
|
id: string;
|
|
26
30
|
disableResizing: boolean;
|
|
27
31
|
disableGroupBy: boolean;
|
|
@@ -33,3 +37,4 @@ export declare const ActionColumn: <T extends Record<string, unknown>>({ columnM
|
|
|
33
37
|
disableReordering: boolean;
|
|
34
38
|
Header: ({ allColumns, dispatch, state }: HeaderProps<T>) => JSX.Element | null;
|
|
35
39
|
};
|
|
40
|
+
export {};
|
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
2
13
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
14
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
15
|
};
|
|
@@ -17,6 +28,7 @@ var Menu_1 = require("../../Menu");
|
|
|
17
28
|
var Table_1 = require("../Table");
|
|
18
29
|
var selectionColumn_1 = require("./selectionColumn");
|
|
19
30
|
var expanderColumn_1 = require("./expanderColumn");
|
|
31
|
+
var classnames_1 = __importDefault(require("classnames"));
|
|
20
32
|
var ACTION_CELL_ID = 'iui-table-action';
|
|
21
33
|
/**
|
|
22
34
|
* Action column that adds column manager to the Table header.
|
|
@@ -52,6 +64,7 @@ var ActionColumn = function (_a) {
|
|
|
52
64
|
Header: function (_a) {
|
|
53
65
|
var allColumns = _a.allColumns, dispatch = _a.dispatch, state = _a.state;
|
|
54
66
|
var _b = react_1.default.useState(false), isOpen = _b[0], setIsOpen = _b[1];
|
|
67
|
+
var buttonRef = react_1.default.useRef(null);
|
|
55
68
|
if (!columnManager) {
|
|
56
69
|
return null;
|
|
57
70
|
}
|
|
@@ -77,13 +90,31 @@ var ActionColumn = function (_a) {
|
|
|
77
90
|
}
|
|
78
91
|
// Triggers an update to resize the widths of all visible columns
|
|
79
92
|
dispatch({ type: Table_1.tableResizeStartAction });
|
|
93
|
+
// If some columns were resized and some columns visibility was enabled, then horizontal scrollbar appears
|
|
94
|
+
// and table is scrolled to the very left which means our visibility dropdown menu is not visible.
|
|
95
|
+
// So for better UX we need to scroll to that dropdown menu.
|
|
96
|
+
queueMicrotask(function () {
|
|
97
|
+
var _a;
|
|
98
|
+
(_a = buttonRef.current) === null || _a === void 0 ? void 0 : _a.scrollIntoView();
|
|
99
|
+
});
|
|
80
100
|
};
|
|
81
101
|
return (react_1.default.createElement(Menu_1.MenuItem, { key: column.id, icon: react_1.default.createElement(Checkbox_1.Checkbox, { checked: checked, disabled: column.disableToggleVisibility, onClick: function (e) { return e.stopPropagation(); }, onChange: onClick, "aria-labelledby": "iui-column-".concat(column.id) }), onClick: onClick, disabled: column.disableToggleVisibility },
|
|
82
102
|
react_1.default.createElement("div", { id: "iui-column-".concat(column.id) }, column.render('Header'))));
|
|
83
103
|
});
|
|
84
104
|
};
|
|
85
|
-
|
|
86
|
-
|
|
105
|
+
var dropdownMenuProps = typeof columnManager !== 'boolean'
|
|
106
|
+
? columnManager.dropdownMenuProps
|
|
107
|
+
: {};
|
|
108
|
+
return (react_1.default.createElement(DropdownMenu_1.DropdownMenu, __assign({}, dropdownMenuProps, { menuItems: headerCheckBoxes, onHide: function (i) {
|
|
109
|
+
var _a;
|
|
110
|
+
setIsOpen(false);
|
|
111
|
+
(_a = dropdownMenuProps.onHide) === null || _a === void 0 ? void 0 : _a.call(dropdownMenuProps, i);
|
|
112
|
+
}, onShow: function (i) {
|
|
113
|
+
var _a;
|
|
114
|
+
setIsOpen(true);
|
|
115
|
+
(_a = dropdownMenuProps.onShow) === null || _a === void 0 ? void 0 : _a.call(dropdownMenuProps, i);
|
|
116
|
+
}, style: __assign({ maxHeight: '315px' }, dropdownMenuProps.style), className: (0, classnames_1.default)('iui-scroll', dropdownMenuProps.className) }),
|
|
117
|
+
react_1.default.createElement(IconButton_1.IconButton, { styleType: 'borderless', isActive: isOpen, ref: buttonRef },
|
|
87
118
|
react_1.default.createElement(ColumnManager_1.default, null))));
|
|
88
119
|
},
|
|
89
120
|
};
|
|
@@ -7,5 +7,5 @@ declare type ScrollToRow<T extends Record<string, unknown>> = {
|
|
|
7
7
|
declare type ScrollToRowProps<T extends Record<string, unknown>> = TableProps<T> & {
|
|
8
8
|
page: Row<T>[];
|
|
9
9
|
};
|
|
10
|
-
export declare function useScrollToRow<T extends Record<string, unknown>>({ data, enableVirtualization, page, paginatorRenderer, scrollToRow,
|
|
10
|
+
export declare function useScrollToRow<T extends Record<string, unknown>>({ data, enableVirtualization, page, paginatorRenderer, scrollToRow, }: ScrollToRowProps<T>): ScrollToRow<T>;
|
|
11
11
|
export {};
|
|
@@ -10,7 +10,7 @@ exports.useScrollToRow = void 0;
|
|
|
10
10
|
*--------------------------------------------------------------------------------------------*/
|
|
11
11
|
var react_1 = __importDefault(require("react"));
|
|
12
12
|
function useScrollToRow(_a) {
|
|
13
|
-
var data = _a.data, enableVirtualization = _a.enableVirtualization, page = _a.page, paginatorRenderer = _a.paginatorRenderer, scrollToRow = _a.scrollToRow
|
|
13
|
+
var data = _a.data, enableVirtualization = _a.enableVirtualization, page = _a.page, paginatorRenderer = _a.paginatorRenderer, scrollToRow = _a.scrollToRow;
|
|
14
14
|
var rowRefs = react_1.default.useRef({});
|
|
15
15
|
// Refs prevents from having `page` and `data` as dependencies
|
|
16
16
|
// therefore we avoid unnecessary scroll to row.
|
|
@@ -21,12 +21,12 @@ function useScrollToRow(_a) {
|
|
|
21
21
|
// For virtualized tables, all we need to do is pass the index of the item
|
|
22
22
|
// to the VirtualScroll component
|
|
23
23
|
var scrollToIndex = react_1.default.useMemo(function () {
|
|
24
|
-
if (!scrollToRow || paginatorRenderer
|
|
24
|
+
if (!scrollToRow || paginatorRenderer) {
|
|
25
25
|
return undefined;
|
|
26
26
|
}
|
|
27
27
|
var index = scrollToRow(pageRef.current, dataRef.current);
|
|
28
28
|
return index < 0 ? undefined : index;
|
|
29
|
-
}, [
|
|
29
|
+
}, [paginatorRenderer, scrollToRow]);
|
|
30
30
|
// For non-virtualized tables, we need to add a ref to each row
|
|
31
31
|
// and scroll to the element
|
|
32
32
|
react_1.default.useEffect(function () {
|
package/cjs/core/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export { Alert } from './Alert';
|
|
2
2
|
export type { AlertProps } from './Alert';
|
|
3
|
+
export { Backdrop } from './Backdrop';
|
|
4
|
+
export type { BackdropProps } from './Backdrop';
|
|
3
5
|
export { Badge } from './Badge';
|
|
4
6
|
export type { BadgeProps } from './Badge';
|
|
5
7
|
export { Breadcrumbs } from './Breadcrumbs';
|
|
@@ -28,7 +30,7 @@ export { Fieldset } from './Fieldset';
|
|
|
28
30
|
export type { FieldsetProps } from './Fieldset';
|
|
29
31
|
export { FileUpload, FileUploadTemplate } from './FileUpload';
|
|
30
32
|
export type { FileUploadProps, FileUploadTemplateProps } from './FileUpload';
|
|
31
|
-
export { Footer } from './Footer';
|
|
33
|
+
export { Footer, defaultFooterElements } from './Footer';
|
|
32
34
|
export type { FooterProps, FooterElement, TitleTranslations } from './Footer';
|
|
33
35
|
export { Header, HeaderBreadcrumbs, HeaderButton, HeaderLogo } from './Header';
|
|
34
36
|
export type { HeaderProps, HeaderBreadcrumbsProps, HeaderButtonProps, HeaderLogoProps, } from './Header';
|
|
@@ -59,7 +61,7 @@ export type { RadioProps } from './Radio';
|
|
|
59
61
|
export { RadioTile, RadioTileGroup } from './RadioTiles';
|
|
60
62
|
export type { RadioTileGroupProps, RadioTileProps } from './RadioTiles';
|
|
61
63
|
export { Select } from './Select';
|
|
62
|
-
export type { SelectProps, SelectOption, ItemRendererProps } from './Select';
|
|
64
|
+
export type { SelectProps, SelectOption, ItemRendererProps, SelectValueChangeEvent, } from './Select';
|
|
63
65
|
export { SideNavigation, SidenavButton, SidenavSubmenu, SidenavSubmenuHeader, } from './SideNavigation';
|
|
64
66
|
export type { SideNavigationProps, SidenavButtonProps, SidenavSubmenuProps, SidenavSubmenuHeaderProps, } from './SideNavigation';
|
|
65
67
|
export { SkipToContentLink } from './SkipToContentLink';
|
package/cjs/core/index.js
CHANGED
|
@@ -3,15 +3,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
7
|
-
exports.
|
|
8
|
-
exports.MiddleTextTruncation = exports.ColorValue = exports.useTheme = exports.getUserColor = exports.Wizard = exports.UserIconGroup = exports.UserIcon = void 0;
|
|
6
|
+
exports.MenuDivider = exports.MenuItem = exports.Menu = exports.LabeledTextarea = exports.LabeledSelect = exports.InputGroup = exports.LabeledInput = exports.Label = exports.Input = exports.InformationPanelContent = exports.InformationPanelBody = exports.InformationPanelHeader = exports.InformationPanelWrapper = exports.InformationPanel = exports.HorizontalTab = exports.HorizontalTabs = exports.Tab = exports.VerticalTabs = exports.HeaderLogo = exports.HeaderButton = exports.HeaderBreadcrumbs = exports.Header = exports.defaultFooterElements = exports.Footer = exports.FileUploadTemplate = exports.FileUpload = exports.Fieldset = exports.ExpandableBlock = exports.ErrorPage = exports.DropdownMenu = exports.generateLocalizedStrings = exports.DatePicker = exports.ComboBox = exports.ColorPalette = exports.ColorInputPanel = exports.ColorBuilder = exports.ColorSwatch = exports.ColorPicker = exports.Checkbox = exports.Carousel = exports.ButtonGroup = exports.SplitButton = exports.IdeasButton = exports.IconButton = exports.DropdownButton = exports.Button = exports.Breadcrumbs = exports.Badge = exports.Backdrop = exports.Alert = void 0;
|
|
7
|
+
exports.Kbd = exports.Code = exports.Blockquote = exports.Title = exports.Subheading = exports.Small = exports.Leading = exports.Headline = exports.Body = exports.Anchor = exports.TreeNodeExpander = exports.TreeNode = exports.Tree = exports.Tooltip = exports.ToggleSwitch = exports.ThemeProvider = exports.toaster = exports.TimePicker = exports.Tile = exports.Textarea = exports.TagContainer = exports.Tag = exports.SelectionColumn = exports.ExpanderColumn = exports.ActionColumn = exports.TablePaginator = exports.EditableCell = exports.DefaultCell = exports.FilterButtonBar = exports.tableFilters = exports.Table = exports.Surface = exports.StatusMessage = exports.Slider = exports.SkipToContentLink = exports.SidenavSubmenuHeader = exports.SidenavSubmenu = exports.SidenavButton = exports.SideNavigation = exports.Select = exports.RadioTileGroup = exports.RadioTile = exports.Radio = exports.ProgressRadial = exports.ProgressLinear = exports.ModalContent = exports.ModalButtonBar = exports.Modal = exports.MenuItemSkeleton = exports.MenuExtraContent = void 0;
|
|
8
|
+
exports.MiddleTextTruncation = exports.ColorValue = exports.useTheme = exports.getUserColor = exports.Wizard = exports.UserIconGroup = exports.UserIcon = exports.Text = exports.KbdKeys = void 0;
|
|
9
9
|
/*---------------------------------------------------------------------------------------------
|
|
10
10
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
11
11
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
12
12
|
*--------------------------------------------------------------------------------------------*/
|
|
13
13
|
var Alert_1 = require("./Alert");
|
|
14
14
|
Object.defineProperty(exports, "Alert", { enumerable: true, get: function () { return Alert_1.Alert; } });
|
|
15
|
+
var Backdrop_1 = require("./Backdrop");
|
|
16
|
+
Object.defineProperty(exports, "Backdrop", { enumerable: true, get: function () { return Backdrop_1.Backdrop; } });
|
|
15
17
|
var Badge_1 = require("./Badge");
|
|
16
18
|
Object.defineProperty(exports, "Badge", { enumerable: true, get: function () { return Badge_1.Badge; } });
|
|
17
19
|
var Breadcrumbs_1 = require("./Breadcrumbs");
|
|
@@ -52,6 +54,7 @@ Object.defineProperty(exports, "FileUpload", { enumerable: true, get: function (
|
|
|
52
54
|
Object.defineProperty(exports, "FileUploadTemplate", { enumerable: true, get: function () { return FileUpload_1.FileUploadTemplate; } });
|
|
53
55
|
var Footer_1 = require("./Footer");
|
|
54
56
|
Object.defineProperty(exports, "Footer", { enumerable: true, get: function () { return Footer_1.Footer; } });
|
|
57
|
+
Object.defineProperty(exports, "defaultFooterElements", { enumerable: true, get: function () { return Footer_1.defaultFooterElements; } });
|
|
55
58
|
var Header_1 = require("./Header");
|
|
56
59
|
Object.defineProperty(exports, "Header", { enumerable: true, get: function () { return Header_1.Header; } });
|
|
57
60
|
Object.defineProperty(exports, "HeaderBreadcrumbs", { enumerable: true, get: function () { return Header_1.HeaderBreadcrumbs; } });
|
|
@@ -42,7 +42,7 @@ var FocusTrap = function (props) {
|
|
|
42
42
|
lastElement === null || lastElement === void 0 ? void 0 : lastElement.focus();
|
|
43
43
|
}
|
|
44
44
|
};
|
|
45
|
-
return (react_1.default.createElement(
|
|
45
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
46
46
|
react_1.default.createElement("div", { tabIndex: 0, onFocus: onFirstFocus, "aria-hidden": true }),
|
|
47
47
|
react_1.default.cloneElement(children, {
|
|
48
48
|
ref: (0, useMergedRefs_1.mergeRefs)(children.ref, childRef),
|
|
@@ -44,7 +44,7 @@ var MiddleTextTruncation = function (props) {
|
|
|
44
44
|
var _b = (0, useOverflow_1.useOverflow)(text), ref = _b[0], visibleCount = _b[1];
|
|
45
45
|
var truncatedText = react_1.default.useMemo(function () {
|
|
46
46
|
if (visibleCount < text.length) {
|
|
47
|
-
return "".concat(text.
|
|
47
|
+
return "".concat(text.substring(0, visibleCount - endCharsCount - ELLIPSIS_CHAR.length)).concat(ELLIPSIS_CHAR).concat(text.substring(text.length - endCharsCount));
|
|
48
48
|
}
|
|
49
49
|
else {
|
|
50
50
|
return text;
|
|
@@ -76,7 +76,10 @@ var useOverflow = function (items, disabled, orientation) {
|
|
|
76
76
|
}
|
|
77
77
|
else if (needsFullRerender.current) {
|
|
78
78
|
var childrenSize = Array.from(containerRef.current.children).reduce(function (sum, child) { return sum + child["offset".concat(dimension)]; }, 0);
|
|
79
|
-
|
|
79
|
+
// Previous `useEffect` might have updated visible count, but we still have old one
|
|
80
|
+
// If it is 0, lets try to update it with items length.
|
|
81
|
+
var currentVisibleCount = visibleCount || Math.min(items.length, STARTING_MAX_ITEMS_COUNT);
|
|
82
|
+
var avgItemSize = childrenSize / currentVisibleCount;
|
|
80
83
|
var visibleItems = Math.floor(availableSize / avgItemSize);
|
|
81
84
|
if (!isNaN(visibleItems)) {
|
|
82
85
|
// Doubling the visible items to overflow the container. Just to be safe.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import '@itwin/itwinui-css/css/backdrop.css';
|
|
3
|
+
export declare type BackdropProps = {
|
|
4
|
+
/**
|
|
5
|
+
* Flag whether backdrop should be shown.
|
|
6
|
+
* @default true
|
|
7
|
+
*/
|
|
8
|
+
isVisible?: boolean;
|
|
9
|
+
} & React.ComponentPropsWithRef<'div'>;
|
|
10
|
+
export declare const Backdrop: React.ForwardRefExoticComponent<Pick<BackdropProps, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "isVisible"> & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,35 @@
|
|
|
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 '../utils';
|
|
30
|
+
import '@itwin/itwinui-css/css/backdrop.css';
|
|
31
|
+
export var Backdrop = React.forwardRef(function (props, ref) {
|
|
32
|
+
var _a = props.isVisible, isVisible = _a === void 0 ? true : _a, className = props.className, rest = __rest(props, ["isVisible", "className"]);
|
|
33
|
+
useTheme();
|
|
34
|
+
return (React.createElement("div", __assign({ className: cx('iui-backdrop', { 'iui-backdrop-visible': isVisible }, className), ref: ref }, rest)));
|
|
35
|
+
});
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
export { Backdrop } from './Backdrop';
|
|
@@ -56,28 +56,15 @@ export var Breadcrumbs = React.forwardRef(function (props, ref) {
|
|
|
56
56
|
useTheme();
|
|
57
57
|
var _b = useOverflow(items), overflowRef = _b[0], visibleCount = _b[1];
|
|
58
58
|
var refs = useMergedRefs(overflowRef, ref);
|
|
59
|
-
var Separator = function () { return (React.createElement("li", { className: 'iui-breadcrumbs-separator', "aria-hidden": true }, separator !== null && separator !== void 0 ? separator : React.createElement(SvgChevronRight, null))); };
|
|
60
|
-
var ListItem = function (_a) {
|
|
61
|
-
var _b;
|
|
62
|
-
var index = _a.index;
|
|
63
|
-
var item = items[index];
|
|
64
|
-
return (React.createElement("li", { className: 'iui-breadcrumbs-item iui-breadcrumbs-item-overrides' }, React.isValidElement(item)
|
|
65
|
-
? React.cloneElement(item, {
|
|
66
|
-
'aria-current': ((_b = item.props['aria-current']) !== null && _b !== void 0 ? _b : currentIndex === index)
|
|
67
|
-
? 'location'
|
|
68
|
-
: undefined,
|
|
69
|
-
})
|
|
70
|
-
: item));
|
|
71
|
-
};
|
|
72
59
|
return (React.createElement("nav", __assign({ className: cx('iui-breadcrumbs', className), ref: refs, "aria-label": 'Breadcrumb' }, rest),
|
|
73
60
|
React.createElement("ol", { className: 'iui-breadcrumbs-list' },
|
|
74
61
|
visibleCount > 1 && (React.createElement(React.Fragment, null,
|
|
75
|
-
React.createElement(ListItem, {
|
|
76
|
-
React.createElement(Separator,
|
|
62
|
+
React.createElement(ListItem, { item: items[0], isActive: currentIndex === 0 }),
|
|
63
|
+
React.createElement(Separator, { separator: separator }))),
|
|
77
64
|
items.length - visibleCount > 0 && (React.createElement(React.Fragment, null,
|
|
78
65
|
React.createElement("li", { className: 'iui-breadcrumbs-item iui-breadcrumbs-item-overrides' },
|
|
79
66
|
React.createElement("span", { className: 'iui-breadcrumbs-text' }, "\u2026")),
|
|
80
|
-
React.createElement(Separator,
|
|
67
|
+
React.createElement(Separator, { separator: separator }))),
|
|
81
68
|
items
|
|
82
69
|
.slice(visibleCount > 1
|
|
83
70
|
? items.length - visibleCount + 1
|
|
@@ -87,8 +74,21 @@ export var Breadcrumbs = React.forwardRef(function (props, ref) {
|
|
|
87
74
|
? 1 + (items.length - visibleCount) + _index
|
|
88
75
|
: items.length - 1;
|
|
89
76
|
return (React.createElement(React.Fragment, { key: index },
|
|
90
|
-
React.createElement(ListItem, { index: index }),
|
|
91
|
-
index < items.length - 1 && React.createElement(Separator,
|
|
77
|
+
React.createElement(ListItem, { item: items[index], isActive: currentIndex === index }),
|
|
78
|
+
index < items.length - 1 && (React.createElement(Separator, { separator: separator }))));
|
|
92
79
|
}))));
|
|
93
80
|
});
|
|
81
|
+
var ListItem = function (_a) {
|
|
82
|
+
var _b;
|
|
83
|
+
var item = _a.item, isActive = _a.isActive;
|
|
84
|
+
return (React.createElement("li", { className: 'iui-breadcrumbs-item iui-breadcrumbs-item-overrides' }, React.isValidElement(item)
|
|
85
|
+
? React.cloneElement(item, {
|
|
86
|
+
'aria-current': ((_b = item.props['aria-current']) !== null && _b !== void 0 ? _b : isActive) ? 'location' : undefined,
|
|
87
|
+
})
|
|
88
|
+
: item));
|
|
89
|
+
};
|
|
90
|
+
var Separator = function (_a) {
|
|
91
|
+
var separator = _a.separator;
|
|
92
|
+
return (React.createElement("li", { className: 'iui-breadcrumbs-separator', "aria-hidden": true }, separator !== null && separator !== void 0 ? separator : React.createElement(SvgChevronRight, null)));
|
|
93
|
+
};
|
|
94
94
|
export default Breadcrumbs;
|
|
@@ -66,9 +66,16 @@ export var ButtonGroup = React.forwardRef(function (props, ref) {
|
|
|
66
66
|
'iui-button-group': orientation === 'horizontal',
|
|
67
67
|
'iui-button-group-vertical': orientation === 'vertical',
|
|
68
68
|
'iui-button-group-overflow-x': !!overflowButton && orientation === 'horizontal',
|
|
69
|
-
}, className), "aria-orientation": orientation, ref: refs }, rest),
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
69
|
+
}, className), "aria-orientation": orientation, ref: refs }, rest),
|
|
70
|
+
React.createElement(React.Fragment, null,
|
|
71
|
+
visibleCount < items.length &&
|
|
72
|
+
overflowButton &&
|
|
73
|
+
overflowPlacement === 'start' && (React.createElement("div", null, overflowButton(visibleCount))),
|
|
74
|
+
visibleCount < items.length
|
|
75
|
+
? items.slice(0, visibleCount - 1)
|
|
76
|
+
: items,
|
|
77
|
+
visibleCount < items.length &&
|
|
78
|
+
overflowButton &&
|
|
79
|
+
overflowPlacement === 'end' && (React.createElement("div", null, overflowButton(visibleCount))))));
|
|
73
80
|
});
|
|
74
81
|
export default ButtonGroup;
|