UNPKG

materialize-angular

Version:
218 lines 16.5 kB
/** * @fileoverview added by tsickle * Generated from: app/completed-components/radio-group/radio-group.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @license * Copyright Workylab. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://raw.githubusercontent.com/workylab/materialize-angular/master/LICENSE */ import { Component, ContentChildren, EventEmitter, forwardRef, Input, Output, QueryList } from '@angular/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import { config } from '../../config'; import { RadioComponent } from './radio/radio.component'; export class RadioGroupComponent { constructor() { this.canUncheck = RadioGroupComponent.defaultProps.canUncheck; this.className = RadioGroupComponent.defaultProps.className; this.disabled = RadioGroupComponent.defaultProps.disabled; this.name = RadioGroupComponent.defaultProps.name; this.required = RadioGroupComponent.defaultProps.required; this.value = RadioGroupComponent.defaultProps.value; this.prefix = config.components.prefix; this.isFocused = false; this.initRadios = this.initRadios.bind(this); this.registerRadios = this.registerRadios.bind(this); this.toggleRadios = this.toggleRadios.bind(this); this.onChangeEmitter = new EventEmitter(); } /** * @return {?} */ ngAfterContentInit() { this.initRadios(); this.radiosQueryList.changes.subscribe(this.initRadios); } /** * @return {?} */ initRadios() { this.disableAllRadios(this.disabled); setTimeout(this.registerRadios, 0); } /** * @return {?} */ registerRadios() { this.radiosQueryList.forEach((/** * @param {?} radio * @return {?} */ radio => { radio.isActive = (radio.value === this.value); radio.onClickEmitter.subscribe(this.toggleRadios); })); } /** * @param {?} value * @return {?} */ toggleRadios(value) { this.setValueAllRadios(value); /** @type {?} */ const currentRadio = this.radiosQueryList.find((/** * @param {?} radio * @return {?} */ radio => radio.value === value)); this.value = currentRadio && currentRadio.isActive ? currentRadio.value : ''; this.onTouched(); this.onChange(this.value); this.onChangeEmitter.emit(this.value); } /** * @param {?} value * @return {?} */ setValueAllRadios(value) { this.radiosQueryList.forEach((/** * @param {?} radio * @return {?} */ radio => { if (radio.value !== value) { radio.isActive = false; } if (radio.value === value && !this.canUncheck) { radio.isActive = true; } })); } /** * @param {?} disabled * @return {?} */ disableAllRadios(disabled) { this.radiosQueryList.forEach((/** * @param {?} radio * @return {?} */ radio => { radio.disabled = disabled; })); } /** * @param {?} isDisabled * @return {?} */ setDisabledState(isDisabled) { this.disabled = isDisabled; setTimeout((/** * @return {?} */ () => { this.disableAllRadios(this.disabled); }), 0); } /** * @param {?} value * @return {?} */ writeValue(value) { this.value = value; setTimeout((/** * @return {?} */ () => { this.setValueAllRadios(this.value); }), 0); } /** * @param {?} fn * @return {?} */ registerOnChange(fn) { this.onChange = fn; } /** * @param {?} fn * @return {?} */ registerOnTouched(fn) { this.onTouched = fn; } /** * @param {?} value * @return {?} */ onChange(value) { } /** * @return {?} */ onTouched() { } } RadioGroupComponent.defaultProps = { canUncheck: false, className: '', disabled: false, name: '', required: false, value: '' }; RadioGroupComponent.decorators = [ { type: Component, args: [{ providers: [{ multi: true, provide: NG_VALUE_ACCESSOR, useExisting: forwardRef((/** * @return {?} */ () => RadioGroupComponent)) }], selector: `${config.components.prefix}-radio-group }`, template: "<div [ngClass]=\"[prefix + '-radio-group', className]\">\n <ng-content select=\"materialize-radio\"></ng-content>\n</div>\n" }] } ]; /** @nocollapse */ RadioGroupComponent.ctorParameters = () => []; RadioGroupComponent.propDecorators = { radiosQueryList: [{ type: ContentChildren, args: [RadioComponent,] }], onChangeEmitter: [{ type: Output, args: ['onChange',] }], canUncheck: [{ type: Input }], className: [{ type: Input }], disabled: [{ type: Input }], name: [{ type: Input }], required: [{ type: Input }], value: [{ type: Input }] }; if (false) { /** @type {?} */ RadioGroupComponent.defaultProps; /** @type {?} */ RadioGroupComponent.prototype.radiosQueryList; /** @type {?} */ RadioGroupComponent.prototype.onChangeEmitter; /** @type {?} */ RadioGroupComponent.prototype.canUncheck; /** @type {?} */ RadioGroupComponent.prototype.className; /** @type {?} */ RadioGroupComponent.prototype.disabled; /** @type {?} */ RadioGroupComponent.prototype.name; /** @type {?} */ RadioGroupComponent.prototype.required; /** @type {?} */ RadioGroupComponent.prototype.value; /** @type {?} */ RadioGroupComponent.prototype.prefix; /** @type {?} */ RadioGroupComponent.prototype.isFocused; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbWF0ZXJpYWxpemUtYW5ndWxhci8iLCJzb3VyY2VzIjpbImFwcC9jb21wbGV0ZWQtY29tcG9uZW50cy9yYWRpby1ncm91cC9yYWRpby1ncm91cC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBUUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFZekQsTUFBTSxPQUFPLG1CQUFtQjtJQXdCOUI7UUFWUyxlQUFVLEdBQVksbUJBQW1CLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQztRQUNsRSxjQUFTLEdBQVcsbUJBQW1CLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQztRQUMvRCxhQUFRLEdBQVksbUJBQW1CLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztRQUM5RCxTQUFJLEdBQVcsbUJBQW1CLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztRQUNyRCxhQUFRLEdBQVksbUJBQW1CLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztRQUM5RCxVQUFLLEdBQVcsbUJBQW1CLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztRQUV6RCxXQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFJdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFFdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztR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LHVDQUF1RTs7SUFDdkUsbUNBQThEOztJQUM5RCx1Q0FBdUU7O0lBQ3ZFLG9DQUFnRTs7SUFFaEUscUNBQXlDOztJQUN6Qyx3Q0FBMEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgV29ya3lsYWIuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3dvcmt5bGFiL21hdGVyaWFsaXplLWFuZ3VsYXIvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjb25maWcgfSBmcm9tICcuLi8uLi9jb25maWcnO1xuaW1wb3J0IHsgUmFkaW9Db21wb25lbnQgfSBmcm9tICcuL3JhZGlvL3JhZGlvLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSYWRpb0dyb3VwTW9kZWwgfSBmcm9tICcuL3JhZGlvLWdyb3VwLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHByb3ZpZGVyczogW3tcbiAgICBtdWx0aTogdHJ1ZSxcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBSYWRpb0dyb3VwQ29tcG9uZW50KVxuICB9XSxcbiAgc2VsZWN0b3I6IGAkeyBjb25maWcuY29tcG9uZW50cy5wcmVmaXggfS1yYWRpby1ncm91cCB9YCxcbiAgdGVtcGxhdGVVcmw6ICcuL3JhZGlvLWdyb3VwLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBSYWRpb0dyb3VwQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFJhZGlvR3JvdXBNb2RlbCB7XG4gIHN0YXRpYyByZWFkb25seSBkZWZhdWx0UHJvcHM6IFJhZGlvR3JvdXBNb2RlbCA9IHtcbiAgICBjYW5VbmNoZWNrOiBmYWxzZSxcbiAgICBjbGFzc05hbWU6ICcnLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBuYW1lOiAnJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgdmFsdWU6ICcnXG4gIH07XG5cbiAgQENvbnRlbnRDaGlsZHJlbihSYWRpb0NvbXBvbmVudCkgcmFkaW9zUXVlcnlMaXN0OiBRdWVyeUxpc3Q8UmFkaW9Db21wb25lbnQ+O1xuXG4gIEBPdXRwdXQoJ29uQ2hhbmdlJykgb25DaGFuZ2VFbWl0dGVyOiBFdmVudEVtaXR0ZXI8c3RyaW5nPjtcblxuICBASW5wdXQoKSBjYW5VbmNoZWNrOiBib29sZWFuID0gUmFkaW9Hcm91cENvbXBvbmVudC5kZWZhdWx0UHJvcHMuY2FuVW5jaGVjaztcbiAgQElucHV0KCkgY2xhc3NOYW1lOiBzdHJpbmcgPSBSYWRpb0dyb3VwQ29tcG9uZW50LmRlZmF1bHRQcm9wcy5jbGFzc05hbWU7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gUmFkaW9Hcm91cENvbXBvbmVudC5kZWZhdWx0UHJvcHMuZGlzYWJsZWQ7XG4gIEBJbnB1dCgpIG5hbWU6IHN0cmluZyA9IFJhZGlvR3JvdXBDb21wb25lbnQuZGVmYXVsdFByb3BzLm5hbWU7XG4gIEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuID0gUmFkaW9Hcm91cENvbXBvbmVudC5kZWZhdWx0UHJvcHMucmVxdWlyZWQ7XG4gIEBJbnB1dCgpIHZhbHVlOiBzdHJpbmcgPSBSYWRpb0dyb3VwQ29tcG9uZW50LmRlZmF1bHRQcm9wcy52YWx1ZTtcblxuICBwdWJsaWMgcHJlZml4ID0gY29uZmlnLmNvbXBvbmVudHMucHJlZml4O1xuICBwdWJsaWMgaXNGb2N1c2VkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaXNGb2N1c2VkID0gZmFsc2U7XG5cbiAgICB0aGlzLmluaXRSYWRpb3MgPSB0aGlzLmluaXRSYWRpb3MuYmluZCh0aGlzKTtcbiAgICB0aGlzLnJlZ2lzdGVyUmFkaW9zID0gdGhpcy5yZWdpc3RlclJhZGlvcy5iaW5kKHRoaXMpO1xuICAgIHRoaXMudG9nZ2xlUmFkaW9zID0gdGhpcy50b2dnbGVSYWRpb3MuYmluZCh0aGlzKTtcblxuICAgIHRoaXMub25DaGFuZ2VFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMuaW5pdFJhZGlvcygpO1xuXG4gICAgdGhpcy5yYWRpb3NRdWVyeUxpc3QuY2hhbmdlcy5zdWJzY3JpYmUodGhpcy5pbml0UmFkaW9zKTtcbiAgfVxuXG4gIGluaXRSYWRpb3MoKSB7XG4gICAgdGhpcy5kaXNhYmxlQWxsUmFkaW9zKHRoaXMuZGlzYWJsZWQpO1xuXG4gICAgc2V0VGltZW91dCh0aGlzLnJlZ2lzdGVyUmFkaW9zLCAwKTtcbiAgfVxuXG4gIHJlZ2lzdGVyUmFkaW9zKCkge1xuICAgIHRoaXMucmFkaW9zUXVlcnlMaXN0LmZvckVhY2gocmFkaW8gPT4ge1xuICAgICAgcmFkaW8uaXNBY3RpdmUgPSAocmFkaW8udmFsdWUgPT09IHRoaXMudmFsdWUpO1xuXG4gICAgICByYWRpby5vbkNsaWNrRW1pdHRlci5zdWJzY3JpYmUodGhpcy50b2dnbGVSYWRpb3MpO1xuICAgIH0pO1xuICB9XG5cbiAgdG9nZ2xlUmFkaW9zKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNldFZhbHVlQWxsUmFkaW9zKHZhbHVlKTtcblxuICAgIGNvbnN0IGN1cnJlbnRSYWRpbyA9IHRoaXMucmFkaW9zUXVlcnlMaXN0LmZpbmQocmFkaW8gPT4gcmFkaW8udmFsdWUgPT09IHZhbHVlKTtcblxuICAgIHRoaXMudmFsdWUgPSBjdXJyZW50UmFkaW8gJiYgY3VycmVudFJhZGlvLmlzQWN0aXZlXG4gICAgICA/IGN1cnJlbnRSYWRpby52YWx1ZVxuICAgICAgOiAnJztcblxuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcblxuICAgIHRoaXMub25DaGFuZ2VFbWl0dGVyLmVtaXQodGhpcy52YWx1ZSk7XG4gIH1cblxuICBzZXRWYWx1ZUFsbFJhZGlvcyh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5yYWRpb3NRdWVyeUxpc3QuZm9yRWFjaChyYWRpbyA9PiB7XG4gICAgICBpZiAocmFkaW8udmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICAgIHJhZGlvLmlzQWN0aXZlID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChyYWRpby52YWx1ZSA9PT0gdmFsdWUgJiYgIXRoaXMuY2FuVW5jaGVjaykge1xuICAgICAgICByYWRpby5pc0FjdGl2ZSA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBkaXNhYmxlQWxsUmFkaW9zKGRpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5yYWRpb3NRdWVyeUxpc3QuZm9yRWFjaChyYWRpbyA9PiB7XG4gICAgICByYWRpby5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICAgIH0pO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZGlzYWJsZUFsbFJhZGlvcyh0aGlzLmRpc2FibGVkKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zZXRWYWx1ZUFsbFJhZGlvcyh0aGlzLnZhbHVlKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgb25DaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICB9XG5cbiAgb25Ub3VjaGVkKCk6IHZvaWQge31cbn1cbiJdfQ==