@itcase/ui 1.0.10 → 1.0.11
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/dist/Modal-375ef8c3.js +234 -0
- package/dist/components/Chips.js +2 -0
- package/dist/components/Choice.js +118 -0
- package/dist/components/DatePicker.js +9452 -0
- package/dist/components/DateRangePicker.js +218 -0
- package/dist/components/FormField.js +2 -1
- package/dist/components/Input.js +2 -0
- package/dist/components/Logo.js +4 -4
- package/dist/components/Modal.js +10 -228
- package/dist/components/RangeSlider.js +7 -1978
- package/dist/components/Scrollbar.js +5 -3826
- package/dist/components/Search.js +1 -1
- package/dist/components/Select.js +349 -270
- package/dist/components/Tab.js +0 -1
- package/dist/css/components/Choice/Choice.css +67 -0
- package/dist/css/components/DatePicker/DatePicker.css +898 -0
- package/dist/css/components/DateRangePicker/DateRangePicker.css +1021 -0
- package/dist/css/components/Select/Select.css +11 -4
- package/dist/css/components/Select/css/__menu/select__menu.css +7 -3
- package/dist/css/styles/fill/fill.css +4 -4
- package/dist/css/styles/fill/fill_active.css +5 -5
- package/dist/defineProperty-72768a50.js +157 -0
- package/dist/index-738f53f6.js +787 -0
- package/dist/typeof-6dd323c6.js +13 -0
- package/package.json +4 -1
- package/dist/objectWithoutProperties-ea190611.js +0 -188
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var clsx = require('clsx');
|
|
5
|
+
var reactDateRange = require('react-date-range');
|
|
6
|
+
var luxon = require('luxon');
|
|
7
|
+
var index$1 = require('../index-738f53f6.js');
|
|
8
|
+
var index$2 = require('./Button.js');
|
|
9
|
+
var Modal = require('../Modal-375ef8c3.js');
|
|
10
|
+
require('./Loader.js');
|
|
11
|
+
var index = require('./Input.js');
|
|
12
|
+
require('../typeof-6dd323c6.js');
|
|
13
|
+
require('prop-types');
|
|
14
|
+
require('../constants/componentProps/borderType.js');
|
|
15
|
+
require('../constants/componentProps/fill.js');
|
|
16
|
+
require('../constants/componentProps/horizontalResizeMode.js');
|
|
17
|
+
require('../constants/componentProps/shape.js');
|
|
18
|
+
require('../constants/componentProps/size.js');
|
|
19
|
+
require('../constants/componentProps/type.js');
|
|
20
|
+
require('../constants/componentProps/width.js');
|
|
21
|
+
require('./Icon.js');
|
|
22
|
+
require('react-inlinesvg');
|
|
23
|
+
require('../constants/componentProps/iconSize.js');
|
|
24
|
+
require('../constants/componentProps/strokeColor.js');
|
|
25
|
+
require('./Link.js');
|
|
26
|
+
require('../useStyles-e4accb53.js');
|
|
27
|
+
require('lodash/camelCase');
|
|
28
|
+
require('lodash/maxBy');
|
|
29
|
+
require('lodash/upperFirst');
|
|
30
|
+
require('../hooks/styleAttributes.js');
|
|
31
|
+
require('../context/UIContext.js');
|
|
32
|
+
require('../hooks/useMediaQueries.js');
|
|
33
|
+
require('react-responsive');
|
|
34
|
+
require('../constants/componentProps/textColor.js');
|
|
35
|
+
require('../constants/componentProps/textGradient.js');
|
|
36
|
+
require('../constants/componentProps/textStyle.js');
|
|
37
|
+
require('../constants/componentProps/textWeight.js');
|
|
38
|
+
require('../constants/componentProps/underline.js');
|
|
39
|
+
require('../hooks/useDeviceTargetClass.js');
|
|
40
|
+
require('lodash/castArray');
|
|
41
|
+
require('./Text.js');
|
|
42
|
+
require('../constants/componentProps/textColorActive.js');
|
|
43
|
+
require('../constants/componentProps/textColorHover.js');
|
|
44
|
+
require('react-dom');
|
|
45
|
+
require('./Fader.js');
|
|
46
|
+
require('../constants/componentProps/fillGradient.js');
|
|
47
|
+
|
|
48
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
49
|
+
|
|
50
|
+
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
51
|
+
var clsx__default = /*#__PURE__*/_interopDefault(clsx);
|
|
52
|
+
|
|
53
|
+
var DateRangePickerInput = /*#__PURE__*/React__default.default.forwardRef(function (props, ref) {
|
|
54
|
+
var onChange = props.onChange,
|
|
55
|
+
onFocus = props.onFocus,
|
|
56
|
+
toFormat = props.toFormat,
|
|
57
|
+
value = props.value,
|
|
58
|
+
_props$initialDate = props.initialDate,
|
|
59
|
+
initialDate = _props$initialDate === void 0 ? new Date() : _props$initialDate,
|
|
60
|
+
modalIsOpen = props.modalIsOpen,
|
|
61
|
+
modalIsFader = props.modalIsFader,
|
|
62
|
+
modalIsOutsideClose = props.modalIsOutsideClose,
|
|
63
|
+
modalShape = props.modalShape,
|
|
64
|
+
modalElevation = props.modalElevation,
|
|
65
|
+
modalPadding = props.modalPadding,
|
|
66
|
+
dateRangeProps = props.dateRangeProps,
|
|
67
|
+
primaryButtonShape = props.primaryButtonShape,
|
|
68
|
+
secondaryButtonShape = props.secondaryButtonShape,
|
|
69
|
+
primaryButtonFill = props.primaryButtonFill,
|
|
70
|
+
primaryButtonFillHover = props.primaryButtonFillHover,
|
|
71
|
+
primaryButtonSize = props.primaryButtonSize,
|
|
72
|
+
primaryButtonLabelTextColor = props.primaryButtonLabelTextColor,
|
|
73
|
+
primaryButtonLabelSize = props.primaryButtonLabelSize,
|
|
74
|
+
primaryButtonLabelTextWeight = props.primaryButtonLabelTextWeight,
|
|
75
|
+
primaryButtonLabel = props.primaryButtonLabel,
|
|
76
|
+
secondaryButtonFill = props.secondaryButtonFill,
|
|
77
|
+
secondaryButtonFillHover = props.secondaryButtonFillHover,
|
|
78
|
+
secondaryButtonSize = props.secondaryButtonSize,
|
|
79
|
+
secondaryButtonLabelTextColor = props.secondaryButtonLabelTextColor,
|
|
80
|
+
secondaryButtonLabelSize = props.secondaryButtonLabelSize,
|
|
81
|
+
secondaryButtonLabelTextWeight = props.secondaryButtonLabelTextWeight,
|
|
82
|
+
secondaryButtonLabel = props.secondaryButtonLabel,
|
|
83
|
+
placeholder = props.placeholder,
|
|
84
|
+
inputProps = props.inputProps;
|
|
85
|
+
var rangeRef = React.useRef(null);
|
|
86
|
+
var modalRef = React.useRef(null);
|
|
87
|
+
var onClickSave = React.useCallback(function () {
|
|
88
|
+
var _rangeRef$current;
|
|
89
|
+
var value = (_rangeRef$current = rangeRef.current) == null ? void 0 : _rangeRef$current.value;
|
|
90
|
+
if (onChange) {
|
|
91
|
+
onChange(value);
|
|
92
|
+
}
|
|
93
|
+
modalRef.current.closeModal();
|
|
94
|
+
}, [onChange]);
|
|
95
|
+
var onClickCancel = React.useCallback(function () {
|
|
96
|
+
modalRef.current.closeModal();
|
|
97
|
+
}, []);
|
|
98
|
+
|
|
99
|
+
// Create JS Date object for Calendar component
|
|
100
|
+
var _useState = React.useState(function () {
|
|
101
|
+
var startDate = initialDate.startDate,
|
|
102
|
+
endDate = initialDate.endDate;
|
|
103
|
+
if (typeof initialDate === 'string' && initialDate.includes('-')) {
|
|
104
|
+
var _initialDate$split = initialDate.split(' - ');
|
|
105
|
+
startDate = _initialDate$split[0];
|
|
106
|
+
endDate = _initialDate$split[1];
|
|
107
|
+
}
|
|
108
|
+
var state = {
|
|
109
|
+
startDate: null,
|
|
110
|
+
endDate: null,
|
|
111
|
+
key: 'date'
|
|
112
|
+
};
|
|
113
|
+
if (!startDate && !endDate) {
|
|
114
|
+
return state;
|
|
115
|
+
}
|
|
116
|
+
if (typeof startDate === 'string' && typeof endDate === 'string') {
|
|
117
|
+
state.startDate = luxon.DateTime.fromISO(startDate).toJSDate();
|
|
118
|
+
state.endDate = luxon.DateTime.fromISO(endDate).toJSDate();
|
|
119
|
+
}
|
|
120
|
+
if (startDate instanceof Date && endDate instanceof Date) {
|
|
121
|
+
state.startDate = startDate;
|
|
122
|
+
state.endDate = endDate;
|
|
123
|
+
}
|
|
124
|
+
return state;
|
|
125
|
+
}),
|
|
126
|
+
dateRanges = _useState[0],
|
|
127
|
+
setDateRanges = _useState[1];
|
|
128
|
+
React.useImperativeHandle(ref, function () {
|
|
129
|
+
var startDate = luxon.DateTime.fromJSDate(dateRanges.startDate).toISODate();
|
|
130
|
+
var endDate = luxon.DateTime.fromJSDate(dateRanges.endDate).toISODate();
|
|
131
|
+
return {
|
|
132
|
+
value: startDate + " - " + endDate
|
|
133
|
+
};
|
|
134
|
+
});
|
|
135
|
+
var onChangeDate = React.useCallback(function (range) {
|
|
136
|
+
setDateRanges(function (prevState) {
|
|
137
|
+
var _range$date, _range$date2;
|
|
138
|
+
return Object.assign({}, prevState, {
|
|
139
|
+
startDate: (_range$date = range.date) == null ? void 0 : _range$date.startDate,
|
|
140
|
+
endDate: (_range$date2 = range.date) == null ? void 0 : _range$date2.endDate
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
}, []);
|
|
144
|
+
var onFocusInput = React.useCallback(function () {
|
|
145
|
+
onFocus && onFocus();
|
|
146
|
+
modalRef.current.openModal();
|
|
147
|
+
}, [onFocus]);
|
|
148
|
+
return /*#__PURE__*/React__default.default.createElement(React__default.default.Fragment, null, /*#__PURE__*/React__default.default.createElement(index.Input, Object.assign({
|
|
149
|
+
readonly: "true",
|
|
150
|
+
type: "text",
|
|
151
|
+
onFocus: onFocusInput,
|
|
152
|
+
value: value
|
|
153
|
+
// onBlur={input.onBlur}
|
|
154
|
+
,
|
|
155
|
+
onChange: function onChange() {
|
|
156
|
+
/* set empty function for disable react warning */
|
|
157
|
+
},
|
|
158
|
+
placeholder: placeholder
|
|
159
|
+
}, inputProps)), /*#__PURE__*/React__default.default.createElement(Modal.Modal, {
|
|
160
|
+
ref: modalRef,
|
|
161
|
+
isOpen: modalIsOpen,
|
|
162
|
+
isFader: modalIsFader,
|
|
163
|
+
isOutsideClose: modalIsOutsideClose,
|
|
164
|
+
shape: modalShape,
|
|
165
|
+
elevation: modalElevation,
|
|
166
|
+
padding: modalPadding
|
|
167
|
+
}, /*#__PURE__*/React__default.default.createElement(reactDateRange.DateRange, Object.assign({
|
|
168
|
+
locale: index$1.ru,
|
|
169
|
+
className: clsx__default.default('date-range-picker'),
|
|
170
|
+
ranges: [dateRanges],
|
|
171
|
+
toFormat: toFormat,
|
|
172
|
+
weekdayDisplayFormat: "EEEEEE",
|
|
173
|
+
dayDisplayFormat: "d",
|
|
174
|
+
showDateDisplay: false,
|
|
175
|
+
onChange: onChangeDate
|
|
176
|
+
}, dateRangeProps)), /*#__PURE__*/React__default.default.createElement(index$2.Button, {
|
|
177
|
+
width: "fill",
|
|
178
|
+
fill: primaryButtonFill,
|
|
179
|
+
fillHover: primaryButtonFillHover,
|
|
180
|
+
size: primaryButtonSize,
|
|
181
|
+
labelTextColor: primaryButtonLabelTextColor,
|
|
182
|
+
labelSize: primaryButtonLabelSize,
|
|
183
|
+
labelTextWeight: primaryButtonLabelTextWeight,
|
|
184
|
+
label: primaryButtonLabel,
|
|
185
|
+
shape: primaryButtonShape,
|
|
186
|
+
onClick: onClickSave
|
|
187
|
+
}), /*#__PURE__*/React__default.default.createElement(index$2.Button, {
|
|
188
|
+
width: "fill",
|
|
189
|
+
fill: secondaryButtonFill,
|
|
190
|
+
fillHover: secondaryButtonFillHover,
|
|
191
|
+
size: secondaryButtonSize,
|
|
192
|
+
labelTextColor: secondaryButtonLabelTextColor,
|
|
193
|
+
labelSize: secondaryButtonLabelSize,
|
|
194
|
+
shape: secondaryButtonShape,
|
|
195
|
+
labelTextWeight: secondaryButtonLabelTextWeight,
|
|
196
|
+
label: secondaryButtonLabel,
|
|
197
|
+
onClick: onClickCancel
|
|
198
|
+
})));
|
|
199
|
+
});
|
|
200
|
+
DateRangePickerInput.displayName = 'DateRangePickerInput';
|
|
201
|
+
DateRangePickerInput.defaultProps = {
|
|
202
|
+
primaryButtonFill: 'accentPrimary',
|
|
203
|
+
primaryButtonFillHover: 'accentPrimaryHover',
|
|
204
|
+
primaryButtonSize: 'xl',
|
|
205
|
+
primaryButtonShape: 'rounded',
|
|
206
|
+
primaryButtonLabelTextColor: 'accentTextPrimary',
|
|
207
|
+
primaryButtonLabelSize: 'l',
|
|
208
|
+
primaryButtonLabel: 'OK',
|
|
209
|
+
secondaryButtonFill: 'surfaceSecondary',
|
|
210
|
+
secondaryButtonFillHover: 'surfaceSecondaryHover',
|
|
211
|
+
secondaryButtonSize: 'xl',
|
|
212
|
+
secondaryButtonShape: 'rounded',
|
|
213
|
+
secondaryButtonLabelTextColor: 'surfaceTextPrimary',
|
|
214
|
+
secondaryButtonLabelSize: 'l',
|
|
215
|
+
secondaryButtonLabel: 'Отмена'
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
exports.DateRangePickerInput = DateRangePickerInput;
|
|
@@ -37,7 +37,8 @@ require('../constants/componentProps/textGradient.js');
|
|
|
37
37
|
require('../constants/componentProps/type.js');
|
|
38
38
|
require('../constants/componentProps/underline.js');
|
|
39
39
|
require('react-select');
|
|
40
|
-
require('../
|
|
40
|
+
require('../defineProperty-72768a50.js');
|
|
41
|
+
require('../typeof-6dd323c6.js');
|
|
41
42
|
require('react-dom');
|
|
42
43
|
|
|
43
44
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
package/dist/components/Input.js
CHANGED
|
@@ -33,6 +33,7 @@ function Input(props) {
|
|
|
33
33
|
value = props.value,
|
|
34
34
|
onBlur = props.onBlur,
|
|
35
35
|
onChange = props.onChange,
|
|
36
|
+
onFocus = props.onFocus,
|
|
36
37
|
onKeyDown = props.onKeyDown;
|
|
37
38
|
var fillClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
38
39
|
prefix: 'fill_',
|
|
@@ -87,6 +88,7 @@ function Input(props) {
|
|
|
87
88
|
value: value,
|
|
88
89
|
onBlur: onBlur,
|
|
89
90
|
onChange: onChange,
|
|
91
|
+
onFocus: onFocus,
|
|
90
92
|
onKeyDown: onKeyDown
|
|
91
93
|
});
|
|
92
94
|
}
|
package/dist/components/Logo.js
CHANGED
|
@@ -14,14 +14,14 @@ require('../constants/componentProps/textStyle.js');
|
|
|
14
14
|
require('../constants/componentProps/textWeight.js');
|
|
15
15
|
require('../constants/componentProps/type.js');
|
|
16
16
|
require('../constants/componentProps/underline.js');
|
|
17
|
-
require('lodash/castArray');
|
|
18
17
|
require('lodash/camelCase');
|
|
19
|
-
require('../context/UIContext.js');
|
|
20
|
-
require('../hooks/useMediaQueries.js');
|
|
21
|
-
require('react-responsive');
|
|
22
18
|
require('lodash/maxBy');
|
|
23
19
|
require('lodash/upperFirst');
|
|
24
20
|
require('../hooks/styleAttributes.js');
|
|
21
|
+
require('../context/UIContext.js');
|
|
22
|
+
require('../hooks/useMediaQueries.js');
|
|
23
|
+
require('react-responsive');
|
|
24
|
+
require('lodash/castArray');
|
|
25
25
|
|
|
26
26
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
27
27
|
|
package/dist/components/Modal.js
CHANGED
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var Modal = require('../Modal-375ef8c3.js');
|
|
3
4
|
var React = require('react');
|
|
4
|
-
var
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
var useDeviceTargetClass = require('../hooks/useDeviceTargetClass.js');
|
|
10
|
-
var index$1 = require('./Loader.js');
|
|
5
|
+
var index = require('./Loader.js');
|
|
6
|
+
require('prop-types');
|
|
7
|
+
require('react-dom');
|
|
8
|
+
require('clsx');
|
|
9
|
+
require('./Fader.js');
|
|
11
10
|
require('../constants/componentProps/fill.js');
|
|
12
11
|
require('../constants/componentProps/fillGradient.js');
|
|
12
|
+
require('../hooks/useDeviceTargetClass.js');
|
|
13
13
|
require('lodash/castArray');
|
|
14
14
|
require('lodash/camelCase');
|
|
15
15
|
require('../context/UIContext.js');
|
|
16
16
|
require('../hooks/useMediaQueries.js');
|
|
17
17
|
require('react-responsive');
|
|
18
|
+
require('../useStyles-e4accb53.js');
|
|
18
19
|
require('lodash/maxBy');
|
|
19
20
|
require('lodash/upperFirst');
|
|
20
21
|
require('../hooks/styleAttributes.js');
|
|
@@ -29,233 +30,14 @@ require('../constants/componentProps/textWeight.js');
|
|
|
29
30
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
30
31
|
|
|
31
32
|
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
32
|
-
var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
|
|
33
|
-
var require$$2__default = /*#__PURE__*/_interopDefault(require$$2);
|
|
34
|
-
var clsx__default = /*#__PURE__*/_interopDefault(clsx);
|
|
35
|
-
|
|
36
|
-
var getOrCreateModalElement = function getOrCreateModalElement(modalQuerySelector, className) {
|
|
37
|
-
if (className === void 0) {
|
|
38
|
-
className = '';
|
|
39
|
-
}
|
|
40
|
-
// prettier-ignore
|
|
41
|
-
var classList = className && typeof className === 'string' ? className.split(' ').filter(Boolean) : [];
|
|
42
|
-
var modalElement = document.querySelector(modalQuerySelector);
|
|
43
|
-
if (!modalElement) {
|
|
44
|
-
// Add modal element into the DOM on mount.
|
|
45
|
-
modalElement = document.createElement('div');
|
|
46
|
-
modalElement.setAttribute('id', 'modal-global');
|
|
47
|
-
modalElement.classList.add('modal');
|
|
48
|
-
if (classList.length) {
|
|
49
|
-
var _modalElement$classLi;
|
|
50
|
-
(_modalElement$classLi = modalElement.classList).add.apply(_modalElement$classLi, classList);
|
|
51
|
-
}
|
|
52
|
-
document.body.prepend(modalElement);
|
|
53
|
-
}
|
|
54
|
-
return modalElement;
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
// Modal component that is an abstraction around the portal API.
|
|
58
|
-
var Modal = /*#__PURE__*/React__default.default.forwardRef(function Modal(props, ref) {
|
|
59
|
-
var children = props.children,
|
|
60
|
-
className = props.className,
|
|
61
|
-
closeButton = props.closeButton,
|
|
62
|
-
contentClassName = props.contentClassName,
|
|
63
|
-
id = props.id,
|
|
64
|
-
isFader = props.isFader,
|
|
65
|
-
faderFill = props.faderFill,
|
|
66
|
-
faderFillGradient = props.faderFillGradient,
|
|
67
|
-
faderOpacity = props.faderOpacity,
|
|
68
|
-
initialIsOpen = props.isOpen,
|
|
69
|
-
isScrollOnOpen = props.isScrollOnOpen,
|
|
70
|
-
isSetFocusOnOpen = props.isSetFocusOnOpen,
|
|
71
|
-
modalQuerySelector = props.modalQuerySelector,
|
|
72
|
-
isOutsideClose = props.isOutsideClose,
|
|
73
|
-
onCloseModal = props.onCloseModal,
|
|
74
|
-
onOpenModal = props.onOpenModal;
|
|
75
|
-
|
|
76
|
-
// Query DOM element
|
|
77
|
-
var _useState = React.useState(null),
|
|
78
|
-
modalElement = _useState[0],
|
|
79
|
-
setModalElement = _useState[1];
|
|
80
|
-
React.useLayoutEffect(function () {
|
|
81
|
-
var element = getOrCreateModalElement(modalQuerySelector, className);
|
|
82
|
-
setModalElement(element);
|
|
83
|
-
if (element) {
|
|
84
|
-
addModalProps(element);
|
|
85
|
-
}
|
|
86
|
-
}, []);
|
|
87
|
-
var modalContentRef = React.useRef(null);
|
|
88
|
-
var modalFaderRef = React.useRef(null);
|
|
89
|
-
var _useState2 = React.useState(initialIsOpen),
|
|
90
|
-
isOpen = _useState2[0],
|
|
91
|
-
setIsOpen = _useState2[1];
|
|
92
|
-
var addModalProps = React.useCallback(function (element) {
|
|
93
|
-
// Change class need in "useEffect"
|
|
94
|
-
if (isOpen) {
|
|
95
|
-
// Show modal
|
|
96
|
-
element.classList.add('modal_state_visible');
|
|
97
|
-
// Scroll to opened modal
|
|
98
|
-
if (isScrollOnOpen) {
|
|
99
|
-
// modalContentRef.current.style.top = `${window.visualViewport.pageTop}px`
|
|
100
|
-
element.scrollIntoView({
|
|
101
|
-
block: 'center',
|
|
102
|
-
behavior: 'smooth'
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
// "setTimeout" in this implementation is needs for set focus on modal
|
|
107
|
-
// after "onMouseDown" event on button
|
|
108
|
-
if (isSetFocusOnOpen) {
|
|
109
|
-
setTimeout(function () {
|
|
110
|
-
return modalContentRef.current.focus();
|
|
111
|
-
}, 0);
|
|
112
|
-
}
|
|
113
|
-
} else if (!element.children.length) {
|
|
114
|
-
// Hide modal if has no children
|
|
115
|
-
element.classList.remove('modal_state_visible');
|
|
116
|
-
}
|
|
117
|
-
}, [isOpen, isSetFocusOnOpen]);
|
|
118
|
-
React.useEffect(function () {
|
|
119
|
-
if (!modalElement) {
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
122
|
-
addModalProps(modalElement);
|
|
123
|
-
}, [isOpen]); // eslint-disable-line
|
|
124
|
-
|
|
125
|
-
// Show modal with children content
|
|
126
|
-
var openModal = React.useCallback(function () {
|
|
127
|
-
setIsOpen(true);
|
|
128
|
-
|
|
129
|
-
// Callback
|
|
130
|
-
if (typeof onOpenModal === 'function') {
|
|
131
|
-
onOpenModal();
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
/* SHOW TARGET POPUP ABOVE OTHERS POPUPS IF TARGET ALREADY OPENED
|
|
135
|
-
// If current modal is already opened
|
|
136
|
-
// Move content to end of modal root container. For order in DOM.
|
|
137
|
-
const modalContentElement = modalContentRef.current
|
|
138
|
-
if (modalContentElement) {
|
|
139
|
-
modalContentElement.parentNode.appendChild(modalContentElement)
|
|
140
|
-
}
|
|
141
|
-
// Also move fader to end of modal root container after container
|
|
142
|
-
const modalFaderElement = modalFaderRef.current
|
|
143
|
-
if (modalFaderElement) {
|
|
144
|
-
modalFaderElement.parentNode.appendChild(modalFaderElement)
|
|
145
|
-
}
|
|
146
|
-
*/
|
|
147
|
-
}, [onOpenModal]);
|
|
148
|
-
|
|
149
|
-
// Hide modal and unmount children content
|
|
150
|
-
var closeModal = React.useCallback(function (event) {
|
|
151
|
-
if (event === void 0) {
|
|
152
|
-
event = {};
|
|
153
|
-
}
|
|
154
|
-
var hasRelatedTarget = event.relatedTarget && modalElement.contains(event.relatedTarget);
|
|
155
|
-
if (hasRelatedTarget) {
|
|
156
|
-
return event;
|
|
157
|
-
}
|
|
158
|
-
setIsOpen(false);
|
|
159
|
-
|
|
160
|
-
// Callback
|
|
161
|
-
if (typeof onCloseModal === 'function') {
|
|
162
|
-
onCloseModal();
|
|
163
|
-
}
|
|
164
|
-
}, [modalElement, onCloseModal]);
|
|
165
|
-
|
|
166
|
-
// Save ref things
|
|
167
|
-
React.useImperativeHandle(ref, function () {
|
|
168
|
-
return {
|
|
169
|
-
isOpen: isOpen,
|
|
170
|
-
openModal: openModal,
|
|
171
|
-
closeModal: closeModal,
|
|
172
|
-
modalElement: modalElement
|
|
173
|
-
};
|
|
174
|
-
});
|
|
175
|
-
var contentFillClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
176
|
-
prefix: 'fill_',
|
|
177
|
-
propsKey: 'contentFill'
|
|
178
|
-
});
|
|
179
|
-
var shapeClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
180
|
-
prefix: 'modal-shape_',
|
|
181
|
-
propsKey: 'shape'
|
|
182
|
-
});
|
|
183
|
-
var borderColorClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
184
|
-
prefix: 'border-color_',
|
|
185
|
-
propsKey: 'borderColor'
|
|
186
|
-
});
|
|
187
|
-
var borderWidthClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
188
|
-
prefix: 'border-width_',
|
|
189
|
-
propsKey: 'borderWidth'
|
|
190
|
-
});
|
|
191
|
-
var borderTypeClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
192
|
-
prefix: 'border-type_',
|
|
193
|
-
propsKey: 'borderType'
|
|
194
|
-
});
|
|
195
|
-
var elevationClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
196
|
-
prefix: 'elevation_',
|
|
197
|
-
propsKey: 'elevation'
|
|
198
|
-
});
|
|
199
|
-
var _useStyles = useStyles.useStyles(props),
|
|
200
|
-
modalStyles = _useStyles.styles;
|
|
201
|
-
|
|
202
|
-
// Use a portal to render the children into the element
|
|
203
|
-
return modalElement && /*#__PURE__*/require$$2__default.default.createPortal(
|
|
204
|
-
// Any valid React child: JSX, strings, arrays, etc.
|
|
205
|
-
isOpen ? /*#__PURE__*/React__default.default.createElement(React__default.default.Fragment, null, /*#__PURE__*/React__default.default.createElement("div", {
|
|
206
|
-
className: clsx__default.default('modal-content', contentClassName, contentFillClass, shapeClass, borderColorClass, borderWidthClass, borderTypeClass, elevationClass),
|
|
207
|
-
id: id,
|
|
208
|
-
ref: modalContentRef,
|
|
209
|
-
tabIndex: 0,
|
|
210
|
-
onBlur: isOutsideClose ? undefined : closeModal,
|
|
211
|
-
style: modalStyles
|
|
212
|
-
}, closeButton && /*#__PURE__*/React__default.default.createElement("div", {
|
|
213
|
-
className: "modal-content__close",
|
|
214
|
-
onClick: closeModal
|
|
215
|
-
}, closeButton), children), /*#__PURE__*/React__default.default.createElement(index.Fader, {
|
|
216
|
-
ref: modalFaderRef,
|
|
217
|
-
fill: faderFill,
|
|
218
|
-
fillGradient: faderFillGradient,
|
|
219
|
-
opacity: faderOpacity,
|
|
220
|
-
className: "modal__fader",
|
|
221
|
-
isFader: isFader
|
|
222
|
-
})) : null,
|
|
223
|
-
// A DOM element
|
|
224
|
-
modalElement);
|
|
225
|
-
});
|
|
226
|
-
Modal.propTypes = {
|
|
227
|
-
children: PropTypes__default.default.any,
|
|
228
|
-
className: PropTypes__default.default.string,
|
|
229
|
-
closeIcon: PropTypes__default.default.string,
|
|
230
|
-
closeText: PropTypes__default.default.string,
|
|
231
|
-
faderFill: PropTypes__default.default.string,
|
|
232
|
-
faderFillGradient: PropTypes__default.default.string,
|
|
233
|
-
faderOpacity: PropTypes__default.default.string,
|
|
234
|
-
contentClassName: PropTypes__default.default.string,
|
|
235
|
-
id: PropTypes__default.default.string,
|
|
236
|
-
isFader: PropTypes__default.default.bool,
|
|
237
|
-
isScrollOnOpen: PropTypes__default.default.bool,
|
|
238
|
-
isSetFocusOnOpen: PropTypes__default.default.bool,
|
|
239
|
-
modalQuerySelector: PropTypes__default.default.string,
|
|
240
|
-
isOutsideClose: PropTypes__default.default.bool,
|
|
241
|
-
onCloseModal: PropTypes__default.default.func,
|
|
242
|
-
onOpenModal: PropTypes__default.default.func
|
|
243
|
-
};
|
|
244
|
-
Modal.defaultProps = {
|
|
245
|
-
isFader: true,
|
|
246
|
-
isOpen: false,
|
|
247
|
-
isScrollOnOpen: true,
|
|
248
|
-
isSetFocusOnOpen: true,
|
|
249
|
-
modalQuerySelector: '#modal-global'
|
|
250
|
-
};
|
|
251
33
|
|
|
252
34
|
function ModalLoader(props) {
|
|
253
35
|
return /*#__PURE__*/React__default.default.createElement("div", {
|
|
254
36
|
className: "modal-loading"
|
|
255
37
|
}, /*#__PURE__*/React__default.default.createElement("div", {
|
|
256
38
|
className: "modal-loading__inner"
|
|
257
|
-
}, /*#__PURE__*/React__default.default.createElement(index
|
|
39
|
+
}, /*#__PURE__*/React__default.default.createElement(index.Loader, null)));
|
|
258
40
|
}
|
|
259
41
|
|
|
260
|
-
exports.Modal = Modal;
|
|
42
|
+
exports.Modal = Modal.Modal;
|
|
261
43
|
exports.ModalLoader = ModalLoader;
|