@geoit/ui 0.0.8 → 0.1.1
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/ai/AGENTS.md +4 -0
- package/ai/README.md +4 -1
- package/ai/catalog.json +202 -56
- package/ai/components/geo-accordion.md +92 -0
- package/ai/components/geo-detail-view.md +91 -0
- package/ai/components/geo-map-admin-filter.md +0 -1
- package/ai/components/geo-map-legend.md +0 -1
- package/ai/components/geo-map-shell.md +3 -7
- package/ai/components/geo-switch.md +76 -0
- package/ai/components/geo-tree.md +0 -2
- package/ai/mockup.html +2 -2
- package/esm2022/lib/figma/geo-accordion/geo-accordion.component.mjs +67 -0
- package/esm2022/lib/figma/geo-accordion/geo-accordion.types.mjs +2 -0
- package/esm2022/lib/figma/geo-chart/geo-chart.component.mjs +3 -14
- package/esm2022/lib/figma/geo-detail-view/geo-detail-view.component.mjs +47 -0
- package/esm2022/lib/figma/geo-detail-view/geo-detail-view.types.mjs +2 -0
- package/esm2022/lib/figma/geo-list-page/geo-list-page.component.mjs +3 -3
- package/esm2022/lib/figma/geo-map/chrome/geo-map-admin-filter/geo-map-admin-filter.component.mjs +3 -5
- package/esm2022/lib/figma/geo-map/chrome/geo-map-basemap-switcher/geo-map-basemap-switcher.component.mjs +3 -3
- package/esm2022/lib/figma/geo-map/chrome/geo-map-layers-drawer/geo-map-layers-drawer.component.mjs +3 -3
- package/esm2022/lib/figma/geo-map/chrome/geo-map-legend/geo-map-legend.component.mjs +3 -5
- package/esm2022/lib/figma/geo-map/chrome/geo-map-locate/geo-map-locate.component.mjs +16 -39
- package/esm2022/lib/figma/geo-map/chrome/geo-map-locate/geo-map-locate.util.mjs +38 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-opacity/geo-map-opacity.component.mjs +3 -3
- package/esm2022/lib/figma/geo-map/chrome/geo-map-parcel-popup/geo-map-parcel-popup.component.mjs +2 -2
- package/esm2022/lib/figma/geo-map/chrome/geo-map-search/geo-map-search.component.mjs +3 -3
- package/esm2022/lib/figma/geo-map/chrome/geo-map-shell/geo-map-shell.component.mjs +23 -20
- package/esm2022/lib/figma/geo-map/chrome/geo-map-snapshot/geo-map-snapshot.component.mjs +3 -3
- package/esm2022/lib/figma/geo-map/chrome/geo-map-toolbar/geo-map-toolbar.component.mjs +3 -3
- package/esm2022/lib/figma/geo-map/chrome/geo-map-zoom/geo-map-zoom.component.mjs +3 -3
- package/esm2022/lib/figma/geo-map/geo-map.constants.mjs +5 -5
- package/esm2022/lib/figma/geo-switch/geo-switch.component.mjs +44 -0
- package/esm2022/lib/figma/geo-tree/geo-tree.component.mjs +3 -17
- package/esm2022/lib/figma/index.mjs +6 -1
- package/fesm2022/geoit-ui.mjs +262 -130
- package/fesm2022/geoit-ui.mjs.map +1 -1
- package/lib/figma/geo-accordion/geo-accordion.component.d.ts +34 -0
- package/lib/figma/geo-accordion/geo-accordion.types.d.ts +7 -0
- package/lib/figma/geo-chart/geo-chart.component.d.ts +0 -9
- package/lib/figma/geo-detail-view/geo-detail-view.component.d.ts +30 -0
- package/lib/figma/geo-detail-view/geo-detail-view.types.d.ts +8 -0
- package/lib/figma/geo-map/chrome/geo-map-admin-filter/geo-map-admin-filter.component.d.ts +1 -3
- package/lib/figma/geo-map/chrome/geo-map-legend/geo-map-legend.component.d.ts +1 -3
- package/lib/figma/geo-map/chrome/geo-map-locate/geo-map-locate.util.d.ts +16 -0
- package/lib/figma/geo-map/chrome/geo-map-shell/geo-map-shell.component.d.ts +6 -14
- package/lib/figma/geo-map/geo-map.constants.d.ts +3 -3
- package/lib/figma/geo-switch/geo-switch.component.d.ts +25 -0
- package/lib/figma/geo-tree/geo-tree.component.d.ts +1 -5
- package/lib/figma/index.d.ts +5 -0
- package/package.json +1 -1
package/fesm2022/geoit-ui.mjs
CHANGED
|
@@ -6,11 +6,11 @@ import { NzAnchorModule } from 'ng-zorro-antd/anchor';
|
|
|
6
6
|
import { NzAutocompleteModule } from 'ng-zorro-antd/auto-complete';
|
|
7
7
|
import { NzAvatarModule } from 'ng-zorro-antd/avatar';
|
|
8
8
|
import { NzBackTopModule } from 'ng-zorro-antd/back-top';
|
|
9
|
-
import * as i1$
|
|
9
|
+
import * as i1$8 from 'ng-zorro-antd/badge';
|
|
10
10
|
import { NzBadgeModule } from 'ng-zorro-antd/badge';
|
|
11
11
|
import * as i2 from 'ng-zorro-antd/breadcrumb';
|
|
12
12
|
import { NzBreadCrumbModule } from 'ng-zorro-antd/breadcrumb';
|
|
13
|
-
import * as i1$
|
|
13
|
+
import * as i1$d from 'ng-zorro-antd/button';
|
|
14
14
|
import { NzButtonModule } from 'ng-zorro-antd/button';
|
|
15
15
|
import { NzCalendarModule } from 'ng-zorro-antd/calendar';
|
|
16
16
|
import { NzCardModule } from 'ng-zorro-antd/card';
|
|
@@ -18,6 +18,7 @@ import { NzCarouselModule } from 'ng-zorro-antd/carousel';
|
|
|
18
18
|
import { NzCascaderModule } from 'ng-zorro-antd/cascader';
|
|
19
19
|
import * as i1$3 from 'ng-zorro-antd/checkbox';
|
|
20
20
|
import { NzCheckboxModule } from 'ng-zorro-antd/checkbox';
|
|
21
|
+
import * as i1$a from 'ng-zorro-antd/collapse';
|
|
21
22
|
import { NzCollapseModule } from 'ng-zorro-antd/collapse';
|
|
22
23
|
import { NzCommentModule } from 'ng-zorro-antd/comment';
|
|
23
24
|
import { NzNoAnimationModule } from 'ng-zorro-antd/core/no-animation';
|
|
@@ -26,6 +27,7 @@ import * as i3$1 from 'ng-zorro-antd/core/wave';
|
|
|
26
27
|
import { NzWaveModule } from 'ng-zorro-antd/core/wave';
|
|
27
28
|
import * as i2$1 from 'ng-zorro-antd/date-picker';
|
|
28
29
|
import { NzDatePickerModule } from 'ng-zorro-antd/date-picker';
|
|
30
|
+
import * as i1$e from 'ng-zorro-antd/descriptions';
|
|
29
31
|
import { NzDescriptionsModule } from 'ng-zorro-antd/descriptions';
|
|
30
32
|
import { NzDividerModule } from 'ng-zorro-antd/divider';
|
|
31
33
|
import { NzDrawerModule } from 'ng-zorro-antd/drawer';
|
|
@@ -49,7 +51,7 @@ import * as i3 from 'ng-zorro-antd/modal';
|
|
|
49
51
|
import { NzModalModule } from 'ng-zorro-antd/modal';
|
|
50
52
|
import { NzNotificationModule, NzNotificationService } from 'ng-zorro-antd/notification';
|
|
51
53
|
import { NzPageHeaderModule } from 'ng-zorro-antd/page-header';
|
|
52
|
-
import * as i1$
|
|
54
|
+
import * as i1$7 from 'ng-zorro-antd/pagination';
|
|
53
55
|
import { NzPaginationModule } from 'ng-zorro-antd/pagination';
|
|
54
56
|
import { NzPopconfirmModule } from 'ng-zorro-antd/popconfirm';
|
|
55
57
|
import { NzPopoverModule } from 'ng-zorro-antd/popover';
|
|
@@ -66,10 +68,11 @@ import { NzSliderModule } from 'ng-zorro-antd/slider';
|
|
|
66
68
|
import { NzSpinModule } from 'ng-zorro-antd/spin';
|
|
67
69
|
import { NzStatisticModule } from 'ng-zorro-antd/statistic';
|
|
68
70
|
import { NzStepsModule } from 'ng-zorro-antd/steps';
|
|
71
|
+
import * as i1$5 from 'ng-zorro-antd/switch';
|
|
69
72
|
import { NzSwitchModule } from 'ng-zorro-antd/switch';
|
|
70
|
-
import * as i1$
|
|
73
|
+
import * as i1$b from 'ng-zorro-antd/table';
|
|
71
74
|
import { NzTableModule } from 'ng-zorro-antd/table';
|
|
72
|
-
import * as i1$
|
|
75
|
+
import * as i1$9 from 'ng-zorro-antd/tabs';
|
|
73
76
|
import { NzTabsModule } from 'ng-zorro-antd/tabs';
|
|
74
77
|
import { NzTagModule } from 'ng-zorro-antd/tag';
|
|
75
78
|
import { NzTimePickerModule } from 'ng-zorro-antd/time-picker';
|
|
@@ -77,7 +80,7 @@ import { NzTimelineModule } from 'ng-zorro-antd/timeline';
|
|
|
77
80
|
import * as i1$2 from 'ng-zorro-antd/tooltip';
|
|
78
81
|
import { NzToolTipModule } from 'ng-zorro-antd/tooltip';
|
|
79
82
|
import { NzTransferModule } from 'ng-zorro-antd/transfer';
|
|
80
|
-
import * as i1$
|
|
83
|
+
import * as i1$c from 'ng-zorro-antd/tree';
|
|
81
84
|
import { NzTreeModule } from 'ng-zorro-antd/tree';
|
|
82
85
|
import { NzTreeViewModule } from 'ng-zorro-antd/tree-view';
|
|
83
86
|
import { NzTreeSelectModule } from 'ng-zorro-antd/tree-select';
|
|
@@ -93,7 +96,7 @@ import * as i1$1 from '@angular/router';
|
|
|
93
96
|
import { RouterModule } from '@angular/router';
|
|
94
97
|
import * as i1$4 from '@angular/forms';
|
|
95
98
|
import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
96
|
-
import * as i1$
|
|
99
|
+
import * as i1$6 from 'ng-zorro-antd/core/transition-patch';
|
|
97
100
|
import { Subscription } from 'rxjs';
|
|
98
101
|
import { NzConfigService } from 'ng-zorro-antd/core/config';
|
|
99
102
|
import GeoJSON from 'ol/format/GeoJSON';
|
|
@@ -683,6 +686,44 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
683
686
|
args: [{ selector: 'geo-checkbox', standalone: true, imports: [NgZorroAntdModule, FormsModule], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<label\n nz-checkbox\n class=\"geo-checkbox\"\n [nzDisabled]=\"disabled()\"\n [nzIndeterminate]=\"indeterminate()\"\n [ngModel]=\"checked()\"\n (ngModelChange)=\"onChange($event)\"\n>{{ label() }}</label>\n", styles: ["geo-checkbox{display:inline-block;--ant-primary-color: var(--geo-color-primary-default);--ant-primary-color-hover: var(--geo-color-primary-hover);--ant-primary-color-active: var(--geo-color-primary-hover)}geo-checkbox .geo-checkbox{font-size:14px;color:var(--geo-color-neutral-900)}geo-checkbox .ant-checkbox:not(.ant-checkbox-disabled):hover .ant-checkbox-inner{border-color:var(--geo-color-primary-default)!important}geo-checkbox .ant-checkbox-checked:not(.ant-checkbox-disabled) .ant-checkbox-inner{background-color:var(--geo-color-primary-default)!important;border-color:var(--geo-color-primary-default)!important}geo-checkbox .ant-checkbox-checked:not(.ant-checkbox-disabled):after{border-color:var(--geo-color-primary-default)!important}geo-checkbox .ant-checkbox-indeterminate:not(.ant-checkbox-disabled) .ant-checkbox-inner{background-color:var(--geo-color-neutral-white)!important;border-color:var(--geo-color-primary-default)!important}geo-checkbox .ant-checkbox-indeterminate:not(.ant-checkbox-disabled) .ant-checkbox-inner:after{background-color:var(--geo-color-primary-default)!important}geo-checkbox .ant-checkbox-input:focus+.ant-checkbox-inner,geo-checkbox .ant-checkbox-input:focus-visible+.ant-checkbox-inner{border-color:var(--geo-color-primary-default)!important}geo-checkbox .ant-checkbox-checked:not(.ant-checkbox-disabled):hover .ant-checkbox-inner{background-color:var(--geo-color-primary-hover)!important;border-color:var(--geo-color-primary-hover)!important}geo-checkbox .ant-checkbox-indeterminate:not(.ant-checkbox-disabled):hover .ant-checkbox-inner{border-color:var(--geo-color-primary-hover)!important}geo-checkbox .ant-checkbox-indeterminate:not(.ant-checkbox-disabled):hover .ant-checkbox-inner:after{background-color:var(--geo-color-primary-hover)!important}geo-checkbox .ant-checkbox-disabled .ant-checkbox-inner{background-color:var(--geo-color-neutral-100)!important;border-color:var(--geo-color-neutral-300)!important}geo-checkbox .ant-checkbox-disabled.ant-checkbox-checked .ant-checkbox-inner:after{border-color:#00000040!important}geo-checkbox .ant-checkbox-disabled.ant-checkbox-indeterminate .ant-checkbox-inner:after{background-color:#00000040!important}\n"] }]
|
|
684
687
|
}] });
|
|
685
688
|
|
|
689
|
+
/**
|
|
690
|
+
* On/off toggle with optional trailing label.
|
|
691
|
+
*
|
|
692
|
+
* @summary Công tắc bật/tắt (nz-switch); nhãn tùy chọn bên cạnh.
|
|
693
|
+
* @whenToUse Bật/tắt trạng thái tức thì (không cần Lưu) — ví dụ hiển thị/ẩn, kích hoạt.
|
|
694
|
+
* @doNotUseWhen Lựa chọn trong form cần submit — use geo-checkbox.
|
|
695
|
+
*/
|
|
696
|
+
class GeoSwitchComponent {
|
|
697
|
+
label = input('');
|
|
698
|
+
/** Two-way: `[(checked)]`. */
|
|
699
|
+
checked = model(false);
|
|
700
|
+
disabled = input(false);
|
|
701
|
+
loading = input(false);
|
|
702
|
+
size = input('default');
|
|
703
|
+
/** Text hiển thị trong pill khi bật. */
|
|
704
|
+
checkedLabel = input('');
|
|
705
|
+
/** Text hiển thị trong pill khi tắt. */
|
|
706
|
+
uncheckedLabel = input('');
|
|
707
|
+
onChange(value) {
|
|
708
|
+
this.checked.set(value);
|
|
709
|
+
}
|
|
710
|
+
onLabelClick() {
|
|
711
|
+
if (this.disabled() || this.loading()) {
|
|
712
|
+
return;
|
|
713
|
+
}
|
|
714
|
+
this.onChange(!this.checked());
|
|
715
|
+
}
|
|
716
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoSwitchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
717
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoSwitchComponent, isStandalone: true, selector: "geo-switch", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, checkedLabel: { classPropertyName: "checkedLabel", publicName: "checkedLabel", isSignal: true, isRequired: false, transformFunction: null }, uncheckedLabel: { classPropertyName: "uncheckedLabel", publicName: "uncheckedLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange" }, host: { properties: { "class.geo-switch-host--disabled": "disabled()" }, classAttribute: "geo-switch-host" }, ngImport: i0, template: "<span class=\"geo-switch\">\n <nz-switch\n [ngModel]=\"checked()\"\n (ngModelChange)=\"onChange($event)\"\n [nzDisabled]=\"disabled()\"\n [nzLoading]=\"loading()\"\n [nzSize]=\"size()\"\n [nzCheckedChildren]=\"checkedLabel() || null\"\n [nzUnCheckedChildren]=\"uncheckedLabel() || null\"\n ></nz-switch>\n @if (label()) {\n <span class=\"geo-switch__label\" (click)=\"onLabelClick()\">{{ label() }}</span>\n }\n</span>\n", styles: [".geo-switch-host{display:inline-block}.geo-switch{display:inline-flex;align-items:center;gap:8px}.geo-switch__label{font-family:var(--geo-font-family);font-size:14px;line-height:20px;color:var(--geo-color-neutral-900);cursor:pointer;-webkit-user-select:none;user-select:none}.geo-switch-host--disabled .geo-switch__label{color:var(--geo-color-neutral-disabled-text);cursor:not-allowed}\n"], dependencies: [{ kind: "ngmodule", type: NgZorroAntdModule }, { kind: "component", type: i1$5.NzSwitchComponent, selector: "nz-switch", inputs: ["nzLoading", "nzDisabled", "nzControl", "nzCheckedChildren", "nzUnCheckedChildren", "nzSize", "nzId"], exportAs: ["nzSwitch"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
718
|
+
}
|
|
719
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoSwitchComponent, decorators: [{
|
|
720
|
+
type: Component,
|
|
721
|
+
args: [{ selector: 'geo-switch', standalone: true, imports: [NgZorroAntdModule, FormsModule], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
722
|
+
class: 'geo-switch-host',
|
|
723
|
+
'[class.geo-switch-host--disabled]': 'disabled()',
|
|
724
|
+
}, template: "<span class=\"geo-switch\">\n <nz-switch\n [ngModel]=\"checked()\"\n (ngModelChange)=\"onChange($event)\"\n [nzDisabled]=\"disabled()\"\n [nzLoading]=\"loading()\"\n [nzSize]=\"size()\"\n [nzCheckedChildren]=\"checkedLabel() || null\"\n [nzUnCheckedChildren]=\"uncheckedLabel() || null\"\n ></nz-switch>\n @if (label()) {\n <span class=\"geo-switch__label\" (click)=\"onLabelClick()\">{{ label() }}</span>\n }\n</span>\n", styles: [".geo-switch-host{display:inline-block}.geo-switch{display:inline-flex;align-items:center;gap:8px}.geo-switch__label{font-family:var(--geo-font-family);font-size:14px;line-height:20px;color:var(--geo-color-neutral-900);cursor:pointer;-webkit-user-select:none;user-select:none}.geo-switch-host--disabled .geo-switch__label{color:var(--geo-color-neutral-disabled-text);cursor:not-allowed}\n"] }]
|
|
725
|
+
}] });
|
|
726
|
+
|
|
686
727
|
class GeoConfirmModalComponent {
|
|
687
728
|
visible = model(false);
|
|
688
729
|
title = input('Xác nhận xoá');
|
|
@@ -712,7 +753,7 @@ class GeoConfirmModalComponent {
|
|
|
712
753
|
this.confirm.emit();
|
|
713
754
|
}
|
|
714
755
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoConfirmModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
715
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoConfirmModalComponent, isStandalone: true, selector: "geo-confirm-modal", inputs: { visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, highlight: { classPropertyName: "highlight", publicName: "highlight", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, cancelText: { classPropertyName: "cancelText", publicName: "cancelText", isSignal: true, isRequired: false, transformFunction: null }, confirmText: { classPropertyName: "confirmText", publicName: "confirmText", isSignal: true, isRequired: false, transformFunction: null }, confirmLoading: { classPropertyName: "confirmLoading", publicName: "confirmLoading", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, maskClosable: { classPropertyName: "maskClosable", publicName: "maskClosable", isSignal: true, isRequired: false, transformFunction: null }, closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visible: "visibleChange", confirm: "confirm", cancel: "cancel" }, ngImport: i0, template: "<nz-modal\n [nzVisible]=\"visible()\"\n [nzTitle]=\"''\"\n [nzFooter]=\"null\"\n [nzClosable]=\"false\"\n [nzMaskClosable]=\"maskClosable()\"\n [nzWidth]=\"width()\"\n nzWrapClassName=\"geo-confirm-modal-wrap\"\n nzClassName=\"geo-confirm-modal\"\n (nzVisibleChange)=\"onVisibleChange($event)\"\n>\n <ng-container *nzModalContent>\n <div class=\"geo-confirm-modal__content\">\n <div class=\"geo-confirm-modal__header\">\n <h2 class=\"geo-confirm-modal__title\">{{ title() }}</h2>\n @if (closable()) {\n <button\n type=\"button\"\n class=\"geo-confirm-modal__close\"\n aria-label=\"\u0110\u00F3ng\"\n (click)=\"onCancel()\"\n >\n <span nz-icon nzType=\"close\" nzTheme=\"outline\"></span>\n </button>\n }\n </div>\n\n <div class=\"geo-confirm-modal__body\">\n @if (hasDefaultBody()) {\n <div class=\"geo-confirm-modal__message\">\n @if (message() || highlight()) {\n <p class=\"geo-confirm-modal__paragraph\">\n @if (message()) {\n <span>{{ message() }}</span>\n }\n @if (highlight()) {\n <strong class=\"geo-confirm-modal__highlight\">\u201C{{ highlight() }}\u201D</strong>\n }\n </p>\n }\n @if (description()) {\n <p class=\"geo-confirm-modal__paragraph\">{{ description() }}</p>\n }\n </div>\n } @else {\n <div class=\"geo-confirm-modal__message\">\n <ng-content></ng-content>\n </div>\n }\n </div>\n\n <div class=\"geo-confirm-modal__footer\">\n <geo-button appearance=\"secondary\" color=\"brand\" (clicked)=\"onCancel()\">\n {{ cancelText() }}\n </geo-button>\n <geo-button\n appearance=\"primary\"\n color=\"brand\"\n [disabled]=\"confirmLoading()\"\n (clicked)=\"onConfirm()\"\n >\n {{ confirmText() }}\n </geo-button>\n </div>\n </div>\n </ng-container>\n</nz-modal>\n", styles: [".geo-confirm-modal-wrap .ant-modal-header{display:none}.geo-confirm-modal-wrap .ant-modal-content{border-radius:var(--geo-radius-lg);padding:0;overflow:hidden;box-shadow:var(--geo-shadow-md)}.geo-confirm-modal-wrap .ant-modal-body{padding:0}.geo-confirm-modal__content{display:flex;flex-direction:column;gap:17px;padding:24px;background:var(--geo-color-surface-elevated)}.geo-confirm-modal__header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:16px}.geo-confirm-modal__title{margin:0;font-size:18px;font-weight:700;line-height:normal;color:var(--geo-color-neutral-500)}.geo-confirm-modal__close{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;background:transparent;color:var(--geo-color-neutral-500);cursor:pointer;flex-shrink:0}.geo-confirm-modal__close:hover{color:var(--geo-color-neutral-900)}.geo-confirm-modal__body{display:flex;flex-direction:column}.geo-confirm-modal__message{display:flex;flex-direction:column;gap:8px;max-width:397px;font-size:14px;line-height:1.4;color:var(--geo-color-neutral-900)}.geo-confirm-modal__paragraph{margin:0}.geo-confirm-modal__highlight{font-weight:600}.geo-confirm-modal__footer{display:flex;align-items:center;justify-content:flex-end;gap:12px}\n"], dependencies: [{ kind: "ngmodule", type: NgZorroAntdModule }, { kind: "directive", type: i1$
|
|
756
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoConfirmModalComponent, isStandalone: true, selector: "geo-confirm-modal", inputs: { visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, highlight: { classPropertyName: "highlight", publicName: "highlight", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, cancelText: { classPropertyName: "cancelText", publicName: "cancelText", isSignal: true, isRequired: false, transformFunction: null }, confirmText: { classPropertyName: "confirmText", publicName: "confirmText", isSignal: true, isRequired: false, transformFunction: null }, confirmLoading: { classPropertyName: "confirmLoading", publicName: "confirmLoading", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, maskClosable: { classPropertyName: "maskClosable", publicName: "maskClosable", isSignal: true, isRequired: false, transformFunction: null }, closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visible: "visibleChange", confirm: "confirm", cancel: "cancel" }, ngImport: i0, template: "<nz-modal\n [nzVisible]=\"visible()\"\n [nzTitle]=\"''\"\n [nzFooter]=\"null\"\n [nzClosable]=\"false\"\n [nzMaskClosable]=\"maskClosable()\"\n [nzWidth]=\"width()\"\n nzWrapClassName=\"geo-confirm-modal-wrap\"\n nzClassName=\"geo-confirm-modal\"\n (nzVisibleChange)=\"onVisibleChange($event)\"\n>\n <ng-container *nzModalContent>\n <div class=\"geo-confirm-modal__content\">\n <div class=\"geo-confirm-modal__header\">\n <h2 class=\"geo-confirm-modal__title\">{{ title() }}</h2>\n @if (closable()) {\n <button\n type=\"button\"\n class=\"geo-confirm-modal__close\"\n aria-label=\"\u0110\u00F3ng\"\n (click)=\"onCancel()\"\n >\n <span nz-icon nzType=\"close\" nzTheme=\"outline\"></span>\n </button>\n }\n </div>\n\n <div class=\"geo-confirm-modal__body\">\n @if (hasDefaultBody()) {\n <div class=\"geo-confirm-modal__message\">\n @if (message() || highlight()) {\n <p class=\"geo-confirm-modal__paragraph\">\n @if (message()) {\n <span>{{ message() }}</span>\n }\n @if (highlight()) {\n <strong class=\"geo-confirm-modal__highlight\">\u201C{{ highlight() }}\u201D</strong>\n }\n </p>\n }\n @if (description()) {\n <p class=\"geo-confirm-modal__paragraph\">{{ description() }}</p>\n }\n </div>\n } @else {\n <div class=\"geo-confirm-modal__message\">\n <ng-content></ng-content>\n </div>\n }\n </div>\n\n <div class=\"geo-confirm-modal__footer\">\n <geo-button appearance=\"secondary\" color=\"brand\" (clicked)=\"onCancel()\">\n {{ cancelText() }}\n </geo-button>\n <geo-button\n appearance=\"primary\"\n color=\"brand\"\n [disabled]=\"confirmLoading()\"\n (clicked)=\"onConfirm()\"\n >\n {{ confirmText() }}\n </geo-button>\n </div>\n </div>\n </ng-container>\n</nz-modal>\n", styles: [".geo-confirm-modal-wrap .ant-modal-header{display:none}.geo-confirm-modal-wrap .ant-modal-content{border-radius:var(--geo-radius-lg);padding:0;overflow:hidden;box-shadow:var(--geo-shadow-md)}.geo-confirm-modal-wrap .ant-modal-body{padding:0}.geo-confirm-modal__content{display:flex;flex-direction:column;gap:17px;padding:24px;background:var(--geo-color-surface-elevated)}.geo-confirm-modal__header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:16px}.geo-confirm-modal__title{margin:0;font-size:18px;font-weight:700;line-height:normal;color:var(--geo-color-neutral-500)}.geo-confirm-modal__close{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;background:transparent;color:var(--geo-color-neutral-500);cursor:pointer;flex-shrink:0}.geo-confirm-modal__close:hover{color:var(--geo-color-neutral-900)}.geo-confirm-modal__body{display:flex;flex-direction:column}.geo-confirm-modal__message{display:flex;flex-direction:column;gap:8px;max-width:397px;font-size:14px;line-height:1.4;color:var(--geo-color-neutral-900)}.geo-confirm-modal__paragraph{margin:0}.geo-confirm-modal__highlight{font-weight:600}.geo-confirm-modal__footer{display:flex;align-items:center;justify-content:flex-end;gap:12px}\n"], dependencies: [{ kind: "ngmodule", type: NgZorroAntdModule }, { kind: "directive", type: i1$6.ɵ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: i1.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: i3.NzModalComponent, selector: "nz-modal", inputs: ["nzMask", "nzMaskClosable", "nzCloseOnNavigation", "nzVisible", "nzClosable", "nzOkLoading", "nzOkDisabled", "nzCancelDisabled", "nzCancelLoading", "nzKeyboard", "nzNoAnimation", "nzCentered", "nzDraggable", "nzContent", "nzFooter", "nzZIndex", "nzWidth", "nzWrapClassName", "nzClassName", "nzStyle", "nzTitle", "nzCloseIcon", "nzMaskStyle", "nzBodyStyle", "nzOkText", "nzCancelText", "nzOkType", "nzOkDanger", "nzIconType", "nzModalType", "nzAutofocus", "nzOnOk", "nzOnCancel"], outputs: ["nzOnOk", "nzOnCancel", "nzAfterOpen", "nzAfterClose", "nzVisibleChange"], exportAs: ["nzModal"] }, { kind: "directive", type: i3.NzModalContentDirective, selector: "[nzModalContent]", exportAs: ["nzModalContent"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "component", type: GeoButtonComponent, selector: "geo-button", inputs: ["appearance", "color", "icon", "iconTheme", "iconPlacement", "iconOnly", "type", "disabled", "tooltip", "tooltipPlacement", "active", "title"], outputs: ["clicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
716
757
|
}
|
|
717
758
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoConfirmModalComponent, decorators: [{
|
|
718
759
|
type: Component,
|
|
@@ -1263,7 +1304,7 @@ class GeoFormModalComponent {
|
|
|
1263
1304
|
}
|
|
1264
1305
|
}
|
|
1265
1306
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoFormModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1266
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoFormModalComponent, isStandalone: true, selector: "geo-form-modal", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, titleUppercase: { classPropertyName: "titleUppercase", publicName: "titleUppercase", isSignal: true, isRequired: false, transformFunction: null }, okText: { classPropertyName: "okText", publicName: "okText", isSignal: true, isRequired: false, transformFunction: null }, cancelText: { classPropertyName: "cancelText", publicName: "cancelText", isSignal: true, isRequired: false, transformFunction: null }, cancelIcon: { classPropertyName: "cancelIcon", publicName: "cancelIcon", isSignal: true, isRequired: false, transformFunction: null }, cancelIconPlacement: { classPropertyName: "cancelIconPlacement", publicName: "cancelIconPlacement", isSignal: true, isRequired: false, transformFunction: null }, okIcon: { classPropertyName: "okIcon", publicName: "okIcon", isSignal: true, isRequired: false, transformFunction: null }, okIconPlacement: { classPropertyName: "okIconPlacement", publicName: "okIconPlacement", isSignal: true, isRequired: false, transformFunction: null }, secondaryOkText: { classPropertyName: "secondaryOkText", publicName: "secondaryOkText", isSignal: true, isRequired: false, transformFunction: null }, confirmLoading: { classPropertyName: "confirmLoading", publicName: "confirmLoading", isSignal: true, isRequired: false, transformFunction: null }, okDisabled: { classPropertyName: "okDisabled", publicName: "okDisabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null }, mask: { classPropertyName: "mask", publicName: "mask", isSignal: true, isRequired: false, transformFunction: null }, maskClosable: { classPropertyName: "maskClosable", publicName: "maskClosable", isSignal: true, isRequired: false, transformFunction: null }, keyboard: { classPropertyName: "keyboard", publicName: "keyboard", isSignal: true, isRequired: false, transformFunction: null }, centered: { classPropertyName: "centered", publicName: "centered", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, wrapClassName: { classPropertyName: "wrapClassName", publicName: "wrapClassName", isSignal: true, isRequired: false, transformFunction: null }, bodyScroll: { classPropertyName: "bodyScroll", publicName: "bodyScroll", isSignal: true, isRequired: false, transformFunction: null }, bodyMaxHeight: { classPropertyName: "bodyMaxHeight", publicName: "bodyMaxHeight", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", ok: "ok", secondaryOk: "secondaryOk", cancel: "cancel", afterOpen: "afterOpen", afterClose: "afterClose" }, ngImport: i0, template: "<nz-modal\n [nzVisible]=\"open()\"\n [nzTitle]=\"''\"\n [nzFooter]=\"null\"\n [nzClosable]=\"false\"\n [nzMask]=\"mask()\"\n [nzMaskClosable]=\"maskClosable()\"\n [nzKeyboard]=\"keyboard()\"\n [nzCentered]=\"centered()\"\n [nzWidth]=\"width()\"\n [nzZIndex]=\"zIndex()\"\n [nzWrapClassName]=\"resolvedWrapClassName()\"\n [nzClassName]=\"resolvedClassName()\"\n (nzVisibleChange)=\"onOpenChange($event)\"\n (nzAfterOpen)=\"afterOpen.emit()\"\n (nzAfterClose)=\"afterClose.emit()\"\n>\n <ng-container *nzModalContent>\n <div\n class=\"geo-form-modal__content\"\n [class.geo-form-modal__content--body-scroll]=\"bodyScroll()\"\n >\n <div class=\"geo-form-modal__header\">\n <h2\n class=\"geo-form-modal__title\"\n [class.geo-form-modal__title--uppercase]=\"titleUppercase()\"\n >\n {{ title() }}\n </h2>\n @if (closable()) {\n <button\n type=\"button\"\n class=\"geo-form-modal__close\"\n aria-label=\"\u0110\u00F3ng\"\n (click)=\"onCancel()\"\n >\n <span nz-icon nzType=\"close\" nzTheme=\"outline\"></span>\n </button>\n }\n </div>\n\n <div\n class=\"geo-form-modal__body\"\n [style.--geo-form-modal-body-max-height]=\"bodyScroll() ? bodyMaxHeightCss() : null\"\n >\n <ng-content></ng-content>\n </div>\n\n <div class=\"geo-form-modal__footer\">\n <ng-content select=\"[footerStart]\"></ng-content>\n\n <div class=\"geo-form-modal__footer-actions\">\n <geo-button\n appearance=\"secondary\"\n color=\"brand\"\n [icon]=\"cancelIcon()\"\n [iconPlacement]=\"cancelIconPlacement()\"\n (clicked)=\"onCancel()\"\n >\n {{ readonly() ? '\u0110\u00F3ng' : cancelText() }}\n </geo-button>\n @if (!readonly() && secondaryOkText()) {\n <geo-button\n appearance=\"secondary\"\n color=\"brand\"\n icon=\"save\"\n [disabled]=\"okDisabled() || confirmLoading()\"\n (clicked)=\"onSecondaryOk()\"\n >\n {{ secondaryOkText() }}\n </geo-button>\n }\n @if (!readonly()) {\n <geo-button\n appearance=\"primary\"\n color=\"brand\"\n [icon]=\"confirmLoading() ? 'loading' : okIcon()\"\n [iconPlacement]=\"okIconPlacement()\"\n [disabled]=\"okDisabled() || confirmLoading()\"\n (clicked)=\"onOk()\"\n >\n {{ okText() }}\n </geo-button>\n }\n </div>\n </div>\n </div>\n </ng-container>\n</nz-modal>\n", styles: [".geo-form-modal-wrap .ant-modal-header{display:none}.geo-form-modal-wrap .ant-modal{max-width:calc(100vw - 32px)}.geo-form-modal-wrap .ant-modal-content{border-radius:var(--geo-radius-lg);padding:0;overflow:hidden;box-shadow:var(--geo-shadow-md)}.geo-form-modal-wrap .ant-modal-body{padding:0}.geo-form-modal__content{display:flex;flex-direction:column;background:var(--geo-color-neutral-white);max-height:inherit}.geo-form-modal__header{position:relative;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-shrink:0;padding:24px 24px 16px;border-bottom:none}.geo-form-modal__header:after{content:\"\";position:absolute;left:24px;right:24px;bottom:0;height:1px;background:var(--geo-color-primary-default);pointer-events:none}.geo-form-modal__title{margin:0;min-width:0;font-family:var(--geo-font-family);font-size:var(--geo-font-size-h4);font-weight:var(--geo-font-weight-bold);line-height:var(--geo-line-height-h4);color:var(--geo-color-neutral-900);letter-spacing:.02em;word-break:break-word}.geo-form-modal__title--uppercase{text-transform:uppercase}.geo-form-modal__close{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-500);cursor:pointer;flex-shrink:0;transition:color .15s ease,background-color .15s ease}.geo-form-modal__close .anticon{font-size:14px}.geo-form-modal__close:hover{color:var(--geo-color-neutral-900);background:var(--geo-color-neutral-100)}.geo-form-modal__body{display:flex;flex-direction:column;gap:20px;flex:1 1 auto;min-width:0;min-height:0;padding:24px}.geo-form-modal__content--body-scroll .geo-form-modal__body{overflow-x:hidden;overflow-y:auto;max-height:var(--geo-form-modal-body-max-height, 60vh);-webkit-overflow-scrolling:touch}.geo-form-modal__footer{position:relative;display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:12px;flex-shrink:0;padding:16px 24px 24px;border-top:none;background:var(--geo-color-neutral-white)}.geo-form-modal__footer:before{content:\"\";position:absolute;left:24px;right:24px;top:0;height:1px;background:var(--geo-color-primary-default);pointer-events:none}.geo-form-modal__footer-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:12px;margin-left:auto}@media (max-width: 767.98px){.geo-form-modal-wrap .ant-modal{top:0;max-width:calc(100vw - 24px)!important;width:calc(100vw - 24px)!important;margin:12px auto!important;padding-bottom:0}.geo-form-modal-wrap .ant-modal-content{max-height:calc(100dvh - 24px);display:flex;flex-direction:column}.geo-form-modal-wrap .ant-modal-body{flex:1 1 auto;min-height:0;overflow:hidden}.geo-form-modal__content{max-height:calc(100dvh - 24px);min-height:0}.geo-form-modal__header{gap:12px;padding:24px 24px 16px}.geo-form-modal__title{font-size:var(--geo-font-size-subtitle)}.geo-form-modal__body{gap:16px;padding:24px}.geo-form-modal__content--body-scroll .geo-form-modal__body{max-height:none;flex:1 1 auto}.geo-form-modal__footer{justify-content:stretch;gap:8px;padding:16px 24px 24px}.geo-form-modal__footer-actions{width:100%;margin-left:0}.geo-form-modal__footer-actions>*{flex:1 1 calc(50% - 4px);min-width:0}.geo-form-modal__footer-actions>*:nth-child(n+3){flex:1 1 100%}.geo-form-modal__footer-actions geo-button{display:block;width:100%}.geo-form-modal__footer-actions .geo-button{width:100%;white-space:normal;height:auto;min-height:40px;padding-block:8px;text-align:center}}\n"], dependencies: [{ kind: "ngmodule", type: NgZorroAntdModule }, { kind: "directive", type: i1$5.ɵ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: i1.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: i3.NzModalComponent, selector: "nz-modal", inputs: ["nzMask", "nzMaskClosable", "nzCloseOnNavigation", "nzVisible", "nzClosable", "nzOkLoading", "nzOkDisabled", "nzCancelDisabled", "nzCancelLoading", "nzKeyboard", "nzNoAnimation", "nzCentered", "nzDraggable", "nzContent", "nzFooter", "nzZIndex", "nzWidth", "nzWrapClassName", "nzClassName", "nzStyle", "nzTitle", "nzCloseIcon", "nzMaskStyle", "nzBodyStyle", "nzOkText", "nzCancelText", "nzOkType", "nzOkDanger", "nzIconType", "nzModalType", "nzAutofocus", "nzOnOk", "nzOnCancel"], outputs: ["nzOnOk", "nzOnCancel", "nzAfterOpen", "nzAfterClose", "nzVisibleChange"], exportAs: ["nzModal"] }, { kind: "directive", type: i3.NzModalContentDirective, selector: "[nzModalContent]", exportAs: ["nzModalContent"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "component", type: GeoButtonComponent, selector: "geo-button", inputs: ["appearance", "color", "icon", "iconTheme", "iconPlacement", "iconOnly", "type", "disabled", "tooltip", "tooltipPlacement", "active", "title"], outputs: ["clicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
1307
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoFormModalComponent, isStandalone: true, selector: "geo-form-modal", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, titleUppercase: { classPropertyName: "titleUppercase", publicName: "titleUppercase", isSignal: true, isRequired: false, transformFunction: null }, okText: { classPropertyName: "okText", publicName: "okText", isSignal: true, isRequired: false, transformFunction: null }, cancelText: { classPropertyName: "cancelText", publicName: "cancelText", isSignal: true, isRequired: false, transformFunction: null }, cancelIcon: { classPropertyName: "cancelIcon", publicName: "cancelIcon", isSignal: true, isRequired: false, transformFunction: null }, cancelIconPlacement: { classPropertyName: "cancelIconPlacement", publicName: "cancelIconPlacement", isSignal: true, isRequired: false, transformFunction: null }, okIcon: { classPropertyName: "okIcon", publicName: "okIcon", isSignal: true, isRequired: false, transformFunction: null }, okIconPlacement: { classPropertyName: "okIconPlacement", publicName: "okIconPlacement", isSignal: true, isRequired: false, transformFunction: null }, secondaryOkText: { classPropertyName: "secondaryOkText", publicName: "secondaryOkText", isSignal: true, isRequired: false, transformFunction: null }, confirmLoading: { classPropertyName: "confirmLoading", publicName: "confirmLoading", isSignal: true, isRequired: false, transformFunction: null }, okDisabled: { classPropertyName: "okDisabled", publicName: "okDisabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null }, mask: { classPropertyName: "mask", publicName: "mask", isSignal: true, isRequired: false, transformFunction: null }, maskClosable: { classPropertyName: "maskClosable", publicName: "maskClosable", isSignal: true, isRequired: false, transformFunction: null }, keyboard: { classPropertyName: "keyboard", publicName: "keyboard", isSignal: true, isRequired: false, transformFunction: null }, centered: { classPropertyName: "centered", publicName: "centered", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, wrapClassName: { classPropertyName: "wrapClassName", publicName: "wrapClassName", isSignal: true, isRequired: false, transformFunction: null }, bodyScroll: { classPropertyName: "bodyScroll", publicName: "bodyScroll", isSignal: true, isRequired: false, transformFunction: null }, bodyMaxHeight: { classPropertyName: "bodyMaxHeight", publicName: "bodyMaxHeight", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", ok: "ok", secondaryOk: "secondaryOk", cancel: "cancel", afterOpen: "afterOpen", afterClose: "afterClose" }, ngImport: i0, template: "<nz-modal\n [nzVisible]=\"open()\"\n [nzTitle]=\"''\"\n [nzFooter]=\"null\"\n [nzClosable]=\"false\"\n [nzMask]=\"mask()\"\n [nzMaskClosable]=\"maskClosable()\"\n [nzKeyboard]=\"keyboard()\"\n [nzCentered]=\"centered()\"\n [nzWidth]=\"width()\"\n [nzZIndex]=\"zIndex()\"\n [nzWrapClassName]=\"resolvedWrapClassName()\"\n [nzClassName]=\"resolvedClassName()\"\n (nzVisibleChange)=\"onOpenChange($event)\"\n (nzAfterOpen)=\"afterOpen.emit()\"\n (nzAfterClose)=\"afterClose.emit()\"\n>\n <ng-container *nzModalContent>\n <div\n class=\"geo-form-modal__content\"\n [class.geo-form-modal__content--body-scroll]=\"bodyScroll()\"\n >\n <div class=\"geo-form-modal__header\">\n <h2\n class=\"geo-form-modal__title\"\n [class.geo-form-modal__title--uppercase]=\"titleUppercase()\"\n >\n {{ title() }}\n </h2>\n @if (closable()) {\n <button\n type=\"button\"\n class=\"geo-form-modal__close\"\n aria-label=\"\u0110\u00F3ng\"\n (click)=\"onCancel()\"\n >\n <span nz-icon nzType=\"close\" nzTheme=\"outline\"></span>\n </button>\n }\n </div>\n\n <div\n class=\"geo-form-modal__body\"\n [style.--geo-form-modal-body-max-height]=\"bodyScroll() ? bodyMaxHeightCss() : null\"\n >\n <ng-content></ng-content>\n </div>\n\n <div class=\"geo-form-modal__footer\">\n <ng-content select=\"[footerStart]\"></ng-content>\n\n <div class=\"geo-form-modal__footer-actions\">\n <geo-button\n appearance=\"secondary\"\n color=\"brand\"\n [icon]=\"cancelIcon()\"\n [iconPlacement]=\"cancelIconPlacement()\"\n (clicked)=\"onCancel()\"\n >\n {{ readonly() ? '\u0110\u00F3ng' : cancelText() }}\n </geo-button>\n @if (!readonly() && secondaryOkText()) {\n <geo-button\n appearance=\"secondary\"\n color=\"brand\"\n icon=\"save\"\n [disabled]=\"okDisabled() || confirmLoading()\"\n (clicked)=\"onSecondaryOk()\"\n >\n {{ secondaryOkText() }}\n </geo-button>\n }\n @if (!readonly()) {\n <geo-button\n appearance=\"primary\"\n color=\"brand\"\n [icon]=\"confirmLoading() ? 'loading' : okIcon()\"\n [iconPlacement]=\"okIconPlacement()\"\n [disabled]=\"okDisabled() || confirmLoading()\"\n (clicked)=\"onOk()\"\n >\n {{ okText() }}\n </geo-button>\n }\n </div>\n </div>\n </div>\n </ng-container>\n</nz-modal>\n", styles: [".geo-form-modal-wrap .ant-modal-header{display:none}.geo-form-modal-wrap .ant-modal{max-width:calc(100vw - 32px)}.geo-form-modal-wrap .ant-modal-content{border-radius:var(--geo-radius-lg);padding:0;overflow:hidden;box-shadow:var(--geo-shadow-md)}.geo-form-modal-wrap .ant-modal-body{padding:0}.geo-form-modal__content{display:flex;flex-direction:column;background:var(--geo-color-neutral-white);max-height:inherit}.geo-form-modal__header{position:relative;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-shrink:0;padding:24px 24px 16px;border-bottom:none}.geo-form-modal__header:after{content:\"\";position:absolute;left:24px;right:24px;bottom:0;height:1px;background:var(--geo-color-primary-default);pointer-events:none}.geo-form-modal__title{margin:0;min-width:0;font-family:var(--geo-font-family);font-size:var(--geo-font-size-h4);font-weight:var(--geo-font-weight-bold);line-height:var(--geo-line-height-h4);color:var(--geo-color-neutral-900);letter-spacing:.02em;word-break:break-word}.geo-form-modal__title--uppercase{text-transform:uppercase}.geo-form-modal__close{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-500);cursor:pointer;flex-shrink:0;transition:color .15s ease,background-color .15s ease}.geo-form-modal__close .anticon{font-size:14px}.geo-form-modal__close:hover{color:var(--geo-color-neutral-900);background:var(--geo-color-neutral-100)}.geo-form-modal__body{display:flex;flex-direction:column;gap:20px;flex:1 1 auto;min-width:0;min-height:0;padding:24px}.geo-form-modal__content--body-scroll .geo-form-modal__body{overflow-x:hidden;overflow-y:auto;max-height:var(--geo-form-modal-body-max-height, 60vh);-webkit-overflow-scrolling:touch}.geo-form-modal__footer{position:relative;display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:12px;flex-shrink:0;padding:16px 24px 24px;border-top:none;background:var(--geo-color-neutral-white)}.geo-form-modal__footer:before{content:\"\";position:absolute;left:24px;right:24px;top:0;height:1px;background:var(--geo-color-primary-default);pointer-events:none}.geo-form-modal__footer-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:12px;margin-left:auto}@media (max-width: 767.98px){.geo-form-modal-wrap .ant-modal{top:0;max-width:calc(100vw - 24px)!important;width:calc(100vw - 24px)!important;margin:12px auto!important;padding-bottom:0}.geo-form-modal-wrap .ant-modal-content{max-height:calc(100dvh - 24px);display:flex;flex-direction:column}.geo-form-modal-wrap .ant-modal-body{flex:1 1 auto;min-height:0;overflow:hidden}.geo-form-modal__content{max-height:calc(100dvh - 24px);min-height:0}.geo-form-modal__header{gap:12px;padding:24px 24px 16px}.geo-form-modal__title{font-size:var(--geo-font-size-subtitle)}.geo-form-modal__body{gap:16px;padding:24px}.geo-form-modal__content--body-scroll .geo-form-modal__body{max-height:none;flex:1 1 auto}.geo-form-modal__footer{justify-content:stretch;gap:8px;padding:16px 24px 24px}.geo-form-modal__footer-actions{width:100%;margin-left:0}.geo-form-modal__footer-actions>*{flex:1 1 calc(50% - 4px);min-width:0}.geo-form-modal__footer-actions>*:nth-child(n+3){flex:1 1 100%}.geo-form-modal__footer-actions geo-button{display:block;width:100%}.geo-form-modal__footer-actions .geo-button{width:100%;white-space:normal;height:auto;min-height:40px;padding-block:8px;text-align:center}}\n"], dependencies: [{ kind: "ngmodule", type: NgZorroAntdModule }, { kind: "directive", type: i1$6.ɵ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: i1.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: i3.NzModalComponent, selector: "nz-modal", inputs: ["nzMask", "nzMaskClosable", "nzCloseOnNavigation", "nzVisible", "nzClosable", "nzOkLoading", "nzOkDisabled", "nzCancelDisabled", "nzCancelLoading", "nzKeyboard", "nzNoAnimation", "nzCentered", "nzDraggable", "nzContent", "nzFooter", "nzZIndex", "nzWidth", "nzWrapClassName", "nzClassName", "nzStyle", "nzTitle", "nzCloseIcon", "nzMaskStyle", "nzBodyStyle", "nzOkText", "nzCancelText", "nzOkType", "nzOkDanger", "nzIconType", "nzModalType", "nzAutofocus", "nzOnOk", "nzOnCancel"], outputs: ["nzOnOk", "nzOnCancel", "nzAfterOpen", "nzAfterClose", "nzVisibleChange"], exportAs: ["nzModal"] }, { kind: "directive", type: i3.NzModalContentDirective, selector: "[nzModalContent]", exportAs: ["nzModalContent"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "component", type: GeoButtonComponent, selector: "geo-button", inputs: ["appearance", "color", "icon", "iconTheme", "iconPlacement", "iconOnly", "type", "disabled", "tooltip", "tooltipPlacement", "active", "title"], outputs: ["clicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
1267
1308
|
}
|
|
1268
1309
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoFormModalComponent, decorators: [{
|
|
1269
1310
|
type: Component,
|
|
@@ -1410,7 +1451,7 @@ class GeoPaginationComponent {
|
|
|
1410
1451
|
showSizeChanger = input(false);
|
|
1411
1452
|
pageSizeOptions = input([5, 10, 20, 50]);
|
|
1412
1453
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoPaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1413
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: GeoPaginationComponent, isStandalone: true, selector: "geo-pagination", inputs: { pageIndex: { classPropertyName: "pageIndex", publicName: "pageIndex", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, total: { classPropertyName: "total", publicName: "total", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, simple: { classPropertyName: "simple", publicName: "simple", isSignal: true, isRequired: false, transformFunction: null }, hideOnSinglePage: { classPropertyName: "hideOnSinglePage", publicName: "hideOnSinglePage", isSignal: true, isRequired: false, transformFunction: null }, showSizeChanger: { classPropertyName: "showSizeChanger", publicName: "showSizeChanger", isSignal: true, isRequired: false, transformFunction: null }, pageSizeOptions: { classPropertyName: "pageSizeOptions", publicName: "pageSizeOptions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pageIndex: "pageIndexChange", pageSize: "pageSizeChange" }, host: { classAttribute: "geo-pagination-host" }, ngImport: i0, template: "<div class=\"geo-pagination\">\n <nz-pagination\n [nzSize]=\"size()\"\n [nzSimple]=\"simple()\"\n [nzPageIndex]=\"pageIndex()\"\n [nzPageSize]=\"pageSize()\"\n [nzTotal]=\"total()\"\n [nzHideOnSinglePage]=\"hideOnSinglePage()\"\n [nzShowSizeChanger]=\"showSizeChanger()\"\n [nzPageSizeOptions]=\"pageSizeOptions()\"\n (nzPageIndexChange)=\"pageIndex.set($event)\"\n (nzPageSizeChange)=\"pageSize.set($event)\"\n ></nz-pagination>\n</div>\n", styles: [".geo-pagination-host{display:inline-flex;align-items:center}.geo-pagination{display:inline-flex}\n"], dependencies: [{ kind: "ngmodule", type: NzPaginationModule }, { kind: "component", type: i1$
|
|
1454
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: GeoPaginationComponent, isStandalone: true, selector: "geo-pagination", inputs: { pageIndex: { classPropertyName: "pageIndex", publicName: "pageIndex", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, total: { classPropertyName: "total", publicName: "total", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, simple: { classPropertyName: "simple", publicName: "simple", isSignal: true, isRequired: false, transformFunction: null }, hideOnSinglePage: { classPropertyName: "hideOnSinglePage", publicName: "hideOnSinglePage", isSignal: true, isRequired: false, transformFunction: null }, showSizeChanger: { classPropertyName: "showSizeChanger", publicName: "showSizeChanger", isSignal: true, isRequired: false, transformFunction: null }, pageSizeOptions: { classPropertyName: "pageSizeOptions", publicName: "pageSizeOptions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pageIndex: "pageIndexChange", pageSize: "pageSizeChange" }, host: { classAttribute: "geo-pagination-host" }, ngImport: i0, template: "<div class=\"geo-pagination\">\n <nz-pagination\n [nzSize]=\"size()\"\n [nzSimple]=\"simple()\"\n [nzPageIndex]=\"pageIndex()\"\n [nzPageSize]=\"pageSize()\"\n [nzTotal]=\"total()\"\n [nzHideOnSinglePage]=\"hideOnSinglePage()\"\n [nzShowSizeChanger]=\"showSizeChanger()\"\n [nzPageSizeOptions]=\"pageSizeOptions()\"\n (nzPageIndexChange)=\"pageIndex.set($event)\"\n (nzPageSizeChange)=\"pageSize.set($event)\"\n ></nz-pagination>\n</div>\n", styles: [".geo-pagination-host{display:inline-flex;align-items:center}.geo-pagination{display:inline-flex}\n"], dependencies: [{ kind: "ngmodule", type: NzPaginationModule }, { kind: "component", type: i1$7.NzPaginationComponent, selector: "nz-pagination", inputs: ["nzShowTotal", "nzItemRender", "nzSize", "nzPageSizeOptions", "nzShowSizeChanger", "nzShowQuickJumper", "nzSimple", "nzDisabled", "nzResponsive", "nzHideOnSinglePage", "nzTotal", "nzPageIndex", "nzPageSize"], outputs: ["nzPageSizeChange", "nzPageIndexChange"], exportAs: ["nzPagination"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
1414
1455
|
}
|
|
1415
1456
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoPaginationComponent, decorators: [{
|
|
1416
1457
|
type: Component,
|
|
@@ -2171,7 +2212,7 @@ class GeoLayoutHeaderActionsComponent {
|
|
|
2171
2212
|
this.userMenuClick.emit(item);
|
|
2172
2213
|
}
|
|
2173
2214
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoLayoutHeaderActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2174
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoLayoutHeaderActionsComponent, isStandalone: true, selector: "geo-layout-header-actions", inputs: { user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: false, transformFunction: null }, notifications: { classPropertyName: "notifications", publicName: "notifications", isSignal: true, isRequired: false, transformFunction: null }, subsystems: { classPropertyName: "subsystems", publicName: "subsystems", isSignal: true, isRequired: false, transformFunction: null }, userMenuItems: { classPropertyName: "userMenuItems", publicName: "userMenuItems", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { notificationClick: "notificationClick", subsystemClick: "subsystemClick", userMenuClick: "userMenuClick", logout: "logout" }, host: { properties: { "class.geo-layout-header-actions-host--compact": "compact()" }, classAttribute: "geo-layout-header-actions-host" }, ngImport: i0, template: "<div class=\"geo-layout-ha\">\n <div class=\"geo-layout-ha__icons\">\n <button\n type=\"button\"\n class=\"geo-layout-ha__icon-btn\"\n nz-dropdown\n nzTrigger=\"click\"\n nzPlacement=\"bottomRight\"\n nzOverlayClassName=\"geo-layout-ha-overlay\"\n [nzDropdownMenu]=\"notifyMenu\"\n [nzVisible]=\"notifyOpen()\"\n (nzVisibleChange)=\"onNotifyVisible($event)\"\n aria-label=\"Th\u00F4ng b\u00E1o\"\n >\n <nz-badge [nzCount]=\"unreadCount()\" [nzOverflowCount]=\"9\" nzSize=\"small\">\n <geo-icon type=\"bell\" size=\"lg\" />\n </nz-badge>\n </button>\n\n <button\n type=\"button\"\n class=\"geo-layout-ha__icon-btn\"\n nz-dropdown\n nzTrigger=\"click\"\n nzPlacement=\"bottomRight\"\n nzOverlayClassName=\"geo-layout-ha-overlay\"\n [nzDropdownMenu]=\"subsystemMenu\"\n [nzVisible]=\"subsystemOpen()\"\n (nzVisibleChange)=\"onSubsystemVisible($event)\"\n aria-label=\"Ph\u00E2n h\u1EC7\"\n >\n <geo-icon type=\"appstore\" size=\"lg\" />\n </button>\n </div>\n\n <span class=\"geo-layout-ha__divider\" aria-hidden=\"true\"></span>\n\n <button\n type=\"button\"\n class=\"geo-layout-ha__user\"\n [class.geo-layout-ha__user--open]=\"userOpen()\"\n nz-dropdown\n nzTrigger=\"click\"\n nzPlacement=\"bottomRight\"\n nzOverlayClassName=\"geo-layout-ha-overlay\"\n [nzDropdownMenu]=\"userMenu\"\n [nzVisible]=\"userOpen()\"\n (nzVisibleChange)=\"onUserVisible($event)\"\n aria-label=\"T\u00E0i kho\u1EA3n ng\u01B0\u1EDDi d\u00F9ng\"\n >\n <span class=\"geo-layout-ha__avatar\">\n @if (user().avatarUrl) {\n <img [src]=\"user().avatarUrl\" alt=\"\" />\n } @else {\n <span>{{ initials() }}</span>\n }\n </span>\n\n @if (!compact()) {\n <span class=\"geo-layout-ha__user-text\">\n <span class=\"geo-layout-ha__user-name\">{{ user().name }}</span>\n @if (user().email) {\n <span class=\"geo-layout-ha__user-email\">{{ user().email }}</span>\n }\n </span>\n }\n </button>\n</div>\n\n<nz-dropdown-menu #notifyMenu=\"nzDropdownMenu\">\n <div class=\"geo-layout-ha-pop geo-layout-ha-pop--notify\" role=\"dialog\" aria-label=\"Th\u00F4ng b\u00E1o\">\n <div class=\"geo-layout-ha-pop__head\">\n <div class=\"geo-layout-ha-pop__title-row\">\n <h3 class=\"geo-layout-ha-pop__title\">Th\u00F4ng b\u00E1o</h3>\n @if (unreadCount() > 0) {\n <span class=\"geo-layout-ha-pop__badge\">{{ unreadCount() }} m\u1EDBi</span>\n }\n </div>\n </div>\n\n <div class=\"geo-layout-ha-pop__list\">\n @if (notifications().length) {\n @for (item of notifications(); track item.id) {\n <button\n type=\"button\"\n class=\"geo-layout-ha-notify\"\n [class.geo-layout-ha-notify--unread]=\"!item.read\"\n (click)=\"onNotificationItem(item)\"\n >\n <span class=\"geo-layout-ha-notify__icon\" aria-hidden=\"true\">\n <geo-icon [type]=\"item.icon || 'bell'\" size=\"md\" />\n </span>\n <span class=\"geo-layout-ha-notify__body\">\n <span class=\"geo-layout-ha-notify__msg\">{{ item.message }}</span>\n <span class=\"geo-layout-ha-notify__time\">{{ item.time }}</span>\n </span>\n @if (!item.read) {\n <span class=\"geo-layout-ha-notify__dot\" aria-hidden=\"true\"></span>\n }\n </button>\n }\n } @else {\n <div class=\"geo-layout-ha-pop__empty\">\n <geo-icon type=\"bell\" size=\"xl\" />\n <p>Kh\u00F4ng c\u00F3 th\u00F4ng b\u00E1o m\u1EDBi</p>\n </div>\n }\n </div>\n </div>\n</nz-dropdown-menu>\n\n<nz-dropdown-menu #subsystemMenu=\"nzDropdownMenu\">\n <div class=\"geo-layout-ha-pop geo-layout-ha-pop--subsystem\" role=\"dialog\" aria-label=\"Ph\u00E2n h\u1EC7\">\n <div class=\"geo-layout-ha-pop__head\">\n <h3 class=\"geo-layout-ha-pop__title\">Ph\u00E2n h\u1EC7</h3>\n </div>\n <div class=\"geo-layout-ha-subgrid\">\n @for (item of subsystems(); track item.id) {\n <button\n type=\"button\"\n class=\"geo-layout-ha-sub\"\n (click)=\"onSubsystemItem(item)\"\n >\n <span class=\"geo-layout-ha-sub__mark\">{{ item.initials }}</span>\n <span class=\"geo-layout-ha-sub__label\">{{ item.label }}</span>\n </button>\n }\n </div>\n </div>\n</nz-dropdown-menu>\n\n<nz-dropdown-menu #userMenu=\"nzDropdownMenu\">\n <div class=\"geo-layout-ha-pop geo-layout-ha-pop--user\" role=\"dialog\" aria-label=\"T\u00E0i kho\u1EA3n\">\n <div class=\"geo-layout-ha-pop__profile\">\n <span class=\"geo-layout-ha__avatar geo-layout-ha__avatar--lg\">\n @if (user().avatarUrl) {\n <img [src]=\"user().avatarUrl\" alt=\"\" />\n } @else {\n <span>{{ initials() }}</span>\n }\n </span>\n <span class=\"geo-layout-ha-pop__profile-text\">\n <span class=\"geo-layout-ha__user-name\">{{ user().name }}</span>\n @if (user().email) {\n <span class=\"geo-layout-ha__user-email\">{{ user().email }}</span>\n }\n </span>\n </div>\n\n <div class=\"geo-layout-ha-pop__menu\">\n @for (item of primaryMenuItems(); track item.key) {\n <button\n type=\"button\"\n class=\"geo-layout-ha-menu-item\"\n (click)=\"onUserMenuItem(item)\"\n >\n <geo-icon [type]=\"item.icon\" size=\"md\" />\n <span>{{ item.label }}</span>\n </button>\n }\n </div>\n\n @if (dangerMenuItems().length) {\n <div class=\"geo-layout-ha-pop__menu geo-layout-ha-pop__menu--footer\">\n @for (item of dangerMenuItems(); track item.key) {\n <button\n type=\"button\"\n class=\"geo-layout-ha-menu-item geo-layout-ha-menu-item--danger\"\n (click)=\"onUserMenuItem(item)\"\n >\n <geo-icon [type]=\"item.icon\" size=\"md\" />\n <span>{{ item.label }}</span>\n </button>\n }\n </div>\n }\n </div>\n</nz-dropdown-menu>\n", styles: ["@charset \"UTF-8\";.geo-layout-header-actions-host{display:inline-flex;align-items:center}.geo-layout-ha{display:inline-flex;align-items:center;gap:10px}.geo-layout-ha__icons{display:inline-flex;align-items:center;gap:4px}.geo-layout-ha__icon-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:0;border-radius:var(--geo-radius-md);background:transparent;color:var(--geo-color-neutral-700);cursor:pointer;line-height:1;transition:background-color .15s ease,color .15s ease}.geo-layout-ha__icon-btn:hover{background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-layout-ha__icon-btn:active{transform:scale(.98)}.geo-layout-ha__icon-btn .ant-badge{color:inherit;line-height:1}.geo-layout-ha__icon-btn .ant-badge-count{min-width:16px;height:16px;padding:0 4px;border:0;box-shadow:none;background:var(--geo-color-error-default);font-size:10px;line-height:16px}.geo-layout-ha__divider{width:1px;height:28px;margin-inline:4px;background:var(--geo-color-neutral-200)}.geo-layout-ha__user{display:inline-flex;align-items:center;gap:10px;max-width:260px;min-height:44px;padding:6px 12px 6px 6px;border:0;border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-page);color:var(--geo-color-neutral-900);cursor:pointer;transition:background-color .15s ease,box-shadow .15s ease}.geo-layout-ha__user:hover,.geo-layout-ha__user--open{background:var(--geo-color-primary-soft-hover)}.geo-layout-ha__avatar{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:32px;height:32px;overflow:hidden;border-radius:var(--geo-radius-full);background:var(--geo-color-neutral-white);color:var(--geo-color-neutral-800);font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-bold);letter-spacing:.02em;box-shadow:inset 0 0 0 1px var(--geo-color-neutral-200)}.geo-layout-ha__avatar img{width:100%;height:100%;object-fit:cover}.geo-layout-ha__avatar--lg{width:40px;height:40px;font-size:var(--geo-font-size-body)}.geo-layout-ha__user-text{display:flex;flex:1;flex-direction:column;align-items:flex-start;min-width:0;gap:1px;text-align:left}.geo-layout-ha__user-name{overflow:hidden;max-width:100%;font-size:var(--geo-font-size-body);font-weight:var(--geo-font-weight-bold);line-height:1.25;color:var(--geo-color-neutral-900);text-overflow:ellipsis;white-space:nowrap}.geo-layout-ha__user-email{overflow:hidden;max-width:100%;font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-regular);line-height:1.25;color:var(--geo-color-neutral-500);text-overflow:ellipsis;white-space:nowrap}.geo-layout-header-actions-host--compact .geo-layout-ha__user{max-width:none;padding:4px;border-radius:var(--geo-radius-full)}.geo-layout-ha-overlay .ant-dropdown-menu{padding:0;background:transparent;box-shadow:none}.geo-layout-ha-pop{width:320px;overflow:hidden;border:1px solid var(--geo-color-neutral-200);border-radius:var(--geo-radius-xl);background:linear-gradient(180deg,var(--geo-color-neutral-white) 0%,var(--geo-color-neutral-100) 160%);box-shadow:var(--geo-shadow-lg)}.geo-layout-ha-pop--user{width:280px}.geo-layout-ha-pop--subsystem{width:300px}.geo-layout-ha-pop__head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px 10px}.geo-layout-ha-pop__title-row{display:flex;align-items:center;gap:8px}.geo-layout-ha-pop__title{margin:0;font-size:var(--geo-font-size-subtitle);font-weight:var(--geo-font-weight-bold);line-height:1.3;color:var(--geo-color-neutral-900)}.geo-layout-ha-pop__badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:var(--geo-radius-full);background:var(--geo-color-primary-soft-strong);font-size:var(--geo-font-size-tiny);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-primary-default)}.geo-layout-ha-pop__list{max-height:320px;overflow-y:auto;padding:4px 8px 12px}.geo-layout-ha-pop__empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:28px 16px;color:var(--geo-color-neutral-400);text-align:center}.geo-layout-ha-pop__empty p{margin:0;font-size:var(--geo-font-size-body-small)}.geo-layout-ha-notify{display:flex;align-items:flex-start;gap:10px;width:100%;padding:10px;border:0;border-radius:var(--geo-radius-md);background:transparent;text-align:left;cursor:pointer;transition:background-color .15s ease}.geo-layout-ha-notify:hover,.geo-layout-ha-notify--unread{background:var(--geo-color-primary-soft)}.geo-layout-ha-notify__icon{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--geo-radius-md);background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-layout-ha-notify__body{display:flex;flex:1;flex-direction:column;gap:4px;min-width:0}.geo-layout-ha-notify__msg{font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1.4;color:var(--geo-color-neutral-800)}.geo-layout-ha-notify__time{font-size:var(--geo-font-size-caption);color:var(--geo-color-neutral-500)}.geo-layout-ha-notify__dot{flex-shrink:0;width:8px;height:8px;margin-top:6px;border-radius:var(--geo-radius-full);background:var(--geo-color-primary-default)}.geo-layout-ha-subgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:4px 16px 16px}.geo-layout-ha-sub{display:flex;flex-direction:column;align-items:center;gap:8px;padding:8px 4px;border:0;border-radius:var(--geo-radius-md);background:transparent;cursor:pointer;transition:background-color .15s ease}.geo-layout-ha-sub:hover{background:var(--geo-color-primary-soft)}.geo-layout-ha-sub__mark{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:var(--geo-radius-full);background:var(--geo-color-primary-soft-strong);font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-bold);color:var(--geo-color-primary-default)}.geo-layout-ha-sub__label{max-width:72px;font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-medium);line-height:1.25;color:var(--geo-color-neutral-600, var(--geo-color-neutral-500));text-align:center}.geo-layout-ha-pop__profile{display:flex;align-items:center;gap:12px;padding:16px;border-bottom:1px solid var(--geo-color-neutral-100)}.geo-layout-ha-pop__profile-text{display:flex;flex-direction:column;gap:2px;min-width:0}.geo-layout-ha-pop__menu{display:flex;flex-direction:column;padding:8px}.geo-layout-ha-pop__menu--footer{padding-top:0;border-top:1px solid var(--geo-color-neutral-100)}.geo-layout-ha-menu-item{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;border:0;border-radius:var(--geo-radius-md);background:transparent;font:inherit;font-size:var(--geo-font-size-body);font-weight:var(--geo-font-weight-medium);color:var(--geo-color-neutral-800);text-align:left;cursor:pointer;transition:background-color .15s ease,color .15s ease}.geo-layout-ha-menu-item:hover{background:var(--geo-color-primary-soft);color:var(--geo-color-primary-default)}.geo-layout-ha-menu-item--danger{color:var(--geo-color-error-default)}.geo-layout-ha-menu-item--danger:hover{background:var(--geo-color-error-light);color:var(--geo-color-error-dark)}@media (prefers-reduced-motion: reduce){.geo-layout-ha__icon-btn,.geo-layout-ha__user,.geo-layout-ha-notify,.geo-layout-ha-sub,.geo-layout-ha-menu-item{transition:none}}\n"], dependencies: [{ kind: "ngmodule", type: NzBadgeModule }, { kind: "component", type: i1$7.NzBadgeComponent, selector: "nz-badge", inputs: ["nzShowZero", "nzShowDot", "nzStandalone", "nzDot", "nzOverflowCount", "nzColor", "nzStyle", "nzText", "nzTitle", "nzStatus", "nzCount", "nzOffset", "nzSize"], exportAs: ["nzBadge"] }, { kind: "ngmodule", type: NzDropDownModule }, { kind: "directive", type: i2$6.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i2$6.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "component", type: GeoIconComponent, selector: "geo-icon", inputs: ["type", "theme", "spin", "size", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
2215
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoLayoutHeaderActionsComponent, isStandalone: true, selector: "geo-layout-header-actions", inputs: { user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: false, transformFunction: null }, notifications: { classPropertyName: "notifications", publicName: "notifications", isSignal: true, isRequired: false, transformFunction: null }, subsystems: { classPropertyName: "subsystems", publicName: "subsystems", isSignal: true, isRequired: false, transformFunction: null }, userMenuItems: { classPropertyName: "userMenuItems", publicName: "userMenuItems", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { notificationClick: "notificationClick", subsystemClick: "subsystemClick", userMenuClick: "userMenuClick", logout: "logout" }, host: { properties: { "class.geo-layout-header-actions-host--compact": "compact()" }, classAttribute: "geo-layout-header-actions-host" }, ngImport: i0, template: "<div class=\"geo-layout-ha\">\n <div class=\"geo-layout-ha__icons\">\n <button\n type=\"button\"\n class=\"geo-layout-ha__icon-btn\"\n nz-dropdown\n nzTrigger=\"click\"\n nzPlacement=\"bottomRight\"\n nzOverlayClassName=\"geo-layout-ha-overlay\"\n [nzDropdownMenu]=\"notifyMenu\"\n [nzVisible]=\"notifyOpen()\"\n (nzVisibleChange)=\"onNotifyVisible($event)\"\n aria-label=\"Th\u00F4ng b\u00E1o\"\n >\n <nz-badge [nzCount]=\"unreadCount()\" [nzOverflowCount]=\"9\" nzSize=\"small\">\n <geo-icon type=\"bell\" size=\"lg\" />\n </nz-badge>\n </button>\n\n <button\n type=\"button\"\n class=\"geo-layout-ha__icon-btn\"\n nz-dropdown\n nzTrigger=\"click\"\n nzPlacement=\"bottomRight\"\n nzOverlayClassName=\"geo-layout-ha-overlay\"\n [nzDropdownMenu]=\"subsystemMenu\"\n [nzVisible]=\"subsystemOpen()\"\n (nzVisibleChange)=\"onSubsystemVisible($event)\"\n aria-label=\"Ph\u00E2n h\u1EC7\"\n >\n <geo-icon type=\"appstore\" size=\"lg\" />\n </button>\n </div>\n\n <span class=\"geo-layout-ha__divider\" aria-hidden=\"true\"></span>\n\n <button\n type=\"button\"\n class=\"geo-layout-ha__user\"\n [class.geo-layout-ha__user--open]=\"userOpen()\"\n nz-dropdown\n nzTrigger=\"click\"\n nzPlacement=\"bottomRight\"\n nzOverlayClassName=\"geo-layout-ha-overlay\"\n [nzDropdownMenu]=\"userMenu\"\n [nzVisible]=\"userOpen()\"\n (nzVisibleChange)=\"onUserVisible($event)\"\n aria-label=\"T\u00E0i kho\u1EA3n ng\u01B0\u1EDDi d\u00F9ng\"\n >\n <span class=\"geo-layout-ha__avatar\">\n @if (user().avatarUrl) {\n <img [src]=\"user().avatarUrl\" alt=\"\" />\n } @else {\n <span>{{ initials() }}</span>\n }\n </span>\n\n @if (!compact()) {\n <span class=\"geo-layout-ha__user-text\">\n <span class=\"geo-layout-ha__user-name\">{{ user().name }}</span>\n @if (user().email) {\n <span class=\"geo-layout-ha__user-email\">{{ user().email }}</span>\n }\n </span>\n }\n </button>\n</div>\n\n<nz-dropdown-menu #notifyMenu=\"nzDropdownMenu\">\n <div class=\"geo-layout-ha-pop geo-layout-ha-pop--notify\" role=\"dialog\" aria-label=\"Th\u00F4ng b\u00E1o\">\n <div class=\"geo-layout-ha-pop__head\">\n <div class=\"geo-layout-ha-pop__title-row\">\n <h3 class=\"geo-layout-ha-pop__title\">Th\u00F4ng b\u00E1o</h3>\n @if (unreadCount() > 0) {\n <span class=\"geo-layout-ha-pop__badge\">{{ unreadCount() }} m\u1EDBi</span>\n }\n </div>\n </div>\n\n <div class=\"geo-layout-ha-pop__list\">\n @if (notifications().length) {\n @for (item of notifications(); track item.id) {\n <button\n type=\"button\"\n class=\"geo-layout-ha-notify\"\n [class.geo-layout-ha-notify--unread]=\"!item.read\"\n (click)=\"onNotificationItem(item)\"\n >\n <span class=\"geo-layout-ha-notify__icon\" aria-hidden=\"true\">\n <geo-icon [type]=\"item.icon || 'bell'\" size=\"md\" />\n </span>\n <span class=\"geo-layout-ha-notify__body\">\n <span class=\"geo-layout-ha-notify__msg\">{{ item.message }}</span>\n <span class=\"geo-layout-ha-notify__time\">{{ item.time }}</span>\n </span>\n @if (!item.read) {\n <span class=\"geo-layout-ha-notify__dot\" aria-hidden=\"true\"></span>\n }\n </button>\n }\n } @else {\n <div class=\"geo-layout-ha-pop__empty\">\n <geo-icon type=\"bell\" size=\"xl\" />\n <p>Kh\u00F4ng c\u00F3 th\u00F4ng b\u00E1o m\u1EDBi</p>\n </div>\n }\n </div>\n </div>\n</nz-dropdown-menu>\n\n<nz-dropdown-menu #subsystemMenu=\"nzDropdownMenu\">\n <div class=\"geo-layout-ha-pop geo-layout-ha-pop--subsystem\" role=\"dialog\" aria-label=\"Ph\u00E2n h\u1EC7\">\n <div class=\"geo-layout-ha-pop__head\">\n <h3 class=\"geo-layout-ha-pop__title\">Ph\u00E2n h\u1EC7</h3>\n </div>\n <div class=\"geo-layout-ha-subgrid\">\n @for (item of subsystems(); track item.id) {\n <button\n type=\"button\"\n class=\"geo-layout-ha-sub\"\n (click)=\"onSubsystemItem(item)\"\n >\n <span class=\"geo-layout-ha-sub__mark\">{{ item.initials }}</span>\n <span class=\"geo-layout-ha-sub__label\">{{ item.label }}</span>\n </button>\n }\n </div>\n </div>\n</nz-dropdown-menu>\n\n<nz-dropdown-menu #userMenu=\"nzDropdownMenu\">\n <div class=\"geo-layout-ha-pop geo-layout-ha-pop--user\" role=\"dialog\" aria-label=\"T\u00E0i kho\u1EA3n\">\n <div class=\"geo-layout-ha-pop__profile\">\n <span class=\"geo-layout-ha__avatar geo-layout-ha__avatar--lg\">\n @if (user().avatarUrl) {\n <img [src]=\"user().avatarUrl\" alt=\"\" />\n } @else {\n <span>{{ initials() }}</span>\n }\n </span>\n <span class=\"geo-layout-ha-pop__profile-text\">\n <span class=\"geo-layout-ha__user-name\">{{ user().name }}</span>\n @if (user().email) {\n <span class=\"geo-layout-ha__user-email\">{{ user().email }}</span>\n }\n </span>\n </div>\n\n <div class=\"geo-layout-ha-pop__menu\">\n @for (item of primaryMenuItems(); track item.key) {\n <button\n type=\"button\"\n class=\"geo-layout-ha-menu-item\"\n (click)=\"onUserMenuItem(item)\"\n >\n <geo-icon [type]=\"item.icon\" size=\"md\" />\n <span>{{ item.label }}</span>\n </button>\n }\n </div>\n\n @if (dangerMenuItems().length) {\n <div class=\"geo-layout-ha-pop__menu geo-layout-ha-pop__menu--footer\">\n @for (item of dangerMenuItems(); track item.key) {\n <button\n type=\"button\"\n class=\"geo-layout-ha-menu-item geo-layout-ha-menu-item--danger\"\n (click)=\"onUserMenuItem(item)\"\n >\n <geo-icon [type]=\"item.icon\" size=\"md\" />\n <span>{{ item.label }}</span>\n </button>\n }\n </div>\n }\n </div>\n</nz-dropdown-menu>\n", styles: ["@charset \"UTF-8\";.geo-layout-header-actions-host{display:inline-flex;align-items:center}.geo-layout-ha{display:inline-flex;align-items:center;gap:10px}.geo-layout-ha__icons{display:inline-flex;align-items:center;gap:4px}.geo-layout-ha__icon-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:0;border-radius:var(--geo-radius-md);background:transparent;color:var(--geo-color-neutral-700);cursor:pointer;line-height:1;transition:background-color .15s ease,color .15s ease}.geo-layout-ha__icon-btn:hover{background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-layout-ha__icon-btn:active{transform:scale(.98)}.geo-layout-ha__icon-btn .ant-badge{color:inherit;line-height:1}.geo-layout-ha__icon-btn .ant-badge-count{min-width:16px;height:16px;padding:0 4px;border:0;box-shadow:none;background:var(--geo-color-error-default);font-size:10px;line-height:16px}.geo-layout-ha__divider{width:1px;height:28px;margin-inline:4px;background:var(--geo-color-neutral-200)}.geo-layout-ha__user{display:inline-flex;align-items:center;gap:10px;max-width:260px;min-height:44px;padding:6px 12px 6px 6px;border:0;border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-page);color:var(--geo-color-neutral-900);cursor:pointer;transition:background-color .15s ease,box-shadow .15s ease}.geo-layout-ha__user:hover,.geo-layout-ha__user--open{background:var(--geo-color-primary-soft-hover)}.geo-layout-ha__avatar{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:32px;height:32px;overflow:hidden;border-radius:var(--geo-radius-full);background:var(--geo-color-neutral-white);color:var(--geo-color-neutral-800);font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-bold);letter-spacing:.02em;box-shadow:inset 0 0 0 1px var(--geo-color-neutral-200)}.geo-layout-ha__avatar img{width:100%;height:100%;object-fit:cover}.geo-layout-ha__avatar--lg{width:40px;height:40px;font-size:var(--geo-font-size-body)}.geo-layout-ha__user-text{display:flex;flex:1;flex-direction:column;align-items:flex-start;min-width:0;gap:1px;text-align:left}.geo-layout-ha__user-name{overflow:hidden;max-width:100%;font-size:var(--geo-font-size-body);font-weight:var(--geo-font-weight-bold);line-height:1.25;color:var(--geo-color-neutral-900);text-overflow:ellipsis;white-space:nowrap}.geo-layout-ha__user-email{overflow:hidden;max-width:100%;font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-regular);line-height:1.25;color:var(--geo-color-neutral-500);text-overflow:ellipsis;white-space:nowrap}.geo-layout-header-actions-host--compact .geo-layout-ha__user{max-width:none;padding:4px;border-radius:var(--geo-radius-full)}.geo-layout-ha-overlay .ant-dropdown-menu{padding:0;background:transparent;box-shadow:none}.geo-layout-ha-pop{width:320px;overflow:hidden;border:1px solid var(--geo-color-neutral-200);border-radius:var(--geo-radius-xl);background:linear-gradient(180deg,var(--geo-color-neutral-white) 0%,var(--geo-color-neutral-100) 160%);box-shadow:var(--geo-shadow-lg)}.geo-layout-ha-pop--user{width:280px}.geo-layout-ha-pop--subsystem{width:300px}.geo-layout-ha-pop__head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px 10px}.geo-layout-ha-pop__title-row{display:flex;align-items:center;gap:8px}.geo-layout-ha-pop__title{margin:0;font-size:var(--geo-font-size-subtitle);font-weight:var(--geo-font-weight-bold);line-height:1.3;color:var(--geo-color-neutral-900)}.geo-layout-ha-pop__badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:var(--geo-radius-full);background:var(--geo-color-primary-soft-strong);font-size:var(--geo-font-size-tiny);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-primary-default)}.geo-layout-ha-pop__list{max-height:320px;overflow-y:auto;padding:4px 8px 12px}.geo-layout-ha-pop__empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:28px 16px;color:var(--geo-color-neutral-400);text-align:center}.geo-layout-ha-pop__empty p{margin:0;font-size:var(--geo-font-size-body-small)}.geo-layout-ha-notify{display:flex;align-items:flex-start;gap:10px;width:100%;padding:10px;border:0;border-radius:var(--geo-radius-md);background:transparent;text-align:left;cursor:pointer;transition:background-color .15s ease}.geo-layout-ha-notify:hover,.geo-layout-ha-notify--unread{background:var(--geo-color-primary-soft)}.geo-layout-ha-notify__icon{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--geo-radius-md);background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-layout-ha-notify__body{display:flex;flex:1;flex-direction:column;gap:4px;min-width:0}.geo-layout-ha-notify__msg{font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1.4;color:var(--geo-color-neutral-800)}.geo-layout-ha-notify__time{font-size:var(--geo-font-size-caption);color:var(--geo-color-neutral-500)}.geo-layout-ha-notify__dot{flex-shrink:0;width:8px;height:8px;margin-top:6px;border-radius:var(--geo-radius-full);background:var(--geo-color-primary-default)}.geo-layout-ha-subgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:4px 16px 16px}.geo-layout-ha-sub{display:flex;flex-direction:column;align-items:center;gap:8px;padding:8px 4px;border:0;border-radius:var(--geo-radius-md);background:transparent;cursor:pointer;transition:background-color .15s ease}.geo-layout-ha-sub:hover{background:var(--geo-color-primary-soft)}.geo-layout-ha-sub__mark{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:var(--geo-radius-full);background:var(--geo-color-primary-soft-strong);font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-bold);color:var(--geo-color-primary-default)}.geo-layout-ha-sub__label{max-width:72px;font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-medium);line-height:1.25;color:var(--geo-color-neutral-600, var(--geo-color-neutral-500));text-align:center}.geo-layout-ha-pop__profile{display:flex;align-items:center;gap:12px;padding:16px;border-bottom:1px solid var(--geo-color-neutral-100)}.geo-layout-ha-pop__profile-text{display:flex;flex-direction:column;gap:2px;min-width:0}.geo-layout-ha-pop__menu{display:flex;flex-direction:column;padding:8px}.geo-layout-ha-pop__menu--footer{padding-top:0;border-top:1px solid var(--geo-color-neutral-100)}.geo-layout-ha-menu-item{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;border:0;border-radius:var(--geo-radius-md);background:transparent;font:inherit;font-size:var(--geo-font-size-body);font-weight:var(--geo-font-weight-medium);color:var(--geo-color-neutral-800);text-align:left;cursor:pointer;transition:background-color .15s ease,color .15s ease}.geo-layout-ha-menu-item:hover{background:var(--geo-color-primary-soft);color:var(--geo-color-primary-default)}.geo-layout-ha-menu-item--danger{color:var(--geo-color-error-default)}.geo-layout-ha-menu-item--danger:hover{background:var(--geo-color-error-light);color:var(--geo-color-error-dark)}@media (prefers-reduced-motion: reduce){.geo-layout-ha__icon-btn,.geo-layout-ha__user,.geo-layout-ha-notify,.geo-layout-ha-sub,.geo-layout-ha-menu-item{transition:none}}\n"], dependencies: [{ kind: "ngmodule", type: NzBadgeModule }, { kind: "component", type: i1$8.NzBadgeComponent, selector: "nz-badge", inputs: ["nzShowZero", "nzShowDot", "nzStandalone", "nzDot", "nzOverflowCount", "nzColor", "nzStyle", "nzText", "nzTitle", "nzStatus", "nzCount", "nzOffset", "nzSize"], exportAs: ["nzBadge"] }, { kind: "ngmodule", type: NzDropDownModule }, { kind: "directive", type: i2$6.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i2$6.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "component", type: GeoIconComponent, selector: "geo-icon", inputs: ["type", "theme", "spin", "size", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
2175
2216
|
}
|
|
2176
2217
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoLayoutHeaderActionsComponent, decorators: [{
|
|
2177
2218
|
type: Component,
|
|
@@ -2438,7 +2479,7 @@ class GeoTabsComponent {
|
|
|
2438
2479
|
}
|
|
2439
2480
|
}
|
|
2440
2481
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2441
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoTabsComponent, isStandalone: true, selector: "geo-tabs", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, selectedIndex: { classPropertyName: "selectedIndex", publicName: "selectedIndex", isSignal: true, isRequired: false, transformFunction: null }, selectedKey: { classPropertyName: "selectedKey", publicName: "selectedKey", isSignal: true, isRequired: false, transformFunction: null }, centered: { classPropertyName: "centered", publicName: "centered", isSignal: true, isRequired: false, transformFunction: null }, animated: { classPropertyName: "animated", publicName: "animated", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedIndex: "selectedIndexChange", selectedKey: "selectedKeyChange", tabChange: "tabChange" }, host: { properties: { "class.geo-tabs-host--card": "type() === \"card\"", "class.geo-tabs-host--line": "type() === \"line\"" }, classAttribute: "geo-tabs-host" }, queries: [{ propertyName: "tabTemplates", predicate: GeoTabDirective }], ngImport: i0, template: "<nz-tabset\n class=\"geo-tabs\"\n [class.geo-tabs--card]=\"type() === 'card'\"\n [class.geo-tabs--line]=\"type() === 'line'\"\n [nzType]=\"type()\"\n [nzSize]=\"size()\"\n [nzSelectedIndex]=\"resolvedSelectedIndex()\"\n [nzCentered]=\"centered()\"\n [nzAnimated]=\"animated()\"\n (nzSelectedIndexChange)=\"onSelectedIndexChange($event)\"\n>\n @for (item of items(); track item.key) {\n <nz-tab [nzTitle]=\"item.title\" [nzDisabled]=\"item.disabled ?? false\">\n @if (getTemplate(item.key); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl\"></ng-container>\n }\n </nz-tab>\n }\n</nz-tabset>\n", styles: ["@charset \"UTF-8\";.geo-tabs-host{display:block;width:100%;min-width:0;max-width:100%}.geo-tabs.ant-tabs{color:var(--geo-color-neutral-900);min-width:0;width:100%}.geo-tabs .ant-tabs-nav{margin-bottom:16px}.geo-tabs .ant-tabs-nav-wrap{min-width:0;flex:1 1 auto}.geo-tabs .ant-tabs-nav-list{flex-wrap:nowrap}.geo-tabs .ant-tabs-tab{padding:10px 16px;font-size:14px;line-height:20px;color:var(--geo-color-neutral-500);transition:color .15s ease}.geo-tabs .ant-tabs-tab:hover{color:var(--geo-color-primary-default)}.geo-tabs .ant-tabs-tab-btn{font-weight:500}.geo-tabs .ant-tabs-tab-active .ant-tabs-tab-btn{color:var(--geo-color-primary-default)!important;font-weight:600}.geo-tabs .ant-tabs-tab-disabled{color:var(--geo-color-neutral-400)!important;cursor:not-allowed}.geo-tabs .ant-tabs-ink-bar{background:var(--geo-color-primary-default);height:2px}.geo-tabs.ant-tabs-top>.ant-tabs-nav:before,.geo-tabs.ant-tabs-bottom>.ant-tabs-nav:before,.geo-tabs.ant-tabs-top>div>.ant-tabs-nav:before,.geo-tabs.ant-tabs-bottom>div>.ant-tabs-nav:before{border-bottom-color:var(--geo-color-primary-border)}.geo-tabs--card.ant-tabs-card>.ant-tabs-nav .ant-tabs-tab,.geo-tabs--card.ant-tabs-card>div>.ant-tabs-nav .ant-tabs-tab{margin:0 4px 0 0;padding:8px 16px;background:var(--geo-color-neutral-100);border:1px solid var(--geo-color-primary-border);border-radius:var(--geo-radius) var(--geo-radius) 0 0;color:var(--geo-color-neutral-500)}.geo-tabs--card.ant-tabs-card>.ant-tabs-nav .ant-tabs-tab-active,.geo-tabs--card.ant-tabs-card>div>.ant-tabs-nav .ant-tabs-tab-active{background:var(--geo-color-neutral-white);border-color:var(--geo-color-primary-border);border-bottom-color:var(--geo-color-neutral-white);color:var(--geo-color-primary-default)}.geo-tabs--card .ant-tabs-tab-active .ant-tabs-tab-btn{color:var(--geo-color-primary-default)!important}.geo-tabs .ant-tabs-content-holder{color:var(--geo-color-neutral-900);font-size:14px;line-height:22px;min-width:0}.geo-tabs.ant-tabs-small .ant-tabs-tab{padding:6px 12px;font-size:13px}.geo-tabs.ant-tabs-large .ant-tabs-tab{padding:12px 20px;font-size:16px}@media (max-width: 1024px){.geo-tabs .ant-tabs-tab{padding:8px 12px;font-size:13px;line-height:18px}.geo-tabs.ant-tabs-large .ant-tabs-tab{padding:10px 14px;font-size:15px}.geo-tabs--card.ant-tabs-card>.ant-tabs-nav .ant-tabs-tab,.geo-tabs--card.ant-tabs-card>div>.ant-tabs-nav .ant-tabs-tab{padding:6px 12px}}@media (max-width: 767.98px){.geo-tabs .ant-tabs-nav{margin-bottom:12px}.geo-tabs .ant-tabs-nav-wrap{overflow:visible}.geo-tabs .ant-tabs-nav-list{flex-wrap:wrap;row-gap:0;width:100%;transform:none!important}.geo-tabs .ant-tabs-nav-operations,.geo-tabs .ant-tabs-ink-bar{display:none!important}.geo-tabs .ant-tabs-tab{height:auto;min-width:0;max-width:100%;flex:1 1 auto;margin:0;padding:8px 10px;font-size:12px;line-height:1.35;white-space:normal;text-align:center;border-bottom:2px solid transparent}.geo-tabs .ant-tabs-tab-btn{display:inline-block;max-width:100%;white-space:normal;word-break:break-word;line-height:1.35}.geo-tabs .ant-tabs-tab-active{border-bottom-color:var(--geo-color-primary-default)}.geo-tabs.ant-tabs-small .ant-tabs-tab{padding:6px 8px;font-size:12px}.geo-tabs.ant-tabs-large .ant-tabs-tab{padding:8px 12px;font-size:14px}.geo-tabs.ant-tabs-top>.ant-tabs-nav:before,.geo-tabs.ant-tabs-top>div>.ant-tabs-nav:before{left:0;right:0;border-bottom:1px solid var(--geo-color-primary-border)}.geo-tabs--card.ant-tabs-card>.ant-tabs-nav .ant-tabs-tab,.geo-tabs--card.ant-tabs-card>div>.ant-tabs-nav .ant-tabs-tab{margin:0 0 4px;flex:1 1 calc(50% - 4px);padding:8px 10px;border-radius:var(--geo-radius);border-bottom-color:var(--geo-color-primary-border)}.geo-tabs--card.ant-tabs-card>.ant-tabs-nav .ant-tabs-tab-active,.geo-tabs--card.ant-tabs-card>div>.ant-tabs-nav .ant-tabs-tab-active{border-color:var(--geo-color-primary-default);border-bottom-color:var(--geo-color-primary-default);background:var(--geo-color-neutral-white)}.geo-tabs.ant-tabs-centered>.ant-tabs-nav .ant-tabs-nav-wrap:before,.geo-tabs.ant-tabs-centered>.ant-tabs-nav .ant-tabs-nav-wrap:after,.geo-tabs.ant-tabs-centered>div>.ant-tabs-nav .ant-tabs-nav-wrap:before,.geo-tabs.ant-tabs-centered>div>.ant-tabs-nav .ant-tabs-nav-wrap:after{flex:0 0 0;content:none}}\n"], dependencies: [{ kind: "ngmodule", type: NgZorroAntdModule }, { kind: "component", type: i1$
|
|
2482
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoTabsComponent, isStandalone: true, selector: "geo-tabs", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, selectedIndex: { classPropertyName: "selectedIndex", publicName: "selectedIndex", isSignal: true, isRequired: false, transformFunction: null }, selectedKey: { classPropertyName: "selectedKey", publicName: "selectedKey", isSignal: true, isRequired: false, transformFunction: null }, centered: { classPropertyName: "centered", publicName: "centered", isSignal: true, isRequired: false, transformFunction: null }, animated: { classPropertyName: "animated", publicName: "animated", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedIndex: "selectedIndexChange", selectedKey: "selectedKeyChange", tabChange: "tabChange" }, host: { properties: { "class.geo-tabs-host--card": "type() === \"card\"", "class.geo-tabs-host--line": "type() === \"line\"" }, classAttribute: "geo-tabs-host" }, queries: [{ propertyName: "tabTemplates", predicate: GeoTabDirective }], ngImport: i0, template: "<nz-tabset\n class=\"geo-tabs\"\n [class.geo-tabs--card]=\"type() === 'card'\"\n [class.geo-tabs--line]=\"type() === 'line'\"\n [nzType]=\"type()\"\n [nzSize]=\"size()\"\n [nzSelectedIndex]=\"resolvedSelectedIndex()\"\n [nzCentered]=\"centered()\"\n [nzAnimated]=\"animated()\"\n (nzSelectedIndexChange)=\"onSelectedIndexChange($event)\"\n>\n @for (item of items(); track item.key) {\n <nz-tab [nzTitle]=\"item.title\" [nzDisabled]=\"item.disabled ?? false\">\n @if (getTemplate(item.key); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl\"></ng-container>\n }\n </nz-tab>\n }\n</nz-tabset>\n", styles: ["@charset \"UTF-8\";.geo-tabs-host{display:block;width:100%;min-width:0;max-width:100%}.geo-tabs.ant-tabs{color:var(--geo-color-neutral-900);min-width:0;width:100%}.geo-tabs .ant-tabs-nav{margin-bottom:16px}.geo-tabs .ant-tabs-nav-wrap{min-width:0;flex:1 1 auto}.geo-tabs .ant-tabs-nav-list{flex-wrap:nowrap}.geo-tabs .ant-tabs-tab{padding:10px 16px;font-size:14px;line-height:20px;color:var(--geo-color-neutral-500);transition:color .15s ease}.geo-tabs .ant-tabs-tab:hover{color:var(--geo-color-primary-default)}.geo-tabs .ant-tabs-tab-btn{font-weight:500}.geo-tabs .ant-tabs-tab-active .ant-tabs-tab-btn{color:var(--geo-color-primary-default)!important;font-weight:600}.geo-tabs .ant-tabs-tab-disabled{color:var(--geo-color-neutral-400)!important;cursor:not-allowed}.geo-tabs .ant-tabs-ink-bar{background:var(--geo-color-primary-default);height:2px}.geo-tabs.ant-tabs-top>.ant-tabs-nav:before,.geo-tabs.ant-tabs-bottom>.ant-tabs-nav:before,.geo-tabs.ant-tabs-top>div>.ant-tabs-nav:before,.geo-tabs.ant-tabs-bottom>div>.ant-tabs-nav:before{border-bottom-color:var(--geo-color-primary-border)}.geo-tabs--card.ant-tabs-card>.ant-tabs-nav .ant-tabs-tab,.geo-tabs--card.ant-tabs-card>div>.ant-tabs-nav .ant-tabs-tab{margin:0 4px 0 0;padding:8px 16px;background:var(--geo-color-neutral-100);border:1px solid var(--geo-color-primary-border);border-radius:var(--geo-radius) var(--geo-radius) 0 0;color:var(--geo-color-neutral-500)}.geo-tabs--card.ant-tabs-card>.ant-tabs-nav .ant-tabs-tab-active,.geo-tabs--card.ant-tabs-card>div>.ant-tabs-nav .ant-tabs-tab-active{background:var(--geo-color-neutral-white);border-color:var(--geo-color-primary-border);border-bottom-color:var(--geo-color-neutral-white);color:var(--geo-color-primary-default)}.geo-tabs--card .ant-tabs-tab-active .ant-tabs-tab-btn{color:var(--geo-color-primary-default)!important}.geo-tabs .ant-tabs-content-holder{color:var(--geo-color-neutral-900);font-size:14px;line-height:22px;min-width:0}.geo-tabs.ant-tabs-small .ant-tabs-tab{padding:6px 12px;font-size:13px}.geo-tabs.ant-tabs-large .ant-tabs-tab{padding:12px 20px;font-size:16px}@media (max-width: 1024px){.geo-tabs .ant-tabs-tab{padding:8px 12px;font-size:13px;line-height:18px}.geo-tabs.ant-tabs-large .ant-tabs-tab{padding:10px 14px;font-size:15px}.geo-tabs--card.ant-tabs-card>.ant-tabs-nav .ant-tabs-tab,.geo-tabs--card.ant-tabs-card>div>.ant-tabs-nav .ant-tabs-tab{padding:6px 12px}}@media (max-width: 767.98px){.geo-tabs .ant-tabs-nav{margin-bottom:12px}.geo-tabs .ant-tabs-nav-wrap{overflow:visible}.geo-tabs .ant-tabs-nav-list{flex-wrap:wrap;row-gap:0;width:100%;transform:none!important}.geo-tabs .ant-tabs-nav-operations,.geo-tabs .ant-tabs-ink-bar{display:none!important}.geo-tabs .ant-tabs-tab{height:auto;min-width:0;max-width:100%;flex:1 1 auto;margin:0;padding:8px 10px;font-size:12px;line-height:1.35;white-space:normal;text-align:center;border-bottom:2px solid transparent}.geo-tabs .ant-tabs-tab-btn{display:inline-block;max-width:100%;white-space:normal;word-break:break-word;line-height:1.35}.geo-tabs .ant-tabs-tab-active{border-bottom-color:var(--geo-color-primary-default)}.geo-tabs.ant-tabs-small .ant-tabs-tab{padding:6px 8px;font-size:12px}.geo-tabs.ant-tabs-large .ant-tabs-tab{padding:8px 12px;font-size:14px}.geo-tabs.ant-tabs-top>.ant-tabs-nav:before,.geo-tabs.ant-tabs-top>div>.ant-tabs-nav:before{left:0;right:0;border-bottom:1px solid var(--geo-color-primary-border)}.geo-tabs--card.ant-tabs-card>.ant-tabs-nav .ant-tabs-tab,.geo-tabs--card.ant-tabs-card>div>.ant-tabs-nav .ant-tabs-tab{margin:0 0 4px;flex:1 1 calc(50% - 4px);padding:8px 10px;border-radius:var(--geo-radius);border-bottom-color:var(--geo-color-primary-border)}.geo-tabs--card.ant-tabs-card>.ant-tabs-nav .ant-tabs-tab-active,.geo-tabs--card.ant-tabs-card>div>.ant-tabs-nav .ant-tabs-tab-active{border-color:var(--geo-color-primary-default);border-bottom-color:var(--geo-color-primary-default);background:var(--geo-color-neutral-white)}.geo-tabs.ant-tabs-centered>.ant-tabs-nav .ant-tabs-nav-wrap:before,.geo-tabs.ant-tabs-centered>.ant-tabs-nav .ant-tabs-nav-wrap:after,.geo-tabs.ant-tabs-centered>div>.ant-tabs-nav .ant-tabs-nav-wrap:before,.geo-tabs.ant-tabs-centered>div>.ant-tabs-nav .ant-tabs-nav-wrap:after{flex:0 0 0;content:none}}\n"], dependencies: [{ kind: "ngmodule", type: NgZorroAntdModule }, { kind: "component", type: i1$9.NzTabSetComponent, selector: "nz-tabset", inputs: ["nzSelectedIndex", "nzTabPosition", "nzTabBarExtraContent", "nzCanDeactivate", "nzAddIcon", "nzTabBarStyle", "nzType", "nzSize", "nzAnimated", "nzTabBarGutter", "nzHideAdd", "nzCentered", "nzHideAll", "nzLinkRouter", "nzLinkExact", "nzDestroyInactiveTabPane"], outputs: ["nzSelectChange", "nzSelectedIndexChange", "nzTabListScroll", "nzClose", "nzAdd"], exportAs: ["nzTabset"] }, { kind: "component", type: i1$9.NzTabComponent, selector: "nz-tab", inputs: ["nzTitle", "nzClosable", "nzCloseIcon", "nzDisabled", "nzForceRender"], outputs: ["nzSelect", "nzDeselect", "nzClick", "nzContextmenu"], exportAs: ["nzTab"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
2442
2483
|
}
|
|
2443
2484
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoTabsComponent, decorators: [{
|
|
2444
2485
|
type: Component,
|
|
@@ -2452,6 +2493,68 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
2452
2493
|
args: [GeoTabDirective]
|
|
2453
2494
|
}] } });
|
|
2454
2495
|
|
|
2496
|
+
class GeoAccordionPanelDirective {
|
|
2497
|
+
key = input.required({ alias: 'uiPanel' });
|
|
2498
|
+
template = inject((TemplateRef));
|
|
2499
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoAccordionPanelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2500
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.14", type: GeoAccordionPanelDirective, isStandalone: true, selector: "[uiPanel]", inputs: { key: { classPropertyName: "key", publicName: "uiPanel", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });
|
|
2501
|
+
}
|
|
2502
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoAccordionPanelDirective, decorators: [{
|
|
2503
|
+
type: Directive,
|
|
2504
|
+
args: [{
|
|
2505
|
+
selector: '[uiPanel]',
|
|
2506
|
+
standalone: true,
|
|
2507
|
+
}]
|
|
2508
|
+
}] });
|
|
2509
|
+
/**
|
|
2510
|
+
* Collapsible panel group.
|
|
2511
|
+
*
|
|
2512
|
+
* @summary Nhóm panel thu gọn/mở rộng (nz-collapse); mỗi panel chiếu nội dung qua `[uiPanel]`.
|
|
2513
|
+
* @whenToUse Gom nhiều nhóm thông tin dài trên cùng trang (FAQ, chi tiết theo mục).
|
|
2514
|
+
* @doNotUseWhen Điều hướng giữa các view ngang hàng — use geo-tabs.
|
|
2515
|
+
*/
|
|
2516
|
+
class GeoAccordionComponent {
|
|
2517
|
+
items = input([]);
|
|
2518
|
+
/** `true` → chỉ 1 panel mở tại một thời điểm (maps to `nzAccordion`). */
|
|
2519
|
+
accordion = input(false);
|
|
2520
|
+
bordered = input(true);
|
|
2521
|
+
ghost = input(false);
|
|
2522
|
+
activeKeys = model([]);
|
|
2523
|
+
panelChange = output();
|
|
2524
|
+
panelTemplates;
|
|
2525
|
+
isActive(key) {
|
|
2526
|
+
return this.activeKeys().includes(key);
|
|
2527
|
+
}
|
|
2528
|
+
onActiveChange(key, active) {
|
|
2529
|
+
if (this.accordion()) {
|
|
2530
|
+
this.activeKeys.set(active ? [key] : []);
|
|
2531
|
+
}
|
|
2532
|
+
else {
|
|
2533
|
+
const next = new Set(this.activeKeys());
|
|
2534
|
+
if (active) {
|
|
2535
|
+
next.add(key);
|
|
2536
|
+
}
|
|
2537
|
+
else {
|
|
2538
|
+
next.delete(key);
|
|
2539
|
+
}
|
|
2540
|
+
this.activeKeys.set([...next]);
|
|
2541
|
+
}
|
|
2542
|
+
this.panelChange.emit({ key, active });
|
|
2543
|
+
}
|
|
2544
|
+
getTemplate(key) {
|
|
2545
|
+
return this.panelTemplates?.find((panel) => panel.key() === key)?.template ?? null;
|
|
2546
|
+
}
|
|
2547
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoAccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2548
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoAccordionComponent, isStandalone: true, selector: "geo-accordion", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, accordion: { classPropertyName: "accordion", publicName: "accordion", isSignal: true, isRequired: false, transformFunction: null }, bordered: { classPropertyName: "bordered", publicName: "bordered", isSignal: true, isRequired: false, transformFunction: null }, ghost: { classPropertyName: "ghost", publicName: "ghost", isSignal: true, isRequired: false, transformFunction: null }, activeKeys: { classPropertyName: "activeKeys", publicName: "activeKeys", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activeKeys: "activeKeysChange", panelChange: "panelChange" }, host: { classAttribute: "geo-accordion-host" }, queries: [{ propertyName: "panelTemplates", predicate: GeoAccordionPanelDirective }], ngImport: i0, template: "<nz-collapse\n class=\"geo-accordion\"\n [nzAccordion]=\"accordion()\"\n [nzBordered]=\"bordered()\"\n [nzGhost]=\"ghost()\"\n>\n @for (item of items(); track item.key) {\n <nz-collapse-panel\n [nzHeader]=\"item.title\"\n [nzActive]=\"isActive(item.key)\"\n [nzDisabled]=\"item.disabled ?? false\"\n [nzExtra]=\"item.extra ?? ''\"\n (nzActiveChange)=\"onActiveChange(item.key, $event)\"\n >\n @if (getTemplate(item.key); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl\"></ng-container>\n }\n </nz-collapse-panel>\n }\n</nz-collapse>\n", styles: [".geo-accordion-host{display:block;width:100%}.geo-accordion.ant-collapse{background:transparent;border-color:var(--geo-color-border-default);border-radius:var(--geo-radius)}.geo-accordion .ant-collapse-item{border-color:var(--geo-color-border-default)}.geo-accordion .ant-collapse-header{font-family:var(--geo-font-family);font-size:14px;font-weight:500;color:var(--geo-color-neutral-900);padding:12px 16px}.geo-accordion .ant-collapse-item-active>.ant-collapse-header{color:var(--geo-color-primary-default)}.geo-accordion .ant-collapse-item-disabled>.ant-collapse-header,.geo-accordion .ant-collapse-item-disabled>.ant-collapse-header .ant-collapse-header-text{color:var(--geo-color-neutral-disabled-text)}.geo-accordion .ant-collapse-content-box{padding:12px 16px 16px;font-size:14px;color:var(--geo-color-neutral-900)}.geo-accordion .ant-collapse-extra{color:var(--geo-color-neutral-500);font-size:13px}\n"], dependencies: [{ kind: "ngmodule", type: NgZorroAntdModule }, { kind: "component", type: i1$a.NzCollapsePanelComponent, selector: "nz-collapse-panel", inputs: ["nzActive", "nzDisabled", "nzShowArrow", "nzExtra", "nzHeader", "nzExpandedIcon"], outputs: ["nzActiveChange"], exportAs: ["nzCollapsePanel"] }, { kind: "component", type: i1$a.NzCollapseComponent, selector: "nz-collapse", inputs: ["nzAccordion", "nzBordered", "nzGhost", "nzExpandIconPosition"], exportAs: ["nzCollapse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
2549
|
+
}
|
|
2550
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoAccordionComponent, decorators: [{
|
|
2551
|
+
type: Component,
|
|
2552
|
+
args: [{ selector: 'geo-accordion', standalone: true, imports: [NgZorroAntdModule, NgTemplateOutlet], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'geo-accordion-host' }, template: "<nz-collapse\n class=\"geo-accordion\"\n [nzAccordion]=\"accordion()\"\n [nzBordered]=\"bordered()\"\n [nzGhost]=\"ghost()\"\n>\n @for (item of items(); track item.key) {\n <nz-collapse-panel\n [nzHeader]=\"item.title\"\n [nzActive]=\"isActive(item.key)\"\n [nzDisabled]=\"item.disabled ?? false\"\n [nzExtra]=\"item.extra ?? ''\"\n (nzActiveChange)=\"onActiveChange(item.key, $event)\"\n >\n @if (getTemplate(item.key); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl\"></ng-container>\n }\n </nz-collapse-panel>\n }\n</nz-collapse>\n", styles: [".geo-accordion-host{display:block;width:100%}.geo-accordion.ant-collapse{background:transparent;border-color:var(--geo-color-border-default);border-radius:var(--geo-radius)}.geo-accordion .ant-collapse-item{border-color:var(--geo-color-border-default)}.geo-accordion .ant-collapse-header{font-family:var(--geo-font-family);font-size:14px;font-weight:500;color:var(--geo-color-neutral-900);padding:12px 16px}.geo-accordion .ant-collapse-item-active>.ant-collapse-header{color:var(--geo-color-primary-default)}.geo-accordion .ant-collapse-item-disabled>.ant-collapse-header,.geo-accordion .ant-collapse-item-disabled>.ant-collapse-header .ant-collapse-header-text{color:var(--geo-color-neutral-disabled-text)}.geo-accordion .ant-collapse-content-box{padding:12px 16px 16px;font-size:14px;color:var(--geo-color-neutral-900)}.geo-accordion .ant-collapse-extra{color:var(--geo-color-neutral-500);font-size:13px}\n"] }]
|
|
2553
|
+
}], propDecorators: { panelTemplates: [{
|
|
2554
|
+
type: ContentChildren,
|
|
2555
|
+
args: [GeoAccordionPanelDirective]
|
|
2556
|
+
}] } });
|
|
2557
|
+
|
|
2455
2558
|
const DEFAULT_UI_ROW_ACTIONS = [
|
|
2456
2559
|
{ key: 'edit', icon: 'edit', title: 'Chỉnh sửa' },
|
|
2457
2560
|
{ key: 'more', icon: 'more', title: 'Thêm thao tác' },
|
|
@@ -2507,7 +2610,7 @@ class GeoRowActionsComponent {
|
|
|
2507
2610
|
}
|
|
2508
2611
|
}
|
|
2509
2612
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoRowActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2510
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoRowActionsComponent, isStandalone: true, selector: "geo-row-actions", inputs: { actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, primaryActionKey: { classPropertyName: "primaryActionKey", publicName: "primaryActionKey", isSignal: true, isRequired: false, transformFunction: null } }, 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: NgZorroAntdModule }, { kind: "directive", type: i1$
|
|
2613
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoRowActionsComponent, isStandalone: true, selector: "geo-row-actions", inputs: { actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, primaryActionKey: { classPropertyName: "primaryActionKey", publicName: "primaryActionKey", isSignal: true, isRequired: false, transformFunction: null } }, 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: NgZorroAntdModule }, { kind: "directive", type: i1$6.ɵ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$6.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i2$6.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "directive", type: i1.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "directive", type: i1$2.NzTooltipDirective, selector: "[nz-tooltip]", inputs: ["nzTooltipTitle", "nzTooltipTitleContext", "nz-tooltip", "nzTooltipTrigger", "nzTooltipPlacement", "nzTooltipOrigin", "nzTooltipVisible", "nzTooltipMouseEnterDelay", "nzTooltipMouseLeaveDelay", "nzTooltipOverlayClassName", "nzTooltipOverlayStyle", "nzTooltipArrowPointAtCenter", "cdkConnectedOverlayPush", "nzTooltipColor"], outputs: ["nzTooltipVisibleChange"], exportAs: ["nzTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2511
2614
|
}
|
|
2512
2615
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoRowActionsComponent, decorators: [{
|
|
2513
2616
|
type: Component,
|
|
@@ -2854,7 +2957,7 @@ class GeoTableComponent {
|
|
|
2854
2957
|
this.selectionChange.emit(selected);
|
|
2855
2958
|
}
|
|
2856
2959
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2857
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoTableComponent, isStandalone: true, selector: "geo-table", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, bordered: { classPropertyName: "bordered", publicName: "bordered", isSignal: true, isRequired: false, transformFunction: null }, outerBordered: { classPropertyName: "outerBordered", publicName: "outerBordered", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, striped: { classPropertyName: "striped", publicName: "striped", isSignal: true, isRequired: false, transformFunction: null }, clickable: { classPropertyName: "clickable", publicName: "clickable", isSignal: true, isRequired: false, transformFunction: null }, tableLayout: { classPropertyName: "tableLayout", publicName: "tableLayout", isSignal: true, isRequired: false, transformFunction: null }, showPagination: { classPropertyName: "showPagination", publicName: "showPagination", isSignal: true, isRequired: false, transformFunction: null }, frontPagination: { classPropertyName: "frontPagination", publicName: "frontPagination", isSignal: true, isRequired: false, transformFunction: null }, pageIndex: { classPropertyName: "pageIndex", publicName: "pageIndex", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, total: { classPropertyName: "total", publicName: "total", isSignal: true, isRequired: false, transformFunction: null }, pageSizeOptions: { classPropertyName: "pageSizeOptions", publicName: "pageSizeOptions", isSignal: true, isRequired: false, transformFunction: null }, showSizeChanger: { classPropertyName: "showSizeChanger", publicName: "showSizeChanger", isSignal: true, isRequired: false, transformFunction: null }, showQuickJumper: { classPropertyName: "showQuickJumper", publicName: "showQuickJumper", isSignal: true, isRequired: false, transformFunction: null }, hideOnSinglePage: { classPropertyName: "hideOnSinglePage", publicName: "hideOnSinglePage", isSignal: true, isRequired: false, transformFunction: null }, simplePagination: { classPropertyName: "simplePagination", publicName: "simplePagination", isSignal: true, isRequired: false, transformFunction: null }, paginationPosition: { classPropertyName: "paginationPosition", publicName: "paginationPosition", isSignal: true, isRequired: false, transformFunction: null }, scroll: { classPropertyName: "scroll", publicName: "scroll", isSignal: true, isRequired: false, transformFunction: null }, scrollY: { classPropertyName: "scrollY", publicName: "scrollY", isSignal: true, isRequired: false, transformFunction: null }, autoScroll: { classPropertyName: "autoScroll", publicName: "autoScroll", isSignal: true, isRequired: false, transformFunction: null }, tableTitle: { classPropertyName: "tableTitle", publicName: "tableTitle", isSignal: true, isRequired: false, transformFunction: null }, footer: { classPropertyName: "footer", publicName: "footer", isSignal: true, isRequired: false, transformFunction: null }, emptyText: { classPropertyName: "emptyText", publicName: "emptyText", isSignal: true, isRequired: false, transformFunction: null }, showTotalRange: { classPropertyName: "showTotalRange", publicName: "showTotalRange", isSignal: true, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: true, isRequired: false, transformFunction: null }, rowKey: { classPropertyName: "rowKey", publicName: "rowKey", isSignal: true, isRequired: false, transformFunction: null }, selectedKeys: { classPropertyName: "selectedKeys", publicName: "selectedKeys", isSignal: true, isRequired: false, transformFunction: null }, mobileTitleKey: { classPropertyName: "mobileTitleKey", publicName: "mobileTitleKey", isSignal: true, isRequired: false, transformFunction: null }, mobileCardView: { classPropertyName: "mobileCardView", publicName: "mobileCardView", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pageIndex: "pageIndexChange", pageSize: "pageSizeChange", selectedKeys: "selectedKeysChange", rowClick: "rowClick", rowEdit: "rowEdit", rowMore: "rowMore", rowAction: "rowAction", queryParams: "queryParams", currentPageDataChange: "currentPageDataChange", selectionChange: "selectionChange" }, ngImport: i0, template: "<div\n class=\"geo-table\"\n [class.geo-table--striped]=\"striped()\"\n [class.geo-table--mobile-cards]=\"mobileCardView()\"\n>\n @if (shouldShowPagination() && (paginationPosition() === 'top' || paginationPosition() === 'both')) {\n <geo-table-pagination\n [pageIndex]=\"pageIndex()\"\n [pageSize]=\"pageSize()\"\n [total]=\"computedTotal()\"\n [pageSizeOptions]=\"pageSizeOptions()\"\n [showSizeChanger]=\"showSizeChanger()\"\n [hideOnSinglePage]=\"hideOnSinglePage()\"\n [showTotalRange]=\"showTotalRange()\"\n (pageIndexChange)=\"onPageIndexChange($event)\"\n (pageSizeChange)=\"onPageSizeChange($event)\"\n ></geo-table-pagination>\n }\n\n <div class=\"geo-table__desktop\">\n <nz-table\n #uiTable\n [nzData]=\"paginatedData()\"\n [nzLoading]=\"loading()\"\n [nzBordered]=\"bordered()\"\n [nzOuterBordered]=\"outerBordered()\"\n [nzSize]=\"size()\"\n [nzTitle]=\"tableTitle() ?? null\"\n [nzFooter]=\"footer() ?? null\"\n [nzShowPagination]=\"false\"\n [nzFrontPagination]=\"false\"\n [nzScroll]=\"computedScroll()\"\n [nzNoResult]=\"emptyText()\"\n [nzTableLayout]=\"computedTableLayout()\"\n [nzWidthConfig]=\"widthConfig()\"\n (nzQueryParams)=\"queryParams.emit($event)\"\n (nzCurrentPageDataChange)=\"currentPageDataChange.emit($event)\"\n >\n <thead>\n <tr>\n @if (selectable()) {\n <th\n class=\"geo-table__checkbox-cell\"\n nzWidth=\"48px\"\n [nzLeft]=\"hasFixedColumns()\"\n >\n <geo-checkbox\n [checked]=\"allChecked()\"\n [indeterminate]=\"indeterminate()\"\n (checkedChange)=\"onAllChecked($event)\"\n ></geo-checkbox>\n </th>\n }\n @for (col of visibleColumns(); track col.key) {\n <th\n [nzWidth]=\"col.width ?? null\"\n [nzAlign]=\"getHeaderAlign(col)\"\n [nzColumnKey]=\"col.key\"\n [nzShowSort]=\"col.sortable ?? false\"\n [nzSortOrder]=\"col.sortOrder ?? null\"\n [nzSortFn]=\"col.sortable ? getSortFn(col) : null\"\n [nzShowFilter]=\"hasFilters(col)\"\n [nzFilters]=\"col.filters ?? []\"\n [nzFilterMultiple]=\"col.filterMultiple ?? true\"\n [nzLeft]=\"col.fixed === 'left'\"\n [nzRight]=\"col.fixed === 'right'\"\n >{{ col.title }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of uiTable.data; track trackRow($index, row); let rowIndex = $index) {\n <tr\n class=\"geo-table__row\"\n [class.geo-table__row--selected]=\"isRowSelected(row)\"\n [class.geo-table__row--clickable]=\"clickable()\"\n (click)=\"clickable() && rowClick.emit(row)\"\n >\n @if (selectable()) {\n <td\n class=\"geo-table__checkbox-cell\"\n [nzLeft]=\"hasFixedColumns()\"\n (click)=\"$event.stopPropagation()\"\n >\n <geo-checkbox\n [checked]=\"isRowSelected(row)\"\n (checkedChange)=\"onItemChecked(row, $event)\"\n ></geo-checkbox>\n </td>\n }\n @for (col of visibleColumns(); track col.key) {\n <td\n [nzAlign]=\"getCellAlign(col)\"\n [nzEllipsis]=\"col.wrap ? false : (col.ellipsis ?? false)\"\n [class.geo-table__cell--wrap]=\"col.wrap\"\n [nzLeft]=\"col.fixed === 'left'\"\n [nzRight]=\"col.fixed === 'right'\"\n [style.width]=\"col.width || null\"\n [style.minWidth]=\"col.width || null\"\n [style.maxWidth]=\"col.fixed ? (col.width || null) : null\"\n >\n @if (col.renderAs === 'index') {\n {{ getRowIndex(rowIndex) }}\n } @else if (col.renderAs === 'status') {\n <geo-status-tag\n [status]=\"getCellValue(row, col.key)\"\n [label]=\"col.statusLabelKey ? getCellValue(row, col.statusLabelKey) || undefined : undefined\"\n ></geo-status-tag>\n } @else if (col.renderAs === 'actions') {\n <geo-row-actions\n [actions]=\"getRowActions(col, row)\"\n [primaryActionKey]=\"col.primaryActionKey ?? 'edit'\"\n (actionClick)=\"onRowActionClick(row, $event)\"\n ></geo-row-actions>\n } @else {\n {{ getCellValue(row, col.key) }}\n }\n </td>\n }\n </tr>\n }\n </tbody>\n </nz-table>\n </div>\n\n @if (mobileCardView()) {\n <div\n class=\"geo-table__mobile\"\n [class.geo-table__mobile--loading]=\"loading()\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n >\n @if (selectable() && paginatedData().length) {\n <div class=\"geo-table-card__select-all\">\n <geo-checkbox\n [checked]=\"allChecked()\"\n [indeterminate]=\"indeterminate()\"\n (checkedChange)=\"onAllChecked($event)\"\n ></geo-checkbox>\n <span>Ch\u1ECDn t\u1EA5t c\u1EA3 tr\u00EAn trang</span>\n </div>\n }\n\n @if (!paginatedData().length && !loading()) {\n <div class=\"geo-table__mobile-empty\">{{ emptyText() }}</div>\n }\n\n @for (row of paginatedData(); track trackRow($index, row); let rowIndex = $index) {\n <article\n class=\"geo-table-card\"\n [class.geo-table-card--selected]=\"isRowSelected(row)\"\n [class.geo-table-card--clickable]=\"clickable()\"\n (click)=\"onMobileCardClick(row, $event)\"\n >\n <header class=\"geo-table-card__header\">\n <div class=\"geo-table-card__title-wrap\">\n @if (selectable()) {\n <geo-checkbox\n class=\"geo-table-card__checkbox\"\n [checked]=\"isRowSelected(row)\"\n (checkedChange)=\"onItemChecked(row, $event)\"\n (click)=\"$event.stopPropagation()\"\n ></geo-checkbox>\n }\n @if (mobileTitleColumn(); as titleCol) {\n <h3 class=\"geo-table-card__title\">\n <span class=\"geo-table-card__title-label\">{{ titleCol.title }}</span>\n <span class=\"geo-table-card__title-sep\">:</span>\n <span class=\"geo-table-card__title-value\">\n @if (titleCol.renderAs === 'index') {\n {{ getRowIndex(rowIndex) }}\n } @else {\n {{ getCellValue(row, titleCol.key) }}\n }\n </span>\n </h3>\n }\n </div>\n\n @if (mobileActionsColumn(); as actionsCol) {\n <div class=\"geo-table-card__actions\" (click)=\"$event.stopPropagation()\">\n <geo-row-actions\n [actions]=\"getMobileHeaderActions(actionsCol, row)\"\n [primaryActionKey]=\"actionsCol.primaryActionKey ?? 'edit'\"\n (actionClick)=\"onRowActionClick(row, $event)\"\n ></geo-row-actions>\n </div>\n }\n </header>\n\n @if (mobileBodyColumns().length) {\n <div class=\"geo-table-card__body\">\n @for (col of mobileBodyColumns(); track col.key) {\n <div class=\"geo-table-card__row\">\n <span class=\"geo-table-card__label\">{{ col.title }}</span>\n <span class=\"geo-table-card__sep\">:</span>\n <span class=\"geo-table-card__value\">\n @if (col.renderAs === 'index') {\n {{ getRowIndex(rowIndex) }}\n } @else if (col.renderAs === 'status') {\n <geo-status-tag\n [status]=\"getCellValue(row, col.key)\"\n [label]=\"col.statusLabelKey ? getCellValue(row, col.statusLabelKey) || undefined : undefined\"\n ></geo-status-tag>\n } @else {\n {{ getCellValue(row, col.key) }}\n }\n </span>\n </div>\n }\n </div>\n }\n\n @if (mobileActionsColumn(); as actionsCol) {\n @if (getMobileFooterActions(actionsCol, row); as footerActions) {\n @if (footerActions.length) {\n <footer class=\"geo-table-card__footer\" (click)=\"$event.stopPropagation()\">\n @for (action of footerActions; track action.key) {\n <button\n type=\"button\"\n class=\"geo-table-card__footer-btn\"\n [class.geo-table-card__footer-btn--danger]=\"action.danger\"\n [disabled]=\"action.disabled\"\n (click)=\"onRowActionClick(row, action.key)\"\n >\n {{ action.label ?? action.title ?? action.key }}\n </button>\n }\n </footer>\n }\n }\n }\n </article>\n }\n </div>\n }\n\n @if (shouldShowPagination() && (paginationPosition() === 'bottom' || paginationPosition() === 'both')) {\n <geo-table-pagination\n [pageIndex]=\"pageIndex()\"\n [pageSize]=\"pageSize()\"\n [total]=\"computedTotal()\"\n [pageSizeOptions]=\"pageSizeOptions()\"\n [showSizeChanger]=\"showSizeChanger()\"\n [hideOnSinglePage]=\"hideOnSinglePage()\"\n [showTotalRange]=\"showTotalRange()\"\n (pageIndexChange)=\"onPageIndexChange($event)\"\n (pageSizeChange)=\"onPageSizeChange($event)\"\n ></geo-table-pagination>\n }\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:block;max-width:100%;min-width:0}.geo-table{width:100%;max-width:100%;min-width:0;border-radius:var(--geo-radius);overflow:clip}.geo-table__row--clickable{cursor:pointer}.geo-table__row--selected>td{background:var(--geo-color-primary-background)}:host ::ng-deep .geo-table--striped .ant-table-tbody>tr.geo-table__row:nth-child(2n of.geo-table__row)>td{background:var(--geo-color-neutral-100)}:host ::ng-deep .geo-table--striped .ant-table-tbody>tr.geo-table__row:nth-child(2n of.geo-table__row)>td.ant-table-cell-fix-left,:host ::ng-deep .geo-table--striped .ant-table-tbody>tr.geo-table__row:nth-child(2n of.geo-table__row)>td.ant-table-cell-fix-right{background:var(--geo-color-neutral-100)}:host ::ng-deep .geo-table--striped .ant-table-tbody>tr.geo-table__row:nth-child(2n of.geo-table__row):hover>td,:host ::ng-deep .geo-table--striped .ant-table-tbody>tr.geo-table__row:nth-child(2n of.geo-table__row):hover>td.ant-table-cell-fix-left,:host ::ng-deep .geo-table--striped .ant-table-tbody>tr.geo-table__row:nth-child(2n of.geo-table__row):hover>td.ant-table-cell-fix-right{background:var(--geo-color-primary-background)}:host ::ng-deep .geo-table--striped .ant-table-tbody>tr.geo-table__row--selected>td,:host ::ng-deep .geo-table--striped .ant-table-tbody>tr.geo-table__row--selected>td.ant-table-cell-fix-left,:host ::ng-deep .geo-table--striped .ant-table-tbody>tr.geo-table__row--selected>td.ant-table-cell-fix-right{background:var(--geo-color-primary-background)}.geo-table__checkbox-cell{text-align:center;vertical-align:middle;padding-left:12px!important;padding-right:12px!important}.geo-table__cell--wrap{white-space:normal;word-break:break-word;overflow-wrap:anywhere}:host ::ng-deep .geo-table .ant-table{background:var(--geo-color-neutral-white);border-radius:var(--geo-radius)}:host ::ng-deep .geo-table .ant-table-container{border-radius:var(--geo-radius)}:host ::ng-deep .geo-table .ant-table-thead>tr>th{background:var(--geo-color-neutral-100)!important;color:var(--geo-color-neutral-900)!important;font-weight:600;font-size:14px;line-height:20px;height:44px;padding:12px 10px!important;white-space:nowrap;text-align:center;border-bottom:1px solid var(--geo-color-primary-border)!important;box-sizing:border-box}:host ::ng-deep .geo-table .ant-table-body>table>thead{display:none!important}:host ::ng-deep .geo-table .ant-table-tbody>tr.ant-table-measure-now,:host ::ng-deep .geo-table .ant-table-tbody>tr[nz-table-measure-row]{height:0!important;font-size:0!important;line-height:0!important}:host ::ng-deep .geo-table .ant-table-tbody>tr.ant-table-measure-now>td,:host ::ng-deep .geo-table .ant-table-tbody>tr[nz-table-measure-row]>td{padding:0!important;border:0!important;height:0!important;min-height:0!important;line-height:0!important;font-size:0!important}:host ::ng-deep .geo-table .ant-table-tbody>tr>td{color:var(--geo-color-neutral-900);font-size:14px;line-height:normal;min-height:48px;padding:12px 10px!important;vertical-align:middle;border-bottom:1px solid var(--geo-color-primary-border)!important;box-sizing:border-box}:host ::ng-deep .geo-table .ant-table-tbody>tr:hover>td{background:var(--geo-color-primary-background)}:host ::ng-deep .geo-table .ant-table-bordered .ant-table-container{border-color:var(--geo-color-primary-border)}:host ::ng-deep .geo-table .geo-table__row-actions{display:inline-flex;align-items:center;justify-content:center;gap:10px}:host ::ng-deep .geo-table .geo-table__action-icon{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}:host ::ng-deep .geo-table .geo-table__action-icon:hover{color:var(--geo-color-primary-default);background:color-mix(in srgb,var(--geo-color-primary-default) 10%,transparent)}:host ::ng-deep .geo-table .ant-table-wrapper,:host ::ng-deep .geo-table .ant-spin-nested-loading,:host ::ng-deep .geo-table .ant-spin-container{width:100%;max-width:100%}:host ::ng-deep .geo-table .ant-table{width:100%}:host ::ng-deep .geo-table .ant-table-container{border-radius:var(--geo-radius);overflow:clip}:host ::ng-deep .geo-table .ant-table-body{overflow-x:auto!important;-webkit-overflow-scrolling:touch}:host ::ng-deep .geo-table .ant-table-content{overflow-x:auto;-webkit-overflow-scrolling:touch}:host ::ng-deep .geo-table .ant-table-header.nz-table-hide-scrollbar{overflow-x:hidden!important;overflow-y:scroll!important;scrollbar-gutter:stable}:host ::ng-deep .geo-table .ant-table-body{scrollbar-gutter:stable}:host ::ng-deep .geo-table .ant-table-cell-fix-left,:host ::ng-deep .geo-table .ant-table-cell-fix-right{background:var(--geo-color-neutral-white)}:host ::ng-deep .geo-table .ant-table-thead>tr>th.ant-table-cell-fix-left,:host ::ng-deep .geo-table .ant-table-thead>tr>th.ant-table-cell-fix-right{background:var(--geo-color-neutral-100)!important}:host ::ng-deep .geo-table .ant-table-tbody>tr:hover>td.ant-table-cell-fix-left,:host ::ng-deep .geo-table .ant-table-tbody>tr:hover>td.ant-table-cell-fix-right{background:var(--geo-color-primary-background)}:host ::ng-deep .geo-table .ant-table-thead>tr>th.ant-table-cell-fix-left,:host ::ng-deep .geo-table .ant-table-thead>tr>th.ant-table-cell-fix-right,:host ::ng-deep .geo-table .ant-table-tbody>tr>td.ant-table-cell-fix-left,:host ::ng-deep .geo-table .ant-table-tbody>tr>td.ant-table-cell-fix-right{box-sizing:border-box}:host ::ng-deep .geo-table .ant-table-ping-left:not(.ant-table-ping-right) .ant-table-cell-fix-left-last:after{box-shadow:inset 10px 0 8px -8px #0000001f}:host ::ng-deep .geo-table .ant-table-ping-right:not(.ant-table-ping-left) .ant-table-cell-fix-right-first:after{box-shadow:inset -10px 0 8px -8px #0000001f}.geo-table__mobile{display:none}@media (max-width: 767.98px){.geo-table--mobile-cards{overflow:visible}.geo-table--mobile-cards .geo-table__desktop{display:none}.geo-table--mobile-cards .geo-table__mobile{display:flex;flex-direction:column;gap:12px;padding:0}}.geo-table__mobile--loading{opacity:.55;pointer-events:none}.geo-table__mobile-empty{padding:32px 16px;text-align:center;color:var(--geo-color-neutral-500);font-size:14px;background:var(--geo-color-neutral-white);border:1px solid var(--geo-color-primary-border);border-radius:var(--geo-radius)}.geo-table-card__select-all{display:flex;align-items:center;gap:8px;padding:8px 4px;font-size:14px;color:var(--geo-color-neutral-700)}.geo-table-card{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;overflow:hidden}.geo-table-card--clickable{cursor:pointer}.geo-table-card--selected{border-color:var(--geo-color-primary-light);box-shadow:0 0 0 1px color-mix(in srgb,var(--geo-color-primary-default) 25%,transparent)}.geo-table-card__header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:14px 14px 10px}.geo-table-card__title-wrap{display:flex;align-items:flex-start;gap:8px;min-width:0;flex:1}.geo-table-card__checkbox{flex-shrink:0;margin-top:2px}.geo-table-card__title{margin:0;min-width:0;font-size:15px;font-weight:700;line-height:1.4;color:var(--geo-color-neutral-900);word-break:break-word}.geo-table-card__title-label,.geo-table-card__title-sep,.geo-table-card__title-value{font-weight:700;color:var(--geo-color-neutral-900)}.geo-table-card__title-sep{margin-inline:4px}.geo-table-card__actions{flex-shrink:0}:host ::ng-deep .geo-table-card__actions .geo-row-actions{gap:8px}:host ::ng-deep .geo-table-card__actions .geo-row-actions__btn{width:32px;height:32px;border-radius:var(--geo-radius);background:#1890ff1a;color:var(--geo-color-info-default)}:host ::ng-deep .geo-table-card__actions .geo-row-actions__btn:hover:not(:disabled){background:#1890ff2e;color:var(--geo-color-info-dark)}:host ::ng-deep .geo-table-card__actions .geo-row-actions__btn--danger{background:#ee003314;color:var(--geo-color-error-default)}:host ::ng-deep .geo-table-card__actions .geo-row-actions__btn--danger:hover:not(:disabled){background:#ee003324;color:var(--geo-color-error-dark)}:host ::ng-deep .geo-table-card__actions .geo-row-actions__btn :deep(.anticon),:host ::ng-deep .geo-table-card__actions .geo-row-actions__btn .anticon{font-size:16px}.geo-table-card__body{display:flex;flex-direction:column;gap:10px;padding:4px 14px 14px}.geo-table-card__row{display:flex;align-items:flex-start;flex-wrap:wrap;column-gap:4px;row-gap:2px;font-size:14px;line-height:1.45}.geo-table-card__label,.geo-table-card__sep{color:var(--geo-color-neutral-700);font-weight:400;flex-shrink:0}.geo-table-card__value{color:var(--geo-color-neutral-900);font-weight:700;min-width:0;word-break:break-word}.geo-table-card__footer{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;padding:12px 14px;background:var(--geo-color-info-light);border-top:1px solid var(--geo-color-info-light)}.geo-table-card__footer-btn{appearance:none;border:0;background:transparent;padding:0 8px;min-height:24px;font-size:14px;font-weight:600;line-height:1.4;color:var(--geo-color-info-default);cursor:pointer}.geo-table-card__footer-btn:hover:not(:disabled){color:var(--geo-color-info-dark);text-decoration:underline}.geo-table-card__footer-btn:disabled{opacity:.45;cursor:not-allowed}.geo-table-card__footer-btn--danger{color:var(--geo-color-error-default)}.geo-table-card__footer-btn--danger:hover:not(:disabled){color:var(--geo-color-error-dark)}\n"], dependencies: [{ kind: "ngmodule", type: NgZorroAntdModule }, { kind: "component", type: i1$9.NzTableComponent, selector: "nz-table", inputs: ["nzTableLayout", "nzShowTotal", "nzItemRender", "nzTitle", "nzFooter", "nzNoResult", "nzPageSizeOptions", "nzVirtualItemSize", "nzVirtualMaxBufferPx", "nzVirtualMinBufferPx", "nzVirtualForTrackBy", "nzLoadingDelay", "nzPageIndex", "nzPageSize", "nzTotal", "nzWidthConfig", "nzData", "nzCustomColumn", "nzPaginationPosition", "nzScroll", "noDataVirtualHeight", "nzPaginationType", "nzFrontPagination", "nzTemplateMode", "nzShowPagination", "nzLoading", "nzOuterBordered", "nzLoadingIndicator", "nzBordered", "nzSize", "nzShowSizeChanger", "nzHideOnSinglePage", "nzShowQuickJumper", "nzSimple"], outputs: ["nzPageSizeChange", "nzPageIndexChange", "nzQueryParams", "nzCurrentPageDataChange", "nzCustomColumnChange"], exportAs: ["nzTable"] }, { kind: "component", type: i1$9.NzThAddOnComponent, selector: "th[nzColumnKey], th[nzSortFn], th[nzSortOrder], th[nzFilters], th[nzShowSort], th[nzShowFilter], th[nzCustomFilter]", inputs: ["nzColumnKey", "nzFilterMultiple", "nzSortOrder", "nzSortPriority", "nzSortDirections", "nzFilters", "nzSortFn", "nzFilterFn", "nzShowSort", "nzShowFilter", "nzCustomFilter"], outputs: ["nzCheckedChange", "nzSortOrderChange", "nzFilterChange"] }, { kind: "directive", type: i1$9.NzTableCellDirective, selector: "th:not(.nz-disable-th):not([mat-cell]), td:not(.nz-disable-td):not([mat-cell])" }, { kind: "directive", type: i1$9.NzThMeasureDirective, selector: "th", inputs: ["nzWidth", "colspan", "colSpan", "rowspan", "rowSpan"] }, { kind: "component", type: i1$9.NzTheadComponent, selector: "thead:not(.ant-table-thead)", outputs: ["nzSortOrderChange"] }, { kind: "component", type: i1$9.NzTbodyComponent, selector: "tbody" }, { kind: "directive", type: i1$9.NzTrDirective, selector: "tr:not([mat-row]):not([mat-header-row]):not([nz-table-measure-row]):not([nzExpand]):not([nz-table-fixed-row])" }, { kind: "directive", type: i1$9.NzCellFixedDirective, selector: "td[nzRight],th[nzRight],td[nzLeft],th[nzLeft]", inputs: ["nzRight", "nzLeft", "colspan", "colSpan"] }, { kind: "directive", type: i1$9.NzCellAlignDirective, selector: "th[nzAlign],td[nzAlign]", inputs: ["nzAlign"] }, { kind: "directive", type: i1$9.NzCellEllipsisDirective, selector: "th[nzEllipsis],td[nzEllipsis]", inputs: ["nzEllipsis"] }, { kind: "component", type: GeoStatusTagComponent, selector: "geo-status-tag", inputs: ["status", "label", "showDot"] }, { kind: "component", type: GeoRowActionsComponent, selector: "geo-row-actions", inputs: ["actions", "primaryActionKey"], outputs: ["actionClick", "edit", "more"] }, { kind: "component", type: GeoCheckboxComponent, selector: "geo-checkbox", inputs: ["label", "checked", "disabled", "indeterminate"], outputs: ["checkedChange"] }, { kind: "component", type: GeoTablePaginationComponent, selector: "geo-table-pagination", inputs: ["pageIndex", "pageSize", "total", "pageSizeOptions", "showSizeChanger", "hideOnSinglePage", "showTotalRange", "sizeLabel"], outputs: ["pageIndexChange", "pageSizeChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2960
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoTableComponent, isStandalone: true, selector: "geo-table", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, bordered: { classPropertyName: "bordered", publicName: "bordered", isSignal: true, isRequired: false, transformFunction: null }, outerBordered: { classPropertyName: "outerBordered", publicName: "outerBordered", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, striped: { classPropertyName: "striped", publicName: "striped", isSignal: true, isRequired: false, transformFunction: null }, clickable: { classPropertyName: "clickable", publicName: "clickable", isSignal: true, isRequired: false, transformFunction: null }, tableLayout: { classPropertyName: "tableLayout", publicName: "tableLayout", isSignal: true, isRequired: false, transformFunction: null }, showPagination: { classPropertyName: "showPagination", publicName: "showPagination", isSignal: true, isRequired: false, transformFunction: null }, frontPagination: { classPropertyName: "frontPagination", publicName: "frontPagination", isSignal: true, isRequired: false, transformFunction: null }, pageIndex: { classPropertyName: "pageIndex", publicName: "pageIndex", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, total: { classPropertyName: "total", publicName: "total", isSignal: true, isRequired: false, transformFunction: null }, pageSizeOptions: { classPropertyName: "pageSizeOptions", publicName: "pageSizeOptions", isSignal: true, isRequired: false, transformFunction: null }, showSizeChanger: { classPropertyName: "showSizeChanger", publicName: "showSizeChanger", isSignal: true, isRequired: false, transformFunction: null }, showQuickJumper: { classPropertyName: "showQuickJumper", publicName: "showQuickJumper", isSignal: true, isRequired: false, transformFunction: null }, hideOnSinglePage: { classPropertyName: "hideOnSinglePage", publicName: "hideOnSinglePage", isSignal: true, isRequired: false, transformFunction: null }, simplePagination: { classPropertyName: "simplePagination", publicName: "simplePagination", isSignal: true, isRequired: false, transformFunction: null }, paginationPosition: { classPropertyName: "paginationPosition", publicName: "paginationPosition", isSignal: true, isRequired: false, transformFunction: null }, scroll: { classPropertyName: "scroll", publicName: "scroll", isSignal: true, isRequired: false, transformFunction: null }, scrollY: { classPropertyName: "scrollY", publicName: "scrollY", isSignal: true, isRequired: false, transformFunction: null }, autoScroll: { classPropertyName: "autoScroll", publicName: "autoScroll", isSignal: true, isRequired: false, transformFunction: null }, tableTitle: { classPropertyName: "tableTitle", publicName: "tableTitle", isSignal: true, isRequired: false, transformFunction: null }, footer: { classPropertyName: "footer", publicName: "footer", isSignal: true, isRequired: false, transformFunction: null }, emptyText: { classPropertyName: "emptyText", publicName: "emptyText", isSignal: true, isRequired: false, transformFunction: null }, showTotalRange: { classPropertyName: "showTotalRange", publicName: "showTotalRange", isSignal: true, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: true, isRequired: false, transformFunction: null }, rowKey: { classPropertyName: "rowKey", publicName: "rowKey", isSignal: true, isRequired: false, transformFunction: null }, selectedKeys: { classPropertyName: "selectedKeys", publicName: "selectedKeys", isSignal: true, isRequired: false, transformFunction: null }, mobileTitleKey: { classPropertyName: "mobileTitleKey", publicName: "mobileTitleKey", isSignal: true, isRequired: false, transformFunction: null }, mobileCardView: { classPropertyName: "mobileCardView", publicName: "mobileCardView", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pageIndex: "pageIndexChange", pageSize: "pageSizeChange", selectedKeys: "selectedKeysChange", rowClick: "rowClick", rowEdit: "rowEdit", rowMore: "rowMore", rowAction: "rowAction", queryParams: "queryParams", currentPageDataChange: "currentPageDataChange", selectionChange: "selectionChange" }, ngImport: i0, template: "<div\n class=\"geo-table\"\n [class.geo-table--striped]=\"striped()\"\n [class.geo-table--mobile-cards]=\"mobileCardView()\"\n>\n @if (shouldShowPagination() && (paginationPosition() === 'top' || paginationPosition() === 'both')) {\n <geo-table-pagination\n [pageIndex]=\"pageIndex()\"\n [pageSize]=\"pageSize()\"\n [total]=\"computedTotal()\"\n [pageSizeOptions]=\"pageSizeOptions()\"\n [showSizeChanger]=\"showSizeChanger()\"\n [hideOnSinglePage]=\"hideOnSinglePage()\"\n [showTotalRange]=\"showTotalRange()\"\n (pageIndexChange)=\"onPageIndexChange($event)\"\n (pageSizeChange)=\"onPageSizeChange($event)\"\n ></geo-table-pagination>\n }\n\n <div class=\"geo-table__desktop\">\n <nz-table\n #uiTable\n [nzData]=\"paginatedData()\"\n [nzLoading]=\"loading()\"\n [nzBordered]=\"bordered()\"\n [nzOuterBordered]=\"outerBordered()\"\n [nzSize]=\"size()\"\n [nzTitle]=\"tableTitle() ?? null\"\n [nzFooter]=\"footer() ?? null\"\n [nzShowPagination]=\"false\"\n [nzFrontPagination]=\"false\"\n [nzScroll]=\"computedScroll()\"\n [nzNoResult]=\"emptyText()\"\n [nzTableLayout]=\"computedTableLayout()\"\n [nzWidthConfig]=\"widthConfig()\"\n (nzQueryParams)=\"queryParams.emit($event)\"\n (nzCurrentPageDataChange)=\"currentPageDataChange.emit($event)\"\n >\n <thead>\n <tr>\n @if (selectable()) {\n <th\n class=\"geo-table__checkbox-cell\"\n nzWidth=\"48px\"\n [nzLeft]=\"hasFixedColumns()\"\n >\n <geo-checkbox\n [checked]=\"allChecked()\"\n [indeterminate]=\"indeterminate()\"\n (checkedChange)=\"onAllChecked($event)\"\n ></geo-checkbox>\n </th>\n }\n @for (col of visibleColumns(); track col.key) {\n <th\n [nzWidth]=\"col.width ?? null\"\n [nzAlign]=\"getHeaderAlign(col)\"\n [nzColumnKey]=\"col.key\"\n [nzShowSort]=\"col.sortable ?? false\"\n [nzSortOrder]=\"col.sortOrder ?? null\"\n [nzSortFn]=\"col.sortable ? getSortFn(col) : null\"\n [nzShowFilter]=\"hasFilters(col)\"\n [nzFilters]=\"col.filters ?? []\"\n [nzFilterMultiple]=\"col.filterMultiple ?? true\"\n [nzLeft]=\"col.fixed === 'left'\"\n [nzRight]=\"col.fixed === 'right'\"\n >{{ col.title }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of uiTable.data; track trackRow($index, row); let rowIndex = $index) {\n <tr\n class=\"geo-table__row\"\n [class.geo-table__row--selected]=\"isRowSelected(row)\"\n [class.geo-table__row--clickable]=\"clickable()\"\n (click)=\"clickable() && rowClick.emit(row)\"\n >\n @if (selectable()) {\n <td\n class=\"geo-table__checkbox-cell\"\n [nzLeft]=\"hasFixedColumns()\"\n (click)=\"$event.stopPropagation()\"\n >\n <geo-checkbox\n [checked]=\"isRowSelected(row)\"\n (checkedChange)=\"onItemChecked(row, $event)\"\n ></geo-checkbox>\n </td>\n }\n @for (col of visibleColumns(); track col.key) {\n <td\n [nzAlign]=\"getCellAlign(col)\"\n [nzEllipsis]=\"col.wrap ? false : (col.ellipsis ?? false)\"\n [class.geo-table__cell--wrap]=\"col.wrap\"\n [nzLeft]=\"col.fixed === 'left'\"\n [nzRight]=\"col.fixed === 'right'\"\n [style.width]=\"col.width || null\"\n [style.minWidth]=\"col.width || null\"\n [style.maxWidth]=\"col.fixed ? (col.width || null) : null\"\n >\n @if (col.renderAs === 'index') {\n {{ getRowIndex(rowIndex) }}\n } @else if (col.renderAs === 'status') {\n <geo-status-tag\n [status]=\"getCellValue(row, col.key)\"\n [label]=\"col.statusLabelKey ? getCellValue(row, col.statusLabelKey) || undefined : undefined\"\n ></geo-status-tag>\n } @else if (col.renderAs === 'actions') {\n <geo-row-actions\n [actions]=\"getRowActions(col, row)\"\n [primaryActionKey]=\"col.primaryActionKey ?? 'edit'\"\n (actionClick)=\"onRowActionClick(row, $event)\"\n ></geo-row-actions>\n } @else {\n {{ getCellValue(row, col.key) }}\n }\n </td>\n }\n </tr>\n }\n </tbody>\n </nz-table>\n </div>\n\n @if (mobileCardView()) {\n <div\n class=\"geo-table__mobile\"\n [class.geo-table__mobile--loading]=\"loading()\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n >\n @if (selectable() && paginatedData().length) {\n <div class=\"geo-table-card__select-all\">\n <geo-checkbox\n [checked]=\"allChecked()\"\n [indeterminate]=\"indeterminate()\"\n (checkedChange)=\"onAllChecked($event)\"\n ></geo-checkbox>\n <span>Ch\u1ECDn t\u1EA5t c\u1EA3 tr\u00EAn trang</span>\n </div>\n }\n\n @if (!paginatedData().length && !loading()) {\n <div class=\"geo-table__mobile-empty\">{{ emptyText() }}</div>\n }\n\n @for (row of paginatedData(); track trackRow($index, row); let rowIndex = $index) {\n <article\n class=\"geo-table-card\"\n [class.geo-table-card--selected]=\"isRowSelected(row)\"\n [class.geo-table-card--clickable]=\"clickable()\"\n (click)=\"onMobileCardClick(row, $event)\"\n >\n <header class=\"geo-table-card__header\">\n <div class=\"geo-table-card__title-wrap\">\n @if (selectable()) {\n <geo-checkbox\n class=\"geo-table-card__checkbox\"\n [checked]=\"isRowSelected(row)\"\n (checkedChange)=\"onItemChecked(row, $event)\"\n (click)=\"$event.stopPropagation()\"\n ></geo-checkbox>\n }\n @if (mobileTitleColumn(); as titleCol) {\n <h3 class=\"geo-table-card__title\">\n <span class=\"geo-table-card__title-label\">{{ titleCol.title }}</span>\n <span class=\"geo-table-card__title-sep\">:</span>\n <span class=\"geo-table-card__title-value\">\n @if (titleCol.renderAs === 'index') {\n {{ getRowIndex(rowIndex) }}\n } @else {\n {{ getCellValue(row, titleCol.key) }}\n }\n </span>\n </h3>\n }\n </div>\n\n @if (mobileActionsColumn(); as actionsCol) {\n <div class=\"geo-table-card__actions\" (click)=\"$event.stopPropagation()\">\n <geo-row-actions\n [actions]=\"getMobileHeaderActions(actionsCol, row)\"\n [primaryActionKey]=\"actionsCol.primaryActionKey ?? 'edit'\"\n (actionClick)=\"onRowActionClick(row, $event)\"\n ></geo-row-actions>\n </div>\n }\n </header>\n\n @if (mobileBodyColumns().length) {\n <div class=\"geo-table-card__body\">\n @for (col of mobileBodyColumns(); track col.key) {\n <div class=\"geo-table-card__row\">\n <span class=\"geo-table-card__label\">{{ col.title }}</span>\n <span class=\"geo-table-card__sep\">:</span>\n <span class=\"geo-table-card__value\">\n @if (col.renderAs === 'index') {\n {{ getRowIndex(rowIndex) }}\n } @else if (col.renderAs === 'status') {\n <geo-status-tag\n [status]=\"getCellValue(row, col.key)\"\n [label]=\"col.statusLabelKey ? getCellValue(row, col.statusLabelKey) || undefined : undefined\"\n ></geo-status-tag>\n } @else {\n {{ getCellValue(row, col.key) }}\n }\n </span>\n </div>\n }\n </div>\n }\n\n @if (mobileActionsColumn(); as actionsCol) {\n @if (getMobileFooterActions(actionsCol, row); as footerActions) {\n @if (footerActions.length) {\n <footer class=\"geo-table-card__footer\" (click)=\"$event.stopPropagation()\">\n @for (action of footerActions; track action.key) {\n <button\n type=\"button\"\n class=\"geo-table-card__footer-btn\"\n [class.geo-table-card__footer-btn--danger]=\"action.danger\"\n [disabled]=\"action.disabled\"\n (click)=\"onRowActionClick(row, action.key)\"\n >\n {{ action.label ?? action.title ?? action.key }}\n </button>\n }\n </footer>\n }\n }\n }\n </article>\n }\n </div>\n }\n\n @if (shouldShowPagination() && (paginationPosition() === 'bottom' || paginationPosition() === 'both')) {\n <geo-table-pagination\n [pageIndex]=\"pageIndex()\"\n [pageSize]=\"pageSize()\"\n [total]=\"computedTotal()\"\n [pageSizeOptions]=\"pageSizeOptions()\"\n [showSizeChanger]=\"showSizeChanger()\"\n [hideOnSinglePage]=\"hideOnSinglePage()\"\n [showTotalRange]=\"showTotalRange()\"\n (pageIndexChange)=\"onPageIndexChange($event)\"\n (pageSizeChange)=\"onPageSizeChange($event)\"\n ></geo-table-pagination>\n }\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:block;max-width:100%;min-width:0}.geo-table{width:100%;max-width:100%;min-width:0;border-radius:var(--geo-radius);overflow:clip}.geo-table__row--clickable{cursor:pointer}.geo-table__row--selected>td{background:var(--geo-color-primary-background)}:host ::ng-deep .geo-table--striped .ant-table-tbody>tr.geo-table__row:nth-child(2n of.geo-table__row)>td{background:var(--geo-color-neutral-100)}:host ::ng-deep .geo-table--striped .ant-table-tbody>tr.geo-table__row:nth-child(2n of.geo-table__row)>td.ant-table-cell-fix-left,:host ::ng-deep .geo-table--striped .ant-table-tbody>tr.geo-table__row:nth-child(2n of.geo-table__row)>td.ant-table-cell-fix-right{background:var(--geo-color-neutral-100)}:host ::ng-deep .geo-table--striped .ant-table-tbody>tr.geo-table__row:nth-child(2n of.geo-table__row):hover>td,:host ::ng-deep .geo-table--striped .ant-table-tbody>tr.geo-table__row:nth-child(2n of.geo-table__row):hover>td.ant-table-cell-fix-left,:host ::ng-deep .geo-table--striped .ant-table-tbody>tr.geo-table__row:nth-child(2n of.geo-table__row):hover>td.ant-table-cell-fix-right{background:var(--geo-color-primary-background)}:host ::ng-deep .geo-table--striped .ant-table-tbody>tr.geo-table__row--selected>td,:host ::ng-deep .geo-table--striped .ant-table-tbody>tr.geo-table__row--selected>td.ant-table-cell-fix-left,:host ::ng-deep .geo-table--striped .ant-table-tbody>tr.geo-table__row--selected>td.ant-table-cell-fix-right{background:var(--geo-color-primary-background)}.geo-table__checkbox-cell{text-align:center;vertical-align:middle;padding-left:12px!important;padding-right:12px!important}.geo-table__cell--wrap{white-space:normal;word-break:break-word;overflow-wrap:anywhere}:host ::ng-deep .geo-table .ant-table{background:var(--geo-color-neutral-white);border-radius:var(--geo-radius)}:host ::ng-deep .geo-table .ant-table-container{border-radius:var(--geo-radius)}:host ::ng-deep .geo-table .ant-table-thead>tr>th{background:var(--geo-color-neutral-100)!important;color:var(--geo-color-neutral-900)!important;font-weight:600;font-size:14px;line-height:20px;height:44px;padding:12px 10px!important;white-space:nowrap;text-align:center;border-bottom:1px solid var(--geo-color-primary-border)!important;box-sizing:border-box}:host ::ng-deep .geo-table .ant-table-body>table>thead{display:none!important}:host ::ng-deep .geo-table .ant-table-tbody>tr.ant-table-measure-now,:host ::ng-deep .geo-table .ant-table-tbody>tr[nz-table-measure-row]{height:0!important;font-size:0!important;line-height:0!important}:host ::ng-deep .geo-table .ant-table-tbody>tr.ant-table-measure-now>td,:host ::ng-deep .geo-table .ant-table-tbody>tr[nz-table-measure-row]>td{padding:0!important;border:0!important;height:0!important;min-height:0!important;line-height:0!important;font-size:0!important}:host ::ng-deep .geo-table .ant-table-tbody>tr>td{color:var(--geo-color-neutral-900);font-size:14px;line-height:normal;min-height:48px;padding:12px 10px!important;vertical-align:middle;border-bottom:1px solid var(--geo-color-primary-border)!important;box-sizing:border-box}:host ::ng-deep .geo-table .ant-table-tbody>tr:hover>td{background:var(--geo-color-primary-background)}:host ::ng-deep .geo-table .ant-table-bordered .ant-table-container{border-color:var(--geo-color-primary-border)}:host ::ng-deep .geo-table .geo-table__row-actions{display:inline-flex;align-items:center;justify-content:center;gap:10px}:host ::ng-deep .geo-table .geo-table__action-icon{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}:host ::ng-deep .geo-table .geo-table__action-icon:hover{color:var(--geo-color-primary-default);background:color-mix(in srgb,var(--geo-color-primary-default) 10%,transparent)}:host ::ng-deep .geo-table .ant-table-wrapper,:host ::ng-deep .geo-table .ant-spin-nested-loading,:host ::ng-deep .geo-table .ant-spin-container{width:100%;max-width:100%}:host ::ng-deep .geo-table .ant-table{width:100%}:host ::ng-deep .geo-table .ant-table-container{border-radius:var(--geo-radius);overflow:clip}:host ::ng-deep .geo-table .ant-table-body{overflow-x:auto!important;-webkit-overflow-scrolling:touch}:host ::ng-deep .geo-table .ant-table-content{overflow-x:auto;-webkit-overflow-scrolling:touch}:host ::ng-deep .geo-table .ant-table-header.nz-table-hide-scrollbar{overflow-x:hidden!important;overflow-y:scroll!important;scrollbar-gutter:stable}:host ::ng-deep .geo-table .ant-table-body{scrollbar-gutter:stable}:host ::ng-deep .geo-table .ant-table-cell-fix-left,:host ::ng-deep .geo-table .ant-table-cell-fix-right{background:var(--geo-color-neutral-white)}:host ::ng-deep .geo-table .ant-table-thead>tr>th.ant-table-cell-fix-left,:host ::ng-deep .geo-table .ant-table-thead>tr>th.ant-table-cell-fix-right{background:var(--geo-color-neutral-100)!important}:host ::ng-deep .geo-table .ant-table-tbody>tr:hover>td.ant-table-cell-fix-left,:host ::ng-deep .geo-table .ant-table-tbody>tr:hover>td.ant-table-cell-fix-right{background:var(--geo-color-primary-background)}:host ::ng-deep .geo-table .ant-table-thead>tr>th.ant-table-cell-fix-left,:host ::ng-deep .geo-table .ant-table-thead>tr>th.ant-table-cell-fix-right,:host ::ng-deep .geo-table .ant-table-tbody>tr>td.ant-table-cell-fix-left,:host ::ng-deep .geo-table .ant-table-tbody>tr>td.ant-table-cell-fix-right{box-sizing:border-box}:host ::ng-deep .geo-table .ant-table-ping-left:not(.ant-table-ping-right) .ant-table-cell-fix-left-last:after{box-shadow:inset 10px 0 8px -8px #0000001f}:host ::ng-deep .geo-table .ant-table-ping-right:not(.ant-table-ping-left) .ant-table-cell-fix-right-first:after{box-shadow:inset -10px 0 8px -8px #0000001f}.geo-table__mobile{display:none}@media (max-width: 767.98px){.geo-table--mobile-cards{overflow:visible}.geo-table--mobile-cards .geo-table__desktop{display:none}.geo-table--mobile-cards .geo-table__mobile{display:flex;flex-direction:column;gap:12px;padding:0}}.geo-table__mobile--loading{opacity:.55;pointer-events:none}.geo-table__mobile-empty{padding:32px 16px;text-align:center;color:var(--geo-color-neutral-500);font-size:14px;background:var(--geo-color-neutral-white);border:1px solid var(--geo-color-primary-border);border-radius:var(--geo-radius)}.geo-table-card__select-all{display:flex;align-items:center;gap:8px;padding:8px 4px;font-size:14px;color:var(--geo-color-neutral-700)}.geo-table-card{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;overflow:hidden}.geo-table-card--clickable{cursor:pointer}.geo-table-card--selected{border-color:var(--geo-color-primary-light);box-shadow:0 0 0 1px color-mix(in srgb,var(--geo-color-primary-default) 25%,transparent)}.geo-table-card__header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:14px 14px 10px}.geo-table-card__title-wrap{display:flex;align-items:flex-start;gap:8px;min-width:0;flex:1}.geo-table-card__checkbox{flex-shrink:0;margin-top:2px}.geo-table-card__title{margin:0;min-width:0;font-size:15px;font-weight:700;line-height:1.4;color:var(--geo-color-neutral-900);word-break:break-word}.geo-table-card__title-label,.geo-table-card__title-sep,.geo-table-card__title-value{font-weight:700;color:var(--geo-color-neutral-900)}.geo-table-card__title-sep{margin-inline:4px}.geo-table-card__actions{flex-shrink:0}:host ::ng-deep .geo-table-card__actions .geo-row-actions{gap:8px}:host ::ng-deep .geo-table-card__actions .geo-row-actions__btn{width:32px;height:32px;border-radius:var(--geo-radius);background:#1890ff1a;color:var(--geo-color-info-default)}:host ::ng-deep .geo-table-card__actions .geo-row-actions__btn:hover:not(:disabled){background:#1890ff2e;color:var(--geo-color-info-dark)}:host ::ng-deep .geo-table-card__actions .geo-row-actions__btn--danger{background:#ee003314;color:var(--geo-color-error-default)}:host ::ng-deep .geo-table-card__actions .geo-row-actions__btn--danger:hover:not(:disabled){background:#ee003324;color:var(--geo-color-error-dark)}:host ::ng-deep .geo-table-card__actions .geo-row-actions__btn :deep(.anticon),:host ::ng-deep .geo-table-card__actions .geo-row-actions__btn .anticon{font-size:16px}.geo-table-card__body{display:flex;flex-direction:column;gap:10px;padding:4px 14px 14px}.geo-table-card__row{display:flex;align-items:flex-start;flex-wrap:wrap;column-gap:4px;row-gap:2px;font-size:14px;line-height:1.45}.geo-table-card__label,.geo-table-card__sep{color:var(--geo-color-neutral-700);font-weight:400;flex-shrink:0}.geo-table-card__value{color:var(--geo-color-neutral-900);font-weight:700;min-width:0;word-break:break-word}.geo-table-card__footer{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;padding:12px 14px;background:var(--geo-color-info-light);border-top:1px solid var(--geo-color-info-light)}.geo-table-card__footer-btn{appearance:none;border:0;background:transparent;padding:0 8px;min-height:24px;font-size:14px;font-weight:600;line-height:1.4;color:var(--geo-color-info-default);cursor:pointer}.geo-table-card__footer-btn:hover:not(:disabled){color:var(--geo-color-info-dark);text-decoration:underline}.geo-table-card__footer-btn:disabled{opacity:.45;cursor:not-allowed}.geo-table-card__footer-btn--danger{color:var(--geo-color-error-default)}.geo-table-card__footer-btn--danger:hover:not(:disabled){color:var(--geo-color-error-dark)}\n"], dependencies: [{ kind: "ngmodule", type: NgZorroAntdModule }, { kind: "component", type: i1$b.NzTableComponent, selector: "nz-table", inputs: ["nzTableLayout", "nzShowTotal", "nzItemRender", "nzTitle", "nzFooter", "nzNoResult", "nzPageSizeOptions", "nzVirtualItemSize", "nzVirtualMaxBufferPx", "nzVirtualMinBufferPx", "nzVirtualForTrackBy", "nzLoadingDelay", "nzPageIndex", "nzPageSize", "nzTotal", "nzWidthConfig", "nzData", "nzCustomColumn", "nzPaginationPosition", "nzScroll", "noDataVirtualHeight", "nzPaginationType", "nzFrontPagination", "nzTemplateMode", "nzShowPagination", "nzLoading", "nzOuterBordered", "nzLoadingIndicator", "nzBordered", "nzSize", "nzShowSizeChanger", "nzHideOnSinglePage", "nzShowQuickJumper", "nzSimple"], outputs: ["nzPageSizeChange", "nzPageIndexChange", "nzQueryParams", "nzCurrentPageDataChange", "nzCustomColumnChange"], exportAs: ["nzTable"] }, { kind: "component", type: i1$b.NzThAddOnComponent, selector: "th[nzColumnKey], th[nzSortFn], th[nzSortOrder], th[nzFilters], th[nzShowSort], th[nzShowFilter], th[nzCustomFilter]", inputs: ["nzColumnKey", "nzFilterMultiple", "nzSortOrder", "nzSortPriority", "nzSortDirections", "nzFilters", "nzSortFn", "nzFilterFn", "nzShowSort", "nzShowFilter", "nzCustomFilter"], outputs: ["nzCheckedChange", "nzSortOrderChange", "nzFilterChange"] }, { kind: "directive", type: i1$b.NzTableCellDirective, selector: "th:not(.nz-disable-th):not([mat-cell]), td:not(.nz-disable-td):not([mat-cell])" }, { kind: "directive", type: i1$b.NzThMeasureDirective, selector: "th", inputs: ["nzWidth", "colspan", "colSpan", "rowspan", "rowSpan"] }, { kind: "component", type: i1$b.NzTheadComponent, selector: "thead:not(.ant-table-thead)", outputs: ["nzSortOrderChange"] }, { kind: "component", type: i1$b.NzTbodyComponent, selector: "tbody" }, { kind: "directive", type: i1$b.NzTrDirective, selector: "tr:not([mat-row]):not([mat-header-row]):not([nz-table-measure-row]):not([nzExpand]):not([nz-table-fixed-row])" }, { kind: "directive", type: i1$b.NzCellFixedDirective, selector: "td[nzRight],th[nzRight],td[nzLeft],th[nzLeft]", inputs: ["nzRight", "nzLeft", "colspan", "colSpan"] }, { kind: "directive", type: i1$b.NzCellAlignDirective, selector: "th[nzAlign],td[nzAlign]", inputs: ["nzAlign"] }, { kind: "directive", type: i1$b.NzCellEllipsisDirective, selector: "th[nzEllipsis],td[nzEllipsis]", inputs: ["nzEllipsis"] }, { kind: "component", type: GeoStatusTagComponent, selector: "geo-status-tag", inputs: ["status", "label", "showDot"] }, { kind: "component", type: GeoRowActionsComponent, selector: "geo-row-actions", inputs: ["actions", "primaryActionKey"], outputs: ["actionClick", "edit", "more"] }, { kind: "component", type: GeoCheckboxComponent, selector: "geo-checkbox", inputs: ["label", "checked", "disabled", "indeterminate"], outputs: ["checkedChange"] }, { kind: "component", type: GeoTablePaginationComponent, selector: "geo-table-pagination", inputs: ["pageIndex", "pageSize", "total", "pageSizeOptions", "showSizeChanger", "hideOnSinglePage", "showTotalRange", "sizeLabel"], outputs: ["pageIndexChange", "pageSizeChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2858
2961
|
}
|
|
2859
2962
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoTableComponent, decorators: [{
|
|
2860
2963
|
type: Component,
|
|
@@ -3229,31 +3332,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
3229
3332
|
class GeoTreeComponent {
|
|
3230
3333
|
nodes = input([]);
|
|
3231
3334
|
checkable = input(false);
|
|
3232
|
-
/** `single` — click chọn đúng 1 node (BR-06-03); `multi` — giữ hành vi checkbox hiện có. */
|
|
3233
|
-
selectionMode = input('multi');
|
|
3234
3335
|
checkedKeys = model([]);
|
|
3235
|
-
selectedKeys = model([]);
|
|
3236
3336
|
expandedKeys = model([]);
|
|
3237
3337
|
showLine = input(false);
|
|
3238
3338
|
blockNode = input(false);
|
|
3239
3339
|
nodeClick = output();
|
|
3240
|
-
onNodeClick(event) {
|
|
3241
|
-
this.nodeClick.emit(event);
|
|
3242
|
-
if (this.selectionMode() !== 'single') {
|
|
3243
|
-
return;
|
|
3244
|
-
}
|
|
3245
|
-
const key = event.node?.key;
|
|
3246
|
-
if (key == null) {
|
|
3247
|
-
return;
|
|
3248
|
-
}
|
|
3249
|
-
this.selectedKeys.set([key]);
|
|
3250
|
-
}
|
|
3251
3340
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoTreeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3252
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: GeoTreeComponent, isStandalone: true, selector: "geo-tree", inputs: { nodes: { classPropertyName: "nodes", publicName: "nodes", isSignal: true, isRequired: false, transformFunction: null }, checkable: { classPropertyName: "checkable", publicName: "checkable", isSignal: true, isRequired: false, transformFunction: null },
|
|
3341
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: GeoTreeComponent, isStandalone: true, selector: "geo-tree", inputs: { nodes: { classPropertyName: "nodes", publicName: "nodes", isSignal: true, isRequired: false, transformFunction: null }, checkable: { classPropertyName: "checkable", publicName: "checkable", isSignal: true, isRequired: false, transformFunction: null }, checkedKeys: { classPropertyName: "checkedKeys", publicName: "checkedKeys", isSignal: true, isRequired: false, transformFunction: null }, expandedKeys: { classPropertyName: "expandedKeys", publicName: "expandedKeys", isSignal: true, isRequired: false, transformFunction: null }, showLine: { classPropertyName: "showLine", publicName: "showLine", isSignal: true, isRequired: false, transformFunction: null }, blockNode: { classPropertyName: "blockNode", publicName: "blockNode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checkedKeys: "checkedKeysChange", expandedKeys: "expandedKeysChange", nodeClick: "nodeClick" }, host: { classAttribute: "geo-tree-host" }, ngImport: i0, template: "<div class=\"geo-tree\">\n <nz-tree\n [nzData]=\"nodes()\"\n [nzCheckable]=\"checkable()\"\n [nzCheckedKeys]=\"checkedKeys()\"\n [nzExpandedKeys]=\"expandedKeys()\"\n [nzShowLine]=\"showLine()\"\n [nzBlockNode]=\"blockNode()\"\n (nzCheckedKeysChange)=\"checkedKeys.set($event)\"\n (nzExpandedKeysChange)=\"expandedKeys.set($event)\"\n (nzClick)=\"nodeClick.emit($event)\"\n ></nz-tree>\n</div>\n", styles: [".geo-tree-host{display:block;width:100%}.geo-tree{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: NzTreeModule }, { kind: "component", type: i1$c.NzTreeComponent, selector: "nz-tree", inputs: ["nzShowIcon", "nzHideUnMatched", "nzBlockNode", "nzExpandAll", "nzSelectMode", "nzCheckStrictly", "nzShowExpand", "nzShowLine", "nzCheckable", "nzAsyncData", "nzDraggable", "nzMultiple", "nzExpandedIcon", "nzVirtualItemSize", "nzVirtualMaxBufferPx", "nzVirtualMinBufferPx", "nzVirtualHeight", "nzTreeTemplate", "nzBeforeDrop", "nzData", "nzExpandedKeys", "nzSelectedKeys", "nzCheckedKeys", "nzSearchValue", "nzSearchFunc"], outputs: ["nzExpandedKeysChange", "nzSelectedKeysChange", "nzCheckedKeysChange", "nzSearchValueChange", "nzClick", "nzDblClick", "nzContextMenu", "nzCheckBoxChange", "nzExpandChange", "nzOnDragStart", "nzOnDragEnter", "nzOnDragOver", "nzOnDragLeave", "nzOnDrop", "nzOnDragEnd"], exportAs: ["nzTree"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
3253
3342
|
}
|
|
3254
3343
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoTreeComponent, decorators: [{
|
|
3255
3344
|
type: Component,
|
|
3256
|
-
args: [{ selector: 'geo-tree', standalone: true, imports: [NzTreeModule], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'geo-tree-host' }, template: "<div class=\"geo-tree\">\n <nz-tree\n [nzData]=\"nodes()\"\n [nzCheckable]=\"checkable()\"\n [nzCheckedKeys]=\"checkedKeys()\"\n [
|
|
3345
|
+
args: [{ selector: 'geo-tree', standalone: true, imports: [NzTreeModule], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'geo-tree-host' }, template: "<div class=\"geo-tree\">\n <nz-tree\n [nzData]=\"nodes()\"\n [nzCheckable]=\"checkable()\"\n [nzCheckedKeys]=\"checkedKeys()\"\n [nzExpandedKeys]=\"expandedKeys()\"\n [nzShowLine]=\"showLine()\"\n [nzBlockNode]=\"blockNode()\"\n (nzCheckedKeysChange)=\"checkedKeys.set($event)\"\n (nzExpandedKeysChange)=\"expandedKeys.set($event)\"\n (nzClick)=\"nodeClick.emit($event)\"\n ></nz-tree>\n</div>\n", styles: [".geo-tree-host{display:block;width:100%}.geo-tree{width:100%}\n"] }]
|
|
3257
3346
|
}] });
|
|
3258
3347
|
|
|
3259
3348
|
const STORAGE_PREFIX = 'geo-column-picker:';
|
|
@@ -3325,7 +3414,7 @@ class GeoColumnPickerComponent {
|
|
|
3325
3414
|
this.draftItems = this.items().map((item) => ({ ...item }));
|
|
3326
3415
|
}
|
|
3327
3416
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoColumnPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3328
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoColumnPickerComponent, isStandalone: true, selector: "geo-column-picker", inputs: { triggerLabel: { classPropertyName: "triggerLabel", publicName: "triggerLabel", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, storageKey: { classPropertyName: "storageKey", publicName: "storageKey", isSignal: true, isRequired: false, transformFunction: null } }, 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: NgZorroAntdModule }, { kind: "component", type: i1$
|
|
3417
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoColumnPickerComponent, isStandalone: true, selector: "geo-column-picker", inputs: { triggerLabel: { classPropertyName: "triggerLabel", publicName: "triggerLabel", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, storageKey: { classPropertyName: "storageKey", publicName: "storageKey", isSignal: true, isRequired: false, transformFunction: null } }, 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: NgZorroAntdModule }, { kind: "component", type: i1$d.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: i1$6.ɵ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$1.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }, { kind: "directive", type: i2$6.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i2$6.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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3329
3418
|
}
|
|
3330
3419
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoColumnPickerComponent, decorators: [{
|
|
3331
3420
|
type: Component,
|
|
@@ -3611,17 +3700,6 @@ class GeoChartComponent {
|
|
|
3611
3700
|
colorOf(item, index) {
|
|
3612
3701
|
return item.color || DEFAULT_COLORS[index % DEFAULT_COLORS.length];
|
|
3613
3702
|
}
|
|
3614
|
-
/**
|
|
3615
|
-
* `@for` track dùng qua method thay vì `item.id ?? item.label` trực tiếp trong template —
|
|
3616
|
-
* Angular linker (18.2.14) sinh sai scope biến tạm cho track expression chứa `??` khi bị
|
|
3617
|
-
* hoist lên module scope, gây `ReferenceError: tmp_x_0 is not defined` lúc chạy.
|
|
3618
|
-
*/
|
|
3619
|
-
trackDatum(item) {
|
|
3620
|
-
return item.id ?? item.label;
|
|
3621
|
-
}
|
|
3622
|
-
trackSegment(seg) {
|
|
3623
|
-
return seg.datum.id ?? seg.datum.label;
|
|
3624
|
-
}
|
|
3625
3703
|
barWidth(value) {
|
|
3626
3704
|
const max = this.maxValue() || 1;
|
|
3627
3705
|
return `${Math.max(2, (value / max) * 100)}%`;
|
|
@@ -3634,11 +3712,11 @@ class GeoChartComponent {
|
|
|
3634
3712
|
this.segmentClick.emit({ datum, index });
|
|
3635
3713
|
}
|
|
3636
3714
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3637
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoChartComponent, isStandalone: true, selector: "geo-chart", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, showLegend: { classPropertyName: "showLegend", publicName: "showLegend", isSignal: true, isRequired: false, transformFunction: null }, showSort: { classPropertyName: "showSort", publicName: "showSort", isSignal: true, isRequired: false, transformFunction: null }, sort: { classPropertyName: "sort", publicName: "sort", isSignal: true, isRequired: false, transformFunction: null }, emptyText: { classPropertyName: "emptyText", publicName: "emptyText", isSignal: true, isRequired: false, transformFunction: null }, unit: { classPropertyName: "unit", publicName: "unit", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { sort: "sortChange", segmentClick: "segmentClick", sortChange: "sortChange" }, host: { classAttribute: "geo-chart-host" }, ngImport: i0, template: "<div class=\"geo-chart\" [style.--geo-chart-height.px]=\"height()\">\n <header class=\"geo-chart__header\">\n @if (title()) {\n <h3 class=\"geo-chart__title\">{{ title() }}</h3>\n }\n @if (showSort() && type() === 'bar') {\n <div class=\"geo-chart__sort\" role=\"group\" aria-label=\"S\u1EAFp x\u1EBFp\">\n <geo-button\n appearance=\"tertiary\"\n [active]=\"sort() === 'desc'\"\n (clicked)=\"setSort('desc')\"\n >\n Gi\u1EA3m d\u1EA7n\n </geo-button>\n <geo-button\n appearance=\"tertiary\"\n [active]=\"sort() === 'asc'\"\n (clicked)=\"setSort('asc')\"\n >\n T\u0103ng d\u1EA7n\n </geo-button>\n </div>\n }\n </header>\n\n @if (!sortedData().length) {\n <geo-empty-state [title]=\"emptyText()\" icon=\"bar-chart\" />\n } @else if (type() === 'bar') {\n <div class=\"geo-chart__bars\" role=\"img\" [attr.aria-label]=\"title() || 'Bi\u1EC3u \u0111\u1ED3 c\u1ED9t'\">\n @for (item of sortedData(); track
|
|
3715
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoChartComponent, isStandalone: true, selector: "geo-chart", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, showLegend: { classPropertyName: "showLegend", publicName: "showLegend", isSignal: true, isRequired: false, transformFunction: null }, showSort: { classPropertyName: "showSort", publicName: "showSort", isSignal: true, isRequired: false, transformFunction: null }, sort: { classPropertyName: "sort", publicName: "sort", isSignal: true, isRequired: false, transformFunction: null }, emptyText: { classPropertyName: "emptyText", publicName: "emptyText", isSignal: true, isRequired: false, transformFunction: null }, unit: { classPropertyName: "unit", publicName: "unit", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { sort: "sortChange", segmentClick: "segmentClick", sortChange: "sortChange" }, host: { classAttribute: "geo-chart-host" }, ngImport: i0, template: "<div class=\"geo-chart\" [style.--geo-chart-height.px]=\"height()\">\n <header class=\"geo-chart__header\">\n @if (title()) {\n <h3 class=\"geo-chart__title\">{{ title() }}</h3>\n }\n @if (showSort() && type() === 'bar') {\n <div class=\"geo-chart__sort\" role=\"group\" aria-label=\"S\u1EAFp x\u1EBFp\">\n <geo-button\n appearance=\"tertiary\"\n [active]=\"sort() === 'desc'\"\n (clicked)=\"setSort('desc')\"\n >\n Gi\u1EA3m d\u1EA7n\n </geo-button>\n <geo-button\n appearance=\"tertiary\"\n [active]=\"sort() === 'asc'\"\n (clicked)=\"setSort('asc')\"\n >\n T\u0103ng d\u1EA7n\n </geo-button>\n </div>\n }\n </header>\n\n @if (!sortedData().length) {\n <geo-empty-state [title]=\"emptyText()\" icon=\"bar-chart\" />\n } @else if (type() === 'bar') {\n <div class=\"geo-chart__bars\" role=\"img\" [attr.aria-label]=\"title() || 'Bi\u1EC3u \u0111\u1ED3 c\u1ED9t'\">\n @for (item of sortedData(); track item.id ?? item.label; let i = $index) {\n <button\n type=\"button\"\n class=\"geo-chart__bar-row\"\n (click)=\"onSegment(item, i)\"\n >\n <span class=\"geo-chart__bar-label\" [title]=\"item.label\">{{ item.label }}</span>\n <span class=\"geo-chart__bar-track\">\n <span\n class=\"geo-chart__bar-fill\"\n [style.width]=\"barWidth(item.value)\"\n [style.background]=\"colorOf(item, i)\"\n ></span>\n </span>\n <span class=\"geo-chart__bar-value\">\n {{ item.value }}{{ unit() ? ' ' + unit() : '' }}\n </span>\n </button>\n }\n </div>\n } @else {\n <div class=\"geo-chart__donut-wrap\">\n <svg\n class=\"geo-chart__donut\"\n viewBox=\"0 0 140 140\"\n role=\"img\"\n [attr.aria-label]=\"title() || 'Bi\u1EC3u \u0111\u1ED3 donut'\"\n >\n <circle\n class=\"geo-chart__donut-track\"\n cx=\"70\"\n cy=\"70\"\n r=\"56\"\n fill=\"none\"\n stroke-width=\"18\"\n />\n @for (seg of donutSegments(); track seg.datum.id ?? seg.datum.label) {\n <circle\n class=\"geo-chart__donut-seg\"\n cx=\"70\"\n cy=\"70\"\n r=\"56\"\n fill=\"none\"\n stroke-width=\"18\"\n [attr.stroke]=\"seg.color\"\n [attr.stroke-dasharray]=\"seg.dasharray\"\n [attr.stroke-dashoffset]=\"seg.dashoffset\"\n transform=\"rotate(-90 70 70)\"\n (click)=\"onSegment(seg.datum, seg.index)\"\n />\n }\n <text x=\"70\" y=\"66\" text-anchor=\"middle\" class=\"geo-chart__donut-center-label\">\n T\u1ED5ng\n </text>\n <text x=\"70\" y=\"84\" text-anchor=\"middle\" class=\"geo-chart__donut-center-value\">\n {{ total() }}\n </text>\n </svg>\n\n @if (showLegend()) {\n <ul class=\"geo-chart__legend\">\n @for (seg of donutSegments(); track seg.datum.id ?? seg.datum.label) {\n <li>\n <button\n type=\"button\"\n class=\"geo-chart__legend-item\"\n (click)=\"onSegment(seg.datum, seg.index)\"\n >\n <span\n class=\"geo-chart__swatch\"\n [style.background]=\"seg.color\"\n ></span>\n <span class=\"geo-chart__legend-label\">{{ seg.datum.label }}</span>\n <span class=\"geo-chart__legend-value\">{{ seg.percent }}%</span>\n </button>\n </li>\n }\n </ul>\n }\n </div>\n }\n</div>\n", styles: [".geo-chart-host{display:block}.geo-chart{display:flex;flex-direction:column;gap:12px;padding:16px;border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);min-height:var(--geo-chart-height, 260px)}.geo-chart__header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.geo-chart__title{margin:0;font-size:var(--geo-font-size-body);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-900)}.geo-chart__sort{display:inline-flex;gap:4px}.geo-chart__bars{display:flex;flex-direction:column;gap:10px;max-height:calc(var(--geo-chart-height, 260px) - 48px);overflow:auto;padding-right:4px}.geo-chart__bar-row{display:grid;grid-template-columns:minmax(88px,140px) 1fr auto;align-items:center;gap:10px;margin:0;padding:0;border:0;background:transparent;font:inherit;color:inherit;cursor:pointer;text-align:left}.geo-chart__bar-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--geo-font-size-caption);color:var(--geo-color-neutral-700)}.geo-chart__bar-track{height:12px;border-radius:var(--geo-radius-sm);background:var(--geo-color-neutral-100);overflow:hidden}.geo-chart__bar-fill{display:block;height:100%;border-radius:inherit;transition:width .2s ease}.geo-chart__bar-value{font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-800);white-space:nowrap}.geo-chart__donut-wrap{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.geo-chart__donut{width:180px;height:180px;flex-shrink:0}.geo-chart__donut-track{stroke:var(--geo-color-neutral-100)}.geo-chart__donut-seg{cursor:pointer;transition:opacity .15s ease}.geo-chart__donut-seg:hover{opacity:.85}.geo-chart__donut-center-label{fill:var(--geo-color-neutral-500);font-size:11px}.geo-chart__donut-center-value{fill:var(--geo-color-neutral-900);font-size:16px;font-weight:600}.geo-chart__legend{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px;flex:1;min-width:160px}.geo-chart__legend-item{display:grid;grid-template-columns:12px 1fr auto;align-items:center;gap:8px;width:100%;margin:0;padding:4px 0;border:0;background:transparent;font:inherit;color:inherit;cursor:pointer;text-align:left}.geo-chart__swatch{width:12px;height:12px;border-radius:2px}.geo-chart__legend-label{font-size:var(--geo-font-size-body-small);color:var(--geo-color-neutral-800)}.geo-chart__legend-value{font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-600)}\n"], dependencies: [{ 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: GeoEmptyStateComponent, selector: "geo-empty-state", inputs: ["title", "description", "icon", "actionLabel"], outputs: ["actionClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
3638
3716
|
}
|
|
3639
3717
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoChartComponent, decorators: [{
|
|
3640
3718
|
type: Component,
|
|
3641
|
-
args: [{ selector: 'geo-chart', standalone: true, imports: [GeoButtonComponent, GeoEmptyStateComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'geo-chart-host' }, template: "<div class=\"geo-chart\" [style.--geo-chart-height.px]=\"height()\">\n <header class=\"geo-chart__header\">\n @if (title()) {\n <h3 class=\"geo-chart__title\">{{ title() }}</h3>\n }\n @if (showSort() && type() === 'bar') {\n <div class=\"geo-chart__sort\" role=\"group\" aria-label=\"S\u1EAFp x\u1EBFp\">\n <geo-button\n appearance=\"tertiary\"\n [active]=\"sort() === 'desc'\"\n (clicked)=\"setSort('desc')\"\n >\n Gi\u1EA3m d\u1EA7n\n </geo-button>\n <geo-button\n appearance=\"tertiary\"\n [active]=\"sort() === 'asc'\"\n (clicked)=\"setSort('asc')\"\n >\n T\u0103ng d\u1EA7n\n </geo-button>\n </div>\n }\n </header>\n\n @if (!sortedData().length) {\n <geo-empty-state [title]=\"emptyText()\" icon=\"bar-chart\" />\n } @else if (type() === 'bar') {\n <div class=\"geo-chart__bars\" role=\"img\" [attr.aria-label]=\"title() || 'Bi\u1EC3u \u0111\u1ED3 c\u1ED9t'\">\n @for (item of sortedData(); track
|
|
3719
|
+
args: [{ selector: 'geo-chart', standalone: true, imports: [GeoButtonComponent, GeoEmptyStateComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'geo-chart-host' }, template: "<div class=\"geo-chart\" [style.--geo-chart-height.px]=\"height()\">\n <header class=\"geo-chart__header\">\n @if (title()) {\n <h3 class=\"geo-chart__title\">{{ title() }}</h3>\n }\n @if (showSort() && type() === 'bar') {\n <div class=\"geo-chart__sort\" role=\"group\" aria-label=\"S\u1EAFp x\u1EBFp\">\n <geo-button\n appearance=\"tertiary\"\n [active]=\"sort() === 'desc'\"\n (clicked)=\"setSort('desc')\"\n >\n Gi\u1EA3m d\u1EA7n\n </geo-button>\n <geo-button\n appearance=\"tertiary\"\n [active]=\"sort() === 'asc'\"\n (clicked)=\"setSort('asc')\"\n >\n T\u0103ng d\u1EA7n\n </geo-button>\n </div>\n }\n </header>\n\n @if (!sortedData().length) {\n <geo-empty-state [title]=\"emptyText()\" icon=\"bar-chart\" />\n } @else if (type() === 'bar') {\n <div class=\"geo-chart__bars\" role=\"img\" [attr.aria-label]=\"title() || 'Bi\u1EC3u \u0111\u1ED3 c\u1ED9t'\">\n @for (item of sortedData(); track item.id ?? item.label; let i = $index) {\n <button\n type=\"button\"\n class=\"geo-chart__bar-row\"\n (click)=\"onSegment(item, i)\"\n >\n <span class=\"geo-chart__bar-label\" [title]=\"item.label\">{{ item.label }}</span>\n <span class=\"geo-chart__bar-track\">\n <span\n class=\"geo-chart__bar-fill\"\n [style.width]=\"barWidth(item.value)\"\n [style.background]=\"colorOf(item, i)\"\n ></span>\n </span>\n <span class=\"geo-chart__bar-value\">\n {{ item.value }}{{ unit() ? ' ' + unit() : '' }}\n </span>\n </button>\n }\n </div>\n } @else {\n <div class=\"geo-chart__donut-wrap\">\n <svg\n class=\"geo-chart__donut\"\n viewBox=\"0 0 140 140\"\n role=\"img\"\n [attr.aria-label]=\"title() || 'Bi\u1EC3u \u0111\u1ED3 donut'\"\n >\n <circle\n class=\"geo-chart__donut-track\"\n cx=\"70\"\n cy=\"70\"\n r=\"56\"\n fill=\"none\"\n stroke-width=\"18\"\n />\n @for (seg of donutSegments(); track seg.datum.id ?? seg.datum.label) {\n <circle\n class=\"geo-chart__donut-seg\"\n cx=\"70\"\n cy=\"70\"\n r=\"56\"\n fill=\"none\"\n stroke-width=\"18\"\n [attr.stroke]=\"seg.color\"\n [attr.stroke-dasharray]=\"seg.dasharray\"\n [attr.stroke-dashoffset]=\"seg.dashoffset\"\n transform=\"rotate(-90 70 70)\"\n (click)=\"onSegment(seg.datum, seg.index)\"\n />\n }\n <text x=\"70\" y=\"66\" text-anchor=\"middle\" class=\"geo-chart__donut-center-label\">\n T\u1ED5ng\n </text>\n <text x=\"70\" y=\"84\" text-anchor=\"middle\" class=\"geo-chart__donut-center-value\">\n {{ total() }}\n </text>\n </svg>\n\n @if (showLegend()) {\n <ul class=\"geo-chart__legend\">\n @for (seg of donutSegments(); track seg.datum.id ?? seg.datum.label) {\n <li>\n <button\n type=\"button\"\n class=\"geo-chart__legend-item\"\n (click)=\"onSegment(seg.datum, seg.index)\"\n >\n <span\n class=\"geo-chart__swatch\"\n [style.background]=\"seg.color\"\n ></span>\n <span class=\"geo-chart__legend-label\">{{ seg.datum.label }}</span>\n <span class=\"geo-chart__legend-value\">{{ seg.percent }}%</span>\n </button>\n </li>\n }\n </ul>\n }\n </div>\n }\n</div>\n", styles: [".geo-chart-host{display:block}.geo-chart{display:flex;flex-direction:column;gap:12px;padding:16px;border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);min-height:var(--geo-chart-height, 260px)}.geo-chart__header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.geo-chart__title{margin:0;font-size:var(--geo-font-size-body);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-900)}.geo-chart__sort{display:inline-flex;gap:4px}.geo-chart__bars{display:flex;flex-direction:column;gap:10px;max-height:calc(var(--geo-chart-height, 260px) - 48px);overflow:auto;padding-right:4px}.geo-chart__bar-row{display:grid;grid-template-columns:minmax(88px,140px) 1fr auto;align-items:center;gap:10px;margin:0;padding:0;border:0;background:transparent;font:inherit;color:inherit;cursor:pointer;text-align:left}.geo-chart__bar-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--geo-font-size-caption);color:var(--geo-color-neutral-700)}.geo-chart__bar-track{height:12px;border-radius:var(--geo-radius-sm);background:var(--geo-color-neutral-100);overflow:hidden}.geo-chart__bar-fill{display:block;height:100%;border-radius:inherit;transition:width .2s ease}.geo-chart__bar-value{font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-800);white-space:nowrap}.geo-chart__donut-wrap{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.geo-chart__donut{width:180px;height:180px;flex-shrink:0}.geo-chart__donut-track{stroke:var(--geo-color-neutral-100)}.geo-chart__donut-seg{cursor:pointer;transition:opacity .15s ease}.geo-chart__donut-seg:hover{opacity:.85}.geo-chart__donut-center-label{fill:var(--geo-color-neutral-500);font-size:11px}.geo-chart__donut-center-value{fill:var(--geo-color-neutral-900);font-size:16px;font-weight:600}.geo-chart__legend{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px;flex:1;min-width:160px}.geo-chart__legend-item{display:grid;grid-template-columns:12px 1fr auto;align-items:center;gap:8px;width:100%;margin:0;padding:4px 0;border:0;background:transparent;font:inherit;color:inherit;cursor:pointer;text-align:left}.geo-chart__swatch{width:12px;height:12px;border-radius:2px}.geo-chart__legend-label{font-size:var(--geo-font-size-body-small);color:var(--geo-color-neutral-800)}.geo-chart__legend-value{font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-600)}\n"] }]
|
|
3642
3720
|
}] });
|
|
3643
3721
|
|
|
3644
3722
|
/**
|
|
@@ -3660,6 +3738,48 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
3660
3738
|
args: [{ selector: 'geo-page-header', standalone: true, imports: [GeoBreadcrumbComponent, GeoPageTitleComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'geo-page-header-host' }, template: "<div class=\"geo-page-header\">\n @if (breadcrumb().length) {\n <geo-breadcrumb [items]=\"breadcrumb()\" />\n }\n <div class=\"geo-page-header__row\">\n <geo-page-title [title]=\"title()\" [uppercase]=\"uppercase()\" />\n <div class=\"geo-page-header__actions\">\n <ng-content select=\"[geoPageActions]\" />\n </div>\n </div>\n <div class=\"geo-page-header__filters\">\n <ng-content select=\"[geoPageFilters]\" />\n </div>\n</div>\n", styles: [".geo-page-header-host{display:block}.geo-page-header{display:flex;flex-direction:column;gap:12px}.geo-page-header__row{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap}.geo-page-header__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-left:auto}.geo-page-header__filters:empty{display:none}.geo-page-header__filters:not(:empty){display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px;padding-top:4px}\n"] }]
|
|
3661
3739
|
}] });
|
|
3662
3740
|
|
|
3741
|
+
class GeoDetailViewItemDirective {
|
|
3742
|
+
key = input.required({ alias: 'uiDetailItem' });
|
|
3743
|
+
template = inject((TemplateRef));
|
|
3744
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoDetailViewItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
3745
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.14", type: GeoDetailViewItemDirective, isStandalone: true, selector: "[uiDetailItem]", inputs: { key: { classPropertyName: "key", publicName: "uiDetailItem", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });
|
|
3746
|
+
}
|
|
3747
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoDetailViewItemDirective, decorators: [{
|
|
3748
|
+
type: Directive,
|
|
3749
|
+
args: [{
|
|
3750
|
+
selector: '[uiDetailItem]',
|
|
3751
|
+
standalone: true,
|
|
3752
|
+
}]
|
|
3753
|
+
}] });
|
|
3754
|
+
/**
|
|
3755
|
+
* Read-only key/value grid for viewing entity details.
|
|
3756
|
+
*
|
|
3757
|
+
* @summary Lưới label/value chỉ đọc (nz-descriptions); value tùy biến qua `[uiDetailItem]`.
|
|
3758
|
+
* @whenToUse Trang/khối xem chi tiết hồ sơ, thửa đất, người dùng… (không chỉnh sửa).
|
|
3759
|
+
* @doNotUseWhen Cần nhập liệu — use geo-input/geo-select trong form.
|
|
3760
|
+
*/
|
|
3761
|
+
class GeoDetailViewComponent {
|
|
3762
|
+
title = input('');
|
|
3763
|
+
items = input([]);
|
|
3764
|
+
column = input(2);
|
|
3765
|
+
bordered = input(true);
|
|
3766
|
+
layout = input('horizontal');
|
|
3767
|
+
size = input('default');
|
|
3768
|
+
itemTemplates;
|
|
3769
|
+
getTemplate(key) {
|
|
3770
|
+
return this.itemTemplates?.find((item) => item.key() === key)?.template ?? null;
|
|
3771
|
+
}
|
|
3772
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoDetailViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3773
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoDetailViewComponent, isStandalone: true, selector: "geo-detail-view", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, column: { classPropertyName: "column", publicName: "column", isSignal: true, isRequired: false, transformFunction: null }, bordered: { classPropertyName: "bordered", publicName: "bordered", isSignal: true, isRequired: false, transformFunction: null }, layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "geo-detail-view-host" }, queries: [{ propertyName: "itemTemplates", predicate: GeoDetailViewItemDirective }], ngImport: i0, template: "<nz-descriptions\n class=\"geo-detail-view\"\n [nzTitle]=\"title()\"\n [nzColumn]=\"column()\"\n [nzBordered]=\"bordered()\"\n [nzLayout]=\"layout()\"\n [nzSize]=\"size()\"\n>\n @for (item of items(); track item.key) {\n <nz-descriptions-item [nzTitle]=\"item.label\" [nzSpan]=\"item.span ?? 1\">\n @if (getTemplate(item.key); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl\"></ng-container>\n } @else {\n {{ item.value ?? '\u2014' }}\n }\n </nz-descriptions-item>\n }\n</nz-descriptions>\n", styles: [".geo-detail-view-host{display:block;width:100%}.geo-detail-view.ant-descriptions{font-family:var(--geo-font-family)}.geo-detail-view .ant-descriptions-title{font-size:var(--geo-font-size-h4, 16px);font-weight:var(--geo-font-weight-bold, 600);color:var(--geo-color-neutral-900)}.geo-detail-view .ant-descriptions-item-label{color:var(--geo-color-neutral-500);font-weight:500;background:var(--geo-color-surface-subtle)}.geo-detail-view .ant-descriptions-item-content{color:var(--geo-color-neutral-900)}.geo-detail-view.ant-descriptions-bordered .ant-descriptions-view{border-radius:var(--geo-radius);border-color:var(--geo-color-border-default)}.geo-detail-view.ant-descriptions-bordered .ant-descriptions-item-label,.geo-detail-view.ant-descriptions-bordered .ant-descriptions-item-content{border-color:var(--geo-color-border-default)}\n"], dependencies: [{ kind: "ngmodule", type: NgZorroAntdModule }, { kind: "component", type: i1$e.NzDescriptionsComponent, selector: "nz-descriptions", inputs: ["nzBordered", "nzLayout", "nzColumn", "nzSize", "nzTitle", "nzExtra", "nzColon"], exportAs: ["nzDescriptions"] }, { kind: "component", type: i1$e.NzDescriptionsItemComponent, selector: "nz-descriptions-item", inputs: ["nzSpan", "nzTitle"], exportAs: ["nzDescriptionsItem"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
3774
|
+
}
|
|
3775
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoDetailViewComponent, decorators: [{
|
|
3776
|
+
type: Component,
|
|
3777
|
+
args: [{ selector: 'geo-detail-view', standalone: true, imports: [NgZorroAntdModule, NgTemplateOutlet], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'geo-detail-view-host' }, template: "<nz-descriptions\n class=\"geo-detail-view\"\n [nzTitle]=\"title()\"\n [nzColumn]=\"column()\"\n [nzBordered]=\"bordered()\"\n [nzLayout]=\"layout()\"\n [nzSize]=\"size()\"\n>\n @for (item of items(); track item.key) {\n <nz-descriptions-item [nzTitle]=\"item.label\" [nzSpan]=\"item.span ?? 1\">\n @if (getTemplate(item.key); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl\"></ng-container>\n } @else {\n {{ item.value ?? '\u2014' }}\n }\n </nz-descriptions-item>\n }\n</nz-descriptions>\n", styles: [".geo-detail-view-host{display:block;width:100%}.geo-detail-view.ant-descriptions{font-family:var(--geo-font-family)}.geo-detail-view .ant-descriptions-title{font-size:var(--geo-font-size-h4, 16px);font-weight:var(--geo-font-weight-bold, 600);color:var(--geo-color-neutral-900)}.geo-detail-view .ant-descriptions-item-label{color:var(--geo-color-neutral-500);font-weight:500;background:var(--geo-color-surface-subtle)}.geo-detail-view .ant-descriptions-item-content{color:var(--geo-color-neutral-900)}.geo-detail-view.ant-descriptions-bordered .ant-descriptions-view{border-radius:var(--geo-radius);border-color:var(--geo-color-border-default)}.geo-detail-view.ant-descriptions-bordered .ant-descriptions-item-label,.geo-detail-view.ant-descriptions-bordered .ant-descriptions-item-content{border-color:var(--geo-color-border-default)}\n"] }]
|
|
3778
|
+
}], propDecorators: { itemTemplates: [{
|
|
3779
|
+
type: ContentChildren,
|
|
3780
|
+
args: [GeoDetailViewItemDirective]
|
|
3781
|
+
}] } });
|
|
3782
|
+
|
|
3663
3783
|
/**
|
|
3664
3784
|
* Login form (STT 35 — đăng nhập).
|
|
3665
3785
|
*
|
|
@@ -3893,11 +4013,11 @@ class GeoListPageComponent {
|
|
|
3893
4013
|
breadcrumb = input([]);
|
|
3894
4014
|
uppercase = input(true);
|
|
3895
4015
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoListPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3896
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: GeoListPageComponent, isStandalone: true, selector: "geo-list-page", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, breadcrumb: { classPropertyName: "breadcrumb", publicName: "breadcrumb", isSignal: true, isRequired: false, transformFunction: null }, uppercase: { classPropertyName: "uppercase", publicName: "uppercase", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "geo-list-page-host" }, ngImport: i0, template: "<div class=\"geo-list-page\">\n <geo-page-header\n [title]=\"title()\"\n [breadcrumb]=\"breadcrumb()\"\n [uppercase]=\"uppercase()\"\n >\n <div geoPageActions>\n <ng-content select=\"[geoListActions]\" />\n </div>\n <div geoPageFilters>\n <ng-content select=\"[geoListFilters]\" />\n </div>\n </geo-page-header>\n\n <div class=\"geo-list-page__filter\">\n <ng-content select=\"geo-table-filter,[geoListFilter]\" />\n </div>\n\n <div class=\"geo-list-page__table-panel\">\n <div class=\"geo-list-page__toolbar\">\n <ng-content select=\"geo-table-toolbar,[geoListToolbar]\" />\n </div>\n <div class=\"geo-list-page__body\">\n <ng-content />\n </div>\n </div>\n</div>\n", styles: ["
|
|
4016
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: GeoListPageComponent, isStandalone: true, selector: "geo-list-page", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, breadcrumb: { classPropertyName: "breadcrumb", publicName: "breadcrumb", isSignal: true, isRequired: false, transformFunction: null }, uppercase: { classPropertyName: "uppercase", publicName: "uppercase", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "geo-list-page-host" }, ngImport: i0, template: "<div class=\"geo-list-page\">\n <geo-page-header\n [title]=\"title()\"\n [breadcrumb]=\"breadcrumb()\"\n [uppercase]=\"uppercase()\"\n >\n <div geoPageActions>\n <ng-content select=\"[geoListActions]\" />\n </div>\n <div geoPageFilters>\n <ng-content select=\"[geoListFilters]\" />\n </div>\n </geo-page-header>\n\n <div class=\"geo-list-page__filter\">\n <ng-content select=\"geo-table-filter,[geoListFilter]\" />\n </div>\n\n <div class=\"geo-list-page__table-panel\">\n <div class=\"geo-list-page__toolbar\">\n <ng-content select=\"geo-table-toolbar,[geoListToolbar]\" />\n </div>\n <div class=\"geo-list-page__body\">\n <ng-content />\n </div>\n </div>\n</div>\n", styles: [".geo-list-page-host{display:block}.geo-list-page{display:flex;flex-direction:column;gap:16px}.geo-list-page__filter:empty,.geo-list-page__toolbar:empty{display:none}[geoPageActions]{display:contents}.geo-list-page__table-panel{display:flex;flex-direction:column;min-width:0;gap:0}.geo-list-page__body{min-width:0}\n"], dependencies: [{ kind: "component", type: GeoPageHeaderComponent, selector: "geo-page-header", inputs: ["title", "breadcrumb", "uppercase"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
3897
4017
|
}
|
|
3898
4018
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoListPageComponent, decorators: [{
|
|
3899
4019
|
type: Component,
|
|
3900
|
-
args: [{ selector: 'geo-list-page', standalone: true, imports: [GeoPageHeaderComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'geo-list-page-host' }, template: "<div class=\"geo-list-page\">\n <geo-page-header\n [title]=\"title()\"\n [breadcrumb]=\"breadcrumb()\"\n [uppercase]=\"uppercase()\"\n >\n <div geoPageActions>\n <ng-content select=\"[geoListActions]\" />\n </div>\n <div geoPageFilters>\n <ng-content select=\"[geoListFilters]\" />\n </div>\n </geo-page-header>\n\n <div class=\"geo-list-page__filter\">\n <ng-content select=\"geo-table-filter,[geoListFilter]\" />\n </div>\n\n <div class=\"geo-list-page__table-panel\">\n <div class=\"geo-list-page__toolbar\">\n <ng-content select=\"geo-table-toolbar,[geoListToolbar]\" />\n </div>\n <div class=\"geo-list-page__body\">\n <ng-content />\n </div>\n </div>\n</div>\n", styles: ["
|
|
4020
|
+
args: [{ selector: 'geo-list-page', standalone: true, imports: [GeoPageHeaderComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'geo-list-page-host' }, template: "<div class=\"geo-list-page\">\n <geo-page-header\n [title]=\"title()\"\n [breadcrumb]=\"breadcrumb()\"\n [uppercase]=\"uppercase()\"\n >\n <div geoPageActions>\n <ng-content select=\"[geoListActions]\" />\n </div>\n <div geoPageFilters>\n <ng-content select=\"[geoListFilters]\" />\n </div>\n </geo-page-header>\n\n <div class=\"geo-list-page__filter\">\n <ng-content select=\"geo-table-filter,[geoListFilter]\" />\n </div>\n\n <div class=\"geo-list-page__table-panel\">\n <div class=\"geo-list-page__toolbar\">\n <ng-content select=\"geo-table-toolbar,[geoListToolbar]\" />\n </div>\n <div class=\"geo-list-page__body\">\n <ng-content />\n </div>\n </div>\n</div>\n", styles: [".geo-list-page-host{display:block}.geo-list-page{display:flex;flex-direction:column;gap:16px}.geo-list-page__filter:empty,.geo-list-page__toolbar:empty{display:none}[geoPageActions]{display:contents}.geo-list-page__table-panel{display:flex;flex-direction:column;min-width:0;gap:0}.geo-list-page__body{min-width:0}\n"] }]
|
|
3901
4021
|
}] });
|
|
3902
4022
|
|
|
3903
4023
|
/**
|
|
@@ -4070,16 +4190,16 @@ const GEO_MAP_DEFAULT_TOOLBAR_ACTIONS = [
|
|
|
4070
4190
|
},
|
|
4071
4191
|
];
|
|
4072
4192
|
/**
|
|
4073
|
-
*
|
|
4074
|
-
*
|
|
4075
|
-
* `
|
|
4193
|
+
* Built-in "Vị trí của tôi" toolbar action — pair with `id: 'locate'` handling that
|
|
4194
|
+
* `geo-map-shell` already resolves internally (geolocate + emit `located`/`locateError`).
|
|
4195
|
+
* Not included in `GEO_MAP_DEFAULT_TOOLBAR_ACTIONS`; host apps opt in explicitly.
|
|
4076
4196
|
*/
|
|
4077
4197
|
const GEO_MAP_LOCATE_TOOLBAR_ACTION = {
|
|
4078
4198
|
id: 'locate',
|
|
4079
4199
|
label: 'Vị trí của tôi',
|
|
4080
4200
|
icon: 'aim',
|
|
4081
4201
|
iconOnly: true,
|
|
4082
|
-
tooltip: '
|
|
4202
|
+
tooltip: 'Vị trí của tôi',
|
|
4083
4203
|
};
|
|
4084
4204
|
/**
|
|
4085
4205
|
* Demo thematic overlays for Storybook (offline-friendly GeoJSON).
|
|
@@ -5663,13 +5783,13 @@ class GeoMapToolbarComponent {
|
|
|
5663
5783
|
this.actionClick.emit(action);
|
|
5664
5784
|
}
|
|
5665
5785
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5666
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapToolbarComponent, isStandalone: true, selector: "geo-map-toolbar", inputs: { controller: { classPropertyName: "controller", publicName: "controller", isSignal: true, isRequired: false, transformFunction: null }, actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, checkedMap: { classPropertyName: "checkedMap", publicName: "checkedMap", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checkedMap: "checkedMapChange", actionClick: "actionClick", actionToggle: "actionToggle" }, host: { classAttribute: "geo-map-toolbar-host" }, ngImport: i0, template: "<div\n class=\"geo-map-toolbar\"\n [class.geo-map-toolbar--compact]=\"compact()\"\n role=\"toolbar\"\n aria-label=\"Thao t\u00E1c b\u1EA3n \u0111\u1ED3\"\n>\n @for (action of resolvedActions(); track action.id) {\n <span\n class=\"geo-map-toolbar__tip\"\n [nz-tooltip]=\"tooltipOf(action)\"\n nzTooltipPlacement=\"bottom\"\n >\n <button\n type=\"button\"\n class=\"geo-map-toolbar__btn\"\n [class.geo-map-toolbar__btn--icon-only]=\"\n action.iconOnly || !action.label || compact()\n \"\n [class.geo-map-toolbar__btn--active]=\"action.active\"\n [class.geo-map-toolbar__btn--checked]=\"isChecked(action)\"\n [class.geo-map-toolbar__btn--primary]=\"action.variant === 'primary'\"\n [disabled]=\"action.disabled\"\n [attr.aria-label]=\"tooltipOf(action)\"\n [attr.aria-pressed]=\"isToggleAction(action) ? isChecked(action) : null\"\n (click)=\"onActionClick(action)\"\n >\n @if (action.iconSrc) {\n <img\n class=\"geo-map-toolbar__icon-img\"\n [class.geo-map-toolbar__icon-img--home]=\"action.variant === 'primary'\"\n [src]=\"action.iconSrc\"\n alt=\"\"\n draggable=\"false\"\n />\n } @else if (action.icon) {\n <geo-icon [type]=\"action.icon\" size=\"
|
|
5786
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapToolbarComponent, isStandalone: true, selector: "geo-map-toolbar", inputs: { controller: { classPropertyName: "controller", publicName: "controller", isSignal: true, isRequired: false, transformFunction: null }, actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, checkedMap: { classPropertyName: "checkedMap", publicName: "checkedMap", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checkedMap: "checkedMapChange", actionClick: "actionClick", actionToggle: "actionToggle" }, host: { classAttribute: "geo-map-toolbar-host" }, ngImport: i0, template: "<div\n class=\"geo-map-toolbar\"\n [class.geo-map-toolbar--compact]=\"compact()\"\n role=\"toolbar\"\n aria-label=\"Thao t\u00E1c b\u1EA3n \u0111\u1ED3\"\n>\n @for (action of resolvedActions(); track action.id) {\n <span\n class=\"geo-map-toolbar__tip\"\n [nz-tooltip]=\"tooltipOf(action)\"\n nzTooltipPlacement=\"bottom\"\n >\n <button\n type=\"button\"\n class=\"geo-map-toolbar__btn\"\n [class.geo-map-toolbar__btn--icon-only]=\"\n action.iconOnly || !action.label || compact()\n \"\n [class.geo-map-toolbar__btn--active]=\"action.active\"\n [class.geo-map-toolbar__btn--checked]=\"isChecked(action)\"\n [class.geo-map-toolbar__btn--primary]=\"action.variant === 'primary'\"\n [disabled]=\"action.disabled\"\n [attr.aria-label]=\"tooltipOf(action)\"\n [attr.aria-pressed]=\"isToggleAction(action) ? isChecked(action) : null\"\n (click)=\"onActionClick(action)\"\n >\n @if (action.iconSrc) {\n <img\n class=\"geo-map-toolbar__icon-img\"\n [class.geo-map-toolbar__icon-img--home]=\"action.variant === 'primary'\"\n [src]=\"action.iconSrc\"\n alt=\"\"\n draggable=\"false\"\n />\n } @else if (action.icon) {\n <geo-icon [type]=\"action.icon\" size=\"md\" />\n }\n @if (action.label && !action.iconOnly && !compact()) {\n <span class=\"geo-map-toolbar__label\">{{ action.label }}</span>\n }\n </button>\n </span>\n }\n</div>\n", styles: ["@charset \"UTF-8\";.geo-map-toolbar-host{display:block;pointer-events:none}.geo-map-toolbar{display:inline-flex;flex-wrap:nowrap;align-items:center;gap:18px;min-height:64px;padding:7px 12px;overflow:visible;pointer-events:auto;border:0;border-radius:var(--geo-radius-md);background:var(--geo-color-neutral-white, #fff);box-shadow:var(--geo-shadow-sm)}.geo-map-toolbar__tip{display:inline-flex}.geo-map-toolbar__btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:40px;min-height:40px;padding:5px;border:1px solid var(--geo-color-primary-default);border-radius:var(--geo-radius-xs);background:var(--geo-color-neutral-white, #fff);color:var(--geo-color-primary-default);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;box-shadow:0 0 2px color-mix(in srgb,var(--geo-color-neutral-900) 25%,transparent);transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease}.geo-map-toolbar__btn:hover:not(:disabled){background:color-mix(in srgb,var(--geo-color-primary-default) 14%,var(--geo-color-neutral-white))}.geo-map-toolbar__btn:active:not(:disabled){transform:scale(.98)}.geo-map-toolbar__btn:disabled{opacity:.45;cursor:not-allowed}.geo-map-toolbar__btn--icon-only{width:40px;padding:5px}.geo-map-toolbar__btn--active,.geo-map-toolbar__btn--checked{background:color-mix(in srgb,var(--geo-color-primary-light) 58%,var(--geo-color-neutral-white));color:var(--geo-color-primary-default)}.geo-map-toolbar__btn--active:hover:not(:disabled),.geo-map-toolbar__btn--checked:hover:not(:disabled){background:color-mix(in srgb,var(--geo-color-primary-light) 68%,var(--geo-color-neutral-white));color:var(--geo-color-primary-default)}.geo-map-toolbar__btn--primary{width:50px;min-width:50px;min-height:50px;padding:0;border:0;border-radius:50%;background:var(--geo-color-primary-light);box-shadow:0 4px 4px color-mix(in srgb,var(--geo-color-neutral-900) 25%,transparent);margin-right:-3px}.geo-map-toolbar__btn--primary:hover:not(:disabled){background:var(--geo-color-primary-default);filter:none}.geo-map-toolbar__btn--primary.geo-map-toolbar__btn--active,.geo-map-toolbar__btn--primary.geo-map-toolbar__btn--checked{background:var(--geo-color-primary-light)}.geo-map-toolbar__icon-img{display:block;width:25px;height:25px;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none}.geo-map-toolbar__icon-img--home{width:22px;height:20px}.geo-map-toolbar__label{white-space:nowrap}.geo-map-toolbar--compact .geo-map-toolbar__label{display:none}\n"], dependencies: [{ kind: "component", type: GeoIconComponent, selector: "geo-icon", inputs: ["type", "theme", "spin", "size", "color"] }, { kind: "ngmodule", type: NzToolTipModule }, { kind: "directive", type: i1$2.NzTooltipDirective, selector: "[nz-tooltip]", inputs: ["nzTooltipTitle", "nzTooltipTitleContext", "nz-tooltip", "nzTooltipTrigger", "nzTooltipPlacement", "nzTooltipOrigin", "nzTooltipVisible", "nzTooltipMouseEnterDelay", "nzTooltipMouseLeaveDelay", "nzTooltipOverlayClassName", "nzTooltipOverlayStyle", "nzTooltipArrowPointAtCenter", "cdkConnectedOverlayPush", "nzTooltipColor"], outputs: ["nzTooltipVisibleChange"], exportAs: ["nzTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
5667
5787
|
}
|
|
5668
5788
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapToolbarComponent, decorators: [{
|
|
5669
5789
|
type: Component,
|
|
5670
5790
|
args: [{ selector: 'geo-map-toolbar', standalone: true, imports: [GeoIconComponent, NzToolTipModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
5671
5791
|
class: 'geo-map-toolbar-host',
|
|
5672
|
-
}, template: "<div\n class=\"geo-map-toolbar\"\n [class.geo-map-toolbar--compact]=\"compact()\"\n role=\"toolbar\"\n aria-label=\"Thao t\u00E1c b\u1EA3n \u0111\u1ED3\"\n>\n @for (action of resolvedActions(); track action.id) {\n <span\n class=\"geo-map-toolbar__tip\"\n [nz-tooltip]=\"tooltipOf(action)\"\n nzTooltipPlacement=\"bottom\"\n >\n <button\n type=\"button\"\n class=\"geo-map-toolbar__btn\"\n [class.geo-map-toolbar__btn--icon-only]=\"\n action.iconOnly || !action.label || compact()\n \"\n [class.geo-map-toolbar__btn--active]=\"action.active\"\n [class.geo-map-toolbar__btn--checked]=\"isChecked(action)\"\n [class.geo-map-toolbar__btn--primary]=\"action.variant === 'primary'\"\n [disabled]=\"action.disabled\"\n [attr.aria-label]=\"tooltipOf(action)\"\n [attr.aria-pressed]=\"isToggleAction(action) ? isChecked(action) : null\"\n (click)=\"onActionClick(action)\"\n >\n @if (action.iconSrc) {\n <img\n class=\"geo-map-toolbar__icon-img\"\n [class.geo-map-toolbar__icon-img--home]=\"action.variant === 'primary'\"\n [src]=\"action.iconSrc\"\n alt=\"\"\n draggable=\"false\"\n />\n } @else if (action.icon) {\n <geo-icon [type]=\"action.icon\" size=\"
|
|
5792
|
+
}, template: "<div\n class=\"geo-map-toolbar\"\n [class.geo-map-toolbar--compact]=\"compact()\"\n role=\"toolbar\"\n aria-label=\"Thao t\u00E1c b\u1EA3n \u0111\u1ED3\"\n>\n @for (action of resolvedActions(); track action.id) {\n <span\n class=\"geo-map-toolbar__tip\"\n [nz-tooltip]=\"tooltipOf(action)\"\n nzTooltipPlacement=\"bottom\"\n >\n <button\n type=\"button\"\n class=\"geo-map-toolbar__btn\"\n [class.geo-map-toolbar__btn--icon-only]=\"\n action.iconOnly || !action.label || compact()\n \"\n [class.geo-map-toolbar__btn--active]=\"action.active\"\n [class.geo-map-toolbar__btn--checked]=\"isChecked(action)\"\n [class.geo-map-toolbar__btn--primary]=\"action.variant === 'primary'\"\n [disabled]=\"action.disabled\"\n [attr.aria-label]=\"tooltipOf(action)\"\n [attr.aria-pressed]=\"isToggleAction(action) ? isChecked(action) : null\"\n (click)=\"onActionClick(action)\"\n >\n @if (action.iconSrc) {\n <img\n class=\"geo-map-toolbar__icon-img\"\n [class.geo-map-toolbar__icon-img--home]=\"action.variant === 'primary'\"\n [src]=\"action.iconSrc\"\n alt=\"\"\n draggable=\"false\"\n />\n } @else if (action.icon) {\n <geo-icon [type]=\"action.icon\" size=\"md\" />\n }\n @if (action.label && !action.iconOnly && !compact()) {\n <span class=\"geo-map-toolbar__label\">{{ action.label }}</span>\n }\n </button>\n </span>\n }\n</div>\n", styles: ["@charset \"UTF-8\";.geo-map-toolbar-host{display:block;pointer-events:none}.geo-map-toolbar{display:inline-flex;flex-wrap:nowrap;align-items:center;gap:18px;min-height:64px;padding:7px 12px;overflow:visible;pointer-events:auto;border:0;border-radius:var(--geo-radius-md);background:var(--geo-color-neutral-white, #fff);box-shadow:var(--geo-shadow-sm)}.geo-map-toolbar__tip{display:inline-flex}.geo-map-toolbar__btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:40px;min-height:40px;padding:5px;border:1px solid var(--geo-color-primary-default);border-radius:var(--geo-radius-xs);background:var(--geo-color-neutral-white, #fff);color:var(--geo-color-primary-default);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;box-shadow:0 0 2px color-mix(in srgb,var(--geo-color-neutral-900) 25%,transparent);transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease}.geo-map-toolbar__btn:hover:not(:disabled){background:color-mix(in srgb,var(--geo-color-primary-default) 14%,var(--geo-color-neutral-white))}.geo-map-toolbar__btn:active:not(:disabled){transform:scale(.98)}.geo-map-toolbar__btn:disabled{opacity:.45;cursor:not-allowed}.geo-map-toolbar__btn--icon-only{width:40px;padding:5px}.geo-map-toolbar__btn--active,.geo-map-toolbar__btn--checked{background:color-mix(in srgb,var(--geo-color-primary-light) 58%,var(--geo-color-neutral-white));color:var(--geo-color-primary-default)}.geo-map-toolbar__btn--active:hover:not(:disabled),.geo-map-toolbar__btn--checked:hover:not(:disabled){background:color-mix(in srgb,var(--geo-color-primary-light) 68%,var(--geo-color-neutral-white));color:var(--geo-color-primary-default)}.geo-map-toolbar__btn--primary{width:50px;min-width:50px;min-height:50px;padding:0;border:0;border-radius:50%;background:var(--geo-color-primary-light);box-shadow:0 4px 4px color-mix(in srgb,var(--geo-color-neutral-900) 25%,transparent);margin-right:-3px}.geo-map-toolbar__btn--primary:hover:not(:disabled){background:var(--geo-color-primary-default);filter:none}.geo-map-toolbar__btn--primary.geo-map-toolbar__btn--active,.geo-map-toolbar__btn--primary.geo-map-toolbar__btn--checked{background:var(--geo-color-primary-light)}.geo-map-toolbar__icon-img{display:block;width:25px;height:25px;object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none}.geo-map-toolbar__icon-img--home{width:22px;height:20px}.geo-map-toolbar__label{white-space:nowrap}.geo-map-toolbar--compact .geo-map-toolbar__label{display:none}\n"] }]
|
|
5673
5793
|
}] });
|
|
5674
5794
|
|
|
5675
5795
|
/**
|
|
@@ -6022,13 +6142,50 @@ class GeoMapZoomComponent {
|
|
|
6022
6142
|
this.canZoomNext.set(idx >= 0 && idx < len - 1);
|
|
6023
6143
|
}
|
|
6024
6144
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapZoomComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6025
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapZoomComponent, isStandalone: true, selector: "geo-map-zoom", inputs: { controller: { classPropertyName: "controller", publicName: "controller", isSignal: true, isRequired: false, transformFunction: null }, showNav: { classPropertyName: "showNav", publicName: "showNav", isSignal: true, isRequired: false, transformFunction: null }, showFitProvince: { classPropertyName: "showFitProvince", publicName: "showFitProvince", isSignal: true, isRequired: false, transformFunction: null }, provinceExtent: { classPropertyName: "provinceExtent", publicName: "provinceExtent", isSignal: true, isRequired: false, transformFunction: null }, fullscreenTarget: { classPropertyName: "fullscreenTarget", publicName: "fullscreenTarget", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "geo-map-zoom-host" }, ngImport: i0, template: "<div class=\"geo-map-zoom\" role=\"group\" aria-label=\"Thu ph\u00F3ng b\u1EA3n \u0111\u1ED3\">\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Ph\u00F3ng to\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Ph\u00F3ng to\"\n [disabled]=\"!controller()\"\n (click)=\"zoomIn()\"\n >\n <geo-icon type=\"plus\" size=\"
|
|
6145
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapZoomComponent, isStandalone: true, selector: "geo-map-zoom", inputs: { controller: { classPropertyName: "controller", publicName: "controller", isSignal: true, isRequired: false, transformFunction: null }, showNav: { classPropertyName: "showNav", publicName: "showNav", isSignal: true, isRequired: false, transformFunction: null }, showFitProvince: { classPropertyName: "showFitProvince", publicName: "showFitProvince", isSignal: true, isRequired: false, transformFunction: null }, provinceExtent: { classPropertyName: "provinceExtent", publicName: "provinceExtent", isSignal: true, isRequired: false, transformFunction: null }, fullscreenTarget: { classPropertyName: "fullscreenTarget", publicName: "fullscreenTarget", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "geo-map-zoom-host" }, ngImport: i0, template: "<div class=\"geo-map-zoom\" role=\"group\" aria-label=\"Thu ph\u00F3ng b\u1EA3n \u0111\u1ED3\">\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Ph\u00F3ng to\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Ph\u00F3ng to\"\n [disabled]=\"!controller()\"\n (click)=\"zoomIn()\"\n >\n <geo-icon type=\"plus\" size=\"md\" />\n </button>\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Thu nh\u1ECF\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Thu nh\u1ECF\"\n [disabled]=\"!controller()\"\n (click)=\"zoomOut()\"\n >\n <geo-icon type=\"minus\" size=\"md\" />\n </button>\n\n @if (showNav()) {\n <span class=\"geo-map-zoom__divider\" aria-hidden=\"true\"></span>\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n [class.geo-map-zoom__btn--active]=\"boxMode() === 'in'\"\n nz-tooltip=\"Ph\u00F3ng to theo v\u00F9ng (k\u00E9o khung)\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Ph\u00F3ng to theo v\u00F9ng\"\n [disabled]=\"!controller()\"\n (click)=\"toggleBoxZoom('in')\"\n >\n <geo-icon type=\"zoom-in\" size=\"sm\" />\n </button>\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n [class.geo-map-zoom__btn--active]=\"boxMode() === 'out'\"\n nz-tooltip=\"Thu nh\u1ECF theo v\u00F9ng (k\u00E9o khung)\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Thu nh\u1ECF theo v\u00F9ng\"\n [disabled]=\"!controller()\"\n (click)=\"toggleBoxZoom('out')\"\n >\n <geo-icon type=\"zoom-out\" size=\"sm\" />\n </button>\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Zoom tr\u01B0\u1EDBc\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Zoom tr\u01B0\u1EDBc\"\n [disabled]=\"!controller() || !canZoomPrev()\"\n (click)=\"zoomPrev()\"\n >\n <geo-icon type=\"left\" size=\"sm\" />\n </button>\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Zoom sau\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Zoom sau\"\n [disabled]=\"!controller() || !canZoomNext()\"\n (click)=\"zoomNext()\"\n >\n <geo-icon type=\"right\" size=\"sm\" />\n </button>\n @if (showFitProvince()) {\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Xem to\u00E0n t\u1EC9nh\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Xem to\u00E0n t\u1EC9nh\"\n [disabled]=\"!controller()\"\n (click)=\"fitProvince()\"\n >\n <geo-icon type=\"expand\" size=\"sm\" />\n </button>\n }\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n [class.geo-map-zoom__btn--active]=\"isFullscreen()\"\n [nz-tooltip]=\"\n isFullscreen() ? 'Tho\u00E1t to\u00E0n m\u00E0n h\u00ECnh' : 'Xem to\u00E0n b\u1EA3n \u0111\u1ED3'\n \"\n nzTooltipPlacement=\"left\"\n [attr.aria-label]=\"\n isFullscreen() ? 'Tho\u00E1t to\u00E0n m\u00E0n h\u00ECnh' : 'Xem to\u00E0n b\u1EA3n \u0111\u1ED3'\n \"\n [disabled]=\"!controller()\"\n (click)=\"toggleFullscreen()\"\n >\n <geo-icon\n [type]=\"isFullscreen() ? 'fullscreen-exit' : 'fullscreen'\"\n size=\"sm\"\n />\n </button>\n }\n</div>\n", styles: ["@charset \"UTF-8\";.geo-map-zoom-host{display:block}.geo-map-zoom{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);display:flex;flex-direction:column;align-items:stretch;gap:2px;padding:4px}.geo-map-zoom__btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:40px;min-height:40px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:40px;padding:0}.geo-map-zoom__btn:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-zoom__btn:active:not(:disabled){transform:scale(.98)}.geo-map-zoom__btn:disabled{opacity:.45;cursor:not-allowed}.geo-map-zoom__btn--active,.geo-map-zoom__btn--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-zoom__btn--icon-only{width:40px;padding:0}.geo-map-zoom__btn--active{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-zoom__dragbox{background:color-mix(in srgb,var(--geo-color-primary-default) 18%,transparent);border:2px solid var(--geo-color-primary-default)}.geo-map-zoom__divider{height:1px;margin:2px 6px;background:var(--geo-color-neutral-100)}\n"], dependencies: [{ kind: "component", type: GeoIconComponent, selector: "geo-icon", inputs: ["type", "theme", "spin", "size", "color"] }, { kind: "ngmodule", type: NzToolTipModule }, { kind: "directive", type: i1$2.NzTooltipDirective, selector: "[nz-tooltip]", inputs: ["nzTooltipTitle", "nzTooltipTitleContext", "nz-tooltip", "nzTooltipTrigger", "nzTooltipPlacement", "nzTooltipOrigin", "nzTooltipVisible", "nzTooltipMouseEnterDelay", "nzTooltipMouseLeaveDelay", "nzTooltipOverlayClassName", "nzTooltipOverlayStyle", "nzTooltipArrowPointAtCenter", "cdkConnectedOverlayPush", "nzTooltipColor"], outputs: ["nzTooltipVisibleChange"], exportAs: ["nzTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6026
6146
|
}
|
|
6027
6147
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapZoomComponent, decorators: [{
|
|
6028
6148
|
type: Component,
|
|
6029
|
-
args: [{ selector: 'geo-map-zoom', standalone: true, imports: [GeoIconComponent, NzToolTipModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'geo-map-zoom-host' }, template: "<div class=\"geo-map-zoom\" role=\"group\" aria-label=\"Thu ph\u00F3ng b\u1EA3n \u0111\u1ED3\">\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Ph\u00F3ng to\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Ph\u00F3ng to\"\n [disabled]=\"!controller()\"\n (click)=\"zoomIn()\"\n >\n <geo-icon type=\"plus\" size=\"
|
|
6149
|
+
args: [{ selector: 'geo-map-zoom', standalone: true, imports: [GeoIconComponent, NzToolTipModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'geo-map-zoom-host' }, template: "<div class=\"geo-map-zoom\" role=\"group\" aria-label=\"Thu ph\u00F3ng b\u1EA3n \u0111\u1ED3\">\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Ph\u00F3ng to\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Ph\u00F3ng to\"\n [disabled]=\"!controller()\"\n (click)=\"zoomIn()\"\n >\n <geo-icon type=\"plus\" size=\"md\" />\n </button>\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Thu nh\u1ECF\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Thu nh\u1ECF\"\n [disabled]=\"!controller()\"\n (click)=\"zoomOut()\"\n >\n <geo-icon type=\"minus\" size=\"md\" />\n </button>\n\n @if (showNav()) {\n <span class=\"geo-map-zoom__divider\" aria-hidden=\"true\"></span>\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n [class.geo-map-zoom__btn--active]=\"boxMode() === 'in'\"\n nz-tooltip=\"Ph\u00F3ng to theo v\u00F9ng (k\u00E9o khung)\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Ph\u00F3ng to theo v\u00F9ng\"\n [disabled]=\"!controller()\"\n (click)=\"toggleBoxZoom('in')\"\n >\n <geo-icon type=\"zoom-in\" size=\"sm\" />\n </button>\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n [class.geo-map-zoom__btn--active]=\"boxMode() === 'out'\"\n nz-tooltip=\"Thu nh\u1ECF theo v\u00F9ng (k\u00E9o khung)\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Thu nh\u1ECF theo v\u00F9ng\"\n [disabled]=\"!controller()\"\n (click)=\"toggleBoxZoom('out')\"\n >\n <geo-icon type=\"zoom-out\" size=\"sm\" />\n </button>\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Zoom tr\u01B0\u1EDBc\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Zoom tr\u01B0\u1EDBc\"\n [disabled]=\"!controller() || !canZoomPrev()\"\n (click)=\"zoomPrev()\"\n >\n <geo-icon type=\"left\" size=\"sm\" />\n </button>\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Zoom sau\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Zoom sau\"\n [disabled]=\"!controller() || !canZoomNext()\"\n (click)=\"zoomNext()\"\n >\n <geo-icon type=\"right\" size=\"sm\" />\n </button>\n @if (showFitProvince()) {\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Xem to\u00E0n t\u1EC9nh\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Xem to\u00E0n t\u1EC9nh\"\n [disabled]=\"!controller()\"\n (click)=\"fitProvince()\"\n >\n <geo-icon type=\"expand\" size=\"sm\" />\n </button>\n }\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n [class.geo-map-zoom__btn--active]=\"isFullscreen()\"\n [nz-tooltip]=\"\n isFullscreen() ? 'Tho\u00E1t to\u00E0n m\u00E0n h\u00ECnh' : 'Xem to\u00E0n b\u1EA3n \u0111\u1ED3'\n \"\n nzTooltipPlacement=\"left\"\n [attr.aria-label]=\"\n isFullscreen() ? 'Tho\u00E1t to\u00E0n m\u00E0n h\u00ECnh' : 'Xem to\u00E0n b\u1EA3n \u0111\u1ED3'\n \"\n [disabled]=\"!controller()\"\n (click)=\"toggleFullscreen()\"\n >\n <geo-icon\n [type]=\"isFullscreen() ? 'fullscreen-exit' : 'fullscreen'\"\n size=\"sm\"\n />\n </button>\n }\n</div>\n", styles: ["@charset \"UTF-8\";.geo-map-zoom-host{display:block}.geo-map-zoom{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);display:flex;flex-direction:column;align-items:stretch;gap:2px;padding:4px}.geo-map-zoom__btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:40px;min-height:40px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:40px;padding:0}.geo-map-zoom__btn:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-zoom__btn:active:not(:disabled){transform:scale(.98)}.geo-map-zoom__btn:disabled{opacity:.45;cursor:not-allowed}.geo-map-zoom__btn--active,.geo-map-zoom__btn--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-zoom__btn--icon-only{width:40px;padding:0}.geo-map-zoom__btn--active{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-zoom__dragbox{background:color-mix(in srgb,var(--geo-color-primary-default) 18%,transparent);border:2px solid var(--geo-color-primary-default)}.geo-map-zoom__divider{height:1px;margin:2px 6px;background:var(--geo-color-neutral-100)}\n"] }]
|
|
6030
6150
|
}], ctorParameters: () => [] });
|
|
6031
6151
|
|
|
6152
|
+
/**
|
|
6153
|
+
* Shared browser-geolocation trigger — centers `ctrl` on the user and reports the outcome.
|
|
6154
|
+
* Used by both `geo-map-locate` (standalone button) and `geo-map-shell`'s built-in locate
|
|
6155
|
+
* toolbar action so the two never drift on error-reason mapping.
|
|
6156
|
+
*/
|
|
6157
|
+
function runGeoMapLocate(ctrl, callbacks) {
|
|
6158
|
+
if (typeof navigator === 'undefined' || !navigator.geolocation) {
|
|
6159
|
+
callbacks.onError?.({
|
|
6160
|
+
reason: 'unsupported',
|
|
6161
|
+
message: 'Trình duyệt không hỗ trợ định vị.',
|
|
6162
|
+
});
|
|
6163
|
+
return;
|
|
6164
|
+
}
|
|
6165
|
+
navigator.geolocation.getCurrentPosition((pos) => {
|
|
6166
|
+
const lonLat = [pos.coords.longitude, pos.coords.latitude];
|
|
6167
|
+
const mercator = fromLonLat(lonLat);
|
|
6168
|
+
ctrl.setCenter(mercator, Math.max(ctrl.getZoom() ?? 14, 14));
|
|
6169
|
+
callbacks.onLocated?.(lonLat);
|
|
6170
|
+
}, (err) => {
|
|
6171
|
+
if (err.code === err.PERMISSION_DENIED) {
|
|
6172
|
+
callbacks.onDenied?.();
|
|
6173
|
+
callbacks.onError?.({ reason: 'denied', message: err.message });
|
|
6174
|
+
return;
|
|
6175
|
+
}
|
|
6176
|
+
const reason = err.code === err.POSITION_UNAVAILABLE
|
|
6177
|
+
? 'unavailable'
|
|
6178
|
+
: err.code === err.TIMEOUT
|
|
6179
|
+
? 'timeout'
|
|
6180
|
+
: 'unknown';
|
|
6181
|
+
callbacks.onError?.({ reason, message: err.message });
|
|
6182
|
+
}, {
|
|
6183
|
+
enableHighAccuracy: true,
|
|
6184
|
+
timeout: 12000,
|
|
6185
|
+
maximumAge: 0,
|
|
6186
|
+
});
|
|
6187
|
+
}
|
|
6188
|
+
|
|
6032
6189
|
/**
|
|
6033
6190
|
* Geolocation button: center map on user after permission.
|
|
6034
6191
|
*
|
|
@@ -6048,51 +6205,28 @@ class GeoMapLocateComponent {
|
|
|
6048
6205
|
if (!ctrl || this.busy()) {
|
|
6049
6206
|
return;
|
|
6050
6207
|
}
|
|
6051
|
-
if (typeof navigator === 'undefined' || !navigator.geolocation) {
|
|
6052
|
-
this.locateError.emit({
|
|
6053
|
-
reason: 'unsupported',
|
|
6054
|
-
message: 'Trình duyệt không hỗ trợ định vị.',
|
|
6055
|
-
});
|
|
6056
|
-
return;
|
|
6057
|
-
}
|
|
6058
6208
|
this.busy.set(true);
|
|
6059
|
-
|
|
6060
|
-
|
|
6061
|
-
|
|
6062
|
-
|
|
6063
|
-
|
|
6064
|
-
|
|
6065
|
-
|
|
6066
|
-
ctrl.setCenter(mercator, Math.max(ctrl.getZoom() ?? 14, 14));
|
|
6067
|
-
this.located.emit(lonLat);
|
|
6068
|
-
}, (err) => {
|
|
6069
|
-
this.busy.set(false);
|
|
6070
|
-
if (err.code === err.PERMISSION_DENIED) {
|
|
6209
|
+
runGeoMapLocate(ctrl, {
|
|
6210
|
+
onLocated: (lonLat) => {
|
|
6211
|
+
this.busy.set(false);
|
|
6212
|
+
this.located.emit(lonLat);
|
|
6213
|
+
},
|
|
6214
|
+
onDenied: () => {
|
|
6215
|
+
this.busy.set(false);
|
|
6071
6216
|
this.denied.emit();
|
|
6072
|
-
|
|
6073
|
-
|
|
6074
|
-
|
|
6075
|
-
|
|
6076
|
-
|
|
6077
|
-
}
|
|
6078
|
-
const reason = err.code === err.POSITION_UNAVAILABLE
|
|
6079
|
-
? 'unavailable'
|
|
6080
|
-
: err.code === err.TIMEOUT
|
|
6081
|
-
? 'timeout'
|
|
6082
|
-
: 'unknown';
|
|
6083
|
-
this.locateError.emit({ reason, message: err.message });
|
|
6084
|
-
}, {
|
|
6085
|
-
enableHighAccuracy: true,
|
|
6086
|
-
timeout: 12000,
|
|
6087
|
-
maximumAge: 0,
|
|
6217
|
+
},
|
|
6218
|
+
onError: (error) => {
|
|
6219
|
+
this.busy.set(false);
|
|
6220
|
+
this.locateError.emit(error);
|
|
6221
|
+
},
|
|
6088
6222
|
});
|
|
6089
6223
|
}
|
|
6090
6224
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapLocateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6091
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: GeoMapLocateComponent, isStandalone: true, selector: "geo-map-locate", inputs: { controller: { classPropertyName: "controller", publicName: "controller", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { located: "located", denied: "denied", locateError: "locateError" }, host: { classAttribute: "geo-map-locate-host" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"geo-map-locate__btn\"\n [nz-tooltip]=\"label()\"\n nzTooltipPlacement=\"left\"\n [attr.aria-label]=\"label()\"\n [disabled]=\"!controller() || busy()\"\n (click)=\"locate()\"\n>\n <geo-icon type=\"aim\" size=\"
|
|
6225
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: GeoMapLocateComponent, isStandalone: true, selector: "geo-map-locate", inputs: { controller: { classPropertyName: "controller", publicName: "controller", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { located: "located", denied: "denied", locateError: "locateError" }, host: { classAttribute: "geo-map-locate-host" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"geo-map-locate__btn\"\n [nz-tooltip]=\"label()\"\n nzTooltipPlacement=\"left\"\n [attr.aria-label]=\"label()\"\n [disabled]=\"!controller() || busy()\"\n (click)=\"locate()\"\n>\n <geo-icon type=\"aim\" size=\"md\" />\n</button>\n", styles: ["@charset \"UTF-8\";.geo-map-locate-host{display:block}.geo-map-locate__btn{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:40px;min-height:40px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:48px;min-height:48px;padding:0}.geo-map-locate__btn:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-locate__btn:active:not(:disabled){transform:scale(.98)}.geo-map-locate__btn:disabled{opacity:.45;cursor:not-allowed}.geo-map-locate__btn--active,.geo-map-locate__btn--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-locate__btn--icon-only{width:40px;padding:0}\n"], dependencies: [{ kind: "component", type: GeoIconComponent, selector: "geo-icon", inputs: ["type", "theme", "spin", "size", "color"] }, { kind: "ngmodule", type: NzToolTipModule }, { kind: "directive", type: i1$2.NzTooltipDirective, selector: "[nz-tooltip]", inputs: ["nzTooltipTitle", "nzTooltipTitleContext", "nz-tooltip", "nzTooltipTrigger", "nzTooltipPlacement", "nzTooltipOrigin", "nzTooltipVisible", "nzTooltipMouseEnterDelay", "nzTooltipMouseLeaveDelay", "nzTooltipOverlayClassName", "nzTooltipOverlayStyle", "nzTooltipArrowPointAtCenter", "cdkConnectedOverlayPush", "nzTooltipColor"], outputs: ["nzTooltipVisibleChange"], exportAs: ["nzTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6092
6226
|
}
|
|
6093
6227
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapLocateComponent, decorators: [{
|
|
6094
6228
|
type: Component,
|
|
6095
|
-
args: [{ selector: 'geo-map-locate', standalone: true, imports: [GeoIconComponent, NzToolTipModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'geo-map-locate-host' }, template: "<button\n type=\"button\"\n class=\"geo-map-locate__btn\"\n [nz-tooltip]=\"label()\"\n nzTooltipPlacement=\"left\"\n [attr.aria-label]=\"label()\"\n [disabled]=\"!controller() || busy()\"\n (click)=\"locate()\"\n>\n <geo-icon type=\"aim\" size=\"
|
|
6229
|
+
args: [{ selector: 'geo-map-locate', standalone: true, imports: [GeoIconComponent, NzToolTipModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'geo-map-locate-host' }, template: "<button\n type=\"button\"\n class=\"geo-map-locate__btn\"\n [nz-tooltip]=\"label()\"\n nzTooltipPlacement=\"left\"\n [attr.aria-label]=\"label()\"\n [disabled]=\"!controller() || busy()\"\n (click)=\"locate()\"\n>\n <geo-icon type=\"aim\" size=\"md\" />\n</button>\n", styles: ["@charset \"UTF-8\";.geo-map-locate-host{display:block}.geo-map-locate__btn{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:40px;min-height:40px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:48px;min-height:48px;padding:0}.geo-map-locate__btn:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-locate__btn:active:not(:disabled){transform:scale(.98)}.geo-map-locate__btn:disabled{opacity:.45;cursor:not-allowed}.geo-map-locate__btn--active,.geo-map-locate__btn--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-locate__btn--icon-only{width:40px;padding:0}\n"] }]
|
|
6096
6230
|
}] });
|
|
6097
6231
|
|
|
6098
6232
|
/**
|
|
@@ -6176,11 +6310,11 @@ class GeoMapSnapshotComponent {
|
|
|
6176
6310
|
map.renderSync();
|
|
6177
6311
|
}
|
|
6178
6312
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapSnapshotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6179
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: GeoMapSnapshotComponent, isStandalone: true, selector: "geo-map-snapshot", inputs: { controller: { classPropertyName: "controller", publicName: "controller", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, filename: { classPropertyName: "filename", publicName: "filename", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { captured: "captured", captureError: "captureError" }, host: { classAttribute: "geo-map-snapshot-host" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"geo-map-snapshot__btn\"\n [nz-tooltip]=\"label()\"\n nzTooltipPlacement=\"left\"\n [attr.aria-label]=\"label()\"\n [disabled]=\"!controller() || busy()\"\n (click)=\"capture()\"\n>\n <geo-icon type=\"camera\" size=\"
|
|
6313
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: GeoMapSnapshotComponent, isStandalone: true, selector: "geo-map-snapshot", inputs: { controller: { classPropertyName: "controller", publicName: "controller", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, filename: { classPropertyName: "filename", publicName: "filename", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { captured: "captured", captureError: "captureError" }, host: { classAttribute: "geo-map-snapshot-host" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"geo-map-snapshot__btn\"\n [nz-tooltip]=\"label()\"\n nzTooltipPlacement=\"left\"\n [attr.aria-label]=\"label()\"\n [disabled]=\"!controller() || busy()\"\n (click)=\"capture()\"\n>\n <geo-icon type=\"camera\" size=\"md\" />\n</button>\n", styles: ["@charset \"UTF-8\";.geo-map-snapshot-host{display:block}.geo-map-snapshot__btn{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:40px;min-height:40px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:48px;min-height:48px;padding:0}.geo-map-snapshot__btn:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-snapshot__btn:active:not(:disabled){transform:scale(.98)}.geo-map-snapshot__btn:disabled{opacity:.45;cursor:not-allowed}.geo-map-snapshot__btn--active,.geo-map-snapshot__btn--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-snapshot__btn--icon-only{width:40px;padding:0}\n"], dependencies: [{ kind: "component", type: GeoIconComponent, selector: "geo-icon", inputs: ["type", "theme", "spin", "size", "color"] }, { kind: "ngmodule", type: NzToolTipModule }, { kind: "directive", type: i1$2.NzTooltipDirective, selector: "[nz-tooltip]", inputs: ["nzTooltipTitle", "nzTooltipTitleContext", "nz-tooltip", "nzTooltipTrigger", "nzTooltipPlacement", "nzTooltipOrigin", "nzTooltipVisible", "nzTooltipMouseEnterDelay", "nzTooltipMouseLeaveDelay", "nzTooltipOverlayClassName", "nzTooltipOverlayStyle", "nzTooltipArrowPointAtCenter", "cdkConnectedOverlayPush", "nzTooltipColor"], outputs: ["nzTooltipVisibleChange"], exportAs: ["nzTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6180
6314
|
}
|
|
6181
6315
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapSnapshotComponent, decorators: [{
|
|
6182
6316
|
type: Component,
|
|
6183
|
-
args: [{ selector: 'geo-map-snapshot', standalone: true, imports: [GeoIconComponent, NzToolTipModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'geo-map-snapshot-host' }, template: "<button\n type=\"button\"\n class=\"geo-map-snapshot__btn\"\n [nz-tooltip]=\"label()\"\n nzTooltipPlacement=\"left\"\n [attr.aria-label]=\"label()\"\n [disabled]=\"!controller() || busy()\"\n (click)=\"capture()\"\n>\n <geo-icon type=\"camera\" size=\"
|
|
6317
|
+
args: [{ selector: 'geo-map-snapshot', standalone: true, imports: [GeoIconComponent, NzToolTipModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'geo-map-snapshot-host' }, template: "<button\n type=\"button\"\n class=\"geo-map-snapshot__btn\"\n [nz-tooltip]=\"label()\"\n nzTooltipPlacement=\"left\"\n [attr.aria-label]=\"label()\"\n [disabled]=\"!controller() || busy()\"\n (click)=\"capture()\"\n>\n <geo-icon type=\"camera\" size=\"md\" />\n</button>\n", styles: ["@charset \"UTF-8\";.geo-map-snapshot-host{display:block}.geo-map-snapshot__btn{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:40px;min-height:40px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:48px;min-height:48px;padding:0}.geo-map-snapshot__btn:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-snapshot__btn:active:not(:disabled){transform:scale(.98)}.geo-map-snapshot__btn:disabled{opacity:.45;cursor:not-allowed}.geo-map-snapshot__btn--active,.geo-map-snapshot__btn--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-snapshot__btn--icon-only{width:40px;padding:0}\n"] }]
|
|
6184
6318
|
}] });
|
|
6185
6319
|
|
|
6186
6320
|
/**
|
|
@@ -6232,11 +6366,11 @@ class GeoMapBasemapSwitcherComponent {
|
|
|
6232
6366
|
this.basemapChange.emit(next.basemap);
|
|
6233
6367
|
}
|
|
6234
6368
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapBasemapSwitcherComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6235
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapBasemapSwitcherComponent, isStandalone: true, selector: "geo-map-basemap-switcher", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, selectedId: { classPropertyName: "selectedId", publicName: "selectedId", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedId: "selectedIdChange", basemapChange: "basemapChange" }, host: { classAttribute: "geo-map-basemap-switcher-host" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"geo-map-basemap-switcher__trigger\"\n [nz-tooltip]=\"tooltipText()\"\n nzTooltipPlacement=\"left\"\n [attr.aria-label]=\"tooltipText()\"\n (click)=\"toggle()\"\n>\n @if (next(); as option) {\n @if (option.previewUrl; as url) {\n <img class=\"geo-map-basemap-switcher__preview\" [src]=\"url\" alt=\"\" />\n } @else {\n <span\n class=\"geo-map-basemap-switcher__preview geo-map-basemap-switcher__preview--empty\"\n aria-hidden=\"true\"\n ></span>\n }\n } @else {\n <span\n class=\"geo-map-basemap-switcher__preview geo-map-basemap-switcher__preview--empty\"\n aria-hidden=\"true\"\n ></span>\n }\n <span class=\"geo-map-basemap-switcher__veil\" aria-hidden=\"true\"></span>\n <span class=\"geo-map-basemap-switcher__content\">\n <span class=\"geo-map-basemap-switcher__icon\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12 4.2 3 8.7l9 4.5 9-4.5-9-4.5Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M3 15.3 12 19.8l9-4.5\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </span>\n <span class=\"geo-map-basemap-switcher__caption\">{{ label() }}</span>\n </span>\n</button>\n", styles: [".geo-map-basemap-switcher-host{display:block}.geo-map-basemap-switcher__trigger{position:relative;display:block;width:
|
|
6369
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapBasemapSwitcherComponent, isStandalone: true, selector: "geo-map-basemap-switcher", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, selectedId: { classPropertyName: "selectedId", publicName: "selectedId", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedId: "selectedIdChange", basemapChange: "basemapChange" }, host: { classAttribute: "geo-map-basemap-switcher-host" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"geo-map-basemap-switcher__trigger\"\n [nz-tooltip]=\"tooltipText()\"\n nzTooltipPlacement=\"left\"\n [attr.aria-label]=\"tooltipText()\"\n (click)=\"toggle()\"\n>\n @if (next(); as option) {\n @if (option.previewUrl; as url) {\n <img class=\"geo-map-basemap-switcher__preview\" [src]=\"url\" alt=\"\" />\n } @else {\n <span\n class=\"geo-map-basemap-switcher__preview geo-map-basemap-switcher__preview--empty\"\n aria-hidden=\"true\"\n ></span>\n }\n } @else {\n <span\n class=\"geo-map-basemap-switcher__preview geo-map-basemap-switcher__preview--empty\"\n aria-hidden=\"true\"\n ></span>\n }\n <span class=\"geo-map-basemap-switcher__veil\" aria-hidden=\"true\"></span>\n <span class=\"geo-map-basemap-switcher__content\">\n <span class=\"geo-map-basemap-switcher__icon\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12 4.2 3 8.7l9 4.5 9-4.5-9-4.5Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M3 15.3 12 19.8l9-4.5\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </span>\n <span class=\"geo-map-basemap-switcher__caption\">{{ label() }}</span>\n </span>\n</button>\n", styles: [".geo-map-basemap-switcher-host{display:block}.geo-map-basemap-switcher__trigger{position:relative;display:block;width:90px;height:90px;padding:0;overflow:hidden;border:3px solid var(--geo-color-neutral-white, #fff);border-radius:var(--geo-radius-2xl);background:var(--geo-color-neutral-800);box-shadow:var(--geo-shadow-md);cursor:pointer;transition:box-shadow .15s ease,transform .15s ease}.geo-map-basemap-switcher__trigger:hover{box-shadow:var(--geo-shadow-lg, var(--geo-shadow-md));transform:translateY(-1px)}.geo-map-basemap-switcher__trigger:focus-visible{outline:2px solid var(--geo-color-primary-default);outline-offset:2px}.geo-map-basemap-switcher__preview{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;pointer-events:none}.geo-map-basemap-switcher__preview--empty{background:linear-gradient(145deg,var(--geo-color-neutral-600),var(--geo-color-neutral-800))}.geo-map-basemap-switcher__veil{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,transparent 40%,color-mix(in srgb,var(--geo-color-neutral-900) 55%,transparent) 100%)}.geo-map-basemap-switcher__content{position:absolute;inset:0;z-index:1;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-end;gap:4px;padding:0 8px 8px;color:var(--geo-color-neutral-white, #fff);pointer-events:none}.geo-map-basemap-switcher__icon{display:inline-flex;width:20px;height:20px;color:inherit;filter:drop-shadow(0 1px 2px color-mix(in srgb,var(--geo-color-neutral-900) 45%,transparent))}.geo-map-basemap-switcher__icon svg{width:100%;height:100%}.geo-map-basemap-switcher__caption{max-width:100%;font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-semibold);line-height:1.2;text-align:left;white-space:nowrap;text-shadow:0 1px 2px color-mix(in srgb,var(--geo-color-neutral-900) 55%,transparent)}\n"], dependencies: [{ kind: "ngmodule", type: NzToolTipModule }, { kind: "directive", type: i1$2.NzTooltipDirective, selector: "[nz-tooltip]", inputs: ["nzTooltipTitle", "nzTooltipTitleContext", "nz-tooltip", "nzTooltipTrigger", "nzTooltipPlacement", "nzTooltipOrigin", "nzTooltipVisible", "nzTooltipMouseEnterDelay", "nzTooltipMouseLeaveDelay", "nzTooltipOverlayClassName", "nzTooltipOverlayStyle", "nzTooltipArrowPointAtCenter", "cdkConnectedOverlayPush", "nzTooltipColor"], outputs: ["nzTooltipVisibleChange"], exportAs: ["nzTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6236
6370
|
}
|
|
6237
6371
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapBasemapSwitcherComponent, decorators: [{
|
|
6238
6372
|
type: Component,
|
|
6239
|
-
args: [{ selector: 'geo-map-basemap-switcher', standalone: true, imports: [NzToolTipModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'geo-map-basemap-switcher-host' }, template: "<button\n type=\"button\"\n class=\"geo-map-basemap-switcher__trigger\"\n [nz-tooltip]=\"tooltipText()\"\n nzTooltipPlacement=\"left\"\n [attr.aria-label]=\"tooltipText()\"\n (click)=\"toggle()\"\n>\n @if (next(); as option) {\n @if (option.previewUrl; as url) {\n <img class=\"geo-map-basemap-switcher__preview\" [src]=\"url\" alt=\"\" />\n } @else {\n <span\n class=\"geo-map-basemap-switcher__preview geo-map-basemap-switcher__preview--empty\"\n aria-hidden=\"true\"\n ></span>\n }\n } @else {\n <span\n class=\"geo-map-basemap-switcher__preview geo-map-basemap-switcher__preview--empty\"\n aria-hidden=\"true\"\n ></span>\n }\n <span class=\"geo-map-basemap-switcher__veil\" aria-hidden=\"true\"></span>\n <span class=\"geo-map-basemap-switcher__content\">\n <span class=\"geo-map-basemap-switcher__icon\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12 4.2 3 8.7l9 4.5 9-4.5-9-4.5Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M3 15.3 12 19.8l9-4.5\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </span>\n <span class=\"geo-map-basemap-switcher__caption\">{{ label() }}</span>\n </span>\n</button>\n", styles: [".geo-map-basemap-switcher-host{display:block}.geo-map-basemap-switcher__trigger{position:relative;display:block;width:
|
|
6373
|
+
args: [{ selector: 'geo-map-basemap-switcher', standalone: true, imports: [NzToolTipModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'geo-map-basemap-switcher-host' }, template: "<button\n type=\"button\"\n class=\"geo-map-basemap-switcher__trigger\"\n [nz-tooltip]=\"tooltipText()\"\n nzTooltipPlacement=\"left\"\n [attr.aria-label]=\"tooltipText()\"\n (click)=\"toggle()\"\n>\n @if (next(); as option) {\n @if (option.previewUrl; as url) {\n <img class=\"geo-map-basemap-switcher__preview\" [src]=\"url\" alt=\"\" />\n } @else {\n <span\n class=\"geo-map-basemap-switcher__preview geo-map-basemap-switcher__preview--empty\"\n aria-hidden=\"true\"\n ></span>\n }\n } @else {\n <span\n class=\"geo-map-basemap-switcher__preview geo-map-basemap-switcher__preview--empty\"\n aria-hidden=\"true\"\n ></span>\n }\n <span class=\"geo-map-basemap-switcher__veil\" aria-hidden=\"true\"></span>\n <span class=\"geo-map-basemap-switcher__content\">\n <span class=\"geo-map-basemap-switcher__icon\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12 4.2 3 8.7l9 4.5 9-4.5-9-4.5Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M3 15.3 12 19.8l9-4.5\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </span>\n <span class=\"geo-map-basemap-switcher__caption\">{{ label() }}</span>\n </span>\n</button>\n", styles: [".geo-map-basemap-switcher-host{display:block}.geo-map-basemap-switcher__trigger{position:relative;display:block;width:90px;height:90px;padding:0;overflow:hidden;border:3px solid var(--geo-color-neutral-white, #fff);border-radius:var(--geo-radius-2xl);background:var(--geo-color-neutral-800);box-shadow:var(--geo-shadow-md);cursor:pointer;transition:box-shadow .15s ease,transform .15s ease}.geo-map-basemap-switcher__trigger:hover{box-shadow:var(--geo-shadow-lg, var(--geo-shadow-md));transform:translateY(-1px)}.geo-map-basemap-switcher__trigger:focus-visible{outline:2px solid var(--geo-color-primary-default);outline-offset:2px}.geo-map-basemap-switcher__preview{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;pointer-events:none}.geo-map-basemap-switcher__preview--empty{background:linear-gradient(145deg,var(--geo-color-neutral-600),var(--geo-color-neutral-800))}.geo-map-basemap-switcher__veil{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,transparent 40%,color-mix(in srgb,var(--geo-color-neutral-900) 55%,transparent) 100%)}.geo-map-basemap-switcher__content{position:absolute;inset:0;z-index:1;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-end;gap:4px;padding:0 8px 8px;color:var(--geo-color-neutral-white, #fff);pointer-events:none}.geo-map-basemap-switcher__icon{display:inline-flex;width:20px;height:20px;color:inherit;filter:drop-shadow(0 1px 2px color-mix(in srgb,var(--geo-color-neutral-900) 45%,transparent))}.geo-map-basemap-switcher__icon svg{width:100%;height:100%}.geo-map-basemap-switcher__caption{max-width:100%;font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-semibold);line-height:1.2;text-align:left;white-space:nowrap;text-shadow:0 1px 2px color-mix(in srgb,var(--geo-color-neutral-900) 55%,transparent)}\n"] }]
|
|
6240
6374
|
}] });
|
|
6241
6375
|
|
|
6242
6376
|
/**
|
|
@@ -6676,7 +6810,7 @@ class GeoMapOpacityComponent {
|
|
|
6676
6810
|
return this.layerOptions()[0]?.id ?? null;
|
|
6677
6811
|
}
|
|
6678
6812
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapOpacityComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6679
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapOpacityComponent, isStandalone: true, selector: "geo-map-opacity", inputs: { controller: { classPropertyName: "controller", publicName: "controller", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, layerId: { classPropertyName: "layerId", publicName: "layerId", isSignal: true, isRequired: false, transformFunction: null }, opacity: { classPropertyName: "opacity", publicName: "opacity", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, applyToFirstLayer: { classPropertyName: "applyToFirstLayer", publicName: "applyToFirstLayer", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { layerId: "layerIdChange", opacity: "opacityChange" }, host: { classAttribute: "geo-map-opacity-host" }, ngImport: i0, template: "@if (variant() === 'compact') {\n <button\n type=\"button\"\n class=\"geo-map-opacity__trigger\"\n nz-dropdown\n nzTrigger=\"click\"\n nzPlacement=\"bottomLeft\"\n nzOverlayClassName=\"geo-map-opacity-overlay\"\n [nzDropdownMenu]=\"menu\"\n [nzVisible]=\"open()\"\n (nzVisibleChange)=\"onVisible($event)\"\n [nz-tooltip]=\"title()\"\n nzTooltipPlacement=\"left\"\n [attr.aria-label]=\"title()\"\n [disabled]=\"!controller()\"\n >\n <geo-icon type=\"bg-colors\" size=\"
|
|
6813
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapOpacityComponent, isStandalone: true, selector: "geo-map-opacity", inputs: { controller: { classPropertyName: "controller", publicName: "controller", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, layerId: { classPropertyName: "layerId", publicName: "layerId", isSignal: true, isRequired: false, transformFunction: null }, opacity: { classPropertyName: "opacity", publicName: "opacity", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, applyToFirstLayer: { classPropertyName: "applyToFirstLayer", publicName: "applyToFirstLayer", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { layerId: "layerIdChange", opacity: "opacityChange" }, host: { classAttribute: "geo-map-opacity-host" }, ngImport: i0, template: "@if (variant() === 'compact') {\n <button\n type=\"button\"\n class=\"geo-map-opacity__trigger\"\n nz-dropdown\n nzTrigger=\"click\"\n nzPlacement=\"bottomLeft\"\n nzOverlayClassName=\"geo-map-opacity-overlay\"\n [nzDropdownMenu]=\"menu\"\n [nzVisible]=\"open()\"\n (nzVisibleChange)=\"onVisible($event)\"\n [nz-tooltip]=\"title()\"\n nzTooltipPlacement=\"left\"\n [attr.aria-label]=\"title()\"\n [disabled]=\"!controller()\"\n >\n <geo-icon type=\"bg-colors\" size=\"md\" />\n </button>\n\n <nz-dropdown-menu #menu=\"nzDropdownMenu\">\n <div class=\"geo-map-opacity__panel geo-map-opacity__panel--popup\">\n <div class=\"geo-map-opacity__title\">{{ title() }}</div>\n @if (layerOptions().length > 1) {\n <ul class=\"geo-map-opacity__layers\">\n @for (layer of layerOptions(); track layer.id) {\n <li>\n <button\n type=\"button\"\n class=\"geo-map-opacity__layer\"\n [class.geo-map-opacity__layer--active]=\"\n layer.id === (layerId() || layerOptions()[0].id)\n \"\n (click)=\"selectLayer(layer.id)\"\n >\n {{ layer.title }}\n </button>\n </li>\n }\n </ul>\n } @else if (layerOptions().length === 1) {\n <div class=\"geo-map-opacity__layer-name\">\n {{ layerOptions()[0].title }}\n </div>\n } @else {\n <div class=\"geo-map-opacity__empty\">Ch\u01B0a c\u00F3 l\u1EDBp \u0111\u1EC3 ch\u1EC9nh.</div>\n }\n\n <div class=\"geo-map-opacity__slider\">\n <geo-slider [(value)]=\"opacity\" [min]=\"0\" [max]=\"100\" [step]=\"1\" />\n <span class=\"geo-map-opacity__value\">{{ opacity() }}%</span>\n </div>\n </div>\n </nz-dropdown-menu>\n} @else {\n <div class=\"geo-map-opacity__panel\">\n <div class=\"geo-map-opacity__title\">{{ title() }}</div>\n @if (layerOptions().length > 1) {\n <ul class=\"geo-map-opacity__layers\">\n @for (layer of layerOptions(); track layer.id) {\n <li>\n <button\n type=\"button\"\n class=\"geo-map-opacity__layer\"\n [class.geo-map-opacity__layer--active]=\"\n layer.id === (layerId() || layerOptions()[0].id)\n \"\n (click)=\"selectLayer(layer.id)\"\n >\n {{ layer.title }}\n </button>\n </li>\n }\n </ul>\n } @else if (layerOptions().length === 1) {\n <div class=\"geo-map-opacity__layer-name\">{{ layerOptions()[0].title }}</div>\n } @else {\n <div class=\"geo-map-opacity__empty\">Ch\u01B0a c\u00F3 l\u1EDBp \u0111\u1EC3 ch\u1EC9nh.</div>\n }\n\n <div class=\"geo-map-opacity__slider\">\n <geo-slider [(value)]=\"opacity\" [min]=\"0\" [max]=\"100\" [step]=\"1\" />\n <span class=\"geo-map-opacity__value\">{{ opacity() }}%</span>\n </div>\n </div>\n}\n", styles: ["@charset \"UTF-8\";.geo-map-opacity-host{display:block}.geo-map-opacity__trigger{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:40px;min-height:40px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:48px;min-height:48px;padding:0}.geo-map-opacity__trigger:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-opacity__trigger:active:not(:disabled){transform:scale(.98)}.geo-map-opacity__trigger:disabled{opacity:.45;cursor:not-allowed}.geo-map-opacity__trigger--active,.geo-map-opacity__trigger--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-opacity__trigger--icon-only{width:40px;padding:0}.geo-map-opacity-overlay .ant-dropdown-menu{padding:0;border:0;background:transparent;box-shadow:none}.geo-map-opacity__panel{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);min-width:220px;padding:10px 12px}.geo-map-opacity__panel--popup{box-shadow:var(--geo-shadow-md)}.geo-map-opacity__title{margin-bottom:8px;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-900)}.geo-map-opacity__layers{display:flex;flex-direction:column;gap:4px;margin:0 0 10px;padding:0;list-style:none}.geo-map-opacity__layer{width:100%;padding:6px 8px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-800);font:inherit;font-size:var(--geo-font-size-body-small);text-align:left;cursor:pointer}.geo-map-opacity__layer:hover{background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-opacity__layer--active{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default);font-weight:var(--geo-font-weight-semibold)}.geo-map-opacity__layer-name,.geo-map-opacity__empty{margin-bottom:8px;font-size:var(--geo-font-size-caption);color:var(--geo-color-neutral-600)}.geo-map-opacity__slider{display:flex;align-items:center;gap:10px}.geo-map-opacity__slider geo-slider{flex:1;min-width:0}.geo-map-opacity__value{flex-shrink:0;min-width:40px;font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-700);text-align:right}\n"], dependencies: [{ kind: "ngmodule", type: NzDropDownModule }, { kind: "directive", type: i2$6.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i2$6.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "ngmodule", type: NzToolTipModule }, { kind: "directive", type: i1$2.NzTooltipDirective, selector: "[nz-tooltip]", inputs: ["nzTooltipTitle", "nzTooltipTitleContext", "nz-tooltip", "nzTooltipTrigger", "nzTooltipPlacement", "nzTooltipOrigin", "nzTooltipVisible", "nzTooltipMouseEnterDelay", "nzTooltipMouseLeaveDelay", "nzTooltipOverlayClassName", "nzTooltipOverlayStyle", "nzTooltipArrowPointAtCenter", "cdkConnectedOverlayPush", "nzTooltipColor"], outputs: ["nzTooltipVisibleChange"], exportAs: ["nzTooltip"] }, { kind: "component", type: GeoIconComponent, selector: "geo-icon", inputs: ["type", "theme", "spin", "size", "color"] }, { kind: "component", type: GeoSliderComponent, selector: "geo-slider", inputs: ["value", "min", "max", "step", "disabled", "tipFormatter"], outputs: ["valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6680
6814
|
}
|
|
6681
6815
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapOpacityComponent, decorators: [{
|
|
6682
6816
|
type: Component,
|
|
@@ -6685,7 +6819,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
6685
6819
|
NzToolTipModule,
|
|
6686
6820
|
GeoIconComponent,
|
|
6687
6821
|
GeoSliderComponent,
|
|
6688
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'geo-map-opacity-host' }, template: "@if (variant() === 'compact') {\n <button\n type=\"button\"\n class=\"geo-map-opacity__trigger\"\n nz-dropdown\n nzTrigger=\"click\"\n nzPlacement=\"bottomLeft\"\n nzOverlayClassName=\"geo-map-opacity-overlay\"\n [nzDropdownMenu]=\"menu\"\n [nzVisible]=\"open()\"\n (nzVisibleChange)=\"onVisible($event)\"\n [nz-tooltip]=\"title()\"\n nzTooltipPlacement=\"left\"\n [attr.aria-label]=\"title()\"\n [disabled]=\"!controller()\"\n >\n <geo-icon type=\"bg-colors\" size=\"
|
|
6822
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'geo-map-opacity-host' }, template: "@if (variant() === 'compact') {\n <button\n type=\"button\"\n class=\"geo-map-opacity__trigger\"\n nz-dropdown\n nzTrigger=\"click\"\n nzPlacement=\"bottomLeft\"\n nzOverlayClassName=\"geo-map-opacity-overlay\"\n [nzDropdownMenu]=\"menu\"\n [nzVisible]=\"open()\"\n (nzVisibleChange)=\"onVisible($event)\"\n [nz-tooltip]=\"title()\"\n nzTooltipPlacement=\"left\"\n [attr.aria-label]=\"title()\"\n [disabled]=\"!controller()\"\n >\n <geo-icon type=\"bg-colors\" size=\"md\" />\n </button>\n\n <nz-dropdown-menu #menu=\"nzDropdownMenu\">\n <div class=\"geo-map-opacity__panel geo-map-opacity__panel--popup\">\n <div class=\"geo-map-opacity__title\">{{ title() }}</div>\n @if (layerOptions().length > 1) {\n <ul class=\"geo-map-opacity__layers\">\n @for (layer of layerOptions(); track layer.id) {\n <li>\n <button\n type=\"button\"\n class=\"geo-map-opacity__layer\"\n [class.geo-map-opacity__layer--active]=\"\n layer.id === (layerId() || layerOptions()[0].id)\n \"\n (click)=\"selectLayer(layer.id)\"\n >\n {{ layer.title }}\n </button>\n </li>\n }\n </ul>\n } @else if (layerOptions().length === 1) {\n <div class=\"geo-map-opacity__layer-name\">\n {{ layerOptions()[0].title }}\n </div>\n } @else {\n <div class=\"geo-map-opacity__empty\">Ch\u01B0a c\u00F3 l\u1EDBp \u0111\u1EC3 ch\u1EC9nh.</div>\n }\n\n <div class=\"geo-map-opacity__slider\">\n <geo-slider [(value)]=\"opacity\" [min]=\"0\" [max]=\"100\" [step]=\"1\" />\n <span class=\"geo-map-opacity__value\">{{ opacity() }}%</span>\n </div>\n </div>\n </nz-dropdown-menu>\n} @else {\n <div class=\"geo-map-opacity__panel\">\n <div class=\"geo-map-opacity__title\">{{ title() }}</div>\n @if (layerOptions().length > 1) {\n <ul class=\"geo-map-opacity__layers\">\n @for (layer of layerOptions(); track layer.id) {\n <li>\n <button\n type=\"button\"\n class=\"geo-map-opacity__layer\"\n [class.geo-map-opacity__layer--active]=\"\n layer.id === (layerId() || layerOptions()[0].id)\n \"\n (click)=\"selectLayer(layer.id)\"\n >\n {{ layer.title }}\n </button>\n </li>\n }\n </ul>\n } @else if (layerOptions().length === 1) {\n <div class=\"geo-map-opacity__layer-name\">{{ layerOptions()[0].title }}</div>\n } @else {\n <div class=\"geo-map-opacity__empty\">Ch\u01B0a c\u00F3 l\u1EDBp \u0111\u1EC3 ch\u1EC9nh.</div>\n }\n\n <div class=\"geo-map-opacity__slider\">\n <geo-slider [(value)]=\"opacity\" [min]=\"0\" [max]=\"100\" [step]=\"1\" />\n <span class=\"geo-map-opacity__value\">{{ opacity() }}%</span>\n </div>\n </div>\n}\n", styles: ["@charset \"UTF-8\";.geo-map-opacity-host{display:block}.geo-map-opacity__trigger{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:40px;min-height:40px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:48px;min-height:48px;padding:0}.geo-map-opacity__trigger:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-opacity__trigger:active:not(:disabled){transform:scale(.98)}.geo-map-opacity__trigger:disabled{opacity:.45;cursor:not-allowed}.geo-map-opacity__trigger--active,.geo-map-opacity__trigger--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-opacity__trigger--icon-only{width:40px;padding:0}.geo-map-opacity-overlay .ant-dropdown-menu{padding:0;border:0;background:transparent;box-shadow:none}.geo-map-opacity__panel{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);min-width:220px;padding:10px 12px}.geo-map-opacity__panel--popup{box-shadow:var(--geo-shadow-md)}.geo-map-opacity__title{margin-bottom:8px;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-900)}.geo-map-opacity__layers{display:flex;flex-direction:column;gap:4px;margin:0 0 10px;padding:0;list-style:none}.geo-map-opacity__layer{width:100%;padding:6px 8px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-800);font:inherit;font-size:var(--geo-font-size-body-small);text-align:left;cursor:pointer}.geo-map-opacity__layer:hover{background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-opacity__layer--active{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default);font-weight:var(--geo-font-weight-semibold)}.geo-map-opacity__layer-name,.geo-map-opacity__empty{margin-bottom:8px;font-size:var(--geo-font-size-caption);color:var(--geo-color-neutral-600)}.geo-map-opacity__slider{display:flex;align-items:center;gap:10px}.geo-map-opacity__slider geo-slider{flex:1;min-width:0}.geo-map-opacity__value{flex-shrink:0;min-width:40px;font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-700);text-align:right}\n"] }]
|
|
6689
6823
|
}], ctorParameters: () => [] });
|
|
6690
6824
|
|
|
6691
6825
|
/**
|
|
@@ -6698,8 +6832,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
6698
6832
|
class GeoMapLegendComponent {
|
|
6699
6833
|
title = input('Chú giải');
|
|
6700
6834
|
items = input([]);
|
|
6701
|
-
/** True khi danh mục chú giải không tải được (`ERR_MAP_LEGEND_CATALOG_MISSING`). */
|
|
6702
|
-
catalogMissing = input(false);
|
|
6703
6835
|
open = model(false);
|
|
6704
6836
|
closed = output();
|
|
6705
6837
|
onClose() {
|
|
@@ -6707,14 +6839,14 @@ class GeoMapLegendComponent {
|
|
|
6707
6839
|
this.closed.emit();
|
|
6708
6840
|
}
|
|
6709
6841
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapLegendComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6710
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapLegendComponent, isStandalone: true, selector: "geo-map-legend", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null },
|
|
6842
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapLegendComponent, isStandalone: true, selector: "geo-map-legend", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", closed: "closed" }, host: { properties: { "class.geo-map-legend-host--open": "open()" }, classAttribute: "geo-map-legend-host" }, ngImport: i0, template: "@if (open()) {\n <aside class=\"geo-map-legend\" role=\"dialog\" [attr.aria-label]=\"title()\">\n <header class=\"geo-map-legend__header\">\n <h3 class=\"geo-map-legend__title\">{{ title() }}</h3>\n <button\n type=\"button\"\n class=\"geo-map-legend__close\"\n aria-label=\"\u0110\u00F3ng ch\u00FA gi\u1EA3i\"\n (click)=\"onClose()\"\n >\n <geo-icon type=\"close\" size=\"sm\" />\n </button>\n </header>\n\n <ul class=\"geo-map-legend__list\">\n @for (item of items(); track item.code || item.label) {\n <li class=\"geo-map-legend__item\">\n @if (item.swatchUrl) {\n <img class=\"geo-map-legend__swatch\" [src]=\"item.swatchUrl\" alt=\"\" />\n } @else {\n <span\n class=\"geo-map-legend__swatch geo-map-legend__swatch--color\"\n [style.background]=\"item.color || 'var(--geo-color-neutral-300)'\"\n ></span>\n }\n <span class=\"geo-map-legend__text\">\n @if (item.code) {\n <span class=\"geo-map-legend__code\">{{ item.code }}</span>\n }\n <span class=\"geo-map-legend__label\">{{ item.label }}</span>\n </span>\n </li>\n } @empty {\n <li class=\"geo-map-legend__empty\">Ch\u01B0a c\u00F3 m\u1EE5c ch\u00FA gi\u1EA3i.</li>\n }\n </ul>\n </aside>\n}\n", styles: ["@charset \"UTF-8\";.geo-map-legend-host{display:none;max-width:min(320px,100%)}.geo-map-legend-host--open{display:block}.geo-map-legend{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);display:flex;flex-direction:column;width:min(320px,100vw - 32px);max-height:min(640px,100dvh - 100px);overflow:hidden}.geo-map-legend__header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:14px 16px 10px;border-bottom:1px solid var(--geo-color-neutral-100)}.geo-map-legend__title{margin:0;text-transform:uppercase;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-semibold);letter-spacing:.02em;color:var(--geo-color-neutral-900)}.geo-map-legend__close{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:40px;min-height:40px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:32px;min-width:32px;min-height:32px;padding:0}.geo-map-legend__close:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-legend__close:active:not(:disabled){transform:scale(.98)}.geo-map-legend__close:disabled{opacity:.45;cursor:not-allowed}.geo-map-legend__close--active,.geo-map-legend__close--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-legend__close--icon-only{width:40px;padding:0}.geo-map-legend__list{margin:0;padding:8px 12px 12px;list-style:none;overflow:auto}.geo-map-legend__item{display:flex;align-items:center;gap:10px;padding:6px 4px}.geo-map-legend__swatch{flex-shrink:0;width:20px;height:20px;border-radius:var(--geo-radius-sm);border:1px solid var(--geo-color-neutral-200);object-fit:cover}.geo-map-legend__swatch--color{display:inline-block}.geo-map-legend__text{display:flex;flex-direction:column;gap:1px;min-width:0}.geo-map-legend__code{font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-500)}.geo-map-legend__label{font-size:var(--geo-font-size-body-small);color:var(--geo-color-neutral-800)}.geo-map-legend__empty{padding:8px 4px;font-size:var(--geo-font-size-caption);color:var(--geo-color-neutral-500)}\n"], dependencies: [{ kind: "component", type: GeoIconComponent, selector: "geo-icon", inputs: ["type", "theme", "spin", "size", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6711
6843
|
}
|
|
6712
6844
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapLegendComponent, decorators: [{
|
|
6713
6845
|
type: Component,
|
|
6714
6846
|
args: [{ selector: 'geo-map-legend', standalone: true, imports: [GeoIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
6715
6847
|
class: 'geo-map-legend-host',
|
|
6716
6848
|
'[class.geo-map-legend-host--open]': 'open()',
|
|
6717
|
-
}, template: "@if (open()) {\n <aside class=\"geo-map-legend\" role=\"dialog\" [attr.aria-label]=\"title()\">\n <header class=\"geo-map-legend__header\">\n <h3 class=\"geo-map-legend__title\">{{ title() }}</h3>\n <button\n type=\"button\"\n class=\"geo-map-legend__close\"\n aria-label=\"\u0110\u00F3ng ch\u00FA gi\u1EA3i\"\n (click)=\"onClose()\"\n >\n <geo-icon type=\"close\" size=\"sm\" />\n </button>\n </header>\n\n
|
|
6849
|
+
}, template: "@if (open()) {\n <aside class=\"geo-map-legend\" role=\"dialog\" [attr.aria-label]=\"title()\">\n <header class=\"geo-map-legend__header\">\n <h3 class=\"geo-map-legend__title\">{{ title() }}</h3>\n <button\n type=\"button\"\n class=\"geo-map-legend__close\"\n aria-label=\"\u0110\u00F3ng ch\u00FA gi\u1EA3i\"\n (click)=\"onClose()\"\n >\n <geo-icon type=\"close\" size=\"sm\" />\n </button>\n </header>\n\n <ul class=\"geo-map-legend__list\">\n @for (item of items(); track item.code || item.label) {\n <li class=\"geo-map-legend__item\">\n @if (item.swatchUrl) {\n <img class=\"geo-map-legend__swatch\" [src]=\"item.swatchUrl\" alt=\"\" />\n } @else {\n <span\n class=\"geo-map-legend__swatch geo-map-legend__swatch--color\"\n [style.background]=\"item.color || 'var(--geo-color-neutral-300)'\"\n ></span>\n }\n <span class=\"geo-map-legend__text\">\n @if (item.code) {\n <span class=\"geo-map-legend__code\">{{ item.code }}</span>\n }\n <span class=\"geo-map-legend__label\">{{ item.label }}</span>\n </span>\n </li>\n } @empty {\n <li class=\"geo-map-legend__empty\">Ch\u01B0a c\u00F3 m\u1EE5c ch\u00FA gi\u1EA3i.</li>\n }\n </ul>\n </aside>\n}\n", styles: ["@charset \"UTF-8\";.geo-map-legend-host{display:none;max-width:min(320px,100%)}.geo-map-legend-host--open{display:block}.geo-map-legend{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);display:flex;flex-direction:column;width:min(320px,100vw - 32px);max-height:min(640px,100dvh - 100px);overflow:hidden}.geo-map-legend__header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:14px 16px 10px;border-bottom:1px solid var(--geo-color-neutral-100)}.geo-map-legend__title{margin:0;text-transform:uppercase;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-semibold);letter-spacing:.02em;color:var(--geo-color-neutral-900)}.geo-map-legend__close{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:40px;min-height:40px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:32px;min-width:32px;min-height:32px;padding:0}.geo-map-legend__close:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-legend__close:active:not(:disabled){transform:scale(.98)}.geo-map-legend__close:disabled{opacity:.45;cursor:not-allowed}.geo-map-legend__close--active,.geo-map-legend__close--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-legend__close--icon-only{width:40px;padding:0}.geo-map-legend__list{margin:0;padding:8px 12px 12px;list-style:none;overflow:auto}.geo-map-legend__item{display:flex;align-items:center;gap:10px;padding:6px 4px}.geo-map-legend__swatch{flex-shrink:0;width:20px;height:20px;border-radius:var(--geo-radius-sm);border:1px solid var(--geo-color-neutral-200);object-fit:cover}.geo-map-legend__swatch--color{display:inline-block}.geo-map-legend__text{display:flex;flex-direction:column;gap:1px;min-width:0}.geo-map-legend__code{font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-500)}.geo-map-legend__label{font-size:var(--geo-font-size-body-small);color:var(--geo-color-neutral-800)}.geo-map-legend__empty{padding:8px 4px;font-size:var(--geo-font-size-caption);color:var(--geo-color-neutral-500)}\n"] }]
|
|
6718
6850
|
}] });
|
|
6719
6851
|
|
|
6720
6852
|
const GROUP_META = {
|
|
@@ -6899,14 +7031,14 @@ class GeoMapLayersDrawerComponent {
|
|
|
6899
7031
|
this.closed.emit();
|
|
6900
7032
|
}
|
|
6901
7033
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapLayersDrawerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6902
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapLayersDrawerComponent, isStandalone: true, selector: "geo-map-layers-drawer", inputs: { controller: { classPropertyName: "controller", publicName: "controller", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, legendItems: { classPropertyName: "legendItems", publicName: "legendItems", isSignal: true, isRequired: false, transformFunction: null }, showOpacity: { classPropertyName: "showOpacity", publicName: "showOpacity", isSignal: true, isRequired: false, transformFunction: null }, showLegend: { classPropertyName: "showLegend", publicName: "showLegend", isSignal: true, isRequired: false, transformFunction: null }, layers: { classPropertyName: "layers", publicName: "layers", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", layers: "layersChange", closed: "closed" }, host: { properties: { "class.geo-map-layers-drawer-host--open": "open()" }, classAttribute: "geo-map-layers-drawer-host" }, ngImport: i0, template: "@if (open()) {\n <aside class=\"geo-map-layers-drawer\" role=\"dialog\" aria-label=\"L\u1EDBp b\u1EA3n \u0111\u1ED3\">\n <header class=\"geo-map-layers-drawer__header\">\n <h3 class=\"geo-map-layers-drawer__title\">{{ title() }}</h3>\n <button\n type=\"button\"\n class=\"geo-map-layers-drawer__close\"\n aria-label=\"\u0110\u00F3ng l\u1EDBp b\u1EA3n \u0111\u1ED3\"\n (click)=\"onClose()\"\n >\n <geo-icon type=\"close\" size=\"sm\" />\n </button>\n </header>\n\n <div class=\"geo-map-layers-drawer__body\">\n <geo-map-layer-panel\n [embedded]=\"true\"\n [controller]=\"controller()\"\n [(layers)]=\"layers\"\n />\n </div>\n </aside>\n}\n", styles: ["@charset \"UTF-8\";.geo-map-layers-drawer-host{display:none}.geo-map-layers-drawer-host--open{display:block}.geo-map-layers-drawer{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);display:flex;flex-direction:column;width:min(400px,100vw - 32px);max-height:min(640px,100dvh - 100px);overflow:hidden}.geo-map-layers-drawer__header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:14px 16px 10px;border-bottom:1px solid var(--geo-color-neutral-100)}.geo-map-layers-drawer__title{margin:0;text-transform:uppercase;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-semibold);letter-spacing:.02em;color:var(--geo-color-neutral-900)}.geo-map-layers-drawer__close{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:32px;min-width:32px;min-height:32px;padding:0;color:var(--geo-color-neutral-500)}.geo-map-layers-drawer__close:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-layers-drawer__close:active:not(:disabled){transform:scale(.98)}.geo-map-layers-drawer__close:disabled{opacity:.45;cursor:not-allowed}.geo-map-layers-drawer__close--active,.geo-map-layers-drawer__close--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-layers-drawer__close--icon-only{width:
|
|
7034
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapLayersDrawerComponent, isStandalone: true, selector: "geo-map-layers-drawer", inputs: { controller: { classPropertyName: "controller", publicName: "controller", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, legendItems: { classPropertyName: "legendItems", publicName: "legendItems", isSignal: true, isRequired: false, transformFunction: null }, showOpacity: { classPropertyName: "showOpacity", publicName: "showOpacity", isSignal: true, isRequired: false, transformFunction: null }, showLegend: { classPropertyName: "showLegend", publicName: "showLegend", isSignal: true, isRequired: false, transformFunction: null }, layers: { classPropertyName: "layers", publicName: "layers", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", layers: "layersChange", closed: "closed" }, host: { properties: { "class.geo-map-layers-drawer-host--open": "open()" }, classAttribute: "geo-map-layers-drawer-host" }, ngImport: i0, template: "@if (open()) {\n <aside class=\"geo-map-layers-drawer\" role=\"dialog\" aria-label=\"L\u1EDBp b\u1EA3n \u0111\u1ED3\">\n <header class=\"geo-map-layers-drawer__header\">\n <h3 class=\"geo-map-layers-drawer__title\">{{ title() }}</h3>\n <button\n type=\"button\"\n class=\"geo-map-layers-drawer__close\"\n aria-label=\"\u0110\u00F3ng l\u1EDBp b\u1EA3n \u0111\u1ED3\"\n (click)=\"onClose()\"\n >\n <geo-icon type=\"close\" size=\"sm\" />\n </button>\n </header>\n\n <div class=\"geo-map-layers-drawer__body\">\n <geo-map-layer-panel\n [embedded]=\"true\"\n [controller]=\"controller()\"\n [(layers)]=\"layers\"\n />\n </div>\n </aside>\n}\n", styles: ["@charset \"UTF-8\";.geo-map-layers-drawer-host{display:none}.geo-map-layers-drawer-host--open{display:block}.geo-map-layers-drawer{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);display:flex;flex-direction:column;width:min(400px,100vw - 32px);max-height:min(640px,100dvh - 100px);overflow:hidden}.geo-map-layers-drawer__header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:14px 16px 10px;border-bottom:1px solid var(--geo-color-neutral-100)}.geo-map-layers-drawer__title{margin:0;text-transform:uppercase;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-semibold);letter-spacing:.02em;color:var(--geo-color-neutral-900)}.geo-map-layers-drawer__close{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:40px;min-height:40px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:32px;min-width:32px;min-height:32px;padding:0;color:var(--geo-color-neutral-500)}.geo-map-layers-drawer__close:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-layers-drawer__close:active:not(:disabled){transform:scale(.98)}.geo-map-layers-drawer__close:disabled{opacity:.45;cursor:not-allowed}.geo-map-layers-drawer__close--active,.geo-map-layers-drawer__close--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-layers-drawer__close--icon-only{width:40px;padding:0}.geo-map-layers-drawer__body{padding:4px 16px 14px;overflow:auto}\n"], dependencies: [{ kind: "component", type: GeoIconComponent, selector: "geo-icon", inputs: ["type", "theme", "spin", "size", "color"] }, { kind: "component", type: GeoMapLayerPanelComponent, selector: "geo-map-layer-panel", inputs: ["controller", "title", "embedded", "layers"], outputs: ["layersChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6903
7035
|
}
|
|
6904
7036
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapLayersDrawerComponent, decorators: [{
|
|
6905
7037
|
type: Component,
|
|
6906
7038
|
args: [{ selector: 'geo-map-layers-drawer', standalone: true, imports: [GeoIconComponent, GeoMapLayerPanelComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
6907
7039
|
class: 'geo-map-layers-drawer-host',
|
|
6908
7040
|
'[class.geo-map-layers-drawer-host--open]': 'open()',
|
|
6909
|
-
}, template: "@if (open()) {\n <aside class=\"geo-map-layers-drawer\" role=\"dialog\" aria-label=\"L\u1EDBp b\u1EA3n \u0111\u1ED3\">\n <header class=\"geo-map-layers-drawer__header\">\n <h3 class=\"geo-map-layers-drawer__title\">{{ title() }}</h3>\n <button\n type=\"button\"\n class=\"geo-map-layers-drawer__close\"\n aria-label=\"\u0110\u00F3ng l\u1EDBp b\u1EA3n \u0111\u1ED3\"\n (click)=\"onClose()\"\n >\n <geo-icon type=\"close\" size=\"sm\" />\n </button>\n </header>\n\n <div class=\"geo-map-layers-drawer__body\">\n <geo-map-layer-panel\n [embedded]=\"true\"\n [controller]=\"controller()\"\n [(layers)]=\"layers\"\n />\n </div>\n </aside>\n}\n", styles: ["@charset \"UTF-8\";.geo-map-layers-drawer-host{display:none}.geo-map-layers-drawer-host--open{display:block}.geo-map-layers-drawer{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);display:flex;flex-direction:column;width:min(400px,100vw - 32px);max-height:min(640px,100dvh - 100px);overflow:hidden}.geo-map-layers-drawer__header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:14px 16px 10px;border-bottom:1px solid var(--geo-color-neutral-100)}.geo-map-layers-drawer__title{margin:0;text-transform:uppercase;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-semibold);letter-spacing:.02em;color:var(--geo-color-neutral-900)}.geo-map-layers-drawer__close{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:32px;min-width:32px;min-height:32px;padding:0;color:var(--geo-color-neutral-500)}.geo-map-layers-drawer__close:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-layers-drawer__close:active:not(:disabled){transform:scale(.98)}.geo-map-layers-drawer__close:disabled{opacity:.45;cursor:not-allowed}.geo-map-layers-drawer__close--active,.geo-map-layers-drawer__close--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-layers-drawer__close--icon-only{width:
|
|
7041
|
+
}, template: "@if (open()) {\n <aside class=\"geo-map-layers-drawer\" role=\"dialog\" aria-label=\"L\u1EDBp b\u1EA3n \u0111\u1ED3\">\n <header class=\"geo-map-layers-drawer__header\">\n <h3 class=\"geo-map-layers-drawer__title\">{{ title() }}</h3>\n <button\n type=\"button\"\n class=\"geo-map-layers-drawer__close\"\n aria-label=\"\u0110\u00F3ng l\u1EDBp b\u1EA3n \u0111\u1ED3\"\n (click)=\"onClose()\"\n >\n <geo-icon type=\"close\" size=\"sm\" />\n </button>\n </header>\n\n <div class=\"geo-map-layers-drawer__body\">\n <geo-map-layer-panel\n [embedded]=\"true\"\n [controller]=\"controller()\"\n [(layers)]=\"layers\"\n />\n </div>\n </aside>\n}\n", styles: ["@charset \"UTF-8\";.geo-map-layers-drawer-host{display:none}.geo-map-layers-drawer-host--open{display:block}.geo-map-layers-drawer{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);display:flex;flex-direction:column;width:min(400px,100vw - 32px);max-height:min(640px,100dvh - 100px);overflow:hidden}.geo-map-layers-drawer__header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:14px 16px 10px;border-bottom:1px solid var(--geo-color-neutral-100)}.geo-map-layers-drawer__title{margin:0;text-transform:uppercase;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-semibold);letter-spacing:.02em;color:var(--geo-color-neutral-900)}.geo-map-layers-drawer__close{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:40px;min-height:40px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:32px;min-width:32px;min-height:32px;padding:0;color:var(--geo-color-neutral-500)}.geo-map-layers-drawer__close:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-layers-drawer__close:active:not(:disabled){transform:scale(.98)}.geo-map-layers-drawer__close:disabled{opacity:.45;cursor:not-allowed}.geo-map-layers-drawer__close--active,.geo-map-layers-drawer__close--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-layers-drawer__close--icon-only{width:40px;padding:0}.geo-map-layers-drawer__body{padding:4px 16px 14px;overflow:auto}\n"] }]
|
|
6910
7042
|
}] });
|
|
6911
7043
|
|
|
6912
7044
|
/**
|
|
@@ -7067,8 +7199,6 @@ class GeoMapAdminFilterComponent {
|
|
|
7067
7199
|
open = model(false);
|
|
7068
7200
|
title = input('Đơn vị hành chính');
|
|
7069
7201
|
nodes = input([]);
|
|
7070
|
-
/** `single` — chọn đúng 1 xã/phường (BR-06-03); `multi` — checkbox nhiều cấp (mặc định). */
|
|
7071
|
-
selectionMode = input('multi');
|
|
7072
7202
|
checkedKeys = model([]);
|
|
7073
7203
|
expandedKeys = model([]);
|
|
7074
7204
|
apply = output();
|
|
@@ -7095,14 +7225,14 @@ class GeoMapAdminFilterComponent {
|
|
|
7095
7225
|
this.closed.emit();
|
|
7096
7226
|
}
|
|
7097
7227
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapAdminFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7098
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapAdminFilterComponent, isStandalone: true, selector: "geo-map-admin-filter", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, nodes: { classPropertyName: "nodes", publicName: "nodes", isSignal: true, isRequired: false, transformFunction: null },
|
|
7228
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapAdminFilterComponent, isStandalone: true, selector: "geo-map-admin-filter", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, nodes: { classPropertyName: "nodes", publicName: "nodes", isSignal: true, isRequired: false, transformFunction: null }, checkedKeys: { classPropertyName: "checkedKeys", publicName: "checkedKeys", isSignal: true, isRequired: false, transformFunction: null }, expandedKeys: { classPropertyName: "expandedKeys", publicName: "expandedKeys", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", checkedKeys: "checkedKeysChange", expandedKeys: "expandedKeysChange", apply: "apply", reset: "reset", fitProvince: "fitProvince", closed: "closed", selectionChange: "selectionChange" }, host: { properties: { "class.geo-map-admin-filter-host--open": "open()" }, classAttribute: "geo-map-admin-filter-host" }, ngImport: i0, template: "@if (open()) {\n <section class=\"geo-map-admin-filter\" aria-label=\"L\u1ECDc \u0111\u01A1n v\u1ECB h\u00E0nh ch\u00EDnh\">\n <header class=\"geo-map-admin-filter__header\">\n <h3 class=\"geo-map-admin-filter__title\">{{ title() }}</h3>\n <button\n type=\"button\"\n class=\"geo-map-admin-filter__icon-btn\"\n aria-label=\"\u0110\u00F3ng b\u1ED9 l\u1ECDc\"\n (click)=\"close()\"\n >\n <geo-icon type=\"close\" size=\"sm\" />\n </button>\n </header>\n\n <div class=\"geo-map-admin-filter__body\">\n <geo-tree\n [nodes]=\"nodes()\"\n [checkable]=\"true\"\n [checkedKeys]=\"checkedKeys()\"\n [expandedKeys]=\"expandedKeys()\"\n (checkedKeysChange)=\"onCheckedChange($event)\"\n (expandedKeysChange)=\"expandedKeys.set($event)\"\n />\n </div>\n\n <footer class=\"geo-map-admin-filter__footer\">\n <geo-button appearance=\"secondary\" (clicked)=\"onFitProvince()\">\n Xem to\u00E0n t\u1EC9nh\n </geo-button>\n <div class=\"geo-map-admin-filter__footer-end\">\n <geo-button appearance=\"secondary\" (clicked)=\"onReset()\">\n \u0110\u1EB7t l\u1EA1i\n </geo-button>\n <geo-button appearance=\"primary\" (clicked)=\"onApply()\">\n \u00C1p d\u1EE5ng\n </geo-button>\n </div>\n </footer>\n </section>\n}\n", styles: ["@charset \"UTF-8\";.geo-map-admin-filter-host{display:none}.geo-map-admin-filter-host--open{display:block}.geo-map-admin-filter{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);width:min(320px,100vw - 32px);max-height:min(520px,75vh);display:flex;flex-direction:column;overflow:hidden}.geo-map-admin-filter__header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px;border-bottom:1px solid var(--geo-color-neutral-100)}.geo-map-admin-filter__title{margin:0;font-size:var(--geo-font-size-body);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-900)}.geo-map-admin-filter__icon-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:40px;min-height:40px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:32px;min-width:32px;min-height:32px;padding:0}.geo-map-admin-filter__icon-btn:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-admin-filter__icon-btn:active:not(:disabled){transform:scale(.98)}.geo-map-admin-filter__icon-btn:disabled{opacity:.45;cursor:not-allowed}.geo-map-admin-filter__icon-btn--active,.geo-map-admin-filter__icon-btn--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-admin-filter__icon-btn--icon-only{width:40px;padding:0}.geo-map-admin-filter__body{padding:8px 10px;overflow:auto;flex:1;min-height:160px}.geo-map-admin-filter__footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px;border-top:1px solid var(--geo-color-neutral-100)}.geo-map-admin-filter__footer-end{display:flex;gap:8px;margin-left:auto}\n"], dependencies: [{ 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: GeoIconComponent, selector: "geo-icon", inputs: ["type", "theme", "spin", "size", "color"] }, { kind: "component", type: GeoTreeComponent, selector: "geo-tree", inputs: ["nodes", "checkable", "checkedKeys", "expandedKeys", "showLine", "blockNode"], outputs: ["checkedKeysChange", "expandedKeysChange", "nodeClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
7099
7229
|
}
|
|
7100
7230
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapAdminFilterComponent, decorators: [{
|
|
7101
7231
|
type: Component,
|
|
7102
7232
|
args: [{ selector: 'geo-map-admin-filter', standalone: true, imports: [GeoButtonComponent, GeoIconComponent, GeoTreeComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
7103
7233
|
class: 'geo-map-admin-filter-host',
|
|
7104
7234
|
'[class.geo-map-admin-filter-host--open]': 'open()',
|
|
7105
|
-
}, template: "@if (open()) {\n <section class=\"geo-map-admin-filter\" aria-label=\"L\u1ECDc \u0111\u01A1n v\u1ECB h\u00E0nh ch\u00EDnh\">\n <header class=\"geo-map-admin-filter__header\">\n <h3 class=\"geo-map-admin-filter__title\">{{ title() }}</h3>\n <button\n type=\"button\"\n class=\"geo-map-admin-filter__icon-btn\"\n aria-label=\"\u0110\u00F3ng b\u1ED9 l\u1ECDc\"\n (click)=\"close()\"\n >\n <geo-icon type=\"close\" size=\"sm\" />\n </button>\n </header>\n\n <div class=\"geo-map-admin-filter__body\">\n <geo-tree\n [nodes]=\"nodes()\"\n [
|
|
7235
|
+
}, template: "@if (open()) {\n <section class=\"geo-map-admin-filter\" aria-label=\"L\u1ECDc \u0111\u01A1n v\u1ECB h\u00E0nh ch\u00EDnh\">\n <header class=\"geo-map-admin-filter__header\">\n <h3 class=\"geo-map-admin-filter__title\">{{ title() }}</h3>\n <button\n type=\"button\"\n class=\"geo-map-admin-filter__icon-btn\"\n aria-label=\"\u0110\u00F3ng b\u1ED9 l\u1ECDc\"\n (click)=\"close()\"\n >\n <geo-icon type=\"close\" size=\"sm\" />\n </button>\n </header>\n\n <div class=\"geo-map-admin-filter__body\">\n <geo-tree\n [nodes]=\"nodes()\"\n [checkable]=\"true\"\n [checkedKeys]=\"checkedKeys()\"\n [expandedKeys]=\"expandedKeys()\"\n (checkedKeysChange)=\"onCheckedChange($event)\"\n (expandedKeysChange)=\"expandedKeys.set($event)\"\n />\n </div>\n\n <footer class=\"geo-map-admin-filter__footer\">\n <geo-button appearance=\"secondary\" (clicked)=\"onFitProvince()\">\n Xem to\u00E0n t\u1EC9nh\n </geo-button>\n <div class=\"geo-map-admin-filter__footer-end\">\n <geo-button appearance=\"secondary\" (clicked)=\"onReset()\">\n \u0110\u1EB7t l\u1EA1i\n </geo-button>\n <geo-button appearance=\"primary\" (clicked)=\"onApply()\">\n \u00C1p d\u1EE5ng\n </geo-button>\n </div>\n </footer>\n </section>\n}\n", styles: ["@charset \"UTF-8\";.geo-map-admin-filter-host{display:none}.geo-map-admin-filter-host--open{display:block}.geo-map-admin-filter{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);width:min(320px,100vw - 32px);max-height:min(520px,75vh);display:flex;flex-direction:column;overflow:hidden}.geo-map-admin-filter__header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px;border-bottom:1px solid var(--geo-color-neutral-100)}.geo-map-admin-filter__title{margin:0;font-size:var(--geo-font-size-body);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-900)}.geo-map-admin-filter__icon-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:40px;min-height:40px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:32px;min-width:32px;min-height:32px;padding:0}.geo-map-admin-filter__icon-btn:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-admin-filter__icon-btn:active:not(:disabled){transform:scale(.98)}.geo-map-admin-filter__icon-btn:disabled{opacity:.45;cursor:not-allowed}.geo-map-admin-filter__icon-btn--active,.geo-map-admin-filter__icon-btn--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-admin-filter__icon-btn--icon-only{width:40px;padding:0}.geo-map-admin-filter__body{padding:8px 10px;overflow:auto;flex:1;min-height:160px}.geo-map-admin-filter__footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px;border-top:1px solid var(--geo-color-neutral-100)}.geo-map-admin-filter__footer-end{display:flex;gap:8px;margin-left:auto}\n"] }]
|
|
7106
7236
|
}] });
|
|
7107
7237
|
|
|
7108
7238
|
/**
|
|
@@ -7246,14 +7376,14 @@ class GeoMapParcelPopupComponent {
|
|
|
7246
7376
|
}
|
|
7247
7377
|
}
|
|
7248
7378
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapParcelPopupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7249
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapParcelPopupComponent, isStandalone: true, selector: "geo-map-parcel-popup", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, parcel: { classPropertyName: "parcel", publicName: "parcel", isSignal: true, isRequired: false, transformFunction: null }, audience: { classPropertyName: "audience", publicName: "audience", isSignal: true, isRequired: false, transformFunction: null }, showExport: { classPropertyName: "showExport", publicName: "showExport", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", closed: "closed", back: "back", exportClick: "exportClick", diagramClick: "diagramClick" }, host: { properties: { "class.geo-map-parcel-popup-host--open": "open()" }, classAttribute: "geo-map-parcel-popup-host" }, ngImport: i0, template: "@if (open() && parcel(); as data) {\n <aside class=\"geo-map-parcel-popup\" role=\"dialog\" aria-label=\"Th\u00F4ng tin th\u1EEDa \u0111\u1EA5t\">\n <header class=\"geo-map-parcel-popup__header\">\n <button\n type=\"button\"\n class=\"geo-map-parcel-popup__back\"\n aria-label=\"Quay l\u1EA1i\"\n (click)=\"onBack()\"\n >\n <geo-icon type=\"arrow-left\" size=\"sm\" />\n </button>\n <h3 class=\"geo-map-parcel-popup__title\">{{ title() }}</h3>\n <button\n type=\"button\"\n class=\"geo-map-parcel-popup__close\"\n aria-label=\"\u0110\u00F3ng chi ti\u1EBFt\"\n (click)=\"close()\"\n >\n <geo-icon type=\"close\" size=\"sm\" />\n </button>\n </header>\n\n <div class=\"geo-map-parcel-popup__body\">\n @for (section of sections(); track section.id) {\n <section class=\"geo-map-parcel-popup__section\">\n <div class=\"geo-map-parcel-popup__section-head\">\n <h4 class=\"geo-map-parcel-popup__section-title\">\n <geo-icon [type]=\"section.icon\" size=\"sm\" />\n <span>{{ section.title }}</span>\n </h4>\n @if (section.diagram) {\n <button\n type=\"button\"\n class=\"geo-map-parcel-popup__link\"\n (click)=\"onDiagramDetail()\"\n >\n Chi ti\u1EBFt\n </button>\n }\n </div>\n\n @if (section.rows?.length) {\n <dl class=\"geo-map-parcel-popup__rows\">\n @for (row of section.rows; track row.label) {\n <div class=\"geo-map-parcel-popup__row\">\n <dt>{{ row.label }}:</dt>\n <dd>{{ row.value }}</dd>\n </div>\n }\n </dl>\n } @else if (section.value) {\n <p class=\"geo-map-parcel-popup__value\">{{ section.value }}</p>\n }\n\n @if (section.diagram) {\n <div class=\"geo-map-parcel-popup__diagram\">\n @if (data.diagramUrl) {\n <img\n class=\"geo-map-parcel-popup__diagram-img\"\n [src]=\"data.diagramUrl\"\n alt=\"S\u01A1 \u0111\u1ED3 th\u1EEDa \u0111\u1EA5t\"\n />\n } @else {\n <div class=\"geo-map-parcel-popup__diagram-placeholder\" aria-hidden=\"true\">\n <geo-icon type=\"picture\" size=\"lg\" />\n <span>S\u01A1 \u0111\u1ED3 th\u1EEDa \u0111\u1EA5t</span>\n </div>\n }\n </div>\n }\n </section>\n }\n </div>\n </aside>\n}\n", styles: ["@charset \"UTF-8\";.geo-map-parcel-popup-host{display:none}.geo-map-parcel-popup-host--open{display:block}.geo-map-parcel-popup{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);display:flex;flex-direction:column;width:min(400px,100vw - 32px);max-height:min(640px,100dvh - 100px);overflow:hidden;--geo-parcel-content-indent: 24px}.geo-map-parcel-popup__header{display:grid;grid-template-columns:36px 1fr 36px;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid var(--geo-color-neutral-100)}.geo-map-parcel-popup__title{margin:0;text-align:center;text-transform:uppercase;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-semibold);letter-spacing:.02em;color:var(--geo-color-neutral-900)}.geo-map-parcel-popup__back,.geo-map-parcel-popup__close{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:
|
|
7379
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapParcelPopupComponent, isStandalone: true, selector: "geo-map-parcel-popup", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, parcel: { classPropertyName: "parcel", publicName: "parcel", isSignal: true, isRequired: false, transformFunction: null }, audience: { classPropertyName: "audience", publicName: "audience", isSignal: true, isRequired: false, transformFunction: null }, showExport: { classPropertyName: "showExport", publicName: "showExport", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", closed: "closed", back: "back", exportClick: "exportClick", diagramClick: "diagramClick" }, host: { properties: { "class.geo-map-parcel-popup-host--open": "open()" }, classAttribute: "geo-map-parcel-popup-host" }, ngImport: i0, template: "@if (open() && parcel(); as data) {\n <aside class=\"geo-map-parcel-popup\" role=\"dialog\" aria-label=\"Th\u00F4ng tin th\u1EEDa \u0111\u1EA5t\">\n <header class=\"geo-map-parcel-popup__header\">\n <button\n type=\"button\"\n class=\"geo-map-parcel-popup__back\"\n aria-label=\"Quay l\u1EA1i\"\n (click)=\"onBack()\"\n >\n <geo-icon type=\"arrow-left\" size=\"sm\" />\n </button>\n <h3 class=\"geo-map-parcel-popup__title\">{{ title() }}</h3>\n <button\n type=\"button\"\n class=\"geo-map-parcel-popup__close\"\n aria-label=\"\u0110\u00F3ng chi ti\u1EBFt\"\n (click)=\"close()\"\n >\n <geo-icon type=\"close\" size=\"sm\" />\n </button>\n </header>\n\n <div class=\"geo-map-parcel-popup__body\">\n @for (section of sections(); track section.id) {\n <section class=\"geo-map-parcel-popup__section\">\n <div class=\"geo-map-parcel-popup__section-head\">\n <h4 class=\"geo-map-parcel-popup__section-title\">\n <geo-icon [type]=\"section.icon\" size=\"sm\" />\n <span>{{ section.title }}</span>\n </h4>\n @if (section.diagram) {\n <button\n type=\"button\"\n class=\"geo-map-parcel-popup__link\"\n (click)=\"onDiagramDetail()\"\n >\n Chi ti\u1EBFt\n </button>\n }\n </div>\n\n @if (section.rows?.length) {\n <dl class=\"geo-map-parcel-popup__rows\">\n @for (row of section.rows; track row.label) {\n <div class=\"geo-map-parcel-popup__row\">\n <dt>{{ row.label }}:</dt>\n <dd>{{ row.value }}</dd>\n </div>\n }\n </dl>\n } @else if (section.value) {\n <p class=\"geo-map-parcel-popup__value\">{{ section.value }}</p>\n }\n\n @if (section.diagram) {\n <div class=\"geo-map-parcel-popup__diagram\">\n @if (data.diagramUrl) {\n <img\n class=\"geo-map-parcel-popup__diagram-img\"\n [src]=\"data.diagramUrl\"\n alt=\"S\u01A1 \u0111\u1ED3 th\u1EEDa \u0111\u1EA5t\"\n />\n } @else {\n <div class=\"geo-map-parcel-popup__diagram-placeholder\" aria-hidden=\"true\">\n <geo-icon type=\"picture\" size=\"lg\" />\n <span>S\u01A1 \u0111\u1ED3 th\u1EEDa \u0111\u1EA5t</span>\n </div>\n }\n </div>\n }\n </section>\n }\n </div>\n </aside>\n}\n", styles: ["@charset \"UTF-8\";.geo-map-parcel-popup-host{display:none}.geo-map-parcel-popup-host--open{display:block}.geo-map-parcel-popup{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);display:flex;flex-direction:column;width:min(400px,100vw - 32px);max-height:min(640px,100dvh - 100px);overflow:hidden;--geo-parcel-content-indent: 24px}.geo-map-parcel-popup__header{display:grid;grid-template-columns:36px 1fr 36px;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid var(--geo-color-neutral-100)}.geo-map-parcel-popup__title{margin:0;text-align:center;text-transform:uppercase;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-semibold);letter-spacing:.02em;color:var(--geo-color-neutral-900)}.geo-map-parcel-popup__back,.geo-map-parcel-popup__close{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:40px;min-height:40px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:36px;min-width:36px;min-height:36px;padding:0}.geo-map-parcel-popup__back:hover:not(:disabled),.geo-map-parcel-popup__close:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-parcel-popup__back:active:not(:disabled),.geo-map-parcel-popup__close:active:not(:disabled){transform:scale(.98)}.geo-map-parcel-popup__back:disabled,.geo-map-parcel-popup__close:disabled{opacity:.45;cursor:not-allowed}.geo-map-parcel-popup__back--active,.geo-map-parcel-popup__back--checked,.geo-map-parcel-popup__close--active,.geo-map-parcel-popup__close--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-parcel-popup__back--icon-only,.geo-map-parcel-popup__close--icon-only{width:40px;padding:0}.geo-map-parcel-popup__back{border-radius:var(--geo-radius);background:var(--geo-color-primary-surface-light);color:var(--geo-color-primary-default)}.geo-map-parcel-popup__back:hover:not(:disabled){background:var(--geo-color-primary-soft-strong);color:var(--geo-color-primary-default)}.geo-map-parcel-popup__close{color:var(--geo-color-neutral-500)}.geo-map-parcel-popup__body{display:flex;flex-direction:column;gap:16px;padding:14px 16px 18px;overflow:auto}.geo-map-parcel-popup__section{display:flex;flex-direction:column;gap:8px}.geo-map-parcel-popup__section-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.geo-map-parcel-popup__section-title{display:inline-flex;align-items:center;gap:8px;margin:0;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-900);line-height:1.3}.geo-map-parcel-popup__section-title geo-icon,.geo-map-parcel-popup__section-title .geo-icon-host{flex-shrink:0;width:16px;color:var(--geo-color-neutral-900)}.geo-map-parcel-popup__link{flex-shrink:0;padding:0;border:0;background:transparent;cursor:pointer;font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);color:var(--geo-color-primary-default)}.geo-map-parcel-popup__link:hover{text-decoration:underline}.geo-map-parcel-popup__link:focus-visible{outline:2px solid var(--geo-color-primary-default);outline-offset:2px;border-radius:2px}.geo-map-parcel-popup__rows{margin:0;padding-left:var(--geo-parcel-content-indent);display:grid;grid-template-columns:max-content minmax(0,1fr);column-gap:8px;row-gap:6px}.geo-map-parcel-popup__row{display:contents}.geo-map-parcel-popup__row dt{margin:0;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-regular, 400);color:var(--geo-color-neutral-600)}.geo-map-parcel-popup__row dd{margin:0;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);color:var(--geo-color-neutral-900);word-break:break-word}.geo-map-parcel-popup__value{margin:0;padding-left:var(--geo-parcel-content-indent);font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);color:var(--geo-color-neutral-900);line-height:1.45}.geo-map-parcel-popup__diagram{margin-left:var(--geo-parcel-content-indent);overflow:hidden;border-radius:var(--geo-radius);border:1px solid var(--geo-color-border-default);background:var(--geo-color-neutral-50)}.geo-map-parcel-popup__diagram-img{display:block;width:100%;height:auto;max-height:160px;object-fit:cover}.geo-map-parcel-popup__diagram-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:120px;padding:16px;color:var(--geo-color-neutral-400);font-size:var(--geo-font-size-caption);background:linear-gradient(135deg,color-mix(in srgb,var(--geo-color-primary-soft) 80%,transparent) 0%,transparent 45%),repeating-linear-gradient(-12deg,transparent,transparent 10px,color-mix(in srgb,var(--geo-color-neutral-200) 55%,transparent) 10px,color-mix(in srgb,var(--geo-color-neutral-200) 55%,transparent) 11px)}\n"], dependencies: [{ kind: "component", type: GeoIconComponent, selector: "geo-icon", inputs: ["type", "theme", "spin", "size", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
7250
7380
|
}
|
|
7251
7381
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapParcelPopupComponent, decorators: [{
|
|
7252
7382
|
type: Component,
|
|
7253
7383
|
args: [{ selector: 'geo-map-parcel-popup', standalone: true, imports: [GeoIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
7254
7384
|
class: 'geo-map-parcel-popup-host',
|
|
7255
7385
|
'[class.geo-map-parcel-popup-host--open]': 'open()',
|
|
7256
|
-
}, template: "@if (open() && parcel(); as data) {\n <aside class=\"geo-map-parcel-popup\" role=\"dialog\" aria-label=\"Th\u00F4ng tin th\u1EEDa \u0111\u1EA5t\">\n <header class=\"geo-map-parcel-popup__header\">\n <button\n type=\"button\"\n class=\"geo-map-parcel-popup__back\"\n aria-label=\"Quay l\u1EA1i\"\n (click)=\"onBack()\"\n >\n <geo-icon type=\"arrow-left\" size=\"sm\" />\n </button>\n <h3 class=\"geo-map-parcel-popup__title\">{{ title() }}</h3>\n <button\n type=\"button\"\n class=\"geo-map-parcel-popup__close\"\n aria-label=\"\u0110\u00F3ng chi ti\u1EBFt\"\n (click)=\"close()\"\n >\n <geo-icon type=\"close\" size=\"sm\" />\n </button>\n </header>\n\n <div class=\"geo-map-parcel-popup__body\">\n @for (section of sections(); track section.id) {\n <section class=\"geo-map-parcel-popup__section\">\n <div class=\"geo-map-parcel-popup__section-head\">\n <h4 class=\"geo-map-parcel-popup__section-title\">\n <geo-icon [type]=\"section.icon\" size=\"sm\" />\n <span>{{ section.title }}</span>\n </h4>\n @if (section.diagram) {\n <button\n type=\"button\"\n class=\"geo-map-parcel-popup__link\"\n (click)=\"onDiagramDetail()\"\n >\n Chi ti\u1EBFt\n </button>\n }\n </div>\n\n @if (section.rows?.length) {\n <dl class=\"geo-map-parcel-popup__rows\">\n @for (row of section.rows; track row.label) {\n <div class=\"geo-map-parcel-popup__row\">\n <dt>{{ row.label }}:</dt>\n <dd>{{ row.value }}</dd>\n </div>\n }\n </dl>\n } @else if (section.value) {\n <p class=\"geo-map-parcel-popup__value\">{{ section.value }}</p>\n }\n\n @if (section.diagram) {\n <div class=\"geo-map-parcel-popup__diagram\">\n @if (data.diagramUrl) {\n <img\n class=\"geo-map-parcel-popup__diagram-img\"\n [src]=\"data.diagramUrl\"\n alt=\"S\u01A1 \u0111\u1ED3 th\u1EEDa \u0111\u1EA5t\"\n />\n } @else {\n <div class=\"geo-map-parcel-popup__diagram-placeholder\" aria-hidden=\"true\">\n <geo-icon type=\"picture\" size=\"lg\" />\n <span>S\u01A1 \u0111\u1ED3 th\u1EEDa \u0111\u1EA5t</span>\n </div>\n }\n </div>\n }\n </section>\n }\n </div>\n </aside>\n}\n", styles: ["@charset \"UTF-8\";.geo-map-parcel-popup-host{display:none}.geo-map-parcel-popup-host--open{display:block}.geo-map-parcel-popup{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);display:flex;flex-direction:column;width:min(400px,100vw - 32px);max-height:min(640px,100dvh - 100px);overflow:hidden;--geo-parcel-content-indent: 24px}.geo-map-parcel-popup__header{display:grid;grid-template-columns:36px 1fr 36px;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid var(--geo-color-neutral-100)}.geo-map-parcel-popup__title{margin:0;text-align:center;text-transform:uppercase;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-semibold);letter-spacing:.02em;color:var(--geo-color-neutral-900)}.geo-map-parcel-popup__back,.geo-map-parcel-popup__close{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:
|
|
7386
|
+
}, template: "@if (open() && parcel(); as data) {\n <aside class=\"geo-map-parcel-popup\" role=\"dialog\" aria-label=\"Th\u00F4ng tin th\u1EEDa \u0111\u1EA5t\">\n <header class=\"geo-map-parcel-popup__header\">\n <button\n type=\"button\"\n class=\"geo-map-parcel-popup__back\"\n aria-label=\"Quay l\u1EA1i\"\n (click)=\"onBack()\"\n >\n <geo-icon type=\"arrow-left\" size=\"sm\" />\n </button>\n <h3 class=\"geo-map-parcel-popup__title\">{{ title() }}</h3>\n <button\n type=\"button\"\n class=\"geo-map-parcel-popup__close\"\n aria-label=\"\u0110\u00F3ng chi ti\u1EBFt\"\n (click)=\"close()\"\n >\n <geo-icon type=\"close\" size=\"sm\" />\n </button>\n </header>\n\n <div class=\"geo-map-parcel-popup__body\">\n @for (section of sections(); track section.id) {\n <section class=\"geo-map-parcel-popup__section\">\n <div class=\"geo-map-parcel-popup__section-head\">\n <h4 class=\"geo-map-parcel-popup__section-title\">\n <geo-icon [type]=\"section.icon\" size=\"sm\" />\n <span>{{ section.title }}</span>\n </h4>\n @if (section.diagram) {\n <button\n type=\"button\"\n class=\"geo-map-parcel-popup__link\"\n (click)=\"onDiagramDetail()\"\n >\n Chi ti\u1EBFt\n </button>\n }\n </div>\n\n @if (section.rows?.length) {\n <dl class=\"geo-map-parcel-popup__rows\">\n @for (row of section.rows; track row.label) {\n <div class=\"geo-map-parcel-popup__row\">\n <dt>{{ row.label }}:</dt>\n <dd>{{ row.value }}</dd>\n </div>\n }\n </dl>\n } @else if (section.value) {\n <p class=\"geo-map-parcel-popup__value\">{{ section.value }}</p>\n }\n\n @if (section.diagram) {\n <div class=\"geo-map-parcel-popup__diagram\">\n @if (data.diagramUrl) {\n <img\n class=\"geo-map-parcel-popup__diagram-img\"\n [src]=\"data.diagramUrl\"\n alt=\"S\u01A1 \u0111\u1ED3 th\u1EEDa \u0111\u1EA5t\"\n />\n } @else {\n <div class=\"geo-map-parcel-popup__diagram-placeholder\" aria-hidden=\"true\">\n <geo-icon type=\"picture\" size=\"lg\" />\n <span>S\u01A1 \u0111\u1ED3 th\u1EEDa \u0111\u1EA5t</span>\n </div>\n }\n </div>\n }\n </section>\n }\n </div>\n </aside>\n}\n", styles: ["@charset \"UTF-8\";.geo-map-parcel-popup-host{display:none}.geo-map-parcel-popup-host--open{display:block}.geo-map-parcel-popup{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);display:flex;flex-direction:column;width:min(400px,100vw - 32px);max-height:min(640px,100dvh - 100px);overflow:hidden;--geo-parcel-content-indent: 24px}.geo-map-parcel-popup__header{display:grid;grid-template-columns:36px 1fr 36px;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid var(--geo-color-neutral-100)}.geo-map-parcel-popup__title{margin:0;text-align:center;text-transform:uppercase;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-semibold);letter-spacing:.02em;color:var(--geo-color-neutral-900)}.geo-map-parcel-popup__back,.geo-map-parcel-popup__close{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:40px;min-height:40px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:36px;min-width:36px;min-height:36px;padding:0}.geo-map-parcel-popup__back:hover:not(:disabled),.geo-map-parcel-popup__close:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-parcel-popup__back:active:not(:disabled),.geo-map-parcel-popup__close:active:not(:disabled){transform:scale(.98)}.geo-map-parcel-popup__back:disabled,.geo-map-parcel-popup__close:disabled{opacity:.45;cursor:not-allowed}.geo-map-parcel-popup__back--active,.geo-map-parcel-popup__back--checked,.geo-map-parcel-popup__close--active,.geo-map-parcel-popup__close--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-parcel-popup__back--icon-only,.geo-map-parcel-popup__close--icon-only{width:40px;padding:0}.geo-map-parcel-popup__back{border-radius:var(--geo-radius);background:var(--geo-color-primary-surface-light);color:var(--geo-color-primary-default)}.geo-map-parcel-popup__back:hover:not(:disabled){background:var(--geo-color-primary-soft-strong);color:var(--geo-color-primary-default)}.geo-map-parcel-popup__close{color:var(--geo-color-neutral-500)}.geo-map-parcel-popup__body{display:flex;flex-direction:column;gap:16px;padding:14px 16px 18px;overflow:auto}.geo-map-parcel-popup__section{display:flex;flex-direction:column;gap:8px}.geo-map-parcel-popup__section-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.geo-map-parcel-popup__section-title{display:inline-flex;align-items:center;gap:8px;margin:0;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-900);line-height:1.3}.geo-map-parcel-popup__section-title geo-icon,.geo-map-parcel-popup__section-title .geo-icon-host{flex-shrink:0;width:16px;color:var(--geo-color-neutral-900)}.geo-map-parcel-popup__link{flex-shrink:0;padding:0;border:0;background:transparent;cursor:pointer;font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);color:var(--geo-color-primary-default)}.geo-map-parcel-popup__link:hover{text-decoration:underline}.geo-map-parcel-popup__link:focus-visible{outline:2px solid var(--geo-color-primary-default);outline-offset:2px;border-radius:2px}.geo-map-parcel-popup__rows{margin:0;padding-left:var(--geo-parcel-content-indent);display:grid;grid-template-columns:max-content minmax(0,1fr);column-gap:8px;row-gap:6px}.geo-map-parcel-popup__row{display:contents}.geo-map-parcel-popup__row dt{margin:0;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-regular, 400);color:var(--geo-color-neutral-600)}.geo-map-parcel-popup__row dd{margin:0;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);color:var(--geo-color-neutral-900);word-break:break-word}.geo-map-parcel-popup__value{margin:0;padding-left:var(--geo-parcel-content-indent);font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);color:var(--geo-color-neutral-900);line-height:1.45}.geo-map-parcel-popup__diagram{margin-left:var(--geo-parcel-content-indent);overflow:hidden;border-radius:var(--geo-radius);border:1px solid var(--geo-color-border-default);background:var(--geo-color-neutral-50)}.geo-map-parcel-popup__diagram-img{display:block;width:100%;height:auto;max-height:160px;object-fit:cover}.geo-map-parcel-popup__diagram-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:120px;padding:16px;color:var(--geo-color-neutral-400);font-size:var(--geo-font-size-caption);background:linear-gradient(135deg,color-mix(in srgb,var(--geo-color-primary-soft) 80%,transparent) 0%,transparent 45%),repeating-linear-gradient(-12deg,transparent,transparent 10px,color-mix(in srgb,var(--geo-color-neutral-200) 55%,transparent) 10px,color-mix(in srgb,var(--geo-color-neutral-200) 55%,transparent) 11px)}\n"] }]
|
|
7257
7387
|
}] });
|
|
7258
7388
|
|
|
7259
7389
|
const MODE_TILES = [
|
|
@@ -7414,7 +7544,7 @@ class GeoMapSearchComponent {
|
|
|
7414
7544
|
this.closed.emit();
|
|
7415
7545
|
}
|
|
7416
7546
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapSearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7417
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapSearchComponent, isStandalone: true, selector: "geo-map-search", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, results: { classPropertyName: "results", publicName: "results", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, pageIndex: { classPropertyName: "pageIndex", publicName: "pageIndex", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, total: { classPropertyName: "total", publicName: "total", isSignal: true, isRequired: false, transformFunction: null }, emptyText: { classPropertyName: "emptyText", publicName: "emptyText", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", mode: "modeChange", pageIndex: "pageIndexChange", pageSize: "pageSizeChange", search: "search", reset: "reset", resultSelect: "resultSelect", closed: "closed" }, host: { properties: { "class.geo-map-search-host--open": "open()" }, classAttribute: "geo-map-search-host" }, ngImport: i0, template: "@if (open()) {\n <section class=\"geo-map-search\" aria-label=\"Tra c\u1EE9u th\u00F4ng tin quy ho\u1EA1ch\">\n <header class=\"geo-map-search__header\">\n <h3 class=\"geo-map-search__title\">{{ title() }}</h3>\n <button\n type=\"button\"\n class=\"geo-map-search__icon-btn\"\n aria-label=\"\u0110\u00F3ng tra c\u1EE9u\"\n (click)=\"close()\"\n >\n <geo-icon type=\"close\" size=\"sm\" />\n </button>\n </header>\n\n <div class=\"geo-map-search__body\">\n <div class=\"geo-map-search__modes\" role=\"listbox\" aria-label=\"H\u00ECnh th\u1EE9c tra c\u1EE9u\">\n @for (tile of modeTiles; track tile.id) {\n <button\n type=\"button\"\n class=\"geo-map-search__mode\"\n role=\"option\"\n [class.geo-map-search__mode--active]=\"formOpen() && mode() === tile.id\"\n [attr.aria-selected]=\"formOpen() && mode() === tile.id\"\n (click)=\"selectMode(tile.id)\"\n >\n <span class=\"geo-map-search__mode-icon\" aria-hidden=\"true\">\n <geo-icon [type]=\"tile.icon\" size=\"md\" />\n </span>\n <span class=\"geo-map-search__mode-label\">{{ tile.label }}</span>\n </button>\n }\n </div>\n\n @if (formOpen()) {\n <section class=\"geo-map-search__form\" [attr.aria-label]=\"modeHeading()\">\n <div class=\"geo-map-search__form-head\">\n <h4 class=\"geo-map-search__form-title\">{{ modeHeading() }}</h4>\n <button\n type=\"button\"\n class=\"geo-map-search__icon-btn geo-map-search__icon-btn--sm\"\n aria-label=\"Thu g\u1ECDn form t\u00ECm ki\u1EBFm\"\n (click)=\"collapseForm()\"\n >\n <geo-icon type=\"close\" size=\"sm\" />\n </button>\n </div>\n\n <div\n class=\"geo-map-search__fields\"\n [class.geo-map-search__fields--inline]=\"fieldsInline()\"\n >\n @for (field of fields(); track field.key) {\n <geo-input\n [label]=\"field.label\"\n [placeholder]=\"field.placeholder\"\n [type]=\"field.type ?? 'text'\"\n [ngModel]=\"fieldValue(field.key)\"\n (ngModelChange)=\"setField(field.key, $event)\"\n (enterPressed)=\"submit()\"\n [allowClear]=\"true\"\n [block]=\"true\"\n />\n }\n </div>\n\n <div class=\"geo-map-search__actions\">\n <geo-button\n appearance=\"primary\"\n icon=\"search\"\n [disabled]=\"loading()\"\n (clicked)=\"submit()\"\n >\n T\u00ECm ki\u1EBFm\n </geo-button>\n <geo-button\n appearance=\"secondary\"\n icon=\"reload\"\n (clicked)=\"onReset()\"\n >\n \u0110\u1EB7t l\u1EA1i\n </geo-button>\n </div>\n </section>\n }\n\n @if (formOpen() && (loading() || hasSearched())) {\n <div class=\"geo-map-search__results\" aria-live=\"polite\">\n @if (loading()) {\n <p class=\"geo-map-search__hint\">\u0110ang t\u00ECm ki\u1EBFm\u2026</p>\n } @else if (!results().length) {\n <p class=\"geo-map-search__hint\">{{ emptyText() }}</p>\n } @else {\n <ul class=\"geo-map-search__list\">\n @for (item of results(); track item.id) {\n <li class=\"geo-map-search__result\">\n <div class=\"geo-map-search__result-head\">\n <span class=\"geo-map-search__result-map\">{{ mapLabel(item) }}</span>\n <button\n type=\"button\"\n class=\"geo-map-search__detail-link\"\n (click)=\"selectResult(item)\"\n >\n Chi ti\u1EBFt\n </button>\n </div>\n @if (item.parcel; as parcel) {\n <dl class=\"geo-map-search__result-meta\">\n @if (parcel.ward) {\n <div class=\"geo-map-search__result-row\">\n <dt>X\u00E3:</dt>\n <dd>{{ parcel.ward }}</dd>\n </div>\n }\n @if (parcel.province) {\n <div class=\"geo-map-search__result-row\">\n <dt>T\u1EC9nh:</dt>\n <dd>{{ parcel.province }}</dd>\n </div>\n }\n @if (parcel.area) {\n <div class=\"geo-map-search__result-row\">\n <dt>Di\u1EC7n t\u00EDch:</dt>\n <dd>{{ parcel.area }}</dd>\n </div>\n }\n </dl>\n } @else if (item.subtitle) {\n <p class=\"geo-map-search__result-sub\">{{ item.subtitle }}</p>\n }\n </li>\n }\n </ul>\n\n @if (resolvedTotal() > pageSize()) {\n <geo-pagination\n class=\"geo-map-search__paging\"\n [(pageIndex)]=\"pageIndex\"\n [(pageSize)]=\"pageSize\"\n [total]=\"resolvedTotal()\"\n size=\"small\"\n [simple]=\"true\"\n />\n }\n }\n </div>\n }\n </div>\n </section>\n}\n", styles: ["@charset \"UTF-8\";.geo-map-search-host{display:none}.geo-map-search-host--open{display:block}.geo-map-search{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);width:min(420px,100vw - 32px);max-height:min(640px,82vh);overflow:hidden;display:flex;flex-direction:column}.geo-map-search__header{position:relative;display:flex;align-items:center;justify-content:center;gap:8px;padding:14px 40px 12px;border-bottom:1px solid var(--geo-color-neutral-100)}.geo-map-search__title{margin:0;max-width:100%;text-align:center;text-transform:uppercase;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-semibold);letter-spacing:.02em;line-height:1.35;color:var(--geo-color-neutral-900)}.geo-map-search__header .geo-map-search__icon-btn{position:absolute;top:8px;right:8px}.geo-map-search__icon-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:32px;min-width:32px;min-height:32px;padding:0;color:var(--geo-color-neutral-500)}.geo-map-search__icon-btn:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-search__icon-btn:active:not(:disabled){transform:scale(.98)}.geo-map-search__icon-btn:disabled{opacity:.45;cursor:not-allowed}.geo-map-search__icon-btn--active,.geo-map-search__icon-btn--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-search__icon-btn--icon-only{width:32px;padding:0}.geo-map-search__icon-btn--sm{width:28px;min-width:28px;min-height:28px}.geo-map-search__body{display:flex;flex-direction:column;gap:14px;padding:14px 16px 16px;overflow:auto}.geo-map-search__modes{display:flex;flex-wrap:wrap;justify-content:center;gap:14px 12px}.geo-map-search__mode{display:inline-flex;flex-direction:column;align-items:center;gap:6px;width:104px;padding:0;border:0;background:transparent;cursor:pointer;color:var(--geo-color-primary-default);font:inherit}.geo-map-search__mode:focus-visible{outline:2px solid var(--geo-color-primary-default);outline-offset:2px;border-radius:var(--geo-radius)}.geo-map-search__mode-icon{display:inline-flex;align-items:center;justify-content:center;width:52px;height:52px;border-radius:50%;border:1.5px solid var(--geo-color-primary-default);background:var(--geo-color-primary-soft, var(--geo-color-primary-surface-light));color:var(--geo-color-primary-default);transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease}.geo-map-search__mode:hover .geo-map-search__mode-icon{background:var(--geo-color-primary-soft-hover)}.geo-map-search__mode--active .geo-map-search__mode-icon{background:var(--geo-color-primary-soft-active);box-shadow:inset 0 0 0 1px var(--geo-color-primary-default)}.geo-map-search__mode-label{text-align:center;font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-medium);line-height:1.3;color:var(--geo-color-primary-default)}.geo-map-search__form{display:flex;flex-direction:column;gap:12px;padding-top:4px;border-top:1px solid var(--geo-color-neutral-100)}.geo-map-search__form-head{position:relative;display:flex;align-items:center;justify-content:center;min-height:28px;padding:0 28px}.geo-map-search__form-title{margin:0;text-align:center;text-transform:uppercase;font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-semibold);letter-spacing:.03em;color:var(--geo-color-neutral-900)}.geo-map-search__form-head .geo-map-search__icon-btn{position:absolute;top:50%;right:0;transform:translateY(-50%)}.geo-map-search__fields{display:flex;flex-direction:column;gap:10px}.geo-map-search__fields--inline,.geo-map-search__actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.geo-map-search__actions>geo-button{display:block;min-width:0}.geo-map-search__actions .geo-button{width:100%}.geo-map-search__results{display:flex;flex-direction:column;gap:10px;padding-top:4px;border-top:1px solid var(--geo-color-primary-default)}.geo-map-search__hint{margin:0;font-size:var(--geo-font-size-caption);color:var(--geo-color-neutral-500)}.geo-map-search__list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:10px}.geo-map-search__result{display:flex;flex-direction:column;gap:8px;padding:0}.geo-map-search__result-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.geo-map-search__result-map{font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-900);line-height:1.4}.geo-map-search__detail-link{flex-shrink:0;padding:0;border:0;background:transparent;cursor:pointer;font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);color:var(--geo-color-primary-default);text-decoration:none}.geo-map-search__detail-link:hover{text-decoration:underline}.geo-map-search__detail-link:focus-visible{outline:2px solid var(--geo-color-primary-default);outline-offset:2px;border-radius:2px}.geo-map-search__result-meta{margin:0;display:flex;flex-direction:column;gap:4px}.geo-map-search__result-row{display:grid;grid-template-columns:88px 1fr;gap:8px;align-items:baseline}.geo-map-search__result-row dt{margin:0;font-size:var(--geo-font-size-caption);color:var(--geo-color-neutral-500)}.geo-map-search__result-row dd{margin:0;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-900)}.geo-map-search__result-sub{margin:0;font-size:var(--geo-font-size-caption);color:var(--geo-color-neutral-500)}.geo-map-search__paging{display:flex;justify-content:center;margin-top:2px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { 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: GeoIconComponent, selector: "geo-icon", inputs: ["type", "theme", "spin", "size", "color"] }, { kind: "component", type: GeoInputComponent, selector: "geo-input", inputs: ["label", "placeholder", "type", "disabled", "readonly", "required", "error", "errorMessage", "maxlength", "prefixIcon", "suffixIcon", "allowClear", "block", "width"], outputs: ["valueChange", "enterPressed"] }, { kind: "component", type: GeoPaginationComponent, selector: "geo-pagination", inputs: ["pageIndex", "pageSize", "total", "size", "simple", "hideOnSinglePage", "showSizeChanger", "pageSizeOptions"], outputs: ["pageIndexChange", "pageSizeChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
7547
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapSearchComponent, isStandalone: true, selector: "geo-map-search", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, results: { classPropertyName: "results", publicName: "results", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, pageIndex: { classPropertyName: "pageIndex", publicName: "pageIndex", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, total: { classPropertyName: "total", publicName: "total", isSignal: true, isRequired: false, transformFunction: null }, emptyText: { classPropertyName: "emptyText", publicName: "emptyText", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", mode: "modeChange", pageIndex: "pageIndexChange", pageSize: "pageSizeChange", search: "search", reset: "reset", resultSelect: "resultSelect", closed: "closed" }, host: { properties: { "class.geo-map-search-host--open": "open()" }, classAttribute: "geo-map-search-host" }, ngImport: i0, template: "@if (open()) {\n <section class=\"geo-map-search\" aria-label=\"Tra c\u1EE9u th\u00F4ng tin quy ho\u1EA1ch\">\n <header class=\"geo-map-search__header\">\n <h3 class=\"geo-map-search__title\">{{ title() }}</h3>\n <button\n type=\"button\"\n class=\"geo-map-search__icon-btn\"\n aria-label=\"\u0110\u00F3ng tra c\u1EE9u\"\n (click)=\"close()\"\n >\n <geo-icon type=\"close\" size=\"sm\" />\n </button>\n </header>\n\n <div class=\"geo-map-search__body\">\n <div class=\"geo-map-search__modes\" role=\"listbox\" aria-label=\"H\u00ECnh th\u1EE9c tra c\u1EE9u\">\n @for (tile of modeTiles; track tile.id) {\n <button\n type=\"button\"\n class=\"geo-map-search__mode\"\n role=\"option\"\n [class.geo-map-search__mode--active]=\"formOpen() && mode() === tile.id\"\n [attr.aria-selected]=\"formOpen() && mode() === tile.id\"\n (click)=\"selectMode(tile.id)\"\n >\n <span class=\"geo-map-search__mode-icon\" aria-hidden=\"true\">\n <geo-icon [type]=\"tile.icon\" size=\"md\" />\n </span>\n <span class=\"geo-map-search__mode-label\">{{ tile.label }}</span>\n </button>\n }\n </div>\n\n @if (formOpen()) {\n <section class=\"geo-map-search__form\" [attr.aria-label]=\"modeHeading()\">\n <div class=\"geo-map-search__form-head\">\n <h4 class=\"geo-map-search__form-title\">{{ modeHeading() }}</h4>\n <button\n type=\"button\"\n class=\"geo-map-search__icon-btn geo-map-search__icon-btn--sm\"\n aria-label=\"Thu g\u1ECDn form t\u00ECm ki\u1EBFm\"\n (click)=\"collapseForm()\"\n >\n <geo-icon type=\"close\" size=\"sm\" />\n </button>\n </div>\n\n <div\n class=\"geo-map-search__fields\"\n [class.geo-map-search__fields--inline]=\"fieldsInline()\"\n >\n @for (field of fields(); track field.key) {\n <geo-input\n [label]=\"field.label\"\n [placeholder]=\"field.placeholder\"\n [type]=\"field.type ?? 'text'\"\n [ngModel]=\"fieldValue(field.key)\"\n (ngModelChange)=\"setField(field.key, $event)\"\n (enterPressed)=\"submit()\"\n [allowClear]=\"true\"\n [block]=\"true\"\n />\n }\n </div>\n\n <div class=\"geo-map-search__actions\">\n <geo-button\n appearance=\"primary\"\n icon=\"search\"\n [disabled]=\"loading()\"\n (clicked)=\"submit()\"\n >\n T\u00ECm ki\u1EBFm\n </geo-button>\n <geo-button\n appearance=\"secondary\"\n icon=\"reload\"\n (clicked)=\"onReset()\"\n >\n \u0110\u1EB7t l\u1EA1i\n </geo-button>\n </div>\n </section>\n }\n\n @if (formOpen() && (loading() || hasSearched())) {\n <div class=\"geo-map-search__results\" aria-live=\"polite\">\n @if (loading()) {\n <p class=\"geo-map-search__hint\">\u0110ang t\u00ECm ki\u1EBFm\u2026</p>\n } @else if (!results().length) {\n <p class=\"geo-map-search__hint\">{{ emptyText() }}</p>\n } @else {\n <ul class=\"geo-map-search__list\">\n @for (item of results(); track item.id) {\n <li class=\"geo-map-search__result\">\n <div class=\"geo-map-search__result-head\">\n <span class=\"geo-map-search__result-map\">{{ mapLabel(item) }}</span>\n <button\n type=\"button\"\n class=\"geo-map-search__detail-link\"\n (click)=\"selectResult(item)\"\n >\n Chi ti\u1EBFt\n </button>\n </div>\n @if (item.parcel; as parcel) {\n <dl class=\"geo-map-search__result-meta\">\n @if (parcel.ward) {\n <div class=\"geo-map-search__result-row\">\n <dt>X\u00E3:</dt>\n <dd>{{ parcel.ward }}</dd>\n </div>\n }\n @if (parcel.province) {\n <div class=\"geo-map-search__result-row\">\n <dt>T\u1EC9nh:</dt>\n <dd>{{ parcel.province }}</dd>\n </div>\n }\n @if (parcel.area) {\n <div class=\"geo-map-search__result-row\">\n <dt>Di\u1EC7n t\u00EDch:</dt>\n <dd>{{ parcel.area }}</dd>\n </div>\n }\n </dl>\n } @else if (item.subtitle) {\n <p class=\"geo-map-search__result-sub\">{{ item.subtitle }}</p>\n }\n </li>\n }\n </ul>\n\n @if (resolvedTotal() > pageSize()) {\n <geo-pagination\n class=\"geo-map-search__paging\"\n [(pageIndex)]=\"pageIndex\"\n [(pageSize)]=\"pageSize\"\n [total]=\"resolvedTotal()\"\n size=\"small\"\n [simple]=\"true\"\n />\n }\n }\n </div>\n }\n </div>\n </section>\n}\n", styles: ["@charset \"UTF-8\";.geo-map-search-host{display:none}.geo-map-search-host--open{display:block}.geo-map-search{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);width:min(420px,100vw - 32px);max-height:min(640px,82vh);overflow:hidden;display:flex;flex-direction:column}.geo-map-search__header{position:relative;display:flex;align-items:center;justify-content:center;gap:8px;padding:14px 40px 12px;border-bottom:1px solid var(--geo-color-neutral-100)}.geo-map-search__title{margin:0;max-width:100%;text-align:center;text-transform:uppercase;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-semibold);letter-spacing:.02em;line-height:1.35;color:var(--geo-color-neutral-900)}.geo-map-search__header .geo-map-search__icon-btn{position:absolute;top:8px;right:8px}.geo-map-search__icon-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:40px;min-height:40px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:32px;min-width:32px;min-height:32px;padding:0;color:var(--geo-color-neutral-500)}.geo-map-search__icon-btn:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-search__icon-btn:active:not(:disabled){transform:scale(.98)}.geo-map-search__icon-btn:disabled{opacity:.45;cursor:not-allowed}.geo-map-search__icon-btn--active,.geo-map-search__icon-btn--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-search__icon-btn--icon-only{width:40px;padding:0}.geo-map-search__icon-btn--sm{width:28px;min-width:28px;min-height:28px}.geo-map-search__body{display:flex;flex-direction:column;gap:14px;padding:14px 16px 16px;overflow:auto}.geo-map-search__modes{display:flex;flex-wrap:wrap;justify-content:center;gap:14px 12px}.geo-map-search__mode{display:inline-flex;flex-direction:column;align-items:center;gap:6px;width:104px;padding:0;border:0;background:transparent;cursor:pointer;color:var(--geo-color-primary-default);font:inherit}.geo-map-search__mode:focus-visible{outline:2px solid var(--geo-color-primary-default);outline-offset:2px;border-radius:var(--geo-radius)}.geo-map-search__mode-icon{display:inline-flex;align-items:center;justify-content:center;width:52px;height:52px;border-radius:50%;border:1.5px solid var(--geo-color-primary-default);background:var(--geo-color-primary-soft, var(--geo-color-primary-surface-light));color:var(--geo-color-primary-default);transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease}.geo-map-search__mode:hover .geo-map-search__mode-icon{background:var(--geo-color-primary-soft-hover)}.geo-map-search__mode--active .geo-map-search__mode-icon{background:var(--geo-color-primary-soft-active);box-shadow:inset 0 0 0 1px var(--geo-color-primary-default)}.geo-map-search__mode-label{text-align:center;font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-medium);line-height:1.3;color:var(--geo-color-primary-default)}.geo-map-search__form{display:flex;flex-direction:column;gap:12px;padding-top:4px;border-top:1px solid var(--geo-color-neutral-100)}.geo-map-search__form-head{position:relative;display:flex;align-items:center;justify-content:center;min-height:28px;padding:0 28px}.geo-map-search__form-title{margin:0;text-align:center;text-transform:uppercase;font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-semibold);letter-spacing:.03em;color:var(--geo-color-neutral-900)}.geo-map-search__form-head .geo-map-search__icon-btn{position:absolute;top:50%;right:0;transform:translateY(-50%)}.geo-map-search__fields{display:flex;flex-direction:column;gap:10px}.geo-map-search__fields--inline,.geo-map-search__actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.geo-map-search__actions>geo-button{display:block;min-width:0}.geo-map-search__actions .geo-button{width:100%}.geo-map-search__results{display:flex;flex-direction:column;gap:10px;padding-top:4px;border-top:1px solid var(--geo-color-primary-default)}.geo-map-search__hint{margin:0;font-size:var(--geo-font-size-caption);color:var(--geo-color-neutral-500)}.geo-map-search__list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:10px}.geo-map-search__result{display:flex;flex-direction:column;gap:8px;padding:0}.geo-map-search__result-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.geo-map-search__result-map{font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-900);line-height:1.4}.geo-map-search__detail-link{flex-shrink:0;padding:0;border:0;background:transparent;cursor:pointer;font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);color:var(--geo-color-primary-default);text-decoration:none}.geo-map-search__detail-link:hover{text-decoration:underline}.geo-map-search__detail-link:focus-visible{outline:2px solid var(--geo-color-primary-default);outline-offset:2px;border-radius:2px}.geo-map-search__result-meta{margin:0;display:flex;flex-direction:column;gap:4px}.geo-map-search__result-row{display:grid;grid-template-columns:88px 1fr;gap:8px;align-items:baseline}.geo-map-search__result-row dt{margin:0;font-size:var(--geo-font-size-caption);color:var(--geo-color-neutral-500)}.geo-map-search__result-row dd{margin:0;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-900)}.geo-map-search__result-sub{margin:0;font-size:var(--geo-font-size-caption);color:var(--geo-color-neutral-500)}.geo-map-search__paging{display:flex;justify-content:center;margin-top:2px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { 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: GeoIconComponent, selector: "geo-icon", inputs: ["type", "theme", "spin", "size", "color"] }, { kind: "component", type: GeoInputComponent, selector: "geo-input", inputs: ["label", "placeholder", "type", "disabled", "readonly", "required", "error", "errorMessage", "maxlength", "prefixIcon", "suffixIcon", "allowClear", "block", "width"], outputs: ["valueChange", "enterPressed"] }, { kind: "component", type: GeoPaginationComponent, selector: "geo-pagination", inputs: ["pageIndex", "pageSize", "total", "size", "simple", "hideOnSinglePage", "showSizeChanger", "pageSizeOptions"], outputs: ["pageIndexChange", "pageSizeChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
7418
7548
|
}
|
|
7419
7549
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapSearchComponent, decorators: [{
|
|
7420
7550
|
type: Component,
|
|
@@ -7427,7 +7557,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
7427
7557
|
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
7428
7558
|
class: 'geo-map-search-host',
|
|
7429
7559
|
'[class.geo-map-search-host--open]': 'open()',
|
|
7430
|
-
}, template: "@if (open()) {\n <section class=\"geo-map-search\" aria-label=\"Tra c\u1EE9u th\u00F4ng tin quy ho\u1EA1ch\">\n <header class=\"geo-map-search__header\">\n <h3 class=\"geo-map-search__title\">{{ title() }}</h3>\n <button\n type=\"button\"\n class=\"geo-map-search__icon-btn\"\n aria-label=\"\u0110\u00F3ng tra c\u1EE9u\"\n (click)=\"close()\"\n >\n <geo-icon type=\"close\" size=\"sm\" />\n </button>\n </header>\n\n <div class=\"geo-map-search__body\">\n <div class=\"geo-map-search__modes\" role=\"listbox\" aria-label=\"H\u00ECnh th\u1EE9c tra c\u1EE9u\">\n @for (tile of modeTiles; track tile.id) {\n <button\n type=\"button\"\n class=\"geo-map-search__mode\"\n role=\"option\"\n [class.geo-map-search__mode--active]=\"formOpen() && mode() === tile.id\"\n [attr.aria-selected]=\"formOpen() && mode() === tile.id\"\n (click)=\"selectMode(tile.id)\"\n >\n <span class=\"geo-map-search__mode-icon\" aria-hidden=\"true\">\n <geo-icon [type]=\"tile.icon\" size=\"md\" />\n </span>\n <span class=\"geo-map-search__mode-label\">{{ tile.label }}</span>\n </button>\n }\n </div>\n\n @if (formOpen()) {\n <section class=\"geo-map-search__form\" [attr.aria-label]=\"modeHeading()\">\n <div class=\"geo-map-search__form-head\">\n <h4 class=\"geo-map-search__form-title\">{{ modeHeading() }}</h4>\n <button\n type=\"button\"\n class=\"geo-map-search__icon-btn geo-map-search__icon-btn--sm\"\n aria-label=\"Thu g\u1ECDn form t\u00ECm ki\u1EBFm\"\n (click)=\"collapseForm()\"\n >\n <geo-icon type=\"close\" size=\"sm\" />\n </button>\n </div>\n\n <div\n class=\"geo-map-search__fields\"\n [class.geo-map-search__fields--inline]=\"fieldsInline()\"\n >\n @for (field of fields(); track field.key) {\n <geo-input\n [label]=\"field.label\"\n [placeholder]=\"field.placeholder\"\n [type]=\"field.type ?? 'text'\"\n [ngModel]=\"fieldValue(field.key)\"\n (ngModelChange)=\"setField(field.key, $event)\"\n (enterPressed)=\"submit()\"\n [allowClear]=\"true\"\n [block]=\"true\"\n />\n }\n </div>\n\n <div class=\"geo-map-search__actions\">\n <geo-button\n appearance=\"primary\"\n icon=\"search\"\n [disabled]=\"loading()\"\n (clicked)=\"submit()\"\n >\n T\u00ECm ki\u1EBFm\n </geo-button>\n <geo-button\n appearance=\"secondary\"\n icon=\"reload\"\n (clicked)=\"onReset()\"\n >\n \u0110\u1EB7t l\u1EA1i\n </geo-button>\n </div>\n </section>\n }\n\n @if (formOpen() && (loading() || hasSearched())) {\n <div class=\"geo-map-search__results\" aria-live=\"polite\">\n @if (loading()) {\n <p class=\"geo-map-search__hint\">\u0110ang t\u00ECm ki\u1EBFm\u2026</p>\n } @else if (!results().length) {\n <p class=\"geo-map-search__hint\">{{ emptyText() }}</p>\n } @else {\n <ul class=\"geo-map-search__list\">\n @for (item of results(); track item.id) {\n <li class=\"geo-map-search__result\">\n <div class=\"geo-map-search__result-head\">\n <span class=\"geo-map-search__result-map\">{{ mapLabel(item) }}</span>\n <button\n type=\"button\"\n class=\"geo-map-search__detail-link\"\n (click)=\"selectResult(item)\"\n >\n Chi ti\u1EBFt\n </button>\n </div>\n @if (item.parcel; as parcel) {\n <dl class=\"geo-map-search__result-meta\">\n @if (parcel.ward) {\n <div class=\"geo-map-search__result-row\">\n <dt>X\u00E3:</dt>\n <dd>{{ parcel.ward }}</dd>\n </div>\n }\n @if (parcel.province) {\n <div class=\"geo-map-search__result-row\">\n <dt>T\u1EC9nh:</dt>\n <dd>{{ parcel.province }}</dd>\n </div>\n }\n @if (parcel.area) {\n <div class=\"geo-map-search__result-row\">\n <dt>Di\u1EC7n t\u00EDch:</dt>\n <dd>{{ parcel.area }}</dd>\n </div>\n }\n </dl>\n } @else if (item.subtitle) {\n <p class=\"geo-map-search__result-sub\">{{ item.subtitle }}</p>\n }\n </li>\n }\n </ul>\n\n @if (resolvedTotal() > pageSize()) {\n <geo-pagination\n class=\"geo-map-search__paging\"\n [(pageIndex)]=\"pageIndex\"\n [(pageSize)]=\"pageSize\"\n [total]=\"resolvedTotal()\"\n size=\"small\"\n [simple]=\"true\"\n />\n }\n }\n </div>\n }\n </div>\n </section>\n}\n", styles: ["@charset \"UTF-8\";.geo-map-search-host{display:none}.geo-map-search-host--open{display:block}.geo-map-search{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);width:min(420px,100vw - 32px);max-height:min(640px,82vh);overflow:hidden;display:flex;flex-direction:column}.geo-map-search__header{position:relative;display:flex;align-items:center;justify-content:center;gap:8px;padding:14px 40px 12px;border-bottom:1px solid var(--geo-color-neutral-100)}.geo-map-search__title{margin:0;max-width:100%;text-align:center;text-transform:uppercase;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-semibold);letter-spacing:.02em;line-height:1.35;color:var(--geo-color-neutral-900)}.geo-map-search__header .geo-map-search__icon-btn{position:absolute;top:8px;right:8px}.geo-map-search__icon-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:32px;min-width:32px;min-height:32px;padding:0;color:var(--geo-color-neutral-500)}.geo-map-search__icon-btn:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-search__icon-btn:active:not(:disabled){transform:scale(.98)}.geo-map-search__icon-btn:disabled{opacity:.45;cursor:not-allowed}.geo-map-search__icon-btn--active,.geo-map-search__icon-btn--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-search__icon-btn--icon-only{width:32px;padding:0}.geo-map-search__icon-btn--sm{width:28px;min-width:28px;min-height:28px}.geo-map-search__body{display:flex;flex-direction:column;gap:14px;padding:14px 16px 16px;overflow:auto}.geo-map-search__modes{display:flex;flex-wrap:wrap;justify-content:center;gap:14px 12px}.geo-map-search__mode{display:inline-flex;flex-direction:column;align-items:center;gap:6px;width:104px;padding:0;border:0;background:transparent;cursor:pointer;color:var(--geo-color-primary-default);font:inherit}.geo-map-search__mode:focus-visible{outline:2px solid var(--geo-color-primary-default);outline-offset:2px;border-radius:var(--geo-radius)}.geo-map-search__mode-icon{display:inline-flex;align-items:center;justify-content:center;width:52px;height:52px;border-radius:50%;border:1.5px solid var(--geo-color-primary-default);background:var(--geo-color-primary-soft, var(--geo-color-primary-surface-light));color:var(--geo-color-primary-default);transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease}.geo-map-search__mode:hover .geo-map-search__mode-icon{background:var(--geo-color-primary-soft-hover)}.geo-map-search__mode--active .geo-map-search__mode-icon{background:var(--geo-color-primary-soft-active);box-shadow:inset 0 0 0 1px var(--geo-color-primary-default)}.geo-map-search__mode-label{text-align:center;font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-medium);line-height:1.3;color:var(--geo-color-primary-default)}.geo-map-search__form{display:flex;flex-direction:column;gap:12px;padding-top:4px;border-top:1px solid var(--geo-color-neutral-100)}.geo-map-search__form-head{position:relative;display:flex;align-items:center;justify-content:center;min-height:28px;padding:0 28px}.geo-map-search__form-title{margin:0;text-align:center;text-transform:uppercase;font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-semibold);letter-spacing:.03em;color:var(--geo-color-neutral-900)}.geo-map-search__form-head .geo-map-search__icon-btn{position:absolute;top:50%;right:0;transform:translateY(-50%)}.geo-map-search__fields{display:flex;flex-direction:column;gap:10px}.geo-map-search__fields--inline,.geo-map-search__actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.geo-map-search__actions>geo-button{display:block;min-width:0}.geo-map-search__actions .geo-button{width:100%}.geo-map-search__results{display:flex;flex-direction:column;gap:10px;padding-top:4px;border-top:1px solid var(--geo-color-primary-default)}.geo-map-search__hint{margin:0;font-size:var(--geo-font-size-caption);color:var(--geo-color-neutral-500)}.geo-map-search__list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:10px}.geo-map-search__result{display:flex;flex-direction:column;gap:8px;padding:0}.geo-map-search__result-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.geo-map-search__result-map{font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-900);line-height:1.4}.geo-map-search__detail-link{flex-shrink:0;padding:0;border:0;background:transparent;cursor:pointer;font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);color:var(--geo-color-primary-default);text-decoration:none}.geo-map-search__detail-link:hover{text-decoration:underline}.geo-map-search__detail-link:focus-visible{outline:2px solid var(--geo-color-primary-default);outline-offset:2px;border-radius:2px}.geo-map-search__result-meta{margin:0;display:flex;flex-direction:column;gap:4px}.geo-map-search__result-row{display:grid;grid-template-columns:88px 1fr;gap:8px;align-items:baseline}.geo-map-search__result-row dt{margin:0;font-size:var(--geo-font-size-caption);color:var(--geo-color-neutral-500)}.geo-map-search__result-row dd{margin:0;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-900)}.geo-map-search__result-sub{margin:0;font-size:var(--geo-font-size-caption);color:var(--geo-color-neutral-500)}.geo-map-search__paging{display:flex;justify-content:center;margin-top:2px}\n"] }]
|
|
7560
|
+
}, template: "@if (open()) {\n <section class=\"geo-map-search\" aria-label=\"Tra c\u1EE9u th\u00F4ng tin quy ho\u1EA1ch\">\n <header class=\"geo-map-search__header\">\n <h3 class=\"geo-map-search__title\">{{ title() }}</h3>\n <button\n type=\"button\"\n class=\"geo-map-search__icon-btn\"\n aria-label=\"\u0110\u00F3ng tra c\u1EE9u\"\n (click)=\"close()\"\n >\n <geo-icon type=\"close\" size=\"sm\" />\n </button>\n </header>\n\n <div class=\"geo-map-search__body\">\n <div class=\"geo-map-search__modes\" role=\"listbox\" aria-label=\"H\u00ECnh th\u1EE9c tra c\u1EE9u\">\n @for (tile of modeTiles; track tile.id) {\n <button\n type=\"button\"\n class=\"geo-map-search__mode\"\n role=\"option\"\n [class.geo-map-search__mode--active]=\"formOpen() && mode() === tile.id\"\n [attr.aria-selected]=\"formOpen() && mode() === tile.id\"\n (click)=\"selectMode(tile.id)\"\n >\n <span class=\"geo-map-search__mode-icon\" aria-hidden=\"true\">\n <geo-icon [type]=\"tile.icon\" size=\"md\" />\n </span>\n <span class=\"geo-map-search__mode-label\">{{ tile.label }}</span>\n </button>\n }\n </div>\n\n @if (formOpen()) {\n <section class=\"geo-map-search__form\" [attr.aria-label]=\"modeHeading()\">\n <div class=\"geo-map-search__form-head\">\n <h4 class=\"geo-map-search__form-title\">{{ modeHeading() }}</h4>\n <button\n type=\"button\"\n class=\"geo-map-search__icon-btn geo-map-search__icon-btn--sm\"\n aria-label=\"Thu g\u1ECDn form t\u00ECm ki\u1EBFm\"\n (click)=\"collapseForm()\"\n >\n <geo-icon type=\"close\" size=\"sm\" />\n </button>\n </div>\n\n <div\n class=\"geo-map-search__fields\"\n [class.geo-map-search__fields--inline]=\"fieldsInline()\"\n >\n @for (field of fields(); track field.key) {\n <geo-input\n [label]=\"field.label\"\n [placeholder]=\"field.placeholder\"\n [type]=\"field.type ?? 'text'\"\n [ngModel]=\"fieldValue(field.key)\"\n (ngModelChange)=\"setField(field.key, $event)\"\n (enterPressed)=\"submit()\"\n [allowClear]=\"true\"\n [block]=\"true\"\n />\n }\n </div>\n\n <div class=\"geo-map-search__actions\">\n <geo-button\n appearance=\"primary\"\n icon=\"search\"\n [disabled]=\"loading()\"\n (clicked)=\"submit()\"\n >\n T\u00ECm ki\u1EBFm\n </geo-button>\n <geo-button\n appearance=\"secondary\"\n icon=\"reload\"\n (clicked)=\"onReset()\"\n >\n \u0110\u1EB7t l\u1EA1i\n </geo-button>\n </div>\n </section>\n }\n\n @if (formOpen() && (loading() || hasSearched())) {\n <div class=\"geo-map-search__results\" aria-live=\"polite\">\n @if (loading()) {\n <p class=\"geo-map-search__hint\">\u0110ang t\u00ECm ki\u1EBFm\u2026</p>\n } @else if (!results().length) {\n <p class=\"geo-map-search__hint\">{{ emptyText() }}</p>\n } @else {\n <ul class=\"geo-map-search__list\">\n @for (item of results(); track item.id) {\n <li class=\"geo-map-search__result\">\n <div class=\"geo-map-search__result-head\">\n <span class=\"geo-map-search__result-map\">{{ mapLabel(item) }}</span>\n <button\n type=\"button\"\n class=\"geo-map-search__detail-link\"\n (click)=\"selectResult(item)\"\n >\n Chi ti\u1EBFt\n </button>\n </div>\n @if (item.parcel; as parcel) {\n <dl class=\"geo-map-search__result-meta\">\n @if (parcel.ward) {\n <div class=\"geo-map-search__result-row\">\n <dt>X\u00E3:</dt>\n <dd>{{ parcel.ward }}</dd>\n </div>\n }\n @if (parcel.province) {\n <div class=\"geo-map-search__result-row\">\n <dt>T\u1EC9nh:</dt>\n <dd>{{ parcel.province }}</dd>\n </div>\n }\n @if (parcel.area) {\n <div class=\"geo-map-search__result-row\">\n <dt>Di\u1EC7n t\u00EDch:</dt>\n <dd>{{ parcel.area }}</dd>\n </div>\n }\n </dl>\n } @else if (item.subtitle) {\n <p class=\"geo-map-search__result-sub\">{{ item.subtitle }}</p>\n }\n </li>\n }\n </ul>\n\n @if (resolvedTotal() > pageSize()) {\n <geo-pagination\n class=\"geo-map-search__paging\"\n [(pageIndex)]=\"pageIndex\"\n [(pageSize)]=\"pageSize\"\n [total]=\"resolvedTotal()\"\n size=\"small\"\n [simple]=\"true\"\n />\n }\n }\n </div>\n }\n </div>\n </section>\n}\n", styles: ["@charset \"UTF-8\";.geo-map-search-host{display:none}.geo-map-search-host--open{display:block}.geo-map-search{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);width:min(420px,100vw - 32px);max-height:min(640px,82vh);overflow:hidden;display:flex;flex-direction:column}.geo-map-search__header{position:relative;display:flex;align-items:center;justify-content:center;gap:8px;padding:14px 40px 12px;border-bottom:1px solid var(--geo-color-neutral-100)}.geo-map-search__title{margin:0;max-width:100%;text-align:center;text-transform:uppercase;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-semibold);letter-spacing:.02em;line-height:1.35;color:var(--geo-color-neutral-900)}.geo-map-search__header .geo-map-search__icon-btn{position:absolute;top:8px;right:8px}.geo-map-search__icon-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:40px;min-height:40px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:32px;min-width:32px;min-height:32px;padding:0;color:var(--geo-color-neutral-500)}.geo-map-search__icon-btn:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-search__icon-btn:active:not(:disabled){transform:scale(.98)}.geo-map-search__icon-btn:disabled{opacity:.45;cursor:not-allowed}.geo-map-search__icon-btn--active,.geo-map-search__icon-btn--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-search__icon-btn--icon-only{width:40px;padding:0}.geo-map-search__icon-btn--sm{width:28px;min-width:28px;min-height:28px}.geo-map-search__body{display:flex;flex-direction:column;gap:14px;padding:14px 16px 16px;overflow:auto}.geo-map-search__modes{display:flex;flex-wrap:wrap;justify-content:center;gap:14px 12px}.geo-map-search__mode{display:inline-flex;flex-direction:column;align-items:center;gap:6px;width:104px;padding:0;border:0;background:transparent;cursor:pointer;color:var(--geo-color-primary-default);font:inherit}.geo-map-search__mode:focus-visible{outline:2px solid var(--geo-color-primary-default);outline-offset:2px;border-radius:var(--geo-radius)}.geo-map-search__mode-icon{display:inline-flex;align-items:center;justify-content:center;width:52px;height:52px;border-radius:50%;border:1.5px solid var(--geo-color-primary-default);background:var(--geo-color-primary-soft, var(--geo-color-primary-surface-light));color:var(--geo-color-primary-default);transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease}.geo-map-search__mode:hover .geo-map-search__mode-icon{background:var(--geo-color-primary-soft-hover)}.geo-map-search__mode--active .geo-map-search__mode-icon{background:var(--geo-color-primary-soft-active);box-shadow:inset 0 0 0 1px var(--geo-color-primary-default)}.geo-map-search__mode-label{text-align:center;font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-medium);line-height:1.3;color:var(--geo-color-primary-default)}.geo-map-search__form{display:flex;flex-direction:column;gap:12px;padding-top:4px;border-top:1px solid var(--geo-color-neutral-100)}.geo-map-search__form-head{position:relative;display:flex;align-items:center;justify-content:center;min-height:28px;padding:0 28px}.geo-map-search__form-title{margin:0;text-align:center;text-transform:uppercase;font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-semibold);letter-spacing:.03em;color:var(--geo-color-neutral-900)}.geo-map-search__form-head .geo-map-search__icon-btn{position:absolute;top:50%;right:0;transform:translateY(-50%)}.geo-map-search__fields{display:flex;flex-direction:column;gap:10px}.geo-map-search__fields--inline,.geo-map-search__actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.geo-map-search__actions>geo-button{display:block;min-width:0}.geo-map-search__actions .geo-button{width:100%}.geo-map-search__results{display:flex;flex-direction:column;gap:10px;padding-top:4px;border-top:1px solid var(--geo-color-primary-default)}.geo-map-search__hint{margin:0;font-size:var(--geo-font-size-caption);color:var(--geo-color-neutral-500)}.geo-map-search__list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:10px}.geo-map-search__result{display:flex;flex-direction:column;gap:8px;padding:0}.geo-map-search__result-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.geo-map-search__result-map{font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-900);line-height:1.4}.geo-map-search__detail-link{flex-shrink:0;padding:0;border:0;background:transparent;cursor:pointer;font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);color:var(--geo-color-primary-default);text-decoration:none}.geo-map-search__detail-link:hover{text-decoration:underline}.geo-map-search__detail-link:focus-visible{outline:2px solid var(--geo-color-primary-default);outline-offset:2px;border-radius:2px}.geo-map-search__result-meta{margin:0;display:flex;flex-direction:column;gap:4px}.geo-map-search__result-row{display:grid;grid-template-columns:88px 1fr;gap:8px;align-items:baseline}.geo-map-search__result-row dt{margin:0;font-size:var(--geo-font-size-caption);color:var(--geo-color-neutral-500)}.geo-map-search__result-row dd{margin:0;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-900)}.geo-map-search__result-sub{margin:0;font-size:var(--geo-font-size-caption);color:var(--geo-color-neutral-500)}.geo-map-search__paging{display:flex;justify-content:center;margin-top:2px}\n"] }]
|
|
7431
7561
|
}] });
|
|
7432
7562
|
|
|
7433
7563
|
/**
|
|
@@ -7441,7 +7571,6 @@ class GeoMapShellComponent {
|
|
|
7441
7571
|
destroyRef = inject(DestroyRef);
|
|
7442
7572
|
snapshotRef = viewChild(GeoMapSnapshotComponent);
|
|
7443
7573
|
zoomRef = viewChild(GeoMapZoomComponent);
|
|
7444
|
-
locateRef = viewChild(GeoMapLocateComponent);
|
|
7445
7574
|
center = input([...GEO_MAP_DEFAULT_CENTER]);
|
|
7446
7575
|
zoom = input(GEO_MAP_DEFAULT_ZOOM);
|
|
7447
7576
|
height = input('560px');
|
|
@@ -7451,19 +7580,12 @@ class GeoMapShellComponent {
|
|
|
7451
7580
|
/** Extra overlays merged after demo thematic + traffic. */
|
|
7452
7581
|
layers = input([]);
|
|
7453
7582
|
legendItems = input(GEO_MAP_DEMO_LEGEND_ITEMS);
|
|
7583
|
+
/** Host app sets true when the legend catalog (loại đất/ký hiệu/màu) failed to load. */
|
|
7584
|
+
legendCatalogMissing = input(false);
|
|
7454
7585
|
showNav = input(true);
|
|
7455
7586
|
includeDemoLayers = input(true);
|
|
7456
7587
|
adminNodes = input(GEO_MAP_DEMO_ADMIN_NODES);
|
|
7457
|
-
/** `single` — chọn đúng 1 xã/phường (BR-06-03); `multi` — checkbox nhiều cấp (mặc định). */
|
|
7458
|
-
adminSelectionMode = input('multi');
|
|
7459
7588
|
locationLabel = input('Phường 1 — TP Đà Lạt, Lâm Đồng');
|
|
7460
|
-
/**
|
|
7461
|
-
* Ghi chú pháp lý hiển thị khi đang đo (BR-10-03). `null` ẩn ghi chú —
|
|
7462
|
-
* mặc định giữ nguyên câu chữ đã dùng ở `qh-map-shell`.
|
|
7463
|
-
*/
|
|
7464
|
-
measureDisclaimer = input('Giá trị tham khảo trên bản đồ, không có giá trị pháp lý. Diện tích pháp lý của thửa đất lấy theo hồ sơ địa chính.');
|
|
7465
|
-
/** True khi danh mục chú giải không tải được (`ERR_MAP_LEGEND_CATALOG_MISSING`). */
|
|
7466
|
-
legendCatalogMissing = input(false);
|
|
7467
7589
|
parcelAudience = input('citizen');
|
|
7468
7590
|
provinceExtent = input(GEO_MAP_DEFAULT_PROVINCE_EXTENT_4326);
|
|
7469
7591
|
/** When true, shell seeds mock search results (Storybook / demos). */
|
|
@@ -7499,8 +7621,6 @@ class GeoMapShellComponent {
|
|
|
7499
7621
|
resultSelect = output();
|
|
7500
7622
|
parcelExport = output();
|
|
7501
7623
|
adminApply = output();
|
|
7502
|
-
snapshotCaptured = output();
|
|
7503
|
-
snapshotError = output();
|
|
7504
7624
|
controller = signal(null);
|
|
7505
7625
|
/** Active map pointer tool (`none` = default arrow cursor). */
|
|
7506
7626
|
toolMode = signal('none');
|
|
@@ -7688,6 +7808,9 @@ class GeoMapShellComponent {
|
|
|
7688
7808
|
case 'fit-province':
|
|
7689
7809
|
this.zoomRef()?.fitProvince();
|
|
7690
7810
|
break;
|
|
7811
|
+
case 'locate':
|
|
7812
|
+
this.triggerLocate();
|
|
7813
|
+
break;
|
|
7691
7814
|
case 'pan':
|
|
7692
7815
|
if (this.toolMode() === 'pan') {
|
|
7693
7816
|
this.exitToolMode();
|
|
@@ -7767,9 +7890,6 @@ class GeoMapShellComponent {
|
|
|
7767
7890
|
case 'snapshot':
|
|
7768
7891
|
this.snapshotRef()?.capture();
|
|
7769
7892
|
break;
|
|
7770
|
-
case 'locate':
|
|
7771
|
-
this.locateRef()?.locate();
|
|
7772
|
-
break;
|
|
7773
7893
|
default:
|
|
7774
7894
|
break;
|
|
7775
7895
|
}
|
|
@@ -7904,6 +8024,18 @@ class GeoMapShellComponent {
|
|
|
7904
8024
|
}
|
|
7905
8025
|
this.setMapCursor('grab');
|
|
7906
8026
|
}
|
|
8027
|
+
/** Backing action for the `locate` toolbar entry (`GEO_MAP_LOCATE_TOOLBAR_ACTION`). */
|
|
8028
|
+
triggerLocate() {
|
|
8029
|
+
const ctrl = this.controller();
|
|
8030
|
+
if (!ctrl) {
|
|
8031
|
+
return;
|
|
8032
|
+
}
|
|
8033
|
+
runGeoMapLocate(ctrl, {
|
|
8034
|
+
onLocated: () => this.located.emit(),
|
|
8035
|
+
onDenied: () => this.locateDenied.emit(),
|
|
8036
|
+
onError: (error) => this.locateError.emit(error),
|
|
8037
|
+
});
|
|
8038
|
+
}
|
|
7907
8039
|
setMapCursor(cursor) {
|
|
7908
8040
|
const el = this.controller()?.getMap()?.getTargetElement();
|
|
7909
8041
|
if (!el) {
|
|
@@ -7982,7 +8114,7 @@ class GeoMapShellComponent {
|
|
|
7982
8114
|
this.managedLayers.set(next);
|
|
7983
8115
|
}
|
|
7984
8116
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapShellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7985
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapShellComponent, isStandalone: true, selector: "geo-map-shell", inputs: { center: { classPropertyName: "center", publicName: "center", isSignal: true, isRequired: false, transformFunction: null }, zoom: { classPropertyName: "zoom", publicName: "zoom", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, showMousePosition: { classPropertyName: "showMousePosition", publicName: "showMousePosition", isSignal: true, isRequired: false, transformFunction: null }, basemapOptions: { classPropertyName: "basemapOptions", publicName: "basemapOptions", isSignal: true, isRequired: false, transformFunction: null }, toolbarActions: { classPropertyName: "toolbarActions", publicName: "toolbarActions", isSignal: true, isRequired: false, transformFunction: null }, layers: { classPropertyName: "layers", publicName: "layers", isSignal: true, isRequired: false, transformFunction: null }, legendItems: { classPropertyName: "legendItems", publicName: "legendItems", isSignal: true, isRequired: false, transformFunction: null }, showNav: { classPropertyName: "showNav", publicName: "showNav", isSignal: true, isRequired: false, transformFunction: null }, includeDemoLayers: { classPropertyName: "includeDemoLayers", publicName: "includeDemoLayers", isSignal: true, isRequired: false, transformFunction: null }, adminNodes: { classPropertyName: "adminNodes", publicName: "adminNodes", isSignal: true, isRequired: false, transformFunction: null }, adminSelectionMode: { classPropertyName: "adminSelectionMode", publicName: "adminSelectionMode", isSignal: true, isRequired: false, transformFunction: null }, locationLabel: { classPropertyName: "locationLabel", publicName: "locationLabel", isSignal: true, isRequired: false, transformFunction: null }, measureDisclaimer: { classPropertyName: "measureDisclaimer", publicName: "measureDisclaimer", isSignal: true, isRequired: false, transformFunction: null }, legendCatalogMissing: { classPropertyName: "legendCatalogMissing", publicName: "legendCatalogMissing", isSignal: true, isRequired: false, transformFunction: null }, parcelAudience: { classPropertyName: "parcelAudience", publicName: "parcelAudience", isSignal: true, isRequired: false, transformFunction: null }, provinceExtent: { classPropertyName: "provinceExtent", publicName: "provinceExtent", isSignal: true, isRequired: false, transformFunction: null }, demoSearch: { classPropertyName: "demoSearch", publicName: "demoSearch", isSignal: true, isRequired: false, transformFunction: null }, homeMode: { classPropertyName: "homeMode", publicName: "homeMode", isSignal: true, isRequired: false, transformFunction: null }, basemapId: { classPropertyName: "basemapId", publicName: "basemapId", isSignal: true, isRequired: false, transformFunction: null }, measureMode: { classPropertyName: "measureMode", publicName: "measureMode", isSignal: true, isRequired: false, transformFunction: null }, checkedMap: { classPropertyName: "checkedMap", publicName: "checkedMap", isSignal: true, isRequired: false, transformFunction: null }, layersOpen: { classPropertyName: "layersOpen", publicName: "layersOpen", isSignal: true, isRequired: false, transformFunction: null }, legendOpen: { classPropertyName: "legendOpen", publicName: "legendOpen", isSignal: true, isRequired: false, transformFunction: null }, helpOpen: { classPropertyName: "helpOpen", publicName: "helpOpen", isSignal: true, isRequired: false, transformFunction: null }, swipeActive: { classPropertyName: "swipeActive", publicName: "swipeActive", isSignal: true, isRequired: false, transformFunction: null }, searchOpen: { classPropertyName: "searchOpen", publicName: "searchOpen", isSignal: true, isRequired: false, transformFunction: null }, adminFilterOpen: { classPropertyName: "adminFilterOpen", publicName: "adminFilterOpen", isSignal: true, isRequired: false, transformFunction: null }, parcelOpen: { classPropertyName: "parcelOpen", publicName: "parcelOpen", isSignal: true, isRequired: false, transformFunction: null }, managedLayers: { classPropertyName: "managedLayers", publicName: "managedLayers", isSignal: true, isRequired: false, transformFunction: null }, searchResults: { classPropertyName: "searchResults", publicName: "searchResults", isSignal: true, isRequired: false, transformFunction: null }, selectedParcel: { classPropertyName: "selectedParcel", publicName: "selectedParcel", isSignal: true, isRequired: false, transformFunction: null }, adminCheckedKeys: { classPropertyName: "adminCheckedKeys", publicName: "adminCheckedKeys", isSignal: true, isRequired: false, transformFunction: null }, adminExpandedKeys: { classPropertyName: "adminExpandedKeys", publicName: "adminExpandedKeys", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { basemapId: "basemapIdChange", measureMode: "measureModeChange", checkedMap: "checkedMapChange", layersOpen: "layersOpenChange", legendOpen: "legendOpenChange", helpOpen: "helpOpenChange", swipeActive: "swipeActiveChange", searchOpen: "searchOpenChange", adminFilterOpen: "adminFilterOpenChange", parcelOpen: "parcelOpenChange", managedLayers: "managedLayersChange", searchResults: "searchResultsChange", selectedParcel: "selectedParcelChange", adminCheckedKeys: "adminCheckedKeysChange", adminExpandedKeys: "adminExpandedKeysChange", mapReady: "mapReady", mapClick: "mapClick", located: "located", locateDenied: "locateDenied", locateError: "locateError", actionClick: "actionClick", search: "search", searchReset: "searchReset", resultSelect: "resultSelect", parcelExport: "parcelExport", adminApply: "adminApply", snapshotCaptured: "snapshotCaptured", snapshotError: "snapshotError" }, host: { properties: { "style.height": "height()" }, classAttribute: "geo-map-shell-host" }, viewQueries: [{ propertyName: "snapshotRef", first: true, predicate: GeoMapSnapshotComponent, descendants: true, isSignal: true }, { propertyName: "zoomRef", first: true, predicate: GeoMapZoomComponent, descendants: true, isSignal: true }, { propertyName: "locateRef", first: true, predicate: GeoMapLocateComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"geo-map-shell\">\n <geo-map\n class=\"geo-map-shell__map\"\n [center]=\"center()\"\n [zoom]=\"zoom()\"\n [height]=\"'100%'\"\n [basemap]=\"basemap()\"\n [layers]=\"resolvedLayers()\"\n [showMousePosition]=\"showMousePosition()\"\n [showZoomControl]=\"false\"\n (mapReady)=\"onMapReady($event)\"\n (mapClick)=\"onMapClick($event)\"\n />\n\n <div class=\"geo-map-shell__chrome-left\">\n <geo-map-toolbar\n class=\"geo-map-shell__toolbar\"\n [controller]=\"controller()\"\n [actions]=\"resolvedToolbarActions()\"\n [(checkedMap)]=\"checkedMap\"\n (actionClick)=\"onToolbarAction($event)\"\n (actionToggle)=\"onToolbarToggle($event)\"\n />\n\n <div class=\"geo-map-shell__panels\">\n <geo-map-search\n [(open)]=\"searchOpen\"\n [results]=\"searchResults()\"\n (search)=\"onSearch($event)\"\n (reset)=\"onSearchReset()\"\n (resultSelect)=\"onResultSelect($event)\"\n />\n <geo-map-admin-filter\n [(open)]=\"adminFilterOpen\"\n title=\"Chuy\u1EC3n v\u1ECB tr\u00ED\"\n [nodes]=\"adminNodes()\"\n [selectionMode]=\"adminSelectionMode()\"\n [(checkedKeys)]=\"adminCheckedKeys\"\n [(expandedKeys)]=\"adminExpandedKeys\"\n (apply)=\"onAdminApply($event)\"\n (reset)=\"adminCheckedKeys.set([])\"\n (fitProvince)=\"onFitProvince()\"\n (closed)=\"onAdminClosed()\"\n />\n <geo-map-parcel-popup\n [(open)]=\"parcelOpen\"\n [parcel]=\"selectedParcel()\"\n [audience]=\"parcelAudience()\"\n (exportClick)=\"parcelExport.emit($event)\"\n (back)=\"onParcelBack()\"\n (closed)=\"onParcelClosed()\"\n />\n <geo-map-layers-drawer\n [controller]=\"controller()\"\n [(open)]=\"layersOpen\"\n [(layers)]=\"managedLayers\"\n />\n <geo-map-legend\n [(open)]=\"legendOpen\"\n [items]=\"legendItems()\"\n [catalogMissing]=\"legendCatalogMissing()\"\n />\n </div>\n </div>\n\n <!-- Headless bridges: zoom/fullscreen + snapshot + locate (driven by toolbar actions). -->\n <geo-map-zoom\n class=\"geo-map-shell__zoom-bridge\"\n [controller]=\"controller()\"\n [showNav]=\"showNav()\"\n [provinceExtent]=\"provinceExtent()\"\n />\n <geo-map-snapshot\n class=\"geo-map-shell__snapshot-bridge\"\n [controller]=\"controller()\"\n (captured)=\"snapshotCaptured.emit()\"\n (captureError)=\"snapshotError.emit($event)\"\n />\n <geo-map-locate\n class=\"geo-map-shell__locate-bridge\"\n [controller]=\"controller()\"\n (located)=\"located.emit($event)\"\n (denied)=\"locateDenied.emit()\"\n (locateError)=\"locateError.emit($event)\"\n />\n\n <div class=\"geo-map-shell__top-right\">\n <ng-content select=\"[geoMapShellTopRight]\" />\n </div>\n\n <div class=\"geo-map-shell__bottom-right\">\n <geo-map-basemap-switcher\n [options]=\"basemapOptions()\"\n [(selectedId)]=\"basemapId\"\n (basemapChange)=\"onBasemapChange($event)\"\n />\n </div>\n\n <div class=\"geo-map-shell__status\">\n @if (locationLabel()) {\n <geo-map-location-chip [label]=\"locationLabel()\" />\n }\n <geo-map-measure\n [controller]=\"controller()\"\n [(mode)]=\"measureMode\"\n />\n @if (measureMode() !== 'none' && measureDisclaimer()) {\n <p class=\"geo-map-shell__measure-disclaimer\" role=\"note\">\n {{ measureDisclaimer() }}\n </p>\n }\n </div>\n\n <geo-map-swipe\n [controller]=\"controller()\"\n [(active)]=\"swipeActive\"\n />\n\n <geo-map-help [(open)]=\"helpOpen\" />\n</div>\n", styles: ["@charset \"UTF-8\";.geo-map-shell-host{display:block;min-height:360px}.geo-map-shell{position:relative;width:100%;height:100%;min-height:inherit;overflow:hidden;border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-neutral-100)}.geo-map-shell:fullscreen,.geo-map-shell:-webkit-full-screen{width:100%;height:100%;min-height:100%;border:0;border-radius:0;background:var(--geo-color-neutral-100)}.geo-map-shell:fullscreen>.cdk-overlay-container,.geo-map-shell:-webkit-full-screen>.cdk-overlay-container{z-index:1200}.geo-map-shell__map{display:block;width:100%;height:100%}.geo-map-shell__chrome-left{position:absolute;top:16px;left:16px;z-index:6;display:flex;flex-direction:column;align-items:flex-start;gap:8px;max-width:calc(100% - 32px);max-height:calc(100% - 172px);overflow:visible;pointer-events:none}.geo-map-shell__chrome-left>*{pointer-events:auto}.geo-map-shell__toolbar{flex-shrink:0}.geo-map-shell__panels{display:flex;flex-direction:column;align-items:flex-start;gap:8px;width:min(420px,100%);min-height:0;overflow:visible;pointer-events:none}.geo-map-shell__panels>*{pointer-events:auto}.geo-map-shell__panels .geo-map-search,.geo-map-shell__panels .geo-map-admin-filter,.geo-map-shell__panels .geo-map-parcel-popup,.geo-map-shell__panels .geo-map-layers-drawer,.geo-map-shell__panels .geo-map-legend{max-height:min(640px,100dvh - 100px);overflow:auto}.geo-map-shell__snapshot-bridge,.geo-map-shell__zoom-bridge,.geo-map-shell__locate-bridge{position:absolute;width:0;height:0;overflow:hidden;pointer-events:none;opacity:0}.geo-map-shell__bottom-left{position:absolute;left:16px;bottom:72px;z-index:5;display:flex;flex-direction:column;align-items:flex-start;gap:8px;max-width:min(300px,100% - 120px);pointer-events:none}.geo-map-shell__bottom-left>*{pointer-events:auto}.geo-map-shell__top-right{position:absolute;top:16px;right:16px;z-index:7;display:flex;align-items:center;justify-content:flex-end;height:48px;max-width:min(360px,100% - 32px);pointer-events:none}.geo-map-shell__top-right>*{pointer-events:auto}.geo-map-shell__bottom-right{position:absolute;right:16px;bottom:24px;z-index:5;display:flex;flex-direction:column;align-items:flex-end;gap:8px;pointer-events:none}.geo-map-shell__bottom-right>*{pointer-events:auto}.geo-map-shell__status{position:absolute;left:50%;bottom:24px;z-index:5;display:flex;flex-direction:column;align-items:center;gap:8px;max-width:min(480px,100% - 32px);transform:translate(-50%);pointer-events:none}.geo-map-shell__status>*{pointer-events:auto}.geo-map-shell__measure-disclaimer{margin:0;padding:6px 12px;border-radius:var(--geo-radius);background:var(--geo-color-neutral-white);border:1px solid var(--geo-color-border-default);font-size:var(--geo-font-size-caption);color:var(--geo-color-neutral-700);text-align:center}.geo-map-shell .geo-map__mouse-position,.geo-map-shell .ol-scale-line{display:none!important}.geo-map-shell .ol-attribution{display:none}\n"], dependencies: [{ kind: "component", type: GeoMapComponent, selector: "geo-map", inputs: ["center", "zoom", "minZoom", "maxZoom", "viewProjection", "basemap", "layers", "height", "registerProjections", "projections", "showMousePosition", "mousePositionProjection", "showZoomControl"], outputs: ["mapReady", "mapClick", "viewChange", "initError"] }, { kind: "component", type: GeoMapToolbarComponent, selector: "geo-map-toolbar", inputs: ["controller", "actions", "compact", "checkedMap"], outputs: ["checkedMapChange", "actionClick", "actionToggle"] }, { kind: "component", type: GeoMapZoomComponent, selector: "geo-map-zoom", inputs: ["controller", "showNav", "showFitProvince", "provinceExtent", "fullscreenTarget"] }, { kind: "component", type: GeoMapSnapshotComponent, selector: "geo-map-snapshot", inputs: ["controller", "label", "filename"], outputs: ["captured", "captureError"] }, { kind: "component", type: GeoMapMeasureComponent, selector: "geo-map-measure", inputs: ["controller", "mode", "showResult"], outputs: ["modeChange", "measureChange"] }, { kind: "component", type: GeoMapLayersDrawerComponent, selector: "geo-map-layers-drawer", inputs: ["controller", "open", "title", "legendItems", "showOpacity", "showLegend", "layers"], outputs: ["openChange", "layersChange", "closed"] }, { kind: "component", type: GeoMapLegendComponent, selector: "geo-map-legend", inputs: ["title", "items", "catalogMissing", "open"], outputs: ["openChange", "closed"] }, { kind: "component", type: GeoMapHelpComponent, selector: "geo-map-help", inputs: ["open", "title", "sections"], outputs: ["openChange"] }, { kind: "component", type: GeoMapSwipeComponent, selector: "geo-map-swipe", inputs: ["controller", "active", "position", "layerId"], outputs: ["activeChange", "positionChange"] }, { kind: "component", type: GeoMapSearchComponent, selector: "geo-map-search", inputs: ["open", "title", "mode", "results", "loading", "pageIndex", "pageSize", "total", "emptyText"], outputs: ["openChange", "modeChange", "pageIndexChange", "pageSizeChange", "search", "reset", "resultSelect", "closed"] }, { kind: "component", type: GeoMapAdminFilterComponent, selector: "geo-map-admin-filter", inputs: ["open", "title", "nodes", "selectionMode", "checkedKeys", "expandedKeys"], outputs: ["openChange", "checkedKeysChange", "expandedKeysChange", "apply", "reset", "fitProvince", "closed", "selectionChange"] }, { kind: "component", type: GeoMapParcelPopupComponent, selector: "geo-map-parcel-popup", inputs: ["open", "title", "parcel", "audience", "showExport"], outputs: ["openChange", "closed", "back", "exportClick", "diagramClick"] }, { kind: "component", type: GeoMapLocationChipComponent, selector: "geo-map-location-chip", inputs: ["label", "icon"] }, { kind: "component", type: GeoMapBasemapSwitcherComponent, selector: "geo-map-basemap-switcher", inputs: ["options", "selectedId", "label", "tooltip"], outputs: ["selectedIdChange", "basemapChange"] }, { kind: "component", type: GeoMapLocateComponent, selector: "geo-map-locate", inputs: ["controller", "label"], outputs: ["located", "denied", "locateError"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
8117
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapShellComponent, isStandalone: true, selector: "geo-map-shell", inputs: { center: { classPropertyName: "center", publicName: "center", isSignal: true, isRequired: false, transformFunction: null }, zoom: { classPropertyName: "zoom", publicName: "zoom", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, showMousePosition: { classPropertyName: "showMousePosition", publicName: "showMousePosition", isSignal: true, isRequired: false, transformFunction: null }, basemapOptions: { classPropertyName: "basemapOptions", publicName: "basemapOptions", isSignal: true, isRequired: false, transformFunction: null }, toolbarActions: { classPropertyName: "toolbarActions", publicName: "toolbarActions", isSignal: true, isRequired: false, transformFunction: null }, layers: { classPropertyName: "layers", publicName: "layers", isSignal: true, isRequired: false, transformFunction: null }, legendItems: { classPropertyName: "legendItems", publicName: "legendItems", isSignal: true, isRequired: false, transformFunction: null }, legendCatalogMissing: { classPropertyName: "legendCatalogMissing", publicName: "legendCatalogMissing", isSignal: true, isRequired: false, transformFunction: null }, showNav: { classPropertyName: "showNav", publicName: "showNav", isSignal: true, isRequired: false, transformFunction: null }, includeDemoLayers: { classPropertyName: "includeDemoLayers", publicName: "includeDemoLayers", isSignal: true, isRequired: false, transformFunction: null }, adminNodes: { classPropertyName: "adminNodes", publicName: "adminNodes", isSignal: true, isRequired: false, transformFunction: null }, locationLabel: { classPropertyName: "locationLabel", publicName: "locationLabel", isSignal: true, isRequired: false, transformFunction: null }, parcelAudience: { classPropertyName: "parcelAudience", publicName: "parcelAudience", isSignal: true, isRequired: false, transformFunction: null }, provinceExtent: { classPropertyName: "provinceExtent", publicName: "provinceExtent", isSignal: true, isRequired: false, transformFunction: null }, demoSearch: { classPropertyName: "demoSearch", publicName: "demoSearch", isSignal: true, isRequired: false, transformFunction: null }, homeMode: { classPropertyName: "homeMode", publicName: "homeMode", isSignal: true, isRequired: false, transformFunction: null }, basemapId: { classPropertyName: "basemapId", publicName: "basemapId", isSignal: true, isRequired: false, transformFunction: null }, measureMode: { classPropertyName: "measureMode", publicName: "measureMode", isSignal: true, isRequired: false, transformFunction: null }, checkedMap: { classPropertyName: "checkedMap", publicName: "checkedMap", isSignal: true, isRequired: false, transformFunction: null }, layersOpen: { classPropertyName: "layersOpen", publicName: "layersOpen", isSignal: true, isRequired: false, transformFunction: null }, legendOpen: { classPropertyName: "legendOpen", publicName: "legendOpen", isSignal: true, isRequired: false, transformFunction: null }, helpOpen: { classPropertyName: "helpOpen", publicName: "helpOpen", isSignal: true, isRequired: false, transformFunction: null }, swipeActive: { classPropertyName: "swipeActive", publicName: "swipeActive", isSignal: true, isRequired: false, transformFunction: null }, searchOpen: { classPropertyName: "searchOpen", publicName: "searchOpen", isSignal: true, isRequired: false, transformFunction: null }, adminFilterOpen: { classPropertyName: "adminFilterOpen", publicName: "adminFilterOpen", isSignal: true, isRequired: false, transformFunction: null }, parcelOpen: { classPropertyName: "parcelOpen", publicName: "parcelOpen", isSignal: true, isRequired: false, transformFunction: null }, managedLayers: { classPropertyName: "managedLayers", publicName: "managedLayers", isSignal: true, isRequired: false, transformFunction: null }, searchResults: { classPropertyName: "searchResults", publicName: "searchResults", isSignal: true, isRequired: false, transformFunction: null }, selectedParcel: { classPropertyName: "selectedParcel", publicName: "selectedParcel", isSignal: true, isRequired: false, transformFunction: null }, adminCheckedKeys: { classPropertyName: "adminCheckedKeys", publicName: "adminCheckedKeys", isSignal: true, isRequired: false, transformFunction: null }, adminExpandedKeys: { classPropertyName: "adminExpandedKeys", publicName: "adminExpandedKeys", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { basemapId: "basemapIdChange", measureMode: "measureModeChange", checkedMap: "checkedMapChange", layersOpen: "layersOpenChange", legendOpen: "legendOpenChange", helpOpen: "helpOpenChange", swipeActive: "swipeActiveChange", searchOpen: "searchOpenChange", adminFilterOpen: "adminFilterOpenChange", parcelOpen: "parcelOpenChange", managedLayers: "managedLayersChange", searchResults: "searchResultsChange", selectedParcel: "selectedParcelChange", adminCheckedKeys: "adminCheckedKeysChange", adminExpandedKeys: "adminExpandedKeysChange", mapReady: "mapReady", mapClick: "mapClick", located: "located", locateDenied: "locateDenied", locateError: "locateError", actionClick: "actionClick", search: "search", searchReset: "searchReset", resultSelect: "resultSelect", parcelExport: "parcelExport", adminApply: "adminApply" }, host: { properties: { "style.height": "height()" }, classAttribute: "geo-map-shell-host" }, viewQueries: [{ propertyName: "snapshotRef", first: true, predicate: GeoMapSnapshotComponent, descendants: true, isSignal: true }, { propertyName: "zoomRef", first: true, predicate: GeoMapZoomComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"geo-map-shell\">\n <geo-map\n class=\"geo-map-shell__map\"\n [center]=\"center()\"\n [zoom]=\"zoom()\"\n [height]=\"'100%'\"\n [basemap]=\"basemap()\"\n [layers]=\"resolvedLayers()\"\n [showMousePosition]=\"showMousePosition()\"\n [showZoomControl]=\"false\"\n (mapReady)=\"onMapReady($event)\"\n (mapClick)=\"onMapClick($event)\"\n />\n\n @if (legendCatalogMissing()) {\n <div class=\"geo-map-shell__notice\">\n <geo-alert\n type=\"warning\"\n [showIcon]=\"true\"\n title=\"Ch\u01B0a c\u00F3 danh m\u1EE5c ch\u00FA gi\u1EA3i\"\n message=\"Danh m\u1EE5c lo\u1EA1i \u0111\u1EA5t v\u00E0 k\u00FD hi\u1EC7u/m\u00E0u c\u1EE7a t\u1EC9nh ch\u01B0a \u0111\u01B0\u1EE3c n\u1EA1p v\u00E0o h\u1EC7 th\u1ED1ng. B\u1EA3n \u0111\u1ED3 v\u1EABn hi\u1EC3n th\u1ECB b\u00ECnh th\u01B0\u1EDDng.\"\n />\n </div>\n }\n\n <div class=\"geo-map-shell__chrome-left\">\n <geo-map-toolbar\n class=\"geo-map-shell__toolbar\"\n [controller]=\"controller()\"\n [actions]=\"resolvedToolbarActions()\"\n [(checkedMap)]=\"checkedMap\"\n (actionClick)=\"onToolbarAction($event)\"\n (actionToggle)=\"onToolbarToggle($event)\"\n />\n\n <div class=\"geo-map-shell__panels\">\n <geo-map-search\n [(open)]=\"searchOpen\"\n [results]=\"searchResults()\"\n (search)=\"onSearch($event)\"\n (reset)=\"onSearchReset()\"\n (resultSelect)=\"onResultSelect($event)\"\n />\n <geo-map-admin-filter\n [(open)]=\"adminFilterOpen\"\n title=\"Chuy\u1EC3n v\u1ECB tr\u00ED\"\n [nodes]=\"adminNodes()\"\n [(checkedKeys)]=\"adminCheckedKeys\"\n [(expandedKeys)]=\"adminExpandedKeys\"\n (apply)=\"onAdminApply($event)\"\n (reset)=\"adminCheckedKeys.set([])\"\n (fitProvince)=\"onFitProvince()\"\n (closed)=\"onAdminClosed()\"\n />\n <geo-map-parcel-popup\n [(open)]=\"parcelOpen\"\n [parcel]=\"selectedParcel()\"\n [audience]=\"parcelAudience()\"\n (exportClick)=\"parcelExport.emit($event)\"\n (back)=\"onParcelBack()\"\n (closed)=\"onParcelClosed()\"\n />\n <geo-map-layers-drawer\n [controller]=\"controller()\"\n [(open)]=\"layersOpen\"\n [(layers)]=\"managedLayers\"\n />\n <geo-map-legend\n [(open)]=\"legendOpen\"\n [items]=\"legendItems()\"\n />\n </div>\n </div>\n\n <!-- Headless bridges: zoom/fullscreen + snapshot (driven by toolbar actions). -->\n <geo-map-zoom\n class=\"geo-map-shell__zoom-bridge\"\n [controller]=\"controller()\"\n [showNav]=\"showNav()\"\n [provinceExtent]=\"provinceExtent()\"\n />\n <geo-map-snapshot\n class=\"geo-map-shell__snapshot-bridge\"\n [controller]=\"controller()\"\n />\n\n <div class=\"geo-map-shell__top-right\">\n <ng-content select=\"[geoMapShellTopRight]\" />\n </div>\n\n <div class=\"geo-map-shell__bottom-right\">\n <geo-map-basemap-switcher\n [options]=\"basemapOptions()\"\n [(selectedId)]=\"basemapId\"\n (basemapChange)=\"onBasemapChange($event)\"\n />\n </div>\n\n <div class=\"geo-map-shell__status\">\n @if (locationLabel()) {\n <geo-map-location-chip [label]=\"locationLabel()\" />\n }\n <geo-map-measure\n [controller]=\"controller()\"\n [(mode)]=\"measureMode\"\n />\n </div>\n\n <geo-map-swipe\n [controller]=\"controller()\"\n [(active)]=\"swipeActive\"\n />\n\n <geo-map-help [(open)]=\"helpOpen\" />\n</div>\n", styles: [".geo-map-shell-host{display:block;min-height:360px}.geo-map-shell{position:relative;width:100%;height:100%;min-height:inherit;overflow:hidden;border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-neutral-100)}.geo-map-shell:fullscreen,.geo-map-shell:-webkit-full-screen{width:100%;height:100%;min-height:100%;border:0;border-radius:0;background:var(--geo-color-neutral-100)}.geo-map-shell:fullscreen>.cdk-overlay-container,.geo-map-shell:-webkit-full-screen>.cdk-overlay-container{z-index:1200}.geo-map-shell__map{display:block;width:100%;height:100%}.geo-map-shell__chrome-left{position:absolute;top:16px;left:16px;z-index:6;display:flex;flex-direction:column;align-items:flex-start;gap:8px;max-width:calc(100% - 32px);max-height:calc(100% - 172px);overflow:visible;pointer-events:none}.geo-map-shell__chrome-left>*{pointer-events:auto}.geo-map-shell__toolbar{flex-shrink:0}.geo-map-shell__panels{display:flex;flex-direction:column;align-items:flex-start;gap:8px;width:min(420px,100%);min-height:0;overflow:visible;pointer-events:none}.geo-map-shell__panels>*{pointer-events:auto}.geo-map-shell__panels .geo-map-search,.geo-map-shell__panels .geo-map-admin-filter,.geo-map-shell__panels .geo-map-parcel-popup,.geo-map-shell__panels .geo-map-layers-drawer,.geo-map-shell__panels .geo-map-legend{max-height:min(640px,100dvh - 100px);overflow:auto}.geo-map-shell__snapshot-bridge,.geo-map-shell__zoom-bridge{position:absolute;width:0;height:0;overflow:hidden;pointer-events:none;opacity:0}.geo-map-shell__bottom-left{position:absolute;left:16px;bottom:72px;z-index:5;display:flex;flex-direction:column;align-items:flex-start;gap:8px;max-width:min(300px,100% - 120px);pointer-events:none}.geo-map-shell__bottom-left>*{pointer-events:auto}.geo-map-shell__notice{position:absolute;top:16px;left:50%;z-index:8;transform:translate(-50%);width:min(480px,100% - 32px);pointer-events:none}.geo-map-shell__notice>*{pointer-events:auto}.geo-map-shell__top-right{position:absolute;top:16px;right:16px;z-index:7;display:flex;align-items:center;justify-content:flex-end;height:64px;max-width:min(360px,100% - 32px);pointer-events:none}.geo-map-shell__top-right>*{pointer-events:auto}.geo-map-shell__bottom-right{position:absolute;right:16px;bottom:24px;z-index:5;display:flex;flex-direction:column;align-items:flex-end;gap:8px;pointer-events:none}.geo-map-shell__bottom-right>*{pointer-events:auto}.geo-map-shell__status{position:absolute;left:50%;bottom:24px;z-index:5;display:flex;flex-direction:column;align-items:center;gap:8px;max-width:min(480px,100% - 32px);transform:translate(-50%);pointer-events:none}.geo-map-shell__status>*{pointer-events:auto}.geo-map-shell .geo-map__mouse-position,.geo-map-shell .ol-scale-line{display:none!important}.geo-map-shell .ol-attribution{display:none}\n"], dependencies: [{ kind: "component", type: GeoMapComponent, selector: "geo-map", inputs: ["center", "zoom", "minZoom", "maxZoom", "viewProjection", "basemap", "layers", "height", "registerProjections", "projections", "showMousePosition", "mousePositionProjection", "showZoomControl"], outputs: ["mapReady", "mapClick", "viewChange", "initError"] }, { kind: "component", type: GeoMapToolbarComponent, selector: "geo-map-toolbar", inputs: ["controller", "actions", "compact", "checkedMap"], outputs: ["checkedMapChange", "actionClick", "actionToggle"] }, { kind: "component", type: GeoMapZoomComponent, selector: "geo-map-zoom", inputs: ["controller", "showNav", "showFitProvince", "provinceExtent", "fullscreenTarget"] }, { kind: "component", type: GeoMapSnapshotComponent, selector: "geo-map-snapshot", inputs: ["controller", "label", "filename"], outputs: ["captured", "captureError"] }, { kind: "component", type: GeoMapMeasureComponent, selector: "geo-map-measure", inputs: ["controller", "mode", "showResult"], outputs: ["modeChange", "measureChange"] }, { kind: "component", type: GeoMapLayersDrawerComponent, selector: "geo-map-layers-drawer", inputs: ["controller", "open", "title", "legendItems", "showOpacity", "showLegend", "layers"], outputs: ["openChange", "layersChange", "closed"] }, { kind: "component", type: GeoMapLegendComponent, selector: "geo-map-legend", inputs: ["title", "items", "open"], outputs: ["openChange", "closed"] }, { kind: "component", type: GeoMapHelpComponent, selector: "geo-map-help", inputs: ["open", "title", "sections"], outputs: ["openChange"] }, { kind: "component", type: GeoMapSwipeComponent, selector: "geo-map-swipe", inputs: ["controller", "active", "position", "layerId"], outputs: ["activeChange", "positionChange"] }, { kind: "component", type: GeoMapSearchComponent, selector: "geo-map-search", inputs: ["open", "title", "mode", "results", "loading", "pageIndex", "pageSize", "total", "emptyText"], outputs: ["openChange", "modeChange", "pageIndexChange", "pageSizeChange", "search", "reset", "resultSelect", "closed"] }, { kind: "component", type: GeoMapAdminFilterComponent, selector: "geo-map-admin-filter", inputs: ["open", "title", "nodes", "checkedKeys", "expandedKeys"], outputs: ["openChange", "checkedKeysChange", "expandedKeysChange", "apply", "reset", "fitProvince", "closed", "selectionChange"] }, { kind: "component", type: GeoMapParcelPopupComponent, selector: "geo-map-parcel-popup", inputs: ["open", "title", "parcel", "audience", "showExport"], outputs: ["openChange", "closed", "back", "exportClick", "diagramClick"] }, { kind: "component", type: GeoMapLocationChipComponent, selector: "geo-map-location-chip", inputs: ["label", "icon"] }, { kind: "component", type: GeoMapBasemapSwitcherComponent, selector: "geo-map-basemap-switcher", inputs: ["options", "selectedId", "label", "tooltip"], outputs: ["selectedIdChange", "basemapChange"] }, { kind: "component", type: GeoAlertComponent, selector: "geo-alert", inputs: ["type", "title", "message", "closable", "visible", "showIcon"], outputs: ["visibleChange", "closed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
7986
8118
|
}
|
|
7987
8119
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapShellComponent, decorators: [{
|
|
7988
8120
|
type: Component,
|
|
@@ -8001,11 +8133,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
8001
8133
|
GeoMapParcelPopupComponent,
|
|
8002
8134
|
GeoMapLocationChipComponent,
|
|
8003
8135
|
GeoMapBasemapSwitcherComponent,
|
|
8004
|
-
|
|
8136
|
+
GeoAlertComponent,
|
|
8005
8137
|
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
8006
8138
|
class: 'geo-map-shell-host',
|
|
8007
8139
|
'[style.height]': 'height()',
|
|
8008
|
-
}, template: "<div class=\"geo-map-shell\">\n <geo-map\n class=\"geo-map-shell__map\"\n [center]=\"center()\"\n [zoom]=\"zoom()\"\n [height]=\"'100%'\"\n [basemap]=\"basemap()\"\n [layers]=\"resolvedLayers()\"\n [showMousePosition]=\"showMousePosition()\"\n [showZoomControl]=\"false\"\n (mapReady)=\"onMapReady($event)\"\n (mapClick)=\"onMapClick($event)\"\n />\n\n <div class=\"geo-map-shell__chrome-left\">\n <geo-map-toolbar\n class=\"geo-map-shell__toolbar\"\n [controller]=\"controller()\"\n [actions]=\"resolvedToolbarActions()\"\n [(checkedMap)]=\"checkedMap\"\n (actionClick)=\"onToolbarAction($event)\"\n (actionToggle)=\"onToolbarToggle($event)\"\n />\n\n <div class=\"geo-map-shell__panels\">\n <geo-map-search\n [(open)]=\"searchOpen\"\n [results]=\"searchResults()\"\n (search)=\"onSearch($event)\"\n (reset)=\"onSearchReset()\"\n (resultSelect)=\"onResultSelect($event)\"\n />\n <geo-map-admin-filter\n [(open)]=\"adminFilterOpen\"\n title=\"Chuy\u1EC3n v\u1ECB tr\u00ED\"\n [nodes]=\"adminNodes()\"\n [
|
|
8140
|
+
}, template: "<div class=\"geo-map-shell\">\n <geo-map\n class=\"geo-map-shell__map\"\n [center]=\"center()\"\n [zoom]=\"zoom()\"\n [height]=\"'100%'\"\n [basemap]=\"basemap()\"\n [layers]=\"resolvedLayers()\"\n [showMousePosition]=\"showMousePosition()\"\n [showZoomControl]=\"false\"\n (mapReady)=\"onMapReady($event)\"\n (mapClick)=\"onMapClick($event)\"\n />\n\n @if (legendCatalogMissing()) {\n <div class=\"geo-map-shell__notice\">\n <geo-alert\n type=\"warning\"\n [showIcon]=\"true\"\n title=\"Ch\u01B0a c\u00F3 danh m\u1EE5c ch\u00FA gi\u1EA3i\"\n message=\"Danh m\u1EE5c lo\u1EA1i \u0111\u1EA5t v\u00E0 k\u00FD hi\u1EC7u/m\u00E0u c\u1EE7a t\u1EC9nh ch\u01B0a \u0111\u01B0\u1EE3c n\u1EA1p v\u00E0o h\u1EC7 th\u1ED1ng. B\u1EA3n \u0111\u1ED3 v\u1EABn hi\u1EC3n th\u1ECB b\u00ECnh th\u01B0\u1EDDng.\"\n />\n </div>\n }\n\n <div class=\"geo-map-shell__chrome-left\">\n <geo-map-toolbar\n class=\"geo-map-shell__toolbar\"\n [controller]=\"controller()\"\n [actions]=\"resolvedToolbarActions()\"\n [(checkedMap)]=\"checkedMap\"\n (actionClick)=\"onToolbarAction($event)\"\n (actionToggle)=\"onToolbarToggle($event)\"\n />\n\n <div class=\"geo-map-shell__panels\">\n <geo-map-search\n [(open)]=\"searchOpen\"\n [results]=\"searchResults()\"\n (search)=\"onSearch($event)\"\n (reset)=\"onSearchReset()\"\n (resultSelect)=\"onResultSelect($event)\"\n />\n <geo-map-admin-filter\n [(open)]=\"adminFilterOpen\"\n title=\"Chuy\u1EC3n v\u1ECB tr\u00ED\"\n [nodes]=\"adminNodes()\"\n [(checkedKeys)]=\"adminCheckedKeys\"\n [(expandedKeys)]=\"adminExpandedKeys\"\n (apply)=\"onAdminApply($event)\"\n (reset)=\"adminCheckedKeys.set([])\"\n (fitProvince)=\"onFitProvince()\"\n (closed)=\"onAdminClosed()\"\n />\n <geo-map-parcel-popup\n [(open)]=\"parcelOpen\"\n [parcel]=\"selectedParcel()\"\n [audience]=\"parcelAudience()\"\n (exportClick)=\"parcelExport.emit($event)\"\n (back)=\"onParcelBack()\"\n (closed)=\"onParcelClosed()\"\n />\n <geo-map-layers-drawer\n [controller]=\"controller()\"\n [(open)]=\"layersOpen\"\n [(layers)]=\"managedLayers\"\n />\n <geo-map-legend\n [(open)]=\"legendOpen\"\n [items]=\"legendItems()\"\n />\n </div>\n </div>\n\n <!-- Headless bridges: zoom/fullscreen + snapshot (driven by toolbar actions). -->\n <geo-map-zoom\n class=\"geo-map-shell__zoom-bridge\"\n [controller]=\"controller()\"\n [showNav]=\"showNav()\"\n [provinceExtent]=\"provinceExtent()\"\n />\n <geo-map-snapshot\n class=\"geo-map-shell__snapshot-bridge\"\n [controller]=\"controller()\"\n />\n\n <div class=\"geo-map-shell__top-right\">\n <ng-content select=\"[geoMapShellTopRight]\" />\n </div>\n\n <div class=\"geo-map-shell__bottom-right\">\n <geo-map-basemap-switcher\n [options]=\"basemapOptions()\"\n [(selectedId)]=\"basemapId\"\n (basemapChange)=\"onBasemapChange($event)\"\n />\n </div>\n\n <div class=\"geo-map-shell__status\">\n @if (locationLabel()) {\n <geo-map-location-chip [label]=\"locationLabel()\" />\n }\n <geo-map-measure\n [controller]=\"controller()\"\n [(mode)]=\"measureMode\"\n />\n </div>\n\n <geo-map-swipe\n [controller]=\"controller()\"\n [(active)]=\"swipeActive\"\n />\n\n <geo-map-help [(open)]=\"helpOpen\" />\n</div>\n", styles: [".geo-map-shell-host{display:block;min-height:360px}.geo-map-shell{position:relative;width:100%;height:100%;min-height:inherit;overflow:hidden;border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-neutral-100)}.geo-map-shell:fullscreen,.geo-map-shell:-webkit-full-screen{width:100%;height:100%;min-height:100%;border:0;border-radius:0;background:var(--geo-color-neutral-100)}.geo-map-shell:fullscreen>.cdk-overlay-container,.geo-map-shell:-webkit-full-screen>.cdk-overlay-container{z-index:1200}.geo-map-shell__map{display:block;width:100%;height:100%}.geo-map-shell__chrome-left{position:absolute;top:16px;left:16px;z-index:6;display:flex;flex-direction:column;align-items:flex-start;gap:8px;max-width:calc(100% - 32px);max-height:calc(100% - 172px);overflow:visible;pointer-events:none}.geo-map-shell__chrome-left>*{pointer-events:auto}.geo-map-shell__toolbar{flex-shrink:0}.geo-map-shell__panels{display:flex;flex-direction:column;align-items:flex-start;gap:8px;width:min(420px,100%);min-height:0;overflow:visible;pointer-events:none}.geo-map-shell__panels>*{pointer-events:auto}.geo-map-shell__panels .geo-map-search,.geo-map-shell__panels .geo-map-admin-filter,.geo-map-shell__panels .geo-map-parcel-popup,.geo-map-shell__panels .geo-map-layers-drawer,.geo-map-shell__panels .geo-map-legend{max-height:min(640px,100dvh - 100px);overflow:auto}.geo-map-shell__snapshot-bridge,.geo-map-shell__zoom-bridge{position:absolute;width:0;height:0;overflow:hidden;pointer-events:none;opacity:0}.geo-map-shell__bottom-left{position:absolute;left:16px;bottom:72px;z-index:5;display:flex;flex-direction:column;align-items:flex-start;gap:8px;max-width:min(300px,100% - 120px);pointer-events:none}.geo-map-shell__bottom-left>*{pointer-events:auto}.geo-map-shell__notice{position:absolute;top:16px;left:50%;z-index:8;transform:translate(-50%);width:min(480px,100% - 32px);pointer-events:none}.geo-map-shell__notice>*{pointer-events:auto}.geo-map-shell__top-right{position:absolute;top:16px;right:16px;z-index:7;display:flex;align-items:center;justify-content:flex-end;height:64px;max-width:min(360px,100% - 32px);pointer-events:none}.geo-map-shell__top-right>*{pointer-events:auto}.geo-map-shell__bottom-right{position:absolute;right:16px;bottom:24px;z-index:5;display:flex;flex-direction:column;align-items:flex-end;gap:8px;pointer-events:none}.geo-map-shell__bottom-right>*{pointer-events:auto}.geo-map-shell__status{position:absolute;left:50%;bottom:24px;z-index:5;display:flex;flex-direction:column;align-items:center;gap:8px;max-width:min(480px,100% - 32px);transform:translate(-50%);pointer-events:none}.geo-map-shell__status>*{pointer-events:auto}.geo-map-shell .geo-map__mouse-position,.geo-map-shell .ol-scale-line{display:none!important}.geo-map-shell .ol-attribution{display:none}\n"] }]
|
|
8009
8141
|
}], ctorParameters: () => [] });
|
|
8010
8142
|
|
|
8011
8143
|
/*
|
|
@@ -8016,5 +8148,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
8016
8148
|
* Generated bundle index. Do not edit.
|
|
8017
8149
|
*/
|
|
8018
8150
|
|
|
8019
|
-
export { DEFAULT_UI_ROW_ACTIONS, DEFAULT_UI_TABLE_PAGE_SIZE_OPTIONS, GEO_ICON_SIZE_MAP, GEO_LAYOUT_DEFAULT_NOTIFICATIONS, GEO_LAYOUT_DEFAULT_SUBSYSTEMS, GEO_LAYOUT_DEFAULT_USER, GEO_LAYOUT_DEFAULT_USER_MENU, GEO_MAP_BASEMAP_LAYER_ID, GEO_MAP_BUILTIN_PROJECTIONS, GEO_MAP_DEFAULT_BASEMAP_OPTIONS, GEO_MAP_DEFAULT_CENTER, GEO_MAP_DEFAULT_HEIGHT, GEO_MAP_DEFAULT_HELP_SECTIONS, GEO_MAP_DEFAULT_MAX_ZOOM, GEO_MAP_DEFAULT_MIN_ZOOM, GEO_MAP_DEFAULT_PLANNING_LAYERS, GEO_MAP_DEFAULT_PROVINCE_EXTENT_4326, GEO_MAP_DEFAULT_TOOLBAR_ACTIONS, GEO_MAP_DEFAULT_VIEW_PROJECTION, GEO_MAP_DEFAULT_ZOOM, GEO_MAP_DEMO_ADMIN_NODES, GEO_MAP_DEMO_LEGEND_ITEMS, GEO_MAP_DEMO_PARCEL_DETAIL, GEO_MAP_DEMO_THEMATIC_LAYERS, GEO_MAP_ENV_PLACEHOLDERS, GEO_MAP_ESRI_IMAGERY_URL, GEO_MAP_ESRI_STREETS_URL, GEO_MAP_ESRI_TRANSPORT_URL, GEO_MAP_HIGHLIGHT_LAYER_ID, GEO_MAP_LOCATE_TOOLBAR_ACTION, GEO_MAP_MEASURE_LAYER_ID, GEO_MAP_SELECTION_LAYER_ID, GEO_MAP_TOOLBAR_ASSET_BASE, GEO_MAP_TOOLBAR_ICONS, GEO_MAP_TRAFFIC_LAYER_ID, GEO_MAP_TRAFFIC_OVERLAY, GEO_STATUS_COLOR_MAP, GEO_STATUS_LABELS, GEO_TOAST_DEFAULT_TITLES, GEO_TOAST_ICONS, GEO_TYPOGRAPHY_TAG, GEO_TYPOGRAPHY_VARIANTS, GeoAlertComponent, GeoBackButtonComponent, GeoBreadcrumbComponent, GeoButtonComponent, GeoChartComponent, GeoCheckboxComponent, GeoColumnPickerComponent, GeoConfirmModalComponent, GeoDashboardComponent, GeoDatePickerComponent, GeoDateRangePickerComponent, GeoEmptyStateComponent, GeoFeedbackFormComponent, GeoFilePickerComponent, GeoForgotPasswordComponent, GeoFormModalComponent, GeoIconComponent, GeoInputComponent, GeoLayoutActionsDirective, GeoLayoutComponent, GeoLayoutFooterComponent, GeoLayoutHeaderActionsComponent, GeoLayoutHeaderComponent, GeoLayoutSidebarComponent, GeoListPageComponent, GeoLoginComponent, GeoMapAdminFilterComponent, GeoMapBasemapSwitcherComponent, GeoMapComponent, GeoMapController, GeoMapHelpComponent, GeoMapLayerCardComponent, GeoMapLayerPanelComponent, GeoMapLayerService, GeoMapLayersDrawerComponent, GeoMapLegendComponent, GeoMapLocateComponent, GeoMapLocationChipComponent, GeoMapMeasureComponent, GeoMapOpacityComponent, GeoMapParcelPopupComponent, GeoMapProjectionError, GeoMapProjectionService, GeoMapSearchComponent, GeoMapService, GeoMapShellComponent, GeoMapSnapshotComponent, GeoMapSwipeComponent, GeoMapToolbarComponent, GeoMapZoomComponent, GeoOverlapResultComponent, GeoPageHeaderComponent, GeoPageTitleComponent, GeoPaginationComponent, GeoRadioComponent, GeoRowActionsComponent, GeoSelectComponent, GeoSliderComponent, GeoStatCardComponent, GeoStatusTagComponent, GeoStepFormLayoutComponent, GeoStepperComponent, GeoTabDirective, GeoTableComponent, GeoTableFilterComponent, GeoTablePaginationComponent, GeoTableToolbarComponent, GeoTabsComponent, GeoTextareaComponent, GeoToastComponent, GeoToastService, GeoTreeComponent, GeoTypographyComponent, GeoUploadComponent, NgZorroAntdModule, UI_ALERT_DEFAULT_TITLES, UI_STATUS_LABELS, UI_TABLE_MOBILE_BREAKPOINT, applyColumnPickerState, cssVar, geoColorCssVars, geoColorTokens, geoFormatBytes, geoFormatSpeed, geoRadiusCssVars, geoRadiusTokens, geoShadowTokens, geoTypographyTokens, geoUploadPercent, loadColumnPickerState, mergeColumnPickerItems, pickInlineRowActions, pickOverflowRowActions, saveColumnPickerState };
|
|
8151
|
+
export { DEFAULT_UI_ROW_ACTIONS, DEFAULT_UI_TABLE_PAGE_SIZE_OPTIONS, GEO_ICON_SIZE_MAP, GEO_LAYOUT_DEFAULT_NOTIFICATIONS, GEO_LAYOUT_DEFAULT_SUBSYSTEMS, GEO_LAYOUT_DEFAULT_USER, GEO_LAYOUT_DEFAULT_USER_MENU, GEO_MAP_BASEMAP_LAYER_ID, GEO_MAP_BUILTIN_PROJECTIONS, GEO_MAP_DEFAULT_BASEMAP_OPTIONS, GEO_MAP_DEFAULT_CENTER, GEO_MAP_DEFAULT_HEIGHT, GEO_MAP_DEFAULT_HELP_SECTIONS, GEO_MAP_DEFAULT_MAX_ZOOM, GEO_MAP_DEFAULT_MIN_ZOOM, GEO_MAP_DEFAULT_PLANNING_LAYERS, GEO_MAP_DEFAULT_PROVINCE_EXTENT_4326, GEO_MAP_DEFAULT_TOOLBAR_ACTIONS, GEO_MAP_DEFAULT_VIEW_PROJECTION, GEO_MAP_DEFAULT_ZOOM, GEO_MAP_DEMO_ADMIN_NODES, GEO_MAP_DEMO_LEGEND_ITEMS, GEO_MAP_DEMO_PARCEL_DETAIL, GEO_MAP_DEMO_THEMATIC_LAYERS, GEO_MAP_ENV_PLACEHOLDERS, GEO_MAP_ESRI_IMAGERY_URL, GEO_MAP_ESRI_STREETS_URL, GEO_MAP_ESRI_TRANSPORT_URL, GEO_MAP_HIGHLIGHT_LAYER_ID, GEO_MAP_LOCATE_TOOLBAR_ACTION, GEO_MAP_MEASURE_LAYER_ID, GEO_MAP_SELECTION_LAYER_ID, GEO_MAP_TOOLBAR_ASSET_BASE, GEO_MAP_TOOLBAR_ICONS, GEO_MAP_TRAFFIC_LAYER_ID, GEO_MAP_TRAFFIC_OVERLAY, GEO_STATUS_COLOR_MAP, GEO_STATUS_LABELS, GEO_TOAST_DEFAULT_TITLES, GEO_TOAST_ICONS, GEO_TYPOGRAPHY_TAG, GEO_TYPOGRAPHY_VARIANTS, GeoAccordionComponent, GeoAccordionPanelDirective, GeoAlertComponent, GeoBackButtonComponent, GeoBreadcrumbComponent, GeoButtonComponent, GeoChartComponent, GeoCheckboxComponent, GeoColumnPickerComponent, GeoConfirmModalComponent, GeoDashboardComponent, GeoDatePickerComponent, GeoDateRangePickerComponent, GeoDetailViewComponent, GeoDetailViewItemDirective, GeoEmptyStateComponent, GeoFeedbackFormComponent, GeoFilePickerComponent, GeoForgotPasswordComponent, GeoFormModalComponent, GeoIconComponent, GeoInputComponent, GeoLayoutActionsDirective, GeoLayoutComponent, GeoLayoutFooterComponent, GeoLayoutHeaderActionsComponent, GeoLayoutHeaderComponent, GeoLayoutSidebarComponent, GeoListPageComponent, GeoLoginComponent, GeoMapAdminFilterComponent, GeoMapBasemapSwitcherComponent, GeoMapComponent, GeoMapController, GeoMapHelpComponent, GeoMapLayerCardComponent, GeoMapLayerPanelComponent, GeoMapLayerService, GeoMapLayersDrawerComponent, GeoMapLegendComponent, GeoMapLocateComponent, GeoMapLocationChipComponent, GeoMapMeasureComponent, GeoMapOpacityComponent, GeoMapParcelPopupComponent, GeoMapProjectionError, GeoMapProjectionService, GeoMapSearchComponent, GeoMapService, GeoMapShellComponent, GeoMapSnapshotComponent, GeoMapSwipeComponent, GeoMapToolbarComponent, GeoMapZoomComponent, GeoOverlapResultComponent, GeoPageHeaderComponent, GeoPageTitleComponent, GeoPaginationComponent, GeoRadioComponent, GeoRowActionsComponent, GeoSelectComponent, GeoSliderComponent, GeoStatCardComponent, GeoStatusTagComponent, GeoStepFormLayoutComponent, GeoStepperComponent, GeoSwitchComponent, GeoTabDirective, GeoTableComponent, GeoTableFilterComponent, GeoTablePaginationComponent, GeoTableToolbarComponent, GeoTabsComponent, GeoTextareaComponent, GeoToastComponent, GeoToastService, GeoTreeComponent, GeoTypographyComponent, GeoUploadComponent, NgZorroAntdModule, UI_ALERT_DEFAULT_TITLES, UI_STATUS_LABELS, UI_TABLE_MOBILE_BREAKPOINT, applyColumnPickerState, cssVar, geoColorCssVars, geoColorTokens, geoFormatBytes, geoFormatSpeed, geoRadiusCssVars, geoRadiusTokens, geoShadowTokens, geoTypographyTokens, geoUploadPercent, loadColumnPickerState, mergeColumnPickerItems, pickInlineRowActions, pickOverflowRowActions, saveColumnPickerState };
|
|
8020
8152
|
//# sourceMappingURL=geoit-ui.mjs.map
|