react-restyle-components 0.1.43 → 0.1.45

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 (135) hide show
  1. package/lib/cjs/App.js +36 -12
  2. package/lib/cjs/App.test.js +10 -8
  3. package/lib/cjs/core-components/atoms/buttons/button.stories.js +26 -44
  4. package/lib/cjs/core-components/atoms/buttons/button.stories.js.map +1 -1
  5. package/lib/cjs/core-components/atoms/buttons/buttons.component.js +27 -9
  6. package/lib/cjs/core-components/atoms/buttons/buttons.test.js +15 -7
  7. package/lib/cjs/core-components/atoms/check-box/checkBox.component.js +102 -35
  8. package/lib/cjs/core-components/atoms/check-box/checkBox.stories.js +17 -17
  9. package/lib/cjs/core-components/atoms/check-box/checkBox.test.js +15 -7
  10. package/lib/cjs/core-components/atoms/date-picker/date-picker.component.js +98 -37
  11. package/lib/cjs/core-components/atoms/date-picker/date-picker.stories.js +17 -15
  12. package/lib/cjs/core-components/atoms/date-picker/date-picker.test.js +16 -7
  13. package/lib/cjs/core-components/atoms/form/form.component.js +571 -159
  14. package/lib/cjs/core-components/atoms/form/form.test.js +87 -59
  15. package/lib/cjs/core-components/atoms/icons/icons.component.js +40 -26
  16. package/lib/cjs/core-components/atoms/input/input-otp.component.js +118 -76
  17. package/lib/cjs/core-components/atoms/input/input-pin.component.js +180 -98
  18. package/lib/cjs/core-components/atoms/input/input-pin.stories.js +14 -14
  19. package/lib/cjs/core-components/atoms/input/input-pin.test.js +28 -10
  20. package/lib/cjs/core-components/atoms/input/input.component.js +104 -33
  21. package/lib/cjs/core-components/atoms/input/input.stories.js +15 -15
  22. package/lib/cjs/core-components/atoms/input/input.test.js +30 -10
  23. package/lib/cjs/core-components/atoms/input-dropdown/input-dropdown.component.js +127 -53
  24. package/lib/cjs/core-components/atoms/input-dropdown/input-dropdown.stories.js +12 -12
  25. package/lib/cjs/core-components/atoms/input-dropdown/input-dropdown.test.js +16 -7
  26. package/lib/cjs/core-components/atoms/loader/loader.component.js +83 -21
  27. package/lib/cjs/core-components/atoms/loader/loader.stories.js +8 -8
  28. package/lib/cjs/core-components/atoms/loader/loader.test.js +11 -7
  29. package/lib/cjs/core-components/atoms/radio/radio.component.js +102 -37
  30. package/lib/cjs/core-components/atoms/radio/radio.stories.js +16 -16
  31. package/lib/cjs/core-components/atoms/radio/radio.test.js +15 -7
  32. package/lib/cjs/core-components/atoms/stepper/stepper.component.js +77 -34
  33. package/lib/cjs/core-components/atoms/stepper/stepper.stories.js +13 -13
  34. package/lib/cjs/core-components/atoms/stepper/stepper.test.js +16 -7
  35. package/lib/cjs/core-components/atoms/stepper/stepper.test.js.map +1 -1
  36. package/lib/cjs/core-components/atoms/tabs/tabs.component.js +95 -0
  37. package/lib/cjs/core-components/atoms/tabs/tabs.component.js.map +1 -0
  38. package/lib/cjs/core-components/atoms/tabs/tabs.stories.js +26 -0
  39. package/lib/cjs/core-components/atoms/tabs/tabs.stories.js.map +1 -0
  40. package/lib/cjs/core-components/atoms/tabs/tabs.test.js +26 -0
  41. package/lib/cjs/core-components/atoms/tabs/tabs.test.js.map +1 -0
  42. package/lib/cjs/core-components/atoms/timer/timer.component.js +119 -92
  43. package/lib/cjs/core-components/atoms/timer/timer.test.js +20 -10
  44. package/lib/cjs/core-components/atoms/tooltip/tooltip.component.js +85 -45
  45. package/lib/cjs/core-components/atoms/tooltip/tooltip.component.test.js +13 -9
  46. package/lib/cjs/core-components/atoms/tooltip/tooltip.stories.js +8 -8
  47. package/lib/cjs/core-components/index.js +65 -26
  48. package/lib/cjs/core-components/index.js.map +1 -1
  49. package/lib/cjs/core-components/molecules/auto-complete-filter-multiple-select-multiple-fields-display/auto-complete-filter-multiple-select-multiple-fields-display.component.js +210 -106
  50. package/lib/cjs/core-components/molecules/auto-complete-filter-multiple-select-multiple-fields-display/auto-complete-filter-multiple-select-multiple-fields-display.component.test.js +23 -9
  51. package/lib/cjs/core-components/molecules/auto-complete-filter-multiple-select-multiple-fields-display/auto-complete-filter-multiple-select-multiple-fields-display.stories.js +38 -36
  52. package/lib/cjs/core-components/molecules/auto-complete-filter-single-select-multiple-fields-display/auto-complete-filter-single-select-multiple-fields-display.component.js +226 -0
  53. package/lib/cjs/core-components/molecules/auto-complete-filter-single-select-multiple-fields-display/auto-complete-filter-single-select-multiple-fields-display.component.js.map +1 -0
  54. package/lib/cjs/core-components/molecules/auto-complete-filter-single-select-multiple-fields-display/auto-complete-filter-single-select-multiple-fields-display.component.test.js +34 -0
  55. package/lib/cjs/core-components/molecules/auto-complete-filter-single-select-multiple-fields-display/auto-complete-filter-single-select-multiple-fields-display.component.test.js.map +1 -0
  56. package/lib/cjs/core-components/molecules/auto-complete-filter-single-select-multiple-fields-display/auto-complete-filter-single-select-multiple-fields-display.stories.js +34 -0
  57. package/lib/cjs/core-components/molecules/auto-complete-filter-single-select-multiple-fields-display/auto-complete-filter-single-select-multiple-fields-display.stories.js.map +1 -0
  58. package/lib/cjs/core-components/molecules/css-multiline-input/css-multiline-input.component.js +203 -106
  59. package/lib/cjs/core-components/molecules/css-multiline-input/css-multiline-input.stories.js +8 -8
  60. package/lib/cjs/core-components/molecules/css-multiline-input/css-multiline-input.test.js +14 -7
  61. package/lib/cjs/core-components/molecules/css-multiline-input/css-properties.js +159 -159
  62. package/lib/cjs/core-utils/index.js +31 -15
  63. package/lib/cjs/core-utils/unit-test.utils.js +8 -6
  64. package/lib/cjs/index.js +31 -15
  65. package/lib/cjs/library/assets/svg/index.js +39 -13
  66. package/lib/cjs/reportWebVitals.js +1 -1
  67. package/lib/cjs/setupTests.js +1 -1
  68. package/lib/esm/App.js +34 -12
  69. package/lib/esm/App.test.js +8 -8
  70. package/lib/esm/core-components/atoms/buttons/button.stories.js +24 -44
  71. package/lib/esm/core-components/atoms/buttons/button.stories.js.map +1 -1
  72. package/lib/esm/core-components/atoms/buttons/buttons.component.js +23 -7
  73. package/lib/esm/core-components/atoms/buttons/buttons.test.js +13 -7
  74. package/lib/esm/core-components/atoms/check-box/checkBox.component.js +65 -19
  75. package/lib/esm/core-components/atoms/check-box/checkBox.stories.js +18 -18
  76. package/lib/esm/core-components/atoms/check-box/checkBox.test.js +13 -7
  77. package/lib/esm/core-components/atoms/date-picker/date-picker.component.js +54 -21
  78. package/lib/esm/core-components/atoms/date-picker/date-picker.stories.js +14 -14
  79. package/lib/esm/core-components/atoms/date-picker/date-picker.test.js +15 -8
  80. package/lib/esm/core-components/atoms/form/form.component.js +513 -138
  81. package/lib/esm/core-components/atoms/form/form.test.js +78 -60
  82. package/lib/esm/core-components/atoms/icons/icons.component.js +36 -24
  83. package/lib/esm/core-components/atoms/input/input-otp.component.js +80 -59
  84. package/lib/esm/core-components/atoms/input/input-pin.component.js +142 -81
  85. package/lib/esm/core-components/atoms/input/input-pin.stories.js +15 -15
  86. package/lib/esm/core-components/atoms/input/input-pin.test.js +26 -10
  87. package/lib/esm/core-components/atoms/input/input.component.js +66 -16
  88. package/lib/esm/core-components/atoms/input/input.stories.js +16 -16
  89. package/lib/esm/core-components/atoms/input/input.test.js +28 -10
  90. package/lib/esm/core-components/atoms/input-dropdown/input-dropdown.component.js +95 -36
  91. package/lib/esm/core-components/atoms/input-dropdown/input-dropdown.stories.js +13 -13
  92. package/lib/esm/core-components/atoms/input-dropdown/input-dropdown.test.js +14 -7
  93. package/lib/esm/core-components/atoms/loader/loader.component.js +80 -20
  94. package/lib/esm/core-components/atoms/loader/loader.stories.js +9 -9
  95. package/lib/esm/core-components/atoms/loader/loader.test.js +7 -7
  96. package/lib/esm/core-components/atoms/radio/radio.component.js +65 -21
  97. package/lib/esm/core-components/atoms/radio/radio.stories.js +17 -17
  98. package/lib/esm/core-components/atoms/radio/radio.test.js +13 -7
  99. package/lib/esm/core-components/atoms/stepper/stepper.component.js +74 -32
  100. package/lib/esm/core-components/atoms/stepper/stepper.stories.js +14 -14
  101. package/lib/esm/core-components/atoms/stepper/stepper.test.js +14 -7
  102. package/lib/esm/core-components/atoms/stepper/stepper.test.js.map +1 -1
  103. package/lib/esm/core-components/atoms/tabs/tabs.component.js +47 -0
  104. package/lib/esm/core-components/atoms/tabs/tabs.component.js.map +1 -0
  105. package/lib/esm/core-components/atoms/tabs/tabs.stories.js +23 -0
  106. package/lib/esm/core-components/atoms/tabs/tabs.stories.js.map +1 -0
  107. package/lib/esm/core-components/atoms/tabs/tabs.test.js +19 -0
  108. package/lib/esm/core-components/atoms/tabs/tabs.test.js.map +1 -0
  109. package/lib/esm/core-components/atoms/timer/timer.component.js +81 -75
  110. package/lib/esm/core-components/atoms/timer/timer.test.js +10 -10
  111. package/lib/esm/core-components/atoms/tooltip/tooltip.component.js +46 -25
  112. package/lib/esm/core-components/atoms/tooltip/tooltip.component.test.js +9 -9
  113. package/lib/esm/core-components/atoms/tooltip/tooltip.stories.js +9 -9
  114. package/lib/esm/core-components/index.js +19 -17
  115. package/lib/esm/core-components/index.js.map +1 -1
  116. package/lib/esm/core-components/molecules/auto-complete-filter-multiple-select-multiple-fields-display/auto-complete-filter-multiple-select-multiple-fields-display.component.js +170 -88
  117. package/lib/esm/core-components/molecules/auto-complete-filter-multiple-select-multiple-fields-display/auto-complete-filter-multiple-select-multiple-fields-display.component.test.js +17 -9
  118. package/lib/esm/core-components/molecules/auto-complete-filter-multiple-select-multiple-fields-display/auto-complete-filter-multiple-select-multiple-fields-display.stories.js +38 -37
  119. package/lib/esm/core-components/molecules/auto-complete-filter-single-select-multiple-fields-display/auto-complete-filter-single-select-multiple-fields-display.component.js +177 -0
  120. package/lib/esm/core-components/molecules/auto-complete-filter-single-select-multiple-fields-display/auto-complete-filter-single-select-multiple-fields-display.component.js.map +1 -0
  121. package/lib/esm/core-components/molecules/auto-complete-filter-single-select-multiple-fields-display/auto-complete-filter-single-select-multiple-fields-display.component.test.js +23 -0
  122. package/lib/esm/core-components/molecules/auto-complete-filter-single-select-multiple-fields-display/auto-complete-filter-single-select-multiple-fields-display.component.test.js.map +1 -0
  123. package/lib/esm/core-components/molecules/auto-complete-filter-single-select-multiple-fields-display/auto-complete-filter-single-select-multiple-fields-display.stories.js +30 -0
  124. package/lib/esm/core-components/molecules/auto-complete-filter-single-select-multiple-fields-display/auto-complete-filter-single-select-multiple-fields-display.stories.js.map +1 -0
  125. package/lib/esm/core-components/molecules/css-multiline-input/css-multiline-input.component.js +166 -90
  126. package/lib/esm/core-components/molecules/css-multiline-input/css-multiline-input.stories.js +9 -9
  127. package/lib/esm/core-components/molecules/css-multiline-input/css-multiline-input.test.js +9 -7
  128. package/lib/esm/core-components/molecules/css-multiline-input/css-properties.js +159 -159
  129. package/lib/esm/core-utils/index.js +2 -2
  130. package/lib/esm/core-utils/unit-test.utils.js +5 -5
  131. package/lib/esm/index.js +2 -2
  132. package/lib/esm/library/assets/svg/index.js +19 -10
  133. package/lib/esm/reportWebVitals.js +1 -1
  134. package/lib/esm/setupTests.js +2 -2
  135. package/package.json +3 -1
