@activecollab/components 2.0.98 → 2.0.100

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 (41) hide show
  1. package/dist/cjs/components/Input/InputPhone.js +151 -0
  2. package/dist/cjs/components/Input/InputPhone.js.map +1 -0
  3. package/dist/cjs/components/Input/{InputSelectTrigger.js → InputSelect.js} +16 -7
  4. package/dist/cjs/components/Input/InputSelect.js.map +1 -0
  5. package/dist/cjs/components/Input/InputUrl.js +2 -2
  6. package/dist/cjs/components/Input/InputUrl.js.map +1 -1
  7. package/dist/cjs/components/Input/Styles.js +24 -1
  8. package/dist/cjs/components/Input/Styles.js.map +1 -1
  9. package/dist/cjs/components/Input/index.js +11 -0
  10. package/dist/cjs/components/Input/index.js.map +1 -1
  11. package/dist/cjs/components/Select/Select.js.map +1 -1
  12. package/dist/esm/components/Input/InputPhone.d.ts +14 -0
  13. package/dist/esm/components/Input/InputPhone.d.ts.map +1 -0
  14. package/dist/esm/components/Input/InputPhone.js +128 -0
  15. package/dist/esm/components/Input/InputPhone.js.map +1 -0
  16. package/dist/esm/components/Input/InputSelect.d.ts +19 -0
  17. package/dist/esm/components/Input/InputSelect.d.ts.map +1 -0
  18. package/dist/esm/components/Input/{InputSelectTrigger.js → InputSelect.js} +13 -7
  19. package/dist/esm/components/Input/InputSelect.js.map +1 -0
  20. package/dist/esm/components/Input/InputUrl.js +1 -1
  21. package/dist/esm/components/Input/InputUrl.js.map +1 -1
  22. package/dist/esm/components/Input/Styles.d.ts +6 -0
  23. package/dist/esm/components/Input/Styles.d.ts.map +1 -1
  24. package/dist/esm/components/Input/Styles.js +25 -0
  25. package/dist/esm/components/Input/Styles.js.map +1 -1
  26. package/dist/esm/components/Input/index.d.ts +1 -0
  27. package/dist/esm/components/Input/index.d.ts.map +1 -1
  28. package/dist/esm/components/Input/index.js +1 -0
  29. package/dist/esm/components/Input/index.js.map +1 -1
  30. package/dist/esm/components/Select/Select.d.ts +1 -2
  31. package/dist/esm/components/Select/Select.d.ts.map +1 -1
  32. package/dist/esm/components/Select/Select.js.map +1 -1
  33. package/dist/index.js +273 -111
  34. package/dist/index.js.map +1 -1
  35. package/dist/index.min.js +1 -1
  36. package/dist/index.min.js.map +1 -1
  37. package/package.json +2 -1
  38. package/dist/cjs/components/Input/InputSelectTrigger.js.map +0 -1
  39. package/dist/esm/components/Input/InputSelectTrigger.d.ts +0 -11
  40. package/dist/esm/components/Input/InputSelectTrigger.d.ts.map +0 -1
  41. package/dist/esm/components/Input/InputSelectTrigger.js.map +0 -1
