@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.
Files changed (87) hide show
  1. package/dist/components/common/Tooltip/index.d.ts +9 -0
  2. package/dist/components/common/Tooltip/index.js +60 -0
  3. package/dist/components/common/Tooltip/index.stories.d.ts +6 -0
  4. package/dist/components/common/Tooltip/index.stories.js +43 -0
  5. package/dist/components/common/Tooltip/palette.d.ts +7 -0
  6. package/dist/components/common/Tooltip/palette.js +13 -0
  7. package/dist/components/common/Tooltip/styles.d.ts +9 -0
  8. package/dist/components/common/Tooltip/styles.js +34 -0
  9. package/dist/components/common/Typography/index.d.ts +5 -2
  10. package/dist/components/form/Autocomplete/components/Autocomplete/index.js +5 -1
  11. package/dist/components/form/Checkbox/CheckIcon.d.ts +2 -0
  12. package/dist/components/form/Checkbox/CheckIcon.js +23 -0
  13. package/dist/components/form/Checkbox/index.d.ts +11 -0
  14. package/dist/components/form/Checkbox/index.js +47 -0
  15. package/dist/components/form/Checkbox/index.stories.d.ts +8 -0
  16. package/dist/components/form/Checkbox/index.stories.js +69 -0
  17. package/dist/components/form/Checkbox/palette.d.ts +12 -0
  18. package/dist/components/form/Checkbox/palette.js +20 -0
  19. package/dist/components/form/Checkbox/styles.d.ts +13 -0
  20. package/dist/components/form/Checkbox/styles.js +71 -0
  21. package/dist/components/form/CurrencyInput/CoreCurrencyInput/index.d.ts +1 -1
  22. package/dist/components/form/CurrencyInput/CoreCurrencyInput/index.js +12 -4
  23. package/dist/components/form/DateInput/index.d.ts +1 -1
  24. package/dist/components/form/DateInput/index.js +8 -2
  25. package/dist/components/form/DateTimeInput/index.d.ts +1 -1
  26. package/dist/components/form/DateTimeInput/index.js +8 -2
  27. package/dist/components/form/InputLabel/index.d.ts +1 -0
  28. package/dist/components/form/InputLabel/index.js +4 -1
  29. package/dist/components/form/PhoneInput/index.js +6 -2
  30. package/dist/components/form/PositiveIntegerInput/index.d.ts +1 -1
  31. package/dist/components/form/PositiveIntegerInput/index.js +8 -2
  32. package/dist/components/form/PureInput/index.js +5 -2
  33. package/dist/components/form/SearchInput/index.d.ts +2 -2
  34. package/dist/components/form/SearchInput/index.js +8 -2
  35. package/dist/components/form/Select/components/Input/index.d.ts +2 -2
  36. package/dist/components/form/Select/components/Input/index.js +8 -2
  37. package/dist/components/form/Select/components/MultipleValue/index.d.ts +9 -0
  38. package/dist/components/form/Select/components/MultipleValue/index.js +129 -0
  39. package/dist/components/form/Select/components/MultipleValue/styles.d.ts +8 -0
  40. package/dist/components/form/Select/components/MultipleValue/styles.js +31 -0
  41. package/dist/components/form/Select/index.d.ts +17 -4
  42. package/dist/components/form/Select/index.js +98 -44
  43. package/dist/components/form/Select/index.stories.d.ts +3 -1
  44. package/dist/components/form/Select/index.stories.js +32 -1
  45. package/dist/components/form/Select/palette.d.ts +2 -0
  46. package/dist/components/form/Select/palette.js +3 -1
  47. package/dist/components/form/Select/styles.d.ts +4 -0
  48. package/dist/components/form/Select/styles.js +26 -10
  49. package/dist/components/form/TagsInput/index.js +4 -1
  50. package/dist/components/form/TextInput/index.js +6 -2
  51. package/dist/esm/components/common/Tooltip/index.js +51 -0
  52. package/dist/esm/components/common/Tooltip/index.stories.js +36 -0
  53. package/dist/esm/components/common/Tooltip/palette.js +7 -0
  54. package/dist/esm/components/common/Tooltip/styles.js +27 -0
  55. package/dist/esm/components/form/Autocomplete/components/Autocomplete/index.js +5 -1
  56. package/dist/esm/components/form/Checkbox/CheckIcon.js +16 -0
  57. package/dist/esm/components/form/Checkbox/index.js +38 -0
  58. package/dist/esm/components/form/Checkbox/index.stories.js +60 -0
  59. package/dist/esm/components/form/Checkbox/palette.js +13 -0
  60. package/dist/esm/components/form/Checkbox/styles.js +64 -0
  61. package/dist/esm/components/form/CurrencyInput/CoreCurrencyInput/index.js +9 -3
  62. package/dist/esm/components/form/DateInput/index.js +9 -3
  63. package/dist/esm/components/form/DateTimeInput/index.js +9 -3
  64. package/dist/esm/components/form/InputLabel/index.js +4 -1
  65. package/dist/esm/components/form/PhoneInput/index.js +7 -3
  66. package/dist/esm/components/form/PositiveIntegerInput/index.js +9 -3
  67. package/dist/esm/components/form/PureInput/index.js +6 -3
  68. package/dist/esm/components/form/SearchInput/index.js +9 -3
  69. package/dist/esm/components/form/Select/components/Input/index.js +9 -3
  70. package/dist/esm/components/form/Select/components/MultipleValue/index.js +120 -0
  71. package/dist/esm/components/form/Select/components/MultipleValue/styles.js +22 -0
  72. package/dist/esm/components/form/Select/index.js +98 -44
  73. package/dist/esm/components/form/Select/index.stories.js +31 -0
  74. package/dist/esm/components/form/Select/palette.js +3 -1
  75. package/dist/esm/components/form/Select/styles.js +25 -9
  76. package/dist/esm/components/form/TagsInput/index.js +5 -2
  77. package/dist/esm/components/form/TextInput/index.js +7 -3
  78. package/dist/esm/index.js +2 -0
  79. package/dist/esm/palette/context.js +5 -1
  80. package/dist/esm/palette/provider.js +5 -1
  81. package/dist/index.d.ts +5 -1
  82. package/dist/index.js +14 -0
  83. package/dist/palette/context.d.ts +4 -0
  84. package/dist/palette/context.js +5 -1
  85. package/dist/palette/provider.js +5 -1
  86. package/dist/palette/usePalette.d.ts +2 -0
  87. 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: 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;"]);