Skip to content

Commit 8d74468

Browse files
committed
feat(grid): grid scrollSpeed Input can be binded without the need of a variable
1 parent 1253849 commit 8d74468

File tree

4 files changed

+22
-5
lines changed

4 files changed

+22
-5
lines changed

projects/angular-grid-layout/src/lib/coercion/number-property.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
// tslint:disable
2+
export type NumberInput = string | number | null | undefined;
3+
24
/** Coerces a data-bound value (typically a string) to a number. */
35
export function coerceNumberProperty(value: any): number;
46
export function coerceNumberProperty<D>(value: any, fallback: D): number | D;

projects/angular-grid-layout/src/lib/grid.component.ts

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import {
22
AfterContentChecked, AfterContentInit, ChangeDetectionStrategy, Component, ContentChildren, ElementRef, EventEmitter, Input, NgZone, OnChanges,
33
OnDestroy, Output, QueryList, Renderer2, SimpleChanges, ViewEncapsulation
44
} from '@angular/core';
5-
import { coerceNumberProperty } from './coercion/number-property';
5+
import { coerceNumberProperty, NumberInput } from './coercion/number-property';
66
import { KtdGridItemComponent } from './grid-item/grid-item.component';
77
import { combineLatest, merge, NEVER, Observable, Observer, of, Subscription } from 'rxjs';
88
import { exhaustMap, map, startWith, switchMap, takeUntil } from 'rxjs/operators';
@@ -117,17 +117,24 @@ export class KtdGridComponent implements OnChanges, AfterContentInit, AfterConte
117117
/** Emits when resize ends */
118118
@Output() resizeEnded: EventEmitter<KtdResizeEnd> = new EventEmitter<KtdResizeEnd>();
119119

120+
/** Whether or not to update the internal layout when some dependent property change. */
121+
@Input() compactOnPropsChange = true;
122+
120123
/**
121124
* Parent element that contains the scroll. If an string is provided it would search that element by id on the dom.
122125
* If no data provided or null autoscroll is not performed.
123126
*/
124127
@Input() scrollableParent: HTMLElement | Document | string | null = null;
125128

126129
/** Number of CSS pixels that would be scrolled on each 'tick' when auto scroll is performed. */
127-
@Input() scrollSpeed: number = 2;
130+
@Input()
131+
get scrollSpeed(): number { return this._scrollSpeed; }
128132

129-
/** Whether or not to update the internal layout when some dependent property change. */
130-
@Input() compactOnPropsChange = true;
133+
set scrollSpeed(value: number) {
134+
this._scrollSpeed = coerceNumberProperty(value, 2);
135+
}
136+
137+
private _scrollSpeed: number = 2;
131138

132139
/** Prevent collision, consider setting it to true if in no compaction */
133140
@Input() preventCollision: boolean = false;
@@ -462,5 +469,9 @@ export class KtdGridComponent implements OnChanges, AfterContentInit, AfterConte
462469
};
463470
});
464471
}
472+
473+
474+
// tslint:disable-next-line
475+
static ngAcceptInputType_scrollSpeed: NumberInput;
465476
}
466477

projects/angular-grid-layout/src/lib/grid.module.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { KtdGridComponent } from './grid.component';
44
import { KtdGridItemComponent } from './grid-item/grid-item.component';
55
import { KtdGridDragHandle } from './directives/drag-handle';
66
import { KtdGridResizeHandle } from './directives/resize-handle';
7-
7+
import { KtdGridService } from './grid.service';
88

99
@NgModule({
1010
declarations: [
@@ -19,6 +19,9 @@ import { KtdGridResizeHandle } from './directives/resize-handle';
1919
KtdGridDragHandle,
2020
KtdGridResizeHandle
2121
],
22+
providers: [
23+
KtdGridService
24+
],
2225
imports: [
2326
CommonModule
2427
]

projects/demo-app/src/app/playground/playground.component.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ <h1>Angular Grid Layout - Playground</h1>
7474
[compactType]="compactType"
7575
[preventCollision]="preventCollision"
7676
[scrollableParent]="autoScroll ? document : null"
77+
scrollSpeed="4"
7778
(dragStarted)="onDragStarted($event)"
7879
(resizeStarted)="onResizeStarted($event)"
7980
(dragEnded)="onDragEnded($event)"

0 commit comments

Comments
 (0)