Skip to content

Commit 41f1d5f

Browse files
committed
chore(select): Address comments-6 #5911
1 parent 5790778 commit 41f1d5f

File tree

1 file changed

+11
-27
lines changed

1 file changed

+11
-27
lines changed

projects/igniteui-angular/src/lib/select/select-positioning-strategy.ts

+11-27
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,13 @@ export class SelectPositioningStrategy extends BaseFitPositionStrategy implement
4646
};
4747

4848
if (initialCall) {
49+
// Fill in the required selectFit object properties.
4950
selectFit.viewPortRect = Util.getViewportRect(document);
51+
selectFit.itemRect = this.getInteractionItemElement().getBoundingClientRect();
52+
selectFit.itemElement = this.getInteractionItemElement();
5053

51-
// Fill in the required selectFit object properties.
52-
this.calculateVariables(selectFit);
5354
// Calculate input and selected item elements style related variables
5455
selectFit.styles = this.calculateStyles(selectFit);
55-
selectFit.viewPortRect = Util.getViewportRect(document);
5656

5757
// Calculate how much to offset the overlay container.
5858
this.calculateYoffset(selectFit);
@@ -100,17 +100,6 @@ export class SelectPositioningStrategy extends BaseFitPositionStrategy implement
100100
return scrollAmount;
101101
}
102102

103-
private calculateScrollPosition(selectFit: SelectFit): number {
104-
if (!selectFit.itemElement) { // this check may not be necessary
105-
return 0;
106-
}
107-
108-
const elementRect = selectFit.itemRect;
109-
const parentRect = this.select.scrollContainer.getBoundingClientRect();
110-
const scrollPosition = elementRect.bottom - parentRect.bottom;
111-
return Math.floor(scrollPosition);
112-
}
113-
114103
// Position the items outer container Below or Above the input.
115104
fitInViewport(contentElement: HTMLElement, selectFit: SelectFit) {
116105
// Position Select component's container below target/input as preferred positioning over above target/input
@@ -121,12 +110,10 @@ export class SelectPositioningStrategy extends BaseFitPositionStrategy implement
121110
// Position Select component's container below target/input as preferred positioning over above target/input
122111
if (canFitBelowInput || !canFitAboveInput) {
123112
// Calculate container starting point;
124-
// TODO: modify the yOffset instead & use one call to super.setStyle
125113
selectFit.top = selectFit.targetRect.top - selectFit.styles.itemTextToInputTextDiff;
126114

127115
} else {
128116
// Position Select component's container above target/input
129-
// TODO: modify the yOffset instead & use one call to super.setStyle
130117
selectFit.top = selectFit.targetRect.bottom + selectFit.styles.itemTextToInputTextDiff -
131118
selectFit.contentElementRect.height;
132119
}
@@ -146,28 +133,25 @@ export class SelectPositioningStrategy extends BaseFitPositionStrategy implement
146133
this.global_styles.contentElementNewWidth = selectFit.styles.contentElementNewWidth;
147134
}
148135

149-
private calculateVariables(selectFit: SelectFit) {
150-
selectFit.itemRect = this.getInteractionItemElement().getBoundingClientRect();
151-
selectFit.itemElement = this.getInteractionItemElement();
152-
}
153-
154136
public calculateStyles(selectFit: SelectFit): SelectStyles {
155137
const styles: SelectStyles = {};
156-
const inputFontSize = window.getComputedStyle(this.settings.target as Element).fontSize;
138+
const inputElementStyles = window.getComputedStyle(this.settings.target as Element);
139+
const itemElementStyles = window.getComputedStyle(selectFit.itemElement);
140+
const inputFontSize = inputElementStyles.fontSize;
157141
const numericInputFontSize = parseFloat(inputFontSize);
158-
const itemFontSize = window.getComputedStyle(selectFit.itemElement).fontSize;
142+
const itemFontSize = itemElementStyles.fontSize;
159143
const numericItemFontSize = parseFloat(itemFontSize);
160144
const inputTextToInputTop = (selectFit.targetRect.bottom - selectFit.targetRect.top - numericInputFontSize) / 2;
161145
const itemTextToItemTop = (selectFit.itemRect.height - numericItemFontSize) / 2;
162146
// Adjust for input top padding
163147
const negateInputPaddings = (
164-
parseFloat(window.getComputedStyle(this.settings.target as Element).paddingTop) -
165-
parseFloat(window.getComputedStyle(this.settings.target as Element).paddingBottom)
148+
parseFloat(inputElementStyles.paddingTop) -
149+
parseFloat(inputElementStyles.paddingBottom)
166150
) / 2;
167151
styles.itemTextToInputTextDiff = Math.ceil(itemTextToItemTop - inputTextToInputTop + negateInputPaddings);
168152

169-
const itemLeftPadding = window.getComputedStyle(selectFit.itemElement).paddingLeft;
170-
const itemTextIndent = window.getComputedStyle(selectFit.itemElement).textIndent;
153+
const itemLeftPadding = itemElementStyles.paddingLeft;
154+
const itemTextIndent = itemElementStyles.textIndent;
171155
const numericLeftPadding = parseFloat(itemLeftPadding);
172156
const numericTextIndent = parseFloat(itemTextIndent);
173157

0 commit comments

Comments
 (0)