Skip to content

Commit eee5463

Browse files
mateusjmafjhosefmarks
authored andcommitted
feat(page-list): traduz "busca avançada" com a linguagem utilizada no I18n
Implementado o serviço I18N que busca a linguagem definida na aplicação. Fixes DTHFUI-1563
1 parent c398075 commit eee5463

File tree

6 files changed

+100
-78
lines changed

6 files changed

+100
-78
lines changed

projects/ui/src/lib/components/po-page/po-page-list/po-page-list-base.component.spec.ts

Lines changed: 40 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { expectPropertiesValues } from '../../../util-test/util-expect.spec';
22
import { poLocaleDefault } from './../../../utils/util';
33
import * as UtilFunctions from './../../../utils/util';
4+
import { PoLanguageService } from './../../../services/po-language/po-language.service';
45

56
import { PoDisclaimer } from '../../po-disclaimer/po-disclaimer.interface';
67

@@ -13,64 +14,70 @@ class PoPageListComponent extends PoPageListBaseComponent {
1314
}
1415

1516
describe('PoPageListBaseComponent:', () => {
16-
const component = new PoPageListComponent();
17+
const languageService = new PoLanguageService();
18+
const component = new PoPageListComponent(languageService);
1719

1820
it('should be created', () => {
1921
expect(component instanceof PoPageListBaseComponent).toBeTruthy();
2022
});
2123

2224
describe('Properties:', () => {
23-
it('p-literals: should be in portuguese if browser is setted with an unsupported language', () => {
24-
spyOn(UtilFunctions, <any>'browserLanguage').and.returnValue('ru');
2525

26-
component.literals = {};
26+
describe('p-literals:', () => {
2727

28-
expect(component.literals).toEqual(poPageListLiteralsDefault[poLocaleDefault]);
29-
});
28+
it('should be in portuguese if `getShortLanguage` return an unsupported language.', () => {
29+
component['language'] = 'ru';
3030

31-
it('p-literals: should be in portuguese if browser is setted with `pt`', () => {
32-
spyOn(UtilFunctions, <any>'browserLanguage').and.returnValue('pt');
31+
component.literals = {};
3332

34-
component.literals = {};
33+
expect(component.literals).toEqual(poPageListLiteralsDefault[poLocaleDefault]);
34+
});
3535

36-
expect(component.literals).toEqual(poPageListLiteralsDefault.pt);
37-
});
36+
it('should be in portuguese if `getShortLanguage` return `pt`.', () => {
37+
component['language'] = 'pt';
3838

39-
it('p-literals: should be in english if browser is setted with `en`', () => {
40-
spyOn(UtilFunctions, <any>'browserLanguage').and.returnValue('en');
39+
component.literals = {};
4140

42-
component.literals = {};
41+
expect(component.literals).toEqual(poPageListLiteralsDefault.pt);
42+
});
4343

44-
expect(component.literals).toEqual(poPageListLiteralsDefault.en);
45-
});
44+
it('should be in english if `getShortLanguage` return `en`.', () => {
45+
component['language'] = 'en';
4646

47-
it('p-literals: should be in spanish if browser is setted with `es`', () => {
48-
spyOn(UtilFunctions, <any>'browserLanguage').and.returnValue('es');
47+
component.literals = {};
4948

50-
component.literals = {};
49+
expect(component.literals).toEqual(poPageListLiteralsDefault.en);
50+
});
5151

52-
expect(component.literals).toEqual(poPageListLiteralsDefault.es);
53-
});
52+
it('should be in spanish if `getShortLanguage` return `es`.', () => {
53+
component['language'] = 'es';
5454

55-
it('p-literals: should accept custom literals', () => {
56-
spyOn(UtilFunctions, <any>'browserLanguage').and.returnValue(poLocaleDefault);
55+
component.literals = {};
5756

58-
const customLiterals = poPageListLiteralsDefault[poLocaleDefault];
57+
expect(component.literals).toEqual(poPageListLiteralsDefault.es);
58+
});
5959

60-
// Custom some literals
61-
customLiterals.otherActions = 'Other actions';
60+
it('should accept custom literals.', () => {
61+
spyOn(UtilFunctions, <any>'browserLanguage').and.returnValue(poLocaleDefault);
6262

63-
component.literals = customLiterals;
63+
const customLiterals = poPageListLiteralsDefault[poLocaleDefault];
6464

65-
expect(component.literals).toEqual(customLiterals);
66-
});
65+
// Custom some literals
66+
customLiterals.otherActions = 'Other actions';
67+
68+
component.literals = customLiterals;
69+
70+
expect(component.literals).toEqual(customLiterals);
71+
});
72+
73+
it('should update property with default literals if is setted with invalid values.', () => {
74+
const invalidValues = [null, undefined, false, true, '', 'literals', 0, 10, [], [1, 2], () => {}];
6775

68-
it('p-literals: should update property with default literals if is setted with invalid values', () => {
69-
const invalidValues = [null, undefined, false, true, '', 'literals', 0, 10, [], [1, 2], () => {}];
76+
component['language'] = poLocaleDefault;
7077

71-
spyOn(UtilFunctions, <any>'browserLanguage').and.returnValue(poLocaleDefault);
78+
expectPropertiesValues(component, 'literals', invalidValues, poPageListLiteralsDefault[poLocaleDefault]);
79+
});
7280

73-
expectPropertiesValues(component, 'literals', invalidValues, poPageListLiteralsDefault[poLocaleDefault]);
7481
});
7582

7683
it('should return object when set disclaimerGroup with undefined', () => {

projects/ui/src/lib/components/po-page/po-page-list/po-page-list-base.component.ts

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Input } from '@angular/core';
22

3-
import { browserLanguage, poLocaleDefault } from './../../../utils/util';
3+
import { poLocaleDefault } from './../../../utils/util';
4+
import { PoLanguageService } from './../../../services/po-language/po-language.service';
45

56
import { PoBreadcrumb } from '../../po-breadcrumb/po-breadcrumb.interface';
67
import { PoDisclaimerGroup } from '../../po-disclaimer-group/po-disclaimer-group.interface';
@@ -38,6 +39,9 @@ export abstract class PoPageListBaseComponent extends PoPageDefaultBaseComponent
3839
private _disclaimerGroup?: PoDisclaimerGroup;
3940
private _literals: PoPageListLiterals;
4041

42+
protected language: string;
43+
protected resizeListener: () => void;
44+
4145
/**
4246
* @optional
4347
*
@@ -104,23 +108,28 @@ export abstract class PoPageListBaseComponent extends PoPageDefaultBaseComponent
104108
* </po-page-list>
105109
* ```
106110
*
107-
* > O objeto padrão de literais será traduzido de acordo com o idioma do browser (pt, en, es).
111+
* > O valor padrão será traduzido de acordo com o idioma configurado no [`PoI18nService`](/documentation/po-i18n) ou *browser*.
108112
*/
109113
@Input('p-literals') set literals(value: PoPageListLiterals) {
110114
if (value instanceof Object && !(value instanceof Array)) {
111115
this._literals = {
112116
...poPageListLiteralsDefault[poLocaleDefault],
113-
...poPageListLiteralsDefault[browserLanguage()],
117+
...poPageListLiteralsDefault[this.language],
114118
...value
115119
};
116120
} else {
117-
this._literals = poPageListLiteralsDefault[browserLanguage()];
121+
this._literals = poPageListLiteralsDefault[this.language];
118122
}
119123
}
124+
120125
get literals() {
121-
return this._literals || poPageListLiteralsDefault[browserLanguage()];
126+
return this._literals || poPageListLiteralsDefault[this.language];
122127
}
123128

124-
protected resizeListener: () => void;
129+
constructor(languageService: PoLanguageService) {
130+
super();
131+
132+
this.language = languageService.getShortLanguage();
133+
}
125134

126135
}

projects/ui/src/lib/components/po-page/po-page-list/po-page-list.component.spec.ts

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
44
import { Router } from '@angular/router';
55
import { RouterTestingModule } from '@angular/router/testing';
66

7-
import * as UtilFunctions from './../../../utils/util';
87
import { changeBrowserInnerWidth, configureTestSuite } from '../../../util-test/util-expect.spec';
98

109
import { PoBreadcrumbModule } from '../../po-breadcrumb/po-breadcrumb.module';
@@ -531,20 +530,26 @@ describe('PoPageListComponent - Desktop:', () => {
531530
expect(component.hasPageHeader()).toBe(false);
532531
});
533532

534-
it('initFixedLiterals: should return the advanced filter label by browser language.', () => {
535-
const browserLanguage = spyOn(UtilFunctions, <any>'browserLanguage');
533+
describe('initializeFixedLiterals:', () => {
536534

537-
browserLanguage.and.returnValue('pt');
535+
it('should return the advanced filter label by `pt` language.', () => {
536+
component['language'] = 'pt';
538537

539-
expect(component['initFixedLiterals']()).toBe('Busca avançada');
538+
expect(component['initializeFixedLiterals']()).toBe('Busca avançada');
539+
});
540540

541-
browserLanguage.and.returnValue('en');
541+
it('should return the advanced filter label by `en` language.', () => {
542+
component['language'] = 'en';
542543

543-
expect(component['initFixedLiterals']()).toBe('Advanced search');
544+
expect(component['initializeFixedLiterals']()).toBe('Advanced search');
545+
});
544546

545-
browserLanguage.and.returnValue('es');
547+
it('should return the advanced filter label by `es` language.', () => {
548+
component['language'] = 'es';
549+
550+
expect(component['initializeFixedLiterals']()).toBe('Búsqueda avanzada');
551+
});
546552

547-
expect(component['initFixedLiterals']()).toBe('Búsqueda avanzada');
548553
});
549554

550555
});

projects/ui/src/lib/components/po-page/po-page-list/po-page-list.component.ts

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@ import {
33
} from '@angular/core';
44
import { Router } from '@angular/router';
55

6-
import { browserLanguage, callFunction, isTypeof } from '../../../utils/util';
6+
import { callFunction, isTypeof } from '../../../utils/util';
7+
import { PoLanguageService } from './../../../services/po-language/po-language.service';
8+
79
import { PoPageAction } from '../po-page-action.interface';
8-
import { PoPageContentComponent } from '../po-page-content/po-page-content.component';
910

11+
import { PoPageContentComponent } from '../po-page-content/po-page-content.component';
1012
import { PoPageListBaseComponent } from './po-page-list-base.component';
1113

1214
/**
@@ -51,16 +53,17 @@ export class PoPageListComponent extends PoPageListBaseComponent implements Afte
5153

5254
constructor(
5355
viewRef: ViewContainerRef,
56+
languageService: PoLanguageService,
5457
public renderer: Renderer2,
5558
private router: Router) {
5659

57-
super();
60+
super(languageService);
5861
this.parentRef = viewRef['_view']['component'];
5962
this.initializeListeners();
6063
}
6164

6265
ngOnInit(): void {
63-
this.advancedSearch = this.initFixedLiterals();
66+
this.advancedSearch = this.initializeFixedLiterals();
6467
}
6568

6669
ngAfterContentInit(): void {
@@ -123,24 +126,6 @@ export class PoPageListComponent extends PoPageListBaseComponent implements Afte
123126
this.callFunction(this.filter[field], this.parentRef);
124127
}
125128

126-
initFixedLiterals() {
127-
const locale = browserLanguage();
128-
129-
const literal = {
130-
pt: {
131-
advancedSearch: 'Busca avançada'
132-
},
133-
en: {
134-
advancedSearch: 'Advanced search'
135-
},
136-
es: {
137-
advancedSearch: 'Búsqueda avanzada'
138-
}
139-
};
140-
141-
return literal[locale].advancedSearch;
142-
}
143-
144129
onkeypress(key) {
145130
if (key === 13) {
146131
this.callActionFilter('action');
@@ -163,6 +148,22 @@ export class PoPageListComponent extends PoPageListBaseComponent implements Afte
163148
}
164149
}
165150

151+
private initializeFixedLiterals() {
152+
const literal = {
153+
pt: {
154+
advancedSearch: 'Busca avançada'
155+
},
156+
en: {
157+
advancedSearch: 'Advanced search'
158+
},
159+
es: {
160+
advancedSearch: 'Búsqueda avanzada'
161+
}
162+
};
163+
164+
return literal[this.language].advancedSearch;
165+
}
166+
166167
private initializeListeners() {
167168
this.resizeListener = this.renderer.listen('window', 'resize', (event: MouseEvent) => {
168169
this.onResize(event);

projects/ui/src/lib/components/po-page/po-page.module.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { PoButtonModule } from '../po-button/po-button.module';
88
import { PoDisclaimerGroupModule } from '../po-disclaimer-group/po-disclaimer-group.module';
99
import { PoDropdownModule } from '../po-dropdown/po-dropdown.module';
1010
import { PoFieldModule } from '../po-field/po-field.module';
11+
import { PoLanguageModule } from './../../services/po-language/po-language.module';
1112
import { PoModalModule } from './../po-modal/po-modal.module';
1213
import { PoPageComponent } from './po-page.component';
1314
import { PoPageContentComponent } from './po-page-content/po-page-content.component';
@@ -31,6 +32,7 @@ import { PoPageListComponent } from './po-page-list/po-page-list.component';
3132
PoDisclaimerGroupModule,
3233
PoDropdownModule,
3334
PoFieldModule,
35+
PoLanguageModule,
3436
PoModalModule
3537
],
3638
declarations: [

projects/ui/src/lib/components/po-progress/samples/sample-po-progress-publication/sample-po-progress-publication.component.ts

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,21 @@ import { Component } from '@angular/core';
22

33
@Component({
44
selector: 'sample-po-progress-publication',
5-
templateUrl: './sample-po-progress-publication.component.html',
5+
templateUrl: './sample-po-progress-publication.component.html'
66
})
77
export class SamplePoProgressPublicationComponent {
88

99
buttonDisabled: boolean;
1010
progressBarValue = 0;
11-
12-
get progressBarInfo() {
13-
return `${this.progressBarValue}/100`;
14-
}
15-
16-
get publication() {
17-
return `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque sodales, metus quis gravida dignissim, justo eros interdum
11+
publication: string =
12+
`Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque sodales, metus quis gravida dignissim, justo eros interdum
1813
metus, lacinia mollis lorem nunc vel nibh. Donec odio turpis, malesuada quis enim eu, varius vulputate magna. Donec efficitur, nibh et
1914
ultricies lacinia, nunc metus viverra nisl, ut ultricies augue nibh nec nisi. Nunc elit arcu, auctor ac diam vel, tempus vehicula
2015
Pellentesque dignissim eros urna, nec vehicula nulla sagittis et. Aliquam nec elit justo. Curabitur sed consequat augue. Etiam ultrices
2116
lectus a mauris fringilla, sit amet imperdiet purus vulputate.`;
17+
18+
get progressBarInfo() {
19+
return `${this.progressBarValue}/100`;
2220
}
2321

2422
finishEdition() {

0 commit comments

Comments
 (0)