@invoicebox/ui 0.1.0-alpha.181 → 0.1.0-alpha.183

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.
@@ -1,10 +1,13 @@
1
- import { FC } from 'react';
1
+ import React from 'react';
2
2
  import { TProps as TInputLabelProps } from '../../../InputLabel';
3
3
  import { TProps as TPureInputProps } from '../../../PureInput';
4
4
  import { TProps as TArrowProps } from '../../../../common/Arrow';
5
5
  import { TSizes } from '../../../constants';
6
- export type TProps = Pick<TInputLabelProps, 'inFocus' | 'label'> & Pick<TPureInputProps, 'hasError' | 'placeholder' | 'name' | 'onFocus' | 'onBlur' | 'value'> & Pick<TArrowProps, 'isOpen'> & {
6
+ export type TProps = Pick<TInputLabelProps, 'inFocus' | 'label'> & Pick<TPureInputProps, 'hasError' | 'placeholder' | 'name' | 'onFocus' | 'onBlur' | 'value' | 'onClick'> & Pick<TArrowProps, 'isOpen'> & {
7
7
  onReset?: () => void;
8
8
  size?: TSizes;
9
9
  };
10
- export declare const Input: FC<TProps>;
10
+ export declare const Input: React.ForwardRefExoticComponent<Pick<TInputLabelProps, "label" | "inFocus"> & Pick<TPureInputProps, "name" | "value" | "placeholder" | "onFocus" | "onBlur" | "onClick" | "hasError"> & Pick<TArrowProps, "isOpen"> & {
11
+ onReset?: (() => void) | undefined;
12
+ size?: TSizes | undefined;
13
+ } & React.RefAttributes<HTMLInputElement>>;
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.Input = void 0;
8
- var _react = _interopRequireDefault(require("react"));
8
+ var _react = _interopRequireWildcard(require("react"));
9
9
  var S = _interopRequireWildcard(require("./styles"));
10
10
  var _InputLabel = require("../../../InputLabel");
11
11
  var _PureInput = require("../../../PureInput");
@@ -14,9 +14,8 @@ var _ResetButton = require("../../../ResetButton");
14
14
  var _constants = require("../../../constants");
15
15
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
16
16
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
17
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
18
17
  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); }
19
- var Input = exports.Input = function Input(_ref) {
18
+ var Input = exports.Input = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
20
19
  var hasError = _ref.hasError,
21
20
  inFocus = _ref.inFocus,
22
21
  placeholder = _ref.placeholder,
@@ -28,12 +27,14 @@ var Input = exports.Input = function Input(_ref) {
28
27
  isOpen = _ref.isOpen,
29
28
  onReset = _ref.onReset,
30
29
  _ref$size = _ref.size,
31
- size = _ref$size === void 0 ? 'M' : _ref$size;
30
+ size = _ref$size === void 0 ? 'M' : _ref$size,
31
+ onClick = _ref.onClick;
32
32
  var isShowResetIcon = !!value && !!onReset;
33
33
  return /*#__PURE__*/_react["default"].createElement(_InputLabel.InputLabel, {
34
34
  inFocus: inFocus,
35
35
  label: label
36
36
  }, /*#__PURE__*/_react["default"].createElement(S.ControlWrapper, null, /*#__PURE__*/_react["default"].createElement(_PureInput.PureInput, _extends({
37
+ ref: ref,
37
38
  hasError: hasError,
38
39
  inFocus: inFocus,
39
40
  name: name,
@@ -42,7 +43,8 @@ var Input = exports.Input = function Input(_ref) {
42
43
  onBlur: onBlur,
43
44
  value: value,
44
45
  readOnly: true,
45
- paddingRight: 52
46
+ paddingRight: 52,
47
+ onClick: onClick
46
48
  }, _constants.SIZE_PARAMS_MAP[size])), /*#__PURE__*/_react["default"].createElement(S.IconWrapper, {
47
49
  $pointerEvents: isShowResetIcon ? 'default' : 'none'
48
50
  }, isShowResetIcon ? /*#__PURE__*/_react["default"].createElement(_ResetButton.ResetButton, {
@@ -50,4 +52,5 @@ var Input = exports.Input = function Input(_ref) {
50
52
  }) : /*#__PURE__*/_react["default"].createElement(_Arrow.Arrow, {
51
53
  isOpen: isOpen
52
54
  }))));
53
- };
55
+ });
56
+ Input.displayName = 'Input';
@@ -10,7 +10,7 @@ export type TGroup = {
10
10
  label: string;
11
11
  id: string;
12
12
  };
13
- export type TProps<TValue> = Pick<TInputProps, 'label' | 'hasError' | 'placeholder' | 'onFocus' | 'onBlur' | 'name' | 'size'> & {
13
+ export type TProps<TValue> = Pick<TInputProps, 'label' | 'hasError' | 'placeholder' | 'name' | 'size'> & {
14
14
  value: TValue | null;
15
15
  onChange: (value: TValue | null) => void;
16
16
  options: TOption<TValue>[];
@@ -18,5 +18,7 @@ export type TProps<TValue> = Pick<TInputProps, 'label' | 'hasError' | 'placehold
18
18
  isResetButtonEnabled?: boolean;
19
19
  renderOption?: (entity?: any) => ReactNode;
20
20
  dropdownHeader?: ReactNode;
21
+ isDrawerOptions?: boolean;
22
+ scrollbarMaxHeight?: number;
21
23
  };
22
- export declare const Select: <TValue extends string | number>({ label, hasError, placeholder, onFocus, onBlur, name, value, onChange, options, groups, isResetButtonEnabled, size, renderOption, dropdownHeader, }: TProps<TValue>) => import("react/jsx-runtime").JSX.Element;
24
+ export declare const Select: <TValue extends string | number>({ label, hasError, placeholder, name, value, onChange, options, groups, isResetButtonEnabled, size, renderOption, dropdownHeader, isDrawerOptions, scrollbarMaxHeight, }: TProps<TValue>) => import("react/jsx-runtime").JSX.Element;
@@ -14,6 +14,7 @@ var _Scrollbar = require("../../common/Scrollbar");
14
14
  var _useOutsideClick = require("../../../hooks/useOutsideClick");
15
15
  var _palette = require("../../../palette");
16
16
  var _useOptionGroups = require("./hooks/useOptionGroups");
17
+ var _Drawer = require("../../common/Drawer");
17
18
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
18
19
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
19
20
  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
@@ -22,14 +23,12 @@ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r)
22
23
  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; }
