@catull/igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
113 lines • 12.3 kB
JavaScript
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