react-restyle-components 0.1.84 → 0.1.86
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/index.d.ts +2 -0
- package/lib/cjs/index.js +18 -0
- package/lib/cjs/src/App.d.ts +4 -0
- package/lib/cjs/src/App.js +15 -0
- package/lib/cjs/src/core-components/atoms/buttons/button.stories.d.ts +6 -0
- package/lib/cjs/src/core-components/atoms/buttons/button.stories.js +42 -0
- package/lib/cjs/src/core-components/atoms/buttons/buttons.component.d.ts +11 -0
- package/lib/cjs/src/core-components/atoms/buttons/buttons.component.js +15 -0
- package/lib/cjs/src/core-components/atoms/buttons/buttons.test.js +13 -0
- package/lib/cjs/src/core-components/atoms/check-box/checkBox.component.d.ts +11 -0
- package/lib/cjs/src/core-components/atoms/check-box/checkBox.component.js +47 -0
- package/lib/cjs/src/core-components/atoms/check-box/checkBox.stories.d.ts +6 -0
- package/lib/cjs/src/core-components/atoms/check-box/checkBox.stories.js +26 -0
- package/lib/cjs/src/core-components/atoms/check-box/checkBox.test.d.ts +1 -0
- package/lib/cjs/src/core-components/atoms/check-box/checkBox.test.js +13 -0
- package/lib/cjs/src/core-components/atoms/date-picker/date-picker.component.d.ts +13 -0
- package/lib/cjs/src/core-components/atoms/date-picker/date-picker.component.js +52 -0
- package/lib/cjs/src/core-components/atoms/date-picker/date-picker.stories.d.ts +6 -0
- package/lib/cjs/src/core-components/atoms/date-picker/date-picker.stories.js +24 -0
- package/lib/cjs/src/core-components/atoms/date-picker/date-picker.test.d.ts +1 -0
- package/lib/cjs/src/core-components/atoms/date-picker/date-picker.test.js +14 -0
- package/lib/cjs/src/core-components/atoms/form/form.component.d.ts +102 -0
- package/lib/cjs/src/core-components/atoms/form/form.component.js +192 -0
- package/lib/cjs/src/core-components/atoms/form/form.test.d.ts +1 -0
- package/lib/cjs/src/core-components/atoms/form/form.test.js +99 -0
- package/lib/cjs/src/core-components/atoms/icons/icons.component.d.ts +11 -0
- package/lib/cjs/src/core-components/atoms/icons/icons.component.js +66 -0
- package/lib/cjs/src/core-components/atoms/icons/icons.stories.d.ts +6 -0
- package/lib/cjs/src/core-components/atoms/icons/icons.stories.js +22 -0
- package/lib/cjs/src/core-components/atoms/icons/icons.test.d.ts +1 -0
- package/lib/cjs/src/core-components/atoms/icons/icons.test.js +15 -0
- package/lib/cjs/src/core-components/atoms/input/input-otp.component.d.ts +15 -0
- package/lib/cjs/src/core-components/atoms/input/input-otp.component.js +88 -0
- package/lib/cjs/src/core-components/atoms/input/input-pin.component.d.ts +16 -0
- package/lib/cjs/src/core-components/atoms/input/input-pin.component.js +107 -0
- package/lib/cjs/src/core-components/atoms/input/input-pin.stories.d.ts +6 -0
- package/lib/cjs/src/core-components/atoms/input/input-pin.stories.js +23 -0
- package/lib/cjs/src/core-components/atoms/input/input-pin.test.d.ts +1 -0
- package/lib/cjs/src/core-components/atoms/input/input-pin.test.js +17 -0
- package/lib/cjs/src/core-components/atoms/input/input.component.d.ts +19 -0
- package/lib/cjs/src/core-components/atoms/input/input.component.js +45 -0
- package/lib/cjs/src/core-components/atoms/input/input.stories.d.ts +6 -0
- package/lib/cjs/src/core-components/atoms/input/input.stories.js +24 -0
- package/lib/cjs/src/core-components/atoms/input/input.test.d.ts +1 -0
- package/lib/cjs/src/core-components/atoms/input/input.test.js +17 -0
- package/lib/cjs/src/core-components/atoms/input-dropdown/input-dropdown.component.d.ts +11 -0
- package/lib/cjs/src/core-components/atoms/input-dropdown/input-dropdown.component.js +64 -0
- package/lib/cjs/src/core-components/atoms/input-dropdown/input-dropdown.stories.d.ts +6 -0
- package/lib/cjs/src/core-components/atoms/input-dropdown/input-dropdown.stories.js +20 -0
- package/lib/cjs/src/core-components/atoms/input-dropdown/input-dropdown.test.d.ts +1 -0
- package/lib/cjs/src/core-components/atoms/input-dropdown/input-dropdown.test.js +13 -0
- package/lib/cjs/src/core-components/atoms/loader/loader.component.d.ts +4 -0
- package/lib/cjs/src/core-components/atoms/loader/loader.component.js +61 -0
- package/lib/cjs/src/core-components/atoms/loader/loader.stories.d.ts +6 -0
- package/lib/cjs/src/core-components/atoms/loader/loader.stories.js +16 -0
- package/lib/cjs/src/core-components/atoms/loader/loader.test.d.ts +1 -0
- package/lib/cjs/src/core-components/atoms/loader/loader.test.js +13 -0
- package/lib/cjs/src/core-components/atoms/radio/radio.component.d.ts +10 -0
- package/lib/cjs/src/core-components/atoms/radio/radio.component.js +49 -0
- package/lib/cjs/src/core-components/atoms/radio/radio.stories.d.ts +6 -0
- package/lib/cjs/src/core-components/atoms/radio/radio.stories.js +25 -0
- package/lib/cjs/src/core-components/atoms/radio/radio.test.d.ts +1 -0
- package/lib/cjs/src/core-components/atoms/radio/radio.test.js +13 -0
- package/lib/cjs/src/core-components/atoms/stepper/stepper.component.d.ts +10 -0
- package/lib/cjs/src/core-components/atoms/stepper/stepper.component.js +42 -0
- package/lib/cjs/src/core-components/atoms/stepper/stepper.stories.d.ts +6 -0
- package/lib/cjs/src/core-components/atoms/stepper/stepper.stories.js +21 -0
- package/lib/cjs/src/core-components/atoms/stepper/stepper.test.d.ts +1 -0
- package/lib/cjs/src/core-components/atoms/stepper/stepper.test.js +12 -0
- package/lib/cjs/src/core-components/atoms/tabs/tabs.component.d.ts +11 -0
- package/lib/cjs/src/core-components/atoms/tabs/tabs.component.js +46 -0
- package/lib/cjs/src/core-components/atoms/tabs/tabs.stories.d.ts +6 -0
- package/lib/cjs/src/core-components/atoms/tabs/tabs.stories.js +25 -0
- package/lib/cjs/src/core-components/atoms/tabs/tabs.test.d.ts +1 -0
- package/lib/cjs/src/core-components/atoms/tabs/tabs.test.js +18 -0
- package/lib/cjs/src/core-components/atoms/timer/timer.component.d.ts +7 -0
- package/lib/cjs/src/core-components/atoms/timer/timer.component.js +106 -0
- package/lib/cjs/src/core-components/atoms/timer/timer.test.d.ts +1 -0
- package/lib/cjs/src/core-components/atoms/timer/timer.test.js +19 -0
- package/lib/cjs/src/core-components/atoms/tooltip/tooltip.component.d.ts +10 -0
- package/lib/cjs/src/core-components/atoms/tooltip/tooltip.component.js +56 -0
- package/lib/cjs/src/core-components/atoms/tooltip/tooltip.component.test.d.ts +1 -0
- package/lib/cjs/src/core-components/atoms/tooltip/tooltip.component.test.js +14 -0
- package/lib/cjs/src/core-components/atoms/tooltip/tooltip.stories.d.ts +6 -0
- package/lib/cjs/src/core-components/atoms/tooltip/tooltip.stories.js +16 -0
- package/lib/cjs/src/core-components/index.d.ts +24 -0
- package/lib/cjs/src/core-components/index.js +53 -0
- package/lib/cjs/src/core-components/molecules/auto-complete-filter-multiple-select-multiple-fields-display/auto-complete-filter-multiple-select-multiple-fields-display.component.d.ts +18 -0
- package/lib/cjs/src/core-components/molecules/auto-complete-filter-multiple-select-multiple-fields-display/auto-complete-filter-multiple-select-multiple-fields-display.component.js +119 -0
- 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 +1 -0
- 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 +14 -0
- package/lib/cjs/src/core-components/molecules/auto-complete-filter-multiple-select-multiple-fields-display/auto-complete-filter-multiple-select-multiple-fields-display.stories.d.ts +6 -0
- package/lib/cjs/src/core-components/molecules/auto-complete-filter-multiple-select-multiple-fields-display/auto-complete-filter-multiple-select-multiple-fields-display.stories.js +48 -0
- package/lib/cjs/src/core-components/molecules/auto-complete-filter-single-select-multiple-fields-display/auto-complete-filter-single-select-multiple-fields-display.component.d.ts +17 -0
- package/lib/cjs/src/core-components/molecules/auto-complete-filter-single-select-multiple-fields-display/auto-complete-filter-single-select-multiple-fields-display.component.js +120 -0
- 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 +1 -0
- 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 +21 -0
- package/lib/cjs/src/core-components/molecules/auto-complete-filter-single-select-multiple-fields-display/auto-complete-filter-single-select-multiple-fields-display.stories.d.ts +6 -0
- package/lib/cjs/src/core-components/molecules/auto-complete-filter-single-select-multiple-fields-display/auto-complete-filter-single-select-multiple-fields-display.stories.js +31 -0
- package/lib/cjs/src/core-components/molecules/autocomplete/autocomplete.d.ts +9 -0
- package/lib/cjs/src/core-components/molecules/autocomplete/autocomplete.js +144 -0
- package/lib/cjs/src/core-components/molecules/autocomplete/autocomplete.stories.d.ts +6 -0
- package/lib/cjs/src/core-components/molecules/autocomplete/autocomplete.stories.js +20 -0
- package/lib/cjs/src/core-components/molecules/css-multiline-input/css-multiline-input.component.d.ts +12 -0
- package/lib/cjs/src/core-components/molecules/css-multiline-input/css-multiline-input.component.js +124 -0
- package/lib/cjs/src/core-components/molecules/css-multiline-input/css-multiline-input.stories.d.ts +6 -0
- package/lib/cjs/src/core-components/molecules/css-multiline-input/css-multiline-input.stories.js +16 -0
- package/lib/cjs/src/core-components/molecules/css-multiline-input/css-multiline-input.test.d.ts +1 -0
- package/lib/cjs/src/core-components/molecules/css-multiline-input/css-multiline-input.test.js +15 -0
- package/lib/cjs/src/core-components/molecules/css-multiline-input/css-properties.d.ts +8931 -0
- package/lib/cjs/src/core-components/molecules/css-multiline-input/css-properties.js +164 -0
- package/lib/cjs/src/core-components/molecules/modal-confirm/modal-confirm.component.d.ts +12 -0
- package/lib/cjs/src/core-components/molecules/modal-confirm/modal-confirm.component.js +60 -0
- package/lib/cjs/src/core-components/molecules/modal-confirm/modal-confirm.stories.d.ts +6 -0
- package/lib/cjs/src/core-components/molecules/modal-confirm/modal-confirm.stories.js +23 -0
- package/lib/cjs/src/core-components/molecules/modal-confirm/modal-confirm.test.d.ts +1 -0
- package/lib/cjs/src/core-components/molecules/modal-confirm/modal-confirm.test.js +15 -0
- package/lib/cjs/src/core-components/molecules/multi-select/multi-select.component.d.ts +9 -0
- package/lib/cjs/src/core-components/molecules/multi-select/multi-select.component.js +79 -0
- package/lib/cjs/src/core-components/molecules/multi-select/multi-select.stories.d.ts +6 -0
- package/lib/cjs/src/core-components/molecules/multi-select/multi-select.stories.js +22 -0
- package/lib/cjs/src/core-components/molecules/multi-select/multi-select.test.d.ts +1 -0
- package/lib/cjs/src/core-components/molecules/multi-select/multi-select.test.js +15 -0
- package/lib/cjs/src/core-components/molecules/multi-select-with-field/multi-select-with-field.component.d.ts +10 -0
- package/lib/cjs/src/core-components/molecules/multi-select-with-field/multi-select-with-field.component.js +88 -0
- package/lib/cjs/src/core-components/molecules/multi-select-with-field/multi-select-with-field.stories.d.ts +6 -0
- package/lib/cjs/src/core-components/molecules/multi-select-with-field/multi-select-with-field.stories.js +23 -0
- package/lib/cjs/src/core-components/molecules/multi-select-with-field/multi-select-with-field.test.d.ts +1 -0
- package/lib/cjs/src/core-components/molecules/multi-select-with-field/multi-select-with-field.test.js +17 -0
- package/lib/cjs/src/core-utils/index.d.ts +1 -0
- package/lib/cjs/src/core-utils/index.js +17 -0
- package/lib/cjs/src/core-utils/unit-test.utils.d.ts +4 -0
- package/lib/cjs/src/core-utils/unit-test.utils.js +16 -0
- package/lib/cjs/src/index.d.ts +1 -0
- package/lib/cjs/src/index.js +17 -0
- package/lib/cjs/src/library/assets/svg/index.d.ts +9 -0
- package/lib/cjs/src/library/assets/svg/index.js +40 -0
- package/lib/cjs/src/reportWebVitals.d.ts +3 -0
- package/lib/cjs/src/reportWebVitals.js +37 -0
- package/lib/cjs/src/setupTests.d.ts +1 -0
- package/lib/cjs/src/setupTests.js +7 -0
- package/lib/package.json +24 -97
- package/lib/src/App.js +5 -9
- package/lib/src/core-components/atoms/buttons/buttons.component.d.ts +1 -1
- package/lib/src/core-components/atoms/buttons/buttons.component.js +1 -1
- package/lib/src/core-components/atoms/check-box/checkBox.component.d.ts +1 -1
- package/lib/src/core-components/atoms/check-box/checkBox.component.js +2 -2
- package/lib/src/core-components/atoms/check-box/checkBox.stories.d.ts +1 -1
- package/lib/src/core-components/atoms/check-box/checkBox.stories.js +1 -1
- package/lib/src/core-components/atoms/date-picker/date-picker.component.d.ts +1 -1
- package/lib/src/core-components/atoms/date-picker/date-picker.component.js +1 -1
- package/lib/src/core-components/atoms/form/form.component.d.ts +2 -2
- package/lib/src/core-components/atoms/form/form.component.js +2 -2
- package/lib/src/core-components/atoms/icons/icons.component.d.ts +1 -2
- package/lib/src/core-components/atoms/icons/icons.component.js +1 -1
- package/lib/src/core-components/atoms/input/input-otp.component.d.ts +1 -1
- package/lib/src/core-components/atoms/input/input-otp.component.js +1 -1
- package/lib/src/core-components/atoms/input/input-pin.component.d.ts +1 -1
- package/lib/src/core-components/atoms/input/input-pin.component.js +1 -1
- package/lib/src/core-components/atoms/input/input.component.d.ts +1 -1
- package/lib/src/core-components/atoms/input/input.component.js +1 -1
- package/lib/src/core-components/atoms/input-dropdown/input-dropdown.component.d.ts +1 -1
- package/lib/src/core-components/atoms/input-dropdown/input-dropdown.component.js +1 -1
- package/lib/src/core-components/atoms/loader/loader.component.d.ts +1 -1
- package/lib/src/core-components/atoms/loader/loader.component.js +1 -1
- package/lib/src/core-components/atoms/radio/radio.component.d.ts +1 -1
- package/lib/src/core-components/atoms/radio/radio.component.js +1 -1
- package/lib/src/core-components/atoms/stepper/stepper.component.d.ts +1 -1
- package/lib/src/core-components/atoms/stepper/stepper.component.js +1 -1
- package/lib/src/core-components/atoms/tabs/tabs.component.d.ts +1 -1
- package/lib/src/core-components/atoms/tabs/tabs.component.js +1 -1
- package/lib/src/core-components/atoms/timer/timer.component.d.ts +1 -1
- package/lib/src/core-components/atoms/timer/timer.component.js +1 -1
- package/lib/src/core-components/atoms/tooltip/tooltip.component.d.ts +1 -1
- package/lib/src/core-components/atoms/tooltip/tooltip.component.js +1 -1
- package/lib/src/core-components/index.d.ts +2 -1
- package/lib/src/core-components/index.js +2 -1
- package/lib/src/core-components/molecules/auto-complete-filter-multiple-select-multiple-fields-display/auto-complete-filter-multiple-select-multiple-fields-display.component.d.ts +1 -1
- package/lib/src/core-components/molecules/auto-complete-filter-multiple-select-multiple-fields-display/auto-complete-filter-multiple-select-multiple-fields-display.component.js +1 -1
- package/lib/src/core-components/molecules/auto-complete-filter-single-select-multiple-fields-display/auto-complete-filter-single-select-multiple-fields-display.component.d.ts +1 -1
- package/lib/src/core-components/molecules/auto-complete-filter-single-select-multiple-fields-display/auto-complete-filter-single-select-multiple-fields-display.component.js +1 -1
- package/lib/src/core-components/molecules/autocomplete/autocomplete.css +46 -0
- package/lib/src/core-components/molecules/autocomplete/autocomplete.d.ts +9 -0
- package/lib/src/core-components/molecules/autocomplete/autocomplete.js +117 -0
- package/lib/src/core-components/molecules/autocomplete/autocomplete.stories.d.ts +6 -0
- package/lib/src/core-components/molecules/autocomplete/autocomplete.stories.js +17 -0
- package/lib/src/core-components/molecules/css-multiline-input/css-multiline-input.component.d.ts +1 -1
- package/lib/src/core-components/molecules/css-multiline-input/css-multiline-input.component.js +1 -1
- package/lib/src/core-components/molecules/modal-confirm/modal-confirm.component.d.ts +2 -1
- package/lib/src/core-components/molecules/modal-confirm/modal-confirm.component.js +2 -2
- package/lib/src/core-components/molecules/modal-confirm/modal-confirm.stories.d.ts +1 -1
- package/lib/src/core-components/molecules/modal-confirm/modal-confirm.stories.js +1 -1
- package/lib/src/index.css +17 -4
- package/lib/src/index.d.ts +1 -1
- package/lib/src/index.js +12 -1
- package/lib/src/reportWebVitals.d.ts +3 -1
- package/lib/src/reportWebVitals.js +12 -2
- package/lib/src/tc.css +1 -0
- package/lib/tc.css +1 -1
- package/package.json +23 -96
- package/lib/src/App.test.js +0 -8
- /package/lib/{src/App.test.d.ts → cjs/src/core-components/atoms/buttons/buttons.test.d.ts} +0 -0
|
@@ -0,0 +1,119 @@
|
|
|
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.AutoCompleteFilterMultipleSelectMultipleFieldsDisplay = void 0;
|
|
27
|
+
/* eslint-disable */
|
|
28
|
+
const react_1 = __importStar(require("react"));
|
|
29
|
+
const __1 = require("../..");
|
|
30
|
+
require("../../../tc.css");
|
|
31
|
+
const AutoCompleteFilterMultipleSelectMultipleFieldsDisplay = ({ uniqueField = '_id', loader = false, placeholder = 'Search...', data, hasError = false, disable = false, isUpperCase = false, name, onFilter, onUpdate, onSelect, onBlur, }) => {
|
|
32
|
+
const [value, setValue] = (0, react_1.useState)('');
|
|
33
|
+
const [options, setOptions] = (0, react_1.useState)();
|
|
34
|
+
const [originalOptions, setOriginalOptions] = (0, react_1.useState)();
|
|
35
|
+
const [isListOpen, setIsListOpen] = (0, react_1.useState)(false);
|
|
36
|
+
const useOutsideAlerter = (ref) => {
|
|
37
|
+
(0, react_1.useEffect)(() => {
|
|
38
|
+
function handleClickOutside(event) {
|
|
39
|
+
if (ref.current && !ref.current.contains(event.target) && isListOpen) {
|
|
40
|
+
if (originalOptions && options) {
|
|
41
|
+
if (isListOpen) {
|
|
42
|
+
onUpdate && onUpdate(data.selected);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
setIsListOpen(false);
|
|
46
|
+
setValue('');
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
document.addEventListener('mousedown', handleClickOutside);
|
|
50
|
+
return () => {
|
|
51
|
+
document.removeEventListener('mousedown', handleClickOutside);
|
|
52
|
+
};
|
|
53
|
+
}, [ref, isListOpen]);
|
|
54
|
+
};
|
|
55
|
+
const wrapperRef = (0, react_1.useRef)(null);
|
|
56
|
+
useOutsideAlerter(wrapperRef);
|
|
57
|
+
let count = 0;
|
|
58
|
+
const getSelectedItem = (selectedItem, list) => {
|
|
59
|
+
if (count === 0) {
|
|
60
|
+
const finalList = list?.filter((item, index) => {
|
|
61
|
+
item.selected = false;
|
|
62
|
+
selectedItem && selectedItem.length > 0
|
|
63
|
+
? selectedItem.find((sItem, index) => {
|
|
64
|
+
if (sItem[uniqueField] === item[uniqueField]) {
|
|
65
|
+
item.selected = true;
|
|
66
|
+
}
|
|
67
|
+
})
|
|
68
|
+
: (item.selected = false);
|
|
69
|
+
count++;
|
|
70
|
+
return item;
|
|
71
|
+
});
|
|
72
|
+
list = finalList;
|
|
73
|
+
}
|
|
74
|
+
return list;
|
|
75
|
+
};
|
|
76
|
+
(0, react_1.useEffect)(() => {
|
|
77
|
+
setOriginalOptions(getSelectedItem(data.selected, data.list));
|
|
78
|
+
setOptions(getSelectedItem(data.selected, data.list));
|
|
79
|
+
}, [data, data.selected]);
|
|
80
|
+
const onChange = (e) => {
|
|
81
|
+
const search = e.target.value;
|
|
82
|
+
setValue(search);
|
|
83
|
+
onFilter && onFilter(search);
|
|
84
|
+
};
|
|
85
|
+
const onKeyUp = (e) => {
|
|
86
|
+
const charCode = e.which ? e.which : e.keyCode;
|
|
87
|
+
if (charCode === 8) {
|
|
88
|
+
const search = e.target.value;
|
|
89
|
+
onFilter && onFilter(search);
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
93
|
+
react_1.default.createElement("div", { ref: wrapperRef, className: "w-full relative" },
|
|
94
|
+
react_1.default.createElement("div", { className: `flex items-center leading-4 p-2 focus:outline-none focus:ring w-full shadow-sm sm:text-base border-2 ${hasError ? 'border-red' : 'border-gray-300'} rounded-md` },
|
|
95
|
+
react_1.default.createElement("input", { placeholder: placeholder, disabled: disable, name: name, value: !isListOpen
|
|
96
|
+
? `${(data.selected && data.selected.length) || 0} Items`
|
|
97
|
+
: isUpperCase
|
|
98
|
+
? value?.toUpperCase()
|
|
99
|
+
: value, className: `w-full focus:outline-none bg-none`, onKeyUp: onKeyUp, onChange: onChange, onClick: () => setIsListOpen(true), onBlur: (e) => onBlur && onBlur(e) }),
|
|
100
|
+
isListOpen ? (react_1.default.createElement(__1.Icon, { nameIcon: "FaChevronUp", propsIcon: {
|
|
101
|
+
color: '#000000',
|
|
102
|
+
size: 22,
|
|
103
|
+
} })) : (react_1.default.createElement(__1.Icon, { nameIcon: "FaChevronDown", propsIcon: {
|
|
104
|
+
color: '#000000',
|
|
105
|
+
size: 22,
|
|
106
|
+
} }))),
|
|
107
|
+
options && isListOpen
|
|
108
|
+
? options?.length > 0 && (react_1.default.createElement("div", { className: "mt-1 absolute bg-gray-100 p-2 rounded-sm z-500", style: { zIndex: 80 } },
|
|
109
|
+
react_1.default.createElement("ul", null, options?.map((item, index) => (react_1.default.createElement(react_1.default.Fragment, null,
|
|
110
|
+
react_1.default.createElement("li", { key: index, className: "text-gray-400 flex items-center" },
|
|
111
|
+
react_1.default.createElement("input", { type: "checkbox", checked: item.selected, onChange: () => onSelect(item) }),
|
|
112
|
+
' ',
|
|
113
|
+
react_1.default.createElement("label", { className: "ml-2 mt-1 text-black" }, data.displayKey
|
|
114
|
+
.map((key) => `${item[key]}
|
|
115
|
+
`)
|
|
116
|
+
.join(' - ')))))))))
|
|
117
|
+
: null)));
|
|
118
|
+
};
|
|
119
|
+
exports.AutoCompleteFilterMultipleSelectMultipleFieldsDisplay = AutoCompleteFilterMultipleSelectMultipleFieldsDisplay;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -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 _core_utils_1 = require("@core-utils");
|
|
8
|
+
const auto_complete_filter_multiple_select_multiple_fields_display_component_1 = require("./auto-complete-filter-multiple-select-multiple-fields-display.component");
|
|
9
|
+
it('render AutoCompleteFilterMultipleSelectMultipleFieldsDisplay correctly', () => {
|
|
10
|
+
const autoCompleteFilterMultipleSelectMultipleFieldsDisplay = (0, _core_utils_1.render)(react_1.default.createElement(auto_complete_filter_multiple_select_multiple_fields_display_component_1.AutoCompleteFilterMultipleSelectMultipleFieldsDisplay, { data: [], onUpdate: (item) => {
|
|
11
|
+
console.log({ item });
|
|
12
|
+
}, onSelect: (item) => { } }));
|
|
13
|
+
expect(autoCompleteFilterMultipleSelectMultipleFieldsDisplay).toMatchSnapshot();
|
|
14
|
+
});
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
+
import { AutoCompleteFilterMultipleSelectMultipleFieldsDisplay } from './auto-complete-filter-multiple-select-multiple-fields-display.component';
|
|
3
|
+
declare const meta: Meta<typeof AutoCompleteFilterMultipleSelectMultipleFieldsDisplay>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof AutoCompleteFilterMultipleSelectMultipleFieldsDisplay>;
|
|
6
|
+
export declare const Primary: Story;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Primary = void 0;
|
|
4
|
+
const auto_complete_filter_multiple_select_multiple_fields_display_component_1 = require("./auto-complete-filter-multiple-select-multiple-fields-display.component");
|
|
5
|
+
const meta = {
|
|
6
|
+
title: 'Design System/Molecules/AutoCompleteFilterMultipleSelectMultipleFieldsDisplay',
|
|
7
|
+
component: auto_complete_filter_multiple_select_multiple_fields_display_component_1.AutoCompleteFilterMultipleSelectMultipleFieldsDisplay,
|
|
8
|
+
tags: ['autodocs'],
|
|
9
|
+
parameters: {
|
|
10
|
+
componentSubtitle: `import { AutoCompleteFilterMultipleSelectMultipleFieldsDisplay } from 'react-restyle-components'`,
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
exports.default = meta;
|
|
14
|
+
exports.Primary = {
|
|
15
|
+
args: {
|
|
16
|
+
data: {
|
|
17
|
+
list: [
|
|
18
|
+
{
|
|
19
|
+
_id: '66532a99bbfed4eea86eae23',
|
|
20
|
+
code: 82,
|
|
21
|
+
description: 'TEST1',
|
|
22
|
+
libraryCode: 'ABCD',
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
_id: '6652b6d8bcef7f713cb547d4',
|
|
26
|
+
code: 81,
|
|
27
|
+
description: 'TEST New',
|
|
28
|
+
libraryCode: 'TEST',
|
|
29
|
+
},
|
|
30
|
+
],
|
|
31
|
+
selected: [
|
|
32
|
+
{
|
|
33
|
+
_id: '66532a99bbfed4eea86eae23',
|
|
34
|
+
code: 82,
|
|
35
|
+
description: 'TEST1',
|
|
36
|
+
libraryCode: 'ABCD',
|
|
37
|
+
},
|
|
38
|
+
],
|
|
39
|
+
displayKey: ['libraryCode', 'description'],
|
|
40
|
+
},
|
|
41
|
+
onUpdate: (item) => {
|
|
42
|
+
console.log({ item });
|
|
43
|
+
},
|
|
44
|
+
onSelect: (item) => {
|
|
45
|
+
console.log({ item });
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import '../../../tc.css';
|
|
3
|
+
interface AutoCompleteFilterSingleSelectMultiFieldsDisplayProps {
|
|
4
|
+
loader?: boolean;
|
|
5
|
+
disable?: boolean;
|
|
6
|
+
displayValue?: string;
|
|
7
|
+
placeholder?: string;
|
|
8
|
+
data: any;
|
|
9
|
+
hasError?: boolean;
|
|
10
|
+
className?: string;
|
|
11
|
+
posstion?: string;
|
|
12
|
+
onFilter?: (item: any) => void;
|
|
13
|
+
onSelect?: (item: any) => any;
|
|
14
|
+
onBlur?: (item: any) => any;
|
|
15
|
+
}
|
|
16
|
+
export declare const AutoCompleteFilterSingleSelectMultiFieldsDisplay: ({ disable, loader, displayValue, placeholder, data, hasError, className, posstion, onFilter, onSelect, onBlur, }: AutoCompleteFilterSingleSelectMultiFieldsDisplayProps) => React.JSX.Element;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,120 @@
|
|
|
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.AutoCompleteFilterSingleSelectMultiFieldsDisplay = void 0;
|
|
27
|
+
/* eslint-disable */
|
|
28
|
+
const react_1 = __importStar(require("react"));
|
|
29
|
+
const __1 = require("../..");
|
|
30
|
+
require("../../../tc.css");
|
|
31
|
+
const AutoCompleteFilterSingleSelectMultiFieldsDisplay = ({ disable = false, loader = false, displayValue = '', placeholder = 'Search...', data, hasError = false, className, posstion = 'absolute', onFilter, onSelect, onBlur, }) => {
|
|
32
|
+
const [value, setValue] = (0, react_1.useState)(displayValue);
|
|
33
|
+
const [options, setOptions] = (0, react_1.useState)(data.list);
|
|
34
|
+
const [isListOpen, setIsListOpen] = (0, react_1.useState)(false);
|
|
35
|
+
const [filterValue, setFilterValue] = (0, react_1.useState)();
|
|
36
|
+
const useOutsideAlerter = (ref) => {
|
|
37
|
+
(0, react_1.useEffect)(() => {
|
|
38
|
+
function handleClickOutside(event) {
|
|
39
|
+
if (ref.current && !ref.current.contains(event.target) && isListOpen) {
|
|
40
|
+
setIsListOpen(false);
|
|
41
|
+
//setValue('');
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
document.addEventListener('mousedown', handleClickOutside);
|
|
45
|
+
return () => {
|
|
46
|
+
document.removeEventListener('mousedown', handleClickOutside);
|
|
47
|
+
};
|
|
48
|
+
}, [ref, isListOpen]);
|
|
49
|
+
};
|
|
50
|
+
const wrapperRef = (0, react_1.useRef)(null);
|
|
51
|
+
useOutsideAlerter(wrapperRef);
|
|
52
|
+
(0, react_1.useEffect)(() => {
|
|
53
|
+
setOptions(data.list);
|
|
54
|
+
}, [data]);
|
|
55
|
+
(0, react_1.useEffect)(() => {
|
|
56
|
+
setValue(displayValue);
|
|
57
|
+
}, [displayValue]);
|
|
58
|
+
const onChange = (e) => {
|
|
59
|
+
const search = e.target.value?.toUpperCase();
|
|
60
|
+
setValue(search);
|
|
61
|
+
setFilterValue(search);
|
|
62
|
+
onFilter && onFilter(search);
|
|
63
|
+
};
|
|
64
|
+
const onKeyUp = (e) => {
|
|
65
|
+
const charCode = e.which ? e.which : e.keyCode;
|
|
66
|
+
if (charCode === 8) {
|
|
67
|
+
const search = e.target.value;
|
|
68
|
+
onFilter && onFilter(search);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
const onKeyDown = (e) => {
|
|
72
|
+
if (e.key === 'Enter' || e.key === 'Tab') {
|
|
73
|
+
if (options.length > 0) {
|
|
74
|
+
const selectedItem = options.find((item) => item.labId === Number(value));
|
|
75
|
+
if (selectedItem) {
|
|
76
|
+
setValue(data.displayKey.map((key) => `${selectedItem[key]}`).join(' - '));
|
|
77
|
+
setIsListOpen(false);
|
|
78
|
+
onSelect && onSelect(selectedItem);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
84
|
+
react_1.default.createElement("div", { ref: wrapperRef, className: "w-full relative" },
|
|
85
|
+
react_1.default.createElement("div", { className: `flex items-center leading-4 p-2 focus:outline-none focus:ring w-full shadow-sm sm:text-base border-2 ${hasError ? 'border-red' : 'border-gray-300'} rounded-md dark:text-black` },
|
|
86
|
+
react_1.default.createElement("input", { placeholder: placeholder, value: value, className: `${className} w-full focus:outline-none bg-none dark:text-black`, onKeyUp: onKeyUp, onChange: onChange, onClick: () => setIsListOpen(true), disabled: disable, onMouseDown: () => setValue(''), onBlur: (e) => onBlur && onBlur(e), onKeyDown: onKeyDown }),
|
|
87
|
+
isListOpen ? (react_1.default.createElement(__1.Icon, { nameIcon: "FaChevronUp", propsIcon: {
|
|
88
|
+
color: '#000000',
|
|
89
|
+
size: 22,
|
|
90
|
+
} })) : (react_1.default.createElement(__1.Icon, { nameIcon: "FaChevronDown", propsIcon: {
|
|
91
|
+
color: '#000000',
|
|
92
|
+
size: 22,
|
|
93
|
+
} }))),
|
|
94
|
+
options && isListOpen
|
|
95
|
+
? options.length > 0 && (react_1.default.createElement("div", { className: `mt-1 absolute w-full bg-gray-100 p-2 rounded-sm `, style: {
|
|
96
|
+
zIndex: 500,
|
|
97
|
+
} },
|
|
98
|
+
react_1.default.createElement("ul", null, options?.map((item, index) => (react_1.default.createElement("li", { key: index, className: "text-gray-400 flex items-center", onClick: () => {
|
|
99
|
+
setValue(data.displayKey
|
|
100
|
+
.map((key) => `${item[key]}`)
|
|
101
|
+
.join(' - '));
|
|
102
|
+
setIsListOpen(false);
|
|
103
|
+
onSelect && onSelect(item);
|
|
104
|
+
} },
|
|
105
|
+
' ',
|
|
106
|
+
react_1.default.createElement("label", { className: "ml-2 mt-1 text-black", style: {
|
|
107
|
+
textOverflow: 'ellipsis',
|
|
108
|
+
minWidth: 0,
|
|
109
|
+
overflow: 'hidden',
|
|
110
|
+
maxWidth: '334px',
|
|
111
|
+
whiteSpace: 'nowrap',
|
|
112
|
+
}, title: data.displayKey
|
|
113
|
+
.map((key) => item[key])
|
|
114
|
+
.join(' - ') }, data.displayKey
|
|
115
|
+
.map((key) => `${item[key]}
|
|
116
|
+
`)
|
|
117
|
+
.join(' - '))))))))
|
|
118
|
+
: null)));
|
|
119
|
+
};
|
|
120
|
+
exports.AutoCompleteFilterSingleSelectMultiFieldsDisplay = AutoCompleteFilterSingleSelectMultiFieldsDisplay;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
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_filter_single_select_multiple_fields_display_component_1 = require("./auto-complete-filter-single-select-multiple-fields-display.component");
|
|
9
|
+
describe('AutoCompleteFilterSingleSelectMultiFieldsDisplay component', () => {
|
|
10
|
+
it('render autoCompleteFilterSingleSelectMultiFieldsDisplay correctly', () => {
|
|
11
|
+
const autoCompleteFilterSingleSelectMultiFieldsDisplay = (0, react_2.render)(react_1.default.createElement(auto_complete_filter_single_select_multiple_fields_display_component_1.AutoCompleteFilterSingleSelectMultiFieldsDisplay, { data: {
|
|
12
|
+
list: [
|
|
13
|
+
{ code: 'Lims', name: 'plus' },
|
|
14
|
+
{ code: 'Lims', name: 'plus' },
|
|
15
|
+
{ code: 'Lims', name: 'plus' },
|
|
16
|
+
],
|
|
17
|
+
displayKey: ['name'],
|
|
18
|
+
}, onSelect: () => jest.fn(), onFilter: () => jest.fn() }));
|
|
19
|
+
expect(autoCompleteFilterSingleSelectMultiFieldsDisplay).toMatchSnapshot();
|
|
20
|
+
});
|
|
21
|
+
});
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
+
import { AutoCompleteFilterSingleSelectMultiFieldsDisplay } from './auto-complete-filter-single-select-multiple-fields-display.component';
|
|
3
|
+
declare const meta: Meta<typeof AutoCompleteFilterSingleSelectMultiFieldsDisplay>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof AutoCompleteFilterSingleSelectMultiFieldsDisplay>;
|
|
6
|
+
export declare const Primary: Story;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Primary = void 0;
|
|
4
|
+
const auto_complete_filter_single_select_multiple_fields_display_component_1 = require("./auto-complete-filter-single-select-multiple-fields-display.component");
|
|
5
|
+
const meta = {
|
|
6
|
+
title: 'Design System/Molecules/AutoCompleteFilterSingleSelectMultiFieldsDisplay',
|
|
7
|
+
component: auto_complete_filter_single_select_multiple_fields_display_component_1.AutoCompleteFilterSingleSelectMultiFieldsDisplay,
|
|
8
|
+
tags: ['autodocs'],
|
|
9
|
+
parameters: {
|
|
10
|
+
componentSubtitle: `import { AutoCompleteFilterSingleSelectMultiFieldsDisplay } 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
|
+
list: [
|
|
21
|
+
{ code: 'Code1', name: 'Value1' },
|
|
22
|
+
{ code: 'Code2', name: 'Value2' },
|
|
23
|
+
{ code: 'Code3', name: 'Value3' },
|
|
24
|
+
],
|
|
25
|
+
displayKey: ['name'],
|
|
26
|
+
},
|
|
27
|
+
onSelect: (item) => {
|
|
28
|
+
console.log({ item });
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './autocomplete.css';
|
|
3
|
+
interface AutocompleteProps {
|
|
4
|
+
value: string;
|
|
5
|
+
onValueChange: (value: string) => void;
|
|
6
|
+
options?: string[];
|
|
7
|
+
}
|
|
8
|
+
export declare const Autocomplete: ({ value, onValueChange, options, }: AutocompleteProps) => React.JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,144 @@
|
|
|
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.Autocomplete = void 0;
|
|
27
|
+
const react_1 = __importStar(require("react"));
|
|
28
|
+
require("./autocomplete.css");
|
|
29
|
+
const LI_ELEMENT_HEIGHT = 34;
|
|
30
|
+
const Autocomplete = ({ value = '', onValueChange, options = [], }) => {
|
|
31
|
+
const [activeOption, setActiveOption] = (0, react_1.useState)(value === '' || options.indexOf(value) === -1 ? 0 : options.indexOf(value));
|
|
32
|
+
const [filteredOptions, setFilteredOptions] = (0, react_1.useState)(options);
|
|
33
|
+
const [shouldShowList, setShouldShowList] = (0, react_1.useState)(false);
|
|
34
|
+
const [searchValue, setSearchValue] = (0, react_1.useState)(value);
|
|
35
|
+
const inputRef = (0, react_1.useRef)(null);
|
|
36
|
+
const listRef = (0, react_1.useRef)(null);
|
|
37
|
+
const onInputChange = (0, react_1.useCallback)((event) => {
|
|
38
|
+
const input = event.target.value;
|
|
39
|
+
if (input != '') {
|
|
40
|
+
const newFilteredOptions = options.filter((option) => option.toLowerCase().indexOf(input.toLowerCase()) > -1);
|
|
41
|
+
setFilteredOptions(newFilteredOptions);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
setFilteredOptions(options);
|
|
45
|
+
}
|
|
46
|
+
setActiveOption(0);
|
|
47
|
+
setShouldShowList(true);
|
|
48
|
+
setSearchValue(input);
|
|
49
|
+
}, [
|
|
50
|
+
setActiveOption,
|
|
51
|
+
setFilteredOptions,
|
|
52
|
+
setShouldShowList,
|
|
53
|
+
setSearchValue,
|
|
54
|
+
onValueChange,
|
|
55
|
+
]);
|
|
56
|
+
const onOptionClick = (0, react_1.useCallback)((event) => {
|
|
57
|
+
const symbol = event.currentTarget.innerText || event.currentTarget.textContent || '';
|
|
58
|
+
setShouldShowList(false);
|
|
59
|
+
setActiveOption(0);
|
|
60
|
+
setFilteredOptions([]);
|
|
61
|
+
setSearchValue(symbol);
|
|
62
|
+
onValueChange(symbol);
|
|
63
|
+
}, [
|
|
64
|
+
setShouldShowList,
|
|
65
|
+
setActiveOption,
|
|
66
|
+
setFilteredOptions,
|
|
67
|
+
setSearchValue,
|
|
68
|
+
onValueChange,
|
|
69
|
+
]);
|
|
70
|
+
const onKeyDown = (0, react_1.useCallback)((event) => {
|
|
71
|
+
let selectedItem = '';
|
|
72
|
+
if (event.keyCode === 38) {
|
|
73
|
+
// arrow up
|
|
74
|
+
event.preventDefault();
|
|
75
|
+
if (activeOption === 0) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
selectedItem = options[activeOption - 1];
|
|
80
|
+
setSearchValue(options[activeOption - 1]);
|
|
81
|
+
setActiveOption(activeOption - 1);
|
|
82
|
+
listRef.current?.scroll({
|
|
83
|
+
top: LI_ELEMENT_HEIGHT * (activeOption - 1),
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
else if (event.keyCode === 40) {
|
|
88
|
+
// arrow down
|
|
89
|
+
event.preventDefault();
|
|
90
|
+
if (activeOption === filteredOptions.length - 1) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
selectedItem = options[activeOption + 1];
|
|
95
|
+
setSearchValue(options[activeOption + 1]);
|
|
96
|
+
setActiveOption(activeOption + 1);
|
|
97
|
+
listRef.current?.scroll({
|
|
98
|
+
top: LI_ELEMENT_HEIGHT * (activeOption + 1),
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (Object.keys(selectedItem)?.length > 0) {
|
|
103
|
+
onValueChange(selectedItem);
|
|
104
|
+
}
|
|
105
|
+
}, [
|
|
106
|
+
setActiveOption,
|
|
107
|
+
setSearchValue,
|
|
108
|
+
filteredOptions,
|
|
109
|
+
activeOption,
|
|
110
|
+
onValueChange,
|
|
111
|
+
]);
|
|
112
|
+
const renderList = () => {
|
|
113
|
+
if (!options.length) {
|
|
114
|
+
return react_1.default.createElement(react_1.default.Fragment, null);
|
|
115
|
+
}
|
|
116
|
+
if (shouldShowList) {
|
|
117
|
+
if (filteredOptions.length) {
|
|
118
|
+
return (react_1.default.createElement("ul", { role: "list", className: "autocomplete-list", id: "list", ref: listRef }, filteredOptions?.map((option, index) => {
|
|
119
|
+
let className = '';
|
|
120
|
+
if (index === activeOption) {
|
|
121
|
+
className = 'active-option';
|
|
122
|
+
}
|
|
123
|
+
return (react_1.default.createElement("li", { className: className, role: "listitem", key: index, onClick: onOptionClick }, option));
|
|
124
|
+
})));
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
return react_1.default.createElement("div", { className: "no-options" }, "No match");
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return react_1.default.createElement(react_1.default.Fragment, null);
|
|
131
|
+
};
|
|
132
|
+
(0, react_1.useEffect)(() => {
|
|
133
|
+
// this only works on click when inside timeout
|
|
134
|
+
setTimeout(() => {
|
|
135
|
+
inputRef.current?.select();
|
|
136
|
+
}, 0);
|
|
137
|
+
options[0] && onValueChange(options[0]);
|
|
138
|
+
setShouldShowList(true);
|
|
139
|
+
}, []);
|
|
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 }),
|
|
142
|
+
renderList()));
|
|
143
|
+
};
|
|
144
|
+
exports.Autocomplete = Autocomplete;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Primary = void 0;
|
|
4
|
+
const autocomplete_1 = require("./autocomplete");
|
|
5
|
+
const meta = {
|
|
6
|
+
title: 'Design System/Molecules/Autocomplete',
|
|
7
|
+
component: autocomplete_1.Autocomplete,
|
|
8
|
+
tags: ['autodocs'],
|
|
9
|
+
parameters: {
|
|
10
|
+
componentSubtitle: `import { Autocomplete } from 'react-restyle-components'`,
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
exports.default = meta;
|
|
14
|
+
exports.Primary = {
|
|
15
|
+
args: {
|
|
16
|
+
value: '',
|
|
17
|
+
onValueChange: () => { },
|
|
18
|
+
options: ['One', 'Two', 'Three', 'Four'],
|
|
19
|
+
},
|
|
20
|
+
};
|
package/lib/cjs/src/core-components/molecules/css-multiline-input/css-multiline-input.component.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import '../../../tc.css';
|
|
3
|
+
interface CSSMultilineProps {
|
|
4
|
+
label?: string;
|
|
5
|
+
defaultValue?: string;
|
|
6
|
+
placeholder?: string;
|
|
7
|
+
className?: string;
|
|
8
|
+
style?: any;
|
|
9
|
+
onChange(item: any): void;
|
|
10
|
+
}
|
|
11
|
+
export declare const CSSMultiline: ({ label, defaultValue, className, style, placeholder, onChange, }: CSSMultilineProps) => React.JSX.Element;
|
|
12
|
+
export {};
|