bug fixed
This commit is contained in:
parent
12c7550b03
commit
7a39d2e4aa
10
package-lock.json
generated
10
package-lock.json
generated
|
@ -2272,8 +2272,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"@ucap/ng-i18n": {
|
||||
"version": "file:pack/ucap-ng-i18n-0.0.5.tgz",
|
||||
"integrity": "sha512-P+MUurrVyLeRl4l7b4aLMG3/nPpZ54U1U2VQnAGb7OHNvZG/BJVzZqc2Z+YvnNXTe8PhMqkRfRysOZeu1AGj5A=="
|
||||
"version": "file:pack/ucap-ng-i18n-0.0.6.tgz",
|
||||
"integrity": "sha512-0vnoC3tAbXmcnsL1xy5Otswu75ZBht8wrI5Zz1mfSgYT/mnR9QoNkpCHiHfl/ILAJlKD0iBn+BBOrwTIprsJ/Q==",
|
||||
"dev": true
|
||||
},
|
||||
"@ucap/ng-logger": {
|
||||
"version": "file:pack/ucap-ng-logger-0.0.1.tgz",
|
||||
|
@ -2401,9 +2402,8 @@
|
|||
"dev": true
|
||||
},
|
||||
"@ucap/ng-ui-authentication": {
|
||||
"version": "file:pack/ucap-ng-ui-authentication-0.0.5.tgz",
|
||||
"integrity": "sha512-NwsISychSVyCxVO3j13jNRtHbZpvKY2pb/WBATGPnkYrhaB4x7a+b4gXhWUCmO5QZoYrb2uBV4K9hXANr2Ergg==",
|
||||
"dev": true
|
||||
"version": "file:pack/ucap-ng-ui-authentication-0.0.8.tgz",
|
||||
"integrity": "sha512-n6pV113DuSD5TV4jAwrY/JJlhcBtNLHEFTTxrQ8QhFIMz9hgbRC6x4R/LF8q9kzx0BWQcgxGdfgY1oN3YoqGtg=="
|
||||
},
|
||||
"@ucap/ng-ui-organization": {
|
||||
"version": "file:pack/ucap-ng-ui-organization-0.0.1.tgz",
|
||||
|
|
|
@ -144,7 +144,7 @@
|
|||
"@ucap/ng-api-prompt": "file:pack/ucap-ng-api-prompt-0.0.1.tgz",
|
||||
"@ucap/ng-api-public": "file:pack/ucap-ng-api-public-0.0.1.tgz",
|
||||
"@ucap/ng-core": "file:pack/ucap-ng-core-0.0.1.tgz",
|
||||
"@ucap/ng-i18n": "file:pack/ucap-ng-i18n-0.0.5.tgz",
|
||||
"@ucap/ng-i18n": "file:pack/ucap-ng-i18n-0.0.6.tgz",
|
||||
"@ucap/ng-logger": "file:pack/ucap-ng-logger-0.0.1.tgz",
|
||||
"@ucap/ng-native": "file:pack/ucap-ng-native-0.0.1.tgz",
|
||||
"@ucap/ng-native-browser": "file:pack/ucap-ng-native-browser-0.0.1.tgz",
|
||||
|
@ -170,7 +170,7 @@
|
|||
"@ucap/ng-store-group": "file:pack/ucap-ng-store-group-0.0.3.tgz",
|
||||
"@ucap/ng-store-organization": "file:pack/ucap-ng-store-organization-0.0.3.tgz",
|
||||
"@ucap/ng-ui": "file:pack/ucap-ng-ui-0.0.3.tgz",
|
||||
"@ucap/ng-ui-authentication": "file:pack/ucap-ng-ui-authentication-0.0.5.tgz",
|
||||
"@ucap/ng-ui-authentication": "file:pack/ucap-ng-ui-authentication-0.0.8.tgz",
|
||||
"@ucap/ng-ui-organization": "file:pack/ucap-ng-ui-organization-0.0.1.tgz",
|
||||
"@ucap/ng-ui-skin-default": "file:pack/ucap-ng-ui-skin-default-0.0.1.tgz",
|
||||
"@ucap/ng-web-storage": "file:pack/ucap-ng-web-storage-0.0.1.tgz",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@ucap/ng-i18n",
|
||||
"version": "0.0.5",
|
||||
"version": "0.0.6",
|
||||
"publishConfig": {
|
||||
"registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/"
|
||||
},
|
||||
|
|
|
@ -13,6 +13,7 @@ import { StringMap, TOptions } from 'i18next';
|
|||
import { I18nService } from '../services/i18n.service';
|
||||
|
||||
import { UCAP_I18N_NAMESPACE } from '../types/token';
|
||||
import { ObjectUtil } from '../utils/object.util';
|
||||
|
||||
@Pipe({ name: 'ucapI18n', pure: false })
|
||||
export class I18nPipe implements PipeTransform, OnDestroy {
|
||||
|
@ -36,6 +37,13 @@ export class I18nPipe implements PipeTransform, OnDestroy {
|
|||
key: string | string[],
|
||||
options?: TOptions<StringMap>
|
||||
): string {
|
||||
if (
|
||||
ObjectUtil.equals(key, this.lastKey) &&
|
||||
ObjectUtil.equals(options, this.lastOptions)
|
||||
) {
|
||||
return this.value;
|
||||
}
|
||||
|
||||
options = options || {};
|
||||
|
||||
if (!!this.ns) {
|
||||
|
|
83
projects/i18n/src/lib/utils/object.util.ts
Normal file
83
projects/i18n/src/lib/utils/object.util.ts
Normal file
|
@ -0,0 +1,83 @@
|
|||
export class ObjectUtil {
|
||||
static equals(o1: any, o2: any): boolean {
|
||||
if (o1 === o2) {
|
||||
return true;
|
||||
}
|
||||
if (o1 === null || o2 === null) {
|
||||
return false;
|
||||
}
|
||||
if (o1 !== o1 && o2 !== o2) {
|
||||
return true; // NaN === NaN
|
||||
}
|
||||
|
||||
const t1 = typeof o1;
|
||||
const t2 = typeof o2;
|
||||
let length: number;
|
||||
let key: any;
|
||||
let keySet: any;
|
||||
|
||||
if (t1 === t2 && t1 === 'object') {
|
||||
if (Array.isArray(o1)) {
|
||||
if (!Array.isArray(o2)) {
|
||||
return false;
|
||||
}
|
||||
length = o1.length;
|
||||
if (length === o2.length) {
|
||||
for (key = 0; key < length; key++) {
|
||||
if (!ObjectUtil.equals(o1[key], o2[key])) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
if (Array.isArray(o2)) {
|
||||
return false;
|
||||
}
|
||||
keySet = Object.create(null);
|
||||
for (key in o1) {
|
||||
if (o1.hasOwnProperty(key)) {
|
||||
if (!ObjectUtil.equals(o1[key], o2[key])) {
|
||||
return false;
|
||||
}
|
||||
keySet[key] = true;
|
||||
}
|
||||
}
|
||||
|
||||
for (key in o2) {
|
||||
if (!(key in keySet) && typeof o2[key] !== 'undefined') {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
static isDefined(value: any): boolean {
|
||||
return typeof value !== 'undefined' && value !== null;
|
||||
}
|
||||
|
||||
static isObject(item: any): boolean {
|
||||
return item && typeof item === 'object' && !Array.isArray(item);
|
||||
}
|
||||
|
||||
static mergeDeep(target: any, source: any): any {
|
||||
const output = Object.assign({}, target);
|
||||
if (ObjectUtil.isObject(target) && ObjectUtil.isObject(source)) {
|
||||
Object.keys(source).forEach((key: any) => {
|
||||
if (ObjectUtil.isObject(source[key])) {
|
||||
if (!(key in target)) {
|
||||
Object.assign(output, { [key]: source[key] });
|
||||
} else {
|
||||
output[key] = ObjectUtil.mergeDeep(target[key], source[key]);
|
||||
}
|
||||
} else {
|
||||
Object.assign(output, { [key]: source[key] });
|
||||
}
|
||||
});
|
||||
}
|
||||
return output;
|
||||
}
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@ucap/ng-ui-authentication",
|
||||
"version": "0.0.5",
|
||||
"version": "0.0.8",
|
||||
"publishConfig": {
|
||||
"registry": "http://10.81.13.221:8081/nexus/repository/npm-ucap/"
|
||||
},
|
||||
|
|
|
@ -9,6 +9,7 @@ import { MatCheckboxModule } from '@angular/material/checkbox';
|
|||
import { MatFormFieldModule } from '@angular/material/form-field';
|
||||
import { MatIconModule } from '@angular/material/icon';
|
||||
import { MatInputModule } from '@angular/material/input';
|
||||
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
||||
import { MatSelectModule } from '@angular/material/select';
|
||||
|
||||
import { UiModule } from '@ucap/ng-ui';
|
||||
|
@ -46,6 +47,7 @@ export class AuthenticationUiRootModule {}
|
|||
MatFormFieldModule,
|
||||
MatIconModule,
|
||||
MatInputModule,
|
||||
MatProgressSpinnerModule,
|
||||
MatSelectModule,
|
||||
|
||||
I18nModule,
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
<form name="loginForm" [formGroup]="loginForm" novalidate>
|
||||
<mat-form-field
|
||||
[style.display]="!!curCompanyCode ? 'none' : 'block'"
|
||||
[style.display]="!!fixedCompanyCode ? 'none' : 'block'"
|
||||
class="login-company"
|
||||
>
|
||||
<mat-label>{{ 'login.fields.company' | ucapI18n }}</mat-label>
|
||||
|
@ -106,36 +106,15 @@
|
|||
mat-raised-button
|
||||
class="submit-button bg-accent-dark"
|
||||
aria-label="LOG IN"
|
||||
[disabled]="loginForm.invalid || !loginBtnEnable"
|
||||
[disabled]="loginForm.invalid || disable"
|
||||
(click)="onClickLogin()"
|
||||
>
|
||||
{{ loginBtnText }}
|
||||
<ng-container *ngIf="!processing">
|
||||
{{ 'login.labels.doLogin' | ucapI18n }}
|
||||
</ng-container>
|
||||
|
||||
<mat-spinner *ngIf="processing"> </mat-spinner>
|
||||
</button>
|
||||
|
||||
<div
|
||||
class="remember-forgot-password"
|
||||
fxLayout="row"
|
||||
fxLayout.xs="column"
|
||||
fxLayoutAlign="space-between center"
|
||||
>
|
||||
<mat-checkbox
|
||||
*ngIf="useRememberMe"
|
||||
class="remember-me"
|
||||
formControlName="rememberMe"
|
||||
aria-label="Remember Me"
|
||||
>
|
||||
{{ 'login.labels.rememberMe' | ucapI18n }}
|
||||
</mat-checkbox>
|
||||
|
||||
<mat-checkbox
|
||||
*ngIf="useAutoLogin"
|
||||
class="auto-login"
|
||||
formControlName="autoLogin"
|
||||
aria-label="Auto Login"
|
||||
>
|
||||
{{ 'login.labels.autoLogin' | ucapI18n }}
|
||||
</mat-checkbox>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<ng-content select="[ucapAuthenticationLogin='footer']"></ng-content>
|
||||
|
|
|
@ -25,40 +25,29 @@ import { Company } from '@ucap/api-external';
|
|||
export class LoginComponent implements OnInit {
|
||||
@Input()
|
||||
companyList: Company[];
|
||||
|
||||
@Input()
|
||||
curCompanyCode: string;
|
||||
@Input()
|
||||
loginBtnText: string;
|
||||
@Input()
|
||||
loginBtnEnable: boolean;
|
||||
@Input()
|
||||
notiText: string;
|
||||
fixedCompanyCode: string;
|
||||
|
||||
@Input()
|
||||
companyCode: string;
|
||||
@Input()
|
||||
loginId: string;
|
||||
@Input()
|
||||
rememberMe: boolean;
|
||||
@Input()
|
||||
autoLogin: boolean;
|
||||
|
||||
@Input()
|
||||
useRememberMe: boolean;
|
||||
loginId: string;
|
||||
|
||||
@Input()
|
||||
useAutoLogin: boolean;
|
||||
disable = false;
|
||||
|
||||
@Input()
|
||||
processing = false;
|
||||
|
||||
@Output()
|
||||
login = new EventEmitter<{
|
||||
companyCode: string;
|
||||
loginId: string;
|
||||
loginPw: string;
|
||||
rememberMe: boolean;
|
||||
autoLogin: boolean;
|
||||
notValid: () => void;
|
||||
}>();
|
||||
@Output()
|
||||
notiClick = new EventEmitter();
|
||||
|
||||
@ViewChild('loginPw', { static: true }) loginPwElementRef: ElementRef;
|
||||
|
||||
|
@ -75,8 +64,8 @@ export class LoginComponent implements OnInit {
|
|||
ngOnInit() {
|
||||
const companyCodeValidators: ValidatorFn[] = [Validators.required];
|
||||
this.companyCodeFormControl.setValidators(companyCodeValidators);
|
||||
if (!!this.curCompanyCode) {
|
||||
this.companyCodeFormControl.setValue(this.curCompanyCode);
|
||||
if (!!this.fixedCompanyCode) {
|
||||
this.companyCodeFormControl.setValue(this.fixedCompanyCode);
|
||||
}
|
||||
const loginIdValidators: ValidatorFn[] = [Validators.required];
|
||||
this.loginIdFormControl.setValidators(loginIdValidators);
|
||||
|
@ -89,22 +78,9 @@ export class LoginComponent implements OnInit {
|
|||
this.loginForm = this.formBuilder.group({
|
||||
companyCodeFormControl: this.companyCodeFormControl,
|
||||
loginIdFormControl: this.loginIdFormControl,
|
||||
loginPwFormControl: this.loginPwFormControl,
|
||||
rememberMe: [false],
|
||||
autoLogin: [false]
|
||||
loginPwFormControl: this.loginPwFormControl
|
||||
});
|
||||
|
||||
if (!!this.rememberMe && this.rememberMe) {
|
||||
this.loginForm.get('rememberMe').setValue(true);
|
||||
}
|
||||
|
||||
if (!!this.autoLogin && this.autoLogin) {
|
||||
this.loginForm.get('autoLogin').setValue(true);
|
||||
}
|
||||
|
||||
if (!this.loginBtnText || this.loginBtnText.trim().length === 0) {
|
||||
this.loginBtnText = 'LOGIN';
|
||||
}
|
||||
this.changeDetectorRef.detectChanges();
|
||||
}
|
||||
|
||||
|
@ -113,15 +89,9 @@ export class LoginComponent implements OnInit {
|
|||
companyCode: this.loginForm.get('companyCodeFormControl').value,
|
||||
loginId: this.loginForm.get('loginIdFormControl').value,
|
||||
loginPw: this.loginForm.get('loginPwFormControl').value,
|
||||
rememberMe: this.loginForm.get('rememberMe').value,
|
||||
autoLogin: this.loginForm.get('autoLogin').value,
|
||||
notValid: () => {
|
||||
this.loginPwElementRef.nativeElement.focus();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
onClickNoti(): void {
|
||||
this.notiClick.emit();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user