react-restyle-components 0.1.86 → 0.1.88

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 (110) hide show
  1. package/lib/cjs/src/App.js +12 -3
  2. package/lib/cjs/src/__mocks__/styleMock.js +2 -0
  3. package/lib/cjs/src/core-components/index.d.ts +1 -0
  4. package/lib/cjs/src/core-components/index.js +1 -0
  5. package/lib/cjs/src/core-components/molecules/auto-complete-group-by/auto-complete-group-by.component.d.ts +10 -0
  6. package/lib/cjs/src/core-components/molecules/auto-complete-group-by/auto-complete-group-by.component.js +166 -0
  7. package/lib/cjs/src/core-components/molecules/auto-complete-group-by/auto-complete-group-by.component.test.js +14 -0
  8. package/lib/cjs/src/core-components/molecules/auto-complete-group-by/auto-complete-group-by.stories.d.ts +6 -0
  9. package/lib/cjs/src/core-components/molecules/auto-complete-group-by/auto-complete-group-by.stories.js +33 -0
  10. package/lib/cjs/src/core-components/molecules/autocomplete/autocomplete.js +4 -2
  11. package/lib/cjs/src/core-components/molecules/autocomplete/autocomplete.spec.d.ts +1 -0
  12. package/lib/cjs/src/core-components/molecules/autocomplete/autocomplete.spec.js +72 -0
  13. package/lib/cjs/src/core-components/molecules/multi-select/multi-select.component.js +0 -1
  14. package/lib/package.json +74 -25
  15. package/lib/src/App.css +3 -2
  16. package/lib/src/App.js +13 -4
  17. package/lib/src/core-components/index.d.ts +1 -0
  18. package/lib/src/core-components/index.js +1 -0
  19. package/lib/src/core-components/molecules/auto-complete-group-by/auto-complete-group-by.component.d.ts +10 -0
  20. package/lib/src/core-components/molecules/auto-complete-group-by/auto-complete-group-by.component.js +139 -0
  21. package/lib/src/core-components/molecules/auto-complete-group-by/auto-complete-group-by.component.test.js +9 -0
  22. package/lib/src/core-components/molecules/auto-complete-group-by/auto-complete-group-by.stories.d.ts +6 -0
  23. package/lib/src/core-components/molecules/auto-complete-group-by/auto-complete-group-by.stories.js +30 -0
  24. package/lib/src/core-components/molecules/autocomplete/autocomplete.css +6 -1
  25. package/lib/src/core-components/molecules/autocomplete/autocomplete.js +4 -2
  26. package/lib/src/core-components/molecules/autocomplete/autocomplete.spec.d.ts +1 -0
  27. package/lib/src/core-components/molecules/autocomplete/autocomplete.spec.js +67 -0
  28. package/lib/src/core-components/molecules/multi-select/multi-select.component.js +0 -1
  29. package/lib/tc.css +1 -1
  30. package/package.json +73 -24
  31. package/lib/cjs/src/core-components/atoms/buttons/buttons.test.js +0 -13
  32. package/lib/cjs/src/core-components/atoms/check-box/checkBox.test.js +0 -13
  33. package/lib/cjs/src/core-components/atoms/date-picker/date-picker.test.js +0 -14
  34. package/lib/cjs/src/core-components/atoms/form/form.test.js +0 -99
  35. package/lib/cjs/src/core-components/atoms/icons/icons.test.js +0 -15
  36. package/lib/cjs/src/core-components/atoms/input/input-pin.test.d.ts +0 -1
  37. package/lib/cjs/src/core-components/atoms/input/input-pin.test.js +0 -17
  38. package/lib/cjs/src/core-components/atoms/input/input.test.d.ts +0 -1
  39. package/lib/cjs/src/core-components/atoms/input/input.test.js +0 -17
  40. package/lib/cjs/src/core-components/atoms/input-dropdown/input-dropdown.test.d.ts +0 -1
  41. package/lib/cjs/src/core-components/atoms/input-dropdown/input-dropdown.test.js +0 -13
  42. package/lib/cjs/src/core-components/atoms/loader/loader.test.d.ts +0 -1
  43. package/lib/cjs/src/core-components/atoms/loader/loader.test.js +0 -13
  44. package/lib/cjs/src/core-components/atoms/radio/radio.test.d.ts +0 -1
  45. package/lib/cjs/src/core-components/atoms/radio/radio.test.js +0 -13
  46. package/lib/cjs/src/core-components/atoms/stepper/stepper.test.d.ts +0 -1
  47. package/lib/cjs/src/core-components/atoms/stepper/stepper.test.js +0 -12
  48. package/lib/cjs/src/core-components/atoms/tabs/tabs.test.d.ts +0 -1
  49. package/lib/cjs/src/core-components/atoms/tabs/tabs.test.js +0 -18
  50. package/lib/cjs/src/core-components/atoms/timer/timer.test.d.ts +0 -1
  51. package/lib/cjs/src/core-components/atoms/timer/timer.test.js +0 -19
  52. package/lib/cjs/src/core-components/atoms/tooltip/tooltip.component.test.d.ts +0 -1
  53. package/lib/cjs/src/core-components/atoms/tooltip/tooltip.component.test.js +0 -14
  54. package/lib/cjs/src/core-components/molecules/auto-complete-filter-multiple-select-multiple-fields-display/auto-complete-filter-multiple-select-multiple-fields-display.component.test.d.ts +0 -1
  55. package/lib/cjs/src/core-components/molecules/auto-complete-filter-multiple-select-multiple-fields-display/auto-complete-filter-multiple-select-multiple-fields-display.component.test.js +0 -14
  56. package/lib/cjs/src/core-components/molecules/auto-complete-filter-single-select-multiple-fields-display/auto-complete-filter-single-select-multiple-fields-display.component.test.d.ts +0 -1
  57. package/lib/cjs/src/core-components/molecules/auto-complete-filter-single-select-multiple-fields-display/auto-complete-filter-single-select-multiple-fields-display.component.test.js +0 -21
  58. package/lib/cjs/src/core-components/molecules/css-multiline-input/css-multiline-input.test.d.ts +0 -1
  59. package/lib/cjs/src/core-components/molecules/css-multiline-input/css-multiline-input.test.js +0 -15
  60. package/lib/cjs/src/core-components/molecules/modal-confirm/modal-confirm.test.d.ts +0 -1
  61. package/lib/cjs/src/core-components/molecules/modal-confirm/modal-confirm.test.js +0 -15
  62. package/lib/cjs/src/core-components/molecules/multi-select/multi-select.test.d.ts +0 -1
  63. package/lib/cjs/src/core-components/molecules/multi-select/multi-select.test.js +0 -15
  64. package/lib/cjs/src/core-components/molecules/multi-select-with-field/multi-select-with-field.test.d.ts +0 -1
  65. package/lib/cjs/src/core-components/molecules/multi-select-with-field/multi-select-with-field.test.js +0 -17
  66. package/lib/src/core-components/atoms/buttons/buttons.test.d.ts +0 -1
  67. package/lib/src/core-components/atoms/buttons/buttons.test.js +0 -8
  68. package/lib/src/core-components/atoms/check-box/checkBox.test.d.ts +0 -1
  69. package/lib/src/core-components/atoms/check-box/checkBox.test.js +0 -8
  70. package/lib/src/core-components/atoms/date-picker/date-picker.test.d.ts +0 -1
  71. package/lib/src/core-components/atoms/date-picker/date-picker.test.js +0 -9
  72. package/lib/src/core-components/atoms/form/form.test.d.ts +0 -1
  73. package/lib/src/core-components/atoms/form/form.test.js +0 -94
  74. package/lib/src/core-components/atoms/icons/icons.test.d.ts +0 -1
  75. package/lib/src/core-components/atoms/icons/icons.test.js +0 -10
  76. package/lib/src/core-components/atoms/input/input-pin.test.d.ts +0 -1
  77. package/lib/src/core-components/atoms/input/input-pin.test.js +0 -12
  78. package/lib/src/core-components/atoms/input/input.test.d.ts +0 -1
  79. package/lib/src/core-components/atoms/input/input.test.js +0 -12
  80. package/lib/src/core-components/atoms/input-dropdown/input-dropdown.test.d.ts +0 -1
  81. package/lib/src/core-components/atoms/input-dropdown/input-dropdown.test.js +0 -8
  82. package/lib/src/core-components/atoms/loader/loader.test.d.ts +0 -1
  83. package/lib/src/core-components/atoms/loader/loader.test.js +0 -8
  84. package/lib/src/core-components/atoms/radio/radio.test.d.ts +0 -1
  85. package/lib/src/core-components/atoms/radio/radio.test.js +0 -8
  86. package/lib/src/core-components/atoms/stepper/stepper.test.d.ts +0 -1
  87. package/lib/src/core-components/atoms/stepper/stepper.test.js +0 -7
  88. package/lib/src/core-components/atoms/tabs/tabs.test.d.ts +0 -1
  89. package/lib/src/core-components/atoms/tabs/tabs.test.js +0 -13
  90. package/lib/src/core-components/atoms/timer/timer.test.d.ts +0 -1
  91. package/lib/src/core-components/atoms/timer/timer.test.js +0 -14
  92. package/lib/src/core-components/atoms/tooltip/tooltip.component.test.d.ts +0 -1
  93. package/lib/src/core-components/atoms/tooltip/tooltip.component.test.js +0 -9
  94. package/lib/src/core-components/molecules/auto-complete-filter-multiple-select-multiple-fields-display/auto-complete-filter-multiple-select-multiple-fields-display.component.test.d.ts +0 -1
  95. package/lib/src/core-components/molecules/auto-complete-filter-multiple-select-multiple-fields-display/auto-complete-filter-multiple-select-multiple-fields-display.component.test.js +0 -9
  96. package/lib/src/core-components/molecules/auto-complete-filter-single-select-multiple-fields-display/auto-complete-filter-single-select-multiple-fields-display.component.test.d.ts +0 -1
  97. package/lib/src/core-components/molecules/auto-complete-filter-single-select-multiple-fields-display/auto-complete-filter-single-select-multiple-fields-display.component.test.js +0 -16
  98. package/lib/src/core-components/molecules/css-multiline-input/css-multiline-input.test.d.ts +0 -1
  99. package/lib/src/core-components/molecules/css-multiline-input/css-multiline-input.test.js +0 -10
  100. package/lib/src/core-components/molecules/modal-confirm/modal-confirm.test.d.ts +0 -1
  101. package/lib/src/core-components/molecules/modal-confirm/modal-confirm.test.js +0 -10
  102. package/lib/src/core-components/molecules/multi-select/multi-select.test.d.ts +0 -1
  103. package/lib/src/core-components/molecules/multi-select/multi-select.test.js +0 -10
  104. package/lib/src/core-components/molecules/multi-select-with-field/multi-select-with-field.test.d.ts +0 -1
  105. package/lib/src/core-components/molecules/multi-select-with-field/multi-select-with-field.test.js +0 -12
  106. /package/lib/cjs/src/{core-components/atoms/buttons/buttons.test.d.ts → __mocks__/styleMock.d.ts} +0 -0
  107. /package/lib/cjs/src/core-components/{atoms/check-box/checkBox.test.d.ts → molecules/auto-complete-group-by/auto-complete-group-by.component.test.d.ts} +0 -0
  108. /package/lib/{cjs/src/core-components/atoms/date-picker/date-picker.test.d.ts → src/__mocks__/styleMock.d.ts} +0 -0
  109. /package/lib/{cjs/src/core-components/atoms/form/form.test.d.ts → src/__mocks__/styleMock.js} +0 -0
  110. /package/lib/{cjs/src/core-components/atoms/icons/icons.test.d.ts → src/core-components/molecules/auto-complete-group-by/auto-complete-group-by.component.test.d.ts} +0 -0
