@enact/limestone 1.3.0 → 1.10.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/.github/workflows/ci-branch.yml +21 -0
- package/.github/workflows/ci-pull-request.yml +16 -0
- package/.github/workflows/ci-reusable.yml +73 -0
- package/ActionGuide/ActionGuide.d.ts +5 -4
- package/ActionGuide/ActionGuide.module.css +1 -1
- package/Alert/Alert.d.ts +13 -2
- package/Alert/Alert.js +39 -5
- package/Alert/Alert.module.css +48 -1
- package/Alert/tests/Alert-specs.js +91 -0
- package/BodyText/BodyText.d.ts +5 -4
- package/BodyText/BodyText.module.css +7 -7
- package/Button/Button.d.ts +17 -12
- package/Button/Button.js +1 -1
- package/Button/Button.module.css +195 -268
- package/Button/tests/Button-specs.js +26 -0
- package/CHANGELOG.md +254 -0
- package/Card/Card.d.ts +40 -12
- package/Card/Card.js +164 -28
- package/Card/Card.module.css +277 -58
- package/Card/tests/Card-specs.js +67 -3
- package/Checkbox/Checkbox.d.ts +8 -7
- package/Checkbox/Checkbox.js +3 -1
- package/Checkbox/Checkbox.module.css +213 -120
- package/Checkbox/tests/Checkbox-specs.js +1 -1
- package/CheckboxItem/CheckboxItem.d.ts +22 -7
- package/CheckboxItem/CheckboxItem.js +71 -4
- package/Chips/Chip.js +72 -13
- package/Chips/Chip.module.css +3 -3
- package/Chips/Chips.js +37 -17
- package/Chips/Chips.module.css +1 -1
- package/Chips/tests/Chip-specs.js +43 -13
- package/Chips/tests/Chips-specs.js +31 -21
- package/ColorPicker/ColorPicker.js +27 -25
- package/ContextualMenuDecorator/ContextualMenuDecorator.d.ts +4 -5
- package/ContextualPopupDecorator/ContextualPopup.module.css +34 -34
- package/ContextualPopupDecorator/ContextualPopupDecorator.js +567 -549
- package/DatePicker/DatePicker.d.ts +4 -5
- package/DayPicker/DayPicker.d.ts +8 -7
- package/DayPicker/DaySelectorDecorator.js +12 -7
- package/Dropdown/Dropdown.d.ts +11 -13
- package/Dropdown/Dropdown.module.css +13 -9
- package/Dropdown/DropdownList.js +80 -54
- package/FixedPopupPanels/FixedPopupPanels.d.ts +4 -2
- package/FixedPopupPanels/FixedPopupPanels.module.css +18 -18
- package/FlexiblePopupPanels/FlexiblePopupPanels.module.css +23 -23
- package/FlexiblePopupPanels/useNavButtonFocus.js +7 -10
- package/FormCheckboxItem/FormCheckboxItem.d.ts +5 -4
- package/Heading/Heading.d.ts +9 -8
- package/Heading/Heading.js +2 -2
- package/Heading/Heading.module.css +5 -5
- package/Icon/Icon.d.ts +15 -4
- package/Icon/Icon.js +49 -2
- package/Icon/Icon.module.css +1 -1
- package/Icon/IconList.js +27 -1
- package/IconItem/IconItem.d.ts +13 -12
- package/IconItem/IconItem.js +15 -0
- package/IconItem/IconItem.module.css +107 -1
- package/IconItem/tests/IconItem-specs.js +30 -1
- package/Image/Image.d.ts +5 -4
- package/Image/Image.js +6 -4
- package/ImageItem/ImageItem.d.ts +11 -10
- package/ImageItem/ImageItem.js +37 -31
- package/ImageItem/ImageItem.module.css +30 -30
- package/ImageItem/tests/ImageItem-specs.js +3 -10
- package/Input/Input.js +21 -3
- package/Input/Input.module.css +37 -8
- package/Input/InputField.js +79 -24
- package/Input/InputField.module.css +273 -41
- package/Input/InputFieldDecoratorIcon.js +1 -0
- package/Input/InputFieldSpotlightDecorator.js +257 -228
- package/Input/index.d.ts +120 -111
- package/Input/tests/Input-specs.js +26 -0
- package/Input/tests/InputField-specs.js +170 -3
- package/Input/tests/InputPopup-specs.js +1 -1
- package/Item/Item.d.ts +16 -9
- package/Item/Item.js +20 -2
- package/Item/Item.module.css +1 -1
- package/KeyGuide/KeyGuide.d.ts +8 -7
- package/KeyGuide/KeyGuide.js +29 -27
- package/KeyGuide/KeyGuide.module.css +25 -1
- package/Marquee/Marquee.d.ts +2 -4
- package/MediaOverlay/MediaOverlay.d.ts +12 -11
- package/MediaOverlay/MediaOverlay.js +43 -21
- package/MediaOverlay/MediaOverlay.module.css +114 -15
- package/MediaOverlay/tests/MediaOverlay-specs.js +29 -0
- package/MediaPlayer/MediaControls.js +195 -13
- package/MediaPlayer/MediaControls.module.css +3 -2
- package/MediaPlayer/MediaSlider.module.css +7 -20
- package/MediaPlayer/index.d.ts +59 -7
- package/MediaPlayer/tests/util-specs.js +4 -1
- package/PageViews/PageViews.js +232 -82
- package/PageViews/PageViews.module.css +3 -0
- package/PageViews/PageViewsRouter.js +100 -42
- package/PageViews/tests/PageViews-specs.js +171 -0
- package/Panels/Header.js +54 -34
- package/Panels/Header.module.css +83 -31
- package/Panels/Panel.module.css +1 -1
- package/Panels/index.d.ts +7 -8
- package/Picker/Picker.d.ts +4 -5
- package/Picker/Picker.module.css +2 -2
- package/Popup/Popup.js +245 -242
- package/Popup/Popup.module.css +24 -24
- package/PopupTabLayout/PopupTabLayout.d.ts +5 -7
- package/PopupTabLayout/PopupTabLayout.js +26 -18
- package/PopupTabLayout/PopupTabLayout.module.css +53 -16
- package/PopupTabLayout/PopupTabLayoutStateContext.js +8 -0
- package/ProgressBar/ProgressBar.d.ts +5 -4
- package/ProgressBar/ProgressBarTooltip.module.css +12 -12
- package/ProgressButton/ProgressButton.d.ts +4 -5
- package/QuickGuidePanels/QuickGuidePanels.module.css +2 -2
- package/RadioItem/RadioItem.d.ts +18 -5
- package/RadioItem/RadioItem.js +69 -2
- package/RadioItem/RadioItem.module.css +36 -36
- package/RangePicker/RangePicker.module.css +2 -2
- package/Scroller/EditableWrapper.js +28 -18
- package/Scroller/Scroller.d.ts +20 -16
- package/Scroller/Scroller.js +20 -13
- package/Scroller/Scroller.module.css +4 -4
- package/Scroller/useThemeScroller.js +3 -3
- package/Slider/Slider.d.ts +20 -14
- package/Slider/Slider.js +71 -14
- package/Slider/Slider.module.css +464 -91
- package/Slider/SliderBehaviorDecorator.js +16 -14
- package/Slider/tests/Slider-specs.js +53 -1
- package/Slider/utils.js +23 -7
- package/Spinner/Spinner.d.ts +5 -4
- package/Spinner/Spinner.js +10 -8
- package/Spinner/Spinner.module.css +9 -9
- package/Steps/Steps.d.ts +5 -4
- package/Steps/Steps.js +9 -5
- package/Switch/Switch.d.ts +8 -7
- package/Switch/Switch.module.css +100 -13
- package/SwitchItem/SwitchItem.d.ts +9 -6
- package/TabLayout/RefocusDecorator.js +26 -18
- package/TabLayout/TabGroup.js +3 -2
- package/TabLayout/TabGroup.module.css +2 -2
- package/TabLayout/TabLayout.d.ts +6 -0
- package/TabLayout/TabLayout.js +11 -1
- package/TabLayout/TabLayout.module.css +18 -0
- package/TabLayout/tests/TabGroup-specs.js +1 -1
- package/TabLayout/tests/TabLayout-specs.js +52 -0
- package/ThemeDecorator/AccessibilityDecorator.js +12 -11
- package/ThemeDecorator/I18nFontDecorator.js +6 -4
- package/ThemeDecorator/ThemeDecorator.d.ts +16 -10
- package/ThemeDecorator/ThemeDecorator.js +24 -9
- package/ThemeDecorator/fontGenerator.js +1 -1
- package/ThemeDecorator/screenTypes.json +1 -0
- package/TimePicker/TimePicker.module.css +1 -1
- package/TimePicker/TimePickerBase.js +5 -3
- package/TooltipDecorator/Tooltip.module.css +1 -2
- package/TooltipDecorator/TooltipDecorator.js +12 -7
- package/TooltipDecorator/tests/useTooltip-specs.js +5 -2
- package/TooltipDecorator/tests/util-specs.js +12 -0
- package/TooltipDecorator/useTooltip.js +1 -1
- package/TooltipDecorator/util.js +18 -11
- package/VideoPlayer/Feedback.js +3 -0
- package/VideoPlayer/Feedback.module.css +5 -9
- package/VideoPlayer/FeedbackIcons.js +1 -1
- package/VideoPlayer/FeedbackTooltip.module.css +55 -11
- package/VideoPlayer/VideoPlayer.d.ts +44 -18
- package/VideoPlayer/VideoPlayer.js +153 -47
- package/VideoPlayer/VideoPlayer.module.css +28 -11
- package/VirtualList/VirtualList.d.ts +9 -2
- package/VirtualList/VirtualList.js +51 -24
- package/VirtualList/tests/VirtualGridList-translate-specs.js +3 -0
- package/VirtualList/tests/VirtualList-specs.js +28 -1
- package/VirtualList/tests/VirtualList-translate-specs.js +4 -1
- package/VirtualList/useSpotlight.js +1 -1
- package/WizardPanels/WizardPanels.module.css +2 -2
- package/WizardPanels/index.d.ts +4 -2
- package/fonts/Limestone_Icons.ttf +0 -0
- package/internal/$L/$L.js +3 -3
- package/internal/AsyncRenderChildren/AsyncRenderChildren.js +9 -5
- package/internal/AsyncRenderChildren/tests/AsyncRenderChildren-specs.js +4 -1
- package/internal/DateComponentPicker/DateComponentPicker.module.css +2 -2
- package/internal/DateTime/DateTime.module.css +1 -0
- package/internal/DateTime/DateTimeDecorator.js +5 -4
- package/internal/Panels/PanelsRouter.js +48 -31
- package/internal/Panels/useAutoFocus.js +10 -6
- package/internal/Panels/useFocusOnTransition.js +4 -3
- package/internal/Picker/Picker.js +7 -5
- package/internal/Picker/Picker.module.css +2 -2
- package/internal/Picker/SpottablePicker.js +15 -13
- package/internal/SharedStateDecorator/SharedStateDecorator.js +78 -99
- package/internal/validators/validators.js +21 -2
- package/package.json +18 -15
- package/styles/colors-highcontrast.less +9 -1
- package/styles/colors.less +12 -7
- package/styles/motion-mixins.less +66 -0
- package/styles/motions.less +78 -0
- package/styles/variables.less +176 -150
- package/useScroll/HoverToScroll.js +23 -17
- package/useScroll/Scrollbar.js +14 -10
- package/useScroll/ScrollbarPlaceholder.js +3 -5
- package/useScroll/ScrollbarTrack.js +7 -5
- package/useScroll/ScrollbarTrack.module.css +8 -8
- package/useScroll/useEvent.js +14 -3
- package/useScroll/useScroll.js +12 -2
- package/useScroll/useScroll.module.css +6 -6
- package/.travis.yml +0 -40
|
@@ -7,11 +7,13 @@ exports.PageViewsRouter = PageViewsRouter;
|
|
|
7
7
|
exports["default"] = void 0;
|
|
8
8
|
var _propTypes = _interopRequireDefault(require("@enact/core/internal/prop-types"));
|
|
9
9
|
var _useChainRefs = _interopRequireDefault(require("@enact/core/useChainRefs"));
|
|
10
|
+
var _util = require("@enact/core/util");
|
|
11
|
+
var _spotlight = _interopRequireDefault(require("@enact/spotlight"));
|
|
10
12
|
var _propTypes2 = _interopRequireDefault(require("prop-types"));
|
|
11
13
|
var _react = require("react");
|
|
12
14
|
var _Panels = require("../internal/Panels");
|
|
13
15
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
|
-
var _excluded = ["autoFocus", "children", "componentRef", "data-spotlight-id", "index", "onTransition", "onWillTransition", "rtl"],
|
|
16
|
+
var _excluded = ["autoFocus", "bannerMode", "children", "componentRef", "data-spotlight-id", "index", "onFooterCloseClick", "onFooterNextClick", "onNextClick", "onPrevClick", "onTransition", "onWillTransition", "rtl", "showFooterButtons"],
|
|
15
17
|
_excluded2 = ["onWillTransition"]; // single-index ViewManagers need some help knowing when the transition direction needs to change
|
|
16
18
|
// because the index is always 0 from its perspective.
|
|
17
19
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
@@ -23,36 +25,45 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
|
|
|
23
25
|
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
|
24
26
|
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
25
27
|
function useReverseTransition(index, rtl) {
|
|
26
|
-
var prevIndex = (0,
|
|
28
|
+
var prevIndex = (0, _util.usePrevious)(index);
|
|
27
29
|
var reverse = false;
|
|
28
|
-
if (prevIndex
|
|
29
|
-
reverse = rtl ? index > prevIndex
|
|
30
|
+
if (prevIndex !== index) {
|
|
31
|
+
reverse = rtl ? index > prevIndex : index < prevIndex;
|
|
30
32
|
}
|
|
31
|
-
prevIndex.current = index;
|
|
32
33
|
return {
|
|
33
34
|
reverseTransition: reverse
|
|
34
35
|
};
|
|
35
36
|
}
|
|
36
37
|
|
|
37
38
|
/**
|
|
38
|
-
* PageViewsRouter passes children, index and transition handlers
|
|
39
|
+
* PageViewsRouter passes children, index and transition handlers.
|
|
39
40
|
*
|
|
40
41
|
* @class PageViewsRouter
|
|
41
42
|
* @memberof limestone/PageViews
|
|
42
43
|
* @private
|
|
43
44
|
*/
|
|
44
45
|
function PageViewsRouter(Wrapped) {
|
|
45
|
-
var
|
|
46
|
-
var
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
46
|
+
var _PageViewsProvider = function PageViewsProvider(props) {
|
|
47
|
+
var pageViewsProviderProps = (0, _util.setDefaultProps)(props, {
|
|
48
|
+
index: 0
|
|
49
|
+
});
|
|
50
|
+
(0, _util.checkPropTypes)(_PageViewsProvider, pageViewsProviderProps);
|
|
51
|
+
var autoFocus = pageViewsProviderProps.autoFocus,
|
|
52
|
+
bannerMode = pageViewsProviderProps.bannerMode,
|
|
53
|
+
children = pageViewsProviderProps.children,
|
|
54
|
+
componentRef = pageViewsProviderProps.componentRef,
|
|
55
|
+
spotlightId = pageViewsProviderProps['data-spotlight-id'],
|
|
56
|
+
index = pageViewsProviderProps.index,
|
|
57
|
+
onFooterCloseClick = pageViewsProviderProps.onFooterCloseClick,
|
|
58
|
+
onFooterNextClick = pageViewsProviderProps.onFooterNextClick,
|
|
59
|
+
onNextClick = pageViewsProviderProps.onNextClick,
|
|
60
|
+
onPrevClick = pageViewsProviderProps.onPrevClick,
|
|
61
|
+
onTransition = pageViewsProviderProps.onTransition,
|
|
62
|
+
onWillTransition = pageViewsProviderProps.onWillTransition,
|
|
63
|
+
rtl = pageViewsProviderProps.rtl,
|
|
64
|
+
showFooterButtons = pageViewsProviderProps.showFooterButtons,
|
|
65
|
+
rest = _objectWithoutProperties(pageViewsProviderProps, _excluded);
|
|
66
|
+
var uniqueId = (0, _react.useId)();
|
|
56
67
|
var totalIndex = _react.Children.count(children);
|
|
57
68
|
var _useToggleRole = (0, _Panels.useToggleRole)(),
|
|
58
69
|
a11yRef = _useToggleRole.ref,
|
|
@@ -63,8 +74,42 @@ function PageViewsRouter(Wrapped) {
|
|
|
63
74
|
var ref = (0, _useChainRefs["default"])(autoFocusRef, a11yRef, componentRef);
|
|
64
75
|
var _useReverseTransition = useReverseTransition(index, rtl),
|
|
65
76
|
reverseTransition = _useReverseTransition.reverseTransition;
|
|
77
|
+
var navigationSource = (0, _react.useRef)(null); // 'internal-next' | 'internal-prev' | 'footer' | null
|
|
78
|
+
|
|
79
|
+
(0, _react.useEffect)(function () {
|
|
80
|
+
if (showFooterButtons && !bannerMode) {
|
|
81
|
+
_spotlight["default"].focus(spotlightId, {
|
|
82
|
+
enterTo: 'default-element'
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}, [bannerMode, showFooterButtons, spotlightId]);
|
|
86
|
+
var handleNextClick = (0, _react.useCallback)(function (ev) {
|
|
87
|
+
navigationSource.current = 'internal-next';
|
|
88
|
+
onNextClick === null || onNextClick === void 0 || onNextClick(ev);
|
|
89
|
+
}, [onNextClick]);
|
|
90
|
+
var handlePrevClick = (0, _react.useCallback)(function (ev) {
|
|
91
|
+
navigationSource.current = 'internal-prev';
|
|
92
|
+
onPrevClick === null || onPrevClick === void 0 || onPrevClick(ev);
|
|
93
|
+
}, [onPrevClick]);
|
|
94
|
+
var handleFooterNextClick = (0, _react.useCallback)(function (ev) {
|
|
95
|
+
navigationSource.current = 'footer';
|
|
96
|
+
onFooterNextClick === null || onFooterNextClick === void 0 || onFooterNextClick(ev);
|
|
97
|
+
}, [onFooterNextClick]);
|
|
98
|
+
var handleTransition = (0, _react.useCallback)(function (ev) {
|
|
99
|
+
if (showFooterButtons && !bannerMode) {
|
|
100
|
+
var source = navigationSource.current;
|
|
101
|
+
var newIndex = ev.index;
|
|
102
|
+
if (source === 'footer' || source === 'internal-next' && newIndex === totalIndex - 1 || source === 'internal-prev' && newIndex === 0) {
|
|
103
|
+
_spotlight["default"].focus(spotlightId, {
|
|
104
|
+
enterTo: 'default-element'
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
navigationSource.current = null;
|
|
109
|
+
onTransition === null || onTransition === void 0 || onTransition(ev);
|
|
110
|
+
}, [bannerMode, onTransition, showFooterButtons, spotlightId, totalIndex]);
|
|
66
111
|
var _useFocusOnTransition = (0, _Panels.useFocusOnTransition)({
|
|
67
|
-
onTransition:
|
|
112
|
+
onTransition: handleTransition,
|
|
68
113
|
onWillTransition: onWillTransition,
|
|
69
114
|
spotlightId: spotlightId
|
|
70
115
|
}),
|
|
@@ -74,17 +119,30 @@ function PageViewsRouter(Wrapped) {
|
|
|
74
119
|
focusOnWillTransition(ev);
|
|
75
120
|
a11yOnWillTransition(ev);
|
|
76
121
|
}, [a11yOnWillTransition, focusOnWillTransition]);
|
|
122
|
+
(0, _react.useEffect)(function () {
|
|
123
|
+
return function () {
|
|
124
|
+
_spotlight["default"].resume();
|
|
125
|
+
};
|
|
126
|
+
}, []);
|
|
77
127
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Wrapped, _objectSpread(_objectSpread(_objectSpread({}, rest), transition), {}, {
|
|
128
|
+
bannerMode: bannerMode,
|
|
78
129
|
componentRef: ref,
|
|
79
130
|
"data-spotlight-id": spotlightId,
|
|
80
131
|
index: index,
|
|
81
|
-
|
|
132
|
+
onFooterCloseClick: onFooterCloseClick,
|
|
133
|
+
onFooterNextClick: handleFooterNextClick,
|
|
134
|
+
onNextClick: handleNextClick,
|
|
135
|
+
onPrevClick: handlePrevClick,
|
|
82
136
|
onWillTransition: handleWillTransition,
|
|
83
137
|
reverseTransition: reverseTransition,
|
|
138
|
+
rtl: rtl,
|
|
139
|
+
showFooterButtons: showFooterButtons,
|
|
140
|
+
totalIndex: totalIndex,
|
|
141
|
+
uniqueId: uniqueId,
|
|
84
142
|
children: children
|
|
85
143
|
}));
|
|
86
144
|
};
|
|
87
|
-
|
|
145
|
+
_PageViewsProvider.propTypes = /** @lends limestone/PageViews.PageViewsRouter.prototype */{
|
|
88
146
|
/**
|
|
89
147
|
* Sets the strategy used to automatically focus an element within the PageViews upon render.
|
|
90
148
|
* When set to 'none', focus is not set only on the first render.
|
|
@@ -102,19 +160,19 @@ function PageViewsRouter(Wrapped) {
|
|
|
102
160
|
*/
|
|
103
161
|
componentRef: _propTypes["default"].ref,
|
|
104
162
|
/**
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
163
|
+
* The spotlight id for the panel.
|
|
164
|
+
*
|
|
165
|
+
* @type {String}
|
|
166
|
+
* @private
|
|
167
|
+
*/
|
|
110
168
|
'data-spotlight-id': _propTypes2["default"].string,
|
|
111
169
|
/**
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
170
|
+
* The currently selected step.
|
|
171
|
+
*
|
|
172
|
+
* @type {Number}
|
|
173
|
+
* @default 0
|
|
174
|
+
* @private
|
|
175
|
+
*/
|
|
118
176
|
index: _propTypes2["default"].number,
|
|
119
177
|
/**
|
|
120
178
|
* Disables panel transitions.
|
|
@@ -124,18 +182,18 @@ function PageViewsRouter(Wrapped) {
|
|
|
124
182
|
*/
|
|
125
183
|
noAnimation: _propTypes2["default"].bool,
|
|
126
184
|
/**
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
185
|
+
* Called when a transition completes.
|
|
186
|
+
*
|
|
187
|
+
* @type {Function}
|
|
188
|
+
* @private
|
|
189
|
+
*/
|
|
132
190
|
onTransition: _propTypes2["default"].func,
|
|
133
191
|
/**
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
192
|
+
* Called when a transition begins.
|
|
193
|
+
*
|
|
194
|
+
* @type {Function}
|
|
195
|
+
* @private
|
|
196
|
+
*/
|
|
139
197
|
onWillTransition: _propTypes2["default"].func,
|
|
140
198
|
/**
|
|
141
199
|
* Used to determine the transition direction.
|
|
@@ -145,6 +203,6 @@ function PageViewsRouter(Wrapped) {
|
|
|
145
203
|
*/
|
|
146
204
|
rtl: _propTypes2["default"].bool
|
|
147
205
|
};
|
|
148
|
-
return
|
|
206
|
+
return _PageViewsProvider;
|
|
149
207
|
}
|
|
150
208
|
var _default = exports["default"] = PageViewsRouter;
|
|
@@ -189,4 +189,175 @@ describe('PageViews Specs', function () {
|
|
|
189
189
|
expect(actual).toMatchObject(expected);
|
|
190
190
|
});
|
|
191
191
|
}));
|
|
192
|
+
test('should render accept `fullContents` prop', function () {
|
|
193
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsxs)(_.PageViews, {
|
|
194
|
+
fullContents: true,
|
|
195
|
+
pageIndicatorType: "number",
|
|
196
|
+
index: 1,
|
|
197
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_.Page, {
|
|
198
|
+
children: "I got contents"
|
|
199
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Page, {
|
|
200
|
+
children: "I got contents"
|
|
201
|
+
})]
|
|
202
|
+
}));
|
|
203
|
+
var panel = _react.screen.getByRole('region');
|
|
204
|
+
var expected = 'fullContents';
|
|
205
|
+
expect(panel).toHaveClass(expected);
|
|
206
|
+
});
|
|
207
|
+
test('should navigate on Page Indicator click when `bannerMode` is true', /*#__PURE__*/_asyncToGenerator(function* () {
|
|
208
|
+
var handleChange = jest.fn();
|
|
209
|
+
var handleStepsClick = jest.fn();
|
|
210
|
+
var user = _userEvent["default"].setup();
|
|
211
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsxs)(_.PageViews, {
|
|
212
|
+
bannerMode: true,
|
|
213
|
+
index: 2,
|
|
214
|
+
onChange: handleChange,
|
|
215
|
+
onStepsClick: handleStepsClick,
|
|
216
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_.Page, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Page, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Page, {})]
|
|
217
|
+
}));
|
|
218
|
+
var indicatorDot = _react.screen.getByRole('list').children[1];
|
|
219
|
+
var expected = {
|
|
220
|
+
type: 'onStepsClick'
|
|
221
|
+
};
|
|
222
|
+
yield user.click(indicatorDot);
|
|
223
|
+
yield (0, _react.waitFor)(function () {
|
|
224
|
+
expect(handleChange).toHaveBeenCalledWith({
|
|
225
|
+
index: 1,
|
|
226
|
+
type: 'onChange'
|
|
227
|
+
});
|
|
228
|
+
});
|
|
229
|
+
yield (0, _react.waitFor)(function () {
|
|
230
|
+
var actual = handleStepsClick.mock.calls.length && handleStepsClick.mock.calls[0][0];
|
|
231
|
+
expect(actual).toMatchObject(expected);
|
|
232
|
+
});
|
|
233
|
+
}));
|
|
234
|
+
test('should navigate via 5-way left key when `bannerMode` is true', /*#__PURE__*/_asyncToGenerator(function* () {
|
|
235
|
+
var handleChange = jest.fn();
|
|
236
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsxs)(_.PageViews, {
|
|
237
|
+
bannerMode: true,
|
|
238
|
+
index: 1,
|
|
239
|
+
onChange: handleChange,
|
|
240
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_.Page, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Page, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Page, {})]
|
|
241
|
+
}));
|
|
242
|
+
var pageViews = _react.screen.getByRole('region').children[0];
|
|
243
|
+
yield _react.fireEvent.keyDown(pageViews, {
|
|
244
|
+
which: 37,
|
|
245
|
+
keyCode: 37,
|
|
246
|
+
code: 37
|
|
247
|
+
});
|
|
248
|
+
yield (0, _react.waitFor)(function () {
|
|
249
|
+
expect(handleChange).toHaveBeenCalledWith({
|
|
250
|
+
index: 0,
|
|
251
|
+
type: 'onChange'
|
|
252
|
+
});
|
|
253
|
+
});
|
|
254
|
+
}));
|
|
255
|
+
test('should navigate via 5-way right key when `bannerMode` is true', /*#__PURE__*/_asyncToGenerator(function* () {
|
|
256
|
+
var handleChange = jest.fn();
|
|
257
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsxs)(_.PageViews, {
|
|
258
|
+
bannerMode: true,
|
|
259
|
+
index: 1,
|
|
260
|
+
onChange: handleChange,
|
|
261
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_.Page, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Page, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Page, {})]
|
|
262
|
+
}));
|
|
263
|
+
var pageViews = _react.screen.getByRole('region').children[0];
|
|
264
|
+
yield _react.fireEvent.keyDown(pageViews, {
|
|
265
|
+
which: 39,
|
|
266
|
+
keyCode: 39,
|
|
267
|
+
code: 39
|
|
268
|
+
});
|
|
269
|
+
yield (0, _react.waitFor)(function () {
|
|
270
|
+
expect(handleChange).toHaveBeenCalledWith({
|
|
271
|
+
index: 2,
|
|
272
|
+
type: 'onChange'
|
|
273
|
+
});
|
|
274
|
+
});
|
|
275
|
+
}));
|
|
276
|
+
test('should render footer Close and Next buttons when `showFooterButtons` is true', function () {
|
|
277
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsxs)(_.PageViews, {
|
|
278
|
+
showFooterButtons: true,
|
|
279
|
+
index: 0,
|
|
280
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_.Page, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Page, {})]
|
|
281
|
+
}));
|
|
282
|
+
expect(_react.screen.getByText('Close')).toBeInTheDocument();
|
|
283
|
+
expect(_react.screen.getByText('Next')).toBeInTheDocument();
|
|
284
|
+
});
|
|
285
|
+
test('should not render footer Next button on the last page', function () {
|
|
286
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsxs)(_.PageViews, {
|
|
287
|
+
showFooterButtons: true,
|
|
288
|
+
index: 1,
|
|
289
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_.Page, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Page, {})]
|
|
290
|
+
}));
|
|
291
|
+
expect(_react.screen.getByText('Close')).toBeInTheDocument();
|
|
292
|
+
expect(_react.screen.queryByText('Next')).toBeNull();
|
|
293
|
+
});
|
|
294
|
+
test('should not render footer buttons when `bannerMode` is true', function () {
|
|
295
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsxs)(_.PageViews, {
|
|
296
|
+
showFooterButtons: true,
|
|
297
|
+
bannerMode: true,
|
|
298
|
+
index: 0,
|
|
299
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_.Page, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Page, {})]
|
|
300
|
+
}));
|
|
301
|
+
expect(_react.screen.queryByText('Close')).toBeNull();
|
|
302
|
+
});
|
|
303
|
+
test('should fire `onFooterNextClick`, `onChange`, and `onTransition` when footer Next button is clicked', /*#__PURE__*/_asyncToGenerator(function* () {
|
|
304
|
+
var handleChange = jest.fn();
|
|
305
|
+
var handleFooterNextClick = jest.fn();
|
|
306
|
+
var spy = jest.fn();
|
|
307
|
+
var user = _userEvent["default"].setup();
|
|
308
|
+
var index = 0;
|
|
309
|
+
var _render3 = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsxs)(_.PageViews, {
|
|
310
|
+
showFooterButtons: true,
|
|
311
|
+
index: index,
|
|
312
|
+
onChange: handleChange,
|
|
313
|
+
onFooterNextClick: handleFooterNextClick,
|
|
314
|
+
onTransition: spy,
|
|
315
|
+
noAnimation: true,
|
|
316
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_.Page, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Page, {})]
|
|
317
|
+
})),
|
|
318
|
+
rerender = _render3.rerender;
|
|
319
|
+
yield user.click(_react.screen.getByText('Next'));
|
|
320
|
+
yield (0, _react.waitFor)(function () {
|
|
321
|
+
expect(handleChange).toHaveBeenCalledWith({
|
|
322
|
+
index: 1,
|
|
323
|
+
type: 'onChange'
|
|
324
|
+
});
|
|
325
|
+
});
|
|
326
|
+
yield (0, _react.waitFor)(function () {
|
|
327
|
+
expect(handleFooterNextClick).toHaveBeenCalled();
|
|
328
|
+
});
|
|
329
|
+
spy.mockClear();
|
|
330
|
+
index++;
|
|
331
|
+
rerender(/*#__PURE__*/(0, _jsxRuntime.jsxs)(_.PageViews, {
|
|
332
|
+
showFooterButtons: true,
|
|
333
|
+
index: index,
|
|
334
|
+
onChange: handleChange,
|
|
335
|
+
onFooterNextClick: handleFooterNextClick,
|
|
336
|
+
onTransition: spy,
|
|
337
|
+
noAnimation: true,
|
|
338
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_.Page, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Page, {})]
|
|
339
|
+
}));
|
|
340
|
+
var expected = {
|
|
341
|
+
index: index,
|
|
342
|
+
type: 'onTransition'
|
|
343
|
+
};
|
|
344
|
+
var actual = spy.mock.calls.length && spy.mock.calls[0][0];
|
|
345
|
+
yield (0, _react.waitFor)(function () {
|
|
346
|
+
expect(actual).toMatchObject(expected);
|
|
347
|
+
});
|
|
348
|
+
}));
|
|
349
|
+
test('should fire `onFooterCloseClick` when footer Close button is clicked', /*#__PURE__*/_asyncToGenerator(function* () {
|
|
350
|
+
var handleFooterCloseClick = jest.fn();
|
|
351
|
+
var user = _userEvent["default"].setup();
|
|
352
|
+
(0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsxs)(_.PageViews, {
|
|
353
|
+
showFooterButtons: true,
|
|
354
|
+
index: 0,
|
|
355
|
+
onFooterCloseClick: handleFooterCloseClick,
|
|
356
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_.Page, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Page, {})]
|
|
357
|
+
}));
|
|
358
|
+
yield user.click(_react.screen.getByText('Close'));
|
|
359
|
+
yield (0, _react.waitFor)(function () {
|
|
360
|
+
expect(handleFooterCloseClick).toHaveBeenCalled();
|
|
361
|
+
});
|
|
362
|
+
}));
|
|
192
363
|
});
|
package/Panels/Header.js
CHANGED
|
@@ -7,22 +7,23 @@ exports["default"] = exports.HeaderBase = exports.Header = void 0;
|
|
|
7
7
|
var _handle = require("@enact/core/handle");
|
|
8
8
|
var _propTypes = _interopRequireDefault(require("@enact/core/internal/prop-types"));
|
|
9
9
|
var _kind = _interopRequireDefault(require("@enact/core/kind"));
|
|
10
|
-
var _util = require("@enact/
|
|
10
|
+
var _util = require("@enact/core/util");
|
|
11
|
+
var _util2 = require("@enact/i18n/util");
|
|
11
12
|
var _SpotlightContainerDecorator = _interopRequireDefault(require("@enact/spotlight/SpotlightContainerDecorator"));
|
|
12
13
|
var _Layout = require("@enact/ui/Layout");
|
|
13
|
-
var _Measurable = require("@enact/ui/Measurable");
|
|
14
14
|
var _resolution = require("@enact/ui/resolution");
|
|
15
15
|
var _Slottable = _interopRequireDefault(require("@enact/ui/Slottable"));
|
|
16
16
|
var _ViewManager = _interopRequireWildcard(require("@enact/ui/ViewManager"));
|
|
17
17
|
var _propTypes2 = _interopRequireDefault(require("prop-types"));
|
|
18
18
|
var _compose = _interopRequireDefault(require("ramda/src/compose"));
|
|
19
19
|
var _react = require("react");
|
|
20
|
-
var _$L = _interopRequireDefault(require("../internal/$L"));
|
|
21
20
|
var _Button = _interopRequireDefault(require("../Button"));
|
|
22
21
|
var _Heading = _interopRequireDefault(require("../Heading"));
|
|
23
|
-
var
|
|
22
|
+
var _$L = _interopRequireDefault(require("../internal/$L"));
|
|
24
23
|
var _Panels = require("../internal/Panels");
|
|
25
|
-
var
|
|
24
|
+
var _util3 = require("../internal/Panels/util");
|
|
25
|
+
var _PopupTabLayoutStateContext = require("../PopupTabLayout/PopupTabLayoutStateContext");
|
|
26
|
+
var _Skinnable = _interopRequireDefault(require("../Skinnable"));
|
|
26
27
|
var _HeaderModule = _interopRequireDefault(require("./Header.module.css"));
|
|
27
28
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
28
29
|
var _excluded = ["backButtonAriaLabel", "backButtonAvailable", "backButtonBackgroundOpacity", "centered", "children", "closeButtonAriaLabel", "closeButtonBackgroundOpacity", "css", "noBackButton", "noCloseButton", "onBack", "onClose", "shadowed", "slotAbove", "slotAfter", "slotAfterRef", "slotBefore", "slotBeforeRef", "slotSize", "titleCell", "type"];
|
|
@@ -138,6 +139,13 @@ var HeaderBase = exports.HeaderBase = (0, _kind["default"])({
|
|
|
138
139
|
* @public
|
|
139
140
|
*/
|
|
140
141
|
css: _propTypes2["default"].object,
|
|
142
|
+
/**
|
|
143
|
+
* Informs Header that it is part of a Popup.
|
|
144
|
+
*
|
|
145
|
+
* @type {Boolean}
|
|
146
|
+
* @private
|
|
147
|
+
*/
|
|
148
|
+
isPopupHeader: _propTypes2["default"].bool,
|
|
141
149
|
/**
|
|
142
150
|
* Determines what triggers the header content to start its animation.
|
|
143
151
|
*
|
|
@@ -334,6 +342,7 @@ var HeaderBase = exports.HeaderBase = (0, _kind["default"])({
|
|
|
334
342
|
var backButtonAvailable = _ref.backButtonAvailable,
|
|
335
343
|
centered = _ref.centered,
|
|
336
344
|
children = _ref.children,
|
|
345
|
+
isPopupHeader = _ref.isPopupHeader,
|
|
337
346
|
noBackButton = _ref.noBackButton,
|
|
338
347
|
noCloseButton = _ref.noCloseButton,
|
|
339
348
|
noSubtitle = _ref.noSubtitle,
|
|
@@ -345,6 +354,7 @@ var HeaderBase = exports.HeaderBase = (0, _kind["default"])({
|
|
|
345
354
|
subtitle = _ref.subtitle;
|
|
346
355
|
return styler.append({
|
|
347
356
|
centered: centered,
|
|
357
|
+
isPopupHeader: isPopupHeader,
|
|
348
358
|
noSubtitle: noSubtitle,
|
|
349
359
|
shadowed: shadowed,
|
|
350
360
|
slotAfter: slotAfter || !noCloseButton,
|
|
@@ -366,7 +376,7 @@ var HeaderBase = exports.HeaderBase = (0, _kind["default"])({
|
|
|
366
376
|
title = _ref2.title,
|
|
367
377
|
titleId = _ref2.titleId,
|
|
368
378
|
type = _ref2.type;
|
|
369
|
-
var direction = (0,
|
|
379
|
+
var direction = (0, _util2.isRtlText)(title) || (0, _util2.isRtlText)(subtitle) ? 'rtl' : 'ltr';
|
|
370
380
|
var titleHeading = /*#__PURE__*/(0, _jsxRuntime.jsx)(_Heading["default"], _objectSpread(_objectSpread({}, centered ? {
|
|
371
381
|
slotSize: slotSize
|
|
372
382
|
} : {}), {}, {
|
|
@@ -441,6 +451,7 @@ var HeaderBase = exports.HeaderBase = (0, _kind["default"])({
|
|
|
441
451
|
type = _ref3.type,
|
|
442
452
|
rest = _objectWithoutProperties(_ref3, _excluded);
|
|
443
453
|
delete rest.arranger;
|
|
454
|
+
delete rest.isPopupHeader;
|
|
444
455
|
delete rest.marqueeOn;
|
|
445
456
|
delete rest.noSubtitle;
|
|
446
457
|
delete rest.subtitle;
|
|
@@ -486,7 +497,6 @@ var HeaderBase = exports.HeaderBase = (0, _kind["default"])({
|
|
|
486
497
|
children: slotAbove
|
|
487
498
|
}) : null, /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Layout.Row, {
|
|
488
499
|
className: css.titlesRow,
|
|
489
|
-
align: "center",
|
|
490
500
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Layout.Cell, {
|
|
491
501
|
className: css.slotBefore,
|
|
492
502
|
shrink: !syncCellSize,
|
|
@@ -520,15 +530,21 @@ var HeaderBase = exports.HeaderBase = (0, _kind["default"])({
|
|
|
520
530
|
var ContextAsDefaultsHeader = function ContextAsDefaultsHeader(Wrapped) {
|
|
521
531
|
// eslint-disable-next-line no-shadow
|
|
522
532
|
function ContextAsDefaultsHeader(props) {
|
|
523
|
-
var
|
|
533
|
+
var _ref4;
|
|
534
|
+
(0, _util.checkPropTypes)(ContextAsDefaultsHeader, props);
|
|
535
|
+
var _useContextAsDefaults = (0, _util3.useContextAsDefaults)(props),
|
|
524
536
|
contextProps = _useContextAsDefaults.contextProps,
|
|
525
537
|
provideContextAsDefaults = _useContextAsDefaults.provideContextAsDefaults;
|
|
526
538
|
var _use = (0, _react.use)(_Panels.PanelsStateContext),
|
|
527
539
|
panelsType = _use.type;
|
|
540
|
+
var _use2 = (0, _react.use)(_PopupTabLayoutStateContext.PopupTabLayoutStateContext),
|
|
541
|
+
tabLayoutType = _use2.type;
|
|
528
542
|
var index = props['data-index'];
|
|
529
543
|
var backButtonAvailable = index > 0 && panelsType !== 'wizard' || panelsType === 'flexiblePopup';
|
|
544
|
+
var isPopupHeader = (_ref4 = panelsType || tabLayoutType) === null || _ref4 === void 0 ? void 0 : _ref4.toLowerCase().includes('popup');
|
|
530
545
|
return provideContextAsDefaults(/*#__PURE__*/(0, _jsxRuntime.jsx)(Wrapped, _objectSpread(_objectSpread(_objectSpread({}, contextProps), props), {}, {
|
|
531
|
-
backButtonAvailable: backButtonAvailable
|
|
546
|
+
backButtonAvailable: backButtonAvailable,
|
|
547
|
+
isPopupHeader: isPopupHeader
|
|
532
548
|
})));
|
|
533
549
|
}
|
|
534
550
|
ContextAsDefaultsHeader.propTypes = {
|
|
@@ -545,18 +561,9 @@ var ContextAsDefaultsHeader = function ContextAsDefaultsHeader(Wrapped) {
|
|
|
545
561
|
var HeaderMeasurementDecorator = function HeaderMeasurementDecorator(Wrapped) {
|
|
546
562
|
return function HeaderMeasurementDecorator(props) {
|
|
547
563
|
// eslint-disable-line no-shadow
|
|
548
|
-
var
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
_ref4$measurement2 = _ref4$measurement === void 0 ? {} : _ref4$measurement,
|
|
552
|
-
_ref4$measurement2$wi = _ref4$measurement2.width,
|
|
553
|
-
slotBeforeWidth = _ref4$measurement2$wi === void 0 ? 0 : _ref4$measurement2$wi;
|
|
554
|
-
var _ref5 = (0, _Measurable.useMeasurable)() || {},
|
|
555
|
-
slotAfterRef = _ref5.ref,
|
|
556
|
-
_ref5$measurement = _ref5.measurement,
|
|
557
|
-
_ref5$measurement2 = _ref5$measurement === void 0 ? {} : _ref5$measurement,
|
|
558
|
-
_ref5$measurement2$wi = _ref5$measurement2.width,
|
|
559
|
-
slotAfterWidth = _ref5$measurement2$wi === void 0 ? 0 : _ref5$measurement2$wi;
|
|
564
|
+
var slotBeforeRef = (0, _react.useRef)(null);
|
|
565
|
+
var slotAfterRef = (0, _react.useRef)(null);
|
|
566
|
+
var lastSlotSizeRef = (0, _react.useRef)(null);
|
|
560
567
|
var _useState = (0, _react.useState)({}),
|
|
561
568
|
_useState2 = _slicedToArray(_useState, 2),
|
|
562
569
|
_useState2$ = _useState2[0],
|
|
@@ -564,24 +571,37 @@ var HeaderMeasurementDecorator = function HeaderMeasurementDecorator(Wrapped) {
|
|
|
564
571
|
prevSlotBeforeWidth = _useState2$.prevSlotBeforeWidth,
|
|
565
572
|
prevSlotAfterWidth = _useState2$.prevSlotAfterWidth,
|
|
566
573
|
setSlotSize = _useState2[1];
|
|
574
|
+
(0, _react.useEffect)(function () {
|
|
575
|
+
var slotBeforeElement = slotBeforeRef.current;
|
|
576
|
+
var slotAfterElement = slotAfterRef.current;
|
|
577
|
+
var slotBeforeWidth = slotBeforeElement && slotBeforeElement.getBoundingClientRect ? slotBeforeElement.getBoundingClientRect().width : 0;
|
|
578
|
+
var slotAfterWidth = slotAfterElement && slotAfterElement.getBoundingClientRect ? slotAfterElement.getBoundingClientRect().width : 0;
|
|
567
579
|
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
580
|
+
// If the slot width has changed, re-run this.
|
|
581
|
+
if (slotBeforeWidth !== prevSlotBeforeWidth || slotAfterWidth !== prevSlotAfterWidth) {
|
|
582
|
+
var largestSlotSize = Math.max(slotBeforeWidth, slotAfterWidth);
|
|
583
|
+
// And only do this the largest slot is a different value this time around.
|
|
584
|
+
if (slotSize !== largestSlotSize) {
|
|
585
|
+
lastSlotSizeRef.current = largestSlotSize;
|
|
586
|
+
setSlotSize({
|
|
587
|
+
slotSize: largestSlotSize,
|
|
588
|
+
prevSlotBeforeWidth: slotBeforeWidth,
|
|
589
|
+
prevSlotAfterWidth: slotAfterWidth
|
|
590
|
+
});
|
|
591
|
+
} else {
|
|
592
|
+
setSlotSize(function (s) {
|
|
593
|
+
return _objectSpread(_objectSpread({}, s), {}, {
|
|
594
|
+
prevSlotBeforeWidth: slotBeforeWidth,
|
|
595
|
+
prevSlotAfterWidth: slotAfterWidth
|
|
596
|
+
});
|
|
597
|
+
});
|
|
598
|
+
}
|
|
579
599
|
}
|
|
580
|
-
}
|
|
600
|
+
}, [props.slotBefore, props.slotAfter, prevSlotBeforeWidth, prevSlotAfterWidth, slotSize]);
|
|
581
601
|
var measurableProps = {
|
|
582
602
|
slotBeforeRef: slotBeforeRef,
|
|
583
603
|
slotAfterRef: slotAfterRef,
|
|
584
|
-
slotSize: (0, _resolution.unit)(slotSize, 'rem')
|
|
604
|
+
slotSize: typeof slotSize === 'number' ? (0, _resolution.unit)(slotSize, 'rem') : '0rem'
|
|
585
605
|
};
|
|
586
606
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Wrapped, _objectSpread(_objectSpread({}, props), measurableProps));
|
|
587
607
|
};
|