UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

129 lines 18 kB
import { IconModule, InlineAlertType } from '@alauda/ui'; import { NgClass, NgComponentOutlet, NgForOf, NgIf, NgTemplateOutlet, } from '@angular/common'; import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, } from '@angular/core'; import { uniqBy } from 'lodash-es'; import { PageHeaderAppendDirective } from '../helper-directives'; import { MaintenanceComponent } from './maintenance.component'; import * as i0 from "@angular/core"; import * as i1 from "@alauda/ui"; function NoticeComponent_ng_container_1_ng_container_6_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainer(0); } } function NoticeComponent_ng_container_1_aui_icon_7_Template(rf, ctx) { if (rf & 1) { const _r1 = i0.ɵɵgetCurrentView(); i0.ɵɵelementStart(0, "aui-icon", 8); i0.ɵɵlistener("click", function NoticeComponent_ng_container_1_aui_icon_7_Template_aui_icon_click_0_listener() { i0.ɵɵrestoreView(_r1); const msg_r2 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.close(msg_r2.id)); }); i0.ɵɵelementEnd(); } } function NoticeComponent_ng_container_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainerStart(0); i0.ɵɵelementStart(1, "div", 2); i0.ɵɵelement(2, "aui-icon", 3); i0.ɵɵelementStart(3, "div", 4)(4, "span", 5); i0.ɵɵtext(5); i0.ɵɵelementEnd(); i0.ɵɵtemplate(6, NoticeComponent_ng_container_1_ng_container_6_Template, 1, 0, "ng-container", 6); i0.ɵɵelementEnd(); i0.ɵɵtemplate(7, NoticeComponent_ng_container_1_aui_icon_7_Template, 1, 0, "aui-icon", 7); i0.ɵɵelementEnd(); i0.ɵɵelementContainerEnd(); } if (rf & 2) { const msg_r2 = ctx.$implicit; const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵadvance(); i0.ɵɵproperty("ngClass", "acl-page__header-notice--" + msg_r2.type); i0.ɵɵadvance(); i0.ɵɵproperty("icon", ctx_r2.iconMap(msg_r2.type))("background", ctx_r2.iconMap(msg_r2.type).endsWith("_triangle_s") ? "triangle" : "circle"); i0.ɵɵadvance(3); i0.ɵɵtextInterpolate(msg_r2.content); i0.ɵɵadvance(); i0.ɵɵproperty("ngTemplateOutlet", msg_r2.suffix); i0.ɵɵadvance(); i0.ɵɵproperty("ngIf", msg_r2.closable); } } function NoticeComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainer(0); } } let id = 0; export class NoticeComponent { constructor(cdr) { this.cdr = cdr; this.messages = []; this.open = (message) => { const idStr = `${id++}`; this.messages = uniqBy([ { id: idStr, type: InlineAlertType.Warning, ...message, }, ...this.messages, ], 'id'); this.cdr.markForCheck(); return () => this.close(idStr); }; this.close = (id) => { const idx = id ? this.messages.findIndex(msg => msg.id === id) : Math.max(this.messages.length - 1, 0); if (idx > -1) { this.messages.splice(idx, 1); this.cdr.markForCheck(); } }; } iconMap(type) { switch (type) { case InlineAlertType.Success: { return 'check_circle_s'; } case InlineAlertType.Warning: { return 'exclamation_circle_s'; } case InlineAlertType.Danger: case InlineAlertType.Error: { return 'exclamation_triangle_s'; } default: { return 'info_circle_s'; } } } static { this.ɵfac = function NoticeComponent_Factory(t) { return new (t || NoticeComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); }; } static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: NoticeComponent, selectors: [["acl-page-notice"]], contentQueries: function NoticeComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) { i0.ɵɵcontentQuery(dirIndex, PageHeaderAppendDirective, 5); } if (rf & 2) { let _t; i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.pageHeaderAppend = _t.first); } }, standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 3, vars: 2, consts: [[4, "ngFor", "ngForOf"], [4, "ngComponentOutlet"], [1, "tw-w-full", "tw-p-[12px_16px]", "tw-leading-m", "tw-relative", "tw-flex", "tw-justify-center", 3, "ngClass"], ["margin", "right", 3, "icon", "background"], [1, "tw-pr-16", 2, "max-width", "calc(100% - 40px)"], [1, "tw-mr-6"], [4, "ngTemplateOutlet"], ["icon", "xmark", "class", "tw-absolute tw-top-[12px] tw-right-[16px] hover:!tw-text-primary !tw-text-n-2 tw-cursor-pointer", 3, "click", 4, "ngIf"], ["icon", "xmark", 1, "tw-absolute", "tw-top-[12px]", "tw-right-[16px]", "hover:!tw-text-primary", "!tw-text-n-2", "tw-cursor-pointer", 3, "click"]], template: function NoticeComponent_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelement(0, "acl-page-header-notice-maintenance"); i0.ɵɵtemplate(1, NoticeComponent_ng_container_1_Template, 8, 6, "ng-container", 0)(2, NoticeComponent_ng_container_2_Template, 1, 0, "ng-container", 1); } if (rf & 2) { i0.ɵɵadvance(); i0.ɵɵproperty("ngForOf", ctx.messages); i0.ɵɵadvance(); i0.ɵɵproperty("ngComponentOutlet", ctx.pageHeaderAppend); } }, dependencies: [NgComponentOutlet, NgIf, NgForOf, NgTemplateOutlet, IconModule, i1.IconComponent, NgClass, MaintenanceComponent], styles: [".acl-page__header-notice--primary[_ngcontent-%COMP%]{background-color:rgb(var(--aui-color-b-6))}.acl-page__header-notice--primary[_ngcontent-%COMP%] aui-icon[_ngcontent-%COMP%]{color:rgb(var(--aui-color-blue))}.acl-page__header-notice--success[_ngcontent-%COMP%]{background-color:rgb(var(--aui-color-g-6))}.acl-page__header-notice--success[_ngcontent-%COMP%] aui-icon[_ngcontent-%COMP%]{color:rgb(var(--aui-color-green))}.acl-page__header-notice--warning[_ngcontent-%COMP%]{background-color:rgb(var(--aui-color-y-6))}.acl-page__header-notice--warning[_ngcontent-%COMP%] aui-icon[_ngcontent-%COMP%]{color:rgb(var(--aui-color-yellow))}.acl-page__header-notice--danger[_ngcontent-%COMP%]{background-color:rgb(var(--aui-color-r-6))}.acl-page__header-notice--danger[_ngcontent-%COMP%] aui-icon[_ngcontent-%COMP%]{color:rgb(var(--aui-color-red))}.acl-page__header-notice--error[_ngcontent-%COMP%]{background-color:rgb(var(--aui-color-r-6))}.acl-page__header-notice--error[_ngcontent-%COMP%] aui-icon[_ngcontent-%COMP%]{color:rgb(var(--aui-color-red))}.acl-page__header-notice--info[_ngcontent-%COMP%]{background-color:rgb(var(--aui-color-b-6))}.acl-page__header-notice--info[_ngcontent-%COMP%] aui-icon[_ngcontent-%COMP%]{color:rgb(var(--aui-color-blue))}"], changeDetection: 0 }); } } (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NoticeComponent, [{ type: Component, args: [{ selector: 'acl-page-notice', imports: [ NgComponentOutlet, NgIf, NgForOf, NgTemplateOutlet, IconModule, NgClass, MaintenanceComponent, ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<acl-page-header-notice-maintenance></acl-page-header-notice-maintenance>\n<ng-container *ngFor=\"let msg of messages\">\n <div\n [ngClass]=\"'acl-page__header-notice--' + msg.type\"\n class=\"tw-w-full tw-p-[12px_16px] tw-leading-m tw-relative tw-flex tw-justify-center\"\n >\n <aui-icon\n [icon]=\"iconMap(msg.type)\"\n margin=\"right\"\n [background]=\"\n iconMap(msg.type).endsWith('_triangle_s') ? 'triangle' : 'circle'\n \"\n ></aui-icon>\n <div\n style=\"max-width: calc(100% - 40px)\"\n class=\"tw-pr-16\"\n >\n <span class=\"tw-mr-6\">{{ msg.content }}</span>\n <ng-container *ngTemplateOutlet=\"msg.suffix\"></ng-container>\n </div>\n <aui-icon\n *ngIf=\"msg.closable\"\n icon=\"xmark\"\n class=\"tw-absolute tw-top-[12px] tw-right-[16px] hover:!tw-text-primary !tw-text-n-2 tw-cursor-pointer\"\n (click)=\"close(msg.id)\"\n ></aui-icon>\n </div>\n</ng-container>\n<ng-container *ngComponentOutlet=\"pageHeaderAppend\"></ng-container>\n", styles: [".acl-page__header-notice--primary{background-color:rgb(var(--aui-color-b-6))}.acl-page__header-notice--primary aui-icon{color:rgb(var(--aui-color-blue))}.acl-page__header-notice--success{background-color:rgb(var(--aui-color-g-6))}.acl-page__header-notice--success aui-icon{color:rgb(var(--aui-color-green))}.acl-page__header-notice--warning{background-color:rgb(var(--aui-color-y-6))}.acl-page__header-notice--warning aui-icon{color:rgb(var(--aui-color-yellow))}.acl-page__header-notice--danger{background-color:rgb(var(--aui-color-r-6))}.acl-page__header-notice--danger aui-icon{color:rgb(var(--aui-color-red))}.acl-page__header-notice--error{background-color:rgb(var(--aui-color-r-6))}.acl-page__header-notice--error aui-icon{color:rgb(var(--aui-color-red))}.acl-page__header-notice--info{background-color:rgb(var(--aui-color-b-6))}.acl-page__header-notice--info aui-icon{color:rgb(var(--aui-color-blue))}\n"] }] }], () => [{ type: i0.ChangeDetectorRef }], { pageHeaderAppend: [{ type: ContentChild, args: [PageHeaderAppendDirective] }] }); })(); (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NoticeComponent, { className: "NoticeComponent" }); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9wYWdlLXNjYWZmb2xkL3BhZ2Uvbm90aWNlcy9ub3RpY2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL3BhZ2Utc2NhZmZvbGQvcGFnZS9ub3RpY2VzL25vdGljZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV6RCxPQUFPLEVBQ0wsT0FBTyxFQUNQLGlCQUFpQixFQUNqQixPQUFPLEVBQ1AsSUFBSSxFQUNKLGdCQUFnQixHQUNqQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEdBRWIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVuQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVqRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7OztJQ0Z6RCx3QkFBNEQ7Ozs7SUFFOUQsbUNBS0M7SUFEQyw4T0FBUyx1QkFBYSxLQUFDO0lBQ3hCLGlCQUFXOzs7SUF4QmhCLDZCQUEyQztJQUN6Qyw4QkFHQztJQUNDLDhCQU1ZO0lBS1YsQUFKRiw4QkFHQyxjQUN1QjtJQUFBLFlBQWlCO0lBQUEsaUJBQU87SUFDOUMsaUdBQTZDO0lBQy9DLGlCQUFNO0lBQ04seUZBS0M7SUFDSCxpQkFBTTs7Ozs7SUF2QkosY0FBa0Q7SUFBbEQsbUVBQWtEO0lBSWhELGNBQTBCO0lBRTFCLEFBRkEsa0RBQTBCLDJGQUl6QjtJQU1xQixlQUFpQjtJQUFqQixvQ0FBaUI7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QWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJY29uTW9kdWxlLCBJbmxpbmVBbGVydFR5cGUgfSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7IENvbXBvbmVudFR5cGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gIE5nQ2xhc3MsXG4gIE5nQ29tcG9uZW50T3V0bGV0LFxuICBOZ0Zvck9mLFxuICBOZ0lmLFxuICBOZ1RlbXBsYXRlT3V0bGV0LFxufSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdW5pcUJ5IH0gZnJvbSAnbG9kYXNoLWVzJztcblxuaW1wb3J0IHsgUGFnZUhlYWRlckFwcGVuZERpcmVjdGl2ZSB9IGZyb20gJy4uL2hlbHBlci1kaXJlY3RpdmVzJztcblxuaW1wb3J0IHsgTWFpbnRlbmFuY2VDb21wb25lbnQgfSBmcm9tICcuL21haW50ZW5hbmNlLmNvbXBvbmVudCc7XG5cbmxldCBpZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjbC1wYWdlLW5vdGljZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9ub3RpY2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ub3RpY2UuY29tcG9uZW50LnNjc3MnXSxcbiAgaW1wb3J0czogW1xuICAgIE5nQ29tcG9uZW50T3V0bGV0LFxuICAgIE5nSWYsXG4gICAgTmdGb3JPZixcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIEljb25Nb2R1bGUsXG4gICAgTmdDbGFzcyxcbiAgICBNYWludGVuYW5jZUNvbXBvbmVudCxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5vdGljZUNvbXBvbmVudCB7XG4gIEBDb250ZW50Q2hpbGQoUGFnZUhlYWRlckFwcGVuZERpcmVjdGl2ZSlcbiAgcGFnZUhlYWRlckFwcGVuZDogQ29tcG9uZW50VHlwZTxhbnk+O1xuXG4gIG1lc3NhZ2VzOiBNZXNzYWdlW10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgb3BlbiA9IChtZXNzYWdlOiBNZXNzYWdlKSA9PiB7XG4gICAgY29uc3QgaWRTdHIgPSBgJHtpZCsrfWA7XG4gICAgdGhpcy5tZXNzYWdlcyA9IHVuaXFCeShcbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiBpZFN0cixcbiAgICAgICAgICB0eXBlOiBJbmxpbmVBbGVydFR5cGUuV2FybmluZyxcbiAgICAgICAgICAuLi5tZXNzYWdlLFxuICAgICAgICB9LFxuICAgICAgICAuLi50aGlzLm1lc3NhZ2VzLFxuICAgICAgXSxcbiAgICAgICdpZCcsXG4gICAgKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICByZXR1cm4gKCkgPT4gdGhpcy5jbG9zZShpZFN0cik7XG4gIH07XG5cbiAgY2xvc2UgPSAoaWQ/OiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBpZHggPSBpZFxuICAgICAgPyB0aGlzLm1lc3NhZ2VzLmZpbmRJbmRleChtc2cgPT4gbXNnLmlkID09PSBpZClcbiAgICAgIDogTWF0aC5tYXgodGhpcy5tZXNzYWdlcy5sZW5ndGggLSAxLCAwKTtcbiAgICBpZiAoaWR4ID4gLTEpIHtcbiAgICAgIHRoaXMubWVzc2FnZXMuc3BsaWNlKGlkeCwgMSk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH07XG5cbiAgaWNvbk1hcCh0eXBlOiBJbmxpbmVBbGVydFR5cGUpIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgSW5saW5lQWxlcnRUeXBlLlN1Y2Nlc3M6IHtcbiAgICAgICAgcmV0dXJuICdjaGVja19jaXJjbGVfcyc7XG4gICAgICB9XG4gICAgICBjYXNlIElubGluZUFsZXJ0VHlwZS5XYXJuaW5nOiB7XG4gICAgICAgIHJldHVybiAnZXhjbGFtYXRpb25fY2lyY2xlX3MnO1xuICAgICAgfVxuICAgICAgY2FzZSBJbmxpbmVBbGVydFR5cGUuRGFuZ2VyOlxuICAgICAgY2FzZSBJbmxpbmVBbGVydFR5cGUuRXJyb3I6IHtcbiAgICAgICAgcmV0dXJuICdleGNsYW1hdGlvbl90cmlhbmdsZV9zJztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcmV0dXJuICdpbmZvX2NpcmNsZV9zJztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlIHtcbiAgY29udGVudDogc3RyaW5nO1xuICBpZD86IHN0cmluZztcbiAgc3VmZml4PzogVGVtcGxhdGVSZWY8YW55PjtcbiAgdHlwZT86IElubGluZUFsZXJ0VHlwZTsgLy8g6buY6K6kIFdhcm5pbmdcbiAgY2xvc2FibGU/OiBib29sZWFuO1xufVxuIiwiPGFjbC1wYWdlLWhlYWRlci1ub3RpY2UtbWFpbnRlbmFuY2U+PC9hY2wtcGFnZS1oZWFkZXItbm90aWNlLW1haW50ZW5hbmNlPlxuPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbXNnIG9mIG1lc3NhZ2VzXCI+XG4gIDxkaXZcbiAgICBbbmdDbGFzc109XCInYWNsLXBhZ2VfX2hlYWRlci1ub3RpY2UtLScgKyBtc2cudHlwZVwiXG4gICAgY2xhc3M9XCJ0dy13LWZ1bGwgdHctcC1bMTJweF8xNnB4XSB0dy1sZWFkaW5nLW0gdHctcmVsYXRpdmUgdHctZmxleCB0dy1qdXN0aWZ5LWNlbnRlclwiXG4gID5cbiAgICA8YXVpLWljb25cbiAgICAgIFtpY29uXT1cImljb25NYXAobXNnLnR5cGUpXCJcbiAgICAgIG1hcmdpbj1cInJpZ2h0XCJcbiAgICAgIFtiYWNrZ3JvdW5kXT1cIlxuICAgICAgICBpY29uTWFwKG1zZy50eXBlKS5lbmRzV2l0aCgnX3RyaWFuZ2xlX3MnKSA/ICd0cmlhbmdsZScgOiAnY2lyY2xlJ1xuICAgICAgXCJcbiAgICA+PC9hdWktaWNvbj5cbiAgICA8ZGl2XG4gICAgICBzdHlsZT1cIm1heC13aWR0aDogY2FsYygxMDAlIC0gNDBweClcIlxuICAgICAgY2xhc3M9XCJ0dy1wci0xNlwiXG4gICAgPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ0dy1tci02XCI+e3sgbXNnLmNvbnRlbnQgfX08L3NwYW4+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibXNnLnN1ZmZpeFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxhdWktaWNvblxuICAgICAgKm5nSWY9XCJtc2cuY2xvc2FibGVcIlxuICAgICAgaWNvbj1cInhtYXJrXCJcbiAgICAgIGNsYXNzPVwidHctYWJzb2x1dGUgdHctdG9wLVsxMnB4XSB0dy1yaWdodC1bMTZweF0gaG92ZXI6IXR3LXRleHQtcHJpbWFyeSAhdHctdGV4dC1uLTIgdHctY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgKGNsaWNrKT1cImNsb3NlKG1zZy5pZClcIlxuICAgID48L2F1aS1pY29uPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuPG5nLWNvbnRhaW5lciAqbmdDb21wb25lbnRPdXRsZXQ9XCJwYWdlSGVhZGVyQXBwZW5kXCI+PC9uZy1jb250YWluZXI+XG4iXX0=