@@ -0,0 +1,14 @@
1
+ import React from "react";
2
+ import { InputProps } from "./Input";
3
+ export interface InputPhoneProps extends Omit<InputProps, "type" | "startAdornment" | "onChange" | "value" | "size"> {
4
+ /** Input value */
5
+ value?: string;
6
+ /** Default country code to be selected */
7
+ defaultCountry?: string;
8
+ /** onChange function */
9
+ onChange?: (val: string) => void;
10
+ /** Input size */
11
+ size?: "small" | "regular" | "big";
12
+ }
13
+ export declare const InputPhone: React.ForwardRefExoticComponent<InputPhoneProps & React.RefAttributes<HTMLInputElement>>;
14
+ //# sourceMappingURL=InputPhone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputPhone.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/InputPhone.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAC;AAUf,OAAO,EAAS,UAAU,EAAE,MAAM,SAAS,CAAC;AAW5C,MAAM,WAAW,eACf,SAAQ,IAAI,CACV,UAAU,EACV,MAAM,GAAG,gBAAgB,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAC1D;IACD,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,iBAAiB;IACjB,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,KAAK,CAAC;CACpC;AAkBD,eAAO,MAAM,UAAU,0FA6ItB,CAAC"}
@@ -0,0 +1,128 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import React, { forwardRef, useCallback, useEffect, useRef, useState } from "react";
3
+ import { callingCodeToCountryCodeMap, countriesArraySortedByName, getCountryCallingCode, getCountryFlag } from "country-explorer";
4
+ import { Input } from "./Input";
5
+ import { InputSelect } from "./InputSelect";
6
+ import { StyledFlagTriggerLabel, StyledOptionFlag, StyledOptionName, StyledOptionWrapper } from "./Styles";
7
+ import { useForkRef } from "../../utils";
8
+ import { RadioButton } from "../RadioButton";
9
+ const renderOption = (option, data) => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(StyledOptionWrapper, null, /*#__PURE__*/React.createElement(StyledOptionFlag, null, getCountryFlag(option.id)), /*#__PURE__*/React.createElement(StyledOptionName, null, option.name)), /*#__PURE__*/React.createElement(RadioButton, {
10
+ checked: data.checked,
11
+ onChange: data.onChange
12
+ }));
13
+ export const InputPhone = /*#__PURE__*/forwardRef((_ref, ref) => {
14
+ let {
15
+ size = "regular",
16
+ disabled,
17
+ value: defaultValue = "",
18
+ onChange,
19
+ defaultCountry = "US",
20
+ ...rest
21
+ } = _ref;
22
+ const inputRef = useRef(null);
23
+ const handleRef = useForkRef(ref, inputRef);
24
+ const [prefix, setPrefix] = useState(defaultCountry);
25
+ const [value, setValue] = useState("");
26
+ const options = countriesArraySortedByName.map(country => ({
27
+ id: country.countryCode,
28
+ name: "+" + country.callingCode + " " + country.name
29
+ }));
30
+ const separatePrefixFromValue = fullValue => {
31
+ let newPrefix = prefix;
32
+ let newValue = fullValue;
33
+ if (fullValue.startsWith("+") || fullValue.startsWith("00")) {
34
+ const prefixLength = fullValue.startsWith("+") ? 1 : 2;
35
+ const digits = fullValue.slice(prefixLength);
36
+ for (let i = digits.length; i >= 1; i--) {
37
+ const code = digits.slice(0, i);
38
+ if (callingCodeToCountryCodeMap[code]) {
39
+ newPrefix = callingCodeToCountryCodeMap[code];
40
+ newValue = fullValue.slice(prefixLength + getCountryCallingCode(newPrefix).length);
41
+ break;
42
+ }
43
+ }
44
+ } else if (fullValue.startsWith(prefix)) {
45
+ newValue = fullValue.slice(prefix.length);
46
+ }
47
+ return {
48
+ newPrefix,
49
+ newValue
50
+ };
51
+ };
52
+ useEffect(() => {
53
+ const {
54
+ newPrefix,
55
+ newValue
56
+ } = separatePrefixFromValue(defaultValue);
57
+ setPrefix(newPrefix);
58
+ setValue(newValue);
59
+ // eslint-disable-next-line react-hooks/exhaustive-deps
60
+ }, [defaultValue]);
61
+ const handleChange = useCallback(e => {
62
+ const inputValue = e.target.value;
63
+ if (/[^0-9+]/.test(inputValue)) {
64
+ return;
65
+ }
66
+ const {
67
+ newPrefix,
68
+ newValue
69
+ } = separatePrefixFromValue(inputValue);
70
+ setPrefix(newPrefix);
71
+ setValue(newValue);
72
+ typeof onChange === "function" && onChange("+" + getCountryCallingCode(newPrefix) + newValue);
73
+ },
74
+ // eslint-disable-next-line react-hooks/exhaustive-deps
75
+ [onChange, prefix]);
76
+ const handleSelectChange = val => {
77
+ setPrefix(val);
78
+ typeof onChange === "function" && onChange("+" + getCountryCallingCode(val) + value);
79
+ };
80
+ const handlePaste = e => {
81
+ e.preventDefault();
82
+ const paste = e.clipboardData.getData("text");
83
+ const filteredPaste = paste.replace(/[^0-9+]/g, "");
84
+ const inputElement = e.currentTarget;
85
+ const {
86
+ selectionStart,
87
+ selectionEnd
88
+ } = inputElement;
89
+ if (selectionStart !== null && selectionEnd !== null) {
90
+ const currentValue = inputElement.value;
91
+ const beforeSelection = currentValue.slice(0, selectionStart);
92
+ const afterSelection = currentValue.slice(selectionEnd);
93
+ const newValueAfterPaste = beforeSelection + filteredPaste + afterSelection;
94
+ const {
95
+ newPrefix,
96
+ newValue
97
+ } = separatePrefixFromValue(newValueAfterPaste);
98
+ setPrefix(newPrefix);
99
+ setValue(newValue);
100
+ typeof onChange === "function" && onChange("+" + getCountryCallingCode(newPrefix) + newValue);
101
+ }
102
+ };
103
+ return /*#__PURE__*/React.createElement(Input, _extends({}, rest, {
104
+ ref: handleRef,
105
+ size: size,
106
+ value: value,
107
+ disabled: disabled,
108
+ type: "text",
109
+ onPaste: handlePaste,
110
+ onChange: handleChange,
111
+ "data-testid": "InputPhone",
112
+ startAdornment: /*#__PURE__*/React.createElement(InputSelect, {
113
+ size: size,
114
+ onChange: handleSelectChange,
115
+ options: options,
116
+ selected: prefix,
117
+ selectedLabel: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(StyledFlagTriggerLabel, {
118
+ $size: size
119
+ }, getCountryFlag(prefix)), "+", getCountryCallingCode(prefix)),
120
+ disabled: disabled,
121
+ keepSameOptionsOrder: false,
122
+ search: true,
123
+ renderOption: renderOption
124
+ })
125
+ }));
126
+ });
127
+ InputPhone.displayName = "InputPhone";
128
+ //# sourceMappingURL=InputPhone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputPhone.js","names":["React","forwardRef","useCallback","useEffect","useRef","useState","callingCodeToCountryCodeMap","countriesArraySortedByName","getCountryCallingCode","getCountryFlag","Input","InputSelect","StyledFlagTriggerLabel","StyledOptionFlag","StyledOptionName","StyledOptionWrapper","useForkRef","RadioButton","renderOption","option","data","createElement","Fragment","id","name","checked","onChange","InputPhone","_ref","ref","size","disabled","value","defaultValue","defaultCountry","rest","inputRef","handleRef","prefix","setPrefix","setValue","options","map","country","countryCode","callingCode","separatePrefixFromValue","fullValue","newPrefix","newValue","startsWith","prefixLength","digits","slice","i","length","code","handleChange","e","inputValue","target","test","handleSelectChange","val","handlePaste","preventDefault","paste","clipboardData","getData","filteredPaste","replace","inputElement","currentTarget","selectionStart","selectionEnd","currentValue","beforeSelection","afterSelection","newValueAfterPaste","_extends","type","onPaste","startAdornment","selected","selectedLabel","$size","keepSameOptionsOrder","search","displayName"],"sources":["../../../../src/components/Input/InputPhone.tsx"],"sourcesContent":["import React, {\n ChangeEventHandler,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\n\nimport {\n callingCodeToCountryCodeMap,\n countriesArraySortedByName,\n getCountryCallingCode,\n getCountryFlag,\n Country,\n} from \"country-explorer\";\n\nimport { Input, InputProps } from \"./Input\";\nimport { InputSelect } from \"./InputSelect\";\nimport {\n StyledFlagTriggerLabel,\n StyledOptionFlag,\n StyledOptionName,\n StyledOptionWrapper,\n} from \"./Styles\";\nimport { useForkRef } from \"../../utils\";\nimport { RadioButton } from \"../RadioButton\";\n\nexport interface InputPhoneProps\n extends Omit<\n InputProps,\n \"type\" | \"startAdornment\" | \"onChange\" | \"value\" | \"size\"\n > {\n /** Input value */\n value?: string;\n /** Default country code to be selected */\n defaultCountry?: string;\n /** onChange function */\n onChange?: (val: string) => void;\n /** Input size */\n size?: \"small\" | \"regular\" | \"big\";\n}\n\nconst renderOption = (\n option: Record<string, React.ReactNode>,\n data: Record<string, unknown>\n): React.ReactElement => (\n <>\n <StyledOptionWrapper>\n <StyledOptionFlag>{getCountryFlag(option.id)}</StyledOptionFlag>\n <StyledOptionName>{option.name}</StyledOptionName>\n </StyledOptionWrapper>\n <RadioButton\n checked={data.checked as boolean}\n onChange={data.onChange as ChangeEventHandler<HTMLInputElement>}\n />\n </>\n);\n\nexport const InputPhone = forwardRef<HTMLInputElement, InputPhoneProps>(\n (\n {\n size = \"regular\",\n disabled,\n value: defaultValue = \"\",\n onChange,\n defaultCountry = \"US\",\n ...rest\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const handleRef = useForkRef(ref, inputRef);\n const [prefix, setPrefix] = useState(defaultCountry);\n const [value, setValue] = useState<string>(\"\");\n\n const options = countriesArraySortedByName.map((country: Country) => ({\n id: country.countryCode,\n name: `+${country.callingCode} ${country.name}`,\n }));\n\n const separatePrefixFromValue = (\n fullValue: string\n ): { newPrefix: string; newValue: string } => {\n let newPrefix = prefix;\n let newValue = fullValue;\n\n if (fullValue.startsWith(\"+\") || fullValue.startsWith(\"00\")) {\n const prefixLength = fullValue.startsWith(\"+\") ? 1 : 2;\n const digits = fullValue.slice(prefixLength);\n\n for (let i = digits.length; i >= 1; i--) {\n const code = digits.slice(0, i);\n if (callingCodeToCountryCodeMap[code]) {\n newPrefix = callingCodeToCountryCodeMap[code];\n newValue = fullValue.slice(\n prefixLength + getCountryCallingCode(newPrefix).length\n );\n break;\n }\n }\n } else if (fullValue.startsWith(prefix)) {\n newValue = fullValue.slice(prefix.length);\n }\n\n return { newPrefix, newValue };\n };\n\n useEffect(() => {\n const { newPrefix, newValue } = separatePrefixFromValue(defaultValue);\n setPrefix(newPrefix);\n setValue(newValue);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [defaultValue]);\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value;\n if (/[^0-9+]/.test(inputValue)) {\n return;\n }\n\n const { newPrefix, newValue } = separatePrefixFromValue(inputValue);\n setPrefix(newPrefix);\n setValue(newValue);\n\n typeof onChange === \"function\" &&\n onChange(`+${getCountryCallingCode(newPrefix)}${newValue}`);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [onChange, prefix]\n );\n\n const handleSelectChange = (val: string | number | (string | number)[]) => {\n setPrefix(val as string);\n typeof onChange === \"function\" &&\n onChange(`+${getCountryCallingCode(val)}${value}`);\n };\n\n const handlePaste = (e: React.ClipboardEvent) => {\n e.preventDefault();\n\n const paste = e.clipboardData.getData(\"text\");\n const filteredPaste = paste.replace(/[^0-9+]/g, \"\");\n\n const inputElement = e.currentTarget as HTMLInputElement;\n const { selectionStart, selectionEnd } = inputElement;\n\n if (selectionStart !== null && selectionEnd !== null) {\n const currentValue = inputElement.value;\n const beforeSelection = currentValue.slice(0, selectionStart);\n const afterSelection = currentValue.slice(selectionEnd);\n\n const newValueAfterPaste =\n beforeSelection + filteredPaste + afterSelection;\n const { newPrefix, newValue } =\n separatePrefixFromValue(newValueAfterPaste);\n\n setPrefix(newPrefix);\n setValue(newValue);\n\n typeof onChange === \"function\" &&\n onChange(`+${getCountryCallingCode(newPrefix)}${newValue}`);\n }\n };\n\n return (\n <Input\n {...rest}\n ref={handleRef}\n size={size}\n value={value}\n disabled={disabled}\n type=\"text\"\n onPaste={handlePaste}\n onChange={handleChange}\n data-testid=\"InputPhone\"\n startAdornment={\n <InputSelect\n size={size}\n onChange={handleSelectChange}\n options={options}\n selected={prefix}\n selectedLabel={\n <>\n <StyledFlagTriggerLabel $size={size}>\n {getCountryFlag(prefix)}\n </StyledFlagTriggerLabel>\n +{getCountryCallingCode(prefix)}\n </>\n }\n disabled={disabled}\n keepSameOptionsOrder={false}\n search\n renderOption={renderOption}\n />\n }\n />\n );\n }\n);\n\nInputPhone.displayName = \"InputPhone\";\n"],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import React, { ReactElement, ReactNode } from "react";
2
+ import { ElementWithRef, IOptionItemProps } from "../Select";
3
+ export interface InputSelectProps {
4
+ onChange: (val: string | number | (string | number)[]) => void;
5
+ size: string;
6
+ selected: string;
7
+ options: IOptionItemProps[];
8
+ disabled?: boolean;
9
+ search?: boolean;
10
+ disabledInternalSort?: boolean;
11
+ keepSameOptionsOrder?: boolean;
12
+ selectedLabel?: ReactNode;
13
+ /** Set select target element */
14
+ target?: ElementWithRef<Element>;
15
+ /** Render option */
16
+ renderOption?: (option: Record<string, ReactNode>, data: Record<string, unknown>) => string | ReactElement;
17
+ }
18
+ export declare const InputSelect: React.FC<InputSelectProps>;
19
+ //# sourceMappingURL=InputSelect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputSelect.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/InputSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAU,MAAM,WAAW,CAAC;AAErE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,gCAAgC;IAChC,MAAM,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IACjC,oBAAoB;IACpB,YAAY,CAAC,EAAE,CACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EACjC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1B,MAAM,GAAG,YAAY,CAAC;CAC5B;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAkClD,CAAC"}
@@ -8,24 +8,30 @@ export const InputSelect = _ref => {
8
8
  size,
9
9
  selected,
10
10
  options,
11
- disabled = false
11
+ search = false,
12
+ disabled = false,
13
+ disabledInternalSort = true,
14
+ keepSameOptionsOrder = true,
15
+ selectedLabel,
16
+ renderOption
12
17
  } = _ref;
