materialize-angular
Version:
Material UI Angular library
268 lines • 18.2 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';
var RadioGroupComponent = /** @class */ (function () {
function RadioGroupComponent() {
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 {?}
*/
RadioGroupComponent.prototype.ngAfterContentInit = /**
* @return {?}
*/
function () {
this.initRadios();
this.radiosQueryList.changes.subscribe(this.initRadios);
};
/**
* @return {?}
*/
RadioGroupComponent.prototype.initRadios = /**
* @return {?}
*/
function () {
this.disableAllRadios(this.disabled);
setTimeout(this.registerRadios, 0);
};
/**
* @return {?}
*/
RadioGroupComponent.prototype.registerRadios = /**
* @return {?}
*/
function () {
var _this = this;
this.radiosQueryList.forEach((/**
* @param {?} radio
* @return {?}
*/
function (radio) {
radio.isActive = (radio.value === _this.value);
radio.onClickEmitter.subscribe(_this.toggleRadios);
}));
};
/**
* @param {?} value
* @return {?}
*/
RadioGroupComponent.prototype.toggleRadios = /**
* @param {?} value
* @return {?}
*/
function (value) {
this.setValueAllRadios(value);
/** @type {?} */
var currentRadio = this.radiosQueryList.find((/**
* @param {?} radio
* @return {?}
*/
function (radio) { return radio.value === value; }));
this.value = currentRadio && currentRadio.isActive
? currentRadio.value
: '';
this.onTouched();
this.onChange(this.value);
this.onChangeEmitter.emit(this.value);
};
/**
* @param {?} value
* @return {?}
*/
RadioGroupComponent.prototype.setValueAllRadios = /**
* @param {?} value
* @return {?}
*/
function (value) {
var _this = this;
this.radiosQueryList.forEach((/**
* @param {?} radio
* @return {?}
*/
function (radio) {
if (radio.value !== value) {
radio.isActive = false;
}
if (radio.value === value && !_this.canUncheck) {
radio.isActive = true;
}
}));
};
/**
* @param {?} disabled
* @return {?}
*/
RadioGroupComponent.prototype.disableAllRadios = /**
* @param {?} disabled
* @return {?}
*/
function (disabled) {
this.radiosQueryList.forEach((/**
* @param {?} radio
* @return {?}
*/
function (radio) {
radio.disabled = disabled;
}));
};
/**
* @param {?} isDisabled
* @return {?}
*/
RadioGroupComponent.prototype.setDisabledState = /**
* @param {?} isDisabled
* @return {?}
*/
function (isDisabled) {
var _this = this;
this.disabled = isDisabled;
setTimeout((/**
* @return {?}
*/
function () {
_this.disableAllRadios(_this.disabled);
}), 0);
};
/**
* @param {?} value
* @return {?}
*/
RadioGroupComponent.prototype.writeValue = /**
* @param {?} value
* @return {?}
*/
function (value) {
var _this = this;
this.value = value;
setTimeout((/**
* @return {?}
*/
function () {
_this.setValueAllRadios(_this.value);
}), 0);
};
/**
* @param {?} fn
* @return {?}
*/
RadioGroupComponent.prototype.registerOnChange = /**
* @param {?} fn
* @return {?}
*/
function (fn) {
this.onChange = fn;
};
/**
* @param {?} fn
* @return {?}
*/
RadioGroupComponent.prototype.registerOnTouched = /**
* @param {?} fn
* @return {?}
*/
function (fn) {
this.onTouched = fn;
};
/**
* @param {?} value
* @return {?}
*/
RadioGroupComponent.prototype.onChange = /**
* @param {?} value
* @return {?}
*/
function (value) {
};
/**
* @return {?}
*/
RadioGroupComponent.prototype.onTouched = /**
* @return {?}
*/
function () { };
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 {?}
*/
function () { 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 = function () { return []; };
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 }]
};
return RadioGroupComponent;
}());
export { RadioGroupComponent };
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbWF0ZXJpYWxpemUtYW5ndWxhci8iLCJzb3VyY2VzIjpbImFwcC9jb21wbGV0ZWQtY29tcG9uZW50cy9yYWRpby1ncm91cC9yYWRpby1ncm91cC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBUUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHekQ7SUFpQ0U7UUFWUyxlQUFVLEdBQVksbUJBQW1CLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQztRQUNsRSxjQUFTLEdBQVcsbUJBQW1CLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQztRQUMvRCxhQUFRLEdBQVksbUJBQW1CLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztRQUM5RCxTQUFJLEdBQVcsbUJBQW1CLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztRQUNyRCxhQUFRLEdBQVksbUJBQW1CLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztRQUM5RCxVQUFLLEdBQVcsbUJBQW1CLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztRQUV6RCxXQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFJdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFFdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsY0FB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LEtBQUs7dUJBQ0wsS0FBSzsyQkFDTCxLQUFLO3dCQUNMLEtBQUs7O0lBZ0dSLDBCQUFDO0NBQUEsQUE1SEQsSUE0SEM7U0FuSFksbUJBQW1COzs7SUFDOUIsaUNBT0U7O0lBRUYsOENBQTRFOztJQUU1RSw4Q0FBMEQ7O0lBRTFELHlDQUEyRTs7SUFDM0Usd0NBQXdFOztJQUN4RSx1Q0FBdUU7O0lBQ3ZFLG1DQUE4RDs7SUFDOUQsdUNBQXVFOztJQUN2RSxvQ0FBZ0U7O0lBRWhFLHFDQUF5Qzs7SUFDekMsd0NBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IFdvcmt5bGFiLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS93b3JreWxhYi9tYXRlcmlhbGl6ZS1hbmd1bGFyL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnLi4vLi4vY29uZmlnJztcbmltcG9ydCB7IFJhZGlvQ29tcG9uZW50IH0gZnJvbSAnLi9yYWRpby9yYWRpby5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmFkaW9Hcm91cE1vZGVsIH0gZnJvbSAnLi9yYWRpby1ncm91cC5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBwcm92aWRlcnM6IFt7XG4gICAgbXVsdGk6IHRydWUsXG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUmFkaW9Hcm91cENvbXBvbmVudClcbiAgfV0sXG4gIHNlbGVjdG9yOiBgJHsgY29uZmlnLmNvbXBvbmVudHMucHJlZml4IH0tcmFkaW8tZ3JvdXAgfWAsXG4gIHRlbXBsYXRlVXJsOiAnLi9yYWRpby1ncm91cC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUmFkaW9Hcm91cENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBSYWRpb0dyb3VwTW9kZWwge1xuICBzdGF0aWMgcmVhZG9ubHkgZGVmYXVsdFByb3BzOiBSYWRpb0dyb3VwTW9kZWwgPSB7XG4gICAgY2FuVW5jaGVjazogZmFsc2UsXG4gICAgY2xhc3NOYW1lOiAnJyxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgbmFtZTogJycsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHZhbHVlOiAnJ1xuICB9O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oUmFkaW9Db21wb25lbnQpIHJhZGlvc1F1ZXJ5TGlzdDogUXVlcnlMaXN0PFJhZGlvQ29tcG9uZW50PjtcblxuICBAT3V0cHV0KCdvbkNoYW5nZScpIG9uQ2hhbmdlRW1pdHRlcjogRXZlbnRFbWl0dGVyPHN0cmluZz47XG5cbiAgQElucHV0KCkgY2FuVW5jaGVjazogYm9vbGVhbiA9IFJhZGlvR3JvdXBDb21wb25lbnQuZGVmYXVsdFByb3BzLmNhblVuY2hlY2s7XG4gIEBJbnB1dCgpIGNsYXNzTmFtZTogc3RyaW5nID0gUmFkaW9Hcm91cENvbXBvbmVudC5kZWZhdWx0UHJvcHMuY2xhc3NOYW1lO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IFJhZGlvR3JvdXBDb21wb25lbnQuZGVmYXVsdFByb3BzLmRpc2FibGVkO1xuICBASW5wdXQoKSBuYW1lOiBzdHJpbmcgPSBSYWRpb0dyb3VwQ29tcG9uZW50LmRlZmF1bHRQcm9wcy5uYW1lO1xuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbiA9IFJhZGlvR3JvdXBDb21wb25lbnQuZGVmYXVsdFByb3BzLnJlcXVpcmVkO1xuICBASW5wdXQoKSB2YWx1ZTogc3RyaW5nID0gUmFkaW9Hcm91cENvbXBvbmVudC5kZWZhdWx0UHJvcHMudmFsdWU7XG5cbiAgcHVibGljIHByZWZpeCA9IGNvbmZpZy5jb21wb25lbnRzLnByZWZpeDtcbiAgcHVibGljIGlzRm9jdXNlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xuXG4gICAgdGhpcy5pbml0UmFkaW9zID0gdGhpcy5pbml0UmFkaW9zLmJpbmQodGhpcyk7XG4gICAgdGhpcy5yZWdpc3RlclJhZGlvcyA9IHRoaXMucmVnaXN0ZXJSYWRpb3MuYmluZCh0aGlzKTtcbiAgICB0aGlzLnRvZ2dsZVJhZGlvcyA9IHRoaXMudG9nZ2xlUmFkaW9zLmJpbmQodGhpcyk7XG5cbiAgICB0aGlzLm9uQ2hhbmdlRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLmluaXRSYWRpb3MoKTtcblxuICAgIHRoaXMucmFkaW9zUXVlcnlMaXN0LmNoYW5nZXMuc3Vic2NyaWJlKHRoaXMuaW5pdFJhZGlvcyk7XG4gIH1cblxuICBpbml0UmFkaW9zKCkge1xuICAgIHRoaXMuZGlzYWJsZUFsbFJhZGlvcyh0aGlzLmRpc2FibGVkKTtcblxuICAgIHNldFRpbWVvdXQodGhpcy5yZWdpc3RlclJhZGlvcywgMCk7XG4gIH1cblxuICByZWdpc3RlclJhZGlvcygpIHtcbiAgICB0aGlzLnJhZGlvc1F1ZXJ5TGlzdC5mb3JFYWNoKHJhZGlvID0+IHtcbiAgICAgIHJhZGlvLmlzQWN0aXZlID0gKHJhZGlvLnZhbHVlID09PSB0aGlzLnZhbHVlKTtcblxuICAgICAgcmFkaW8ub25DbGlja0VtaXR0ZXIuc3Vic2NyaWJlKHRoaXMudG9nZ2xlUmFkaW9zKTtcbiAgICB9KTtcbiAgfVxuXG4gIHRvZ2dsZVJhZGlvcyh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zZXRWYWx1ZUFsbFJhZGlvcyh2YWx1ZSk7XG5cbiAgICBjb25zdCBjdXJyZW50UmFkaW8gPSB0aGlzLnJhZGlvc1F1ZXJ5TGlzdC5maW5kKHJhZGlvID0+IHJhZGlvLnZhbHVlID09PSB2YWx1ZSk7XG5cbiAgICB0aGlzLnZhbHVlID0gY3VycmVudFJhZGlvICYmIGN1cnJlbnRSYWRpby5pc0FjdGl2ZVxuICAgICAgPyBjdXJyZW50UmFkaW8udmFsdWVcbiAgICAgIDogJyc7XG5cbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG5cbiAgICB0aGlzLm9uQ2hhbmdlRW1pdHRlci5lbWl0KHRoaXMudmFsdWUpO1xuICB9XG5cbiAgc2V0VmFsdWVBbGxSYWRpb3ModmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMucmFkaW9zUXVlcnlMaXN0LmZvckVhY2gocmFkaW8gPT4ge1xuICAgICAgaWYgKHJhZGlvLnZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgICByYWRpby5pc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAocmFkaW8udmFsdWUgPT09IHZhbHVlICYmICF0aGlzLmNhblVuY2hlY2spIHtcbiAgICAgICAgcmFkaW8uaXNBY3RpdmUgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZGlzYWJsZUFsbFJhZGlvcyhkaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMucmFkaW9zUXVlcnlMaXN0LmZvckVhY2gocmFkaW8gPT4ge1xuICAgICAgcmFkaW8uZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICB9KTtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmRpc2FibGVBbGxSYWRpb3ModGhpcy5kaXNhYmxlZCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2V0VmFsdWVBbGxSYWRpb3ModGhpcy52YWx1ZSk7XG4gICAgfSwgMCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIG9uQ2hhbmdlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgfVxuXG4gIG9uVG91Y2hlZCgpOiB2b2lkIHt9XG59XG4iXX0=