@@ -1,14 +1,14 @@
1
- import { Tooltip } from './tooltip.component';
1
+ import { Tooltip } from "./tooltip.component";
2
2
  const meta = {
3
- title: 'Design System/Atoms/Tooltip',
4
- component: Tooltip,
5
- tags: ['autodocs'],
6
- parameters: {
7
- componentSubtitle: `import { Tooltip } from 'react-restyle-components'`,
8
- },
3
+ title: "Design System/Atoms/Tooltip",
4
+ component: Tooltip,
5
+ tags: ["autodocs"],
6
+ parameters: {
7
+ componentSubtitle: `import { Tooltip } from 'react-restyle-components'`,
8
+ },
9
9
  };
10
10
  export default meta;
11
11
  export const Primary = {
12
- args: {},
12
+ args: {},
13
13
  };
14
- //# sourceMappingURL=tooltip.stories.js.map
14
+ //# sourceMappingURL=tooltip.stories.js.map
@@ -1,18 +1,20 @@
1
- import * as Form from './atoms/form/form.component';
2
- export * from './atoms/buttons/buttons.component';
3
- export * from './atoms/check-box/checkBox.component';
4
- export * from './atoms/date-picker/date-picker.component';
5
- export * from './atoms/input/input-otp.component';
6
- export * from './atoms/input/input-pin.component';
7
- export * from './atoms/input/input.component';
8
- export * from './atoms/input-dropdown/input-dropdown.component';
9
- export * from './atoms/loader/loader.component';
10
- export * from './atoms/radio/radio.component';
11
- export * from './atoms/stepper/stepper.component';
12
- export * from './atoms/timer/timer.component';
13
- export * from './atoms/tooltip/tooltip.component';
14
- export * from './atoms/icons/icons.component';
15
- export * from './molecules/css-multiline-input/css-multiline-input.component';
16
- export * from './molecules/auto-complete-filter-multiple-select-multiple-fields-display/auto-complete-filter-multiple-select-multiple-fields-display.component';
1
+ import * as Form from "./atoms/form/form.component";
2
+ export * from "./atoms/buttons/buttons.component";
3
+ export * from "./atoms/check-box/checkBox.component";
4
+ export * from "./atoms/date-picker/date-picker.component";
5
+ export * from "./atoms/input/input-otp.component";
6
+ export * from "./atoms/input/input-pin.component";
7
+ export * from "./atoms/input/input.component";
8
+ export * from "./atoms/input-dropdown/input-dropdown.component";
9
+ export * from "./atoms/loader/loader.component";
10
+ export * from "./atoms/radio/radio.component";
11
+ export * from "./atoms/stepper/stepper.component";
12
+ export * from "./atoms/timer/timer.component";
13
+ export * from "./atoms/tooltip/tooltip.component";
14
+ export * from "./atoms/icons/icons.component";
15
+ export * from "./atoms/tabs/tabs.component";
16
+ export * from "./molecules/css-multiline-input/css-multiline-input.component";
17
+ export * from "./molecules/auto-complete-filter-multiple-select-multiple-fields-display/auto-complete-filter-multiple-select-multiple-fields-display.component";
18
+ export * from "./molecules/auto-complete-filter-single-select-multiple-fields-display/auto-complete-filter-single-select-multiple-fields-display.component";
17
19
  export { Form };
