UNPKG

materialize-angular

Version:
246 lines 17.5 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'; var ButtonToggleGroupComponent = /** @class */ (function () { function ButtonToggleGroupComponent() { 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 {?} */ ButtonToggleGroupComponent.prototype.ngAfterContentInit = /** * @return {?} */ function () { this.initButtons(); this.buttonsQueryList.changes.subscribe(this.initButtons); }; /** * @return {?} */ ButtonToggleGroupComponent.prototype.initButtons = /** * @return {?} */ function () { if (this.disabled) { this.disableButtons(this.disabled); } setTimeout(this.registerButtons, 0); }; /** * @param {?} disabled * @return {?} */ ButtonToggleGroupComponent.prototype.disableButtons = /** * @param {?} disabled * @return {?} */ function (disabled) { this.buttonsQueryList.forEach((/** * @param {?} item * @return {?} */ function (item) { item.disabled = disabled; })); }; /** * @return {?} */ ButtonToggleGroupComponent.prototype.registerButtons = /** * @return {?} */ function () { var _this = this; this.buttonsQueryList.forEach((/** * @param {?} button * @return {?} */ function (button) { button.isActive = (_this.value.lastIndexOf(button.value) >= 0); button.onClickEmitter.subscribe(_this.toggleButton); })); }; /** * @param {?} value * @return {?} */ ButtonToggleGroupComponent.prototype.toggleButton = /** * @param {?} value * @return {?} */ function (value) { this.setValueAllButtons(value); /** @type {?} */ var currentButton = this.buttonsQueryList.find((/** * @param {?} item * @return {?} */ function (item) { return item.value === value; })); this.value = currentButton && currentButton.isActive ? currentButton.value : ''; this.onTouched(); this.onChange(this.value); this.onChangeEmitter.emit(this.value); }; /** * @param {?} value * @return {?} */ ButtonToggleGroupComponent.prototype.setValueAllButtons = /** * @param {?} value * @return {?} */ function (value) { var _this = this; this.buttonsQueryList.forEach((/** * @param {?} button * @return {?} */ function (button) { if (button.value !== value) { button.isActive = false; } if (button.value === value && !_this.canUncheck) { button.isActive = true; } })); }; /** * @param {?} isDisabled * @return {?} */ ButtonToggleGroupComponent.prototype.setDisabledState = /** * @param {?} isDisabled * @return {?} */ function (isDisabled) { this.disabled = isDisabled; this.disableButtons(this.disabled); }; /** * @param {?} value * @return {?} */ ButtonToggleGroupComponent.prototype.writeValue = /** * @param {?} value * @return {?} */ function (value) { this.value = value; }; /** * @param {?} fn * @return {?} */ ButtonToggleGroupComponent.prototype.registerOnChange = /** * @param {?} fn * @return {?} */ function (fn) { this.onChange = fn; }; /** * @param {?} fn * @return {?} */ ButtonToggleGroupComponent.prototype.registerOnTouched = /** * @param {?} fn * @return {?} */ function (fn) { this.onTouched = fn; }; /** * @param {?} value * @return {?} */ ButtonToggleGroupComponent.prototype.onChange = /** * @param {?} value * @return {?} */ function (value) { }; /** * @return {?} */ ButtonToggleGroupComponent.prototype.onTouched = /** * @return {?} */ function () { }; ButtonToggleGroupComponent.defaultProps = { canUncheck: false, className: '', disabled: false, value: '' }; ButtonToggleGroupComponent.decorators = [ { type: Component, args: [{ providers: [{ multi: true, provide: NG_VALUE_ACCESSOR, useExisting: forwardRef((/** * @return {?} */ function () { 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 = function () { return []; }; ButtonToggleGroupComponent.propDecorators = { buttonsQueryList: [{ type: ContentChildren, args: [ButtonToggleComponent,] }], onChangeEmitter: [{ type: Output, args: ['onChange',] }], canUncheck: [{ type: Input }], className: [{ type: Input }], disabled: [{ type: Input }], value: [{ type: Input }] }; return ButtonToggleGroupComponent; }()); export { ButtonToggleGroupComponent }; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLXRvZ2dsZS1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9tYXRlcmlhbGl6ZS1hbmd1bGFyLyIsInNvdXJjZXMiOlsiYXBwL2NvbXBsZXRlZC1jb21wb25lbnRzL2J1dHRvbi10b2dnbGUtZ3JvdXAvYnV0dG9uLXRvZ2dsZS1ncm91cC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBUUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFaEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV0QztJQThCRTtRQVRTLGVBQVUsR0FBWSwwQkFBMEIsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDO1FBQ3pFLGNBQVMsR0FBVywwQkFBMEIsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDO1FBQ3RFLGFBQVEsR0FBWSwwQkFBMEIsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO1FBQ3JFLFVBQUssR0FBVywwQkFBMEIsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO1FBRWhFLFdBQU0sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztRQUt2QyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFMUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENB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bGljZW5zZVxuICogQ29weXJpZ2h0IFdvcmt5bGFiLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS93b3JreWxhYi9tYXRlcmlhbGl6ZS1hbmd1bGFyL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQnV0dG9uVG9nZ2xlQ29tcG9uZW50IH0gZnJvbSAnLi9idXR0b24tdG9nZ2xlL2J1dHRvbi10b2dnbGUuY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvblRvZ2dsZUdyb3VwTW9kZWwgfSBmcm9tICcuL2J1dHRvbi10b2dnbGUtZ3JvdXAubW9kZWwnO1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnLi4vLi4vY29uZmlnJztcblxuQENvbXBvbmVudCh7XG4gIHByb3ZpZGVyczogW3tcbiAgICBtdWx0aTogdHJ1ZSxcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBCdXR0b25Ub2dnbGVHcm91cENvbXBvbmVudClcbiAgfV0sXG4gIHNlbGVjdG9yOiBgJHsgY29uZmlnLmNvbXBvbmVudHMucHJlZml4IH0tYnV0dG9uLXRvZ2dsZS1ncm91cCB9YCxcbiAgdGVtcGxhdGVVcmw6ICcuL2J1dHRvbi10b2dnbGUtZ3JvdXAuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEJ1dHRvblRvZ2dsZUdyb3VwQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyQ29udGVudEluaXQsIEJ1dHRvblRvZ2dsZUdyb3VwTW9kZWwge1xuICBzdGF0aWMgcmVhZG9ubHkgZGVmYXVsdFByb3BzOiBCdXR0b25Ub2dnbGVHcm91cE1vZGVsID0ge1xuICAgIGNhblVuY2hlY2s6IGZhbHNlLFxuICAgIGNsYXNzTmFtZTogJycsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIHZhbHVlOiAnJ1xuICB9O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oQnV0dG9uVG9nZ2xlQ29tcG9uZW50KSBidXR0b25zUXVlcnlMaXN0OiBRdWVyeUxpc3Q8QnV0dG9uVG9nZ2xlQ29tcG9uZW50PjtcblxuICBAT3V0cHV0KCdvbkNoYW5nZScpIG9uQ2hhbmdlRW1pdHRlcjogRXZlbnRFbWl0dGVyPHN0cmluZz47XG5cbiAgQElucHV0KCkgY2FuVW5jaGVjazogYm9vbGVhbiA9IEJ1dHRvblRvZ2dsZUdyb3VwQ29tcG9uZW50LmRlZmF1bHRQcm9wcy5jYW5VbmNoZWNrO1xuICBASW5wdXQoKSBjbGFzc05hbWU6IHN0cmluZyA9IEJ1dHRvblRvZ2dsZUdyb3VwQ29tcG9uZW50LmRlZmF1bHRQcm9wcy5jbGFzc05hbWU7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gQnV0dG9uVG9nZ2xlR3JvdXBDb21wb25lbnQuZGVmYXVsdFByb3BzLmRpc2FibGVkO1xuICBASW5wdXQoKSB2YWx1ZTogc3RyaW5nID0gQnV0dG9uVG9nZ2xlR3JvdXBDb21wb25lbnQuZGVmYXVsdFByb3BzLnZhbHVlO1xuXG4gIHB1YmxpYyBwcmVmaXggPSBjb25maWcuY29tcG9uZW50cy5wcmVmaXg7XG5cbiAgcHVibGljIGlzRm9jdXNlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xuICAgIHRoaXMub25DaGFuZ2VFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgdGhpcy5pbml0QnV0dG9ucyA9IHRoaXMuaW5pdEJ1dHRvbnMuYmluZCh0aGlzKTtcbiAgICB0aGlzLnJlZ2lzdGVyQnV0dG9ucyA9IHRoaXMucmVnaXN0ZXJCdXR0b25zLmJpbmQodGhpcyk7XG4gICAgdGhpcy50b2dnbGVCdXR0b24gPSB0aGlzLnRvZ2dsZUJ1dHRvbi5iaW5kKHRoaXMpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMuaW5pdEJ1dHRvbnMoKTtcblxuICAgIHRoaXMuYnV0dG9uc1F1ZXJ5TGlzdC5jaGFuZ2VzLnN1YnNjcmliZSh0aGlzLmluaXRCdXR0b25zKTtcbiAgfVxuXG4gIGluaXRCdXR0b25zKCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmRpc2FibGVCdXR0b25zKHRoaXMuZGlzYWJsZWQpO1xuICAgIH1cblxuICAgIHNldFRpbWVvdXQodGhpcy5yZWdpc3RlckJ1dHRvbnMsIDApO1xuICB9XG5cbiAgZGlzYWJsZUJ1dHRvbnMoZGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmJ1dHRvbnNRdWVyeUxpc3QuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGl0ZW0uZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICB9KTtcbiAgfVxuXG4gIHJlZ2lzdGVyQnV0dG9ucygpIHtcbiAgICB0aGlzLmJ1dHRvbnNRdWVyeUxpc3QuZm9yRWFjaChidXR0b24gPT4ge1xuICAgICAgYnV0dG9uLmlzQWN0aXZlID0gKHRoaXMudmFsdWUubGFzdEluZGV4T2YoYnV0dG9uLnZhbHVlKSA+PSAwKTtcblxuICAgICAgYnV0dG9uLm9uQ2xpY2tFbWl0dGVyLnN1YnNjcmliZSh0aGlzLnRvZ2dsZUJ1dHRvbik7XG4gICAgfSk7XG4gIH1cblxuICB0b2dnbGVCdXR0b24odmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuc2V0VmFsdWVBbGxCdXR0b25zKHZhbHVlKTtcblxuICAgIGNvbnN0IGN1cnJlbnRCdXR0b24gPSB0aGlzLmJ1dHRvbnNRdWVyeUxpc3QuZmluZChpdGVtID0+IGl0ZW0udmFsdWUgPT09IHZhbHVlKTtcblxuICAgIHRoaXMudmFsdWUgPSBjdXJyZW50QnV0dG9uICYmIGN1cnJlbnRCdXR0b24uaXNBY3RpdmVcbiAgICAgID8gY3VycmVudEJ1dHRvbi52YWx1ZVxuICAgICAgOiAnJztcblxuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcblxuICAgIHRoaXMub25DaGFuZ2VFbWl0dGVyLmVtaXQodGhpcy52YWx1ZSk7XG4gIH1cblxuICBzZXRWYWx1ZUFsbEJ1dHRvbnModmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuYnV0dG9uc1F1ZXJ5TGlzdC5mb3JFYWNoKGJ1dHRvbiA9PiB7XG4gICAgICBpZiAoYnV0dG9uLnZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgICBidXR0b24uaXNBY3RpdmUgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGJ1dHRvbi52YWx1ZSA9PT0gdmFsdWUgJiYgIXRoaXMuY2FuVW5jaGVjaykge1xuICAgICAgICBidXR0b24uaXNBY3RpdmUgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG5cbiAgICB0aGlzLmRpc2FibGVCdXR0b25zKHRoaXMuZGlzYWJsZWQpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBvbkNoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7fVxuXG4gIG9uVG91Y2hlZCgpOiB2b2lkIHt9XG59XG4iXX0=