mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-31 17:38:48 +00:00
[ADF-4227] Material Dialog - change direction option based on textOrientation (#4716)
* change matDialog direction based on textOrientation * move dialog providers to material.module * extend initial options * move UserPreferencesService from factory * update module * update test * material dialog correct reference * extend default global options * tests
This commit is contained in:
committed by
Denys Vuika
parent
de0f906163
commit
164d398abc
23
lib/core/services/dialog-config-factory.ts
Normal file
23
lib/core/services/dialog-config-factory.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright 2019 Alfresco Software, Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
import { DialogConfigService } from '../services/dialog-config.service';
|
||||
|
||||
export function dialogConfigFactory(
|
||||
dialogConfigService: DialogConfigService
|
||||
): Function {
|
||||
return () => dialogConfigService.loadDefaults();
|
||||
}
|
69
lib/core/services/dialog-config.service.spec.ts
Normal file
69
lib/core/services/dialog-config.service.spec.ts
Normal file
@@ -0,0 +1,69 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright 2019 Alfresco Software, Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { TestBed } from '@angular/core/testing';
|
||||
import { DialogConfigService } from './dialog-config.service';
|
||||
import { CoreTestingModule } from '../testing/core.testing.module';
|
||||
import { setupTestBed } from '../testing/setupTestBed';
|
||||
import { MAT_DIALOG_DEFAULT_OPTIONS, MatDialogConfig } from '@angular/material/dialog';
|
||||
import { UserPreferencesService } from './user-preferences.service';
|
||||
import { Direction } from '@angular/cdk/bidi';
|
||||
|
||||
describe('DialogConfigService', () => {
|
||||
let matDialogConfig: MatDialogConfig;
|
||||
let userPreferencesService: UserPreferencesService;
|
||||
let matDialogGlobalOptions: MatDialogConfig;
|
||||
|
||||
setupTestBed({
|
||||
imports: [CoreTestingModule],
|
||||
providers: [
|
||||
DialogConfigService,
|
||||
UserPreferencesService,
|
||||
{
|
||||
provide: MAT_DIALOG_DEFAULT_OPTIONS,
|
||||
useValue: MAT_DIALOG_DEFAULT_OPTIONS
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
userPreferencesService = TestBed.get(UserPreferencesService);
|
||||
matDialogConfig = TestBed.get(MatDialogConfig);
|
||||
matDialogGlobalOptions = TestBed.get(MAT_DIALOG_DEFAULT_OPTIONS);
|
||||
});
|
||||
|
||||
it('should load custom defaults', () => {
|
||||
expect(matDialogConfig).toEqual(jasmine.objectContaining({
|
||||
autoFocus: true,
|
||||
closeOnNavigation: true
|
||||
}));
|
||||
});
|
||||
|
||||
it('should set dialog direction option on textOrientation event', () => {
|
||||
userPreferencesService.set('textOrientation', 'rtl');
|
||||
|
||||
expect(matDialogGlobalOptions).toEqual(jasmine.objectContaining({
|
||||
direction: <Direction> 'rtl'
|
||||
}));
|
||||
|
||||
userPreferencesService.set('textOrientation', 'ltr');
|
||||
|
||||
expect(matDialogGlobalOptions).toEqual(jasmine.objectContaining({
|
||||
direction: <Direction> 'ltr'
|
||||
}));
|
||||
});
|
||||
});
|
52
lib/core/services/dialog-config.service.ts
Normal file
52
lib/core/services/dialog-config.service.ts
Normal file
@@ -0,0 +1,52 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright 2019 Alfresco Software, Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
/* spellchecker: disable */
|
||||
import { Injectable, Inject } from '@angular/core';
|
||||
import { MAT_DIALOG_DEFAULT_OPTIONS, MatDialogConfig } from '@angular/material/dialog';
|
||||
import { Direction } from '@angular/cdk/bidi';
|
||||
import { UserPreferencesService } from '../services/user-preferences.service';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class DialogConfigService {
|
||||
constructor(
|
||||
@Inject(MAT_DIALOG_DEFAULT_OPTIONS) private defaultOptions: MatDialogConfig,
|
||||
private matDialogConfig: MatDialogConfig,
|
||||
private userPreferencesService: UserPreferencesService
|
||||
) {
|
||||
this.userPreferencesService
|
||||
.select('textOrientation')
|
||||
.subscribe((direction: Direction) => {
|
||||
this.changeDirection(direction);
|
||||
});
|
||||
}
|
||||
|
||||
loadDefaults() {
|
||||
Object.assign(this.defaultOptions, this.matDialogConfig, <MatDialogConfig> {
|
||||
autoFocus: true,
|
||||
closeOnNavigation: true
|
||||
});
|
||||
}
|
||||
|
||||
private changeDirection(direction: Direction) {
|
||||
Object.assign(this.defaultOptions, this.matDialogConfig, <MatDialogConfig> {
|
||||
direction
|
||||
});
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user