@@ -8,8 +8,17 @@ require("./App.css");
8
8
  const core_components_1 = require("./core-components");
9
9
  function App() {
10
10
  return (react_1.default.createElement("div", null,
11
- react_1.default.createElement("div", null,
12
- react_1.default.createElement("p", null, "New testing"),
13
- react_1.default.createElement(core_components_1.Autocomplete, { value: "", onValueChange: () => { }, options: ['One', 'Two'] }))));
11
+ react_1.default.createElement("p", { style: { margin: '0 0 10px 0' } }, "Autocomplete Comp."),
12
+ react_1.default.createElement(core_components_1.Autocomplete, { value: "", onValueChange: () => { }, options: ['One', 'Two', 'Three', 'Four', 'Five', 'Six'] }),
13
+ react_1.default.createElement(core_components_1.AutocompleteGroupBy, { data: [
14
+ {
15
+ title: 'Country',
16
+ code: 'C',
17
+ children: [
18
+ { title: 'India', code: 'I' },
19
+ { title: 'United States', code: 'US' },
20
+ ],
21
+ },
22
+ ] })));
14
23
  }
15
24
  exports.default = App;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -21,4 +21,5 @@ export * from './molecules/multi-select/multi-select.component';
21
21
  export * from './molecules/multi-select-with-field/multi-select-with-field.component';