13
18
  return /*#__PURE__*/React.createElement(Select, {
14
19
  onChange: onChange,
15
20
  forceCloseMenu: true,
16
- disableSearch: true,
21
+ disableSearch: !search,
17
22
  target: /*#__PURE__*/React.createElement(StyledInputSelectTrigger, {
18
23
  $disabled: disabled,
19
24
  $size: size
20
- }, selected, size === "big" ? /*#__PURE__*/React.createElement(ArrowDownIcon, {
25
+ }, selectedLabel ? selectedLabel : selected, size === "big" ? /*#__PURE__*/React.createElement(ArrowDownIcon, {
21
26
  fill: "var(--color-theme-700)"
22
27
  }) : /*#__PURE__*/React.createElement(ArrowDownSmallIcon, {
23
28
  fill: "var(--color-theme-700)"
24
29
  })),
25
30
  options: options,
26
- disabledInternalSort: true,
27
- keepSameOptionsOrder: true,
28
- selected: selected
31
+ disabledInternalSort: disabledInternalSort,
32
+ keepSameOptionsOrder: keepSameOptionsOrder,
33
+ selected: selected,
34
+ renderOption: renderOption
29
35
  });
30
36
  };
31
- //# sourceMappingURL=InputSelectTrigger.js.map
37
+ //# sourceMappingURL=InputSelect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputSelect.js","names":["React","StyledInputSelectTrigger","ArrowDownIcon","ArrowDownSmallIcon","Select","InputSelect","_ref","onChange","size","selected","options","search","disabled","disabledInternalSort","keepSameOptionsOrder","selectedLabel","renderOption","createElement","forceCloseMenu","disableSearch","target","$disabled","$size","fill"],"sources":["../../../../src/components/Input/InputSelect.tsx"],"sourcesContent":["import React, { ReactElement, ReactNode } from \"react\";\n\nimport { StyledInputSelectTrigger } from \"./Styles\";\nimport { ArrowDownIcon, ArrowDownSmallIcon } from \"../Icons\";\nimport { ElementWithRef, IOptionItemProps, Select } from \"../Select\";\n\nexport interface InputSelectProps {\n onChange: (val: string | number | (string | number)[]) => void;\n size: string;\n selected: string;\n options: IOptionItemProps[];\n disabled?: boolean;\n search?: boolean;\n // @ToDo: Fix this\n disabledInternalSort?: boolean;\n keepSameOptionsOrder?: boolean;\n selectedLabel?: ReactNode;\n /** Set select target element */\n target?: ElementWithRef<Element>;\n /** Render option */\n renderOption?: (\n option: Record<string, ReactNode>,\n data: Record<string, unknown>\n ) => string | ReactElement;\n}\n\nexport const InputSelect: React.FC<InputSelectProps> = ({\n onChange,\n size,\n selected,\n options,\n search = false,\n disabled = false,\n disabledInternalSort = true,\n keepSameOptionsOrder = true,\n selectedLabel,\n renderOption,\n}) => {\n return (\n <Select\n onChange={onChange}\n forceCloseMenu\n disableSearch={!search}\n target={\n <StyledInputSelectTrigger $disabled={disabled} $size={size}>\n {selectedLabel ? selectedLabel : selected}\n {size === \"big\" ? (\n <ArrowDownIcon fill=\"var(--color-theme-700)\" />\n ) : (\n <ArrowDownSmallIcon fill=\"var(--color-theme-700)\" />\n )}\n </StyledInputSelectTrigger>\n }\n options={options}\n disabledInternalSort={disabledInternalSort}\n keepSameOptionsOrder={keepSameOptionsOrder}\n selected={selected}\n renderOption={renderOption}\n />\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAmC,OAAO;AAEtD,SAASC,wBAAwB,QAAQ,UAAU;AACnD,SAASC,aAAa,EAAEC,kBAAkB,QAAQ,UAAU;AAC5D,SAA2CC,MAAM,QAAQ,WAAW;AAsBpE,OAAO,MAAMC,WAAuC,GAAGC,IAAA,IAWjD;EAAA,IAXkD;IACtDC,QAAQ;IACRC,IAAI;IACJC,QAAQ;IACRC,OAAO;IACPC,MAAM,GAAG,KAAK;IACdC,QAAQ,GAAG,KAAK;IAChBC,oBAAoB,GAAG,IAAI;IAC3BC,oBAAoB,GAAG,IAAI;IAC3BC,aAAa;IACbC;EACF,CAAC,GAAAV,IAAA;EACC,oBACEN,KAAA,CAAAiB,aAAA,CAACb,MAAM;IACLG,QAAQ,EAAEA,QAAS;IACnBW,cAAc;IACdC,aAAa,EAAE,CAACR,MAAO;IACvBS,MAAM,eACJpB,KAAA,CAAAiB,aAAA,CAAChB,wBAAwB;MAACoB,SAAS,EAAET,QAAS;MAACU,KAAK,EAAEd;IAAK,GACxDO,aAAa,GAAGA,aAAa,GAAGN,QAAQ,EACxCD,IAAI,KAAK,KAAK,gBACbR,KAAA,CAAAiB,aAAA,CAACf,aAAa;MAACqB,IAAI,EAAC;IAAwB,CAAE,CAAC,gBAE/CvB,KAAA,CAAAiB,aAAA,CAACd,kBAAkB;MAACoB,IAAI,EAAC;IAAwB,CAAE,CAE7B,CAC3B;IACDb,OAAO,EAAEA,OAAQ;IACjBG,oBAAoB,EAAEA,oBAAqB;IAC3CC,oBAAoB,EAAEA,oBAAqB;IAC3CL,QAAQ,EAAEA,QAAS;IACnBO,YAAY,EAAEA;EAAa,CAC5B,CAAC;AAEN,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import React, { forwardRef, useCallback, useEffect, useRef, useState } from "react";
3
3
  import { Input } from "./Input";
4
- import { InputSelect } from "./InputSelectTrigger";
4
+ import { InputSelect } from "./InputSelect";
5
5
  import { useForkRef } from "../../utils";
