react-core-ts 1.2.20 → 1.2.22
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/dist/AutoCompleteWithSelectedList.js +124 -58
- package/dist/AutoCompleteWithSelectedList.js.map +1 -1
- package/dist/styles/components/autocomplete.css +1 -0
- package/docs/App.tsx +8 -8
- package/package.json +1 -1
- package/src/AutoCompleteWithSelectedList.tsx +156 -82
- package/dist/styles/styles/components/autocomplete.css +0 -617
- package/dist/styles/styles/components/selectedautocomplete.css +0 -128
- package/dist/styles/styles/components/tooltip.css +0 -496
- package/dist/styles/styles/components/treedropdown.css +0 -63
- package/dist/styles/styles/global.css +0 -8
|
@@ -74,7 +74,6 @@ const AutoCompleteWithSelectedList = forwardRef<
|
|
|
74
74
|
const tabRef = useRef<HTMLUListElement>(null);
|
|
75
75
|
// State Hooks Section
|
|
76
76
|
const [isInitialRender, setIsInitialRender] = useState(true);
|
|
77
|
-
const [isReadyToRender, setIsReadyToRender] = React.useState(false);
|
|
78
77
|
|
|
79
78
|
const [inputValue, setInputValue] = useState<string>(value);
|
|
80
79
|
const [searchValue, setSearchValue] = useState<string>('');
|
|
@@ -100,40 +99,127 @@ const AutoCompleteWithSelectedList = forwardRef<
|
|
|
100
99
|
});
|
|
101
100
|
|
|
102
101
|
const adjustDropdownPosition = () => {
|
|
103
|
-
if (
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
if (
|
|
118
|
-
|
|
119
|
-
|
|
102
|
+
if (selectedItems?.length > 0 && !viewMode) {
|
|
103
|
+
if (dropdownRef.current && dropdownSelectedRef.current) {
|
|
104
|
+
const inputRect = dropdownRef.current.getBoundingClientRect();
|
|
105
|
+
const dropdownPosition = {
|
|
106
|
+
left: inputRect.left + window.scrollX,
|
|
107
|
+
width: inputRect.width,
|
|
108
|
+
top: 0,
|
|
109
|
+
};
|
|
110
|
+
// Check if there's enough space below the input for the dropdown
|
|
111
|
+
const spaceBelow = window.innerHeight - inputRect.bottom;
|
|
112
|
+
const spaceAbove = inputRect.top + window.scrollY;
|
|
113
|
+
|
|
114
|
+
let dropdownHeight = viewMode ? 160 : 300; // Assume a fixed height or calculate based on content
|
|
115
|
+
|
|
116
|
+
if (countOnly && !viewMode) {
|
|
117
|
+
if (dropdownSelectedRef?.current)
|
|
118
|
+
dropdownHeight += dropdownSelectedRef?.current?.clientHeight;
|
|
119
|
+
}
|
|
120
120
|
|
|
121
|
-
|
|
122
|
-
|
|
121
|
+
if (tab.length > 0) {
|
|
122
|
+
if (tabRef?.current)
|
|
123
|
+
dropdownHeight += tabRef?.current?.clientHeight;
|
|
124
|
+
}
|
|
125
|
+
if (spaceBelow >= dropdownHeight) {
|
|
126
|
+
dropdownPosition.top =
|
|
127
|
+
inputRect.top + window.scrollY + inputRect.height;
|
|
128
|
+
} else {
|
|
129
|
+
dropdownPosition.top = viewMode
|
|
130
|
+
? inputRect.top + window.scrollY - dropdownHeight + 18 + topMargin
|
|
131
|
+
: inputRect.top +
|
|
132
|
+
window.scrollY -
|
|
133
|
+
dropdownHeight +
|
|
134
|
+
73 +
|
|
135
|
+
topMargin;
|
|
136
|
+
}
|
|
137
|
+
setDropdownStyle({
|
|
138
|
+
...dropdownPosition,
|
|
139
|
+
});
|
|
123
140
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
:
|
|
141
|
+
} else {
|
|
142
|
+
if (dropdownRef.current) {
|
|
143
|
+
const inputRect = dropdownRef.current.getBoundingClientRect();
|
|
144
|
+
const dropdownPosition = {
|
|
145
|
+
left: inputRect.left + window.scrollX,
|
|
146
|
+
width: inputRect.width,
|
|
147
|
+
top: 0,
|
|
148
|
+
};
|
|
149
|
+
// Check if there's enough space below the input for the dropdown
|
|
150
|
+
const spaceBelow = window.innerHeight - inputRect.bottom;
|
|
151
|
+
const spaceAbove = inputRect.top + window.scrollY;
|
|
152
|
+
|
|
153
|
+
let dropdownHeight = viewMode ? 160 : 300; // Assume a fixed height or calculate based on content
|
|
154
|
+
|
|
155
|
+
if (countOnly && !viewMode) {
|
|
156
|
+
if (dropdownSelectedRef?.current)
|
|
157
|
+
dropdownHeight += dropdownSelectedRef?.current?.clientHeight;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
if (tab.length > 0) {
|
|
161
|
+
if (tabRef?.current)
|
|
162
|
+
dropdownHeight += tabRef?.current?.clientHeight;
|
|
163
|
+
}
|
|
164
|
+
console.log(dropdownHeight);
|
|
165
|
+
if (spaceBelow >= dropdownHeight) {
|
|
166
|
+
dropdownPosition.top =
|
|
167
|
+
inputRect.top + window.scrollY + inputRect.height;
|
|
168
|
+
} else {
|
|
169
|
+
dropdownPosition.top = viewMode
|
|
170
|
+
? inputRect.top + window.scrollY - dropdownHeight + 18 + topMargin
|
|
171
|
+
: inputRect.top +
|
|
172
|
+
window.scrollY -
|
|
173
|
+
dropdownHeight +
|
|
174
|
+
73 +
|
|
175
|
+
topMargin;
|
|
176
|
+
}
|
|
177
|
+
console.log(dropdownPosition);
|
|
178
|
+
setDropdownStyle({
|
|
179
|
+
...dropdownPosition,
|
|
180
|
+
});
|
|
131
181
|
}
|
|
132
|
-
setDropdownStyle({
|
|
133
|
-
...dropdownPosition,
|
|
134
|
-
});
|
|
135
182
|
}
|
|
136
183
|
};
|
|
184
|
+
// const adjustDropdownPosition = () => {
|
|
185
|
+
// if (!dropdownRef.current) return;
|
|
186
|
+
|
|
187
|
+
// const inputRect = dropdownRef.current.getBoundingClientRect();
|
|
188
|
+
// const dropdownPosition = {
|
|
189
|
+
// left: inputRect.left + window.scrollX,
|
|
190
|
+
// width: inputRect.width,
|
|
191
|
+
// top: 0,
|
|
192
|
+
// };
|
|
193
|
+
|
|
194
|
+
// const spaceBelow = window.innerHeight - inputRect.bottom;
|
|
195
|
+
// let dropdownHeight = viewMode ? 160 : 300; // Default dropdown height
|
|
196
|
+
|
|
197
|
+
// // Helper to calculate additional height from other elements
|
|
198
|
+
// const calculateAdditionalHeight = () => {
|
|
199
|
+
// let extraHeight = 0;
|
|
200
|
+
// if (countOnly && !viewMode && dropdownSelectedRef?.current) {
|
|
201
|
+
// extraHeight += dropdownSelectedRef.current.clientHeight;
|
|
202
|
+
// }
|
|
203
|
+
// if (tab.length > 0 && tabRef?.current) {
|
|
204
|
+
// extraHeight += tabRef.current.clientHeight;
|
|
205
|
+
// }
|
|
206
|
+
// return extraHeight;
|
|
207
|
+
// };
|
|
208
|
+
|
|
209
|
+
// dropdownHeight += calculateAdditionalHeight();
|
|
210
|
+
|
|
211
|
+
// // Determine top position based on available space
|
|
212
|
+
// if (spaceBelow >= dropdownHeight) {
|
|
213
|
+
// dropdownPosition.top =
|
|
214
|
+
// inputRect.top + window.scrollY + inputRect.height;
|
|
215
|
+
// } else {
|
|
216
|
+
// const adjustment = viewMode ? 18 + topMargin : 73 + topMargin;
|
|
217
|
+
// dropdownPosition.top =
|
|
218
|
+
// inputRect.top + window.scrollY - dropdownHeight + adjustment;
|
|
219
|
+
// }
|
|
220
|
+
|
|
221
|
+
// setDropdownStyle(dropdownPosition);
|
|
222
|
+
// };
|
|
137
223
|
|
|
138
224
|
useEffect(() => {
|
|
139
225
|
window.addEventListener('resize', adjustDropdownPosition);
|
|
@@ -396,10 +482,9 @@ const AutoCompleteWithSelectedList = forwardRef<
|
|
|
396
482
|
: '';
|
|
397
483
|
|
|
398
484
|
const handleDropOpen = async (e: any) => {
|
|
399
|
-
setIsReadyToRender(false);
|
|
400
485
|
e.stopPropagation();
|
|
486
|
+
|
|
401
487
|
if (viewMode) {
|
|
402
|
-
setIsReadyToRender(true);
|
|
403
488
|
adjustDropdownPosition();
|
|
404
489
|
}
|
|
405
490
|
setTimeout(() => {
|
|
@@ -409,7 +494,6 @@ const AutoCompleteWithSelectedList = forwardRef<
|
|
|
409
494
|
|
|
410
495
|
const handleDropClose = (e: any) => {
|
|
411
496
|
e.stopPropagation();
|
|
412
|
-
setIsReadyToRender(false);
|
|
413
497
|
if (dropOpen) setDropOpen(false);
|
|
414
498
|
};
|
|
415
499
|
|
|
@@ -488,13 +572,8 @@ const AutoCompleteWithSelectedList = forwardRef<
|
|
|
488
572
|
);
|
|
489
573
|
};
|
|
490
574
|
useEffect(() => {
|
|
491
|
-
if (!viewMode) {
|
|
492
|
-
|
|
493
|
-
adjustDropdownPosition();
|
|
494
|
-
setIsReadyToRender(true);
|
|
495
|
-
} else {
|
|
496
|
-
setIsReadyToRender(false);
|
|
497
|
-
}
|
|
575
|
+
if (dropOpen && !viewMode && selectedItems?.length > 0) {
|
|
576
|
+
adjustDropdownPosition();
|
|
498
577
|
}
|
|
499
578
|
}, [dropOpen]);
|
|
500
579
|
|
|
@@ -628,7 +707,6 @@ const AutoCompleteWithSelectedList = forwardRef<
|
|
|
628
707
|
{/* Suggestions Dropdown */}
|
|
629
708
|
|
|
630
709
|
{dropOpen &&
|
|
631
|
-
isReadyToRender &&
|
|
632
710
|
ReactDOM.createPortal(
|
|
633
711
|
<div
|
|
634
712
|
ref={dropRef}
|
|
@@ -713,50 +791,46 @@ const AutoCompleteWithSelectedList = forwardRef<
|
|
|
713
791
|
)}
|
|
714
792
|
</div>
|
|
715
793
|
<>
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
>
|
|
723
|
-
<div className=
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
Clear all
|
|
734
|
-
</div>
|
|
794
|
+
{countOnly && selectedItems?.length > 0 && (
|
|
795
|
+
<>
|
|
796
|
+
<div
|
|
797
|
+
className={`qbs-expandable-container qbs-dropdown-selected-container`}
|
|
798
|
+
ref={dropdownSelectedRef}
|
|
799
|
+
>
|
|
800
|
+
<div className={`qbs-flex qbs-w-full qbs-text-xs`}>
|
|
801
|
+
<div className="qbs-selected-lbs qbs-flex-grow">
|
|
802
|
+
Selected Items
|
|
803
|
+
</div>
|
|
804
|
+
<div
|
|
805
|
+
className={`qbs-clear-link qbs-text-right qbs-cursor-pointer ${
|
|
806
|
+
viewMode ? 'hidden' : ''
|
|
807
|
+
}`}
|
|
808
|
+
onClick={handleClearSelected}
|
|
809
|
+
>
|
|
810
|
+
Clear all
|
|
735
811
|
</div>
|
|
812
|
+
</div>
|
|
736
813
|
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
className={`icon-button-rotate`}
|
|
751
|
-
/>
|
|
752
|
-
</div>
|
|
814
|
+
{getSelectedItems(true)}
|
|
815
|
+
|
|
816
|
+
<>
|
|
817
|
+
{selectedItems?.length > itemCount &&
|
|
818
|
+
showAllSelected && (
|
|
819
|
+
<div className="qbs-readmore-collapse">
|
|
820
|
+
<div
|
|
821
|
+
className="qbs-more-collapse"
|
|
822
|
+
onClick={() => {
|
|
823
|
+
handleCollapseArrowClick();
|
|
824
|
+
}}
|
|
825
|
+
>
|
|
826
|
+
<DropArrow className={`icon-button-rotate`} />
|
|
753
827
|
</div>
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
828
|
+
</div>
|
|
829
|
+
)}
|
|
830
|
+
</>
|
|
831
|
+
</div>
|
|
832
|
+
</>
|
|
833
|
+
)}
|
|
760
834
|
</>
|
|
761
835
|
</div>,
|
|
762
836
|
document.body
|