File

packages/ui/src/lib/form/toggle/toggle.component.ts

Description

The toggle component is an alternative to the default boolean checkbox with fancier style. It is used in the default input template for the view 'toggle'.

Implements

ControlValueAccessor

Metadata

providers { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ToggleComponent), multi: true, }
selector ec-toggle
templateUrl ./toggle.component.html

Index

Properties
Methods
Inputs

Inputs

id
Default value : 'toggle' + Date.now()
placeholder
Type : string

The toggles placeholder (currently not in use)

Methods

registerOnChange
registerOnChange(fn)

Registers change callback

Parameters :
Name Optional
fn No
Returns : void
registerOnTouched
registerOnTouched()

Register Touch

Returns : void
toggle
toggle()

Toggles the value

Returns : void
writeValue
writeValue(value: boolean)

writes incoming value

Parameters :
Name Type Optional
value boolean No
Returns : void

Properties

propagateChange
Default value : () => {...}
value
Type : boolean

The current value

import { Component, forwardRef, Input } from '@angular/core';
import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';

/** The toggle component is an alternative to the default boolean checkbox with fancier style.
 * It is used in the default input template for the view 'toggle'. */
@Component({
  selector: 'ec-toggle',
  templateUrl: './toggle.component.html',
  providers: [
    {
      provide: NG_VALUE_ACCESSOR,
      useExisting: forwardRef(() => ToggleComponent),
      multi: true,
    },
  ],
})
export class ToggleComponent implements ControlValueAccessor {
  /** The current value */
  value: boolean;
  /** The toggles placeholder (currently not in use) */
  @Input() placeholder: string;
  @Input() id = 'toggle' + Date.now();

  /** Toggles the value */
  toggle() {
    this.value = !this.value;
    this.propagateChange(this.value);
  }
  /** writes incoming value */
  writeValue(value: boolean) {
    this.value = value;
  }
  /* Propagates change*/
  propagateChange = (_: any) => { };
  /** Registers change callback */
  registerOnChange(fn) {
    this.propagateChange = fn;
  }
  /** Register Touch */
  registerOnTouched() { }
}
<div class="ec-toggle xui-toggle">
  <input [id]="id" type="checkbox" [checked]="value" (click)="toggle()" />
  <label [for]="id" class="xui-toggle__label">
    <div class="xui-toggle__switch" [class.is-active]="value"></div>
    {{ placeholder }}
  </label>
</div>
Legend
Html element
Component
Html element with directive

result-matching ""

    No results matching ""