@itcase/ui 1.0.5 → 1.0.7
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/components/Avatar.js +56 -31
- package/dist/components/{Counter.js → Badge.js} +7 -7
- package/dist/components/Button.js +59 -54
- package/dist/components/Cell.js +21 -17
- package/dist/components/Checkbox.js +74 -22
- package/dist/components/Chips.js +2 -20
- package/dist/components/Divider.js +17 -1
- package/dist/components/Dropdown.js +195 -66
- package/dist/components/Grid.js +70 -33
- package/dist/components/Group.js +17 -1
- package/dist/components/Icon.js +45 -26
- package/dist/components/Image.js +3 -3
- package/dist/components/Input.js +19 -2
- package/dist/components/Label.js +11 -3
- package/dist/components/Logo.js +36 -12
- package/dist/components/MenuItem.js +11 -2
- package/dist/components/Modal.js +219 -41
- package/dist/components/Profile.js +10 -4
- package/dist/components/RadioButton.js +78 -26
- package/dist/components/Scrollbar.js +4 -4
- package/dist/components/Search.js +12 -9
- package/dist/components/Segmented.js +5 -3
- package/dist/components/Select.js +2 -2
- package/dist/components/Switch.js +2 -1
- package/dist/components/Tab.js +312 -0
- package/dist/components/Text.js +1 -3
- package/dist/components/Textarea.js +9 -1
- package/dist/components/Tile.js +43 -115
- package/dist/css/components/Avatar/Avatar.css +23 -10
- package/dist/css/components/Badge/Badge.css +55 -0
- package/dist/css/components/Button/Button.css +19 -8
- package/dist/css/components/Checkbox/Checkbox.css +60 -63
- package/dist/css/components/Chips/Chips.css +25 -7
- package/dist/css/components/Dropdown/Dropdown.css +21 -18
- package/dist/css/components/Fader/Fader.css +0 -1
- package/dist/css/components/Grid/Grid.css +5 -0
- package/dist/css/components/Grid/css/__row/grid__row.css +5 -0
- package/dist/css/components/Icon/Icon.css +4 -4
- package/dist/css/components/Input/Input.css +6 -0
- package/dist/css/components/List/List.css +3 -3
- package/dist/css/components/Logo/Logo.css +23 -0
- package/dist/css/components/{Popup/Popup.css → Modal/Modal.css} +5 -4
- package/dist/css/components/RadioButton/RadioButton.css +60 -59
- package/dist/css/components/Segmented/Segmented.css +97 -0
- package/dist/css/components/Switch/Switch.css +56 -46
- package/dist/css/components/Tab/Tab.css +49 -0
- package/dist/css/components/Tile/Tile.css +27 -10
- package/dist/css/styles/border-color/border-color.css +2 -2
- package/dist/css/styles/border-type/border-type.css +13 -0
- package/dist/css/styles/border-width/border-width.css +7 -0
- package/dist/css/styles/justify-content/justify-content.css +7 -0
- package/dist/hooks/styleAttributes.js +1 -1
- package/package.json +2 -1
- package/dist/components/Popup.js +0 -255
- package/dist/css/components/Counter/Counter.css +0 -55
package/dist/components/Input.js
CHANGED
|
@@ -16,8 +16,16 @@ var React__default = /*#__PURE__*/_interopDefault(React);
|
|
|
16
16
|
var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
|
|
17
17
|
var clsx__default = /*#__PURE__*/_interopDefault(clsx);
|
|
18
18
|
|
|
19
|
+
var inputConfig = {
|
|
20
|
+
state: {},
|
|
21
|
+
setState: function setState(newComponent) {
|
|
22
|
+
inputConfig.state = newComponent;
|
|
23
|
+
}
|
|
24
|
+
};
|
|
19
25
|
function Input(props) {
|
|
20
|
-
var
|
|
26
|
+
var _inputConfig$state$st, _inputConfig$state$st2, _inputConfig$state$st3;
|
|
27
|
+
var state = props.state,
|
|
28
|
+
id = props.id,
|
|
21
29
|
type = props.type,
|
|
22
30
|
className = props.className,
|
|
23
31
|
placeholder = props.placeholder,
|
|
@@ -58,12 +66,20 @@ function Input(props) {
|
|
|
58
66
|
prefix: 'text-weight_',
|
|
59
67
|
propsKey: 'textWeight'
|
|
60
68
|
});
|
|
69
|
+
var borderWidthClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
70
|
+
prefix: 'border-width_',
|
|
71
|
+
propsKey: 'borderWidth'
|
|
72
|
+
});
|
|
73
|
+
var borderColorClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
74
|
+
prefix: 'border-color_',
|
|
75
|
+
propsKey: 'borderColor'
|
|
76
|
+
});
|
|
61
77
|
var widthClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
62
78
|
prefix: 'width_',
|
|
63
79
|
propsKey: 'width'
|
|
64
80
|
});
|
|
65
81
|
return /*#__PURE__*/React__default.default.createElement("input", {
|
|
66
|
-
className: clsx__default.default(className, 'input', (textSizeClass || textColorClass || weightClass) && 'text', caretClass, fillClass, placeholderClass, shapeClass, textSizeClass, textColorClass, weightClass, widthClass, sizeClass),
|
|
82
|
+
className: clsx__default.default(className, 'input', (textSizeClass || textColorClass || weightClass) && 'text', caretClass, fillClass, placeholderClass, shapeClass, textSizeClass, textColorClass, weightClass, widthClass, borderWidthClass, borderColorClass, sizeClass, ((_inputConfig$state$st = inputConfig.state[state]) == null ? void 0 : _inputConfig$state$st.fillClass) && ("fill_" + inputConfig.state[state].fillClass).replace(/([A-Z])/g, '-$1').toLowerCase(), ((_inputConfig$state$st2 = inputConfig.state[state]) == null ? void 0 : _inputConfig$state$st2.borderColor) && ("border-color_" + inputConfig.state[state].borderColor).replace(/([A-Z])/g, '-$1').toLowerCase(), ((_inputConfig$state$st3 = inputConfig.state[state]) == null ? void 0 : _inputConfig$state$st3.shape) && "shape_" + inputConfig.state[state].shape),
|
|
67
83
|
type: type,
|
|
68
84
|
id: id,
|
|
69
85
|
disabled: disabled,
|
|
@@ -92,3 +108,4 @@ Input.defaultProps = {
|
|
|
92
108
|
};
|
|
93
109
|
|
|
94
110
|
exports.Input = Input;
|
|
111
|
+
exports.inputConfig = inputConfig;
|
package/dist/components/Label.js
CHANGED
|
@@ -31,8 +31,15 @@ var React__default = /*#__PURE__*/_interopDefault(React);
|
|
|
31
31
|
var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
|
|
32
32
|
var clsx__default = /*#__PURE__*/_interopDefault(clsx);
|
|
33
33
|
|
|
34
|
+
var labelConfig = {
|
|
35
|
+
appearance: {},
|
|
36
|
+
setAppearance: function setAppearance(newComponent) {
|
|
37
|
+
labelConfig.appearance = newComponent;
|
|
38
|
+
}
|
|
39
|
+
};
|
|
34
40
|
function Label(props) {
|
|
35
|
-
var
|
|
41
|
+
var appearance = props.appearance,
|
|
42
|
+
children = props.children,
|
|
36
43
|
className = props.className,
|
|
37
44
|
label = props.label,
|
|
38
45
|
labelTextSize = props.labelTextSize,
|
|
@@ -71,13 +78,13 @@ function Label(props) {
|
|
|
71
78
|
var _useStyles = useStyles.useStyles(props),
|
|
72
79
|
labelStyles = _useStyles.styles;
|
|
73
80
|
return /*#__PURE__*/React__default.default.createElement("div", {
|
|
74
|
-
className: clsx__default.default(className, 'label', fillClass, shapeClass, borderClass, borderTypeClass, sizeClass, alignDirectionClass, alignClass, type && "label_type_" + type, set && "label_set_" + set),
|
|
81
|
+
className: clsx__default.default(className, 'label', fillClass || appearance && ("fill_" + labelConfig.appearance[appearance].fillClass).replace(/([A-Z])/g, '-$1').toLowerCase(), shapeClass, borderClass, borderTypeClass, sizeClass, alignDirectionClass, alignClass, type && "label_type_" + type, set && "label_set_" + set),
|
|
75
82
|
style: labelStyles
|
|
76
83
|
}, /*#__PURE__*/React__default.default.createElement("div", {
|
|
77
84
|
className: "label__inner"
|
|
78
85
|
}, typeof label === 'string' ? /*#__PURE__*/React__default.default.createElement(index.Text, {
|
|
79
86
|
className: "label__label",
|
|
80
|
-
textColor: labelTextColor,
|
|
87
|
+
textColor: labelTextColor || appearance && labelConfig.appearance[appearance].labelTextColor.replace(/([A-Z])/g, '-$1').toLowerCase(),
|
|
81
88
|
size: labelTextSize,
|
|
82
89
|
textWrap: labelTextWrap
|
|
83
90
|
}, label) : /*#__PURE__*/React__default.default.createElement("div", {
|
|
@@ -124,3 +131,4 @@ Label.defaultProps = {
|
|
|
124
131
|
};
|
|
125
132
|
|
|
126
133
|
exports.Label = Label;
|
|
134
|
+
exports.labelConfig = labelConfig;
|
package/dist/components/Logo.js
CHANGED
|
@@ -21,24 +21,47 @@ var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
|
|
|
21
21
|
var clsx__default = /*#__PURE__*/_interopDefault(clsx);
|
|
22
22
|
|
|
23
23
|
function Logo(props) {
|
|
24
|
-
var
|
|
25
|
-
|
|
26
|
-
props.
|
|
27
|
-
|
|
24
|
+
var className = props.className,
|
|
25
|
+
LinkComponent = props.LinkComponent,
|
|
26
|
+
size = props.size,
|
|
27
|
+
link = props.link,
|
|
28
|
+
href = props.href,
|
|
29
|
+
target = props.target,
|
|
30
|
+
rel = props.rel,
|
|
31
|
+
source = props.source,
|
|
32
|
+
src = props.src;
|
|
28
33
|
var alignItemsClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
29
34
|
prefix: 'logo_align-items_',
|
|
30
35
|
propsKey: 'alignItems'
|
|
31
36
|
});
|
|
37
|
+
var widthClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
38
|
+
prefix: 'width_',
|
|
39
|
+
propsKey: 'width'
|
|
40
|
+
});
|
|
41
|
+
var alignDirectionClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
42
|
+
prefix: 'align_',
|
|
43
|
+
propsKey: 'alignDirection'
|
|
44
|
+
});
|
|
45
|
+
var alignClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
46
|
+
prefix: 'align_',
|
|
47
|
+
propsKey: 'align'
|
|
48
|
+
});
|
|
32
49
|
var _useStyles = useStyles.useStyles(props),
|
|
33
|
-
logo = _useStyles.styles
|
|
34
|
-
logoStyles = _useStyles.logo;
|
|
50
|
+
logo = _useStyles.styles;
|
|
35
51
|
return /*#__PURE__*/React__default.default.createElement("div", {
|
|
36
|
-
className: clsx__default.default(className, 'logo', alignItemsClass),
|
|
52
|
+
className: clsx__default.default(className, 'logo', alignDirectionClass, alignClass, widthClass, alignItemsClass, size && "logo_size_" + size),
|
|
37
53
|
style: logo
|
|
38
|
-
},
|
|
39
|
-
className:
|
|
40
|
-
|
|
41
|
-
|
|
54
|
+
}, link || href ? /*#__PURE__*/React__default.default.createElement(LinkComponent, {
|
|
55
|
+
className: 'logo__link',
|
|
56
|
+
href: link || href,
|
|
57
|
+
target: target,
|
|
58
|
+
rel: rel
|
|
59
|
+
}, /*#__PURE__*/React__default.default.createElement("img", {
|
|
60
|
+
className: "logo__image",
|
|
61
|
+
src: src || source
|
|
62
|
+
})) : /*#__PURE__*/React__default.default.createElement("img", {
|
|
63
|
+
className: "logo__image",
|
|
64
|
+
src: src || source
|
|
42
65
|
}));
|
|
43
66
|
}
|
|
44
67
|
Logo.propTypes = {
|
|
@@ -46,8 +69,9 @@ Logo.propTypes = {
|
|
|
46
69
|
className: PropTypes__default.default.string,
|
|
47
70
|
isLink: PropTypes__default.default.bool,
|
|
48
71
|
logoSrc: PropTypes__default.default.string,
|
|
49
|
-
LinkComponent: PropTypes__default.default.any,
|
|
50
72
|
href: PropTypes__default.default.string,
|
|
73
|
+
src: PropTypes__default.default.string,
|
|
74
|
+
source: PropTypes__default.default.string,
|
|
51
75
|
link: PropTypes__default.default.string,
|
|
52
76
|
target: PropTypes__default.default.string,
|
|
53
77
|
rel: PropTypes__default.default.string
|
|
@@ -33,8 +33,16 @@ var React__default = /*#__PURE__*/_interopDefault(React);
|
|
|
33
33
|
var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
|
|
34
34
|
var clsx__default = /*#__PURE__*/_interopDefault(clsx);
|
|
35
35
|
|
|
36
|
+
var menuItemConfig = {
|
|
37
|
+
appearance: {},
|
|
38
|
+
setAppearance: function setAppearance(newComponent) {
|
|
39
|
+
menuItemConfig.appearance = newComponent;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
36
42
|
function MenuItem(props) {
|
|
37
43
|
var isActive = props.isActive,
|
|
44
|
+
isHover = props.isHover,
|
|
45
|
+
appearance = props.appearance,
|
|
38
46
|
after = props.after,
|
|
39
47
|
before = props.before,
|
|
40
48
|
children = props.children,
|
|
@@ -122,7 +130,7 @@ function MenuItem(props) {
|
|
|
122
130
|
var _useStyles = useStyles.useStyles(props),
|
|
123
131
|
menuItem = _useStyles.styles;
|
|
124
132
|
return /*#__PURE__*/React__default.default.createElement("div", {
|
|
125
|
-
className: clsx__default.default('menu-item', isActive && 'menu-item_state_active', directionClass, className, sizeClass, fillClass, fillHoverClass, fillActiveClass, fillActiveHoverClass, fillDisabledClass, shapeClass, typeClass, widthClass, set && "menu-item_set_" + set, justifyContentClass),
|
|
133
|
+
className: clsx__default.default('menu-item', isActive && 'menu-item_state_active', isHover && 'menu-item_state_hover', directionClass, className, sizeClass, fillClass || appearance && ("fill_" + menuItemConfig.appearance[appearance].fillClass).replace(/([A-Z])/g, '-$1').toLowerCase(), fillHoverClass, fillActiveClass, fillActiveHoverClass, fillDisabledClass, shapeClass, typeClass, widthClass, set && "menu-item_set_" + set, justifyContentClass),
|
|
126
134
|
style: menuItem,
|
|
127
135
|
onClick: onClick,
|
|
128
136
|
onMouseEnter: onMouseEnter
|
|
@@ -139,7 +147,7 @@ function MenuItem(props) {
|
|
|
139
147
|
textGradient: textGradient,
|
|
140
148
|
size: textSize,
|
|
141
149
|
textWeight: textWeight,
|
|
142
|
-
textColor: textColor,
|
|
150
|
+
textColor: textColor || appearance && menuItemConfig.appearance[appearance].textColor.replace(/([A-Z])/g, '-$1').toLowerCase(),
|
|
143
151
|
textWrap: textWrap,
|
|
144
152
|
textColorHover: textColorHover,
|
|
145
153
|
textStyle: textStyle
|
|
@@ -207,3 +215,4 @@ MenuItem.defaultProps = {
|
|
|
207
215
|
};
|
|
208
216
|
|
|
209
217
|
exports.MenuItem = MenuItem;
|
|
218
|
+
exports.menuItemConfig = menuItemConfig;
|
package/dist/components/Modal.js
CHANGED
|
@@ -2,68 +2,246 @@
|
|
|
2
2
|
|
|
3
3
|
var React = require('react');
|
|
4
4
|
var PropTypes = require('prop-types');
|
|
5
|
-
var
|
|
5
|
+
var require$$2 = require('react-dom');
|
|
6
6
|
var clsx = require('clsx');
|
|
7
|
+
require('./Icon.js');
|
|
8
|
+
require('./Text.js');
|
|
9
|
+
var index = require('./Fader.js');
|
|
10
|
+
require('lodash/camelCase');
|
|
11
|
+
require('lodash/maxBy');
|
|
12
|
+
require('lodash/upperFirst');
|
|
13
|
+
require('../context/UIContext.js');
|
|
14
|
+
var useDeviceTargetClass = require('../hooks/useDeviceTargetClass.js');
|
|
15
|
+
var index$1 = require('./Loader.js');
|
|
16
|
+
require('react-inlinesvg');
|
|
17
|
+
require('../constants/componentProps/fill.js');
|
|
18
|
+
require('../constants/componentProps/iconSize.js');
|
|
19
|
+
require('../constants/componentProps/shape.js');
|
|
20
|
+
require('../constants/componentProps/strokeColor.js');
|
|
21
|
+
require('./Link.js');
|
|
22
|
+
require('../useStyles-e4accb53.js');
|
|
23
|
+
require('../hooks/styleAttributes.js');
|
|
24
|
+
require('../constants/componentProps/size.js');
|
|
25
|
+
require('../constants/componentProps/textColor.js');
|
|
26
|
+
require('../constants/componentProps/textGradient.js');
|
|
27
|
+
require('../constants/componentProps/textStyle.js');
|
|
28
|
+
require('../constants/componentProps/textWeight.js');
|
|
29
|
+
require('../constants/componentProps/type.js');
|
|
30
|
+
require('../constants/componentProps/underline.js');
|
|
31
|
+
require('../hooks/useMediaQueries.js');
|
|
32
|
+
require('react-responsive');
|
|
33
|
+
require('lodash/castArray');
|
|
34
|
+
require('../constants/componentProps/textColorActive.js');
|
|
35
|
+
require('../constants/componentProps/textColorHover.js');
|
|
36
|
+
require('../constants/componentProps/fillGradient.js');
|
|
7
37
|
|
|
8
38
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
39
|
|
|
10
40
|
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
11
41
|
var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
|
|
12
|
-
var
|
|
42
|
+
var require$$2__default = /*#__PURE__*/_interopDefault(require$$2);
|
|
13
43
|
var clsx__default = /*#__PURE__*/_interopDefault(clsx);
|
|
14
44
|
|
|
15
|
-
var
|
|
45
|
+
var getOrCreateModalElement = function getOrCreateModalElement(modalQuerySelector, className) {
|
|
46
|
+
if (className === void 0) {
|
|
47
|
+
className = '';
|
|
48
|
+
}
|
|
49
|
+
// prettier-ignore
|
|
50
|
+
var classList = className && typeof className === 'string' ? className.split(' ').filter(Boolean) : [];
|
|
51
|
+
var modalElement = document.querySelector(modalQuerySelector);
|
|
52
|
+
if (!modalElement) {
|
|
53
|
+
// Add modal element into the DOM on mount.
|
|
54
|
+
modalElement = document.createElement('div');
|
|
55
|
+
modalElement.setAttribute('id', 'modal-global');
|
|
56
|
+
modalElement.classList.add('modal');
|
|
57
|
+
if (classList.length) {
|
|
58
|
+
var _modalElement$classLi;
|
|
59
|
+
(_modalElement$classLi = modalElement.classList).add.apply(_modalElement$classLi, classList);
|
|
60
|
+
}
|
|
61
|
+
document.body.prepend(modalElement);
|
|
62
|
+
}
|
|
63
|
+
return modalElement;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
// Modal component that is an abstraction around the portal API.
|
|
67
|
+
var Modal = /*#__PURE__*/React__default.default.forwardRef(function Modal(props, ref) {
|
|
16
68
|
var children = props.children,
|
|
17
69
|
className = props.className,
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
70
|
+
closeButton = props.closeButton,
|
|
71
|
+
contentClassName = props.contentClassName,
|
|
72
|
+
id = props.id,
|
|
73
|
+
isFader = props.isFader,
|
|
74
|
+
faderFill = props.faderFill,
|
|
75
|
+
faderFillGradient = props.faderFillGradient,
|
|
76
|
+
faderOpacity = props.faderOpacity,
|
|
77
|
+
initialIsOpen = props.isOpen,
|
|
78
|
+
isScrollOnOpen = props.isScrollOnOpen,
|
|
79
|
+
isSetFocusOnOpen = props.isSetFocusOnOpen,
|
|
80
|
+
modalQuerySelector = props.modalQuerySelector,
|
|
81
|
+
isOutsideClose = props.isOutsideClose,
|
|
82
|
+
onCloseModal = props.onCloseModal,
|
|
83
|
+
onOpenModal = props.onOpenModal;
|
|
84
|
+
|
|
85
|
+
// Query DOM element
|
|
86
|
+
var _useState = React.useState(null),
|
|
87
|
+
modalElement = _useState[0],
|
|
88
|
+
setModalElement = _useState[1];
|
|
89
|
+
React.useLayoutEffect(function () {
|
|
90
|
+
var element = getOrCreateModalElement(modalQuerySelector, className);
|
|
91
|
+
setModalElement(element);
|
|
92
|
+
if (element) {
|
|
93
|
+
addModalProps(element);
|
|
94
|
+
}
|
|
95
|
+
}, []);
|
|
96
|
+
var modalContentRef = React.useRef(null);
|
|
97
|
+
var modalFaderRef = React.useRef(null);
|
|
98
|
+
var _useState2 = React.useState(initialIsOpen),
|
|
99
|
+
isOpen = _useState2[0],
|
|
100
|
+
setIsOpen = _useState2[1];
|
|
101
|
+
var addModalProps = React.useCallback(function (element) {
|
|
102
|
+
// Change class need in "useEffect"
|
|
103
|
+
if (isOpen) {
|
|
104
|
+
// Show modal
|
|
105
|
+
element.classList.add('modal_state_visible');
|
|
106
|
+
// Scroll to opened modal
|
|
107
|
+
if (isScrollOnOpen) {
|
|
108
|
+
// modalContentRef.current.style.top = `${window.visualViewport.pageTop}px`
|
|
109
|
+
element.scrollIntoView({
|
|
110
|
+
block: 'center',
|
|
111
|
+
behavior: 'smooth'
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// "setTimeout" in this implementation is needs for set focus on modal
|
|
116
|
+
// after "onMouseDown" event on button
|
|
117
|
+
if (isSetFocusOnOpen) {
|
|
118
|
+
setTimeout(function () {
|
|
119
|
+
return modalContentRef.current.focus();
|
|
120
|
+
}, 0);
|
|
121
|
+
}
|
|
122
|
+
} else if (!element.children.length) {
|
|
123
|
+
// Hide modal if has no children
|
|
124
|
+
element.classList.remove('modal_state_visible');
|
|
125
|
+
}
|
|
126
|
+
}, [isOpen, isSetFocusOnOpen]);
|
|
127
|
+
React.useEffect(function () {
|
|
128
|
+
if (!modalElement) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
addModalProps(modalElement);
|
|
132
|
+
}, [isOpen]); // eslint-disable-line
|
|
133
|
+
|
|
134
|
+
// Show modal with children content
|
|
135
|
+
var openModal = React.useCallback(function () {
|
|
29
136
|
setIsOpen(true);
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
137
|
+
|
|
138
|
+
// Callback
|
|
139
|
+
if (typeof onOpenModal === 'function') {
|
|
140
|
+
onOpenModal();
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/* SHOW TARGET POPUP ABOVE OTHERS POPUPS IF TARGET ALREADY OPENED
|
|
144
|
+
// If current modal is already opened
|
|
145
|
+
// Move content to end of modal root container. For order in DOM.
|
|
146
|
+
const modalContentElement = modalContentRef.current
|
|
147
|
+
if (modalContentElement) {
|
|
148
|
+
modalContentElement.parentNode.appendChild(modalContentElement)
|
|
149
|
+
}
|
|
150
|
+
// Also move fader to end of modal root container after container
|
|
151
|
+
const modalFaderElement = modalFaderRef.current
|
|
152
|
+
if (modalFaderElement) {
|
|
153
|
+
modalFaderElement.parentNode.appendChild(modalFaderElement)
|
|
154
|
+
}
|
|
155
|
+
*/
|
|
156
|
+
}, [onOpenModal]);
|
|
157
|
+
|
|
158
|
+
// Hide modal and unmount children content
|
|
159
|
+
var closeModal = React.useCallback(function (event) {
|
|
160
|
+
if (event === void 0) {
|
|
161
|
+
event = {};
|
|
162
|
+
}
|
|
163
|
+
var hasRelatedTarget = event.relatedTarget && modalElement.contains(event.relatedTarget);
|
|
164
|
+
if (hasRelatedTarget) {
|
|
165
|
+
return event;
|
|
166
|
+
}
|
|
33
167
|
setIsOpen(false);
|
|
34
|
-
|
|
35
|
-
|
|
168
|
+
|
|
169
|
+
// Callback
|
|
170
|
+
if (typeof onCloseModal === 'function') {
|
|
171
|
+
onCloseModal();
|
|
172
|
+
}
|
|
173
|
+
}, [modalElement, onCloseModal]);
|
|
174
|
+
|
|
175
|
+
// Save ref things
|
|
36
176
|
React.useImperativeHandle(ref, function () {
|
|
37
177
|
return {
|
|
38
178
|
isOpen: isOpen,
|
|
39
|
-
|
|
40
|
-
|
|
179
|
+
openModal: openModal,
|
|
180
|
+
closeModal: closeModal,
|
|
181
|
+
modalElement: modalElement
|
|
41
182
|
};
|
|
42
183
|
});
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
return /*#__PURE__*/
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
},
|
|
184
|
+
var contentFillClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
185
|
+
prefix: 'fill_',
|
|
186
|
+
propsKey: 'contentFill'
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
// Use a portal to render the children into the element
|
|
190
|
+
return modalElement && /*#__PURE__*/require$$2__default.default.createPortal(
|
|
191
|
+
// Any valid React child: JSX, strings, arrays, etc.
|
|
192
|
+
isOpen ? /*#__PURE__*/React__default.default.createElement(React__default.default.Fragment, null, /*#__PURE__*/React__default.default.createElement("div", {
|
|
193
|
+
className: clsx__default.default('modal-content', contentClassName, contentFillClass),
|
|
194
|
+
id: id,
|
|
195
|
+
ref: modalContentRef,
|
|
196
|
+
tabIndex: 0,
|
|
197
|
+
onBlur: isOutsideClose ? undefined : closeModal
|
|
198
|
+
}, closeButton && /*#__PURE__*/React__default.default.createElement("div", {
|
|
199
|
+
className: "modal-content__close",
|
|
200
|
+
onClick: closeModal
|
|
201
|
+
}, closeButton), children), /*#__PURE__*/React__default.default.createElement(index.Fader, {
|
|
202
|
+
ref: modalFaderRef,
|
|
203
|
+
fill: faderFill,
|
|
204
|
+
fillGradient: faderFillGradient,
|
|
205
|
+
opacity: faderOpacity,
|
|
206
|
+
className: "modal__fader",
|
|
207
|
+
isFader: isFader
|
|
208
|
+
})) : null,
|
|
209
|
+
// A DOM element
|
|
210
|
+
modalElement);
|
|
58
211
|
});
|
|
59
212
|
Modal.propTypes = {
|
|
60
213
|
children: PropTypes__default.default.any,
|
|
61
214
|
className: PropTypes__default.default.string,
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
215
|
+
closeIcon: PropTypes__default.default.string,
|
|
216
|
+
closeText: PropTypes__default.default.string,
|
|
217
|
+
faderFill: PropTypes__default.default.string,
|
|
218
|
+
faderFillGradient: PropTypes__default.default.string,
|
|
219
|
+
faderOpacity: PropTypes__default.default.string,
|
|
220
|
+
contentClassName: PropTypes__default.default.string,
|
|
221
|
+
id: PropTypes__default.default.string,
|
|
222
|
+
isFader: PropTypes__default.default.bool,
|
|
223
|
+
isScrollOnOpen: PropTypes__default.default.bool,
|
|
224
|
+
isSetFocusOnOpen: PropTypes__default.default.bool,
|
|
225
|
+
modalQuerySelector: PropTypes__default.default.string,
|
|
226
|
+
isOutsideClose: PropTypes__default.default.bool,
|
|
227
|
+
onCloseModal: PropTypes__default.default.func,
|
|
228
|
+
onOpenModal: PropTypes__default.default.func
|
|
229
|
+
};
|
|
230
|
+
Modal.defaultProps = {
|
|
231
|
+
isFader: true,
|
|
232
|
+
isOpen: false,
|
|
233
|
+
isScrollOnOpen: true,
|
|
234
|
+
isSetFocusOnOpen: true,
|
|
235
|
+
modalQuerySelector: '#modal-global'
|
|
66
236
|
};
|
|
67
|
-
|
|
237
|
+
|
|
238
|
+
function ModalLoader(props) {
|
|
239
|
+
return /*#__PURE__*/React__default.default.createElement("div", {
|
|
240
|
+
className: "modal-loading"
|
|
241
|
+
}, /*#__PURE__*/React__default.default.createElement("div", {
|
|
242
|
+
className: "modal-loading__inner"
|
|
243
|
+
}, /*#__PURE__*/React__default.default.createElement(index$1.Loader, null)));
|
|
244
|
+
}
|
|
68
245
|
|
|
69
246
|
exports.Modal = Modal;
|
|
247
|
+
exports.ModalLoader = ModalLoader;
|
|
@@ -24,16 +24,22 @@ require('../context/UIContext.js');
|
|
|
24
24
|
require('../hooks/useMediaQueries.js');
|
|
25
25
|
require('react-responsive');
|
|
26
26
|
require('lodash/castArray');
|
|
27
|
+
require('./Icon.js');
|
|
28
|
+
require('react-inlinesvg');
|
|
29
|
+
require('../constants/componentProps/iconSize.js');
|
|
30
|
+
require('../constants/componentProps/strokeColor.js');
|
|
31
|
+
require('./Link.js');
|
|
27
32
|
require('../constants/componentProps/size.js');
|
|
28
33
|
require('../constants/componentProps/textColor.js');
|
|
29
|
-
require('../constants/componentProps/
|
|
30
|
-
require('../constants/componentProps/textColorHover.js');
|
|
34
|
+
require('../constants/componentProps/textGradient.js');
|
|
31
35
|
require('../constants/componentProps/textStyle.js');
|
|
32
36
|
require('../constants/componentProps/textWeight.js');
|
|
37
|
+
require('../constants/componentProps/type.js');
|
|
38
|
+
require('../constants/componentProps/underline.js');
|
|
39
|
+
require('../constants/componentProps/textColorActive.js');
|
|
40
|
+
require('../constants/componentProps/textColorHover.js');
|
|
33
41
|
require('../constants/componentProps/textAlign.js');
|
|
34
|
-
require('../constants/componentProps/textGradient.js');
|
|
35
42
|
require('../constants/componentProps/titleSize.js');
|
|
36
|
-
require('../constants/componentProps/type.js');
|
|
37
43
|
require('../constants/componentProps/wrap.js');
|
|
38
44
|
|
|
39
45
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -3,12 +3,23 @@
|
|
|
3
3
|
var React = require('react');
|
|
4
4
|
var PropTypes = require('prop-types');
|
|
5
5
|
var clsx = require('clsx');
|
|
6
|
+
var index = require('./Text.js');
|
|
6
7
|
var useDeviceTargetClass = require('../hooks/useDeviceTargetClass.js');
|
|
7
|
-
require('
|
|
8
|
+
require('../constants/componentProps/textColor.js');
|
|
9
|
+
require('../constants/componentProps/textColorActive.js');
|
|
10
|
+
require('../constants/componentProps/textColorHover.js');
|
|
11
|
+
require('../constants/componentProps/size.js');
|
|
12
|
+
require('../constants/componentProps/textStyle.js');
|
|
13
|
+
require('../constants/componentProps/textWeight.js');
|
|
14
|
+
require('../useStyles-e4accb53.js');
|
|
8
15
|
require('lodash/camelCase');
|
|
16
|
+
require('lodash/maxBy');
|
|
17
|
+
require('lodash/upperFirst');
|
|
18
|
+
require('../hooks/styleAttributes.js');
|
|
9
19
|
require('../context/UIContext.js');
|
|
10
20
|
require('../hooks/useMediaQueries.js');
|
|
11
21
|
require('react-responsive');
|
|
22
|
+
require('lodash/castArray');
|
|
12
23
|
|
|
13
24
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
25
|
|
|
@@ -16,50 +27,90 @@ var React__default = /*#__PURE__*/_interopDefault(React);
|
|
|
16
27
|
var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
|
|
17
28
|
var clsx__default = /*#__PURE__*/_interopDefault(clsx);
|
|
18
29
|
|
|
30
|
+
var radioButtonConfig = {
|
|
31
|
+
state: {},
|
|
32
|
+
setState: function setState(newComponent) {
|
|
33
|
+
radioButtonConfig.state = newComponent;
|
|
34
|
+
}
|
|
35
|
+
};
|
|
19
36
|
function RadioButton(props) {
|
|
20
|
-
|
|
37
|
+
props.state;
|
|
38
|
+
var id = props.id,
|
|
21
39
|
className = props.className,
|
|
22
40
|
checked = props.checked,
|
|
23
41
|
onChange = props.onChange,
|
|
24
|
-
disabled = props.disabled
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
42
|
+
disabled = props.disabled,
|
|
43
|
+
descTextSize = props.descTextSize,
|
|
44
|
+
descTextWidth = props.descTextWidth,
|
|
45
|
+
descTextColor = props.descTextColor,
|
|
46
|
+
desc = props.desc,
|
|
47
|
+
label = props.label,
|
|
48
|
+
labelTextSize = props.labelTextSize,
|
|
49
|
+
labelTextWidth = props.labelTextWidth,
|
|
50
|
+
labelTextColor = props.labelTextColor;
|
|
51
|
+
var fillClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
52
|
+
prefix: 'fill_',
|
|
53
|
+
propsKey: 'fill'
|
|
28
54
|
});
|
|
29
55
|
var shapeClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
30
56
|
prefix: 'radio-button_shape_',
|
|
31
57
|
propsKey: 'shape'
|
|
32
58
|
});
|
|
33
|
-
var
|
|
34
|
-
prefix: 'radio-
|
|
35
|
-
propsKey: '
|
|
59
|
+
var stateShapeClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
60
|
+
prefix: 'radio-button__state_shape_',
|
|
61
|
+
propsKey: 'stateShape'
|
|
36
62
|
});
|
|
37
|
-
var
|
|
38
|
-
prefix: '
|
|
39
|
-
propsKey: '
|
|
63
|
+
var stateFillClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
64
|
+
prefix: 'fill_',
|
|
65
|
+
propsKey: checked ? 'stateFillChecked' : 'stateFill'
|
|
40
66
|
});
|
|
41
|
-
var
|
|
67
|
+
var stateFillDisabledClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
42
68
|
prefix: 'fill_',
|
|
43
|
-
propsKey: '
|
|
69
|
+
propsKey: checked ? 'stateFillDisabledChecked' : 'stateFillDisabled'
|
|
44
70
|
});
|
|
45
|
-
var
|
|
46
|
-
prefix: 'radio-
|
|
47
|
-
propsKey: '
|
|
71
|
+
var stateCheckmarkFillClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
72
|
+
prefix: 'radio-button_checkmark_fill_',
|
|
73
|
+
propsKey: disabled ? 'stateCheckmarkFillDisabled' : 'stateCheckmarkFill'
|
|
48
74
|
});
|
|
49
|
-
|
|
50
|
-
|
|
75
|
+
var stateBorderWidthClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
76
|
+
prefix: 'border-width_',
|
|
77
|
+
propsKey: 'stateBorderWidth'
|
|
78
|
+
});
|
|
79
|
+
var stateBorderColorClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
80
|
+
prefix: 'border-color_',
|
|
81
|
+
propsKey: checked ? 'stateBorderColorChecked' : 'stateBorderColor'
|
|
82
|
+
});
|
|
83
|
+
var stateBorderColorDisabledClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
84
|
+
prefix: 'border-color_',
|
|
85
|
+
propsKey: checked ? 'stateBorderColorDisabledChecked' : 'stateBorderColorDisabled'
|
|
86
|
+
});
|
|
87
|
+
return /*#__PURE__*/React__default.default.createElement("label", {
|
|
88
|
+
htmlFor: id,
|
|
89
|
+
"class": clsx__default.default(className, 'radio-button', fillClass, shapeClass)
|
|
90
|
+
}, /*#__PURE__*/React__default.default.createElement("div", {
|
|
91
|
+
className: clsx__default.default('radio-button__item', stateCheckmarkFillClass)
|
|
51
92
|
}, /*#__PURE__*/React__default.default.createElement("input", {
|
|
52
|
-
id: id,
|
|
53
|
-
type: "radio",
|
|
54
93
|
checked: checked,
|
|
94
|
+
className: "radio-button__input",
|
|
55
95
|
disabled: disabled,
|
|
56
|
-
|
|
57
|
-
|
|
96
|
+
id: id,
|
|
97
|
+
type: "radio",
|
|
98
|
+
onChange: onChange
|
|
58
99
|
}), /*#__PURE__*/React__default.default.createElement("div", {
|
|
59
|
-
className:
|
|
100
|
+
className: clsx__default.default('radio-button__state', disabled ? stateFillDisabledClass : stateFillClass, disabled ? stateBorderColorDisabledClass : stateBorderColorClass, stateShapeClass, stateBorderWidthClass)
|
|
60
101
|
}, "\xA0"), /*#__PURE__*/React__default.default.createElement("div", {
|
|
61
|
-
className: "radio-
|
|
62
|
-
}, "\xA0"))
|
|
102
|
+
className: "radio-button__state-checkmark"
|
|
103
|
+
}, "\xA0")), label && /*#__PURE__*/React__default.default.createElement(index.Text, {
|
|
104
|
+
className: "radio-button__label",
|
|
105
|
+
size: labelTextSize,
|
|
106
|
+
textWeight: labelTextWidth,
|
|
107
|
+
textColor: labelTextColor
|
|
108
|
+
}, label), desc && /*#__PURE__*/React__default.default.createElement(index.Text, {
|
|
109
|
+
className: "radio-button__desc",
|
|
110
|
+
size: descTextSize,
|
|
111
|
+
textWeight: descTextWidth,
|
|
112
|
+
textColor: descTextColor
|
|
113
|
+
}, desc));
|
|
63
114
|
}
|
|
64
115
|
RadioButton.propTypes = {
|
|
65
116
|
className: PropTypes__default.default.string
|
|
@@ -69,3 +120,4 @@ RadioButton.defaulProps = {
|
|
|
69
120
|
};
|
|
70
121
|
|
|
71
122
|
exports.RadioButton = RadioButton;
|
|
123
|
+
exports.radioButtonConfig = radioButtonConfig;
|