23
24
  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; } }
24
25
  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
25
- var LIST_HEIGHT = 294;
26
+ var MAX_LIST_HEIGHT = 294;
26
27
  var OPTION_IDENTIFIER = 'option-identifier';
27
28
  var Select = exports.Select = function Select(_ref) {
28
29
  var label = _ref.label,
29
30
  hasError = _ref.hasError,
30
31
  placeholder = _ref.placeholder,
31
- onFocus = _ref.onFocus,
32
- onBlur = _ref.onBlur,
33
32
  name = _ref.name,
34
33
  value = _ref.value,
35
34
  onChange = _ref.onChange,
@@ -40,12 +39,13 @@ var Select = exports.Select = function Select(_ref) {
40
39
  isResetButtonEnabled = _ref$isResetButtonEna === void 0 ? false : _ref$isResetButtonEna,
41
40
  size = _ref.size,
42
41
  renderOption = _ref.renderOption,
43
- dropdownHeader = _ref.dropdownHeader;
42
+ dropdownHeader = _ref.dropdownHeader,
43
+ _ref$isDrawerOptions = _ref.isDrawerOptions,
44
+ isDrawerOptions = _ref$isDrawerOptions === void 0 ? false : _ref$isDrawerOptions,
45
+ _ref$scrollbarMaxHeig = _ref.scrollbarMaxHeight,
46
+ scrollbarMaxHeight = _ref$scrollbarMaxHeig === void 0 ? MAX_LIST_HEIGHT : _ref$scrollbarMaxHeig;
44
47
  var palette = (0, _palette.useComponentPalette)('select');
45
- var _useInputFocus = (0, _useInputFocus2.useInputFocus)({
46
- onFocus: onFocus,
47
- onBlur: onBlur
48
- }),
48
+ var _useInputFocus = (0, _useInputFocus2.useInputFocus)(),
49
49
  inFocus = _useInputFocus.inFocus,
50
50
  focusHandler = _useInputFocus.handleFocus,
51
51
  blurHandler = _useInputFocus.handleBlur;
@@ -66,6 +66,7 @@ var Select = exports.Select = function Select(_ref) {
66
66
  так появилась логика delayBlur
67
67
  */
68
68
  var delayBlur = (0, _react.useRef)(null);
69
+ var inputRef = (0, _react.useRef)(null);
69
70
  var selectedOption = (0, _react.useMemo)(function () {
70
71
  return options.find(function (option) {
71
72
  return option.value === value;
@@ -106,26 +107,13 @@ var Select = exports.Select = function Select(_ref) {
106
107
  var handleReset = (0, _react.useCallback)(function () {
107
108
  return onChange(null);
108
109
  }, [onChange]);
109
- return /*#__PURE__*/_react["default"].createElement(S.Wrapper, {
110
- ref: wrapperRef
111
- }, /*#__PURE__*/_react["default"].createElement(S.InputWrapper, null, /*#__PURE__*/_react["default"].createElement(_Input.Input, {
112
- label: label,
113
- hasError: hasError,
114
- inFocus: inFocus,
115
- placeholder: placeholder,
116
- onFocus: handleFocus,
117
- onBlur: handleBlur,
118
- value: (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.label) || '',
119
- name: name,
120
- isOpen: isOpen,
121
- onReset: isResetButtonEnabled ? handleReset : undefined,
122
- size: size
123
- })), /*#__PURE__*/_react["default"].createElement(_Dropdown.Dropdown, {
124
- isOpen: isOpen,
125
- isAutoPosition: true,
126
- width: "100%"
127
- }, /*#__PURE__*/_react["default"].createElement(_Scrollbar.Scrollbar, {
128
- maxHeight: LIST_HEIGHT
110
+ var handleInputClick = function handleInputClick() {
111
+ var _inputRef$current;
112
+ (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 || _inputRef$current.blur();
113
+ handleShow();
114
+ };
115
+ var dropdownContent = /*#__PURE__*/_react["default"].createElement(_Scrollbar.Scrollbar, {
116
+ maxHeight: scrollbarMaxHeight
129
117
  }, dropdownHeader, optionGroups.map(function (_ref2) {
130
118
  var group = _ref2.group,
131
119
  groupOptions = _ref2.options;
@@ -144,5 +132,30 @@ var Select = exports.Select = function Select(_ref) {
144
132
  $isGrouped: !!group
145
133
  }, renderOption ? renderOption(option.entity) : /*#__PURE__*/_react["default"].createElement(S.DefaultOptionWrapper, null, " ", option.label));
146
134
  }));
147
- }))));
135
+ }));
136
+ return /*#__PURE__*/_react["default"].createElement(S.Wrapper, {
137
+ ref: isDrawerOptions ? undefined : wrapperRef
138
+ }, /*#__PURE__*/_react["default"].createElement(S.InputWrapper, null, /*#__PURE__*/_react["default"].createElement(_Input.Input, {
139
+ ref: inputRef,
140
+ label: label,
141
+ hasError: hasError,
142
+ inFocus: inFocus,
143
+ placeholder: placeholder,
144
+ onFocus: isDrawerOptions ? undefined : handleFocus,
145
+ onBlur: isDrawerOptions ? undefined : handleBlur,
146
+ value: (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.label) || '',
147
+ name: name,
148
+ isOpen: isOpen,
149
+ onReset: isResetButtonEnabled ? handleReset : undefined,
150
+ size: size,
151
+ onClick: isDrawerOptions ? handleInputClick : undefined
152
+ })), isDrawerOptions ? /*#__PURE__*/_react["default"].createElement(_Drawer.Drawer, {
153
+ onClose: handleHide,
154
+ isOpen: isOpen,
155
+ isPadding: false
156
+ }, /*#__PURE__*/_react["default"].createElement(S.DrawerInner, null, dropdownContent)) : /*#__PURE__*/_react["default"].createElement(_Dropdown.Dropdown, {
157
+ isOpen: isOpen,
158
+ isAutoPosition: true,
159
+ width: "100%"
160
+ }, dropdownContent));
148
161
  };
@@ -8,3 +8,4 @@ export declare const Option: import("styled-components/dist/types").IStyledCompo
8
8
  }>> & string & Omit<import("react").FC<import("../../common/Typography").TTypographyProps>, keyof import("react").Component<any, {}, any>>;
9
9
  export declare const Group: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("../../common/Typography").TTypographyProps & import("styled-components/dist/types").BaseObject, import("styled-components/dist/types").BaseObject>> & string & Omit<import("react").FC<import("../../common/Typography").TTypographyProps>, keyof import("react").Component<any, {}, any>>;
10
10
  export declare const DefaultOptionWrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
11
+ export declare const DrawerInner: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
@@ -4,7 +4,7 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.Wrapper = exports.Option = exports.InputWrapper = exports.Group = exports.DefaultOptionWrapper = void 0;
7
+ exports.Wrapper = exports.Option = exports.InputWrapper = exports.Group = exports.DrawerInner = exports.DefaultOptionWrapper = void 0;
8
8
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
9
9
  var _Typography = require("../../common/Typography");
10
10
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
@@ -34,4 +34,8 @@ var Group = exports.Group = (0, _styledComponents["default"])(_Typography.Typogr
34
34
  var DefaultOptionWrapper = exports.DefaultOptionWrapper = _styledComponents["default"].div.withConfig({
35
35
  displayName: "styles__DefaultOptionWrapper",
36
36
  componentId: "sc-1x9n0z5-4"
37
- })(["padding:12px 20px;"]);
37
+ })(["padding:12px 20px;"]);
38
+ var DrawerInner = exports.DrawerInner = _styledComponents["default"].div.withConfig({
39
+ displayName: "styles__DrawerInner",
40
+ componentId: "sc-1x9n0z5-5"
41
+ })(["padding:36px 0;"]);
@@ -4,5 +4,7 @@ export declare class Validate {
4
4
  static website(value: string, createError: TCreateErrorFunc): any;
5
5
  static vatNumber(value: string, countryId: string, createError: TCreateErrorFunc): any;
6
6
  static taxRegistrationReasonCode(value: string, createError: TCreateErrorFunc): any;
7
+ static settlementAccount(value: string, bic: string, createError: TCreateErrorFunc): any;
8
+ static correspondentAccount(value: string, bic: string, createError: TCreateErrorFunc): any;
7
9
  static registrationNumber(value: string, vatNumber: string, countryId: string, createError: TCreateErrorFunc): any;
8
10
  }
@@ -95,6 +95,60 @@ var Validate = exports.Validate = /*#__PURE__*/function () {
95
95
  }
96
96
  return true;
97
97
  }
