materialize-angular
Version:
Material UI Angular library
218 lines • 16.5 kB
JavaScript
/**
* @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==