@geoit/ui 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,16 @@
1
+ import { GeoMapController } from '../../geo-map.controller';
2
+ import type { GeoMapLocateErrorReason } from '../../geo-map.types';
3
+ export interface GeoMapLocateCallbacks {
4
+ onLocated?: (lonLat: [number, number]) => void;
5
+ onDenied?: () => void;
6
+ onError?: (error: {
7
+ reason: GeoMapLocateErrorReason;
8
+ message?: string;
9
+ }) => void;
10
+ }
11
+ /**
12
+ * Shared browser-geolocation trigger — centers `ctrl` on the user and reports the outcome.
13
+ * Used by both `geo-map-locate` (standalone button) and `geo-map-shell`'s built-in locate
14
+ * toolbar action so the two never drift on error-reason mapping.
15
+ */
16
+ export declare function runGeoMapLocate(ctrl: GeoMapController, callbacks: GeoMapLocateCallbacks): void;
@@ -1,6 +1,6 @@
1
1
  import { GeoMapController } from '../../geo-map.controller';
2
2
  import type { GeoTreeNode } from '../../../geo-tree/geo-tree.types';
3
- import type { GeoMapBasemap, GeoMapBasemapOption, GeoMapClickEvent, GeoMapLayerConfig, GeoMapLegendItem, GeoMapMeasureMode, GeoMapParcelAudience, GeoMapParcelDetail, GeoMapSearchQuery, GeoMapSearchResultItem, GeoMapToolbarAction } from '../../geo-map.types';
3
+ import type { GeoMapBasemap, GeoMapBasemapOption, GeoMapClickEvent, GeoMapLayerConfig, GeoMapLegendItem, GeoMapLocateErrorReason, GeoMapMeasureMode, GeoMapParcelAudience, GeoMapParcelDetail, GeoMapSearchQuery, GeoMapSearchResultItem, GeoMapToolbarAction } from '../../geo-map.types';
4
4
  import * as i0 from "@angular/core";
5
5
  /**
6
6
  * Map viewport + portal chrome (toolbar, layers drawer, legend, help, swipe, …).
@@ -22,6 +22,8 @@ export declare class GeoMapShellComponent {
22
22
  /** Extra overlays merged after demo thematic + traffic. */
23
23
  readonly layers: import("@angular/core").InputSignal<GeoMapLayerConfig[]>;
24
24
  readonly legendItems: import("@angular/core").InputSignal<GeoMapLegendItem[]>;
25
+ /** Host app sets true when the legend catalog (loại đất/ký hiệu/màu) failed to load. */
26
+ readonly legendCatalogMissing: import("@angular/core").InputSignal<boolean>;
25
27
  readonly showNav: import("@angular/core").InputSignal<boolean>;
26
28
  readonly includeDemoLayers: import("@angular/core").InputSignal<boolean>;
27
29
  readonly adminNodes: import("@angular/core").InputSignal<GeoTreeNode[]>;
