UNPKG

@catull/igniteui-angular

Version:

Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps

113 lines 12.3 kB
import { __decorate, __metadata, __param } from "tslib"; import { Component, ElementRef, HostBinding, Inject, Input, DoCheck } from '@angular/core'; import { IgxDropDownItemComponent } from '../drop-down/drop-down-item.component'; import { IGX_DROPDOWN_BASE, Navigate } from '../drop-down/drop-down.common'; import { IgxComboAPIService } from './combo.api'; import { IgxSelectionAPIService } from '../core/selection'; /** @hidden */ let IgxComboItemComponent = class IgxComboItemComponent extends IgxDropDownItemComponent { constructor(comboAPI, dropDown, elementRef, selection) { super(dropDown, elementRef, null, selection); this.comboAPI = comboAPI; this.dropDown = dropDown; this.elementRef = elementRef; this.selection = selection; /** * Gets the height of a list item * @hidden */ this.itemHeight = ''; } /** * @hidden */ get itemID() { const valueKey = this.comboAPI.valueKey; return valueKey !== null ? this.value[valueKey] : this.value; } /** * @hidden */ get comboID() { return this.comboAPI.comboID; } /** * @hidden * @internal */ get disableTransitions() { return this.comboAPI.disableTransitions; } /** * @hidden */ get selected() { return this.comboAPI.is_item_selected(this.itemID); } set selected(value) { if (this.isHeader) { return; } this._selected = value; } /** * @hidden */ isVisible(direction) { const rect = this.element.nativeElement.getBoundingClientRect(); const parentDiv = this.element.nativeElement.parentElement.parentElement.getBoundingClientRect(); if (direction === Navigate.Down) { return rect.y + rect.height <= parentDiv.y + parentDiv.height; } return rect.y >= parentDiv.y; } clicked(event) { this.comboAPI.disableTransitions = false; if (this.disabled || this.isHeader) { const focusedItem = this.dropDown.items.find((item) => item.focused); if (this.dropDown.allowItemsFocus && focusedItem) { focusedItem.element.nativeElement.focus({ preventScroll: true }); } return; } this.dropDown.navigateItem(this.index); this.comboAPI.set_selected_item(this.itemID, event); } /** * @hidden * @internal * The event that is prevented is the click on the checkbox label element. * That is the only visible element that a user can interact with. * The click propagates to the host and the preventDefault is to stop it from * switching focus to the input it's base on. * The toggle happens in an internal handler in the drop-down on the next task queue cycle. */ disableCheck(event) { event.preventDefault(); } ngDoCheck() { } }; IgxComboItemComponent.ctorParameters = () => [ { type: IgxComboAPIService }, { type: undefined, decorators: [{ type: Inject, args: [IGX_DROPDOWN_BASE,] }] }, { type: ElementRef }, { type: IgxSelectionAPIService, decorators: [{ type: Inject, args: [IgxSelectionAPIService,] }] } ]; __decorate([ Input(), HostBinding('style.height.px'), __metadata("design:type", Object) ], IgxComboItemComponent.prototype, "itemHeight", void 0); IgxComboItemComponent = __decorate([ Component({ selector: 'igx-combo-item', template: "<ng-container *ngIf=\"!isHeader\">\n <igx-checkbox [checked]=\"selected\" disableRipple=\"true\" [disableTransitions]=\"disableTransitions\" [tabindex]=\"-1\" (click)=\"disableCheck($event)\" class=\"igx-combo__checkbox\"></igx-checkbox>\n</ng-container>\n<ng-content></ng-content>\n" }), __param(1, Inject(IGX_DROPDOWN_BASE)), __param(3, Inject(IgxSelectionAPIService)), __metadata("design:paramtypes", [IgxComboAPIService, Object, ElementRef, IgxSelectionAPIService]) ], IgxComboItemComponent); export { IgxComboItemComponent }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm8taXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9pZ25pdGV1aS1hbmd1bGFyLyIsInNvdXJjZXMiOlsibGliL2NvbWJvL2NvbWJvLWl0ZW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxPQUFPLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDakYsT0FBTyxFQUFFLGlCQUFpQixFQUFpQixRQUFRLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFM0QsY0FBYztBQUtkLElBQWEscUJBQXFCLEdBQWxDLE1BQWEscUJBQXNCLFNBQVEsd0JBQXdCO0lBaUMvRCxZQUNjLFFBQTRCLEVBQ0QsUUFBdUIsRUFDbEQsVUFBc0IsRUFDVSxTQUFpQztRQUUzRSxLQUFLLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFMbkMsYUFBUSxHQUFSLFFBQVEsQ0FBb0I7UUFDRCxhQUFRLEdBQVIsUUFBUSxDQUFlO1FBQ2xELGVBQVUsR0FBVixVQUFVLENBQVk7UUFDVSxjQUFTLEdBQVQsU0FBUyxDQUF3QjtRQW5DL0U7OztXQUdHO1FBR0ksZUFBVSxHQUFHLEVBQUUsQ0FBQztJQWdDdkIsQ0FBQztJQTlCRDs7T0FFRztJQUNILElBQVcsTUFBTTtRQUNiLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1FBQ3hDLE9BQU8sUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxR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QXFCLENBZ0dqQztTQWhHWSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBEb0NoZWNrXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWd4RHJvcERvd25JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vZHJvcC1kb3duL2Ryb3AtZG93bi1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJR1hfRFJPUERPV05fQkFTRSwgSURyb3BEb3duQmFzZSwgTmF2aWdhdGUgfSBmcm9tICcuLi9kcm9wLWRvd24vZHJvcC1kb3duLmNvbW1vbic7XG5pbXBvcnQgeyBJZ3hDb21ib0FQSVNlcnZpY2UgfSBmcm9tICcuL2NvbWJvLmFwaSc7XG5pbXBvcnQgeyBJZ3hTZWxlY3Rpb25BUElTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9zZWxlY3Rpb24nO1xuXG4vKiogQGhpZGRlbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtY29tYm8taXRlbScsXG4gICAgdGVtcGxhdGVVcmw6ICdjb21iby1pdGVtLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBJZ3hDb21ib0l0ZW1Db21wb25lbnQgZXh0ZW5kcyBJZ3hEcm9wRG93bkl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBEb0NoZWNrIHtcblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGhlaWdodCBvZiBhIGxpc3QgaXRlbVxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnc3R5bGUuaGVpZ2h0LnB4JylcbiAgICBwdWJsaWMgaXRlbUhlaWdodCA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaXRlbUlEKCkge1xuICAgICAgICBjb25zdCB2YWx1ZUtleSA9IHRoaXMuY29tYm9BUEkudmFsdWVLZXk7XG4gICAgICAgIHJldHVybiB2YWx1ZUtleSAhPT0gbnVsbCA/IHRoaXMudmFsdWVbdmFsdWVLZXldIDogdGhpcy52YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBjb21ib0lEKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb21ib0FQSS5jb21ib0lEO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGRpc2FibGVUcmFuc2l0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tYm9BUEkuZGlzYWJsZVRyYW5zaXRpb25zO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgY29tYm9BUEk6IElneENvbWJvQVBJU2VydmljZSxcbiAgICAgICAgQEluamVjdChJR1hfRFJPUERPV05fQkFTRSkgcHJvdGVjdGVkIGRyb3BEb3duOiBJRHJvcERvd25CYXNlLFxuICAgICAgICBwcm90ZWN0ZWQgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgQEluamVjdChJZ3hTZWxlY3Rpb25BUElTZXJ2aWNlKSBwcm90ZWN0ZWQgc2VsZWN0aW9uOiBJZ3hTZWxlY3Rpb25BUElTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGRyb3BEb3duLCBlbGVtZW50UmVmLCBudWxsLCBzZWxlY3Rpb24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBnZXQgc2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbWJvQVBJLmlzX2l0ZW1fc2VsZWN0ZWQodGhpcy5pdGVtSUQpO1xuICAgIH1cblxuICAgIHNldCBzZWxlY3RlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodGhpcy5pc0hlYWRlcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIGlzVmlzaWJsZShkaXJlY3Rpb246IE5hdmlnYXRlKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgcGFyZW50RGl2ID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBpZiAoZGlyZWN0aW9uID09PSBOYXZpZ2F0ZS5Eb3duKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVjdC55ICsgcmVjdC5oZWlnaHQgPD0gcGFyZW50RGl2LnkgKyBwYXJlbnREaXYuaGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZWN0LnkgPj0gcGFyZW50RGl2Lnk7XG4gICAgfVxuXG4gICAgY2xpY2tlZChldmVudCkge1xuICAgICAgICB0aGlzLmNvbWJvQVBJLmRpc2FibGVUcmFuc2l0aW9ucyA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLmlzSGVhZGVyKSB7XG4gICAgICAgICAgICBjb25zdCBmb2N1c2VkSXRlbSA9IHRoaXMuZHJvcERvd24uaXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5mb2N1c2VkKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmRyb3BEb3duLmFsbG93SXRlbXNGb2N1cyAmJiBmb2N1c2VkSXRlbSkge1xuICAgICAgICAgICAgICAgIGZvY3VzZWRJdGVtLmVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kcm9wRG93bi5uYXZpZ2F0ZUl0ZW0odGhpcy5pbmRleCk7XG4gICAgICAgIHRoaXMuY29tYm9BUEkuc2V0X3NlbGVjdGVkX2l0ZW0odGhpcy5pdGVtSUQsIGV2ZW50KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICogVGhlIGV2ZW50IHRoYXQgaXMgcHJldmVudGVkIGlzIHRoZSBjbGljayBvbiB0aGUgY2hlY2tib3ggbGFiZWwgZWxlbWVudC5cbiAgICAgKiBUaGF0IGlzIHRoZSBvbmx5IHZpc2libGUgZWxlbWVudCB0aGF0IGEgdXNlciBjYW4gaW50ZXJhY3Qgd2l0aC5cbiAgICAgKiBUaGUgY2xpY2sgcHJvcGFnYXRlcyB0byB0aGUgaG9zdCBhbmQgdGhlIHByZXZlbnREZWZhdWx0IGlzIHRvIHN0b3AgaXQgZnJvbVxuICAgICAqIHN3aXRjaGluZyBmb2N1cyB0byB0aGUgaW5wdXQgaXQncyBiYXNlIG9uLlxuICAgICAqIFRoZSB0b2dnbGUgaGFwcGVucyBpbiBhbiBpbnRlcm5hbCBoYW5kbGVyIGluIHRoZSBkcm9wLWRvd24gb24gdGhlIG5leHQgdGFzayBxdWV1ZSBjeWNsZS5cbiAgICAgKi9cbiAgICBkaXNhYmxlQ2hlY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBuZ0RvQ2hlY2soKSB7XG4gICAgfVxufVxuIl19