UNPKG

ngx-pluto

Version:
181 lines 15 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, ViewEncapsulation, Input, Output, EventEmitter, ViewChild } from '@angular/core'; import { NpTooltipDirective } from '../tooltip/index'; import { Utils } from '../utils'; /** * kebab组件 * * <example-url>https://stackblitz.com/edit/angular-vc3q8h?embed=1&file=src/app/app.component.html</example-url> */ var NpKebab = /** @class */ (function () { function NpKebab() { /** * 布局格式,默认flex布局 */ this.display = 'flex'; this.position = 'bottomRight'; /** * 点击单个item接收符合KebabItem 格式的对象 * */ this.onItemClicked = new EventEmitter(); this.itemsInKebab = []; this.itemsOutKebab = []; this.isDropdownVisible = false; } /** * @return {?} */ NpKebab.prototype.ngOnInit = /** * @return {?} */ function () { this.buildKebabItems(); }; /** * @param {?} $event * @param {?} item * @param {?=} itemInKebab * @return {?} */ NpKebab.prototype.onKebabItemClicked = /** * @param {?} $event * @param {?} item * @param {?=} itemInKebab * @return {?} */ function ($event, item, itemInKebab) { if (itemInKebab === void 0) { itemInKebab = false; } this.onItemClicked.emit({ $event: $event, item: item }); if (itemInKebab && this.dropdownTooltip) { this.dropdownTooltip.hide(); } }; /** * @private * @return {?} */ NpKebab.prototype.buildKebabItems = /** * @private * @return {?} */ function () { if (!this.data || !this.data.items) { throw new Error('Invalid data'); } this.data.items.forEach((/** * @param {?} item * @return {?} */ function (item) { if (item.id === undefined || item.id === null) { item.id = Utils.ID(); } })); if (!this.data.limit) { this.itemsOutKebab = this.data.items || []; this.itemsInKebab = []; return; } if (this.data.limit > 0 && this.data.items.length > 0) { this.data.limit = (this.data.limit > this.data.items.length) ? this.data.items.length : this.data.limit; this.itemsOutKebab = this.data.items.slice(0, this.data.items.length - this.data.limit) || []; this.itemsInKebab = this.data.items.slice(this.itemsOutKebab.length, this.data.items.length) || []; return; } }; NpKebab.decorators = [ { type: Component, args: [{ selector: "np-kebab", template: "<div class=\"np-kebab-wrapper flex-wrap row-flex\" [style.display]=\"display\">\r\n <!-- items out of kebab -->\r\n <span *ngFor=\"let item of itemsOutKebab\" [ngClass]=\"{'interact-expand': item.type !== 'separator'}\"\r\n [style.color]=\"item.color\" (click)=\"onKebabItemClicked($event, item)\">\r\n <ng-container *ngIf=\"!item.type || item.type === 'text'\">{{ item.value }}</ng-container>\r\n <ng-container *ngIf=\"item.type === 'icon'\"><i [ngClass]=\"item.value\"></i></ng-container>\r\n <ng-container *ngIf=\"item.type === 'separator'\">|</ng-container>\r\n </span>\r\n\r\n <!-- items in kebab -->\r\n <ng-container *ngIf=\"data.limit\">\r\n <span npTooltip [template]=\"dropdownTemplate\" trigger=\"click\" [position]=\"position\" bgColor=\"transparent\"\r\n [showArrow]=\"false\" style=\"cursor: pointer;\"><i class=\"fas fa-ellipsis-v\" style=\"font-size: 14px;\"></i></span>\r\n <ng-template #dropdownTemplate>\r\n <div class=\"flex-wrap col-flex kebab-dropdown-container\">\r\n <span *ngFor=\"let item of itemsInKebab\" [ngClass]=\"{'h-line': item.type === 'separator'}\"\r\n (click)=\"onKebabItemClicked($event, item, true)\">\r\n <ng-container *ngIf=\"!item.type || item.type === 'text'\">{{ item.value }}</ng-container>\r\n <ng-container *ngIf=\"item.type === 'icon'\"><i [ngClass]=\"item.value\"></i></ng-container>\r\n </span>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n</div>\r\n", encapsulation: ViewEncapsulation.None, styles: [".cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:0}.kebab-dropdown-container{padding:5px 8px;border-radius:5px}.kebab-dropdown-container>span{padding:5px 8px;cursor:pointer}.kebab-dropdown-container .h-line{margin-bottom:4px;padding-top:0;height:0}.np-kebab-wrapper>span{padding:5px 8px}.np-kebab-wrapper .interact-expand{cursor:pointer;font-size:14px;font-weight:400;display:inline-block}.np-kebab-wrapper .interact-expand:hover{transform:scale(1.05);transition:transform ease-in-out}"] }] } ]; /** @nocollapse */ NpKebab.ctorParameters = function () { return []; }; NpKebab.propDecorators = { data: [{ type: Input }], display: [{ type: Input }], position: [{ type: Input }], onItemClicked: [{ type: Output }], dropdownTooltip: [{ type: ViewChild, args: [NpTooltipDirective,] }] }; return NpKebab; }()); export { NpKebab }; if (false) { /** * 传入的需要进行展示的数组 * @type {?} */ NpKebab.prototype.data; /** * 布局格式,默认flex布局 * @type {?} */ NpKebab.prototype.display; /** @type {?} */ NpKebab.prototype.position; /** * 点击单个item接收符合KebabItem 格式的对象 * * @type {?} */ NpKebab.prototype.onItemClicked; /** @type {?} */ NpKebab.prototype.dropdownTooltip; /** @type {?} */ NpKebab.prototype.itemsInKebab; /** @type {?} */ NpKebab.prototype.itemsOutKebab; /** @type {?} */ NpKebab.prototype.isDropdownVisible; } /** * @ignore * @record */ export function KebabComponentData() { } if (false) { /** @type {?} */ KebabComponentData.prototype.items; /** * If no limit passed in or 0, which means all items out of kebab; * if limit === items.length, which means all items in kebab; * otherwise, limit is the count for items in kebab. * * @type {?|undefined} */ KebabComponentData.prototype.limit; } /** * @record */ export function KebabItem() { } if (false) { /** * 页面展示文案,字符串类型,属于必传参数 * @type {?} */ KebabItem.prototype.value; /** * 可自己传入不同的id,支持字符串和数字,如果不传入,则默认生成随机id * @type {?|undefined} */ KebabItem.prototype.id; /** * 支持传入`icon`, `text`, `separator`, 默认`text` * @type {?|undefined} */ KebabItem.prototype.type; /** * 支持传入颜色,非必传,不传使用默认色 * @type {?|undefined} */ KebabItem.prototype.color; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2ViYWIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtcGx1dG8vIiwic291cmNlcyI6WyJsaWIva2ViYWIva2ViYWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxrQkFBa0IsRUFBcUIsTUFBTSxrQkFBa0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDOzs7Ozs7QUFRakM7SUF3QkU7Ozs7UUFaUyxZQUFPLEdBQVcsTUFBTSxDQUFDO1FBQ3pCLGFBQVEsR0FBc0IsYUFBYSxDQUFDOzs7OztRQUkzQyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFvQyxDQUFDO1FBRy9FLGlCQUFZLEdBQXFCLEVBQUUsQ0FBQztRQUNwQyxrQkFBYSxHQUFxQixFQUFFLENBQUM7UUFDckMsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO0lBRVYsQ0FBQzs7OztJQUVqQiwwQkFBUTs7O0lBQVI7UUFDRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQzs7Ozs7OztJQUVELG9DQUFrQjs7Ozs7O0lBQWxCLFVBQW1CLE1BQVcsRUFBRSxJQUFlLEVBQUUsV0FBNEI7UUFBNUIsNEJBQUEsRUFBQSxtQkFBNEI7UUFDM0UsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXhELElBQUksV0FBVyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDdkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUM3QjtJQUNILENBQUM7Ozs7O0lBRU8saUNBQWU7Ozs7SUFBdkI7UUFDRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDakM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPOzs7O1FBQUMsVUFBQSxJQUFJO1lBQzFCLElBQUksSUFBSSxDQUFDLEVBQUUsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLEVBQUUsS0FBSyxJQUFJLEVBQUU7Z0JBQzdDLElBQUksQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDO2FBQ3RCO1FBQ0gsQ0FBQyxFQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDcEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7WUFFdkIsT0FBTztTQUNSO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNyRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ3hHLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDOUYsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBRW5HLE9BQU87U0FDUjtJQUNILENBQUM7O2dCQS9ERixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLFVBQVU7b0JBQ3BCLCs5Q0FBeUI7b0JBRXpCLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJOztpQkFDdEM7Ozs7O3VCQUtFLEtBQUs7MEJBRUwsS0FBSzsyQkFDTCxLQUFLO2dDQUlMLE1BQU07a0NBRU4sU0FBUyxTQUFDLGtCQUFrQjs7SUE2Qy9CLGNBQUM7Q0FBQSxBQWhFRCxJQWdFQztTQXpEWSxPQUFPOzs7Ozs7SUFHbEIsdUJBQWtDOzs7OztJQUVsQywwQkFBa0M7O0lBQ2xDLDJCQUFxRDs7Ozs7O0lBSXJELGdDQUErRTs7SUFFL0Usa0NBQW1FOztJQUNuRSwrQkFBb0M7O0lBQ3BDLGdDQUFxQzs7SUFDckMsb0NBQTBCOzs7Ozs7QUErQzVCLHdDQU9DOzs7SUFOQyxtQ0FBd0I7Ozs7Ozs7O0lBS3hCLG1DQUFlOzs7OztBQUdqQiwrQkFTQzs7Ozs7O0lBUEMsMEJBQWM7Ozs7O0lBRWQsdUJBQXFCOzs7OztJQUVyQix5QkFBcUM7Ozs7O0lBRXJDLDBCQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOcFRvb2x0aXBEaXJlY3RpdmUsIE5wVG9vbHRpcFBvc2l0aW9uIH0gZnJvbSAnLi4vdG9vbHRpcC9pbmRleCc7XHJcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vdXRpbHMnO1xyXG5cclxuLyoqXHJcbiAqIGtlYmFi57uE5Lu2XHJcbiAqIFxyXG4gKiA8ZXhhbXBsZS11cmw+aHR0cHM6Ly9zdGFja2JsaXR6LmNvbS9lZGl0L2FuZ3VsYXItdmMzcThoP2VtYmVkPTEmZmlsZT1zcmMvYXBwL2FwcC5jb21wb25lbnQuaHRtbDwvZXhhbXBsZS11cmw+XHJcbiAqL1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IGBucC1rZWJhYmAsXHJcbiAgdGVtcGxhdGVVcmw6ICdrZWJhYi5odG1sJyxcclxuICBzdHlsZVVybHM6IFsna2ViYWIuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBOcEtlYmFiIGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgLyoq5Lyg5YWl55qE6ZyA6KaB6L+b6KGM5bGV56S655qE5pWw57uEICAqL1xyXG4gIEBJbnB1dCgpIGRhdGE6IEtlYmFiQ29tcG9uZW50RGF0YTtcclxuICAvKirluIPlsYDmoLzlvI/vvIzpu5jorqRmbGV45biD5bGAICovXHJcbiAgQElucHV0KCkgZGlzcGxheTogc3RyaW5nID0gJ2ZsZXgnO1xyXG4gIEBJbnB1dCgpIHBvc2l0aW9uOiBOcFRvb2x0aXBQb3NpdGlvbiA9ICdib3R0b21SaWdodCc7XHJcbiAgLyoqXHJcbiAgICog54K55Ye75Y2V5LiqaXRlbeaOpeaUtuespuWQiEtlYmFiSXRlbSDmoLzlvI/nmoTlr7nosaFcclxuICAgKiAgKi9cclxuICBAT3V0cHV0KCkgb25JdGVtQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyAkZXZlbnQ6IGFueSwgaXRlbTogS2ViYWJJdGVtIH0+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoTnBUb29sdGlwRGlyZWN0aXZlKSBkcm9wZG93blRvb2x0aXA6IE5wVG9vbHRpcERpcmVjdGl2ZTtcclxuICBpdGVtc0luS2ViYWI6IEFycmF5PEtlYmFiSXRlbT4gPSBbXTtcclxuICBpdGVtc091dEtlYmFiOiBBcnJheTxLZWJhYkl0ZW0+ID0gW107XHJcbiAgaXNEcm9wZG93blZpc2libGUgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmJ1aWxkS2ViYWJJdGVtcygpO1xyXG4gIH1cclxuXHJcbiAgb25LZWJhYkl0ZW1DbGlja2VkKCRldmVudDogYW55LCBpdGVtOiBLZWJhYkl0ZW0sIGl0ZW1JbktlYmFiOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIHRoaXMub25JdGVtQ2xpY2tlZC5lbWl0KHsgJGV2ZW50OiAkZXZlbnQsIGl0ZW06IGl0ZW0gfSk7XHJcblxyXG4gICAgaWYgKGl0ZW1JbktlYmFiICYmIHRoaXMuZHJvcGRvd25Ub29sdGlwKSB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25Ub29sdGlwLmhpZGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRLZWJhYkl0ZW1zKCkge1xyXG4gICAgaWYgKCF0aGlzLmRhdGEgfHwgIXRoaXMuZGF0YS5pdGVtcykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZGF0YScpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGF0YS5pdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICBpZiAoaXRlbS5pZCA9PT0gdW5kZWZpbmVkIHx8IGl0ZW0uaWQgPT09IG51bGwpIHtcclxuICAgICAgICBpdGVtLmlkID0gVXRpbHMuSUQoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKCF0aGlzLmRhdGEubGltaXQpIHtcclxuICAgICAgdGhpcy5pdGVtc091dEtlYmFiID0gdGhpcy5kYXRhLml0ZW1zIHx8IFtdO1xyXG4gICAgICB0aGlzLml0ZW1zSW5LZWJhYiA9IFtdO1xyXG5cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRhdGEubGltaXQgPiAwICYmIHRoaXMuZGF0YS5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZGF0YS5saW1pdCA9ICh0aGlzLmRhdGEubGltaXQgPiB0aGlzLmRhdGEuaXRlbXMubGVuZ3RoKSA/IHRoaXMuZGF0YS5pdGVtcy5sZW5ndGggOiB0aGlzLmRhdGEubGltaXQ7XHJcbiAgICAgIHRoaXMuaXRlbXNPdXRLZWJhYiA9IHRoaXMuZGF0YS5pdGVtcy5zbGljZSgwLCB0aGlzLmRhdGEuaXRlbXMubGVuZ3RoIC0gdGhpcy5kYXRhLmxpbWl0KSB8fCBbXTtcclxuICAgICAgdGhpcy5pdGVtc0luS2ViYWIgPSB0aGlzLmRhdGEuaXRlbXMuc2xpY2UodGhpcy5pdGVtc091dEtlYmFiLmxlbmd0aCwgdGhpcy5kYXRhLml0ZW1zLmxlbmd0aCkgfHwgW107XHJcblxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogQGlnbm9yZVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBLZWJhYkNvbXBvbmVudERhdGEge1xyXG4gIGl0ZW1zOiBBcnJheTxLZWJhYkl0ZW0+O1xyXG4gIC8qKklmIG5vIGxpbWl0IHBhc3NlZCBpbiBvciAwLCB3aGljaCBtZWFucyBhbGwgaXRlbXMgb3V0IG9mIGtlYmFiOyBcclxuICAgKiBpZiBsaW1pdCA9PT0gaXRlbXMubGVuZ3RoLCB3aGljaCBtZWFucyBhbGwgaXRlbXMgaW4ga2ViYWI7XHJcbiAgICogb3RoZXJ3aXNlLCBsaW1pdCBpcyB0aGUgY291bnQgZm9yIGl0ZW1zIGluIGtlYmFiLlxyXG4gICAqICAqL1xyXG4gIGxpbWl0PzogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEtlYmFiSXRlbSB7XHJcbiAgLyoq6aG16Z2i5bGV56S65paH5qGI77yM5a2X56ym5Liy57G75Z6L77yM5bGe5LqO5b+F5Lyg5Y+C5pWwICovXHJcbiAgdmFsdWU6IHN0cmluZztcclxuICAvKirlj6/oh6rlt7HkvKDlhaXkuI3lkIznmoRpZO+8jOaUr+aMgeWtl+espuS4suWSjOaVsOWtl++8jOWmguaenOS4jeS8oOWFpe+8jOWImem7mOiupOeUn+aIkOmaj+acumlkICovXHJcbiAgaWQ/OiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgLyoq5pSv5oyB5Lyg5YWlYGljb25gLCBgdGV4dGAsIGBzZXBhcmF0b3JgLCDpu5jorqRgdGV4dGAqL1xyXG4gIHR5cGU/OiAndGV4dCcgfCAnaWNvbicgfCAnc2VwYXJhdG9yJztcclxuICAvKiog5pSv5oyB5Lyg5YWl6aKc6Imy77yM6Z2e5b+F5Lyg77yM5LiN5Lyg5L2/55So6buY6K6k6ImyICovXHJcbiAgY29sb3I/OiBzdHJpbmc7XHJcbn1cclxuXHJcblxyXG4iXX0=