Skip to content

Commit 3ee79b8

Browse files
authored
Remove @angular/material dependency from cdk library (#1519)
1 parent d7ab7a7 commit 3ee79b8

22 files changed

+67
-104
lines changed

libs/cdk/date/src/date-suggestion/strategies/date-suggestion-calendar-week.strategy.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,21 @@
1-
import { Injectable } from '@angular/core';
1+
import { Inject, Injectable } from '@angular/core';
22
import { AbstractControl } from '@angular/forms';
3-
import { DateAdapter } from '@angular/material/core';
43
import { DateIntervalDescriptor } from '@angular-ru/cdk/typings';
54

65
import { endOfDay } from '../../end-of-day';
76
import { shiftDate } from '../../shift-date/shift-date';
87
import { startOfDay } from '../../start-of-day';
98
import { DateSuggestionStrategy } from '../domain/interfaces/date-suggestion-strategy';
9+
import { DayOfWeek, FIRST_DAY_OF_WEEK } from '../tokens/first-day-of-week';
1010

1111
const WEEK_LENGTH: number = 7;
1212

1313
@Injectable()
1414
export class DateSuggestionCalendarWeekStrategy implements DateSuggestionStrategy {
15-
constructor(private readonly dateAdapter: DateAdapter<Date>) {}
15+
constructor(@Inject(FIRST_DAY_OF_WEEK) private readonly firstDayOfWeek: DayOfWeek) {}
1616

1717
public updateIntervalFor(control: AbstractControl, { dateFromKey, dateToKey }: DateIntervalDescriptor): void {
18-
const localizedDayOfWeek: number =
19-
(new Date().getDay() + WEEK_LENGTH - this.dateAdapter.getFirstDayOfWeek()) % WEEK_LENGTH;
18+
const localizedDayOfWeek: number = (new Date().getDay() + WEEK_LENGTH - this.firstDayOfWeek) % WEEK_LENGTH;
2019

2120
control.patchValue({
2221
[dateFromKey]: startOfDay(shiftDate({ days: -localizedDayOfWeek })),
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { InjectionToken } from '@angular/core';
2+
3+
export const enum DayOfWeek {
4+
Sunday,
5+
Monday,
6+
Tuesday,
7+
Wednesday,
8+
Thursday,
9+
Friday,
10+
Saturday
11+
}
12+
13+
export const FIRST_DAY_OF_WEEK: InjectionToken<DayOfWeek> = new InjectionToken<DayOfWeek>('First day of week', {
14+
factory: (): DayOfWeek => DayOfWeek.Monday
15+
});

libs/cdk/date/src/public_api.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export { DateSuggestionLastDaysOfIntervalStrategy } from './date-suggestion/stra
1313
export { DateSuggestionLastFewDaysStrategy } from './date-suggestion/strategies/date-suggestion-last-few-days.strategy';
1414
export { DateSuggestionSomeDayAgoStrategy } from './date-suggestion/strategies/date-suggestion-some-day-ago.strategy';
1515
export { DAYS_COUNT } from './date-suggestion/tokens/days-count';
16+
export { DayOfWeek, FIRST_DAY_OF_WEEK } from './date-suggestion/tokens/first-day-of-week';
1617
export { SUGGESTION_STRATEGY_MAP } from './date-suggestion/tokens/suggestion-strategy-map';
1718
export { endOfDay } from './end-of-day';
1819
export { getToday } from './get-today';

libs/cdk/directives/src/convert-case/convert-case.directive.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { AfterViewInit, Directive, ElementRef, HostListener, Input, Optional } from '@angular/core';
22
import { NgControl } from '@angular/forms';
3-
import { MatInput } from '@angular/material/input';
43
import { toStringValue } from '@angular-ru/cdk/string';
54

65
@Directive({ selector: '[convertCase]' })
@@ -10,7 +9,7 @@ export class ConvertCaseDirective implements AfterViewInit {
109

1110
constructor(private readonly elementRef: ElementRef, @Optional() private readonly ngControl?: NgControl) {}
1211

13-
private get element(): MatInput {
12+
private get element(): HTMLInputElement {
1413
return this.elementRef.nativeElement;
1514
}
1615

libs/cdk/package.json

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,19 @@
11
{
22
"name": "@angular-ru/cdk",
3-
"version": "14.11.2",
3+
"version": "15.0.0",
44
"description": "Angular-RU package",
55
"homepage": "https://github.com/Angular-RU/angular-ru-sdk/tree/master/libs/cdk#readme",
66
"bugs": "https://github.com/Angular-RU/angular-ru-sdk/issues",
77
"repository": "https://github.com/Angular-RU/angular-ru-sdk",
88
"license": "MIT",
99
"author": "[email protected]",
10+
"peerDependencies": {
11+
"@angular/cdk": ">=13.0.0",
12+
"@angular/common": ">=13.0.0",
13+
"@angular/core": ">=13.0.0",
14+
"@angular/forms": ">=13.0.0",
15+
"@angular/router": ">=13.0.0"
16+
},
1017
"publishConfig": {
1118
"access": "public"
1219
}

libs/cdk/tests/date/date-suggestion-custom.spec.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { TestBed } from '@angular/core/testing';
22
import { FormControl, FormGroup } from '@angular/forms';
3-
import { MATERIAL_SANITY_CHECKS, NativeDateModule } from '@angular/material/core';
43
import {
54
DateSuggestionComposer,
65
DateSuggestionModule,
@@ -21,8 +20,7 @@ describe('[TEST]: Trim Input', () => {
2120

2221
beforeEach(async () => {
2322
await TestBed.configureTestingModule({
24-
imports: [DateSuggestionModule.forRoot(EXTENDED_STRATEGY_MAP), NativeDateModule],
25-
providers: [{ provide: MATERIAL_SANITY_CHECKS, useValue: false }]
23+
imports: [DateSuggestionModule.forRoot(EXTENDED_STRATEGY_MAP)]
2624
}).compileComponents();
2725

2826
composer = TestBed.inject(DateSuggestionComposer);

libs/cdk/tests/date/date-suggestion.spec.ts

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import { TestBed } from '@angular/core/testing';
22
import { FormControl, FormGroup } from '@angular/forms';
3-
import { DateAdapter, MATERIAL_SANITY_CHECKS, NativeDateModule } from '@angular/material/core';
43
import {
54
DateSuggestionComposer,
65
DateSuggestionModule,
6+
DayOfWeek,
77
DEFAULT_SUGGESTION_STRATEGY_MAP,
88
DefaultDateIntervalSuggestion,
99
endOfDay,
10+
FIRST_DAY_OF_WEEK,
1011
shiftDate,
1112
startOfDay
1213
} from '@angular-ru/cdk/date';
@@ -19,19 +20,20 @@ describe('[TEST]: Trim Input', () => {
1920

2021
const mockToday: Date = new Date('28 Apr 2021 12:00:00');
2122
const mockFirstWeekdays = [
22-
{ firstDayOfWeekNumber: 0, firstDayOfWeek: new Date('25 Apr 2021 12:00:00') },
23-
{ firstDayOfWeekNumber: 1, firstDayOfWeek: new Date('26 Apr 2021 12:00:00') },
24-
{ firstDayOfWeekNumber: 2, firstDayOfWeek: new Date('27 Apr 2021 12:00:00') },
25-
{ firstDayOfWeekNumber: 3, firstDayOfWeek: new Date('28 Apr 2021 12:00:00') },
26-
{ firstDayOfWeekNumber: 4, firstDayOfWeek: new Date('22 Apr 2021 12:00:00') },
27-
{ firstDayOfWeekNumber: 5, firstDayOfWeek: new Date('23 Apr 2021 12:00:00') },
28-
{ firstDayOfWeekNumber: 6, firstDayOfWeek: new Date('24 Apr 2021 12:00:00') }
23+
{ firstDayOfWeekNumber: DayOfWeek.Sunday, firstDayOfWeek: new Date('25 Apr 2021 12:00:00') },
24+
{ firstDayOfWeekNumber: DayOfWeek.Monday, firstDayOfWeek: new Date('26 Apr 2021 12:00:00') },
25+
{ firstDayOfWeekNumber: DayOfWeek.Tuesday, firstDayOfWeek: new Date('27 Apr 2021 12:00:00') },
26+
{ firstDayOfWeekNumber: DayOfWeek.Wednesday, firstDayOfWeek: new Date('28 Apr 2021 12:00:00') },
27+
{ firstDayOfWeekNumber: DayOfWeek.Thursday, firstDayOfWeek: new Date('22 Apr 2021 12:00:00') },
28+
{ firstDayOfWeekNumber: DayOfWeek.Friday, firstDayOfWeek: new Date('23 Apr 2021 12:00:00') },
29+
{ firstDayOfWeekNumber: DayOfWeek.Saturday, firstDayOfWeek: new Date('24 Apr 2021 12:00:00') }
2930
];
31+
const firstDayOfWeekFactory = jest.fn();
3032

3133
beforeEach(async () => {
3234
await TestBed.configureTestingModule({
33-
imports: [DateSuggestionModule.forRoot(), NativeDateModule],
34-
providers: [{ provide: MATERIAL_SANITY_CHECKS, useValue: false }]
35+
imports: [DateSuggestionModule.forRoot()],
36+
providers: [{ provide: FIRST_DAY_OF_WEEK, useFactory: firstDayOfWeekFactory }]
3537
}).compileComponents();
3638

3739
composer = TestBed.inject(DateSuggestionComposer);
@@ -106,10 +108,8 @@ describe('[TEST]: Trim Input', () => {
106108
it.each(mockFirstWeekdays)(
107109
'set calendar week as interval (first day of week is %s)',
108110
({ firstDayOfWeekNumber, firstDayOfWeek }) => {
109-
const dateAdapter: DateAdapter<unknown> = TestBed.inject(DateAdapter);
110-
111111
// mocking locale day of week
112-
jest.spyOn(dateAdapter, 'getFirstDayOfWeek').mockImplementation(() => firstDayOfWeekNumber);
112+
firstDayOfWeekFactory.mockImplementation(() => firstDayOfWeekNumber);
113113

114114
// mocking today's week day
115115
jest.useFakeTimers('modern');
@@ -122,7 +122,7 @@ describe('[TEST]: Trim Input', () => {
122122
dateFrom: startOfDay(firstDayOfWeek),
123123
dateTo: endOfDay(mockToday)
124124
});
125-
expect(form.getRawValue().dateFrom.getDay()).toBe(dateAdapter.getFirstDayOfWeek());
125+
expect(form.getRawValue().dateFrom.getDay()).toBe(firstDayOfWeekNumber);
126126
}
127127
);
128128
});

libs/cdk/tests/directives/filter/filter-config.spec.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DebugElement } from '@angular/core';
22
import { ComponentFixture, TestBed } from '@angular/core/testing';
33
import { ReactiveFormsModule } from '@angular/forms';
4-
import { MATERIAL_SANITY_CHECKS } from '@angular/material/core';
5-
import { MatInputModule } from '@angular/material/input';
64
import { By } from '@angular/platform-browser';
75
import { InputFilterModule } from '@angular-ru/cdk/directives';
86
import { Nullable } from '@angular-ru/cdk/typings';
@@ -30,8 +28,7 @@ describe('[TEST]: inputFilter Config', () => {
3028

3129
beforeEach(() => {
3230
TestBed.configureTestingModule({
33-
imports: [ReactiveFormsModule, MatInputModule, InputFilterModule.forRoot({ default: /\d+/ })],
34-
providers: [{ provide: MATERIAL_SANITY_CHECKS, useValue: false }],
31+
imports: [ReactiveFormsModule, InputFilterModule.forRoot({ default: /\d+/ })],
3532
declarations: [TestComponent]
3633
}).compileComponents();
3734
});

libs/cdk/tests/directives/filter/filter-dynamic.spec.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DebugElement } from '@angular/core';
22
import { ComponentFixture, TestBed } from '@angular/core/testing';
33
import { AbstractControl, FormBuilder, ReactiveFormsModule } from '@angular/forms';
4-
import { MATERIAL_SANITY_CHECKS } from '@angular/material/core';
5-
import { MatInputModule } from '@angular/material/input';
64
import { By } from '@angular/platform-browser';
75
import { InputFilterModule } from '@angular-ru/cdk/directives';
86
import { FilterPredicate } from '@angular-ru/cdk/string';
@@ -37,8 +35,7 @@ describe('[TEST]: inputFilter Dynamic', function () {
3735

3836
beforeEach(async () => {
3937
await TestBed.configureTestingModule({
40-
imports: [ReactiveFormsModule, MatInputModule, InputFilterModule],
41-
providers: [{ provide: MATERIAL_SANITY_CHECKS, useValue: false }],
38+
imports: [ReactiveFormsModule, InputFilterModule],
4239
declarations: [DynamicTestComponent]
4340
}).compileComponents();
4441

libs/cdk/tests/directives/filter/filter-form.spec.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import { ChangeDetectionStrategy, Component, DebugElement } from '@angular/core';
22
import { ComponentFixture, TestBed } from '@angular/core/testing';
33
import { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms';
4-
import { MATERIAL_SANITY_CHECKS } from '@angular/material/core';
5-
import { MatInputModule } from '@angular/material/input';
64
import { By } from '@angular/platform-browser';
75
import { InputFilterModule } from '@angular-ru/cdk/directives';
86
import { Nullable } from '@angular-ru/cdk/typings';
@@ -45,8 +43,7 @@ describe('[TEST]: inputFilter Input', function () {
4543

4644
beforeEach(async () => {
4745
await TestBed.configureTestingModule({
48-
imports: [ReactiveFormsModule, MatInputModule, InputFilterModule, FormsModule],
49-
providers: [{ provide: MATERIAL_SANITY_CHECKS, useValue: false }],
46+
imports: [ReactiveFormsModule, InputFilterModule, FormsModule],
5047
declarations: [TestComponent]
5148
}).compileComponents();
5249

0 commit comments

Comments
 (0)