Skip to content

Commit 3086688

Browse files
committed
chore(select): minor refactoring #5911
1 parent 504f61f commit 3086688

File tree

3 files changed

+16
-17
lines changed

3 files changed

+16
-17
lines changed

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

+8-11
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ export class SelectPositioningStrategy extends BaseFitPositionStrategy implement
5353
// Calculate input and selected item elements style related variables
5454
selectFit.styles = this.calculateStyles(selectFit);
5555

56-
selectFit.scrollAmount = this.calculateScrollPosition(selectFit);
56+
selectFit.scrollAmount = this.calculateScrollAmount(selectFit);
5757
// Calculate how much to offset the overlay container.
5858
this.calculateYoffset(selectFit);
5959
this.calculateXoffset(selectFit);
@@ -71,7 +71,7 @@ export class SelectPositioningStrategy extends BaseFitPositionStrategy implement
7171
/**
7272
* Calculate selected item scroll position.
7373
*/
74-
public calculateScrollPosition(selectFit: SelectFit): number {
74+
private calculateScrollAmount(selectFit: SelectFit): number {
7575
const itemElementRect = selectFit.itemRect;
7676
const scrollContainer = selectFit.scrollContainer;
7777
const scrollContainerRect = selectFit.scrollContainerRect;
@@ -91,14 +91,14 @@ export class SelectPositioningStrategy extends BaseFitPositionStrategy implement
9191
* @param selectFit selectFit to use for computation.
9292
*/
9393
protected fitInViewport(contentElement: HTMLElement, selectFit: SelectFit) {
94-
const footer = selectFit.scrollContainer.getBoundingClientRect().bottom - selectFit.contentElementRect.bottom;
95-
const header = selectFit.scrollContainer.getBoundingClientRect().top - selectFit.contentElementRect.top;
94+
const footer = selectFit.scrollContainerRect.bottom - selectFit.contentElementRect.bottom;
95+
const header = selectFit.scrollContainerRect.top - selectFit.contentElementRect.top;
9696
const lastItemFitSize = selectFit.targetRect.bottom + selectFit.styles.itemTextToInputTextDiff - footer;
9797
const firstItemFitSize = selectFit.targetRect.top - selectFit.styles.itemTextToInputTextDiff - header;
9898
// out of viewPort on Top
9999
if (selectFit.fitVertical.back < 0) {
100100
const possibleScrollAmount = selectFit.scrollContainer.scrollHeight -
101-
selectFit.scrollContainer.getBoundingClientRect().height - selectFit.scrollAmount;
101+
selectFit.scrollContainerRect.height - selectFit.scrollAmount;
102102
if (possibleScrollAmount + selectFit.fitVertical.back > 0 && firstItemFitSize > selectFit.viewPortRect.top) {
103103
selectFit.scrollAmount -= selectFit.fitVertical.back;
104104
selectFit.verticalOffset -= selectFit.fitVertical.back;
@@ -142,8 +142,7 @@ export class SelectPositioningStrategy extends BaseFitPositionStrategy implement
142142
const inputElementStyles = window.getComputedStyle(this.settings.target as Element);
143143
const itemElementStyles = window.getComputedStyle(selectFit.itemElement);
144144
const numericInputFontSize = parseFloat(inputElementStyles.fontSize);
145-
const itemFontSize = itemElementStyles.fontSize;
146-
const numericItemFontSize = parseFloat(itemFontSize);
145+
const numericItemFontSize = parseFloat(itemElementStyles.fontSize);
147146
const inputTextToInputTop = (selectFit.targetRect.bottom - selectFit.targetRect.top - numericInputFontSize) / 2;
148147
const itemTextToItemTop = (selectFit.itemRect.height - numericItemFontSize) / 2;
149148
// Adjust for input top padding
@@ -153,10 +152,8 @@ export class SelectPositioningStrategy extends BaseFitPositionStrategy implement
153152
) / 2;
154153
styles.itemTextToInputTextDiff = Math.ceil(itemTextToItemTop - inputTextToInputTop + negateInputPaddings);
155154

156-
const itemLeftPadding = itemElementStyles.paddingLeft;
157-
const itemTextIndent = itemElementStyles.textIndent;
158-
const numericLeftPadding = parseFloat(itemLeftPadding);
159-
const numericTextIndent = parseFloat(itemTextIndent);
155+
const numericLeftPadding = parseFloat(itemElementStyles.paddingLeft);
156+
const numericTextIndent = parseFloat(itemElementStyles.textIndent);
160157

161158
styles.itemTextPadding = numericLeftPadding;
162159
styles.itemTextIndent = numericTextIndent;

Diff for: projects/igniteui-angular/src/lib/services/overlay/position/base-fit-position-strategy.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ export abstract class BaseFitPositionStrategy extends ConnectedPositioningStrate
3535
connectedFit.contentElementRect,
3636
this.settings.horizontalStartPoint,
3737
this.settings.horizontalDirection,
38-
connectedFit.horizontalOffset);
38+
connectedFit.horizontalOffset ? connectedFit.horizontalOffset : 0);
3939
connectedFit.right = connectedFit.left + connectedFit.contentElementRect.width;
4040
connectedFit.fitHorizontal = {
4141
back: Math.floor(connectedFit.left - connectedFit.viewPortRect.left),
@@ -47,7 +47,7 @@ export abstract class BaseFitPositionStrategy extends ConnectedPositioningStrate
4747
connectedFit.contentElementRect,
4848
this.settings.verticalStartPoint,
4949
this.settings.verticalDirection,
50-
connectedFit.verticalOffset);
50+
connectedFit.verticalOffset ? connectedFit.verticalOffset : 0);
5151
connectedFit.bottom = connectedFit.top + connectedFit.contentElementRect.height;
5252
connectedFit.fitVertical = {
5353
back: Math.floor(connectedFit.top - connectedFit.viewPortRect.top),

Diff for: projects/igniteui-angular/src/lib/services/overlay/position/connected-positioning-strategy.ts

+6-4
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ export class ConnectedPositioningStrategy implements IPositionStrategy {
4848
/** @inheritdoc */
4949
position(contentElement: HTMLElement, size: Size, document?: Document, initialCall?: boolean): void {
5050
const rects = this.calculateElementRectangles(contentElement);
51-
this.setStyle(contentElement, rects.targetRect, rects.elementRect);
51+
this.setStyle(contentElement, rects.targetRect, rects.elementRect, {});
5252
}
5353

5454
/**
@@ -67,10 +67,12 @@ export class ConnectedPositioningStrategy implements IPositionStrategy {
6767
* @param targetRect Bounding rectangle of strategy target
6868
* @param elementRect Bounding rectangle of the element
6969
*/
70-
protected setStyle(element: HTMLElement, targetRect: ClientRect, elementRect: ClientRect, connectedFit?: ConnectedFit) {
70+
protected setStyle(element: HTMLElement, targetRect: ClientRect, elementRect: ClientRect, connectedFit: ConnectedFit) {
71+
const horizontalOffset = connectedFit.horizontalOffset ? connectedFit.horizontalOffset : 0;
72+
const verticalOffset = connectedFit.verticalOffset ? connectedFit.verticalOffset : 0;
7173
const startPoint: Point = {
72-
x: targetRect.right + targetRect.width * this.settings.horizontalStartPoint + (connectedFit ? connectedFit.horizontalOffset : 0),
73-
y: targetRect.bottom + targetRect.height * this.settings.verticalStartPoint + (connectedFit ? connectedFit.verticalOffset : 0)
74+
x: targetRect.right + targetRect.width * this.settings.horizontalStartPoint + horizontalOffset,
75+
y: targetRect.bottom + targetRect.height * this.settings.verticalStartPoint + verticalOffset
7476
};
7577
const wrapperRect: ClientRect = element.parentElement.getBoundingClientRect();
7678

0 commit comments

Comments
 (0)