@invoicebox/ui 0.1.0-alpha.314 → 0.1.0-alpha.316
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/common/Tooltip/index.d.ts +9 -0
- package/dist/components/common/Tooltip/index.js +60 -0
- package/dist/components/common/Tooltip/index.stories.d.ts +6 -0
- package/dist/components/common/Tooltip/index.stories.js +43 -0
- package/dist/components/common/Tooltip/palette.d.ts +7 -0
- package/dist/components/common/Tooltip/palette.js +13 -0
- package/dist/components/common/Tooltip/styles.d.ts +9 -0
- package/dist/components/common/Tooltip/styles.js +34 -0
- package/dist/components/common/Typography/index.d.ts +5 -2
- package/dist/components/form/Autocomplete/components/Autocomplete/index.js +5 -1
- package/dist/components/form/Checkbox/CheckIcon.d.ts +2 -0
- package/dist/components/form/Checkbox/CheckIcon.js +23 -0
- package/dist/components/form/Checkbox/index.d.ts +11 -0
- package/dist/components/form/Checkbox/index.js +47 -0
- package/dist/components/form/Checkbox/index.stories.d.ts +8 -0
- package/dist/components/form/Checkbox/index.stories.js +69 -0
- package/dist/components/form/Checkbox/palette.d.ts +12 -0
- package/dist/components/form/Checkbox/palette.js +20 -0
- package/dist/components/form/Checkbox/styles.d.ts +13 -0
- package/dist/components/form/Checkbox/styles.js +71 -0
- package/dist/components/form/CurrencyInput/CoreCurrencyInput/index.d.ts +1 -1
- package/dist/components/form/CurrencyInput/CoreCurrencyInput/index.js +12 -4
- package/dist/components/form/DateInput/index.d.ts +1 -1
- package/dist/components/form/DateInput/index.js +8 -2
- package/dist/components/form/DateTimeInput/index.d.ts +1 -1
- package/dist/components/form/DateTimeInput/index.js +8 -2
- package/dist/components/form/InputLabel/index.d.ts +1 -0
- package/dist/components/form/InputLabel/index.js +4 -1
- package/dist/components/form/PhoneInput/index.js +6 -2
- package/dist/components/form/PositiveIntegerInput/index.d.ts +1 -1
- package/dist/components/form/PositiveIntegerInput/index.js +8 -2
- package/dist/components/form/PureInput/index.js +5 -2
- package/dist/components/form/SearchInput/index.d.ts +2 -2
- package/dist/components/form/SearchInput/index.js +8 -2
- package/dist/components/form/Select/components/Input/index.d.ts +2 -2
- package/dist/components/form/Select/components/Input/index.js +8 -2
- package/dist/components/form/Select/components/MultipleValue/index.d.ts +9 -0
- package/dist/components/form/Select/components/MultipleValue/index.js +129 -0
- package/dist/components/form/Select/components/MultipleValue/styles.d.ts +8 -0
- package/dist/components/form/Select/components/MultipleValue/styles.js +31 -0
- package/dist/components/form/Select/index.d.ts +17 -4
- package/dist/components/form/Select/index.js +98 -44
- package/dist/components/form/Select/index.stories.d.ts +3 -1
- package/dist/components/form/Select/index.stories.js +32 -1
- package/dist/components/form/Select/palette.d.ts +2 -0
- package/dist/components/form/Select/palette.js +3 -1
- package/dist/components/form/Select/styles.d.ts +4 -0
- package/dist/components/form/Select/styles.js +26 -10
- package/dist/components/form/TagsInput/index.js +4 -1
- package/dist/components/form/TextInput/index.js +6 -2
- package/dist/esm/components/common/Tooltip/index.js +51 -0
- package/dist/esm/components/common/Tooltip/index.stories.js +36 -0
- package/dist/esm/components/common/Tooltip/palette.js +7 -0
- package/dist/esm/components/common/Tooltip/styles.js +27 -0
- package/dist/esm/components/form/Autocomplete/components/Autocomplete/index.js +5 -1
- package/dist/esm/components/form/Checkbox/CheckIcon.js +16 -0
- package/dist/esm/components/form/Checkbox/index.js +38 -0
- package/dist/esm/components/form/Checkbox/index.stories.js +60 -0
- package/dist/esm/components/form/Checkbox/palette.js +13 -0
- package/dist/esm/components/form/Checkbox/styles.js +64 -0
- package/dist/esm/components/form/CurrencyInput/CoreCurrencyInput/index.js +9 -3
- package/dist/esm/components/form/DateInput/index.js +9 -3
- package/dist/esm/components/form/DateTimeInput/index.js +9 -3
- package/dist/esm/components/form/InputLabel/index.js +4 -1
- package/dist/esm/components/form/PhoneInput/index.js +7 -3
- package/dist/esm/components/form/PositiveIntegerInput/index.js +9 -3
- package/dist/esm/components/form/PureInput/index.js +6 -3
- package/dist/esm/components/form/SearchInput/index.js +9 -3
- package/dist/esm/components/form/Select/components/Input/index.js +9 -3
- package/dist/esm/components/form/Select/components/MultipleValue/index.js +120 -0
- package/dist/esm/components/form/Select/components/MultipleValue/styles.js +22 -0
- package/dist/esm/components/form/Select/index.js +98 -44
- package/dist/esm/components/form/Select/index.stories.js +31 -0
- package/dist/esm/components/form/Select/palette.js +3 -1
- package/dist/esm/components/form/Select/styles.js +25 -9
- package/dist/esm/components/form/TagsInput/index.js +5 -2
- package/dist/esm/components/form/TextInput/index.js +7 -3
- package/dist/esm/index.js +2 -0
- package/dist/esm/palette/context.js +5 -1
- package/dist/esm/palette/provider.js +5 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.js +14 -0
- package/dist/palette/context.d.ts +4 -0
- package/dist/palette/context.js +5 -1
- package/dist/palette/provider.js +5 -1
- package/dist/palette/usePalette.d.ts +2 -0
- package/package.json +1 -1
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
var _excluded = ["disabled", "className", "checked", "disabledText", "label"];
|
|
2
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
3
|
+
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
|
4
|
+
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }
|
|
5
|
+
import React, { useMemo } from 'react';
|
|
6
|
+
import { Typography } from '../../common/Typography';
|
|
7
|
+
import { Tooltip } from '../../common/Tooltip';
|
|
8
|
+
import { useComponentPalette } from '../../../palette';
|
|
9
|
+
import * as S from './styles';
|
|
10
|
+
export var Checkbox = function Checkbox(_ref) {
|
|
11
|
+
var _ref$disabled = _ref.disabled,
|
|
12
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
13
|
+
className = _ref.className,
|
|
14
|
+
_ref$checked = _ref.checked,
|
|
15
|
+
checked = _ref$checked === void 0 ? false : _ref$checked,
|
|
16
|
+
disabledText = _ref.disabledText,
|
|
17
|
+
label = _ref.label,
|
|
18
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
19
|
+
var palette = useComponentPalette('checkbox');
|
|
20
|
+
var content = useMemo(function () {
|
|
21
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(S.HiddenCheckbox, _extends({
|
|
22
|
+
type: "checkbox",
|
|
23
|
+
disabled: disabled,
|
|
24
|
+
checked: checked
|
|
25
|
+
}, props)), /*#__PURE__*/React.createElement(S.StyledCheckbox, null, /*#__PURE__*/React.createElement(S.CheckboxIcon, null)));
|
|
26
|
+
}, [checked, disabled, props]);
|
|
27
|
+
return /*#__PURE__*/React.createElement(S.CheckboxLabel, {
|
|
28
|
+
$checked: checked,
|
|
29
|
+
$disabled: disabled,
|
|
30
|
+
$palette: palette,
|
|
31
|
+
className: className
|
|
32
|
+
}, /*#__PURE__*/React.createElement(S.CheckboxContainer, null, disabled && disabledText ? /*#__PURE__*/React.createElement(Tooltip, {
|
|
33
|
+
overlay: disabledText
|
|
34
|
+
}, content) : content), label && /*#__PURE__*/React.createElement(Typography, {
|
|
35
|
+
variant: "bodyMRegular"
|
|
36
|
+
}, label));
|
|
37
|
+
};
|
|
38
|
+
export default /*#__PURE__*/React.memo(Checkbox);
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
3
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
4
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
5
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
6
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
7
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
8
|
+
import React, { useState } from 'react';
|
|
9
|
+
import { Checkbox } from '.';
|
|
10
|
+
var meta = {
|
|
11
|
+
title: 'form/Checkbox',
|
|
12
|
+
component: Checkbox,
|
|
13
|
+
tags: ['autodocs']
|
|
14
|
+
};
|
|
15
|
+
export default meta;
|
|
16
|
+
var Component = function Component(props) {
|
|
17
|
+
var _useState = useState(props.checked),
|
|
18
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
19
|
+
checked = _useState2[0],
|
|
20
|
+
setChecked = _useState2[1];
|
|
21
|
+
return /*#__PURE__*/React.createElement(Checkbox, _extends({}, props, {
|
|
22
|
+
checked: checked,
|
|
23
|
+
onChange: function onChange() {
|
|
24
|
+
return setChecked(function (prev) {
|
|
25
|
+
return !prev;
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
}));
|
|
29
|
+
};
|
|
30
|
+
export var Default = {
|
|
31
|
+
args: {
|
|
32
|
+
checked: false,
|
|
33
|
+
label: 'Label'
|
|
34
|
+
},
|
|
35
|
+
render: Component
|
|
36
|
+
};
|
|
37
|
+
export var Checked = {
|
|
38
|
+
args: {
|
|
39
|
+
checked: true,
|
|
40
|
+
label: 'Label'
|
|
41
|
+
},
|
|
42
|
+
render: Component
|
|
43
|
+
};
|
|
44
|
+
export var Disabled = {
|
|
45
|
+
args: {
|
|
46
|
+
checked: false,
|
|
47
|
+
disabled: true,
|
|
48
|
+
label: 'Label',
|
|
49
|
+
disabledText: 'Недоступно'
|
|
50
|
+
},
|
|
51
|
+
render: Component
|
|
52
|
+
};
|
|
53
|
+
export var DisabledChecked = {
|
|
54
|
+
args: {
|
|
55
|
+
checked: true,
|
|
56
|
+
disabled: true,
|
|
57
|
+
label: 'Label'
|
|
58
|
+
},
|
|
59
|
+
render: Component
|
|
60
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import hexToRgba from '../../../utils/hexToRgba';
|
|
2
|
+
export var generateCheckboxPalette = function generateCheckboxPalette(abstractPalette) {
|
|
3
|
+
return {
|
|
4
|
+
labelColor: abstractPalette.primary,
|
|
5
|
+
mark: abstractPalette.base,
|
|
6
|
+
borderDefault: hexToRgba(abstractPalette.primary, 0.3),
|
|
7
|
+
borderHover: hexToRgba(abstractPalette.primary, 0.5),
|
|
8
|
+
checkedBg: abstractPalette.secondary,
|
|
9
|
+
checkedHoverBg: '#EDC743',
|
|
10
|
+
disabledBg: hexToRgba(abstractPalette.neutralBrutal, 0.3),
|
|
11
|
+
disabledBorder: hexToRgba(abstractPalette.neutralBrutal, 0.3)
|
|
12
|
+
};
|
|
13
|
+
};
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import styled from 'styled-components';
|
|
2
|
+
import { CheckIcon } from './CheckIcon';
|
|
3
|
+
var TRANSITION = 'all .2s ease-in-out';
|
|
4
|
+
var BORDER_RADIUS_MIN = 4;
|
|
5
|
+
export var CheckboxContainer = styled.div.withConfig({
|
|
6
|
+
displayName: "styles__CheckboxContainer",
|
|
7
|
+
componentId: "sc-11prdl0-0"
|
|
8
|
+
})(["display:inline-block;vertical-align:middle;"]);
|
|
9
|
+
export var HiddenCheckbox = styled.input.withConfig({
|
|
10
|
+
displayName: "styles__HiddenCheckbox",
|
|
11
|
+
componentId: "sc-11prdl0-1"
|
|
12
|
+
})(["display:none;"]);
|
|
13
|
+
export var CheckboxIcon = styled(CheckIcon).withConfig({
|
|
14
|
+
displayName: "styles__CheckboxIcon",
|
|
15
|
+
componentId: "sc-11prdl0-2"
|
|
16
|
+
})(["transition:", ";"], TRANSITION);
|
|
17
|
+
export var StyledCheckbox = styled.div.withConfig({
|
|
18
|
+
displayName: "styles__StyledCheckbox",
|
|
19
|
+
componentId: "sc-11prdl0-3"
|
|
20
|
+
})(["display:flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:", "px;transition:", ";"], BORDER_RADIUS_MIN, TRANSITION);
|
|
21
|
+
var getStylesCheckbox = function getStylesCheckbox(palette, disabled, checked) {
|
|
22
|
+
if (disabled) {
|
|
23
|
+
if (checked) {
|
|
24
|
+
return "background-color: ".concat(palette.disabledBg, "; border: none");
|
|
25
|
+
}
|
|
26
|
+
return "border: 1px solid ".concat(palette.disabledBorder);
|
|
27
|
+
}
|
|
28
|
+
if (checked) {
|
|
29
|
+
return "background-color: ".concat(palette.checkedBg, "; border: none");
|
|
30
|
+
}
|
|
31
|
+
return "border: 1px solid ".concat(palette.borderDefault);
|
|
32
|
+
};
|
|
33
|
+
var getHoverStylesCheckbox = function getHoverStylesCheckbox(palette, disabled, checked) {
|
|
34
|
+
if (disabled) {
|
|
35
|
+
if (checked) {
|
|
36
|
+
return "background-color: ".concat(palette.disabledBg, "; border: none");
|
|
37
|
+
}
|
|
38
|
+
return "border: 1px solid ".concat(palette.disabledBg);
|
|
39
|
+
}
|
|
40
|
+
if (checked) {
|
|
41
|
+
return "background-color: ".concat(palette.checkedHoverBg, "; border: none");
|
|
42
|
+
}
|
|
43
|
+
return "border: 1px solid ".concat(palette.borderHover);
|
|
44
|
+
};
|
|
45
|
+
export var CheckboxLabel = styled.label.withConfig({
|
|
46
|
+
displayName: "styles__CheckboxLabel",
|
|
47
|
+
componentId: "sc-11prdl0-4"
|
|
48
|
+
})(["display:flex;align-items:center;grid-column-gap:10px;user-select:none;width:fit-content;cursor:pointer;color:", ";", "{", ";", "{opacity:", ";}}&:hover{", "{", ";}}"], function (_ref) {
|
|
49
|
+
var $palette = _ref.$palette;
|
|
50
|
+
return $palette.labelColor;
|
|
51
|
+
}, StyledCheckbox, function (_ref2) {
|
|
52
|
+
var $checked = _ref2.$checked,
|
|
53
|
+
$disabled = _ref2.$disabled,
|
|
54
|
+
$palette = _ref2.$palette;
|
|
55
|
+
return getStylesCheckbox($palette, $disabled, $checked);
|
|
56
|
+
}, CheckboxIcon, function (_ref3) {
|
|
57
|
+
var $checked = _ref3.$checked;
|
|
58
|
+
return $checked ? 1 : 0;
|
|
59
|
+
}, StyledCheckbox, function (_ref4) {
|
|
60
|
+
var $checked = _ref4.$checked,
|
|
61
|
+
$disabled = _ref4.$disabled,
|
|
62
|
+
$palette = _ref4.$palette;
|
|
63
|
+
return getHoverStylesCheckbox($palette, $disabled, $checked);
|
|
64
|
+
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { useId } from 'react';
|
|
2
2
|
import { InputLabel } from '../../InputLabel';
|
|
3
3
|
import { useInputFocus } from '../../../../hooks/useInputFocus';
|
|
4
4
|
import { StyledCurrencyInputFromLibrary, InputWrapper } from './styles';
|
|
@@ -21,7 +21,8 @@ export var CoreCurrencyInput = function CoreCurrencyInput(_ref) {
|
|
|
21
21
|
required = _ref$required === void 0 ? false : _ref$required,
|
|
22
22
|
onBlur = _ref.onBlur,
|
|
23
23
|
_ref$useModernStyles = _ref.useModernStyles,
|
|
24
|
-
useModernStyles = _ref$useModernStyles === void 0 ? false : _ref$useModernStyles
|
|
24
|
+
useModernStyles = _ref$useModernStyles === void 0 ? false : _ref$useModernStyles,
|
|
25
|
+
id = _ref.id;
|
|
25
26
|
var _useInputFocus = useInputFocus({
|
|
26
27
|
onBlur: onBlur
|
|
27
28
|
}),
|
|
@@ -29,6 +30,8 @@ export var CoreCurrencyInput = function CoreCurrencyInput(_ref) {
|
|
|
29
30
|
handleFocus = _useInputFocus.handleFocus,
|
|
30
31
|
handleBlur = _useInputFocus.handleBlur;
|
|
31
32
|
var palette = useComponentPalette('pureInput');
|
|
33
|
+
var fallbackId = useId();
|
|
34
|
+
var inputId = id !== null && id !== void 0 ? id : fallbackId;
|
|
32
35
|
var _useInputStyles = useInputStyles({
|
|
33
36
|
isHaveValue: !!value || typeof defaultValue === 'number',
|
|
34
37
|
useModernStyles: useModernStyles,
|
|
@@ -48,8 +51,11 @@ export var CoreCurrencyInput = function CoreCurrencyInput(_ref) {
|
|
|
48
51
|
disabled: disabled,
|
|
49
52
|
required: required,
|
|
50
53
|
useModernStyles: useModernStyles,
|
|
51
|
-
size: fieldSize
|
|
54
|
+
size: fieldSize,
|
|
55
|
+
htmlFor: inputId
|
|
52
56
|
}, /*#__PURE__*/React.createElement(InputWrapper, null, modernPlaceholder, /*#__PURE__*/React.createElement(StyledCurrencyInputFromLibrary, {
|
|
57
|
+
id: inputId,
|
|
58
|
+
"aria-label": label && !inputLabel ? label : undefined,
|
|
53
59
|
$palette: palette,
|
|
54
60
|
$hasBorder: !useModernStyles || hasError,
|
|
55
61
|
$paddingLeft: 18,
|
|
@@ -5,7 +5,7 @@ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r)
|
|
|
5
5
|
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
6
6
|
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
7
7
|
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
8
|
-
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
8
|
+
import React, { useCallback, useEffect, useId, useRef, useState } from 'react';
|
|
9
9
|
import * as S from './styles';
|
|
10
10
|
import { logic } from './logic';
|
|
11
11
|
import { useOutsideClick } from '../../../hooks/useOutsideClick';
|
|
@@ -36,9 +36,12 @@ export var DateInput = function DateInput(_ref) {
|
|
|
36
36
|
_ref$useModernStyles = _ref.useModernStyles,
|
|
37
37
|
useModernStyles = _ref$useModernStyles === void 0 ? false : _ref$useModernStyles,
|
|
38
38
|
_ref$required = _ref.required,
|
|
39
|
-
required = _ref$required === void 0 ? false : _ref$required
|
|
39
|
+
required = _ref$required === void 0 ? false : _ref$required,
|
|
40
|
+
id = _ref.id;
|
|
40
41
|
var palette = useComponentPalette('dateInput');
|
|
41
42
|
var inputRef = useRef(null);
|
|
43
|
+
var fallbackId = useId();
|
|
44
|
+
var inputId = id !== null && id !== void 0 ? id : fallbackId;
|
|
42
45
|
var isMobile = useMobile();
|
|
43
46
|
var _useState = useState(false),
|
|
44
47
|
_useState2 = _slicedToArray(_useState, 2),
|
|
@@ -115,8 +118,11 @@ export var DateInput = function DateInput(_ref) {
|
|
|
115
118
|
label: inputLabel,
|
|
116
119
|
useModernStyles: useModernStyles,
|
|
117
120
|
size: fieldSize,
|
|
118
|
-
required: required
|
|
121
|
+
required: required,
|
|
122
|
+
htmlFor: inputId
|
|
119
123
|
}, /*#__PURE__*/React.createElement(S.InputWrapper, null, modernPlaceholder, /*#__PURE__*/React.createElement(PureInput, _extends({
|
|
124
|
+
id: inputId,
|
|
125
|
+
"aria-label": label && !inputLabel ? label : undefined,
|
|
120
126
|
onClick: handleTrigger,
|
|
121
127
|
ref: inputRef,
|
|
122
128
|
hasError: hasError,
|
|
@@ -5,7 +5,7 @@ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r)
|
|
|
5
5
|
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
6
6
|
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
7
7
|
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
8
|
-
import React, { useCallback, useRef, useState } from 'react';
|
|
8
|
+
import React, { useCallback, useId, useRef, useState } from 'react';
|
|
9
9
|
import { useComponentPalette } from '../../../palette';
|
|
10
10
|
import { useOutsideClick } from '../../../hooks/useOutsideClick';
|
|
11
11
|
import { useInputFocus } from '../../../hooks/useInputFocus';
|
|
@@ -40,9 +40,12 @@ export var DateTimeInput = function DateTimeInput(_ref) {
|
|
|
40
40
|
_ref$required = _ref.required,
|
|
41
41
|
required = _ref$required === void 0 ? false : _ref$required,
|
|
42
42
|
_ref$useModernStyles = _ref.useModernStyles,
|
|
43
|
-
useModernStyles = _ref$useModernStyles === void 0 ? false : _ref$useModernStyles
|
|
43
|
+
useModernStyles = _ref$useModernStyles === void 0 ? false : _ref$useModernStyles,
|
|
44
|
+
id = _ref.id;
|
|
44
45
|
var palette = useComponentPalette('dateTimeInput');
|
|
45
46
|
var inputRef = useRef(null);
|
|
47
|
+
var fallbackId = useId();
|
|
48
|
+
var inputId = id !== null && id !== void 0 ? id : fallbackId;
|
|
46
49
|
var isMobile = useMobile();
|
|
47
50
|
var withTime = true;
|
|
48
51
|
var _useState = useState(false),
|
|
@@ -142,8 +145,11 @@ export var DateTimeInput = function DateTimeInput(_ref) {
|
|
|
142
145
|
label: inputLabel,
|
|
143
146
|
required: required,
|
|
144
147
|
useModernStyles: useModernStyles,
|
|
145
|
-
size: fieldSize
|
|
148
|
+
size: fieldSize,
|
|
149
|
+
htmlFor: inputId
|
|
146
150
|
}, /*#__PURE__*/React.createElement(S.InputWrapper, null, modernPlaceholder, /*#__PURE__*/React.createElement(PureInput, _extends({
|
|
151
|
+
id: inputId,
|
|
152
|
+
"aria-label": label && !inputLabel ? label : undefined,
|
|
147
153
|
onClick: handleTrigger,
|
|
148
154
|
ref: inputRef,
|
|
149
155
|
hasError: hasError,
|
|
@@ -15,7 +15,8 @@ export var InputLabel = function InputLabel(_ref) {
|
|
|
15
15
|
useModernStyles = _ref$useModernStyles === void 0 ? false : _ref$useModernStyles,
|
|
16
16
|
_ref$size = _ref.size,
|
|
17
17
|
size = _ref$size === void 0 ? 'M' : _ref$size,
|
|
18
|
-
left = _ref.left
|
|
18
|
+
left = _ref.left,
|
|
19
|
+
htmlFor = _ref.htmlFor;
|
|
19
20
|
var palette = useComponentPalette('inputLabel');
|
|
20
21
|
return /*#__PURE__*/React.createElement(S.Wrapper, {
|
|
21
22
|
$palette: palette,
|
|
@@ -25,6 +26,8 @@ export var InputLabel = function InputLabel(_ref) {
|
|
|
25
26
|
$marginTop: useModernStyles && MODERN_STYLE_SIZE_PARAMS_MAP[size].$labelPaddingTop < 0 && !!label ? -MODERN_STYLE_SIZE_PARAMS_MAP[size].$labelPaddingTop : undefined,
|
|
26
27
|
$paddingTop: useModernStyles ? 0 : 10
|
|
27
28
|
}, label && /*#__PURE__*/React.createElement(S.Label, {
|
|
29
|
+
element: "label",
|
|
30
|
+
htmlFor: htmlFor,
|
|
28
31
|
$palette: palette,
|
|
29
32
|
$inFocus: inFocus,
|
|
30
33
|
variant: size && useModernStyles ? MODERN_STYLE_SIZE_PARAMS_MAP[size].$labelVariant : 'captionRegular',
|
|
@@ -5,7 +5,7 @@ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r)
|
|
|
5
5
|
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
6
6
|
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
7
7
|
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
8
|
-
import React, { useCallback, useMemo, useState, useRef } from 'react';
|
|
8
|
+
import React, { useCallback, useMemo, useState, useRef, useId } from 'react';
|
|
9
9
|
import InputMask from '@mona-health/react-input-mask';
|
|
10
10
|
import * as S from './styles';
|
|
11
11
|
import { PhoneInputLogic } from './phoneInputLogic';
|
|
@@ -45,6 +45,8 @@ export var PhoneInput = function PhoneInput(_ref) {
|
|
|
45
45
|
useModernStyles = _ref$useModernStyles === void 0 ? false : _ref$useModernStyles;
|
|
46
46
|
var inputRef = useRef();
|
|
47
47
|
var isMobile = useMobile();
|
|
48
|
+
var fallbackId = useId();
|
|
49
|
+
var inputId = id !== null && id !== void 0 ? id : fallbackId;
|
|
48
50
|
var phoneInputLogic = useMemo(function () {
|
|
49
51
|
return new PhoneInputLogic(isSupportCityRusPhoneNumber);
|
|
50
52
|
}, [isSupportCityRusPhoneNumber]);
|
|
@@ -182,7 +184,8 @@ export var PhoneInput = function PhoneInput(_ref) {
|
|
|
182
184
|
required: required,
|
|
183
185
|
useModernStyles: useModernStyles,
|
|
184
186
|
size: fieldSize,
|
|
185
|
-
left: isHaveSelectCountries && useModernStyles ? 65 : undefined
|
|
187
|
+
left: isHaveSelectCountries && useModernStyles ? 65 : undefined,
|
|
188
|
+
htmlFor: inputId
|
|
186
189
|
}, /*#__PURE__*/React.createElement(S.InputLabelContent, null, useModernStyles && /*#__PURE__*/React.createElement(ModernPlaceholder, {
|
|
187
190
|
visible: !isHideModernPlaceholder,
|
|
188
191
|
paddingLeft: isHaveSelectCountries ? 75 : 18,
|
|
@@ -212,7 +215,8 @@ export var PhoneInput = function PhoneInput(_ref) {
|
|
|
212
215
|
placeholder: inputPlaceholder,
|
|
213
216
|
ref: inputRef
|
|
214
217
|
}, /*#__PURE__*/React.createElement(PureInput, _extends({
|
|
215
|
-
id:
|
|
218
|
+
id: inputId,
|
|
219
|
+
"aria-label": label && !inputLabel ? label : undefined,
|
|
216
220
|
hasError: hasPureInputError,
|
|
217
221
|
inFocus: inFocus,
|
|
218
222
|
name: name,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
|
-
import React, { useCallback } from 'react';
|
|
2
|
+
import React, { useCallback, useId } from 'react';
|
|
3
3
|
import * as S from './styles';
|
|
4
4
|
import { useInputFocus } from '../../../hooks/useInputFocus';
|
|
5
5
|
import { InputLabel } from '../InputLabel';
|
|
@@ -25,7 +25,8 @@ export var PositiveIntegerInput = function PositiveIntegerInput(_ref) {
|
|
|
25
25
|
name = _ref.name,
|
|
26
26
|
size = _ref.size,
|
|
27
27
|
_ref$useModernStyles = _ref.useModernStyles,
|
|
28
|
-
useModernStyles = _ref$useModernStyles === void 0 ? false : _ref$useModernStyles
|
|
28
|
+
useModernStyles = _ref$useModernStyles === void 0 ? false : _ref$useModernStyles,
|
|
29
|
+
id = _ref.id;
|
|
29
30
|
var _useInputFocus = useInputFocus({
|
|
30
31
|
onFocus: onFocus,
|
|
31
32
|
onBlur: onBlur
|
|
@@ -33,6 +34,8 @@ export var PositiveIntegerInput = function PositiveIntegerInput(_ref) {
|
|
|
33
34
|
inFocus = _useInputFocus.inFocus,
|
|
34
35
|
handleFocus = _useInputFocus.handleFocus,
|
|
35
36
|
handleBlur = _useInputFocus.handleBlur;
|
|
37
|
+
var fallbackId = useId();
|
|
38
|
+
var inputId = id !== null && id !== void 0 ? id : fallbackId;
|
|
36
39
|
var _useInputStyles = useInputStyles({
|
|
37
40
|
isHaveValue: typeof value === 'number',
|
|
38
41
|
useModernStyles: useModernStyles,
|
|
@@ -77,8 +80,11 @@ export var PositiveIntegerInput = function PositiveIntegerInput(_ref) {
|
|
|
77
80
|
inFocus: inFocus,
|
|
78
81
|
label: inputLabel,
|
|
79
82
|
useModernStyles: useModernStyles,
|
|
80
|
-
size: fieldSize
|
|
83
|
+
size: fieldSize,
|
|
84
|
+
htmlFor: inputId
|
|
81
85
|
}, /*#__PURE__*/React.createElement(S.ControlWrapper, null, modernPlaceholder, /*#__PURE__*/React.createElement(PureInput, _extends({
|
|
86
|
+
id: inputId,
|
|
87
|
+
"aria-label": label && !inputLabel ? label : undefined,
|
|
82
88
|
name: name,
|
|
83
89
|
hasError: hasError,
|
|
84
90
|
inFocus: inFocus,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
var _excluded = ["paddingLeft", "paddingRight", "paddingTop", "paddingBottom", "borderRadius", "hasError", "inFocus", "hasBorder", "isOnlyNumbers", "className", "onChange", "element", "variant", "renderedValue", "useModernStyles"];
|
|
1
|
+
var _excluded = ["paddingLeft", "paddingRight", "paddingTop", "paddingBottom", "borderRadius", "hasError", "inFocus", "hasBorder", "isOnlyNumbers", "className", "onChange", "element", "variant", "renderedValue", "useModernStyles", "id"];
|
|
2
2
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
3
3
|
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
|
4
4
|
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }
|
|
5
|
-
import React, { useCallback } from 'react';
|
|
5
|
+
import React, { useCallback, useId } from 'react';
|
|
6
6
|
import * as S from './styles';
|
|
7
7
|
import { useComponentPalette } from '../../../palette';
|
|
8
8
|
export var PureInput = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
@@ -33,8 +33,10 @@ export var PureInput = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
33
33
|
renderedValue = _ref.renderedValue,
|
|
34
34
|
_ref$useModernStyles = _ref.useModernStyles,
|
|
35
35
|
useModernStyles = _ref$useModernStyles === void 0 ? false : _ref$useModernStyles,
|
|
36
|
+
id = _ref.id,
|
|
36
37
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
37
38
|
var palette = useComponentPalette('pureInput');
|
|
39
|
+
var fallbackId = useId();
|
|
38
40
|
var handleChange = useCallback(function (event) {
|
|
39
41
|
var inputValue = event.target.value;
|
|
40
42
|
event.target.value = isOnlyNumbers ? inputValue.replace(/[^0-9]/g, '') : inputValue;
|
|
@@ -56,7 +58,8 @@ export var PureInput = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
56
58
|
$palette: palette,
|
|
57
59
|
$borderRadius: borderRadius,
|
|
58
60
|
onChange: handleChange,
|
|
59
|
-
$useModernStyles: useModernStyles
|
|
61
|
+
$useModernStyles: useModernStyles,
|
|
62
|
+
id: id !== null && id !== void 0 ? id : fallbackId
|
|
60
63
|
}, rest), renderedValue);
|
|
61
64
|
});
|
|
62
65
|
PureInput.displayName = 'PureInput';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
|
-
import React, { useCallback, forwardRef } from 'react';
|
|
2
|
+
import React, { useCallback, forwardRef, useId } from 'react';
|
|
3
3
|
import * as S from './styles';
|
|
4
4
|
import { InputLabel } from '../InputLabel';
|
|
5
5
|
import { PureInput } from '../PureInput';
|
|
@@ -21,7 +21,8 @@ export var SearchInput = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
21
21
|
maxLength = _ref.maxLength,
|
|
22
22
|
size = _ref.size,
|
|
23
23
|
_ref$useModernStyles = _ref.useModernStyles,
|
|
24
|
-
useModernStyles = _ref$useModernStyles === void 0 ? false : _ref$useModernStyles
|
|
24
|
+
useModernStyles = _ref$useModernStyles === void 0 ? false : _ref$useModernStyles,
|
|
25
|
+
id = _ref.id;
|
|
25
26
|
var _useInputFocus = useInputFocus({
|
|
26
27
|
onFocus: onFocus,
|
|
27
28
|
onBlur: onBlur
|
|
@@ -29,6 +30,8 @@ export var SearchInput = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
29
30
|
inFocus = _useInputFocus.inFocus,
|
|
30
31
|
handleFocus = _useInputFocus.handleFocus,
|
|
31
32
|
handleBlur = _useInputFocus.handleBlur;
|
|
33
|
+
var fallbackId = useId();
|
|
34
|
+
var inputId = id !== null && id !== void 0 ? id : fallbackId;
|
|
32
35
|
var palette = useComponentPalette('searchInput');
|
|
33
36
|
var _useInputStyles = useInputStyles({
|
|
34
37
|
isHaveValue: !!value,
|
|
@@ -52,9 +55,12 @@ export var SearchInput = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
52
55
|
return /*#__PURE__*/React.createElement(InputLabel, {
|
|
53
56
|
useModernStyles: useModernStyles,
|
|
54
57
|
size: fieldSize,
|
|
55
|
-
label: useModernStyles ? inputLabel : undefined
|
|
58
|
+
label: useModernStyles ? inputLabel : undefined,
|
|
59
|
+
htmlFor: inputId
|
|
56
60
|
}, modernPlaceholder, /*#__PURE__*/React.createElement(PureInput, _extends({
|
|
57
61
|
ref: ref,
|
|
62
|
+
id: inputId,
|
|
63
|
+
"aria-label": useModernStyles && inputLabel ? undefined : placeholder,
|
|
58
64
|
paddingRight: 56,
|
|
59
65
|
hasBorder: hasBorder,
|
|
60
66
|
onChange: handleInputChange,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
|
-
import React, { forwardRef } from 'react';
|
|
2
|
+
import React, { forwardRef, useId } from 'react';
|
|
3
3
|
import * as S from './styles';
|
|
4
4
|
import { InputLabel } from '../../../InputLabel';
|
|
5
5
|
import { PureInput } from '../../../PureInput';
|
|
@@ -23,7 +23,10 @@ export var Input = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
23
23
|
onClick = _ref.onClick,
|
|
24
24
|
required = _ref.required,
|
|
25
25
|
_ref$useModernStyles = _ref.useModernStyles,
|
|
26
|
-
useModernStyles = _ref$useModernStyles === void 0 ? false : _ref$useModernStyles
|
|
26
|
+
useModernStyles = _ref$useModernStyles === void 0 ? false : _ref$useModernStyles,
|
|
27
|
+
id = _ref.id;
|
|
28
|
+
var fallbackId = useId();
|
|
29
|
+
var inputId = id !== null && id !== void 0 ? id : fallbackId;
|
|
27
30
|
var _useInputStyles = useInputStyles({
|
|
28
31
|
isHaveValue: !!value,
|
|
29
32
|
useModernStyles: useModernStyles,
|
|
@@ -44,8 +47,11 @@ export var Input = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
44
47
|
label: inputLabel,
|
|
45
48
|
required: required,
|
|
46
49
|
useModernStyles: useModernStyles,
|
|
47
|
-
size: fieldSize
|
|
50
|
+
size: fieldSize,
|
|
51
|
+
htmlFor: inputId
|
|
48
52
|
}, /*#__PURE__*/React.createElement(S.ControlWrapper, null, modernPlaceholder, /*#__PURE__*/React.createElement(PureInput, _extends({
|
|
53
|
+
id: inputId,
|
|
54
|
+
"aria-label": label && !inputLabel ? label : undefined,
|
|
49
55
|
ref: ref,
|
|
50
56
|
hasError: hasError,
|
|
51
57
|
inFocus: inFocus,
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
2
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
4
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
5
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
6
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
7
|
+
import React, { useCallback, useLayoutEffect, useRef, useState } from 'react';
|
|
8
|
+
import * as S from './styles';
|
|
9
|
+
import { useComponentPalette } from '../../../../../palette';
|
|
10
|
+
import { Chip } from '../../../../common/Chip';
|
|
11
|
+
var CHIP_SIZE = 'xs';
|
|
12
|
+
export var MultipleValue = function MultipleValue(_ref) {
|
|
13
|
+
var _chipProps$color, _chipProps$bgColor, _chipProps$size;
|
|
14
|
+
var selectedOptions = _ref.selectedOptions,
|
|
15
|
+
onRemove = _ref.onRemove,
|
|
16
|
+
_ref$collapse = _ref.collapse,
|
|
17
|
+
collapse = _ref$collapse === void 0 ? false : _ref$collapse,
|
|
18
|
+
chipProps = _ref.chipProps;
|
|
19
|
+
var palette = useComponentPalette('select');
|
|
20
|
+
var chipColor = (_chipProps$color = chipProps === null || chipProps === void 0 ? void 0 : chipProps.color) !== null && _chipProps$color !== void 0 ? _chipProps$color : palette.tagColor;
|
|
21
|
+
var chipBgColor = (_chipProps$bgColor = chipProps === null || chipProps === void 0 ? void 0 : chipProps.bgColor) !== null && _chipProps$bgColor !== void 0 ? _chipProps$bgColor : palette.tagBg;
|
|
22
|
+
var chipSize = (_chipProps$size = chipProps === null || chipProps === void 0 ? void 0 : chipProps.size) !== null && _chipProps$size !== void 0 ? _chipProps$size : CHIP_SIZE;
|
|
23
|
+
var wrapperRef = useRef(null);
|
|
24
|
+
var tagRefs = useRef([]);
|
|
25
|
+
var counterRef = useRef(null);
|
|
26
|
+
var _useState = useState(selectedOptions.length),
|
|
27
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
28
|
+
visibleCount = _useState2[0],
|
|
29
|
+
setVisibleCount = _useState2[1];
|
|
30
|
+
var handleRemove = useCallback(function (event, value) {
|
|
31
|
+
event.preventDefault();
|
|
32
|
+
event.stopPropagation();
|
|
33
|
+
onRemove(value);
|
|
34
|
+
}, [onRemove]);
|
|
35
|
+
useLayoutEffect(function () {
|
|
36
|
+
if (!collapse) {
|
|
37
|
+
setVisibleCount(selectedOptions.length);
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
var wrapper = wrapperRef.current;
|
|
41
|
+
if (!wrapper) return undefined;
|
|
42
|
+
var recalculate = function recalculate() {
|
|
43
|
+
var _counterRef$current;
|
|
44
|
+
var total = selectedOptions.length;
|
|
45
|
+
var containerWidth = wrapper.clientWidth;
|
|
46
|
+
var widths = tagRefs.current.slice(0, total).map(function (el) {
|
|
47
|
+
return (el === null || el === void 0 ? void 0 : el.offsetWidth) || 0;
|
|
48
|
+
});
|
|
49
|
+
var counterWidth = ((_counterRef$current = counterRef.current) === null || _counterRef$current === void 0 ? void 0 : _counterRef$current.offsetWidth) || 0;
|
|
50
|
+
var countFitting = function countFitting(reserve) {
|
|
51
|
+
var used = 0;
|
|
52
|
+
var count = 0;
|
|
53
|
+
for (var i = 0; i < total; i += 1) {
|
|
54
|
+
var width = widths[i] + (count > 0 ? S.TAGS_GAP : 0);
|
|
55
|
+
if (used + width <= containerWidth - reserve) {
|
|
56
|
+
used += width;
|
|
57
|
+
count += 1;
|
|
58
|
+
} else {
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return count;
|
|
63
|
+
};
|
|
64
|
+
var count = countFitting(0);
|
|
65
|
+
// если влезли не все теги, оставляем место под счётчик "+N"
|
|
66
|
+
if (count < total) {
|
|
67
|
+
count = Math.max(countFitting(counterWidth + S.TAGS_GAP), 1);
|
|
68
|
+
}
|
|
69
|
+
setVisibleCount(count);
|
|
70
|
+
};
|
|
71
|
+
recalculate();
|
|
72
|
+
var observer = new ResizeObserver(recalculate);
|
|
73
|
+
observer.observe(wrapper);
|
|
74
|
+
return function () {
|
|
75
|
+
return observer.disconnect();
|
|
76
|
+
};
|
|
77
|
+
}, [collapse, selectedOptions]);
|
|
78
|
+
var safeVisibleCount = collapse ? visibleCount : selectedOptions.length;
|
|
79
|
+
var hiddenCount = selectedOptions.length - safeVisibleCount;
|
|
80
|
+
var hiddenStyle = {
|
|
81
|
+
position: 'absolute',
|
|
82
|
+
visibility: 'hidden',
|
|
83
|
+
pointerEvents: 'none'
|
|
84
|
+
};
|
|
85
|
+
return /*#__PURE__*/React.createElement(S.Wrapper, {
|
|
86
|
+
ref: wrapperRef,
|
|
87
|
+
$collapse: collapse
|
|
88
|
+
}, selectedOptions.map(function (option, index) {
|
|
89
|
+
return /*#__PURE__*/React.createElement(S.ItemWrapper, {
|
|
90
|
+
key: option.value,
|
|
91
|
+
ref: function ref(el) {
|
|
92
|
+
tagRefs.current[index] = el;
|
|
93
|
+
},
|
|
94
|
+
style: collapse && index >= safeVisibleCount ? hiddenStyle : undefined
|
|
95
|
+
}, /*#__PURE__*/React.createElement(Chip, {
|
|
96
|
+
size: chipSize,
|
|
97
|
+
color: chipColor,
|
|
98
|
+
bgColor: chipBgColor,
|
|
99
|
+
label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(S.TagLabel, {
|
|
100
|
+
variant: "smallMedium"
|
|
101
|
+
}, option.label), /*#__PURE__*/React.createElement(S.TagRemove, {
|
|
102
|
+
type: "button",
|
|
103
|
+
onMouseDown: function onMouseDown(event) {
|
|
104
|
+
return event.preventDefault();
|
|
105
|
+
},
|
|
106
|
+
onClick: function onClick(event) {
|
|
107
|
+
return handleRemove(event, option.value);
|
|
108
|
+
}
|
|
109
|
+
}, "\xD7"))
|
|
110
|
+
}));
|
|
111
|
+
}), collapse && /*#__PURE__*/React.createElement(S.ItemWrapper, {
|
|
112
|
+
ref: counterRef,
|
|
113
|
+
style: hiddenCount > 0 ? undefined : hiddenStyle
|
|
114
|
+
}, /*#__PURE__*/React.createElement(Chip, {
|
|
115
|
+
size: chipSize,
|
|
116
|
+
color: chipColor,
|
|
117
|
+
bgColor: chipBgColor,
|
|
118
|
+
label: "+".concat(hiddenCount)
|
|
119
|
+
})));
|
|
120
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import styled, { css } from 'styled-components';
|
|
2
|
+
import { Typography } from '../../../../common/Typography';
|
|
3
|
+
export var TAGS_GAP = 6;
|
|
4
|
+
export var Wrapper = styled.div.withConfig({
|
|
5
|
+
displayName: "styles__Wrapper",
|
|
6
|
+
componentId: "sc-gzjw07-0"
|
|
7
|
+
})(["display:flex;align-items:center;gap:", "px;width:100%;min-width:0;", ""], TAGS_GAP, function (_ref) {
|
|
8
|
+
var $collapse = _ref.$collapse;
|
|
9
|
+
return $collapse ? css(["flex-wrap:nowrap;overflow:hidden;"]) : css(["flex-wrap:wrap;"]);
|
|
10
|
+
});
|
|
11
|
+
export var ItemWrapper = styled.div.withConfig({
|
|
12
|
+
displayName: "styles__ItemWrapper",
|
|
13
|
+
componentId: "sc-gzjw07-1"
|
|
14
|
+
})(["display:inline-flex;flex:0 0 auto;max-width:100%;"]);
|
|
15
|
+
export var TagLabel = styled(Typography).withConfig({
|
|
16
|
+
displayName: "styles__TagLabel",
|
|
17
|
+
componentId: "sc-gzjw07-2"
|
|
18
|
+
})(["overflow:hidden;text-overflow:ellipsis;white-space:nowrap;"]);
|
|
19
|
+
export var TagRemove = styled.button.withConfig({
|
|
20
|
+
displayName: "styles__TagRemove",
|
|
21
|
+
componentId: "sc-gzjw07-3"
|
|
22
|
+
})(["display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:14px;height:14px;padding:0;border:none;background:none;color:inherit;font-size:16px;line-height:1;cursor:pointer;"]);
|