@stratio/egeo
Version:
189 lines • 17 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: lib/st-two-list-selection/list-item/list-item.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
/*
* © 2017 Stratio Big Data Inc., Sucursal en España.
*
* This software is licensed under the Apache License, Version 2.0.
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the terms of the License for more details.
*
* SPDX-License-Identifier: Apache-2.0.
*/
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
import { StEgeo, StRequired } from '../../decorators/require-decorators';
import { StDropDownVisualMode } from '../../st-dropdown-menu/st-dropdown-menu.interface';
import { StPopPlacement } from '../../st-pop/st-pop.model';
let ListItemComponent = class ListItemComponent {
constructor() {
this.editable = false;
this.mode = 'normal';
this.disabled = false;
this.selectItem = new EventEmitter();
this.selectItemNonEditable = new EventEmitter();
this.selectExtraLabel = new EventEmitter();
this.hoverRow = false;
this.menuVisualMode = StDropDownVisualMode.MENU_LIST;
this.placement = StPopPlacement.BOTTOM_END;
}
/**
* @return {?}
*/
get itemName() {
return this.item && this.item.name !== undefined && this.item.name !== null ? this.item.name : '';
}
/**
* @return {?}
*/
get itemQaTag() {
return this.qaTag + '-item-' + this.item.id;
}
/**
* @return {?}
*/
get checkQaTag() {
return this.qaTag + '-check-' + this.item.id;
}
/**
* @return {?}
*/
get selected() {
return this.item.selected ? true : false;
}
/**
* @return {?}
*/
get itemMode() {
/** @type {?} */
let style = this.getModeStyle();
style += this.selected ? ' sth-two-list-selection__selected_item' : '';
return style;
}
/**
* @return {?}
*/
getModeStyle() {
return this.mode === 'normal' ? 'item-normal sth-two-list-selection__item-normal' :
'item-compact sth-two-list-selection__item-compact';
}
/**
* @param {?} event
* @return {?}
*/
emitOnClickNonEditable(event) {
event.preventDefault();
event.stopImmediatePropagation();
this.selectItemNonEditable.emit(this.item);
}
/**
* @param {?} event
* @return {?}
*/
emitOnSelect(event) {
event.preventDefault();
event.stopImmediatePropagation();
if (!this.item.disabled) {
this.selectItem.emit(this.item);
}
}
/**
* @return {?}
*/
mouseHoverRow() {
this.hoverRow = true;
}
/**
* @return {?}
*/
mouseLeftRow() {
this.hoverRow = false;
}
/**
* @return {?}
*/
onCloseActionMenu() {
if (this.showActionList) {
this.showActionList = false;
}
}
/**
* @param {?} option
* @return {?}
*/
onChangeOption(option) {
this.emitOnClickNonEditable(new CustomEvent('selectItem', { bubbles: true, cancelable: true, detail: Object.assign(this.item, option) }));
}
/**
* @return {?}
*/
onEllipsisClick() {
this.showActionList = !this.showActionList;
}
};
ListItemComponent.decorators = [
{ type: Component, args: [{
selector: 'list-item',
template: "<!--\n\n \u00A9 2017 Stratio Big Data Inc., Sucursal en Espa\u00F1a.\n\n This software is licensed under the Apache License, Version 2.0.\n This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;\n without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n See the terms of the License for more details.\n\n SPDX-License-Identifier: Apache-2.0.\n\n-->\n\n<div class=\"item\" [ngClass]=\"itemMode\" [attr.id]=\"itemQaTag\" [title]=\"itemName\">\n <span *ngIf=\"!editable && !menuOptionList\" class=\"label\">{{itemName}}</span>\n <div class=\"item__row\" *ngIf=\"!editable && menuOptionList\" (mouseenter)=\"mouseHoverRow()\" (mouseleave)=\"mouseLeftRow()\">\n <span class=\"label\" [ngClass]=\"{'primary-link': hoverRow}\" (click)=\"emitOnClickNonEditable($event)\">{{itemName}}</span>\n <st-dropdown-menu *ngIf=\"hoverRow\" class=\"filter-selector\" [items]=\"menuOptionList\" attr.id=\"actionListId\" [placement]=\"placement\"\n [visualMode]=\"menuVisualMode\" [active]=\"showActionList\" (click)=\"onEllipsisClick()\"\n (change)=\"onChangeOption($event)\" (clickOutside)=\"onCloseActionMenu()\" [openToLeft]=\"true\">\n <button class=\"button\" id=\"actions-service\">\n <i class=\"icon-ellipsis\"></i>\n </button>\n </st-dropdown-menu>\n </div>\n <st-checkbox [disabled]=\"disabled\" *ngIf=\"editable\" [qaTag]=\"checkQaTag\" [checked]=\"selected\" (click)=\"emitOnSelect($event)\">\n <span class=\"label\">{{itemName}}</span>\n </st-checkbox>\n <span class=\"extraLabel\" *ngIf=\"item.extraLabel\" [innerHTML]=\"item.extraLabel\"\n (click)=\"selectExtraLabel.emit({element: item, event: $event})\"></span>\n</div>\n",
changeDetection: ChangeDetectionStrategy.OnPush,
styles: ["@charset \"UTF-8\";.item{display:inline-block;min-width:100%;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-right:10px}.item__row{display:flex;flex-direction:row-reverse}.item__row .filter-selector{position:absolute}.item__row .filter-selector .icon-ellipsis{font-size:20px}.label{overflow:hidden;text-overflow:ellipsis;flex-grow:1;color:#0f1b27;font-size:.938rem;font-weight:400}.label.primary-link{color:#0776df;cursor:pointer}:host{display:block;padding-right:20px}.item-normal{height:25px;line-height:35px}.item-compact{height:27px;line-height:27px}"]
}] }
];
/** @nocollapse */
ListItemComponent.ctorParameters = () => [];
ListItemComponent.propDecorators = {
item: [{ type: Input }],
qaTag: [{ type: Input }],
editable: [{ type: Input }],
mode: [{ type: Input }],
disabled: [{ type: Input }],
menuOptionList: [{ type: Input }],
selectItem: [{ type: Output }],
selectItemNonEditable: [{ type: Output }],
selectExtraLabel: [{ type: Output }]
};
tslib_1.__decorate([
StRequired(),
tslib_1.__metadata("design:type", Object)
], ListItemComponent.prototype, "item", void 0);
tslib_1.__decorate([
StRequired(),
tslib_1.__metadata("design:type", String)
], ListItemComponent.prototype, "qaTag", void 0);
ListItemComponent = tslib_1.__decorate([
StEgeo(),
tslib_1.__metadata("design:paramtypes", [])
], ListItemComponent);
export { ListItemComponent };
if (false) {
/** @type {?} */
ListItemComponent.prototype.item;
/** @type {?} */
ListItemComponent.prototype.qaTag;
/** @type {?} */
ListItemComponent.prototype.editable;
/** @type {?} */
ListItemComponent.prototype.mode;
/** @type {?} */
ListItemComponent.prototype.disabled;
/** @type {?} */
ListItemComponent.prototype.menuOptionList;
/** @type {?} */
ListItemComponent.prototype.selectItem;
/** @type {?} */
ListItemComponent.prototype.selectItemNonEditable;
/** @type {?} */
ListItemComponent.prototype.selectExtraLabel;
/** @type {?} */
ListItemComponent.prototype.hoverRow;
/** @type {?} */
ListItemComponent.prototype.menuVisualMode;
/** @type {?} */
ListItemComponent.prototype.placement;
/** @type {?} */
ListItemComponent.prototype.showActionList;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzdHJhdGlvL2VnZW8vIiwic291cmNlcyI6WyJsaWIvc3QtdHdvLWxpc3Qtc2VsZWN0aW9uL2xpc3QtaXRlbS9saXN0LWl0ZW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhHLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFHekUsT0FBTyxFQUFzQixvQkFBb0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzdHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztJQVM5QyxpQkFBaUIsU0FBakIsaUJBQWlCO0lBbUIzQjtRQWZTLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsU0FBSSxHQUF5QixRQUFRLENBQUM7UUFDdEMsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUd6QixlQUFVLEdBQTRDLElBQUksWUFBWSxFQUE2QixDQUFDO1FBQ3BHLDBCQUFxQixHQUE0QyxJQUFJLFlBQVksRUFBNkIsQ0FBQztRQUMvRyxxQkFBZ0IsR0FBa0QsSUFBSSxZQUFZLEVBQW1DLENBQUM7UUFHekgsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixtQkFBYyxHQUF5QixvQkFBb0IsQ0FBQyxTQUFTLENBQUM7UUFDdEUsY0FBUyxHQUFtQixjQUFjLENBQUMsVUFBVSxDQUFDO0lBRzdDLENBQUM7Ozs7SUFFakIsSUFBSSxRQUFRO1FBQ1QsT0FBTyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElB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LE1BQU0sRUFBRTs7R0FDSSxpQkFBaUIsQ0FtRjdCO1NBbkZZLGlCQUFpQjs7O0lBRTNCLGlDQUF1RDs7SUFDdkQsa0NBQXFDOztJQUNyQyxxQ0FBbUM7O0lBQ25DLGlDQUErQzs7SUFDL0MscUNBQW1DOztJQUNuQywyQ0FBK0M7O0lBRS9DLHVDQUE4Rzs7SUFDOUcsa0RBQXlIOztJQUN6SCw2Q0FBZ0k7O0lBR2hJLHFDQUFpQzs7SUFDakMsMkNBQTZFOztJQUM3RSxzQ0FBNkQ7O0lBQzdELDJDQUErQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiDCqSAyMDE3IFN0cmF0aW8gQmlnIERhdGEgSW5jLiwgU3VjdXJzYWwgZW4gRXNwYcOxYS5cbiAqXG4gKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZO1xuICogd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS5cbiAqIFNlZSB0aGUgdGVybXMgb2YgdGhlIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMC5cbiAqL1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN0RWdlbywgU3RSZXF1aXJlZCB9IGZyb20gJy4uLy4uL2RlY29yYXRvcnMvcmVxdWlyZS1kZWNvcmF0b3JzJztcbmltcG9ydCB7IFN0VHdvTGlzdFNlbGVjdGlvbkVsZW1lbnQsIFN0VHdvTGlzdFNlbGVjdEV4dHJhTGFiZWxBY3Rpb24gfSBmcm9tICcuLi9zdC10d28tbGlzdC1zZWxlY3Rpb24ubW9kZWwnO1xuXG5pbXBvcnQgeyBTdERyb3BEb3duTWVudUl0ZW0sIFN0RHJvcERvd25WaXN1YWxNb2RlIH0gZnJvbSAnLi4vLi4vc3QtZHJvcGRvd24tbWVudS9zdC1kcm9wZG93bi1tZW51LmludGVyZmFjZSc7XG5pbXBvcnQgeyBTdFBvcFBsYWNlbWVudCB9IGZyb20gJy4uLy4uL3N0LXBvcC9zdC1wb3AubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgIHNlbGVjdG9yOiAnbGlzdC1pdGVtJyxcbiAgIHRlbXBsYXRlVXJsOiAnLi9saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICAgc3R5bGVVcmxzOiBbJy4vbGlzdC1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbkBTdEVnZW8oKVxuZXhwb3J0IGNsYXNzIExpc3RJdGVtQ29tcG9uZW50IHtcblxuICAgQElucHV0KCkgQFN0UmVxdWlyZWQoKSBpdGVtOiBTdFR3b0xpc3RTZWxlY3Rpb25FbGVtZW50O1xuICAgQElucHV0KCkgQFN0UmVxdWlyZWQoKSBxYVRhZzogc3RyaW5nO1xuICAgQElucHV0KCkgZWRpdGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgIEBJbnB1dCgpIG1vZGU6ICdjb21wYWN0JyB8ICdub3JtYWwnID0gJ25vcm1hbCc7XG4gICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgQElucHV0KCkgbWVudU9wdGlvbkxpc3Q/OiBTdERyb3BEb3duTWVudUl0ZW1bXTtcblxuICAgQE91dHB1dCgpIHNlbGVjdEl0ZW06IEV2ZW50RW1pdHRlcjxTdFR3b0xpc3RTZWxlY3Rpb25FbGVtZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8U3RUd29MaXN0U2VsZWN0aW9uRWxlbWVudD4oKTtcbiAgIEBPdXRwdXQoKSBzZWxlY3RJdGVtTm9uRWRpdGFibGU6IEV2ZW50RW1pdHRlcjxTdFR3b0xpc3RTZWxlY3Rpb25FbGVtZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8U3RUd29MaXN0U2VsZWN0aW9uRWxlbWVudD4oKTtcbiAgIEBPdXRwdXQoKSBzZWxlY3RFeHRyYUxhYmVsOiBFdmVudEVtaXR0ZXI8U3RUd29MaXN0U2VsZWN0RXh0cmFMYWJlbEFjdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyPFN0VHdvTGlzdFNlbGVjdEV4dHJhTGFiZWxBY3Rpb24+KCk7XG5cblxuICAgcHVibGljIGhvdmVyUm93OiBib29sZWFuID0gZmFsc2U7XG4gICBwdWJsaWMgbWVudVZpc3VhbE1vZGU6IFN0RHJvcERvd25WaXN1YWxNb2RlID0gU3REcm9wRG93blZpc3VhbE1vZGUuTUVOVV9MSVNUO1xuICAgcHVibGljIHBsYWNlbWVudDogU3RQb3BQbGFjZW1lbnQgPSBTdFBvcFBsYWNlbWVudC5CT1RUT01fRU5EO1xuICAgcHVibGljIHNob3dBY3Rpb25MaXN0OiBib29sZWFuO1xuXG4gICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gICBnZXQgaXRlbU5hbWUoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiB0aGlzLml0ZW0gJiYgdGhpcy5pdGVtLm5hbWUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLml0ZW0ubmFtZSAhPT0gbnVsbCA/IHRoaXMuaXRlbS5uYW1lIDogJyc7XG4gICB9XG5cbiAgIGdldCBpdGVtUWFUYWcoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiB0aGlzLnFhVGFnICsgJy1pdGVtLScgKyB0aGlzLml0ZW0uaWQ7XG4gICB9XG5cbiAgIGdldCBjaGVja1FhVGFnKCk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gdGhpcy5xYVRhZyArICctY2hlY2stJyArIHRoaXMuaXRlbS5pZDtcbiAgIH1cblxuICAgZ2V0IHNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMuaXRlbS5zZWxlY3RlZCA/IHRydWUgOiBmYWxzZTtcbiAgIH1cblxuICAgZ2V0IGl0ZW1Nb2RlKCk6IHN0cmluZyB7XG4gICAgICBsZXQgc3R5bGU6IHN0cmluZyA9IHRoaXMuZ2V0TW9kZVN0eWxlKCk7XG4gICAgICBzdHlsZSArPSB0aGlzLnNlbGVjdGVkID8gJyBzdGgtdHdvLWxpc3Qtc2VsZWN0aW9uX19zZWxlY3RlZF9pdGVtJyA6ICcnO1xuICAgICAgcmV0dXJuIHN0eWxlO1xuICAgfVxuXG4gICBnZXRNb2RlU3R5bGUoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICdub3JtYWwnID8gJ2l0ZW0tbm9ybWFsIHN0aC10d28tbGlzdC1zZWxlY3Rpb25fX2l0ZW0tbm9ybWFsJyA6XG4gICAgICAgICAnaXRlbS1jb21wYWN0IHN0aC10d28tbGlzdC1zZWxlY3Rpb25fX2l0ZW0tY29tcGFjdCc7XG4gICB9XG5cbiAgIGVtaXRPbkNsaWNrTm9uRWRpdGFibGUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICB0aGlzLnNlbGVjdEl0ZW1Ob25FZGl0YWJsZS5lbWl0KHRoaXMuaXRlbSk7XG4gICB9XG5cbiAgIGVtaXRPblNlbGVjdChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgIGlmICghdGhpcy5pdGVtLmRpc2FibGVkKSB7XG4gICAgICAgICB0aGlzLnNlbGVjdEl0ZW0uZW1pdCh0aGlzLml0ZW0pO1xuICAgICAgfVxuICAgfVxuXG4gICBtb3VzZUhvdmVyUm93KCk6IHZvaWQge1xuICAgICAgdGhpcy5ob3ZlclJvdyA9IHRydWU7XG4gICB9XG5cbiAgIG1vdXNlTGVmdFJvdygpOiB2b2lkIHtcbiAgICAgIHRoaXMuaG92ZXJSb3cgPSBmYWxzZTtcbiAgIH1cblxuICAgb25DbG9zZUFjdGlvbk1lbnUoKTogdm9pZCB7XG4gICAgICBpZiAodGhpcy5zaG93QWN0aW9uTGlzdCkge1xuICAgICAgICAgdGhpcy5zaG93QWN0aW9uTGlzdCA9IGZhbHNlO1xuICAgICAgfVxuICAgfVxuXG4gICBvbkNoYW5nZU9wdGlvbihvcHRpb246IFN0RHJvcERvd25NZW51SXRlbSk6IHZvaWQge1xuICAgICAgdGhpcy5lbWl0T25DbGlja05vbkVkaXRhYmxlKG5ldyBDdXN0b21FdmVudCgnc2VsZWN0SXRlbScsIHsgYnViYmxlczogdHJ1ZSwgY2FuY2VsYWJsZTogdHJ1ZSwgZGV0YWlsOiBPYmplY3QuYXNzaWduKHRoaXMuaXRlbSwgb3B0aW9uKX0pKTtcbiAgIH1cblxuICAgb25FbGxpcHNpc0NsaWNrKCk6IHZvaWQge1xuICAgICAgdGhpcy5zaG93QWN0aW9uTGlzdCA9ICF0aGlzLnNob3dBY3Rpb25MaXN0O1xuICAgfVxufVxuIl19