@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,234 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var PropTypes = require('prop-types');
|
|
5
|
+
var ReactDOM = require('react-dom');
|
|
6
|
+
var clsx = require('clsx');
|
|
7
|
+
var index = require('./components/Fader.js');
|
|
8
|
+
var useStyles = require('./useStyles-e4accb53.js');
|
|
9
|
+
var useDeviceTargetClass = require('./hooks/useDeviceTargetClass.js');
|
|
10
|
+
|
|
11
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
+
|
|
13
|
+
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
14
|
+
var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
|
|
15
|
+
var ReactDOM__default = /*#__PURE__*/_interopDefault(ReactDOM);
|
|
16
|
+
var clsx__default = /*#__PURE__*/_interopDefault(clsx);
|
|
17
|
+
|
|
18
|
+
var getOrCreateModalElement = function getOrCreateModalElement(modalQuerySelector, className) {
|
|
19
|
+
if (className === void 0) {
|
|
20
|
+
className = '';
|
|
21
|
+
}
|
|
22
|
+
// prettier-ignore
|
|
23
|
+
var classList = className && typeof className === 'string' ? className.split(' ').filter(Boolean) : [];
|
|
24
|
+
var modalElement = document.querySelector(modalQuerySelector);
|
|
25
|
+
if (!modalElement) {
|
|
26
|
+
// Add modal element into the DOM on mount.
|
|
27
|
+
modalElement = document.createElement('div');
|
|
28
|
+
modalElement.setAttribute('id', 'modal-global');
|
|
29
|
+
modalElement.classList.add('modal');
|
|
30
|
+
if (classList.length) {
|
|
31
|
+
var _modalElement$classLi;
|
|
32
|
+
(_modalElement$classLi = modalElement.classList).add.apply(_modalElement$classLi, classList);
|
|
33
|
+
}
|
|
34
|
+
document.body.prepend(modalElement);
|
|
35
|
+
}
|
|
36
|
+
return modalElement;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
// Modal component that is an abstraction around the portal API.
|
|
40
|
+
var Modal = /*#__PURE__*/React__default.default.forwardRef(function Modal(props, ref) {
|
|
41
|
+
var children = props.children,
|
|
42
|
+
className = props.className,
|
|
43
|
+
closeButton = props.closeButton,
|
|
44
|
+
contentClassName = props.contentClassName,
|
|
45
|
+
id = props.id,
|
|
46
|
+
isFader = props.isFader,
|
|
47
|
+
faderFill = props.faderFill,
|
|
48
|
+
faderFillGradient = props.faderFillGradient,
|
|
49
|
+
faderOpacity = props.faderOpacity,
|
|
50
|
+
initialIsOpen = props.isOpen,
|
|
51
|
+
isScrollOnOpen = props.isScrollOnOpen,
|
|
52
|
+
isSetFocusOnOpen = props.isSetFocusOnOpen,
|
|
53
|
+
modalQuerySelector = props.modalQuerySelector,
|
|
54
|
+
isOutsideClose = props.isOutsideClose,
|
|
55
|
+
onCloseModal = props.onCloseModal,
|
|
56
|
+
onOpenModal = props.onOpenModal;
|
|
57
|
+
|
|
58
|
+
// Query DOM element
|
|
59
|
+
var _useState = React.useState(null),
|
|
60
|
+
modalElement = _useState[0],
|
|
61
|
+
setModalElement = _useState[1];
|
|
62
|
+
React.useLayoutEffect(function () {
|
|
63
|
+
var element = getOrCreateModalElement(modalQuerySelector, className);
|
|
64
|
+
setModalElement(element);
|
|
65
|
+
if (element) {
|
|
66
|
+
addModalProps(element);
|
|
67
|
+
}
|
|
68
|
+
}, []);
|
|
69
|
+
var modalContentRef = React.useRef(null);
|
|
70
|
+
var modalFaderRef = React.useRef(null);
|
|
71
|
+
var _useState2 = React.useState(initialIsOpen),
|
|
72
|
+
isOpen = _useState2[0],
|
|
73
|
+
setIsOpen = _useState2[1];
|
|
74
|
+
var addModalProps = React.useCallback(function (element) {
|
|
75
|
+
// Change class need in "useEffect"
|
|
76
|
+
if (isOpen) {
|
|
77
|
+
// Show modal
|
|
78
|
+
element.classList.add('modal_state_visible');
|
|
79
|
+
// Scroll to opened modal
|
|
80
|
+
if (isScrollOnOpen) {
|
|
81
|
+
// modalContentRef.current.style.top = `${window.visualViewport.pageTop}px`
|
|
82
|
+
element.scrollIntoView({
|
|
83
|
+
block: 'center',
|
|
84
|
+
behavior: 'smooth'
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// "setTimeout" in this implementation is needs for set focus on modal
|
|
89
|
+
// after "onMouseDown" event on button
|
|
90
|
+
if (isSetFocusOnOpen) {
|
|
91
|
+
setTimeout(function () {
|
|
92
|
+
return modalContentRef.current.focus();
|
|
93
|
+
}, 0);
|
|
94
|
+
}
|
|
95
|
+
} else if (!element.children.length) {
|
|
96
|
+
// Hide modal if has no children
|
|
97
|
+
element.classList.remove('modal_state_visible');
|
|
98
|
+
}
|
|
99
|
+
}, [isOpen, isSetFocusOnOpen]);
|
|
100
|
+
React.useEffect(function () {
|
|
101
|
+
if (!modalElement) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
addModalProps(modalElement);
|
|
105
|
+
}, [isOpen]); // eslint-disable-line
|
|
106
|
+
|
|
107
|
+
// Show modal with children content
|
|
108
|
+
var openModal = React.useCallback(function () {
|
|
109
|
+
setIsOpen(true);
|
|
110
|
+
|
|
111
|
+
// Callback
|
|
112
|
+
if (typeof onOpenModal === 'function') {
|
|
113
|
+
onOpenModal();
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/* SHOW TARGET POPUP ABOVE OTHERS POPUPS IF TARGET ALREADY OPENED
|
|
117
|
+
// If current modal is already opened
|
|
118
|
+
// Move content to end of modal root container. For order in DOM.
|
|
119
|
+
const modalContentElement = modalContentRef.current
|
|
120
|
+
if (modalContentElement) {
|
|
121
|
+
modalContentElement.parentNode.appendChild(modalContentElement)
|
|
122
|
+
}
|
|
123
|
+
// Also move fader to end of modal root container after container
|
|
124
|
+
const modalFaderElement = modalFaderRef.current
|
|
125
|
+
if (modalFaderElement) {
|
|
126
|
+
modalFaderElement.parentNode.appendChild(modalFaderElement)
|
|
127
|
+
}
|
|
128
|
+
*/
|
|
129
|
+
}, [onOpenModal]);
|
|
130
|
+
|
|
131
|
+
// Hide modal and unmount children content
|
|
132
|
+
var closeModal = React.useCallback(function (event) {
|
|
133
|
+
if (event === void 0) {
|
|
134
|
+
event = {};
|
|
135
|
+
}
|
|
136
|
+
var hasRelatedTarget = event.relatedTarget && modalElement.contains(event.relatedTarget);
|
|
137
|
+
if (hasRelatedTarget) {
|
|
138
|
+
return event;
|
|
139
|
+
}
|
|
140
|
+
setIsOpen(false);
|
|
141
|
+
|
|
142
|
+
// Callback
|
|
143
|
+
if (typeof onCloseModal === 'function') {
|
|
144
|
+
onCloseModal();
|
|
145
|
+
}
|
|
146
|
+
}, [modalElement, onCloseModal]);
|
|
147
|
+
|
|
148
|
+
// Save ref things
|
|
149
|
+
React.useImperativeHandle(ref, function () {
|
|
150
|
+
return {
|
|
151
|
+
isOpen: isOpen,
|
|
152
|
+
openModal: openModal,
|
|
153
|
+
closeModal: closeModal,
|
|
154
|
+
modalElement: modalElement
|
|
155
|
+
};
|
|
156
|
+
});
|
|
157
|
+
var contentFillClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
158
|
+
prefix: 'fill_',
|
|
159
|
+
propsKey: 'contentFill'
|
|
160
|
+
});
|
|
161
|
+
var shapeClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
162
|
+
prefix: 'modal-shape_',
|
|
163
|
+
propsKey: 'shape'
|
|
164
|
+
});
|
|
165
|
+
var borderColorClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
166
|
+
prefix: 'border-color_',
|
|
167
|
+
propsKey: 'borderColor'
|
|
168
|
+
});
|
|
169
|
+
var borderWidthClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
170
|
+
prefix: 'border-width_',
|
|
171
|
+
propsKey: 'borderWidth'
|
|
172
|
+
});
|
|
173
|
+
var borderTypeClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
174
|
+
prefix: 'border-type_',
|
|
175
|
+
propsKey: 'borderType'
|
|
176
|
+
});
|
|
177
|
+
var elevationClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
178
|
+
prefix: 'elevation_',
|
|
179
|
+
propsKey: 'elevation'
|
|
180
|
+
});
|
|
181
|
+
var _useStyles = useStyles.useStyles(props),
|
|
182
|
+
modalStyles = _useStyles.styles;
|
|
183
|
+
|
|
184
|
+
// Use a portal to render the children into the element
|
|
185
|
+
return modalElement && /*#__PURE__*/ReactDOM__default.default.createPortal(
|
|
186
|
+
// Any valid React child: JSX, strings, arrays, etc.
|
|
187
|
+
isOpen ? /*#__PURE__*/React__default.default.createElement(React__default.default.Fragment, null, /*#__PURE__*/React__default.default.createElement("div", {
|
|
188
|
+
className: clsx__default.default('modal-content', contentClassName, contentFillClass, shapeClass, borderColorClass, borderWidthClass, borderTypeClass, elevationClass),
|
|
189
|
+
id: id,
|
|
190
|
+
ref: modalContentRef,
|
|
191
|
+
tabIndex: 0,
|
|
192
|
+
onBlur: isOutsideClose ? undefined : closeModal,
|
|
193
|
+
style: modalStyles
|
|
194
|
+
}, closeButton && /*#__PURE__*/React__default.default.createElement("div", {
|
|
195
|
+
className: "modal-content__close",
|
|
196
|
+
onClick: closeModal
|
|
197
|
+
}, closeButton), children), /*#__PURE__*/React__default.default.createElement(index.Fader, {
|
|
198
|
+
ref: modalFaderRef,
|
|
199
|
+
fill: faderFill,
|
|
200
|
+
fillGradient: faderFillGradient,
|
|
201
|
+
opacity: faderOpacity,
|
|
202
|
+
className: "modal__fader",
|
|
203
|
+
isFader: isFader
|
|
204
|
+
})) : null,
|
|
205
|
+
// A DOM element
|
|
206
|
+
modalElement);
|
|
207
|
+
});
|
|
208
|
+
Modal.propTypes = {
|
|
209
|
+
children: PropTypes__default.default.any,
|
|
210
|
+
className: PropTypes__default.default.string,
|
|
211
|
+
closeIcon: PropTypes__default.default.string,
|
|
212
|
+
closeText: PropTypes__default.default.string,
|
|
213
|
+
faderFill: PropTypes__default.default.string,
|
|
214
|
+
faderFillGradient: PropTypes__default.default.string,
|
|
215
|
+
faderOpacity: PropTypes__default.default.string,
|
|
216
|
+
contentClassName: PropTypes__default.default.string,
|
|
217
|
+
id: PropTypes__default.default.string,
|
|
218
|
+
isFader: PropTypes__default.default.bool,
|
|
219
|
+
isScrollOnOpen: PropTypes__default.default.bool,
|
|
220
|
+
isSetFocusOnOpen: PropTypes__default.default.bool,
|
|
221
|
+
modalQuerySelector: PropTypes__default.default.string,
|
|
222
|
+
isOutsideClose: PropTypes__default.default.bool,
|
|
223
|
+
onCloseModal: PropTypes__default.default.func,
|
|
224
|
+
onOpenModal: PropTypes__default.default.func
|
|
225
|
+
};
|
|
226
|
+
Modal.defaultProps = {
|
|
227
|
+
isFader: true,
|
|
228
|
+
isOpen: false,
|
|
229
|
+
isScrollOnOpen: true,
|
|
230
|
+
isSetFocusOnOpen: true,
|
|
231
|
+
modalQuerySelector: '#modal-global'
|
|
232
|
+
};
|
|
233
|
+
|
|
234
|
+
exports.Modal = Modal;
|
package/dist/components/Chips.js
CHANGED
|
@@ -36,6 +36,7 @@ function Chips(props) {
|
|
|
36
36
|
label = props.label,
|
|
37
37
|
labelSize = props.labelSize,
|
|
38
38
|
labelTextColor = props.labelTextColor,
|
|
39
|
+
labelTextWeight = props.labelTextWeight,
|
|
39
40
|
type = props.type;
|
|
40
41
|
var alignDirectionClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
41
42
|
prefix: 'align_',
|
|
@@ -75,6 +76,7 @@ function Chips(props) {
|
|
|
75
76
|
}, typeof label === 'string' ? /*#__PURE__*/React__default.default.createElement(index.Text, {
|
|
76
77
|
className: "chips__label",
|
|
77
78
|
textColor: labelTextColor,
|
|
79
|
+
textWeight: labelTextWeight,
|
|
78
80
|
size: labelSize
|
|
79
81
|
}, label) : /*#__PURE__*/React__default.default.createElement("div", {
|
|
80
82
|
className: "chips__label"
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var PropTypes = require('prop-types');
|
|
5
|
+
var clsx = require('clsx');
|
|
6
|
+
var index = require('./Text.js');
|
|
7
|
+
var useDeviceTargetClass = require('../hooks/useDeviceTargetClass.js');
|
|
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');
|
|
15
|
+
require('lodash/camelCase');
|
|
16
|
+
require('lodash/maxBy');
|
|
17
|
+
require('lodash/upperFirst');
|
|
18
|
+
require('../hooks/styleAttributes.js');
|
|
19
|
+
require('../context/UIContext.js');
|
|
20
|
+
require('../hooks/useMediaQueries.js');
|
|
21
|
+
require('react-responsive');
|
|
22
|
+
require('lodash/castArray');
|
|
23
|
+
|
|
24
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
25
|
+
|
|
26
|
+
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
27
|
+
var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
|
|
28
|
+
var clsx__default = /*#__PURE__*/_interopDefault(clsx);
|
|
29
|
+
|
|
30
|
+
var Choice = /*#__PURE__*/React__default.default.forwardRef(function (props, ref) {
|
|
31
|
+
var name = props.name,
|
|
32
|
+
className = props.className,
|
|
33
|
+
type = props.type,
|
|
34
|
+
options = props.options,
|
|
35
|
+
active = props.active,
|
|
36
|
+
setActiveSegment = props.setActiveSegment,
|
|
37
|
+
size = props.size,
|
|
38
|
+
labelTextColor = props.labelTextColor,
|
|
39
|
+
labelTextActiveColor = props.labelTextActiveColor,
|
|
40
|
+
labelTextSize = props.labelTextSize;
|
|
41
|
+
var controlRef = React.useRef(null);
|
|
42
|
+
var optionsRefs = React.useMemo(function () {
|
|
43
|
+
return new Map(options.map(function (item) {
|
|
44
|
+
return [item.value, /*#__PURE__*/React.createRef()];
|
|
45
|
+
}));
|
|
46
|
+
}, [options]);
|
|
47
|
+
var borderColorClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
48
|
+
prefix: 'border-color_',
|
|
49
|
+
propsKey: 'borderColor'
|
|
50
|
+
});
|
|
51
|
+
var borderWidthClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
52
|
+
prefix: 'border-width_',
|
|
53
|
+
propsKey: 'borderWidth'
|
|
54
|
+
});
|
|
55
|
+
var borderTypeClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
56
|
+
prefix: 'border-type_',
|
|
57
|
+
propsKey: 'borderType'
|
|
58
|
+
});
|
|
59
|
+
var shapeClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
60
|
+
prefix: 'choice_shape_',
|
|
61
|
+
propsKey: 'shape'
|
|
62
|
+
});
|
|
63
|
+
var fillClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
64
|
+
prefix: 'fill_',
|
|
65
|
+
propsKey: 'fill'
|
|
66
|
+
});
|
|
67
|
+
var fillHoverClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
68
|
+
prefix: 'fill_hover_',
|
|
69
|
+
propsKey: 'fillHover'
|
|
70
|
+
});
|
|
71
|
+
var fillActiveClass = useDeviceTargetClass.useDeviceTargetClass(props, {
|
|
72
|
+
prefix: 'fill_active_',
|
|
73
|
+
propsKey: 'fillActive'
|
|
74
|
+
});
|
|
75
|
+
return /*#__PURE__*/React__default.default.createElement("div", {
|
|
76
|
+
className: clsx__default.default(className, 'choice', shapeClass, fillClass, borderColorClass, borderWidthClass, borderTypeClass, size && "choice_size_" + size, type && "choice_type_" + type),
|
|
77
|
+
ref: controlRef
|
|
78
|
+
}, /*#__PURE__*/React__default.default.createElement("div", {
|
|
79
|
+
className: "choice__wrapper"
|
|
80
|
+
}, options == null ? void 0 : options.map(function (item, i) {
|
|
81
|
+
return /*#__PURE__*/React__default.default.createElement("div", {
|
|
82
|
+
className: clsx__default.default('choice__item', borderColorClass, borderWidthClass, borderTypeClass, fillHoverClass, item.value === active.value && fillActiveClass, item.value === active.value && 'choice__item_active'),
|
|
83
|
+
key: item.value,
|
|
84
|
+
ref: optionsRefs.get(item.value)
|
|
85
|
+
}, /*#__PURE__*/React__default.default.createElement("input", {
|
|
86
|
+
checked: item.value === active.value,
|
|
87
|
+
className: "choice__item-radio",
|
|
88
|
+
id: item.label,
|
|
89
|
+
name: name,
|
|
90
|
+
type: "radio",
|
|
91
|
+
value: item.value,
|
|
92
|
+
onChange: function onChange() {
|
|
93
|
+
return setActiveSegment(item);
|
|
94
|
+
}
|
|
95
|
+
}), /*#__PURE__*/React__default.default.createElement("label", {
|
|
96
|
+
className: clsx__default.default('choice__item-label'),
|
|
97
|
+
htmlFor: item.label
|
|
98
|
+
}, /*#__PURE__*/React__default.default.createElement(index.Text, {
|
|
99
|
+
textColor: item.value === active.value ? labelTextActiveColor : labelTextColor,
|
|
100
|
+
size: labelTextSize
|
|
101
|
+
}, item.label)));
|
|
102
|
+
})));
|
|
103
|
+
});
|
|
104
|
+
Choice.displayName = 'Choice';
|
|
105
|
+
Choice.propTypes = {
|
|
106
|
+
active: PropTypes__default.default.object,
|
|
107
|
+
className: PropTypes__default.default.string,
|
|
108
|
+
fill: PropTypes__default.default.string,
|
|
109
|
+
name: PropTypes__default.default.string,
|
|
110
|
+
options: PropTypes__default.default.array,
|
|
111
|
+
setActiveSegment: PropTypes__default.default.func,
|
|
112
|
+
type: PropTypes__default.default.string
|
|
113
|
+
};
|
|
114
|
+
Choice.defaultProps = {
|
|
115
|
+
active: {}
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
exports.Choice = Choice;
|