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