@delon/abc
Version:
Common business components of ng-alain.
75 lines • 13.2 kB
JavaScript
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation, inject } from '@angular/core';
import { DelonLocaleService } from '@delon/theme';
import { NzMenuDirective, NzMenuItemComponent } from 'ng-zorro-antd/menu';
import * as i0 from "@angular/core";
export class ReuseTabContextMenuComponent {
constructor() {
this.i18nSrv = inject(DelonLocaleService);
this.close = new EventEmitter();
}
set i18n(value) {
this._i18n = {
...this.i18nSrv.getData('reuseTab'),
...value
};
}
get i18n() {
return this._i18n;
}
get includeNonCloseable() {
return this.event.ctrlKey;
}
notify(type) {
this.close.next({
type,
item: this.item,
includeNonCloseable: this.includeNonCloseable
});
}
ngOnInit() {
if (this.includeNonCloseable)
this.item.closable = true;
}
click(e, type, custom) {
e.preventDefault();
e.stopPropagation();
if (type === 'close' && !this.item.closable)
return;
if (type === 'closeRight' && this.item.last)
return;
if (custom) {
if (this.isDisabled(custom))
return;
custom.fn(this.item, custom);
}
this.notify(type);
}
isDisabled(custom) {
return custom.disabled ? custom.disabled(this.item) : false;
}
closeMenu(event) {
if (event.type === 'click' && event.button === 2)
return;
this.notify(null);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: ReuseTabContextMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.5", type: ReuseTabContextMenuComponent, isStandalone: true, selector: "reuse-tab-context-menu", inputs: { i18n: "i18n", item: "item", event: "event", customContextMenu: "customContextMenu" }, outputs: { close: "close" }, host: { listeners: { "document:click": "closeMenu($event)", "document:contextmenu": "closeMenu($event)" } }, ngImport: i0, template: "<ul nz-menu>\n @if (item.active) {\n <li nz-menu-item (click)=\"click($event, 'refresh')\" data-type=\"refresh\" [innerHTML]=\"i18n.refresh\"></li>\n }\n <li\n nz-menu-item\n (click)=\"click($event, 'close')\"\n data-type=\"close\"\n [nzDisabled]=\"!item.closable\"\n [innerHTML]=\"i18n.close\"\n ></li>\n <li nz-menu-item (click)=\"click($event, 'closeOther')\" data-type=\"closeOther\" [innerHTML]=\"i18n.closeOther\"></li>\n <li\n nz-menu-item\n (click)=\"click($event, 'closeRight')\"\n data-type=\"closeRight\"\n [nzDisabled]=\"item.last\"\n [innerHTML]=\"i18n.closeRight\"\n ></li>\n @if (customContextMenu!.length > 0) {\n <li nz-menu-divider></li>\n @for (i of customContextMenu; track $index) {\n <li\n nz-menu-item\n [attr.data-type]=\"i.id\"\n [nzDisabled]=\"isDisabled(i)\"\n (click)=\"click($event, 'custom', i)\"\n [innerHTML]=\"i.title\"\n ></li>\n }\n }\n</ul>\n", dependencies: [{ kind: "directive", type: NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "component", type: NzMenuItemComponent, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: ReuseTabContextMenuComponent, decorators: [{
type: Component,
args: [{ selector: 'reuse-tab-context-menu', host: {
'(document:click)': 'closeMenu($event)',
'(document:contextmenu)': 'closeMenu($event)'
}, preserveWhitespaces: false, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [NzMenuDirective, NzMenuItemComponent], template: "<ul nz-menu>\n @if (item.active) {\n <li nz-menu-item (click)=\"click($event, 'refresh')\" data-type=\"refresh\" [innerHTML]=\"i18n.refresh\"></li>\n }\n <li\n nz-menu-item\n (click)=\"click($event, 'close')\"\n data-type=\"close\"\n [nzDisabled]=\"!item.closable\"\n [innerHTML]=\"i18n.close\"\n ></li>\n <li nz-menu-item (click)=\"click($event, 'closeOther')\" data-type=\"closeOther\" [innerHTML]=\"i18n.closeOther\"></li>\n <li\n nz-menu-item\n (click)=\"click($event, 'closeRight')\"\n data-type=\"closeRight\"\n [nzDisabled]=\"item.last\"\n [innerHTML]=\"i18n.closeRight\"\n ></li>\n @if (customContextMenu!.length > 0) {\n <li nz-menu-divider></li>\n @for (i of customContextMenu; track $index) {\n <li\n nz-menu-item\n [attr.data-type]=\"i.id\"\n [nzDisabled]=\"isDisabled(i)\"\n (click)=\"click($event, 'custom', i)\"\n [innerHTML]=\"i.title\"\n ></li>\n }\n }\n</ul>\n" }]
}], propDecorators: { i18n: [{
type: Input
}], item: [{
type: Input
}], event: [{
type: Input
}], customContextMenu: [{
type: Input
}], close: [{
type: Output
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV1c2UtdGFiLWNvbnRleHQtbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hYmMvcmV1c2UtdGFiL3JldXNlLXRhYi1jb250ZXh0LW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYWJjL3JldXNlLXRhYi9yZXVzZS10YWItY29udGV4dC1tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLGlCQUFpQixFQUNqQixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2xELE9BQU8sRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUF1QjFFLE1BQU0sT0FBTyw0QkFBNEI7SUFiekM7UUFjbUIsWUFBTyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBZ0JuQyxVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQTBCLENBQUM7S0F1Q3ZFO0lBcERDLElBQ0ksSUFBSSxDQUFDLEtBQXVCO1FBQzlCLElBQUksQ0FBQyxLQUFLLEdBQUc7WUFDWCxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztZQUNuQyxHQUFHLEtBQUs7U0FDVCxDQUFDO0lBQ0osQ0FBQztJQUNELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBTUQsSUFBSSxtQkFBbUI7UUFDckIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUM1QixDQUFDO0lBRU8sTUFBTSxDQUFDLElBQWU7UUFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDZCxJQUFJO1lBQ0osSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLG1CQUFtQjtTQUM5QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLG1CQUFtQjtZQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztJQUMxRCxDQUFDO0lBRUQsS0FBSyxDQUFDLENBQWEsRUFBRSxJQUFlLEVBQUUsTUFBK0I7UUFDbkUsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ25CLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNwQixJQUFJLElBQUksS0FBSyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBQ3BELElBQUksSUFBSSxLQUFLLFlBQVksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPO1FBRXBELElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO2dCQUFFLE9BQU87WUFDcEMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxVQUFVLENBQUMsTUFBOEI7UUFDdkMsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzlELENBQUM7SUFFRCxTQUFTLENBQUMsS0FBaUI7UUFDekIsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPO1FBQ3pELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEIsQ0FBQzs4R0F2RFUsNEJBQTRCO2tHQUE1Qiw0QkFBNEIsNFRDbkN6QyxnOUJBZ0NBLDRDRENZLGVBQWUsd0xBQUUsbUJBQW1COzsyRkFFbkMsNEJBQTRCO2tCQWJ4QyxTQUFTOytCQUNFLHdCQUF3QixRQUU1Qjt3QkFDSixrQkFBa0IsRUFBRSxtQkFBbUI7d0JBQ3ZDLHdCQUF3QixFQUFFLG1CQUFtQjtxQkFDOUMsdUJBQ29CLEtBQUssbUJBQ1QsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxjQUN6QixJQUFJLFdBQ1AsQ0FBQyxlQUFlLEVBQUUsbUJBQW1CLENBQUM7OEJBTzNDLElBQUk7c0JBRFAsS0FBSztnQkFVRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDYSxLQUFLO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IERlbG9uTG9jYWxlU2VydmljZSB9IGZyb20gJ0BkZWxvbi90aGVtZSc7XG5pbXBvcnQgeyBOek1lbnVEaXJlY3RpdmUsIE56TWVudUl0ZW1Db21wb25lbnQgfSBmcm9tICduZy16b3Jyby1hbnRkL21lbnUnO1xuXG5pbXBvcnQge1xuICBDbG9zZVR5cGUsXG4gIFJldXNlQ29udGV4dENsb3NlRXZlbnQsXG4gIFJldXNlQ29udGV4dEkxOG4sXG4gIFJldXNlQ3VzdG9tQ29udGV4dE1lbnUsXG4gIFJldXNlSXRlbVxufSBmcm9tICcuL3JldXNlLXRhYi5pbnRlcmZhY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncmV1c2UtdGFiLWNvbnRleHQtbWVudScsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXVzZS10YWItY29udGV4dC1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgaG9zdDoge1xuICAgICcoZG9jdW1lbnQ6Y2xpY2spJzogJ2Nsb3NlTWVudSgkZXZlbnQpJyxcbiAgICAnKGRvY3VtZW50OmNvbnRleHRtZW51KSc6ICdjbG9zZU1lbnUoJGV2ZW50KSdcbiAgfSxcbiAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTnpNZW51RGlyZWN0aXZlLCBOek1lbnVJdGVtQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBSZXVzZVRhYkNvbnRleHRNZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBpMThuU3J2ID0gaW5qZWN0KERlbG9uTG9jYWxlU2VydmljZSk7XG5cbiAgcHJpdmF0ZSBfaTE4biE6IFJldXNlQ29udGV4dEkxOG47XG4gIEBJbnB1dCgpXG4gIHNldCBpMThuKHZhbHVlOiBSZXVzZUNvbnRleHRJMThuKSB7XG4gICAgdGhpcy5faTE4biA9IHtcbiAgICAgIC4uLnRoaXMuaTE4blNydi5nZXREYXRhKCdyZXVzZVRhYicpLFxuICAgICAgLi4udmFsdWVcbiAgICB9O1xuICB9XG4gIGdldCBpMThuKCk6IFJldXNlQ29udGV4dEkxOG4ge1xuICAgIHJldHVybiB0aGlzLl9pMThuO1xuICB9XG4gIEBJbnB1dCgpIGl0ZW0hOiBSZXVzZUl0ZW07XG4gIEBJbnB1dCgpIGV2ZW50ITogTW91c2VFdmVudDtcbiAgQElucHV0KCkgY3VzdG9tQ29udGV4dE1lbnUhOiBSZXVzZUN1c3RvbUNvbnRleHRNZW51W107XG4gIEBPdXRwdXQoKSByZWFkb25seSBjbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8UmV1c2VDb250ZXh0Q2xvc2VFdmVudD4oKTtcblxuICBnZXQgaW5jbHVkZU5vbkNsb3NlYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5ldmVudC5jdHJsS2V5O1xuICB9XG5cbiAgcHJpdmF0ZSBub3RpZnkodHlwZTogQ2xvc2VUeXBlKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZS5uZXh0KHtcbiAgICAgIHR5cGUsXG4gICAgICBpdGVtOiB0aGlzLml0ZW0sXG4gICAgICBpbmNsdWRlTm9uQ2xvc2VhYmxlOiB0aGlzLmluY2x1ZGVOb25DbG9zZWFibGVcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmluY2x1ZGVOb25DbG9zZWFibGUpIHRoaXMuaXRlbS5jbG9zYWJsZSA9IHRydWU7XG4gIH1cblxuICBjbGljayhlOiBNb3VzZUV2ZW50LCB0eXBlOiBDbG9zZVR5cGUsIGN1c3RvbT86IFJldXNlQ3VzdG9tQ29udGV4dE1lbnUpOiB2b2lkIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAodHlwZSA9PT0gJ2Nsb3NlJyAmJiAhdGhpcy5pdGVtLmNsb3NhYmxlKSByZXR1cm47XG4gICAgaWYgKHR5cGUgPT09ICdjbG9zZVJpZ2h0JyAmJiB0aGlzLml0ZW0ubGFzdCkgcmV0dXJuO1xuXG4gICAgaWYgKGN1c3RvbSkge1xuICAgICAgaWYgKHRoaXMuaXNEaXNhYmxlZChjdXN0b20pKSByZXR1cm47XG4gICAgICBjdXN0b20uZm4odGhpcy5pdGVtLCBjdXN0b20pO1xuICAgIH1cbiAgICB0aGlzLm5vdGlmeSh0eXBlKTtcbiAgfVxuXG4gIGlzRGlzYWJsZWQoY3VzdG9tOiBSZXVzZUN1c3RvbUNvbnRleHRNZW51KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGN1c3RvbS5kaXNhYmxlZCA/IGN1c3RvbS5kaXNhYmxlZCh0aGlzLml0ZW0pIDogZmFsc2U7XG4gIH1cblxuICBjbG9zZU1lbnUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NsaWNrJyAmJiBldmVudC5idXR0b24gPT09IDIpIHJldHVybjtcbiAgICB0aGlzLm5vdGlmeShudWxsKTtcbiAgfVxufVxuIiwiPHVsIG56LW1lbnU+XG4gIEBpZiAoaXRlbS5hY3RpdmUpIHtcbiAgICA8bGkgbnotbWVudS1pdGVtIChjbGljayk9XCJjbGljaygkZXZlbnQsICdyZWZyZXNoJylcIiBkYXRhLXR5cGU9XCJyZWZyZXNoXCIgW2lubmVySFRNTF09XCJpMThuLnJlZnJlc2hcIj48L2xpPlxuICB9XG4gIDxsaVxuICAgIG56LW1lbnUtaXRlbVxuICAgIChjbGljayk9XCJjbGljaygkZXZlbnQsICdjbG9zZScpXCJcbiAgICBkYXRhLXR5cGU9XCJjbG9zZVwiXG4gICAgW256RGlzYWJsZWRdPVwiIWl0ZW0uY2xvc2FibGVcIlxuICAgIFtpbm5lckhUTUxdPVwiaTE4bi5jbG9zZVwiXG4gID48L2xpPlxuICA8bGkgbnotbWVudS1pdGVtIChjbGljayk9XCJjbGljaygkZXZlbnQsICdjbG9zZU90aGVyJylcIiBkYXRhLXR5cGU9XCJjbG9zZU90aGVyXCIgW2lubmVySFRNTF09XCJpMThuLmNsb3NlT3RoZXJcIj48L2xpPlxuICA8bGlcbiAgICBuei1tZW51LWl0ZW1cbiAgICAoY2xpY2spPVwiY2xpY2soJGV2ZW50LCAnY2xvc2VSaWdodCcpXCJcbiAgICBkYXRhLXR5cGU9XCJjbG9zZVJpZ2h0XCJcbiAgICBbbnpEaXNhYmxlZF09XCJpdGVtLmxhc3RcIlxuICAgIFtpbm5lckhUTUxdPVwiaTE4bi5jbG9zZVJpZ2h0XCJcbiAgPjwvbGk+XG4gIEBpZiAoY3VzdG9tQ29udGV4dE1lbnUhLmxlbmd0aCA+IDApIHtcbiAgICA8bGkgbnotbWVudS1kaXZpZGVyPjwvbGk+XG4gICAgQGZvciAoaSBvZiBjdXN0b21Db250ZXh0TWVudTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICA8bGlcbiAgICAgICAgbnotbWVudS1pdGVtXG4gICAgICAgIFthdHRyLmRhdGEtdHlwZV09XCJpLmlkXCJcbiAgICAgICAgW256RGlzYWJsZWRdPVwiaXNEaXNhYmxlZChpKVwiXG4gICAgICAgIChjbGljayk9XCJjbGljaygkZXZlbnQsICdjdXN0b20nLCBpKVwiXG4gICAgICAgIFtpbm5lckhUTUxdPVwiaS50aXRsZVwiXG4gICAgICA+PC9saT5cbiAgICB9XG4gIH1cbjwvdWw+XG4iXX0=