22
22
  export * from './molecules/modal-confirm/modal-confirm.component';
23
23
  export * from './molecules/autocomplete/autocomplete';
24
+ export * from './molecules/auto-complete-group-by/auto-complete-group-by.component';
24
25
  export { Form };
@@ -51,3 +51,4 @@ __exportStar(require("./molecules/multi-select/multi-select.component"), exports
51
51
  __exportStar(require("./molecules/multi-select-with-field/multi-select-with-field.component"), exports);
52
52
  __exportStar(require("./molecules/modal-confirm/modal-confirm.component"), exports);
53
53
  __exportStar(require("./molecules/autocomplete/autocomplete"), exports);
54
+ __exportStar(require("./molecules/auto-complete-group-by/auto-complete-group-by.component"), exports);
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ interface AutocompleteGroupByProps {
3
+ data: any[];
4
+ onChange?: (item: any, children: any) => void;
5
+ hasError?: boolean;
6
+ displayValue?: string;
7
+ onClose?: () => void;
8
+ }
9
+ export declare const AutocompleteGroupBy: (props: AutocompleteGroupByProps) => React.JSX.Element;
10
+ export {};
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.AutocompleteGroupBy = void 0;
27
+ /* eslint-disable */
28
+ const react_1 = __importStar(require("react"));
29
+ const __1 = require("../..");
30
+ const AutocompleteGroupBy = (props) => {
31
+ //const [userRouter, setUserRouter] = useState<any>()
32
+ const [value, setValue] = (0, react_1.useState)(props.displayValue);
33
+ const [options, setOptions] = (0, react_1.useState)();
34
+ const [isListOpen, setIsListOpen] = (0, react_1.useState)(false);
35
+ const useOutsideAlerter = (ref) => {
36
+ (0, react_1.useEffect)(() => {
37
+ /**
38
+ * Alert if clicked on outside of element
39
+ */
40
+ function handleClickOutside(event) {
41
+ if (ref.current && !ref.current.contains(event.target) && isListOpen) {
42
+ setIsListOpen(false);
43
+ setValue('');
44
+ }
45
+ }
46
+ // Bind the event listener
47
+ document.addEventListener('mousedown', handleClickOutside);
48
+ return () => {
49
+ // Unbind the event listener on clean up
50
+ document.removeEventListener('mousedown', handleClickOutside);
51
+ };
52
+ }, [ref, isListOpen]);
53
+ };
54
+ const wrapperRef = (0, react_1.useRef)(null);
55
+ useOutsideAlerter(wrapperRef);
56
+ (0, react_1.useEffect)(() => {
57
+ setValue(props.displayValue);
58
+ }, [props.displayValue]);
59
+ (0, react_1.useEffect)(() => {
60
+ setOptions(props.data || []);
61
+ }, [props]);
62
+ const uniqByKeepFirst = (a, key) => {
63
+ const seen = new Set();
64
+ return a.filter((item) => {
65
+ const k = key(item);
66
+ return seen.has(k) ? false : seen.add(k);
67
+ });
68
+ };
69
+ const filter = (search, data) => {
70
+ if (search !== '') {
71
+ let filterArray = [];
72
+ data.filter((item) => {
73
+ item.children.filter((children) => {
74
+ const childrenItem = children.title &&
75
+ children.title.toLowerCase().indexOf(search.toLowerCase()) > -1;
76
+ if (childrenItem) {
77
+ const isSameArray = filterArray.filter((filterItem, index) => {
78
+ if (filterItem.name === item.name) {
79
+ const newChildren = filterArray[index].children.concat(children);
80
+ filterArray[index] = {
81
+ ...filterArray[index],
82
+ children: newChildren,
83
+ };
84
+ }
85
+ });
86
+ if (isSameArray.length < 1) {
87
+ filterArray.push({ ...item, children: [children] });
88
+ }
89
+ const uniqueChars = uniqByKeepFirst(filterArray, (it) => it.name);
90
+ filterArray = uniqueChars;
91
+ }
92
+ });
93
+ });
94
+ setOptions(filterArray);
95
+ }
96
+ else {
97
+ setOptions(data);
98
+ }
99
+ };
100
+ const onChange = (e) => {
101
+ const search = e.target.value;
102
+ setValue(search);
103
+ filter(search, props.data);
104
+ };
105
+ // const onKeyUp = e => {
106
+ // const charCode = e.which ? e.which : e.keyCode;
107
+ // if (charCode === 8) {
108
+ // const search = e.target.value;
109
+ // filter(search, data);
110
+ // }
111
+ // };
112
+ return (react_1.default.createElement(react_1.default.Fragment, null,
113
+ react_1.default.createElement("div", { ref: wrapperRef, className: "w-full relative" },
114
+ react_1.default.createElement("div", { className: `flex items-center leading-4 p-2 bg-white focus:outline-none focus:ring w-full shadow-sm sm:text-base border-2 ${props.hasError ? 'border-red ' : 'border-gray-300'} rounded-md` },
115
+ react_1.default.createElement("input", { placeholder: "Search...", value: !isListOpen ? value : value, className: "w-full focus:outline-none",
116
+ // onKeyUp={onKeyUp}
117
+ onChange: onChange, onClick: () => setIsListOpen(true), onKeyDown: (e) => {
118
+ if (e.key === 'Enter') {
119
+ e.preventDefault();
120
+ // Find the selected item and children
121
+ let selectedItem = null;
122
+ let selectedChildren = null;
123
+ for (const item of options) {
124
+ for (const children of item.children) {
125
+ if (children.title.toLowerCase() === value.toLowerCase() ||
126
+ item.title.toLowerCase() === value.toLowerCase()) {
127
+ selectedItem = item;
128
+ selectedChildren = children;
129
+ break;
130
+ }
131
+ }
132
+ if (selectedItem) {
133
+ break;
134
+ }
135
+ }
136
+ // Call props.onChange with the selected item and children
137
+ if (props.onChange && selectedItem && selectedChildren) {
138
+ props.onChange(selectedItem, selectedChildren);
139
+ }
140
+ setIsListOpen(false);
141
+ setValue(value); // Set the value to what the user entered
142
+ setOptions([]);
143
+ }
144
+ } }),
145
+ isListOpen ? (react_1.default.createElement(__1.Icon, { nameIcon: "FaChevronUp", propsIcon: {
146
+ color: '#000000',
147
+ size: 22,
148
+ } })) : (react_1.default.createElement(__1.Icon, { nameIcon: "FaChevronDown", propsIcon: {
149
+ color: '#000000',
150
+ size: 22,
151
+ } }))),
152
+ options && isListOpen
153
+ ? options?.length > 0 && (react_1.default.createElement("div", { className: "mt-1 absolute z-50 border-gray-500 rounded-md bg-gray-200 w-100" },
154
+ react_1.default.createElement("ul", { className: "p-2 rounded-sm" },
155
+ react_1.default.createElement("div", { className: "", style: { height: 'auto', maxHeight: '350px' } }, options?.map((item, index) => (react_1.default.createElement(react_1.default.Fragment, null,
156
+ react_1.default.createElement("li", { key: index, className: "text-gray-400" }, item.title),
157
+ react_1.default.createElement("ul", { className: "ml-4" }, item?.children?.map((children, childrenIndex) => (react_1.default.createElement("li", { key: childrenIndex, className: "hover:bg-gray-200 focus:outline-none cursor-pointer", onClick: async () => {
158
+ props.onChange &&
159
+ props.onChange(item, children);
160
+ setIsListOpen(false);
161
+ setValue(children.title);
162
+ setOptions([]);
163
+ } }, children.title)))))))))))
164
+ : null)));
165
+ };
166
+ exports.AutocompleteGroupBy = AutocompleteGroupBy;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const react_2 = require("@testing-library/react");
8
+ const auto_complete_group_by_component_1 = require("./auto-complete-group-by.component");
9
+ describe('AutocompleteGroupBy component', () => {
10
+ it('render autocompleteGroupBy correctly', () => {
11
+ const autocompleteGroupBy = (0, react_2.render)(react_1.default.createElement(auto_complete_group_by_component_1.AutocompleteGroupBy, { data: [] }));
12
+ expect(autocompleteGroupBy).toMatchSnapshot();
13
+ });
14
+ });
@@ -0,0 +1,6 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { AutocompleteGroupBy } from './auto-complete-group-by.component';
3
+ declare const meta: Meta<typeof AutocompleteGroupBy>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof AutocompleteGroupBy>;
6
+ export declare const Primary: Story;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Primary = void 0;
4
+ const auto_complete_group_by_component_1 = require("./auto-complete-group-by.component");
5
+ const meta = {
6
+ title: 'Design System/Molecules/AutocompleteGroupBy',
7
+ component: auto_complete_group_by_component_1.AutocompleteGroupBy,
8
+ tags: ['autodocs'],
9
+ parameters: {
10
+ componentSubtitle: `import { AutocompleteGroupBy } from 'react-restyle-components'`,
11
+ // backgrounds: {
12
+ // default: 'light-gray',
13
+ // },
14
+ },
15
+ };
16
+ exports.default = meta;
17
+ exports.Primary = {
18
+ args: {
19
+ data: [
20
+ {
21
+ title: 'Country',
22
+ code: 'C',
23
+ children: [
24
+ { title: 'India', code: 'I' },
25
+ { title: 'United States', code: 'US' },
26
+ ],
27
+ },
28
+ ],
29
+ hasError: true,
30
+ onChange: () => { },
31
+ onClose: () => { },
32
+ },
33
+ };
@@ -135,10 +135,12 @@ const Autocomplete = ({ value = '', onValueChange, options = [], }) => {
135
135
  inputRef.current?.select();
136
136
  }, 0);
