@invoicebox/ui 0.1.0-alpha.142 → 0.1.0-alpha.143

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.
@@ -0,0 +1,10 @@
1
+ import { FC } from 'react';
2
+ export type TProps = {
3
+ value: string;
4
+ onChange: (value: string) => void;
5
+ codeLength: number;
6
+ hasError?: boolean;
7
+ isLarge?: boolean;
8
+ disabled?: boolean;
9
+ };
10
+ export declare const CodeInput: FC<TProps>;
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.CodeInput = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var S = _interopRequireWildcard(require("./styles"));
10
+ var _palette = require("../../../palette");
11
+ 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); }
12
+ 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; }
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
14
+ function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
15
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
16
+ 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; } }
17
+ function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
18
+ function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
19
+ 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; }
20
+ var ONLY_NUMBERS_REGEX = /^[0-9]+$/;
21
+ var CodeInput = exports.CodeInput = function CodeInput(_ref) {
22
+ var hasError = _ref.hasError,
23
+ onChange = _ref.onChange,
24
+ codeLength = _ref.codeLength,
25
+ value = _ref.value,
26
+ _ref$isLarge = _ref.isLarge,
27
+ isLarge = _ref$isLarge === void 0 ? true : _ref$isLarge,
28
+ disabled = _ref.disabled;
29
+ var palette = (0, _palette.useComponentPalette)('codeInput');
30
+ var getCodeArrFromCodeString = function getCodeArrFromCodeString() {
31
+ var newValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
32
+ return [].concat(_toConsumableArray(newValue.split('')), _toConsumableArray(Array(codeLength).fill(''))).slice(0, codeLength);
33
+ };
34
+ var codeArr = getCodeArrFromCodeString(value);
35
+ var setValue = function setValue(newValue, index) {
36
+ var newArr = codeArr.map(function (codeItem, codeIndex) {
37
+ return index === codeIndex ? newValue : codeItem;
38
+ });
39
+ onChange(newArr.join(''));
40
+ };
41
+ var changeHandler = function changeHandler(event) {
42
+ var index = Number(event.target.dataset.index);
43
+ var inputValue = event.target.value;
44
+ if (ONLY_NUMBERS_REGEX.test(inputValue)) {
45
+ setValue(inputValue.length > 1 ? inputValue.replace(codeArr[index], '') : inputValue, index);
46
+ if (event.target.nextSibling) {
47
+ event.target.nextSibling.focus();
48
+ }
49
+ }
50
+ };
51
+ var onKeyDown = function onKeyDown(event) {
52
+ if (event.key === 'Backspace') {
53
+ event.preventDefault();
54
+ var target = event.target;
55
+ var index = Number(target.dataset.index);
56
+ if (target.value) {
57
+ setValue('', index);
58
+ } else if (target.previousSibling) {
59
+ setValue('', index - 1);
60
+ target.previousSibling.focus();
61
+ }
62
+ }
63
+ };
64
+ var handleFocus = function handleFocus(event) {
65
+ var currentInput = event.target;
66
+ var prevInput = currentInput.previousSibling;
67
+ if (prevInput && prevInput.value === '') {
68
+ prevInput.focus();
69
+ }
70
+ };
71
+ var handlePaste = function handlePaste(event) {
72
+ event.preventDefault();
73
+ var pasteText = event.clipboardData.getData('Text').trim();
74
+ if (ONLY_NUMBERS_REGEX.test(pasteText)) {
75
+ onChange(pasteText);
76
+ }
77
+ };
78
+ return /*#__PURE__*/_react["default"].createElement(S.Wrapper, {
79
+ $isLarge: isLarge
80
+ }, codeArr.map(function (codeItem, index) {
81
+ return /*#__PURE__*/_react["default"].createElement(S.CodeInputItem, {
82
+ $defaultBorder: palette.defaultBorder,
83
+ $errorBorder: palette.errorBorder
84
+ // eslint-disable-next-line react/no-array-index-key
85
+ ,
86
+ key: index,
87
+ "data-index": String(index),
88
+ onChange: changeHandler,
89
+ value: codeItem,
90
+ inputMode: "numeric",
91
+ onKeyDown: onKeyDown,
92
+ onPaste: handlePaste,
93
+ onFocus: handleFocus,
94
+ placeholder: "-",
95
+ $hasError: hasError,
96
+ disabled: !!disabled
97
+ });
98
+ }));
99
+ };
@@ -0,0 +1,6 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { CodeInput, TProps } from '.';
3
+ declare const meta: Meta<typeof CodeInput>;
4
+ export default meta;
5
+ export declare const Default: StoryObj<TProps>;
6
+ export declare const Live: StoryObj<TProps>;
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = exports.Live = exports.Default = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _ = require(".");
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); }
11
+ 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; }
12
+ 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); }
13
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
14
+ 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."); }
15
+ 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; } }
16
+ 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; }
17
+ 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; } }
18
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
19
+ var meta = {
20
+ title: 'common/CodeInput',
21
+ component: _.CodeInput,
22
+ tags: ['autodocs'],
23
+ argTypes: {
24
+ onChange: {
25
+ action: 'onChange'
26
+ }
27
+ }
28
+ };
29
+ var _default = exports["default"] = meta;
30
+ var Default = exports.Default = {
31
+ args: {
32
+ hasError: false,
33
+ codeLength: 4,
34
+ value: '12',
35
+ disabled: false
36
+ }
37
+ };
38
+ var Live = exports.Live = {
39
+ args: {
40
+ hasError: false,
41
+ codeLength: 4
42
+ },
43
+ render: function Render(args) {
44
+ var _useState = (0, _react.useState)(''),
45
+ _useState2 = _slicedToArray(_useState, 2),
46
+ value = _useState2[0],
47
+ setValue = _useState2[1];
48
+ return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_.CodeInput, _extends({}, args, {
49
+ value: value,
50
+ onChange: setValue
51
+ })));
52
+ }
53
+ };
@@ -0,0 +1,6 @@
1
+ import { TAbstractPalette } from '../../../palette';
2
+ export type TCodeInputPalette = {
3
+ errorBorder: string;
4
+ defaultBorder: string;
5
+ };
6
+ export declare const generateCodeInputPalette: (abstractPalette: TAbstractPalette) => TCodeInputPalette;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.generateCodeInputPalette = void 0;
7
+ var _hexToRgba = _interopRequireDefault(require("hex-to-rgba"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
9
+ var generateCodeInputPalette = exports.generateCodeInputPalette = function generateCodeInputPalette(abstractPalette) {
10
+ return {
11
+ errorBorder: abstractPalette.error,
12
+ defaultBorder: (0, _hexToRgba["default"])(abstractPalette.primary, 0.3)
13
+ };
14
+ };
@@ -0,0 +1,10 @@
1
+ /// <reference types="react" />
2
+ export declare const CodeInputItem: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, {
3
+ $errorBorder: string;
4
+ $defaultBorder: string;
5
+ $hasError?: boolean | undefined;
6
+ disabled: boolean;
7
+ }>> & string;
8
+ export declare const Wrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
9
+ $isLarge: boolean;
10
+ }>> & string;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Wrapper = exports.CodeInputItem = void 0;
7
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
8
+ var _breakpoints = require("../../../breakpoints");
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
10
+ var CodeInputItem = exports.CodeInputItem = _styledComponents["default"].input.withConfig({
11
+ displayName: "styles__CodeInputItem",
12
+ componentId: "sc-ipnfbq-0"
13
+ })(["border:1px solid ", ";border-radius:8px;text-align:center;outline:none;&:disabled{opacity:0.7;}"], function (_ref) {
14
+ var $defaultBorder = _ref.$defaultBorder,
15
+ $hasError = _ref.$hasError,
16
+ $errorBorder = _ref.$errorBorder;
17
+ return $hasError ? $errorBorder : $defaultBorder;
18
+ });
19
+ var Wrapper = exports.Wrapper = _styledComponents["default"].div.withConfig({
20
+ displayName: "styles__Wrapper",
21
+ componentId: "sc-ipnfbq-1"
22
+ })(["display:flex;gap:", "px;", "{width:", "px;height:", "px;}@media ", "{gap:8px;}"], function (_ref2) {
23
+ var $isLarge = _ref2.$isLarge;
24
+ return $isLarge ? 16 : 12;
25
+ }, CodeInputItem, function (_ref3) {
26
+ var $isLarge = _ref3.$isLarge;
27
+ return $isLarge ? 45 : 39;
28
+ }, function (_ref4) {
29
+ var $isLarge = _ref4.$isLarge;
30
+ return $isLarge ? 54 : 48;
31
+ }, _breakpoints.breakpoints.sm);
package/dist/index.d.ts CHANGED
@@ -29,6 +29,8 @@ export { Divider } from './components/common/Divider';
29
29
  export type { TProps as TDividerProps } from './components/common/Divider';
30
30
  export { SearchInput } from './components/form/SearchInput';
31
31
  export type { TProps as TSearchInputProps } from './components/form/SearchInput';
32
+ export { CodeInput } from './components/form/CodeInput';
33
+ export type { TProps as TCodeInputProps } from './components/form/CodeInput';
32
34
  export { Flag } from './components/common/Flag';
33
35
  export type { TProps as TFlagProps, TFlagKey } from './components/common/Flag';
34
36
  export { CountrySelect } from './components/form/CountrySelect';
package/dist/index.js CHANGED
@@ -39,6 +39,12 @@ Object.defineProperty(exports, "Calendar", {
39
39
  return _Calendar.Calendar;
40
40
  }
41
41
  });
