@geoit/ui 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +12 -8
- package/README.md +49 -62
- package/ai/AGENTS.md +38 -28
- package/ai/README.md +35 -1
- package/ai/catalog.json +2796 -288
- package/ai/components/geo-alert.md +3 -3
- package/ai/components/geo-back-button.md +2 -2
- package/ai/components/geo-breadcrumb.md +1 -1
- package/ai/components/geo-button.md +3 -3
- package/ai/components/geo-chart.md +103 -0
- package/ai/components/geo-checkbox.md +4 -6
- package/ai/components/geo-column-picker.md +3 -3
- package/ai/components/geo-confirm-modal.md +4 -5
- package/ai/components/geo-dashboard.md +91 -0
- package/ai/components/geo-date-picker.md +5 -3
- package/ai/components/geo-date-range-picker.md +5 -3
- package/ai/components/geo-empty-state.md +75 -0
- package/ai/components/geo-feedback-form.md +97 -0
- package/ai/components/geo-file-picker.md +4 -2
- package/ai/components/geo-forgot-password.md +78 -0
- package/ai/components/geo-form-modal.md +9 -10
- package/ai/components/geo-icon.md +3 -3
- package/ai/components/geo-input.md +8 -6
- package/ai/components/geo-layout-footer.md +70 -0
- package/ai/components/geo-layout-header-actions.md +82 -0
- package/ai/components/geo-layout-header.md +89 -0
- package/ai/components/geo-layout-sidebar.md +86 -0
- package/ai/components/geo-layout.md +155 -0
- package/ai/components/geo-list-page.md +72 -0
- package/ai/components/geo-login.md +94 -0
- package/ai/components/geo-map-admin-filter.md +80 -0
- package/ai/components/geo-map-basemap-switcher.md +75 -0
- package/ai/components/geo-map-help.md +72 -0
- package/ai/components/geo-map-layer-card.md +73 -0
- package/ai/components/geo-map-layer-panel.md +75 -0
- package/ai/components/geo-map-layers-drawer.md +78 -0
- package/ai/components/geo-map-legend.md +74 -0
- package/ai/components/geo-map-locate.md +75 -0
- package/ai/components/geo-map-location-chip.md +71 -0
- package/ai/components/geo-map-measure.md +74 -0
- package/ai/components/geo-map-opacity.md +75 -0
- package/ai/components/geo-map-parcel-popup.md +79 -0
- package/ai/components/geo-map-search.md +83 -0
- package/ai/components/geo-map-shell.md +110 -0
- package/ai/components/geo-map-snapshot.md +75 -0
- package/ai/components/geo-map-swipe.md +73 -0
- package/ai/components/geo-map-toolbar.md +76 -0
- package/ai/components/geo-map-zoom.md +74 -0
- package/ai/components/geo-map.md +205 -0
- package/ai/components/geo-overlap-result.md +88 -0
- package/ai/components/geo-page-header.md +72 -0
- package/ai/components/geo-page-title.md +1 -1
- package/ai/components/geo-pagination.md +4 -7
- package/ai/components/geo-radio.md +3 -1
- package/ai/components/geo-row-actions.md +3 -3
- package/ai/components/geo-select.md +4 -2
- package/ai/components/geo-slider.md +5 -7
- package/ai/components/geo-stat-card.md +98 -0
- package/ai/components/geo-status-tag.md +2 -2
- package/ai/components/geo-step-form-layout.md +7 -8
- package/ai/components/geo-stepper.md +3 -4
- package/ai/components/geo-table-filter.md +4 -5
- package/ai/components/geo-table-pagination.md +4 -7
- package/ai/components/geo-table-toolbar.md +7 -7
- package/ai/components/geo-table.md +17 -20
- package/ai/components/geo-tabs.md +4 -6
- package/ai/components/geo-textarea.md +4 -2
- package/ai/components/geo-toast.md +4 -4
- package/ai/components/geo-tree.md +4 -6
- package/ai/components/geo-typography.md +1 -1
- package/ai/components/geo-upload.md +9 -10
- package/ai/mockup.html +1194 -0
- package/ai/recipes.md +98 -85
- package/esm2022/lib/figma/geo-alert/geo-alert.component.mjs +19 -36
- package/esm2022/lib/figma/geo-back-button/geo-back-button.component.mjs +14 -24
- package/esm2022/lib/figma/geo-breadcrumb/geo-breadcrumb.component.mjs +8 -11
- package/esm2022/lib/figma/geo-button/geo-button.component.mjs +30 -59
- package/esm2022/lib/figma/geo-chart/geo-chart.component.mjs +88 -0
- package/esm2022/lib/figma/geo-chart/geo-chart.types.mjs +2 -0
- package/esm2022/lib/figma/geo-checkbox/geo-checkbox.component.mjs +11 -22
- package/esm2022/lib/figma/geo-confirm-modal/geo-confirm-modal.component.mjs +22 -54
- package/esm2022/lib/figma/geo-dashboard/geo-dashboard.component.mjs +49 -0
- package/esm2022/lib/figma/geo-dashboard/geo-dashboard.types.mjs +2 -0
- package/esm2022/lib/figma/geo-date-picker/geo-date-picker.component.mjs +48 -78
- package/esm2022/lib/figma/geo-date-range-picker/geo-date-range-picker.component.mjs +47 -75
- package/esm2022/lib/figma/geo-empty-state/geo-empty-state.component.mjs +25 -0
- package/esm2022/lib/figma/geo-feedback-form/geo-feedback-form.component.mjs +75 -0
- package/esm2022/lib/figma/geo-feedback-form/geo-feedback-form.types.mjs +2 -0
- package/esm2022/lib/figma/geo-file-picker/geo-file-picker.component.mjs +59 -81
- package/esm2022/lib/figma/geo-forgot-password/geo-forgot-password.component.mjs +51 -0
- package/esm2022/lib/figma/geo-form-modal/geo-form-modal.component.mjs +45 -112
- package/esm2022/lib/figma/geo-icon/geo-icon.component.mjs +22 -32
- package/esm2022/lib/figma/geo-input/geo-input.component.mjs +41 -70
- package/esm2022/lib/figma/geo-layout/footer/geo-layout-footer.component.mjs +18 -0
- package/esm2022/lib/figma/geo-layout/geo-layout-actions.directive.mjs +15 -0
- package/esm2022/lib/figma/geo-layout/geo-layout.component.mjs +79 -0
- package/esm2022/lib/figma/geo-layout/geo-layout.types.mjs +42 -0
- package/esm2022/lib/figma/geo-layout/header/geo-layout-header.component.mjs +60 -0
- package/esm2022/lib/figma/geo-layout/header-actions/geo-layout-header-actions.component.mjs +70 -0
- package/esm2022/lib/figma/geo-layout/sidebar/geo-layout-sidebar.component.mjs +90 -0
- package/esm2022/lib/figma/geo-list-page/geo-list-page.component.mjs +22 -0
- package/esm2022/lib/figma/geo-login/geo-login.component.mjs +58 -0
- package/esm2022/lib/figma/geo-login/geo-login.types.mjs +2 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-admin-filter/geo-map-admin-filter.component.mjs +52 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-basemap-switcher/geo-map-basemap-switcher.component.mjs +61 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-help/geo-map-help.component.mjs +26 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-layer-card/geo-map-layer-card.component.mjs +24 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-layer-panel/geo-map-layer-panel.component.mjs +146 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-layers-drawer/geo-map-layers-drawer.component.mjs +37 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-legend/geo-map-legend.component.mjs +30 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-locate/geo-map-locate.component.mjs +72 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-location-chip/geo-map-location-chip.component.mjs +21 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-measure/geo-map-measure.component.mjs +375 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-opacity/geo-map-opacity.component.mjs +94 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-parcel-popup/geo-map-parcel-popup.component.mjs +136 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-search/geo-map-search.component.mjs +182 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-shell/geo-map-shell.component.mjs +577 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-snapshot/geo-map-snapshot.component.mjs +93 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-swipe/geo-map-swipe.component.mjs +129 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-toolbar/geo-map-toolbar.component.mjs +64 -0
- package/esm2022/lib/figma/geo-map/chrome/geo-map-zoom/geo-map-zoom.component.mjs +295 -0
- package/esm2022/lib/figma/geo-map/geo-map-toolbar.icons.mjs +18 -0
- package/esm2022/lib/figma/geo-map/geo-map.component.mjs +144 -0
- package/esm2022/lib/figma/geo-map/geo-map.constants.mjs +497 -0
- package/esm2022/lib/figma/geo-map/geo-map.controller.mjs +71 -0
- package/esm2022/lib/figma/geo-map/geo-map.types.mjs +2 -0
- package/esm2022/lib/figma/geo-map/services/geo-map-layer.service.mjs +368 -0
- package/esm2022/lib/figma/geo-map/services/geo-map-projection.service.mjs +110 -0
- package/esm2022/lib/figma/geo-map/services/geo-map.service.mjs +540 -0
- package/esm2022/lib/figma/geo-map/utils/geo-map-fullscreen-overlay.util.mjs +47 -0
- package/esm2022/lib/figma/geo-map/utils/geo-map-interactions.util.mjs +30 -0
- package/esm2022/lib/figma/geo-overlap-result/geo-overlap-result.component.mjs +25 -0
- package/esm2022/lib/figma/geo-overlap-result/geo-overlap-result.types.mjs +2 -0
- package/esm2022/lib/figma/geo-page-header/geo-page-header.component.mjs +23 -0
- package/esm2022/lib/figma/geo-page-title/geo-page-title.component.mjs +20 -35
- package/esm2022/lib/figma/geo-pagination/geo-pagination.component.mjs +13 -43
- package/esm2022/lib/figma/geo-radio/geo-radio.component.mjs +32 -52
- package/esm2022/lib/figma/geo-select/geo-select.component.mjs +46 -72
- package/esm2022/lib/figma/geo-slider/geo-slider.component.mjs +12 -28
- package/esm2022/lib/figma/geo-stat-card/geo-stat-card.component.mjs +163 -0
- package/esm2022/lib/figma/geo-stat-card/geo-stat-card.types.mjs +2 -0
- package/esm2022/lib/figma/geo-status-tag/geo-status-tag.component.mjs +23 -27
- package/esm2022/lib/figma/geo-step-form-layout/geo-step-form-layout.component.mjs +39 -96
- package/esm2022/lib/figma/geo-stepper/geo-stepper.component.mjs +18 -33
- package/esm2022/lib/figma/geo-table/geo-column-picker/geo-column-picker.component.mjs +14 -24
- package/esm2022/lib/figma/geo-table/geo-row-actions/geo-row-actions.component.mjs +18 -36
- package/esm2022/lib/figma/geo-table/geo-table-filter/geo-table-filter.component.mjs +41 -98
- package/esm2022/lib/figma/geo-table/geo-table-pagination/geo-table-pagination.component.mjs +40 -73
- package/esm2022/lib/figma/geo-table/geo-table-toolbar/geo-table-toolbar.component.mjs +26 -56
- package/esm2022/lib/figma/geo-table/geo-table.component.mjs +110 -210
- package/esm2022/lib/figma/geo-tabs/geo-tabs.component.mjs +33 -63
- package/esm2022/lib/figma/geo-textarea/geo-textarea.component.mjs +28 -44
- package/esm2022/lib/figma/geo-toast/geo-toast.component.mjs +18 -39
- package/esm2022/lib/figma/geo-tree/geo-tree.component.mjs +12 -40
- package/esm2022/lib/figma/geo-typography/geo-typography.component.mjs +49 -64
- package/esm2022/lib/figma/geo-upload/geo-upload.component.mjs +50 -101
- package/esm2022/lib/figma/index.mjs +50 -1
- package/esm2022/lib/styles/tokens.mjs +56 -24
- package/fesm2022/geoit-ui.mjs +5981 -1825
- package/fesm2022/geoit-ui.mjs.map +1 -1
- package/lib/figma/geo-alert/geo-alert.component.d.ts +10 -11
- package/lib/figma/geo-back-button/geo-back-button.component.d.ts +6 -7
- package/lib/figma/geo-breadcrumb/geo-breadcrumb.component.d.ts +2 -2
- package/lib/figma/geo-button/geo-button.component.d.ts +21 -17
- package/lib/figma/geo-chart/geo-chart.component.d.ts +40 -0
- package/lib/figma/geo-chart/geo-chart.types.d.ts +13 -0
- package/lib/figma/geo-checkbox/geo-checkbox.component.d.ts +6 -7
- package/lib/figma/geo-confirm-modal/geo-confirm-modal.component.d.ts +15 -17
- package/lib/figma/geo-dashboard/geo-dashboard.component.d.ts +29 -0
- package/lib/figma/geo-dashboard/geo-dashboard.types.d.ts +7 -0
- package/lib/figma/geo-date-picker/geo-date-picker.component.d.ts +26 -21
- package/lib/figma/geo-date-range-picker/geo-date-range-picker.component.d.ts +25 -20
- package/lib/figma/geo-empty-state/geo-empty-state.component.d.ts +17 -0
- package/lib/figma/geo-feedback-form/geo-feedback-form.component.d.ts +36 -0
- package/lib/figma/geo-feedback-form/geo-feedback-form.types.d.ts +8 -0
- package/lib/figma/geo-file-picker/geo-file-picker.component.d.ts +23 -20
- package/lib/figma/geo-forgot-password/geo-forgot-password.component.d.ts +24 -0
- package/lib/figma/geo-form-modal/geo-form-modal.component.d.ts +33 -35
- package/lib/figma/geo-icon/geo-icon.component.d.ts +7 -7
- package/lib/figma/geo-input/geo-input.component.d.ts +23 -21
- package/lib/figma/geo-layout/footer/geo-layout-footer.component.d.ts +10 -0
- package/lib/figma/geo-layout/geo-layout-actions.directive.d.ts +6 -0
- package/lib/figma/geo-layout/geo-layout.component.d.ts +48 -0
- package/lib/figma/geo-layout/geo-layout.types.d.ts +44 -0
- package/lib/figma/geo-layout/header/geo-layout-header.component.d.ts +31 -0
- package/lib/figma/geo-layout/header-actions/geo-layout-header-actions.component.d.ts +32 -0
- package/lib/figma/geo-layout/sidebar/geo-layout-sidebar.component.d.ts +34 -0
- package/lib/figma/geo-list-page/geo-list-page.component.d.ts +16 -0
- package/lib/figma/geo-login/geo-login.component.d.ts +27 -0
- package/lib/figma/geo-login/geo-login.types.d.ts +6 -0
- package/lib/figma/geo-map/chrome/geo-map-admin-filter/geo-map-admin-filter.component.d.ts +28 -0
- package/lib/figma/geo-map/chrome/geo-map-basemap-switcher/geo-map-basemap-switcher.component.d.ts +26 -0
- package/lib/figma/geo-map/chrome/geo-map-help/geo-map-help.component.d.ts +20 -0
- package/lib/figma/geo-map/chrome/geo-map-layer-card/geo-map-layer-card.component.d.ts +15 -0
- package/lib/figma/geo-map/chrome/geo-map-layer-panel/geo-map-layer-panel.component.d.ts +40 -0
- package/lib/figma/geo-map/chrome/geo-map-layers-drawer/geo-map-layers-drawer.component.d.ts +25 -0
- package/lib/figma/geo-map/chrome/geo-map-legend/geo-map-legend.component.d.ts +18 -0
- package/lib/figma/geo-map/chrome/geo-map-locate/geo-map-locate.component.d.ts +24 -0
- package/lib/figma/geo-map/chrome/geo-map-location-chip/geo-map-location-chip.component.d.ts +14 -0
- package/lib/figma/geo-map/chrome/geo-map-measure/geo-map-measure.component.d.ts +49 -0
- package/lib/figma/geo-map/chrome/geo-map-opacity/geo-map-opacity.component.d.ts +30 -0
- package/lib/figma/geo-map/chrome/geo-map-parcel-popup/geo-map-parcel-popup.component.d.ts +44 -0
- package/lib/figma/geo-map/chrome/geo-map-search/geo-map-search.component.d.ts +56 -0
- package/lib/figma/geo-map/chrome/geo-map-shell/geo-map-shell.component.d.ts +103 -0
- package/lib/figma/geo-map/chrome/geo-map-snapshot/geo-map-snapshot.component.d.ts +21 -0
- package/lib/figma/geo-map/chrome/geo-map-swipe/geo-map-swipe.component.d.ts +33 -0
- package/lib/figma/geo-map/chrome/geo-map-toolbar/geo-map-toolbar.component.d.ts +30 -0
- package/lib/figma/geo-map/chrome/geo-map-zoom/geo-map-zoom.component.d.ts +67 -0
- package/lib/figma/geo-map/geo-map-toolbar.icons.d.ts +17 -0
- package/lib/figma/geo-map/geo-map.component.d.ts +53 -0
- package/lib/figma/geo-map/geo-map.constants.d.ts +73 -0
- package/lib/figma/geo-map/geo-map.controller.d.ts +49 -0
- package/lib/figma/geo-map/geo-map.types.d.ts +224 -0
- package/lib/figma/geo-map/services/geo-map-layer.service.d.ts +42 -0
- package/lib/figma/geo-map/services/geo-map-projection.service.d.ts +32 -0
- package/lib/figma/geo-map/services/geo-map.service.d.ts +99 -0
- package/lib/figma/geo-map/utils/geo-map-fullscreen-overlay.util.d.ts +13 -0
- package/lib/figma/geo-map/utils/geo-map-interactions.util.d.ts +9 -0
- package/lib/figma/geo-overlap-result/geo-overlap-result.component.d.ts +18 -0
- package/lib/figma/geo-overlap-result/geo-overlap-result.types.d.ts +7 -0
- package/lib/figma/geo-page-header/geo-page-header.component.d.ts +16 -0
- package/lib/figma/geo-page-title/geo-page-title.component.d.ts +9 -9
- package/lib/figma/geo-pagination/geo-pagination.component.d.ts +9 -14
- package/lib/figma/geo-radio/geo-radio.component.d.ts +17 -15
- package/lib/figma/geo-select/geo-select.component.d.ts +24 -19
- package/lib/figma/geo-slider/geo-slider.component.d.ts +7 -9
- package/lib/figma/geo-stat-card/geo-stat-card.component.d.ts +50 -0
- package/lib/figma/geo-stat-card/geo-stat-card.types.d.ts +11 -0
- package/lib/figma/geo-status-tag/geo-status-tag.component.d.ts +7 -7
- package/lib/figma/geo-step-form-layout/geo-step-form-layout.component.d.ts +27 -29
- package/lib/figma/geo-stepper/geo-stepper.component.d.ts +6 -8
- package/lib/figma/geo-table/geo-column-picker/geo-column-picker.component.d.ts +6 -7
- package/lib/figma/geo-table/geo-row-actions/geo-row-actions.component.d.ts +11 -12
- package/lib/figma/geo-table/geo-table-filter/geo-table-filter.component.d.ts +21 -28
- package/lib/figma/geo-table/geo-table-pagination/geo-table-pagination.component.d.ts +17 -20
- package/lib/figma/geo-table/geo-table-toolbar/geo-table-toolbar.component.d.ts +17 -18
- package/lib/figma/geo-table/geo-table.component.d.ts +58 -62
- package/lib/figma/geo-tabs/geo-tabs.component.d.ts +14 -17
- package/lib/figma/geo-textarea/geo-textarea.component.d.ts +15 -13
- package/lib/figma/geo-toast/geo-toast.component.d.ts +11 -12
- package/lib/figma/geo-tree/geo-tree.component.d.ts +8 -13
- package/lib/figma/geo-typography/geo-typography.component.d.ts +13 -13
- package/lib/figma/geo-upload/geo-upload.component.d.ts +26 -28
- package/lib/figma/index.d.ts +49 -0
- package/lib/styles/tokens.d.ts +56 -23
- package/package.json +4 -2
- package/src/lib/figma/geo-map/assets/toolbar/fullscreen.svg +8 -0
- package/src/lib/figma/geo-map/assets/toolbar/home.svg +3 -0
- package/src/lib/figma/geo-map/assets/toolbar/layers.svg +3 -0
- package/src/lib/figma/geo-map/assets/toolbar/measure-area.svg +12 -0
- package/src/lib/figma/geo-map/assets/toolbar/measure-distance.svg +5 -0
- package/src/lib/figma/geo-map/assets/toolbar/pan.svg +13 -0
- package/src/lib/figma/geo-map/assets/toolbar/search.svg +3 -0
- package/src/lib/figma/geo-map/assets/toolbar/zoom-in.svg +3 -0
- package/src/lib/figma/geo-map/assets/toolbar/zoom-out.svg +5 -0
- package/src/lib/styles/design-tokens.scss +108 -35
- package/src/lib/styles/scrollbar.scss +2 -2
- package/src/lib/styles/theme.scss +1 -1
package/esm2022/lib/figma/geo-map/chrome/geo-map-admin-filter/geo-map-admin-filter.component.mjs
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, input, model, output, ViewEncapsulation, } from '@angular/core';
|
|
2
|
+
import { GeoButtonComponent } from '../../../geo-button/geo-button.component';
|
|
3
|
+
import { GeoIconComponent } from '../../../geo-icon/geo-icon.component';
|
|
4
|
+
import { GeoTreeComponent } from '../../../geo-tree/geo-tree.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
/**
|
|
7
|
+
* Administrative unit filter tree (TCQH.14 — cấp xã).
|
|
8
|
+
*
|
|
9
|
+
* @summary Panel lọc cây đơn vị hành chính cấp xã trên bản đồ.
|
|
10
|
+
* @whenToUse Tra cứu bản đồ cần lọc theo xã / phường.
|
|
11
|
+
* @doNotUseWhen Global org charts outside map context.
|
|
12
|
+
*/
|
|
13
|
+
export class GeoMapAdminFilterComponent {
|
|
14
|
+
open = model(false);
|
|
15
|
+
title = input('Đơn vị hành chính');
|
|
16
|
+
nodes = input([]);
|
|
17
|
+
checkedKeys = model([]);
|
|
18
|
+
expandedKeys = model([]);
|
|
19
|
+
apply = output();
|
|
20
|
+
reset = output();
|
|
21
|
+
fitProvince = output();
|
|
22
|
+
closed = output();
|
|
23
|
+
selectionChange = output();
|
|
24
|
+
onCheckedChange(keys) {
|
|
25
|
+
this.checkedKeys.set(keys);
|
|
26
|
+
this.selectionChange.emit(keys);
|
|
27
|
+
}
|
|
28
|
+
onApply() {
|
|
29
|
+
this.apply.emit(this.checkedKeys());
|
|
30
|
+
}
|
|
31
|
+
onReset() {
|
|
32
|
+
this.checkedKeys.set([]);
|
|
33
|
+
this.reset.emit();
|
|
34
|
+
}
|
|
35
|
+
onFitProvince() {
|
|
36
|
+
this.fitProvince.emit();
|
|
37
|
+
}
|
|
38
|
+
close() {
|
|
39
|
+
this.open.set(false);
|
|
40
|
+
this.closed.emit();
|
|
41
|
+
}
|
|
42
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapAdminFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
43
|
+
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 });
|
|
44
|
+
}
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapAdminFilterComponent, decorators: [{
|
|
46
|
+
type: Component,
|
|
47
|
+
args: [{ selector: 'geo-map-admin-filter', standalone: true, imports: [GeoButtonComponent, GeoIconComponent, GeoTreeComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
48
|
+
class: 'geo-map-admin-filter-host',
|
|
49
|
+
'[class.geo-map-admin-filter-host--open]': 'open()',
|
|
50
|
+
}, 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"] }]
|
|
51
|
+
}] });
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLW1hcC1hZG1pbi1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLW1hcC9jaHJvbWUvZ2VvLW1hcC1hZG1pbi1maWx0ZXIvZ2VvLW1hcC1hZG1pbi1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLW1hcC9jaHJvbWUvZ2VvLW1hcC1hZG1pbi1maWx0ZXIvZ2VvLW1hcC1hZG1pbi1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUNMLEtBQUssRUFDTCxNQUFNLEVBQ04saUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOztBQUd4RTs7Ozs7O0dBTUc7QUFjSCxNQUFNLE9BQU8sMEJBQTBCO0lBQzVCLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEIsS0FBSyxHQUFHLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ25DLEtBQUssR0FBRyxLQUFLLENBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLFdBQVcsR0FBRyxLQUFLLENBQXlCLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELFlBQVksR0FBRyxLQUFLLENBQXlCLEVBQUUsQ0FBQyxDQUFDO0lBRWpELEtBQUssR0FBRyxNQUFNLEVBQTBCLENBQUM7SUFDekMsS0FBSyxHQUFHLE1BQU0sRUFBUSxDQUFDO0lBQ3ZCLFdBQVcsR0FBRyxNQUFNLEVBQVEsQ0FBQztJQUM3QixNQUFNLEdBQUcsTUFBTSxFQUFRLENBQUM7SUFDeEIsZUFBZSxHQUFHLE1BQU0sRUFBMEIsQ0FBQztJQUU1RCxlQUFlLENBQUMsSUFBNEI7UUFDMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyQixDQUFDO3dHQWxDVSwwQkFBMEI7NEZBQTFCLDBCQUEwQiwyaUNDakN2QyxzM0NBd0NBLHdrRURqQlksa0JBQWtCLHNPQUFFLGdCQUFnQix5R0FBRSxnQkFBZ0I7OzRGQVVyRCwwQkFBMEI7a0JBYnRDLFNBQVM7K0JBQ0Usc0JBQXNCLGNBQ3BCLElBQUksV0FDUCxDQUFDLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLG1CQUdoRCx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNKLEtBQUssRUFBRSwyQkFBMkI7d0JBQ2xDLHlDQUF5QyxFQUFFLFFBQVE7cUJBQ3BEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgaW5wdXQsXG4gIG1vZGVsLFxuICBvdXRwdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdlb0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2dlby1idXR0b24vZ2VvLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgR2VvSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2dlby1pY29uL2dlby1pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHZW9UcmVlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZ2VvLXRyZWUvZ2VvLXRyZWUuY29tcG9uZW50JztcbmltcG9ydCB0eXBlIHsgR2VvVHJlZU5vZGUgfSBmcm9tICcuLi8uLi8uLi9nZW8tdHJlZS9nZW8tdHJlZS50eXBlcyc7XG5cbi8qKlxuICogQWRtaW5pc3RyYXRpdmUgdW5pdCBmaWx0ZXIgdHJlZSAoVENRSC4xNCDigJQgY+G6pXAgeMOjKS5cbiAqXG4gKiBAc3VtbWFyeSBQYW5lbCBs4buNYyBjw6J5IMSRxqFuIHbhu4sgaMOgbmggY2jDrW5oIGPhuqVwIHjDoyB0csOqbiBi4bqjbiDEkeG7ky5cbiAqIEB3aGVuVG9Vc2UgVHJhIGPhu6l1IGLhuqNuIMSR4buTIGPhuqduIGzhu41jIHRoZW8geMOjIC8gcGjGsOG7nW5nLlxuICogQGRvTm90VXNlV2hlbiBHbG9iYWwgb3JnIGNoYXJ0cyBvdXRzaWRlIG1hcCBjb250ZXh0LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnZW8tbWFwLWFkbWluLWZpbHRlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtHZW9CdXR0b25Db21wb25lbnQsIEdlb0ljb25Db21wb25lbnQsIEdlb1RyZWVDb21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2VvLW1hcC1hZG1pbi1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZ2VvLW1hcC1hZG1pbi1maWx0ZXIuY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnZ2VvLW1hcC1hZG1pbi1maWx0ZXItaG9zdCcsXG4gICAgJ1tjbGFzcy5nZW8tbWFwLWFkbWluLWZpbHRlci1ob3N0LS1vcGVuXSc6ICdvcGVuKCknLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBHZW9NYXBBZG1pbkZpbHRlckNvbXBvbmVudCB7XG4gIHJlYWRvbmx5IG9wZW4gPSBtb2RlbChmYWxzZSk7XG4gIHJlYWRvbmx5IHRpdGxlID0gaW5wdXQoJ8SQxqFuIHbhu4sgaMOgbmggY2jDrW5oJyk7XG4gIHJlYWRvbmx5IG5vZGVzID0gaW5wdXQ8R2VvVHJlZU5vZGVbXT4oW10pO1xuICByZWFkb25seSBjaGVja2VkS2V5cyA9IG1vZGVsPEFycmF5PHN0cmluZyB8IG51bWJlcj4+KFtdKTtcbiAgcmVhZG9ubHkgZXhwYW5kZWRLZXlzID0gbW9kZWw8QXJyYXk8c3RyaW5nIHwgbnVtYmVyPj4oW10pO1xuXG4gIHJlYWRvbmx5IGFwcGx5ID0gb3V0cHV0PEFycmF5PHN0cmluZyB8IG51bWJlcj4+KCk7XG4gIHJlYWRvbmx5IHJlc2V0ID0gb3V0cHV0PHZvaWQ+KCk7XG4gIHJlYWRvbmx5IGZpdFByb3ZpbmNlID0gb3V0cHV0PHZvaWQ+KCk7XG4gIHJlYWRvbmx5IGNsb3NlZCA9IG91dHB1dDx2b2lkPigpO1xuICByZWFkb25seSBzZWxlY3Rpb25DaGFuZ2UgPSBvdXRwdXQ8QXJyYXk8c3RyaW5nIHwgbnVtYmVyPj4oKTtcblxuICBvbkNoZWNrZWRDaGFuZ2Uoa2V5czogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPik6IHZvaWQge1xuICAgIHRoaXMuY2hlY2tlZEtleXMuc2V0KGtleXMpO1xuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoa2V5cyk7XG4gIH1cblxuICBvbkFwcGx5KCk6IHZvaWQge1xuICAgIHRoaXMuYXBwbHkuZW1pdCh0aGlzLmNoZWNrZWRLZXlzKCkpO1xuICB9XG5cbiAgb25SZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLmNoZWNrZWRLZXlzLnNldChbXSk7XG4gICAgdGhpcy5yZXNldC5lbWl0KCk7XG4gIH1cblxuICBvbkZpdFByb3ZpbmNlKCk6IHZvaWQge1xuICAgIHRoaXMuZml0UHJvdmluY2UuZW1pdCgpO1xuICB9XG5cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuLnNldChmYWxzZSk7XG4gICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xuICB9XG59XG4iLCJAaWYgKG9wZW4oKSkge1xuICA8c2VjdGlvbiBjbGFzcz1cImdlby1tYXAtYWRtaW4tZmlsdGVyXCIgYXJpYS1sYWJlbD1cIkzhu41jIMSRxqFuIHbhu4sgaMOgbmggY2jDrW5oXCI+XG4gICAgPGhlYWRlciBjbGFzcz1cImdlby1tYXAtYWRtaW4tZmlsdGVyX19oZWFkZXJcIj5cbiAgICAgIDxoMyBjbGFzcz1cImdlby1tYXAtYWRtaW4tZmlsdGVyX190aXRsZVwiPnt7IHRpdGxlKCkgfX08L2gzPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJnZW8tbWFwLWFkbWluLWZpbHRlcl9faWNvbi1idG5cIlxuICAgICAgICBhcmlhLWxhYmVsPVwixJDDs25nIGLhu5kgbOG7jWNcIlxuICAgICAgICAoY2xpY2spPVwiY2xvc2UoKVwiXG4gICAgICA+XG4gICAgICAgIDxnZW8taWNvbiB0eXBlPVwiY2xvc2VcIiBzaXplPVwic21cIiAvPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9oZWFkZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZ2VvLW1hcC1hZG1pbi1maWx0ZXJfX2JvZHlcIj5cbiAgICAgIDxnZW8tdHJlZVxuICAgICAgICBbbm9kZXNdPVwibm9kZXMoKVwiXG4gICAgICAgIFtjaGVja2FibGVdPVwidHJ1ZVwiXG4gICAgICAgIFtjaGVja2VkS2V5c109XCJjaGVja2VkS2V5cygpXCJcbiAgICAgICAgW2V4cGFuZGVkS2V5c109XCJleHBhbmRlZEtleXMoKVwiXG4gICAgICAgIChjaGVja2VkS2V5c0NoYW5nZSk9XCJvbkNoZWNrZWRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIChleHBhbmRlZEtleXNDaGFuZ2UpPVwiZXhwYW5kZWRLZXlzLnNldCgkZXZlbnQpXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8Zm9vdGVyIGNsYXNzPVwiZ2VvLW1hcC1hZG1pbi1maWx0ZXJfX2Zvb3RlclwiPlxuICAgICAgPGdlby1idXR0b24gYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiIChjbGlja2VkKT1cIm9uRml0UHJvdmluY2UoKVwiPlxuICAgICAgICBYZW0gdG/DoG4gdOG7iW5oXG4gICAgICA8L2dlby1idXR0b24+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ2VvLW1hcC1hZG1pbi1maWx0ZXJfX2Zvb3Rlci1lbmRcIj5cbiAgICAgICAgPGdlby1idXR0b24gYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiIChjbGlja2VkKT1cIm9uUmVzZXQoKVwiPlxuICAgICAgICAgIMSQ4bq3dCBs4bqhaVxuICAgICAgICA8L2dlby1idXR0b24+XG4gICAgICAgIDxnZW8tYnV0dG9uIGFwcGVhcmFuY2U9XCJwcmltYXJ5XCIgKGNsaWNrZWQpPVwib25BcHBseSgpXCI+XG4gICAgICAgICAgw4FwIGThu6VuZ1xuICAgICAgICA8L2dlby1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvb3Rlcj5cbiAgPC9zZWN0aW9uPlxufVxuIl19
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, input, model, output, ViewEncapsulation, } from '@angular/core';
|
|
2
|
+
import { NzToolTipModule } from 'ng-zorro-antd/tooltip';
|
|
3
|
+
import { GEO_MAP_DEFAULT_BASEMAP_OPTIONS } from '../../geo-map.constants';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "ng-zorro-antd/tooltip";
|
|
6
|
+
/**
|
|
7
|
+
* Thumbnail card toggling street ↔ satellite basemap.
|
|
8
|
+
*
|
|
9
|
+
* @summary Toggle street / satellite basemap.
|
|
10
|
+
* @whenToUse Right-side basemap toggle.
|
|
11
|
+
* @doNotUseWhen Full layer panel — use geo-map-layer-panel.
|
|
12
|
+
*/
|
|
13
|
+
export class GeoMapBasemapSwitcherComponent {
|
|
14
|
+
/** Exactly two options (street + satellite). Extra items are ignored. */
|
|
15
|
+
options = input(GEO_MAP_DEFAULT_BASEMAP_OPTIONS);
|
|
16
|
+
selectedId = model('osm');
|
|
17
|
+
/** Caption on the thumbnail card (design: «Lớp bản đồ»). */
|
|
18
|
+
label = input('Lớp bản đồ');
|
|
19
|
+
tooltip = input('Đổi lớp bản đồ nền');
|
|
20
|
+
basemapChange = output();
|
|
21
|
+
pair = computed(() => {
|
|
22
|
+
const list = this.options().slice(0, 2);
|
|
23
|
+
return list.length >= 2 ? list : GEO_MAP_DEFAULT_BASEMAP_OPTIONS;
|
|
24
|
+
});
|
|
25
|
+
selected = computed(() => {
|
|
26
|
+
const id = this.selectedId();
|
|
27
|
+
const list = this.pair();
|
|
28
|
+
return list.find((item) => item.id === id) ?? list[0] ?? null;
|
|
29
|
+
});
|
|
30
|
+
/** Preview of the other basemap (what click will switch to). */
|
|
31
|
+
next = computed(() => {
|
|
32
|
+
const list = this.pair();
|
|
33
|
+
if (!list.length) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
const currentId = this.selected()?.id;
|
|
37
|
+
return list.find((item) => item.id !== currentId) ?? list[0] ?? null;
|
|
38
|
+
});
|
|
39
|
+
tooltipText = computed(() => {
|
|
40
|
+
const next = this.next();
|
|
41
|
+
if (!next) {
|
|
42
|
+
return this.tooltip();
|
|
43
|
+
}
|
|
44
|
+
return `Chuyển sang ${next.label}`;
|
|
45
|
+
});
|
|
46
|
+
toggle() {
|
|
47
|
+
const next = this.next();
|
|
48
|
+
if (!next) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
this.selectedId.set(next.id);
|
|
52
|
+
this.basemapChange.emit(next.basemap);
|
|
53
|
+
}
|
|
54
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapBasemapSwitcherComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
55
|
+
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.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 });
|
|
56
|
+
}
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapBasemapSwitcherComponent, decorators: [{
|
|
58
|
+
type: Component,
|
|
59
|
+
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"] }]
|
|
60
|
+
}] });
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLW1hcC1iYXNlbWFwLXN3aXRjaGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlby11aS9zcmMvbGliL2ZpZ21hL2dlby1tYXAvY2hyb21lL2dlby1tYXAtYmFzZW1hcC1zd2l0Y2hlci9nZW8tbWFwLWJhc2VtYXAtc3dpdGNoZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLW1hcC9jaHJvbWUvZ2VvLW1hcC1iYXNlbWFwLXN3aXRjaGVyL2dlby1tYXAtYmFzZW1hcC1zd2l0Y2hlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsS0FBSyxFQUNMLEtBQUssRUFDTCxNQUFNLEVBQ04saUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBRzFFOzs7Ozs7R0FNRztBQVdILE1BQU0sT0FBTyw4QkFBOEI7SUFDekMseUVBQXlFO0lBQ2hFLE9BQU8sR0FBRyxLQUFLLENBQXdCLCtCQUErQixDQUFDLENBQUM7SUFDeEUsVUFBVSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyw0REFBNEQ7SUFDbkQsS0FBSyxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM1QixPQUFPLEdBQUcsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFdEMsYUFBYSxHQUFHLE1BQU0sRUFBaUIsQ0FBQztJQUV4QyxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUM1QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4QyxPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLCtCQUErQixDQUFDO0lBQ25FLENBQUMsQ0FBQyxDQUFDO0lBRU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDaEMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzdCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUNoRSxDQUFDLENBQUMsQ0FBQztJQUVILGdFQUFnRTtJQUN2RCxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQStCLEVBQUU7UUFDeEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUN0QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUN2RSxDQUFDLENBQUMsQ0FBQztJQUVNLFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ25DLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN4QixDQUFDO1FBQ0QsT0FBTyxlQUFlLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyQyxDQUFDLENBQUMsQ0FBQztJQUVILE1BQU07UUFDSixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7d0dBOUNVLDhCQUE4Qjs0RkFBOUIsOEJBQThCLG11QkM5QjNDLCs5Q0E2Q0EseTNERHRCWSxlQUFlOzs0RkFPZCw4QkFBOEI7a0JBVjFDLFNBQVM7K0JBQ0UsMEJBQTBCLGNBQ3hCLElBQUksV0FDUCxDQUFDLGVBQWUsQ0FBQyxtQkFHVCx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CLEVBQUUsS0FBSyxFQUFFLCtCQUErQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGlucHV0LFxuICBtb2RlbCxcbiAgb3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOelRvb2xUaXBNb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL3Rvb2x0aXAnO1xuaW1wb3J0IHsgR0VPX01BUF9ERUZBVUxUX0JBU0VNQVBfT1BUSU9OUyB9IGZyb20gJy4uLy4uL2dlby1tYXAuY29uc3RhbnRzJztcbmltcG9ydCB0eXBlIHsgR2VvTWFwQmFzZW1hcCwgR2VvTWFwQmFzZW1hcE9wdGlvbiB9IGZyb20gJy4uLy4uL2dlby1tYXAudHlwZXMnO1xuXG4vKipcbiAqIFRodW1ibmFpbCBjYXJkIHRvZ2dsaW5nIHN0cmVldCDihpQgc2F0ZWxsaXRlIGJhc2VtYXAuXG4gKlxuICogQHN1bW1hcnkgVG9nZ2xlIHN0cmVldCAvIHNhdGVsbGl0ZSBiYXNlbWFwLlxuICogQHdoZW5Ub1VzZSBSaWdodC1zaWRlIGJhc2VtYXAgdG9nZ2xlLlxuICogQGRvTm90VXNlV2hlbiBGdWxsIGxheWVyIHBhbmVsIOKAlCB1c2UgZ2VvLW1hcC1sYXllci1wYW5lbC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ2VvLW1hcC1iYXNlbWFwLXN3aXRjaGVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW056VG9vbFRpcE1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9nZW8tbWFwLWJhc2VtYXAtc3dpdGNoZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZ2VvLW1hcC1iYXNlbWFwLXN3aXRjaGVyLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHsgY2xhc3M6ICdnZW8tbWFwLWJhc2VtYXAtc3dpdGNoZXItaG9zdCcgfSxcbn0pXG5leHBvcnQgY2xhc3MgR2VvTWFwQmFzZW1hcFN3aXRjaGVyQ29tcG9uZW50IHtcbiAgLyoqIEV4YWN0bHkgdHdvIG9wdGlvbnMgKHN0cmVldCArIHNhdGVsbGl0ZSkuIEV4dHJhIGl0ZW1zIGFyZSBpZ25vcmVkLiAqL1xuICByZWFkb25seSBvcHRpb25zID0gaW5wdXQ8R2VvTWFwQmFzZW1hcE9wdGlvbltdPihHRU9fTUFQX0RFRkFVTFRfQkFTRU1BUF9PUFRJT05TKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRJZCA9IG1vZGVsKCdvc20nKTtcbiAgLyoqIENhcHRpb24gb24gdGhlIHRodW1ibmFpbCBjYXJkIChkZXNpZ246IMKrTOG7m3AgYuG6o24gxJHhu5PCuykuICovXG4gIHJlYWRvbmx5IGxhYmVsID0gaW5wdXQoJ0zhu5twIGLhuqNuIMSR4buTJyk7XG4gIHJlYWRvbmx5IHRvb2x0aXAgPSBpbnB1dCgnxJDhu5VpIGzhu5twIGLhuqNuIMSR4buTIG7hu4FuJyk7XG5cbiAgcmVhZG9ubHkgYmFzZW1hcENoYW5nZSA9IG91dHB1dDxHZW9NYXBCYXNlbWFwPigpO1xuXG4gIHJlYWRvbmx5IHBhaXIgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbGlzdCA9IHRoaXMub3B0aW9ucygpLnNsaWNlKDAsIDIpO1xuICAgIHJldHVybiBsaXN0Lmxlbmd0aCA+PSAyID8gbGlzdCA6IEdFT19NQVBfREVGQVVMVF9CQVNFTUFQX09QVElPTlM7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHNlbGVjdGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGlkID0gdGhpcy5zZWxlY3RlZElkKCk7XG4gICAgY29uc3QgbGlzdCA9IHRoaXMucGFpcigpO1xuICAgIHJldHVybiBsaXN0LmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGlkKSA/PyBsaXN0WzBdID8/IG51bGw7XG4gIH0pO1xuXG4gIC8qKiBQcmV2aWV3IG9mIHRoZSBvdGhlciBiYXNlbWFwICh3aGF0IGNsaWNrIHdpbGwgc3dpdGNoIHRvKS4gKi9cbiAgcmVhZG9ubHkgbmV4dCA9IGNvbXB1dGVkKCgpOiBHZW9NYXBCYXNlbWFwT3B0aW9uIHwgbnVsbCA9PiB7XG4gICAgY29uc3QgbGlzdCA9IHRoaXMucGFpcigpO1xuICAgIGlmICghbGlzdC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50SWQgPSB0aGlzLnNlbGVjdGVkKCk/LmlkO1xuICAgIHJldHVybiBsaXN0LmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgIT09IGN1cnJlbnRJZCkgPz8gbGlzdFswXSA/PyBudWxsO1xuICB9KTtcblxuICByZWFkb25seSB0b29sdGlwVGV4dCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBuZXh0ID0gdGhpcy5uZXh0KCk7XG4gICAgaWYgKCFuZXh0KSB7XG4gICAgICByZXR1cm4gdGhpcy50b29sdGlwKCk7XG4gICAgfVxuICAgIHJldHVybiBgQ2h1eeG7g24gc2FuZyAke25leHQubGFiZWx9YDtcbiAgfSk7XG5cbiAgdG9nZ2xlKCk6IHZvaWQge1xuICAgIGNvbnN0IG5leHQgPSB0aGlzLm5leHQoKTtcbiAgICBpZiAoIW5leHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZElkLnNldChuZXh0LmlkKTtcbiAgICB0aGlzLmJhc2VtYXBDaGFuZ2UuZW1pdChuZXh0LmJhc2VtYXApO1xuICB9XG59XG4iLCI8YnV0dG9uXG4gIHR5cGU9XCJidXR0b25cIlxuICBjbGFzcz1cImdlby1tYXAtYmFzZW1hcC1zd2l0Y2hlcl9fdHJpZ2dlclwiXG4gIFtuei10b29sdGlwXT1cInRvb2x0aXBUZXh0KClcIlxuICBuelRvb2x0aXBQbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0b29sdGlwVGV4dCgpXCJcbiAgKGNsaWNrKT1cInRvZ2dsZSgpXCJcbj5cbiAgQGlmIChuZXh0KCk7IGFzIG9wdGlvbikge1xuICAgIEBpZiAob3B0aW9uLnByZXZpZXdVcmw7IGFzIHVybCkge1xuICAgICAgPGltZyBjbGFzcz1cImdlby1tYXAtYmFzZW1hcC1zd2l0Y2hlcl9fcHJldmlld1wiIFtzcmNdPVwidXJsXCIgYWx0PVwiXCIgLz5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwiZ2VvLW1hcC1iYXNlbWFwLXN3aXRjaGVyX19wcmV2aWV3IGdlby1tYXAtYmFzZW1hcC1zd2l0Y2hlcl9fcHJldmlldy0tZW1wdHlcIlxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgPjwvc3Bhbj5cbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIDxzcGFuXG4gICAgICBjbGFzcz1cImdlby1tYXAtYmFzZW1hcC1zd2l0Y2hlcl9fcHJldmlldyBnZW8tbWFwLWJhc2VtYXAtc3dpdGNoZXJfX3ByZXZpZXctLWVtcHR5XCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPjwvc3Bhbj5cbiAgfVxuICA8c3BhbiBjbGFzcz1cImdlby1tYXAtYmFzZW1hcC1zd2l0Y2hlcl9fdmVpbFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJnZW8tbWFwLWJhc2VtYXAtc3dpdGNoZXJfX2NvbnRlbnRcIj5cbiAgICA8c3BhbiBjbGFzcz1cImdlby1tYXAtYmFzZW1hcC1zd2l0Y2hlcl9faWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZD1cIk0xMiA0LjIgMyA4LjdsOSA0LjUgOS00LjUtOS00LjVaXCJcbiAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNzVcIlxuICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBkPVwiTTMgMTUuMyAxMiAxOS44bDktNC41XCJcbiAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNzVcIlxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cImdlby1tYXAtYmFzZW1hcC1zd2l0Y2hlcl9fY2FwdGlvblwiPnt7IGxhYmVsKCkgfX08L3NwYW4+XG4gIDwvc3Bhbj5cbjwvYnV0dG9uPlxuIl19
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, input, model, ViewEncapsulation, } from '@angular/core';
|
|
2
|
+
import { GeoFormModalComponent } from '../../../geo-form-modal/geo-form-modal.component';
|
|
3
|
+
import { GEO_MAP_DEFAULT_HELP_SECTIONS } from '../../geo-map.constants';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* Map help popup (text hướng dẫn sử dụng).
|
|
7
|
+
*
|
|
8
|
+
* @summary Pop-up hướng dẫn sử dụng trên bản đồ.
|
|
9
|
+
* @whenToUse UC-24 xem hướng dẫn sử dụng.
|
|
10
|
+
* @doNotUseWhen Full docs site pages.
|
|
11
|
+
*/
|
|
12
|
+
export class GeoMapHelpComponent {
|
|
13
|
+
open = model(false);
|
|
14
|
+
title = input('Hướng dẫn sử dụng');
|
|
15
|
+
sections = input(GEO_MAP_DEFAULT_HELP_SECTIONS);
|
|
16
|
+
close() {
|
|
17
|
+
this.open.set(false);
|
|
18
|
+
}
|
|
19
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapHelpComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
20
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapHelpComponent, isStandalone: true, selector: "geo-map-help", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, sections: { classPropertyName: "sections", publicName: "sections", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange" }, host: { classAttribute: "geo-map-help-host" }, ngImport: i0, template: "<geo-form-modal\n [(open)]=\"open\"\n [title]=\"title()\"\n [titleUppercase]=\"false\"\n [readonly]=\"true\"\n cancelText=\"\u0110\u00F3ng\"\n [width]=\"560\"\n wrapClassName=\"geo-map-help-modal\"\n (cancel)=\"close()\"\n>\n <div class=\"geo-map-help\">\n <p class=\"geo-map-help__note\">\n N\u1ED9i dung m\u1EABu cho Storybook. N\u1ED9i dung ch\u00EDnh th\u1EE9c do nghi\u1EC7p v\u1EE5 cung c\u1EA5p\n (UC-24).\n </p>\n @for (section of sections(); track section.title) {\n <section class=\"geo-map-help__section\">\n <h4 class=\"geo-map-help__section-title\">{{ section.title }}</h4>\n <p class=\"geo-map-help__section-body\">{{ section.body }}</p>\n </section>\n }\n </div>\n</geo-form-modal>\n", styles: [".geo-map-help-host{display:contents}.geo-map-help{display:flex;flex-direction:column;gap:16px}.geo-map-help__note{margin:0;padding:10px 12px;border-radius:var(--geo-radius);background:var(--geo-color-primary-soft);color:var(--geo-color-neutral-700);font-size:var(--geo-font-size-body-small)}.geo-map-help__section-title{margin:0 0 6px;font-size:var(--geo-font-size-body);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-900)}.geo-map-help__section-body{margin:0;font-size:var(--geo-font-size-body);line-height:1.55;color:var(--geo-color-neutral-700)}\n"], dependencies: [{ kind: "component", type: GeoFormModalComponent, selector: "geo-form-modal", inputs: ["open", "title", "titleUppercase", "okText", "cancelText", "cancelIcon", "cancelIconPlacement", "okIcon", "okIconPlacement", "secondaryOkText", "confirmLoading", "okDisabled", "readonly", "width", "closable", "mask", "maskClosable", "keyboard", "centered", "zIndex", "className", "wrapClassName", "bodyScroll", "bodyMaxHeight"], outputs: ["openChange", "ok", "secondaryOk", "cancel", "afterOpen", "afterClose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
21
|
+
}
|
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapHelpComponent, decorators: [{
|
|
23
|
+
type: Component,
|
|
24
|
+
args: [{ selector: 'geo-map-help', standalone: true, imports: [GeoFormModalComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'geo-map-help-host' }, template: "<geo-form-modal\n [(open)]=\"open\"\n [title]=\"title()\"\n [titleUppercase]=\"false\"\n [readonly]=\"true\"\n cancelText=\"\u0110\u00F3ng\"\n [width]=\"560\"\n wrapClassName=\"geo-map-help-modal\"\n (cancel)=\"close()\"\n>\n <div class=\"geo-map-help\">\n <p class=\"geo-map-help__note\">\n N\u1ED9i dung m\u1EABu cho Storybook. N\u1ED9i dung ch\u00EDnh th\u1EE9c do nghi\u1EC7p v\u1EE5 cung c\u1EA5p\n (UC-24).\n </p>\n @for (section of sections(); track section.title) {\n <section class=\"geo-map-help__section\">\n <h4 class=\"geo-map-help__section-title\">{{ section.title }}</h4>\n <p class=\"geo-map-help__section-body\">{{ section.body }}</p>\n </section>\n }\n </div>\n</geo-form-modal>\n", styles: [".geo-map-help-host{display:contents}.geo-map-help{display:flex;flex-direction:column;gap:16px}.geo-map-help__note{margin:0;padding:10px 12px;border-radius:var(--geo-radius);background:var(--geo-color-primary-soft);color:var(--geo-color-neutral-700);font-size:var(--geo-font-size-body-small)}.geo-map-help__section-title{margin:0 0 6px;font-size:var(--geo-font-size-body);font-weight:var(--geo-font-weight-semibold);color:var(--geo-color-neutral-900)}.geo-map-help__section-body{margin:0;font-size:var(--geo-font-size-body);line-height:1.55;color:var(--geo-color-neutral-700)}\n"] }]
|
|
25
|
+
}] });
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLW1hcC1oZWxwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlby11aS9zcmMvbGliL2ZpZ21hL2dlby1tYXAvY2hyb21lL2dlby1tYXAtaGVscC9nZW8tbWFwLWhlbHAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLW1hcC9jaHJvbWUvZ2VvLW1hcC1oZWxwL2dlby1tYXAtaGVscC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEVBQ0wsS0FBSyxFQUNMLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFPeEU7Ozs7OztHQU1HO0FBV0gsTUFBTSxPQUFPLG1CQUFtQjtJQUNyQixJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BCLEtBQUssR0FBRyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNuQyxRQUFRLEdBQUcsS0FBSyxDQUFzQiw2QkFBNkIsQ0FBQyxDQUFDO0lBRTlFLEtBQUs7UUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixDQUFDO3dHQVBVLG1CQUFtQjs0RkFBbkIsbUJBQW1CLGtoQkNoQ2hDLG92QkF1QkEsMm5CREVZLHFCQUFxQjs7NEZBT3BCLG1CQUFtQjtrQkFWL0IsU0FBUzsrQkFDRSxjQUFjLGNBQ1osSUFBSSxXQUNQLENBQUMscUJBQXFCLENBQUMsbUJBR2YsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUMvQixFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGlucHV0LFxuICBtb2RlbCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR2VvRm9ybU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZ2VvLWZvcm0tbW9kYWwvZ2VvLWZvcm0tbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IEdFT19NQVBfREVGQVVMVF9IRUxQX1NFQ1RJT05TIH0gZnJvbSAnLi4vLi4vZ2VvLW1hcC5jb25zdGFudHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdlb01hcEhlbHBTZWN0aW9uIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgYm9keTogc3RyaW5nO1xufVxuXG4vKipcbiAqIE1hcCBoZWxwIHBvcHVwICh0ZXh0IGjGsOG7m25nIGThuqtuIHPhu60gZOG7pW5nKS5cbiAqXG4gKiBAc3VtbWFyeSBQb3AtdXAgaMaw4bubbmcgZOG6q24gc+G7rSBk4bulbmcgdHLDqm4gYuG6o24gxJHhu5MuXG4gKiBAd2hlblRvVXNlIFVDLTI0IHhlbSBoxrDhu5tuZyBk4bqrbiBz4butIGThu6VuZy5cbiAqIEBkb05vdFVzZVdoZW4gRnVsbCBkb2NzIHNpdGUgcGFnZXMuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dlby1tYXAtaGVscCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtHZW9Gb3JtTW9kYWxDb21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2VvLW1hcC1oZWxwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2dlby1tYXAtaGVscC5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7IGNsYXNzOiAnZ2VvLW1hcC1oZWxwLWhvc3QnIH0sXG59KVxuZXhwb3J0IGNsYXNzIEdlb01hcEhlbHBDb21wb25lbnQge1xuICByZWFkb25seSBvcGVuID0gbW9kZWwoZmFsc2UpO1xuICByZWFkb25seSB0aXRsZSA9IGlucHV0KCdIxrDhu5tuZyBk4bqrbiBz4butIGThu6VuZycpO1xuICByZWFkb25seSBzZWN0aW9ucyA9IGlucHV0PEdlb01hcEhlbHBTZWN0aW9uW10+KEdFT19NQVBfREVGQVVMVF9IRUxQX1NFQ1RJT05TKTtcblxuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW4uc2V0KGZhbHNlKTtcbiAgfVxufVxuIiwiPGdlby1mb3JtLW1vZGFsXG4gIFsob3BlbildPVwib3BlblwiXG4gIFt0aXRsZV09XCJ0aXRsZSgpXCJcbiAgW3RpdGxlVXBwZXJjYXNlXT1cImZhbHNlXCJcbiAgW3JlYWRvbmx5XT1cInRydWVcIlxuICBjYW5jZWxUZXh0PVwixJDDs25nXCJcbiAgW3dpZHRoXT1cIjU2MFwiXG4gIHdyYXBDbGFzc05hbWU9XCJnZW8tbWFwLWhlbHAtbW9kYWxcIlxuICAoY2FuY2VsKT1cImNsb3NlKClcIlxuPlxuICA8ZGl2IGNsYXNzPVwiZ2VvLW1hcC1oZWxwXCI+XG4gICAgPHAgY2xhc3M9XCJnZW8tbWFwLWhlbHBfX25vdGVcIj5cbiAgICAgIE7hu5lpIGR1bmcgbeG6q3UgY2hvIFN0b3J5Ym9vay4gTuG7mWkgZHVuZyBjaMOtbmggdGjhu6ljIGRvIG5naGnhu4dwIHbhu6UgY3VuZyBj4bqlcFxuICAgICAgKFVDLTI0KS5cbiAgICA8L3A+XG4gICAgQGZvciAoc2VjdGlvbiBvZiBzZWN0aW9ucygpOyB0cmFjayBzZWN0aW9uLnRpdGxlKSB7XG4gICAgICA8c2VjdGlvbiBjbGFzcz1cImdlby1tYXAtaGVscF9fc2VjdGlvblwiPlxuICAgICAgICA8aDQgY2xhc3M9XCJnZW8tbWFwLWhlbHBfX3NlY3Rpb24tdGl0bGVcIj57eyBzZWN0aW9uLnRpdGxlIH19PC9oND5cbiAgICAgICAgPHAgY2xhc3M9XCJnZW8tbWFwLWhlbHBfX3NlY3Rpb24tYm9keVwiPnt7IHNlY3Rpb24uYm9keSB9fTwvcD5cbiAgICAgIDwvc2VjdGlvbj5cbiAgICB9XG4gIDwvZGl2PlxuPC9nZW8tZm9ybS1tb2RhbD5cbiJdfQ==
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, input, output, ViewEncapsulation, } from '@angular/core';
|
|
2
|
+
import { NzToolTipModule } from 'ng-zorro-antd/tooltip';
|
|
3
|
+
import { GeoIconComponent } from '../../../geo-icon/geo-icon.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "ng-zorro-antd/tooltip";
|
|
6
|
+
/**
|
|
7
|
+
* Bottom-left “Lớp bản đồ” thumbnail card to open layer panel.
|
|
8
|
+
*
|
|
9
|
+
* @summary Bottom-left layer entry card.
|
|
10
|
+
* @whenToUse Entry point to layers / legend overlays.
|
|
11
|
+
* @doNotUseWhen Inline layer checklist — use geo-map-layer-panel.
|
|
12
|
+
*/
|
|
13
|
+
export class GeoMapLayerCardComponent {
|
|
14
|
+
title = input('Lớp bản đồ');
|
|
15
|
+
previewUrl = input(undefined);
|
|
16
|
+
clicked = output();
|
|
17
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapLayerCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
18
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapLayerCardComponent, isStandalone: true, selector: "geo-map-layer-card", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, previewUrl: { classPropertyName: "previewUrl", publicName: "previewUrl", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clicked: "clicked" }, host: { classAttribute: "geo-map-layer-card-host" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"geo-map-layer-card\"\n [nz-tooltip]=\"title()\"\n nzTooltipPlacement=\"top\"\n [attr.aria-label]=\"title()\"\n (click)=\"clicked.emit()\"\n>\n @if (previewUrl()) {\n <img class=\"geo-map-layer-card__preview\" [src]=\"previewUrl()\" alt=\"\" />\n } @else {\n <span class=\"geo-map-layer-card__preview geo-map-layer-card__preview--fallback\">\n <geo-icon type=\"appstore\" size=\"md\" />\n </span>\n }\n <span class=\"geo-map-layer-card__label\">{{ title() }}</span>\n</button>\n", styles: ["@charset \"UTF-8\";.geo-map-layer-card-host{display:block}.geo-map-layer-card{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:88px;padding:0;overflow:hidden;cursor:pointer;color:var(--geo-color-neutral-800);text-align:left}.geo-map-layer-card:hover{border-color:var(--geo-color-primary-soft-strong);box-shadow:var(--geo-shadow-md)}.geo-map-layer-card__preview{display:block;width:100%;height:56px;object-fit:cover;background:var(--geo-color-neutral-100)}.geo-map-layer-card__preview--fallback{display:inline-flex;align-items:center;justify-content:center;color:var(--geo-color-primary-default);background:var(--geo-color-primary-soft)}.geo-map-layer-card__label{padding:8px;font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-semibold);line-height:1.25}\n"], dependencies: [{ kind: "component", type: GeoIconComponent, selector: "geo-icon", inputs: ["type", "theme", "spin", "size", "color"] }, { kind: "ngmodule", type: NzToolTipModule }, { kind: "directive", type: i1.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 });
|
|
19
|
+
}
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapLayerCardComponent, decorators: [{
|
|
21
|
+
type: Component,
|
|
22
|
+
args: [{ selector: 'geo-map-layer-card', standalone: true, imports: [GeoIconComponent, NzToolTipModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'geo-map-layer-card-host' }, template: "<button\n type=\"button\"\n class=\"geo-map-layer-card\"\n [nz-tooltip]=\"title()\"\n nzTooltipPlacement=\"top\"\n [attr.aria-label]=\"title()\"\n (click)=\"clicked.emit()\"\n>\n @if (previewUrl()) {\n <img class=\"geo-map-layer-card__preview\" [src]=\"previewUrl()\" alt=\"\" />\n } @else {\n <span class=\"geo-map-layer-card__preview geo-map-layer-card__preview--fallback\">\n <geo-icon type=\"appstore\" size=\"md\" />\n </span>\n }\n <span class=\"geo-map-layer-card__label\">{{ title() }}</span>\n</button>\n", styles: ["@charset \"UTF-8\";.geo-map-layer-card-host{display:block}.geo-map-layer-card{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:88px;padding:0;overflow:hidden;cursor:pointer;color:var(--geo-color-neutral-800);text-align:left}.geo-map-layer-card:hover{border-color:var(--geo-color-primary-soft-strong);box-shadow:var(--geo-shadow-md)}.geo-map-layer-card__preview{display:block;width:100%;height:56px;object-fit:cover;background:var(--geo-color-neutral-100)}.geo-map-layer-card__preview--fallback{display:inline-flex;align-items:center;justify-content:center;color:var(--geo-color-primary-default);background:var(--geo-color-primary-soft)}.geo-map-layer-card__label{padding:8px;font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-semibold);line-height:1.25}\n"] }]
|
|
23
|
+
}] });
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLW1hcC1sYXllci1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlby11aS9zcmMvbGliL2ZpZ21hL2dlby1tYXAvY2hyb21lL2dlby1tYXAtbGF5ZXItY2FyZC9nZW8tbWFwLWxheWVyLWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLW1hcC9jaHJvbWUvZ2VvLW1hcC1sYXllci1jYXJkL2dlby1tYXAtbGF5ZXItY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7OztBQUV4RTs7Ozs7O0dBTUc7QUFXSCxNQUFNLE9BQU8sd0JBQXdCO0lBQzFCLEtBQUssR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDNUIsVUFBVSxHQUFHLEtBQUssQ0FBcUIsU0FBUyxDQUFDLENBQUM7SUFDbEQsT0FBTyxHQUFHLE1BQU0sRUFBUSxDQUFDO3dHQUh2Qix3QkFBd0I7NEZBQXhCLHdCQUF3QiwrYUMzQnJDLDJoQkFpQkEsNDlCREdZLGdCQUFnQix3R0FBRSxlQUFlOzs0RkFPaEMsd0JBQXdCO2tCQVZwQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxnQkFBZ0IsRUFBRSxlQUFlLENBQUMsbUJBRzNCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0IsRUFBRSxLQUFLLEVBQUUseUJBQXlCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOelRvb2xUaXBNb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL3Rvb2x0aXAnO1xuaW1wb3J0IHsgR2VvSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2dlby1pY29uL2dlby1pY29uLmNvbXBvbmVudCc7XG5cbi8qKlxuICogQm90dG9tLWxlZnQg4oCcTOG7m3AgYuG6o24gxJHhu5PigJ0gdGh1bWJuYWlsIGNhcmQgdG8gb3BlbiBsYXllciBwYW5lbC5cbiAqXG4gKiBAc3VtbWFyeSBCb3R0b20tbGVmdCBsYXllciBlbnRyeSBjYXJkLlxuICogQHdoZW5Ub1VzZSBFbnRyeSBwb2ludCB0byBsYXllcnMgLyBsZWdlbmQgb3ZlcmxheXMuXG4gKiBAZG9Ob3RVc2VXaGVuIElubGluZSBsYXllciBjaGVja2xpc3Qg4oCUIHVzZSBnZW8tbWFwLWxheWVyLXBhbmVsLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnZW8tbWFwLWxheWVyLWNhcmQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbR2VvSWNvbkNvbXBvbmVudCwgTnpUb29sVGlwTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2dlby1tYXAtbGF5ZXItY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9nZW8tbWFwLWxheWVyLWNhcmQuY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDogeyBjbGFzczogJ2dlby1tYXAtbGF5ZXItY2FyZC1ob3N0JyB9LFxufSlcbmV4cG9ydCBjbGFzcyBHZW9NYXBMYXllckNhcmRDb21wb25lbnQge1xuICByZWFkb25seSB0aXRsZSA9IGlucHV0KCdM4bubcCBi4bqjbiDEkeG7kycpO1xuICByZWFkb25seSBwcmV2aWV3VXJsID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBjbGlja2VkID0gb3V0cHV0PHZvaWQ+KCk7XG59XG4iLCI8YnV0dG9uXG4gIHR5cGU9XCJidXR0b25cIlxuICBjbGFzcz1cImdlby1tYXAtbGF5ZXItY2FyZFwiXG4gIFtuei10b29sdGlwXT1cInRpdGxlKClcIlxuICBuelRvb2x0aXBQbGFjZW1lbnQ9XCJ0b3BcIlxuICBbYXR0ci5hcmlhLWxhYmVsXT1cInRpdGxlKClcIlxuICAoY2xpY2spPVwiY2xpY2tlZC5lbWl0KClcIlxuPlxuICBAaWYgKHByZXZpZXdVcmwoKSkge1xuICAgIDxpbWcgY2xhc3M9XCJnZW8tbWFwLWxheWVyLWNhcmRfX3ByZXZpZXdcIiBbc3JjXT1cInByZXZpZXdVcmwoKVwiIGFsdD1cIlwiIC8+XG4gIH0gQGVsc2Uge1xuICAgIDxzcGFuIGNsYXNzPVwiZ2VvLW1hcC1sYXllci1jYXJkX19wcmV2aWV3IGdlby1tYXAtbGF5ZXItY2FyZF9fcHJldmlldy0tZmFsbGJhY2tcIj5cbiAgICAgIDxnZW8taWNvbiB0eXBlPVwiYXBwc3RvcmVcIiBzaXplPVwibWRcIiAvPlxuICAgIDwvc3Bhbj5cbiAgfVxuICA8c3BhbiBjbGFzcz1cImdlby1tYXAtbGF5ZXItY2FyZF9fbGFiZWxcIj57eyB0aXRsZSgpIH19PC9zcGFuPlxuPC9idXR0b24+XG4iXX0=
|
package/esm2022/lib/figma/geo-map/chrome/geo-map-layer-panel/geo-map-layer-panel.component.mjs
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, effect, input, model, output, signal, ViewEncapsulation, } from '@angular/core';
|
|
2
|
+
import { GeoCheckboxComponent } from '../../../geo-checkbox/geo-checkbox.component';
|
|
3
|
+
import { GeoIconComponent } from '../../../geo-icon/geo-icon.component';
|
|
4
|
+
import { GeoSliderComponent } from '../../../geo-slider/geo-slider.component';
|
|
5
|
+
import { GEO_MAP_BASEMAP_LAYER_ID } from '../../geo-map.constants';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
const GROUP_META = {
|
|
8
|
+
qhsdd: { title: 'Bản đồ QHSDD', selection: 'single' },
|
|
9
|
+
planning: { title: 'Bản đồ QHSDD', selection: 'single' },
|
|
10
|
+
cadastre: { title: 'Bản đồ địa chính', selection: 'multi' },
|
|
11
|
+
current: { title: 'Bản đồ hiện trạng', selection: 'single' },
|
|
12
|
+
'base-map': { title: 'Bản đồ nền', selection: 'single' },
|
|
13
|
+
};
|
|
14
|
+
const GROUP_ORDER = ['qhsdd', 'planning', 'cadastre', 'current', 'base-map'];
|
|
15
|
+
/**
|
|
16
|
+
* Toggle layer visibility / opacity by accordion groups.
|
|
17
|
+
*
|
|
18
|
+
* @summary Panel bật/tắt lớp bản đồ theo nhóm (radio / checkbox + độ mờ).
|
|
19
|
+
* @whenToUse Map chrome popover «Lớp bản đồ».
|
|
20
|
+
* @doNotUseWhen Non-map lists — use geo-tree/geo-checkbox.
|
|
21
|
+
*/
|
|
22
|
+
export class GeoMapLayerPanelComponent {
|
|
23
|
+
controller = input(null);
|
|
24
|
+
title = input('Lớp bản đồ');
|
|
25
|
+
/** When true, hide the panel's own header (host popover provides title). */
|
|
26
|
+
embedded = input(false);
|
|
27
|
+
layers = model([]);
|
|
28
|
+
layersChange = output();
|
|
29
|
+
tick = signal(0);
|
|
30
|
+
expandedKeys = signal({});
|
|
31
|
+
sections = computed(() => {
|
|
32
|
+
this.tick();
|
|
33
|
+
const list = this.resolveLayers().filter((layer) => !layer.basemap &&
|
|
34
|
+
layer.group !== 'system' &&
|
|
35
|
+
layer.id !== GEO_MAP_BASEMAP_LAYER_ID);
|
|
36
|
+
const map = new Map();
|
|
37
|
+
for (const layer of list) {
|
|
38
|
+
const key = layer.group?.trim() || 'other';
|
|
39
|
+
const meta = GROUP_META[key];
|
|
40
|
+
const title = layer.groupLabel ?? meta?.title ?? key;
|
|
41
|
+
const selection = layer.groupSelection ?? meta?.selection ?? 'multi';
|
|
42
|
+
const existing = map.get(key);
|
|
43
|
+
if (existing) {
|
|
44
|
+
existing.layers.push(layer);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
map.set(key, { key, title, selection, layers: [layer] });
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return [...map.values()].sort((a, b) => {
|
|
51
|
+
const ai = GROUP_ORDER.indexOf(a.key);
|
|
52
|
+
const bi = GROUP_ORDER.indexOf(b.key);
|
|
53
|
+
return (ai < 0 ? 99 : ai) - (bi < 0 ? 99 : bi);
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
constructor() {
|
|
57
|
+
effect(() => {
|
|
58
|
+
this.controller();
|
|
59
|
+
this.layers();
|
|
60
|
+
this.tick.update((n) => n + 1);
|
|
61
|
+
}, { allowSignalWrites: true });
|
|
62
|
+
effect(() => {
|
|
63
|
+
const sections = this.sections();
|
|
64
|
+
this.expandedKeys.update((prev) => {
|
|
65
|
+
const next = { ...prev };
|
|
66
|
+
for (const section of sections) {
|
|
67
|
+
if (next[section.key] === undefined) {
|
|
68
|
+
next[section.key] = true;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return next;
|
|
72
|
+
});
|
|
73
|
+
}, { allowSignalWrites: true });
|
|
74
|
+
}
|
|
75
|
+
isExpanded(key) {
|
|
76
|
+
return this.expandedKeys()[key] !== false;
|
|
77
|
+
}
|
|
78
|
+
toggleSection(key) {
|
|
79
|
+
this.expandedKeys.update((prev) => ({
|
|
80
|
+
...prev,
|
|
81
|
+
[key]: !(prev[key] !== false),
|
|
82
|
+
}));
|
|
83
|
+
}
|
|
84
|
+
isVisible(layer) {
|
|
85
|
+
return layer.visible !== false;
|
|
86
|
+
}
|
|
87
|
+
opacityPercent(layer) {
|
|
88
|
+
const opacity = layer.opacity;
|
|
89
|
+
if (opacity == null || Number.isNaN(opacity)) {
|
|
90
|
+
return 100;
|
|
91
|
+
}
|
|
92
|
+
return Math.round(Math.min(1, Math.max(0, opacity)) * 100);
|
|
93
|
+
}
|
|
94
|
+
onToggleMulti(layer, checked) {
|
|
95
|
+
const next = this.resolveLayers().map((item) => item.id === layer.id ? { ...item, visible: checked } : item);
|
|
96
|
+
this.applyLayers(next);
|
|
97
|
+
this.controller()?.setLayerVisibility(layer.id, checked);
|
|
98
|
+
}
|
|
99
|
+
onSelectSingle(section, layer) {
|
|
100
|
+
const next = this.resolveLayers().map((item) => {
|
|
101
|
+
if (item.group !== section.key) {
|
|
102
|
+
return item;
|
|
103
|
+
}
|
|
104
|
+
const visible = item.id === layer.id;
|
|
105
|
+
return { ...item, visible };
|
|
106
|
+
});
|
|
107
|
+
this.applyLayers(next);
|
|
108
|
+
for (const item of next) {
|
|
109
|
+
if (item.group === section.key) {
|
|
110
|
+
this.controller()?.setLayerVisibility(item.id, item.visible !== false);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
onOpacityChange(layer, percent) {
|
|
115
|
+
const opacity = Math.min(100, Math.max(0, percent)) / 100;
|
|
116
|
+
const next = this.resolveLayers().map((item) => item.id === layer.id ? { ...item, opacity } : item);
|
|
117
|
+
this.applyLayers(next);
|
|
118
|
+
this.controller()?.setLayerOpacity(layer.id, opacity);
|
|
119
|
+
}
|
|
120
|
+
resolveLayers() {
|
|
121
|
+
const local = this.layers();
|
|
122
|
+
if (local.length) {
|
|
123
|
+
return local;
|
|
124
|
+
}
|
|
125
|
+
return (this.controller()
|
|
126
|
+
?.getLayers()
|
|
127
|
+
.map((item) => item.config)
|
|
128
|
+
.filter((cfg) => cfg.id !== GEO_MAP_BASEMAP_LAYER_ID) ?? []);
|
|
129
|
+
}
|
|
130
|
+
applyLayers(next) {
|
|
131
|
+
this.layers.set(next);
|
|
132
|
+
this.layersChange.emit(next);
|
|
133
|
+
this.tick.update((n) => n + 1);
|
|
134
|
+
}
|
|
135
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapLayerPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
136
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapLayerPanelComponent, isStandalone: true, selector: "geo-map-layer-panel", inputs: { controller: { classPropertyName: "controller", publicName: "controller", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, embedded: { classPropertyName: "embedded", publicName: "embedded", isSignal: true, isRequired: false, transformFunction: null }, layers: { classPropertyName: "layers", publicName: "layers", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { layers: "layersChange", layersChange: "layersChange" }, host: { classAttribute: "geo-map-layer-panel-host" }, ngImport: i0, template: "<section class=\"geo-map-layer-panel\" aria-label=\"L\u1EDBp b\u1EA3n \u0111\u1ED3\">\n @if (!embedded()) {\n <header class=\"geo-map-layer-panel__header\">\n <h3 class=\"geo-map-layer-panel__title\">{{ title() }}</h3>\n </header>\n }\n\n <div class=\"geo-map-layer-panel__groups\">\n @for (section of sections(); track section.key) {\n <div\n class=\"geo-map-layer-panel__group\"\n [class.geo-map-layer-panel__group--open]=\"isExpanded(section.key)\"\n >\n <button\n type=\"button\"\n class=\"geo-map-layer-panel__group-head\"\n [attr.aria-expanded]=\"isExpanded(section.key)\"\n (click)=\"toggleSection(section.key)\"\n >\n <span class=\"geo-map-layer-panel__group-label\">\n <geo-icon type=\"appstore\" size=\"sm\" />\n <span>{{ section.title }}</span>\n </span>\n <geo-icon\n class=\"geo-map-layer-panel__chevron\"\n [type]=\"isExpanded(section.key) ? 'down' : 'right'\"\n size=\"sm\"\n />\n </button>\n\n @if (isExpanded(section.key)) {\n <ul class=\"geo-map-layer-panel__list\">\n @for (layer of section.layers; track layer.id) {\n <li class=\"geo-map-layer-panel__item\">\n @if (section.selection === 'single') {\n <label class=\"geo-map-layer-panel__choice\">\n <input\n class=\"geo-map-layer-panel__radio\"\n type=\"radio\"\n [name]=\"'geo-map-layer-' + section.key\"\n [checked]=\"isVisible(layer)\"\n (change)=\"onSelectSingle(section, layer)\"\n />\n <span class=\"geo-map-layer-panel__choice-label\">{{\n layer.title\n }}</span>\n </label>\n } @else {\n <geo-checkbox\n [label]=\"layer.title\"\n [checked]=\"isVisible(layer)\"\n (checkedChange)=\"onToggleMulti(layer, $event)\"\n />\n }\n\n <div class=\"geo-map-layer-panel__opacity\">\n <geo-slider\n class=\"geo-map-layer-panel__slider\"\n [min]=\"0\"\n [max]=\"100\"\n [step]=\"1\"\n [value]=\"opacityPercent(layer)\"\n (valueChange)=\"onOpacityChange(layer, $event)\"\n />\n <span class=\"geo-map-layer-panel__opacity-value\"\n >{{ opacityPercent(layer) }} %</span\n >\n </div>\n </li>\n }\n </ul>\n }\n </div>\n } @empty {\n <p class=\"geo-map-layer-panel__empty\">Ch\u01B0a c\u00F3 l\u1EDBp b\u1EA3n \u0111\u1ED3.</p>\n }\n </div>\n</section>\n", styles: [".geo-map-layer-panel-host{display:block}.geo-map-layer-panel{display:flex;flex-direction:column;gap:4px}.geo-map-layer-panel__header{display:flex;align-items:center;margin-bottom:8px}.geo-map-layer-panel__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-layer-panel__groups{display:flex;flex-direction:column;gap:4px}.geo-map-layer-panel__group-head{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;padding:10px 0;border:0;background:transparent;cursor:pointer;font:inherit;color:var(--geo-color-neutral-900);text-align:left}.geo-map-layer-panel__group-head:focus-visible{outline:2px solid var(--geo-color-primary-default);outline-offset:2px;border-radius:var(--geo-radius)}.geo-map-layer-panel__group-label{display:inline-flex;align-items:center;gap:8px;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-semibold)}.geo-map-layer-panel__chevron{color:var(--geo-color-neutral-500)}.geo-map-layer-panel__list{margin:0;padding:0 0 8px;list-style:none;display:flex;flex-direction:column;gap:14px}.geo-map-layer-panel__item{display:flex;flex-direction:column;gap:8px}.geo-map-layer-panel__choice{display:inline-flex;align-items:flex-start;gap:10px;cursor:pointer}.geo-map-layer-panel__radio{flex-shrink:0;width:18px;height:18px;margin:2px 0 0;accent-color:var(--geo-color-primary-default);cursor:pointer}.geo-map-layer-panel__choice-label{font-size:var(--geo-font-size-body-small);color:var(--geo-color-neutral-900);line-height:1.4}.geo-map-layer-panel__item geo-checkbox,.geo-map-layer-panel__item .geo-checkbox-host{display:block}.geo-map-layer-panel__opacity{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px}.geo-map-layer-panel__slider{min-width:0}.geo-map-layer-panel__opacity-value{flex-shrink:0;min-width:40px;text-align:right;font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-medium);font-variant-numeric:tabular-nums;color:var(--geo-color-primary-default)}.geo-map-layer-panel__empty{margin:0;padding:8px 0;font-size:var(--geo-font-size-caption);color:var(--geo-color-neutral-500)}\n"], dependencies: [{ kind: "component", type: GeoCheckboxComponent, selector: "geo-checkbox", inputs: ["label", "checked", "disabled", "indeterminate"], outputs: ["checkedChange"] }, { 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 });
|
|
137
|
+
}
|
|
138
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapLayerPanelComponent, decorators: [{
|
|
139
|
+
type: Component,
|
|
140
|
+
args: [{ selector: 'geo-map-layer-panel', standalone: true, imports: [
|
|
141
|
+
GeoCheckboxComponent,
|
|
142
|
+
GeoIconComponent,
|
|
143
|
+
GeoSliderComponent,
|
|
144
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'geo-map-layer-panel-host' }, template: "<section class=\"geo-map-layer-panel\" aria-label=\"L\u1EDBp b\u1EA3n \u0111\u1ED3\">\n @if (!embedded()) {\n <header class=\"geo-map-layer-panel__header\">\n <h3 class=\"geo-map-layer-panel__title\">{{ title() }}</h3>\n </header>\n }\n\n <div class=\"geo-map-layer-panel__groups\">\n @for (section of sections(); track section.key) {\n <div\n class=\"geo-map-layer-panel__group\"\n [class.geo-map-layer-panel__group--open]=\"isExpanded(section.key)\"\n >\n <button\n type=\"button\"\n class=\"geo-map-layer-panel__group-head\"\n [attr.aria-expanded]=\"isExpanded(section.key)\"\n (click)=\"toggleSection(section.key)\"\n >\n <span class=\"geo-map-layer-panel__group-label\">\n <geo-icon type=\"appstore\" size=\"sm\" />\n <span>{{ section.title }}</span>\n </span>\n <geo-icon\n class=\"geo-map-layer-panel__chevron\"\n [type]=\"isExpanded(section.key) ? 'down' : 'right'\"\n size=\"sm\"\n />\n </button>\n\n @if (isExpanded(section.key)) {\n <ul class=\"geo-map-layer-panel__list\">\n @for (layer of section.layers; track layer.id) {\n <li class=\"geo-map-layer-panel__item\">\n @if (section.selection === 'single') {\n <label class=\"geo-map-layer-panel__choice\">\n <input\n class=\"geo-map-layer-panel__radio\"\n type=\"radio\"\n [name]=\"'geo-map-layer-' + section.key\"\n [checked]=\"isVisible(layer)\"\n (change)=\"onSelectSingle(section, layer)\"\n />\n <span class=\"geo-map-layer-panel__choice-label\">{{\n layer.title\n }}</span>\n </label>\n } @else {\n <geo-checkbox\n [label]=\"layer.title\"\n [checked]=\"isVisible(layer)\"\n (checkedChange)=\"onToggleMulti(layer, $event)\"\n />\n }\n\n <div class=\"geo-map-layer-panel__opacity\">\n <geo-slider\n class=\"geo-map-layer-panel__slider\"\n [min]=\"0\"\n [max]=\"100\"\n [step]=\"1\"\n [value]=\"opacityPercent(layer)\"\n (valueChange)=\"onOpacityChange(layer, $event)\"\n />\n <span class=\"geo-map-layer-panel__opacity-value\"\n >{{ opacityPercent(layer) }} %</span\n >\n </div>\n </li>\n }\n </ul>\n }\n </div>\n } @empty {\n <p class=\"geo-map-layer-panel__empty\">Ch\u01B0a c\u00F3 l\u1EDBp b\u1EA3n \u0111\u1ED3.</p>\n }\n </div>\n</section>\n", styles: [".geo-map-layer-panel-host{display:block}.geo-map-layer-panel{display:flex;flex-direction:column;gap:4px}.geo-map-layer-panel__header{display:flex;align-items:center;margin-bottom:8px}.geo-map-layer-panel__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-layer-panel__groups{display:flex;flex-direction:column;gap:4px}.geo-map-layer-panel__group-head{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;padding:10px 0;border:0;background:transparent;cursor:pointer;font:inherit;color:var(--geo-color-neutral-900);text-align:left}.geo-map-layer-panel__group-head:focus-visible{outline:2px solid var(--geo-color-primary-default);outline-offset:2px;border-radius:var(--geo-radius)}.geo-map-layer-panel__group-label{display:inline-flex;align-items:center;gap:8px;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-semibold)}.geo-map-layer-panel__chevron{color:var(--geo-color-neutral-500)}.geo-map-layer-panel__list{margin:0;padding:0 0 8px;list-style:none;display:flex;flex-direction:column;gap:14px}.geo-map-layer-panel__item{display:flex;flex-direction:column;gap:8px}.geo-map-layer-panel__choice{display:inline-flex;align-items:flex-start;gap:10px;cursor:pointer}.geo-map-layer-panel__radio{flex-shrink:0;width:18px;height:18px;margin:2px 0 0;accent-color:var(--geo-color-primary-default);cursor:pointer}.geo-map-layer-panel__choice-label{font-size:var(--geo-font-size-body-small);color:var(--geo-color-neutral-900);line-height:1.4}.geo-map-layer-panel__item geo-checkbox,.geo-map-layer-panel__item .geo-checkbox-host{display:block}.geo-map-layer-panel__opacity{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px}.geo-map-layer-panel__slider{min-width:0}.geo-map-layer-panel__opacity-value{flex-shrink:0;min-width:40px;text-align:right;font-size:var(--geo-font-size-caption);font-weight:var(--geo-font-weight-medium);font-variant-numeric:tabular-nums;color:var(--geo-color-primary-default)}.geo-map-layer-panel__empty{margin:0;padding:8px 0;font-size:var(--geo-font-size-caption);color:var(--geo-color-neutral-500)}\n"] }]
|
|
145
|
+
}], ctorParameters: () => [] });
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLW1hcC1sYXllci1wYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nZW8tdWkvc3JjL2xpYi9maWdtYS9nZW8tbWFwL2Nocm9tZS9nZW8tbWFwLWxheWVyLXBhbmVsL2dlby1tYXAtbGF5ZXItcGFuZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLW1hcC9jaHJvbWUvZ2VvLW1hcC1sYXllci1wYW5lbC9nZW8tbWFwLWxheWVyLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxFQUNMLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNwRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFXbkUsTUFBTSxVQUFVLEdBR1o7SUFDRixLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUU7SUFDckQsUUFBUSxFQUFFLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFO0lBQ3hELFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFO0lBQzNELE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxt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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIGlucHV0LFxuICBtb2RlbCxcbiAgb3V0cHV0LFxuICBzaWduYWwsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdlb0NoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZ2VvLWNoZWNrYm94L2dlby1jaGVja2JveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgR2VvSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2dlby1pY29uL2dlby1pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHZW9TbGlkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9nZW8tc2xpZGVyL2dlby1zbGlkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEdFT19NQVBfQkFTRU1BUF9MQVlFUl9JRCB9IGZyb20gJy4uLy4uL2dlby1tYXAuY29uc3RhbnRzJztcbmltcG9ydCB7IEdlb01hcENvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9nZW8tbWFwLmNvbnRyb2xsZXInO1xuaW1wb3J0IHR5cGUgeyBHZW9NYXBMYXllckNvbmZpZyB9IGZyb20gJy4uLy4uL2dlby1tYXAudHlwZXMnO1xuXG5pbnRlcmZhY2UgTGF5ZXJHcm91cFNlY3Rpb24ge1xuICBrZXk6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgc2VsZWN0aW9uOiAnc2luZ2xlJyB8ICdtdWx0aSc7XG4gIGxheWVyczogR2VvTWFwTGF5ZXJDb25maWdbXTtcbn1cblxuY29uc3QgR1JPVVBfTUVUQTogUmVjb3JkPFxuICBzdHJpbmcsXG4gIHsgdGl0bGU6IHN0cmluZzsgc2VsZWN0aW9uOiAnc2luZ2xlJyB8ICdtdWx0aSc7IH1cbj4gPSB7XG4gIHFoc2RkOiB7IHRpdGxlOiAnQuG6o24gxJHhu5MgUUhTREQnLCBzZWxlY3Rpb246ICdzaW5nbGUnIH0sXG4gIHBsYW5uaW5nOiB7IHRpdGxlOiAnQuG6o24gxJHhu5MgUUhTREQnLCBzZWxlY3Rpb246ICdzaW5nbGUnIH0sXG4gIGNhZGFzdHJlOiB7IHRpdGxlOiAnQuG6o24gxJHhu5MgxJHhu4thIGNow61uaCcsIHNlbGVjdGlvbjogJ211bHRpJyB9LFxuICBjdXJyZW50OiB7IHRpdGxlOiAnQuG6o24gxJHhu5MgaGnhu4duIHRy4bqhbmcnLCBzZWxlY3Rpb246ICdzaW5nbGUnIH0sXG4gICdiYXNlLW1hcCc6IHsgdGl0bGU6ICdC4bqjbiDEkeG7kyBu4buBbicsIHNlbGVjdGlvbjogJ3NpbmdsZScgfSxcbn07XG5cbmNvbnN0IEdST1VQX09SREVSID0gWydxaHNkZCcsICdwbGFubmluZycsICdjYWRhc3RyZScsICdjdXJyZW50JywgJ2Jhc2UtbWFwJ107XG5cbi8qKlxuICogVG9nZ2xlIGxheWVyIHZpc2liaWxpdHkgLyBvcGFjaXR5IGJ5IGFjY29yZGlvbiBncm91cHMuXG4gKlxuICogQHN1bW1hcnkgUGFuZWwgYuG6rXQvdOG6r3QgbOG7m3AgYuG6o24gxJHhu5MgdGhlbyBuaMOzbSAocmFkaW8gLyBjaGVja2JveCArIMSR4buZIG3hu50pLlxuICogQHdoZW5Ub1VzZSBNYXAgY2hyb21lIHBvcG92ZXIgwqtM4bubcCBi4bqjbiDEkeG7k8K7LlxuICogQGRvTm90VXNlV2hlbiBOb24tbWFwIGxpc3RzIOKAlCB1c2UgZ2VvLXRyZWUvZ2VvLWNoZWNrYm94LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnZW8tbWFwLWxheWVyLXBhbmVsJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEdlb0NoZWNrYm94Q29tcG9uZW50LFxuICAgIEdlb0ljb25Db21wb25lbnQsXG4gICAgR2VvU2xpZGVyQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2VvLW1hcC1sYXllci1wYW5lbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9nZW8tbWFwLWxheWVyLXBhbmVsLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHsgY2xhc3M6ICdnZW8tbWFwLWxheWVyLXBhbmVsLWhvc3QnIH0sXG59KVxuZXhwb3J0IGNsYXNzIEdlb01hcExheWVyUGFuZWxDb21wb25lbnQge1xuICByZWFkb25seSBjb250cm9sbGVyID0gaW5wdXQ8R2VvTWFwQ29udHJvbGxlciB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSB0aXRsZSA9IGlucHV0KCdM4bubcCBi4bqjbiDEkeG7kycpO1xuICAvKiogV2hlbiB0cnVlLCBoaWRlIHRoZSBwYW5lbCdzIG93biBoZWFkZXIgKGhvc3QgcG9wb3ZlciBwcm92aWRlcyB0aXRsZSkuICovXG4gIHJlYWRvbmx5IGVtYmVkZGVkID0gaW5wdXQoZmFsc2UpO1xuICByZWFkb25seSBsYXllcnMgPSBtb2RlbDxHZW9NYXBMYXllckNvbmZpZ1tdPihbXSk7XG5cbiAgcmVhZG9ubHkgbGF5ZXJzQ2hhbmdlID0gb3V0cHV0PEdlb01hcExheWVyQ29uZmlnW10+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSB0aWNrID0gc2lnbmFsKDApO1xuICByZWFkb25seSBleHBhbmRlZEtleXMgPSBzaWduYWw8UmVjb3JkPHN0cmluZywgYm9vbGVhbj4+KHt9KTtcblxuICByZWFkb25seSBzZWN0aW9ucyA9IGNvbXB1dGVkPExheWVyR3JvdXBTZWN0aW9uW10+KCgpID0+IHtcbiAgICB0aGlzLnRpY2soKTtcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5yZXNvbHZlTGF5ZXJzKCkuZmlsdGVyKFxuICAgICAgKGxheWVyKSA9PlxuICAgICAgICAhbGF5ZXIuYmFzZW1hcCAmJlxuICAgICAgICBsYXllci5ncm91cCAhPT0gJ3N5c3RlbScgJiZcbiAgICAgICAgbGF5ZXIuaWQgIT09IEdFT19NQVBfQkFTRU1BUF9MQVlFUl9JRCxcbiAgICApO1xuXG4gICAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIExheWVyR3JvdXBTZWN0aW9uPigpO1xuICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgbGlzdCkge1xuICAgICAgY29uc3Qga2V5ID0gbGF5ZXIuZ3JvdXA/LnRyaW0oKSB8fCAnb3RoZXInO1xuICAgICAgY29uc3QgbWV0YSA9IEdST1VQX01FVEFba2V5XTtcbiAgICAgIGNvbnN0IHRpdGxlID0gbGF5ZXIuZ3JvdXBMYWJlbCA/PyBtZXRhPy50aXRsZSA/PyBrZXk7XG4gICAgICBjb25zdCBzZWxlY3Rpb24gPSBsYXllci5ncm91cFNlbGVjdGlvbiA/PyBtZXRhPy5zZWxlY3Rpb24gPz8gJ211bHRpJztcbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gbWFwLmdldChrZXkpO1xuICAgICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICAgIGV4aXN0aW5nLmxheWVycy5wdXNoKGxheWVyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hcC5zZXQoa2V5LCB7IGtleSwgdGl0bGUsIHNlbGVjdGlvbiwgbGF5ZXJzOiBbbGF5ZXJdIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBbLi4ubWFwLnZhbHVlcygpXS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICBjb25zdCBhaSA9IEdST1VQX09SREVSLmluZGV4T2YoYS5rZXkpO1xuICAgICAgY29uc3QgYmkgPSBHUk9VUF9PUkRFUi5pbmRleE9mKGIua2V5KTtcbiAgICAgIHJldHVybiAoYWkgPCAwID8gOTkgOiBhaSkgLSAoYmkgPCAwID8gOTkgOiBiaSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5jb250cm9sbGVyKCk7XG4gICAgICAgIHRoaXMubGF5ZXJzKCk7XG4gICAgICAgIHRoaXMudGljay51cGRhdGUoKG4pID0+IG4gKyAxKTtcbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG4gICAgKTtcblxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3Qgc2VjdGlvbnMgPSB0aGlzLnNlY3Rpb25zKCk7XG4gICAgICAgIHRoaXMuZXhwYW5kZWRLZXlzLnVwZGF0ZSgocHJldikgPT4ge1xuICAgICAgICAgIGNvbnN0IG5leHQgPSB7IC4uLnByZXYgfTtcbiAgICAgICAgICBmb3IgKGNvbnN0IHNlY3Rpb24gb2Ygc2VjdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChuZXh0W3NlY3Rpb24ua2V5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIG5leHRbc2VjdGlvbi5rZXldID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcbiAgICApO1xuICB9XG5cbiAgaXNFeHBhbmRlZChrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmV4cGFuZGVkS2V5cygpW2tleV0gIT09IGZhbHNlO1xuICB9XG5cbiAgdG9nZ2xlU2VjdGlvbihrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZXhwYW5kZWRLZXlzLnVwZGF0ZSgocHJldikgPT4gKHtcbiAgICAgIC4uLnByZXYsXG4gICAgICBba2V5XTogIShwcmV2W2tleV0gIT09IGZhbHNlKSxcbiAgICB9KSk7XG4gIH1cblxuICBpc1Zpc2libGUobGF5ZXI6IEdlb01hcExheWVyQ29uZmlnKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGxheWVyLnZpc2libGUgIT09IGZhbHNlO1xuICB9XG5cbiAgb3BhY2l0eVBlcmNlbnQobGF5ZXI6IEdlb01hcExheWVyQ29uZmlnKTogbnVtYmVyIHtcbiAgICBjb25zdCBvcGFjaXR5ID0gbGF5ZXIub3BhY2l0eTtcbiAgICBpZiAob3BhY2l0eSA9PSBudWxsIHx8IE51bWJlci5pc05hTihvcGFjaXR5KSkge1xuICAgICAgcmV0dXJuIDEwMDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgucm91bmQoTWF0aC5taW4oMSwgTWF0aC5tYXgoMCwgb3BhY2l0eSkpICogMTAwKTtcbiAgfVxuXG4gIG9uVG9nZ2xlTXVsdGkobGF5ZXI6IEdlb01hcExheWVyQ29uZmlnLCBjaGVja2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgbmV4dCA9IHRoaXMucmVzb2x2ZUxheWVycygpLm1hcCgoaXRlbSkgPT5cbiAgICAgIGl0ZW0uaWQgPT09IGxheWVyLmlkID8geyAuLi5pdGVtLCB2aXNpYmxlOiBjaGVja2VkIH0gOiBpdGVtLFxuICAgICk7XG4gICAgdGhpcy5hcHBseUxheWVycyhuZXh0KTtcbiAgICB0aGlzLmNvbnRyb2xsZXIoKT8uc2V0TGF5ZXJWaXNpYmlsaXR5KGxheWVyLmlkLCBjaGVja2VkKTtcbiAgfVxuXG4gIG9uU2VsZWN0U2luZ2xlKHNlY3Rpb246IExheWVyR3JvdXBTZWN0aW9uLCBsYXllcjogR2VvTWFwTGF5ZXJDb25maWcpOiB2b2lkIHtcbiAgICBjb25zdCBuZXh0ID0gdGhpcy5yZXNvbHZlTGF5ZXJzKCkubWFwKChpdGVtKSA9PiB7XG4gICAgICBpZiAoaXRlbS5ncm91cCAhPT0gc2VjdGlvbi5rZXkpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICB9XG4gICAgICBjb25zdCB2aXNpYmxlID0gaXRlbS5pZCA9PT0gbGF5ZXIuaWQ7XG4gICAgICByZXR1cm4geyAuLi5pdGVtLCB2aXNpYmxlIH07XG4gICAgfSk7XG4gICAgdGhpcy5hcHBseUxheWVycyhuZXh0KTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgbmV4dCkge1xuICAgICAgaWYgKGl0ZW0uZ3JvdXAgPT09IHNlY3Rpb24ua2V5KSB7XG4gICAgICAgIHRoaXMuY29udHJvbGxlcigpPy5zZXRMYXllclZpc2liaWxpdHkoaXRlbS5pZCwgaXRlbS52aXNpYmxlICE9PSBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25PcGFjaXR5Q2hhbmdlKGxheWVyOiBHZW9NYXBMYXllckNvbmZpZywgcGVyY2VudDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3Qgb3BhY2l0eSA9IE1hdGgubWluKDEwMCwgTWF0aC5tYXgoMCwgcGVyY2VudCkpIC8gMTAwO1xuICAgIGNvbnN0IG5leHQgPSB0aGlzLnJlc29sdmVMYXllcnMoKS5tYXAoKGl0ZW0pID0+XG4gICAgICBpdGVtLmlkID09PSBsYXllci5pZCA/IHsgLi4uaXRlbSwgb3BhY2l0eSB9IDogaXRlbSxcbiAgICApO1xuICAgIHRoaXMuYXBwbHlMYXllcnMobmV4dCk7XG4gICAgdGhpcy5jb250cm9sbGVyKCk/LnNldExheWVyT3BhY2l0eShsYXllci5pZCwgb3BhY2l0eSk7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVMYXllcnMoKTogR2VvTWFwTGF5ZXJDb25maWdbXSB7XG4gICAgY29uc3QgbG9jYWwgPSB0aGlzLmxheWVycygpO1xuICAgIGlmIChsb2NhbC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBsb2NhbDtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY29udHJvbGxlcigpXG4gICAgICAgID8uZ2V0TGF5ZXJzKClcbiAgICAgICAgLm1hcCgoaXRlbSkgPT4gaXRlbS5jb25maWcpXG4gICAgICAgIC5maWx0ZXIoKGNmZykgPT4gY2ZnLmlkICE9PSBHRU9fTUFQX0JBU0VNQVBfTEFZRVJfSUQpID8/IFtdXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlMYXllcnMobmV4dDogR2VvTWFwTGF5ZXJDb25maWdbXSk6IHZvaWQge1xuICAgIHRoaXMubGF5ZXJzLnNldChuZXh0KTtcbiAgICB0aGlzLmxheWVyc0NoYW5nZS5lbWl0KG5leHQpO1xuICAgIHRoaXMudGljay51cGRhdGUoKG4pID0+IG4gKyAxKTtcbiAgfVxufVxuIiwiPHNlY3Rpb24gY2xhc3M9XCJnZW8tbWFwLWxheWVyLXBhbmVsXCIgYXJpYS1sYWJlbD1cIkzhu5twIGLhuqNuIMSR4buTXCI+XG4gIEBpZiAoIWVtYmVkZGVkKCkpIHtcbiAgICA8aGVhZGVyIGNsYXNzPVwiZ2VvLW1hcC1sYXllci1wYW5lbF9faGVhZGVyXCI+XG4gICAgICA8aDMgY2xhc3M9XCJnZW8tbWFwLWxheWVyLXBhbmVsX190aXRsZVwiPnt7IHRpdGxlKCkgfX08L2gzPlxuICAgIDwvaGVhZGVyPlxuICB9XG5cbiAgPGRpdiBjbGFzcz1cImdlby1tYXAtbGF5ZXItcGFuZWxfX2dyb3Vwc1wiPlxuICAgIEBmb3IgKHNlY3Rpb24gb2Ygc2VjdGlvbnMoKTsgdHJhY2sgc2VjdGlvbi5rZXkpIHtcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJnZW8tbWFwLWxheWVyLXBhbmVsX19ncm91cFwiXG4gICAgICAgIFtjbGFzcy5nZW8tbWFwLWxheWVyLXBhbmVsX19ncm91cC0tb3Blbl09XCJpc0V4cGFuZGVkKHNlY3Rpb24ua2V5KVwiXG4gICAgICA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImdlby1tYXAtbGF5ZXItcGFuZWxfX2dyb3VwLWhlYWRcIlxuICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNFeHBhbmRlZChzZWN0aW9uLmtleSlcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTZWN0aW9uKHNlY3Rpb24ua2V5KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImdlby1tYXAtbGF5ZXItcGFuZWxfX2dyb3VwLWxhYmVsXCI+XG4gICAgICAgICAgICA8Z2VvLWljb24gdHlwZT1cImFwcHN0b3JlXCIgc2l6ZT1cInNtXCIgLz5cbiAgICAgICAgICAgIDxzcGFuPnt7IHNlY3Rpb24udGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxnZW8taWNvblxuICAgICAgICAgICAgY2xhc3M9XCJnZW8tbWFwLWxheWVyLXBhbmVsX19jaGV2cm9uXCJcbiAgICAgICAgICAgIFt0eXBlXT1cImlzRXhwYW5kZWQoc2VjdGlvbi5rZXkpID8gJ2Rvd24nIDogJ3JpZ2h0J1wiXG4gICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIEBpZiAoaXNFeHBhbmRlZChzZWN0aW9uLmtleSkpIHtcbiAgICAgICAgICA8dWwgY2xhc3M9XCJnZW8tbWFwLWxheWVyLXBhbmVsX19saXN0XCI+XG4gICAgICAgICAgICBAZm9yIChsYXllciBvZiBzZWN0aW9uLmxheWVyczsgdHJhY2sgbGF5ZXIuaWQpIHtcbiAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiZ2VvLW1hcC1sYXllci1wYW5lbF9faXRlbVwiPlxuICAgICAgICAgICAgICAgIEBpZiAoc2VjdGlvbi5zZWxlY3Rpb24gPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnZW8tbWFwLWxheWVyLXBhbmVsX19jaG9pY2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJnZW8tbWFwLWxheWVyLXBhbmVsX19yYWRpb1wiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCInZ2VvLW1hcC1sYXllci0nICsgc2VjdGlvbi5rZXlcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzVmlzaWJsZShsYXllcilcIlxuICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25TZWxlY3RTaW5nbGUoc2VjdGlvbiwgbGF5ZXIpXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJnZW8tbWFwLWxheWVyLXBhbmVsX19jaG9pY2UtbGFiZWxcIj57e1xuICAgICAgICAgICAgICAgICAgICAgIGxheWVyLnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIDxnZW8tY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxheWVyLnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNWaXNpYmxlKGxheWVyKVwiXG4gICAgICAgICAgICAgICAgICAgIChjaGVja2VkQ2hhbmdlKT1cIm9uVG9nZ2xlTXVsdGkobGF5ZXIsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2VvLW1hcC1sYXllci1wYW5lbF9fb3BhY2l0eVwiPlxuICAgICAgICAgICAgICAgICAgPGdlby1zbGlkZXJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJnZW8tbWFwLWxheWVyLXBhbmVsX19zbGlkZXJcIlxuICAgICAgICAgICAgICAgICAgICBbbWluXT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICBbbWF4XT1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgIFtzdGVwXT1cIjFcIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwib3BhY2l0eVBlcmNlbnQobGF5ZXIpXCJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uT3BhY2l0eUNoYW5nZShsYXllciwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJnZW8tbWFwLWxheWVyLXBhbmVsX19vcGFjaXR5LXZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgPnt7IG9wYWNpdHlQZXJjZW50KGxheWVyKSB9fSAlPC9zcGFuXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfSBAZW1wdHkge1xuICAgICAgPHAgY2xhc3M9XCJnZW8tbWFwLWxheWVyLXBhbmVsX19lbXB0eVwiPkNoxrBhIGPDsyBs4bubcCBi4bqjbiDEkeG7ky48L3A+XG4gICAgfVxuICA8L2Rpdj5cbjwvc2VjdGlvbj5cbiJdfQ==
|
package/esm2022/lib/figma/geo-map/chrome/geo-map-layers-drawer/geo-map-layers-drawer.component.mjs
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, input, model, output, ViewEncapsulation, } from '@angular/core';
|
|
2
|
+
import { GeoIconComponent } from '../../../geo-icon/geo-icon.component';
|
|
3
|
+
import { GeoMapLayerPanelComponent } from '../geo-map-layer-panel/geo-map-layer-panel.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* Floating popover for map layer visibility / opacity.
|
|
7
|
+
*
|
|
8
|
+
* @summary Popover lớp bản đồ (accordion + radio/checkbox + độ mờ).
|
|
9
|
+
* @whenToUse Opened from toolbar layers action.
|
|
10
|
+
* @doNotUseWhen Always-visible panels that crowd the map.
|
|
11
|
+
*/
|
|
12
|
+
export class GeoMapLayersDrawerComponent {
|
|
13
|
+
controller = input(null);
|
|
14
|
+
open = model(false);
|
|
15
|
+
title = input('Lớp bản đồ');
|
|
16
|
+
legendItems = input([]);
|
|
17
|
+
/** Kept for API compat — opacity is per-layer in the new panel. */
|
|
18
|
+
showOpacity = input(false);
|
|
19
|
+
/** Kept for API compat — legend lives outside this popover. */
|
|
20
|
+
showLegend = input(false);
|
|
21
|
+
layers = model([]);
|
|
22
|
+
closed = output();
|
|
23
|
+
onClose() {
|
|
24
|
+
this.open.set(false);
|
|
25
|
+
this.closed.emit();
|
|
26
|
+
}
|
|
27
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapLayersDrawerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
28
|
+
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 });
|
|
29
|
+
}
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapLayersDrawerComponent, decorators: [{
|
|
31
|
+
type: Component,
|
|
32
|
+
args: [{ selector: 'geo-map-layers-drawer', standalone: true, imports: [GeoIconComponent, GeoMapLayerPanelComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
33
|
+
class: 'geo-map-layers-drawer-host',
|
|
34
|
+
'[class.geo-map-layers-drawer-host--open]': 'open()',
|
|
35
|
+
}, 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"] }]
|
|
36
|
+
}] });
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLW1hcC1sYXllcnMtZHJhd2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlby11aS9zcmMvbGliL2ZpZ21hL2dlby1tYXAvY2hyb21lL2dlby1tYXAtbGF5ZXJzLWRyYXdlci9nZW8tbWFwLWxheWVycy1kcmF3ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLW1hcC9jaHJvbWUvZ2VvLW1hcC1sYXllcnMtZHJhd2VyL2dlby1tYXAtbGF5ZXJzLWRyYXdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFHeEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0RBQXNELENBQUM7O0FBRWpHOzs7Ozs7R0FNRztBQWNILE1BQU0sT0FBTywyQkFBMkI7SUFDN0IsVUFBVSxHQUFHLEtBQUssQ0FBMEIsSUFBSSxDQUFDLENBQUM7SUFDbEQsSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQixLQUFLLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzVCLFdBQVcsR0FBRyxLQUFLLENBQXFCLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELG1FQUFtRTtJQUMxRCxXQUFXLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLCtEQUErRDtJQUN0RCxVQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLE1BQU0sR0FBRyxLQUFLLENBQXNCLEVBQUUsQ0FBQyxDQUFDO0lBRXhDLE1BQU0sR0FBRyxNQUFNLEVBQVEsQ0FBQztJQUVqQyxPQUFPO1FBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyQixDQUFDO3dHQWhCVSwyQkFBMkI7NEZBQTNCLDJCQUEyQiw4cUNDakN4QyxvdUJBdUJBLG81RERBWSxnQkFBZ0IseUdBQUUseUJBQXlCOzs0RkFVMUMsMkJBQTJCO2tCQWJ2QyxTQUFTOytCQUNFLHVCQUF1QixjQUNyQixJQUFJLFdBQ1AsQ0FBQyxnQkFBZ0IsRUFBRSx5QkFBeUIsQ0FBQyxtQkFHckMsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDSixLQUFLLEVBQUUsNEJBQTRCO3dCQUNuQywwQ0FBMEMsRUFBRSxRQUFRO3FCQUNyRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGlucHV0LFxuICBtb2RlbCxcbiAgb3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHZW9JY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZ2VvLWljb24vZ2VvLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7IEdlb01hcENvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9nZW8tbWFwLmNvbnRyb2xsZXInO1xuaW1wb3J0IHR5cGUgeyBHZW9NYXBMYXllckNvbmZpZywgR2VvTWFwTGVnZW5kSXRlbSB9IGZyb20gJy4uLy4uL2dlby1tYXAudHlwZXMnO1xuaW1wb3J0IHsgR2VvTWFwTGF5ZXJQYW5lbENvbXBvbmVudCB9IGZyb20gJy4uL2dlby1tYXAtbGF5ZXItcGFuZWwvZ2VvLW1hcC1sYXllci1wYW5lbC5jb21wb25lbnQnO1xuXG4vKipcbiAqIEZsb2F0aW5nIHBvcG92ZXIgZm9yIG1hcCBsYXllciB2aXNpYmlsaXR5IC8gb3BhY2l0eS5cbiAqXG4gKiBAc3VtbWFyeSBQb3BvdmVyIGzhu5twIGLhuqNuIMSR4buTIChhY2NvcmRpb24gKyByYWRpby9jaGVja2JveCArIMSR4buZIG3hu50pLlxuICogQHdoZW5Ub1VzZSBPcGVuZWQgZnJvbSB0b29sYmFyIGxheWVycyBhY3Rpb24uXG4gKiBAZG9Ob3RVc2VXaGVuIEFsd2F5cy12aXNpYmxlIHBhbmVscyB0aGF0IGNyb3dkIHRoZSBtYXAuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dlby1tYXAtbGF5ZXJzLWRyYXdlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtHZW9JY29uQ29tcG9uZW50LCBHZW9NYXBMYXllclBhbmVsQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL2dlby1tYXAtbGF5ZXJzLWRyYXdlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9nZW8tbWFwLWxheWVycy1kcmF3ZXIuY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnZ2VvLW1hcC1sYXllcnMtZHJhd2VyLWhvc3QnLFxuICAgICdbY2xhc3MuZ2VvLW1hcC1sYXllcnMtZHJhd2VyLWhvc3QtLW9wZW5dJzogJ29wZW4oKScsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIEdlb01hcExheWVyc0RyYXdlckNvbXBvbmVudCB7XG4gIHJlYWRvbmx5IGNvbnRyb2xsZXIgPSBpbnB1dDxHZW9NYXBDb250cm9sbGVyIHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IG9wZW4gPSBtb2RlbChmYWxzZSk7XG4gIHJlYWRvbmx5IHRpdGxlID0gaW5wdXQoJ0zhu5twIGLhuqNuIMSR4buTJyk7XG4gIHJlYWRvbmx5IGxlZ2VuZEl0ZW1zID0gaW5wdXQ8R2VvTWFwTGVnZW5kSXRlbVtdPihbXSk7XG4gIC8qKiBLZXB0IGZvciBBUEkgY29tcGF0IOKAlCBvcGFjaXR5IGlzIHBlci1sYXllciBpbiB0aGUgbmV3IHBhbmVsLiAqL1xuICByZWFkb25seSBzaG93T3BhY2l0eSA9IGlucHV0KGZhbHNlKTtcbiAgLyoqIEtlcHQgZm9yIEFQSSBjb21wYXQg4oCUIGxlZ2VuZCBsaXZlcyBvdXRzaWRlIHRoaXMgcG9wb3Zlci4gKi9cbiAgcmVhZG9ubHkgc2hvd0xlZ2VuZCA9IGlucHV0KGZhbHNlKTtcbiAgcmVhZG9ubHkgbGF5ZXJzID0gbW9kZWw8R2VvTWFwTGF5ZXJDb25maWdbXT4oW10pO1xuXG4gIHJlYWRvbmx5IGNsb3NlZCA9IG91dHB1dDx2b2lkPigpO1xuXG4gIG9uQ2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuLnNldChmYWxzZSk7XG4gICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xuICB9XG59XG4iLCJAaWYgKG9wZW4oKSkge1xuICA8YXNpZGUgY2xhc3M9XCJnZW8tbWFwLWxheWVycy1kcmF3ZXJcIiByb2xlPVwiZGlhbG9nXCIgYXJpYS1sYWJlbD1cIkzhu5twIGLhuqNuIMSR4buTXCI+XG4gICAgPGhlYWRlciBjbGFzcz1cImdlby1tYXAtbGF5ZXJzLWRyYXdlcl9faGVhZGVyXCI+XG4gICAgICA8aDMgY2xhc3M9XCJnZW8tbWFwLWxheWVycy1kcmF3ZXJfX3RpdGxlXCI+e3sgdGl0bGUoKSB9fTwvaDM+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cImdlby1tYXAtbGF5ZXJzLWRyYXdlcl9fY2xvc2VcIlxuICAgICAgICBhcmlhLWxhYmVsPVwixJDDs25nIGzhu5twIGLhuqNuIMSR4buTXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiXG4gICAgICA+XG4gICAgICAgIDxnZW8taWNvbiB0eXBlPVwiY2xvc2VcIiBzaXplPVwic21cIiAvPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9oZWFkZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZ2VvLW1hcC1sYXllcnMtZHJhd2VyX19ib2R5XCI+XG4gICAgICA8Z2VvLW1hcC1sYXllci1wYW5lbFxuICAgICAgICBbZW1iZWRkZWRdPVwidHJ1ZVwiXG4gICAgICAgIFtjb250cm9sbGVyXT1cImNvbnRyb2xsZXIoKVwiXG4gICAgICAgIFsobGF5ZXJzKV09XCJsYXllcnNcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgPC9hc2lkZT5cbn1cbiJdfQ==
|