6
6
  const options = [{
7
7
  id: "https://",
@@ -1 +1 @@
1
- {"version":3,"file":"InputUrl.js","names":["React","forwardRef","useCallback","useEffect","useRef","useState","Input","InputSelect","useForkRef","options","id","name","InputUrl","_ref","ref","size","disabled","value","defaultValue","onChange","rest","inputRef","handleRef","prefix","setPrefix","setValue","separatePrefixFromValue","fullValue","newPrefix","newValue","forEach","option","startsWith","replace","handleChange","e","inputValue","target","handleSelectChange","val","handlePaste","preventDefault","paste","clipboardData","getData","createElement","_extends","type","onPaste","startAdornment","selected","displayName"],"sources":["../../../../src/components/Input/InputUrl.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\n\nimport { Input, InputProps } from \"./Input\";\nimport { InputSelect } from \"./InputSelectTrigger\";\nimport { useForkRef } from \"../../utils\";\n\nexport interface InputUrlProps\n extends Omit<\n InputProps,\n \"type\" | \"startAdornment\" | \"onChange\" | \"value\" | \"size\"\n > {\n /** Input value */\n value?: string;\n /** onChange function */\n onChange?: (val: string) => void;\n /** Input size */\n size?: \"regular\" | \"big\" | \"biggest\";\n}\n\nconst options = [\n { id: \"https://\", name: \"https://\" },\n { id: \"http://\", name: \"http://\" },\n];\n\nexport const InputUrl = forwardRef<HTMLInputElement, InputUrlProps>(\n (\n { size = \"regular\", disabled, value: defaultValue = \"\", onChange, ...rest },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const handleRef = useForkRef(ref, inputRef);\n const [prefix, setPrefix] = useState(options[0].id);\n\n const [value, setValue] = useState(\"\");\n\n const separatePrefixFromValue = (\n fullValue: string\n ): { newPrefix: string; newValue: string } => {\n let newPrefix = prefix;\n let newValue = fullValue;\n\n options.forEach((option) => {\n if (fullValue.startsWith(option.id)) {\n newPrefix = option.id;\n newValue = fullValue.replace(option.id, \"\");\n }\n });\n\n setValue(newValue);\n return { newPrefix, newValue };\n };\n\n useEffect(() => {\n const { newPrefix, newValue } = separatePrefixFromValue(defaultValue);\n setPrefix(newPrefix);\n setValue(newValue);\n // eslint-disable-next-line\n }, [defaultValue]);\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value;\n if (!inputValue.startsWith(prefix)) {\n const { newPrefix, newValue } = separatePrefixFromValue(inputValue);\n setPrefix(newPrefix);\n setValue(newValue);\n typeof onChange === \"function\" && onChange(newPrefix + newValue);\n } else {\n const newValue = inputValue.replace(prefix, \"\");\n setValue(newValue);\n typeof onChange === \"function\" && onChange(prefix + newValue);\n }\n },\n // eslint-disable-next-line\n [onChange, prefix]\n );\n\n const handleSelectChange = (val: string | number | (string | number)[]) => {\n setPrefix(val as string);\n typeof onChange === \"function\" && onChange((val as string) + value);\n };\n\n const handlePaste = (e: React.ClipboardEvent) => {\n e.preventDefault();\n const paste = e.clipboardData.getData(\"text\");\n const { newPrefix, newValue } = separatePrefixFromValue(paste);\n if (newPrefix !== prefix) {\n setPrefix(newPrefix);\n }\n setValue(newValue);\n\n if (typeof onChange === \"function\") {\n onChange(newPrefix + newValue);\n }\n };\n\n return (\n <Input\n {...rest}\n ref={handleRef}\n size={size}\n value={value}\n disabled={disabled}\n type=\"text\"\n onPaste={handlePaste}\n onChange={handleChange}\n data-testid=\"InputUrl\"\n startAdornment={\n <InputSelect\n size={size}\n onChange={handleSelectChange}\n options={options}\n selected={prefix}\n disabled={disabled}\n />\n }\n />\n );\n }\n);\n\nInputUrl.displayName = \"InputUrl\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"InputUrl.js","names":["React","forwardRef","useCallback","useEffect","useRef","useState","Input","InputSelect","useForkRef","options","id","name","InputUrl","_ref","ref","size","disabled","value","defaultValue","onChange","rest","inputRef","handleRef","prefix","setPrefix","setValue","separatePrefixFromValue","fullValue","newPrefix","newValue","forEach","option","startsWith","replace","handleChange","e","inputValue","target","handleSelectChange","val","handlePaste","preventDefault","paste","clipboardData","getData","createElement","_extends","type","onPaste","startAdornment","selected","displayName"],"sources":["../../../../src/components/Input/InputUrl.tsx"],"sourcesContent":["import React, {\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\n\nimport { Input, InputProps } from \"./Input\";\nimport { InputSelect } from \"./InputSelect\";\nimport { useForkRef } from \"../../utils\";\n\nexport interface InputUrlProps\n extends Omit<\n InputProps,\n \"type\" | \"startAdornment\" | \"onChange\" | \"value\" | \"size\"\n > {\n /** Input value */\n value?: string;\n /** onChange function */\n onChange?: (val: string) => void;\n /** Input size */\n size?: \"regular\" | \"big\" | \"biggest\";\n}\n\nconst options = [\n { id: \"https://\", name: \"https://\" },\n { id: \"http://\", name: \"http://\" },\n];\n\nexport const InputUrl = forwardRef<HTMLInputElement, InputUrlProps>(\n (\n { size = \"regular\", disabled, value: defaultValue = \"\", onChange, ...rest },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const handleRef = useForkRef(ref, inputRef);\n const [prefix, setPrefix] = useState(options[0].id);\n\n const [value, setValue] = useState(\"\");\n\n const separatePrefixFromValue = (\n fullValue: string\n ): { newPrefix: string; newValue: string } => {\n let newPrefix = prefix;\n let newValue = fullValue;\n\n options.forEach((option) => {\n if (fullValue.startsWith(option.id)) {\n newPrefix = option.id;\n newValue = fullValue.replace(option.id, \"\");\n }\n });\n\n setValue(newValue);\n return { newPrefix, newValue };\n };\n\n useEffect(() => {\n const { newPrefix, newValue } = separatePrefixFromValue(defaultValue);\n setPrefix(newPrefix);\n setValue(newValue);\n // eslint-disable-next-line\n }, [defaultValue]);\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value;\n if (!inputValue.startsWith(prefix)) {\n const { newPrefix, newValue } = separatePrefixFromValue(inputValue);\n setPrefix(newPrefix);\n setValue(newValue);\n typeof onChange === \"function\" && onChange(newPrefix + newValue);\n } else {\n const newValue = inputValue.replace(prefix, \"\");\n setValue(newValue);\n typeof onChange === \"function\" && onChange(prefix + newValue);\n }\n },\n // eslint-disable-next-line\n [onChange, prefix]\n );\n\n const handleSelectChange = (val: string | number | (string | number)[]) => {\n setPrefix(val as string);\n typeof onChange === \"function\" && onChange((val as string) + value);\n };\n\n const handlePaste = (e: React.ClipboardEvent) => {\n e.preventDefault();\n const paste = e.clipboardData.getData(\"text\");\n const { newPrefix, newValue } = separatePrefixFromValue(paste);\n if (newPrefix !== prefix) {\n setPrefix(newPrefix);\n }\n setValue(newValue);\n\n if (typeof onChange === \"function\") {\n onChange(newPrefix + newValue);\n }\n };\n\n return (\n <Input\n {...rest}\n ref={handleRef}\n size={size}\n value={value}\n disabled={disabled}\n type=\"text\"\n onPaste={handlePaste}\n onChange={handleChange}\n data-testid=\"InputUrl\"\n startAdornment={\n <InputSelect\n size={size}\n onChange={handleSelectChange}\n options={options}\n selected={prefix}\n disabled={disabled}\n />\n }\n />\n );\n }\n);\n\nInputUrl.displayName = \"InputUrl\";\n"],"mappings":"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"}
@@ -23,5 +23,11 @@ export declare const StyledInputSelectTrigger: import("styled-components").Style
23
23
  $size: string;
24
24
  $disabled: boolean;
25
25
  }, never>;
26
+ export declare const StyledFlagTriggerLabel: import("styled-components").StyledComponent<"span", any, {
27
+ $size: "small" | "regular" | "big";
28
+ }, never>;
29
+ export declare const StyledOptionFlag: import("styled-components").StyledComponent<"span", any, {}, never>;
30
+ export declare const StyledOptionName: import("styled-components").StyledComponent<"span", any, {}, never>;
31
+ export declare const StyledOptionWrapper: import("styled-components").StyledComponent<"span", any, {}, never>;
26
32
  export {};
27
33
  //# sourceMappingURL=Styles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Styles.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/Styles.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAI/C,UAAU,uBAAuB;IAC/B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED,eAAO,MAAM,kBAAkB,yFAuE9B,CAAC;AAIF,UAAU,gBAAiB,SAAQ,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC;IAC1D,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,WAAW,oFA6DvB,CAAC;AAIF,eAAO,MAAM,8BAA8B,oEAK1C,CAAC;AAIF,eAAO,MAAM,uBAAuB;eACvB,MAAM;YACT,MAAM;SAoBf,CAAC;AAIF,eAAO,MAAM,wBAAwB;WAC5B,MAAM;eACF,OAAO;SA+BnB,CAAC"}
1
+ {"version":3,"file":"Styles.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/Styles.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAI/C,UAAU,uBAAuB;IAC/B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED,eAAO,MAAM,kBAAkB,yFAuE9B,CAAC;AAIF,UAAU,gBAAiB,SAAQ,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC;IAC1D,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,WAAW,oFA6DvB,CAAC;AAIF,eAAO,MAAM,8BAA8B,oEAK1C,CAAC;AAIF,eAAO,MAAM,uBAAuB;eACvB,MAAM;YACT,MAAM;SAoBf,CAAC;AAIF,eAAO,MAAM,wBAAwB;WAC5B,MAAM;eACF,OAAO;SA+BnB,CAAC;AAIF,eAAO,MAAM,sBAAsB;WAC1B,OAAO,GAAG,SAAS,GAAG,KAAK;SAGnC,CAAC;AAIF,eAAO,MAAM,gBAAgB,qEAG5B,CAAC;AAIF,eAAO,MAAM,gBAAgB,qEAI5B,CAAC;AAIF,eAAO,MAAM,mBAAmB,qEAQ/B,CAAC"}
@@ -52,4 +52,29 @@ export const StyledInputSelectTrigger = styled.div.withConfig({
52
52
  return "unset";
53
53
  }, props => props.$size === "big" && css(["font-size:1rem;"]));
54
54
  StyledInputSelectTrigger.displayName = "StyledInputSelectTrigger";
55
+ export const StyledFlagTriggerLabel = styled.span.withConfig({
56
+ displayName: "Styles__StyledFlagTriggerLabel",
57
+ componentId: "sc-ce8kcp-5"
58
+ })(["font-size:", ";"], _ref => {
59
+ let {
60
+ $size
61
+ } = _ref;
62
+ return $size === "small" ? "20px" : "24px";
63
+ });
64
+ StyledFlagTriggerLabel.displayName = "StyledFlagTriggerLabel";
65
+ export const StyledOptionFlag = styled.span.withConfig({
66
+ displayName: "Styles__StyledOptionFlag",
67
+ componentId: "sc-ce8kcp-6"
68
+ })(["font-size:24px;margin-right:4px;"]);
69
+ StyledFlagTriggerLabel.displayName = "StyledOptionFlag";
70
+ export const StyledOptionName = styled.span.withConfig({
71
+ displayName: "Styles__StyledOptionName",
72
+ componentId: "sc-ce8kcp-7"
73
+ })(["overflow:hidden;text-overflow:ellipsis;white-space:nowrap;"]);
74
+ StyledOptionName.displayName = "StyledOptionName";
75
+ export const StyledOptionWrapper = styled.span.withConfig({
76
+ displayName: "Styles__StyledOptionWrapper",
77
+ componentId: "sc-ce8kcp-8"
78
+ })(["overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-right:8px;display:flex;justify-items:center;align-items:center;"]);
79
+ StyledOptionWrapper.displayName = "StyledOptionWrapper";
55
80
  //# sourceMappingURL=Styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Styles.js","names":["styled","css","BoxSizingStyle","FontStyle","StyledInputWrapper","div","withConfig","displayName","componentId","props","$mode","$size","$disabled","$invalid","StyledInput","input","disabled","$loading","align","StyledPasswordIndicatorWrapper","StyledPasswordIndicator","$strength","$index","StyledInputSelectTrigger"],"sources":["../../../../src/components/Input/Styles.ts"],"sourcesContent":["import styled, { css } from \"styled-components\";\n\nimport { InputProps } from \"./Input\";\nimport { InputMode, InputSize } from \"./types\";\nimport { BoxSizingStyle } from \"../BoxSizingStyle\";\nimport { FontStyle } from \"../FontStyle\";\n\ninterface StyledInputWrapperProps {\n $size?: InputSize;\n $invalid?: boolean;\n $disabled?: boolean;\n $mode?: InputMode;\n}\n\nexport const StyledInputWrapper = styled.div<StyledInputWrapperProps>`\n align-items: center;\n background-color: var(--input-background-color);\n border-color: var(--color-theme-500);\n border-radius: 8px;\n border-style: solid;\n border-width: 1px;\n cursor: text;\n display: flex;\n height: 32px;\n padding-block: 4px;\n padding-inline: 4px;\n transition: all 0.3s ease;\n width: 360px;\n\n ${FontStyle}\n ${BoxSizingStyle}\n\n\n ${(props) =>\n props.$mode === \"flat\" &&\n css`\n background-color: transparent;\n border: none;\n border-radius: none;\n `}\n\n\n ${(props) =>\n props.$size === \"small\" &&\n css`\n border-radius: 6px;\n height: 24px;\n `}\n\n ${(props) =>\n props.$size === \"big\" &&\n css`\n height: 40px;\n `}\n\n ${(props) =>\n props.$size === \"biggest\" &&\n css`\n height: 48px;\n `}\n\n ${(props) =>\n props.$disabled &&\n css`\n cursor: default;\n opacity: 50%;\n `}\n\n ${(props) =>\n !props.$disabled &&\n !props.$invalid &&\n css`\n &:focus-within,\n &:hover {\n border-color: var(--color-primary);\n }\n `}\n\n ${(props) =>\n !props.$disabled &&\n props.$invalid &&\n props.$mode === \"outlined\" &&\n css`\n border-color: var(--red-alert);\n `}\n`;\n\nStyledInputWrapper.displayName = \"StyledInputWrapper\";\n\ninterface StyledInputProps extends Pick<InputProps, \"align\"> {\n $size?: InputSize;\n $loading?: boolean;\n $mode?: InputMode;\n $invalid?: boolean;\n}\n\nexport const StyledInput = styled.input<StyledInputProps>`\n background-color: var(--input-background-color);\n border: none;\n color: var(--color-theme-900);\n /* @TODO: Prebaciti velicine fontova, weight, razmake, itd... u naše varijable. */\n font-size: 0.875rem;\n font-weight: 400;\n letter-spacing: 0.02em;\n margin-block: 0;\n margin-inline: 4px;\n outline: none;\n padding: 0;\n width: 100%;\n\n ${(props) =>\n props.$mode === \"flat\" &&\n css`\n background-color: transparent;\n `}\n\n &::placeholder {\n color: var(--color-theme-transparent-500);\n }\n\n ${(props) =>\n props.$size === \"big\" &&\n css`\n font-size: 1rem;\n `}\n\n ${(props) =>\n props.$size === \"biggest\" &&\n css`\n font-size: 1.25rem;\n font-weight: 700;\n `}\n\n ${(props) =>\n props.disabled &&\n css`\n cursor: default;\n `}\n\n ${(props) =>\n props.$loading &&\n css`\n cursor: progress;\n `}\n\n ${(props) =>\n props.align &&\n css`\n text-align: ${props.align};\n `}\n\n ${(props) =>\n props.$mode === \"flat\" &&\n props.$invalid &&\n css`\n color: var(--red-alert);\n `}\n`;\n\nStyledInput.displayName = \"StyledInput\";\n\nexport const StyledPasswordIndicatorWrapper = styled.div`\n display: flex;\n gap: 2px;\n margin-top: 6px;\n margin-bottom: 4px;\n`;\n\nStyledPasswordIndicatorWrapper.displayName = \"StyledPasswordIndicatorWrapper\";\n\nexport const StyledPasswordIndicator = styled.div<{\n $strength: number;\n $index: number;\n}>`\n width: 100%;\n height: 4px;\n border-radius: 6px;\n background-color: ${(props) => {\n const { $strength, $index } = props;\n\n if ($strength === 0) {\n return \"var(--color-theme-300)\";\n } else if ($strength === 1) {\n return $index === 0 ? \"var(--red-alert)\" : \"var(--color-theme-300)\";\n } else if ($strength === 2) {\n return $index < 2 ? \"var(--color-orange)\" : \"var(--color-theme-300)\";\n } else if ($strength === 3) {\n return $index < 3 ? \"var(--color-blue-sky)\" : \"var(--color-theme-300)\";\n } else {\n return \"var(--color-sucess-green)\";\n }\n }};\n`;\n\nStyledPasswordIndicator.displayName = \"StyledPasswordIndicator\";\n\nexport const StyledInputSelectTrigger = styled.div<{\n $size: string;\n $disabled: boolean;\n}>`\n display: flex;\n gap: 6px;\n align-items: center;\n margin-right: 2px;\n margin-left: 8px;\n color: var(--color-theme-700);\n font-weight: 400;\n letter-spacing: 0.02em;\n font-size: 0.875rem;\n flex-shrink: 0;\n cursor: ${(props) => {\n if (props.$disabled) {\n return \"unset\";\n }\n return \"pointer\";\n }};\n\n pointer-events: ${(props) => {\n if (props.$disabled) {\n return \"none\";\n }\n return \"unset\";\n }};\n\n ${(props) =>\n props.$size === \"big\" &&\n css`\n font-size: 1rem;\n `}\n`;\n\nStyledInputSelectTrigger.displayName = \"StyledInputSelectTrigger\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"Styles.js","names":["styled","css","BoxSizingStyle","FontStyle","StyledInputWrapper","div","withConfig","displayName","componentId","props","$mode","$size","$disabled","$invalid","StyledInput","input","disabled","$loading","align","StyledPasswordIndicatorWrapper","StyledPasswordIndicator","$strength","$index","StyledInputSelectTrigger","StyledFlagTriggerLabel","span","_ref","StyledOptionFlag","StyledOptionName","StyledOptionWrapper"],"sources":["../../../../src/components/Input/Styles.ts"],"sourcesContent":["import styled, { css } from \"styled-components\";\n\nimport { InputProps } from \"./Input\";\nimport { InputMode, InputSize } from \"./types\";\nimport { BoxSizingStyle } from \"../BoxSizingStyle\";\nimport { FontStyle } from \"../FontStyle\";\n\ninterface StyledInputWrapperProps {\n $size?: InputSize;\n $invalid?: boolean;\n $disabled?: boolean;\n $mode?: InputMode;\n}\n\nexport const StyledInputWrapper = styled.div<StyledInputWrapperProps>`\n align-items: center;\n background-color: var(--input-background-color);\n border-color: var(--color-theme-500);\n border-radius: 8px;\n border-style: solid;\n border-width: 1px;\n cursor: text;\n display: flex;\n height: 32px;\n padding-block: 4px;\n padding-inline: 4px;\n transition: all 0.3s ease;\n width: 360px;\n\n ${FontStyle}\n ${BoxSizingStyle}\n\n\n ${(props) =>\n props.$mode === \"flat\" &&\n css`\n background-color: transparent;\n border: none;\n border-radius: none;\n `}\n\n\n ${(props) =>\n props.$size === \"small\" &&\n css`\n border-radius: 6px;\n height: 24px;\n `}\n\n ${(props) =>\n props.$size === \"big\" &&\n css`\n height: 40px;\n `}\n\n ${(props) =>\n props.$size === \"biggest\" &&\n css`\n height: 48px;\n `}\n\n ${(props) =>\n props.$disabled &&\n css`\n cursor: default;\n opacity: 50%;\n `}\n\n ${(props) =>\n !props.$disabled &&\n !props.$invalid &&\n css`\n &:focus-within,\n &:hover {\n border-color: var(--color-primary);\n }\n `}\n\n ${(props) =>\n !props.$disabled &&\n props.$invalid &&\n props.$mode === \"outlined\" &&\n css`\n border-color: var(--red-alert);\n `}\n`;\n\nStyledInputWrapper.displayName = \"StyledInputWrapper\";\n\ninterface StyledInputProps extends Pick<InputProps, \"align\"> {\n $size?: InputSize;\n $loading?: boolean;\n $mode?: InputMode;\n $invalid?: boolean;\n}\n\nexport const StyledInput = styled.input<StyledInputProps>`\n background-color: var(--input-background-color);\n border: none;\n color: var(--color-theme-900);\n /* @TODO: Prebaciti velicine fontova, weight, razmake, itd... u naše varijable. */\n font-size: 0.875rem;\n font-weight: 400;\n letter-spacing: 0.02em;\n margin-block: 0;\n margin-inline: 4px;\n outline: none;\n padding: 0;\n width: 100%;\n\n ${(props) =>\n props.$mode === \"flat\" &&\n css`\n background-color: transparent;\n `}\n\n &::placeholder {\n color: var(--color-theme-transparent-500);\n }\n\n ${(props) =>\n props.$size === \"big\" &&\n css`\n font-size: 1rem;\n `}\n\n ${(props) =>\n props.$size === \"biggest\" &&\n css`\n font-size: 1.25rem;\n font-weight: 700;\n `}\n\n ${(props) =>\n props.disabled &&\n css`\n cursor: default;\n `}\n\n ${(props) =>\n props.$loading &&\n css`\n cursor: progress;\n `}\n\n ${(props) =>\n props.align &&\n css`\n text-align: ${props.align};\n `}\n\n ${(props) =>\n props.$mode === \"flat\" &&\n props.$invalid &&\n css`\n color: var(--red-alert);\n `}\n`;\n\nStyledInput.displayName = \"StyledInput\";\n\nexport const StyledPasswordIndicatorWrapper = styled.div`\n display: flex;\n gap: 2px;\n margin-top: 6px;\n margin-bottom: 4px;\n`;\n\nStyledPasswordIndicatorWrapper.displayName = \"StyledPasswordIndicatorWrapper\";\n\nexport const StyledPasswordIndicator = styled.div<{\n $strength: number;\n $index: number;\n}>`\n width: 100%;\n height: 4px;\n border-radius: 6px;\n background-color: ${(props) => {\n const { $strength, $index } = props;\n\n if ($strength === 0) {\n return \"var(--color-theme-300)\";\n } else if ($strength === 1) {\n return $index === 0 ? \"var(--red-alert)\" : \"var(--color-theme-300)\";\n } else if ($strength === 2) {\n return $index < 2 ? \"var(--color-orange)\" : \"var(--color-theme-300)\";\n } else if ($strength === 3) {\n return $index < 3 ? \"var(--color-blue-sky)\" : \"var(--color-theme-300)\";\n } else {\n return \"var(--color-sucess-green)\";\n }\n }};\n`;\n\nStyledPasswordIndicator.displayName = \"StyledPasswordIndicator\";\n\nexport const StyledInputSelectTrigger = styled.div<{\n $size: string;\n $disabled: boolean;\n}>`\n display: flex;\n gap: 6px;\n align-items: center;\n margin-right: 2px;\n margin-left: 8px;\n color: var(--color-theme-700);\n font-weight: 400;\n letter-spacing: 0.02em;\n font-size: 0.875rem;\n flex-shrink: 0;\n cursor: ${(props) => {\n if (props.$disabled) {\n return \"unset\";\n }\n return \"pointer\";\n }};\n\n pointer-events: ${(props) => {\n if (props.$disabled) {\n return \"none\";\n }\n return \"unset\";\n }};\n\n ${(props) =>\n props.$size === \"big\" &&\n css`\n font-size: 1rem;\n `}\n`;\n\nStyledInputSelectTrigger.displayName = \"StyledInputSelectTrigger\";\n\nexport const StyledFlagTriggerLabel = styled.span<{\n $size: \"small\" | \"regular\" | \"big\";\n}>`\n font-size: ${({ $size }) => ($size === \"small\" ? \"20px\" : \"24px\")};\n`;\n\nStyledFlagTriggerLabel.displayName = \"StyledFlagTriggerLabel\";\n\nexport const StyledOptionFlag = styled.span`\n font-size: 24px;\n margin-right: 4px;\n`;\n\nStyledFlagTriggerLabel.displayName = \"StyledOptionFlag\";\n\nexport const StyledOptionName = styled.span`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nStyledOptionName.displayName = \"StyledOptionName\";\n\nexport const StyledOptionWrapper = styled.span`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n margin-right: 8px;\n display: flex;\n justify-items: center;\n align-items: center;\n`;\n\nStyledOptionWrapper.displayName = \"StyledOptionWrapper\";\n"],"mappings":"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"}
@@ -5,4 +5,5 @@ export * from "./InputCurrency";
5
5
  export * from "./InputNumber";
6
6
  export * from "./InputPassword";
7
7
  export * from "./InputUrl";
8
+ export * from "./InputPhone";
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC"}
@@ -5,4 +5,5 @@ export * from "./InputCurrency";
5
5
  export * from "./InputNumber";
6
6
  export * from "./InputPassword";
7
7
  export * from "./InputUrl";
8
+ export * from "./InputPhone";
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/Input/index.ts"],"sourcesContent":["export * from \"./Input\";\nexport * from \"./InputAdornment\";\nexport * from \"./InputHours\";\nexport * from \"./InputCurrency\";\nexport * from \"./InputNumber\";\nexport * from \"./InputPassword\";\nexport * from \"./InputUrl\";\n"],"mappings":"AAAA,cAAc,SAAS;AACvB,cAAc,kBAAkB;AAChC,cAAc,cAAc;AAC5B,cAAc,iBAAiB;AAC/B,cAAc,eAAe;AAC7B,cAAc,iBAAiB;AAC/B,cAAc,YAAY"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/Input/index.ts"],"sourcesContent":["export * from \"./Input\";\nexport * from \"./InputAdornment\";\nexport * from \"./InputHours\";\nexport * from \"./InputCurrency\";\nexport * from \"./InputNumber\";\nexport * from \"./InputPassword\";\nexport * from \"./InputUrl\";\nexport * from \"./InputPhone\";\n"],"mappings":"AAAA,cAAc,SAAS;AACvB,cAAc,kBAAkB;AAChC,cAAc,cAAc;AAC5B,cAAc,iBAAiB;AAC/B,cAAc,eAAe;AAC7B,cAAc,iBAAiB;AAC/B,cAAc,YAAY;AAC1B,cAAc,cAAc"}
@@ -1,7 +1,7 @@
1
1
  import { FC, ReactElement, Ref, ReactNode } from "react";