42
+ Object.defineProperty(exports, "CodeInput", {
43
+ enumerable: true,
44
+ get: function get() {
45
+ return _CodeInput.CodeInput;
46
+ }
47
+ });
42
48
  Object.defineProperty(exports, "CountrySelect", {
43
49
  enumerable: true,
44
50
  get: function get() {
@@ -299,6 +305,7 @@ var _DateInput = require("./components/form/DateInput");
299
305
  var _WarningIcon = require("./components/common/WarningIcon");
300
306
  var _Divider = require("./components/common/Divider");
301
307
  var _SearchInput = require("./components/form/SearchInput");
308
+ var _CodeInput = require("./components/form/CodeInput");
302
309
  var _Flag = require("./components/common/Flag");
303
310
  var _CountrySelect = require("./components/form/CountrySelect");
304
311
  var _PhoneInput = require("./components/form/PhoneInput");
@@ -21,6 +21,7 @@ import { TAutocompleteDefaultOptionPalette } from '../components/form/Autocomple
21
21
  import { TOrganizationAutocompleteItemPalette } from '../components/form/Autocomplete/components/OrganizationAutocompleteItem/palette';
22
22
  import { TDrawerPalette } from '../components/common/Drawer/palette';
23
23
  import { TEntityAutocompleteOptionsDrawerPalette } from '../components/common/EntityAutocompleteOptionsDrawer/palette';
24
+ import { TCodeInputPalette } from '../components/form/CodeInput/palette';
24
25
  type TContext = {
25
26
  skeleton: TSkeletonPalette;
26
27
  invoiceboxSpinner: TInvoiceboxSpinnerPalette;
@@ -44,6 +45,7 @@ type TContext = {
44
45
  organizationAutocompleteItem: TOrganizationAutocompleteItemPalette;
45
46
  drawer: TDrawerPalette;
46
47
  entityAutocompleteOptionsDrawer: TEntityAutocompleteOptionsDrawerPalette;
48
+ codeInput: TCodeInputPalette;
47
49
  };
48
50
  export declare const PaletteContext: import("react").Context<TContext>;
49
51
  export {};
@@ -28,6 +28,7 @@ var _palette19 = require("../components/form/Autocomplete/components/Autocomplet
28
28
  var _palette20 = require("../components/form/Autocomplete/components/OrganizationAutocompleteItem/palette");
29
29
  var _palette21 = require("../components/common/Drawer/palette");
30
30
  var _palette22 = require("../components/common/EntityAutocompleteOptionsDrawer/palette");
31
+ var _palette23 = require("../components/form/CodeInput/palette");
31
32
  var PaletteContext = exports.PaletteContext = /*#__PURE__*/(0, _react.createContext)({
32
33
  skeleton: (0, _palette.generateSkeletonPalette)(_constants.defaultAbstractPalette),
33
34
  invoiceboxSpinner: (0, _palette2.generateInvoiceboxSpinnerPalette)(_constants.defaultAbstractPalette),
@@ -50,5 +51,6 @@ var PaletteContext = exports.PaletteContext = /*#__PURE__*/(0, _react.createCont
50
51
  autocompleteDefaultOption: (0, _palette19.generateAutocompleteDefaultOptionPalette)(_constants.defaultAbstractPalette),
51
52
  organizationAutocompleteItem: (0, _palette20.generateOrganizationAutocompleteItemPalette)(_constants.defaultAbstractPalette),
52
53
  drawer: (0, _palette21.generateDrawerPalette)(_constants.defaultAbstractPalette),
53
- entityAutocompleteOptionsDrawer: (0, _palette22.generateEntityAutocompleteOptionsDrawerPalette)(_constants.defaultAbstractPalette)
54
+ entityAutocompleteOptionsDrawer: (0, _palette22.generateEntityAutocompleteOptionsDrawerPalette)(_constants.defaultAbstractPalette),
55
+ codeInput: (0, _palette23.generateCodeInputPalette)(_constants.defaultAbstractPalette)
54
56
  });
@@ -29,6 +29,7 @@ var _palette19 = require("../components/form/Autocomplete/components/Autocomplet
29
29
  var _palette20 = require("../components/form/Autocomplete/components/OrganizationAutocompleteItem/palette");
30
30
  var _palette21 = require("../components/common/Drawer/palette");
31
31
  var _palette22 = require("../components/common/EntityAutocompleteOptionsDrawer/palette");
32
+ var _palette23 = require("../components/form/CodeInput/palette");
32
33
  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); }
33
34
  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; }
34
35
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
@@ -70,7 +71,8 @@ var PaletteProvider = exports.PaletteProvider = function PaletteProvider(_ref) {
70
71
  autocompleteDefaultOption: (0, _palette19.generateAutocompleteDefaultOptionPalette)(mergedAbstractPalette),
71
72
  organizationAutocompleteItem: (0, _palette20.generateOrganizationAutocompleteItemPalette)(mergedAbstractPalette),
72
73
  drawer: (0, _palette21.generateDrawerPalette)(mergedAbstractPalette),
73
- entityAutocompleteOptionsDrawer: (0, _palette22.generateEntityAutocompleteOptionsDrawerPalette)(mergedAbstractPalette)
74
+ entityAutocompleteOptionsDrawer: (0, _palette22.generateEntityAutocompleteOptionsDrawerPalette)(mergedAbstractPalette),
75
+ codeInput: (0, _palette23.generateCodeInputPalette)(mergedAbstractPalette)
74
76
  };
75
77
  }, [mergedSkeletonPalette, mergedAbstractPalette]);
76
78
  return /*#__PURE__*/_react["default"].createElement(_context.PaletteContext.Provider, {
@@ -21,4 +21,5 @@ export declare const usePalette: () => {
21
21
  organizationAutocompleteItem: import("../components/form/Autocomplete/components/OrganizationAutocompleteItem/palette").TOrganizationAutocompleteItemPalette;
22
22
  drawer: import("../components/common/Drawer/palette").TDrawerPalette;
23
23
  entityAutocompleteOptionsDrawer: import("../components/common/EntityAutocompleteOptionsDrawer/palette").TEntityAutocompleteOptionsDrawerPalette;
24
+ codeInput: import("../components/form/CodeInput/palette").TCodeInputPalette;
24
25
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@invoicebox/ui",
3
- "version": "0.1.0-alpha.142",
3
+ "version": "0.1.0-alpha.143",
4
4
  "description": "Invoicebox UI",
5
5
  "license": "Apache License 2.0",
6
6
  "scripts": {