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.
@@ -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 (dropdownRef.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
- }
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
- if (tab.length > 0) {
122
- if (tabRef?.current) dropdownHeight += tabRef?.current?.clientHeight;
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
- if (spaceBelow >= dropdownHeight) {
125
- dropdownPosition.top =
126
- inputRect.top + window.scrollY + inputRect.height;
127
- } else {
128
- dropdownPosition.top = viewMode
129
- ? inputRect.top + window.scrollY - dropdownHeight + 18 + topMargin
130
- : inputRect.top + window.scrollY - dropdownHeight + 73 + topMargin;
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
- if (dropOpen) {
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
- <div>
717
- {countOnly && selectedItems?.length > 0 && (
718
- <>
719
- <div
720
- className={`qbs-expandable-container qbs-dropdown-selected-container`}
721
- ref={dropdownSelectedRef}
722
- >
723
- <div className={`qbs-flex qbs-w-full qbs-text-xs`}>
724
- <div className="qbs-selected-lbs qbs-flex-grow">
725
- Selected Items
726
- </div>
727
- <div
728
- className={`qbs-clear-link qbs-text-right qbs-cursor-pointer ${
729
- viewMode ? 'hidden' : ''
730
- }`}
731
- onClick={handleClearSelected}
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
- {getSelectedItems(true)}
738
-
739
- <>
740
- {selectedItems?.length > itemCount &&
741
- showAllSelected && (
742
- <div className="qbs-readmore-collapse">
743
- <div
744
- className="qbs-more-collapse"
745
- onClick={() => {
746
- handleCollapseArrowClick();
747
- }}
748
- >
749
- <DropArrow
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
- </div>
757
- </>
758
- )}
759
- </div>
828
+ </div>
829
+ )}
830
+ </>
831
+ </div>
832
+ </>
833
+ )}
760
834
  </>
761
835
  </div>,
762
836
  document.body