@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
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy,
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ElementRef, NgZone, effect, inject, input, model, output, signal, } from '@angular/core';
|
|
3
2
|
import { GeoButtonComponent } from '../../geo-button/geo-button.component';
|
|
4
3
|
import * as i0 from "@angular/core";
|
|
5
4
|
/** Breakpoint (px) → số cột tối đa khi `responsiveColumns` bật. */
|
|
@@ -28,64 +27,50 @@ const COL_BREAKPOINTS = [
|
|
|
28
27
|
export class GeoTableFilterComponent {
|
|
29
28
|
host = inject((ElementRef));
|
|
30
29
|
ngZone = inject(NgZone);
|
|
31
|
-
cdr = inject(ChangeDetectorRef);
|
|
32
30
|
/**
|
|
33
31
|
* Số cột field mỗi hàng (mặc định 4 → tổng 5 cột gồm actions).
|
|
34
32
|
* Ví dụ: 4 field + columns=2 → 2 hàng × 2 cột field (+ 1 cột actions).
|
|
35
33
|
*/
|
|
36
|
-
columns = 4;
|
|
34
|
+
columns = input(4);
|
|
37
35
|
/**
|
|
38
36
|
* Khi `true` (mặc định): số cột thực tế ≤ `columns` theo breakpoint.
|
|
39
37
|
* Khi `false`: luôn dùng đúng `columns`.
|
|
40
38
|
*/
|
|
41
|
-
responsiveColumns = true;
|
|
39
|
+
responsiveColumns = input(true);
|
|
42
40
|
/** Đưa actions lên hàng đầu khi màn hẹp (stacked). */
|
|
43
|
-
responsiveCollapse = true;
|
|
41
|
+
responsiveCollapse = input(true);
|
|
44
42
|
/** Breakpoint chuyển layout stacked (px). */
|
|
45
|
-
mobileBreakpoint = 1024;
|
|
43
|
+
mobileBreakpoint = input(1024);
|
|
46
44
|
/** Khoảng cách grid (px). */
|
|
47
|
-
gap = 15;
|
|
48
|
-
searchLabel = 'Tìm kiếm';
|
|
49
|
-
searchLoading = false;
|
|
45
|
+
gap = input(15);
|
|
46
|
+
searchLabel = input('Tìm kiếm');
|
|
47
|
+
searchLoading = input(false);
|
|
50
48
|
/** Hiện nút mở/đóng slot `[advanced]`. */
|
|
51
|
-
showAdvancedToggle = true;
|
|
52
|
-
showReset = true;
|
|
49
|
+
showAdvancedToggle = input(true);
|
|
50
|
+
showReset = input(true);
|
|
53
51
|
/** Mở panel field nâng cao (`[advanced]`). */
|
|
54
|
-
advancedExpanded = false;
|
|
52
|
+
advancedExpanded = model(false);
|
|
55
53
|
/**
|
|
56
54
|
* Số field advanced đang có giá trị — hiện badge trên nút expand.
|
|
57
55
|
* Parent tự tính (vd. `countFilledFilters(query, ADVANCED_KEYS)`).
|
|
58
56
|
*/
|
|
59
|
-
advancedFilterCount = 0;
|
|
60
|
-
filterToggleTitle = 'Bộ lọc nâng cao';
|
|
61
|
-
resetTitle = 'Xóa bộ lọc';
|
|
62
|
-
search =
|
|
63
|
-
reset =
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
stackedLayout = false;
|
|
57
|
+
advancedFilterCount = input(0);
|
|
58
|
+
filterToggleTitle = input('Bộ lọc nâng cao');
|
|
59
|
+
resetTitle = input('Xóa bộ lọc');
|
|
60
|
+
search = output();
|
|
61
|
+
reset = output();
|
|
62
|
+
effectiveCols = signal(4);
|
|
63
|
+
stackedLayout = signal(false);
|
|
67
64
|
resizeObserver;
|
|
68
65
|
layoutFrame;
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
76
|
-
get hostGap() {
|
|
77
|
-
return this.gap;
|
|
78
|
-
}
|
|
79
|
-
get stackedLayoutClass() {
|
|
80
|
-
return this.stackedLayout;
|
|
81
|
-
}
|
|
82
|
-
ngOnChanges(changes) {
|
|
83
|
-
if (changes['columns'] ||
|
|
84
|
-
changes['responsiveColumns'] ||
|
|
85
|
-
changes['responsiveCollapse'] ||
|
|
86
|
-
changes['mobileBreakpoint']) {
|
|
66
|
+
constructor() {
|
|
67
|
+
effect(() => {
|
|
68
|
+
this.columns();
|
|
69
|
+
this.responsiveColumns();
|
|
70
|
+
this.responsiveCollapse();
|
|
71
|
+
this.mobileBreakpoint();
|
|
87
72
|
this.scheduleLayout();
|
|
88
|
-
}
|
|
73
|
+
});
|
|
89
74
|
}
|
|
90
75
|
ngAfterViewInit() {
|
|
91
76
|
this.ngZone.runOutsideAngular(() => {
|
|
@@ -101,9 +86,7 @@ export class GeoTableFilterComponent {
|
|
|
101
86
|
}
|
|
102
87
|
}
|
|
103
88
|
toggleAdvanced() {
|
|
104
|
-
|
|
105
|
-
this.advancedExpanded = next;
|
|
106
|
-
this.advancedExpandedChange.emit(next);
|
|
89
|
+
this.advancedExpanded.set(!this.advancedExpanded());
|
|
107
90
|
}
|
|
108
91
|
onSearch() {
|
|
109
92
|
this.search.emit();
|
|
@@ -118,21 +101,20 @@ export class GeoTableFilterComponent {
|
|
|
118
101
|
this.layoutFrame = requestAnimationFrame(() => {
|
|
119
102
|
this.ngZone.run(() => {
|
|
120
103
|
this.updateResponsiveLayout();
|
|
121
|
-
this.cdr.markForCheck();
|
|
122
104
|
});
|
|
123
105
|
});
|
|
124
106
|
}
|
|
125
107
|
updateResponsiveLayout() {
|
|
126
108
|
const hostWidth = this.host.nativeElement.clientWidth || 0;
|
|
127
|
-
|
|
109
|
+
const effectiveCols = this.getEffectiveCols(hostWidth);
|
|
110
|
+
this.effectiveCols.set(effectiveCols);
|
|
128
111
|
// 1 cột / dưới breakpoint: stacked — actions lên hàng đầu.
|
|
129
|
-
this.stackedLayout
|
|
130
|
-
this.
|
|
131
|
-
(this.responsiveCollapse && hostWidth > 0 && hostWidth < this.mobileBreakpoint);
|
|
112
|
+
this.stackedLayout.set(effectiveCols === 1 ||
|
|
113
|
+
(this.responsiveCollapse() && hostWidth > 0 && hostWidth < this.mobileBreakpoint()));
|
|
132
114
|
}
|
|
133
115
|
getEffectiveCols(width) {
|
|
134
|
-
const requested = Math.max(1, Math.floor(this.columns) || 1);
|
|
135
|
-
if (!this.responsiveColumns) {
|
|
116
|
+
const requested = Math.max(1, Math.floor(this.columns()) || 1);
|
|
117
|
+
if (!this.responsiveColumns()) {
|
|
136
118
|
return requested;
|
|
137
119
|
}
|
|
138
120
|
if (width <= 0) {
|
|
@@ -142,54 +124,15 @@ export class GeoTableFilterComponent {
|
|
|
142
124
|
return Math.min(requested, preset);
|
|
143
125
|
}
|
|
144
126
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoTableFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
145
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoTableFilterComponent, isStandalone: true, selector: "geo-table-filter", inputs: { columns: "columns", responsiveColumns: "responsiveColumns", responsiveCollapse: "responsiveCollapse", mobileBreakpoint: "mobileBreakpoint", gap: "gap", searchLabel: "searchLabel", searchLoading: "searchLoading", showAdvancedToggle: "showAdvancedToggle", showReset: "showReset", advancedExpanded: "advancedExpanded", advancedFilterCount: "advancedFilterCount", filterToggleTitle: "filterToggleTitle", resetTitle: "resetTitle" }, outputs: {
|
|
127
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoTableFilterComponent, isStandalone: true, selector: "geo-table-filter", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, responsiveColumns: { classPropertyName: "responsiveColumns", publicName: "responsiveColumns", isSignal: true, isRequired: false, transformFunction: null }, responsiveCollapse: { classPropertyName: "responsiveCollapse", publicName: "responsiveCollapse", isSignal: true, isRequired: false, transformFunction: null }, mobileBreakpoint: { classPropertyName: "mobileBreakpoint", publicName: "mobileBreakpoint", isSignal: true, isRequired: false, transformFunction: null }, gap: { classPropertyName: "gap", publicName: "gap", isSignal: true, isRequired: false, transformFunction: null }, searchLabel: { classPropertyName: "searchLabel", publicName: "searchLabel", isSignal: true, isRequired: false, transformFunction: null }, searchLoading: { classPropertyName: "searchLoading", publicName: "searchLoading", isSignal: true, isRequired: false, transformFunction: null }, showAdvancedToggle: { classPropertyName: "showAdvancedToggle", publicName: "showAdvancedToggle", isSignal: true, isRequired: false, transformFunction: null }, showReset: { classPropertyName: "showReset", publicName: "showReset", isSignal: true, isRequired: false, transformFunction: null }, advancedExpanded: { classPropertyName: "advancedExpanded", publicName: "advancedExpanded", isSignal: true, isRequired: false, transformFunction: null }, advancedFilterCount: { classPropertyName: "advancedFilterCount", publicName: "advancedFilterCount", isSignal: true, isRequired: false, transformFunction: null }, filterToggleTitle: { classPropertyName: "filterToggleTitle", publicName: "filterToggleTitle", isSignal: true, isRequired: false, transformFunction: null }, resetTitle: { classPropertyName: "resetTitle", publicName: "resetTitle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { advancedExpanded: "advancedExpandedChange", search: "search", reset: "reset" }, host: { properties: { "style.--geo-table-filter-cols": "effectiveCols()", "style.--geo-table-filter-total-cols": "effectiveCols() + 1", "style.--geo-table-filter-gap.px": "gap()", "class.geo-table-filter--stacked": "stackedLayout()" } }, ngImport: i0, template: "<div\n class=\"geo-table-filter\"\n [class.geo-table-filter--expanded]=\"advancedExpanded()\"\n [class.geo-table-filter--no-desktop-toggle]=\"!showAdvancedToggle()\"\n>\n <div class=\"geo-table-filter__layout\">\n <div class=\"geo-table-filter__fields\">\n <ng-content></ng-content>\n </div>\n\n <div class=\"geo-table-filter__actions\">\n <geo-button\n appearance=\"primary\"\n color=\"brand\"\n icon=\"search\"\n [disabled]=\"searchLoading()\"\n (clicked)=\"onSearch()\"\n >\n {{ searchLabel() }}\n </geo-button>\n\n @if (showAdvancedToggle()) {\n <span\n class=\"geo-table-filter__toggle\"\n [class.geo-table-filter__toggle--active]=\"advancedExpanded()\"\n [class.geo-table-filter__toggle--has-count]=\"advancedFilterCount() > 0\"\n >\n <geo-button\n appearance=\"secondary\"\n color=\"brand\"\n icon=\"filter\"\n [iconOnly]=\"true\"\n [title]=\"filterToggleTitle()\"\n [attr.aria-expanded]=\"advancedExpanded()\"\n (clicked)=\"toggleAdvanced()\"\n ></geo-button>\n @if (advancedFilterCount() > 0) {\n <span class=\"geo-table-filter__toggle-badge\" aria-hidden=\"true\">\n {{ advancedFilterCount() > 99 ? '99+' : advancedFilterCount() }}\n </span>\n }\n </span>\n }\n\n @if (showReset()) {\n <geo-button\n appearance=\"secondary\"\n color=\"brand\"\n icon=\"reload\"\n [iconOnly]=\"true\"\n [title]=\"resetTitle()\"\n (clicked)=\"onReset()\"\n ></geo-button>\n }\n </div>\n\n <div\n class=\"geo-table-filter__advanced\"\n [class.geo-table-filter__advanced--visible]=\"advancedExpanded()\"\n >\n <ng-content select=\"[advanced]\"></ng-content>\n </div>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:block;--geo-table-filter-cols: 4;--geo-table-filter-total-cols: 5;--geo-table-filter-gap: 15px}.geo-table-filter{display:block}.geo-table-filter__layout{display:grid;grid-template-columns:repeat(var(--geo-table-filter-total-cols),minmax(0,1fr));grid-template-rows:auto auto;gap:var(--geo-table-filter-gap);align-items:start}.geo-table-filter__fields{grid-column:1/-2;grid-row:1;display:grid;grid-template-columns:repeat(var(--geo-table-filter-cols),minmax(0,1fr));gap:var(--geo-table-filter-gap);align-items:end;min-width:0}.geo-table-filter__fields>*{min-width:0;width:100%;max-width:100%;box-sizing:border-box}.geo-table-filter__actions{grid-column:-2/-1;grid-row:1;display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;align-self:start;gap:8px;min-width:0;width:100%;padding-top:22px;box-sizing:border-box}.geo-table-filter__advanced{grid-column:1/-1;grid-row:2;display:none;grid-template-columns:repeat(var(--geo-table-filter-total-cols),minmax(0,1fr));gap:var(--geo-table-filter-gap);align-items:end;min-width:0}.geo-table-filter__advanced>*{min-width:0;width:100%;max-width:100%;box-sizing:border-box}.geo-table-filter__advanced--visible{display:grid}.geo-table-filter--no-desktop-toggle .geo-table-filter__toggle{display:none}.geo-table-filter__toggle{position:relative;display:inline-flex;flex-shrink:0}.geo-table-filter__toggle--active ::ng-deep .geo-button.geo-button--secondary{background:var(--geo-color-primary-default);border-color:var(--geo-color-primary-default);color:var(--geo-color-neutral-white)}.geo-table-filter__toggle--active ::ng-deep .geo-button.geo-button--secondary:hover:not(:disabled){background:var(--geo-color-primary-hover);border-color:var(--geo-color-primary-hover);color:var(--geo-color-neutral-white)}.geo-table-filter__toggle--has-count:not(.geo-table-filter__toggle--active) ::ng-deep .geo-button.geo-button--secondary{background:var(--geo-color-primary-surface-light)}.geo-table-filter__toggle-badge{position:absolute;top:-6px;right:-6px;z-index:1;display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:var(--geo-radius-full);background:var(--geo-color-primary-default);color:var(--geo-color-neutral-white);font-size:11px;font-weight:600;line-height:1;box-sizing:border-box;pointer-events:none}.geo-table-filter__toggle--active .geo-table-filter__toggle-badge{background:var(--geo-color-neutral-white);color:var(--geo-color-primary-default);border:1px solid rgba(255,255,255,.35)}@media (max-width: 1023px){:host{--geo-table-filter-gap: 12px}}:host(.geo-table-filter--stacked) .geo-table-filter__layout{display:flex;flex-direction:column;gap:var(--geo-table-filter-gap)}:host(.geo-table-filter--stacked) .geo-table-filter__actions{order:1;width:100%;justify-content:flex-end;align-self:stretch;padding-top:0}:host(.geo-table-filter--stacked) .geo-table-filter__fields{order:2;width:100%}:host(.geo-table-filter--stacked) .geo-table-filter__advanced{order:3;width:100%}@media (max-width: 479px){:host{--geo-table-filter-gap: 10px}:host(.geo-table-filter--stacked) .geo-table-filter__actions{flex-wrap:wrap}}\n"], dependencies: [{ kind: "component", type: GeoButtonComponent, selector: "geo-button", inputs: ["appearance", "color", "icon", "iconTheme", "iconPlacement", "iconOnly", "type", "disabled", "tooltip", "tooltipPlacement", "active", "title"], outputs: ["clicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
146
128
|
}
|
|
147
129
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoTableFilterComponent, decorators: [{
|
|
148
130
|
type: Component,
|
|
149
|
-
args: [{ selector: 'geo-table-filter', standalone: true, imports: [
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
}],
|
|
155
|
-
|
|
156
|
-
}], mobileBreakpoint: [{
|
|
157
|
-
type: Input
|
|
158
|
-
}], gap: [{
|
|
159
|
-
type: Input
|
|
160
|
-
}], searchLabel: [{
|
|
161
|
-
type: Input
|
|
162
|
-
}], searchLoading: [{
|
|
163
|
-
type: Input
|
|
164
|
-
}], showAdvancedToggle: [{
|
|
165
|
-
type: Input
|
|
166
|
-
}], showReset: [{
|
|
167
|
-
type: Input
|
|
168
|
-
}], advancedExpanded: [{
|
|
169
|
-
type: Input
|
|
170
|
-
}], advancedFilterCount: [{
|
|
171
|
-
type: Input
|
|
172
|
-
}], filterToggleTitle: [{
|
|
173
|
-
type: Input
|
|
174
|
-
}], resetTitle: [{
|
|
175
|
-
type: Input
|
|
176
|
-
}], search: [{
|
|
177
|
-
type: Output
|
|
178
|
-
}], reset: [{
|
|
179
|
-
type: Output
|
|
180
|
-
}], advancedExpandedChange: [{
|
|
181
|
-
type: Output
|
|
182
|
-
}], hostColumns: [{
|
|
183
|
-
type: HostBinding,
|
|
184
|
-
args: ['style.--geo-table-filter-cols']
|
|
185
|
-
}], hostTotalColumns: [{
|
|
186
|
-
type: HostBinding,
|
|
187
|
-
args: ['style.--geo-table-filter-total-cols']
|
|
188
|
-
}], hostGap: [{
|
|
189
|
-
type: HostBinding,
|
|
190
|
-
args: ['style.--geo-table-filter-gap.px']
|
|
191
|
-
}], stackedLayoutClass: [{
|
|
192
|
-
type: HostBinding,
|
|
193
|
-
args: ['class.geo-table-filter--stacked']
|
|
194
|
-
}] } });
|
|
195
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLXRhYmxlLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nZW8tdWkvc3JjL2xpYi9maWdtYS9nZW8tdGFibGUvZ2VvLXRhYmxlLWZpbHRlci9nZW8tdGFibGUtZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlby11aS9zcmMvbGliL2ZpZ21hL2dlby10YWJsZS9nZW8tdGFibGUtZmlsdGVyL2dlby10YWJsZS1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEVBR04sTUFBTSxFQUVOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7O0FBRTNFLG1FQUFtRTtBQUNuRSxNQUFNLGVBQWUsR0FBa0Q7SUFDckUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7SUFDM0IsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7SUFDM0IsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7SUFDM0IsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7SUFDMUIsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7Q0FDekIsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBU0gsTUFBTSxPQUFPLHVCQUF1QjtJQUNq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QVc7c0JBRGQsV0FBVzt1QkFBQywrQkFBK0I7Z0JBT3hDLGdCQUFnQjtzQkFEbkIsV0FBVzt1QkFBQyxxQ0FBcUM7Z0JBTTlDLE9BQU87c0JBRFYsV0FBVzt1QkFBQyxpQ0FBaUM7Z0JBTTFDLGtCQUFrQjtzQkFEckIsV0FBVzt1QkFBQyxpQ0FBaUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBHZW9CdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9nZW8tYnV0dG9uL2dlby1idXR0b24uY29tcG9uZW50JztcblxuLyoqIEJyZWFrcG9pbnQgKHB4KSDihpIgc+G7kSBj4buZdCB04buRaSDEkWEga2hpIGByZXNwb25zaXZlQ29sdW1uc2AgYuG6rXQuICovXG5jb25zdCBDT0xfQlJFQUtQT0lOVFM6IHJlYWRvbmx5IHsgbWluV2lkdGg6IG51bWJlcjsgY29sczogbnVtYmVyIH1bXSA9IFtcbiAgeyBtaW5XaWR0aDogMTQwMCwgY29sczogNCB9LFxuICB7IG1pbldpZHRoOiAxMjAwLCBjb2xzOiA0IH0sXG4gIHsgbWluV2lkdGg6IDEwMjQsIGNvbHM6IDMgfSxcbiAgeyBtaW5XaWR0aDogNzY4LCBjb2xzOiAyIH0sXG4gIHsgbWluV2lkdGg6IDAsIGNvbHM6IDEgfSxcbl07XG5cbi8qKlxuICogVGhhbmggbOG7jWMgcGjDrWEgdHLDqm4gYuG6o25nOiBmaWVsZCBjaMOtbmggKyBhY3Rpb25zIChUw6xtIGtp4bq/bSAvIELhu5kgbOG7jWMgbsOibmcgY2FvIC8gUmVzZXQpLlxuICpcbiAqICMjIFPhu5EgY+G7mXQgaGnhu4NuIHRo4buLXG4gKiAtIGBbY29sdW1uc109XCI0XCJgIOKAlCA0IGPhu5l0IGZpZWxkICsgMSBj4buZdCBhY3Rpb25zID0gZ3JpZCA1IGPhu5l0IMSR4buBdS5cbiAqIC0gYFtyZXNwb25zaXZlQ29sdW1uc109XCJmYWxzZVwiYCDigJQgZ2nhu68gxJHDum5nIGBjb2x1bW5zYCwga2jDtG5nIGdp4bqjbSB0aGVvIGJyZWFrcG9pbnQuXG4gKlxuICogIyMgTGF5b3V0XG4gKiAtIEdyaWQgxJHhu4F1IGBjb2x1bW5zICsgMWA6IGZpZWxkIGPhu5l0IDEuLk4sIGFjdGlvbnMgY+G7mXQgY3Xhu5FpLlxuICogLSBBZHZhbmNlZCBzcGFuIGZ1bGwgd2lkdGggKGAxIC8gLTFgKSB24bubaSBjw7luZyBgY29sdW1ucyArIDFgIGPhu5l0IOKGkiBwaOG7pyBj4bqjIGPhu5l0IGJ1dHRvbi5cbiAqIC0gU3RhY2tlZCAobcOgbiBo4bq5cCk6IGFjdGlvbnMg4oaSIGZpZWxkcyDihpIgYWR2YW5jZWQuXG4gKlxuICogIyMgQ29udGVudCBwcm9qZWN0aW9uXG4gKiAtIERlZmF1bHQ6IGx1w7RuIGhp4buHbi4gU2xvdCBgW2FkdmFuY2VkXWA6IGNo4buJIGhp4buHbiBraGkgYGFkdmFuY2VkRXhwYW5kZWRgLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnZW8tdGFibGUtZmlsdGVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgR2VvQnV0dG9uQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL2dlby10YWJsZS1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZ2VvLXRhYmxlLWZpbHRlci5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBHZW9UYWJsZUZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBob3N0ID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTtcbiAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gIC8qKlxuICAgKiBT4buRIGPhu5l0IGZpZWxkIG3hu5dpIGjDoG5nICht4bq3YyDEkeG7i25oIDQg4oaSIHThu5VuZyA1IGPhu5l0IGfhu5NtIGFjdGlvbnMpLlxuICAgKiBWw60gZOG7pTogNCBmaWVsZCArIGNvbHVtbnM9MiDihpIgMiBow6BuZyDDlyAyIGPhu5l0IGZpZWxkICgrIDEgY+G7mXQgYWN0aW9ucykuXG4gICAqL1xuICBASW5wdXQoKSBjb2x1bW5zID0gNDtcbiAgLyoqXG4gICAqIEtoaSBgdHJ1ZWAgKG3hurdjIMSR4buLbmgpOiBz4buRIGPhu5l0IHRo4buxYyB04bq/IOKJpCBgY29sdW1uc2AgdGhlbyBicmVha3BvaW50LlxuICAgKiBLaGkgYGZhbHNlYDogbHXDtG4gZMO5bmcgxJHDum5nIGBjb2x1bW5zYC5cbiAgICovXG4gIEBJbnB1dCgpIHJlc3BvbnNpdmVDb2x1bW5zID0gdHJ1ZTtcbiAgLyoqIMSQxrBhIGFjdGlvbnMgbMOqbiBow6BuZyDEkeG6p3Uga2hpIG3DoG4gaOG6uXAgKHN0YWNrZWQpLiAqL1xuICBASW5wdXQoKSByZXNwb25zaXZlQ29sbGFwc2UgPSB0cnVlO1xuICAvKiogQnJlYWtwb2ludCBjaHV54buDbiBsYXlvdXQgc3RhY2tlZCAocHgpLiAqL1xuICBASW5wdXQoKSBtb2JpbGVCcmVha3BvaW50ID0gMTAyNDtcbiAgLyoqIEtob+G6o25nIGPDoWNoIGdyaWQgKHB4KS4gKi9cbiAgQElucHV0KCkgZ2FwID0gMTU7XG5cbiAgQElucHV0KCkgc2VhcmNoTGFiZWwgPSAnVMOsbSBraeG6v20nO1xuICBASW5wdXQoKSBzZWFyY2hMb2FkaW5nID0gZmFsc2U7XG4gIC8qKiBIaeG7h24gbsO6dCBt4bufL8SRw7NuZyBzbG90IGBbYWR2YW5jZWRdYC4gKi9cbiAgQElucHV0KCkgc2hvd0FkdmFuY2VkVG9nZ2xlID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd1Jlc2V0ID0gdHJ1ZTtcbiAgLyoqIE3hu58gcGFuZWwgZmllbGQgbsOibmcgY2FvIChgW2FkdmFuY2VkXWApLiAqL1xuICBASW5wdXQoKSBhZHZhbmNlZEV4cGFuZGVkID0gZmFsc2U7XG4gIC8qKlxuICAgKiBT4buRIGZpZWxkIGFkdmFuY2VkIMSRYW5nIGPDsyBnacOhIHRy4buLIOKAlCBoaeG7h24gYmFkZ2UgdHLDqm4gbsO6dCBleHBhbmQuXG4gICAqIFBhcmVudCB04buxIHTDrW5oICh2ZC4gYGNvdW50RmlsbGVkRmlsdGVycyhxdWVyeSwgQURWQU5DRURfS0VZUylgKS5cbiAgICovXG4gIEBJbnB1dCgpIGFkdmFuY2VkRmlsdGVyQ291bnQgPSAwO1xuICBASW5wdXQoKSBmaWx0ZXJUb2dnbGVUaXRsZSA9ICdC4buZIGzhu41jIG7Dom5nIGNhbyc7XG4gIEBJbnB1dCgpIHJlc2V0VGl0bGUgPSAnWMOzYSBi4buZIGzhu41jJztcblxuICBAT3V0cHV0KCkgc2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgcmVzZXQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBhZHZhbmNlZEV4cGFuZGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIGVmZmVjdGl2ZUNvbHMgPSA0O1xuICBzdGFja2VkTGF5b3V0ID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSByZXNpemVPYnNlcnZlcj86IFJlc2l6ZU9ic2VydmVyO1xuICBwcml2YXRlIGxheW91dEZyYW1lPzogbnVtYmVyO1xuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuLS1nZW8tdGFibGUtZmlsdGVyLWNvbHMnKVxuICBnZXQgaG9zdENvbHVtbnMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5lZmZlY3RpdmVDb2xzO1xuICB9XG5cbiAgLyoqIFThu5VuZyBj4buZdCBncmlkID0gZmllbGQgY29scyArIDEgY+G7mXQgYWN0aW9ucy4gKi9cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS4tLWdlby10YWJsZS1maWx0ZXItdG90YWwtY29scycpXG4gIGdldCBob3N0VG90YWxDb2x1bW5zKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZWZmZWN0aXZlQ29scyArIDE7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLi0tZ2VvLXRhYmxlLWZpbHRlci1nYXAucHgnKVxuICBnZXQgaG9zdEdhcCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdhcDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZ2VvLXRhYmxlLWZpbHRlci0tc3RhY2tlZCcpXG4gIGdldCBzdGFja2VkTGF5b3V0Q2xhc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2tlZExheW91dDtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICBjaGFuZ2VzWydjb2x1bW5zJ10gfHxcbiAgICAgIGNoYW5nZXNbJ3Jlc3BvbnNpdmVDb2x1bW5zJ10gfHxcbiAgICAgIGNoYW5nZXNbJ3Jlc3BvbnNpdmVDb2xsYXBzZSddIHx8XG4gICAgICBjaGFuZ2VzWydtb2JpbGVCcmVha3BvaW50J11cbiAgICApIHtcbiAgICAgIHRoaXMuc2NoZWR1bGVMYXlvdXQoKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB0aGlzLnNjaGVkdWxlTGF5b3V0KCkpO1xuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50KTtcbiAgICB9KTtcbiAgICB0aGlzLnNjaGVkdWxlTGF5b3V0KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgaWYgKHRoaXMubGF5b3V0RnJhbWUpIHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMubGF5b3V0RnJhbWUpO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZUFkdmFuY2VkKCk6IHZvaWQge1xuICAgIGNvbnN0IG5leHQgPSAhdGhpcy5hZHZhbmNlZEV4cGFuZGVkO1xuICAgIHRoaXMuYWR2YW5jZWRFeHBhbmRlZCA9IG5leHQ7XG4gICAgdGhpcy5hZHZhbmNlZEV4cGFuZGVkQ2hhbmdlLmVtaXQobmV4dCk7XG4gIH1cblxuICBvblNlYXJjaCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaC5lbWl0KCk7XG4gIH1cblxuICBvblJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMucmVzZXQuZW1pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzY2hlZHVsZUxheW91dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sYXlvdXRGcmFtZSkge1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5sYXlvdXRGcmFtZSk7XG4gICAgfVxuICAgIHRoaXMubGF5b3V0RnJhbWUgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVSZXNwb25zaXZlTGF5b3V0KCk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVJlc3BvbnNpdmVMYXlvdXQoKTogdm9pZCB7XG4gICAgY29uc3QgaG9zdFdpZHRoID0gdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGggfHwgMDtcbiAgICB0aGlzLmVmZmVjdGl2ZUNvbHMgPSB0aGlzLmdldEVmZmVjdGl2ZUNvbHMoaG9zdFdpZHRoKTtcbiAgICAvLyAxIGPhu5l0IC8gZMaw4bubaSBicmVha3BvaW50OiBzdGFja2VkIOKAlCBhY3Rpb25zIGzDqm4gaMOgbmcgxJHhuqd1LlxuICAgIHRoaXMuc3RhY2tlZExheW91dCA9XG4gICAgICB0aGlzLmVmZmVjdGl2ZUNvbHMgPT09IDEgfHxcbiAgICAgICh0aGlzLnJlc3BvbnNpdmVDb2xsYXBzZSAmJiBob3N0V2lkdGggPiAwICYmIGhvc3RXaWR0aCA8IHRoaXMubW9iaWxlQnJlYWtwb2ludCk7XG4gIH1cblxuICBwcml2YXRlIGdldEVmZmVjdGl2ZUNvbHMod2lkdGg6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgcmVxdWVzdGVkID0gTWF0aC5tYXgoMSwgTWF0aC5mbG9vcih0aGlzLmNvbHVtbnMpIHx8IDEpO1xuICAgIGlmICghdGhpcy5yZXNwb25zaXZlQ29sdW1ucykge1xuICAgICAgcmV0dXJuIHJlcXVlc3RlZDtcbiAgICB9XG4gICAgaWYgKHdpZHRoIDw9IDApIHtcbiAgICAgIHJldHVybiByZXF1ZXN0ZWQ7XG4gICAgfVxuICAgIGNvbnN0IHByZXNldCA9IENPTF9CUkVBS1BPSU5UUy5maW5kKChicCkgPT4gd2lkdGggPj0gYnAubWluV2lkdGgpPy5jb2xzID8/IDE7XG4gICAgcmV0dXJuIE1hdGgubWluKHJlcXVlc3RlZCwgcHJlc2V0KTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImdlby10YWJsZS1maWx0ZXJcIlxuICBbY2xhc3MuZ2VvLXRhYmxlLWZpbHRlci0tZXhwYW5kZWRdPVwiYWR2YW5jZWRFeHBhbmRlZFwiXG4gIFtjbGFzcy5nZW8tdGFibGUtZmlsdGVyLS1uby1kZXNrdG9wLXRvZ2dsZV09XCIhc2hvd0FkdmFuY2VkVG9nZ2xlXCJcbj5cbiAgPGRpdiBjbGFzcz1cImdlby10YWJsZS1maWx0ZXJfX2xheW91dFwiPlxuICAgIDxkaXYgY2xhc3M9XCJnZW8tdGFibGUtZmlsdGVyX19maWVsZHNcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJnZW8tdGFibGUtZmlsdGVyX19hY3Rpb25zXCI+XG4gICAgICA8Z2VvLWJ1dHRvblxuICAgICAgICBhcHBlYXJhbmNlPVwicHJpbWFyeVwiXG4gICAgICAgIGNvbG9yPVwiYnJhbmRcIlxuICAgICAgICBpY29uPVwic2VhcmNoXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cInNlYXJjaExvYWRpbmdcIlxuICAgICAgICAoY2xpY2tlZCk9XCJvblNlYXJjaCgpXCJcbiAgICAgID5cbiAgICAgICAge3sgc2VhcmNoTGFiZWwgfX1cbiAgICAgIDwvZ2VvLWJ1dHRvbj5cblxuICAgICAgQGlmIChzaG93QWR2YW5jZWRUb2dnbGUpIHtcbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cImdlby10YWJsZS1maWx0ZXJfX3RvZ2dsZVwiXG4gICAgICAgICAgW2NsYXNzLmdlby10YWJsZS1maWx0ZXJfX3RvZ2dsZS0tYWN0aXZlXT1cImFkdmFuY2VkRXhwYW5kZWRcIlxuICAgICAgICAgIFtjbGFzcy5nZW8tdGFibGUtZmlsdGVyX190b2dnbGUtLWhhcy1jb3VudF09XCJhZHZhbmNlZEZpbHRlckNvdW50ID4gMFwiXG4gICAgICAgID5cbiAgICAgICAgICA8Z2VvLWJ1dHRvblxuICAgICAgICAgICAgYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICBjb2xvcj1cImJyYW5kXCJcbiAgICAgICAgICAgIGljb249XCJmaWx0ZXJcIlxuICAgICAgICAgICAgW2ljb25Pbmx5XT1cInRydWVcIlxuICAgICAgICAgICAgW3RpdGxlXT1cImZpbHRlclRvZ2dsZVRpdGxlXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiYWR2YW5jZWRFeHBhbmRlZFwiXG4gICAgICAgICAgICAoY2xpY2tlZCk9XCJ0b2dnbGVBZHZhbmNlZCgpXCJcbiAgICAgICAgICA+PC9nZW8tYnV0dG9uPlxuICAgICAgICAgIEBpZiAoYWR2YW5jZWRGaWx0ZXJDb3VudCA+IDApIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ2VvLXRhYmxlLWZpbHRlcl9fdG9nZ2xlLWJhZGdlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgIHt7IGFkdmFuY2VkRmlsdGVyQ291bnQgPiA5OSA/ICc5OSsnIDogYWR2YW5jZWRGaWx0ZXJDb3VudCB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgfVxuXG4gICAgICBAaWYgKHNob3dSZXNldCkge1xuICAgICAgICA8Z2VvLWJ1dHRvblxuICAgICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgIGNvbG9yPVwiYnJhbmRcIlxuICAgICAgICAgIGljb249XCJyZWxvYWRcIlxuICAgICAgICAgIFtpY29uT25seV09XCJ0cnVlXCJcbiAgICAgICAgICBbdGl0bGVdPVwicmVzZXRUaXRsZVwiXG4gICAgICAgICAgKGNsaWNrZWQpPVwib25SZXNldCgpXCJcbiAgICAgICAgPjwvZ2VvLWJ1dHRvbj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZ2VvLXRhYmxlLWZpbHRlcl9fYWR2YW5jZWRcIlxuICAgICAgW2NsYXNzLmdlby10YWJsZS1maWx0ZXJfX2FkdmFuY2VkLS12aXNpYmxlXT1cImFkdmFuY2VkRXhwYW5kZWRcIlxuICAgID5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlthZHZhbmNlZF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
131
|
+
args: [{ selector: 'geo-table-filter', standalone: true, imports: [GeoButtonComponent], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
132
|
+
'[style.--geo-table-filter-cols]': 'effectiveCols()',
|
|
133
|
+
'[style.--geo-table-filter-total-cols]': 'effectiveCols() + 1',
|
|
134
|
+
'[style.--geo-table-filter-gap.px]': 'gap()',
|
|
135
|
+
'[class.geo-table-filter--stacked]': 'stackedLayout()',
|
|
136
|
+
}, template: "<div\n class=\"geo-table-filter\"\n [class.geo-table-filter--expanded]=\"advancedExpanded()\"\n [class.geo-table-filter--no-desktop-toggle]=\"!showAdvancedToggle()\"\n>\n <div class=\"geo-table-filter__layout\">\n <div class=\"geo-table-filter__fields\">\n <ng-content></ng-content>\n </div>\n\n <div class=\"geo-table-filter__actions\">\n <geo-button\n appearance=\"primary\"\n color=\"brand\"\n icon=\"search\"\n [disabled]=\"searchLoading()\"\n (clicked)=\"onSearch()\"\n >\n {{ searchLabel() }}\n </geo-button>\n\n @if (showAdvancedToggle()) {\n <span\n class=\"geo-table-filter__toggle\"\n [class.geo-table-filter__toggle--active]=\"advancedExpanded()\"\n [class.geo-table-filter__toggle--has-count]=\"advancedFilterCount() > 0\"\n >\n <geo-button\n appearance=\"secondary\"\n color=\"brand\"\n icon=\"filter\"\n [iconOnly]=\"true\"\n [title]=\"filterToggleTitle()\"\n [attr.aria-expanded]=\"advancedExpanded()\"\n (clicked)=\"toggleAdvanced()\"\n ></geo-button>\n @if (advancedFilterCount() > 0) {\n <span class=\"geo-table-filter__toggle-badge\" aria-hidden=\"true\">\n {{ advancedFilterCount() > 99 ? '99+' : advancedFilterCount() }}\n </span>\n }\n </span>\n }\n\n @if (showReset()) {\n <geo-button\n appearance=\"secondary\"\n color=\"brand\"\n icon=\"reload\"\n [iconOnly]=\"true\"\n [title]=\"resetTitle()\"\n (clicked)=\"onReset()\"\n ></geo-button>\n }\n </div>\n\n <div\n class=\"geo-table-filter__advanced\"\n [class.geo-table-filter__advanced--visible]=\"advancedExpanded()\"\n >\n <ng-content select=\"[advanced]\"></ng-content>\n </div>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:block;--geo-table-filter-cols: 4;--geo-table-filter-total-cols: 5;--geo-table-filter-gap: 15px}.geo-table-filter{display:block}.geo-table-filter__layout{display:grid;grid-template-columns:repeat(var(--geo-table-filter-total-cols),minmax(0,1fr));grid-template-rows:auto auto;gap:var(--geo-table-filter-gap);align-items:start}.geo-table-filter__fields{grid-column:1/-2;grid-row:1;display:grid;grid-template-columns:repeat(var(--geo-table-filter-cols),minmax(0,1fr));gap:var(--geo-table-filter-gap);align-items:end;min-width:0}.geo-table-filter__fields>*{min-width:0;width:100%;max-width:100%;box-sizing:border-box}.geo-table-filter__actions{grid-column:-2/-1;grid-row:1;display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;align-self:start;gap:8px;min-width:0;width:100%;padding-top:22px;box-sizing:border-box}.geo-table-filter__advanced{grid-column:1/-1;grid-row:2;display:none;grid-template-columns:repeat(var(--geo-table-filter-total-cols),minmax(0,1fr));gap:var(--geo-table-filter-gap);align-items:end;min-width:0}.geo-table-filter__advanced>*{min-width:0;width:100%;max-width:100%;box-sizing:border-box}.geo-table-filter__advanced--visible{display:grid}.geo-table-filter--no-desktop-toggle .geo-table-filter__toggle{display:none}.geo-table-filter__toggle{position:relative;display:inline-flex;flex-shrink:0}.geo-table-filter__toggle--active ::ng-deep .geo-button.geo-button--secondary{background:var(--geo-color-primary-default);border-color:var(--geo-color-primary-default);color:var(--geo-color-neutral-white)}.geo-table-filter__toggle--active ::ng-deep .geo-button.geo-button--secondary:hover:not(:disabled){background:var(--geo-color-primary-hover);border-color:var(--geo-color-primary-hover);color:var(--geo-color-neutral-white)}.geo-table-filter__toggle--has-count:not(.geo-table-filter__toggle--active) ::ng-deep .geo-button.geo-button--secondary{background:var(--geo-color-primary-surface-light)}.geo-table-filter__toggle-badge{position:absolute;top:-6px;right:-6px;z-index:1;display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:var(--geo-radius-full);background:var(--geo-color-primary-default);color:var(--geo-color-neutral-white);font-size:11px;font-weight:600;line-height:1;box-sizing:border-box;pointer-events:none}.geo-table-filter__toggle--active .geo-table-filter__toggle-badge{background:var(--geo-color-neutral-white);color:var(--geo-color-primary-default);border:1px solid rgba(255,255,255,.35)}@media (max-width: 1023px){:host{--geo-table-filter-gap: 12px}}:host(.geo-table-filter--stacked) .geo-table-filter__layout{display:flex;flex-direction:column;gap:var(--geo-table-filter-gap)}:host(.geo-table-filter--stacked) .geo-table-filter__actions{order:1;width:100%;justify-content:flex-end;align-self:stretch;padding-top:0}:host(.geo-table-filter--stacked) .geo-table-filter__fields{order:2;width:100%}:host(.geo-table-filter--stacked) .geo-table-filter__advanced{order:3;width:100%}@media (max-width: 479px){:host{--geo-table-filter-gap: 10px}:host(.geo-table-filter--stacked) .geo-table-filter__actions{flex-wrap:wrap}}\n"] }]
|
|
137
|
+
}], ctorParameters: () => [] });
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLXRhYmxlLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nZW8tdWkvc3JjL2xpYi9maWdtYS9nZW8tdGFibGUvZ2VvLXRhYmxlLWZpbHRlci9nZW8tdGFibGUtZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlby11aS9zcmMvbGliL2ZpZ21hL2dlby10YWJsZS9nZW8tdGFibGUtZmlsdGVyL2dlby10YWJsZS1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFFTixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7QUFFM0UsbUVBQW1FO0FBQ25FLE1BQU0sZUFBZSxHQUFrRDtJQUNyRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUMzQixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUMzQixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUMzQixFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUMxQixFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtDQUN6QixDQUFDO0FBRUY7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFlSCxNQUFNLE9BQU8sdUJBQXVCO0lBQ2pCLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQSxVQUF1QixDQUFBLENBQUMsQ0FB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QUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUM3RSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7d0dBbEhVLHVCQUF1Qjs0RkFBdkIsdUJBQXVCLGd3RUN0RHBDLDI2REFnRUEsbXBHRHJCWSxrQkFBa0I7OzRGQVdqQix1QkFBdUI7a0JBZG5DLFNBQVM7K0JBQ0Usa0JBQWtCLGNBQ2hCLElBQUksV0FDUCxDQUFDLGtCQUFrQixDQUFDLG1CQUdaLHVCQUF1QixDQUFDLE1BQU0sUUFDekM7d0JBQ0osaUNBQWlDLEVBQUUsaUJBQWlCO3dCQUNwRCx1Q0FBdUMsRUFBRSxxQkFBcUI7d0JBQzlELG1DQUFtQyxFQUFFLE9BQU87d0JBQzVDLG1DQUFtQyxFQUFFLGlCQUFpQjtxQkFDdkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBtb2RlbCxcbiAgb3V0cHV0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR2VvQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZ2VvLWJ1dHRvbi9nZW8tYnV0dG9uLmNvbXBvbmVudCc7XG5cbi8qKiBCcmVha3BvaW50IChweCkg4oaSIHPhu5EgY+G7mXQgdOG7kWkgxJFhIGtoaSBgcmVzcG9uc2l2ZUNvbHVtbnNgIGLhuq10LiAqL1xuY29uc3QgQ09MX0JSRUFLUE9JTlRTOiByZWFkb25seSB7IG1pbldpZHRoOiBudW1iZXI7IGNvbHM6IG51bWJlciB9W10gPSBbXG4gIHsgbWluV2lkdGg6IDE0MDAsIGNvbHM6IDQgfSxcbiAgeyBtaW5XaWR0aDogMTIwMCwgY29sczogNCB9LFxuICB7IG1pbldpZHRoOiAxMDI0LCBjb2xzOiAzIH0sXG4gIHsgbWluV2lkdGg6IDc2OCwgY29sczogMiB9LFxuICB7IG1pbldpZHRoOiAwLCBjb2xzOiAxIH0sXG5dO1xuXG4vKipcbiAqIFRoYW5oIGzhu41jIHBow61hIHRyw6puIGLhuqNuZzogZmllbGQgY2jDrW5oICsgYWN0aW9ucyAoVMOsbSBraeG6v20gLyBC4buZIGzhu41jIG7Dom5nIGNhbyAvIFJlc2V0KS5cbiAqXG4gKiAjIyBT4buRIGPhu5l0IGhp4buDbiB0aOG7i1xuICogLSBgW2NvbHVtbnNdPVwiNFwiYCDigJQgNCBj4buZdCBmaWVsZCArIDEgY+G7mXQgYWN0aW9ucyA9IGdyaWQgNSBj4buZdCDEkeG7gXUuXG4gKiAtIGBbcmVzcG9uc2l2ZUNvbHVtbnNdPVwiZmFsc2VcImAg4oCUIGdp4buvIMSRw7puZyBgY29sdW1uc2AsIGtow7RuZyBnaeG6o20gdGhlbyBicmVha3BvaW50LlxuICpcbiAqICMjIExheW91dFxuICogLSBHcmlkIMSR4buBdSBgY29sdW1ucyArIDFgOiBmaWVsZCBj4buZdCAxLi5OLCBhY3Rpb25zIGPhu5l0IGN14buRaS5cbiAqIC0gQWR2YW5jZWQgc3BhbiBmdWxsIHdpZHRoIChgMSAvIC0xYCkgduG7m2kgY8O5bmcgYGNvbHVtbnMgKyAxYCBj4buZdCDihpIgcGjhu6cgY+G6oyBj4buZdCBidXR0b24uXG4gKiAtIFN0YWNrZWQgKG3DoG4gaOG6uXApOiBhY3Rpb25zIOKGkiBmaWVsZHMg4oaSIGFkdmFuY2VkLlxuICpcbiAqICMjIENvbnRlbnQgcHJvamVjdGlvblxuICogLSBEZWZhdWx0OiBsdcO0biBoaeG7h24uIFNsb3QgYFthZHZhbmNlZF1gOiBjaOG7iSBoaeG7h24ga2hpIGBhZHZhbmNlZEV4cGFuZGVkYC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ2VvLXRhYmxlLWZpbHRlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtHZW9CdXR0b25Db21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2VvLXRhYmxlLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9nZW8tdGFibGUtZmlsdGVyLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHtcbiAgICAnW3N0eWxlLi0tZ2VvLXRhYmxlLWZpbHRlci1jb2xzXSc6ICdlZmZlY3RpdmVDb2xzKCknLFxuICAgICdbc3R5bGUuLS1nZW8tdGFibGUtZmlsdGVyLXRvdGFsLWNvbHNdJzogJ2VmZmVjdGl2ZUNvbHMoKSArIDEnLFxuICAgICdbc3R5bGUuLS1nZW8tdGFibGUtZmlsdGVyLWdhcC5weF0nOiAnZ2FwKCknLFxuICAgICdbY2xhc3MuZ2VvLXRhYmxlLWZpbHRlci0tc3RhY2tlZF0nOiAnc3RhY2tlZExheW91dCgpJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgR2VvVGFibGVGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGhvc3QgPSBpbmplY3QoRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pO1xuICBwcml2YXRlIHJlYWRvbmx5IG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gIC8qKlxuICAgKiBT4buRIGPhu5l0IGZpZWxkIG3hu5dpIGjDoG5nICht4bq3YyDEkeG7i25oIDQg4oaSIHThu5VuZyA1IGPhu5l0IGfhu5NtIGFjdGlvbnMpLlxuICAgKiBWw60gZOG7pTogNCBmaWVsZCArIGNvbHVtbnM9MiDihpIgMiBow6BuZyDDlyAyIGPhu5l0IGZpZWxkICgrIDEgY+G7mXQgYWN0aW9ucykuXG4gICAqL1xuICByZWFkb25seSBjb2x1bW5zID0gaW5wdXQoNCk7XG4gIC8qKlxuICAgKiBLaGkgYHRydWVgICht4bq3YyDEkeG7i25oKTogc+G7kSBj4buZdCB0aOG7sWMgdOG6vyDiiaQgYGNvbHVtbnNgIHRoZW8gYnJlYWtwb2ludC5cbiAgICogS2hpIGBmYWxzZWA6IGx1w7RuIGTDuW5nIMSRw7puZyBgY29sdW1uc2AuXG4gICAqL1xuICByZWFkb25seSByZXNwb25zaXZlQ29sdW1ucyA9IGlucHV0KHRydWUpO1xuICAvKiogxJDGsGEgYWN0aW9ucyBsw6puIGjDoG5nIMSR4bqndSBraGkgbcOgbiBo4bq5cCAoc3RhY2tlZCkuICovXG4gIHJlYWRvbmx5IHJlc3BvbnNpdmVDb2xsYXBzZSA9IGlucHV0KHRydWUpO1xuICAvKiogQnJlYWtwb2ludCBjaHV54buDbiBsYXlvdXQgc3RhY2tlZCAocHgpLiAqL1xuICByZWFkb25seSBtb2JpbGVCcmVha3BvaW50ID0gaW5wdXQoMTAyNCk7XG4gIC8qKiBLaG/huqNuZyBjw6FjaCBncmlkIChweCkuICovXG4gIHJlYWRvbmx5IGdhcCA9IGlucHV0KDE1KTtcblxuICByZWFkb25seSBzZWFyY2hMYWJlbCA9IGlucHV0KCdUw6xtIGtp4bq/bScpO1xuICByZWFkb25seSBzZWFyY2hMb2FkaW5nID0gaW5wdXQoZmFsc2UpO1xuICAvKiogSGnhu4duIG7DunQgbeG7ny/EkcOzbmcgc2xvdCBgW2FkdmFuY2VkXWAuICovXG4gIHJlYWRvbmx5IHNob3dBZHZhbmNlZFRvZ2dsZSA9IGlucHV0KHRydWUpO1xuICByZWFkb25seSBzaG93UmVzZXQgPSBpbnB1dCh0cnVlKTtcbiAgLyoqIE3hu58gcGFuZWwgZmllbGQgbsOibmcgY2FvIChgW2FkdmFuY2VkXWApLiAqL1xuICByZWFkb25seSBhZHZhbmNlZEV4cGFuZGVkID0gbW9kZWwoZmFsc2UpO1xuICAvKipcbiAgICogU+G7kSBmaWVsZCBhZHZhbmNlZCDEkWFuZyBjw7MgZ2nDoSB0cuG7iyDigJQgaGnhu4duIGJhZGdlIHRyw6puIG7DunQgZXhwYW5kLlxuICAgKiBQYXJlbnQgdOG7sSB0w61uaCAodmQuIGBjb3VudEZpbGxlZEZpbHRlcnMocXVlcnksIEFEVkFOQ0VEX0tFWVMpYCkuXG4gICAqL1xuICByZWFkb25seSBhZHZhbmNlZEZpbHRlckNvdW50ID0gaW5wdXQoMCk7XG4gIHJlYWRvbmx5IGZpbHRlclRvZ2dsZVRpdGxlID0gaW5wdXQoJ0Lhu5kgbOG7jWMgbsOibmcgY2FvJyk7XG4gIHJlYWRvbmx5IHJlc2V0VGl0bGUgPSBpbnB1dCgnWMOzYSBi4buZIGzhu41jJyk7XG5cbiAgcmVhZG9ubHkgc2VhcmNoID0gb3V0cHV0PHZvaWQ+KCk7XG4gIHJlYWRvbmx5IHJlc2V0ID0gb3V0cHV0PHZvaWQ+KCk7XG5cbiAgcmVhZG9ubHkgZWZmZWN0aXZlQ29scyA9IHNpZ25hbCg0KTtcbiAgcmVhZG9ubHkgc3RhY2tlZExheW91dCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcHJpdmF0ZSByZXNpemVPYnNlcnZlcj86IFJlc2l6ZU9ic2VydmVyO1xuICBwcml2YXRlIGxheW91dEZyYW1lPzogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLmNvbHVtbnMoKTtcbiAgICAgIHRoaXMucmVzcG9uc2l2ZUNvbHVtbnMoKTtcbiAgICAgIHRoaXMucmVzcG9uc2l2ZUNvbGxhcHNlKCk7XG4gICAgICB0aGlzLm1vYmlsZUJyZWFrcG9pbnQoKTtcbiAgICAgIHRoaXMuc2NoZWR1bGVMYXlvdXQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHRoaXMuc2NoZWR1bGVMYXlvdXQoKSk7XG4gICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIH0pO1xuICAgIHRoaXMuc2NoZWR1bGVMYXlvdXQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICBpZiAodGhpcy5sYXlvdXRGcmFtZSkge1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5sYXlvdXRGcmFtZSk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlQWR2YW5jZWQoKTogdm9pZCB7XG4gICAgdGhpcy5hZHZhbmNlZEV4cGFuZGVkLnNldCghdGhpcy5hZHZhbmNlZEV4cGFuZGVkKCkpO1xuICB9XG5cbiAgb25TZWFyY2goKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2guZW1pdCgpO1xuICB9XG5cbiAgb25SZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2V0LmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2NoZWR1bGVMYXlvdXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubGF5b3V0RnJhbWUpIHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMubGF5b3V0RnJhbWUpO1xuICAgIH1cbiAgICB0aGlzLmxheW91dEZyYW1lID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlUmVzcG9uc2l2ZUxheW91dCgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVJlc3BvbnNpdmVMYXlvdXQoKTogdm9pZCB7XG4gICAgY29uc3QgaG9zdFdpZHRoID0gdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGggfHwgMDtcbiAgICBjb25zdCBlZmZlY3RpdmVDb2xzID0gdGhpcy5nZXRFZmZlY3RpdmVDb2xzKGhvc3RXaWR0aCk7XG4gICAgdGhpcy5lZmZlY3RpdmVDb2xzLnNldChlZmZlY3RpdmVDb2xzKTtcbiAgICAvLyAxIGPhu5l0IC8gZMaw4bubaSBicmVha3BvaW50OiBzdGFja2VkIOKAlCBhY3Rpb25zIGzDqm4gaMOgbmcgxJHhuqd1LlxuICAgIHRoaXMuc3RhY2tlZExheW91dC5zZXQoXG4gICAgICBlZmZlY3RpdmVDb2xzID09PSAxIHx8XG4gICAgICAgICh0aGlzLnJlc3BvbnNpdmVDb2xsYXBzZSgpICYmIGhvc3RXaWR0aCA+IDAgJiYgaG9zdFdpZHRoIDwgdGhpcy5tb2JpbGVCcmVha3BvaW50KCkpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RWZmZWN0aXZlQ29scyh3aWR0aDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCByZXF1ZXN0ZWQgPSBNYXRoLm1heCgxLCBNYXRoLmZsb29yKHRoaXMuY29sdW1ucygpKSB8fCAxKTtcbiAgICBpZiAoIXRoaXMucmVzcG9uc2l2ZUNvbHVtbnMoKSkge1xuICAgICAgcmV0dXJuIHJlcXVlc3RlZDtcbiAgICB9XG4gICAgaWYgKHdpZHRoIDw9IDApIHtcbiAgICAgIHJldHVybiByZXF1ZXN0ZWQ7XG4gICAgfVxuICAgIGNvbnN0IHByZXNldCA9IENPTF9CUkVBS1BPSU5UUy5maW5kKChicCkgPT4gd2lkdGggPj0gYnAubWluV2lkdGgpPy5jb2xzID8/IDE7XG4gICAgcmV0dXJuIE1hdGgubWluKHJlcXVlc3RlZCwgcHJlc2V0KTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImdlby10YWJsZS1maWx0ZXJcIlxuICBbY2xhc3MuZ2VvLXRhYmxlLWZpbHRlci0tZXhwYW5kZWRdPVwiYWR2YW5jZWRFeHBhbmRlZCgpXCJcbiAgW2NsYXNzLmdlby10YWJsZS1maWx0ZXItLW5vLWRlc2t0b3AtdG9nZ2xlXT1cIiFzaG93QWR2YW5jZWRUb2dnbGUoKVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJnZW8tdGFibGUtZmlsdGVyX19sYXlvdXRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZ2VvLXRhYmxlLWZpbHRlcl9fZmllbGRzXCI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZ2VvLXRhYmxlLWZpbHRlcl9fYWN0aW9uc1wiPlxuICAgICAgPGdlby1idXR0b25cbiAgICAgICAgYXBwZWFyYW5jZT1cInByaW1hcnlcIlxuICAgICAgICBjb2xvcj1cImJyYW5kXCJcbiAgICAgICAgaWNvbj1cInNlYXJjaFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJzZWFyY2hMb2FkaW5nKClcIlxuICAgICAgICAoY2xpY2tlZCk9XCJvblNlYXJjaCgpXCJcbiAgICAgID5cbiAgICAgICAge3sgc2VhcmNoTGFiZWwoKSB9fVxuICAgICAgPC9nZW8tYnV0dG9uPlxuXG4gICAgICBAaWYgKHNob3dBZHZhbmNlZFRvZ2dsZSgpKSB7XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJnZW8tdGFibGUtZmlsdGVyX190b2dnbGVcIlxuICAgICAgICAgIFtjbGFzcy5nZW8tdGFibGUtZmlsdGVyX190b2dnbGUtLWFjdGl2ZV09XCJhZHZhbmNlZEV4cGFuZGVkKClcIlxuICAgICAgICAgIFtjbGFzcy5nZW8tdGFibGUtZmlsdGVyX190b2dnbGUtLWhhcy1jb3VudF09XCJhZHZhbmNlZEZpbHRlckNvdW50KCkgPiAwXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxnZW8tYnV0dG9uXG4gICAgICAgICAgICBhcHBlYXJhbmNlPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgIGNvbG9yPVwiYnJhbmRcIlxuICAgICAgICAgICAgaWNvbj1cImZpbHRlclwiXG4gICAgICAgICAgICBbaWNvbk9ubHldPVwidHJ1ZVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiZmlsdGVyVG9nZ2xlVGl0bGUoKVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImFkdmFuY2VkRXhwYW5kZWQoKVwiXG4gICAgICAgICAgICAoY2xpY2tlZCk9XCJ0b2dnbGVBZHZhbmNlZCgpXCJcbiAgICAgICAgICA+PC9nZW8tYnV0dG9uPlxuICAgICAgICAgIEBpZiAoYWR2YW5jZWRGaWx0ZXJDb3VudCgpID4gMCkge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJnZW8tdGFibGUtZmlsdGVyX190b2dnbGUtYmFkZ2VcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAge3sgYWR2YW5jZWRGaWx0ZXJDb3VudCgpID4gOTkgPyAnOTkrJyA6IGFkdmFuY2VkRmlsdGVyQ291bnQoKSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgfVxuXG4gICAgICBAaWYgKHNob3dSZXNldCgpKSB7XG4gICAgICAgIDxnZW8tYnV0dG9uXG4gICAgICAgICAgYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgY29sb3I9XCJicmFuZFwiXG4gICAgICAgICAgaWNvbj1cInJlbG9hZFwiXG4gICAgICAgICAgW2ljb25Pbmx5XT1cInRydWVcIlxuICAgICAgICAgIFt0aXRsZV09XCJyZXNldFRpdGxlKClcIlxuICAgICAgICAgIChjbGlja2VkKT1cIm9uUmVzZXQoKVwiXG4gICAgICAgID48L2dlby1idXR0b24+XG4gICAgICB9XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImdlby10YWJsZS1maWx0ZXJfX2FkdmFuY2VkXCJcbiAgICAgIFtjbGFzcy5nZW8tdGFibGUtZmlsdGVyX19hZHZhbmNlZC0tdmlzaWJsZV09XCJhZHZhbmNlZEV4cGFuZGVkKClcIlxuICAgID5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlthZHZhbmNlZF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { Component,
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';
|
|
3
2
|
import { FormsModule } from '@angular/forms';
|
|
4
3
|
import { NgZorroAntdModule } from '../../../ng-zorro/ng-zorro-antd.module';
|
|
5
4
|
import { GeoSelectComponent } from '../../geo-select/geo-select.component';
|
|
@@ -7,73 +6,61 @@ import { DEFAULT_UI_TABLE_PAGE_SIZE_OPTIONS } from '../geo-table.types';
|
|
|
7
6
|
import * as i0 from "@angular/core";
|
|
8
7
|
import * as i1 from "@angular/forms";
|
|
9
8
|
export class GeoTablePaginationComponent {
|
|
10
|
-
pageIndex = 1;
|
|
11
|
-
pageSize = 10;
|
|
12
|
-
total = 0;
|
|
13
|
-
pageSizeOptions = DEFAULT_UI_TABLE_PAGE_SIZE_OPTIONS;
|
|
14
|
-
showSizeChanger = true;
|
|
15
|
-
hideOnSinglePage = false;
|
|
16
|
-
showTotalRange = true;
|
|
17
|
-
sizeLabel = 'Hiển thị';
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
get rangeStart() {
|
|
21
|
-
if (this.total === 0) {
|
|
9
|
+
pageIndex = model(1);
|
|
10
|
+
pageSize = model(10);
|
|
11
|
+
total = input(0);
|
|
12
|
+
pageSizeOptions = input(DEFAULT_UI_TABLE_PAGE_SIZE_OPTIONS);
|
|
13
|
+
showSizeChanger = input(true);
|
|
14
|
+
hideOnSinglePage = input(false);
|
|
15
|
+
showTotalRange = input(true);
|
|
16
|
+
sizeLabel = input('Hiển thị');
|
|
17
|
+
rangeStart = computed(() => {
|
|
18
|
+
if (this.total() === 0) {
|
|
22
19
|
return 0;
|
|
23
20
|
}
|
|
24
|
-
return (this.pageIndex - 1) * this.pageSize + 1;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
if (this.total === 0) {
|
|
21
|
+
return (this.pageIndex() - 1) * this.pageSize() + 1;
|
|
22
|
+
});
|
|
23
|
+
rangeEnd = computed(() => {
|
|
24
|
+
if (this.total() === 0) {
|
|
28
25
|
return 0;
|
|
29
26
|
}
|
|
30
|
-
return Math.min(this.pageIndex * this.pageSize, this.total);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}));
|
|
40
|
-
}
|
|
41
|
-
get visible() {
|
|
42
|
-
if (this.hideOnSinglePage && this.total <= this.pageSize) {
|
|
27
|
+
return Math.min(this.pageIndex() * this.pageSize(), this.total());
|
|
28
|
+
});
|
|
29
|
+
totalPages = computed(() => Math.max(1, Math.ceil(this.total() / this.pageSize())));
|
|
30
|
+
sizeOptions = computed(() => this.pageSizeOptions().map((size) => ({
|
|
31
|
+
label: size.toString(),
|
|
32
|
+
value: size,
|
|
33
|
+
})));
|
|
34
|
+
visible = computed(() => {
|
|
35
|
+
if (this.hideOnSinglePage() && this.total() <= this.pageSize()) {
|
|
43
36
|
return false;
|
|
44
37
|
}
|
|
45
|
-
return this.total > 0;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
get isFirstPage() {
|
|
51
|
-
return this.pageIndex <= 1;
|
|
52
|
-
}
|
|
53
|
-
get isLastPage() {
|
|
54
|
-
return this.pageIndex >= this.totalPages;
|
|
55
|
-
}
|
|
38
|
+
return this.total() > 0;
|
|
39
|
+
});
|
|
40
|
+
pages = computed(() => this.buildPageList(this.pageIndex(), this.totalPages()));
|
|
41
|
+
isFirstPage = computed(() => this.pageIndex() <= 1);
|
|
42
|
+
isLastPage = computed(() => this.pageIndex() >= this.totalPages());
|
|
56
43
|
onPageSizeChange(value) {
|
|
57
44
|
if (typeof value === 'number') {
|
|
58
|
-
this.
|
|
45
|
+
this.pageSize.set(value);
|
|
59
46
|
}
|
|
60
47
|
}
|
|
61
48
|
goToFirst() {
|
|
62
49
|
this.goToPage(1);
|
|
63
50
|
}
|
|
64
51
|
goToPrev() {
|
|
65
|
-
this.goToPage(this.pageIndex - 1);
|
|
52
|
+
this.goToPage(this.pageIndex() - 1);
|
|
66
53
|
}
|
|
67
54
|
goToNext() {
|
|
68
|
-
this.goToPage(this.pageIndex + 1);
|
|
55
|
+
this.goToPage(this.pageIndex() + 1);
|
|
69
56
|
}
|
|
70
57
|
goToLast() {
|
|
71
|
-
this.goToPage(this.totalPages);
|
|
58
|
+
this.goToPage(this.totalPages());
|
|
72
59
|
}
|
|
73
60
|
goToPage(page) {
|
|
74
|
-
const next = Math.min(Math.max(page, 1), this.totalPages);
|
|
75
|
-
if (next !== this.pageIndex) {
|
|
76
|
-
this.
|
|
61
|
+
const next = Math.min(Math.max(page, 1), this.totalPages());
|
|
62
|
+
if (next !== this.pageIndex()) {
|
|
63
|
+
this.pageIndex.set(next);
|
|
77
64
|
}
|
|
78
65
|
}
|
|
79
66
|
buildPageList(current, total) {
|
|
@@ -89,30 +76,10 @@ export class GeoTablePaginationComponent {
|
|
|
89
76
|
return [1, 'ellipsis', current - 1, current, current + 1, 'ellipsis', total];
|
|
90
77
|
}
|
|
91
78
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoTablePaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
92
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoTablePaginationComponent, isStandalone: true, selector: "geo-table-pagination", inputs: { pageIndex: "pageIndex", pageSize: "pageSize", total: "total", pageSizeOptions: "pageSizeOptions", showSizeChanger: "showSizeChanger", hideOnSinglePage: "hideOnSinglePage", showTotalRange: "showTotalRange", sizeLabel: "sizeLabel" }, outputs: {
|
|
79
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoTablePaginationComponent, isStandalone: true, selector: "geo-table-pagination", inputs: { pageIndex: { classPropertyName: "pageIndex", publicName: "pageIndex", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, total: { classPropertyName: "total", publicName: "total", isSignal: true, isRequired: false, transformFunction: null }, pageSizeOptions: { classPropertyName: "pageSizeOptions", publicName: "pageSizeOptions", isSignal: true, isRequired: false, transformFunction: null }, showSizeChanger: { classPropertyName: "showSizeChanger", publicName: "showSizeChanger", isSignal: true, isRequired: false, transformFunction: null }, hideOnSinglePage: { classPropertyName: "hideOnSinglePage", publicName: "hideOnSinglePage", isSignal: true, isRequired: false, transformFunction: null }, showTotalRange: { classPropertyName: "showTotalRange", publicName: "showTotalRange", isSignal: true, isRequired: false, transformFunction: null }, sizeLabel: { classPropertyName: "sizeLabel", publicName: "sizeLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pageIndex: "pageIndexChange", pageSize: "pageSizeChange" }, ngImport: i0, template: "@if (visible()) {\n <div class=\"geo-table-pagination\">\n <div class=\"geo-table-pagination__left\">\n @if (showTotalRange()) {\n <p class=\"geo-table-pagination__total\">\n <strong>{{ rangeStart() }}-{{ rangeEnd() }}</strong> tr\u00EAn t\u1ED5ng <strong>{{ total() }}</strong>\n </p>\n }\n\n @if (showSizeChanger()) {\n <div class=\"geo-table-pagination__size\">\n <span class=\"geo-table-pagination__size-label\">{{ sizeLabel() }}</span>\n <geo-select\n class=\"geo-table-pagination__size-select\"\n size=\"small\"\n [options]=\"sizeOptions()\"\n [allowClear]=\"false\"\n [ngModel]=\"pageSize()\"\n (valueChange)=\"onPageSizeChange($event)\"\n ></geo-select>\n </div>\n }\n </div>\n\n <div class=\"geo-table-pagination__nav\" role=\"navigation\" aria-label=\"Ph\u00E2n trang\">\n <button\n type=\"button\"\n class=\"geo-table-pagination__btn\"\n title=\"Trang \u0111\u1EA7u\"\n [disabled]=\"isFirstPage()\"\n (click)=\"goToFirst()\"\n >\n <span aria-hidden=\"true\">«</span>\n </button>\n\n <button\n type=\"button\"\n class=\"geo-table-pagination__btn\"\n title=\"Trang tr\u01B0\u1EDBc\"\n [disabled]=\"isFirstPage()\"\n (click)=\"goToPrev()\"\n >\n <span aria-hidden=\"true\">‹</span>\n </button>\n\n @for (page of pages(); track $index) {\n @if (page === 'ellipsis') {\n <span class=\"geo-table-pagination__ellipsis\" aria-hidden=\"true\">...</span>\n } @else {\n <button\n type=\"button\"\n class=\"geo-table-pagination__btn geo-table-pagination__btn--page\"\n [class.geo-table-pagination__btn--active]=\"page === pageIndex()\"\n [attr.aria-current]=\"page === pageIndex() ? 'page' : null\"\n [attr.aria-label]=\"'Trang ' + page\"\n (click)=\"goToPage(page)\"\n >\n {{ page }}\n </button>\n }\n }\n\n <button\n type=\"button\"\n class=\"geo-table-pagination__btn\"\n title=\"Trang k\u1EBF\"\n [disabled]=\"isLastPage()\"\n (click)=\"goToNext()\"\n >\n <span aria-hidden=\"true\">›</span>\n </button>\n\n <button\n type=\"button\"\n class=\"geo-table-pagination__btn\"\n title=\"Trang cu\u1ED1i\"\n [disabled]=\"isLastPage()\"\n (click)=\"goToLast()\"\n >\n <span aria-hidden=\"true\">»</span>\n </button>\n </div>\n </div>\n}\n", styles: [":host{display:block}.geo-table-pagination{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-top:16px;flex-wrap:wrap}.geo-table-pagination__left{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.geo-table-pagination__total{margin:0;font-size:14px;line-height:20px;color:var(--geo-color-neutral-700);white-space:nowrap}.geo-table-pagination__total strong{color:var(--geo-color-neutral-900);font-weight:600}.geo-table-pagination__size{display:inline-flex;align-items:center;gap:8px}.geo-table-pagination__size-label{font-size:14px;line-height:20px;color:var(--geo-color-neutral-700);white-space:nowrap}.geo-table-pagination__size-select{width:72px}.geo-table-pagination__nav{display:inline-flex;align-items:center;gap:8px;margin-left:auto}.geo-table-pagination__btn{display:inline-flex;align-items:center;justify-content:center;min-width:32px;height:32px;padding:0 8px;border:1px solid var(--geo-color-primary-border);border-radius:var(--geo-radius);background:var(--geo-color-neutral-white);color:var(--geo-color-neutral-900);font-size:14px;line-height:1;cursor:pointer;transition:border-color .15s ease,color .15s ease}.geo-table-pagination__btn:hover:not(:disabled){border-color:var(--geo-color-primary-default);color:var(--geo-color-primary-default)}.geo-table-pagination__btn:disabled{cursor:not-allowed;color:var(--geo-color-neutral-300);border-color:var(--geo-color-primary-border);background:var(--geo-color-neutral-white)}.geo-table-pagination__btn--page{min-width:32px;padding:0;font-weight:400}.geo-table-pagination__btn--active{border-color:var(--geo-color-primary-default)!important;color:var(--geo-color-primary-default)!important;background:var(--geo-color-neutral-white);font-weight:500}.geo-table-pagination__ellipsis{display:inline-flex;align-items:center;justify-content:center;min-width:32px;height:32px;color:var(--geo-color-neutral-900);font-size:14px;letter-spacing:1px;-webkit-user-select:none;user-select:none}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NgZorroAntdModule }, { kind: "component", type: GeoSelectComponent, selector: "geo-select", inputs: ["options", "label", "placeholder", "size", "mode", "disabled", "required", "error", "errorMessage", "allowClear", "showSearch", "block", "width"], outputs: ["valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
93
80
|
}
|
|
94
81
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoTablePaginationComponent, decorators: [{
|
|
95
82
|
type: Component,
|
|
96
|
-
args: [{ selector: 'geo-table-pagination', standalone: true, imports: [
|
|
97
|
-
}]
|
|
98
|
-
type: Input
|
|
99
|
-
}], pageSize: [{
|
|
100
|
-
type: Input
|
|
101
|
-
}], total: [{
|
|
102
|
-
type: Input
|
|
103
|
-
}], pageSizeOptions: [{
|
|
104
|
-
type: Input
|
|
105
|
-
}], showSizeChanger: [{
|
|
106
|
-
type: Input
|
|
107
|
-
}], hideOnSinglePage: [{
|
|
108
|
-
type: Input
|
|
109
|
-
}], showTotalRange: [{
|
|
110
|
-
type: Input
|
|
111
|
-
}], sizeLabel: [{
|
|
112
|
-
type: Input
|
|
113
|
-
}], pageIndexChange: [{
|
|
114
|
-
type: Output
|
|
115
|
-
}], pageSizeChange: [{
|
|
116
|
-
type: Output
|
|
117
|
-
}] } });
|
|
118
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLXRhYmxlLXBhZ2luYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLXRhYmxlL2dlby10YWJsZS1wYWdpbmF0aW9uL2dlby10YWJsZS1wYWdpbmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlby11aS9zcmMvbGliL2ZpZ21hL2dlby10YWJsZS9nZW8tdGFibGUtcGFnaW5hdGlvbi9nZW8tdGFibGUtcGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFM0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7OztBQVd4RSxNQUFNLE9BQU8sMkJBQTJCO0lBQzdCLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDZCxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ2QsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNWLGVBQWUsR0FBYSxrQ0FBa0MsQ0FBQztJQUMvRCxlQUFlLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUN6QixjQUFjLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLFNBQVMsR0FBRyxVQUFVLENBQUM7SUFFdEIsZUFBZSxHQUFHLElBQUksWUFBWSxFQUFV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QkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUksZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE5nWm9ycm9BbnRkTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vbmctem9ycm8vbmctem9ycm8tYW50ZC5tb2R1bGUnO1xuaW1wb3J0IHsgR2VvU2VsZWN0T3B0aW9uIH0gZnJvbSAnLi4vLi4vZ2VvLXNlbGVjdC9nZW8tc2VsZWN0LnR5cGVzJztcbmltcG9ydCB7IEdlb1NlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2dlby1zZWxlY3QvZ2VvLXNlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgREVGQVVMVF9VSV9UQUJMRV9QQUdFX1NJWkVfT1BUSU9OUyB9IGZyb20gJy4uL2dlby10YWJsZS50eXBlcyc7XG5cbmV4cG9ydCB0eXBlIEdlb1RhYmxlUGFnaW5hdGlvblBhZ2VJdGVtID0gbnVtYmVyIHwgJ2VsbGlwc2lzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ2VvLXRhYmxlLXBhZ2luYXRpb24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgTmdab3Jyb0FudGRNb2R1bGUsIEdlb1NlbGVjdENvbXBvbmVudF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9nZW8tdGFibGUtcGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9nZW8tdGFibGUtcGFnaW5hdGlvbi5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIEdlb1RhYmxlUGFnaW5hdGlvbkNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHBhZ2VJbmRleCA9IDE7XG4gIEBJbnB1dCgpIHBhZ2VTaXplID0gMTA7XG4gIEBJbnB1dCgpIHRvdGFsID0gMDtcbiAgQElucHV0KCkgcGFnZVNpemVPcHRpb25zOiBudW1iZXJbXSA9IERFRkFVTFRfVUlfVEFCTEVfUEFHRV9TSVpFX09QVElPTlM7XG4gIEBJbnB1dCgpIHNob3dTaXplQ2hhbmdlciA9IHRydWU7XG4gIEBJbnB1dCgpIGhpZGVPblNpbmdsZVBhZ2UgPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd1RvdGFsUmFuZ2UgPSB0cnVlO1xuICBASW5wdXQoKSBzaXplTGFiZWwgPSAnSGnhu4NuIHRo4buLJztcblxuICBAT3V0cHV0KCkgcGFnZUluZGV4Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBwYWdlU2l6ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIGdldCByYW5nZVN0YXJ0KCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMudG90YWwgPT09IDApIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHJldHVybiAodGhpcy5wYWdlSW5kZXggLSAxKSAqIHRoaXMucGFnZVNpemUgKyAxO1xuICB9XG5cbiAgZ2V0IHJhbmdlRW5kKCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMudG90YWwgPT09IDApIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHJldHVybiBNYXRoLm1pbih0aGlzLnBhZ2VJbmRleCAqIHRoaXMucGFnZVNpemUsIHRoaXMudG90YWwpO1xuICB9XG5cbiAgZ2V0IHRvdGFsUGFnZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5tYXgoMSwgTWF0aC5jZWlsKHRoaXMudG90YWwgLyB0aGlzLnBhZ2VTaXplKSk7XG4gIH1cblxuICBnZXQgc2l6ZU9wdGlvbnMoKTogR2VvU2VsZWN0T3B0aW9uPG51bWJlcj5bXSB7XG4gICAgcmV0dXJuIHRoaXMucGFnZVNpemVPcHRpb25zLm1hcCgoc2l6ZSkgPT4gKHtcbiAgICAgIGxhYmVsOiBzaXplLnRvU3RyaW5nKCksXG4gICAgICB2YWx1ZTogc2l6ZSxcbiAgICB9KSk7XG4gIH1cblxuICBnZXQgdmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5oaWRlT25TaW5nbGVQYWdlICYmIHRoaXMudG90YWwgPD0gdGhpcy5wYWdlU2l6ZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRvdGFsID4gMDtcbiAgfVxuXG4gIGdldCBwYWdlcygpOiBHZW9UYWJsZVBhZ2luYXRpb25QYWdlSXRlbVtdIHtcbiAgICByZXR1cm4gdGhpcy5idWlsZFBhZ2VMaXN0KHRoaXMucGFnZUluZGV4LCB0aGlzLnRvdGFsUGFnZXMpO1xuICB9XG5cbiAgZ2V0IGlzRmlyc3RQYWdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBhZ2VJbmRleCA8PSAxO1xuICB9XG5cbiAgZ2V0IGlzTGFzdFBhZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucGFnZUluZGV4ID49IHRoaXMudG90YWxQYWdlcztcbiAgfVxuXG4gIG9uUGFnZVNpemVDaGFuZ2UodmFsdWU6IHN0cmluZyB8IG51bWJlciB8IEFycmF5PHN0cmluZyB8IG51bWJlcj4gfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHRoaXMucGFnZVNpemVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgZ29Ub0ZpcnN0KCk6IHZvaWQge1xuICAgIHRoaXMuZ29Ub1BhZ2UoMSk7XG4gIH1cblxuICBnb1RvUHJldigpOiB2b2lkIHtcbiAgICB0aGlzLmdvVG9QYWdlKHRoaXMucGFnZUluZGV4IC0gMSk7XG4gIH1cblxuICBnb1RvTmV4dCgpOiB2b2lkIHtcbiAgICB0aGlzLmdvVG9QYWdlKHRoaXMucGFnZUluZGV4ICsgMSk7XG4gIH1cblxuICBnb1RvTGFzdCgpOiB2b2lkIHtcbiAgICB0aGlzLmdvVG9QYWdlKHRoaXMudG90YWxQYWdlcyk7XG4gIH1cblxuICBnb1RvUGFnZShwYWdlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBuZXh0ID0gTWF0aC5taW4oTWF0aC5tYXgocGFnZSwgMSksIHRoaXMudG90YWxQYWdlcyk7XG4gICAgaWYgKG5leHQgIT09IHRoaXMucGFnZUluZGV4KSB7XG4gICAgICB0aGlzLnBhZ2VJbmRleENoYW5nZS5lbWl0KG5leHQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRQYWdlTGlzdChjdXJyZW50OiBudW1iZXIsIHRvdGFsOiBudW1iZXIpOiBHZW9UYWJsZVBhZ2luYXRpb25QYWdlSXRlbVtdIHtcbiAgICBpZiAodG90YWwgPD0gNSkge1xuICAgICAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IHRvdGFsIH0sIChfLCBpbmRleCkgPT4gaW5kZXggKyAxKTtcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudCA8PSAzKSB7XG4gICAgICByZXR1cm4gWzEsIDIsIDMsICdlbGxpcHNpcycsIHRvdGFsXTtcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudCA+PSB0b3RhbCAtIDIpIHtcbiAgICAgIHJldHVybiBbMSwgJ2VsbGlwc2lzJywgdG90YWwgLSAyLCB0b3RhbCAtIDEsIHRvdGFsXTtcbiAgICB9XG5cbiAgICByZXR1cm4gWzEsICdlbGxpcHNpcycsIGN1cnJlbnQgLSAxLCBjdXJyZW50LCBjdXJyZW50ICsgMSwgJ2VsbGlwc2lzJywgdG90YWxdO1xuICB9XG59XG4iLCJAaWYgKHZpc2libGUpIHtcbiAgPGRpdiBjbGFzcz1cImdlby10YWJsZS1wYWdpbmF0aW9uXCI+XG4gICAgPGRpdiBjbGFzcz1cImdlby10YWJsZS1wYWdpbmF0aW9uX19sZWZ0XCI+XG4gICAgICBAaWYgKHNob3dUb3RhbFJhbmdlKSB7XG4gICAgICAgIDxwIGNsYXNzPVwiZ2VvLXRhYmxlLXBhZ2luYXRpb25fX3RvdGFsXCI+XG4gICAgICAgICAgPHN0cm9uZz57eyByYW5nZVN0YXJ0IH19LXt7IHJhbmdlRW5kIH19PC9zdHJvbmc+IHRyw6puIHThu5VuZyA8c3Ryb25nPnt7IHRvdGFsIH19PC9zdHJvbmc+XG4gICAgICAgIDwvcD5cbiAgICAgIH1cblxuICAgICAgQGlmIChzaG93U2l6ZUNoYW5nZXIpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImdlby10YWJsZS1wYWdpbmF0aW9uX19zaXplXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJnZW8tdGFibGUtcGFnaW5hdGlvbl9fc2l6ZS1sYWJlbFwiPnt7IHNpemVMYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICA8Z2VvLXNlbGVjdFxuICAgICAgICAgICAgY2xhc3M9XCJnZW8tdGFibGUtcGFnaW5hdGlvbl9fc2l6ZS1zZWxlY3RcIlxuICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cInNpemVPcHRpb25zXCJcbiAgICAgICAgICAgIFthbGxvd0NsZWFyXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cInBhZ2VTaXplXCJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgID48L2dlby1zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImdlby10YWJsZS1wYWdpbmF0aW9uX19uYXZcIiByb2xlPVwibmF2aWdhdGlvblwiIGFyaWEtbGFiZWw9XCJQaMOibiB0cmFuZ1wiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJnZW8tdGFibGUtcGFnaW5hdGlvbl9fYnRuXCJcbiAgICAgICAgdGl0bGU9XCJUcmFuZyDEkeG6p3VcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiaXNGaXJzdFBhZ2VcIlxuICAgICAgICAoY2xpY2spPVwiZ29Ub0ZpcnN0KClcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mbGFxdW87PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwiZ2VvLXRhYmxlLXBhZ2luYXRpb25fX2J0blwiXG4gICAgICAgIHRpdGxlPVwiVHJhbmcgdHLGsOG7m2NcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiaXNGaXJzdFBhZ2VcIlxuICAgICAgICAoY2xpY2spPVwiZ29Ub1ByZXYoKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZsc2FxdW87PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIEBmb3IgKHBhZ2Ugb2YgcGFnZXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICBAaWYgKHBhZ2UgPT09ICdlbGxpcHNpcycpIHtcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImdlby10YWJsZS1wYWdpbmF0aW9uX19lbGxpcHNpc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPi4uLjwvc3Bhbj5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImdlby10YWJsZS1wYWdpbmF0aW9uX19idG4gZ2VvLXRhYmxlLXBhZ2luYXRpb25fX2J0bi0tcGFnZVwiXG4gICAgICAgICAgICBbY2xhc3MuZ2VvLXRhYmxlLXBhZ2luYXRpb25fX2J0bi0tYWN0aXZlXT1cInBhZ2UgPT09IHBhZ2VJbmRleFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwicGFnZSA9PT0gcGFnZUluZGV4ID8gJ3BhZ2UnIDogbnVsbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidUcmFuZyAnICsgcGFnZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZ29Ub1BhZ2UocGFnZSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IHBhZ2UgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cImdlby10YWJsZS1wYWdpbmF0aW9uX19idG5cIlxuICAgICAgICB0aXRsZT1cIlRyYW5nIGvhur9cIlxuICAgICAgICBbZGlzYWJsZWRdPVwiaXNMYXN0UGFnZVwiXG4gICAgICAgIChjbGljayk9XCJnb1RvTmV4dCgpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnJzYXF1bzs8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJnZW8tdGFibGUtcGFnaW5hdGlvbl9fYnRuXCJcbiAgICAgICAgdGl0bGU9XCJUcmFuZyBjdeG7kWlcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiaXNMYXN0UGFnZVwiXG4gICAgICAgIChjbGljayk9XCJnb1RvTGFzdCgpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnJhcXVvOzwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbn1cbiJdfQ==
|
|
83
|
+
args: [{ selector: 'geo-table-pagination', standalone: true, imports: [FormsModule, NgZorroAntdModule, GeoSelectComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (visible()) {\n <div class=\"geo-table-pagination\">\n <div class=\"geo-table-pagination__left\">\n @if (showTotalRange()) {\n <p class=\"geo-table-pagination__total\">\n <strong>{{ rangeStart() }}-{{ rangeEnd() }}</strong> tr\u00EAn t\u1ED5ng <strong>{{ total() }}</strong>\n </p>\n }\n\n @if (showSizeChanger()) {\n <div class=\"geo-table-pagination__size\">\n <span class=\"geo-table-pagination__size-label\">{{ sizeLabel() }}</span>\n <geo-select\n class=\"geo-table-pagination__size-select\"\n size=\"small\"\n [options]=\"sizeOptions()\"\n [allowClear]=\"false\"\n [ngModel]=\"pageSize()\"\n (valueChange)=\"onPageSizeChange($event)\"\n ></geo-select>\n </div>\n }\n </div>\n\n <div class=\"geo-table-pagination__nav\" role=\"navigation\" aria-label=\"Ph\u00E2n trang\">\n <button\n type=\"button\"\n class=\"geo-table-pagination__btn\"\n title=\"Trang \u0111\u1EA7u\"\n [disabled]=\"isFirstPage()\"\n (click)=\"goToFirst()\"\n >\n <span aria-hidden=\"true\">«</span>\n </button>\n\n <button\n type=\"button\"\n class=\"geo-table-pagination__btn\"\n title=\"Trang tr\u01B0\u1EDBc\"\n [disabled]=\"isFirstPage()\"\n (click)=\"goToPrev()\"\n >\n <span aria-hidden=\"true\">‹</span>\n </button>\n\n @for (page of pages(); track $index) {\n @if (page === 'ellipsis') {\n <span class=\"geo-table-pagination__ellipsis\" aria-hidden=\"true\">...</span>\n } @else {\n <button\n type=\"button\"\n class=\"geo-table-pagination__btn geo-table-pagination__btn--page\"\n [class.geo-table-pagination__btn--active]=\"page === pageIndex()\"\n [attr.aria-current]=\"page === pageIndex() ? 'page' : null\"\n [attr.aria-label]=\"'Trang ' + page\"\n (click)=\"goToPage(page)\"\n >\n {{ page }}\n </button>\n }\n }\n\n <button\n type=\"button\"\n class=\"geo-table-pagination__btn\"\n title=\"Trang k\u1EBF\"\n [disabled]=\"isLastPage()\"\n (click)=\"goToNext()\"\n >\n <span aria-hidden=\"true\">›</span>\n </button>\n\n <button\n type=\"button\"\n class=\"geo-table-pagination__btn\"\n title=\"Trang cu\u1ED1i\"\n [disabled]=\"isLastPage()\"\n (click)=\"goToLast()\"\n >\n <span aria-hidden=\"true\">»</span>\n </button>\n </div>\n </div>\n}\n", styles: [":host{display:block}.geo-table-pagination{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-top:16px;flex-wrap:wrap}.geo-table-pagination__left{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.geo-table-pagination__total{margin:0;font-size:14px;line-height:20px;color:var(--geo-color-neutral-700);white-space:nowrap}.geo-table-pagination__total strong{color:var(--geo-color-neutral-900);font-weight:600}.geo-table-pagination__size{display:inline-flex;align-items:center;gap:8px}.geo-table-pagination__size-label{font-size:14px;line-height:20px;color:var(--geo-color-neutral-700);white-space:nowrap}.geo-table-pagination__size-select{width:72px}.geo-table-pagination__nav{display:inline-flex;align-items:center;gap:8px;margin-left:auto}.geo-table-pagination__btn{display:inline-flex;align-items:center;justify-content:center;min-width:32px;height:32px;padding:0 8px;border:1px solid var(--geo-color-primary-border);border-radius:var(--geo-radius);background:var(--geo-color-neutral-white);color:var(--geo-color-neutral-900);font-size:14px;line-height:1;cursor:pointer;transition:border-color .15s ease,color .15s ease}.geo-table-pagination__btn:hover:not(:disabled){border-color:var(--geo-color-primary-default);color:var(--geo-color-primary-default)}.geo-table-pagination__btn:disabled{cursor:not-allowed;color:var(--geo-color-neutral-300);border-color:var(--geo-color-primary-border);background:var(--geo-color-neutral-white)}.geo-table-pagination__btn--page{min-width:32px;padding:0;font-weight:400}.geo-table-pagination__btn--active{border-color:var(--geo-color-primary-default)!important;color:var(--geo-color-primary-default)!important;background:var(--geo-color-neutral-white);font-weight:500}.geo-table-pagination__ellipsis{display:inline-flex;align-items:center;justify-content:center;min-width:32px;height:32px;color:var(--geo-color-neutral-900);font-size:14px;letter-spacing:1px;-webkit-user-select:none;user-select:none}\n"] }]
|
|
84
|
+
}] });
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLXRhYmxlLXBhZ2luYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLXRhYmxlL2dlby10YWJsZS1wYWdpbmF0aW9uL2dlby10YWJsZS1wYWdpbmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlby11aS9zcmMvbGliL2ZpZ21hL2dlby10YWJsZS9nZW8tdGFibGUtcGFnaW5hdGlvbi9nZW8tdGFibGUtcGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUUzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7O0FBWXhFLE1BQU0sT0FBTywyQkFBMkI7SUFDN0IsU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQixRQUFRLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JCLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakIsZUFBZSxHQUFHLEtBQUssQ0FBVyxrQ0FBa0MsQ0FBQyxDQUFDO0lBQ3RFLGVBQWUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLGNBQWMsR0FBRyxLQUFL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MkJBQTJCOzRGQUEzQiwyQkFBMkIsNHZDQ2pCeEMsMG9GQW9GQSwyK0REeEVZLFdBQVcsOFZBQUUsaUJBQWlCLCtCQUFFLGtCQUFrQjs7NEZBS2pELDJCQUEyQjtrQkFSdkMsU0FBUzsrQkFDRSxzQkFBc0IsY0FDcEIsSUFBSSxXQUNQLENBQUMsV0FBVyxFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixDQUFDLG1CQUc1Qyx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGlucHV0LCBtb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOZ1pvcnJvQW50ZE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL25nLXpvcnJvL25nLXpvcnJvLWFudGQubW9kdWxlJztcbmltcG9ydCB7IEdlb1NlbGVjdE9wdGlvbiB9IGZyb20gJy4uLy4uL2dlby1zZWxlY3QvZ2VvLXNlbGVjdC50eXBlcyc7XG5pbXBvcnQgeyBHZW9TZWxlY3RDb21wb25lbnQgfSBmcm9tICcuLi8uLi9nZW8tc2VsZWN0L2dlby1zZWxlY3QuY29tcG9uZW50JztcbmltcG9ydCB7IERFRkFVTFRfVUlfVEFCTEVfUEFHRV9TSVpFX09QVElPTlMgfSBmcm9tICcuLi9nZW8tdGFibGUudHlwZXMnO1xuXG5leHBvcnQgdHlwZSBHZW9UYWJsZVBhZ2luYXRpb25QYWdlSXRlbSA9IG51bWJlciB8ICdlbGxpcHNpcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dlby10YWJsZS1wYWdpbmF0aW9uJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0Zvcm1zTW9kdWxlLCBOZ1pvcnJvQW50ZE1vZHVsZSwgR2VvU2VsZWN0Q29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL2dlby10YWJsZS1wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2dlby10YWJsZS1wYWdpbmF0aW9uLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEdlb1RhYmxlUGFnaW5hdGlvbkNvbXBvbmVudCB7XG4gIHJlYWRvbmx5IHBhZ2VJbmRleCA9IG1vZGVsKDEpO1xuICByZWFkb25seSBwYWdlU2l6ZSA9IG1vZGVsKDEwKTtcbiAgcmVhZG9ubHkgdG90YWwgPSBpbnB1dCgwKTtcbiAgcmVhZG9ubHkgcGFnZVNpemVPcHRpb25zID0gaW5wdXQ8bnVtYmVyW10+KERFRkFVTFRfVUlfVEFCTEVfUEFHRV9TSVpFX09QVElPTlMpO1xuICByZWFkb25seSBzaG93U2l6ZUNoYW5nZXIgPSBpbnB1dCh0cnVlKTtcbiAgcmVhZG9ubHkgaGlkZU9uU2luZ2xlUGFnZSA9IGlucHV0KGZhbHNlKTtcbiAgcmVhZG9ubHkgc2hvd1RvdGFsUmFuZ2UgPSBpbnB1dCh0cnVlKTtcbiAgcmVhZG9ubHkgc2l6ZUxhYmVsID0gaW5wdXQoJ0hp4buDbiB0aOG7iycpO1xuXG4gIHJlYWRvbmx5IHJhbmdlU3RhcnQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMudG90YWwoKSA9PT0gMCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgcmV0dXJuICh0aGlzLnBhZ2VJbmRleCgpIC0gMSkgKiB0aGlzLnBhZ2VTaXplKCkgKyAxO1xuICB9KTtcblxuICByZWFkb25seSByYW5nZUVuZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy50b3RhbCgpID09PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gTWF0aC5taW4odGhpcy5wYWdlSW5kZXgoKSAqIHRoaXMucGFnZVNpemUoKSwgdGhpcy50b3RhbCgpKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgdG90YWxQYWdlcyA9IGNvbXB1dGVkKCgpID0+IE1hdGgubWF4KDEsIE1hdGguY2VpbCh0aGlzLnRvdGFsKCkgLyB0aGlzLnBhZ2VTaXplKCkpKSk7XG5cbiAgcmVhZG9ubHkgc2l6ZU9wdGlvbnMgPSBjb21wdXRlZDxHZW9TZWxlY3RPcHRpb248bnVtYmVyPltdPigoKSA9PlxuICAgIHRoaXMucGFnZVNpemVPcHRpb25zKCkubWFwKChzaXplKSA9PiAoe1xuICAgICAgbGFiZWw6IHNpemUudG9TdHJpbmcoKSxcbiAgICAgIHZhbHVlOiBzaXplLFxuICAgIH0pKVxuICApO1xuXG4gIHJlYWRvbmx5IHZpc2libGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuaGlkZU9uU2luZ2xlUGFnZSgpICYmIHRoaXMudG90YWwoKSA8PSB0aGlzLnBhZ2VTaXplKCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50b3RhbCgpID4gMDtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgcGFnZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmJ1aWxkUGFnZUxpc3QodGhpcy5wYWdlSW5kZXgoKSwgdGhpcy50b3RhbFBhZ2VzKCkpKTtcblxuICByZWFkb25seSBpc0ZpcnN0UGFnZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMucGFnZUluZGV4KCkgPD0gMSk7XG5cbiAgcmVhZG9ubHkgaXNMYXN0UGFnZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMucGFnZUluZGV4KCkgPj0gdGhpcy50b3RhbFBhZ2VzKCkpO1xuXG4gIG9uUGFnZVNpemVDaGFuZ2UodmFsdWU6IHN0cmluZyB8IG51bWJlciB8IEFycmF5PHN0cmluZyB8IG51bWJlcj4gfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHRoaXMucGFnZVNpemUuc2V0KHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBnb1RvRmlyc3QoKTogdm9pZCB7XG4gICAgdGhpcy5nb1RvUGFnZSgxKTtcbiAgfVxuXG4gIGdvVG9QcmV2KCk6IHZvaWQge1xuICAgIHRoaXMuZ29Ub1BhZ2UodGhpcy5wYWdlSW5kZXgoKSAtIDEpO1xuICB9XG5cbiAgZ29Ub05leHQoKTogdm9pZCB7XG4gICAgdGhpcy5nb1RvUGFnZSh0aGlzLnBhZ2VJbmRleCgpICsgMSk7XG4gIH1cblxuICBnb1RvTGFzdCgpOiB2b2lkIHtcbiAgICB0aGlzLmdvVG9QYWdlKHRoaXMudG90YWxQYWdlcygpKTtcbiAgfVxuXG4gIGdvVG9QYWdlKHBhZ2U6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG5leHQgPSBNYXRoLm1pbihNYXRoLm1heChwYWdlLCAxKSwgdGhpcy50b3RhbFBhZ2VzKCkpO1xuICAgIGlmIChuZXh0ICE9PSB0aGlzLnBhZ2VJbmRleCgpKSB7XG4gICAgICB0aGlzLnBhZ2VJbmRleC5zZXQobmV4dCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFBhZ2VMaXN0KGN1cnJlbnQ6IG51bWJlciwgdG90YWw6IG51bWJlcik6IEdlb1RhYmxlUGFnaW5hdGlvblBhZ2VJdGVtW10ge1xuICAgIGlmICh0b3RhbCA8PSA1KSB7XG4gICAgICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogdG90YWwgfSwgKF8sIGluZGV4KSA9PiBpbmRleCArIDEpO1xuICAgIH1cblxuICAgIGlmIChjdXJyZW50IDw9IDMpIHtcbiAgICAgIHJldHVybiBbMSwgMiwgMywgJ2VsbGlwc2lzJywgdG90YWxdO1xuICAgIH1cblxuICAgIGlmIChjdXJyZW50ID49IHRvdGFsIC0gMikge1xuICAgICAgcmV0dXJuIFsxLCAnZWxsaXBzaXMnLCB0b3RhbCAtIDIsIHRvdGFsIC0gMSwgdG90YWxdO1xuICAgIH1cblxuICAgIHJldHVybiBbMSwgJ2VsbGlwc2lzJywgY3VycmVudCAtIDEsIGN1cnJlbnQsIGN1cnJlbnQgKyAxLCAnZWxsaXBzaXMnLCB0b3RhbF07XG4gIH1cbn1cbiIsIkBpZiAodmlzaWJsZSgpKSB7XG4gIDxkaXYgY2xhc3M9XCJnZW8tdGFibGUtcGFnaW5hdGlvblwiPlxuICAgIDxkaXYgY2xhc3M9XCJnZW8tdGFibGUtcGFnaW5hdGlvbl9fbGVmdFwiPlxuICAgICAgQGlmIChzaG93VG90YWxSYW5nZSgpKSB7XG4gICAgICAgIDxwIGNsYXNzPVwiZ2VvLXRhYmxlLXBhZ2luYXRpb25fX3RvdGFsXCI+XG4gICAgICAgICAgPHN0cm9uZz57eyByYW5nZVN0YXJ0KCkgfX0te3sgcmFuZ2VFbmQoKSB9fTwvc3Ryb25nPiB0csOqbiB04buVbmcgPHN0cm9uZz57eyB0b3RhbCgpIH19PC9zdHJvbmc+XG4gICAgICAgIDwvcD5cbiAgICAgIH1cblxuICAgICAgQGlmIChzaG93U2l6ZUNoYW5nZXIoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZ2VvLXRhYmxlLXBhZ2luYXRpb25fX3NpemVcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImdlby10YWJsZS1wYWdpbmF0aW9uX19zaXplLWxhYmVsXCI+e3sgc2l6ZUxhYmVsKCkgfX08L3NwYW4+XG4gICAgICAgICAgPGdlby1zZWxlY3RcbiAgICAgICAgICAgIGNsYXNzPVwiZ2VvLXRhYmxlLXBhZ2luYXRpb25fX3NpemUtc2VsZWN0XCJcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICBbb3B0aW9uc109XCJzaXplT3B0aW9ucygpXCJcbiAgICAgICAgICAgIFthbGxvd0NsZWFyXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cInBhZ2VTaXplKClcIlxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgPjwvZ2VvLXNlbGVjdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZ2VvLXRhYmxlLXBhZ2luYXRpb25fX25hdlwiIHJvbGU9XCJuYXZpZ2F0aW9uXCIgYXJpYS1sYWJlbD1cIlBow6JuIHRyYW5nXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cImdlby10YWJsZS1wYWdpbmF0aW9uX19idG5cIlxuICAgICAgICB0aXRsZT1cIlRyYW5nIMSR4bqndVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0ZpcnN0UGFnZSgpXCJcbiAgICAgICAgKGNsaWNrKT1cImdvVG9GaXJzdCgpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JmxhcXVvOzwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cImdlby10YWJsZS1wYWdpbmF0aW9uX19idG5cIlxuICAgICAgICB0aXRsZT1cIlRyYW5nIHRyxrDhu5tjXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzRmlyc3RQYWdlKClcIlxuICAgICAgICAoY2xpY2spPVwiZ29Ub1ByZXYoKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZsc2FxdW87PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIEBmb3IgKHBhZ2Ugb2YgcGFnZXMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIEBpZiAocGFnZSA9PT0gJ2VsbGlwc2lzJykge1xuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ2VvLXRhYmxlLXBhZ2luYXRpb25fX2VsbGlwc2lzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+Li4uPC9zcGFuPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZ2VvLXRhYmxlLXBhZ2luYXRpb25fX2J0biBnZW8tdGFibGUtcGFnaW5hdGlvbl9fYnRuLS1wYWdlXCJcbiAgICAgICAgICAgIFtjbGFzcy5nZW8tdGFibGUtcGFnaW5hdGlvbl9fYnRuLS1hY3RpdmVdPVwicGFnZSA9PT0gcGFnZUluZGV4KClcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cInBhZ2UgPT09IHBhZ2VJbmRleCgpID8gJ3BhZ2UnIDogbnVsbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidUcmFuZyAnICsgcGFnZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZ29Ub1BhZ2UocGFnZSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IHBhZ2UgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cImdlby10YWJsZS1wYWdpbmF0aW9uX19idG5cIlxuICAgICAgICB0aXRsZT1cIlRyYW5nIGvhur9cIlxuICAgICAgICBbZGlzYWJsZWRdPVwiaXNMYXN0UGFnZSgpXCJcbiAgICAgICAgKGNsaWNrKT1cImdvVG9OZXh0KClcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mcnNhcXVvOzwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cImdlby10YWJsZS1wYWdpbmF0aW9uX19idG5cIlxuICAgICAgICB0aXRsZT1cIlRyYW5nIGN14buRaVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0xhc3RQYWdlKClcIlxuICAgICAgICAoY2xpY2spPVwiZ29Ub0xhc3QoKVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZyYXF1bzs8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG59XG4iXX0=
|