@geoit/ui 0.0.4 → 0.0.6
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 +94 -66
- package/ai/AGENTS.md +106 -16
- package/ai/README.md +35 -1
- package/ai/catalog.json +2855 -275
- 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 +115 -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 +102 -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 +81 -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 +75 -0
- package/ai/components/geo-login.md +106 -0
- package/ai/components/geo-map-admin-filter.md +85 -0
- package/ai/components/geo-map-basemap-switcher.md +79 -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 +84 -0
- package/ai/components/geo-map-search.md +89 -0
- package/ai/components/geo-map-shell.md +146 -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 +81 -0
- package/ai/components/geo-map-zoom.md +74 -0
- package/ai/components/geo-map.md +212 -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 +6 -8
- 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 +184 -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
|
@@ -37,7 +37,7 @@ Hiển thị banner trạng thái cố định trong layout (form/page). Dùng t
|
|
|
37
37
|
|
|
38
38
|
## Binding
|
|
39
39
|
|
|
40
|
-
Standalone
|
|
40
|
+
Standalone component — drive via Inputs (`input()` / `model()`) and Outputs (`output()`). Banana bindings work for any `model()` fields (e.g. `[(open)]`, `[(pageIndex)]`).
|
|
41
41
|
|
|
42
42
|
## Inputs
|
|
43
43
|
|
|
@@ -49,14 +49,14 @@ Every supported Input (do not invent others):
|
|
|
49
49
|
| `title` | `string` | `''` | — |
|
|
50
50
|
| `message` | `string` | `''` | — |
|
|
51
51
|
| `closable` | `boolean` | `true` | — |
|
|
52
|
-
| `visible` | `boolean` | `true` |
|
|
52
|
+
| `visible` | `boolean` | `true` | Two-way `model()` (supports banana binding). |
|
|
53
53
|
| `showIcon` | `boolean` | `true` | — |
|
|
54
54
|
|
|
55
55
|
## Outputs
|
|
56
56
|
|
|
57
57
|
| Output | Payload | Description |
|
|
58
58
|
|--------|---------|-------------|
|
|
59
|
-
| `closed` | `
|
|
59
|
+
| `closed` | `OutputEmitterRef<void>` | — |
|
|
60
60
|
|
|
61
61
|
## Related types
|
|
62
62
|
|
|
@@ -37,7 +37,7 @@ Nút quay lại trên trang chi tiết/sửa. Mặc định historyBack=true; ho
|
|
|
37
37
|
|
|
38
38
|
## Binding
|
|
39
39
|
|
|
40
|
-
Standalone
|
|
40
|
+
Standalone component — drive via Inputs (`input()` / `model()`) and Outputs (`output()`). Banana bindings work for any `model()` fields (e.g. `[(open)]`, `[(pageIndex)]`).
|
|
41
41
|
|
|
42
42
|
## Inputs
|
|
43
43
|
|
|
@@ -54,7 +54,7 @@ Every supported Input (do not invent others):
|
|
|
54
54
|
|
|
55
55
|
| Output | Payload | Description |
|
|
56
56
|
|--------|---------|-------------|
|
|
57
|
-
| `clicked` | `
|
|
57
|
+
| `clicked` | `OutputEmitterRef<MouseEvent>` | — |
|
|
58
58
|
|
|
59
59
|
|
|
60
60
|
## Examples
|
|
@@ -37,7 +37,7 @@ Primary navigation / sidebar menus.
|
|
|
37
37
|
|
|
38
38
|
## Binding
|
|
39
39
|
|
|
40
|
-
Standalone
|
|
40
|
+
Standalone component — drive via Inputs (`input()` / `model()`) and Outputs (`output()`). Banana bindings work for any `model()` fields (e.g. `[(open)]`, `[(pageIndex)]`).
|
|
41
41
|
|
|
42
42
|
## Inputs
|
|
43
43
|
|
|
@@ -37,7 +37,7 @@ CTA chính của GEO UI. appearance primary|secondary|tertiary; color brand|dang
|
|
|
37
37
|
|
|
38
38
|
## Binding
|
|
39
39
|
|
|
40
|
-
Standalone
|
|
40
|
+
Standalone component — drive via Inputs (`input()` / `model()`) and Outputs (`output()`). Banana bindings work for any `model()` fields (e.g. `[(open)]`, `[(pageIndex)]`).
|
|
41
41
|
|
|
42
42
|
## Inputs
|
|
43
43
|
|
|
@@ -47,7 +47,7 @@ Every supported Input (do not invent others):
|
|
|
47
47
|
|-------|------|---------|-------------|
|
|
48
48
|
| `appearance` | `'primary' \| 'secondary' \| 'tertiary'` | `'primary'` | — |
|
|
49
49
|
| `color` | `'brand' \| 'danger' \| 'warning' \| 'success'` | `'brand'` | — |
|
|
50
|
-
| `icon` | `string` |
|
|
50
|
+
| `icon` | `string \| undefined` | `undefined` | — |
|
|
51
51
|
| `iconTheme` | `'outline' \| 'fill' \| 'twotone'` | `'outline'` | — |
|
|
52
52
|
| `iconPlacement` | `'start' \| 'end'` | `'start'` | Vị trí icon: `start` (trái) hoặc `end` (phải). |
|
|
53
53
|
| `iconOnly` | `boolean` | `false` | — |
|
|
@@ -62,7 +62,7 @@ Every supported Input (do not invent others):
|
|
|
62
62
|
|
|
63
63
|
| Output | Payload | Description |
|
|
64
64
|
|--------|---------|-------------|
|
|
65
|
-
| `clicked` | `
|
|
65
|
+
| `clicked` | `OutputEmitterRef<MouseEvent>` | — |
|
|
66
66
|
|
|
67
67
|
## Related types
|
|
68
68
|
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# geo-chart
|
|
2
|
+
|
|
3
|
+
> Complete usage reference for **GeoChartComponent** (`@geoit/ui`)
|
|
4
|
+
>
|
|
5
|
+
> Read this file before using the component. Use **only** the Inputs/Outputs listed here.
|
|
6
|
+
|
|
7
|
+
## Summary
|
|
8
|
+
Bar / donut chart for dashboard statistics (ApexCharts).
|
|
9
|
+
|
|
10
|
+
## Import
|
|
11
|
+
|
|
12
|
+
```ts
|
|
13
|
+
import { GeoChartComponent } from '@geoit/ui';
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Add to the consuming standalone component:
|
|
17
|
+
|
|
18
|
+
```ts
|
|
19
|
+
imports: [GeoChartComponent]
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Selector
|
|
23
|
+
`geo-chart`
|
|
24
|
+
|
|
25
|
+
## Category
|
|
26
|
+
`data`
|
|
27
|
+
|
|
28
|
+
## When to use
|
|
29
|
+
KPI breakdowns on dashboard pages.
|
|
30
|
+
|
|
31
|
+
## Do not use when
|
|
32
|
+
Maps / spatial — use geo-map; single KPI — use geo-stat-card.
|
|
33
|
+
|
|
34
|
+
## How to use
|
|
35
|
+
|
|
36
|
+
Biểu đồ bar/donut cho dashboard. [data] = { label, value, color? }[]; (segmentClick) khi click lát.
|
|
37
|
+
|
|
38
|
+
## Binding
|
|
39
|
+
|
|
40
|
+
Standalone component — drive via Inputs (`input()` / `model()`) and Outputs (`output()`). Banana bindings work for any `model()` fields (e.g. `[(open)]`, `[(pageIndex)]`).
|
|
41
|
+
|
|
42
|
+
## Inputs
|
|
43
|
+
|
|
44
|
+
Every supported Input (do not invent others):
|
|
45
|
+
|
|
46
|
+
| Input | Type | Default | Description |
|
|
47
|
+
|-------|------|---------|-------------|
|
|
48
|
+
| `type` | `'bar' \| 'donut'` | `'bar'` | — |
|
|
49
|
+
| `title` | `string` | `''` | — |
|
|
50
|
+
| `data` | `GeoChartDatum[]` | `[]` | — |
|
|
51
|
+
| `height` | `number` | `260` | — |
|
|
52
|
+
| `showLegend` | `boolean` | `true` | — |
|
|
53
|
+
| `showSort` | `boolean` | `false` | — |
|
|
54
|
+
| `sort` | `'none' \| 'asc' \| 'desc'` | `'desc'` | Two-way `model()` (supports banana binding). |
|
|
55
|
+
| `emptyText` | `string` | `'Chưa có dữ liệu thống kê.'` | — |
|
|
56
|
+
| `unit` | `string` | `''` | — |
|
|
57
|
+
|
|
58
|
+
## Outputs
|
|
59
|
+
|
|
60
|
+
| Output | Payload | Description |
|
|
61
|
+
|--------|---------|-------------|
|
|
62
|
+
| `segmentClick` | `OutputEmitterRef<GeoChartSegmentClick>` | — |
|
|
63
|
+
| `sortChange` | `OutputEmitterRef<'none' \| 'asc' \| 'desc'>` | — |
|
|
64
|
+
|
|
65
|
+
## Related types
|
|
66
|
+
|
|
67
|
+
From `figma/geo-chart/geo-chart.types.ts`:
|
|
68
|
+
|
|
69
|
+
```ts
|
|
70
|
+
export interface GeoChartDatum {
|
|
71
|
+
id?: string;
|
|
72
|
+
label: string;
|
|
73
|
+
value: number;
|
|
74
|
+
/** Optional CSS color; prefer design tokens when possible. */
|
|
75
|
+
color?: string;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export interface GeoChartSegmentClick {
|
|
79
|
+
datum: GeoChartDatum;
|
|
80
|
+
index: number;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export type GeoChartType = 'bar' | 'donut';
|
|
84
|
+
|
|
85
|
+
export type GeoChartSort = 'none' | 'asc' | 'desc';
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Examples
|
|
89
|
+
|
|
90
|
+
### Bar
|
|
91
|
+
|
|
92
|
+
```html
|
|
93
|
+
<geo-chart type="bar" title="Theo xã" [data]="wardData" [height]="280"></geo-chart>
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Tips
|
|
97
|
+
|
|
98
|
+
- Màu ưu tiên CSS var(--geo-color-*).
|
|
99
|
+
- KPI đơn → geo-stat-card; ghép sẵn → geo-dashboard.
|
|
100
|
+
## Related components
|
|
101
|
+
|
|
102
|
+
- [`geo-stat-card`](./geo-stat-card.md)
|
|
103
|
+
- [`geo-dashboard`](./geo-dashboard.md)
|
|
104
|
+
- [`geo-empty-state`](./geo-empty-state.md)
|
|
105
|
+
## Package path
|
|
106
|
+
`node_modules/@geoit/ui/ai/components/geo-chart.md`
|
|
107
|
+
|
|
108
|
+
## Source
|
|
109
|
+
`projects/geo-ui/src/lib/figma/geo-chart/geo-chart.component.ts`
|
|
110
|
+
|
|
111
|
+
## Rules for AI / consumers
|
|
112
|
+
- Prefer this component over raw ng-zorro / HTML for the same UI role.
|
|
113
|
+
- Use design tokens (`var(--geo-*)`) — never hardcode brand colors or radius.
|
|
114
|
+
- Match props exactly to the Inputs table; do not invent unsupported inputs.
|
|
115
|
+
- Copy examples and adapt labels/bindings only.
|
|
@@ -37,10 +37,10 @@ Checkbox có label. Two-way bằng [(checked)] / (checkedChange) — không ph
|
|
|
37
37
|
|
|
38
38
|
## Binding
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
**`model()` two-way** on `checked` (Angular 18):
|
|
41
41
|
|
|
42
42
|
```html
|
|
43
|
-
<geo-checkbox [(checked)]="agreed"
|
|
43
|
+
<geo-checkbox [(checked)]="agreed"></geo-checkbox>
|
|
44
44
|
```
|
|
45
45
|
|
|
46
46
|
## Inputs
|
|
@@ -50,15 +50,13 @@ Every supported Input (do not invent others):
|
|
|
50
50
|
| Input | Type | Default | Description |
|
|
51
51
|
|-------|------|---------|-------------|
|
|
52
52
|
| `label` | `string` | `''` | — |
|
|
53
|
-
| `checked` | `boolean` | `false` | — |
|
|
53
|
+
| `checked` | `boolean` | `false` | Two-way: `[(checked)]`. — Two-way `model()` (supports banana binding). |
|
|
54
54
|
| `disabled` | `boolean` | `false` | — |
|
|
55
55
|
| `indeterminate` | `boolean` | `false` | — |
|
|
56
56
|
|
|
57
57
|
## Outputs
|
|
58
58
|
|
|
59
|
-
|
|
60
|
-
|--------|---------|-------------|
|
|
61
|
-
| `checkedChange` | `EventEmitter<boolean>` | — |
|
|
59
|
+
_None_
|
|
62
60
|
|
|
63
61
|
|
|
64
62
|
## Examples
|
|
@@ -37,7 +37,7 @@ Popup ẩn/hiện cột bảng. [items] GeoColumnPickerItem[]; (apply) nhận pa
|
|
|
37
37
|
|
|
38
38
|
## Binding
|
|
39
39
|
|
|
40
|
-
Standalone
|
|
40
|
+
Standalone component — drive via Inputs (`input()` / `model()`) and Outputs (`output()`). Banana bindings work for any `model()` fields (e.g. `[(open)]`, `[(pageIndex)]`).
|
|
41
41
|
|
|
42
42
|
## Inputs
|
|
43
43
|
|
|
@@ -48,13 +48,13 @@ Every supported Input (do not invent others):
|
|
|
48
48
|
| `triggerLabel` | `string` | `'Ẩn hiện cột'` | — |
|
|
49
49
|
| `hint` | `string` | `'Chọn cột hiển thị trên bảng.'` | — |
|
|
50
50
|
| `items` | `GeoColumnPickerItem[]` | `[]` | — |
|
|
51
|
-
| `storageKey` | `string` |
|
|
51
|
+
| `storageKey` | `string \| undefined` | `undefined` | Lưu trạng thái ẩn/hiện cột theo session khi người dùng áp dụng |
|
|
52
52
|
|
|
53
53
|
## Outputs
|
|
54
54
|
|
|
55
55
|
| Output | Payload | Description |
|
|
56
56
|
|--------|---------|-------------|
|
|
57
|
-
| `apply` | `
|
|
57
|
+
| `apply` | `OutputEmitterRef<GeoColumnPickerApplyPayload>` | — |
|
|
58
58
|
|
|
59
59
|
## Related types
|
|
60
60
|
|
|
@@ -37,7 +37,7 @@ Dialog xác nhận hành động phá hủy (xóa). Điều khiển bằng [visi
|
|
|
37
37
|
|
|
38
38
|
## Binding
|
|
39
39
|
|
|
40
|
-
Standalone
|
|
40
|
+
Standalone component — drive via Inputs (`input()` / `model()`) and Outputs (`output()`). Banana bindings work for any `model()` fields (e.g. `[(open)]`, `[(pageIndex)]`).
|
|
41
41
|
|
|
42
42
|
## Inputs
|
|
43
43
|
|
|
@@ -45,7 +45,7 @@ Every supported Input (do not invent others):
|
|
|
45
45
|
|
|
46
46
|
| Input | Type | Default | Description |
|
|
47
47
|
|-------|------|---------|-------------|
|
|
48
|
-
| `visible` | `boolean` | `false` |
|
|
48
|
+
| `visible` | `boolean` | `false` | Two-way `model()` (supports banana binding). |
|
|
49
49
|
| `title` | `string` | `'Xác nhận xoá'` | — |
|
|
50
50
|
| `message` | `string` | `''` | — |
|
|
51
51
|
| `highlight` | `string` | `''` | — |
|
|
@@ -61,9 +61,8 @@ Every supported Input (do not invent others):
|
|
|
61
61
|
|
|
62
62
|
| Output | Payload | Description |
|
|
63
63
|
|--------|---------|-------------|
|
|
64
|
-
| `
|
|
65
|
-
| `
|
|
66
|
-
| `cancel` | `EventEmitter<void>` | — |
|
|
64
|
+
| `confirm` | `OutputEmitterRef<void>` | — |
|
|
65
|
+
| `cancel` | `OutputEmitterRef<void>` | — |
|
|
67
66
|
|
|
68
67
|
## Related types
|
|
69
68
|
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# geo-dashboard
|
|
2
|
+
|
|
3
|
+
> Complete usage reference for **GeoDashboardComponent** (`@geoit/ui`)
|
|
4
|
+
>
|
|
5
|
+
> Read this file before using the component. Use **only** the Inputs/Outputs listed here.
|
|
6
|
+
|
|
7
|
+
## Summary
|
|
8
|
+
Composed dashboard: period, KPI cards, ward/mismatch charts.
|
|
9
|
+
|
|
10
|
+
## Import
|
|
11
|
+
|
|
12
|
+
```ts
|
|
13
|
+
import { GeoDashboardComponent } from '@geoit/ui';
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Add to the consuming standalone component:
|
|
17
|
+
|
|
18
|
+
```ts
|
|
19
|
+
imports: [GeoDashboardComponent]
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Selector
|
|
23
|
+
`geo-dashboard`
|
|
24
|
+
|
|
25
|
+
## Category
|
|
26
|
+
`layout`
|
|
27
|
+
|
|
28
|
+
## When to use
|
|
29
|
+
TCQH overview pages (thống kê nhanh).
|
|
30
|
+
|
|
31
|
+
## Do not use when
|
|
32
|
+
Custom layouts — compose geo-stat-card + geo-chart yourself.
|
|
33
|
+
|
|
34
|
+
## How to use
|
|
35
|
+
|
|
36
|
+
Dashboard ghép sẵn: stats + biểu đồ xã + lệch kỳ. [(period)] điều khiển kỳ thống kê.
|
|
37
|
+
|
|
38
|
+
## Binding
|
|
39
|
+
|
|
40
|
+
Standalone component — drive via Inputs (`input()` / `model()`) and Outputs (`output()`). Banana bindings work for any `model()` fields (e.g. `[(open)]`, `[(pageIndex)]`).
|
|
41
|
+
|
|
42
|
+
## Inputs
|
|
43
|
+
|
|
44
|
+
Every supported Input (do not invent others):
|
|
45
|
+
|
|
46
|
+
| Input | Type | Default | Description |
|
|
47
|
+
|-------|------|---------|-------------|
|
|
48
|
+
| `title` | `string` | `'Dashboard thống kê'` | — |
|
|
49
|
+
| `breadcrumb` | `GeoBreadcrumbItem[]` | `[ { label: 'Trang chủ', link: '/' }, { label: 'Dashboard' }, ]` | — |
|
|
50
|
+
| `stats` | `GeoStatCardItem[]` | `[]` | — |
|
|
51
|
+
| `wardChartTitle` | `string` | `'Diện tích quy hoạch theo phường/xã'` | — |
|
|
52
|
+
| `wardData` | `GeoChartDatum[]` | `[]` | — |
|
|
53
|
+
| `mismatchChartTitle` | `string` | `'Tỷ lệ thửa quy hoạch khác mục đích hiện trạng'` | — |
|
|
54
|
+
| `mismatchData` | `GeoChartDatum[]` | `[]` | — |
|
|
55
|
+
| `wardUnit` | `string` | `'ha'` | — |
|
|
56
|
+
| `period` | `GeoDateRangeValue` | `null` | Two-way `model()` (supports banana binding). |
|
|
57
|
+
|
|
58
|
+
## Outputs
|
|
59
|
+
|
|
60
|
+
| Output | Payload | Description |
|
|
61
|
+
|--------|---------|-------------|
|
|
62
|
+
| `periodChange` | `OutputEmitterRef<GeoDateRangeValue>` | — |
|
|
63
|
+
| `mismatchSegmentClick` | `OutputEmitterRef<GeoChartSegmentClick>` | — |
|
|
64
|
+
| `wardSegmentClick` | `OutputEmitterRef<GeoChartSegmentClick>` | — |
|
|
65
|
+
|
|
66
|
+
## Related types
|
|
67
|
+
|
|
68
|
+
From `figma/geo-dashboard/geo-dashboard.types.ts`:
|
|
69
|
+
|
|
70
|
+
```ts
|
|
71
|
+
export interface GeoDashboardPeriodChange {
|
|
72
|
+
range: GeoDateRangeValue | null;
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Examples
|
|
77
|
+
|
|
78
|
+
### Basic
|
|
79
|
+
|
|
80
|
+
```html
|
|
81
|
+
<geo-dashboard [stats]="stats" [wardData]="wards" [mismatchData]="mismatch" [(period)]="period"></geo-dashboard>
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Tips
|
|
85
|
+
|
|
86
|
+
- Tự layout → geo-stat-card + geo-chart.
|
|
87
|
+
## Related components
|
|
88
|
+
|
|
89
|
+
- [`geo-stat-card`](./geo-stat-card.md)
|
|
90
|
+
- [`geo-chart`](./geo-chart.md)
|
|
91
|
+
- [`geo-page-header`](./geo-page-header.md)
|
|
92
|
+
## Package path
|
|
93
|
+
`node_modules/@geoit/ui/ai/components/geo-dashboard.md`
|
|
94
|
+
|
|
95
|
+
## Source
|
|
96
|
+
`projects/geo-ui/src/lib/figma/geo-dashboard/geo-dashboard.component.ts`
|
|
97
|
+
|
|
98
|
+
## Rules for AI / consumers
|
|
99
|
+
- Prefer this component over raw ng-zorro / HTML for the same UI role.
|
|
100
|
+
- Use design tokens (`var(--geo-*)`) — never hardcode brand colors or radius.
|
|
101
|
+
- Match props exactly to the Inputs table; do not invent unsupported inputs.
|
|
102
|
+
- Copy examples and adapt labels/bindings only.
|
|
@@ -48,6 +48,8 @@ Supports **ControlValueAccessor**.
|
|
|
48
48
|
|
|
49
49
|
Also import `FormsModule` (template-driven) or `ReactiveFormsModule`.
|
|
50
50
|
|
|
51
|
+
Library API uses Angular 18 `input()` / `output()` signals under the hood.
|
|
52
|
+
|
|
51
53
|
## Inputs
|
|
52
54
|
|
|
53
55
|
Every supported Input (do not invent others):
|
|
@@ -67,14 +69,14 @@ Every supported Input (do not invent others):
|
|
|
67
69
|
| `showToday` | `boolean` | `true` | — |
|
|
68
70
|
| `showTime` | `boolean` | `false` | — |
|
|
69
71
|
| `block` | `boolean` | `false` | — |
|
|
70
|
-
| `width` | `number \| string` |
|
|
71
|
-
| `disabledDate` | `(current: Date)` |
|
|
72
|
+
| `width` | `number \| string \| undefined` | `undefined` | — |
|
|
73
|
+
| `disabledDate` | `((current: Date) => boolean) \| undefined` | `undefined` | — |
|
|
72
74
|
|
|
73
75
|
## Outputs
|
|
74
76
|
|
|
75
77
|
| Output | Payload | Description |
|
|
76
78
|
|--------|---------|-------------|
|
|
77
|
-
| `valueChange` | `
|
|
79
|
+
| `valueChange` | `OutputEmitterRef<Date \| null>` | — |
|
|
78
80
|
|
|
79
81
|
## Related types
|
|
80
82
|
|
|
@@ -48,6 +48,8 @@ Supports **ControlValueAccessor**.
|
|
|
48
48
|
|
|
49
49
|
Also import `FormsModule` (template-driven) or `ReactiveFormsModule`.
|
|
50
50
|
|
|
51
|
+
Library API uses Angular 18 `input()` / `output()` signals under the hood.
|
|
52
|
+
|
|
51
53
|
## Inputs
|
|
52
54
|
|
|
53
55
|
Every supported Input (do not invent others):
|
|
@@ -65,15 +67,15 @@ Every supported Input (do not invent others):
|
|
|
65
67
|
| `allowClear` | `boolean` | `true` | — |
|
|
66
68
|
| `showTime` | `boolean` | `false` | — |
|
|
67
69
|
| `block` | `boolean` | `false` | — |
|
|
68
|
-
| `width` | `number \| string` |
|
|
69
|
-
| `disabledDate` | `(current: Date)` |
|
|
70
|
+
| `width` | `number \| string \| undefined` | `undefined` | — |
|
|
71
|
+
| `disabledDate` | `((current: Date) => boolean) \| undefined` | `undefined` | — |
|
|
70
72
|
| `separator` | `string` | `'→'` | — |
|
|
71
73
|
|
|
72
74
|
## Outputs
|
|
73
75
|
|
|
74
76
|
| Output | Payload | Description |
|
|
75
77
|
|--------|---------|-------------|
|
|
76
|
-
| `valueChange` | `
|
|
78
|
+
| `valueChange` | `OutputEmitterRef<[Date, Date] \| null>` | — |
|
|
77
79
|
|
|
78
80
|
## Related types
|
|
79
81
|
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# geo-empty-state
|
|
2
|
+
|
|
3
|
+
> Complete usage reference for **GeoEmptyStateComponent** (`@geoit/ui`)
|
|
4
|
+
>
|
|
5
|
+
> Read this file before using the component. Use **only** the Inputs/Outputs listed here.
|
|
6
|
+
|
|
7
|
+
## Summary
|
|
8
|
+
Empty region placeholder (icon + title + optional action).
|
|
9
|
+
|
|
10
|
+
## Import
|
|
11
|
+
|
|
12
|
+
```ts
|
|
13
|
+
import { GeoEmptyStateComponent } from '@geoit/ui';
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Add to the consuming standalone component:
|
|
17
|
+
|
|
18
|
+
```ts
|
|
19
|
+
imports: [GeoEmptyStateComponent]
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Selector
|
|
23
|
+
`geo-empty-state`
|
|
24
|
+
|
|
25
|
+
## Category
|
|
26
|
+
`feedback`
|
|
27
|
+
|
|
28
|
+
## When to use
|
|
29
|
+
No data / no results areas inside pages or cards.
|
|
30
|
+
|
|
31
|
+
## Do not use when
|
|
32
|
+
Inline form validation — use field errorMessage / geo-alert.
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
## Binding
|
|
36
|
+
|
|
37
|
+
Standalone component — drive via Inputs (`input()` / `model()`) and Outputs (`output()`). Banana bindings work for any `model()` fields (e.g. `[(open)]`, `[(pageIndex)]`).
|
|
38
|
+
|
|
39
|
+
## Inputs
|
|
40
|
+
|
|
41
|
+
Every supported Input (do not invent others):
|
|
42
|
+
|
|
43
|
+
| Input | Type | Default | Description |
|
|
44
|
+
|-------|------|---------|-------------|
|
|
45
|
+
| `title` | `string` | `'Không có dữ liệu'` | — |
|
|
46
|
+
| `description` | `string` | `''` | — |
|
|
47
|
+
| `icon` | `string` | `'inbox'` | — |
|
|
48
|
+
| `actionLabel` | `string` | `''` | — |
|
|
49
|
+
|
|
50
|
+
## Outputs
|
|
51
|
+
|
|
52
|
+
| Output | Payload | Description |
|
|
53
|
+
|--------|---------|-------------|
|
|
54
|
+
| `actionClick` | `OutputEmitterRef<void>` | — |
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
## Examples
|
|
58
|
+
|
|
59
|
+
### Example
|
|
60
|
+
|
|
61
|
+
```html
|
|
62
|
+
<geo-empty-state title="Chưa có dữ liệu" description="Thử đổi bộ lọc."></geo-empty-state>
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Package path
|
|
66
|
+
`node_modules/@geoit/ui/ai/components/geo-empty-state.md`
|
|
67
|
+
|
|
68
|
+
## Source
|
|
69
|
+
`projects/geo-ui/src/lib/figma/geo-empty-state/geo-empty-state.component.ts`
|
|
70
|
+
|
|
71
|
+
## Rules for AI / consumers
|
|
72
|
+
- Prefer this component over raw ng-zorro / HTML for the same UI role.
|
|
73
|
+
- Use design tokens (`var(--geo-*)`) — never hardcode brand colors or radius.
|
|
74
|
+
- Match props exactly to the Inputs table; do not invent unsupported inputs.
|
|
75
|
+
- Copy examples and adapt labels/bindings only.
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# geo-feedback-form
|
|
2
|
+
|
|
3
|
+
> Complete usage reference for **GeoFeedbackFormComponent** (`@geoit/ui`)
|
|
4
|
+
>
|
|
5
|
+
> Read this file before using the component. Use **only** the Inputs/Outputs listed here.
|
|
6
|
+
|
|
7
|
+
## Summary
|
|
8
|
+
Citizen feedback / phản ánh form with validation.
|
|
9
|
+
|
|
10
|
+
## Import
|
|
11
|
+
|
|
12
|
+
```ts
|
|
13
|
+
import { GeoFeedbackFormComponent } from '@geoit/ui';
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Add to the consuming standalone component:
|
|
17
|
+
|
|
18
|
+
```ts
|
|
19
|
+
imports: [GeoFeedbackFormComponent]
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Selector
|
|
23
|
+
`geo-feedback-form`
|
|
24
|
+
|
|
25
|
+
## Category
|
|
26
|
+
`forms`
|
|
27
|
+
|
|
28
|
+
## When to use
|
|
29
|
+
Public feedback submission pages.
|
|
30
|
+
|
|
31
|
+
## Do not use when
|
|
32
|
+
Admin feedback inbox — use geo-list-page + geo-table.
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
## Binding
|
|
36
|
+
|
|
37
|
+
Standalone component — drive via Inputs (`input()` / `model()`) and Outputs (`output()`). Banana bindings work for any `model()` fields (e.g. `[(open)]`, `[(pageIndex)]`).
|
|
38
|
+
|
|
39
|
+
## Inputs
|
|
40
|
+
|
|
41
|
+
Every supported Input (do not invent others):
|
|
42
|
+
|
|
43
|
+
| Input | Type | Default | Description |
|
|
44
|
+
|-------|------|---------|-------------|
|
|
45
|
+
| `title` | `string` | `'Gửi phản ánh, kiến nghị'` | — |
|
|
46
|
+
| `description` | `string` | `'Nội dung sẽ được chuyển tới cán bộ xử lý. Vui lòng mô tả rõ vấn đề và vị trí (nếu có).'` | Mô tả ngắn dưới tiêu đề — giúp người dân hiểu quy trình xử lý. |
|
|
47
|
+
| `maxLength` | `number` | `1000` | — |
|
|
48
|
+
| `loading` | `boolean` | `false` | — |
|
|
49
|
+
| `showCancel` | `boolean` | `true` | Ẩn nút Hủy khi form dùng trên trang riêng (không phải dialog). |
|
|
50
|
+
| `fill` | `boolean` | `false` | Form chiếm hết chiều rộng/cao vùng chứa (trang full content). |
|
|
51
|
+
| `submitLabel` | `string` | `'Gửi phản ánh'` | — |
|
|
52
|
+
| `cancelLabel` | `string` | `'Hủy'` | — |
|
|
53
|
+
| `senderName` | `string` | `''` | Two-way `model()` (supports banana binding). |
|
|
54
|
+
| `content` | `string` | `''` | Two-way `model()` (supports banana binding). |
|
|
55
|
+
|
|
56
|
+
## Outputs
|
|
57
|
+
|
|
58
|
+
| Output | Payload | Description |
|
|
59
|
+
|--------|---------|-------------|
|
|
60
|
+
| `submittedFeedback` | `OutputEmitterRef<GeoFeedbackPayload>` | — |
|
|
61
|
+
| `cancelled` | `OutputEmitterRef<void>` | — |
|
|
62
|
+
|
|
63
|
+
## Related types
|
|
64
|
+
|
|
65
|
+
From `figma/geo-feedback-form/geo-feedback-form.types.ts`:
|
|
66
|
+
|
|
67
|
+
```ts
|
|
68
|
+
export interface GeoFeedbackPayload {
|
|
69
|
+
senderName: string;
|
|
70
|
+
content: string;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export interface GeoFeedbackReplyPayload {
|
|
74
|
+
id: string;
|
|
75
|
+
reply: string;
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Examples
|
|
80
|
+
|
|
81
|
+
### Example
|
|
82
|
+
|
|
83
|
+
```html
|
|
84
|
+
<geo-feedback-form (submittedFeedback)="send($event)"></geo-feedback-form>
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Package path
|
|
88
|
+
`node_modules/@geoit/ui/ai/components/geo-feedback-form.md`
|
|
89
|
+
|
|
90
|
+
## Source
|
|
91
|
+
`projects/geo-ui/src/lib/figma/geo-feedback-form/geo-feedback-form.component.ts`
|
|
92
|
+
|
|
93
|
+
## Rules for AI / consumers
|
|
94
|
+
- Prefer this component over raw ng-zorro / HTML for the same UI role.
|
|
95
|
+
- Use design tokens (`var(--geo-*)`) — never hardcode brand colors or radius.
|
|
96
|
+
- Match props exactly to the Inputs table; do not invent unsupported inputs.
|
|
97
|
+
- Copy examples and adapt labels/bindings only.
|
|
@@ -48,6 +48,8 @@ Supports **ControlValueAccessor**.
|
|
|
48
48
|
|
|
49
49
|
Also import `FormsModule` (template-driven) or `ReactiveFormsModule`.
|
|
50
50
|
|
|
51
|
+
Library API uses Angular 18 `input()` / `output()` signals under the hood.
|
|
52
|
+
|
|
51
53
|
## Inputs
|
|
52
54
|
|
|
53
55
|
Every supported Input (do not invent others):
|
|
@@ -64,14 +66,14 @@ Every supported Input (do not invent others):
|
|
|
64
66
|
| `error` | `boolean` | `false` | — |
|
|
65
67
|
| `errorMessage` | `string` | `''` | — |
|
|
66
68
|
| `block` | `boolean` | `false` | — |
|
|
67
|
-
| `width` | `number \| string` |
|
|
69
|
+
| `width` | `number \| string \| undefined` | `undefined` | — |
|
|
68
70
|
| `selectedName` | `string` | `''` | Tên file đã upload (server) — hiện khi chưa có File local trong CVA. Dùng cho flow: chọn file → upload → giữ tên từ API. |
|
|
69
71
|
|
|
70
72
|
## Outputs
|
|
71
73
|
|
|
72
74
|
| Output | Payload | Description |
|
|
73
75
|
|--------|---------|-------------|
|
|
74
|
-
| `fileChange` | `
|
|
76
|
+
| `fileChange` | `OutputEmitterRef<File \| File[] \| null>` | — |
|
|
75
77
|
|
|
76
78
|
## Related types
|
|
77
79
|
|