137
137
  options[0] && onValueChange(options[0]);
138
- setShouldShowList(true);
138
+ // setShouldShowList(true);
139
139
  }, []);
140
140
  return (react_1.default.createElement(react_1.default.Fragment, null,
141
- react_1.default.createElement("input", { type: "text", role: "input", name: "autocomplete-input", onChange: onInputChange, onKeyDown: onKeyDown, value: searchValue, ref: inputRef }),
141
+ react_1.default.createElement("input", { type: "text", role: "input", name: "autocomplete-input", onChange: onInputChange, onKeyDown: onKeyDown, value: searchValue, ref: inputRef, onClick: () => {
142
+ setShouldShowList(true);
143
+ } }),
142
144
  renderList()));
143
145
  };
144
146
  exports.Autocomplete = Autocomplete;
@@ -0,0 +1 @@
1
+ import '@testing-library/jest-dom';
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const react_2 = require("@testing-library/react");
8
+ require("@testing-library/jest-dom");
9
+ const autocomplete_1 = require("./autocomplete");
10
+ const TEST_OPTIONS = ['ONE', 'TWO', 'THREE', 'FOUR', 'FIVE'];
11
+ test('Render Autocomplete', () => {
12
+ (0, react_2.render)(react_1.default.createElement(autocomplete_1.Autocomplete, { value: "", onValueChange: () => { }, options: TEST_OPTIONS }));
13
+ expect(react_2.screen.getByRole('input')).toBeInTheDocument();
14
+ expect(react_2.screen.getByRole('list')).toBeInTheDocument();
15
+ });
16
+ test('Autocomplete with empty list', () => {
17
+ (0, react_2.render)(react_1.default.createElement(autocomplete_1.Autocomplete, { value: "", onValueChange: () => { }, options: [] }));
18
+ expect(react_2.screen.getByRole('input')).toBeInTheDocument();
19
+ expect(react_2.screen.queryByRole('list')).not.toBeInTheDocument();
20
+ });
21
+ test('Autocomplete list arrow navigation', () => {
22
+ const onValueChange = jest.fn();
23
+ window.HTMLElement.prototype.scroll = function () { };
24
+ (0, react_2.render)(react_1.default.createElement(autocomplete_1.Autocomplete, { value: "", onValueChange: onValueChange, options: TEST_OPTIONS }));
25
+ expect(onValueChange).toHaveBeenCalledWith('ONE');
26
+ react_2.fireEvent.keyDown(react_2.screen.getByRole('input'), { keyCode: 40 }); //down
27
+ expect(onValueChange).toHaveBeenCalledWith('TWO');
28
+ expect(react_2.screen.getByText('TWO')).toHaveClass('active-option');
29
+ expect(react_2.screen.getByText('THREE')).toBeInTheDocument();
30
+ react_2.fireEvent.keyDown(react_2.screen.getByRole('input'), { keyCode: 40 }); //down
31
+ expect(onValueChange).toHaveBeenCalledWith('THREE');
32
+ expect(react_2.screen.getByText('THREE')).toHaveClass('active-option');
33
+ });
34
+ test('Autocomplete list option click', () => {
35
+ const onValueChange = jest.fn();
36
+ (0, react_2.render)(react_1.default.createElement(autocomplete_1.Autocomplete, { value: "", onValueChange: onValueChange, options: TEST_OPTIONS }));
37
+ react_2.fireEvent.click(react_2.screen.getByText('FOUR'));
38
+ expect(react_2.screen.getByRole('input')).toHaveValue('FOUR');
39
+ expect(onValueChange).toHaveBeenCalledWith('FOUR');
40
+ expect(react_2.screen.queryByRole('list')).not.toBeInTheDocument();
41
+ });
42
+ test('Autocomplete search', () => {
43
+ const onValueChange = jest.fn();
44
+ (0, react_2.render)(react_1.default.createElement(autocomplete_1.Autocomplete, { value: "", onValueChange: onValueChange, options: TEST_OPTIONS }));
45
+ react_2.fireEvent.change(react_2.screen.getByRole('input'), { target: { value: 'f' } });
46
+ for (let option of TEST_OPTIONS) {
47
+ if (option.toLowerCase().indexOf('f') > -1) {
48
+ expect(react_2.screen.getAllByRole('listitem')).toHaveLength(2);
49
+ expect(react_2.screen.queryByText(option)).toBeInTheDocument();
50
+ }
51
+ else {
52
+ expect(react_2.screen.queryByText(option)).not.toBeInTheDocument();
53
+ }
54
+ }
55
+ });
56
+ test('Autocomplete search default value', () => {
57
+ const onValueChange = jest.fn();
58
+ (0, react_2.render)(react_1.default.createElement(autocomplete_1.Autocomplete, { value: "TWO", onValueChange: onValueChange, options: TEST_OPTIONS }));
59
+ expect(react_2.screen.getByText('TWO')).toHaveClass('active-option');
60
+ });
61
+ test('Autocomplete search no result', () => {
62
+ const onValueChange = jest.fn();
63
+ (0, react_2.render)(react_1.default.createElement(autocomplete_1.Autocomplete, { value: "", onValueChange: onValueChange, options: TEST_OPTIONS }));
64
+ react_2.fireEvent.change(react_2.screen.getByRole('input'), { target: { value: 'hello' } });
65
+ expect(react_2.screen.queryByRole('list')).not.toBeInTheDocument();
66
+ expect(react_2.screen.getByText('No match')).toBeInTheDocument();
67
+ });
68
+ test('Autocomplete with value not in list', () => {
69
+ (0, react_2.render)(react_1.default.createElement(autocomplete_1.Autocomplete, { value: "xxx", onValueChange: () => { }, options: TEST_OPTIONS }));
70
+ expect(react_2.screen.getByRole('input')).toBeInTheDocument();
71
+ expect(react_2.screen.getByText('ONE')).toHaveClass('active-option');
72
+ });
@@ -24,7 +24,6 @@ var __importStar = (this && this.__importStar) || function (mod) {
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.MultiSelect = void 0;
27
- /* eslint-disable */
28
27
  const react_1 = __importStar(require("react"));
29
28
  const MultiSelect = ({ options = [], selectedItems = [], hasError = false, onSelect, }) => {
30
29
  const [selectedOptions, setSelectedOptions] = (0, react_1.useState)([]);
package/lib/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "react-restyle-components",
3
- "version": "0.1.86",
4
- "private": true,
3
+ "version": "0.1.88",
4
+ "private": false,
5
5
  "description": "Easy use restyle components",
6
6
  "author": {
7
7
  "email": "onlyappasaheb4@gmail.com",
@@ -9,33 +9,90 @@
9
9
  "url": "http://github.com/appasaheb4"
10
10
  },
11
11
  "license": "MIT",
12
+ "scripts": {
13
+ "start": "serve -s ./build",
14
+ "dev": "craco start",
15
+ "serve-webapp": "craco build && craco start",
16
+ "build": "rm -rf lib && chmod +x npm-publish.sh && sh ./npm-publish.sh && tsc -p tsconfig.json & tsc -p tsconfig-cjs.json",
17
+ "test": "jest",
18
+ "eject": "react-scripts eject",
19
+ "precommit": "lint-staged --allow-empty",
20
+ "storybook": "storybook dev -p 6006",
21
+ "build-storybook": "rm -rf docs-build && storybook build -o docs-build",
22
+ "deploy-storybook": "gh-pages -d docs-build",
23
+ "prettier": "prettier --write '**/*.{js,jsx}'",
24
+ "go": "npm run build && npm publish"
25
+ },
12
26
  "dependencies": {
27
+ "@loadable/component": "^5.16.4",
28
+ "@mui/material": "^5.15.19",
13
29
  "@testing-library/jest-dom": "^5.17.0",
14
- "@testing-library/react": "^13.4.0",
15
30
  "@testing-library/user-event": "^13.5.0",
16
31
  "@types/jest": "^27.5.2",
17
32
  "@types/node": "^16.18.113",
18
33
  "@types/react": "^18.3.11",
19
34
  "@types/react-dom": "^18.3.0",
35
+ "dayjs": "^1.11.1",
36
+ "jest-environment-jsdom": "^29.7.0",
20
37
  "react": "^18.3.1",
38
+ "react-datepicker": "^4.7.0",
21
39
  "react-dom": "^18.3.1",
40
+ "react-icons": "^5.2.1",
22
41
  "react-scripts": "5.0.1",
42
+ "reactstrap": "^9.0.2",
43
+ "tailwindcss": "^3.0.24",
23
44
  "typescript": "^4.9.5",
24
45
  "web-vitals": "^2.1.4"
25
46
  },
26
- "scripts": {
27
- "start": "serve -s ./build",
28
- "dev": "craco start",
29
- "serve-webapp": "craco build && craco start",
30
- "build": "rm -rf lib && chmod +x npm-publish.sh && sh ./npm-publish.sh && tsc -p tsconfig.json & tsc -p tsconfig-cjs.json",
31
- "test": "react-scripts test",
32
- "eject": "react-scripts eject",
33
- "precommit": "lint-staged --allow-empty",
34
- "storybook": "storybook dev -p 6006",
35
- "build-storybook": "rm -rf docs-build && storybook build -o docs-build",
36
- "deploy-storybook": "gh-pages -d docs-build",
37
- "prettier": "prettier --write '**/*.{js,jsx}'",
38
- "go": "npm run build && npm publish"
47
+ "peerDependencies": {
48
+ "@testing-library/jest-dom": "*",
49
+ "@testing-library/react": "*",
50
+ "@testing-library/user-event": "*",
51
+ "@types/jest": "*",
52
+ "@types/react": "*",
53
+ "@types/react-dom": "*",
54
+ "dayjs": "*",
55
+ "react": "*",
56
+ "react-datepicker": "*",
57
+ "react-dom": "*",
58
+ "react-scripts": "*",
59
+ "reactstrap": "*",
60
+ "tailwindcss": "*",
61
+ "typescript": "*",
62
+ "web-vitals": "*"
63
+ },
64
+ "devDependencies": {
65
+ "@chromatic-com/storybook": "^1.3.1",
66
+ "@craco/craco": "^6.4.3",
67
+ "@emotion/react": "^11.11.4",
68
+ "@emotion/styled": "^11.11.5",
69
+ "@storybook/addon-essentials": "^8.0.6",
70
+ "@storybook/addon-interactions": "^8.0.6",
71
+ "@storybook/addon-links": "^8.0.6",
72
+ "@storybook/addon-onboarding": "^8.0.6",
73
+ "@storybook/addon-webpack5-compiler-swc": "^1.0.2",
74
+ "@storybook/blocks": "^8.0.6",
75
+ "@storybook/react": "^8.0.6",
76
+ "@storybook/react-webpack5": "^8.0.6",
77
+ "@storybook/test": "^8.0.6",
78
+ "@svgr/webpack": "^8.1.0",
79
+ "@testing-library/react": "^16.0.1",
80
+ "autoprefixer": "^10.4.19",
81
+ "copyfiles": "^2.4.1",
82
+ "craco-alias": "^3.0.1",
83
+ "css-loader": "^7.1.2",
84
+ "eslint-plugin-storybook": "^0.8.0",
85
+ "gh-pages": "^3.2.3",
86
+ "husky": "^7.0.4",
87
+ "jest": "^29.7.0",
88
+ "lint-staged": "^12.4.0",
89
+ "postcss-loader": "^8.1.1",
90
+ "sass": "^1.77.5",
91
+ "sass-loader": "^14.2.1",
92
+ "storybook": "^8.0.6",
93
+ "style-loader": "^4.0.0",
94
+ "ts-jest": "^29.2.5",
95
+ "webpack": "^5.72.0"
39
96
  },
40
97
  "files": [
41
98
  "*.md",
@@ -65,13 +122,5 @@
65
122
  "components",
66
123
  "restyle-components",
67
124
  "tech-abl"
68
- ],
69
- "repository": {
70
- "type": "git",
71
- "url": "git+https://github.com/appasaheb4/react-restyle-components.git"
72
- },
73
- "bugs": {
74
- "url": "https://github.com/appasaheb4/react-restyle-components/issues"
75
- },
76
- "homepage": "https://github.com/appasaheb4/react-restyle-components#readme"
125
+ ]
77
126
  }
package/lib/src/App.css CHANGED
@@ -1,5 +1,6 @@
1
- .App {
2
- text-align: center;
1
+ body {
2
+ background-color: #eeeeee;
3
+ padding: 40px;
3
4
  }
4
5
 
5
6
  .App-logo {
package/lib/src/App.js CHANGED
@@ -1,10 +1,19 @@
1
1
  import React from 'react';
2
2
  import './App.css';
3
- import { Autocomplete } from './core-components';
3
+ import { Autocomplete, AutocompleteGroupBy } from './core-components';
4
4
  function App() {
5
5
  return (React.createElement("div", null,
6
- React.createElement("div", null,
7
- React.createElement("p", null, "New testing"),
8
- React.createElement(Autocomplete, { value: "", onValueChange: () => { }, options: ['One', 'Two'] }))));
6
+ React.createElement("p", { style: { margin: '0 0 10px 0' } }, "Autocomplete Comp."),
7
+ React.createElement(Autocomplete, { value: "", onValueChange: () => { }, options: ['One', 'Two', 'Three', 'Four', 'Five', 'Six'] }),
8
+ React.createElement(AutocompleteGroupBy, { data: [
9
+ {
10
+ title: 'Country',
11
+ code: 'C',
12
+ children: [
13
+ { title: 'India', code: 'I' },
14
+ { title: 'United States', code: 'US' },
15
+ ],
16
+ },
17
+ ] })));
9
18
  }
10
19
  export default App;
@@ -21,4 +21,5 @@ export * from './molecules/multi-select/multi-select.component';
21
21
  export * from './molecules/multi-select-with-field/multi-select-with-field.component';
22
22
  export * from './molecules/modal-confirm/modal-confirm.component';
23
23
  export * from './molecules/autocomplete/autocomplete';
24
+ export * from './molecules/auto-complete-group-by/auto-complete-group-by.component';
24
25
  export { Form };
@@ -21,4 +21,5 @@ export * from './molecules/multi-select/multi-select.component';
21
21
  export * from './molecules/multi-select-with-field/multi-select-with-field.component';
22
22
  export * from './molecules/modal-confirm/modal-confirm.component';
23
23
  export * from './molecules/autocomplete/autocomplete';
24
+ export * from './molecules/auto-complete-group-by/auto-complete-group-by.component';
24
25
  export { Form };
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ interface AutocompleteGroupByProps {
3
+ data: any[];
4
+ onChange?: (item: any, children: any) => void;
5
+ hasError?: boolean;
6
+ displayValue?: string;
7
+ onClose?: () => void;
8
+ }
9
+ export declare const AutocompleteGroupBy: (props: AutocompleteGroupByProps) => React.JSX.Element;
10
+ export {};