@skbkontur/react-ui 3.6.0 → 3.8.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 +71 -0
- package/cjs/components/Button/Button.d.ts +1 -0
- package/cjs/components/Button/Button.js +7 -4
- package/cjs/components/Button/Button.js.map +1 -1
- package/cjs/components/Button/Button.styles.js +2 -2
- package/cjs/components/Button/Button.styles.js.map +1 -1
- package/cjs/components/Checkbox/Checkbox.js +9 -8
- package/cjs/components/Checkbox/Checkbox.js.map +1 -1
- package/cjs/components/Checkbox/Checkbox.styles.js +3 -2
- package/cjs/components/Checkbox/Checkbox.styles.js.map +1 -1
- package/cjs/components/CurrencyLabel/CurrencyLabel.js +14 -5
- package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
- package/cjs/components/CurrencyLabel/CurrencyLabel.styles.d.ts +4 -0
- package/cjs/components/CurrencyLabel/CurrencyLabel.styles.js +9 -0
- package/cjs/components/CurrencyLabel/CurrencyLabel.styles.js.map +1 -0
- package/cjs/components/FxInput/FxInput.js +1 -1
- package/cjs/components/FxInput/FxInput.js.map +1 -1
- package/cjs/components/Input/Input.styles.js +1 -1
- package/cjs/components/Input/Input.styles.js.map +1 -1
- package/cjs/components/Kebab/Kebab.js +2 -2
- package/cjs/components/Kebab/Kebab.js.map +1 -1
- package/cjs/components/Link/Link.js +2 -2
- package/cjs/components/Link/Link.js.map +1 -1
- package/cjs/components/Loader/Loader.d.ts +3 -1
- package/cjs/components/Loader/Loader.js +20 -1
- package/cjs/components/Loader/Loader.js.map +1 -1
- package/cjs/components/MenuItem/MenuItem.md +1 -1
- package/cjs/components/MenuItem/MenuItem.styles.js +3 -2
- package/cjs/components/MenuItem/MenuItem.styles.js.map +1 -1
- package/cjs/components/Modal/Modal.styles.d.ts +1 -0
- package/cjs/components/Modal/Modal.styles.js +24 -21
- package/cjs/components/Modal/Modal.styles.js.map +1 -1
- package/cjs/components/Modal/ModalClose.js +23 -3
- package/cjs/components/Modal/ModalClose.js.map +1 -1
- package/cjs/components/Paging/Paging.js +2 -2
- package/cjs/components/Paging/Paging.js.map +1 -1
- package/cjs/components/Paging/Paging.styles.js +2 -1
- package/cjs/components/Paging/Paging.styles.js.map +1 -1
- package/cjs/components/Radio/Radio.d.ts +9 -1
- package/cjs/components/Radio/Radio.js +37 -4
- package/cjs/components/Radio/Radio.js.map +1 -1
- package/cjs/components/Radio/Radio.styles.d.ts +1 -1
- package/cjs/components/Radio/Radio.styles.js +5 -10
- package/cjs/components/Radio/Radio.styles.js.map +1 -1
- package/cjs/components/ScrollContainer/ScrollBar.d.ts +37 -0
- package/cjs/components/ScrollContainer/ScrollBar.js +244 -0
- package/cjs/components/ScrollContainer/ScrollBar.js.map +1 -0
- package/cjs/components/ScrollContainer/ScrollContainer.constants.d.ts +23 -0
- package/cjs/components/ScrollContainer/ScrollContainer.constants.js +33 -0
- package/cjs/components/ScrollContainer/ScrollContainer.constants.js.map +1 -0
- package/cjs/components/ScrollContainer/ScrollContainer.d.ts +38 -23
- package/cjs/components/ScrollContainer/ScrollContainer.helpers.d.ts +10 -0
- package/cjs/components/ScrollContainer/ScrollContainer.helpers.js +62 -0
- package/cjs/components/ScrollContainer/ScrollContainer.helpers.js.map +1 -0
- package/cjs/components/ScrollContainer/ScrollContainer.js +81 -153
- package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
- package/cjs/components/ScrollContainer/ScrollContainer.md +62 -13
- package/cjs/components/ScrollContainer/ScrollContainer.styles.d.ts +12 -3
- package/cjs/components/ScrollContainer/ScrollContainer.styles.js +72 -9
- package/cjs/components/ScrollContainer/ScrollContainer.styles.js.map +1 -1
- package/cjs/components/SidePage/SidePage.d.ts +1 -2
- package/cjs/components/SidePage/SidePage.js +1 -5
- package/cjs/components/SidePage/SidePage.js.map +1 -1
- package/cjs/components/SidePage/SidePage.styles.d.ts +2 -1
- package/cjs/components/SidePage/SidePage.styles.js +44 -28
- package/cjs/components/SidePage/SidePage.styles.js.map +1 -1
- package/cjs/components/SidePage/SidePageHeader.d.ts +4 -1
- package/cjs/components/SidePage/SidePageHeader.js +33 -23
- package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
- package/cjs/components/Switcher/Switcher.js +1 -1
- package/cjs/components/Switcher/Switcher.js.map +1 -1
- package/cjs/components/Switcher/Switcher.styles.d.ts +1 -1
- package/cjs/components/Switcher/Switcher.styles.js +3 -2
- package/cjs/components/Switcher/Switcher.styles.js.map +1 -1
- package/cjs/components/Tabs/Tab.d.ts +0 -3
- package/cjs/components/Tabs/Tab.js +3 -13
- package/cjs/components/Tabs/Tab.js.map +1 -1
- package/cjs/components/Tabs/Tab.styles.js +2 -2
- package/cjs/components/Tabs/Tab.styles.js.map +1 -1
- package/cjs/components/Toggle/Toggle.js +6 -5
- package/cjs/components/Toggle/Toggle.js.map +1 -1
- package/cjs/components/Toggle/Toggle.styles.d.ts +1 -0
- package/cjs/components/Toggle/Toggle.styles.js +26 -16
- package/cjs/components/Toggle/Toggle.styles.js.map +1 -1
- package/cjs/components/Token/Token.styles.js +8 -9
- package/cjs/components/Token/Token.styles.js.map +1 -1
- package/cjs/components/TokenInput/TokenInput.d.ts +8 -0
- package/cjs/components/TokenInput/TokenInput.js +24 -2
- package/cjs/components/TokenInput/TokenInput.js.map +1 -1
- package/cjs/components/Tooltip/Tooltip.styles.js +2 -1
- package/cjs/components/Tooltip/Tooltip.styles.js.map +1 -1
- package/cjs/internal/CustomComboBox/ComboBoxView.js +2 -1
- package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
- package/cjs/internal/CustomComboBox/CustomComboBoxReducer.js +3 -2
- package/cjs/internal/CustomComboBox/CustomComboBoxReducer.js.map +1 -1
- package/cjs/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js +5 -7
- package/cjs/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js.map +1 -1
- package/cjs/internal/InputLikeText/InputLikeText.js +2 -1
- package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
- package/cjs/internal/PopupMenu/PopupMenu.js +1 -1
- package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
- package/cjs/internal/RenderContainer/RenderContainer.js +2 -1
- package/cjs/internal/RenderContainer/RenderContainer.js.map +1 -1
- package/cjs/internal/ThemePlayground/darkTheme.js +3 -3
- package/cjs/internal/ThemePlayground/darkTheme.js.map +1 -1
- package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/cjs/internal/icons/CrossIcon.js +8 -1
- package/cjs/internal/icons/CrossIcon.js.map +1 -1
- package/cjs/internal/themes/DefaultTheme.d.ts +23 -7
- package/cjs/internal/themes/DefaultTheme.js +77 -32
- package/cjs/internal/themes/DefaultTheme.js.map +1 -1
- package/cjs/internal/themes/FlatTheme.d.ts +4 -4
- package/cjs/internal/themes/FlatTheme.js +16 -8
- package/cjs/internal/themes/FlatTheme.js.map +1 -1
- package/cjs/internal/themes/Theme8px.d.ts +0 -5
- package/cjs/internal/themes/Theme8px.js +2 -12
- package/cjs/internal/themes/Theme8px.js.map +1 -1
- package/cjs/lib/Upgrades.d.ts +2 -0
- package/cjs/lib/Upgrades.js +14 -0
- package/cjs/lib/Upgrades.js.map +1 -1
- package/cjs/lib/events/keyListener.d.ts +7 -0
- package/cjs/lib/events/keyListener.js +22 -0
- package/cjs/lib/events/keyListener.js.map +1 -0
- package/cjs/lib/events/keyboard/identifiers.d.ts +1 -0
- package/cjs/lib/events/keyboard/identifiers.js +6 -1
- package/cjs/lib/events/keyboard/identifiers.js.map +1 -1
- package/cjs/lib/events/tabListener.d.ts +1 -6
- package/cjs/lib/events/tabListener.js +2 -15
- package/cjs/lib/events/tabListener.js.map +1 -1
- package/cjs/lib/locale/LOCALECONTEXT.md +1 -1
- package/cjs/lib/styles/ColorFunctions.js +1 -1
- package/cjs/lib/styles/ColorFunctions.js.map +1 -1
- package/cjs/lib/theming/Emotion.js +1 -1
- package/cjs/lib/theming/Emotion.js.map +1 -1
- package/cjs/lib/theming/ThemeContext.md +1 -1
- package/cjs/lib/utils.d.ts +7 -0
- package/cjs/lib/utils.js +12 -2
- package/cjs/lib/utils.js.map +1 -1
- package/components/Button/Button/Button.js +5 -4
- package/components/Button/Button/Button.js.map +1 -1
- package/components/Button/Button.d.ts +1 -0
- package/components/Button/Button.styles/Button.styles.js +1 -1
- package/components/Button/Button.styles/Button.styles.js.map +1 -1
- package/components/Checkbox/Checkbox/Checkbox.js +5 -5
- package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
- package/components/Checkbox/Checkbox.styles/Checkbox.styles.js +2 -2
- package/components/Checkbox/Checkbox.styles/Checkbox.styles.js.map +1 -1
- package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +11 -5
- package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
- package/components/CurrencyLabel/CurrencyLabel.styles/CurrencyLabel.styles.js +10 -0
- package/components/CurrencyLabel/CurrencyLabel.styles/CurrencyLabel.styles.js.map +1 -0
- package/components/CurrencyLabel/CurrencyLabel.styles/package.json +6 -0
- package/components/CurrencyLabel/CurrencyLabel.styles.d.ts +4 -0
- package/components/FxInput/FxInput/FxInput.js +2 -1
- package/components/FxInput/FxInput/FxInput.js.map +1 -1
- package/components/Input/Input.styles/Input.styles.js +1 -1
- package/components/Input/Input.styles/Input.styles.js.map +1 -1
- package/components/Kebab/Kebab/Kebab.js +2 -2
- package/components/Kebab/Kebab/Kebab.js.map +1 -1
- package/components/Link/Link/Link.js +2 -2
- package/components/Link/Link/Link.js.map +1 -1
- package/components/Loader/Loader/Loader.js +34 -14
- package/components/Loader/Loader/Loader.js.map +1 -1
- package/components/Loader/Loader.d.ts +3 -1
- package/components/MenuItem/MenuItem.md +1 -1
- package/components/MenuItem/MenuItem.styles/MenuItem.styles.js +1 -1
- package/components/MenuItem/MenuItem.styles/MenuItem.styles.js.map +1 -1
- package/components/Modal/Modal.styles/Modal.styles.js +18 -15
- package/components/Modal/Modal.styles/Modal.styles.js.map +1 -1
- package/components/Modal/Modal.styles.d.ts +1 -0
- package/components/Modal/ModalClose/ModalClose.js +25 -2
- package/components/Modal/ModalClose/ModalClose.js.map +1 -1
- package/components/Paging/Paging/Paging.js +2 -2
- package/components/Paging/Paging/Paging.js.map +1 -1
- package/components/Paging/Paging.styles/Paging.styles.js +1 -1
- package/components/Paging/Paging.styles/Paging.styles.js.map +1 -1
- package/components/Radio/Radio/Radio.js +36 -3
- package/components/Radio/Radio/Radio.js.map +1 -1
- package/components/Radio/Radio.d.ts +9 -1
- package/components/Radio/Radio.styles/Radio.styles.js +3 -3
- package/components/Radio/Radio.styles/Radio.styles.js.map +1 -1
- package/components/Radio/Radio.styles.d.ts +1 -1
- package/components/ScrollContainer/ScrollBar/ScrollBar.js +254 -0
- package/components/ScrollContainer/ScrollBar/ScrollBar.js.map +1 -0
- package/components/ScrollContainer/ScrollBar/package.json +6 -0
- package/components/ScrollContainer/ScrollBar.d.ts +37 -0
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +121 -205
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
- package/components/ScrollContainer/ScrollContainer.constants/ScrollContainer.constants.js +31 -0
- package/components/ScrollContainer/ScrollContainer.constants/ScrollContainer.constants.js.map +1 -0
- package/components/ScrollContainer/ScrollContainer.constants/package.json +6 -0
- package/components/ScrollContainer/ScrollContainer.constants.d.ts +23 -0
- package/components/ScrollContainer/ScrollContainer.d.ts +38 -23
- package/components/ScrollContainer/ScrollContainer.helpers/ScrollContainer.helpers.js +55 -0
- package/components/ScrollContainer/ScrollContainer.helpers/ScrollContainer.helpers.js.map +1 -0
- package/components/ScrollContainer/ScrollContainer.helpers/package.json +6 -0
- package/components/ScrollContainer/ScrollContainer.helpers.d.ts +10 -0
- package/components/ScrollContainer/ScrollContainer.md +62 -13
- package/components/ScrollContainer/ScrollContainer.styles/ScrollContainer.styles.js +23 -9
- package/components/ScrollContainer/ScrollContainer.styles/ScrollContainer.styles.js.map +1 -1
- package/components/ScrollContainer/ScrollContainer.styles.d.ts +12 -3
- package/components/SidePage/SidePage/SidePage.js +2 -4
- package/components/SidePage/SidePage/SidePage.js.map +1 -1
- package/components/SidePage/SidePage.d.ts +1 -2
- package/components/SidePage/SidePage.styles/SidePage.styles.js +20 -16
- package/components/SidePage/SidePage.styles/SidePage.styles.js.map +1 -1
- package/components/SidePage/SidePage.styles.d.ts +2 -1
- package/components/SidePage/SidePageHeader/SidePageHeader.js +40 -22
- package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
- package/components/SidePage/SidePageHeader.d.ts +4 -1
- package/components/Switcher/Switcher/Switcher.js +1 -1
- package/components/Switcher/Switcher/Switcher.js.map +1 -1
- package/components/Switcher/Switcher.styles/Switcher.styles.js +2 -2
- package/components/Switcher/Switcher.styles/Switcher.styles.js.map +1 -1
- package/components/Switcher/Switcher.styles.d.ts +1 -1
- package/components/Tabs/Tab/Tab.js +2 -16
- package/components/Tabs/Tab/Tab.js.map +1 -1
- package/components/Tabs/Tab.d.ts +0 -3
- package/components/Tabs/Tab.styles/Tab.styles.js +1 -1
- package/components/Tabs/Tab.styles/Tab.styles.js.map +1 -1
- package/components/Toggle/Toggle/Toggle.js +5 -5
- package/components/Toggle/Toggle/Toggle.js.map +1 -1
- package/components/Toggle/Toggle.styles/Toggle.styles.js +15 -12
- package/components/Toggle/Toggle.styles/Toggle.styles.js.map +1 -1
- package/components/Toggle/Toggle.styles.d.ts +1 -0
- package/components/Token/Token.styles/Token.styles.js +2 -2
- package/components/Token/Token.styles/Token.styles.js.map +1 -1
- package/components/TokenInput/TokenInput/TokenInput.js +24 -2
- package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
- package/components/TokenInput/TokenInput.d.ts +8 -0
- package/components/Tooltip/Tooltip.styles/Tooltip.styles.js +1 -1
- package/components/Tooltip/Tooltip.styles/Tooltip.styles.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +2 -1
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
- package/internal/CustomComboBox/CustomComboBoxReducer/CustomComboBoxReducer.js +3 -2
- package/internal/CustomComboBox/CustomComboBoxReducer/CustomComboBoxReducer.js.map +1 -1
- package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll/HideBodyVerticalScroll.js +4 -4
- package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll/HideBodyVerticalScroll.js.map +1 -1
- package/internal/InputLikeText/InputLikeText/InputLikeText.js +2 -1
- package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
- package/internal/PopupMenu/PopupMenu/PopupMenu.js +2 -2
- package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
- package/internal/RenderContainer/RenderContainer/RenderContainer.js +2 -1
- package/internal/RenderContainer/RenderContainer/RenderContainer.js.map +1 -1
- package/internal/ThemePlayground/darkTheme/darkTheme.js +3 -3
- package/internal/ThemePlayground/darkTheme/darkTheme.js.map +1 -1
- package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/internal/icons/CrossIcon/CrossIcon.js +2 -1
- package/internal/icons/CrossIcon/CrossIcon.js.map +1 -1
- package/internal/themes/DefaultTheme/DefaultTheme.js +100 -19
- package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
- package/internal/themes/DefaultTheme.d.ts +23 -7
- package/internal/themes/FlatTheme/FlatTheme.js +18 -6
- package/internal/themes/FlatTheme/FlatTheme.js.map +1 -1
- package/internal/themes/FlatTheme.d.ts +4 -4
- package/internal/themes/Theme8px/Theme8px.js +1 -14
- package/internal/themes/Theme8px/Theme8px.js.map +1 -1
- package/internal/themes/Theme8px.d.ts +0 -5
- package/lib/Upgrades/Upgrades.js +13 -0
- package/lib/Upgrades/Upgrades.js.map +1 -1
- package/lib/Upgrades.d.ts +2 -0
- package/lib/events/keyListener/keyListener.js +22 -0
- package/lib/events/keyListener/keyListener.js.map +1 -0
- package/lib/events/keyListener/package.json +6 -0
- package/lib/events/keyListener.d.ts +7 -0
- package/lib/events/keyboard/identifiers/identifiers.js +10 -1
- package/lib/events/keyboard/identifiers/identifiers.js.map +1 -1
- package/lib/events/keyboard/identifiers.d.ts +1 -0
- package/lib/events/tabListener/tabListener.js +2 -19
- package/lib/events/tabListener/tabListener.js.map +1 -1
- package/lib/events/tabListener.d.ts +1 -6
- package/lib/locale/LOCALECONTEXT.md +1 -1
- package/lib/styles/ColorFunctions/ColorFunctions.js +1 -1
- package/lib/styles/ColorFunctions/ColorFunctions.js.map +1 -1
- package/lib/theming/Emotion/Emotion.js +1 -1
- package/lib/theming/Emotion/Emotion.js.map +1 -1
- package/lib/theming/ThemeContext.md +1 -1
- package/lib/utils/utils.js +10 -0
- package/lib/utils/utils.js.map +1 -1
- package/lib/utils.d.ts +7 -0
- package/package.json +2 -2
|
@@ -168,7 +168,8 @@ export var Loader = /*#__PURE__*/function (_React$Component) {
|
|
|
168
168
|
_this.spinnerNode = null;
|
|
169
169
|
_this.state = {
|
|
170
170
|
isStickySpinner: false,
|
|
171
|
-
isSpinnerVisible: false
|
|
171
|
+
isSpinnerVisible: false,
|
|
172
|
+
isLoaderActive: false
|
|
172
173
|
};
|
|
173
174
|
_this.spinnerTask = new TaskWithDelayAndMinimalDuration({
|
|
174
175
|
delayBeforeTaskStart: _this.props.delayBeforeSpinnerShow,
|
|
@@ -199,23 +200,18 @@ export var Loader = /*#__PURE__*/function (_React$Component) {
|
|
|
199
200
|
}
|
|
200
201
|
};
|
|
201
202
|
|
|
202
|
-
_proto.componentDidUpdate = function componentDidUpdate(prevProps) {
|
|
203
|
+
_proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {
|
|
203
204
|
var _this$props = this.props,
|
|
204
205
|
component = _this$props.component,
|
|
205
206
|
active = _this$props.active,
|
|
206
207
|
delayBeforeSpinnerShow = _this$props.delayBeforeSpinnerShow,
|
|
207
208
|
minimalDelayBeforeSpinnerHide = _this$props.minimalDelayBeforeSpinnerHide;
|
|
209
|
+
var isLoaderActive = this.state.isLoaderActive;
|
|
208
210
|
|
|
209
211
|
if (active && !prevProps.active || prevProps.component !== component) {
|
|
210
212
|
this.checkSpinnerPosition();
|
|
211
213
|
}
|
|
212
214
|
|
|
213
|
-
if (active) {
|
|
214
|
-
this.disableChildrenFocus();
|
|
215
|
-
} else {
|
|
216
|
-
this.enableChildrenFocus();
|
|
217
|
-
}
|
|
218
|
-
|
|
219
215
|
if (delayBeforeSpinnerShow !== prevProps.delayBeforeSpinnerShow || minimalDelayBeforeSpinnerHide !== prevProps.minimalDelayBeforeSpinnerHide) {
|
|
220
216
|
this.spinnerTask.update({
|
|
221
217
|
delayBeforeTaskStart: delayBeforeSpinnerShow,
|
|
@@ -226,6 +222,14 @@ export var Loader = /*#__PURE__*/function (_React$Component) {
|
|
|
226
222
|
if (active !== prevProps.active) {
|
|
227
223
|
active ? this.spinnerTask.start() : this.spinnerTask.stop();
|
|
228
224
|
}
|
|
225
|
+
|
|
226
|
+
if (isLoaderActive !== prevState.isLoaderActive) {
|
|
227
|
+
if (isLoaderActive) {
|
|
228
|
+
this.disableChildrenFocus();
|
|
229
|
+
} else {
|
|
230
|
+
this.enableChildrenFocus();
|
|
231
|
+
}
|
|
232
|
+
}
|
|
229
233
|
};
|
|
230
234
|
|
|
231
235
|
_proto.componentWillUnmount = function componentWillUnmount() {
|
|
@@ -238,6 +242,22 @@ export var Loader = /*#__PURE__*/function (_React$Component) {
|
|
|
238
242
|
this.spinnerTask.clearTask();
|
|
239
243
|
};
|
|
240
244
|
|
|
245
|
+
Loader.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {
|
|
246
|
+
if (props.active && !state.isLoaderActive) {
|
|
247
|
+
return {
|
|
248
|
+
isLoaderActive: true
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
if (state.isLoaderActive && !(props.active || state.isSpinnerVisible)) {
|
|
253
|
+
return {
|
|
254
|
+
isLoaderActive: false
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
return state;
|
|
259
|
+
};
|
|
260
|
+
|
|
241
261
|
_proto.render = function render() {
|
|
242
262
|
var _this2 = this;
|
|
243
263
|
|
|
@@ -254,22 +274,22 @@ export var Loader = /*#__PURE__*/function (_React$Component) {
|
|
|
254
274
|
type = _this$props2.type,
|
|
255
275
|
caption = _this$props2.caption,
|
|
256
276
|
component = _this$props2.component;
|
|
257
|
-
var
|
|
277
|
+
var isLoaderActive = this.state.isLoaderActive;
|
|
258
278
|
return /*#__PURE__*/React.createElement(CommonWrapper, this.props, /*#__PURE__*/React.createElement("div", {
|
|
259
279
|
className: styles.loader(),
|
|
260
|
-
"data-tid":
|
|
280
|
+
"data-tid": isLoaderActive ? 'Loader__Veil' : ''
|
|
261
281
|
}, /*#__PURE__*/React.createElement(ZIndex, {
|
|
262
282
|
priority: 'Loader',
|
|
263
|
-
applyZIndex:
|
|
264
|
-
coverChildren:
|
|
283
|
+
applyZIndex: isLoaderActive,
|
|
284
|
+
coverChildren: isLoaderActive,
|
|
265
285
|
style: {
|
|
266
286
|
height: '100%'
|
|
267
287
|
},
|
|
268
288
|
wrapperRef: this.childrenRef
|
|
269
|
-
}, this.props.children),
|
|
289
|
+
}, this.props.children), isLoaderActive && /*#__PURE__*/React.createElement(ZIndex, {
|
|
270
290
|
wrapperRef: this.spinnerRef,
|
|
271
291
|
priority: 'Loader',
|
|
272
|
-
className: cx((_cx = {}, _cx[styles.active(this.theme)] =
|
|
292
|
+
className: cx((_cx = {}, _cx[styles.active(this.theme)] = isLoaderActive, _cx))
|
|
273
293
|
}, this.state.isSpinnerVisible && this.renderSpinner(type, caption, component))));
|
|
274
294
|
};
|
|
275
295
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Loader.tsx"],"names":["React","PropTypes","debounce","LayoutEvents","Spinner","ThemeContext","ZIndex","CommonWrapper","cx","isTestEnv","TaskWithDelayAndMinimalDuration","getTabbableElements","styles","Loader","props","theme","spinnerContainerNode","childrenContainerNode","spinnerNode","layoutEvents","spinnerTask","childrenObserver","childrenRef","element","spinnerRef","checkSpinnerPosition","getBoundingClientRect","containerTop","top","containerRight","right","containerBottom","bottom","containerLeft","left","containerHeight","height","containerWidth","width","windowHeight","window","innerHeight","windowWidth","innerWidth","setState","isStickySpinner","spinnerStyle","Math","abs","spinnerHeight","disableChildrenFocus","makeObservable","tabbableElements","forEach","el","hasAttribute","setAttribute","tabIndex","toString","enableChildrenFocus","makeUnobservable","document","querySelectorAll","getAttribute","removeAttribute","target","config","childList","subtree","observer","MutationObserver","observe","disconnect","state","isSpinnerVisible","delayBeforeTaskStart","delayBeforeSpinnerShow","durationOfTask","minimalDelayBeforeSpinnerHide","taskStartCallback","taskStopCallback","componentDidMount","active","start","addListener","componentDidUpdate","prevProps","component","update","stop","componentWillUnmount","remove","clearTask","render","renderMain","type","caption","isLoaderVisible","loader","children","renderSpinner","spinnerContainer","spinnerContainerSticky","spinnerComponentWrapper","undefined","Component","__KONTUR_REACT_UI__","defaultProps","Types","normal","propTypes","bool","node","className","string","oneOf","Object","keys","number"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash.debounce';\n\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Spinner, SpinnerProps } from '../Spinner';\nimport { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { TaskWithDelayAndMinimalDuration } from '../../lib/taskWithDelayAndMinimalDuration';\nimport { getTabbableElements } from '../../lib/dom/tabbableHelpers';\n\nimport { styles } from './Loader.styles';\n\nexport interface LoaderProps extends CommonProps {\n children?: React.ReactNode;\n /**\n * Флаг переключения состояния лоадера\n * @default false\n */\n active: boolean;\n caption?: SpinnerProps['caption'];\n /**\n * Компонент заменяющий спиннер.\n */\n component?: React.ReactNode;\n className?: string;\n type?: 'mini' | 'normal' | 'big';\n /**\n * Время в миллисекундах для показа вуали без спиннера.\n * @default 300\n */\n delayBeforeSpinnerShow: number;\n /**\n * Минимальное время в миллисекундах для показа спиннера\n * @default 1000\n */\n minimalDelayBeforeSpinnerHide: number;\n}\n\nexport interface LoaderState {\n isStickySpinner: boolean;\n isSpinnerVisible: boolean;\n spinnerStyle?: object;\n}\n\n/**\n * DRAFT - лоадер-контейнер\n */\nexport class Loader extends React.Component<LoaderProps, LoaderState> {\n public static __KONTUR_REACT_UI__ = 'Loader';\n\n public static defaultProps: Partial<LoaderProps> = {\n type: Spinner.Types.normal,\n active: false,\n delayBeforeSpinnerShow: isTestEnv ? 0 : 300,\n minimalDelayBeforeSpinnerHide: isTestEnv ? 0 : 1000,\n };\n\n public static propTypes = {\n /**\n * показываем лоадер или нет\n */\n active: PropTypes.bool,\n\n /**\n * Текст рядом с лоадером.\n *\n * @default \"Загрузка\"\n */\n caption: Spinner.propTypes.caption,\n\n component: PropTypes.node,\n\n /**\n * Класс для обертки\n */\n className: PropTypes.string,\n\n /**\n * Тип спиннера: mini, normal, big\n *\n * @default normal\n *\n * Spinner.types - все доступные типы\n */\n type: PropTypes.oneOf(Object.keys(Spinner.Types)),\n /**\n * Время в миллисекундах для показа вуали без спиннера.\n * @default 300\n */\n delayBeforeSpinnerShow: PropTypes.number,\n /**\n * Минимальное время в миллисекундах для показа спиннера\n * @default 1000\n */\n minimalDelayBeforeSpinnerHide: PropTypes.number,\n };\n\n private theme!: Theme;\n private spinnerContainerNode: Nullable<HTMLDivElement>;\n private childrenContainerNode: Nullable<HTMLDivElement>;\n private spinnerNode: Nullable<HTMLDivElement>;\n private layoutEvents: Nullable<{ remove: () => void }>;\n private spinnerTask: TaskWithDelayAndMinimalDuration;\n private childrenObserver: Nullable<MutationObserver>;\n\n constructor(props: LoaderProps) {\n super(props);\n\n this.spinnerContainerNode = null;\n this.childrenContainerNode = null;\n this.childrenObserver = null;\n this.spinnerNode = null;\n\n this.state = {\n isStickySpinner: false,\n isSpinnerVisible: false,\n };\n\n this.spinnerTask = new TaskWithDelayAndMinimalDuration({\n delayBeforeTaskStart: this.props.delayBeforeSpinnerShow,\n durationOfTask: this.props.minimalDelayBeforeSpinnerHide,\n taskStartCallback: () => this.setState({ isSpinnerVisible: true }),\n taskStopCallback: () => this.setState({ isSpinnerVisible: false }),\n });\n }\n\n public componentDidMount() {\n this.checkSpinnerPosition();\n this.props.active && this.spinnerTask.start();\n this.layoutEvents = LayoutEvents.addListener(debounce(this.checkSpinnerPosition, 10));\n\n if (this.props.active) {\n this.disableChildrenFocus();\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<LoaderProps>) {\n const { component, active, delayBeforeSpinnerShow, minimalDelayBeforeSpinnerHide } = this.props;\n\n if ((active && !prevProps.active) || prevProps.component !== component) {\n this.checkSpinnerPosition();\n }\n\n if (active) {\n this.disableChildrenFocus();\n } else {\n this.enableChildrenFocus();\n }\n\n if (\n delayBeforeSpinnerShow !== prevProps.delayBeforeSpinnerShow ||\n minimalDelayBeforeSpinnerHide !== prevProps.minimalDelayBeforeSpinnerHide\n ) {\n this.spinnerTask.update({\n delayBeforeTaskStart: delayBeforeSpinnerShow,\n durationOfTask: minimalDelayBeforeSpinnerHide,\n });\n }\n\n if (active !== prevProps.active) {\n active ? this.spinnerTask.start() : this.spinnerTask.stop();\n }\n }\n\n public componentWillUnmount() {\n this.makeUnobservable();\n if (this.layoutEvents) {\n this.layoutEvents.remove();\n }\n this.spinnerTask.clearTask();\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { type, caption, component } = this.props;\n\n const isLoaderVisible = this.props.active || this.state.isSpinnerVisible;\n\n return (\n <CommonWrapper {...this.props}>\n <div className={styles.loader()} data-tid={isLoaderVisible ? 'Loader__Veil' : ''}>\n <ZIndex\n priority={'Loader'}\n applyZIndex={isLoaderVisible}\n coverChildren={isLoaderVisible}\n style={{ height: '100%' }}\n wrapperRef={this.childrenRef}\n >\n {this.props.children}\n </ZIndex>\n {isLoaderVisible && (\n <ZIndex\n wrapperRef={this.spinnerRef}\n priority={'Loader'}\n className={cx({\n [styles.active(this.theme)]: isLoaderVisible,\n })}\n >\n {this.state.isSpinnerVisible && this.renderSpinner(type, caption, component)}\n </ZIndex>\n )}\n </div>\n </CommonWrapper>\n );\n }\n\n private childrenRef = (element: HTMLDivElement | null) => {\n this.childrenContainerNode = element;\n };\n\n private spinnerRef = (element: HTMLDivElement | null) => {\n this.spinnerContainerNode = element;\n };\n\n private renderSpinner(type?: 'mini' | 'normal' | 'big', caption?: React.ReactNode, component?: React.ReactNode) {\n return (\n <span\n data-tid={'Loader__Spinner'}\n className={cx(styles.spinnerContainer(), { [styles.spinnerContainerSticky()]: this.state.isStickySpinner })}\n style={this.state.spinnerStyle}\n >\n <div\n className={styles.spinnerComponentWrapper()}\n ref={(element) => {\n this.spinnerNode = element;\n }}\n >\n {component !== undefined ? component : <Spinner type={type} caption={caption} />}\n </div>\n </span>\n );\n }\n\n private checkSpinnerPosition = () => {\n if (!this.spinnerContainerNode) {\n return;\n }\n\n const {\n top: containerTop,\n right: containerRight,\n bottom: containerBottom,\n left: containerLeft,\n height: containerHeight,\n width: containerWidth,\n } = this.spinnerContainerNode.getBoundingClientRect();\n\n const windowHeight = window.innerHeight;\n const windowWidth = window.innerWidth;\n\n // Если контейнер не больше высоты и не шире окна,\n // то просто выравниваем по центру\n if (windowHeight >= containerHeight && windowWidth >= containerWidth) {\n this.setState({\n isStickySpinner: false,\n spinnerStyle: {},\n });\n return;\n }\n\n const spinnerStyle: {\n top?: number;\n right: number;\n bottom: number;\n left: number;\n } = {\n top: 30,\n right: 0,\n bottom: 30,\n left: 0,\n };\n\n // ПО ВЕРТИКАЛИ\n // Если верхний край контейнера ниже верхнего края окна,\n // то сдвигаем и лоадер\n if (containerTop > 0) {\n spinnerStyle.top = containerTop + 30;\n }\n\n // Если нижний край контейнера выше нижнего края окна,\n // то сдвигаем и лоадер\n if (containerBottom < windowHeight) {\n spinnerStyle.bottom = Math.abs(windowHeight - containerBottom) + 30;\n }\n\n // Если знаем высоту спиннера и нижний край контейнера поднимается\n // выше отступа на высоту спиннера, то убираем верхнюю позицию лоадера\n if (this.spinnerNode) {\n const spinnerHeight = this.spinnerNode.getBoundingClientRect().height;\n\n if (spinnerHeight && spinnerStyle.bottom >= windowHeight - spinnerHeight) {\n delete spinnerStyle.top;\n }\n }\n\n // ПО ГОРИЗОНТАЛИ\n // Если левый край контейнера правее левого края окна,\n // то сдвигаем и лоадер\n if (containerLeft > 0) {\n spinnerStyle.left = containerLeft;\n }\n\n // Если правый край контейнера левее правого края окна,\n // то сдвигаем и лоадер\n if (containerRight < windowWidth) {\n spinnerStyle.right = windowWidth - containerRight;\n }\n\n this.setState({\n isStickySpinner: true,\n spinnerStyle,\n });\n };\n\n private disableChildrenFocus = () => {\n if (!this.childrenObserver) {\n this.makeObservable();\n }\n const tabbableElements = getTabbableElements(this.childrenContainerNode);\n tabbableElements.forEach((el) => {\n if (!el.hasAttribute('origin-tabindex')) {\n el.setAttribute('origin-tabindex', el.tabIndex.toString());\n }\n el.tabIndex = -1;\n });\n };\n\n private enableChildrenFocus = () => {\n this.makeUnobservable();\n document.querySelectorAll('[origin-tabindex]').forEach((el) => {\n el.setAttribute('tabindex', el.getAttribute('origin-tabindex') ?? '0');\n el.removeAttribute('origin-tabindex');\n });\n };\n\n private makeObservable = () => {\n const target = this.childrenContainerNode;\n if (!target) {\n return;\n }\n const config = {\n childList: true,\n subtree: true,\n };\n const observer = new MutationObserver(this.disableChildrenFocus);\n observer.observe(target, config);\n this.childrenObserver = observer;\n };\n\n private makeUnobservable = () => {\n this.childrenObserver?.disconnect();\n this.childrenObserver = null;\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["Loader.tsx"],"names":["React","PropTypes","debounce","LayoutEvents","Spinner","ThemeContext","ZIndex","CommonWrapper","cx","isTestEnv","TaskWithDelayAndMinimalDuration","getTabbableElements","styles","Loader","props","theme","spinnerContainerNode","childrenContainerNode","spinnerNode","layoutEvents","spinnerTask","childrenObserver","childrenRef","element","spinnerRef","checkSpinnerPosition","getBoundingClientRect","containerTop","top","containerRight","right","containerBottom","bottom","containerLeft","left","containerHeight","height","containerWidth","width","windowHeight","window","innerHeight","windowWidth","innerWidth","setState","isStickySpinner","spinnerStyle","Math","abs","spinnerHeight","disableChildrenFocus","makeObservable","tabbableElements","forEach","el","hasAttribute","setAttribute","tabIndex","toString","enableChildrenFocus","makeUnobservable","document","querySelectorAll","getAttribute","removeAttribute","target","config","childList","subtree","observer","MutationObserver","observe","disconnect","state","isSpinnerVisible","isLoaderActive","delayBeforeTaskStart","delayBeforeSpinnerShow","durationOfTask","minimalDelayBeforeSpinnerHide","taskStartCallback","taskStopCallback","componentDidMount","active","start","addListener","componentDidUpdate","prevProps","prevState","component","update","stop","componentWillUnmount","remove","clearTask","getDerivedStateFromProps","render","renderMain","type","caption","loader","children","renderSpinner","spinnerContainer","spinnerContainerSticky","spinnerComponentWrapper","undefined","Component","__KONTUR_REACT_UI__","defaultProps","Types","normal","propTypes","bool","node","className","string","oneOf","Object","keys","number"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash.debounce';\n\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Spinner, SpinnerProps } from '../Spinner';\nimport { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { TaskWithDelayAndMinimalDuration } from '../../lib/taskWithDelayAndMinimalDuration';\nimport { getTabbableElements } from '../../lib/dom/tabbableHelpers';\n\nimport { styles } from './Loader.styles';\n\nexport interface LoaderProps extends CommonProps {\n children?: React.ReactNode;\n /**\n * Флаг переключения состояния лоадера\n * @default false\n */\n active: boolean;\n caption?: SpinnerProps['caption'];\n /**\n * Компонент заменяющий спиннер.\n */\n component?: React.ReactNode;\n className?: string;\n type?: 'mini' | 'normal' | 'big';\n /**\n * Время в миллисекундах для показа вуали без спиннера.\n * @default 300\n */\n delayBeforeSpinnerShow: number;\n /**\n * Минимальное время в миллисекундах для показа спиннера\n * @default 1000\n */\n minimalDelayBeforeSpinnerHide: number;\n}\n\nexport interface LoaderState {\n isStickySpinner: boolean;\n isSpinnerVisible: boolean;\n isLoaderActive: boolean;\n spinnerStyle?: object;\n}\n\n/**\n * DRAFT - лоадер-контейнер\n */\nexport class Loader extends React.Component<LoaderProps, LoaderState> {\n public static __KONTUR_REACT_UI__ = 'Loader';\n\n public static defaultProps: Partial<LoaderProps> = {\n type: Spinner.Types.normal,\n active: false,\n delayBeforeSpinnerShow: isTestEnv ? 0 : 300,\n minimalDelayBeforeSpinnerHide: isTestEnv ? 0 : 1000,\n };\n\n public static propTypes = {\n /**\n * показываем лоадер или нет\n */\n active: PropTypes.bool,\n\n /**\n * Текст рядом с лоадером.\n *\n * @default \"Загрузка\"\n */\n caption: Spinner.propTypes.caption,\n\n component: PropTypes.node,\n\n /**\n * Класс для обертки\n */\n className: PropTypes.string,\n\n /**\n * Тип спиннера: mini, normal, big\n *\n * @default normal\n *\n * Spinner.types - все доступные типы\n */\n type: PropTypes.oneOf(Object.keys(Spinner.Types)),\n /**\n * Время в миллисекундах для показа вуали без спиннера.\n * @default 300\n */\n delayBeforeSpinnerShow: PropTypes.number,\n /**\n * Минимальное время в миллисекундах для показа спиннера\n * @default 1000\n */\n minimalDelayBeforeSpinnerHide: PropTypes.number,\n };\n\n private theme!: Theme;\n private spinnerContainerNode: Nullable<HTMLDivElement>;\n private childrenContainerNode: Nullable<HTMLDivElement>;\n private spinnerNode: Nullable<HTMLDivElement>;\n private layoutEvents: Nullable<{ remove: () => void }>;\n private spinnerTask: TaskWithDelayAndMinimalDuration;\n private childrenObserver: Nullable<MutationObserver>;\n\n constructor(props: LoaderProps) {\n super(props);\n\n this.spinnerContainerNode = null;\n this.childrenContainerNode = null;\n this.childrenObserver = null;\n this.spinnerNode = null;\n\n this.state = {\n isStickySpinner: false,\n isSpinnerVisible: false,\n isLoaderActive: false,\n };\n\n this.spinnerTask = new TaskWithDelayAndMinimalDuration({\n delayBeforeTaskStart: this.props.delayBeforeSpinnerShow,\n durationOfTask: this.props.minimalDelayBeforeSpinnerHide,\n taskStartCallback: () => this.setState({ isSpinnerVisible: true }),\n taskStopCallback: () => this.setState({ isSpinnerVisible: false }),\n });\n }\n\n public componentDidMount() {\n this.checkSpinnerPosition();\n this.props.active && this.spinnerTask.start();\n this.layoutEvents = LayoutEvents.addListener(debounce(this.checkSpinnerPosition, 10));\n\n if (this.props.active) {\n this.disableChildrenFocus();\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<LoaderProps>, prevState: Readonly<LoaderState>) {\n const { component, active, delayBeforeSpinnerShow, minimalDelayBeforeSpinnerHide } = this.props;\n const { isLoaderActive } = this.state;\n\n if ((active && !prevProps.active) || prevProps.component !== component) {\n this.checkSpinnerPosition();\n }\n\n if (\n delayBeforeSpinnerShow !== prevProps.delayBeforeSpinnerShow ||\n minimalDelayBeforeSpinnerHide !== prevProps.minimalDelayBeforeSpinnerHide\n ) {\n this.spinnerTask.update({\n delayBeforeTaskStart: delayBeforeSpinnerShow,\n durationOfTask: minimalDelayBeforeSpinnerHide,\n });\n }\n\n if (active !== prevProps.active) {\n active ? this.spinnerTask.start() : this.spinnerTask.stop();\n }\n\n if (isLoaderActive !== prevState.isLoaderActive) {\n if (isLoaderActive) {\n this.disableChildrenFocus();\n } else {\n this.enableChildrenFocus();\n }\n }\n }\n\n public componentWillUnmount() {\n this.makeUnobservable();\n if (this.layoutEvents) {\n this.layoutEvents.remove();\n }\n this.spinnerTask.clearTask();\n }\n\n public static getDerivedStateFromProps(props: LoaderProps, state: LoaderState): Partial<LoaderState> {\n if (props.active && !state.isLoaderActive) {\n return {\n isLoaderActive: true,\n };\n }\n if (state.isLoaderActive && !(props.active || state.isSpinnerVisible)) {\n return {\n isLoaderActive: false,\n };\n }\n\n return state;\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { type, caption, component } = this.props;\n const { isLoaderActive } = this.state;\n\n return (\n <CommonWrapper {...this.props}>\n <div className={styles.loader()} data-tid={isLoaderActive ? 'Loader__Veil' : ''}>\n <ZIndex\n priority={'Loader'}\n applyZIndex={isLoaderActive}\n coverChildren={isLoaderActive}\n style={{ height: '100%' }}\n wrapperRef={this.childrenRef}\n >\n {this.props.children}\n </ZIndex>\n {isLoaderActive && (\n <ZIndex\n wrapperRef={this.spinnerRef}\n priority={'Loader'}\n className={cx({\n [styles.active(this.theme)]: isLoaderActive,\n })}\n >\n {this.state.isSpinnerVisible && this.renderSpinner(type, caption, component)}\n </ZIndex>\n )}\n </div>\n </CommonWrapper>\n );\n }\n\n private childrenRef = (element: HTMLDivElement | null) => {\n this.childrenContainerNode = element;\n };\n\n private spinnerRef = (element: HTMLDivElement | null) => {\n this.spinnerContainerNode = element;\n };\n\n private renderSpinner(type?: 'mini' | 'normal' | 'big', caption?: React.ReactNode, component?: React.ReactNode) {\n return (\n <span\n data-tid={'Loader__Spinner'}\n className={cx(styles.spinnerContainer(), { [styles.spinnerContainerSticky()]: this.state.isStickySpinner })}\n style={this.state.spinnerStyle}\n >\n <div\n className={styles.spinnerComponentWrapper()}\n ref={(element) => {\n this.spinnerNode = element;\n }}\n >\n {component !== undefined ? component : <Spinner type={type} caption={caption} />}\n </div>\n </span>\n );\n }\n\n private checkSpinnerPosition = () => {\n if (!this.spinnerContainerNode) {\n return;\n }\n\n const {\n top: containerTop,\n right: containerRight,\n bottom: containerBottom,\n left: containerLeft,\n height: containerHeight,\n width: containerWidth,\n } = this.spinnerContainerNode.getBoundingClientRect();\n\n const windowHeight = window.innerHeight;\n const windowWidth = window.innerWidth;\n\n // Если контейнер не больше высоты и не шире окна,\n // то просто выравниваем по центру\n if (windowHeight >= containerHeight && windowWidth >= containerWidth) {\n this.setState({\n isStickySpinner: false,\n spinnerStyle: {},\n });\n return;\n }\n\n const spinnerStyle: {\n top?: number;\n right: number;\n bottom: number;\n left: number;\n } = {\n top: 30,\n right: 0,\n bottom: 30,\n left: 0,\n };\n\n // ПО ВЕРТИКАЛИ\n // Если верхний край контейнера ниже верхнего края окна,\n // то сдвигаем и лоадер\n if (containerTop > 0) {\n spinnerStyle.top = containerTop + 30;\n }\n\n // Если нижний край контейнера выше нижнего края окна,\n // то сдвигаем и лоадер\n if (containerBottom < windowHeight) {\n spinnerStyle.bottom = Math.abs(windowHeight - containerBottom) + 30;\n }\n\n // Если знаем высоту спиннера и нижний край контейнера поднимается\n // выше отступа на высоту спиннера, то убираем верхнюю позицию лоадера\n if (this.spinnerNode) {\n const spinnerHeight = this.spinnerNode.getBoundingClientRect().height;\n\n if (spinnerHeight && spinnerStyle.bottom >= windowHeight - spinnerHeight) {\n delete spinnerStyle.top;\n }\n }\n\n // ПО ГОРИЗОНТАЛИ\n // Если левый край контейнера правее левого края окна,\n // то сдвигаем и лоадер\n if (containerLeft > 0) {\n spinnerStyle.left = containerLeft;\n }\n\n // Если правый край контейнера левее правого края окна,\n // то сдвигаем и лоадер\n if (containerRight < windowWidth) {\n spinnerStyle.right = windowWidth - containerRight;\n }\n\n this.setState({\n isStickySpinner: true,\n spinnerStyle,\n });\n };\n\n private disableChildrenFocus = () => {\n if (!this.childrenObserver) {\n this.makeObservable();\n }\n const tabbableElements = getTabbableElements(this.childrenContainerNode);\n tabbableElements.forEach((el) => {\n if (!el.hasAttribute('origin-tabindex')) {\n el.setAttribute('origin-tabindex', el.tabIndex.toString());\n }\n el.tabIndex = -1;\n });\n };\n\n private enableChildrenFocus = () => {\n this.makeUnobservable();\n document.querySelectorAll('[origin-tabindex]').forEach((el) => {\n el.setAttribute('tabindex', el.getAttribute('origin-tabindex') ?? '0');\n el.removeAttribute('origin-tabindex');\n });\n };\n\n private makeObservable = () => {\n const target = this.childrenContainerNode;\n if (!target) {\n return;\n }\n const config = {\n childList: true,\n subtree: true,\n };\n const observer = new MutationObserver(this.disableChildrenFocus);\n observer.observe(target, config);\n this.childrenObserver = observer;\n };\n\n private makeUnobservable = () => {\n this.childrenObserver?.disconnect();\n this.childrenObserver = null;\n };\n}\n"]}
|
|
@@ -30,6 +30,7 @@ export interface LoaderProps extends CommonProps {
|
|
|
30
30
|
export interface LoaderState {
|
|
31
31
|
isStickySpinner: boolean;
|
|
32
32
|
isSpinnerVisible: boolean;
|
|
33
|
+
isLoaderActive: boolean;
|
|
33
34
|
spinnerStyle?: object;
|
|
34
35
|
}
|
|
35
36
|
/**
|
|
@@ -82,8 +83,9 @@ export declare class Loader extends React.Component<LoaderProps, LoaderState> {
|
|
|
82
83
|
private childrenObserver;
|
|
83
84
|
constructor(props: LoaderProps);
|
|
84
85
|
componentDidMount(): void;
|
|
85
|
-
componentDidUpdate(prevProps: Readonly<LoaderProps>): void;
|
|
86
|
+
componentDidUpdate(prevProps: Readonly<LoaderProps>, prevState: Readonly<LoaderState>): void;
|
|
86
87
|
componentWillUnmount(): void;
|
|
88
|
+
static getDerivedStateFromProps(props: LoaderProps, state: LoaderState): Partial<LoaderState>;
|
|
87
89
|
render(): JSX.Element;
|
|
88
90
|
private renderMain;
|
|
89
91
|
private childrenRef;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
```jsx harmony
|
|
2
2
|
import { Link } from '@skbkontur/react-ui';
|
|
3
3
|
|
|
4
|
-
<MenuItem href="
|
|
4
|
+
<MenuItem href="//tech.skbkontur.ru/react-ui/" component={({ href, ...rest }) => <Link to={href} {...rest} />}>
|
|
5
5
|
Awesome link
|
|
6
6
|
</MenuItem>;
|
|
7
7
|
```
|
|
@@ -10,7 +10,7 @@ export var styles = memoizeStyle({
|
|
|
10
10
|
var legacyPaddingY = parseFloat(t.menuItemLegacyPaddingY);
|
|
11
11
|
var paddingX = legacyPaddingX !== 0 ? parseFloat(t.menuItemPaddingX) + legacyPaddingX + "px" : t.menuItemPaddingX;
|
|
12
12
|
var paddingY = legacyPaddingY !== 0 ? parseFloat(t.menuItemPaddingY) + legacyPaddingY + "px" : t.menuItemPaddingY;
|
|
13
|
-
return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n ", ";\n\n cursor: pointer;\n display: block;\n line-height: ", ";\n font-size: ", ";\n padding: ", " ", " ", " ", ";\n position: relative;\n text-decoration: none;\n\n button& {\n min-width: 100%;\n }\n "])), resetButton(), t.menuItemLineHeight, t.menuItemFontSize, t.menuItemPaddingY, paddingX, paddingY, t.menuItemPaddingX);
|
|
13
|
+
return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n ", ";\n\n cursor: pointer;\n display: block;\n line-height: ", ";\n font-size: ", ";\n padding: ", " ", " ", " ", ";\n position: relative;\n text-decoration: none;\n color: ", ";\n\n button& {\n min-width: 100%;\n }\n "])), resetButton(), t.menuItemLineHeight, t.menuItemFontSize, t.menuItemPaddingY, paddingX, paddingY, t.menuItemPaddingX, t.menuItemTextColor);
|
|
14
14
|
},
|
|
15
15
|
hover: function hover(t) {
|
|
16
16
|
// Color with !important in purpose to override `a:hover`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["MenuItem.styles.ts"],"names":["css","memoizeStyle","resetButton","styles","root","t","legacyPaddingX","parseFloat","menuItemLegacyPaddingX","legacyPaddingY","menuItemLegacyPaddingY","paddingX","menuItemPaddingX","paddingY","menuItemPaddingY","menuItemLineHeight","menuItemFontSize","hover","menuItemHoverBg","menuItemHoverColor","selected","menuItemSelectedBg","disabled","menuItemDisabledColor","link","menuItemLinkColor","loose","withIcon","menuItemPaddingForIcon","comment","menuItemCommentColor","commentHover","menuItemCommentColorHover","icon","menuItemIconWidth","parseInt","menuItemIconLegacyMargin","menuItemIconLegacyShift"],"mappings":";AACA,SAASA,GAAT,EAAcC,YAAd,QAAkC,2BAAlC;AACA,SAASC,WAAT,QAA4B,yBAA5B;;AAEA,OAAO,IAAMC,MAAM,GAAGF,YAAY,CAAC;AACjCG,EAAAA,IADiC,gBAC5BC,CAD4B,EAClB;AACb,QAAMC,cAAc,GAAGC,UAAU,CAACF,CAAC,CAACG,sBAAH,CAAjC;AACA,QAAMC,cAAc,GAAGF,UAAU,CAACF,CAAC,CAACK,sBAAH,CAAjC;;AAEA,QAAMC,QAAQ,GAAGL,cAAc,KAAK,CAAnB,GAA0BC,UAAU,CAACF,CAAC,CAACO,gBAAH,CAAV,GAAiCN,cAA3D,UAAgFD,CAAC,CAACO,gBAAnG;AACA,QAAMC,QAAQ,GAAGJ,cAAc,KAAK,CAAnB,GAA0BF,UAAU,CAACF,CAAC,CAACS,gBAAH,CAAV,GAAiCL,cAA3D,UAAgFJ,CAAC,CAACS,gBAAnG;;AAEA,WAAOd,GAAP;AACIE,IAAAA,WAAW,EADf;;;;AAKiBG,IAAAA,CAAC,CAACU,kBALnB;AAMeV,IAAAA,CAAC,CAACW,gBANjB;AAOaX,IAAAA,CAAC,CAACS,gBAPf,EAOmCH,QAPnC,EAO+CE,QAP/C,EAO2DR,CAAC,CAACO,gBAP7D
|
|
1
|
+
{"version":3,"sources":["MenuItem.styles.ts"],"names":["css","memoizeStyle","resetButton","styles","root","t","legacyPaddingX","parseFloat","menuItemLegacyPaddingX","legacyPaddingY","menuItemLegacyPaddingY","paddingX","menuItemPaddingX","paddingY","menuItemPaddingY","menuItemLineHeight","menuItemFontSize","menuItemTextColor","hover","menuItemHoverBg","menuItemHoverColor","selected","menuItemSelectedBg","disabled","menuItemDisabledColor","link","menuItemLinkColor","loose","withIcon","menuItemPaddingForIcon","comment","menuItemCommentColor","commentHover","menuItemCommentColorHover","icon","menuItemIconWidth","parseInt","menuItemIconLegacyMargin","menuItemIconLegacyShift"],"mappings":";AACA,SAASA,GAAT,EAAcC,YAAd,QAAkC,2BAAlC;AACA,SAASC,WAAT,QAA4B,yBAA5B;;AAEA,OAAO,IAAMC,MAAM,GAAGF,YAAY,CAAC;AACjCG,EAAAA,IADiC,gBAC5BC,CAD4B,EAClB;AACb,QAAMC,cAAc,GAAGC,UAAU,CAACF,CAAC,CAACG,sBAAH,CAAjC;AACA,QAAMC,cAAc,GAAGF,UAAU,CAACF,CAAC,CAACK,sBAAH,CAAjC;;AAEA,QAAMC,QAAQ,GAAGL,cAAc,KAAK,CAAnB,GAA0BC,UAAU,CAACF,CAAC,CAACO,gBAAH,CAAV,GAAiCN,cAA3D,UAAgFD,CAAC,CAACO,gBAAnG;AACA,QAAMC,QAAQ,GAAGJ,cAAc,KAAK,CAAnB,GAA0BF,UAAU,CAACF,CAAC,CAACS,gBAAH,CAAV,GAAiCL,cAA3D,UAAgFJ,CAAC,CAACS,gBAAnG;;AAEA,WAAOd,GAAP;AACIE,IAAAA,WAAW,EADf;;;;AAKiBG,IAAAA,CAAC,CAACU,kBALnB;AAMeV,IAAAA,CAAC,CAACW,gBANjB;AAOaX,IAAAA,CAAC,CAACS,gBAPf,EAOmCH,QAPnC,EAO+CE,QAP/C,EAO2DR,CAAC,CAACO,gBAP7D;;;AAUWP,IAAAA,CAAC,CAACY,iBAVb;;;;;;AAgBD,GAxBgC;;AA0BjCC,EAAAA,KA1BiC,iBA0B3Bb,CA1B2B,EA0BjB;AACd;AACA,WAAOL,GAAP;AACgBK,IAAAA,CAAC,CAACc,eADlB;AAEWd,IAAAA,CAAC,CAACe,kBAFb;;AAID,GAhCgC;AAiCjCC,EAAAA,QAjCiC,oBAiCxBhB,CAjCwB,EAiCd;AACjB,WAAOL,GAAP;AACgBK,IAAAA,CAAC,CAACiB,kBADlB;;AAGD,GArCgC;AAsCjCC,EAAAA,QAtCiC,oBAsCxBlB,CAtCwB,EAsCd;AACjB,WAAOL,GAAP;;AAEWK,IAAAA,CAAC,CAACmB,qBAFb;;;AAKD,GA5CgC;AA6CjCC,EAAAA,IA7CiC,gBA6C5BpB,CA7C4B,EA6ClB;AACb,WAAOL,GAAP;AACWK,IAAAA,CAAC,CAACqB,iBADb;;AAGD,GAjDgC;AAkDjCC,EAAAA,KAlDiC,mBAkDzB;AACN,WAAO3B,GAAP;;;AAGD,GAtDgC;AAuDjC4B,EAAAA,QAvDiC,oBAuDxBvB,CAvDwB,EAuDd;AACjB,WAAOL,GAAP;AACkBK,IAAAA,CAAC,CAACwB,sBADpB;;AAGD,GA3DgC;AA4DjCC,EAAAA,OA5DiC,mBA4DzBzB,CA5DyB,EA4Df;AAChB,WAAOL,GAAP;AACWK,IAAAA,CAAC,CAAC0B,oBADb;;;AAID,GAjEgC;AAkEjCC,EAAAA,YAlEiC,wBAkEpB3B,CAlEoB,EAkEV;AACrB,WAAOL,GAAP;AACWK,IAAAA,CAAC,CAAC4B,yBADb;;;AAID,GAvEgC;AAwEjCC,EAAAA,IAxEiC,gBAwE5B7B,CAxE4B,EAwElB;AACb,WAAOL,GAAP;AACWK,IAAAA,CAAC,CAAC8B,iBADb;;;AAIUC,IAAAA,QAAQ,CAAC/B,CAAC,CAACO,gBAAH,CAAR,GAA+BwB,QAAQ,CAAC/B,CAAC,CAACgC,wBAAH,CAJjD;AAKShC,IAAAA,CAAC,CAACS,gBALX;AAM0BT,IAAAA,CAAC,CAACiC,uBAN5B;;AAQD,GAjFgC,EAAD,CAA3B","sourcesContent":["import { Theme } from '../../lib/theming/Theme';\nimport { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { resetButton } from '../../lib/styles/Mixins';\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n const legacyPaddingX = parseFloat(t.menuItemLegacyPaddingX);\n const legacyPaddingY = parseFloat(t.menuItemLegacyPaddingY);\n\n const paddingX = legacyPaddingX !== 0 ? `${parseFloat(t.menuItemPaddingX) + legacyPaddingX}px` : t.menuItemPaddingX;\n const paddingY = legacyPaddingY !== 0 ? `${parseFloat(t.menuItemPaddingY) + legacyPaddingY}px` : t.menuItemPaddingY;\n\n return css`\n ${resetButton()};\n\n cursor: pointer;\n display: block;\n line-height: ${t.menuItemLineHeight};\n font-size: ${t.menuItemFontSize};\n padding: ${t.menuItemPaddingY} ${paddingX} ${paddingY} ${t.menuItemPaddingX};\n position: relative;\n text-decoration: none;\n color: ${t.menuItemTextColor};\n\n button& {\n min-width: 100%;\n }\n `;\n },\n\n hover(t: Theme) {\n // Color with !important in purpose to override `a:hover`\n return css`\n background: ${t.menuItemHoverBg} !important;\n color: ${t.menuItemHoverColor} !important;\n `;\n },\n selected(t: Theme) {\n return css`\n background: ${t.menuItemSelectedBg} !important;\n `;\n },\n disabled(t: Theme) {\n return css`\n background: transparent;\n color: ${t.menuItemDisabledColor};\n cursor: default;\n `;\n },\n link(t: Theme) {\n return css`\n color: ${t.menuItemLinkColor};\n `;\n },\n loose() {\n return css`\n padding-left: 15px;\n `;\n },\n withIcon(t: Theme) {\n return css`\n padding-left: ${t.menuItemPaddingForIcon};\n `;\n },\n comment(t: Theme) {\n return css`\n color: ${t.menuItemCommentColor};\n white-space: normal;\n `;\n },\n commentHover(t: Theme) {\n return css`\n color: ${t.menuItemCommentColorHover};\n opacity: 0.6;\n `;\n },\n icon(t: Theme) {\n return css`\n width: ${t.menuItemIconWidth};\n display: inline-block;\n position: absolute;\n left: ${parseInt(t.menuItemPaddingX) + parseInt(t.menuItemIconLegacyMargin)}px;\n top: ${t.menuItemPaddingY};\n transform: translateY(${t.menuItemIconLegacyShift});\n `;\n },\n});\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTemplateLiteralLoose";
|
|
2
2
|
|
|
3
|
-
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21, _templateObject22;
|
|
3
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21, _templateObject22, _templateObject23;
|
|
4
4
|
|
|
5
5
|
import { css, memoizeStyle } from "../../../lib/theming/Emotion";
|
|
6
6
|
import { resetButton } from "../../../lib/styles/Mixins";
|
|
@@ -25,7 +25,7 @@ export var styles = memoizeStyle({
|
|
|
25
25
|
},
|
|
26
26
|
close: function close(t) {
|
|
27
27
|
var padding = parseInt(t.modalCloseButtonPadding);
|
|
28
|
-
return css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteralLoose(["\n ", ";\n position: absolute;\n display: flex;\n right: ", "px;\n top: ", "px;\n background: none;\n background: transparent;\n cursor: pointer;\n color: ", ";\n text-align: center;\n vertical-align: middle;\n padding: ", ";\n margin: -", ";\n\n &:
|
|
28
|
+
return css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteralLoose(["\n ", ";\n position: absolute;\n display: flex;\n right: ", "px;\n top: ", "px;\n background: none;\n background: transparent;\n cursor: pointer;\n color: ", ";\n text-align: center;\n vertical-align: middle;\n padding: ", ";\n margin: -", ";\n\n &:hover {\n color: ", ";\n }\n\n & > svg {\n width: ", ";\n height: ", ";\n box-sizing: content-box;\n }\n "])), resetButton(), padding, padding, t.modalCloseButtonColor, t.modalCloseButtonClickArea, t.modalCloseButtonClickArea, t.modalCloseButtonHoverColor, t.modalCloseIconSize, t.modalCloseIconSize);
|
|
29
29
|
},
|
|
30
30
|
closeWrapper: function closeWrapper(t) {
|
|
31
31
|
var padding = parseInt(t.modalCloseButtonPadding);
|
|
@@ -39,44 +39,47 @@ export var styles = memoizeStyle({
|
|
|
39
39
|
disabled: function disabled(t) {
|
|
40
40
|
return css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteralLoose(["\n pointer-events: none;\n cursor: default;\n color: ", ";\n "])), t.modalCloseButtonDisabledColor);
|
|
41
41
|
},
|
|
42
|
+
focus: function focus(t) {
|
|
43
|
+
return css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteralLoose(["\n color: ", ";\n outline: 2px solid ", ";\n "])), t.modalCloseButtonHoverColor, t.borderColorFocus);
|
|
44
|
+
},
|
|
42
45
|
headerWrapper: function headerWrapper() {
|
|
43
|
-
return css(
|
|
46
|
+
return css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteralLoose(["\n position: relative;\n "])));
|
|
44
47
|
},
|
|
45
48
|
header: function header(t) {
|
|
46
|
-
return css(
|
|
49
|
+
return css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteralLoose(["\n font-size: ", ";\n line-height: ", ";\n padding: ", " ", " ", " ", ";\n overflow-wrap: break-word;\n word-wrap: break-word;\n color: ", ";\n "])), t.modalHeaderFontSize, t.modalHeaderLineHeight, t.modalHeaderPaddingTop, t.modalPaddingRight, t.modalHeaderPaddingBottom, t.modalPaddingLeft, t.modalHeaderTextColor);
|
|
47
50
|
},
|
|
48
51
|
body: function body(t) {
|
|
49
|
-
return css(
|
|
52
|
+
return css(_templateObject13 || (_templateObject13 = _taggedTemplateLiteralLoose(["\n padding: 0 ", " ", " ", ";\n "])), t.modalPaddingRight, t.modalBodyPaddingBottom, t.modalPaddingLeft);
|
|
50
53
|
},
|
|
51
54
|
headerWithClose: function headerWithClose(t) {
|
|
52
55
|
var rightPadding = 2 * parseInt(t.modalCloseButtonPadding) + parseInt(t.modalCloseIconSize) + parseInt(t.modalCloseLegacyGap);
|
|
53
|
-
return css(
|
|
56
|
+
return css(_templateObject14 || (_templateObject14 = _taggedTemplateLiteralLoose(["\n padding-right: ", "px;\n "])), rightPadding);
|
|
54
57
|
},
|
|
55
58
|
footer: function footer(t) {
|
|
56
|
-
return css(
|
|
59
|
+
return css(_templateObject15 || (_templateObject15 = _taggedTemplateLiteralLoose(["\n padding: ", " ", " ", " ", ";\n "])), t.modalFooterPaddingTop, t.modalPaddingRight, t.modalFooterPaddingBottom, t.modalPaddingLeft);
|
|
57
60
|
},
|
|
58
61
|
footerWrapper: function footerWrapper() {
|
|
59
|
-
return css(
|
|
62
|
+
return css(_templateObject16 || (_templateObject16 = _taggedTemplateLiteralLoose(["\n position: relative;\n "])));
|
|
60
63
|
},
|
|
61
64
|
panel: function panel(t) {
|
|
62
|
-
return css(
|
|
65
|
+
return css(_templateObject17 || (_templateObject17 = _taggedTemplateLiteralLoose(["\n padding-top: ", ";\n padding-bottom: ", ";\n background: ", ";\n "])), t.modalFooterPanelPaddingTop, t.modalFooterPanelPaddingBottom, t.modalFooterBg);
|
|
63
66
|
},
|
|
64
67
|
fixedHeader: function fixedHeader(t) {
|
|
65
|
-
return css(
|
|
68
|
+
return css(_templateObject18 || (_templateObject18 = _taggedTemplateLiteralLoose(["\n margin-bottom: 10px;\n padding-bottom: ", ";\n background: ", ";\n\n &:after {\n bottom: 11px;\n content: '';\n position: absolute;\n height: 1px;\n width: 100%;\n left: 0;\n z-index: -1;\n box-shadow: ", ";\n }\n "])), t.modalFixedHeaderPaddingBottom, t.modalFixedHeaderBg, t.modalFixedHeaderShadow);
|
|
66
69
|
},
|
|
67
70
|
fixedFooter: function fixedFooter(t) {
|
|
68
|
-
return css(
|
|
71
|
+
return css(_templateObject19 || (_templateObject19 = _taggedTemplateLiteralLoose(["\n padding-top: 20px;\n margin-top: 10px;\n background: ", ";\n\n &:before {\n top: 11px;\n content: '';\n position: absolute;\n height: 1px;\n width: 100%;\n left: 0;\n z-index: -1;\n box-shadow: ", ";\n }\n "])), t.modalFixedHeaderBg, t.modalFixedFooterShadow);
|
|
69
72
|
},
|
|
70
73
|
headerAddPadding: function headerAddPadding() {
|
|
71
|
-
return css(
|
|
74
|
+
return css(_templateObject20 || (_templateObject20 = _taggedTemplateLiteralLoose(["\n padding-bottom: 22px;\n "])));
|
|
72
75
|
},
|
|
73
76
|
bodyWithoutHeader: function bodyWithoutHeader(t) {
|
|
74
|
-
return css(
|
|
77
|
+
return css(_templateObject21 || (_templateObject21 = _taggedTemplateLiteralLoose(["\n padding-top: ", ";\n "])), t.modalPaddingTop);
|
|
75
78
|
},
|
|
76
79
|
bodyWithoutPadding: function bodyWithoutPadding() {
|
|
77
|
-
return css(
|
|
80
|
+
return css(_templateObject22 || (_templateObject22 = _taggedTemplateLiteralLoose(["\n padding: 0;\n "])));
|
|
78
81
|
},
|
|
79
82
|
bodyAddPaddingForPanel: function bodyAddPaddingForPanel(t) {
|
|
80
|
-
return css(
|
|
83
|
+
return css(_templateObject23 || (_templateObject23 = _taggedTemplateLiteralLoose(["\n padding-bottom: ", ";\n "])), t.modalPaddingBottom);
|
|
81
84
|
}
|
|
82
85
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Modal.styles.ts"],"names":["css","memoizeStyle","resetButton","styles","root","bg","t","modalBackBg","modalBackOpacity","container","window","bgDefault","centerContainer","modalAdaptiveThreshold","alignTop","close","padding","parseInt","modalCloseButtonPadding","modalCloseButtonColor","modalCloseButtonClickArea","modalCloseButtonHoverColor","borderColorFocus","modalCloseIconSize","closeWrapper","paddingBottom","modalCloseButtonBottomPadding","legacyGap","modalCloseWrapperLegacyGap","legacyShift","modalCloseButtonLegacyShift","blockSizeX","blockSizeY","disabled","modalCloseButtonDisabledColor","headerWrapper","header","modalHeaderFontSize","modalHeaderLineHeight","modalHeaderPaddingTop","modalPaddingRight","modalHeaderPaddingBottom","modalPaddingLeft","body","modalBodyPaddingBottom","headerWithClose","rightPadding","modalCloseLegacyGap","footer","modalFooterPaddingTop","modalFooterPaddingBottom","footerWrapper","panel","modalFooterPanelPaddingTop","modalFooterPanelPaddingBottom","modalFooterBg","fixedHeader","modalFixedHeaderPaddingBottom","modalFixedHeaderBg","modalFixedHeaderShadow","fixedFooter","modalFixedFooterShadow","headerAddPadding","bodyWithoutHeader","modalPaddingTop","bodyWithoutPadding","bodyAddPaddingForPanel","modalPaddingBottom"],"mappings":"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","sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\nimport { resetButton } from '../../lib/styles/Mixins';\n\nexport const styles = memoizeStyle({\n root() {\n return css`\n height: 100%;\n left: 0;\n position: fixed;\n top: 0;\n width: 100%;\n `;\n },\n\n bg(t: Theme) {\n return css`\n bottom: 0;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n background: ${t.modalBackBg};\n opacity: ${t.modalBackOpacity};\n `;\n },\n\n container() {\n return css`\n position: relative;\n white-space: nowrap;\n text-align: center;\n height: 100%;\n overflow-y: auto;\n outline: none;\n\n &::before {\n content: '';\n display: inline-block;\n vertical-align: middle;\n height: 80%; /* to vertical align modal 40%/60% of screen height */\n }\n `;\n },\n\n window(t: Theme) {\n return css`\n position: relative;\n white-space: normal;\n margin: auto;\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n background: ${t.bgDefault};\n `;\n },\n\n centerContainer(t: Theme) {\n return css`\n position: relative;\n display: inline-block;\n text-align: left;\n vertical-align: middle;\n box-sizing: border-box;\n z-index: 10;\n margin: 40px 20px;\n\n @media screen and (max-width: ${t.modalAdaptiveThreshold}) {\n margin: 0;\n width: 100%;\n }\n `;\n },\n\n alignTop() {\n return css`\n vertical-align: top;\n `;\n },\n\n close(t: Theme) {\n const padding = parseInt(t.modalCloseButtonPadding);\n return css`\n ${resetButton()};\n position: absolute;\n display: flex;\n right: ${padding}px;\n top: ${padding}px;\n background: none;\n background: transparent;\n cursor: pointer;\n color: ${t.modalCloseButtonColor};\n text-align: center;\n vertical-align: middle;\n padding: ${t.modalCloseButtonClickArea};\n margin: -${t.modalCloseButtonClickArea};\n\n &:focus,\n &:hover {\n color: ${t.modalCloseButtonHoverColor};\n }\n\n &:focus {\n outline: 2px solid ${t.borderColorFocus};\n }\n\n & > svg {\n width: ${t.modalCloseIconSize};\n height: ${t.modalCloseIconSize};\n box-sizing: content-box;\n }\n `;\n },\n\n closeWrapper(t: Theme) {\n const padding = parseInt(t.modalCloseButtonPadding);\n const paddingBottom = parseInt(t.modalCloseButtonBottomPadding);\n const legacyGap = parseInt(t.modalCloseWrapperLegacyGap);\n const legacyShift = parseInt(t.modalCloseButtonLegacyShift);\n const blockSizeX = parseInt(t.modalCloseIconSize) + 2 * padding - legacyShift;\n const blockSizeY = parseInt(t.modalCloseIconSize) + padding + paddingBottom + legacyGap;\n return css`\n position: relative;\n float: right;\n width: ${blockSizeX + legacyGap}px;\n height: ${blockSizeY}px;\n `;\n },\n\n disabled(t: Theme) {\n return css`\n pointer-events: none;\n cursor: default;\n color: ${t.modalCloseButtonDisabledColor};\n `;\n },\n\n headerWrapper() {\n return css`\n position: relative;\n `;\n },\n\n header(t: Theme) {\n return css`\n font-size: ${t.modalHeaderFontSize};\n line-height: ${t.modalHeaderLineHeight};\n padding: ${t.modalHeaderPaddingTop} ${t.modalPaddingRight} ${t.modalHeaderPaddingBottom} ${t.modalPaddingLeft};\n overflow-wrap: break-word;\n word-wrap: break-word;\n `;\n },\n\n body(t: Theme) {\n return css`\n padding: 0 ${t.modalPaddingRight} ${t.modalBodyPaddingBottom} ${t.modalPaddingLeft};\n `;\n },\n\n headerWithClose(t: Theme) {\n const rightPadding =\n 2 * parseInt(t.modalCloseButtonPadding) + parseInt(t.modalCloseIconSize) + parseInt(t.modalCloseLegacyGap);\n\n return css`\n padding-right: ${rightPadding}px;\n `;\n },\n\n footer(t: Theme) {\n return css`\n padding: ${t.modalFooterPaddingTop} ${t.modalPaddingRight} ${t.modalFooterPaddingBottom} ${t.modalPaddingLeft};\n `;\n },\n\n footerWrapper() {\n return css`\n position: relative;\n `;\n },\n\n panel(t: Theme) {\n return css`\n padding-top: ${t.modalFooterPanelPaddingTop};\n padding-bottom: ${t.modalFooterPanelPaddingBottom};\n background: ${t.modalFooterBg};\n `;\n },\n\n fixedHeader(t: Theme) {\n return css`\n margin-bottom: 10px;\n padding-bottom: ${t.modalFixedHeaderPaddingBottom};\n background: ${t.modalFixedHeaderBg};\n\n &:after {\n bottom: 11px;\n content: '';\n position: absolute;\n height: 1px;\n width: 100%;\n left: 0;\n z-index: -1;\n box-shadow: ${t.modalFixedHeaderShadow};\n }\n `;\n },\n\n fixedFooter(t: Theme) {\n return css`\n padding-top: 20px;\n margin-top: 10px;\n background: ${t.modalFixedHeaderBg};\n\n &:before {\n top: 11px;\n content: '';\n position: absolute;\n height: 1px;\n width: 100%;\n left: 0;\n z-index: -1;\n box-shadow: ${t.modalFixedFooterShadow};\n }\n `;\n },\n\n headerAddPadding() {\n return css`\n padding-bottom: 22px;\n `;\n },\n\n bodyWithoutHeader(t: Theme) {\n return css`\n padding-top: ${t.modalPaddingTop};\n `;\n },\n\n bodyWithoutPadding() {\n return css`\n padding: 0;\n `;\n },\n\n bodyAddPaddingForPanel(t: Theme) {\n return css`\n padding-bottom: ${t.modalPaddingBottom};\n `;\n },\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["Modal.styles.ts"],"names":["css","memoizeStyle","resetButton","styles","root","bg","t","modalBackBg","modalBackOpacity","container","window","bgDefault","centerContainer","modalAdaptiveThreshold","alignTop","close","padding","parseInt","modalCloseButtonPadding","modalCloseButtonColor","modalCloseButtonClickArea","modalCloseButtonHoverColor","modalCloseIconSize","closeWrapper","paddingBottom","modalCloseButtonBottomPadding","legacyGap","modalCloseWrapperLegacyGap","legacyShift","modalCloseButtonLegacyShift","blockSizeX","blockSizeY","disabled","modalCloseButtonDisabledColor","focus","borderColorFocus","headerWrapper","header","modalHeaderFontSize","modalHeaderLineHeight","modalHeaderPaddingTop","modalPaddingRight","modalHeaderPaddingBottom","modalPaddingLeft","modalHeaderTextColor","body","modalBodyPaddingBottom","headerWithClose","rightPadding","modalCloseLegacyGap","footer","modalFooterPaddingTop","modalFooterPaddingBottom","footerWrapper","panel","modalFooterPanelPaddingTop","modalFooterPanelPaddingBottom","modalFooterBg","fixedHeader","modalFixedHeaderPaddingBottom","modalFixedHeaderBg","modalFixedHeaderShadow","fixedFooter","modalFixedFooterShadow","headerAddPadding","bodyWithoutHeader","modalPaddingTop","bodyWithoutPadding","bodyAddPaddingForPanel","modalPaddingBottom"],"mappings":"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","sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\nimport { resetButton } from '../../lib/styles/Mixins';\n\nexport const styles = memoizeStyle({\n root() {\n return css`\n height: 100%;\n left: 0;\n position: fixed;\n top: 0;\n width: 100%;\n `;\n },\n\n bg(t: Theme) {\n return css`\n bottom: 0;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n background: ${t.modalBackBg};\n opacity: ${t.modalBackOpacity};\n `;\n },\n\n container() {\n return css`\n position: relative;\n white-space: nowrap;\n text-align: center;\n height: 100%;\n overflow-y: auto;\n outline: none;\n\n &::before {\n content: '';\n display: inline-block;\n vertical-align: middle;\n height: 80%; /* to vertical align modal 40%/60% of screen height */\n }\n `;\n },\n\n window(t: Theme) {\n return css`\n position: relative;\n white-space: normal;\n margin: auto;\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n background: ${t.bgDefault};\n `;\n },\n\n centerContainer(t: Theme) {\n return css`\n position: relative;\n display: inline-block;\n text-align: left;\n vertical-align: middle;\n box-sizing: border-box;\n z-index: 10;\n margin: 40px 20px;\n\n @media screen and (max-width: ${t.modalAdaptiveThreshold}) {\n margin: 0;\n width: 100%;\n }\n `;\n },\n\n alignTop() {\n return css`\n vertical-align: top;\n `;\n },\n\n close(t: Theme) {\n const padding = parseInt(t.modalCloseButtonPadding);\n return css`\n ${resetButton()};\n position: absolute;\n display: flex;\n right: ${padding}px;\n top: ${padding}px;\n background: none;\n background: transparent;\n cursor: pointer;\n color: ${t.modalCloseButtonColor};\n text-align: center;\n vertical-align: middle;\n padding: ${t.modalCloseButtonClickArea};\n margin: -${t.modalCloseButtonClickArea};\n\n &:hover {\n color: ${t.modalCloseButtonHoverColor};\n }\n\n & > svg {\n width: ${t.modalCloseIconSize};\n height: ${t.modalCloseIconSize};\n box-sizing: content-box;\n }\n `;\n },\n\n closeWrapper(t: Theme) {\n const padding = parseInt(t.modalCloseButtonPadding);\n const paddingBottom = parseInt(t.modalCloseButtonBottomPadding);\n const legacyGap = parseInt(t.modalCloseWrapperLegacyGap);\n const legacyShift = parseInt(t.modalCloseButtonLegacyShift);\n const blockSizeX = parseInt(t.modalCloseIconSize) + 2 * padding - legacyShift;\n const blockSizeY = parseInt(t.modalCloseIconSize) + padding + paddingBottom + legacyGap;\n return css`\n position: relative;\n float: right;\n width: ${blockSizeX + legacyGap}px;\n height: ${blockSizeY}px;\n `;\n },\n\n disabled(t: Theme) {\n return css`\n pointer-events: none;\n cursor: default;\n color: ${t.modalCloseButtonDisabledColor};\n `;\n },\n\n focus(t: Theme) {\n return css`\n color: ${t.modalCloseButtonHoverColor};\n outline: 2px solid ${t.borderColorFocus};\n `;\n },\n\n headerWrapper() {\n return css`\n position: relative;\n `;\n },\n\n header(t: Theme) {\n return css`\n font-size: ${t.modalHeaderFontSize};\n line-height: ${t.modalHeaderLineHeight};\n padding: ${t.modalHeaderPaddingTop} ${t.modalPaddingRight} ${t.modalHeaderPaddingBottom} ${t.modalPaddingLeft};\n overflow-wrap: break-word;\n word-wrap: break-word;\n color: ${t.modalHeaderTextColor};\n `;\n },\n\n body(t: Theme) {\n return css`\n padding: 0 ${t.modalPaddingRight} ${t.modalBodyPaddingBottom} ${t.modalPaddingLeft};\n `;\n },\n\n headerWithClose(t: Theme) {\n const rightPadding =\n 2 * parseInt(t.modalCloseButtonPadding) + parseInt(t.modalCloseIconSize) + parseInt(t.modalCloseLegacyGap);\n\n return css`\n padding-right: ${rightPadding}px;\n `;\n },\n\n footer(t: Theme) {\n return css`\n padding: ${t.modalFooterPaddingTop} ${t.modalPaddingRight} ${t.modalFooterPaddingBottom} ${t.modalPaddingLeft};\n `;\n },\n\n footerWrapper() {\n return css`\n position: relative;\n `;\n },\n\n panel(t: Theme) {\n return css`\n padding-top: ${t.modalFooterPanelPaddingTop};\n padding-bottom: ${t.modalFooterPanelPaddingBottom};\n background: ${t.modalFooterBg};\n `;\n },\n\n fixedHeader(t: Theme) {\n return css`\n margin-bottom: 10px;\n padding-bottom: ${t.modalFixedHeaderPaddingBottom};\n background: ${t.modalFixedHeaderBg};\n\n &:after {\n bottom: 11px;\n content: '';\n position: absolute;\n height: 1px;\n width: 100%;\n left: 0;\n z-index: -1;\n box-shadow: ${t.modalFixedHeaderShadow};\n }\n `;\n },\n\n fixedFooter(t: Theme) {\n return css`\n padding-top: 20px;\n margin-top: 10px;\n background: ${t.modalFixedHeaderBg};\n\n &:before {\n top: 11px;\n content: '';\n position: absolute;\n height: 1px;\n width: 100%;\n left: 0;\n z-index: -1;\n box-shadow: ${t.modalFixedFooterShadow};\n }\n `;\n },\n\n headerAddPadding() {\n return css`\n padding-bottom: 22px;\n `;\n },\n\n bodyWithoutHeader(t: Theme) {\n return css`\n padding-top: ${t.modalPaddingTop};\n `;\n },\n\n bodyWithoutPadding() {\n return css`\n padding: 0;\n `;\n },\n\n bodyAddPaddingForPanel(t: Theme) {\n return css`\n padding-bottom: ${t.modalPaddingBottom};\n `;\n },\n});\n"]}
|
|
@@ -2,6 +2,7 @@ import React, { useContext } from 'react';
|
|
|
2
2
|
import { ThemeContext } from "../../../lib/theming/ThemeContext";
|
|
3
3
|
import { CrossIcon } from "../../../internal/icons/CrossIcon";
|
|
4
4
|
import { cx } from "../../../lib/theming/Emotion";
|
|
5
|
+
import { keyListener } from "../../../lib/events/keyListener";
|
|
5
6
|
import { styles } from "../Modal.styles";
|
|
6
7
|
export function ModalClose(_ref) {
|
|
7
8
|
var _cx;
|
|
@@ -9,9 +10,31 @@ export function ModalClose(_ref) {
|
|
|
9
10
|
var disableClose = _ref.disableClose,
|
|
10
11
|
requestClose = _ref.requestClose;
|
|
11
12
|
var theme = useContext(ThemeContext);
|
|
13
|
+
|
|
14
|
+
var _React$useState = React.useState(false),
|
|
15
|
+
focusedByTab = _React$useState[0],
|
|
16
|
+
setFocusedByTab = _React$useState[1];
|
|
17
|
+
|
|
18
|
+
var handleFocus = function handleFocus() {
|
|
19
|
+
// focus event fires before keyDown eventlistener
|
|
20
|
+
// so we should check tabPressed in async way
|
|
21
|
+
requestAnimationFrame(function () {
|
|
22
|
+
if (keyListener.isTabPressed) {
|
|
23
|
+
setFocusedByTab(true);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
var handleBlur = function handleBlur() {
|
|
29
|
+
setFocusedByTab(false);
|
|
30
|
+
};
|
|
31
|
+
|
|
12
32
|
return /*#__PURE__*/React.createElement("button", {
|
|
13
|
-
className: cx((_cx = {}, _cx[styles.close(theme)] = true, _cx[styles.disabled(theme)] = disableClose, _cx)),
|
|
33
|
+
className: cx((_cx = {}, _cx[styles.close(theme)] = true, _cx[styles.disabled(theme)] = disableClose, _cx[styles.focus(theme)] = focusedByTab, _cx)),
|
|
14
34
|
onClick: requestClose,
|
|
15
|
-
|
|
35
|
+
onFocus: handleFocus,
|
|
36
|
+
onBlur: handleBlur,
|
|
37
|
+
"data-tid": "modal-close",
|
|
38
|
+
tabIndex: disableClose ? -1 : 0
|
|
16
39
|
}, /*#__PURE__*/React.createElement(CrossIcon, null));
|
|
17
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ModalClose.tsx"],"names":["React","useContext","ThemeContext","CrossIcon","cx","styles","ModalClose","disableClose","requestClose","theme","close","disabled"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;;AAEA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAASC,SAAT,QAA0B,gCAA1B;AACA,SAASC,EAAT,QAAmB,2BAAnB;;;AAGA,SAASC,MAAT,QAAuB,gBAAvB;;AAEA,OAAO,SAASC,UAAT,OAAgE,aAA1CC,YAA0C,QAA1CA,YAA0C,CAA5BC,YAA4B,QAA5BA,YAA4B;AACrE,MAAMC,KAAK,
|
|
1
|
+
{"version":3,"sources":["ModalClose.tsx"],"names":["React","useContext","ThemeContext","CrossIcon","cx","keyListener","styles","ModalClose","disableClose","requestClose","theme","useState","focusedByTab","setFocusedByTab","handleFocus","requestAnimationFrame","isTabPressed","handleBlur","close","disabled","focus"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;;AAEA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAASC,SAAT,QAA0B,gCAA1B;AACA,SAASC,EAAT,QAAmB,2BAAnB;AACA,SAASC,WAAT,QAA4B,8BAA5B;;;AAGA,SAASC,MAAT,QAAuB,gBAAvB;;AAEA,OAAO,SAASC,UAAT,OAAgE,aAA1CC,YAA0C,QAA1CA,YAA0C,CAA5BC,YAA4B,QAA5BA,YAA4B;AACrE,MAAMC,KAAK,GAAGT,UAAU,CAACC,YAAD,CAAxB,CADqE;AAE7BF,EAAAA,KAAK,CAACW,QAAN,CAAe,KAAf,CAF6B,CAE9DC,YAF8D,sBAEhDC,eAFgD;;AAIrE,MAAMC,WAAW,GAAG,SAAdA,WAAc,GAAM;AACxB;AACA;AACAC,IAAAA,qBAAqB,CAAC,YAAM;AAC1B,UAAIV,WAAW,CAACW,YAAhB,EAA8B;AAC5BH,QAAAA,eAAe,CAAC,IAAD,CAAf;AACD;AACF,KAJoB,CAArB;AAKD,GARD;;AAUA,MAAMI,UAAU,GAAG,SAAbA,UAAa,GAAM;AACvBJ,IAAAA,eAAe,CAAC,KAAD,CAAf;AACD,GAFD;;AAIA;AACE;AACE,MAAA,SAAS,EAAET,EAAE;AACVE,MAAAA,MAAM,CAACY,KAAP,CAAaR,KAAb,CADU,IACY,IADZ;AAEVJ,MAAAA,MAAM,CAACa,QAAP,CAAgBT,KAAhB,CAFU,IAEeF,YAFf;AAGVF,MAAAA,MAAM,CAACc,KAAP,CAAaV,KAAb,CAHU,IAGYE,YAHZ,OADf;;AAME,MAAA,OAAO,EAAEH,YANX;AAOE,MAAA,OAAO,EAAEK,WAPX;AAQE,MAAA,MAAM,EAAEG,UARV;AASE,kBAAS,aATX;AAUE,MAAA,QAAQ,EAAET,YAAY,GAAG,CAAC,CAAJ,GAAQ,CAVhC;;AAYE,wBAAC,SAAD,OAZF,CADF;;;AAgBD","sourcesContent":["import React, { useContext } from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CrossIcon } from '../../internal/icons/CrossIcon';\nimport { cx } from '../../lib/theming/Emotion';\nimport { keyListener } from '../../lib/events/keyListener';\n\nimport { CloseProps } from './ModalContext';\nimport { styles } from './Modal.styles';\n\nexport function ModalClose({ disableClose, requestClose }: CloseProps) {\n const theme = useContext(ThemeContext);\n const [focusedByTab, setFocusedByTab] = React.useState(false);\n\n const handleFocus = () => {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n setFocusedByTab(true);\n }\n });\n };\n\n const handleBlur = () => {\n setFocusedByTab(false);\n };\n\n return (\n <button\n className={cx({\n [styles.close(theme)]: true,\n [styles.disabled(theme)]: disableClose,\n [styles.focus(theme)]: focusedByTab,\n })}\n onClick={requestClose}\n onFocus={handleFocus}\n onBlur={handleBlur}\n data-tid=\"modal-close\"\n tabIndex={disableClose ? -1 : 0}\n >\n <CrossIcon />\n </button>\n );\n}\n"]}
|
|
@@ -6,7 +6,7 @@ import React from 'react';
|
|
|
6
6
|
import { func, number } from 'prop-types';
|
|
7
7
|
import { isKeyArrowLeft, isKeyArrowRight, isKeyEnter } from "../../../lib/events/keyboard/identifiers";
|
|
8
8
|
import { locale } from "../../../lib/locale/decorators";
|
|
9
|
-
import {
|
|
9
|
+
import { keyListener } from "../../../lib/events/keyListener";
|
|
10
10
|
import { emptyHandler } from "../../../lib/utils";
|
|
11
11
|
import { isIE11 } from "../../../lib/client";
|
|
12
12
|
import { ThemeContext } from "../../../lib/theming/ThemeContext";
|
|
@@ -229,7 +229,7 @@ export var Paging = (_dec = locale('Paging', PagingLocaleHelper), _dec(_class =
|
|
|
229
229
|
|
|
230
230
|
|
|
231
231
|
requestAnimationFrame(function () {
|
|
232
|
-
if (
|
|
232
|
+
if (keyListener.isTabPressed) {
|
|
233
233
|
_this.setState({
|
|
234
234
|
focusedByTab: true
|
|
235
235
|
});
|