react-restyle-components 0.3.77 → 0.3.81

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 (98) hide show
  1. package/lib/src/core-components/index.d.ts +0 -10
  2. package/lib/src/core-components/index.d.ts.map +1 -1
  3. package/lib/src/core-components/index.js +0 -10
  4. package/lib/src/core-components/src/components/Badge/Badge.d.ts +5 -5
  5. package/lib/src/core-components/src/components/FormField/FormField.d.ts +38 -3
  6. package/lib/src/core-components/src/components/FormField/FormField.d.ts.map +1 -1
  7. package/lib/src/core-components/src/components/FormField/FormField.js +77 -4
  8. package/lib/src/core-components/src/components/FormField/components/CheckboxGroupInput.d.ts +20 -0
  9. package/lib/src/core-components/src/components/FormField/components/CheckboxGroupInput.d.ts.map +1 -0
  10. package/lib/src/core-components/src/components/FormField/components/CheckboxGroupInput.js +37 -0
  11. package/lib/src/core-components/src/components/FormField/components/CheckboxInput.d.ts +17 -0
  12. package/lib/src/core-components/src/components/FormField/components/CheckboxInput.d.ts.map +1 -0
  13. package/lib/src/core-components/src/components/FormField/components/CheckboxInput.js +8 -0
  14. package/lib/src/core-components/src/components/FormField/components/CssMultilineInput.d.ts +22 -0
  15. package/lib/src/core-components/src/components/FormField/components/CssMultilineInput.d.ts.map +1 -0
  16. package/lib/src/core-components/src/components/FormField/components/CssMultilineInput.js +168 -0
  17. package/lib/src/core-components/src/components/FormField/components/DatePickerInput.d.ts +18 -0
  18. package/lib/src/core-components/src/components/FormField/components/DatePickerInput.d.ts.map +1 -0
  19. package/lib/src/core-components/src/components/FormField/components/DatePickerInput.js +29 -0
  20. package/lib/src/core-components/src/components/FormField/components/DropdownInput.d.ts +18 -0
  21. package/lib/src/core-components/src/components/FormField/components/DropdownInput.d.ts.map +1 -0
  22. package/lib/src/core-components/src/components/FormField/components/DropdownInput.js +70 -0
  23. package/lib/src/core-components/src/components/FormField/components/OtpInput.d.ts +18 -0
  24. package/lib/src/core-components/src/components/FormField/components/OtpInput.d.ts.map +1 -0
  25. package/lib/src/core-components/src/components/FormField/components/OtpInput.js +81 -0
  26. package/lib/src/core-components/src/components/FormField/components/PasswordInput.d.ts +17 -0
  27. package/lib/src/core-components/src/components/FormField/components/PasswordInput.d.ts.map +1 -0
  28. package/lib/src/core-components/src/components/FormField/components/PasswordInput.js +18 -0
  29. package/lib/src/core-components/src/components/FormField/components/PinInput.d.ts +18 -0
  30. package/lib/src/core-components/src/components/FormField/components/PinInput.d.ts.map +1 -0
  31. package/lib/src/core-components/src/components/FormField/components/PinInput.js +75 -0
  32. package/lib/src/core-components/src/components/FormField/components/RadioInput.d.ts +23 -0
  33. package/lib/src/core-components/src/components/FormField/components/RadioInput.d.ts.map +1 -0
  34. package/lib/src/core-components/src/components/FormField/components/RadioInput.js +54 -0
  35. package/lib/src/core-components/src/components/FormField/components/TextDropdownInput.d.ts +20 -0
  36. package/lib/src/core-components/src/components/FormField/components/TextDropdownInput.d.ts.map +1 -0
  37. package/lib/src/core-components/src/components/FormField/components/TextDropdownInput.js +94 -0
  38. package/lib/src/core-components/src/components/FormField/components/ToggleInput.d.ts +17 -0
  39. package/lib/src/core-components/src/components/FormField/components/ToggleInput.d.ts.map +1 -0
  40. package/lib/src/core-components/src/components/FormField/components/ToggleInput.js +36 -0
  41. package/lib/src/core-components/src/components/FormField/components/index.d.ts +12 -0
  42. package/lib/src/core-components/src/components/FormField/components/index.d.ts.map +1 -0
  43. package/lib/src/core-components/src/components/FormField/components/index.js +11 -0
  44. package/lib/src/core-components/src/components/{Input/CSSMultilineInput → FormField}/css-properties.d.ts.map +1 -1
  45. package/lib/src/core-components/src/components/{Form → FormField}/toggle.css +1 -0
  46. package/lib/src/core-components/src/components/index.d.ts +1 -2
  47. package/lib/src/core-components/src/components/index.d.ts.map +1 -1
  48. package/lib/src/core-components/src/components/index.js +1 -2
  49. package/lib/src/core-components/src/core-components/CoreButton/CoreButton.d.ts +2 -2
  50. package/lib/src/core-components/src/core-components/atoms/Input/Input.d.ts +5 -1
  51. package/lib/src/core-components/src/core-components/atoms/Input/Input.d.ts.map +1 -1
  52. package/lib/src/core-components/src/core-components/atoms/Input/Input.js +62 -2
  53. package/lib/src/core-components/src/core-components/atoms/Label/Label.d.ts +2 -0
  54. package/lib/src/core-components/src/core-components/atoms/Label/Label.d.ts.map +1 -1
  55. package/lib/src/core-components/src/core-components/atoms/Label/Label.js +16 -3
  56. package/lib/src/core-components/src/core-components/atoms/Textarea/Textarea.d.ts +5 -1
  57. package/lib/src/core-components/src/core-components/atoms/Textarea/Textarea.d.ts.map +1 -1
  58. package/lib/src/core-components/src/core-components/atoms/Textarea/Textarea.js +59 -2
  59. package/lib/src/core-components/src/tc.global.css +8 -2
  60. package/lib/src/core-components/src/tc.module.css +1 -1
  61. package/lib/src/core-components/src/utils/utility.util.d.ts +1 -0
  62. package/lib/src/core-components/src/utils/utility.util.d.ts.map +1 -1
  63. package/lib/src/core-components/src/utils/utility.util.js +9 -0
  64. package/package.json +1 -1
  65. package/lib/src/core-components/src/components/Form/form.component.d.ts +0 -106
  66. package/lib/src/core-components/src/components/Form/form.component.d.ts.map +0 -1
  67. package/lib/src/core-components/src/components/Form/form.component.js +0 -88
  68. package/lib/src/core-components/src/components/Input/CSSMultilineInput/css-multiline-input.component.d.ts +0 -13
  69. package/lib/src/core-components/src/components/Input/CSSMultilineInput/css-multiline-input.component.d.ts.map +0 -1
  70. package/lib/src/core-components/src/components/Input/CSSMultilineInput/css-multiline-input.component.js +0 -103
  71. package/lib/src/core-components/src/components/Input/InputDropdown/input-dropdown.component.d.ts +0 -10
  72. package/lib/src/core-components/src/components/Input/InputDropdown/input-dropdown.component.d.ts.map +0 -1
  73. package/lib/src/core-components/src/components/Input/InputDropdown/input-dropdown.component.js +0 -44
  74. package/lib/src/core-components/src/components/Input/InputOTP/input-otp.component.d.ts +0 -14
  75. package/lib/src/core-components/src/components/Input/InputOTP/input-otp.component.d.ts.map +0 -1
  76. package/lib/src/core-components/src/components/Input/InputOTP/input-otp.component.js +0 -62
  77. package/lib/src/core-components/src/components/Input/InputOTP/input-otp.styles.css +0 -35
  78. package/lib/src/core-components/src/components/Input/InputPin/input-pin.component.d.ts +0 -16
  79. package/lib/src/core-components/src/components/Input/InputPin/input-pin.component.d.ts.map +0 -1
  80. package/lib/src/core-components/src/components/Input/InputPin/input-pin.component.js +0 -76
  81. package/lib/src/core-components/src/components/Input/InputPin/input.styles.css +0 -35
  82. package/lib/src/core-components/src/components/check-box/checkBox.component.d.ts +0 -12
  83. package/lib/src/core-components/src/components/check-box/checkBox.component.d.ts.map +0 -1
  84. package/lib/src/core-components/src/components/check-box/checkBox.component.js +0 -20
  85. package/lib/src/core-components/src/components/date-picker/date-picker.component.d.ts +0 -12
  86. package/lib/src/core-components/src/components/date-picker/date-picker.component.d.ts.map +0 -1
  87. package/lib/src/core-components/src/components/date-picker/date-picker.component.js +0 -20
  88. package/lib/src/core-components/src/components/input-dropdown/input-dropdown.component.d.ts +0 -10
  89. package/lib/src/core-components/src/components/input-dropdown/input-dropdown.component.d.ts.map +0 -1
  90. package/lib/src/core-components/src/components/input-dropdown/input-dropdown.component.js +0 -44
  91. package/lib/src/core-components/src/components/radio/radio.component.d.ts +0 -9
  92. package/lib/src/core-components/src/components/radio/radio.component.d.ts.map +0 -1
  93. package/lib/src/core-components/src/components/radio/radio.component.js +0 -20
  94. package/lib/src/core-components/src/components/text-input-dropdown/text-input-dropdown.component.d.ts +0 -16
  95. package/lib/src/core-components/src/components/text-input-dropdown/text-input-dropdown.component.d.ts.map +0 -1
  96. package/lib/src/core-components/src/components/text-input-dropdown/text-input-dropdown.component.js +0 -91
  97. /package/lib/src/core-components/src/components/{Input/CSSMultilineInput → FormField}/css-properties.d.ts +0 -0
  98. /package/lib/src/core-components/src/components/{Input/CSSMultilineInput → FormField}/css-properties.js +0 -0