2
2
  import { Placement } from "@popperjs/core";
3
3
  import { IAutocompleteProps } from "../Autocomplete/Autocomplete";
4
- interface ElementWithRef<T> extends ReactElement {
4
+ export interface ElementWithRef<T> extends ReactElement {
5
5
  ref?: Ref<T>;
6
6
  }
7
7
  export interface ISelectProps extends Omit<IAutocompleteProps, "handleChange" | "inputEl" | "handleEmptyAction" | "clearInputOnSelect" | "mixedOptions"> {
@@ -37,5 +37,4 @@ export interface ISelectProps extends Omit<IAutocompleteProps, "handleChange" |
37
37
  mixed?: (string | number)[];
38
38
  }
39
39
  export declare const Select: FC<ISelectProps>;
40
- export {};
41
40
  //# sourceMappingURL=Select.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../../src/components/Select/Select.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,EAAE,EAGF,YAAY,EAIZ,GAAG,EACH,SAAS,EACV,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAc3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAKlE,UAAU,cAAc,CAAC,CAAC,CAAE,SAAQ,YAAY;IAC9C,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;CACd;AAED,MAAM,WAAW,YACf,SAAQ,IAAI,CACV,kBAAkB,EAChB,cAAc,GACd,SAAS,GACT,mBAAmB,GACnB,oBAAoB,GACpB,cAAc,CACjB;IACD,sBAAsB;IACtB,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IACnC,gCAAgC;IAChC,MAAM,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IACjC,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAC9D,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAC9C,gCAAgC;IAChC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,2BAA2B;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,4BAA4B;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qDAAqD;IACrD,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,qDAAqD;IACrD,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,oCAAoC;IACpC,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,qCAAqC;IACrC,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;CAC7B;AAED,eAAO,MAAM,MAAM,EAAE,EAAE,CAAC,YAAY,CAkRnC,CAAC"}
1
+ {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../../src/components/Select/Select.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,EAAE,EAGF,YAAY,EAIZ,GAAG,EACH,SAAS,EACV,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAc3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAKlE,MAAM,WAAW,cAAc,CAAC,CAAC,CAAE,SAAQ,YAAY;IACrD,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;CACd;AAED,MAAM,WAAW,YACf,SAAQ,IAAI,CACV,kBAAkB,EAChB,cAAc,GACd,SAAS,GACT,mBAAmB,GACnB,oBAAoB,GACpB,cAAc,CACjB;IACD,sBAAsB;IACtB,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IACnC,gCAAgC;IAChC,MAAM,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IACjC,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAC9D,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAC9C,gCAAgC;IAChC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,2BAA2B;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,4BAA4B;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qDAAqD;IACrD,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,qDAAqD;IACrD,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,oCAAoC;IACpC,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,qCAAqC;IACrC,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;CAC7B;AAED,eAAO,MAAM,MAAM,EAAE,EAAE,CAAC,YAAY,CAkRnC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","names":["React","useCallback","useState","useMemo","useEffect","useRef","classNames","OptionContent","StyledSelectForm","StyledSelectInput","StyledCheckbox","StyledRadioButton","StyledStartAdornment","StyledEndAdornment","useForkRef","Autocomplete","isOptionGroup","Menu","Select","_ref","type","mode","target","options","selected","mixed","position","onChange","placeholder","emptyAction","disableSearch","forceCloseMenu","selectClassName","keepSameOptionsOrder","onSelectOpen","onSelectClose","renderOption","handleDefaultOptionChange","preselectDefaultValue","startAdornment","endAdornment","focusInput","prop","console","warn","childNode","elementRef","handleRef","Tag","formRef","open","setOpen","selectedOptions","Array","selectOptions","allOptionValues","reduce","acc","option","id","allGroupOptions","map","mixedOptions","length","removeFromMixedOptions","idsToRemove","current","filter","mixedOption","includes","isAllOptionsChecked","every","someOptionsChecked","some","_childNode$current","focus","handleChange","selectedValue","undefined","onClose","onOpen","props","menuClassName","onPopperOpen","_elementRef$current","className","handleEmptyAction","value","_formRef$current","reset","handleDefaultOptionChangeCallback","handleRenderOption","createElement","Fragment","imageUrl","image","color","textColor","name","additionalInfo","_extends","checked","ref","clearInputOnSelect","inputEl","displayName"],"sources":["../../../../src/components/Select/Select.tsx"],"sourcesContent":["import React, {\n FC,\n useCallback,\n useState,\n ReactElement,\n useMemo,\n useEffect,\n useRef,\n Ref,\n ReactNode,\n} from \"react\";\n\nimport { Placement } from \"@popperjs/core\";\nimport classNames from \"classnames\";\n\nimport { OptionContent } from \"./OptionContent/OptionContent\";\nimport {\n StyledSelectForm,\n StyledSelectInput,\n StyledCheckbox,\n StyledRadioButton,\n StyledStartAdornment,\n StyledEndAdornment,\n} from \"./Styles\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport { Autocomplete, isOptionGroup } from \"../Autocomplete\";\nimport { IAutocompleteProps } from \"../Autocomplete/Autocomplete\";\nimport { Menu } from \"../Menu/Menu\";\nimport { IOptionItemProps } from \"../Select/Option\";\nimport { IOptionGroupProps } from \"../Select/OptionGroup\";\n\ninterface ElementWithRef<T> extends ReactElement {\n ref?: Ref<T>;\n}\n\nexport interface ISelectProps\n extends Omit<\n IAutocompleteProps,\n | \"handleChange\"\n | \"inputEl\"\n | \"handleEmptyAction\"\n | \"clearInputOnSelect\"\n | \"mixedOptions\"\n > {\n /** Menu width mode */\n mode?: \"normal\" | \"wider\" | \"tiny\";\n /** Set select target element */\n target?: ElementWithRef<Element>;\n /** Set Select position */\n position?: Placement;\n /** onChange callback */\n onChange?: (e: (string | number)[] | string | number) => void;\n /** Placeholder for Select input */\n placeholder?: string;\n /** Function that triggers when empty is clicked */\n emptyAction?: (e: string | undefined) => void;\n /** Removes input from Select */\n disableSearch?: boolean;\n /** Close menu on select */\n forceCloseMenu?: boolean;\n /** Set select classNames */\n selectClassName?: string;\n /** Callback called when the Select menu is opened */\n onSelectOpen?: () => void;\n /** Callback called when the Select menu is closed */\n onSelectClose?: () => void;\n /** Node element on the left side */\n startAdornment?: ReactNode;\n /** Node element on the right side */\n endAdornment?: ReactNode;\n /** Focus search input on inline select */\n focusInput?: boolean;\n /** Mixed options values */\n mixed?: (string | number)[];\n}\n\nexport const Select: FC<ISelectProps> = ({\n type = \"single\",\n mode,\n target,\n options,\n selected = [],\n mixed = [],\n position = \"bottom-start\",\n onChange = () => null,\n placeholder,\n emptyAction = (): null => null,\n disableSearch = false,\n forceCloseMenu,\n selectClassName,\n keepSameOptionsOrder = false,\n onSelectOpen,\n onSelectClose,\n renderOption,\n handleDefaultOptionChange,\n preselectDefaultValue = type === \"single\",\n startAdornment,\n endAdornment,\n focusInput = false,\n ...prop\n}) => {\n if (disableSearch && (startAdornment || endAdornment)) {\n console.warn(\"Adornments are not visible when search bar is hidden\");\n }\n const childNode = useRef<HTMLInputElement | null>();\n const elementRef = useRef<HTMLInputElement | null>(null);\n\n const handleRef = useForkRef(childNode, elementRef);\n\n const Tag = !target ? \"div\" : Menu;\n const formRef = useRef<HTMLFormElement | null>(null);\n\n const [open, setOpen] = useState(false);\n\n const selectedOptions = useMemo(\n () => (selected instanceof Array ? selected : [selected]),\n [selected]\n );\n\n const selectOptions = useMemo(() => {\n if (!options) {\n return [];\n }\n return options;\n }, [options]);\n\n const allOptionValues = useMemo(() => {\n return selectOptions.reduce(\n (\n acc: (string | number)[],\n option: IOptionGroupProps | IOptionItemProps\n ) => {\n if (!isOptionGroup(option)) {\n return [...acc, option.id];\n }\n const allGroupOptions = option.options.map((option) => option.id);\n return [...acc, ...allGroupOptions];\n },\n []\n );\n }, [selectOptions]);\n\n const mixedOptions = useRef(type === \"multiple\" && mixed.length ? mixed : []);\n\n const removeFromMixedOptions = useCallback(\n (idsToRemove: (string | number)[]) => {\n mixedOptions.current = mixedOptions.current.filter(\n (mixedOption) => !idsToRemove.includes(mixedOption)\n );\n },\n []\n );\n\n const isAllOptionsChecked = useMemo(\n () => allOptionValues.every((option) => selectedOptions.includes(option)),\n [allOptionValues, selectedOptions]\n );\n\n const someOptionsChecked = useMemo(\n () => allOptionValues.some((option) => selectedOptions.includes(option)),\n [allOptionValues, selectedOptions]\n );\n\n useEffect(() => {\n if ((open && target) || (!target && focusInput)) {\n childNode?.current?.focus();\n }\n }, [focusInput, open, target]);\n\n const handleChange = useCallback(\n (selectedValue) => {\n if (forceCloseMenu) {\n if (typeof onSelectClose === \"function\") onSelectClose();\n setOpen(false);\n }\n if (\n selectedValue !== undefined &&\n selectedValue !== selected &&\n !(selectedValue instanceof Array && selectedValue.includes(undefined))\n ) {\n onChange(selectedValue);\n type === \"multiple\" &&\n mixedOptions.current.length &&\n removeFromMixedOptions(selectedValue);\n }\n },\n [\n forceCloseMenu,\n selected,\n onSelectClose,\n onChange,\n type,\n removeFromMixedOptions,\n ]\n );\n\n const onClose = useCallback(() => {\n setOpen(false);\n if (onSelectClose) {\n onSelectClose();\n }\n }, [onSelectClose]);\n\n const onOpen = useCallback(() => {\n setOpen(true);\n if (onSelectOpen) {\n onSelectOpen();\n }\n }, [onSelectOpen]);\n\n const props = useMemo(() => {\n if (target) {\n return {\n menuClassName: classNames(\"c-select\", selectClassName),\n onClose,\n onOpen,\n target,\n mode,\n open,\n position,\n onPopperOpen: () => elementRef?.current?.focus(),\n };\n }\n return { className: classNames(\"c-select\", selectClassName) };\n }, [target, selectClassName, onClose, onOpen, mode, open, position]);\n\n const handleEmptyAction = useCallback(\n (value) => {\n emptyAction(value);\n if (forceCloseMenu) {\n setOpen(false);\n }\n formRef.current?.reset();\n },\n [emptyAction, forceCloseMenu]\n );\n\n const handleDefaultOptionChangeCallback = useCallback(() => {\n if (type === \"multiple\") {\n if (selectedOptions.length === allOptionValues.length) {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange([]);\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(allOptionValues);\n }\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(\"\");\n }\n }\n if (forceCloseMenu) {\n setOpen(false);\n }\n }, [\n onChange,\n type,\n forceCloseMenu,\n selectedOptions.length,\n allOptionValues,\n handleDefaultOptionChange,\n ]);\n\n const handleRenderOption = useCallback(\n (option, props) => {\n if (typeof renderOption === \"function\") {\n return renderOption(option, props);\n }\n return (\n <>\n <OptionContent\n imageUrl={option.image}\n color={option.color}\n textColor={option.textColor}\n name={option.name}\n additionalInfo={option.additionalInfo}\n />\n {option.id === null ? (\n type === \"multiple\" ? (\n <StyledCheckbox\n checked={isAllOptionsChecked}\n mixed={someOptionsChecked && !isAllOptionsChecked}\n {...props}\n />\n ) : (\n <StyledRadioButton\n checked={selectedOptions.length < 1 || !selectedOptions[0]}\n {...props}\n />\n )\n ) : type === \"multiple\" ? (\n <StyledCheckbox\n mixed={mixedOptions.current.includes(option.id)}\n {...props}\n />\n ) : (\n <StyledRadioButton {...props} />\n )}\n </>\n );\n },\n [\n isAllOptionsChecked,\n renderOption,\n type,\n someOptionsChecked,\n selectedOptions,\n ]\n );\n\n return (\n <Tag {...props}>\n <div>\n {!disableSearch ? (\n <StyledSelectForm ref={formRef}>\n {startAdornment ? (\n <StyledStartAdornment>{startAdornment}</StyledStartAdornment>\n ) : null}\n <StyledSelectInput ref={handleRef} placeholder={placeholder} />\n {endAdornment ? (\n <StyledEndAdornment>{endAdornment}</StyledEndAdornment>\n ) : null}\n </StyledSelectForm>\n ) : null}\n <Autocomplete\n {...prop}\n clearInputOnSelect\n inputEl={childNode}\n handleEmptyAction={handleEmptyAction}\n selected={selected}\n handleChange={handleChange}\n renderOption={handleRenderOption}\n options={options}\n mixedOptions={mixedOptions.current}\n handleDefaultOptionChange={handleDefaultOptionChangeCallback}\n type={type}\n preselectDefaultValue={preselectDefaultValue}\n keepSameOptionsOrder={keepSameOptionsOrder}\n />\n </div>\n </Tag>\n );\n};\n\nSelect.displayName = \"Select\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"Select.js","names":["React","useCallback","useState","useMemo","useEffect","useRef","classNames","OptionContent","StyledSelectForm","StyledSelectInput","StyledCheckbox","StyledRadioButton","StyledStartAdornment","StyledEndAdornment","useForkRef","Autocomplete","isOptionGroup","Menu","Select","_ref","type","mode","target","options","selected","mixed","position","onChange","placeholder","emptyAction","disableSearch","forceCloseMenu","selectClassName","keepSameOptionsOrder","onSelectOpen","onSelectClose","renderOption","handleDefaultOptionChange","preselectDefaultValue","startAdornment","endAdornment","focusInput","prop","console","warn","childNode","elementRef","handleRef","Tag","formRef","open","setOpen","selectedOptions","Array","selectOptions","allOptionValues","reduce","acc","option","id","allGroupOptions","map","mixedOptions","length","removeFromMixedOptions","idsToRemove","current","filter","mixedOption","includes","isAllOptionsChecked","every","someOptionsChecked","some","_childNode$current","focus","handleChange","selectedValue","undefined","onClose","onOpen","props","menuClassName","onPopperOpen","_elementRef$current","className","handleEmptyAction","value","_formRef$current","reset","handleDefaultOptionChangeCallback","handleRenderOption","createElement","Fragment","imageUrl","image","color","textColor","name","additionalInfo","_extends","checked","ref","clearInputOnSelect","inputEl","displayName"],"sources":["../../../../src/components/Select/Select.tsx"],"sourcesContent":["import React, {\n FC,\n useCallback,\n useState,\n ReactElement,\n useMemo,\n useEffect,\n useRef,\n Ref,\n ReactNode,\n} from \"react\";\n\nimport { Placement } from \"@popperjs/core\";\nimport classNames from \"classnames\";\n\nimport { OptionContent } from \"./OptionContent/OptionContent\";\nimport {\n StyledSelectForm,\n StyledSelectInput,\n StyledCheckbox,\n StyledRadioButton,\n StyledStartAdornment,\n StyledEndAdornment,\n} from \"./Styles\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport { Autocomplete, isOptionGroup } from \"../Autocomplete\";\nimport { IAutocompleteProps } from \"../Autocomplete/Autocomplete\";\nimport { Menu } from \"../Menu/Menu\";\nimport { IOptionItemProps } from \"../Select/Option\";\nimport { IOptionGroupProps } from \"../Select/OptionGroup\";\n\nexport interface ElementWithRef<T> extends ReactElement {\n ref?: Ref<T>;\n}\n\nexport interface ISelectProps\n extends Omit<\n IAutocompleteProps,\n | \"handleChange\"\n | \"inputEl\"\n | \"handleEmptyAction\"\n | \"clearInputOnSelect\"\n | \"mixedOptions\"\n > {\n /** Menu width mode */\n mode?: \"normal\" | \"wider\" | \"tiny\";\n /** Set select target element */\n target?: ElementWithRef<Element>;\n /** Set Select position */\n position?: Placement;\n /** onChange callback */\n onChange?: (e: (string | number)[] | string | number) => void;\n /** Placeholder for Select input */\n placeholder?: string;\n /** Function that triggers when empty is clicked */\n emptyAction?: (e: string | undefined) => void;\n /** Removes input from Select */\n disableSearch?: boolean;\n /** Close menu on select */\n forceCloseMenu?: boolean;\n /** Set select classNames */\n selectClassName?: string;\n /** Callback called when the Select menu is opened */\n onSelectOpen?: () => void;\n /** Callback called when the Select menu is closed */\n onSelectClose?: () => void;\n /** Node element on the left side */\n startAdornment?: ReactNode;\n /** Node element on the right side */\n endAdornment?: ReactNode;\n /** Focus search input on inline select */\n focusInput?: boolean;\n /** Mixed options values */\n mixed?: (string | number)[];\n}\n\nexport const Select: FC<ISelectProps> = ({\n type = \"single\",\n mode,\n target,\n options,\n selected = [],\n mixed = [],\n position = \"bottom-start\",\n onChange = () => null,\n placeholder,\n emptyAction = (): null => null,\n disableSearch = false,\n forceCloseMenu,\n selectClassName,\n keepSameOptionsOrder = false,\n onSelectOpen,\n onSelectClose,\n renderOption,\n handleDefaultOptionChange,\n preselectDefaultValue = type === \"single\",\n startAdornment,\n endAdornment,\n focusInput = false,\n ...prop\n}) => {\n if (disableSearch && (startAdornment || endAdornment)) {\n console.warn(\"Adornments are not visible when search bar is hidden\");\n }\n const childNode = useRef<HTMLInputElement | null>();\n const elementRef = useRef<HTMLInputElement | null>(null);\n\n const handleRef = useForkRef(childNode, elementRef);\n\n const Tag = !target ? \"div\" : Menu;\n const formRef = useRef<HTMLFormElement | null>(null);\n\n const [open, setOpen] = useState(false);\n\n const selectedOptions = useMemo(\n () => (selected instanceof Array ? selected : [selected]),\n [selected]\n );\n\n const selectOptions = useMemo(() => {\n if (!options) {\n return [];\n }\n return options;\n }, [options]);\n\n const allOptionValues = useMemo(() => {\n return selectOptions.reduce(\n (\n acc: (string | number)[],\n option: IOptionGroupProps | IOptionItemProps\n ) => {\n if (!isOptionGroup(option)) {\n return [...acc, option.id];\n }\n const allGroupOptions = option.options.map((option) => option.id);\n return [...acc, ...allGroupOptions];\n },\n []\n );\n }, [selectOptions]);\n\n const mixedOptions = useRef(type === \"multiple\" && mixed.length ? mixed : []);\n\n const removeFromMixedOptions = useCallback(\n (idsToRemove: (string | number)[]) => {\n mixedOptions.current = mixedOptions.current.filter(\n (mixedOption) => !idsToRemove.includes(mixedOption)\n );\n },\n []\n );\n\n const isAllOptionsChecked = useMemo(\n () => allOptionValues.every((option) => selectedOptions.includes(option)),\n [allOptionValues, selectedOptions]\n );\n\n const someOptionsChecked = useMemo(\n () => allOptionValues.some((option) => selectedOptions.includes(option)),\n [allOptionValues, selectedOptions]\n );\n\n useEffect(() => {\n if ((open && target) || (!target && focusInput)) {\n childNode?.current?.focus();\n }\n }, [focusInput, open, target]);\n\n const handleChange = useCallback(\n (selectedValue) => {\n if (forceCloseMenu) {\n if (typeof onSelectClose === \"function\") onSelectClose();\n setOpen(false);\n }\n if (\n selectedValue !== undefined &&\n selectedValue !== selected &&\n !(selectedValue instanceof Array && selectedValue.includes(undefined))\n ) {\n onChange(selectedValue);\n type === \"multiple\" &&\n mixedOptions.current.length &&\n removeFromMixedOptions(selectedValue);\n }\n },\n [\n forceCloseMenu,\n selected,\n onSelectClose,\n onChange,\n type,\n removeFromMixedOptions,\n ]\n );\n\n const onClose = useCallback(() => {\n setOpen(false);\n if (onSelectClose) {\n onSelectClose();\n }\n }, [onSelectClose]);\n\n const onOpen = useCallback(() => {\n setOpen(true);\n if (onSelectOpen) {\n onSelectOpen();\n }\n }, [onSelectOpen]);\n\n const props = useMemo(() => {\n if (target) {\n return {\n menuClassName: classNames(\"c-select\", selectClassName),\n onClose,\n onOpen,\n target,\n mode,\n open,\n position,\n onPopperOpen: () => elementRef?.current?.focus(),\n };\n }\n return { className: classNames(\"c-select\", selectClassName) };\n }, [target, selectClassName, onClose, onOpen, mode, open, position]);\n\n const handleEmptyAction = useCallback(\n (value) => {\n emptyAction(value);\n if (forceCloseMenu) {\n setOpen(false);\n }\n formRef.current?.reset();\n },\n [emptyAction, forceCloseMenu]\n );\n\n const handleDefaultOptionChangeCallback = useCallback(() => {\n if (type === \"multiple\") {\n if (selectedOptions.length === allOptionValues.length) {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange([]);\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(allOptionValues);\n }\n }\n } else {\n if (typeof handleDefaultOptionChange === \"function\") {\n handleDefaultOptionChange();\n } else {\n onChange(\"\");\n }\n }\n if (forceCloseMenu) {\n setOpen(false);\n }\n }, [\n onChange,\n type,\n forceCloseMenu,\n selectedOptions.length,\n allOptionValues,\n handleDefaultOptionChange,\n ]);\n\n const handleRenderOption = useCallback(\n (option, props) => {\n if (typeof renderOption === \"function\") {\n return renderOption(option, props);\n }\n return (\n <>\n <OptionContent\n imageUrl={option.image}\n color={option.color}\n textColor={option.textColor}\n name={option.name}\n additionalInfo={option.additionalInfo}\n />\n {option.id === null ? (\n type === \"multiple\" ? (\n <StyledCheckbox\n checked={isAllOptionsChecked}\n mixed={someOptionsChecked && !isAllOptionsChecked}\n {...props}\n />\n ) : (\n <StyledRadioButton\n checked={selectedOptions.length < 1 || !selectedOptions[0]}\n {...props}\n />\n )\n ) : type === \"multiple\" ? (\n <StyledCheckbox\n mixed={mixedOptions.current.includes(option.id)}\n {...props}\n />\n ) : (\n <StyledRadioButton {...props} />\n )}\n </>\n );\n },\n [\n isAllOptionsChecked,\n renderOption,\n type,\n someOptionsChecked,\n selectedOptions,\n ]\n );\n\n return (\n <Tag {...props}>\n <div>\n {!disableSearch ? (\n <StyledSelectForm ref={formRef}>\n {startAdornment ? (\n <StyledStartAdornment>{startAdornment}</StyledStartAdornment>\n ) : null}\n <StyledSelectInput ref={handleRef} placeholder={placeholder} />\n {endAdornment ? (\n <StyledEndAdornment>{endAdornment}</StyledEndAdornment>\n ) : null}\n </StyledSelectForm>\n ) : null}\n <Autocomplete\n {...prop}\n clearInputOnSelect\n inputEl={childNode}\n handleEmptyAction={handleEmptyAction}\n selected={selected}\n handleChange={handleChange}\n renderOption={handleRenderOption}\n options={options}\n mixedOptions={mixedOptions.current}\n handleDefaultOptionChange={handleDefaultOptionChangeCallback}\n type={type}\n preselectDefaultValue={preselectDefaultValue}\n keepSameOptionsOrder={keepSameOptionsOrder}\n />\n </div>\n </Tag>\n );\n};\n\nSelect.displayName = \"Select\";\n"],"mappings":"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"}