UNPKG

materialize-angular

Version:
198 lines 15.7 kB
/** * @fileoverview added by tsickle * Generated from: app/completed-components/button-toggle-group/button-toggle-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 { ButtonToggleComponent } from './button-toggle/button-toggle.component'; import { config } from '../../config'; export class ButtonToggleGroupComponent { constructor() { this.canUncheck = ButtonToggleGroupComponent.defaultProps.canUncheck; this.className = ButtonToggleGroupComponent.defaultProps.className; this.disabled = ButtonToggleGroupComponent.defaultProps.disabled; this.value = ButtonToggleGroupComponent.defaultProps.value; this.prefix = config.components.prefix; this.isFocused = false; this.onChangeEmitter = new EventEmitter(); this.initButtons = this.initButtons.bind(this); this.registerButtons = this.registerButtons.bind(this); this.toggleButton = this.toggleButton.bind(this); } /** * @return {?} */ ngAfterContentInit() { this.initButtons(); this.buttonsQueryList.changes.subscribe(this.initButtons); } /** * @return {?} */ initButtons() { if (this.disabled) { this.disableButtons(this.disabled); } setTimeout(this.registerButtons, 0); } /** * @param {?} disabled * @return {?} */ disableButtons(disabled) { this.buttonsQueryList.forEach((/** * @param {?} item * @return {?} */ item => { item.disabled = disabled; })); } /** * @return {?} */ registerButtons() { this.buttonsQueryList.forEach((/** * @param {?} button * @return {?} */ button => { button.isActive = (this.value.lastIndexOf(button.value) >= 0); button.onClickEmitter.subscribe(this.toggleButton); })); } /** * @param {?} value * @return {?} */ toggleButton(value) { this.setValueAllButtons(value); /** @type {?} */ const currentButton = this.buttonsQueryList.find((/** * @param {?} item * @return {?} */ item => item.value === value)); this.value = currentButton && currentButton.isActive ? currentButton.value : ''; this.onTouched(); this.onChange(this.value); this.onChangeEmitter.emit(this.value); } /** * @param {?} value * @return {?} */ setValueAllButtons(value) { this.buttonsQueryList.forEach((/** * @param {?} button * @return {?} */ button => { if (button.value !== value) { button.isActive = false; } if (button.value === value && !this.canUncheck) { button.isActive = true; } })); } /** * @param {?} isDisabled * @return {?} */ setDisabledState(isDisabled) { this.disabled = isDisabled; this.disableButtons(this.disabled); } /** * @param {?} value * @return {?} */ writeValue(value) { this.value = value; } /** * @param {?} fn * @return {?} */ registerOnChange(fn) { this.onChange = fn; } /** * @param {?} fn * @return {?} */ registerOnTouched(fn) { this.onTouched = fn; } /** * @param {?} value * @return {?} */ onChange(value) { } /** * @return {?} */ onTouched() { } } ButtonToggleGroupComponent.defaultProps = { canUncheck: false, className: '', disabled: false, value: '' }; ButtonToggleGroupComponent.decorators = [ { type: Component, args: [{ providers: [{ multi: true, provide: NG_VALUE_ACCESSOR, useExisting: forwardRef((/** * @return {?} */ () => ButtonToggleGroupComponent)) }], selector: `${config.components.prefix}-button-toggle-group }`, template: "<div \n [ngClass]=\"[prefix + '-button-toggle-group', className]\"\n [class.disabled]=\"disabled\"\n>\n <ng-content select=\"materialize-button-toggle\"></ng-content>\n</div>\n " }] } ]; /** @nocollapse */ ButtonToggleGroupComponent.ctorParameters = () => []; ButtonToggleGroupComponent.propDecorators = { buttonsQueryList: [{ type: ContentChildren, args: [ButtonToggleComponent,] }], onChangeEmitter: [{ type: Output, args: ['onChange',] }], canUncheck: [{ type: Input }], className: [{ type: Input }], disabled: [{ type: Input }], value: [{ type: Input }] }; if (false) { /** @type {?} */ ButtonToggleGroupComponent.defaultProps; /** @type {?} */ ButtonToggleGroupComponent.prototype.buttonsQueryList; /** @type {?} */ ButtonToggleGroupComponent.prototype.onChangeEmitter; /** @type {?} */ ButtonToggleGroupComponent.prototype.canUncheck; /** @type {?} */ ButtonToggleGroupComponent.prototype.className; /** @type {?} */ ButtonToggleGroupComponent.prototype.disabled; /** @type {?} */ ButtonToggleGroupComponent.prototype.value; /** @type {?} */ ButtonToggleGroupComponent.prototype.prefix; /** @type {?} */ ButtonToggleGroupComponent.prototype.isFocused; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLXRvZ2dsZS1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9tYXRlcmlhbGl6ZS1hbmd1bGFyLyIsInNvdXJjZXMiOlsiYXBwL2NvbXBsZXRlZC1jb21wb25lbnRzL2J1dHRvbi10b2dnbGUtZ3JvdXAvYnV0dG9uLXRvZ2dsZS1ncm91cC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBUUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFaEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQVd0QyxNQUFNLE9BQU8sMEJBQTBCO0lBcUJyQztRQVRTLGVBQVUsR0FBWSwwQkFBMEIsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDO1FBQ3pFLGNBQVMsR0FBVywwQkFBMEIsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDO1FBQ3RFLGFBQVEsR0FBWSwwQkFBMEIsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO1FBQ3JFLFVBQUssR0FBVywwQkFBMEIsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO1FBRWhFLFdBQU0sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztRQUt2QyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFMUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsZUFBZSxHQUFH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LFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQzs7Ozs7SUFFRCxpQkFBaUIsQ0FBQyxFQUFjO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7Ozs7O0lBRUQsUUFBUSxDQUFDLEtBQWEsSUFBUyxDQUFDOzs7O0lBRWhDLFNBQVMsS0FBVSxDQUFDOztBQXhHSix1Q0FBWSxHQUEyQjtJQUNyRCxVQUFVLEVBQUUsS0FBSztJQUNqQixTQUFTLEVBQUUsRUFBRTtJQUNiLFFBQVEsRUFBRSxLQUFLO0lBQ2YsS0FBSyxFQUFFLEVBQUU7Q0FDVixDQUFDOztZQWZILFNBQVMsU0FBQztnQkFDVCxTQUFTLEVBQUUsQ0FBQzt3QkFDVixLQUFLLEVBQUUsSUFBSTt3QkFDWCxPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixXQUFXLEVBQUUsVUFBVTs7O3dCQUFDLEdBQUcsRUFBRSxDQUFDLDBCQUEwQixFQUFDO3FCQUMxRCxDQUFDO2dCQUNGLFFBQVEsRUFBRSxHQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTyx3QkFBd0I7Z0JBQy9ELGlNQUFtRDthQUNwRDs7Ozs7K0JBU0UsZUFBZSxTQUFDLHFCQUFxQjs4QkFFckMsTUFBTSxTQUFDLFVBQVU7eUJBRWpCLEtBQUs7d0JBQ0wsS0FBSzt1QkFDTCxLQUFLO29CQUNMLEtBQUs7Ozs7SUFkTix3Q0FLRTs7SUFFRixzREFBMkY7O0lBRTNGLHFEQUEwRDs7SUFFMUQsZ0RBQWtGOztJQUNsRiwrQ0FBK0U7O0lBQy9FLDhDQUE4RTs7SUFDOUUsMkNBQXVFOztJQUV2RSw0Q0FBeUM7O0lBRXpDLCtDQUEwQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBXb3JreWxhYi4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vd29ya3lsYWIvbWF0ZXJpYWxpemUtYW5ndWxhci9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJ1dHRvblRvZ2dsZUNvbXBvbmVudCB9IGZyb20gJy4vYnV0dG9uLXRvZ2dsZS9idXR0b24tdG9nZ2xlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25Ub2dnbGVHcm91cE1vZGVsIH0gZnJvbSAnLi9idXR0b24tdG9nZ2xlLWdyb3VwLm1vZGVsJztcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJy4uLy4uL2NvbmZpZyc7XG5cbkBDb21wb25lbnQoe1xuICBwcm92aWRlcnM6IFt7XG4gICAgbXVsdGk6IHRydWUsXG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQnV0dG9uVG9nZ2xlR3JvdXBDb21wb25lbnQpXG4gIH1dLFxuICBzZWxlY3RvcjogYCR7IGNvbmZpZy5jb21wb25lbnRzLnByZWZpeCB9LWJ1dHRvbi10b2dnbGUtZ3JvdXAgfWAsXG4gIHRlbXBsYXRlVXJsOiAnLi9idXR0b24tdG9nZ2xlLWdyb3VwLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBCdXR0b25Ub2dnbGVHcm91cENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlckNvbnRlbnRJbml0LCBCdXR0b25Ub2dnbGVHcm91cE1vZGVsIHtcbiAgc3RhdGljIHJlYWRvbmx5IGRlZmF1bHRQcm9wczogQnV0dG9uVG9nZ2xlR3JvdXBNb2RlbCA9IHtcbiAgICBjYW5VbmNoZWNrOiBmYWxzZSxcbiAgICBjbGFzc05hbWU6ICcnLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICB2YWx1ZTogJydcbiAgfTtcblxuICBAQ29udGVudENoaWxkcmVuKEJ1dHRvblRvZ2dsZUNvbXBvbmVudCkgYnV0dG9uc1F1ZXJ5TGlzdDogUXVlcnlMaXN0PEJ1dHRvblRvZ2dsZUNvbXBvbmVudD47XG5cbiAgQE91dHB1dCgnb25DaGFuZ2UnKSBvbkNoYW5nZUVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxzdHJpbmc+O1xuXG4gIEBJbnB1dCgpIGNhblVuY2hlY2s6IGJvb2xlYW4gPSBCdXR0b25Ub2dnbGVHcm91cENvbXBvbmVudC5kZWZhdWx0UHJvcHMuY2FuVW5jaGVjaztcbiAgQElucHV0KCkgY2xhc3NOYW1lOiBzdHJpbmcgPSBCdXR0b25Ub2dnbGVHcm91cENvbXBvbmVudC5kZWZhdWx0UHJvcHMuY2xhc3NOYW1lO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IEJ1dHRvblRvZ2dsZUdyb3VwQ29tcG9uZW50LmRlZmF1bHRQcm9wcy5kaXNhYmxlZDtcbiAgQElucHV0KCkgdmFsdWU6IHN0cmluZyA9IEJ1dHRvblRvZ2dsZUdyb3VwQ29tcG9uZW50LmRlZmF1bHRQcm9wcy52YWx1ZTtcblxuICBwdWJsaWMgcHJlZml4ID0gY29uZmlnLmNvbXBvbmVudHMucHJlZml4O1xuXG4gIHB1YmxpYyBpc0ZvY3VzZWQ6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSBmYWxzZTtcbiAgICB0aGlzLm9uQ2hhbmdlRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHRoaXMuaW5pdEJ1dHRvbnMgPSB0aGlzLmluaXRCdXR0b25zLmJpbmQodGhpcyk7XG4gICAgdGhpcy5yZWdpc3RlckJ1dHRvbnMgPSB0aGlzLnJlZ2lzdGVyQnV0dG9ucy5iaW5kKHRoaXMpO1xuICAgIHRoaXMudG9nZ2xlQnV0dG9uID0gdGhpcy50b2dnbGVCdXR0b24uYmluZCh0aGlzKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLmluaXRCdXR0b25zKCk7XG5cbiAgICB0aGlzLmJ1dHRvbnNRdWVyeUxpc3QuY2hhbmdlcy5zdWJzY3JpYmUodGhpcy5pbml0QnV0dG9ucyk7XG4gIH1cblxuICBpbml0QnV0dG9ucygpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5kaXNhYmxlQnV0dG9ucyh0aGlzLmRpc2FibGVkKTtcbiAgICB9XG5cbiAgICBzZXRUaW1lb3V0KHRoaXMucmVnaXN0ZXJCdXR0b25zLCAwKTtcbiAgfVxuXG4gIGRpc2FibGVCdXR0b25zKGRpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5idXR0b25zUXVlcnlMaXN0LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBpdGVtLmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gICAgfSk7XG4gIH1cblxuICByZWdpc3RlckJ1dHRvbnMoKSB7XG4gICAgdGhpcy5idXR0b25zUXVlcnlMaXN0LmZvckVhY2goYnV0dG9uID0+IHtcbiAgICAgIGJ1dHRvbi5pc0FjdGl2ZSA9ICh0aGlzLnZhbHVlLmxhc3RJbmRleE9mKGJ1dHRvbi52YWx1ZSkgPj0gMCk7XG5cbiAgICAgIGJ1dHRvbi5vbkNsaWNrRW1pdHRlci5zdWJzY3JpYmUodGhpcy50b2dnbGVCdXR0b24pO1xuICAgIH0pO1xuICB9XG5cbiAgdG9nZ2xlQnV0dG9uKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNldFZhbHVlQWxsQnV0dG9ucyh2YWx1ZSk7XG5cbiAgICBjb25zdCBjdXJyZW50QnV0dG9uID0gdGhpcy5idXR0b25zUXVlcnlMaXN0LmZpbmQoaXRlbSA9PiBpdGVtLnZhbHVlID09PSB2YWx1ZSk7XG5cbiAgICB0aGlzLnZhbHVlID0gY3VycmVudEJ1dHRvbiAmJiBjdXJyZW50QnV0dG9uLmlzQWN0aXZlXG4gICAgICA/IGN1cnJlbnRCdXR0b24udmFsdWVcbiAgICAgIDogJyc7XG5cbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG5cbiAgICB0aGlzLm9uQ2hhbmdlRW1pdHRlci5lbWl0KHRoaXMudmFsdWUpO1xuICB9XG5cbiAgc2V0VmFsdWVBbGxCdXR0b25zKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmJ1dHRvbnNRdWVyeUxpc3QuZm9yRWFjaChidXR0b24gPT4ge1xuICAgICAgaWYgKGJ1dHRvbi52YWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgICAgYnV0dG9uLmlzQWN0aXZlID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChidXR0b24udmFsdWUgPT09IHZhbHVlICYmICF0aGlzLmNhblVuY2hlY2spIHtcbiAgICAgICAgYnV0dG9uLmlzQWN0aXZlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuXG4gICAgdGhpcy5kaXNhYmxlQnV0dG9ucyh0aGlzLmRpc2FibGVkKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgb25DaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge31cblxuICBvblRvdWNoZWQoKTogdm9pZCB7fVxufVxuIl19