// (C) Copyright 2015 Martin Dougiamas // // 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 { Component, Input, OnInit, Injector } from '@angular/core'; import { CoreUserProfileFieldDelegate } from '../../providers/user-profile-field-delegate'; import { CoreUtilsProvider } from '@providers/utils/utils'; /** * Directive to render user profile field. */ @Component({ selector: 'core-user-profile-field', templateUrl: 'core-user-profile-field.html' }) export class CoreUserProfileFieldComponent implements OnInit { @Input() field: any; // The profile field to be rendered. @Input() signup = false; // True if editing the field in signup. Defaults to false. @Input() edit = false; // True if editing the field. Defaults to false. @Input() form?: any; // Form where to add the form control. Required if edit=true or signup=true. @Input() registerAuth?: string; // Register auth method. E.g. 'email'. componentClass: any; // The class of the component to render. data: any = {}; // Data to pass to the component. constructor(private ufDelegate: CoreUserProfileFieldDelegate, private utilsProvider: CoreUtilsProvider, private injector: Injector) { } /** * Component being initialized. */ ngOnInit(): void { this.ufDelegate.getComponent(this.injector, this.field, this.signup).then((component) => { this.componentClass = component; }); this.data.field = this.field; this.data.edit = this.utilsProvider.isTrueOrOne(this.edit); if (this.edit) { this.data.signup = this.utilsProvider.isTrueOrOne(this.signup); this.data.disabled = this.utilsProvider.isTrueOrOne(this.field.locked); this.data.form = this.form; this.data.registerAuth = this.registerAuth; } } }