98
+ }, {
99
+ key: "settlementAccount",
100
+ value: function settlementAccount(value, bic, createError) {
101
+ if (!bic) {
102
+ // eslint-disable-next-line no-console
103
+ console.error('Form dont have bic');
104
+ }
105
+ if (value === '') {
106
+ return true;
107
+ }
108
+ if (/[^0-9]/.test(value)) {
109
+ return createError('Расчётный счёт может состоять только из цифр');
110
+ }
111
+ if (value.length !== 20) {
112
+ return createError('Расчётный счёт может состоять только из 20 цифр');
113
+ }
114
+ var checksum = 0;
115
+ var bikRs = bic.toString().slice(-3) + value;
116
+ var coefficients = [7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1];
117
+ coefficients.forEach(function (coefficient, i) {
118
+ checksum += coefficient * (Number(bikRs[i]) % 10);
119
+ });
120
+ if (checksum % 10 !== 0) {
121
+ return createError('Неправильное контрольное число');
122
+ }
123
+ return true;
124
+ }
125
+ }, {
126
+ key: "correspondentAccount",
127
+ value: function correspondentAccount(value, bic, createError) {
128
+ if (!bic) {
129
+ // eslint-disable-next-line no-console
130
+ console.error('Form dont have bic');
131
+ }
132
+ if (value === '') {
133
+ return true;
134
+ }
135
+ if (/[^0-9]/.test(value)) {
136
+ return createError('Кор. счёт может состоять только из цифр');
137
+ }
138
+ if (value.length !== 20) {
139
+ return createError('Кор. счёт может состоять только из 20 цифр');
140
+ }
141
+ var checksum = 0;
142
+ var bikKs = "0".concat(String(bic).slice(4, 6)).concat(value);
143
+ var coefficients = [7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1];
144
+ coefficients.forEach(function (coefficient, i) {
145
+ checksum += coefficient * (Number(bikKs[i]) % 10);
146
+ });
147
+ if (checksum % 10 !== 0) {
148
+ return createError('Неправильное контрольное число');
149
+ }
150
+ return true;
151
+ }
98
152
  }, {
99
153
  key: "registrationNumber",
100
154
  value: function registrationNumber(value, vatNumber, countryId, createError) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@invoicebox/ui",
3
- "version": "0.1.0-alpha.181",
3
+ "version": "0.1.0-alpha.183",
4
4
  "description": "Invoicebox UI",
5
5
  "license": "Apache License 2.0",
6
6
  "scripts": {