@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
|
@@ -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,103 @@
|
|
|
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
|
+
GeoChartComponent
|
|
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
|
+
`other`
|
|
27
|
+
|
|
28
|
+
## When to use
|
|
29
|
+
—
|
|
30
|
+
|
|
31
|
+
## Do not use when
|
|
32
|
+
—
|
|
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
|
+
| `type` | `'bar' \| 'donut'` | `'bar'` | — |
|
|
46
|
+
| `title` | `string` | `''` | — |
|
|
47
|
+
| `data` | `GeoChartDatum[]` | `[]` | — |
|
|
48
|
+
| `height` | `number` | `260` | — |
|
|
49
|
+
| `showLegend` | `boolean` | `true` | — |
|
|
50
|
+
| `showSort` | `boolean` | `false` | — |
|
|
51
|
+
| `sort` | `'none' \| 'asc' \| 'desc'` | `'desc'` | Two-way `model()` (supports banana binding). |
|
|
52
|
+
| `emptyText` | `string` | `'Chưa có dữ liệu thống kê.'` | — |
|
|
53
|
+
| `unit` | `string` | `''` | — |
|
|
54
|
+
|
|
55
|
+
## Outputs
|
|
56
|
+
|
|
57
|
+
| Output | Payload | Description |
|
|
58
|
+
|--------|---------|-------------|
|
|
59
|
+
| `segmentClick` | `OutputEmitterRef<GeoChartSegmentClick>` | — |
|
|
60
|
+
| `sortChange` | `OutputEmitterRef<'none' \| 'asc' \| 'desc'>` | — |
|
|
61
|
+
|
|
62
|
+
## Related types
|
|
63
|
+
|
|
64
|
+
From `figma/geo-chart/geo-chart.types.ts`:
|
|
65
|
+
|
|
66
|
+
```ts
|
|
67
|
+
export interface GeoChartDatum {
|
|
68
|
+
id?: string;
|
|
69
|
+
label: string;
|
|
70
|
+
value: number;
|
|
71
|
+
/** Optional CSS color; prefer design tokens when possible. */
|
|
72
|
+
color?: string;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export interface GeoChartSegmentClick {
|
|
76
|
+
datum: GeoChartDatum;
|
|
77
|
+
index: number;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export type GeoChartType = 'bar' | 'donut';
|
|
81
|
+
|
|
82
|
+
export type GeoChartSort = 'none' | 'asc' | 'desc';
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Examples
|
|
86
|
+
|
|
87
|
+
### Example
|
|
88
|
+
|
|
89
|
+
```html
|
|
90
|
+
<geo-chart></geo-chart>
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Package path
|
|
94
|
+
`node_modules/@geoit/ui/ai/components/geo-chart.md`
|
|
95
|
+
|
|
96
|
+
## Source
|
|
97
|
+
`projects/geo-ui/src/lib/figma/geo-chart/geo-chart.component.ts`
|
|
98
|
+
|
|
99
|
+
## Rules for AI / consumers
|
|
100
|
+
- Prefer this component over raw ng-zorro / HTML for the same UI role.
|
|
101
|
+
- Use design tokens (`var(--geo-*)`) — never hardcode brand colors or radius.
|
|
102
|
+
- Match props exactly to the Inputs table; do not invent unsupported inputs.
|
|
103
|
+
- 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,91 @@
|
|
|
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
|
+
GeoDashboardComponent
|
|
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
|
+
`other`
|
|
27
|
+
|
|
28
|
+
## When to use
|
|
29
|
+
—
|
|
30
|
+
|
|
31
|
+
## Do not use when
|
|
32
|
+
—
|
|
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` | `'Dashboard thống kê'` | — |
|
|
46
|
+
| `breadcrumb` | `GeoBreadcrumbItem[]` | `[ { label: 'Trang chủ', link: '/' }, { label: 'Dashboard' }, ]` | — |
|
|
47
|
+
| `stats` | `GeoStatCardItem[]` | `[]` | — |
|
|
48
|
+
| `wardChartTitle` | `string` | `'Diện tích quy hoạch theo phường/xã'` | — |
|
|
49
|
+
| `wardData` | `GeoChartDatum[]` | `[]` | — |
|
|
50
|
+
| `mismatchChartTitle` | `string` | `'Tỷ lệ thửa quy hoạch khác mục đích hiện trạng'` | — |
|
|
51
|
+
| `mismatchData` | `GeoChartDatum[]` | `[]` | — |
|
|
52
|
+
| `wardUnit` | `string` | `'ha'` | — |
|
|
53
|
+
| `period` | `GeoDateRangeValue` | `null` | Two-way `model()` (supports banana binding). |
|
|
54
|
+
|
|
55
|
+
## Outputs
|
|
56
|
+
|
|
57
|
+
| Output | Payload | Description |
|
|
58
|
+
|--------|---------|-------------|
|
|
59
|
+
| `periodChange` | `OutputEmitterRef<GeoDateRangeValue>` | — |
|
|
60
|
+
| `mismatchSegmentClick` | `OutputEmitterRef<GeoChartSegmentClick>` | — |
|
|
61
|
+
| `wardSegmentClick` | `OutputEmitterRef<GeoChartSegmentClick>` | — |
|
|
62
|
+
|
|
63
|
+
## Related types
|
|
64
|
+
|
|
65
|
+
From `figma/geo-dashboard/geo-dashboard.types.ts`:
|
|
66
|
+
|
|
67
|
+
```ts
|
|
68
|
+
export interface GeoDashboardPeriodChange {
|
|
69
|
+
range: GeoDateRangeValue | null;
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Examples
|
|
74
|
+
|
|
75
|
+
### Example
|
|
76
|
+
|
|
77
|
+
```html
|
|
78
|
+
<geo-dashboard></geo-dashboard>
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Package path
|
|
82
|
+
`node_modules/@geoit/ui/ai/components/geo-dashboard.md`
|
|
83
|
+
|
|
84
|
+
## Source
|
|
85
|
+
`projects/geo-ui/src/lib/figma/geo-dashboard/geo-dashboard.component.ts`
|
|
86
|
+
|
|
87
|
+
## Rules for AI / consumers
|
|
88
|
+
- Prefer this component over raw ng-zorro / HTML for the same UI role.
|
|
89
|
+
- Use design tokens (`var(--geo-*)`) — never hardcode brand colors or radius.
|
|
90
|
+
- Match props exactly to the Inputs table; do not invent unsupported inputs.
|
|
91
|
+
- 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
|
+
GeoEmptyStateComponent
|
|
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
|
+
`other`
|
|
27
|
+
|
|
28
|
+
## When to use
|
|
29
|
+
—
|
|
30
|
+
|
|
31
|
+
## Do not use when
|
|
32
|
+
—
|
|
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></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
|
+
GeoFeedbackFormComponent
|
|
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
|
+
`other`
|
|
27
|
+
|
|
28
|
+
## When to use
|
|
29
|
+
—
|
|
30
|
+
|
|
31
|
+
## Do not use when
|
|
32
|
+
—
|
|
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></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
|
|