@@ -1,35 +0,0 @@
1
- .-z-1 {
2
- z-index: -1;
3
- }
4
-
5
- .origin-0 {
6
- transform-origin: 0%;
7
- }
8
-
9
- input:focus ~ label,
10
- input:not(:placeholder-shown) ~ label,
11
- textarea:focus ~ label,
12
- textarea:not(:placeholder-shown) ~ label,
13
- select:focus ~ label,
14
- select:not([value='']):valid ~ label {
15
- /* @apply transform; scale-75; -translate-y-6; */
16
- --tw-translate-x: 0;
17
- --tw-translate-y: 0;
18
- --tw-rotate: 0;
19
- --tw-skew-x: 0;
20
- --tw-skew-y: 0;
21
- transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y))
22
- rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))
23
- scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
24
- --tw-scale-x: 0.75;
25
- --tw-scale-y: 0.75;
26
- --tw-translate-y: -1.5rem;
27
- }
28
-
29
- input:focus ~ label,
30
- select:focus ~ label {
31
- /* @apply text-black; left-0; */
32
- --tw-text-opacity: 1;
33
- color: '#696969';
34
- left: 0px;
35
- }
@@ -1,12 +0,0 @@
1
- interface CheckBoxProps {
2
- title: string;
3
- data: Array<any>;
4
- className?: string;
5
- disable?: boolean;
6
- fill?: string;
7
- stroke?: string;
8
- onChange: (items: any) => void;
9
- }
10
- export declare const CheckBox: ({ title, data, className, fill, stroke, onChange, }: CheckBoxProps) => import("react/jsx-runtime").JSX.Element;
11
- export {};
12
- //# sourceMappingURL=checkBox.component.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"checkBox.component.d.ts","sourceRoot":"","sources":["../../../../../../src/core-components/src/components/check-box/checkBox.component.tsx"],"names":[],"mappings":"AAMA,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;CAChC;AAED,eAAO,MAAM,QAAQ,wDAOlB,aAAa,4CAoCf,CAAC"}
@@ -1,20 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState } from 'react';
3
- import s from '../../tc.module.css';
4
- import { cn } from '../../utils';
5
- import { InputWrapper } from '../Form/form.component';
6
- import { Icon } from '..';
7
- export const CheckBox = ({ title = 'Banks', data = [{ title: 'SBI Bank', checked: false }], className, fill = '#E7503D', stroke = '#E7503D', onChange, }) => {
8
- const [list, setList] = useState(data);
9
- const width = 20;
10
- return (_jsx(InputWrapper, { label: title, children: list?.map((item, index) => (_jsxs("div", { className: `${cn(s.flex, s['flex-row'], s['items-center'])} ${className}`, onClick: () => {
11
- const result = list?.map((e, i) => {
12
- if (i === index)
13
- return { ...e, checked: !item.checked };
14
- else
15
- return { ...e };
16
- });
17
- setList(result);
18
- onChange(result?.filter((item) => item.checked));
19
- }, children: [_jsx("div", { className: cn(s.flex, s['gap-2']), children: item.checked ? (_jsx(Icon, { nameIcon: "ImCheckboxChecked" })) : (_jsx(Icon, { nameIcon: "ImCheckboxUnchecked" })) }), _jsx("span", { className: cn(s['text-sm'], s['font-medium'], s['ml-2']), children: item?.title })] }, index))) }));
20
- };
@@ -1,12 +0,0 @@
1
- import 'react-datepicker/dist/react-datepicker.css';
2
- interface DatePickerProps {
3
- title: string;
4
- value?: string;
5
- className?: string;
6
- disable?: boolean;
7
- showFormat?: string;
8
- placeholder?: string;
9
- }
10
- export declare const DatePickerComp: ({ title, className, disable, value, showFormat, placeholder, }: DatePickerProps) => import("react/jsx-runtime").JSX.Element;
11
- export {};
12
- //# sourceMappingURL=date-picker.component.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"date-picker.component.d.ts","sourceRoot":"","sources":["../../../../../../src/core-components/src/components/date-picker/date-picker.component.tsx"],"names":[],"mappings":"AAEA,OAAO,4CAA4C,CAAC;AAOpD,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,cAAc,mEAOxB,eAAe,4CAkDjB,CAAC"}
@@ -1,20 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState, forwardRef } from 'react';
3
- import DatePicker from 'react-datepicker';
4
- import 'react-datepicker/dist/react-datepicker.css';
5
- import { Icon } from '..';
6
- import dayjs from 'dayjs';
7
- import { InputWrapper } from '../Form/form.component';
8
- import s from '../../tc.module.css';
9
- import { cn } from '../../utils';
10
- export const DatePickerComp = ({ title = 'Title', className, disable, value, showFormat = 'yyyy-MM-dd', placeholder = 'Select Date', }) => {
11
- const [pickedDate, setPickedDate] = useState(value && dayjs(value).toDate());
12
- const CustomInput = forwardRef((props, ref) => {
13
- return (_jsxs("div", { onClick: !disable && props.onClick, ref: ref, className: cn(s['border-gray-light'], s['place-items-center'], s['border'], s['rounded-md'], s['px-2'], s.flex), children: [_jsx("label", { className: cn(s['mr-3'], s['font-arimaRegular'], s['text-primaryCharcoal'], s['text-lg']), children: props.value || props.placeholder }), _jsx(Icon, { nameIcon: "ImCalendar" })] }));
14
- });
15
- CustomInput.displayName = 'CustomInput';
16
- const handleChanges = (date) => {
17
- setPickedDate(date);
18
- };
19
- return (_jsx(InputWrapper, { label: title, children: _jsx("div", { className: cn(s.flex, s['zIndex-999'], className), children: _jsx(DatePicker, { selected: pickedDate || new Date(), dateFormat: showFormat, placeholder: placeholder, onChange: handleChanges, customInput: _jsx(CustomInput, {}) }) }) }));
20
- };
@@ -1,10 +0,0 @@
1
- interface InputDropdownProps {
2
- title: string;
3
- items: Array<string>;
4
- hasError?: boolean;
5
- className?: string;
6
- onChange?: (item: string) => void;
7
- }
8
- export declare const InputDropdown: ({ items, className, hasError, title, onChange, }: InputDropdownProps) => import("react/jsx-runtime").JSX.Element;
9
- export {};
10
- //# sourceMappingURL=input-dropdown.component.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"input-dropdown.component.d.ts","sourceRoot":"","sources":["../../../../../../src/core-components/src/components/input-dropdown/input-dropdown.component.tsx"],"names":[],"mappings":"AAIA,UAAU,kBAAkB;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,eAAO,MAAM,aAAa,qDAMvB,kBAAkB,4CAsIpB,CAAC"}
@@ -1,44 +0,0 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState, useEffect, useRef } from 'react';
3
- import s from '../../tc.module.css';
4
- import { cn } from '../../utils';
5
- import { Icon } from '../';
6
- export const InputDropdown = ({ items, className, hasError, title, onChange, }) => {
7
- const [isOpen, setIsOpen] = useState(false);
8
- const [value, setValue] = useState('');
9
- const [filteredItems, setFilteredItems] = useState(items);
10
- const useOutsideAlerter = (ref) => {
11
- useEffect(() => {
12
- function handleClickOutside(event) {
13
- if (ref.current &&
14
- !ref.current.contains(event.target) &&
15
- isOpen &&
16
- isOpen)
17
- setIsOpen(!isOpen);
18
- }
19
- document.addEventListener('mousedown', handleClickOutside);
20
- return () => {
21
- document.removeEventListener('mousedown', handleClickOutside);
22
- };
23
- }, [ref]);
24
- };
25
- const handleInputChange = (event) => {
26
- const inputValue = event.target.value;
27
- setValue(inputValue);
28
- const filtered = items.filter((item) => item.toLowerCase().includes(inputValue.toLowerCase()));
29
- setFilteredItems(filtered);
30
- onChange && onChange(inputValue);
31
- };
32
- const wrapperRef = useRef(null);
33
- useOutsideAlerter(wrapperRef);
34
- return (_jsxs("div", { className: cn(className, s['relative']), children: [_jsxs("div", { className: cn(s['flex'], s['flex-row'], s['items-center']), children: [_jsx("input", { type: "text", name: "name", placeholder: title, value: value, className: cn(s['pt-3'], s['pb-2'], s['w-full'], s['px-0'], s['mt-0'], s['bg-transparent'], s['border-gray-secondary'], s['border-0'], s['border-b'], s['appearance-none'], s['focus:outline-none'], s['focus:ring-0'], s['font-arimaRegular'], s['text-md']), onClick: () => {
35
- setIsOpen(!isOpen);
36
- }, onChange: handleInputChange }), !isOpen && (_jsx(_Fragment, { children: _jsx(Icon, { nameIcon: "MdKeyboardArrowDown", propsIcon: { size: '24', color: '#000000' }, onClick: () => {
37
- setIsOpen(!isOpen);
38
- } }) })), isOpen && (_jsx(Icon, { nameIcon: "MdKeyboardArrowUp", propsIcon: { size: '24', color: '#000000' }, onClick: () => {
39
- setIsOpen(!isOpen);
40
- } }))] }), isOpen && (_jsx("div", { className: cn(s['z-10'], s['w-full'], s['absolute'], s['text-base'], s['list-none'], s['bg-white'], s['rounded'], s['divide-y'], s['divide-gray-100'], s['shadow'], s['dark:bg-gray-700']), ref: wrapperRef, children: _jsx("ul", { className: s['py-1'], children: filteredItems?.map((item, index) => (_jsx("li", { className: cn(s['block'], s['py-2'], s['px-4'], s['text-md'], s['hover:bg-gray-100'], s['dark:hover:bg-gray-600'], s['dark:text-gray-200'], s['font-arimaRegular']), onClick: () => {
41
- setValue(item);
42
- setIsOpen(!isOpen);
43
- }, children: item }, index))) }) })), hasError && (_jsx("span", { className: cn(s['text-red'], s['text-4xs']), id: "error", children: `${title} is required` }))] }));
44
- };
@@ -1,9 +0,0 @@
1
- interface RadioProps {
2
- title: string;
3
- data: Array<any>;
4
- className?: string;
5
- onChange: (item: any) => void;
6
- }
7
- export declare const Radio: ({ title, data, className, onChange, }: RadioProps) => import("react/jsx-runtime").JSX.Element;
8
- export {};
9
- //# sourceMappingURL=radio.component.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"radio.component.d.ts","sourceRoot":"","sources":["../../../../../../src/core-components/src/components/radio/radio.component.tsx"],"names":[],"mappings":"AAMA,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,CAAC,IAAI,KAAA,KAAK,IAAI,CAAC;CAC1B;AAED,eAAO,MAAM,KAAK,0CAKf,UAAU,4CAuCZ,CAAC"}
@@ -1,20 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useState } from 'react';
3
- import { Icon } from '..';
4
- import { InputWrapper } from '../Form/form.component';
5
- import s from '../../tc.module.css';
6
- import { cn } from '../../utils';
7
- export const Radio = ({ title = 'Source', data = [], className, onChange, }) => {
8
- const [list, setList] = useState(data);
9
- const width = 20;
10
- return (_jsx(_Fragment, { children: _jsx(InputWrapper, { label: title, children: list?.map((item, index) => (_jsx("div", { className: cn(className, s['flex'], s['items-center'], s['mb-1']), onClick: () => {
11
- const result = list?.map((e, i) => {
12
- if (i == index)
13
- return { ...e, checked: true };
14
- else
15
- return { ...e, checked: false };
16
- });
17
- setList(result);
18
- onChange(result?.find((item) => item.checked));
19
- }, children: _jsxs("div", { className: cn(s['flex'], s['flex-row'], s['gap-1'], s['items-center']), children: [item.checked ? (_jsx(Icon, { nameIcon: "ImRadioChecked" })) : (_jsx(Icon, { nameIcon: "ImRadioUnchecked" })), _jsx("span", { className: cn(s['text-4xs']), children: item?.title })] }) }, index))) }) }));
20
- };
@@ -1,16 +0,0 @@
1
- import React from 'react';
2
- interface TextInputDropdownProps {
3
- placeholder?: string;
4
- items: Array<string>;
5
- hasError?: boolean;
6
- className?: string;
7
- value?: string;
8
- defaultValue?: string;
9
- onChange?: (item: string) => void;
10
- onBlur?: (event: React.FocusEvent<HTMLInputElement> | null, value?: string) => void;
11
- disabled?: boolean;
12
- allowCustomInput?: boolean;
13
- }
14
- export declare const TextInputDropdown: ({ items, className, hasError, placeholder, value: controlledValue, defaultValue, onChange, onBlur, disabled, allowCustomInput, }: TextInputDropdownProps) => import("react/jsx-runtime").JSX.Element;
15
- export {};
16
- //# sourceMappingURL=text-input-dropdown.component.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"text-input-dropdown.component.d.ts","sourceRoot":"","sources":["../../../../../../src/core-components/src/components/text-input-dropdown/text-input-dropdown.component.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AAKzD,UAAU,sBAAsB;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,MAAM,CAAC,EAAE,CACP,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAAG,IAAI,EAChD,KAAK,CAAC,EAAE,MAAM,KACX,IAAI,CAAC;IACV,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,eAAO,MAAM,iBAAiB,qIAW3B,sBAAsB,4CA0PxB,CAAC"}
@@ -1,91 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState, useEffect, useRef } from 'react';
3
- import s from '../../tc.module.css';
4
- import { cn } from '../../utils';
5
- import { Icon } from '../';
6
- export const TextInputDropdown = ({ items, className, hasError, placeholder = 'Select an option', value: controlledValue, defaultValue = '', onChange, onBlur, disabled = false, allowCustomInput = true, }) => {
7
- const [isOpen, setIsOpen] = useState(false);
8
- const [internalValue, setInternalValue] = useState(defaultValue);
9
- const [filteredItems, setFilteredItems] = useState(items);
10
- const [isEditing, setIsEditing] = useState(false);
11
- // Use controlled value if provided, otherwise use internal state
12
- const value = controlledValue !== undefined ? controlledValue : internalValue;
13
- const useOutsideAlerter = (ref) => {
14
- useEffect(() => {
15
- function handleClickOutside(event) {
16
- if (ref.current && !ref.current.contains(event.target) && isOpen) {
17
- setIsOpen(false);
18
- setIsEditing(false);
19
- }
20
- }
21
- document.addEventListener('mousedown', handleClickOutside);
22
- return () => {
23
- document.removeEventListener('mousedown', handleClickOutside);
24
- };
25
- }, [ref, isOpen]);
26
- };
27
- // Update filtered items when items prop changes
28
- useEffect(() => {
29
- setFilteredItems(items);
30
- }, [items]);
31
- // Filter items based on current input value
32
- useEffect(() => {
33
- if (isEditing && value) {
34
- const filtered = items.filter((item) => item.toLowerCase().includes(value.toLowerCase()));
35
- setFilteredItems(filtered);
36
- }
37
- else {
38
- setFilteredItems(items);
39
- }
40
- }, [value, items, isEditing]);
41
- const handleInputChange = (event) => {
42
- const inputValue = event.target.value;
43
- if (controlledValue === undefined) {
44
- setInternalValue(inputValue);
45
- }
46
- setIsEditing(true);
47
- // Filter items based on input
48
- const filtered = items.filter((item) => item.toLowerCase().includes(inputValue.toLowerCase()));
49
- setFilteredItems(filtered);
50
- onChange && onChange(inputValue);
51
- };
52
- const handleItemSelect = (item) => {
53
- if (controlledValue === undefined) {
54
- setInternalValue(item);
55
- }
56
- setIsOpen(false);
57
- setIsEditing(false);
58
- onChange && onChange(item);
59
- if (item)
60
- onBlur && onBlur(null, item); // Trigger onBlur when selection changes
61
- };
62
- const handleInputClick = () => {
63
- if (!disabled) {
64
- setIsOpen(!isOpen);
65
- setIsEditing(true);
66
- }
67
- };
68
- const handleInputFocus = () => {
69
- if (!disabled) {
70
- setIsEditing(true);
71
- }
72
- };
73
- const handleInputBlur = (event) => {
74
- // Small delay to allow item selection to complete
75
- setTimeout(() => {
76
- setIsEditing(false);
77
- }, 150);
78
- onBlur && onBlur(event, value);
79
- };
80
- const wrapperRef = useRef(null);
81
- useOutsideAlerter(wrapperRef);
82
- return (_jsxs("div", { className: cn(className, s['relative']), children: [_jsxs("div", { className: cn(s['flex'], s['flex-row'], s['items-center'], s['leading-4'], s['p-2'], s['dark:bg-boxdark'], s['focus:outline-none'], s['focus:ring'], s['block'], s['w-full'], s['shadow-sm'], s['sm:text-base'], s['border'], s['rounded-md'], {
83
- [s['border-red']]: hasError,
84
- [s['border-gray-300']]: !hasError,
85
- }), children: [_jsx("input", { type: "text", name: "name", placeholder: placeholder, value: value, disabled: disabled, className: cn(s['w-full'], s['bg-transparent'], s['border-0'], s['appearance-none'], s['focus:outline-none'], s['focus:ring-0'], s['font-arimaRegular'], s['text-md'], disabled && s['cursor-not-allowed'], disabled && s['opacity-50']), onClick: handleInputClick, onChange: allowCustomInput ? handleInputChange : undefined, onFocus: handleInputFocus, onBlur: handleInputBlur, readOnly: !allowCustomInput }), !disabled && (_jsx(Icon, { nameIcon: isOpen ? 'MdKeyboardArrowUp' : 'MdKeyboardArrowDown', propsIcon: { size: '16', color: '#000000' }, onClick: handleInputClick }))] }), isOpen && !disabled && (_jsx("div", { className: cn(s['z-10'], s['w-full'], s['absolute'], s['text-base'], s['list-none'], s['bg-white'], s['rounded'], s['divide-y'], s['divide-gray-100'], s['shadow'], s['dark:bg-gray-700'], s['max-h-60'], s['overflow-y-auto']), ref: wrapperRef, children: _jsxs("ul", { className: s['py-1'], children: [filteredItems.length > 0 ? (filteredItems.map((item, index) => (_jsx("li", { className: cn(s['block'], s['py-2'], s['px-4'], s['text-md'], s['hover:bg-gray-100'], s['dark:hover:bg-gray-600'], s['dark:text-gray-200'], s['font-arimaRegular'], s['cursor-pointer'],
86
- // Highlight if this item matches current value
87
- value === item && s['bg-blue-50'], value === item && s['text-blue-700']), onClick: () => handleItemSelect(item), children: item }, index)))) : (_jsx("li", { className: cn(s['block'], s['py-2'], s['px-4'], s['text-md'], s['text-gray-500'], s['font-arimaRegular']), children: allowCustomInput ? 'No matches found' : 'No options available' })), allowCustomInput &&
88
- value &&
89
- !items.includes(value) &&
90
- isEditing && (_jsx("li", { className: cn(s['block'], s['py-2'], s['px-4'], s['text-md'], s['hover:bg-gray-100'], s['dark:hover:bg-gray-600'], s['dark:text-gray-200'], s['font-arimaRegular'], s['cursor-pointer'], s['border-t'], s['border-gray-200'], s['bg-green-50'], s['text-green-700']), onClick: () => handleItemSelect(value), children: _jsxs("span", { className: cn(s.flex, s['ml-2'], s['items-center'], s['gap-1']), children: [_jsx(Icon, { nameIcon: "MdAdd", propsIcon: { size: '16', color: '#059669' } }), "\"", value, "\""] }) }))] }) }))] }));
91
- };