18
- //# sourceMappingURL=index.js.map
20
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core-components/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,6BAA6B,CAAC;AACpD,cAAc,mCAAmC,CAAC;AAClD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iDAAiD,CAAC;AAChE,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAE9C,cAAc,+DAA+D,CAAC;AAC9E,cAAc,iJAAiJ,CAAC;AAEhK,OAAO,EAAC,IAAI,EAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core-components/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,6BAA6B,CAAC;AACpD,cAAc,mCAAmC,CAAC;AAClD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iDAAiD,CAAC;AAChE,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAE5C,cAAc,+DAA+D,CAAC;AAC9E,cAAc,iJAAiJ,CAAC;AAChK,cAAc,6IAA6I,CAAC;AAE5J,OAAO,EAAC,IAAI,EAAC,CAAC"}
@@ -1,92 +1,174 @@
1
1
  /* eslint-disable */
2
- import React, { useState, useEffect, useRef } from 'react';
3
- import { Icon } from '../..';
4
- export const AutoCompleteFilterMultipleSelectMultipleFieldsDisplay = ({ uniqueField = '_id', loader = false, placeholder = 'Search...', data, hasError = false, disable = false, isUpperCase = false, name, onFilter, onUpdate, onSelect, onBlur, }) => {
5
- const [value, setValue] = useState('');
6
- const [options, setOptions] = useState();
7
- const [originalOptions, setOriginalOptions] = useState();
8
- const [isListOpen, setIsListOpen] = useState(false);
9
- const useOutsideAlerter = (ref) => {
10
- useEffect(() => {
11
- function handleClickOutside(event) {
12
- if (ref.current && !ref.current.contains(event.target) && isListOpen) {
13
- if (originalOptions && options) {
14
- if (isListOpen) {
15
- onUpdate && onUpdate(data.selected);
16
- }
17
- }
18
- setIsListOpen(false);
19
- setValue('');
20
- }
21
- }
22
- document.addEventListener('mousedown', handleClickOutside);
23
- return () => {
24
- document.removeEventListener('mousedown', handleClickOutside);
25
- };
26
- }, [ref, isListOpen]);
27
- };
28
- const wrapperRef = useRef(null);
29
- useOutsideAlerter(wrapperRef);
30
- let count = 0;
31
- const getSelectedItem = (selectedItem, list) => {
32
- if (count === 0) {
33
- const finalList = list === null || list === void 0 ? void 0 : list.filter((item, index) => {
34
- item.selected = false;
35
- selectedItem && selectedItem.length > 0
36
- ? selectedItem.find((sItem, index) => {
37
- if (sItem[uniqueField] === item[uniqueField]) {
38
- item.selected = true;
39
- }
40
- })
41
- : (item.selected = false);
42
- count++;
43
- return item;
44
- });
45
- list = finalList;
46
- }
47
- return list;
48
- };
2
+ import React, { useState, useEffect, useRef } from "react";
3
+ import { Icon } from "../..";
4
+ export const AutoCompleteFilterMultipleSelectMultipleFieldsDisplay = ({
5
+ uniqueField = "_id",
6
+ loader = false,
7
+ placeholder = "Search...",
8
+ data,
9
+ hasError = false,
10
+ disable = false,
11
+ isUpperCase = false,
12
+ name,
13
+ onFilter,
14
+ onUpdate,
15
+ onSelect,
16
+ onBlur,
17
+ }) => {
18
+ const [value, setValue] = useState("");
19
+ const [options, setOptions] = useState();
20
+ const [originalOptions, setOriginalOptions] = useState();
21
+ const [isListOpen, setIsListOpen] = useState(false);
22
+ const useOutsideAlerter = (ref) => {
49
23
  useEffect(() => {
50
- setOriginalOptions(getSelectedItem(data.selected, data.list));
51
- setOptions(getSelectedItem(data.selected, data.list));
52
- }, [data, data.selected]);
53
- const onChange = (e) => {
54
- const search = e.target.value;
55
- setValue(search);
56
- onFilter && onFilter(search);
57
- };
58
- const onKeyUp = (e) => {
59
- const charCode = e.which ? e.which : e.keyCode;
60
- if (charCode === 8) {
61
- const search = e.target.value;
62
- onFilter && onFilter(search);
24
+ function handleClickOutside(event) {
25
+ if (ref.current && !ref.current.contains(event.target) && isListOpen) {
26
+ if (originalOptions && options) {
27
+ if (isListOpen) {
28
+ onUpdate && onUpdate(data.selected);
29
+ }
30
+ }
31
+ setIsListOpen(false);
32
+ setValue("");
63
33
  }
64
- };
65
- return (React.createElement(React.Fragment, null,
66
- React.createElement("div", { ref: wrapperRef, className: "w-full relative" },
67
- React.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` },
68
- React.createElement("input", { placeholder: placeholder, disabled: disable, name: name, value: !isListOpen
69
- ? `${(data.selected && data.selected.length) || 0} Items`
70
- : isUpperCase
71
- ? value === null || value === void 0 ? void 0 : value.toUpperCase()
72
- : value, className: `w-full focus:outline-none bg-none`, onKeyUp: onKeyUp, onChange: onChange, onClick: () => setIsListOpen(true), onBlur: (e) => onBlur && onBlur(e) }),
73
- isListOpen ? (React.createElement(Icon, { nameIcon: "FaChevronUp", propsIcon: {
74
- color: '#000000',
75
- size: 22,
76
- } })) : (React.createElement(Icon, { nameIcon: "FaChevronDown", propsIcon: {
77
- color: '#000000',
78
- size: 22,
79
- } }))),
80
- options && isListOpen
81
- ? (options === null || options === void 0 ? void 0 : options.length) > 0 && (React.createElement("div", { className: "mt-1 absolute bg-gray-100 p-2 rounded-sm z-500", style: { zIndex: 80 } },
82
- React.createElement("ul", null, options === null || options === void 0 ? void 0 : options.map((item, index) => (React.createElement(React.Fragment, null,
83
- React.createElement("li", { key: index, className: "text-gray-400 flex items-center" },
84
- React.createElement("input", { type: "checkbox", checked: item.selected, onChange: () => onSelect(item) }),
85
- ' ',
86
- React.createElement("label", { className: "ml-2 mt-1 text-black" }, data.displayKey
87
- .map((key) => `${item[key]}
88
- `)
89
- .join(' - ')))))))))
90
- : null)));
34
+ }
35
+ document.addEventListener("mousedown", handleClickOutside);
36
+ return () => {
37
+ document.removeEventListener("mousedown", handleClickOutside);
38
+ };
39
+ }, [ref, isListOpen]);
40
+ };
41
+ const wrapperRef = useRef(null);
42
+ useOutsideAlerter(wrapperRef);
43
+ let count = 0;
44
+ const getSelectedItem = (selectedItem, list) => {
45
+ if (count === 0) {
46
+ const finalList =
47
+ list === null || list === void 0
48
+ ? void 0
49
+ : list.filter((item, index) => {
50
+ item.selected = false;
51
+ selectedItem && selectedItem.length > 0
52
+ ? selectedItem.find((sItem, index) => {
53
+ if (sItem[uniqueField] === item[uniqueField]) {
54
+ item.selected = true;
55
+ }
56
+ })
57
+ : (item.selected = false);
58
+ count++;
59
+ return item;
60
+ });
61
+ list = finalList;
62
+ }
63
+ return list;
64
+ };
65
+ useEffect(() => {
66
+ setOriginalOptions(getSelectedItem(data.selected, data.list));
67
+ setOptions(getSelectedItem(data.selected, data.list));
68
+ }, [data, data.selected]);
69
+ const onChange = (e) => {
70
+ const search = e.target.value;
71
+ setValue(search);
72
+ onFilter && onFilter(search);
73
+ };
74
+ const onKeyUp = (e) => {
75
+ const charCode = e.which ? e.which : e.keyCode;
76
+ if (charCode === 8) {
77
+ const search = e.target.value;
78
+ onFilter && onFilter(search);
79
+ }
80
+ };
81
+ return React.createElement(
82
+ React.Fragment,
83
+ null,
84
+ React.createElement(
85
+ "div",
86
+ { ref: wrapperRef, className: "w-full relative" },
87
+ React.createElement(
88
+ "div",
89
+ {
90
+ 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`,
91
+ },
92
+ React.createElement("input", {
93
+ placeholder: placeholder,
94
+ disabled: disable,
95
+ name: name,
96
+ value: !isListOpen
97
+ ? `${(data.selected && data.selected.length) || 0} Items`
98
+ : isUpperCase
99
+ ? value === null || value === void 0
100
+ ? void 0
101
+ : value.toUpperCase()
102
+ : value,
103
+ className: `w-full focus:outline-none bg-none`,
104
+ onKeyUp: onKeyUp,
105
+ onChange: onChange,
106
+ onClick: () => setIsListOpen(true),
107
+ onBlur: (e) => onBlur && onBlur(e),
108
+ }),
109
+ isListOpen
110
+ ? React.createElement(Icon, {
111
+ nameIcon: "FaChevronUp",
112
+ propsIcon: {
113
+ color: "#000000",
114
+ size: 22,
115
+ },
116
+ })
117
+ : React.createElement(Icon, {
118
+ nameIcon: "FaChevronDown",
119
+ propsIcon: {
120
+ color: "#000000",
121
+ size: 22,
122
+ },
123
+ }),
124
+ ),
125
+ options && isListOpen
126
+ ? (options === null || options === void 0 ? void 0 : options.length) >
127
+ 0 &&
128
+ React.createElement(
129
+ "div",
130
+ {
131
+ className: "mt-1 absolute bg-gray-100 p-2 rounded-sm z-500",
132
+ style: { zIndex: 80 },
133
+ },
134
+ React.createElement(
135
+ "ul",
136
+ null,
137
+ options === null || options === void 0
138
+ ? void 0
139
+ : options.map((item, index) =>
140
+ React.createElement(
141
+ React.Fragment,
142
+ null,
143
+ React.createElement(
144
+ "li",
145
+ {
146
+ key: index,
147
+ className: "text-gray-400 flex items-center",
148
+ },
149
+ React.createElement("input", {
150
+ type: "checkbox",
151
+ checked: item.selected,
152
+ onChange: () => onSelect(item),
153
+ }),
154
+ " ",
155
+ React.createElement(
156
+ "label",
157
+ { className: "ml-2 mt-1 text-black" },
158
+ data.displayKey
159
+ .map(
160
+ (key) => `${item[key]}
161
+ `,
162
+ )
163
+ .join(" - "),
164
+ ),
165
+ ),
166
+ ),
167
+ ),
168
+ ),
169
+ )
170
+ : null,
171
+ ),
172
+ );
91
173
  };
92
- //# sourceMappingURL=auto-complete-filter-multiple-select-multiple-fields-display.component.js.map
174
+ //# sourceMappingURL=auto-complete-filter-multiple-select-multiple-fields-display.component.js.map
@@ -1,10 +1,18 @@
1
- import React from 'react';
2
- import { render } from '@core-utils';
3
- import { AutoCompleteFilterMultipleSelectMultipleFieldsDisplay } from './auto-complete-filter-multiple-select-multiple-fields-display.component';
4
- it('render AutoCompleteFilterMultipleSelectMultipleFieldsDisplay correctly', () => {
5
- const autoCompleteFilterMultipleSelectMultipleFieldsDisplay = render(React.createElement(AutoCompleteFilterMultipleSelectMultipleFieldsDisplay, { data: [], onUpdate: (item) => {
6
- console.log({ item });
7
- }, onSelect: (item) => { } }));
8
- expect(autoCompleteFilterMultipleSelectMultipleFieldsDisplay).toMatchSnapshot();
1
+ import React from "react";
2
+ import { render } from "@core-utils";
3
+ import { AutoCompleteFilterMultipleSelectMultipleFieldsDisplay } from "./auto-complete-filter-multiple-select-multiple-fields-display.component";
4
+ it("render AutoCompleteFilterMultipleSelectMultipleFieldsDisplay correctly", () => {
5
+ const autoCompleteFilterMultipleSelectMultipleFieldsDisplay = render(
6
+ React.createElement(AutoCompleteFilterMultipleSelectMultipleFieldsDisplay, {
7
+ data: [],
8
+ onUpdate: (item) => {
9
+ console.log({ item });
10
+ },
11
+ onSelect: (item) => {},
12
+ }),
13
+ );
14
+ expect(
15
+ autoCompleteFilterMultipleSelectMultipleFieldsDisplay,
16
+ ).toMatchSnapshot();
9
17
  });
10
- //# sourceMappingURL=auto-complete-filter-multiple-select-multiple-fields-display.component.test.js.map
18
+ //# sourceMappingURL=auto-complete-filter-multiple-select-multiple-fields-display.component.test.js.map
@@ -1,46 +1,47 @@
1
- import { AutoCompleteFilterMultipleSelectMultipleFieldsDisplay } from './auto-complete-filter-multiple-select-multiple-fields-display.component';
1
+ import { AutoCompleteFilterMultipleSelectMultipleFieldsDisplay } from "./auto-complete-filter-multiple-select-multiple-fields-display.component";
2
2
  const meta = {
3
- title: 'Design System/Molecules/AutoCompleteFilterMultipleSelectMultipleFieldsDisplay',
4
- component: AutoCompleteFilterMultipleSelectMultipleFieldsDisplay,
5
- tags: ['autodocs'],
6
- parameters: {
7
- componentSubtitle: `import { AutoCompleteFilterMultipleSelectMultipleFieldsDisplay } from 'react-restyle-components'`,
8
- },
3
+ title:
4
+ "Design System/Molecules/AutoCompleteFilterMultipleSelectMultipleFieldsDisplay",
5
+ component: AutoCompleteFilterMultipleSelectMultipleFieldsDisplay,
6
+ tags: ["autodocs"],
7
+ parameters: {
8
+ componentSubtitle: `import { AutoCompleteFilterMultipleSelectMultipleFieldsDisplay } from 'react-restyle-components'`,
9
+ },
9
10
  };
10
11
  export default meta;
11
12
  export const Primary = {
12
- args: {
13
- data: {
14
- list: [
15
- {
16
- _id: '66532a99bbfed4eea86eae23',
17
- code: 82,
18
- description: 'TEST1',
19
- libraryCode: 'ABCD',
20
- },
21
- {
22
- _id: '6652b6d8bcef7f713cb547d4',
23
- code: 81,
24
- description: 'TEST New',
25
- libraryCode: 'TEST',
26
- },
27
- ],
28
- selected: [
29
- {
30
- _id: '66532a99bbfed4eea86eae23',
31
- code: 82,
32
- description: 'TEST1',
33
- libraryCode: 'ABCD',
34
- },
35
- ],
36
- displayKey: ['libraryCode', 'description'],
13
+ args: {
14
+ data: {
15
+ list: [
16
+ {
17
+ _id: "66532a99bbfed4eea86eae23",
18
+ code: 82,
19
+ description: "TEST1",
20
+ libraryCode: "ABCD",
37
21
  },
38
- onUpdate: (item) => {
39
- console.log({ item });
22
+ {
23
+ _id: "6652b6d8bcef7f713cb547d4",
24
+ code: 81,
25
+ description: "TEST New",
26
+ libraryCode: "TEST",
40
27
  },
41
- onSelect: (item) => {
42
- console.log({ item });
28
+ ],
29
+ selected: [
30
+ {
31
+ _id: "66532a99bbfed4eea86eae23",
32
+ code: 82,
33
+ description: "TEST1",
34
+ libraryCode: "ABCD",
43
35
  },
36
+ ],
37
+ displayKey: ["libraryCode", "description"],
38
+ },
39
+ onUpdate: (item) => {
40
+ console.log({ item });
41
+ },
42
+ onSelect: (item) => {
43
+ console.log({ item });
44
44
  },
45
+ },
45
46
  };
46
- //# sourceMappingURL=auto-complete-filter-multiple-select-multiple-fields-display.stories.js.map
47
+ //# sourceMappingURL=auto-complete-filter-multiple-select-multiple-fields-display.stories.js.map
@@ -0,0 +1,177 @@
1
+ /* eslint-disable */
2
+ import React, { useState, useEffect, useRef } from "react";
3
+ import { Icon } from "../..";
4
+ export const AutoCompleteFilterSingleSelectMultiFieldsDisplay = ({
5
+ disable = false,
6
+ loader = false,
7
+ displayValue = "",
8
+ placeholder = "Search...",
9
+ data,
10
+ hasError = false,
11
+ className,
12
+ posstion = "absolute",
13
+ onFilter,
14
+ onSelect,
15
+ onBlur,
16
+ }) => {
17
+ const [value, setValue] = useState(displayValue);
18
+ const [options, setOptions] = useState(data.list);
19
+ const [isListOpen, setIsListOpen] = useState(false);
20
+ const [filterValue, setFilterValue] = useState();
21
+ const useOutsideAlerter = (ref) => {
22
+ useEffect(() => {
23
+ function handleClickOutside(event) {
24
+ if (ref.current && !ref.current.contains(event.target) && isListOpen) {
25
+ setIsListOpen(false);
26
+ //setValue('');
27
+ }
28
+ }
29
+ document.addEventListener("mousedown", handleClickOutside);
30
+ return () => {
31
+ document.removeEventListener("mousedown", handleClickOutside);
32
+ };
33
+ }, [ref, isListOpen]);
34
+ };
35
+ const wrapperRef = useRef(null);
36
+ useOutsideAlerter(wrapperRef);
37
+ useEffect(() => {
38
+ setOptions(data.list);
39
+ }, [data]);
40
+ useEffect(() => {
41
+ setValue(displayValue);
42
+ }, [displayValue]);
43
+ const onChange = (e) => {
44
+ var _a;
45
+ const search =
46
+ (_a = e.target.value) === null || _a === void 0
47
+ ? void 0
48
+ : _a.toUpperCase();
49
+ setValue(search);
50
+ setFilterValue(search);
51
+ onFilter && onFilter(search);
52
+ };
53
+ const onKeyUp = (e) => {
54
+ const charCode = e.which ? e.which : e.keyCode;
55
+ if (charCode === 8) {
56
+ const search = e.target.value;
57
+ onFilter && onFilter(search);
58
+ }
59
+ };
60
+ const onKeyDown = (e) => {
61
+ if (e.key === "Enter" || e.key === "Tab") {
62
+ if (options.length > 0) {
63
+ const selectedItem = options.find(
64
+ (item) => item.labId === Number(value),
65
+ );
66
+ if (selectedItem) {
67
+ setValue(
68
+ data.displayKey.map((key) => `${selectedItem[key]}`).join(" - "),
69
+ );
70
+ setIsListOpen(false);
71
+ onSelect && onSelect(selectedItem);
72
+ }
73
+ }
74
+ }
75
+ };
76
+ return React.createElement(
77
+ React.Fragment,
78
+ null,
79
+ React.createElement(
80
+ "div",
81
+ { ref: wrapperRef, className: "w-full relative" },
82
+ React.createElement(
83
+ "div",
84
+ {
85
+ 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
+ },
87
+ React.createElement("input", {
88
+ placeholder: placeholder,
89
+ value: value,
90
+ className: `${className} w-full focus:outline-none bg-none dark:text-black`,
91
+ onKeyUp: onKeyUp,
92
+ onChange: onChange,
93
+ onClick: () => setIsListOpen(true),
94
+ disabled: disable,
95
+ onMouseDown: () => setValue(""),
96
+ onBlur: (e) => onBlur && onBlur(e),
97
+ onKeyDown: onKeyDown,
98
+ }),
99
+ isListOpen
100
+ ? React.createElement(Icon, {
101
+ nameIcon: "FaChevronUp",
102
+ propsIcon: {
103
+ color: "#000000",
104
+ size: 22,
105
+ },
106
+ })
107
+ : React.createElement(Icon, {
108
+ nameIcon: "FaChevronDown",
109
+ propsIcon: {
110
+ color: "#000000",
111
+ size: 22,
112
+ },
113
+ }),
114
+ ),
115
+ options && isListOpen
116
+ ? options.length > 0 &&
117
+ React.createElement(
118
+ "div",
119
+ {
120
+ className: `mt-1 absolute w-full bg-gray-100 p-2 rounded-sm `,
121
+ style: {
122
+ zIndex: 500,
123
+ },
124
+ },
125
+ React.createElement(
126
+ "ul",
127
+ null,
128
+ options === null || options === void 0
129
+ ? void 0
130
+ : options.map((item, index) =>
131
+ React.createElement(
132
+ "li",
133
+ {
134
+ key: index,
135
+ className: "text-gray-400 flex items-center",
136
+ onClick: () => {
137
+ setValue(
138
+ data.displayKey
139
+ .map((key) => `${item[key]}`)
140
+ .join(" - "),
141
+ );
142
+ setIsListOpen(false);
143
+ onSelect && onSelect(item);
144
+ },
145
+ },
146
+ " ",
147
+ React.createElement(
148
+ "label",
149
+ {
150
+ className: "ml-2 mt-1 text-black",
151
+ style: {
152
+ textOverflow: "ellipsis",
153
+ minWidth: 0,
154
+ overflow: "hidden",
155
+ maxWidth: "334px",
156
+ whiteSpace: "nowrap",
157
+ },
158
+ title: data.displayKey
159
+ .map((key) => item[key])
160
+ .join(" - "),
161
+ },
162
+ data.displayKey
163
+ .map(
164
+ (key) => `${item[key]}
165
+ `,
166
+ )
167
+ .join(" - "),
168
+ ),
169
+ ),
170
+ ),
171
+ ),
172
+ )
173
+ : null,
174
+ ),
175
+ );
176
+ };
177
+ //# sourceMappingURL=auto-complete-filter-single-select-multiple-fields-display.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-complete-filter-single-select-multiple-fields-display.component.js","sourceRoot":"","sources":["../../../../../src/core-components/molecules/auto-complete-filter-single-select-multiple-fields-display/auto-complete-filter-single-select-multiple-fields-display.component.tsx"],"names":[],"mappings":"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"}