@trackunit/react-form-components 0.0.354 → 0.0.358

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/index.cjs.js CHANGED
@@ -1020,6 +1020,8 @@ const validatePhoneNumber = (phoneNumber) => {
1020
1020
  asYouType.input(phoneNumber);
1021
1021
  const countryCode = asYouType.getCallingCode();
1022
1022
  const national = asYouType.getNationalNumber();
1023
+ const safePhoneNumber = getPhoneNumberWithPlus(phoneNumber === null || phoneNumber === void 0 ? void 0 : phoneNumber.trim());
1024
+ const number = parsePhoneNumberFromString__default["default"](safePhoneNumber);
1023
1025
  if (phoneNumber && parsePhoneNumberFromString.isValidPhoneNumber(phoneNumber)) {
1024
1026
  return undefined;
1025
1027
  }
@@ -1027,18 +1029,15 @@ const validatePhoneNumber = (phoneNumber) => {
1027
1029
  return "REQUIRED_COUNTRY";
1028
1030
  }
1029
1031
  if (phoneNumber &&
1030
- (checkIfPhoneNumberHasPlus(phoneNumber) ? isNaN(+phoneNumber.slice(1, phoneNumber.length)) : isNaN(+phoneNumber))) {
1032
+ (checkIfPhoneNumberHasPlus(phoneNumber)
1033
+ ? isNaN(+phoneNumber.slice(1, phoneNumber.length))
1034
+ : isNaN(+phoneNumber) || !number)) {
1031
1035
  return "NOT_A_NUMBER";
1032
1036
  }
1033
- const safePhoneNumber = getPhoneNumberWithPlus(phoneNumber === null || phoneNumber === void 0 ? void 0 : phoneNumber.trim());
1034
1037
  if (safePhoneNumber.length <= 5) {
1035
1038
  //needs to be handled manually, parsePhoneNumberFromString can't parse it
1036
1039
  return "TOO_SHORT";
1037
1040
  }
1038
- const number = parsePhoneNumberFromString__default["default"](safePhoneNumber);
1039
- if (!number) {
1040
- return "NOT_A_NUMBER";
1041
- }
1042
1041
  return "INVALID_NUMBER";
1043
1042
  };
1044
1043
  /**
@@ -1361,7 +1360,7 @@ const TextInput = React.forwardRef((props, ref) => (jsxRuntime.jsx(BaseInput, Ob
1361
1360
 
1362
1361
  const cvaSearch = cssClassVarianceUtilities.cvaMerge([
1363
1362
  "shadow-none",
1364
- "component-search-borderless",
1363
+ "component-search-border",
1365
1364
  "component-search-background",
1366
1365
  "hover:component-search-background",
1367
1366
  "hover:component-search-focus-hover",
@@ -1371,7 +1370,7 @@ const cvaSearch = cssClassVarianceUtilities.cvaMerge([
1371
1370
  "duration-300",
1372
1371
  ], {
1373
1372
  variants: {
1374
- border: { true: ["!component-search-border"], false: "" },
1373
+ border: { true: ["!component-search-borderless"], false: "" },
1375
1374
  widenOnFocus: {
1376
1375
  true: [
1377
1376
  "component-search-width",
@@ -1392,8 +1391,8 @@ const cvaSearch = cssClassVarianceUtilities.cvaMerge([
1392
1391
  * @returns {JSX.Element} Search component
1393
1392
  */
