@hxui/angular
Version:
This README includes the steps that are necessary to import the HxUi-angular into a project or to contribute with development.
114 lines (113 loc) • 9.46 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import { Directive, ElementRef, HostBinding, HostListener, Renderer2 } from '@angular/core';
import { DropdownState } from './dropdown.state';
export class DropdownToggleDirective {
/**
* @param {?} _state
* @param {?} _element
* @param {?} _renderer
*/
constructor(_state, _element, _renderer) {
this._state = _state;
this._element = _element;
this._renderer = _renderer;
this._subscriptions = [];
// sync is open value with state
this._subscriptions.push(this._state
.isOpenChange.subscribe((value) => this.isOpen = value));
// populate disabled state
this._subscriptions.push(this._state
.isDisabledChange
.subscribe((value) => this.isDisabled = value || false));
}
/**
* @param {?} event
* @return {?}
*/
onClick(event) {
if (this.isDisabled) {
return;
}
if (!this._state.isOpen) {
this._state.toggleClick.emit(true);
}
else {
this._state.toggleClick.emit(false);
}
}
/**
* @param {?} event
* @return {?}
*/
onDocumentClick(event) {
if (this._state.autoClose && event.button !== 2 &&
!this._element.nativeElement.contains(event.target)) {
this._state.toggleClick.emit(false);
}
else if (!this._element.nativeElement.parentNode.contains(event.target)) {
this._state.toggleClick.emit(false);
}
}
/**
* @return {?}
*/
onEsc() {
if (this._state.autoClose) {
this._state.toggleClick.emit(false);
}
}
/**
* @return {?}
*/
ngOnDestroy() {
for (const /** @type {?} */ sub of this._subscriptions) {
sub.unsubscribe();
}
}
}
DropdownToggleDirective.decorators = [
{ type: Directive, args: [{
selector: '[hxDropdownToggle],[dropdownToggle]',
exportAs: 'hx-dropdown-toggle'
},] },
];
/** @nocollapse */
DropdownToggleDirective.ctorParameters = () => [
{ type: DropdownState, },
{ type: ElementRef, },
{ type: Renderer2, },
];
DropdownToggleDirective.propDecorators = {
"isDisabled": [{ type: HostBinding, args: ['attr.disabled',] },],
"isOpen": [{ type: HostBinding, args: ['class.is-active',] }, { type: HostBinding, args: ['attr.aria-expanded',] },],
"onClick": [{ type: HostListener, args: ['click', ['$event'],] },],
"onDocumentClick": [{ type: HostListener, args: ['document:click', ['$event'],] },],
"onEsc": [{ type: HostListener, args: ['keyup.esc',] },],
};
function DropdownToggleDirective_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
DropdownToggleDirective.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
DropdownToggleDirective.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
DropdownToggleDirective.propDecorators;
/** @type {?} */
DropdownToggleDirective.prototype.isDisabled;
/** @type {?} */
DropdownToggleDirective.prototype.isOpen;
/** @type {?} */
DropdownToggleDirective.prototype._subscriptions;
/** @type {?} */
DropdownToggleDirective.prototype._state;
/** @type {?} */
DropdownToggleDirective.prototype._element;
/** @type {?} */
DropdownToggleDirective.prototype._renderer;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tdG9nZ2xlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BoeHVpL2FuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvZHJvcGRvd24vZHJvcGRvd24tdG9nZ2xlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBYSxTQUFTLEVBQ3ZFLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQU1qRCxNQUFNOzs7Ozs7SUEyQ0osWUFBb0IsTUFBcUIsRUFDckIsVUFDQTtRQUZBLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsYUFBUSxHQUFSLFFBQVE7UUFDUixjQUFTLEdBQVQsU0FBUzs4QkFKWSxFQUFFOztRQU16QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTthQUNqQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBYyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7O1FBRXBFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO2FBQ2pDLGdCQUFnQjthQUNoQixTQUFTLENBQUMsQ0FBQyxLQUFjLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUM7S0FDckU7Ozs7O0lBN0NELE9BQU8sQ0FBQyxLQUFLO1FBQ1gsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDcEIsTUFBTSxDQUFDO1NBQ1I7UUFFRCxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDcEM7UUFBQSxJQUFJLENBQUMsQ0FBQztZQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNyQzs7Ozs7O0lBT0gsZUFBZSxDQUFDLEtBQVU7UUFDeEIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQy9DLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3JDO1FBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFFLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNyQzs7Ozs7SUFLSCxLQUFLO1FBQ0gsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNyQzs7Ozs7SUFpQkgsV0FBVztRQUNULEdBQUcsQ0FBQyxDQUFDLHVCQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztZQUN0QyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDbkI7S0FDRjs7O1lBL0RGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUscUNBQXFDO2dCQUMvQyxRQUFRLEVBQUUsb0JBQW9CO2FBQy9COzs7O1lBTFEsYUFBYTtZQUpULFVBQVU7WUFBd0MsU0FBUzs7OzJCQVdyRSxXQUFXLFNBQUMsZUFBZTt1QkFHM0IsV0FBVyxTQUFDLGlCQUFpQixjQUM3QixXQUFXLFNBQUMsb0JBQW9CO3dCQUVoQyxZQUFZLFNBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dDQWdCaEMsWUFBWSxTQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDO3NCQVd6QyxZQUFZLFNBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBPbkRlc3Ryb3ksIFJlbmRlcmVyMlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IERyb3Bkb3duU3RhdGUgfSBmcm9tICcuL2Ryb3Bkb3duLnN0YXRlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2h4RHJvcGRvd25Ub2dnbGVdLFtkcm9wZG93blRvZ2dsZV0nLFxyXG4gIGV4cG9ydEFzOiAnaHgtZHJvcGRvd24tdG9nZ2xlJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRHJvcGRvd25Ub2dnbGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIEBIb3N0QmluZGluZygnYXR0ci5kaXNhYmxlZCcpXHJcbiAgaXNEaXNhYmxlZDogYm9vbGVhbjtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy1hY3RpdmUnKVxyXG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWV4cGFuZGVkJykgaXNPcGVuOiBib29sZWFuO1xyXG5cclxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25DbGljayhldmVudCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLl9zdGF0ZS5pc09wZW4pIHtcclxuICAgICAgdGhpcy5fc3RhdGUudG9nZ2xlQ2xpY2suZW1pdCh0cnVlKTtcclxuICAgIH1lbHNlIHtcclxuICAgICAgdGhpcy5fc3RhdGUudG9nZ2xlQ2xpY2suZW1pdChmYWxzZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICB9XHJcblxyXG4gIC8vIFBlcmZvcm1hbmNlIGlzc3VlIHdpdGggbXVsdGlwbGUgZG9jdW1lbnQgbGlzdGVuZXJzXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIG9uRG9jdW1lbnRDbGljayhldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fc3RhdGUuYXV0b0Nsb3NlICYmIGV2ZW50LmJ1dHRvbiAhPT0gMiAmJlxyXG4gICAgIXRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XHJcbiAgICAgIHRoaXMuX3N0YXRlLnRvZ2dsZUNsaWNrLmVtaXQoZmFsc2UpO1xyXG4gICAgfSBlbHNlIGlmICghdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xyXG4gICAgICB0aGlzLl9zdGF0ZS50b2dnbGVDbGljay5lbWl0KGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdrZXl1cC5lc2MnKVxyXG4gIG9uRXNjKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX3N0YXRlLmF1dG9DbG9zZSkge1xyXG4gICAgICB0aGlzLl9zdGF0ZS50b2dnbGVDbGljay5lbWl0KGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3N0YXRlOiBEcm9wZG93blN0YXRlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRSZWYsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMikge1xyXG4gICAgLy8gc3luYyBpcyBvcGVuIHZhbHVlIHdpdGggc3RhdGVcclxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMucHVzaCh0aGlzLl9zdGF0ZVxyXG4gICAgICAuaXNPcGVuQ2hhbmdlLnN1YnNjcmliZSgodmFsdWU6IGJvb2xlYW4pID0+IHRoaXMuaXNPcGVuID0gdmFsdWUpKTtcclxuICAgIC8vIHBvcHVsYXRlIGRpc2FibGVkIHN0YXRlXHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnB1c2godGhpcy5fc3RhdGVcclxuICAgICAgLmlzRGlzYWJsZWRDaGFuZ2VcclxuICAgICAgLnN1YnNjcmliZSgodmFsdWU6IGJvb2xlYW4pID0+IHRoaXMuaXNEaXNhYmxlZCA9IHZhbHVlIHx8IGZhbHNlKSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGZvciAoY29uc3Qgc3ViIG9mIHRoaXMuX3N1YnNjcmlwdGlvbnMpIHtcclxuICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==