@@ -52,7 +54,12 @@ export declare class GeoMapShellComponent {
52
54
  readonly adminExpandedKeys: import("@angular/core").ModelSignal<(string | number)[]>;
53
55
  readonly mapReady: import("@angular/core").OutputEmitterRef<GeoMapController>;
54
56
  readonly mapClick: import("@angular/core").OutputEmitterRef<GeoMapClickEvent>;
57
+ readonly located: import("@angular/core").OutputEmitterRef<void>;
55
58
  readonly locateDenied: import("@angular/core").OutputEmitterRef<void>;
59
+ readonly locateError: import("@angular/core").OutputEmitterRef<{
60
+ reason: GeoMapLocateErrorReason;
61
+ message?: string;
62
+ }>;
56
63
  readonly actionClick: import("@angular/core").OutputEmitterRef<GeoMapToolbarAction>;
57
64
  readonly search: import("@angular/core").OutputEmitterRef<GeoMapSearchQuery>;
58
65
  readonly searchReset: import("@angular/core").OutputEmitterRef<void>;
@@ -93,11 +100,13 @@ export declare class GeoMapShellComponent {
93
100
  private enterPanMode;
94
101
  private exitToolMode;
95
102
  private applyPanCursor;
103
+ /** Backing action for the `locate` toolbar entry (`GEO_MAP_LOCATE_TOOLBAR_ACTION`). */
104
+ private triggerLocate;
96
105
  private setMapCursor;
97
106
  private bindPanCursor;
98
107
  private unbindPanCursor;
99
108
  private buildDemoSearchResults;
100
109
  private ensureSwipeOverlayVisible;
101
110
  static ɵfac: i0.ɵɵFactoryDeclaration<GeoMapShellComponent, never>;
102
- static ɵcmp: i0.ɵɵComponentDeclaration<GeoMapShellComponent, "geo-map-shell", never, { "center": { "alias": "center"; "required": false; "isSignal": true; }; "zoom": { "alias": "zoom"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "showMousePosition": { "alias": "showMousePosition"; "required": false; "isSignal": true; }; "basemapOptions": { "alias": "basemapOptions"; "required": false; "isSignal": true; }; "toolbarActions": { "alias": "toolbarActions"; "required": false; "isSignal": true; }; "layers": { "alias": "layers"; "required": false; "isSignal": true; }; "legendItems": { "alias": "legendItems"; "required": false; "isSignal": true; }; "showNav": { "alias": "showNav"; "required": false; "isSignal": true; }; "includeDemoLayers": { "alias": "includeDemoLayers"; "required": false; "isSignal": true; }; "adminNodes": { "alias": "adminNodes"; "required": false; "isSignal": true; }; "locationLabel": { "alias": "locationLabel"; "required": false; "isSignal": true; }; "parcelAudience": { "alias": "parcelAudience"; "required": false; "isSignal": true; }; "provinceExtent": { "alias": "provinceExtent"; "required": false; "isSignal": true; }; "demoSearch": { "alias": "demoSearch"; "required": false; "isSignal": true; }; "homeMode": { "alias": "homeMode"; "required": false; "isSignal": true; }; "basemapId": { "alias": "basemapId"; "required": false; "isSignal": true; }; "measureMode": { "alias": "measureMode"; "required": false; "isSignal": true; }; "checkedMap": { "alias": "checkedMap"; "required": false; "isSignal": true; }; "layersOpen": { "alias": "layersOpen"; "required": false; "isSignal": true; }; "legendOpen": { "alias": "legendOpen"; "required": false; "isSignal": true; }; "helpOpen": { "alias": "helpOpen"; "required": false; "isSignal": true; }; "swipeActive": { "alias": "swipeActive"; "required": false; "isSignal": true; }; "searchOpen": { "alias": "searchOpen"; "required": false; "isSignal": true; }; "adminFilterOpen": { "alias": "adminFilterOpen"; "required": false; "isSignal": true; }; "parcelOpen": { "alias": "parcelOpen"; "required": false; "isSignal": true; }; "managedLayers": { "alias": "managedLayers"; "required": false; "isSignal": true; }; "searchResults": { "alias": "searchResults"; "required": false; "isSignal": true; }; "selectedParcel": { "alias": "selectedParcel"; "required": false; "isSignal": true; }; "adminCheckedKeys": { "alias": "adminCheckedKeys"; "required": false; "isSignal": true; }; "adminExpandedKeys": { "alias": "adminExpandedKeys"; "required": false; "isSignal": true; }; }, { "basemapId": "basemapIdChange"; "measureMode": "measureModeChange"; "checkedMap": "checkedMapChange"; "layersOpen": "layersOpenChange"; "legendOpen": "legendOpenChange"; "helpOpen": "helpOpenChange"; "swipeActive": "swipeActiveChange"; "searchOpen": "searchOpenChange"; "adminFilterOpen": "adminFilterOpenChange"; "parcelOpen": "parcelOpenChange"; "managedLayers": "managedLayersChange"; "searchResults": "searchResultsChange"; "selectedParcel": "selectedParcelChange"; "adminCheckedKeys": "adminCheckedKeysChange"; "adminExpandedKeys": "adminExpandedKeysChange"; "mapReady": "mapReady"; "mapClick": "mapClick"; "locateDenied": "locateDenied"; "actionClick": "actionClick"; "search": "search"; "searchReset": "searchReset"; "resultSelect": "resultSelect"; "parcelExport": "parcelExport"; "adminApply": "adminApply"; }, never, ["[geoMapShellTopRight]"], true, never>;
111
+ static ɵcmp: i0.ɵɵComponentDeclaration<GeoMapShellComponent, "geo-map-shell", never, { "center": { "alias": "center"; "required": false; "isSignal": true; }; "zoom": { "alias": "zoom"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "showMousePosition": { "alias": "showMousePosition"; "required": false; "isSignal": true; }; "basemapOptions": { "alias": "basemapOptions"; "required": false; "isSignal": true; }; "toolbarActions": { "alias": "toolbarActions"; "required": false; "isSignal": true; }; "layers": { "alias": "layers"; "required": false; "isSignal": true; }; "legendItems": { "alias": "legendItems"; "required": false; "isSignal": true; }; "legendCatalogMissing": { "alias": "legendCatalogMissing"; "required": false; "isSignal": true; }; "showNav": { "alias": "showNav"; "required": false; "isSignal": true; }; "includeDemoLayers": { "alias": "includeDemoLayers"; "required": false; "isSignal": true; }; "adminNodes": { "alias": "adminNodes"; "required": false; "isSignal": true; }; "locationLabel": { "alias": "locationLabel"; "required": false; "isSignal": true; }; "parcelAudience": { "alias": "parcelAudience"; "required": false; "isSignal": true; }; "provinceExtent": { "alias": "provinceExtent"; "required": false; "isSignal": true; }; "demoSearch": { "alias": "demoSearch"; "required": false; "isSignal": true; }; "homeMode": { "alias": "homeMode"; "required": false; "isSignal": true; }; "basemapId": { "alias": "basemapId"; "required": false; "isSignal": true; }; "measureMode": { "alias": "measureMode"; "required": false; "isSignal": true; }; "checkedMap": { "alias": "checkedMap"; "required": false; "isSignal": true; }; "layersOpen": { "alias": "layersOpen"; "required": false; "isSignal": true; }; "legendOpen": { "alias": "legendOpen"; "required": false; "isSignal": true; }; "helpOpen": { "alias": "helpOpen"; "required": false; "isSignal": true; }; "swipeActive": { "alias": "swipeActive"; "required": false; "isSignal": true; }; "searchOpen": { "alias": "searchOpen"; "required": false; "isSignal": true; }; "adminFilterOpen": { "alias": "adminFilterOpen"; "required": false; "isSignal": true; }; "parcelOpen": { "alias": "parcelOpen"; "required": false; "isSignal": true; }; "managedLayers": { "alias": "managedLayers"; "required": false; "isSignal": true; }; "searchResults": { "alias": "searchResults"; "required": false; "isSignal": true; }; "selectedParcel": { "alias": "selectedParcel"; "required": false; "isSignal": true; }; "adminCheckedKeys": { "alias": "adminCheckedKeys"; "required": false; "isSignal": true; }; "adminExpandedKeys": { "alias": "adminExpandedKeys"; "required": false; "isSignal": true; }; }, { "basemapId": "basemapIdChange"; "measureMode": "measureModeChange"; "checkedMap": "checkedMapChange"; "layersOpen": "layersOpenChange"; "legendOpen": "legendOpenChange"; "helpOpen": "helpOpenChange"; "swipeActive": "swipeActiveChange"; "searchOpen": "searchOpenChange"; "adminFilterOpen": "adminFilterOpenChange"; "parcelOpen": "parcelOpenChange"; "managedLayers": "managedLayersChange"; "searchResults": "searchResultsChange"; "selectedParcel": "selectedParcelChange"; "adminCheckedKeys": "adminCheckedKeysChange"; "adminExpandedKeys": "adminExpandedKeysChange"; "mapReady": "mapReady"; "mapClick": "mapClick"; "located": "located"; "locateDenied": "locateDenied"; "locateError": "locateError"; "actionClick": "actionClick"; "search": "search"; "searchReset": "searchReset"; "resultSelect": "resultSelect"; "parcelExport": "parcelExport"; "adminApply": "adminApply"; }, never, ["[geoMapShellTopRight]"], true, never>;
103
112
  }
@@ -39,6 +39,12 @@ export declare const GEO_MAP_DEFAULT_BASEMAP_OPTIONS: GeoMapBasemapOption[];
39
39
  export declare const GEO_MAP_TRAFFIC_OVERLAY: GeoMapXyzLayerConfig;
40
40
  /** Built-in toolbar actions — Figma map chrome (Dat Dai Lam Dong 2026). */
41
41
  export declare const GEO_MAP_DEFAULT_TOOLBAR_ACTIONS: GeoMapToolbarAction[];
42
+ /**
43
+ * Built-in "Vị trí của tôi" toolbar action — pair with `id: 'locate'` handling that
44
+ * `geo-map-shell` already resolves internally (geolocate + emit `located`/`locateError`).
45
+ * Not included in `GEO_MAP_DEFAULT_TOOLBAR_ACTIONS`; host apps opt in explicitly.
46
+ */
47
+ export declare const GEO_MAP_LOCATE_TOOLBAR_ACTION: GeoMapToolbarAction;
42
48
  /**
43
49
  * Demo thematic overlays for Storybook (offline-friendly GeoJSON).
44
50
  * Groups match portal layers popover: QHSDD · địa chính · hiện trạng.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@geoit/ui",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "GEO UI — Angular 18 + ng-zorro design system components",
5
5
  "peerDependencies": {
6
6
  "@angular/animations": "^18.2.0",