diff --git a/src/components/mark-required/mark-required.html b/src/components/mark-required/mark-required.html index b50d08d78..faaea1df8 100644 --- a/src/components/mark-required/mark-required.html +++ b/src/components/mark-required/mark-required.html @@ -1,2 +1,2 @@ - + diff --git a/src/components/mark-required/mark-required.ts b/src/components/mark-required/mark-required.ts index f41614110..6d6cc7610 100644 --- a/src/components/mark-required/mark-required.ts +++ b/src/components/mark-required/mark-required.ts @@ -12,9 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. -import { Component, Input, AfterViewInit, ElementRef } from '@angular/core'; +import { Component, Input, OnInit, AfterViewInit, ElementRef } from '@angular/core'; import { TranslateService } from '@ngx-translate/core'; import { CoreTextUtilsProvider } from '../../providers/utils/text'; +import { CoreUtilsProvider } from '../../providers/utils/utils'; /** * Directive to add a red asterisk for required input fields. @@ -30,16 +31,24 @@ import { CoreTextUtilsProvider } from '../../providers/utils/text'; selector: '[core-mark-required]', templateUrl: 'mark-required.html' }) -export class CoreMarkRequiredComponent implements AfterViewInit { +export class CoreMarkRequiredComponent implements OnInit, AfterViewInit { @Input('core-mark-required') coreMarkRequired: boolean|string = true; protected element: HTMLElement; requiredLabel: string; - constructor(element: ElementRef, private translate: TranslateService, private textUtils: CoreTextUtilsProvider) { + constructor(element: ElementRef, private translate: TranslateService, private textUtils: CoreTextUtilsProvider, + private utils: CoreUtilsProvider) { this.element = element.nativeElement; this.requiredLabel = this.translate.instant('mm.core.required'); } + /** + * Component being initialized. + */ + ngOnInit() { + this.coreMarkRequired = this.utils.isTrueOrOne(this.coreMarkRequired); + } + /** * Called after the view is initialized. */ diff --git a/src/components/show-password/show-password.ts b/src/components/show-password/show-password.ts index 0df6189fc..8d83e015c 100644 --- a/src/components/show-password/show-password.ts +++ b/src/components/show-password/show-password.ts @@ -13,6 +13,7 @@ // limitations under the License. import { Component, OnInit, AfterViewInit, Input, ElementRef } from '@angular/core'; +import { CoreUtilsProvider } from '../../providers/utils/utils'; /** * Component to allow showing and hiding a password. The affected input MUST have a name to identify it. @@ -44,7 +45,7 @@ export class CoreShowPasswordComponent implements OnInit, AfterViewInit { protected input: HTMLInputElement; // Input affected. protected element: HTMLElement; // Current element. - constructor(element: ElementRef) { + constructor(element: ElementRef, private utils: CoreUtilsProvider) { this.element = element.nativeElement; } @@ -52,7 +53,7 @@ export class CoreShowPasswordComponent implements OnInit, AfterViewInit { * Component being initialized. */ ngOnInit() { - this.shown = this.initialShown && this.initialShown !== 'false'; + this.shown = this.utils.isTrueOrOne(this.initialShown); this.selector = 'input[name="' + this.name + '"]'; this.setData(); } diff --git a/src/directives/auto-focus.ts b/src/directives/auto-focus.ts index cc3745d6f..5cded27fa 100644 --- a/src/directives/auto-focus.ts +++ b/src/directives/auto-focus.ts @@ -14,6 +14,7 @@ import { Directive, Input, AfterViewInit, ElementRef } from '@angular/core'; import { CoreDomUtilsProvider } from '../providers/utils/dom'; +import { CoreUtilsProvider } from '../providers/utils/utils'; /** * Directive to auto focus an element when a view is loaded. @@ -28,7 +29,7 @@ export class CoreAutoFocusDirective implements AfterViewInit { protected element: HTMLElement; - constructor(element: ElementRef, private domUtils: CoreDomUtilsProvider) { + constructor(element: ElementRef, private domUtils: CoreDomUtilsProvider, private utils: CoreUtilsProvider) { this.element = element.nativeElement || element; } @@ -36,13 +37,7 @@ export class CoreAutoFocusDirective implements AfterViewInit { * Function after the view is initialized. */ ngAfterViewInit() { - let autoFocus; - if (typeof this.coreAutoFocus == 'string') { - autoFocus = this.coreAutoFocus && this.coreAutoFocus !== 'false'; - } else { - autoFocus = !!this.coreAutoFocus; - } - + const autoFocus = this.utils.isTrueOrOne(this.coreAutoFocus); if (autoFocus) { // If it's a ion-input or ion-textarea, search the right input to use. let element = this.element; diff --git a/src/directives/format-text.ts b/src/directives/format-text.ts index bcedffd61..e6f9226ef 100644 --- a/src/directives/format-text.ts +++ b/src/directives/format-text.ts @@ -43,15 +43,15 @@ export class CoreFormatTextDirective implements OnInit { @Input() siteId?: string; // Site ID to use. @Input() component?: string; // Component for CoreExternalContentDirective. @Input() componentId?: string|number; // Component ID to use in conjunction with the component. - @Input() adaptImg?: boolean = true; // Whether to adapt images to screen width. - @Input() clean?: boolean; // Whether all the HTML tags should be removed. - @Input() singleLine?: boolean; // Whether new lines should be removed (all text in single line). Only valid if clean=true. + @Input() adaptImg?: boolean|string = true; // Whether to adapt images to screen width. + @Input() clean?: boolean|string; // Whether all the HTML tags should be removed. + @Input() singleLine?: boolean|string; // Whether new lines should be removed (all text in single line). Only valid if clean=true. @Input() maxHeight?: number; // Max height in pixels to render the content box. It should be 50 at least to make sense. // Using this parameter will force display: block to calculate height better. If you want to // avoid this use class="inline" at the same time to use display: inline-block. - @Input() fullOnClick?: boolean; // Whether it should open a new page with the full contents on click. Only if "max-height" - // is set and the content has been collapsed. - @Input() brOnFull?: boolean; // Whether new lines should be replaced by
on full view. + @Input() fullOnClick?: boolean|string; // Whether it should open a new page with the full contents on click. Only if + // "max-height" is set and the content has been collapsed. + @Input() brOnFull?: boolean|string; // Whether new lines should be replaced by
on full view. @Input() fullTitle?: string; // Title to use in full view. Defaults to "Description". @Output() afterRender?: EventEmitter; // Called when the data is rendered. @@ -225,7 +225,7 @@ export class CoreFormatTextDirective implements OnInit { site = siteInstance; // Apply format text function. - return this.textUtils.formatText(this.text, this.clean, this.singleLine); + return this.textUtils.formatText(this.text, this.utils.isTrueOrOne(this.clean), this.utils.isTrueOrOne(this.singleLine)); }).then((formatted) => { let div = document.createElement('div'), @@ -264,7 +264,7 @@ export class CoreFormatTextDirective implements OnInit { images.forEach((img: HTMLElement) => { this.addMediaAdaptClass(img); this.addExternalContent(img); - if (this.adaptImg) { + if (this.utils.isTrueOrOne(this.adaptImg)) { // Create a container for the image and use it instead of the image. let container = this.createMagnifyingGlassContainer(elWidth, img); div.replaceChild(container, img); diff --git a/src/directives/keep-keyboard.ts b/src/directives/keep-keyboard.ts index e464ed15e..5de6883f2 100644 --- a/src/directives/keep-keyboard.ts +++ b/src/directives/keep-keyboard.ts @@ -14,6 +14,7 @@ import { Directive, AfterViewInit, Input, ElementRef, OnDestroy } from '@angular/core'; import { CoreDomUtilsProvider } from '../providers/utils/dom'; +import { CoreUtilsProvider } from '../providers/utils/utils'; /** * Directive to keep the keyboard open when clicking a certain element (usually a button). @@ -55,7 +56,7 @@ export class CoreKeepKeyboardDirective implements AfterViewInit, OnDestroy { protected focusAgainListener : any; // Another listener for focusout, with the purpose to focus again. protected stopFocusAgainTimeout: any; // Timeout to stop focus again listener. - constructor(element: ElementRef, private domUtils: CoreDomUtilsProvider) { + constructor(element: ElementRef, private domUtils: CoreDomUtilsProvider, private utils: CoreUtilsProvider) { this.element = element.nativeElement; } @@ -66,7 +67,7 @@ export class CoreKeepKeyboardDirective implements AfterViewInit, OnDestroy { // Use a setTimeout because, if this directive is applied to a button, then the ion-input that it affects // maybe it hasn't been treated yet. setTimeout(() => { - let inButton = this.inButton && this.inButton !== 'false', + let inButton = this.utils.isTrueOrOne(this.inButton), candidateEls, selectedEl; diff --git a/src/directives/link.ts b/src/directives/link.ts index 53dfd0840..f95aa2624 100644 --- a/src/directives/link.ts +++ b/src/directives/link.ts @@ -26,8 +26,8 @@ import { CoreConfigConstants } from '../configconstants'; selector: '[core-link]' }) export class CoreLinkDirective implements OnInit { - @Input() capture?: boolean; // If the link needs to be captured by the app. - @Input() inApp?: boolean; // True to open in embedded browser, false to open in system browser. + @Input() capture?: boolean|string; // If the link needs to be captured by the app. + @Input() inApp?: boolean|string; // True to open in embedded browser, false to open in system browser. @Input() autoLogin? = 'check'; // If the link should be open with auto-login. Accepts the following values: // "yes" -> Always auto-login. // "no" -> Never auto-login. @@ -45,6 +45,8 @@ export class CoreLinkDirective implements OnInit { * Function executed when the component is initialized. */ ngOnInit() { + this.inApp = this.utils.isTrueOrOne(this.inApp); + this.element.addEventListener('click', (event) => { // If the event prevented default action, do nothing. if (!event.defaultPrevented) { @@ -53,7 +55,7 @@ export class CoreLinkDirective implements OnInit { event.preventDefault(); event.stopPropagation(); - if (this.capture) { + if (this.utils.isTrueOrOne(this.capture)) { // @todo: Handle link using content links helper. // $mmContentLinksHelper.handleLink(href).then((treated) => { // if (!treated) {