1394
1393
  const Search = React.forwardRef((_a, ref) => {
1395
- var { className, placeholder = "Search", value, widenInputOnFocus, showBorderWhenNotInFocus = false, disabled, onKeyUp, onChange, onFocus, onBlur, name, onClear, dataTestId, autoComplete = "on" } = _a, rest = __rest(_a, ["className", "placeholder", "value", "widenInputOnFocus", "showBorderWhenNotInFocus", "disabled", "onKeyUp", "onChange", "onFocus", "onBlur", "name", "onClear", "dataTestId", "autoComplete"]);
1396
- return (jsxRuntime.jsx(TextInput, Object.assign({}, rest, { autoComplete: autoComplete, className: cvaSearch({ className, border: showBorderWhenNotInFocus, widenOnFocus: widenInputOnFocus }), dataTestId: dataTestId, disabled: disabled, name: name, onBlur: onBlur, onChange: onChange, onFocus: onFocus, onKeyUp: onKeyUp, placeholder: placeholder, prefix: jsxRuntime.jsx(reactComponents.Icon, { name: "MagnifyingGlass", size: "medium" }), ref: ref, suffix: onClear ? (jsxRuntime.jsx("button", { className: "flex", "data-testid": dataTestId && `${dataTestId}_suffix_component`, onClick: () => {
1394
+ var { className, placeholder = "Search", value, widenInputOnFocus, hideBorderWhenNotInFocus = false, disabled, onKeyUp, onChange, onFocus, onBlur, name, onClear, dataTestId, autoComplete = "on" } = _a, rest = __rest(_a, ["className", "placeholder", "value", "widenInputOnFocus", "hideBorderWhenNotInFocus", "disabled", "onKeyUp", "onChange", "onFocus", "onBlur", "name", "onClear", "dataTestId", "autoComplete"]);
1395
+ return (jsxRuntime.jsx(TextInput, Object.assign({}, rest, { autoComplete: autoComplete, className: cvaSearch({ className, border: hideBorderWhenNotInFocus, widenOnFocus: widenInputOnFocus }), dataTestId: dataTestId, disabled: disabled, name: name, onBlur: onBlur, onChange: onChange, onFocus: onFocus, onKeyUp: onKeyUp, placeholder: placeholder, prefix: jsxRuntime.jsx(reactComponents.Icon, { name: "MagnifyingGlass", size: "medium" }), ref: ref, suffix: onClear ? (jsxRuntime.jsx("button", { className: "flex", "data-testid": dataTestId && `${dataTestId}_suffix_component`, onClick: () => {
1397
1396
  onClear();
1398
1397
  }, children: jsxRuntime.jsx(reactComponents.Icon, { name: "XMark", size: "small" }) })) : undefined, value: value })));
1399
1398
  });
@@ -1824,7 +1823,7 @@ CreatableSelect.displayName = "CreatableSelect";
1824
1823
  */
1825
1824
  const Select = (props) => {
1826
1825
  const { className } = props, propsNoClassName = __rest(props, ["className"]);
1827
- const { id, dataTestId = "select", prefix, async, maxMenuHeight = 200, label, hasError, disabled, isMulti, value, options, onChange, isLoading, classNamePrefix = dataTestId !== null && dataTestId !== void 0 ? dataTestId : "select", onMenuScrollToBottom, filterOption, onInputChange, isSearchable, isClearable = false, readOnly, openMenuOnClick = !disabled, openMenuOnFocus = !disabled, } = props;
1826
+ const { id, dataTestId = "select", prefix, async, maxMenuHeight = 200, label, hasError, disabled, isMulti, value, options, onChange, isLoading, classNamePrefix = dataTestId !== null && dataTestId !== void 0 ? dataTestId : "select", onMenuScrollToBottom, filterOption, onInputChange, isSearchable, isClearable = false, readOnly, openMenuOnClick = !disabled, openMenuOnFocus = !disabled, hideSelectedOptions = false, } = props;
1828
1827
  const { refContainer, refPrefix, customStyles, menuIsOpen, customComponents, menuPlacement, openMenuHandler, closeMenuHandler, orderedOptions, } = useSelect(props);
1829
1828
  const selectProps = {
1830
1829
  value,
@@ -1852,8 +1851,9 @@ const Select = (props) => {
1852
1851
  id,
1853
1852
  onMenuScrollToBottom,
1854
1853
  onInputChange,
1854
+ hideSelectedOptions,
1855
1855
  };
1856
- return (jsxRuntime.jsxs("div", { className: cvaSelect({ invalid: hasError, disabled: disabled || readOnly, className }), "data-testid": dataTestId, ref: refContainer, children: [prefix !== undefined && (jsxRuntime.jsx("div", { className: cvaSelectPrefix(), "data-testid": dataTestId && `${dataTestId}-prefix`, ref: refPrefix, children: prefix })), async ? (jsxRuntime.jsx(ReactAsyncSelect__default["default"], Object.assign({}, propsNoClassName, selectProps, async, { onMenuClose: closeMenuHandler, onMenuOpen: openMenuHandler }))) : (jsxRuntime.jsx(ReactSelect__default["default"], Object.assign({}, propsNoClassName, selectProps, { hideSelectedOptions: false, isMulti: isMulti, onMenuClose: closeMenuHandler, onMenuOpen: openMenuHandler, options: filterOption ? orderedOptions : options })))] }));
1856
+ return (jsxRuntime.jsxs("div", { className: cvaSelect({ invalid: hasError, disabled: disabled || readOnly, className }), "data-testid": dataTestId, ref: refContainer, children: [prefix !== undefined && (jsxRuntime.jsx("div", { className: cvaSelectPrefix(), "data-testid": dataTestId && `${dataTestId}-prefix`, ref: refPrefix, children: prefix })), async ? (jsxRuntime.jsx(ReactAsyncSelect__default["default"], Object.assign({}, propsNoClassName, selectProps, async, { onMenuClose: closeMenuHandler, onMenuOpen: openMenuHandler }))) : (jsxRuntime.jsx(ReactSelect__default["default"], Object.assign({}, propsNoClassName, selectProps, { isMulti: isMulti, onMenuClose: closeMenuHandler, onMenuOpen: openMenuHandler, options: filterOption ? orderedOptions : options })))] }));
1857
1857
  };
1858
1858
  Select.displayName = "Select";
1859
1859
 
package/index.esm.js CHANGED
@@ -990,6 +990,8 @@ const validatePhoneNumber = (phoneNumber) => {
990
990
  asYouType.input(phoneNumber);
991
991
  const countryCode = asYouType.getCallingCode();
992
992
  const national = asYouType.getNationalNumber();
993
+ const safePhoneNumber = getPhoneNumberWithPlus(phoneNumber === null || phoneNumber === void 0 ? void 0 : phoneNumber.trim());
994
+ const number = parsePhoneNumberFromString(safePhoneNumber);
993
995
  if (phoneNumber && isValidPhoneNumber(phoneNumber)) {
994
996
  return undefined;
995
997
  }
@@ -997,18 +999,15 @@ const validatePhoneNumber = (phoneNumber) => {
997
999
  return "REQUIRED_COUNTRY";
998
1000
  }
999
1001
  if (phoneNumber &&
1000
- (checkIfPhoneNumberHasPlus(phoneNumber) ? isNaN(+phoneNumber.slice(1, phoneNumber.length)) : isNaN(+phoneNumber))) {
1002
+ (checkIfPhoneNumberHasPlus(phoneNumber)
1003
+ ? isNaN(+phoneNumber.slice(1, phoneNumber.length))
1004
+ : isNaN(+phoneNumber) || !number)) {
1001
1005
  return "NOT_A_NUMBER";
1002
1006
  }
1003
- const safePhoneNumber = getPhoneNumberWithPlus(phoneNumber === null || phoneNumber === void 0 ? void 0 : phoneNumber.trim());
1004
1007
  if (safePhoneNumber.length <= 5) {
1005
1008
  //needs to be handled manually, parsePhoneNumberFromString can't parse it
1006
1009
  return "TOO_SHORT";
1007
1010
  }
1008
- const number = parsePhoneNumberFromString(safePhoneNumber);
1009
- if (!number) {
1010
- return "NOT_A_NUMBER";
1011
- }
1012
1011
  return "INVALID_NUMBER";
1013
1012
  };
1014
1013
  /**
@@ -1331,7 +1330,7 @@ const TextInput = forwardRef((props, ref) => (jsx(BaseInput, Object.assign({ ref
1331
1330
 
1332
1331
  const cvaSearch = cvaMerge([
1333
1332
  "shadow-none",
1334
- "component-search-borderless",
1333
+ "component-search-border",
1335
1334
  "component-search-background",
1336
1335
  "hover:component-search-background",
1337
1336
  "hover:component-search-focus-hover",
@@ -1341,7 +1340,7 @@ const cvaSearch = cvaMerge([
1341
1340
  "duration-300",
1342
1341
  ], {
1343
1342
  variants: {
1344
- border: { true: ["!component-search-border"], false: "" },
1343
+ border: { true: ["!component-search-borderless"], false: "" },
1345
1344
  widenOnFocus: {
1346
1345
  true: [
1347
1346
  "component-search-width",
@@ -1362,8 +1361,8 @@ const cvaSearch = cvaMerge([
1362
1361
  * @returns {JSX.Element} Search component
1363
1362
  */
1364
1363
  const Search = forwardRef((_a, ref) => {
1365
- var { className, placeholder = "Search", value, widenInputOnFocus, showBorderWhenNotInFocus = false, disabled, onKeyUp, onChange, onFocus, onBlur, name, onClear, dataTestId, autoComplete = "on" } = _a, rest = __rest(_a, ["className", "placeholder", "value", "widenInputOnFocus", "showBorderWhenNotInFocus", "disabled", "onKeyUp", "onChange", "onFocus", "onBlur", "name", "onClear", "dataTestId", "autoComplete"]);
1366
- return (jsx(TextInput, Object.assign({}, rest, { autoComplete: autoComplete, className: cvaSearch({ className, border: showBorderWhenNotInFocus, widenOnFocus: widenInputOnFocus }), dataTestId: dataTestId, disabled: disabled, name: name, onBlur: onBlur, onChange: onChange, onFocus: onFocus, onKeyUp: onKeyUp, placeholder: placeholder, prefix: jsx(Icon, { name: "MagnifyingGlass", size: "medium" }), ref: ref, suffix: onClear ? (jsx("button", { className: "flex", "data-testid": dataTestId && `${dataTestId}_suffix_component`, onClick: () => {
1364
+ var { className, placeholder = "Search", value, widenInputOnFocus, hideBorderWhenNotInFocus = false, disabled, onKeyUp, onChange, onFocus, onBlur, name, onClear, dataTestId, autoComplete = "on" } = _a, rest = __rest(_a, ["className", "placeholder", "value", "widenInputOnFocus", "hideBorderWhenNotInFocus", "disabled", "onKeyUp", "onChange", "onFocus", "onBlur", "name", "onClear", "dataTestId", "autoComplete"]);
1365
+ return (jsx(TextInput, Object.assign({}, rest, { autoComplete: autoComplete, className: cvaSearch({ className, border: hideBorderWhenNotInFocus, widenOnFocus: widenInputOnFocus }), dataTestId: dataTestId, disabled: disabled, name: name, onBlur: onBlur, onChange: onChange, onFocus: onFocus, onKeyUp: onKeyUp, placeholder: placeholder, prefix: jsx(Icon, { name: "MagnifyingGlass", size: "medium" }), ref: ref, suffix: onClear ? (jsx("button", { className: "flex", "data-testid": dataTestId && `${dataTestId}_suffix_component`, onClick: () => {
1367
1366
  onClear();
1368
1367
  }, children: jsx(Icon, { name: "XMark", size: "small" }) })) : undefined, value: value })));
1369
1368
  });
@@ -1794,7 +1793,7 @@ CreatableSelect.displayName = "CreatableSelect";
1794
1793
  */
1795
1794
  const Select = (props) => {
1796
1795
  const { className } = props, propsNoClassName = __rest(props, ["className"]);
1797
- const { id, dataTestId = "select", prefix, async, maxMenuHeight = 200, label, hasError, disabled, isMulti, value, options, onChange, isLoading, classNamePrefix = dataTestId !== null && dataTestId !== void 0 ? dataTestId : "select", onMenuScrollToBottom, filterOption, onInputChange, isSearchable, isClearable = false, readOnly, openMenuOnClick = !disabled, openMenuOnFocus = !disabled, } = props;
1796
+ const { id, dataTestId = "select", prefix, async, maxMenuHeight = 200, label, hasError, disabled, isMulti, value, options, onChange, isLoading, classNamePrefix = dataTestId !== null && dataTestId !== void 0 ? dataTestId : "select", onMenuScrollToBottom, filterOption, onInputChange, isSearchable, isClearable = false, readOnly, openMenuOnClick = !disabled, openMenuOnFocus = !disabled, hideSelectedOptions = false, } = props;
1798
1797
  const { refContainer, refPrefix, customStyles, menuIsOpen, customComponents, menuPlacement, openMenuHandler, closeMenuHandler, orderedOptions, } = useSelect(props);
1799
1798
  const selectProps = {
1800
1799
  value,
@@ -1822,8 +1821,9 @@ const Select = (props) => {
1822
1821
  id,
1823
1822
  onMenuScrollToBottom,
1824
1823
  onInputChange,
1824
+ hideSelectedOptions,
1825
1825
  };
1826
- return (jsxs("div", { className: cvaSelect({ invalid: hasError, disabled: disabled || readOnly, className }), "data-testid": dataTestId, ref: refContainer, children: [prefix !== undefined && (jsx("div", { className: cvaSelectPrefix(), "data-testid": dataTestId && `${dataTestId}-prefix`, ref: refPrefix, children: prefix })), async ? (jsx(ReactAsyncSelect, Object.assign({}, propsNoClassName, selectProps, async, { onMenuClose: closeMenuHandler, onMenuOpen: openMenuHandler }))) : (jsx(ReactSelect, Object.assign({}, propsNoClassName, selectProps, { hideSelectedOptions: false, isMulti: isMulti, onMenuClose: closeMenuHandler, onMenuOpen: openMenuHandler, options: filterOption ? orderedOptions : options })))] }));
1826
+ return (jsxs("div", { className: cvaSelect({ invalid: hasError, disabled: disabled || readOnly, className }), "data-testid": dataTestId, ref: refContainer, children: [prefix !== undefined && (jsx("div", { className: cvaSelectPrefix(), "data-testid": dataTestId && `${dataTestId}-prefix`, ref: refPrefix, children: prefix })), async ? (jsx(ReactAsyncSelect, Object.assign({}, propsNoClassName, selectProps, async, { onMenuClose: closeMenuHandler, onMenuOpen: openMenuHandler }))) : (jsx(ReactSelect, Object.assign({}, propsNoClassName, selectProps, { isMulti: isMulti, onMenuClose: closeMenuHandler, onMenuOpen: openMenuHandler, options: filterOption ? orderedOptions : options })))] }));
1827
1827
  };
1828
1828
  Select.displayName = "Select";
1829
1829
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trackunit/react-form-components",
3
- "version": "0.0.354",
3
+ "version": "0.0.358",
4
4
  "repository": "https://github.com/Trackunit/manager",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "engines": {
@@ -18,7 +18,7 @@ export interface SearchProps extends CommonProps, TextInputProps {
18
18
  /**
19
19
  * Whether the border for the search box should be displayed while the search box is not in focus.
20
20
  */
21
- showBorderWhenNotInFocus?: boolean;
21
+ hideBorderWhenNotInFocus?: boolean;
22
22
  /**
23
23
  * Value rendered in the search box.
24
24
  */
@@ -34,6 +34,7 @@ export declare const CreatableSelect: {
34
34
  isClearable?: boolean | undefined;
35
35
  isSearchable?: boolean | undefined;
36
36
  isAsync?: IsAsync | undefined;
37
+ hideSelectedOptions?: boolean | undefined;
37
38
  } & CreatableSelectProps): JSX.Element;
38
39
  displayName: string;
39
40
  };
@@ -113,6 +113,13 @@ export type SelectProps<Option, IsAsync extends boolean, IsMulti extends boolean
113
113
  * @memberof SelectProps
114
114
  */
115
115
  isAsync?: IsAsync;
116
+ /**
117
+ * A handler for menu close event
118
+ * use if you want to trigger custom logic
119
+ *
120
+ * @memberof SelectProps
121
+ */
122
+ hideSelectedOptions?: boolean;
116
123
  };
117
124
  interface IUseSelect<Option, IsMulti extends boolean = false, Group extends GroupBase<Option> = GroupBase<Option>> {
118
125
  customStyles: StylesConfig<Option, IsMulti, Group>;