@geoit/ui 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +25 -0
- package/README.md +46 -0
- package/ai/AGENTS.md +86 -0
- package/ai/README.md +44 -0
- package/ai/catalog.json +882 -0
- package/ai/components/geo-alert.md +56 -0
- package/ai/components/geo-back-button.md +54 -0
- package/ai/components/geo-breadcrumb.md +52 -0
- package/ai/components/geo-button.md +63 -0
- package/ai/components/geo-checkbox.md +54 -0
- package/ai/components/geo-column-picker.md +54 -0
- package/ai/components/geo-confirm-modal.md +70 -0
- package/ai/components/geo-date-picker.md +65 -0
- package/ai/components/geo-date-range-picker.md +64 -0
- package/ai/components/geo-file-picker.md +62 -0
- package/ai/components/geo-form-modal.md +88 -0
- package/ai/components/geo-icon.md +53 -0
- package/ai/components/geo-input.md +65 -0
- package/ai/components/geo-page-title.md +53 -0
- package/ai/components/geo-pagination.md +59 -0
- package/ai/components/geo-radio.md +67 -0
- package/ai/components/geo-row-actions.md +54 -0
- package/ai/components/geo-select.md +68 -0
- package/ai/components/geo-slider.md +56 -0
- package/ai/components/geo-status-tag.md +51 -0
- package/ai/components/geo-step-form-layout.md +81 -0
- package/ai/components/geo-stepper.md +63 -0
- package/ai/components/geo-table-filter.md +65 -0
- package/ai/components/geo-table-pagination.md +59 -0
- package/ai/components/geo-table-toolbar.md +64 -0
- package/ai/components/geo-table.md +98 -0
- package/ai/components/geo-tabs.md +62 -0
- package/ai/components/geo-textarea.md +59 -0
- package/ai/components/geo-toast.md +61 -0
- package/ai/components/geo-tree.md +58 -0
- package/ai/components/geo-typography.md +57 -0
- package/ai/components/geo-upload.md +78 -0
- package/ai/recipes.md +111 -0
- package/esm2022/geoit-ui.mjs +5 -0
- package/esm2022/lib/figma/geo-alert/geo-alert.component.mjs +58 -0
- package/esm2022/lib/figma/geo-alert/geo-alert.types.mjs +7 -0
- package/esm2022/lib/figma/geo-back-button/geo-back-button.component.mjs +48 -0
- package/esm2022/lib/figma/geo-breadcrumb/geo-breadcrumb.component.mjs +33 -0
- package/esm2022/lib/figma/geo-breadcrumb/geo-breadcrumb.types.mjs +2 -0
- package/esm2022/lib/figma/geo-button/geo-button.component.mjs +77 -0
- package/esm2022/lib/figma/geo-button/geo-button.types.mjs +2 -0
- package/esm2022/lib/figma/geo-checkbox/geo-checkbox.component.mjs +34 -0
- package/esm2022/lib/figma/geo-confirm-modal/geo-confirm-modal.component.mjs +76 -0
- package/esm2022/lib/figma/geo-confirm-modal/geo-confirm-modal.types.mjs +2 -0
- package/esm2022/lib/figma/geo-date-picker/geo-date-picker.component.mjs +119 -0
- package/esm2022/lib/figma/geo-date-picker/geo-date-picker.types.mjs +2 -0
- package/esm2022/lib/figma/geo-date-range-picker/geo-date-range-picker.component.mjs +116 -0
- package/esm2022/lib/figma/geo-date-range-picker/geo-date-range-picker.types.mjs +2 -0
- package/esm2022/lib/figma/geo-file-picker/geo-file-picker.component.mjs +145 -0
- package/esm2022/lib/figma/geo-file-picker/geo-file-picker.types.mjs +2 -0
- package/esm2022/lib/figma/geo-form-modal/geo-form-modal.component.mjs +153 -0
- package/esm2022/lib/figma/geo-icon/geo-icon.component.mjs +51 -0
- package/esm2022/lib/figma/geo-icon/geo-icon.types.mjs +8 -0
- package/esm2022/lib/figma/geo-input/geo-input.component.mjs +118 -0
- package/esm2022/lib/figma/geo-page-title/geo-page-title.component.mjs +51 -0
- package/esm2022/lib/figma/geo-pagination/geo-pagination.component.mjs +54 -0
- package/esm2022/lib/figma/geo-radio/geo-radio.component.mjs +95 -0
- package/esm2022/lib/figma/geo-radio/geo-radio.types.mjs +2 -0
- package/esm2022/lib/figma/geo-select/geo-select.component.mjs +113 -0
- package/esm2022/lib/figma/geo-select/geo-select.types.mjs +2 -0
- package/esm2022/lib/figma/geo-slider/geo-slider.component.mjs +43 -0
- package/esm2022/lib/figma/geo-status-tag/geo-status-tag.component.mjs +62 -0
- package/esm2022/lib/figma/geo-status-tag/geo-status-tag.types.mjs +30 -0
- package/esm2022/lib/figma/geo-step-form-layout/geo-step-form-layout.component.mjs +157 -0
- package/esm2022/lib/figma/geo-step-form-layout/geo-step-form-layout.types.mjs +2 -0
- package/esm2022/lib/figma/geo-stepper/geo-stepper.component.mjs +77 -0
- package/esm2022/lib/figma/geo-stepper/geo-stepper.types.mjs +2 -0
- package/esm2022/lib/figma/geo-table/geo-column-picker/geo-column-picker.component.mjs +65 -0
- package/esm2022/lib/figma/geo-table/geo-column-picker/geo-column-picker.storage.mjs +31 -0
- package/esm2022/lib/figma/geo-table/geo-column-picker/geo-column-picker.types.mjs +2 -0
- package/esm2022/lib/figma/geo-table/geo-row-actions/geo-row-actions.component.mjs +64 -0
- package/esm2022/lib/figma/geo-table/geo-row-actions/geo-row-actions.types.mjs +24 -0
- package/esm2022/lib/figma/geo-table/geo-table-filter/geo-table-filter.component.mjs +195 -0
- package/esm2022/lib/figma/geo-table/geo-table-pagination/geo-table-pagination.component.mjs +118 -0
- package/esm2022/lib/figma/geo-table/geo-table-toolbar/geo-table-toolbar.component.mjs +68 -0
- package/esm2022/lib/figma/geo-table/geo-table.component.mjs +381 -0
- package/esm2022/lib/figma/geo-table/geo-table.types.mjs +4 -0
- package/esm2022/lib/figma/geo-tabs/geo-tabs.component.mjs +94 -0
- package/esm2022/lib/figma/geo-tabs/geo-tabs.types.mjs +2 -0
- package/esm2022/lib/figma/geo-textarea/geo-textarea.component.mjs +85 -0
- package/esm2022/lib/figma/geo-toast/geo-toast.component.mjs +57 -0
- package/esm2022/lib/figma/geo-toast/geo-toast.service.mjs +116 -0
- package/esm2022/lib/figma/geo-toast/geo-toast.types.mjs +13 -0
- package/esm2022/lib/figma/geo-tree/geo-tree.component.mjs +52 -0
- package/esm2022/lib/figma/geo-tree/geo-tree.types.mjs +2 -0
- package/esm2022/lib/figma/geo-typography/geo-typography.component.mjs +112 -0
- package/esm2022/lib/figma/geo-typography/geo-typography.types.mjs +96 -0
- package/esm2022/lib/figma/geo-upload/geo-upload.component.mjs +218 -0
- package/esm2022/lib/figma/geo-upload/geo-upload.types.mjs +30 -0
- package/esm2022/lib/figma/index.mjs +56 -0
- package/esm2022/lib/ng-zorro/ng-zorro-antd.module.mjs +293 -0
- package/esm2022/lib/styles/tokens.mjs +144 -0
- package/esm2022/public-api.mjs +7 -0
- package/fesm2022/geoit-ui.mjs +3805 -0
- package/fesm2022/geoit-ui.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/figma/geo-alert/geo-alert.component.d.ts +17 -0
- package/lib/figma/geo-alert/geo-alert.types.d.ts +2 -0
- package/lib/figma/geo-back-button/geo-back-button.component.d.ts +18 -0
- package/lib/figma/geo-breadcrumb/geo-breadcrumb.component.d.ts +12 -0
- package/lib/figma/geo-breadcrumb/geo-breadcrumb.types.d.ts +10 -0
- package/lib/figma/geo-button/geo-button.component.d.ts +27 -0
- package/lib/figma/geo-button/geo-button.types.d.ts +4 -0
- package/lib/figma/geo-checkbox/geo-checkbox.component.d.ts +12 -0
- package/lib/figma/geo-confirm-modal/geo-confirm-modal.component.d.ts +24 -0
- package/lib/figma/geo-confirm-modal/geo-confirm-modal.types.d.ts +5 -0
- package/lib/figma/geo-date-picker/geo-date-picker.component.d.ts +35 -0
- package/lib/figma/geo-date-picker/geo-date-picker.types.d.ts +2 -0
- package/lib/figma/geo-date-range-picker/geo-date-range-picker.component.d.ts +34 -0
- package/lib/figma/geo-date-range-picker/geo-date-range-picker.types.d.ts +2 -0
- package/lib/figma/geo-file-picker/geo-file-picker.component.d.ts +39 -0
- package/lib/figma/geo-file-picker/geo-file-picker.types.d.ts +4 -0
- package/lib/figma/geo-form-modal/geo-form-modal.component.d.ts +57 -0
- package/lib/figma/geo-icon/geo-icon.component.d.ts +19 -0
- package/lib/figma/geo-icon/geo-icon.types.d.ts +3 -0
- package/lib/figma/geo-input/geo-input.component.d.ts +37 -0
- package/lib/figma/geo-page-title/geo-page-title.component.d.ts +22 -0
- package/lib/figma/geo-pagination/geo-pagination.component.d.ts +21 -0
- package/lib/figma/geo-radio/geo-radio.component.d.ts +31 -0
- package/lib/figma/geo-radio/geo-radio.types.d.ts +9 -0
- package/lib/figma/geo-select/geo-select.component.d.ts +33 -0
- package/lib/figma/geo-select/geo-select.types.d.ts +7 -0
- package/lib/figma/geo-slider/geo-slider.component.d.ts +17 -0
- package/lib/figma/geo-status-tag/geo-status-tag.component.d.ts +18 -0
- package/lib/figma/geo-status-tag/geo-status-tag.types.d.ts +13 -0
- package/lib/figma/geo-step-form-layout/geo-step-form-layout.component.d.ts +67 -0
- package/lib/figma/geo-step-form-layout/geo-step-form-layout.types.d.ts +9 -0
- package/lib/figma/geo-stepper/geo-stepper.component.d.ts +42 -0
- package/lib/figma/geo-stepper/geo-stepper.types.d.ts +9 -0
- package/lib/figma/geo-table/geo-column-picker/geo-column-picker.component.d.ts +20 -0
- package/lib/figma/geo-table/geo-column-picker/geo-column-picker.storage.d.ts +5 -0
- package/lib/figma/geo-table/geo-column-picker/geo-column-picker.types.d.ts +17 -0
- package/lib/figma/geo-table/geo-row-actions/geo-row-actions.component.d.ts +21 -0
- package/lib/figma/geo-table/geo-row-actions/geo-row-actions.types.d.ts +13 -0
- package/lib/figma/geo-table/geo-table-filter/geo-table-filter.component.d.ts +75 -0
- package/lib/figma/geo-table/geo-table-pagination/geo-table-pagination.component.d.ts +33 -0
- package/lib/figma/geo-table/geo-table-toolbar/geo-table-toolbar.component.d.ts +24 -0
- package/lib/figma/geo-table/geo-table.component.d.ts +113 -0
- package/lib/figma/geo-table/geo-table.types.d.ts +47 -0
- package/lib/figma/geo-tabs/geo-tabs.component.d.ts +31 -0
- package/lib/figma/geo-tabs/geo-tabs.types.d.ts +7 -0
- package/lib/figma/geo-textarea/geo-textarea.component.d.ts +27 -0
- package/lib/figma/geo-toast/geo-toast.component.d.ts +23 -0
- package/lib/figma/geo-toast/geo-toast.service.d.ts +33 -0
- package/lib/figma/geo-toast/geo-toast.types.d.ts +45 -0
- package/lib/figma/geo-tree/geo-tree.component.d.ts +23 -0
- package/lib/figma/geo-tree/geo-tree.types.d.ts +12 -0
- package/lib/figma/geo-typography/geo-typography.component.d.ts +35 -0
- package/lib/figma/geo-typography/geo-typography.types.d.ts +12 -0
- package/lib/figma/geo-upload/geo-upload.component.d.ts +59 -0
- package/lib/figma/geo-upload/geo-upload.types.d.ts +13 -0
- package/lib/figma/index.d.ts +55 -0
- package/lib/ng-zorro/ng-zorro-antd.module.d.ts +76 -0
- package/lib/styles/tokens.d.ts +184 -0
- package/package.json +38 -0
- package/public-api.d.ts +3 -0
- package/src/lib/styles/design-tokens.scss +143 -0
- package/src/lib/styles/geo-toast-notification.scss +129 -0
- package/src/lib/styles/scrollbar.scss +38 -0
- package/src/lib/styles/theme.scss +153 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation, } from '@angular/core';
|
|
3
|
+
import { NzIconModule } from 'ng-zorro-antd/icon';
|
|
4
|
+
import { GeoButtonComponent } from '../geo-button/geo-button.component';
|
|
5
|
+
import { GeoStepperComponent } from '../geo-stepper/geo-stepper.component';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "ng-zorro-antd/icon";
|
|
8
|
+
/**
|
|
9
|
+
* Layout form page multi-step: cột trái stepper + cột phải form card.
|
|
10
|
+
*
|
|
11
|
+
* ```html
|
|
12
|
+
* <geo-step-form-layout
|
|
13
|
+
* title="Thêm mới ..."
|
|
14
|
+
* [steps]="steps"
|
|
15
|
+
* [activeIndex]="activeIndex"
|
|
16
|
+
* [showScrollButtons]="true"
|
|
17
|
+
* (cancel)="onCancel()"
|
|
18
|
+
* (save)="onSave()"
|
|
19
|
+
* (next)="onNext()"
|
|
20
|
+
* >
|
|
21
|
+
* <form>...</form>
|
|
22
|
+
* </geo-step-form-layout>
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export class GeoStepFormLayoutComponent {
|
|
26
|
+
steps = [];
|
|
27
|
+
activeIndex = 0;
|
|
28
|
+
title = '';
|
|
29
|
+
clickableSteps = true;
|
|
30
|
+
/** Hiện nút ↑/↓ góc phải card (chuyển bước). Mặc định `true`. */
|
|
31
|
+
showScrollButtons = true;
|
|
32
|
+
showCancel = true;
|
|
33
|
+
showPrevious = true;
|
|
34
|
+
showSave = true;
|
|
35
|
+
showNext = true;
|
|
36
|
+
cancelLabel = 'Hủy';
|
|
37
|
+
previousLabel = 'Trở lại';
|
|
38
|
+
saveLabel = 'Lưu';
|
|
39
|
+
nextLabel = 'Tiếp theo';
|
|
40
|
+
finishLabel = 'Hoàn thành';
|
|
41
|
+
saveLoading = false;
|
|
42
|
+
nextLoading = false;
|
|
43
|
+
/** Ẩn footer actions (dùng slot `[footer]` hoặc không cần nút). */
|
|
44
|
+
hideDefaultFooter = false;
|
|
45
|
+
activeIndexChange = new EventEmitter();
|
|
46
|
+
stepSelect = new EventEmitter();
|
|
47
|
+
cancel = new EventEmitter();
|
|
48
|
+
previous = new EventEmitter();
|
|
49
|
+
save = new EventEmitter();
|
|
50
|
+
next = new EventEmitter();
|
|
51
|
+
get isLastStep() {
|
|
52
|
+
return this.steps.length > 0 && this.activeIndex >= this.steps.length - 1;
|
|
53
|
+
}
|
|
54
|
+
get canGoPreviousStep() {
|
|
55
|
+
return this.findAdjacentStepIndex(-1) != null;
|
|
56
|
+
}
|
|
57
|
+
get canGoNextStep() {
|
|
58
|
+
return this.findAdjacentStepIndex(1) != null;
|
|
59
|
+
}
|
|
60
|
+
get resolvedNextLabel() {
|
|
61
|
+
return this.isLastStep ? this.finishLabel : this.nextLabel;
|
|
62
|
+
}
|
|
63
|
+
onActiveIndexChange(index) {
|
|
64
|
+
this.activeIndex = index;
|
|
65
|
+
this.activeIndexChange.emit(index);
|
|
66
|
+
}
|
|
67
|
+
onStepSelect(event) {
|
|
68
|
+
this.stepSelect.emit(event);
|
|
69
|
+
}
|
|
70
|
+
onCancel() {
|
|
71
|
+
this.cancel.emit();
|
|
72
|
+
}
|
|
73
|
+
onPrevious() {
|
|
74
|
+
this.previous.emit();
|
|
75
|
+
}
|
|
76
|
+
onSave() {
|
|
77
|
+
this.save.emit();
|
|
78
|
+
}
|
|
79
|
+
onNext() {
|
|
80
|
+
this.next.emit();
|
|
81
|
+
}
|
|
82
|
+
goAdjacentStep(direction) {
|
|
83
|
+
const delta = direction === 'up' ? -1 : 1;
|
|
84
|
+
const nextIndex = this.findAdjacentStepIndex(delta);
|
|
85
|
+
if (nextIndex == null)
|
|
86
|
+
return;
|
|
87
|
+
const step = this.steps[nextIndex];
|
|
88
|
+
this.activeIndex = nextIndex;
|
|
89
|
+
this.activeIndexChange.emit(nextIndex);
|
|
90
|
+
this.stepSelect.emit({ index: nextIndex, step });
|
|
91
|
+
}
|
|
92
|
+
findAdjacentStepIndex(delta) {
|
|
93
|
+
let index = this.activeIndex + delta;
|
|
94
|
+
while (index >= 0 && index < this.steps.length) {
|
|
95
|
+
if (!this.steps[index]?.disabled) {
|
|
96
|
+
return index;
|
|
97
|
+
}
|
|
98
|
+
index += delta;
|
|
99
|
+
}
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoStepFormLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
103
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoStepFormLayoutComponent, isStandalone: true, selector: "geo-step-form-layout", inputs: { steps: "steps", activeIndex: "activeIndex", title: "title", clickableSteps: "clickableSteps", showScrollButtons: "showScrollButtons", showCancel: "showCancel", showPrevious: "showPrevious", showSave: "showSave", showNext: "showNext", cancelLabel: "cancelLabel", previousLabel: "previousLabel", saveLabel: "saveLabel", nextLabel: "nextLabel", finishLabel: "finishLabel", saveLoading: "saveLoading", nextLoading: "nextLoading", hideDefaultFooter: "hideDefaultFooter" }, outputs: { activeIndexChange: "activeIndexChange", stepSelect: "stepSelect", cancel: "cancel", previous: "previous", save: "save", next: "next" }, host: { classAttribute: "geo-step-form-layout-host" }, ngImport: i0, template: "<div class=\"geo-step-form-layout\">\n <aside class=\"geo-step-form-layout__aside\">\n <div class=\"geo-step-form-layout__step-card\">\n <geo-stepper\n [steps]=\"steps\"\n [activeIndex]=\"activeIndex\"\n [clickable]=\"clickableSteps\"\n orientation=\"vertical\"\n (activeIndexChange)=\"onActiveIndexChange($event)\"\n (stepSelect)=\"onStepSelect($event)\"\n ></geo-stepper>\n\n <ng-content select=\"[sidebarExtra]\"></ng-content>\n </div>\n </aside>\n\n <div\n class=\"geo-step-form-layout__main-wrap\"\n [class.geo-step-form-layout__main-wrap--with-fab]=\"showScrollButtons\"\n >\n @if (showScrollButtons) {\n <div class=\"geo-step-form-layout__scroll-fab\">\n <button\n type=\"button\"\n class=\"geo-step-form-layout__fab\"\n aria-label=\"B\u01B0\u1EDBc tr\u01B0\u1EDBc\"\n [disabled]=\"!canGoPreviousStep\"\n (click)=\"goAdjacentStep('up')\"\n >\n <span nz-icon nzType=\"arrow-up\" nzTheme=\"outline\"></span>\n </button>\n <button\n type=\"button\"\n class=\"geo-step-form-layout__fab\"\n aria-label=\"B\u01B0\u1EDBc sau\"\n [disabled]=\"!canGoNextStep\"\n (click)=\"goAdjacentStep('down')\"\n >\n <span nz-icon nzType=\"arrow-down\" nzTheme=\"outline\"></span>\n </button>\n </div>\n }\n\n <section class=\"geo-step-form-layout__card\">\n @if (title) {\n <h1 class=\"geo-step-form-layout__title\">{{ title }}</h1>\n }\n\n <div class=\"geo-step-form-layout__body\">\n <ng-content></ng-content>\n </div>\n\n @if (!hideDefaultFooter) {\n <footer class=\"geo-step-form-layout__footer\">\n <ng-content select=\"[footer]\"></ng-content>\n\n <div class=\"geo-step-form-layout__footer-default\">\n <div class=\"geo-step-form-layout__footer-start\">\n @if (showCancel) {\n <geo-button appearance=\"secondary\" color=\"brand\" (clicked)=\"onCancel()\">\n {{ cancelLabel }}\n </geo-button>\n }\n </div>\n\n <div class=\"geo-step-form-layout__footer-end\">\n @if (showPrevious && activeIndex > 0) {\n <geo-button\n appearance=\"secondary\"\n color=\"brand\"\n icon=\"left\"\n (clicked)=\"onPrevious()\"\n >\n {{ previousLabel }}\n </geo-button>\n }\n @if (showSave) {\n <geo-button\n appearance=\"secondary\"\n color=\"brand\"\n icon=\"save\"\n [disabled]=\"saveLoading\"\n (clicked)=\"onSave()\"\n >\n {{ saveLabel }}\n </geo-button>\n }\n @if (showNext) {\n <geo-button\n appearance=\"primary\"\n color=\"brand\"\n [icon]=\"isLastStep ? 'check' : 'right'\"\n [disabled]=\"nextLoading\"\n (clicked)=\"onNext()\"\n >\n {{ resolvedNextLabel }}\n </geo-button>\n }\n </div>\n </div>\n </footer>\n } @else {\n <ng-content select=\"[footer]\"></ng-content>\n }\n </section>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";:host,.geo-step-form-layout-host{display:block;width:100%;min-height:100%;box-sizing:border-box}.geo-step-form-layout{display:grid;grid-template-columns:260px minmax(0,1fr);gap:20px;align-items:start;width:100%;min-height:100%;height:100%;padding:16px 24px;box-sizing:border-box;overflow:visible}.geo-step-form-layout__aside{display:flex;flex-direction:column;min-width:0;align-self:start}.geo-step-form-layout__step-card{display:flex;flex-direction:column;gap:16px;width:100%;padding:20px 16px;background:var(--geo-color-neutral-white);border:1px solid var(--geo-color-primary-border);border-radius:var(--geo-radius);box-shadow:0 1px 2px #0000000a;box-sizing:border-box}.geo-step-form-layout__main-wrap{position:relative;width:100%;min-width:0;min-height:0;height:100%;display:flex;flex-direction:column;align-self:stretch;overflow:visible;box-sizing:border-box}.geo-step-form-layout__main-wrap--with-fab{padding-right:48px}.geo-step-form-layout__scroll-fab{position:absolute;top:0;right:0;z-index:2;display:flex;flex-direction:column;gap:10px}.geo-step-form-layout__fab{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid var(--geo-color-primary-default);border-radius:50%;background:var(--geo-color-neutral-white);color:var(--geo-color-primary-default);cursor:pointer;box-shadow:none;transition:background-color .15s ease,opacity .15s ease}.geo-step-form-layout__fab .anticon{font-size:14px}.geo-step-form-layout__fab:hover:not(:disabled){background:var(--geo-color-primary-surface-light)}.geo-step-form-layout__fab:focus-visible{outline:2px solid var(--geo-color-primary-default);outline-offset:2px}.geo-step-form-layout__fab:disabled{opacity:.35;cursor:not-allowed}.geo-step-form-layout__card{display:flex;flex-direction:column;width:100%;min-width:0;min-height:0;flex:1 1 auto;height:calc(100vh - 48px);max-height:calc(100vh - 48px);background:var(--geo-color-neutral-white);border:1px solid var(--geo-color-primary-border);border-radius:var(--geo-radius);overflow:hidden;box-shadow:0 1px 2px #0000000a;box-sizing:border-box}.geo-step-form-layout__title{flex-shrink:0;margin:0;padding:24px 24px 8px;font-size:20px;font-weight:700;line-height:1.3;color:var(--geo-color-neutral-900)}.geo-step-form-layout__body{flex:1 1 auto;min-height:0;overflow:auto;padding:16px 24px 8px;overscroll-behavior:contain}.geo-step-form-layout__footer{flex-shrink:0;border-top:1px solid var(--geo-color-neutral-100);padding:16px 24px 20px;background:var(--geo-color-neutral-white)}.geo-step-form-layout__footer-default{display:flex;align-items:center;justify-content:space-between;gap:12px}.geo-step-form-layout__footer-start,.geo-step-form-layout__footer-end{display:flex;align-items:center;gap:12px}.geo-step-form-section{display:flex;flex-direction:column;gap:16px;margin-bottom:28px}.geo-step-form-section:last-child{margin-bottom:8px}.geo-step-form-section__title{margin:0;font-size:16px;font-weight:700;line-height:1.3;color:var(--geo-color-neutral-900)}.geo-step-form-grid{display:grid;gap:16px;grid-template-columns:repeat(2,minmax(0,1fr))}.geo-step-form-grid--cols-1{grid-template-columns:minmax(0,1fr)}.geo-step-form-grid--cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.geo-step-form-grid--cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.geo-step-form-grid__full{grid-column:1/-1}@media (max-width: 1100px){.geo-step-form-layout{grid-template-columns:220px minmax(0,1fr)}.geo-step-form-grid--cols-4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 900px){.geo-step-form-layout{grid-template-columns:1fr;padding:12px 16px 20px}.geo-step-form-layout__main-wrap{margin-right:0;padding-right:0}.geo-step-form-layout__scroll-fab{display:none}.geo-step-form-layout__card{height:auto;max-height:none}.geo-step-form-grid,.geo-step-form-grid--cols-3,.geo-step-form-grid--cols-4{grid-template-columns:minmax(0,1fr)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i1.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: GeoButtonComponent, selector: "geo-button", inputs: ["appearance", "color", "icon", "iconTheme", "iconPlacement", "iconOnly", "type", "disabled", "tooltip", "tooltipPlacement", "active", "title"], outputs: ["clicked"] }, { kind: "component", type: GeoStepperComponent, selector: "geo-stepper", inputs: ["steps", "activeIndex", "orientation", "clickable"], outputs: ["activeIndexChange", "stepSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
104
|
+
}
|
|
105
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoStepFormLayoutComponent, decorators: [{
|
|
106
|
+
type: Component,
|
|
107
|
+
args: [{ selector: 'geo-step-form-layout', standalone: true, imports: [CommonModule, NzIconModule, GeoButtonComponent, GeoStepperComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
108
|
+
class: 'geo-step-form-layout-host',
|
|
109
|
+
}, template: "<div class=\"geo-step-form-layout\">\n <aside class=\"geo-step-form-layout__aside\">\n <div class=\"geo-step-form-layout__step-card\">\n <geo-stepper\n [steps]=\"steps\"\n [activeIndex]=\"activeIndex\"\n [clickable]=\"clickableSteps\"\n orientation=\"vertical\"\n (activeIndexChange)=\"onActiveIndexChange($event)\"\n (stepSelect)=\"onStepSelect($event)\"\n ></geo-stepper>\n\n <ng-content select=\"[sidebarExtra]\"></ng-content>\n </div>\n </aside>\n\n <div\n class=\"geo-step-form-layout__main-wrap\"\n [class.geo-step-form-layout__main-wrap--with-fab]=\"showScrollButtons\"\n >\n @if (showScrollButtons) {\n <div class=\"geo-step-form-layout__scroll-fab\">\n <button\n type=\"button\"\n class=\"geo-step-form-layout__fab\"\n aria-label=\"B\u01B0\u1EDBc tr\u01B0\u1EDBc\"\n [disabled]=\"!canGoPreviousStep\"\n (click)=\"goAdjacentStep('up')\"\n >\n <span nz-icon nzType=\"arrow-up\" nzTheme=\"outline\"></span>\n </button>\n <button\n type=\"button\"\n class=\"geo-step-form-layout__fab\"\n aria-label=\"B\u01B0\u1EDBc sau\"\n [disabled]=\"!canGoNextStep\"\n (click)=\"goAdjacentStep('down')\"\n >\n <span nz-icon nzType=\"arrow-down\" nzTheme=\"outline\"></span>\n </button>\n </div>\n }\n\n <section class=\"geo-step-form-layout__card\">\n @if (title) {\n <h1 class=\"geo-step-form-layout__title\">{{ title }}</h1>\n }\n\n <div class=\"geo-step-form-layout__body\">\n <ng-content></ng-content>\n </div>\n\n @if (!hideDefaultFooter) {\n <footer class=\"geo-step-form-layout__footer\">\n <ng-content select=\"[footer]\"></ng-content>\n\n <div class=\"geo-step-form-layout__footer-default\">\n <div class=\"geo-step-form-layout__footer-start\">\n @if (showCancel) {\n <geo-button appearance=\"secondary\" color=\"brand\" (clicked)=\"onCancel()\">\n {{ cancelLabel }}\n </geo-button>\n }\n </div>\n\n <div class=\"geo-step-form-layout__footer-end\">\n @if (showPrevious && activeIndex > 0) {\n <geo-button\n appearance=\"secondary\"\n color=\"brand\"\n icon=\"left\"\n (clicked)=\"onPrevious()\"\n >\n {{ previousLabel }}\n </geo-button>\n }\n @if (showSave) {\n <geo-button\n appearance=\"secondary\"\n color=\"brand\"\n icon=\"save\"\n [disabled]=\"saveLoading\"\n (clicked)=\"onSave()\"\n >\n {{ saveLabel }}\n </geo-button>\n }\n @if (showNext) {\n <geo-button\n appearance=\"primary\"\n color=\"brand\"\n [icon]=\"isLastStep ? 'check' : 'right'\"\n [disabled]=\"nextLoading\"\n (clicked)=\"onNext()\"\n >\n {{ resolvedNextLabel }}\n </geo-button>\n }\n </div>\n </div>\n </footer>\n } @else {\n <ng-content select=\"[footer]\"></ng-content>\n }\n </section>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";:host,.geo-step-form-layout-host{display:block;width:100%;min-height:100%;box-sizing:border-box}.geo-step-form-layout{display:grid;grid-template-columns:260px minmax(0,1fr);gap:20px;align-items:start;width:100%;min-height:100%;height:100%;padding:16px 24px;box-sizing:border-box;overflow:visible}.geo-step-form-layout__aside{display:flex;flex-direction:column;min-width:0;align-self:start}.geo-step-form-layout__step-card{display:flex;flex-direction:column;gap:16px;width:100%;padding:20px 16px;background:var(--geo-color-neutral-white);border:1px solid var(--geo-color-primary-border);border-radius:var(--geo-radius);box-shadow:0 1px 2px #0000000a;box-sizing:border-box}.geo-step-form-layout__main-wrap{position:relative;width:100%;min-width:0;min-height:0;height:100%;display:flex;flex-direction:column;align-self:stretch;overflow:visible;box-sizing:border-box}.geo-step-form-layout__main-wrap--with-fab{padding-right:48px}.geo-step-form-layout__scroll-fab{position:absolute;top:0;right:0;z-index:2;display:flex;flex-direction:column;gap:10px}.geo-step-form-layout__fab{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid var(--geo-color-primary-default);border-radius:50%;background:var(--geo-color-neutral-white);color:var(--geo-color-primary-default);cursor:pointer;box-shadow:none;transition:background-color .15s ease,opacity .15s ease}.geo-step-form-layout__fab .anticon{font-size:14px}.geo-step-form-layout__fab:hover:not(:disabled){background:var(--geo-color-primary-surface-light)}.geo-step-form-layout__fab:focus-visible{outline:2px solid var(--geo-color-primary-default);outline-offset:2px}.geo-step-form-layout__fab:disabled{opacity:.35;cursor:not-allowed}.geo-step-form-layout__card{display:flex;flex-direction:column;width:100%;min-width:0;min-height:0;flex:1 1 auto;height:calc(100vh - 48px);max-height:calc(100vh - 48px);background:var(--geo-color-neutral-white);border:1px solid var(--geo-color-primary-border);border-radius:var(--geo-radius);overflow:hidden;box-shadow:0 1px 2px #0000000a;box-sizing:border-box}.geo-step-form-layout__title{flex-shrink:0;margin:0;padding:24px 24px 8px;font-size:20px;font-weight:700;line-height:1.3;color:var(--geo-color-neutral-900)}.geo-step-form-layout__body{flex:1 1 auto;min-height:0;overflow:auto;padding:16px 24px 8px;overscroll-behavior:contain}.geo-step-form-layout__footer{flex-shrink:0;border-top:1px solid var(--geo-color-neutral-100);padding:16px 24px 20px;background:var(--geo-color-neutral-white)}.geo-step-form-layout__footer-default{display:flex;align-items:center;justify-content:space-between;gap:12px}.geo-step-form-layout__footer-start,.geo-step-form-layout__footer-end{display:flex;align-items:center;gap:12px}.geo-step-form-section{display:flex;flex-direction:column;gap:16px;margin-bottom:28px}.geo-step-form-section:last-child{margin-bottom:8px}.geo-step-form-section__title{margin:0;font-size:16px;font-weight:700;line-height:1.3;color:var(--geo-color-neutral-900)}.geo-step-form-grid{display:grid;gap:16px;grid-template-columns:repeat(2,minmax(0,1fr))}.geo-step-form-grid--cols-1{grid-template-columns:minmax(0,1fr)}.geo-step-form-grid--cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.geo-step-form-grid--cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.geo-step-form-grid__full{grid-column:1/-1}@media (max-width: 1100px){.geo-step-form-layout{grid-template-columns:220px minmax(0,1fr)}.geo-step-form-grid--cols-4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 900px){.geo-step-form-layout{grid-template-columns:1fr;padding:12px 16px 20px}.geo-step-form-layout__main-wrap{margin-right:0;padding-right:0}.geo-step-form-layout__scroll-fab{display:none}.geo-step-form-layout__card{height:auto;max-height:none}.geo-step-form-grid,.geo-step-form-grid--cols-3,.geo-step-form-grid--cols-4{grid-template-columns:minmax(0,1fr)}}\n"] }]
|
|
110
|
+
}], propDecorators: { steps: [{
|
|
111
|
+
type: Input
|
|
112
|
+
}], activeIndex: [{
|
|
113
|
+
type: Input
|
|
114
|
+
}], title: [{
|
|
115
|
+
type: Input
|
|
116
|
+
}], clickableSteps: [{
|
|
117
|
+
type: Input
|
|
118
|
+
}], showScrollButtons: [{
|
|
119
|
+
type: Input
|
|
120
|
+
}], showCancel: [{
|
|
121
|
+
type: Input
|
|
122
|
+
}], showPrevious: [{
|
|
123
|
+
type: Input
|
|
124
|
+
}], showSave: [{
|
|
125
|
+
type: Input
|
|
126
|
+
}], showNext: [{
|
|
127
|
+
type: Input
|
|
128
|
+
}], cancelLabel: [{
|
|
129
|
+
type: Input
|
|
130
|
+
}], previousLabel: [{
|
|
131
|
+
type: Input
|
|
132
|
+
}], saveLabel: [{
|
|
133
|
+
type: Input
|
|
134
|
+
}], nextLabel: [{
|
|
135
|
+
type: Input
|
|
136
|
+
}], finishLabel: [{
|
|
137
|
+
type: Input
|
|
138
|
+
}], saveLoading: [{
|
|
139
|
+
type: Input
|
|
140
|
+
}], nextLoading: [{
|
|
141
|
+
type: Input
|
|
142
|
+
}], hideDefaultFooter: [{
|
|
143
|
+
type: Input
|
|
144
|
+
}], activeIndexChange: [{
|
|
145
|
+
type: Output
|
|
146
|
+
}], stepSelect: [{
|
|
147
|
+
type: Output
|
|
148
|
+
}], cancel: [{
|
|
149
|
+
type: Output
|
|
150
|
+
}], previous: [{
|
|
151
|
+
type: Output
|
|
152
|
+
}], save: [{
|
|
153
|
+
type: Output
|
|
154
|
+
}], next: [{
|
|
155
|
+
type: Output
|
|
156
|
+
}] } });
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLXN0ZXAtZm9ybS1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLXN0ZXAtZm9ybS1sYXlvdXQvZ2VvLXN0ZXAtZm9ybS1sYXlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLXN0ZXAtZm9ybS1sYXlvdXQvZ2VvLXN0ZXAtZm9ybS1sYXlvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDeEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7OztBQUczRTs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQWFILE1BQU0sT0FBTywwQkFBMEI7SUFDNUIsS0FBSyxHQUFxQixFQUFFLENBQUM7SUFDN0IsV0FBVyxHQUFHLENBQUMsQ0FBQztJQUNoQixLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ1gsY0FBYyxHQUFHLElBQUksQ0FBQztJQUMvQixpRUFBaUU7SUFDeEQsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0lBRXpCLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDbEIsWUFBWSxHQUFHLElBQUksQ0FBQztJQUNwQixRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ2hCLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDaEIsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUNwQixhQUFhLEdBQUcsU0FBUyxDQUFDO0lBQzFCLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDbEIsU0FBUyxHQUFHLFdBQVcsQ0FBQztJQUN4QixXQUFXLEdBQUcsWUFBWSxDQUFDO0lBQzNCLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDcEIsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUM3QixtRUFBbUU7SUFDMUQsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBRXpCLGlCQUFpQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFDL0MsVUFBVSxHQUFHLElBQUksWUFBWSxFQUEyQyxDQUFDO0lBQ3pFLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBQ2xDLFFBQVEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBQ3BDLElBQUksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBQ2hDLElBQUksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBRTFDLElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxJQUFJLGlCQUFpQjtRQUNuQixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO0lBQy9DLENBQUM7SUFFRCxJQUFJLGlCQUFpQjtRQUNuQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDN0QsQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQWE7UUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQThDO1FBQ3pELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsY0FBYyxDQUFDLFNBQXdCO1FBQ3JDLE1BQU0sS0FBSyxHQUFHLFNBQVMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELElBQUksU0FBUyxJQUFJLElBQUk7WUFBRSxPQUFPO1FBRTlCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7UUFDN0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRU8scUJBQXFCLENBQUMsS0FBYTtRQUN6QyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUNyQyxPQUFPLEtBQUssSUFBSSxDQUFDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUM7Z0JBQ2pDLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztZQUNELEtBQUssSUFBSSxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzt3R0ExRlUsMEJBQTBCOzRGQUExQiwwQkFBMEIsd3ZCQzNDdkMseTlHQTJHQSxnNEhEekVZLFlBQVksOEJBQUUsWUFBWSxrTkFBRSxrQkFBa0Isc09BQUUsbUJBQW1COzs0RkFTbEUsMEJBQTBCO2tCQVp0QyxTQUFTOytCQUNFLHNCQUFzQixjQUNwQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixDQUFDLG1CQUc3RCx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNKLEtBQUssRUFBRSwyQkFBMkI7cUJBQ25DOzhCQUdRLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVJLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxJQUFJO3NCQUFiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOekljb25Nb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2ljb24nO1xuaW1wb3J0IHsgR2VvQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vZ2VvLWJ1dHRvbi9nZW8tYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHZW9TdGVwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZ2VvLXN0ZXBwZXIvZ2VvLXN0ZXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEdlb1N0ZXBwZXJTdGVwIH0gZnJvbSAnLi4vZ2VvLXN0ZXBwZXIvZ2VvLXN0ZXBwZXIudHlwZXMnO1xuXG4vKipcbiAqIExheW91dCBmb3JtIHBhZ2UgbXVsdGktc3RlcDogY+G7mXQgdHLDoWkgc3RlcHBlciArIGPhu5l0IHBo4bqjaSBmb3JtIGNhcmQuXG4gKlxuICogYGBgaHRtbFxuICogPGdlby1zdGVwLWZvcm0tbGF5b3V0XG4gKiAgIHRpdGxlPVwiVGjDqm0gbeG7m2kgLi4uXCJcbiAqICAgW3N0ZXBzXT1cInN0ZXBzXCJcbiAqICAgW2FjdGl2ZUluZGV4XT1cImFjdGl2ZUluZGV4XCJcbiAqICAgW3Nob3dTY3JvbGxCdXR0b25zXT1cInRydWVcIlxuICogICAoY2FuY2VsKT1cIm9uQ2FuY2VsKClcIlxuICogICAoc2F2ZSk9XCJvblNhdmUoKVwiXG4gKiAgIChuZXh0KT1cIm9uTmV4dCgpXCJcbiAqID5cbiAqICAgPGZvcm0+Li4uPC9mb3JtPlxuICogPC9nZW8tc3RlcC1mb3JtLWxheW91dD5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnZW8tc3RlcC1mb3JtLWxheW91dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE56SWNvbk1vZHVsZSwgR2VvQnV0dG9uQ29tcG9uZW50LCBHZW9TdGVwcGVyQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL2dlby1zdGVwLWZvcm0tbGF5b3V0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2dlby1zdGVwLWZvcm0tbGF5b3V0LmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2dlby1zdGVwLWZvcm0tbGF5b3V0LWhvc3QnLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBHZW9TdGVwRm9ybUxheW91dENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHN0ZXBzOiBHZW9TdGVwcGVyU3RlcFtdID0gW107XG4gIEBJbnB1dCgpIGFjdGl2ZUluZGV4ID0gMDtcbiAgQElucHV0KCkgdGl0bGUgPSAnJztcbiAgQElucHV0KCkgY2xpY2thYmxlU3RlcHMgPSB0cnVlO1xuICAvKiogSGnhu4duIG7DunQg4oaRL+KGkyBnw7NjIHBo4bqjaSBjYXJkIChjaHV54buDbiBixrDhu5tjKS4gTeG6t2MgxJHhu4tuaCBgdHJ1ZWAuICovXG4gIEBJbnB1dCgpIHNob3dTY3JvbGxCdXR0b25zID0gdHJ1ZTtcblxuICBASW5wdXQoKSBzaG93Q2FuY2VsID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd1ByZXZpb3VzID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd1NhdmUgPSB0cnVlO1xuICBASW5wdXQoKSBzaG93TmV4dCA9IHRydWU7XG4gIEBJbnB1dCgpIGNhbmNlbExhYmVsID0gJ0jhu6d5JztcbiAgQElucHV0KCkgcHJldmlvdXNMYWJlbCA9ICdUcuG7nyBs4bqhaSc7XG4gIEBJbnB1dCgpIHNhdmVMYWJlbCA9ICdMxrB1JztcbiAgQElucHV0KCkgbmV4dExhYmVsID0gJ1Rp4bq/cCB0aGVvJztcbiAgQElucHV0KCkgZmluaXNoTGFiZWwgPSAnSG/DoG4gdGjDoG5oJztcbiAgQElucHV0KCkgc2F2ZUxvYWRpbmcgPSBmYWxzZTtcbiAgQElucHV0KCkgbmV4dExvYWRpbmcgPSBmYWxzZTtcbiAgLyoqIOG6qG4gZm9vdGVyIGFjdGlvbnMgKGTDuW5nIHNsb3QgYFtmb290ZXJdYCBob+G6t2Mga2jDtG5nIGPhuqduIG7DunQpLiAqL1xuICBASW5wdXQoKSBoaWRlRGVmYXVsdEZvb3RlciA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBhY3RpdmVJbmRleENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICBAT3V0cHV0KCkgc3RlcFNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpbmRleDogbnVtYmVyOyBzdGVwOiBHZW9TdGVwcGVyU3RlcCB9PigpO1xuICBAT3V0cHV0KCkgY2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgcHJldmlvdXMgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBzYXZlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgbmV4dCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBnZXQgaXNMYXN0U3RlcCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zdGVwcy5sZW5ndGggPiAwICYmIHRoaXMuYWN0aXZlSW5kZXggPj0gdGhpcy5zdGVwcy5sZW5ndGggLSAxO1xuICB9XG5cbiAgZ2V0IGNhbkdvUHJldmlvdXNTdGVwKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZpbmRBZGphY2VudFN0ZXBJbmRleCgtMSkgIT0gbnVsbDtcbiAgfVxuXG4gIGdldCBjYW5Hb05leHRTdGVwKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZpbmRBZGphY2VudFN0ZXBJbmRleCgxKSAhPSBudWxsO1xuICB9XG5cbiAgZ2V0IHJlc29sdmVkTmV4dExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaXNMYXN0U3RlcCA/IHRoaXMuZmluaXNoTGFiZWwgOiB0aGlzLm5leHRMYWJlbDtcbiAgfVxuXG4gIG9uQWN0aXZlSW5kZXhDaGFuZ2UoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZlSW5kZXggPSBpbmRleDtcbiAgICB0aGlzLmFjdGl2ZUluZGV4Q2hhbmdlLmVtaXQoaW5kZXgpO1xuICB9XG5cbiAgb25TdGVwU2VsZWN0KGV2ZW50OiB7IGluZGV4OiBudW1iZXI7IHN0ZXA6IEdlb1N0ZXBwZXJTdGVwIH0pOiB2b2lkIHtcbiAgICB0aGlzLnN0ZXBTZWxlY3QuZW1pdChldmVudCk7XG4gIH1cblxuICBvbkNhbmNlbCgpOiB2b2lkIHtcbiAgICB0aGlzLmNhbmNlbC5lbWl0KCk7XG4gIH1cblxuICBvblByZXZpb3VzKCk6IHZvaWQge1xuICAgIHRoaXMucHJldmlvdXMuZW1pdCgpO1xuICB9XG5cbiAgb25TYXZlKCk6IHZvaWQge1xuICAgIHRoaXMuc2F2ZS5lbWl0KCk7XG4gIH1cblxuICBvbk5leHQoKTogdm9pZCB7XG4gICAgdGhpcy5uZXh0LmVtaXQoKTtcbiAgfVxuXG4gIGdvQWRqYWNlbnRTdGVwKGRpcmVjdGlvbjogJ3VwJyB8ICdkb3duJyk6IHZvaWQge1xuICAgIGNvbnN0IGRlbHRhID0gZGlyZWN0aW9uID09PSAndXAnID8gLTEgOiAxO1xuICAgIGNvbnN0IG5leHRJbmRleCA9IHRoaXMuZmluZEFkamFjZW50U3RlcEluZGV4KGRlbHRhKTtcbiAgICBpZiAobmV4dEluZGV4ID09IG51bGwpIHJldHVybjtcblxuICAgIGNvbnN0IHN0ZXAgPSB0aGlzLnN0ZXBzW25leHRJbmRleF07XG4gICAgdGhpcy5hY3RpdmVJbmRleCA9IG5leHRJbmRleDtcbiAgICB0aGlzLmFjdGl2ZUluZGV4Q2hhbmdlLmVtaXQobmV4dEluZGV4KTtcbiAgICB0aGlzLnN0ZXBTZWxlY3QuZW1pdCh7IGluZGV4OiBuZXh0SW5kZXgsIHN0ZXAgfSk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRBZGphY2VudFN0ZXBJbmRleChkZWx0YTogLTEgfCAxKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgbGV0IGluZGV4ID0gdGhpcy5hY3RpdmVJbmRleCArIGRlbHRhO1xuICAgIHdoaWxlIChpbmRleCA+PSAwICYmIGluZGV4IDwgdGhpcy5zdGVwcy5sZW5ndGgpIHtcbiAgICAgIGlmICghdGhpcy5zdGVwc1tpbmRleF0/LmRpc2FibGVkKSB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgIH1cbiAgICAgIGluZGV4ICs9IGRlbHRhO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImdlby1zdGVwLWZvcm0tbGF5b3V0XCI+XG4gIDxhc2lkZSBjbGFzcz1cImdlby1zdGVwLWZvcm0tbGF5b3V0X19hc2lkZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJnZW8tc3RlcC1mb3JtLWxheW91dF9fc3RlcC1jYXJkXCI+XG4gICAgICA8Z2VvLXN0ZXBwZXJcbiAgICAgICAgW3N0ZXBzXT1cInN0ZXBzXCJcbiAgICAgICAgW2FjdGl2ZUluZGV4XT1cImFjdGl2ZUluZGV4XCJcbiAgICAgICAgW2NsaWNrYWJsZV09XCJjbGlja2FibGVTdGVwc1wiXG4gICAgICAgIG9yaWVudGF0aW9uPVwidmVydGljYWxcIlxuICAgICAgICAoYWN0aXZlSW5kZXhDaGFuZ2UpPVwib25BY3RpdmVJbmRleENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgKHN0ZXBTZWxlY3QpPVwib25TdGVwU2VsZWN0KCRldmVudClcIlxuICAgICAgPjwvZ2VvLXN0ZXBwZXI+XG5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzaWRlYmFyRXh0cmFdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L2FzaWRlPlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cImdlby1zdGVwLWZvcm0tbGF5b3V0X19tYWluLXdyYXBcIlxuICAgIFtjbGFzcy5nZW8tc3RlcC1mb3JtLWxheW91dF9fbWFpbi13cmFwLS13aXRoLWZhYl09XCJzaG93U2Nyb2xsQnV0dG9uc1wiXG4gID5cbiAgICBAaWYgKHNob3dTY3JvbGxCdXR0b25zKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiZ2VvLXN0ZXAtZm9ybS1sYXlvdXRfX3Njcm9sbC1mYWJcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiZ2VvLXN0ZXAtZm9ybS1sYXlvdXRfX2ZhYlwiXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIkLGsOG7m2MgdHLGsOG7m2NcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuR29QcmV2aW91c1N0ZXBcIlxuICAgICAgICAgIChjbGljayk9XCJnb0FkamFjZW50U3RlcCgndXAnKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiBuei1pY29uIG56VHlwZT1cImFycm93LXVwXCIgbnpUaGVtZT1cIm91dGxpbmVcIj48L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJnZW8tc3RlcC1mb3JtLWxheW91dF9fZmFiXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiQsaw4bubYyBzYXVcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuR29OZXh0U3RlcFwiXG4gICAgICAgICAgKGNsaWNrKT1cImdvQWRqYWNlbnRTdGVwKCdkb3duJylcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gbnotaWNvbiBuelR5cGU9XCJhcnJvdy1kb3duXCIgbnpUaGVtZT1cIm91dGxpbmVcIj48L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJnZW8tc3RlcC1mb3JtLWxheW91dF9fY2FyZFwiPlxuICAgICAgQGlmICh0aXRsZSkge1xuICAgICAgICA8aDEgY2xhc3M9XCJnZW8tc3RlcC1mb3JtLWxheW91dF9fdGl0bGVcIj57eyB0aXRsZSB9fTwvaDE+XG4gICAgICB9XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJnZW8tc3RlcC1mb3JtLWxheW91dF9fYm9keVwiPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cblxuICAgICAgQGlmICghaGlkZURlZmF1bHRGb290ZXIpIHtcbiAgICAgICAgPGZvb3RlciBjbGFzcz1cImdlby1zdGVwLWZvcm0tbGF5b3V0X19mb290ZXJcIj5cbiAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZm9vdGVyXVwiPjwvbmctY29udGVudD5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJnZW8tc3RlcC1mb3JtLWxheW91dF9fZm9vdGVyLWRlZmF1bHRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnZW8tc3RlcC1mb3JtLWxheW91dF9fZm9vdGVyLXN0YXJ0XCI+XG4gICAgICAgICAgICAgIEBpZiAoc2hvd0NhbmNlbCkge1xuICAgICAgICAgICAgICAgIDxnZW8tYnV0dG9uIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIiBjb2xvcj1cImJyYW5kXCIgKGNsaWNrZWQpPVwib25DYW5jZWwoKVwiPlxuICAgICAgICAgICAgICAgICAge3sgY2FuY2VsTGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L2dlby1idXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2VvLXN0ZXAtZm9ybS1sYXlvdXRfX2Zvb3Rlci1lbmRcIj5cbiAgICAgICAgICAgICAgQGlmIChzaG93UHJldmlvdXMgJiYgYWN0aXZlSW5kZXggPiAwKSB7XG4gICAgICAgICAgICAgICAgPGdlby1idXR0b25cbiAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgY29sb3I9XCJicmFuZFwiXG4gICAgICAgICAgICAgICAgICBpY29uPVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJvblByZXZpb3VzKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IHByZXZpb3VzTGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L2dlby1idXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChzaG93U2F2ZSkge1xuICAgICAgICAgICAgICAgIDxnZW8tYnV0dG9uXG4gICAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgIGNvbG9yPVwiYnJhbmRcIlxuICAgICAgICAgICAgICAgICAgaWNvbj1cInNhdmVcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNhdmVMb2FkaW5nXCJcbiAgICAgICAgICAgICAgICAgIChjbGlja2VkKT1cIm9uU2F2ZSgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBzYXZlTGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L2dlby1idXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChzaG93TmV4dCkge1xuICAgICAgICAgICAgICAgIDxnZW8tYnV0dG9uXG4gICAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICBjb2xvcj1cImJyYW5kXCJcbiAgICAgICAgICAgICAgICAgIFtpY29uXT1cImlzTGFzdFN0ZXAgPyAnY2hlY2snIDogJ3JpZ2h0J1wiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibmV4dExvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrZWQpPVwib25OZXh0KClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IHJlc29sdmVkTmV4dExhYmVsIH19XG4gICAgICAgICAgICAgICAgPC9nZW8tYnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9mb290ZXI+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2Zvb3Rlcl1cIj48L25nLWNvbnRlbnQ+XG4gICAgICB9XG4gICAgPC9zZWN0aW9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLXN0ZXAtZm9ybS1sYXlvdXQudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nZW8tdWkvc3JjL2xpYi9maWdtYS9nZW8tc3RlcC1mb3JtLWxheW91dC9nZW8tc3RlcC1mb3JtLWxheW91dC50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBHZW9TdGVwcGVyU3RlcCB9IGZyb20gJy4uL2dlby1zdGVwcGVyL2dlby1zdGVwcGVyLnR5cGVzJztcblxuZXhwb3J0IHR5cGUgeyBHZW9TdGVwcGVyU3RlcCB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIEdlb1N0ZXBGb3JtTGF5b3V0TGFiZWxzIHtcbiAgYmFjaz86IHN0cmluZztcbiAgY2FuY2VsPzogc3RyaW5nO1xuICBzYXZlPzogc3RyaW5nO1xuICBuZXh0Pzogc3RyaW5nO1xuICBmaW5pc2g/OiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation, } from '@angular/core';
|
|
3
|
+
import { NzIconModule } from 'ng-zorro-antd/icon';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "ng-zorro-antd/icon";
|
|
6
|
+
/**
|
|
7
|
+
* Steps / Stepper GEO — horizontal (mặc định) hoặc vertical.
|
|
8
|
+
*
|
|
9
|
+
* Custom qua `steps`, `activeIndex`, `orientation`, `clickable`.
|
|
10
|
+
* Trong form modal: đặt `<geo-stepper>` vào body (content projection).
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```html
|
|
14
|
+
* <geo-stepper
|
|
15
|
+
* [steps]="[
|
|
16
|
+
* { key: 'a', label: 'Bước 1' },
|
|
17
|
+
* { key: 'b', label: 'Bước 2' }
|
|
18
|
+
* ]"
|
|
19
|
+
* [activeIndex]="0"
|
|
20
|
+
* orientation="horizontal"
|
|
21
|
+
* (activeIndexChange)="onStep($event)"
|
|
22
|
+
* ></geo-stepper>
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export class GeoStepperComponent {
|
|
26
|
+
steps = [];
|
|
27
|
+
activeIndex = 0;
|
|
28
|
+
/** Mặc định horizontal theo design form modal. */
|
|
29
|
+
orientation = 'horizontal';
|
|
30
|
+
/** Cho phép click để đổi bước. */
|
|
31
|
+
clickable = true;
|
|
32
|
+
activeIndexChange = new EventEmitter();
|
|
33
|
+
stepSelect = new EventEmitter();
|
|
34
|
+
trackByIndex(index) {
|
|
35
|
+
return index;
|
|
36
|
+
}
|
|
37
|
+
isActive(index) {
|
|
38
|
+
return index === this.activeIndex;
|
|
39
|
+
}
|
|
40
|
+
isCompleted(index) {
|
|
41
|
+
return index < this.activeIndex;
|
|
42
|
+
}
|
|
43
|
+
isPending(index) {
|
|
44
|
+
return index > this.activeIndex;
|
|
45
|
+
}
|
|
46
|
+
onSelect(index, step) {
|
|
47
|
+
if (!this.clickable || step.disabled || index === this.activeIndex) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
this.activeIndex = index;
|
|
51
|
+
this.activeIndexChange.emit(index);
|
|
52
|
+
this.stepSelect.emit({ index, step });
|
|
53
|
+
}
|
|
54
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoStepperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
55
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoStepperComponent, isStandalone: true, selector: "geo-stepper", inputs: { steps: "steps", activeIndex: "activeIndex", orientation: "orientation", clickable: "clickable" }, outputs: { activeIndexChange: "activeIndexChange", stepSelect: "stepSelect" }, host: { properties: { "class.geo-stepper-host--vertical": "orientation === \"vertical\"", "class.geo-stepper-host--horizontal": "orientation === \"horizontal\"" }, classAttribute: "geo-stepper-host" }, ngImport: i0, template: "<nav class=\"geo-stepper\" [attr.aria-label]=\"'C\u00E1c b\u01B0\u1EDBc'\">\n <ol class=\"geo-stepper__list\">\n @for (step of steps; track trackByIndex($index); let i = $index; let last = $last) {\n <li\n class=\"geo-stepper__item\"\n [class.geo-stepper__item--active]=\"isActive(i)\"\n [class.geo-stepper__item--completed]=\"isCompleted(i)\"\n [class.geo-stepper__item--pending]=\"isPending(i)\"\n [class.geo-stepper__item--disabled]=\"step.disabled\"\n [class.geo-stepper__item--last]=\"last\"\n >\n <button\n type=\"button\"\n class=\"geo-stepper__button\"\n [disabled]=\"!clickable || step.disabled\"\n [attr.aria-current]=\"isActive(i) ? 'step' : null\"\n (click)=\"onSelect(i, step)\"\n >\n <span class=\"geo-stepper__index\" aria-hidden=\"true\">\n @if (isCompleted(i)) {\n <span nz-icon nzType=\"check\" nzTheme=\"outline\"></span>\n } @else {\n {{ i + 1 }}\n }\n </span>\n <span class=\"geo-stepper__label\">{{ step.label }}</span>\n </button>\n\n @if (!last) {\n <span\n class=\"geo-stepper__connector\"\n [class.geo-stepper__connector--done]=\"isCompleted(i)\"\n aria-hidden=\"true\"\n ></span>\n }\n </li>\n }\n </ol>\n</nav>\n", styles: ["@charset \"UTF-8\";.geo-stepper-host{display:block;width:100%;font-family:var(--geo-font-family)}.geo-stepper__list{list-style:none;margin:0;padding:0;display:flex;align-items:center}.geo-stepper-host--horizontal{display:flex;justify-content:center;width:100%}.geo-stepper-host--horizontal .geo-stepper__list{flex-direction:row;flex-wrap:nowrap;justify-content:center;align-items:center;gap:0;width:auto;max-width:100%}.geo-stepper-host--horizontal .geo-stepper__item{display:flex;align-items:center;flex:0 0 auto;min-width:0}.geo-stepper-host--horizontal .geo-stepper__connector{flex:0 0 auto;width:48px;height:1px;margin:0 16px;background:var(--geo-color-neutral-300)}.geo-stepper-host--horizontal .geo-stepper__connector--done{background:var(--geo-color-success-default)}.geo-stepper-host--vertical .geo-stepper__list{flex-direction:column;align-items:stretch;gap:0;width:100%}.geo-stepper-host--vertical .geo-stepper__item{display:flex;flex-direction:column;align-items:flex-start;min-width:0}.geo-stepper-host--vertical .geo-stepper__connector{display:block;width:1px;height:20px;margin:6px 0 6px 15px;background:var(--geo-color-neutral-300)}.geo-stepper-host--vertical .geo-stepper__connector--done{background:var(--geo-color-success-default)}.geo-stepper__button{display:inline-flex;align-items:center;gap:10px;padding:0;border:none;background:transparent;cursor:pointer;font-family:inherit;text-align:left;color:var(--geo-color-neutral-500);flex-shrink:0;max-width:100%}.geo-stepper__button:disabled{cursor:default}.geo-stepper__item--disabled .geo-stepper__button{opacity:.5;cursor:not-allowed}.geo-stepper__index{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;flex-shrink:0;border:1.5px solid var(--geo-color-neutral-300);border-radius:50%;font-size:var(--geo-font-size-body);font-weight:var(--geo-font-weight-semibold);line-height:1;color:var(--geo-color-neutral-500);background:var(--geo-color-neutral-white);box-sizing:border-box}.geo-stepper__index .anticon{font-size:14px}.geo-stepper__label{font-size:var(--geo-font-size-body);font-weight:var(--geo-font-weight-regular);line-height:var(--geo-line-height-body);color:var(--geo-color-neutral-500);white-space:nowrap}.geo-stepper__item--active .geo-stepper__index{border-color:var(--geo-color-primary-default);background:var(--geo-color-primary-default);color:var(--geo-color-neutral-white)}.geo-stepper__item--active .geo-stepper__label{color:var(--geo-color-primary-default);font-weight:var(--geo-font-weight-semibold)}.geo-stepper__item--completed .geo-stepper__index{border-color:var(--geo-color-success-default);background:var(--geo-color-success-default);color:var(--geo-color-neutral-white)}.geo-stepper__item--completed .geo-stepper__label{color:var(--geo-color-success-default);font-weight:var(--geo-font-weight-medium)}.geo-stepper__button:not(:disabled):hover .geo-stepper__label{color:var(--geo-color-primary-default)}.geo-stepper__item--completed .geo-stepper__button:not(:disabled):hover .geo-stepper__label{color:var(--geo-color-success-dark)}@media (max-width: 767.98px){.geo-stepper-host--horizontal .geo-stepper__list{flex-wrap:wrap;row-gap:12px;justify-content:center}.geo-stepper-host--horizontal .geo-stepper__label{white-space:normal;max-width:140px}.geo-stepper-host--horizontal .geo-stepper__connector{width:24px;margin:0 10px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i1.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
56
|
+
}
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoStepperComponent, decorators: [{
|
|
58
|
+
type: Component,
|
|
59
|
+
args: [{ selector: 'geo-stepper', standalone: true, imports: [CommonModule, NzIconModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
60
|
+
class: 'geo-stepper-host',
|
|
61
|
+
'[class.geo-stepper-host--vertical]': 'orientation === "vertical"',
|
|
62
|
+
'[class.geo-stepper-host--horizontal]': 'orientation === "horizontal"',
|
|
63
|
+
}, template: "<nav class=\"geo-stepper\" [attr.aria-label]=\"'C\u00E1c b\u01B0\u1EDBc'\">\n <ol class=\"geo-stepper__list\">\n @for (step of steps; track trackByIndex($index); let i = $index; let last = $last) {\n <li\n class=\"geo-stepper__item\"\n [class.geo-stepper__item--active]=\"isActive(i)\"\n [class.geo-stepper__item--completed]=\"isCompleted(i)\"\n [class.geo-stepper__item--pending]=\"isPending(i)\"\n [class.geo-stepper__item--disabled]=\"step.disabled\"\n [class.geo-stepper__item--last]=\"last\"\n >\n <button\n type=\"button\"\n class=\"geo-stepper__button\"\n [disabled]=\"!clickable || step.disabled\"\n [attr.aria-current]=\"isActive(i) ? 'step' : null\"\n (click)=\"onSelect(i, step)\"\n >\n <span class=\"geo-stepper__index\" aria-hidden=\"true\">\n @if (isCompleted(i)) {\n <span nz-icon nzType=\"check\" nzTheme=\"outline\"></span>\n } @else {\n {{ i + 1 }}\n }\n </span>\n <span class=\"geo-stepper__label\">{{ step.label }}</span>\n </button>\n\n @if (!last) {\n <span\n class=\"geo-stepper__connector\"\n [class.geo-stepper__connector--done]=\"isCompleted(i)\"\n aria-hidden=\"true\"\n ></span>\n }\n </li>\n }\n </ol>\n</nav>\n", styles: ["@charset \"UTF-8\";.geo-stepper-host{display:block;width:100%;font-family:var(--geo-font-family)}.geo-stepper__list{list-style:none;margin:0;padding:0;display:flex;align-items:center}.geo-stepper-host--horizontal{display:flex;justify-content:center;width:100%}.geo-stepper-host--horizontal .geo-stepper__list{flex-direction:row;flex-wrap:nowrap;justify-content:center;align-items:center;gap:0;width:auto;max-width:100%}.geo-stepper-host--horizontal .geo-stepper__item{display:flex;align-items:center;flex:0 0 auto;min-width:0}.geo-stepper-host--horizontal .geo-stepper__connector{flex:0 0 auto;width:48px;height:1px;margin:0 16px;background:var(--geo-color-neutral-300)}.geo-stepper-host--horizontal .geo-stepper__connector--done{background:var(--geo-color-success-default)}.geo-stepper-host--vertical .geo-stepper__list{flex-direction:column;align-items:stretch;gap:0;width:100%}.geo-stepper-host--vertical .geo-stepper__item{display:flex;flex-direction:column;align-items:flex-start;min-width:0}.geo-stepper-host--vertical .geo-stepper__connector{display:block;width:1px;height:20px;margin:6px 0 6px 15px;background:var(--geo-color-neutral-300)}.geo-stepper-host--vertical .geo-stepper__connector--done{background:var(--geo-color-success-default)}.geo-stepper__button{display:inline-flex;align-items:center;gap:10px;padding:0;border:none;background:transparent;cursor:pointer;font-family:inherit;text-align:left;color:var(--geo-color-neutral-500);flex-shrink:0;max-width:100%}.geo-stepper__button:disabled{cursor:default}.geo-stepper__item--disabled .geo-stepper__button{opacity:.5;cursor:not-allowed}.geo-stepper__index{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;flex-shrink:0;border:1.5px solid var(--geo-color-neutral-300);border-radius:50%;font-size:var(--geo-font-size-body);font-weight:var(--geo-font-weight-semibold);line-height:1;color:var(--geo-color-neutral-500);background:var(--geo-color-neutral-white);box-sizing:border-box}.geo-stepper__index .anticon{font-size:14px}.geo-stepper__label{font-size:var(--geo-font-size-body);font-weight:var(--geo-font-weight-regular);line-height:var(--geo-line-height-body);color:var(--geo-color-neutral-500);white-space:nowrap}.geo-stepper__item--active .geo-stepper__index{border-color:var(--geo-color-primary-default);background:var(--geo-color-primary-default);color:var(--geo-color-neutral-white)}.geo-stepper__item--active .geo-stepper__label{color:var(--geo-color-primary-default);font-weight:var(--geo-font-weight-semibold)}.geo-stepper__item--completed .geo-stepper__index{border-color:var(--geo-color-success-default);background:var(--geo-color-success-default);color:var(--geo-color-neutral-white)}.geo-stepper__item--completed .geo-stepper__label{color:var(--geo-color-success-default);font-weight:var(--geo-font-weight-medium)}.geo-stepper__button:not(:disabled):hover .geo-stepper__label{color:var(--geo-color-primary-default)}.geo-stepper__item--completed .geo-stepper__button:not(:disabled):hover .geo-stepper__label{color:var(--geo-color-success-dark)}@media (max-width: 767.98px){.geo-stepper-host--horizontal .geo-stepper__list{flex-wrap:wrap;row-gap:12px;justify-content:center}.geo-stepper-host--horizontal .geo-stepper__label{white-space:normal;max-width:140px}.geo-stepper-host--horizontal .geo-stepper__connector{width:24px;margin:0 10px}}\n"] }]
|
|
64
|
+
}], propDecorators: { steps: [{
|
|
65
|
+
type: Input
|
|
66
|
+
}], activeIndex: [{
|
|
67
|
+
type: Input
|
|
68
|
+
}], orientation: [{
|
|
69
|
+
type: Input
|
|
70
|
+
}], clickable: [{
|
|
71
|
+
type: Input
|
|
72
|
+
}], activeIndexChange: [{
|
|
73
|
+
type: Output
|
|
74
|
+
}], stepSelect: [{
|
|
75
|
+
type: Output
|
|
76
|
+
}] } });
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLXN0ZXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLXN0ZXBwZXIvZ2VvLXN0ZXBwZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLXN0ZXBwZXIvZ2VvLXN0ZXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7OztBQUdsRDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBZUgsTUFBTSxPQUFPLG1CQUFtQjtJQUNyQixLQUFLLEdBQXFCLEVBQUUsQ0FBQztJQUM3QixXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLGtEQUFrRDtJQUN6QyxXQUFXLEdBQTBCLFlBQVksQ0FBQztJQUMzRCxrQ0FBa0M7SUFDekIsU0FBUyxHQUFHLElBQUksQ0FBQztJQUVoQixpQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBQy9DLFVBQVUsR0FBRyxJQUFJLFlBQVksRUFBMkMsQ0FBQztJQUVuRixZQUFZLENBQUMsS0FBYTtRQUN4QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBYTtRQUNwQixPQUFPLEtBQUssS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYTtRQUN2QixPQUFPLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBYTtRQUNyQixPQUFPLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBYSxFQUFFLElBQW9CO1FBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuRSxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDO3dHQWxDVSxtQkFBbUI7NEZBQW5CLG1CQUFtQiw0Y0M3Q2hDLGc1Q0F1Q0EsbzFHRExZLFlBQVksOEJBQUUsWUFBWTs7NEZBV3pCLG1CQUFtQjtrQkFkL0IsU0FBUzsrQkFDRSxhQUFhLGNBQ1gsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxtQkFHcEIsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDSixLQUFLLEVBQUUsa0JBQWtCO3dCQUN6QixvQ0FBb0MsRUFBRSw0QkFBNEI7d0JBQ2xFLHNDQUFzQyxFQUFFLDhCQUE4QjtxQkFDdkU7OEJBR1EsS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTnpJY29uTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9pY29uJztcbmltcG9ydCB7IEdlb1N0ZXBwZXJPcmllbnRhdGlvbiwgR2VvU3RlcHBlclN0ZXAgfSBmcm9tICcuL2dlby1zdGVwcGVyLnR5cGVzJztcblxuLyoqXG4gKiBTdGVwcyAvIFN0ZXBwZXIgR0VPIOKAlCBob3Jpem9udGFsICht4bq3YyDEkeG7i25oKSBob+G6t2MgdmVydGljYWwuXG4gKlxuICogQ3VzdG9tIHF1YSBgc3RlcHNgLCBgYWN0aXZlSW5kZXhgLCBgb3JpZW50YXRpb25gLCBgY2xpY2thYmxlYC5cbiAqIFRyb25nIGZvcm0gbW9kYWw6IMSR4bq3dCBgPGdlby1zdGVwcGVyPmAgdsOgbyBib2R5IChjb250ZW50IHByb2plY3Rpb24pLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8Z2VvLXN0ZXBwZXJcbiAqICAgW3N0ZXBzXT1cIltcbiAqICAgICB7IGtleTogJ2EnLCBsYWJlbDogJ0LGsOG7m2MgMScgfSxcbiAqICAgICB7IGtleTogJ2InLCBsYWJlbDogJ0LGsOG7m2MgMicgfVxuICogICBdXCJcbiAqICAgW2FjdGl2ZUluZGV4XT1cIjBcIlxuICogICBvcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICogICAoYWN0aXZlSW5kZXhDaGFuZ2UpPVwib25TdGVwKCRldmVudClcIlxuICogPjwvZ2VvLXN0ZXBwZXI+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ2VvLXN0ZXBwZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBOekljb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2VvLXN0ZXBwZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZ2VvLXN0ZXBwZXIuY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnZ2VvLXN0ZXBwZXItaG9zdCcsXG4gICAgJ1tjbGFzcy5nZW8tc3RlcHBlci1ob3N0LS12ZXJ0aWNhbF0nOiAnb3JpZW50YXRpb24gPT09IFwidmVydGljYWxcIicsXG4gICAgJ1tjbGFzcy5nZW8tc3RlcHBlci1ob3N0LS1ob3Jpem9udGFsXSc6ICdvcmllbnRhdGlvbiA9PT0gXCJob3Jpem9udGFsXCInLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBHZW9TdGVwcGVyQ29tcG9uZW50IHtcbiAgQElucHV0KCkgc3RlcHM6IEdlb1N0ZXBwZXJTdGVwW10gPSBbXTtcbiAgQElucHV0KCkgYWN0aXZlSW5kZXggPSAwO1xuICAvKiogTeG6t2MgxJHhu4tuaCBob3Jpem9udGFsIHRoZW8gZGVzaWduIGZvcm0gbW9kYWwuICovXG4gIEBJbnB1dCgpIG9yaWVudGF0aW9uOiBHZW9TdGVwcGVyT3JpZW50YXRpb24gPSAnaG9yaXpvbnRhbCc7XG4gIC8qKiBDaG8gcGjDqXAgY2xpY2sgxJHhu4MgxJHhu5VpIGLGsOG7m2MuICovXG4gIEBJbnB1dCgpIGNsaWNrYWJsZSA9IHRydWU7XG5cbiAgQE91dHB1dCgpIGFjdGl2ZUluZGV4Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBzdGVwU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjx7IGluZGV4OiBudW1iZXI7IHN0ZXA6IEdlb1N0ZXBwZXJTdGVwIH0+KCk7XG5cbiAgdHJhY2tCeUluZGV4KGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIGlzQWN0aXZlKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaW5kZXggPT09IHRoaXMuYWN0aXZlSW5kZXg7XG4gIH1cblxuICBpc0NvbXBsZXRlZChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGluZGV4IDwgdGhpcy5hY3RpdmVJbmRleDtcbiAgfVxuXG4gIGlzUGVuZGluZyhpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGluZGV4ID4gdGhpcy5hY3RpdmVJbmRleDtcbiAgfVxuXG4gIG9uU2VsZWN0KGluZGV4OiBudW1iZXIsIHN0ZXA6IEdlb1N0ZXBwZXJTdGVwKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNsaWNrYWJsZSB8fCBzdGVwLmRpc2FibGVkIHx8IGluZGV4ID09PSB0aGlzLmFjdGl2ZUluZGV4KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYWN0aXZlSW5kZXggPSBpbmRleDtcbiAgICB0aGlzLmFjdGl2ZUluZGV4Q2hhbmdlLmVtaXQoaW5kZXgpO1xuICAgIHRoaXMuc3RlcFNlbGVjdC5lbWl0KHsgaW5kZXgsIHN0ZXAgfSk7XG4gIH1cbn1cbiIsIjxuYXYgY2xhc3M9XCJnZW8tc3RlcHBlclwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0PDoWMgYsaw4bubYydcIj5cbiAgPG9sIGNsYXNzPVwiZ2VvLXN0ZXBwZXJfX2xpc3RcIj5cbiAgICBAZm9yIChzdGVwIG9mIHN0ZXBzOyB0cmFjayB0cmFja0J5SW5kZXgoJGluZGV4KTsgbGV0IGkgPSAkaW5kZXg7IGxldCBsYXN0ID0gJGxhc3QpIHtcbiAgICAgIDxsaVxuICAgICAgICBjbGFzcz1cImdlby1zdGVwcGVyX19pdGVtXCJcbiAgICAgICAgW2NsYXNzLmdlby1zdGVwcGVyX19pdGVtLS1hY3RpdmVdPVwiaXNBY3RpdmUoaSlcIlxuICAgICAgICBbY2xhc3MuZ2VvLXN0ZXBwZXJfX2l0ZW0tLWNvbXBsZXRlZF09XCJpc0NvbXBsZXRlZChpKVwiXG4gICAgICAgIFtjbGFzcy5nZW8tc3RlcHBlcl9faXRlbS0tcGVuZGluZ109XCJpc1BlbmRpbmcoaSlcIlxuICAgICAgICBbY2xhc3MuZ2VvLXN0ZXBwZXJfX2l0ZW0tLWRpc2FibGVkXT1cInN0ZXAuZGlzYWJsZWRcIlxuICAgICAgICBbY2xhc3MuZ2VvLXN0ZXBwZXJfX2l0ZW0tLWxhc3RdPVwibGFzdFwiXG4gICAgICA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImdlby1zdGVwcGVyX19idXR0b25cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2xpY2thYmxlIHx8IHN0ZXAuZGlzYWJsZWRcIlxuICAgICAgICAgIFthdHRyLmFyaWEtY3VycmVudF09XCJpc0FjdGl2ZShpKSA/ICdzdGVwJyA6IG51bGxcIlxuICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdChpLCBzdGVwKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImdlby1zdGVwcGVyX19pbmRleFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgQGlmIChpc0NvbXBsZXRlZChpKSkge1xuICAgICAgICAgICAgICA8c3BhbiBuei1pY29uIG56VHlwZT1cImNoZWNrXCIgbnpUaGVtZT1cIm91dGxpbmVcIj48L3NwYW4+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAge3sgaSArIDEgfX1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJnZW8tc3RlcHBlcl9fbGFiZWxcIj57eyBzdGVwLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICBAaWYgKCFsYXN0KSB7XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiZ2VvLXN0ZXBwZXJfX2Nvbm5lY3RvclwiXG4gICAgICAgICAgICBbY2xhc3MuZ2VvLXN0ZXBwZXJfX2Nvbm5lY3Rvci0tZG9uZV09XCJpc0NvbXBsZXRlZChpKVwiXG4gICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgID48L3NwYW4+XG4gICAgICAgIH1cbiAgICAgIDwvbGk+XG4gICAgfVxuICA8L29sPlxuPC9uYXY+XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLXN0ZXBwZXIudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nZW8tdWkvc3JjL2xpYi9maWdtYS9nZW8tc3RlcHBlci9nZW8tc3RlcHBlci50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBHZW9TdGVwcGVyU3RlcCB7XG4gIC8qKiBVbmlxdWUga2V5IChvcHRpb25hbCkuICovXG4gIGtleT86IHN0cmluZztcbiAgLyoqIExhYmVsIGhp4buDbiB0aOG7iyBiw6puIGPhuqFuaCBz4buRIGLGsOG7m2MuICovXG4gIGxhYmVsOiBzdHJpbmc7XG4gIC8qKiBEaXNhYmxlIGNsaWNrIGNo4buNbiBixrDhu5tjLiAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIEdlb1N0ZXBwZXJPcmllbnRhdGlvbiA9ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCc7XG4iXX0=
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { NgZorroAntdModule } from '../../../ng-zorro/ng-zorro-antd.module';
|
|
4
|
+
import { GeoButtonComponent } from '../../geo-button/geo-button.component';
|
|
5
|
+
import { GeoCheckboxComponent } from '../../geo-checkbox/geo-checkbox.component';
|
|
6
|
+
import { saveColumnPickerState } from './geo-column-picker.storage';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "ng-zorro-antd/button";
|
|
9
|
+
import * as i2 from "ng-zorro-antd/core/transition-patch";
|
|
10
|
+
import * as i3 from "ng-zorro-antd/core/wave";
|
|
11
|
+
import * as i4 from "ng-zorro-antd/dropdown";
|
|
12
|
+
export class GeoColumnPickerComponent {
|
|
13
|
+
triggerLabel = 'Ẩn hiện cột';
|
|
14
|
+
hint = 'Chọn cột hiển thị trên bảng.';
|
|
15
|
+
items = [];
|
|
16
|
+
/** Lưu trạng thái ẩn/hiện cột theo session khi người dùng áp dụng */
|
|
17
|
+
storageKey;
|
|
18
|
+
apply = new EventEmitter();
|
|
19
|
+
dropdownVisible = false;
|
|
20
|
+
draftItems = [];
|
|
21
|
+
onDropdownVisibleChange(visible) {
|
|
22
|
+
if (visible) {
|
|
23
|
+
this.syncDraft();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
onItemChange(key, visible) {
|
|
27
|
+
this.draftItems = this.draftItems.map((item) => item.key === key ? { ...item, visible } : item);
|
|
28
|
+
}
|
|
29
|
+
onApply() {
|
|
30
|
+
const visibility = {};
|
|
31
|
+
for (const item of this.draftItems) {
|
|
32
|
+
visibility[item.key] = item.visible;
|
|
33
|
+
}
|
|
34
|
+
/** `pinned` giữ empty để tương thích payload/storage cũ — không còn UI ghim/di chuyển cột. */
|
|
35
|
+
const payload = { visibility, pinned: {} };
|
|
36
|
+
this.apply.emit(payload);
|
|
37
|
+
if (this.storageKey) {
|
|
38
|
+
saveColumnPickerState(this.storageKey, payload);
|
|
39
|
+
}
|
|
40
|
+
this.dropdownVisible = false;
|
|
41
|
+
}
|
|
42
|
+
onReset() {
|
|
43
|
+
this.syncDraft();
|
|
44
|
+
}
|
|
45
|
+
syncDraft() {
|
|
46
|
+
this.draftItems = this.items.map((item) => ({ ...item }));
|
|
47
|
+
}
|
|
48
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoColumnPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
49
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoColumnPickerComponent, isStandalone: true, selector: "geo-column-picker", inputs: { triggerLabel: "triggerLabel", hint: "hint", items: "items", storageKey: "storageKey" }, outputs: { apply: "apply" }, ngImport: i0, template: "<div\n class=\"geo-column-picker__trigger\"\n nz-dropdown\n [nzDropdownMenu]=\"menu\"\n nzTrigger=\"click\"\n nzPlacement=\"bottomRight\"\n [(nzVisible)]=\"dropdownVisible\"\n (nzVisibleChange)=\"onDropdownVisibleChange($event)\"\n>\n <geo-button\n appearance=\"secondary\"\n color=\"brand\"\n icon=\"eye-invisible\"\n [title]=\"triggerLabel\"\n >\n {{ triggerLabel }}\n </geo-button>\n</div>\n\n<nz-dropdown-menu #menu=\"nzDropdownMenu\">\n <div class=\"geo-column-picker__panel\" (click)=\"$event.stopPropagation()\">\n <p class=\"geo-column-picker__hint\">{{ hint }}</p>\n\n <div class=\"geo-column-picker__list\">\n @for (item of draftItems; track item.key) {\n <div class=\"geo-column-picker__row\">\n <geo-checkbox\n class=\"geo-column-picker__item\"\n [label]=\"item.title\"\n [checked]=\"item.visible\"\n [disabled]=\"item.locked ?? false\"\n (checkedChange)=\"onItemChange(item.key, $event)\"\n ></geo-checkbox>\n </div>\n }\n </div>\n\n <div class=\"geo-column-picker__actions\">\n <button nz-button nzType=\"default\" nzSize=\"small\" (click)=\"onReset()\">\u0110\u1EB7t l\u1EA1i</button>\n <button nz-button nzType=\"primary\" nzSize=\"small\" (click)=\"onApply()\">\u00C1p d\u1EE5ng</button>\n </div>\n </div>\n</nz-dropdown-menu>\n", styles: [":host{display:inline-block}.geo-column-picker__trigger{display:inline-flex}.geo-column-picker__panel{width:320px;padding:12px 16px 16px;background:var(--geo-color-neutral-white);border-radius:var(--geo-radius);box-shadow:0 6px 16px #00000014}.geo-column-picker__hint{margin:0 0 12px;color:var(--geo-color-neutral-500);font-size:13px;line-height:20px}.geo-column-picker__list{display:flex;flex-direction:column;gap:8px;max-height:320px;overflow-y:auto}.geo-column-picker__row{display:flex;align-items:center;gap:8px}.geo-column-picker__item{display:flex;align-items:center;flex:1;min-width:0}.geo-column-picker__actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px;padding-top:12px;border-top:1px solid var(--geo-color-neutral-100)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: NgZorroAntdModule }, { kind: "component", type: i1.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: i2.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i3.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }, { kind: "directive", type: i4.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i4.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "component", type: GeoButtonComponent, selector: "geo-button", inputs: ["appearance", "color", "icon", "iconTheme", "iconPlacement", "iconOnly", "type", "disabled", "tooltip", "tooltipPlacement", "active", "title"], outputs: ["clicked"] }, { kind: "component", type: GeoCheckboxComponent, selector: "geo-checkbox", inputs: ["label", "checked", "disabled", "indeterminate"], outputs: ["checkedChange"] }] });
|
|
50
|
+
}
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoColumnPickerComponent, decorators: [{
|
|
52
|
+
type: Component,
|
|
53
|
+
args: [{ selector: 'geo-column-picker', standalone: true, imports: [CommonModule, NgZorroAntdModule, GeoButtonComponent, GeoCheckboxComponent], template: "<div\n class=\"geo-column-picker__trigger\"\n nz-dropdown\n [nzDropdownMenu]=\"menu\"\n nzTrigger=\"click\"\n nzPlacement=\"bottomRight\"\n [(nzVisible)]=\"dropdownVisible\"\n (nzVisibleChange)=\"onDropdownVisibleChange($event)\"\n>\n <geo-button\n appearance=\"secondary\"\n color=\"brand\"\n icon=\"eye-invisible\"\n [title]=\"triggerLabel\"\n >\n {{ triggerLabel }}\n </geo-button>\n</div>\n\n<nz-dropdown-menu #menu=\"nzDropdownMenu\">\n <div class=\"geo-column-picker__panel\" (click)=\"$event.stopPropagation()\">\n <p class=\"geo-column-picker__hint\">{{ hint }}</p>\n\n <div class=\"geo-column-picker__list\">\n @for (item of draftItems; track item.key) {\n <div class=\"geo-column-picker__row\">\n <geo-checkbox\n class=\"geo-column-picker__item\"\n [label]=\"item.title\"\n [checked]=\"item.visible\"\n [disabled]=\"item.locked ?? false\"\n (checkedChange)=\"onItemChange(item.key, $event)\"\n ></geo-checkbox>\n </div>\n }\n </div>\n\n <div class=\"geo-column-picker__actions\">\n <button nz-button nzType=\"default\" nzSize=\"small\" (click)=\"onReset()\">\u0110\u1EB7t l\u1EA1i</button>\n <button nz-button nzType=\"primary\" nzSize=\"small\" (click)=\"onApply()\">\u00C1p d\u1EE5ng</button>\n </div>\n </div>\n</nz-dropdown-menu>\n", styles: [":host{display:inline-block}.geo-column-picker__trigger{display:inline-flex}.geo-column-picker__panel{width:320px;padding:12px 16px 16px;background:var(--geo-color-neutral-white);border-radius:var(--geo-radius);box-shadow:0 6px 16px #00000014}.geo-column-picker__hint{margin:0 0 12px;color:var(--geo-color-neutral-500);font-size:13px;line-height:20px}.geo-column-picker__list{display:flex;flex-direction:column;gap:8px;max-height:320px;overflow-y:auto}.geo-column-picker__row{display:flex;align-items:center;gap:8px}.geo-column-picker__item{display:flex;align-items:center;flex:1;min-width:0}.geo-column-picker__actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px;padding-top:12px;border-top:1px solid var(--geo-color-neutral-100)}\n"] }]
|
|
54
|
+
}], propDecorators: { triggerLabel: [{
|
|
55
|
+
type: Input
|
|
56
|
+
}], hint: [{
|
|
57
|
+
type: Input
|
|
58
|
+
}], items: [{
|
|
59
|
+
type: Input
|
|
60
|
+
}], storageKey: [{
|
|
61
|
+
type: Input
|
|
62
|
+
}], apply: [{
|
|
63
|
+
type: Output
|
|
64
|
+
}] } });
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLWNvbHVtbi1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLXRhYmxlL2dlby1jb2x1bW4tcGlja2VyL2dlby1jb2x1bW4tcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlby11aS9zcmMvbGliL2ZpZ21hL2dlby10YWJsZS9nZW8tY29sdW1uLXBpY2tlci9nZW8tY29sdW1uLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUVqRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7O0FBU3BFLE1BQU0sT0FBTyx3QkFBd0I7SUFDMUIsWUFBWSxHQUFHLGFBQWEsQ0FBQztJQUM3QixJQUFJLEdBQUcsOEJBQThCLENBQUM7SUFDdEMsS0FBSyxHQUEwQixFQUFFLENBQUM7SUFDM0MscUVBQXFFO0lBQzVELFVBQVUsQ0FBVTtJQUVuQixLQUFLLEdBQUcsSUFBSSxZQUFZLEVBQStCLENBQUM7SUFFbEUsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUN4QixVQUFVLEdBQTBCLEVBQUUsQ0FBQztJQUV2Qyx1QkFBdUIsQ0FBQyxPQUFnQjtRQUN0QyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLEdBQVcsRUFBRSxPQUFnQjtRQUN4QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDN0MsSUFBSSxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDL0MsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPO1FBQ0wsTUFBTSxVQUFVLEdBQTRCLEVBQUUsQ0FBQztRQUUvQyxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNuQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDdEMsQ0FBQztRQUVELDhGQUE4RjtRQUM5RixNQUFNLE9BQU8sR0FBZ0MsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ3hFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXpCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLHFCQUFxQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUVELElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFTyxTQUFTO1FBQ2YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7d0dBaERVLHdCQUF3Qjs0RkFBeEIsd0JBQXdCLDRNQ2ZyQyxvM0NBMkNBLHV5QkRoQ1ksWUFBWSw4QkFBRSxpQkFBaUIsNGxDQUFFLGtCQUFrQixzT0FBRSxvQkFBb0I7OzRGQUl4RSx3QkFBd0I7a0JBUHBDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBQ2pCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsQ0FBQzs4QkFLM0UsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUksS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ1pvcnJvQW50ZE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL25nLXpvcnJvL25nLXpvcnJvLWFudGQubW9kdWxlJztcbmltcG9ydCB7IEdlb0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2dlby1idXR0b24vZ2VvLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgR2VvQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi8uLi9nZW8tY2hlY2tib3gvZ2VvLWNoZWNrYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHZW9Db2x1bW5QaWNrZXJBcHBseVBheWxvYWQsIEdlb0NvbHVtblBpY2tlckl0ZW0gfSBmcm9tICcuL2dlby1jb2x1bW4tcGlja2VyLnR5cGVzJztcbmltcG9ydCB7IHNhdmVDb2x1bW5QaWNrZXJTdGF0ZSB9IGZyb20gJy4vZ2VvLWNvbHVtbi1waWNrZXIuc3RvcmFnZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dlby1jb2x1bW4tcGlja2VyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTmdab3Jyb0FudGRNb2R1bGUsIEdlb0J1dHRvbkNvbXBvbmVudCwgR2VvQ2hlY2tib3hDb21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2VvLWNvbHVtbi1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZ2VvLWNvbHVtbi1waWNrZXIuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBHZW9Db2x1bW5QaWNrZXJDb21wb25lbnQge1xuICBASW5wdXQoKSB0cmlnZ2VyTGFiZWwgPSAn4bqobiBoaeG7h24gY+G7mXQnO1xuICBASW5wdXQoKSBoaW50ID0gJ0No4buNbiBj4buZdCBoaeG7g24gdGjhu4sgdHLDqm4gYuG6o25nLic7XG4gIEBJbnB1dCgpIGl0ZW1zOiBHZW9Db2x1bW5QaWNrZXJJdGVtW10gPSBbXTtcbiAgLyoqIEzGsHUgdHLhuqFuZyB0aMOhaSDhuqluL2hp4buHbiBj4buZdCB0aGVvIHNlc3Npb24ga2hpIG5nxrDhu51pIGTDuW5nIMOhcCBk4bulbmcgKi9cbiAgQElucHV0KCkgc3RvcmFnZUtleT86IHN0cmluZztcblxuICBAT3V0cHV0KCkgYXBwbHkgPSBuZXcgRXZlbnRFbWl0dGVyPEdlb0NvbHVtblBpY2tlckFwcGx5UGF5bG9hZD4oKTtcblxuICBkcm9wZG93blZpc2libGUgPSBmYWxzZTtcbiAgZHJhZnRJdGVtczogR2VvQ29sdW1uUGlja2VySXRlbVtdID0gW107XG5cbiAgb25Ecm9wZG93blZpc2libGVDaGFuZ2UodmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh2aXNpYmxlKSB7XG4gICAgICB0aGlzLnN5bmNEcmFmdCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uSXRlbUNoYW5nZShrZXk6IHN0cmluZywgdmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZHJhZnRJdGVtcyA9IHRoaXMuZHJhZnRJdGVtcy5tYXAoKGl0ZW0pID0+XG4gICAgICBpdGVtLmtleSA9PT0ga2V5ID8geyAuLi5pdGVtLCB2aXNpYmxlIH0gOiBpdGVtXG4gICAgKTtcbiAgfVxuXG4gIG9uQXBwbHkoKTogdm9pZCB7XG4gICAgY29uc3QgdmlzaWJpbGl0eTogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcblxuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLmRyYWZ0SXRlbXMpIHtcbiAgICAgIHZpc2liaWxpdHlbaXRlbS5rZXldID0gaXRlbS52aXNpYmxlO1xuICAgIH1cblxuICAgIC8qKiBgcGlubmVkYCBnaeG7ryBlbXB0eSDEkeG7gyB0xrDGoW5nIHRow61jaCBwYXlsb2FkL3N0b3JhZ2UgY8WpIOKAlCBraMO0bmcgY8OybiBVSSBnaGltL2RpIGNodXnhu4NuIGPhu5l0LiAqL1xuICAgIGNvbnN0IHBheWxvYWQ6IEdlb0NvbHVtblBpY2tlckFwcGx5UGF5bG9hZCA9IHsgdmlzaWJpbGl0eSwgcGlubmVkOiB7fSB9O1xuICAgIHRoaXMuYXBwbHkuZW1pdChwYXlsb2FkKTtcblxuICAgIGlmICh0aGlzLnN0b3JhZ2VLZXkpIHtcbiAgICAgIHNhdmVDb2x1bW5QaWNrZXJTdGF0ZSh0aGlzLnN0b3JhZ2VLZXksIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHRoaXMuZHJvcGRvd25WaXNpYmxlID0gZmFsc2U7XG4gIH1cblxuICBvblJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuc3luY0RyYWZ0KCk7XG4gIH1cblxuICBwcml2YXRlIHN5bmNEcmFmdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRyYWZ0SXRlbXMgPSB0aGlzLml0ZW1zLm1hcCgoaXRlbSkgPT4gKHsgLi4uaXRlbSB9KSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJnZW8tY29sdW1uLXBpY2tlcl9fdHJpZ2dlclwiXG4gIG56LWRyb3Bkb3duXG4gIFtuekRyb3Bkb3duTWVudV09XCJtZW51XCJcbiAgbnpUcmlnZ2VyPVwiY2xpY2tcIlxuICBuelBsYWNlbWVudD1cImJvdHRvbVJpZ2h0XCJcbiAgWyhuelZpc2libGUpXT1cImRyb3Bkb3duVmlzaWJsZVwiXG4gIChuelZpc2libGVDaGFuZ2UpPVwib25Ecm9wZG93blZpc2libGVDaGFuZ2UoJGV2ZW50KVwiXG4+XG4gIDxnZW8tYnV0dG9uXG4gICAgYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiXG4gICAgY29sb3I9XCJicmFuZFwiXG4gICAgaWNvbj1cImV5ZS1pbnZpc2libGVcIlxuICAgIFt0aXRsZV09XCJ0cmlnZ2VyTGFiZWxcIlxuICA+XG4gICAge3sgdHJpZ2dlckxhYmVsIH19XG4gIDwvZ2VvLWJ1dHRvbj5cbjwvZGl2PlxuXG48bnotZHJvcGRvd24tbWVudSAjbWVudT1cIm56RHJvcGRvd25NZW51XCI+XG4gIDxkaXYgY2xhc3M9XCJnZW8tY29sdW1uLXBpY2tlcl9fcGFuZWxcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgPHAgY2xhc3M9XCJnZW8tY29sdW1uLXBpY2tlcl9faGludFwiPnt7IGhpbnQgfX08L3A+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZ2VvLWNvbHVtbi1waWNrZXJfX2xpc3RcIj5cbiAgICAgIEBmb3IgKGl0ZW0gb2YgZHJhZnRJdGVtczsgdHJhY2sgaXRlbS5rZXkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImdlby1jb2x1bW4tcGlja2VyX19yb3dcIj5cbiAgICAgICAgICA8Z2VvLWNoZWNrYm94XG4gICAgICAgICAgICBjbGFzcz1cImdlby1jb2x1bW4tcGlja2VyX19pdGVtXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJpdGVtLnRpdGxlXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cIml0ZW0udmlzaWJsZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXRlbS5sb2NrZWQgPz8gZmFsc2VcIlxuICAgICAgICAgICAgKGNoZWNrZWRDaGFuZ2UpPVwib25JdGVtQ2hhbmdlKGl0ZW0ua2V5LCAkZXZlbnQpXCJcbiAgICAgICAgICA+PC9nZW8tY2hlY2tib3g+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImdlby1jb2x1bW4tcGlja2VyX19hY3Rpb25zXCI+XG4gICAgICA8YnV0dG9uIG56LWJ1dHRvbiBuelR5cGU9XCJkZWZhdWx0XCIgbnpTaXplPVwic21hbGxcIiAoY2xpY2spPVwib25SZXNldCgpXCI+xJDhurd0IGzhuqFpPC9idXR0b24+XG4gICAgICA8YnV0dG9uIG56LWJ1dHRvbiBuelR5cGU9XCJwcmltYXJ5XCIgbnpTaXplPVwic21hbGxcIiAoY2xpY2spPVwib25BcHBseSgpXCI+w4FwIGThu6VuZzwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbnotZHJvcGRvd24tbWVudT5cbiJdfQ==
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
const STORAGE_PREFIX = 'geo-column-picker:';
|
|
2
|
+
export function loadColumnPickerState(key) {
|
|
3
|
+
try {
|
|
4
|
+
const raw = sessionStorage.getItem(`${STORAGE_PREFIX}${key}`);
|
|
5
|
+
if (!raw) {
|
|
6
|
+
return null;
|
|
7
|
+
}
|
|
8
|
+
return JSON.parse(raw);
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export function saveColumnPickerState(key, payload) {
|
|
15
|
+
sessionStorage.setItem(`${STORAGE_PREFIX}${key}`, JSON.stringify(payload));
|
|
16
|
+
}
|
|
17
|
+
export function applyColumnPickerState(items, state) {
|
|
18
|
+
return items.map((item) => ({
|
|
19
|
+
...item,
|
|
20
|
+
visible: state.visibility[item.key] ?? item.visible,
|
|
21
|
+
pinned: state.pinned[item.key] ?? item.pinned ?? null,
|
|
22
|
+
}));
|
|
23
|
+
}
|
|
24
|
+
export function mergeColumnPickerItems(items, key) {
|
|
25
|
+
if (!key) {
|
|
26
|
+
return items;
|
|
27
|
+
}
|
|
28
|
+
const saved = loadColumnPickerState(key);
|
|
29
|
+
return saved ? applyColumnPickerState(items, saved) : items;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLWNvbHVtbi1waWNrZXIuc3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlby11aS9zcmMvbGliL2ZpZ21hL2dlby10YWJsZS9nZW8tY29sdW1uLXBpY2tlci9nZW8tY29sdW1uLXBpY2tlci5zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE1BQU0sY0FBYyxHQUFHLG9CQUFvQixDQUFDO0FBRTVDLE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxHQUFXO0lBQy9DLElBQUksQ0FBQztRQUNILE1BQU0sR0FBRyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsR0FBRyxjQUFjLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDVCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFnQyxDQUFDO0lBQ3hELENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLHFCQUFxQixDQUFDLEdBQVcsRUFBRSxPQUFvQztJQUNyRixjQUFjLENBQUMsT0FBTyxDQUFDLEdBQUcsY0FBYyxHQUFHLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUM3RSxDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUNwQyxLQUE0QixFQUM1QixLQUFrQztJQUVsQyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDMUIsR0FBRyxJQUFJO1FBQ1AsT0FBTyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPO1FBQ25ELE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUk7S0FDdEQsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUNwQyxLQUE0QixFQUM1QixHQUFZO0lBRVosSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTSxLQUFLLEdBQUcscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekMsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQzlELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBHZW9Db2x1bW5QaWNrZXJBcHBseVBheWxvYWQsXG4gIEdlb0NvbHVtblBpY2tlckl0ZW0sXG59IGZyb20gJy4vZ2VvLWNvbHVtbi1waWNrZXIudHlwZXMnO1xuXG5jb25zdCBTVE9SQUdFX1BSRUZJWCA9ICdnZW8tY29sdW1uLXBpY2tlcjonO1xuXG5leHBvcnQgZnVuY3Rpb24gbG9hZENvbHVtblBpY2tlclN0YXRlKGtleTogc3RyaW5nKTogR2VvQ29sdW1uUGlja2VyQXBwbHlQYXlsb2FkIHwgbnVsbCB7XG4gIHRyeSB7XG4gICAgY29uc3QgcmF3ID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShgJHtTVE9SQUdFX1BSRUZJWH0ke2tleX1gKTtcbiAgICBpZiAoIXJhdykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIEpTT04ucGFyc2UocmF3KSBhcyBHZW9Db2x1bW5QaWNrZXJBcHBseVBheWxvYWQ7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYXZlQ29sdW1uUGlja2VyU3RhdGUoa2V5OiBzdHJpbmcsIHBheWxvYWQ6IEdlb0NvbHVtblBpY2tlckFwcGx5UGF5bG9hZCk6IHZvaWQge1xuICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKGAke1NUT1JBR0VfUFJFRklYfSR7a2V5fWAsIEpTT04uc3RyaW5naWZ5KHBheWxvYWQpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5Q29sdW1uUGlja2VyU3RhdGUoXG4gIGl0ZW1zOiBHZW9Db2x1bW5QaWNrZXJJdGVtW10sXG4gIHN0YXRlOiBHZW9Db2x1bW5QaWNrZXJBcHBseVBheWxvYWRcbik6IEdlb0NvbHVtblBpY2tlckl0ZW1bXSB7XG4gIHJldHVybiBpdGVtcy5tYXAoKGl0ZW0pID0+ICh7XG4gICAgLi4uaXRlbSxcbiAgICB2aXNpYmxlOiBzdGF0ZS52aXNpYmlsaXR5W2l0ZW0ua2V5XSA/PyBpdGVtLnZpc2libGUsXG4gICAgcGlubmVkOiBzdGF0ZS5waW5uZWRbaXRlbS5rZXldID8/IGl0ZW0ucGlubmVkID8/IG51bGwsXG4gIH0pKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlQ29sdW1uUGlja2VySXRlbXMoXG4gIGl0ZW1zOiBHZW9Db2x1bW5QaWNrZXJJdGVtW10sXG4gIGtleT86IHN0cmluZ1xuKTogR2VvQ29sdW1uUGlja2VySXRlbVtdIHtcbiAgaWYgKCFrZXkpIHtcbiAgICByZXR1cm4gaXRlbXM7XG4gIH1cblxuICBjb25zdCBzYXZlZCA9IGxvYWRDb2x1bW5QaWNrZXJTdGF0ZShrZXkpO1xuICByZXR1cm4gc2F2ZWQgPyBhcHBseUNvbHVtblBpY2tlclN0YXRlKGl0ZW1zLCBzYXZlZCkgOiBpdGVtcztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLWNvbHVtbi1waWNrZXIudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nZW8tdWkvc3JjL2xpYi9maWdtYS9nZW8tdGFibGUvZ2VvLWNvbHVtbi1waWNrZXIvZ2VvLWNvbHVtbi1waWNrZXIudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAZGVwcmVjYXRlZCBLaMO0bmcgY8OybiBkw7luZyDigJQgZ2nhu68gxJHhu4MgdMawxqFuZyB0aMOtY2ggc3RvcmFnZS9wYXlsb2FkIGPFqS4gKi9cbmV4cG9ydCB0eXBlIEdlb0NvbHVtblBpblNpZGUgPSAnbGVmdCcgfCAncmlnaHQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdlb0NvbHVtblBpY2tlckl0ZW0ge1xuICBrZXk6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgdmlzaWJsZTogYm9vbGVhbjtcbiAgbG9ja2VkPzogYm9vbGVhbjtcbiAgLyoqIEBkZXByZWNhdGVkIEtow7RuZyBjw7JuIFVJIGdoaW0vZGkgY2h1eeG7g24gY+G7mXQuICovXG4gIHBpbm5hYmxlPzogYm9vbGVhbjtcbiAgLyoqIEBkZXByZWNhdGVkIEtow7RuZyBjw7JuIFVJIGdoaW0vZGkgY2h1eeG7g24gY+G7mXQuICovXG4gIHBpbm5lZD86IEdlb0NvbHVtblBpblNpZGUgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlb0NvbHVtblBpY2tlckFwcGx5UGF5bG9hZCB7XG4gIHZpc2liaWxpdHk6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+O1xuICAvKiogQGRlcHJlY2F0ZWQgTHXDtG4gYHt9YCB04burIHBpY2tlciBt4bubaSDigJQgZ2nhu68gZmllbGQgxJHhu4MgdMawxqFuZyB0aMOtY2guICovXG4gIHBpbm5lZDogUmVjb3JkPHN0cmluZywgR2VvQ29sdW1uUGluU2lkZSB8IG51bGw+O1xufVxuIl19
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { NgZorroAntdModule } from '../../../ng-zorro/ng-zorro-antd.module';
|
|
4
|
+
import { DEFAULT_UI_ROW_ACTIONS, pickInlineRowActions, pickOverflowRowActions, } from './geo-row-actions.types';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "ng-zorro-antd/core/transition-patch";
|
|
7
|
+
import * as i2 from "ng-zorro-antd/dropdown";
|
|
8
|
+
import * as i3 from "ng-zorro-antd/icon";
|
|
9
|
+
import * as i4 from "ng-zorro-antd/tooltip";
|
|
10
|
+
export class GeoRowActionsComponent {
|
|
11
|
+
actions = null;
|
|
12
|
+
/** Action ưu tiên hiển thị khi có > 2 thao tác (mặc định: edit) */
|
|
13
|
+
primaryActionKey = 'edit';
|
|
14
|
+
actionClick = new EventEmitter();
|
|
15
|
+
/** @deprecated Dùng `actionClick` với key `edit` */
|
|
16
|
+
edit = new EventEmitter();
|
|
17
|
+
/** @deprecated Dùng `actionClick` với key `more` */
|
|
18
|
+
more = new EventEmitter();
|
|
19
|
+
get resolvedActions() {
|
|
20
|
+
return this.actions?.length ? this.actions : DEFAULT_UI_ROW_ACTIONS;
|
|
21
|
+
}
|
|
22
|
+
get enabledActions() {
|
|
23
|
+
return this.resolvedActions.filter((action) => !action.disabled);
|
|
24
|
+
}
|
|
25
|
+
get inlineActions() {
|
|
26
|
+
return pickInlineRowActions(this.enabledActions, this.primaryActionKey);
|
|
27
|
+
}
|
|
28
|
+
get overflowActions() {
|
|
29
|
+
return pickOverflowRowActions(this.enabledActions, this.primaryActionKey);
|
|
30
|
+
}
|
|
31
|
+
get hasOverflow() {
|
|
32
|
+
return this.overflowActions.length > 0;
|
|
33
|
+
}
|
|
34
|
+
onActionClick(event, action) {
|
|
35
|
+
if (action.disabled) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
event.stopPropagation();
|
|
39
|
+
this.actionClick.emit(action.key);
|
|
40
|
+
if (action.key === 'edit') {
|
|
41
|
+
this.edit.emit();
|
|
42
|
+
}
|
|
43
|
+
if (action.key === 'more') {
|
|
44
|
+
this.more.emit();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoRowActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
48
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoRowActionsComponent, isStandalone: true, selector: "geo-row-actions", inputs: { actions: "actions", primaryActionKey: "primaryActionKey" }, outputs: { actionClick: "actionClick", edit: "edit", more: "more" }, ngImport: i0, template: "<div class=\"geo-row-actions\">\n @for (action of inlineActions; track action.key) {\n <button\n type=\"button\"\n class=\"geo-row-actions__btn\"\n [class.geo-row-actions__btn--danger]=\"action.danger\"\n [nz-tooltip]=\"action.title ?? action.label ?? ''\"\n [disabled]=\"action.disabled\"\n [attr.aria-label]=\"action.label ?? action.title ?? action.key\"\n (click)=\"onActionClick($event, action)\"\n >\n <span nz-icon [nzType]=\"action.icon\" [nzTheme]=\"action.iconTheme ?? 'outline'\"></span>\n </button>\n }\n\n @if (hasOverflow) {\n <button\n type=\"button\"\n class=\"geo-row-actions__btn\"\n nz-dropdown\n [nzDropdownMenu]=\"overflowMenu\"\n nzTrigger=\"click\"\n nzPlacement=\"bottomRight\"\n nz-tooltip=\"Th\u00EAm thao t\u00E1c\"\n aria-label=\"Th\u00EAm thao t\u00E1c\"\n (click)=\"$event.stopPropagation()\"\n >\n <span nz-icon nzType=\"more\" nzTheme=\"outline\"></span>\n </button>\n\n <nz-dropdown-menu #overflowMenu=\"nzDropdownMenu\">\n <div class=\"geo-row-actions__panel\" (click)=\"$event.stopPropagation()\">\n @for (action of overflowActions; track action.key) {\n <button\n type=\"button\"\n class=\"geo-row-actions__panel-item\"\n [class.geo-row-actions__panel-item--danger]=\"action.danger\"\n [attr.aria-label]=\"action.label ?? action.title ?? action.key\"\n (click)=\"onActionClick($event, action)\"\n >\n <span\n class=\"geo-row-actions__panel-icon\"\n nz-icon\n [nzType]=\"action.icon\"\n [nzTheme]=\"action.iconTheme ?? 'outline'\"\n ></span>\n <span class=\"geo-row-actions__panel-label\">\n {{ action.label ?? action.title ?? action.key }}\n </span>\n </button>\n }\n </div>\n </nz-dropdown-menu>\n }\n</div>\n", styles: [":host{display:inline-block}.geo-row-actions{display:inline-flex;align-items:center;justify-content:center;gap:10px}.geo-row-actions__btn{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-500);cursor:pointer;transition:color .15s ease,background-color .15s ease}.geo-row-actions__btn:hover:not(:disabled){color:var(--geo-color-primary-default);background:color-mix(in srgb,var(--geo-color-primary-default) 10%,transparent)}.geo-row-actions__btn:disabled{cursor:not-allowed;opacity:.45}.geo-row-actions__btn--danger:hover:not(:disabled){color:var(--geo-color-error-default);background:#ee003314}.geo-row-actions__btn :deep(.anticon){font-size:16px}.geo-row-actions__panel{min-width:168px;padding:8px;background:var(--geo-color-neutral-white);border-radius:var(--geo-radius);box-shadow:0 6px 16px #00000014;display:flex;flex-direction:column;gap:4px}.geo-row-actions__panel-item{display:flex;align-items:center;gap:10px;width:100%;min-height:36px;padding:8px 12px;border:none;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-900);font-size:14px;line-height:20px;cursor:pointer;text-align:left;transition:color .15s ease,background-color .15s ease}.geo-row-actions__panel-item:hover{color:var(--geo-color-primary-default);background:color-mix(in srgb,var(--geo-color-primary-default) 10%,transparent)}.geo-row-actions__panel-item--danger:hover{color:var(--geo-color-error-default);background:#ee003314}.geo-row-actions__panel-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:16px;height:16px;color:inherit}.geo-row-actions__panel-icon :deep(.anticon){font-size:16px;line-height:1}.geo-row-actions__panel-label{flex:1;line-height:20px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: NgZorroAntdModule }, { kind: "directive", type: i1.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i2.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i2.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "directive", type: i3.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "directive", type: i4.NzTooltipDirective, selector: "[nz-tooltip]", inputs: ["nzTooltipTitle", "nzTooltipTitleContext", "nz-tooltip", "nzTooltipTrigger", "nzTooltipPlacement", "nzTooltipOrigin", "nzTooltipVisible", "nzTooltipMouseEnterDelay", "nzTooltipMouseLeaveDelay", "nzTooltipOverlayClassName", "nzTooltipOverlayStyle", "nzTooltipArrowPointAtCenter", "cdkConnectedOverlayPush", "nzTooltipColor"], outputs: ["nzTooltipVisibleChange"], exportAs: ["nzTooltip"] }] });
|
|
49
|
+
}
|
|
50
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoRowActionsComponent, decorators: [{
|
|
51
|
+
type: Component,
|
|
52
|
+
args: [{ selector: 'geo-row-actions', standalone: true, imports: [CommonModule, NgZorroAntdModule], template: "<div class=\"geo-row-actions\">\n @for (action of inlineActions; track action.key) {\n <button\n type=\"button\"\n class=\"geo-row-actions__btn\"\n [class.geo-row-actions__btn--danger]=\"action.danger\"\n [nz-tooltip]=\"action.title ?? action.label ?? ''\"\n [disabled]=\"action.disabled\"\n [attr.aria-label]=\"action.label ?? action.title ?? action.key\"\n (click)=\"onActionClick($event, action)\"\n >\n <span nz-icon [nzType]=\"action.icon\" [nzTheme]=\"action.iconTheme ?? 'outline'\"></span>\n </button>\n }\n\n @if (hasOverflow) {\n <button\n type=\"button\"\n class=\"geo-row-actions__btn\"\n nz-dropdown\n [nzDropdownMenu]=\"overflowMenu\"\n nzTrigger=\"click\"\n nzPlacement=\"bottomRight\"\n nz-tooltip=\"Th\u00EAm thao t\u00E1c\"\n aria-label=\"Th\u00EAm thao t\u00E1c\"\n (click)=\"$event.stopPropagation()\"\n >\n <span nz-icon nzType=\"more\" nzTheme=\"outline\"></span>\n </button>\n\n <nz-dropdown-menu #overflowMenu=\"nzDropdownMenu\">\n <div class=\"geo-row-actions__panel\" (click)=\"$event.stopPropagation()\">\n @for (action of overflowActions; track action.key) {\n <button\n type=\"button\"\n class=\"geo-row-actions__panel-item\"\n [class.geo-row-actions__panel-item--danger]=\"action.danger\"\n [attr.aria-label]=\"action.label ?? action.title ?? action.key\"\n (click)=\"onActionClick($event, action)\"\n >\n <span\n class=\"geo-row-actions__panel-icon\"\n nz-icon\n [nzType]=\"action.icon\"\n [nzTheme]=\"action.iconTheme ?? 'outline'\"\n ></span>\n <span class=\"geo-row-actions__panel-label\">\n {{ action.label ?? action.title ?? action.key }}\n </span>\n </button>\n }\n </div>\n </nz-dropdown-menu>\n }\n</div>\n", styles: [":host{display:inline-block}.geo-row-actions{display:inline-flex;align-items:center;justify-content:center;gap:10px}.geo-row-actions__btn{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-500);cursor:pointer;transition:color .15s ease,background-color .15s ease}.geo-row-actions__btn:hover:not(:disabled){color:var(--geo-color-primary-default);background:color-mix(in srgb,var(--geo-color-primary-default) 10%,transparent)}.geo-row-actions__btn:disabled{cursor:not-allowed;opacity:.45}.geo-row-actions__btn--danger:hover:not(:disabled){color:var(--geo-color-error-default);background:#ee003314}.geo-row-actions__btn :deep(.anticon){font-size:16px}.geo-row-actions__panel{min-width:168px;padding:8px;background:var(--geo-color-neutral-white);border-radius:var(--geo-radius);box-shadow:0 6px 16px #00000014;display:flex;flex-direction:column;gap:4px}.geo-row-actions__panel-item{display:flex;align-items:center;gap:10px;width:100%;min-height:36px;padding:8px 12px;border:none;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-900);font-size:14px;line-height:20px;cursor:pointer;text-align:left;transition:color .15s ease,background-color .15s ease}.geo-row-actions__panel-item:hover{color:var(--geo-color-primary-default);background:color-mix(in srgb,var(--geo-color-primary-default) 10%,transparent)}.geo-row-actions__panel-item--danger:hover{color:var(--geo-color-error-default);background:#ee003314}.geo-row-actions__panel-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:16px;height:16px;color:inherit}.geo-row-actions__panel-icon :deep(.anticon){font-size:16px;line-height:1}.geo-row-actions__panel-label{flex:1;line-height:20px}\n"] }]
|
|
53
|
+
}], propDecorators: { actions: [{
|
|
54
|
+
type: Input
|
|
55
|
+
}], primaryActionKey: [{
|
|
56
|
+
type: Input
|
|
57
|
+
}], actionClick: [{
|
|
58
|
+
type: Output
|
|
59
|
+
}], edit: [{
|
|
60
|
+
type: Output
|
|
61
|
+
}], more: [{
|
|
62
|
+
type: Output
|
|
63
|
+
}] } });
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLXJvdy1hY3Rpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlby11aS9zcmMvbGliL2ZpZ21hL2dlby10YWJsZS9nZW8tcm93LWFjdGlvbnMvZ2VvLXJvdy1hY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlby11aS9zcmMvbGliL2ZpZ21hL2dlby10YWJsZS9nZW8tcm93LWFjdGlvbnMvZ2VvLXJvdy1hY3Rpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzNFLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsb0JBQW9CLEVBQ3BCLHNCQUFzQixHQUV2QixNQUFNLHlCQUF5QixDQUFDOzs7Ozs7QUFTakMsTUFBTSxPQUFPLHNCQUFzQjtJQUN4QixPQUFPLEdBQTBCLElBQUksQ0FBQztJQUMvQyxtRUFBbUU7SUFDMUQsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDO0lBRXpCLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBQ25ELG9EQUFvRDtJQUMxQyxJQUFJLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUMxQyxvREFBb0Q7SUFDMUMsSUFBSSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFFMUMsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDO0lBQ3RFLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sb0JBQW9CLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sc0JBQXNCLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFZLEVBQUUsTUFBb0I7UUFDOUMsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEIsT0FBTztRQUNULENBQUM7UUFFRCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWxDLElBQUksTUFBTSxDQUFDLEdBQUcsS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25CLENBQUM7UUFFRCxJQUFJLE1BQU0sQ0FBQyxHQUFHLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQzt3R0E5Q1Usc0JBQXNCOzRGQUF0QixzQkFBc0Isc05DakJuQyw0N0RBdURBLGkzREQxQ1ksWUFBWSw4QkFBRSxpQkFBaUI7OzRGQUk5QixzQkFBc0I7a0JBUGxDLFNBQVM7K0JBQ0UsaUJBQWlCLGNBQ2YsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDOzhCQUtqQyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBRUcsSUFBSTtzQkFBYixNQUFNO2dCQUVHLElBQUk7c0JBQWIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdab3Jyb0FudGRNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9uZy16b3Jyby9uZy16b3Jyby1hbnRkLm1vZHVsZSc7XG5pbXBvcnQge1xuICBERUZBVUxUX1VJX1JPV19BQ1RJT05TLFxuICBwaWNrSW5saW5lUm93QWN0aW9ucyxcbiAgcGlja092ZXJmbG93Um93QWN0aW9ucyxcbiAgR2VvUm93QWN0aW9uLFxufSBmcm9tICcuL2dlby1yb3ctYWN0aW9ucy50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dlby1yb3ctYWN0aW9ucycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE5nWm9ycm9BbnRkTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2dlby1yb3ctYWN0aW9ucy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9nZW8tcm93LWFjdGlvbnMuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBHZW9Sb3dBY3Rpb25zQ29tcG9uZW50IHtcbiAgQElucHV0KCkgYWN0aW9uczogR2VvUm93QWN0aW9uW10gfCBudWxsID0gbnVsbDtcbiAgLyoqIEFjdGlvbiDGsHUgdGnDqm4gaGnhu4NuIHRo4buLIGtoaSBjw7MgPiAyIHRoYW8gdMOhYyAobeG6t2MgxJHhu4tuaDogZWRpdCkgKi9cbiAgQElucHV0KCkgcHJpbWFyeUFjdGlvbktleSA9ICdlZGl0JztcblxuICBAT3V0cHV0KCkgYWN0aW9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgLyoqIEBkZXByZWNhdGVkIETDuW5nIGBhY3Rpb25DbGlja2AgduG7m2kga2V5IGBlZGl0YCAqL1xuICBAT3V0cHV0KCkgZWRpdCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgLyoqIEBkZXByZWNhdGVkIETDuW5nIGBhY3Rpb25DbGlja2AgduG7m2kga2V5IGBtb3JlYCAqL1xuICBAT3V0cHV0KCkgbW9yZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBnZXQgcmVzb2x2ZWRBY3Rpb25zKCk6IEdlb1Jvd0FjdGlvbltdIHtcbiAgICByZXR1cm4gdGhpcy5hY3Rpb25zPy5sZW5ndGggPyB0aGlzLmFjdGlvbnMgOiBERUZBVUxUX1VJX1JPV19BQ1RJT05TO1xuICB9XG5cbiAgZ2V0IGVuYWJsZWRBY3Rpb25zKCk6IEdlb1Jvd0FjdGlvbltdIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZEFjdGlvbnMuZmlsdGVyKChhY3Rpb24pID0+ICFhY3Rpb24uZGlzYWJsZWQpO1xuICB9XG5cbiAgZ2V0IGlubGluZUFjdGlvbnMoKTogR2VvUm93QWN0aW9uW10ge1xuICAgIHJldHVybiBwaWNrSW5saW5lUm93QWN0aW9ucyh0aGlzLmVuYWJsZWRBY3Rpb25zLCB0aGlzLnByaW1hcnlBY3Rpb25LZXkpO1xuICB9XG5cbiAgZ2V0IG92ZXJmbG93QWN0aW9ucygpOiBHZW9Sb3dBY3Rpb25bXSB7XG4gICAgcmV0dXJuIHBpY2tPdmVyZmxvd1Jvd0FjdGlvbnModGhpcy5lbmFibGVkQWN0aW9ucywgdGhpcy5wcmltYXJ5QWN0aW9uS2V5KTtcbiAgfVxuXG4gIGdldCBoYXNPdmVyZmxvdygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5vdmVyZmxvd0FjdGlvbnMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIG9uQWN0aW9uQ2xpY2soZXZlbnQ6IEV2ZW50LCBhY3Rpb246IEdlb1Jvd0FjdGlvbik6IHZvaWQge1xuICAgIGlmIChhY3Rpb24uZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmFjdGlvbkNsaWNrLmVtaXQoYWN0aW9uLmtleSk7XG5cbiAgICBpZiAoYWN0aW9uLmtleSA9PT0gJ2VkaXQnKSB7XG4gICAgICB0aGlzLmVkaXQuZW1pdCgpO1xuICAgIH1cblxuICAgIGlmIChhY3Rpb24ua2V5ID09PSAnbW9yZScpIHtcbiAgICAgIHRoaXMubW9yZS5lbWl0KCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZ2VvLXJvdy1hY3Rpb25zXCI+XG4gIEBmb3IgKGFjdGlvbiBvZiBpbmxpbmVBY3Rpb25zOyB0cmFjayBhY3Rpb24ua2V5KSB7XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImdlby1yb3ctYWN0aW9uc19fYnRuXCJcbiAgICAgIFtjbGFzcy5nZW8tcm93LWFjdGlvbnNfX2J0bi0tZGFuZ2VyXT1cImFjdGlvbi5kYW5nZXJcIlxuICAgICAgW256LXRvb2x0aXBdPVwiYWN0aW9uLnRpdGxlID8/IGFjdGlvbi5sYWJlbCA/PyAnJ1wiXG4gICAgICBbZGlzYWJsZWRdPVwiYWN0aW9uLmRpc2FibGVkXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYWN0aW9uLmxhYmVsID8/IGFjdGlvbi50aXRsZSA/PyBhY3Rpb24ua2V5XCJcbiAgICAgIChjbGljayk9XCJvbkFjdGlvbkNsaWNrKCRldmVudCwgYWN0aW9uKVwiXG4gICAgPlxuICAgICAgPHNwYW4gbnotaWNvbiBbbnpUeXBlXT1cImFjdGlvbi5pY29uXCIgW256VGhlbWVdPVwiYWN0aW9uLmljb25UaGVtZSA/PyAnb3V0bGluZSdcIj48L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIH1cblxuICBAaWYgKGhhc092ZXJmbG93KSB7XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImdlby1yb3ctYWN0aW9uc19fYnRuXCJcbiAgICAgIG56LWRyb3Bkb3duXG4gICAgICBbbnpEcm9wZG93bk1lbnVdPVwib3ZlcmZsb3dNZW51XCJcbiAgICAgIG56VHJpZ2dlcj1cImNsaWNrXCJcbiAgICAgIG56UGxhY2VtZW50PVwiYm90dG9tUmlnaHRcIlxuICAgICAgbnotdG9vbHRpcD1cIlRow6ptIHRoYW8gdMOhY1wiXG4gICAgICBhcmlhLWxhYmVsPVwiVGjDqm0gdGhhbyB0w6FjXCJcbiAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgID5cbiAgICAgIDxzcGFuIG56LWljb24gbnpUeXBlPVwibW9yZVwiIG56VGhlbWU9XCJvdXRsaW5lXCI+PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPG56LWRyb3Bkb3duLW1lbnUgI292ZXJmbG93TWVudT1cIm56RHJvcGRvd25NZW51XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ2VvLXJvdy1hY3Rpb25zX19wYW5lbFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgQGZvciAoYWN0aW9uIG9mIG92ZXJmbG93QWN0aW9uczsgdHJhY2sgYWN0aW9uLmtleSkge1xuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJnZW8tcm93LWFjdGlvbnNfX3BhbmVsLWl0ZW1cIlxuICAgICAgICAgICAgW2NsYXNzLmdlby1yb3ctYWN0aW9uc19fcGFuZWwtaXRlbS0tZGFuZ2VyXT1cImFjdGlvbi5kYW5nZXJcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhY3Rpb24ubGFiZWwgPz8gYWN0aW9uLnRpdGxlID8/IGFjdGlvbi5rZXlcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soJGV2ZW50LCBhY3Rpb24pXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cImdlby1yb3ctYWN0aW9uc19fcGFuZWwtaWNvblwiXG4gICAgICAgICAgICAgIG56LWljb25cbiAgICAgICAgICAgICAgW256VHlwZV09XCJhY3Rpb24uaWNvblwiXG4gICAgICAgICAgICAgIFtuelRoZW1lXT1cImFjdGlvbi5pY29uVGhlbWUgPz8gJ291dGxpbmUnXCJcbiAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdlby1yb3ctYWN0aW9uc19fcGFuZWwtbGFiZWxcIj5cbiAgICAgICAgICAgICAge3sgYWN0aW9uLmxhYmVsID8/IGFjdGlvbi50aXRsZSA/PyBhY3Rpb24ua2V5IH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvbnotZHJvcGRvd24tbWVudT5cbiAgfVxuPC9kaXY+XG4iXX0=
|