@one-paragon/angular-utilities 1.2.12 → 1.2.13
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/action-state/action-state-spinner/action-state-spinner.component.d.ts +12 -0
- package/action-state/action-state-ui/action-state-ui.module.d.ts +7 -0
- package/{src/action-state/index.ts → action-state/index.d.ts} +4 -8
- package/action-state/ngrx-ext/ngrx-ext.module.d.ts +8 -0
- package/action-state/ngrx.d.ts +31 -0
- package/esm2022/action-state/action-state-spinner/action-state-spinner.component.mjs +24 -0
- package/esm2022/action-state/action-state-ui/action-state-ui.module.mjs +20 -0
- package/esm2022/action-state/index.mjs +8 -0
- package/esm2022/action-state/ngrx-ext/ngrx-ext.module.mjs +23 -0
- package/esm2022/action-state/ngrx.mjs +47 -0
- package/esm2022/http-request-state/HttpRequestStateFactory.mjs +51 -0
- package/esm2022/http-request-state/HttpRequestStateStore.mjs +121 -0
- package/esm2022/http-request-state/directives/HttpStateDirectiveBase.mjs +30 -0
- package/esm2022/http-request-state/directives/http-error-state-directive.mjs +23 -0
- package/esm2022/http-request-state/directives/http-inProgress-state-directive.mjs +23 -0
- package/esm2022/http-request-state/directives/http-notStarted-state-directive.mjs +23 -0
- package/esm2022/http-request-state/directives/http-success-state-directive.mjs +29 -0
- package/esm2022/http-request-state/directives/index.mjs +6 -0
- package/esm2022/http-request-state/directives/request-state-directive.mjs +61 -0
- package/esm2022/http-request-state/helpers.mjs +22 -0
- package/esm2022/http-request-state/http-request-state.mjs +39 -0
- package/esm2022/http-request-state/http-state-module.mjs +40 -0
- package/esm2022/http-request-state/index.mjs +7 -0
- package/esm2022/http-request-state/rxjs/getRequestorBody.mjs +4 -0
- package/esm2022/http-request-state/rxjs/getRequestorState.mjs +3 -0
- package/esm2022/http-request-state/rxjs/index.mjs +5 -0
- package/esm2022/http-request-state/rxjs/tapError.mjs +12 -0
- package/esm2022/http-request-state/rxjs/tapSuccess.mjs +12 -0
- package/esm2022/http-request-state/types.mjs +16 -0
- package/esm2022/ngrx/actionable-selector.mjs +71 -0
- package/esm2022/ngrx/index.mjs +2 -0
- package/esm2022/one-paragon-angular-utilities.mjs +5 -0
- package/esm2022/public-api.mjs +20 -0
- package/esm2022/rxjs/defaultShareReplay.mjs +7 -0
- package/esm2022/rxjs/index.mjs +6 -0
- package/esm2022/rxjs/mapError.mjs +8 -0
- package/esm2022/rxjs/rxjs-operators.mjs +92 -0
- package/esm2022/rxjs/subjectifier.mjs +15 -0
- package/esm2022/rxjs/subscriber.directive.mjs +50 -0
- package/esm2022/table-builder/classes/DefaultSettings.mjs +6 -0
- package/esm2022/table-builder/classes/MatTableObservableDataSource.mjs +23 -0
- package/esm2022/table-builder/classes/TableBuilderConfig.mjs +18 -0
- package/esm2022/table-builder/classes/TableBuilderDataSource.mjs +45 -0
- package/esm2022/table-builder/classes/TableState.mjs +49 -0
- package/esm2022/table-builder/classes/data-store.mjs +15 -0
- package/esm2022/table-builder/classes/display-col.mjs +2 -0
- package/esm2022/table-builder/classes/filter-info.mjs +61 -0
- package/esm2022/table-builder/classes/table-builder-general-settings.mjs +112 -0
- package/esm2022/table-builder/classes/table-builder.mjs +77 -0
- package/esm2022/table-builder/classes/table-store.mjs +383 -0
- package/esm2022/table-builder/components/array-column.component.mjs +53 -0
- package/esm2022/table-builder/components/column-builder/column-builder.component.mjs +134 -0
- package/esm2022/table-builder/components/column-builder/column-helpers.mjs +45 -0
- package/esm2022/table-builder/components/date-filter/date-filter.component.mjs +29 -0
- package/esm2022/table-builder/components/date-time-filter/date-time-filter.component.mjs +24 -0
- package/esm2022/table-builder/components/filter/filter.component.mjs +64 -0
- package/esm2022/table-builder/components/filter/in-list/in-list-filter.component.mjs +102 -0
- package/esm2022/table-builder/components/gen-col-displayer/gen-col-displayer.component.mjs +47 -0
- package/esm2022/table-builder/components/generic-table/generic-table.component.mjs +301 -0
- package/esm2022/table-builder/components/generic-table/paginator.component.mjs +100 -0
- package/esm2022/table-builder/components/group-by-list/group-by-list.component.mjs +21 -0
- package/esm2022/table-builder/components/header-menu/header-menu.component.mjs +103 -0
- package/esm2022/table-builder/components/in-filter/in-filter.component.mjs +65 -0
- package/esm2022/table-builder/components/index.mjs +10 -0
- package/esm2022/table-builder/components/initialization-component/initialization-component.mjs +47 -0
- package/esm2022/table-builder/components/link-column.component.mjs +74 -0
- package/esm2022/table-builder/components/number-filter/number-filter.component.mjs +29 -0
- package/esm2022/table-builder/components/profiles-menu/profiles-menu.component.mjs +64 -0
- package/esm2022/table-builder/components/scroll-strategy.mjs +60 -0
- package/esm2022/table-builder/components/sort-menu/sort-menu.component-store.mjs +46 -0
- package/esm2022/table-builder/components/sort-menu/sort-menu.component.mjs +82 -0
- package/esm2022/table-builder/components/table-container/table-container-imports.mjs +26 -0
- package/esm2022/table-builder/components/table-container/table-container.helpers/data-state.helpers.mjs +135 -0
- package/esm2022/table-builder/components/table-container/table-container.helpers/filter-state.helpers.mjs +83 -0
- package/esm2022/table-builder/components/table-container/table-container.helpers/groupBy.helpers.mjs +71 -0
- package/esm2022/table-builder/components/table-container/table-container.helpers/sort-state.helpers.mjs +36 -0
- package/esm2022/table-builder/components/table-container/table-container.mjs +327 -0
- package/esm2022/table-builder/components/table-container/tableProps.mjs +8 -0
- package/esm2022/table-builder/components/table-container/virtual-scroll-container.mjs +151 -0
- package/esm2022/table-builder/components/table-container-filter/filter-list/filter-list.component.mjs +44 -0
- package/esm2022/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.mjs +36 -0
- package/esm2022/table-builder/components/table-container-filter/table-wrapper-filter-store.mjs +25 -0
- package/esm2022/table-builder/directives/custom-cell-directive.mjs +73 -0
- package/esm2022/table-builder/directives/index.mjs +6 -0
- package/esm2022/table-builder/directives/multi-sort.directive.mjs +50 -0
- package/esm2022/table-builder/directives/resize-column.directive.mjs +87 -0
- package/esm2022/table-builder/directives/table-wrapper.directive.mjs +18 -0
- package/esm2022/table-builder/directives/tb-filter.directive.mjs +396 -0
- package/esm2022/table-builder/enums/filterTypes.mjs +29 -0
- package/esm2022/table-builder/functions/boolean-filter-function.mjs +10 -0
- package/esm2022/table-builder/functions/date-filter-function.mjs +58 -0
- package/esm2022/table-builder/functions/download-data.mjs +12 -0
- package/esm2022/table-builder/functions/null-filter-function.mjs +8 -0
- package/esm2022/table-builder/functions/number-filter-function.mjs +32 -0
- package/esm2022/table-builder/functions/sort-data-function.mjs +17 -0
- package/esm2022/table-builder/functions/string-filter-function.mjs +41 -0
- package/esm2022/table-builder/interfaces/ColumnInfo.mjs +2 -0
- package/esm2022/table-builder/interfaces/dictionary.mjs +2 -0
- package/esm2022/table-builder/interfaces/report-def.mjs +50 -0
- package/esm2022/table-builder/ngrx/tableBuilderStateStore.mjs +154 -0
- package/esm2022/table-builder/pipes/column-total.pipe.mjs +22 -0
- package/esm2022/table-builder/pipes/format-filter-type.pipe.mjs +18 -0
- package/esm2022/table-builder/pipes/format-filter-value.pipe.mjs +43 -0
- package/esm2022/table-builder/pipes/key-display.mjs +18 -0
- package/esm2022/table-builder/services/export-to-csv.service.mjs +75 -0
- package/esm2022/table-builder/services/link-creator.service.mjs +50 -0
- package/esm2022/table-builder/services/table-template-service.mjs +60 -0
- package/esm2022/table-builder/services/transform-creator.mjs +100 -0
- package/esm2022/table-builder/table-builder.module.mjs +124 -0
- package/esm2022/utilities/array-helpers.mjs +14 -0
- package/esm2022/utilities/directives/auto-focus.directive.mjs +25 -0
- package/esm2022/utilities/directives/clickEmitterDirective.mjs +22 -0
- package/esm2022/utilities/directives/clickSubject.mjs +29 -0
- package/esm2022/utilities/directives/conditional-classes.directive.mjs +36 -0
- package/esm2022/utilities/directives/dialog-service.mjs +21 -0
- package/esm2022/utilities/directives/dialog.mjs +145 -0
- package/esm2022/utilities/directives/mat-toggle-group-directive.mjs +59 -0
- package/esm2022/utilities/directives/prevent-enter.directive.mjs +20 -0
- package/esm2022/utilities/directives/stop-propagation.directive.mjs +26 -0
- package/esm2022/utilities/directives/styler.mjs +41 -0
- package/esm2022/utilities/directives/trim-whitespace.directive.mjs +28 -0
- package/esm2022/utilities/index.mjs +16 -0
- package/esm2022/utilities/module.mjs +90 -0
- package/esm2022/utilities/pipes/function.pipe.mjs +22 -0
- package/esm2022/utilities/pipes/phone.pipe.mjs +20 -0
- package/esm2022/utilities/pipes/space-case.pipes.mjs +28 -0
- package/fesm2022/one-paragon-angular-utilities.mjs +5670 -0
- package/fesm2022/one-paragon-angular-utilities.mjs.map +1 -0
- package/http-request-state/HttpRequestStateFactory.d.ts +17 -0
- package/http-request-state/HttpRequestStateStore.d.ts +54 -0
- package/http-request-state/directives/HttpStateDirectiveBase.d.ts +14 -0
- package/http-request-state/directives/http-error-state-directive.d.ts +9 -0
- package/http-request-state/directives/http-inProgress-state-directive.d.ts +9 -0
- package/http-request-state/directives/http-notStarted-state-directive.d.ts +9 -0
- package/http-request-state/directives/http-success-state-directive.d.ts +16 -0
- package/{src/http-request-state/directives/index.ts → http-request-state/directives/index.d.ts} +5 -5
- package/http-request-state/directives/request-state-directive.d.ts +34 -0
- package/http-request-state/helpers.d.ts +9 -0
- package/http-request-state/http-request-state.d.ts +12 -0
- package/http-request-state/http-state-module.d.ts +11 -0
- package/{src/http-request-state/index.ts → http-request-state/index.d.ts} +6 -6
- package/http-request-state/rxjs/getRequestorBody.d.ts +3 -0
- package/http-request-state/rxjs/getRequestorState.d.ts +3 -0
- package/{src/http-request-state/rxjs/index.ts → http-request-state/rxjs/index.d.ts} +4 -4
- package/http-request-state/rxjs/tapError.d.ts +3 -0
- package/http-request-state/rxjs/tapSuccess.d.ts +3 -0
- package/http-request-state/types.d.ts +41 -0
- package/index.d.ts +5 -0
- package/ngrx/actionable-selector.d.ts +17 -0
- package/ngrx/index.d.ts +1 -0
- package/package.json +30 -16
- package/{src/public-api.ts → public-api.d.ts} +16 -35
- package/rxjs/defaultShareReplay.d.ts +2 -0
- package/{src/rxjs/index.ts → rxjs/index.d.ts} +5 -5
- package/rxjs/mapError.d.ts +2 -0
- package/rxjs/rxjs-operators.d.ts +13 -0
- package/rxjs/subjectifier.d.ts +8 -0
- package/rxjs/subscriber.directive.d.ts +14 -0
- package/table-builder/classes/DefaultSettings.d.ts +9 -0
- package/table-builder/classes/MatTableObservableDataSource.d.ts +9 -0
- package/table-builder/classes/TableBuilderConfig.d.ts +21 -0
- package/table-builder/classes/TableBuilderDataSource.d.ts +12 -0
- package/table-builder/classes/TableState.d.ts +67 -0
- package/table-builder/classes/data-store.d.ts +8 -0
- package/{src/table-builder/classes/display-col.ts → table-builder/classes/display-col.d.ts} +5 -5
- package/table-builder/classes/filter-info.d.ts +35 -0
- package/table-builder/classes/table-builder-general-settings.d.ts +78 -0
- package/table-builder/classes/table-builder.d.ts +18 -0
- package/table-builder/classes/table-store.d.ts +138 -0
- package/table-builder/components/array-column.component.d.ts +15 -0
- package/table-builder/components/column-builder/column-builder.component.d.ts +47 -0
- package/table-builder/components/column-builder/column-helpers.d.ts +36 -0
- package/table-builder/components/date-filter/date-filter.component.d.ts +37 -0
- package/table-builder/components/date-time-filter/date-time-filter.component.d.ts +37 -0
- package/table-builder/components/filter/filter.component.d.ts +46 -0
- package/table-builder/components/filter/in-list/in-list-filter.component.d.ts +24 -0
- package/table-builder/components/gen-col-displayer/gen-col-displayer.component.d.ts +17 -0
- package/table-builder/components/generic-table/generic-table.component.d.ts +83 -0
- package/table-builder/components/generic-table/paginator.component.d.ts +30 -0
- package/table-builder/components/group-by-list/group-by-list.component.d.ts +7 -0
- package/table-builder/components/header-menu/header-menu.component.d.ts +51 -0
- package/table-builder/components/in-filter/in-filter.component.d.ts +20 -0
- package/{src/table-builder/components/index.ts → table-builder/components/index.d.ts} +9 -9
- package/table-builder/components/initialization-component/initialization-component.d.ts +13 -0
- package/table-builder/components/link-column.component.d.ts +25 -0
- package/table-builder/components/number-filter/number-filter.component.d.ts +39 -0
- package/table-builder/components/profiles-menu/profiles-menu.component.d.ts +32 -0
- package/table-builder/components/scroll-strategy.d.ts +22 -0
- package/table-builder/components/sort-menu/sort-menu.component-store.d.ts +24 -0
- package/table-builder/components/sort-menu/sort-menu.component.d.ts +24 -0
- package/{src/table-builder/components/table-container/table-container-imports.ts → table-builder/components/table-container/table-container-imports.d.ts} +14 -32
- package/table-builder/components/table-container/table-container.d.ts +79 -0
- package/table-builder/components/table-container/table-container.helpers/data-state.helpers.d.ts +6 -0
- package/table-builder/components/table-container/table-container.helpers/filter-state.helpers.d.ts +17 -0
- package/table-builder/components/table-container/table-container.helpers/groupBy.helpers.d.ts +17 -0
- package/table-builder/components/table-container/table-container.helpers/sort-state.helpers.d.ts +8 -0
- package/table-builder/components/table-container/tableProps.d.ts +12 -0
- package/table-builder/components/table-container/virtual-scroll-container.d.ts +35 -0
- package/table-builder/components/table-container-filter/filter-list/filter-list.component.d.ts +15 -0
- package/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.d.ts +12 -0
- package/table-builder/components/table-container-filter/table-wrapper-filter-store.d.ts +14 -0
- package/table-builder/directives/custom-cell-directive.d.ts +33 -0
- package/{src/table-builder/directives/index.ts → table-builder/directives/index.d.ts} +5 -6
- package/table-builder/directives/multi-sort.directive.d.ts +10 -0
- package/table-builder/directives/resize-column.directive.d.ts +43 -0
- package/table-builder/directives/table-wrapper.directive.d.ts +8 -0
- package/table-builder/directives/tb-filter.directive.d.ts +115 -0
- package/table-builder/enums/filterTypes.d.ts +36 -0
- package/table-builder/functions/boolean-filter-function.d.ts +3 -0
- package/table-builder/functions/date-filter-function.d.ts +4 -0
- package/table-builder/functions/download-data.d.ts +1 -0
- package/table-builder/functions/null-filter-function.d.ts +2 -0
- package/table-builder/functions/number-filter-function.d.ts +4 -0
- package/table-builder/functions/sort-data-function.d.ts +6 -0
- package/table-builder/functions/string-filter-function.d.ts +5 -0
- package/{src/table-builder/interfaces/ColumnInfo.ts → table-builder/interfaces/ColumnInfo.d.ts} +6 -7
- package/{src/table-builder/interfaces/dictionary.ts → table-builder/interfaces/dictionary.d.ts} +3 -3
- package/table-builder/interfaces/report-def.d.ts +147 -0
- package/table-builder/ngrx/tableBuilderStateStore.d.ts +70 -0
- package/table-builder/pipes/column-total.pipe.d.ts +8 -0
- package/table-builder/pipes/format-filter-type.pipe.d.ts +8 -0
- package/table-builder/pipes/format-filter-value.pipe.d.ts +12 -0
- package/table-builder/pipes/key-display.d.ts +10 -0
- package/table-builder/services/export-to-csv.service.d.ts +14 -0
- package/table-builder/services/link-creator.service.d.ts +16 -0
- package/table-builder/services/table-template-service.d.ts +14 -0
- package/table-builder/services/transform-creator.d.ts +16 -0
- package/table-builder/table-builder.module.d.ts +21 -0
- package/utilities/array-helpers.d.ts +1 -0
- package/utilities/directives/auto-focus.directive.d.ts +9 -0
- package/utilities/directives/clickEmitterDirective.d.ts +7 -0
- package/utilities/directives/clickSubject.d.ts +9 -0
- package/utilities/directives/conditional-classes.directive.d.ts +13 -0
- package/utilities/directives/dialog-service.d.ts +10 -0
- package/utilities/directives/dialog.d.ts +44 -0
- package/utilities/directives/mat-toggle-group-directive.d.ts +21 -0
- package/utilities/directives/prevent-enter.directive.d.ts +6 -0
- package/utilities/directives/stop-propagation.directive.d.ts +7 -0
- package/utilities/directives/styler.d.ts +15 -0
- package/utilities/directives/trim-whitespace.directive.d.ts +7 -0
- package/{src/utilities/index.ts → utilities/index.d.ts} +15 -22
- package/utilities/module.d.ts +19 -0
- package/utilities/pipes/function.pipe.d.ts +7 -0
- package/utilities/pipes/phone.pipe.d.ts +7 -0
- package/utilities/pipes/space-case.pipes.d.ts +17 -0
- package/karma.conf.js +0 -44
- package/ng-package.json +0 -7
- package/src/action-state/action-state-spinner/action-state-spinner.component.css +0 -16
- package/src/action-state/action-state-spinner/action-state-spinner.component.html +0 -6
- package/src/action-state/action-state-spinner/action-state-spinner.component.spec.ts +0 -25
- package/src/action-state/action-state-spinner/action-state-spinner.component.ts +0 -26
- package/src/action-state/action-state-ui/action-state-ui.module.ts +0 -13
- package/src/action-state/ngrx-ext/ngrx-ext.module.ts +0 -15
- package/src/action-state/ngrx.ts +0 -69
- package/src/http-request-state/HttpRequestStateFactory.ts +0 -66
- package/src/http-request-state/HttpRequestStateStore.ts +0 -173
- package/src/http-request-state/directives/HttpStateDirectiveBase.ts +0 -29
- package/src/http-request-state/directives/http-error-state-directive.ts +0 -21
- package/src/http-request-state/directives/http-inProgress-state-directive.ts +0 -19
- package/src/http-request-state/directives/http-notStarted-state-directive.ts +0 -19
- package/src/http-request-state/directives/http-success-state-directive.ts +0 -29
- package/src/http-request-state/directives/request-state-directive.spec.ts +0 -72
- package/src/http-request-state/directives/request-state-directive.ts +0 -78
- package/src/http-request-state/helpers.ts +0 -30
- package/src/http-request-state/http-request-state.ts +0 -69
- package/src/http-request-state/http-state-module.ts +0 -23
- package/src/http-request-state/observable.spec.ts +0 -43
- package/src/http-request-state/rxjs/getRequestorBody.ts +0 -10
- package/src/http-request-state/rxjs/getRequestorState.ts +0 -8
- package/src/http-request-state/rxjs/tapError.ts +0 -16
- package/src/http-request-state/rxjs/tapSuccess.ts +0 -16
- package/src/http-request-state/strategies.spec.ts +0 -42
- package/src/http-request-state/types.ts +0 -55
- package/src/ngrx/actionable-selector.ts +0 -95
- package/src/ngrx/index.ts +0 -1
- package/src/rxjs/defaultShareReplay.ts +0 -8
- package/src/rxjs/mapError.ts +0 -8
- package/src/rxjs/rxjs-operators.ts +0 -132
- package/src/rxjs/subjectifier.ts +0 -17
- package/src/rxjs/subscriber.directive.ts +0 -57
- package/src/specs/clickSubject.spec.ts +0 -95
- package/src/specs/dialog.spec.ts +0 -101
- package/src/specs/toggleGroupDirective.spec.ts +0 -229
- package/src/table-builder/classes/DefaultSettings.ts +0 -11
- package/src/table-builder/classes/MatTableObservableDataSource.ts +0 -23
- package/src/table-builder/classes/TableBuilderConfig.ts +0 -35
- package/src/table-builder/classes/TableBuilderDataSource.ts +0 -80
- package/src/table-builder/classes/TableState.ts +0 -96
- package/src/table-builder/classes/data-store.ts +0 -10
- package/src/table-builder/classes/filter-info.ts +0 -108
- package/src/table-builder/classes/table-builder-general-settings.ts +0 -129
- package/src/table-builder/classes/table-builder.ts +0 -94
- package/src/table-builder/classes/table-store.ts +0 -471
- package/src/table-builder/components/array-column.component.ts +0 -36
- package/src/table-builder/components/column-builder/column-builder.component.html +0 -61
- package/src/table-builder/components/column-builder/column-builder.component.scss +0 -43
- package/src/table-builder/components/column-builder/column-builder.component.spec.ts +0 -49
- package/src/table-builder/components/column-builder/column-builder.component.ts +0 -135
- package/src/table-builder/components/column-builder/column-helpers.ts +0 -53
- package/src/table-builder/components/date-filter/date-filter.component.html +0 -23
- package/src/table-builder/components/date-filter/date-filter.component.ts +0 -24
- package/src/table-builder/components/date-time-filter/date-time-filter.component.html +0 -9
- package/src/table-builder/components/date-time-filter/date-time-filter.component.ts +0 -22
- package/src/table-builder/components/filter/filter.component.html +0 -91
- package/src/table-builder/components/filter/filter.component.scss +0 -64
- package/src/table-builder/components/filter/filter.component.spec.ts +0 -87
- package/src/table-builder/components/filter/filter.component.ts +0 -60
- package/src/table-builder/components/filter/in-list/in-list-filter.component.ts +0 -93
- package/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.html +0 -55
- package/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.scss +0 -57
- package/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.ts +0 -59
- package/src/table-builder/components/generic-table/generic-table.component.html +0 -78
- package/src/table-builder/components/generic-table/generic-table.component.scss +0 -42
- package/src/table-builder/components/generic-table/generic-table.component.ts +0 -299
- package/src/table-builder/components/generic-table/paginator.component.ts +0 -99
- package/src/table-builder/components/group-by-list/group-by-list.component.css +0 -8
- package/src/table-builder/components/group-by-list/group-by-list.component.html +0 -12
- package/src/table-builder/components/group-by-list/group-by-list.component.spec.ts +0 -23
- package/src/table-builder/components/group-by-list/group-by-list.component.ts +0 -21
- package/src/table-builder/components/header-menu/header-menu.component.html +0 -104
- package/src/table-builder/components/header-menu/header-menu.component.scss +0 -96
- package/src/table-builder/components/header-menu/header-menu.component.ts +0 -99
- package/src/table-builder/components/in-filter/in-filter.component.css +0 -3
- package/src/table-builder/components/in-filter/in-filter.component.html +0 -20
- package/src/table-builder/components/in-filter/in-filter.component.ts +0 -66
- package/src/table-builder/components/initialization-component/initialization-component.html +0 -29
- package/src/table-builder/components/initialization-component/initialization-component.ts +0 -24
- package/src/table-builder/components/link-column.component.ts +0 -47
- package/src/table-builder/components/number-filter/number-filter.component.css +0 -10
- package/src/table-builder/components/number-filter/number-filter.component.html +0 -19
- package/src/table-builder/components/number-filter/number-filter.component.spec.ts +0 -30
- package/src/table-builder/components/number-filter/number-filter.component.ts +0 -25
- package/src/table-builder/components/profiles-menu/profiles-menu.component.html +0 -74
- package/src/table-builder/components/profiles-menu/profiles-menu.component.scss +0 -98
- package/src/table-builder/components/profiles-menu/profiles-menu.component.spec.ts +0 -23
- package/src/table-builder/components/profiles-menu/profiles-menu.component.ts +0 -65
- package/src/table-builder/components/scroll-strategy.ts +0 -76
- package/src/table-builder/components/sort-menu/sort-menu.component-store.ts +0 -66
- package/src/table-builder/components/sort-menu/sort-menu.component.html +0 -111
- package/src/table-builder/components/sort-menu/sort-menu.component.scss +0 -119
- package/src/table-builder/components/sort-menu/sort-menu.component.ts +0 -98
- package/src/table-builder/components/table-container/table-container.css +0 -54
- package/src/table-builder/components/table-container/table-container.helpers/data-state.helpers.ts +0 -141
- package/src/table-builder/components/table-container/table-container.helpers/filter-state.helpers.ts +0 -106
- package/src/table-builder/components/table-container/table-container.helpers/groupBy.helpers.ts +0 -86
- package/src/table-builder/components/table-container/table-container.helpers/sort-state.helpers.ts +0 -45
- package/src/table-builder/components/table-container/table-container.html +0 -95
- package/src/table-builder/components/table-container/table-container.spec.ts +0 -154
- package/src/table-builder/components/table-container/table-container.ts +0 -356
- package/src/table-builder/components/table-container/tableProps.ts +0 -20
- package/src/table-builder/components/table-container/virtual-scroll-container.ts +0 -145
- package/src/table-builder/components/table-container-filter/filter-list/filter-list.component.html +0 -31
- package/src/table-builder/components/table-container-filter/filter-list/filter-list.component.ts +0 -46
- package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.css +0 -42
- package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.html +0 -10
- package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.spec.ts +0 -86
- package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.ts +0 -34
- package/src/table-builder/components/table-container-filter/table-wrapper-filter-store.ts +0 -23
- package/src/table-builder/directives/custom-cell-directive.ts +0 -58
- package/src/table-builder/directives/multi-sort.directive.spec.ts +0 -124
- package/src/table-builder/directives/multi-sort.directive.ts +0 -51
- package/src/table-builder/directives/resize-column.directive.ts +0 -108
- package/src/table-builder/directives/table-wrapper.directive.ts +0 -14
- package/src/table-builder/directives/tb-filter.directive.ts +0 -396
- package/src/table-builder/enums/filterTypes.ts +0 -40
- package/src/table-builder/functions/boolean-filter-function.ts +0 -12
- package/src/table-builder/functions/date-filter-function.ts +0 -68
- package/src/table-builder/functions/download-data.ts +0 -11
- package/src/table-builder/functions/null-filter-function.ts +0 -9
- package/src/table-builder/functions/number-filter-function.ts +0 -41
- package/src/table-builder/functions/sort-data-function.ts +0 -23
- package/src/table-builder/functions/string-filter-function.ts +0 -51
- package/src/table-builder/interfaces/column-template.ts +0 -9
- package/src/table-builder/interfaces/report-def.ts +0 -155
- package/src/table-builder/ngrx/tableBuilderStateStore.ts +0 -199
- package/src/table-builder/pipes/column-total.pipe.ts +0 -17
- package/src/table-builder/pipes/format-filter-type.pipe.ts +0 -12
- package/src/table-builder/pipes/format-filter-value.pipe.ts +0 -42
- package/src/table-builder/pipes/key-display.ts +0 -16
- package/src/table-builder/services/export-to-csv.service.ts +0 -97
- package/src/table-builder/services/link-creator.service.ts +0 -67
- package/src/table-builder/services/table-template-service.ts +0 -59
- package/src/table-builder/services/transform-creator.ts +0 -95
- package/src/table-builder/specs/table-custom-filters.spec.ts +0 -262
- package/src/table-builder/styles/collapser.styles.scss +0 -16
- package/src/table-builder/table-builder.module.ts +0 -73
- package/src/test.ts +0 -17
- package/src/utilities/array-helpers.ts +0 -13
- package/src/utilities/directives/auto-focus.directive.ts +0 -21
- package/src/utilities/directives/clickEmitterDirective.ts +0 -16
- package/src/utilities/directives/clickSubject.ts +0 -20
- package/src/utilities/directives/conditional-classes.directive.ts +0 -36
- package/src/utilities/directives/dialog-service.ts +0 -19
- package/src/utilities/directives/dialog.ts +0 -144
- package/src/utilities/directives/mat-toggle-group-directive.ts +0 -61
- package/src/utilities/directives/prevent-enter.directive.ts +0 -13
- package/src/utilities/directives/stop-propagation.directive.ts +0 -20
- package/src/utilities/directives/styler.ts +0 -40
- package/src/utilities/directives/trim-whitespace.directive.ts +0 -21
- package/src/utilities/module.ts +0 -55
- package/src/utilities/pipes/function.pipe.ts +0 -16
- package/src/utilities/pipes/phone.pipe.ts +0 -15
- package/src/utilities/pipes/space-case.pipes.spec.ts +0 -47
- package/src/utilities/pipes/space-case.pipes.ts +0 -23
- package/tsconfig.lib.json +0 -19
- package/tsconfig.lib.prod.json +0 -10
- package/tsconfig.spec.json +0 -17
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, effect, forwardRef, untracked, viewChild, inject, computed } from '@angular/core';
|
|
2
|
+
import { CdkVirtualScrollViewport, ScrollingModule, VIRTUAL_SCROLL_STRATEGY, } from '@angular/cdk/scrolling';
|
|
3
|
+
import { switchMap } from 'rxjs';
|
|
4
|
+
import { notNull, subscriber } from '../../../rxjs';
|
|
5
|
+
import { TableStore } from '../../classes/table-store';
|
|
6
|
+
import { TableVirtualScrollStrategy } from '../scroll-strategy';
|
|
7
|
+
import { VirtualScrollOptions } from '../../classes/table-builder-general-settings';
|
|
8
|
+
import { DataStore } from '../../classes/data-store';
|
|
9
|
+
import { toObservable, toSignal } from '@angular/core/rxjs-interop';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "@angular/cdk/scrolling";
|
|
12
|
+
export class VirtualScrollContainer {
|
|
13
|
+
state = inject(TableStore);
|
|
14
|
+
dataStore = inject(DataStore);
|
|
15
|
+
viewport = viewChild(CdkVirtualScrollViewport);
|
|
16
|
+
defaultOptions = new VirtualScrollOptions();
|
|
17
|
+
scrollStrategy = new TableVirtualScrollStrategy(this.computedRowHeight(), this.computedHeaderHeight());
|
|
18
|
+
$usePaginator = this.state.selectSignal(s => s.notPersistedTableSettings.usePaginator);
|
|
19
|
+
$pageSize = this.state.$pageSize;
|
|
20
|
+
$currentPage = this.state.$currentPage;
|
|
21
|
+
$showAll = this.state.selectSignal(s => s.showAll);
|
|
22
|
+
$stateDataLength = this.dataStore.selectSignal(s => s.dataLen);
|
|
23
|
+
$dataLength = computed(() => {
|
|
24
|
+
const paginated = this.$usePaginator() && !this.$showAll();
|
|
25
|
+
const pageSize = this.$pageSize();
|
|
26
|
+
const pageNumber = this.$currentPage();
|
|
27
|
+
const dataLen = this.$stateDataLength();
|
|
28
|
+
if (paginated)
|
|
29
|
+
return Math.min(dataLen - (pageNumber * pageSize), pageSize);
|
|
30
|
+
return dataLen;
|
|
31
|
+
});
|
|
32
|
+
constructor() {
|
|
33
|
+
addEventListener('resize', this.resizeHandler);
|
|
34
|
+
}
|
|
35
|
+
setViewportEffect = effect(() => {
|
|
36
|
+
const viewport = this.viewport();
|
|
37
|
+
untracked(() => {
|
|
38
|
+
if (!!viewport) {
|
|
39
|
+
this.setSize(this.viewport().elementRef);
|
|
40
|
+
}
|
|
41
|
+
;
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
subscriber = subscriber();
|
|
45
|
+
onRenderedRangeEffect = effect(() => {
|
|
46
|
+
const renderedRange = this.$renderedRange();
|
|
47
|
+
if (!renderedRange)
|
|
48
|
+
return;
|
|
49
|
+
untracked(() => {
|
|
50
|
+
this.dataStore.patchState({
|
|
51
|
+
virtualEnds: {
|
|
52
|
+
start: renderedRange.start,
|
|
53
|
+
end: renderedRange.end + 25,
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
this.setSize(this.viewport().elementRef);
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
onDataLengthEffect = effect(() => {
|
|
60
|
+
const dataLength = this.$dataLength();
|
|
61
|
+
untracked(() => {
|
|
62
|
+
this.scrollStrategy.setDataLength(dataLength);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
onOffsetEffect = effect(() => {
|
|
66
|
+
const offset = this.$offset();
|
|
67
|
+
untracked(() => {
|
|
68
|
+
this.dataStore.patchState({ virtualScrollOffset: offset });
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
viewPort$ = toObservable(this.viewport).pipe(notNull());
|
|
72
|
+
$scrolledIndexChange = toSignal(this.viewPort$.pipe(switchMap(v => v.scrolledIndexChange)));
|
|
73
|
+
$renderedRange = toSignal(this.viewPort$.pipe(switchMap(v => v.renderedRangeStream)));
|
|
74
|
+
$offset = computed(() => {
|
|
75
|
+
const viewport = this.viewport();
|
|
76
|
+
const scrolledIndexChange = this.$scrolledIndexChange();
|
|
77
|
+
if (!scrolledIndexChange || !viewport)
|
|
78
|
+
return 0;
|
|
79
|
+
return viewport.getOffsetToRenderedContentStart() ?? 0;
|
|
80
|
+
});
|
|
81
|
+
ngOnDestroy() {
|
|
82
|
+
removeEventListener('resize', this.resizeHandler);
|
|
83
|
+
}
|
|
84
|
+
setSize(el) {
|
|
85
|
+
const vsViewport = el.nativeElement;
|
|
86
|
+
const virtualScrollOptions = this.state.tableSettings().useVirtualScroll;
|
|
87
|
+
const rowHeight = this.computedRowHeight();
|
|
88
|
+
let amountOfVisibleItems = virtualScrollOptions?.amountOfVisibleItems || this.defaultOptions.amountOfVisibleItems;
|
|
89
|
+
virtualScrollOptions?.amountOfVisibleItems || this.defaultOptions.amountOfVisibleItems;
|
|
90
|
+
let height = (rowHeight * amountOfVisibleItems);
|
|
91
|
+
if (!this.state.tableSettings().hideHeader) {
|
|
92
|
+
const headerHeight = this.computedHeaderHeight();
|
|
93
|
+
height += headerHeight;
|
|
94
|
+
}
|
|
95
|
+
if (virtualScrollOptions?.maxViewPortHeight && virtualScrollOptions.maxViewPortHeight < height)
|
|
96
|
+
height = virtualScrollOptions.maxViewPortHeight;
|
|
97
|
+
vsViewport.setAttribute('style', `height: ${height}px !important;`);
|
|
98
|
+
this.viewport()?.checkViewportSize();
|
|
99
|
+
const virtualScrollOffset = this.viewport()?.getOffsetToRenderedContentStart() ?? 0;
|
|
100
|
+
this.dataStore.patchState({ virtualScrollOffset });
|
|
101
|
+
}
|
|
102
|
+
resizeHandler = () => {
|
|
103
|
+
if (this.viewport()) {
|
|
104
|
+
this.setSize(this.viewport().elementRef);
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
computedRowHeight() {
|
|
108
|
+
const virtualScrollOptions = this.state.tableSettings().useVirtualScroll;
|
|
109
|
+
const rowHeight = virtualScrollOptions?.rowHeight || (typeof this.state.tableSettings().rowHeight === 'number' && this.state.tableSettings().rowHeight) || this.defaultOptions.rowHeight;
|
|
110
|
+
return rowHeight;
|
|
111
|
+
}
|
|
112
|
+
computedHeaderHeight() {
|
|
113
|
+
const virtualScrollOptions = this.state.tableSettings().useVirtualScroll;
|
|
114
|
+
const headerHeight = virtualScrollOptions?.headerHeight || (typeof this.state.tableSettings().headerHeight === 'number' && this.state.tableSettings().headerHeight) || this.defaultOptions.headerHeight;
|
|
115
|
+
return headerHeight;
|
|
116
|
+
}
|
|
117
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: VirtualScrollContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
118
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.2", type: VirtualScrollContainer, isStandalone: true, selector: "tb-virtual-scroll-container", viewQueries: [{ propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
119
|
+
<cdk-virtual-scroll-viewport>
|
|
120
|
+
<ng-content/>
|
|
121
|
+
</cdk-virtual-scroll-viewport>
|
|
122
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: ScrollingModule }, { kind: "component", type: i1.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }], viewProviders: [
|
|
123
|
+
{
|
|
124
|
+
provide: VIRTUAL_SCROLL_STRATEGY,
|
|
125
|
+
useFactory: (c) => c.scrollStrategy,
|
|
126
|
+
deps: [forwardRef(() => VirtualScrollContainer)],
|
|
127
|
+
},
|
|
128
|
+
], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
129
|
+
}
|
|
130
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: VirtualScrollContainer, decorators: [{
|
|
131
|
+
type: Component,
|
|
132
|
+
args: [{
|
|
133
|
+
selector: 'tb-virtual-scroll-container',
|
|
134
|
+
template: `
|
|
135
|
+
<cdk-virtual-scroll-viewport>
|
|
136
|
+
<ng-content/>
|
|
137
|
+
</cdk-virtual-scroll-viewport>
|
|
138
|
+
`,
|
|
139
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
140
|
+
standalone: true,
|
|
141
|
+
imports: [ScrollingModule],
|
|
142
|
+
viewProviders: [
|
|
143
|
+
{
|
|
144
|
+
provide: VIRTUAL_SCROLL_STRATEGY,
|
|
145
|
+
useFactory: (c) => c.scrollStrategy,
|
|
146
|
+
deps: [forwardRef(() => VirtualScrollContainer)],
|
|
147
|
+
},
|
|
148
|
+
],
|
|
149
|
+
}]
|
|
150
|
+
}], ctorParameters: () => [] });
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbC1zY3JvbGwtY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy90YWJsZS1jb250YWluZXIvdmlydHVhbC1zY3JvbGwtY29udGFpbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQXlCLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RKLE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsZUFBZSxFQUNmLHVCQUF1QixHQUN4QixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFvQnBFLE1BQU0sT0FBTyxzQkFBc0I7SUFDekIsS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzQixTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRXRDLFFBQVEsR0FBRyxTQUFTLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUUvQyxjQUFjLEdBQUcsSUFBSSxvQkFB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QUF5QixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYztnQkFDM0QsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixDQUFDLENBQUM7YUFDakQ7U0FDRjs7MkZBRVUsc0JBQXNCO2tCQWxCbEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsNkJBQTZCO29CQUN2QyxRQUFRLEVBQUU7Ozs7S0FJUDtvQkFDSCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLGVBQWUsQ0FBQztvQkFDMUIsYUFBYSxFQUFFO3dCQUNiOzRCQUNFLE9BQU8sRUFBRSx1QkFBdUI7NEJBQ2hDLFVBQVUsRUFBRSxDQUFDLENBQXlCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxjQUFjOzRCQUMzRCxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLHVCQUF1QixDQUFDLENBQUM7eUJBQ2pEO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBlZmZlY3QsIGZvcndhcmRSZWYsIHVudHJhY2tlZCwgdmlld0NoaWxkLCBpbmplY3QsIGNvbXB1dGVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LFxyXG4gIFNjcm9sbGluZ01vZHVsZSxcclxuICBWSVJUVUFMX1NDUk9MTF9TVFJBVEVHWSxcclxufSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcclxuaW1wb3J0IHsgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG5vdE51bGwsIHN1YnNjcmliZXIgfSBmcm9tICcuLi8uLi8uLi9yeGpzJztcclxuaW1wb3J0IHsgVGFibGVTdG9yZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvdGFibGUtc3RvcmUnO1xyXG5pbXBvcnQgeyBUYWJsZVZpcnR1YWxTY3JvbGxTdHJhdGVneSB9IGZyb20gJy4uL3Njcm9sbC1zdHJhdGVneSc7XHJcbmltcG9ydCB7IFZpcnR1YWxTY3JvbGxPcHRpb25zIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy90YWJsZS1idWlsZGVyLWdlbmVyYWwtc2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBEYXRhU3RvcmUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2RhdGEtc3RvcmUnO1xyXG5pbXBvcnQgeyB0b09ic2VydmFibGUsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0Yi12aXJ0dWFsLXNjcm9sbC1jb250YWluZXInLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxyXG4gICAgICA8bmctY29udGVudC8+XHJcbiAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cclxuICAgIGAsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbU2Nyb2xsaW5nTW9kdWxlXSxcclxuICB2aWV3UHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IFZJUlRVQUxfU0NST0xMX1NUUkFURUdZLFxyXG4gICAgICB1c2VGYWN0b3J5OiAoYzogVmlydHVhbFNjcm9sbENvbnRhaW5lcikgPT4gYy5zY3JvbGxTdHJhdGVneSxcclxuICAgICAgZGVwczogW2ZvcndhcmRSZWYoKCkgPT4gVmlydHVhbFNjcm9sbENvbnRhaW5lcildLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVmlydHVhbFNjcm9sbENvbnRhaW5lciBpbXBsZW1lbnRzICBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgc3RhdGUgPSBpbmplY3QoVGFibGVTdG9yZSk7XHJcbiAgcHJpdmF0ZSBkYXRhU3RvcmUgPSBpbmplY3QoRGF0YVN0b3JlKTsgXHJcblxyXG4gIHZpZXdwb3J0ID0gdmlld0NoaWxkKENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCk7XHJcblxyXG4gIGRlZmF1bHRPcHRpb25zID0gbmV3IFZpcnR1YWxTY3JvbGxPcHRpb25zKCk7XHJcbiAgc2Nyb2xsU3RyYXRlZ3kgPSBuZXcgVGFibGVWaXJ0dWFsU2Nyb2xsU3RyYXRlZ3koXHJcbiAgICB0aGlzLmNvbXB1dGVkUm93SGVpZ2h0KCksXHJcbiAgICB0aGlzLmNvbXB1dGVkSGVhZGVySGVpZ2h0KClcclxuICAgICk7XHJcblxyXG4gICR1c2VQYWdpbmF0b3IgPSB0aGlzLnN0YXRlLnNlbGVjdFNpZ25hbChzID0+IHMubm90UGVyc2lzdGVkVGFibGVTZXR0aW5ncy51c2VQYWdpbmF0b3IpO1xyXG4gICRwYWdlU2l6ZSA9IHRoaXMuc3RhdGUuJHBhZ2VTaXplO1xyXG4gICRjdXJyZW50UGFnZSA9IHRoaXMuc3RhdGUuJGN1cnJlbnRQYWdlO1xyXG4gICRzaG93QWxsID0gdGhpcy5zdGF0ZS5zZWxlY3RTaWduYWwocyA9PiBzLnNob3dBbGwpO1xyXG4gICRzdGF0ZURhdGFMZW5ndGggPSB0aGlzLmRhdGFTdG9yZS5zZWxlY3RTaWduYWwocyA9PiBzLmRhdGFMZW4pO1xyXG4gICRkYXRhTGVuZ3RoICA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGNvbnN0IHBhZ2luYXRlZCA9IHRoaXMuJHVzZVBhZ2luYXRvcigpICYmICF0aGlzLiRzaG93QWxsKCk7XHJcbiAgICBjb25zdCBwYWdlU2l6ZSA9IHRoaXMuJHBhZ2VTaXplKCk7XHJcbiAgICBjb25zdCBwYWdlTnVtYmVyID0gdGhpcy4kY3VycmVudFBhZ2UoKTtcclxuICAgIGNvbnN0IGRhdGFMZW4gPSB0aGlzLiRzdGF0ZURhdGFMZW5ndGgoKTtcclxuICAgIGlmKHBhZ2luYXRlZCkgcmV0dXJuIE1hdGgubWluKGRhdGFMZW4gLSAocGFnZU51bWJlciAqIHBhZ2VTaXplKSwgcGFnZVNpemUpO1xyXG4gICAgcmV0dXJuIGRhdGFMZW47XHJcbiAgfSk7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBhZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnJlc2l6ZUhhbmRsZXIpO1xyXG4gIH1cclxuICBzZXRWaWV3cG9ydEVmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XHJcbiAgICBjb25zdCB2aWV3cG9ydCA9IHRoaXMudmlld3BvcnQoKTtcclxuICAgIHVudHJhY2tlZCgoKSA9PiB7XHJcbiAgICAgIGlmKCEhdmlld3BvcnQpe1xyXG4gICAgICAgIHRoaXMuc2V0U2l6ZSh0aGlzLnZpZXdwb3J0KCkhLmVsZW1lbnRSZWYpO1xyXG4gICAgICB9O1xyXG4gICAgfSlcclxuICB9KVxyXG5cclxuICBzdWJzY3JpYmVyID0gc3Vic2NyaWJlcigpO1xyXG5cclxuICBvblJlbmRlcmVkUmFuZ2VFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xyXG4gICAgY29uc3QgcmVuZGVyZWRSYW5nZSA9IHRoaXMuJHJlbmRlcmVkUmFuZ2UoKTtcclxuICAgIGlmKCFyZW5kZXJlZFJhbmdlKSByZXR1cm47XHJcbiAgICB1bnRyYWNrZWQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmRhdGFTdG9yZS5wYXRjaFN0YXRlKHtcclxuICAgICAgICB2aXJ0dWFsRW5kczoge1xyXG4gICAgICAgICAgc3RhcnQ6IHJlbmRlcmVkUmFuZ2Uuc3RhcnQsXHJcbiAgICAgICAgICBlbmQ6IHJlbmRlcmVkUmFuZ2UuZW5kICsgMjUsXHJcbiAgICAgICAgfX0pO1xyXG4gICAgICB0aGlzLnNldFNpemUodGhpcy52aWV3cG9ydCgpIS5lbGVtZW50UmVmKTtcclxuICAgIH0pXHJcbiAgfSlcclxuXHJcbiAgb25EYXRhTGVuZ3RoRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnN0IGRhdGFMZW5ndGggPSB0aGlzLiRkYXRhTGVuZ3RoKCk7XHJcbiAgICB1bnRyYWNrZWQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNjcm9sbFN0cmF0ZWd5LnNldERhdGFMZW5ndGgoZGF0YUxlbmd0aCk7XHJcbiAgICB9KVxyXG4gIH0pXHJcblxyXG4gIG9uT2Zmc2V0RWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuJG9mZnNldCgpO1xyXG4gICAgdW50cmFja2VkKCgpID0+IHtcclxuICAgICAgdGhpcy5kYXRhU3RvcmUucGF0Y2hTdGF0ZSh7IHZpcnR1YWxTY3JvbGxPZmZzZXQ6IG9mZnNldCB9KTtcclxuICAgIH0pXHJcbiAgfSlcclxuICB2aWV3UG9ydCQgPSB0b09ic2VydmFibGUodGhpcy52aWV3cG9ydCkucGlwZShub3ROdWxsKCkpO1xyXG4gICRzY3JvbGxlZEluZGV4Q2hhbmdlID0gdG9TaWduYWwodGhpcy52aWV3UG9ydCQucGlwZShzd2l0Y2hNYXAodiA9PiB2LnNjcm9sbGVkSW5kZXhDaGFuZ2UpKSk7XHJcbiAgJHJlbmRlcmVkUmFuZ2UgPSB0b1NpZ25hbCh0aGlzLnZpZXdQb3J0JC5waXBlKHN3aXRjaE1hcCh2ID0+IHYucmVuZGVyZWRSYW5nZVN0cmVhbSkpKTtcclxuXHJcbiAgJG9mZnNldCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy52aWV3cG9ydCgpO1xyXG4gICAgY29uc3Qgc2Nyb2xsZWRJbmRleENoYW5nZSA9IHRoaXMuJHNjcm9sbGVkSW5kZXhDaGFuZ2UoKTtcclxuICAgIGlmKCFzY3JvbGxlZEluZGV4Q2hhbmdlIHx8ICF2aWV3cG9ydCkgcmV0dXJuIDA7XHJcbiAgICByZXR1cm4gdmlld3BvcnQuZ2V0T2Zmc2V0VG9SZW5kZXJlZENvbnRlbnRTdGFydCgpID8/IDA7XHJcbiAgfSlcclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICByZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnJlc2l6ZUhhbmRsZXIpO1xyXG4gIH1cclxuXHJcbiAgc2V0U2l6ZShlbDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHtcclxuICAgIGNvbnN0IHZzVmlld3BvcnQgPSBlbC5uYXRpdmVFbGVtZW50O1xyXG4gICAgY29uc3QgdmlydHVhbFNjcm9sbE9wdGlvbnMgPSB0aGlzLnN0YXRlLnRhYmxlU2V0dGluZ3MoKS51c2VWaXJ0dWFsU2Nyb2xsISBhcyBWaXJ0dWFsU2Nyb2xsT3B0aW9ucztcclxuICAgIGNvbnN0IHJvd0hlaWdodCA9IHRoaXMuY29tcHV0ZWRSb3dIZWlnaHQoKTtcclxuICAgIGxldCBhbW91bnRPZlZpc2libGVJdGVtcyA9IHZpcnR1YWxTY3JvbGxPcHRpb25zPy5hbW91bnRPZlZpc2libGVJdGVtcyB8fCB0aGlzLmRlZmF1bHRPcHRpb25zLmFtb3VudE9mVmlzaWJsZUl0ZW1zO1xyXG4gICAgICB2aXJ0dWFsU2Nyb2xsT3B0aW9ucz8uYW1vdW50T2ZWaXNpYmxlSXRlbXMgfHwgdGhpcy5kZWZhdWx0T3B0aW9ucy5hbW91bnRPZlZpc2libGVJdGVtcztcclxuICAgIGxldCBoZWlnaHQgPSAocm93SGVpZ2h0ICogYW1vdW50T2ZWaXNpYmxlSXRlbXMpO1xyXG4gICAgaWYoIXRoaXMuc3RhdGUudGFibGVTZXR0aW5ncygpLmhpZGVIZWFkZXIpe1xyXG4gICAgICBjb25zdCBoZWFkZXJIZWlnaHQgPSB0aGlzLmNvbXB1dGVkSGVhZGVySGVpZ2h0KCk7XHJcbiAgICAgIGhlaWdodCArPSBoZWFkZXJIZWlnaHQ7XHJcbiAgICB9XHJcbiAgICBpZih2aXJ0dWFsU2Nyb2xsT3B0aW9ucz8ubWF4Vmlld1BvcnRIZWlnaHQgJiYgdmlydHVhbFNjcm9sbE9wdGlvbnMubWF4Vmlld1BvcnRIZWlnaHQgPCBoZWlnaHQpIGhlaWdodCA9IHZpcnR1YWxTY3JvbGxPcHRpb25zLm1heFZpZXdQb3J0SGVpZ2h0O1xyXG4gICAgdnNWaWV3cG9ydC5zZXRBdHRyaWJ1dGUoXHJcbiAgICAgICdzdHlsZScsXHJcbiAgICAgIGBoZWlnaHQ6ICR7aGVpZ2h0fXB4ICFpbXBvcnRhbnQ7YCxcclxuICAgICk7XHJcbiAgICB0aGlzLnZpZXdwb3J0KCk/LmNoZWNrVmlld3BvcnRTaXplKCk7XHJcbiAgICBjb25zdCB2aXJ0dWFsU2Nyb2xsT2Zmc2V0ID0gdGhpcy52aWV3cG9ydCgpPy5nZXRPZmZzZXRUb1JlbmRlcmVkQ29udGVudFN0YXJ0KCkgPz8gMFxyXG4gICAgdGhpcy5kYXRhU3RvcmUucGF0Y2hTdGF0ZSh7IHZpcnR1YWxTY3JvbGxPZmZzZXQgfSk7XHJcbiAgfVxyXG5cclxuICByZXNpemVIYW5kbGVyID0gKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMudmlld3BvcnQoKSkge1xyXG4gICAgICB0aGlzLnNldFNpemUodGhpcy52aWV3cG9ydCgpIS5lbGVtZW50UmVmKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBjb21wdXRlZFJvd0hlaWdodCgpe1xyXG4gICAgY29uc3QgdmlydHVhbFNjcm9sbE9wdGlvbnMgPSB0aGlzLnN0YXRlLnRhYmxlU2V0dGluZ3MoKS51c2VWaXJ0dWFsU2Nyb2xsISBhcyBWaXJ0dWFsU2Nyb2xsT3B0aW9ucztcclxuICAgIGNvbnN0IHJvd0hlaWdodCA9IHZpcnR1YWxTY3JvbGxPcHRpb25zPy5yb3dIZWlnaHR8fCAodHlwZW9mIHRoaXMuc3RhdGUudGFibGVTZXR0aW5ncygpLnJvd0hlaWdodCA9PT0gJ251bWJlcicgJiYgdGhpcy5zdGF0ZS50YWJsZVNldHRpbmdzKCkucm93SGVpZ2h0IGFzIG51bWJlcikgfHwgdGhpcy5kZWZhdWx0T3B0aW9ucy5yb3dIZWlnaHQ7XHJcbiAgICByZXR1cm4gcm93SGVpZ2h0O1xyXG4gIH1cclxuXHJcbiAgY29tcHV0ZWRIZWFkZXJIZWlnaHQoKXtcclxuICAgIGNvbnN0IHZpcnR1YWxTY3JvbGxPcHRpb25zID0gdGhpcy5zdGF0ZS50YWJsZVNldHRpbmdzKCkudXNlVmlydHVhbFNjcm9sbCEgYXMgVmlydHVhbFNjcm9sbE9wdGlvbnM7XHJcbiAgICBjb25zdCBoZWFkZXJIZWlnaHQgPSB2aXJ0dWFsU2Nyb2xsT3B0aW9ucz8uaGVhZGVySGVpZ2h0fHwgKHR5cGVvZiAgdGhpcy5zdGF0ZS50YWJsZVNldHRpbmdzKCkuaGVhZGVySGVpZ2h0ID09PSAnbnVtYmVyJyAmJiB0aGlzLnN0YXRlLnRhYmxlU2V0dGluZ3MoKS5oZWFkZXJIZWlnaHQgYXMgbnVtYmVyKSB8fCB0aGlzLmRlZmF1bHRPcHRpb25zLmhlYWRlckhlaWdodDtcclxuICAgIHJldHVybiBoZWFkZXJIZWlnaHQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';
|
|
2
|
+
import { TableStore } from '../../../classes/table-store';
|
|
3
|
+
import { isFilterInfo } from '../../../classes/filter-info';
|
|
4
|
+
import { WrapperFilterStore } from '../table-wrapper-filter-store';
|
|
5
|
+
import { LetDirective } from '@ngrx/component';
|
|
6
|
+
import { AsyncPipe } from '@angular/common';
|
|
7
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
8
|
+
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
9
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
10
|
+
import { FilterComponent } from '../../filter/filter.component';
|
|
11
|
+
import { MatChipsModule } from '@angular/material/chips';
|
|
12
|
+
import { KeyDisplayPipe } from '../../../pipes/key-display';
|
|
13
|
+
import { FormatFilterTypePipe } from '../../../pipes/format-filter-type.pipe';
|
|
14
|
+
import { FormatFilterValuePipe } from '../../../pipes/format-filter-value.pipe';
|
|
15
|
+
import * as i0 from "@angular/core";
|
|
16
|
+
import * as i1 from "@angular/material/button";
|
|
17
|
+
import * as i2 from "@angular/material/tooltip";
|
|
18
|
+
import * as i3 from "@angular/material/icon";
|
|
19
|
+
import * as i4 from "@angular/material/chips";
|
|
20
|
+
export class FilterChipsComponent {
|
|
21
|
+
tableState = inject(TableStore);
|
|
22
|
+
filterStore = inject(WrapperFilterStore);
|
|
23
|
+
$filters = computed(() => Object.values(this.tableState.$filters()).filter(f => isFilterInfo(f) && !f._isExternallyManaged));
|
|
24
|
+
deleteByIndex(index) {
|
|
25
|
+
this.filterStore.deleteByIndex(index);
|
|
26
|
+
}
|
|
27
|
+
addFilter(filter) {
|
|
28
|
+
this.filterStore.addFilter(filter);
|
|
29
|
+
}
|
|
30
|
+
clearAll() {
|
|
31
|
+
this.filterStore.clearAll();
|
|
32
|
+
}
|
|
33
|
+
currentFilters$ = this.filterStore.currentFilters$;
|
|
34
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: FilterChipsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
35
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.2", type: FilterChipsComponent, isStandalone: true, selector: "lib-filter-list", ngImport: i0, template: "<div class=\"d-w\" *ngrxLet=\"currentFilters$ as currentFilters\" >\r\n\r\n @if (currentFilters.length) {\r\n <button class=\"cancel-button\" mat-icon-button (click)=\"clearAll()\" matTooltip=\"Close all Filters Cards\">\r\n <mat-icon class=\"cancel-button\" color=\"primary\">close</mat-icon>\r\n </button>\r\n <div class=\"float\">\r\n @for (filter of currentFilters; track filter.key) {\r\n <div class=\"filter\">\r\n <tb-filter [filter]=\"filter\" (close)=\"deleteByIndex($index)\" />\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <mat-chip-set>\r\n @for (filter of $filters(); track filter.key) {\r\n <mat-chip (dblclick)=\"addFilter(filter)\" (removed)=\"tableState.removeFilter(filter.filterId!)\">\r\n {{ filter.key | keyDisplay | async }} {{filter.filterType | formatFilterType : filter.filterValue}} {{ filter.filterValue | formatFilterValue: filter.key : filter.filterType | async }}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n }\r\n @if ($filters().length > 1) {\r\n <mat-chip (removed)=\"tableState.clearFilters()\">\r\n Clear All\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n }\r\n </mat-chip-set>\r\n\r\n</div>\r\n", styles: [".filter{margin:15px;display:inline-block}.filter-button{color:#6495ed;font-size:22px;font-weight:700}.cancel-button{margin-right:30px;font-weight:700}.filter-wrapper{margin-top:1em;margin-bottom:1em;float:right}.menu{margin-bottom:10px;width:109.1%}.filter-labels{color:#6495ed;font-size:17px;font-weight:600}.float{position:absolute;width:fit-content;z-index:101;top:10px;right:180px;max-width:90vw}.d-w{display:flex;flex-direction:row;justify-content:flex-end}\n"], dependencies: [{ kind: "directive", type: LetDirective, selector: "[ngrxLet]", inputs: ["ngrxLet", "ngrxLetSuspenseTpl"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: FilterComponent, selector: "tb-filter", inputs: ["filter"], outputs: ["close"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i4.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "directive", type: i4.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i4.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: KeyDisplayPipe, name: "keyDisplay" }, { kind: "pipe", type: FormatFilterTypePipe, name: "formatFilterType" }, { kind: "pipe", type: FormatFilterValuePipe, name: "formatFilterValue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
36
|
+
}
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: FilterChipsComponent, decorators: [{
|
|
38
|
+
type: Component,
|
|
39
|
+
args: [{ selector: 'lib-filter-list', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
40
|
+
LetDirective, MatButtonModule, MatTooltipModule, MatIconModule, FilterComponent,
|
|
41
|
+
MatChipsModule, AsyncPipe, KeyDisplayPipe, FormatFilterTypePipe, FormatFilterValuePipe
|
|
42
|
+
], template: "<div class=\"d-w\" *ngrxLet=\"currentFilters$ as currentFilters\" >\r\n\r\n @if (currentFilters.length) {\r\n <button class=\"cancel-button\" mat-icon-button (click)=\"clearAll()\" matTooltip=\"Close all Filters Cards\">\r\n <mat-icon class=\"cancel-button\" color=\"primary\">close</mat-icon>\r\n </button>\r\n <div class=\"float\">\r\n @for (filter of currentFilters; track filter.key) {\r\n <div class=\"filter\">\r\n <tb-filter [filter]=\"filter\" (close)=\"deleteByIndex($index)\" />\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <mat-chip-set>\r\n @for (filter of $filters(); track filter.key) {\r\n <mat-chip (dblclick)=\"addFilter(filter)\" (removed)=\"tableState.removeFilter(filter.filterId!)\">\r\n {{ filter.key | keyDisplay | async }} {{filter.filterType | formatFilterType : filter.filterValue}} {{ filter.filterValue | formatFilterValue: filter.key : filter.filterType | async }}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n }\r\n @if ($filters().length > 1) {\r\n <mat-chip (removed)=\"tableState.clearFilters()\">\r\n Clear All\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n }\r\n </mat-chip-set>\r\n\r\n</div>\r\n", styles: [".filter{margin:15px;display:inline-block}.filter-button{color:#6495ed;font-size:22px;font-weight:700}.cancel-button{margin-right:30px;font-weight:700}.filter-wrapper{margin-top:1em;margin-bottom:1em;float:right}.menu{margin-bottom:10px;width:109.1%}.filter-labels{color:#6495ed;font-size:17px;font-weight:600}.float{position:absolute;width:fit-content;z-index:101;top:10px;right:180px;max-width:90vw}.d-w{display:flex;flex-direction:row;justify-content:flex-end}\n"] }]
|
|
43
|
+
}] });
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy90YWJsZS1jb250YWluZXItZmlsdGVyL2ZpbHRlci1saXN0L2ZpbHRlci1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy90YWJsZS1idWlsZGVyL2NvbXBvbmVudHMvdGFibGUtY29udGFpbmVyLWZpbHRlci9maWx0ZXItbGlzdC9maWx0ZXItbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzFELE9BQU8sRUFBYyxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7OztBQWFoRixNQUFNLE9BQU8sb0JBQW9CO0lBRS9CLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBRXpDLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFpQixDQUFDLENBQUE7SUFDNUksYUFBYSxDQUFDLEtBQWE7UUFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFzQjtRQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELGVBQWUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQzt1R0FsQnhDLG9CQUFvQjsyRkFBcEIsb0JBQW9CLDJFQzFCakMsdXdDQStCQSwwZ0JEVEksWUFBWSxnR0FBRSxlQUFlLDJJQUFFLGdCQUFnQiw0VEFBRSxhQUFhLG9MQUFFLGVBQWUsNkZBQy9FLGNBQWMsa2dCQUFFLFNBQVMseUNBQUUsY0FBYyw4Q0FBRSxvQkFBb0Isb0RBQUUscUJBQXFCOzsyRkFHN0Usb0JBQW9CO2tCQVhoQyxTQUFTOytCQUNFLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxZQUFZLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxlQUFlO3dCQUMvRSxjQUFjLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUI7cUJBQ3ZGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUYWJsZVN0b3JlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy90YWJsZS1zdG9yZSc7XHJcbmltcG9ydCB7IEZpbHRlckluZm8sIGlzRmlsdGVySW5mbyB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZmlsdGVyLWluZm8nO1xyXG5pbXBvcnQgeyBXcmFwcGVyRmlsdGVyU3RvcmUgfSBmcm9tICcuLi90YWJsZS13cmFwcGVyLWZpbHRlci1zdG9yZSc7XHJcbmltcG9ydCB7IExldERpcmVjdGl2ZSB9IGZyb20gJ0BuZ3J4L2NvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hdENoaXBzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xyXG5pbXBvcnQgeyBLZXlEaXNwbGF5UGlwZSB9IGZyb20gJy4uLy4uLy4uL3BpcGVzL2tleS1kaXNwbGF5JztcclxuaW1wb3J0IHsgRm9ybWF0RmlsdGVyVHlwZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9waXBlcy9mb3JtYXQtZmlsdGVyLXR5cGUucGlwZSc7XHJcbmltcG9ydCB7IEZvcm1hdEZpbHRlclZhbHVlUGlwZSB9IGZyb20gJy4uLy4uLy4uL3BpcGVzL2Zvcm1hdC1maWx0ZXItdmFsdWUucGlwZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1maWx0ZXItbGlzdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlci1saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi4vZ2VuLWZpbHRlci1kaXNwbGF5ZXIvZ2VuLWZpbHRlci1kaXNwbGF5ZXIuY29tcG9uZW50LmNzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTGV0RGlyZWN0aXZlLCBNYXRCdXR0b25Nb2R1bGUsIE1hdFRvb2x0aXBNb2R1bGUsIE1hdEljb25Nb2R1bGUsIEZpbHRlckNvbXBvbmVudCxcclxuICAgIE1hdENoaXBzTW9kdWxlLCBBc3luY1BpcGUsIEtleURpc3BsYXlQaXBlLCBGb3JtYXRGaWx0ZXJUeXBlUGlwZSwgRm9ybWF0RmlsdGVyVmFsdWVQaXBlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsdGVyQ2hpcHNDb21wb25lbnQge1xyXG5cclxuICB0YWJsZVN0YXRlID0gaW5qZWN0KFRhYmxlU3RvcmUpO1xyXG4gIGZpbHRlclN0b3JlID0gaW5qZWN0KFdyYXBwZXJGaWx0ZXJTdG9yZSk7XHJcblxyXG4gICRmaWx0ZXJzID0gY29tcHV0ZWQoKCkgPT4gT2JqZWN0LnZhbHVlcyh0aGlzLnRhYmxlU3RhdGUuJGZpbHRlcnMoKSkuZmlsdGVyKGYgPT4gaXNGaWx0ZXJJbmZvKGYpICYmICFmLl9pc0V4dGVybmFsbHlNYW5hZ2VkKSBhcyBGaWx0ZXJJbmZvW10pXHJcbiAgZGVsZXRlQnlJbmRleChpbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmZpbHRlclN0b3JlLmRlbGV0ZUJ5SW5kZXgoaW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgYWRkRmlsdGVyKGZpbHRlcjpGaWx0ZXJJbmZvPGFueT4pe1xyXG4gICAgdGhpcy5maWx0ZXJTdG9yZS5hZGRGaWx0ZXIoZmlsdGVyKTtcclxuICB9XHJcblxyXG4gIGNsZWFyQWxsKCkge1xyXG4gICAgICB0aGlzLmZpbHRlclN0b3JlLmNsZWFyQWxsKCk7XHJcbiAgfVxyXG5cclxuICBjdXJyZW50RmlsdGVycyQgPSB0aGlzLmZpbHRlclN0b3JlLmN1cnJlbnRGaWx0ZXJzJDtcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZC13XCIgKm5ncnhMZXQ9XCJjdXJyZW50RmlsdGVycyQgYXMgY3VycmVudEZpbHRlcnNcIiA+XHJcblxyXG4gIEBpZiAoY3VycmVudEZpbHRlcnMubGVuZ3RoKSB7XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwiY2FuY2VsLWJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY2xlYXJBbGwoKVwiIG1hdFRvb2x0aXA9XCJDbG9zZSBhbGwgRmlsdGVycyBDYXJkc1wiPlxyXG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJjYW5jZWwtYnV0dG9uXCIgY29sb3I9XCJwcmltYXJ5XCI+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxvYXRcIj5cclxuICAgICAgQGZvciAoZmlsdGVyIG9mIGN1cnJlbnRGaWx0ZXJzOyB0cmFjayBmaWx0ZXIua2V5KSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlclwiPlxyXG4gICAgICAgICAgPHRiLWZpbHRlciBbZmlsdGVyXT1cImZpbHRlclwiIChjbG9zZSk9XCJkZWxldGVCeUluZGV4KCRpbmRleClcIiAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcblxyXG4gIDxtYXQtY2hpcC1zZXQ+XHJcbiAgICBAZm9yIChmaWx0ZXIgb2YgJGZpbHRlcnMoKTsgdHJhY2sgZmlsdGVyLmtleSkge1xyXG4gICAgICA8bWF0LWNoaXAgKGRibGNsaWNrKT1cImFkZEZpbHRlcihmaWx0ZXIpXCIgIChyZW1vdmVkKT1cInRhYmxlU3RhdGUucmVtb3ZlRmlsdGVyKGZpbHRlci5maWx0ZXJJZCEpXCI+XHJcbiAgICAgICAge3sgZmlsdGVyLmtleSB8IGtleURpc3BsYXkgfCBhc3luYyAgfX0ge3tmaWx0ZXIuZmlsdGVyVHlwZSB8IGZvcm1hdEZpbHRlclR5cGUgOiBmaWx0ZXIuZmlsdGVyVmFsdWV9fSB7eyBmaWx0ZXIuZmlsdGVyVmFsdWUgfCBmb3JtYXRGaWx0ZXJWYWx1ZTogZmlsdGVyLmtleSA6IGZpbHRlci5maWx0ZXJUeXBlICB8IGFzeW5jIH19XHJcbiAgICAgICAgPG1hdC1pY29uIG1hdENoaXBSZW1vdmU+Y2FuY2VsPC9tYXQtaWNvbj5cclxuICAgICAgPC9tYXQtY2hpcD5cclxuICAgIH1cclxuICAgIEBpZiAoJGZpbHRlcnMoKS5sZW5ndGggPiAxKSB7XHJcbiAgICAgIDxtYXQtY2hpcCAgKHJlbW92ZWQpPVwidGFibGVTdGF0ZS5jbGVhckZpbHRlcnMoKVwiPlxyXG4gICAgICAgIENsZWFyIEFsbFxyXG4gICAgICAgIDxtYXQtaWNvbiBtYXRDaGlwUmVtb3ZlPmNhbmNlbDwvbWF0LWljb24+XHJcbiAgICAgIDwvbWF0LWNoaXA+XHJcbiAgICB9XHJcbiAgPC9tYXQtY2hpcC1zZXQ+XHJcblxyXG48L2Rpdj5cclxuIl19
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Component, ChangeDetectionStrategy, inject, computed } from '@angular/core';
|
|
2
|
+
import { FieldType } from '../../../interfaces/report-def';
|
|
3
|
+
import { TableStore } from '../../../classes/table-store';
|
|
4
|
+
import { WrapperFilterStore } from '../table-wrapper-filter-store';
|
|
5
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
6
|
+
import { MatMenuModule } from '@angular/material/menu';
|
|
7
|
+
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
8
|
+
import { SpaceCasePipe, StopPropagationDirective } from '../../../../utilities';
|
|
9
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
10
|
+
import { AsyncPipe } from '@angular/common';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "@angular/material/button";
|
|
13
|
+
import * as i2 from "@angular/material/menu";
|
|
14
|
+
import * as i3 from "@angular/material/tooltip";
|
|
15
|
+
import * as i4 from "@angular/material/icon";
|
|
16
|
+
export class GenFilterDisplayerComponent {
|
|
17
|
+
tableState = inject(TableStore);
|
|
18
|
+
filterStore = inject(WrapperFilterStore);
|
|
19
|
+
$filterCols = computed(() => {
|
|
20
|
+
const mds = this.tableState.$metaDataArray();
|
|
21
|
+
return mds.filter(m => m.fieldType !== FieldType.Hidden && m.fieldType !== FieldType.NotMapped && !m.noFilter);
|
|
22
|
+
});
|
|
23
|
+
addFilter(metaData) {
|
|
24
|
+
this.filterStore.addFilter({ key: metaData.key, fieldType: metaData.fieldType });
|
|
25
|
+
}
|
|
26
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: GenFilterDisplayerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
27
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.2", type: GenFilterDisplayerComponent, isStandalone: true, selector: "tb-filter-displayer", ngImport: i0, template: "<button stop-propagation class=\"filter-button\" mat-icon-button [matMenuTriggerFor]=\"menu\" matTooltip=\"Add Filter\">\r\n <mat-icon class=\"filter-icon\" color=\"primary\">filter_list</mat-icon>\r\n</button>\r\n<mat-menu #menu=\"matMenu\">\r\n @for (md of $filterCols(); track md.key) {\r\n <button (click)=\"addFilter(md)\" mat-menu-item>\r\n <span class=\"filter-labels\">{{md.displayName || (md.key | spaceCase)}}</span>\r\n </button>\r\n }\r\n</mat-menu>\r\n", styles: [".filter{margin:15px;display:inline-block}.filter-button{color:#6495ed;font-size:22px;font-weight:700}.cancel-button{margin-right:30px;font-weight:700}.filter-wrapper{margin-top:1em;margin-bottom:1em;float:right}.menu{margin-bottom:10px;width:109.1%}.filter-labels{color:#6495ed;font-size:17px;font-weight:600}.float{position:absolute;width:fit-content;z-index:101;top:10px;right:180px;max-width:90vw}.d-w{display:flex;flex-direction:row;justify-content:flex-end}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: StopPropagationDirective, selector: "[stop-propagation]" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: SpaceCasePipe, name: "spaceCase" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
28
|
+
}
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: GenFilterDisplayerComponent, decorators: [{
|
|
30
|
+
type: Component,
|
|
31
|
+
args: [{ selector: 'tb-filter-displayer', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
32
|
+
MatButtonModule, MatMenuModule, MatTooltipModule, StopPropagationDirective, MatIconModule,
|
|
33
|
+
AsyncPipe, SpaceCasePipe
|
|
34
|
+
], template: "<button stop-propagation class=\"filter-button\" mat-icon-button [matMenuTriggerFor]=\"menu\" matTooltip=\"Add Filter\">\r\n <mat-icon class=\"filter-icon\" color=\"primary\">filter_list</mat-icon>\r\n</button>\r\n<mat-menu #menu=\"matMenu\">\r\n @for (md of $filterCols(); track md.key) {\r\n <button (click)=\"addFilter(md)\" mat-menu-item>\r\n <span class=\"filter-labels\">{{md.displayName || (md.key | spaceCase)}}</span>\r\n </button>\r\n }\r\n</mat-menu>\r\n", styles: [".filter{margin:15px;display:inline-block}.filter-button{color:#6495ed;font-size:22px;font-weight:700}.cancel-button{margin-right:30px;font-weight:700}.filter-wrapper{margin-top:1em;margin-bottom:1em;float:right}.menu{margin-bottom:10px;width:109.1%}.filter-labels{color:#6495ed;font-size:17px;font-weight:600}.float{position:absolute;width:fit-content;z-index:101;top:10px;right:180px;max-width:90vw}.d-w{display:flex;flex-direction:row;justify-content:flex-end}\n"] }]
|
|
35
|
+
}] });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuLWZpbHRlci1kaXNwbGF5ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy90YWJsZS1jb250YWluZXItZmlsdGVyL2dlbi1maWx0ZXItZGlzcGxheWVyL2dlbi1maWx0ZXItZGlzcGxheWVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy90YWJsZS1idWlsZGVyL2NvbXBvbmVudHMvdGFibGUtY29udGFpbmVyLWZpbHRlci9nZW4tZmlsdGVyLWRpc3BsYXllci9nZW4tZmlsdGVyLWRpc3BsYXllci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUFZLFNBQVMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNoRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7QUFhNUMsTUFBTSxPQUFPLDJCQUEyQjtJQUM1QixVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hDLFdBQVcsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNuRCxXQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUMxQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzdDLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDaEgsQ0FBQyxDQUFDLENBQUM7SUFFRCxTQUFTLENBQUMsUUFBa0I7UUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVMsRUFBQyxDQUFDLENBQUM7SUFDakYsQ0FBQzt1R0FWUSwyQkFBMkI7MkZBQTNCLDJCQUEyQiwrRUN0QnhDLGllQVVBLHlnQkRRTSxlQUFlLDJJQUFFLGFBQWEsNnZCQUFFLGdCQUFnQiw2VEFBRSx3QkFBd0IsOERBQUUsYUFBYSwrS0FDOUUsYUFBYTs7MkZBR2pCLDJCQUEyQjtrQkFYdkMsU0FBUzsrQkFDSSxxQkFBcUIsbUJBR2QsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsZUFBZSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSx3QkFBd0IsRUFBRSxhQUFhO3dCQUN6RixTQUFTLEVBQUUsYUFBYTtxQkFDekIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBpbmplY3QsIGNvbXB1dGVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1ldGFEYXRhLCBGaWVsZFR5cGUgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL3JlcG9ydC1kZWYnO1xyXG5pbXBvcnQgeyBUYWJsZVN0b3JlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy90YWJsZS1zdG9yZSc7XHJcbmltcG9ydCB7IFdyYXBwZXJGaWx0ZXJTdG9yZSB9IGZyb20gJy4uL3RhYmxlLXdyYXBwZXItZmlsdGVyLXN0b3JlJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IFNwYWNlQ2FzZVBpcGUsIFN0b3BQcm9wYWdhdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxpdGllcyc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd0Yi1maWx0ZXItZGlzcGxheWVyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9nZW4tZmlsdGVyLWRpc3BsYXllci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9nZW4tZmlsdGVyLWRpc3BsYXllci5jb21wb25lbnQuY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbXHJcbiAgICAgIE1hdEJ1dHRvbk1vZHVsZSwgTWF0TWVudU1vZHVsZSwgTWF0VG9vbHRpcE1vZHVsZSwgU3RvcFByb3BhZ2F0aW9uRGlyZWN0aXZlLCBNYXRJY29uTW9kdWxlLFxyXG4gICAgICBBc3luY1BpcGUsIFNwYWNlQ2FzZVBpcGVcclxuICAgIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEdlbkZpbHRlckRpc3BsYXllckNvbXBvbmVudCB7XHJcbiAgcHJvdGVjdGVkIHRhYmxlU3RhdGUgPSBpbmplY3QoVGFibGVTdG9yZSk7XHJcbiAgcHJvdGVjdGVkIGZpbHRlclN0b3JlID0gaW5qZWN0KFdyYXBwZXJGaWx0ZXJTdG9yZSk7XHJcbiAgJGZpbHRlckNvbHMgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBjb25zdCBtZHMgPSB0aGlzLnRhYmxlU3RhdGUuJG1ldGFEYXRhQXJyYXkoKTtcclxuICAgIHJldHVybiBtZHMuZmlsdGVyKG0gPT4gbS5maWVsZFR5cGUgIT09IEZpZWxkVHlwZS5IaWRkZW4gJiYgbS5maWVsZFR5cGUgIT09IEZpZWxkVHlwZS5Ob3RNYXBwZWQgJiYgIW0ubm9GaWx0ZXIpXHJcbiAgfSk7XHJcblxyXG4gICAgYWRkRmlsdGVyKG1ldGFEYXRhOiBNZXRhRGF0YSkge1xyXG4gICAgICB0aGlzLmZpbHRlclN0b3JlLmFkZEZpbHRlcih7a2V5OiBtZXRhRGF0YS5rZXksIGZpZWxkVHlwZTogbWV0YURhdGEuZmllbGRUeXBlfSk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGJ1dHRvbiBzdG9wLXByb3BhZ2F0aW9uIGNsYXNzPVwiZmlsdGVyLWJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIG1hdFRvb2x0aXA9XCJBZGQgRmlsdGVyXCI+XHJcbiAgPG1hdC1pY29uIGNsYXNzPVwiZmlsdGVyLWljb25cIiBjb2xvcj1cInByaW1hcnlcIj5maWx0ZXJfbGlzdDwvbWF0LWljb24+XHJcbjwvYnV0dG9uPlxyXG48bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCI+XHJcbiAgQGZvciAobWQgb2YgJGZpbHRlckNvbHMoKTsgdHJhY2sgbWQua2V5KSB7XHJcbiAgICA8YnV0dG9uIChjbGljayk9XCJhZGRGaWx0ZXIobWQpXCIgbWF0LW1lbnUtaXRlbT5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJmaWx0ZXItbGFiZWxzXCI+e3ttZC5kaXNwbGF5TmFtZSB8fCAobWQua2V5IHwgc3BhY2VDYXNlKX19PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgfVxyXG48L21hdC1tZW51PlxyXG4iXX0=
|
package/esm2022/table-builder/components/table-container-filter/table-wrapper-filter-store.mjs
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import { ComponentStore } from "@ngrx/component-store";
|
|
3
|
+
import { map } from "rxjs/operators";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class WrapperFilterStore extends ComponentStore {
|
|
6
|
+
constructor() {
|
|
7
|
+
super({ filterInfo: [] });
|
|
8
|
+
}
|
|
9
|
+
clearAll = this.updater(() => ({ filterInfo: [] }));
|
|
10
|
+
deleteByIndex = this.updater((state, index) => {
|
|
11
|
+
const arr = [...state.filterInfo];
|
|
12
|
+
arr.splice(index, 1);
|
|
13
|
+
return { filterInfo: arr };
|
|
14
|
+
});
|
|
15
|
+
currentFilters$ = this.state$.pipe(map(state => state.filterInfo));
|
|
16
|
+
addFilter = this.updater((state, filter) => {
|
|
17
|
+
return ({ ...state, filterInfo: [...state.filterInfo, filter] });
|
|
18
|
+
});
|
|
19
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: WrapperFilterStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
20
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: WrapperFilterStore });
|
|
21
|
+
}
|
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: WrapperFilterStore, decorators: [{
|
|
23
|
+
type: Injectable
|
|
24
|
+
}], ctorParameters: () => [] });
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtd3JhcHBlci1maWx0ZXItc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL3RhYmxlLWNvbnRhaW5lci1maWx0ZXIvdGFibGUtd3JhcHBlci1maWx0ZXItc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUdyQyxNQUFNLE9BQU8sa0JBQW9CLFNBQVEsY0FBNEM7SUFDbkY7UUFDRSxLQUFLLENBQUMsRUFBQyxVQUFVLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRSxFQUFFLENBQUEsQ0FBQyxFQUFDLFVBQVUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUMsS0FBWSxFQUFDLEVBQUU7UUFDakQsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyQixPQUFPLEVBQUMsVUFBVSxFQUFDLEdBQUcsRUFBQyxDQUFDO0lBQzFCLENBQUMsQ0FBQyxDQUFDO0lBRUgsZUFBZSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBRW5FLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFDLE1BQW9CLEVBQUMsRUFBRTtRQUNyRCxPQUFPLENBQUMsRUFBQyxHQUFHLEtBQUssRUFBQyxVQUFVLEVBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxVQUFVLEVBQUMsTUFBTSxDQUFDLEVBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUMsQ0FBQyxDQUFBO3VHQWhCUyxrQkFBa0I7MkdBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDb21wb25lbnRTdG9yZSB9IGZyb20gXCJAbmdyeC9jb21wb25lbnQtc3RvcmVcIjtcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IFBhcnRpYWxGaWx0ZXIgfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy9maWx0ZXItaW5mb1wiO1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBXcmFwcGVyRmlsdGVyU3RvcmUgIGV4dGVuZHMgQ29tcG9uZW50U3RvcmU8e2ZpbHRlckluZm86UGFydGlhbEZpbHRlcltdfT57XHJcbiAgY29uc3RydWN0b3IoKXtcclxuICAgIHN1cGVyKHtmaWx0ZXJJbmZvOltdfSk7XHJcbiAgfVxyXG5cclxuICBjbGVhckFsbCA9IHRoaXMudXBkYXRlcigoKT0+KHtmaWx0ZXJJbmZvOltdfSkpO1xyXG4gIGRlbGV0ZUJ5SW5kZXggPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLGluZGV4Om51bWJlcik9PntcclxuICAgIGNvbnN0IGFyciA9IFsuLi5zdGF0ZS5maWx0ZXJJbmZvXTtcclxuICAgIGFyci5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgcmV0dXJuIHtmaWx0ZXJJbmZvOmFycn07XHJcbiAgfSk7XHJcblxyXG4gIGN1cnJlbnRGaWx0ZXJzJCA9IHRoaXMuc3RhdGUkLnBpcGUobWFwKHN0YXRlID0+IHN0YXRlLmZpbHRlckluZm8pKTtcclxuXHJcbiAgYWRkRmlsdGVyID0gdGhpcy51cGRhdGVyKChzdGF0ZSxmaWx0ZXI6UGFydGlhbEZpbHRlcik9PntcclxuICAgIHJldHVybiAoey4uLnN0YXRlLGZpbHRlckluZm86Wy4uLnN0YXRlLmZpbHRlckluZm8sZmlsdGVyXX0pO1xyXG4gIH0pXHJcbn1cclxuIl19
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { Directive, TemplateRef, Input, inject } from '@angular/core';
|
|
2
|
+
import { CdkColumnDef } from '@angular/cdk/table';
|
|
3
|
+
import { FieldType } from '../interfaces/report-def';
|
|
4
|
+
import { ReplaySubject } from 'rxjs';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
// here is how to use it
|
|
7
|
+
// <generic-table [report]="report">
|
|
8
|
+
// <p *customCell="'column1'; let element = element" [class.makeMeRed]="element?.port">If Port, i will be red</p>
|
|
9
|
+
// <p *customCell="'column2'">I am custom cell two </p>
|
|
10
|
+
// </generic-table>
|
|
11
|
+
export class CustomCellDirective {
|
|
12
|
+
templateRef = inject(TemplateRef, { optional: true });
|
|
13
|
+
columnDef = inject(CdkColumnDef, { optional: true });
|
|
14
|
+
customCell;
|
|
15
|
+
displayName;
|
|
16
|
+
preSort;
|
|
17
|
+
TemplateRef;
|
|
18
|
+
customCellOrder;
|
|
19
|
+
customCellWidth;
|
|
20
|
+
customCellTableRef;
|
|
21
|
+
/**
|
|
22
|
+
* true if column not mapped to a property in the data source. Default is false.
|
|
23
|
+
*/
|
|
24
|
+
customCellNotMapped = false;
|
|
25
|
+
constructor() {
|
|
26
|
+
if (this.templateRef !== null)
|
|
27
|
+
this.TemplateRef = this.templateRef;
|
|
28
|
+
}
|
|
29
|
+
ngOnInit() {
|
|
30
|
+
this.$metaData.next(this.getMetaData());
|
|
31
|
+
}
|
|
32
|
+
$metaData = new ReplaySubject();
|
|
33
|
+
getMetaData = () => {
|
|
34
|
+
return {
|
|
35
|
+
key: this.customCell,
|
|
36
|
+
displayName: this.displayName,
|
|
37
|
+
preSort: this.preSort,
|
|
38
|
+
fieldType: this.customCellNotMapped ? FieldType.NotMapped : FieldType.Unknown,
|
|
39
|
+
order: this.customCellOrder,
|
|
40
|
+
width: this.customCellWidth,
|
|
41
|
+
customCell: true,
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
static ngTemplateContextGuard(dir, ctx) {
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: CustomCellDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
48
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: CustomCellDirective, isStandalone: true, selector: "[customCell]", inputs: { customCell: "customCell", displayName: "displayName", preSort: "preSort", TemplateRef: "TemplateRef", customCellOrder: "customCellOrder", customCellWidth: "customCellWidth", customCellTableRef: "customCellTableRef", customCellNotMapped: "customCellNotMapped" }, ngImport: i0 });
|
|
49
|
+
}
|
|
50
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: CustomCellDirective, decorators: [{
|
|
51
|
+
type: Directive,
|
|
52
|
+
args: [{
|
|
53
|
+
selector: '[customCell]',
|
|
54
|
+
standalone: true
|
|
55
|
+
}]
|
|
56
|
+
}], ctorParameters: () => [], propDecorators: { customCell: [{
|
|
57
|
+
type: Input
|
|
58
|
+
}], displayName: [{
|
|
59
|
+
type: Input
|
|
60
|
+
}], preSort: [{
|
|
61
|
+
type: Input
|
|
62
|
+
}], TemplateRef: [{
|
|
63
|
+
type: Input
|
|
64
|
+
}], customCellOrder: [{
|
|
65
|
+
type: Input
|
|
66
|
+
}], customCellWidth: [{
|
|
67
|
+
type: Input
|
|
68
|
+
}], customCellTableRef: [{
|
|
69
|
+
type: Input
|
|
70
|
+
}], customCellNotMapped: [{
|
|
71
|
+
type: Input
|
|
72
|
+
}] } });
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWNlbGwtZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvZGlyZWN0aXZlcy9jdXN0b20tY2VsbC1kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFxQixTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU1yQyx3QkFBd0I7QUFDeEIsb0NBQW9DO0FBQ3BDLHFIQUFxSDtBQUNySCwyREFBMkQ7QUFDM0QsbUJBQW1CO0FBS25CLE1BQU0sT0FBTyxtQkFBbUI7SUFDcEIsV0FBVyxHQUFHLE1BQU0sQ0FBbUIsV0FBVyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDekUsU0FBUyxHQUFHLE1BQU0sQ0FBQyxZQUFZLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNuRCxVQUFVLENBQVU7SUFDcEIsV0FBVyxDQUFVO0lBQ3JCLE9BQU8sQ0FBVztJQUNsQixXQUFXLENBQW9CO0lBQy9CLGVBQWUsQ0FBVTtJQUN6QixlQUFlLENBQVU7SUFDekIsa0JBQWtCLENBQW1CO0lBQzlDOztPQUVHO0lBQ00sbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQ3JDO1FBQ0UsSUFBRyxJQUFJLENBQUMsV0FBVyxLQUFLLElBQUk7WUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQ3ZDLENBQUM7SUFDRCxRQUFRO1FBQ1AsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUE7SUFDekMsQ0FBQztJQUNELFNBQVMsR0FBRyxJQUFJLGFBQWEsRUFBWSxDQUFDO0lBQzFDLFdBQVcsR0FBRyxHQUFhLEVBQUU7UUFDM0IsT0FBTztZQUNMLEdBQUcsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUNwQixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLFNBQVMsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPO1lBQzdFLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZTtZQUMzQixLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWU7WUFDM0IsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQztJQUNKLENBQUMsQ0FBQTtJQUdELE1BQU0sQ0FBQyxzQkFBc0IsQ0FBSSxHQUEyQixFQUFFLEdBQVE7UUFDcEUsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO3VHQXJDUSxtQkFBbUI7MkZBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFKL0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsY0FBYztvQkFDeEIsVUFBVSxFQUFFLElBQUk7aUJBQ25CO3dEQUlZLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUlHLG1CQUFtQjtzQkFBM0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgVGVtcGxhdGVSZWYsIElucHV0LCBpbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDZGtDb2x1bW5EZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvdGFibGUnO1xyXG5pbXBvcnQgeyBTb3J0RGVmLCBNZXRhRGF0YSwgRmllbGRUeXBlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZXBvcnQtZGVmJztcclxuaW1wb3J0IHsgVGFibGVCdWlsZGVyIH0gZnJvbSAnLi4vY2xhc3Nlcy90YWJsZS1idWlsZGVyJztcclxuaW1wb3J0IHsgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW50ZXJmYWNlIEN1c3RvbUNlbGxDb250ZXh0PFQ+IHtcclxuICAkaW1wbGljaXQ6IFQsXHJcbiAgZWxlbWVudDogVCxcclxufVxyXG4vLyBoZXJlIGlzIGhvdyB0byB1c2UgaXRcclxuLy8gPGdlbmVyaWMtdGFibGUgW3JlcG9ydF09XCJyZXBvcnRcIj5cclxuLy8gICAgIDxwICpjdXN0b21DZWxsPVwiJ2NvbHVtbjEnOyBsZXQgZWxlbWVudCA9IGVsZW1lbnRcIiBbY2xhc3MubWFrZU1lUmVkXT1cImVsZW1lbnQ/LnBvcnRcIj5JZiBQb3J0LCBpIHdpbGwgYmUgcmVkPC9wPlxyXG4vLyAgICAgPHAgKmN1c3RvbUNlbGw9XCInY29sdW1uMidcIj5JIGFtIGN1c3RvbSBjZWxsIHR3byA8L3A+XHJcbi8vIDwvZ2VuZXJpYy10YWJsZT5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1tjdXN0b21DZWxsXScsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdXN0b21DZWxsRGlyZWN0aXZlPFQgPSBhbnk+IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIHByaXZhdGUgdGVtcGxhdGVSZWYgPSBpbmplY3Q8VGVtcGxhdGVSZWY8YW55Pj4oVGVtcGxhdGVSZWYsIHsgb3B0aW9uYWw6IHRydWUgfSk7XHJcbiAgICBwdWJsaWMgY29sdW1uRGVmID0gaW5qZWN0KENka0NvbHVtbkRlZiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcclxuICAgIEBJbnB1dCgpIGN1c3RvbUNlbGwhOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBkaXNwbGF5TmFtZT86IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHByZVNvcnQ/OiBTb3J0RGVmO1xyXG4gICAgQElucHV0KCkgVGVtcGxhdGVSZWYhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gICAgQElucHV0KCkgY3VzdG9tQ2VsbE9yZGVyPzogbnVtYmVyO1xyXG4gICAgQElucHV0KCkgY3VzdG9tQ2VsbFdpZHRoPzogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgY3VzdG9tQ2VsbFRhYmxlUmVmPzogVGFibGVCdWlsZGVyPFQ+O1xyXG4gICAgLyoqXHJcbiAgICAgKiB0cnVlIGlmIGNvbHVtbiBub3QgbWFwcGVkIHRvIGEgcHJvcGVydHkgaW4gdGhlIGRhdGEgc291cmNlLiBEZWZhdWx0IGlzIGZhbHNlLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBjdXN0b21DZWxsTm90TWFwcGVkID0gZmFsc2U7XHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgaWYodGhpcy50ZW1wbGF0ZVJlZiAhPT0gbnVsbClcclxuICAgICAgICB0aGlzLlRlbXBsYXRlUmVmID0gdGhpcy50ZW1wbGF0ZVJlZjtcclxuICAgICB9XHJcbiAgICAgbmdPbkluaXQoKSB7XHJcbiAgICAgIHRoaXMuJG1ldGFEYXRhLm5leHQodGhpcy5nZXRNZXRhRGF0YSgpKVxyXG4gICAgfVxyXG4gICAgJG1ldGFEYXRhID0gbmV3IFJlcGxheVN1YmplY3Q8TWV0YURhdGE+KCk7XHJcbiAgICBnZXRNZXRhRGF0YSA9ICgpOiBNZXRhRGF0YSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAga2V5OiB0aGlzLmN1c3RvbUNlbGwsXHJcbiAgICAgICAgZGlzcGxheU5hbWU6IHRoaXMuZGlzcGxheU5hbWUsXHJcbiAgICAgICAgcHJlU29ydDogdGhpcy5wcmVTb3J0LFxyXG4gICAgICAgIGZpZWxkVHlwZTogdGhpcy5jdXN0b21DZWxsTm90TWFwcGVkID8gRmllbGRUeXBlLk5vdE1hcHBlZCA6IEZpZWxkVHlwZS5Vbmtub3duLFxyXG4gICAgICAgIG9yZGVyOiB0aGlzLmN1c3RvbUNlbGxPcmRlcixcclxuICAgICAgICB3aWR0aDogdGhpcy5jdXN0b21DZWxsV2lkdGgsXHJcbiAgICAgICAgY3VzdG9tQ2VsbDogdHJ1ZSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIFxyXG5cclxuICAgIHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkPFQ+KGRpcjogQ3VzdG9tQ2VsbERpcmVjdGl2ZTxUPiwgY3R4OiBhbnkpOiBjdHggaXMgQ3VzdG9tQ2VsbENvbnRleHQ8VD4ge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from './custom-cell-directive';
|
|
2
|
+
export * from './multi-sort.directive';
|
|
3
|
+
export * from './resize-column.directive';
|
|
4
|
+
export * from './table-wrapper.directive';
|
|
5
|
+
export * from './tb-filter.directive';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9kaXJlY3RpdmVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY3VzdG9tLWNlbGwtZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9tdWx0aS1zb3J0LmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcmVzaXplLWNvbHVtbi5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3RhYmxlLXdyYXBwZXIuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi90Yi1maWx0ZXIuZGlyZWN0aXZlJztcclxuXHJcbiJdfQ==
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Directive, inject } from '@angular/core';
|
|
2
|
+
import { MatSort } from '@angular/material/sort';
|
|
3
|
+
import { distinctUntilChanged, map } from 'rxjs/operators';
|
|
4
|
+
import { TableStore } from '../classes/table-store';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class MultiSortDirective extends MatSort {
|
|
7
|
+
state = inject(TableStore);
|
|
8
|
+
constructor() {
|
|
9
|
+
super();
|
|
10
|
+
this.state.setSort(this.sortChange.pipe(distinctUntilChanged((f, s) => f.active === s.active && f.direction === s.direction), map(sc => ({ key: sc.active, direction: sc.direction }))));
|
|
11
|
+
this.state.on(this.state.sort$, (rules) => {
|
|
12
|
+
const topRule = { active: rules[0]?.active || '', direction: rules[0]?.direction || '' };
|
|
13
|
+
const topActiveChanged = topRule.active !== this.active || '';
|
|
14
|
+
const topDirectionChanged = topRule.direction !== this.direction || '';
|
|
15
|
+
if (topActiveChanged || topDirectionChanged) {
|
|
16
|
+
this.active = topRule.active;
|
|
17
|
+
this.direction = topRule.direction;
|
|
18
|
+
this.sortChange.emit(topRule);
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: MultiSortDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
23
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: MultiSortDirective, isStandalone: true, selector: "[multiSort]", inputs: { disabled: ["matSortDisabled", "disabled"] }, providers: [
|
|
24
|
+
{ provide: MatSort, useExisting: MultiSortDirective }
|
|
25
|
+
], exportAs: ["multiSort"], usesInheritance: true, ngImport: i0 });
|
|
26
|
+
}
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: MultiSortDirective, decorators: [{
|
|
28
|
+
type: Directive,
|
|
29
|
+
args: [{
|
|
30
|
+
selector: '[multiSort]',
|
|
31
|
+
exportAs: 'multiSort',
|
|
32
|
+
inputs: ['disabled: matSortDisabled'],
|
|
33
|
+
providers: [
|
|
34
|
+
{ provide: MatSort, useExisting: MultiSortDirective }
|
|
35
|
+
],
|
|
36
|
+
standalone: true
|
|
37
|
+
}]
|
|
38
|
+
}], ctorParameters: () => [] });
|
|
39
|
+
export function isDifferent(a, b) {
|
|
40
|
+
if (a.length !== b.length) {
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
for (let i = 0; i < a.length; i++) {
|
|
44
|
+
if (a[i].active !== b[i].active || a[i].direction !== b[i].direction) {
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc29ydC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9kaXJlY3RpdmVzL211bHRpLXNvcnQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsT0FBTyxFQUF1QixNQUFNLHdCQUF3QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxvQkFBb0IsRUFBMkIsR0FBRyxFQUFPLE1BQU0sZ0JBQWdCLENBQUM7QUFDekYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQVdwRCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsT0FBTztJQUNyQyxLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBR25DO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDckMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLFNBQVMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQ2xGLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQ1gsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQ2hCLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDUixNQUFNLE9BQU8sR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsSUFBSSxFQUFtQixFQUFDLENBQUM7WUFDekcsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO1lBQzlELE1BQU0sbUJBQW1CLEdBQUcsT0FBTyxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztZQUN2RSxJQUFHLGdCQUFnQixJQUFJLG1CQUFtQixFQUFDLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztnQkFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNoQyxDQUFDO1FBQ0gsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO3VHQXRCVSxrQkFBa0I7MkZBQWxCLGtCQUFrQixpSEFMbEI7WUFDVCxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFO1NBQ3REOzsyRkFHVSxrQkFBa0I7a0JBVDlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFFBQVEsRUFBRSxXQUFXO29CQUNyQixNQUFNLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztvQkFDckMsU0FBUyxFQUFFO3dCQUNULEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLG9CQUFvQixFQUFFO3FCQUN0RDtvQkFDRCxVQUFVLEVBQUUsSUFBSTtpQkFDakI7O0FBMkJELE1BQU0sVUFBVSxXQUFXLENBQUMsQ0FBUyxFQUFFLENBQVM7SUFDOUMsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3JFLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIE9uSW5pdCwgT25EZXN0cm95LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0U29ydCwgU29ydCwgU29ydERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZGlzdGluY3RVbnRpbEtleUNoYW5nZWQsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBUYWJsZVN0b3JlIH0gZnJvbSAnLi4vY2xhc3Nlcy90YWJsZS1zdG9yZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1ttdWx0aVNvcnRdJyxcclxuICBleHBvcnRBczogJ211bHRpU29ydCcsXHJcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkOiBtYXRTb3J0RGlzYWJsZWQnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHsgcHJvdmlkZTogTWF0U29ydCwgdXNlRXhpc3Rpbmc6IE11bHRpU29ydERpcmVjdGl2ZSB9XHJcbiAgXSxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNdWx0aVNvcnREaXJlY3RpdmUgZXh0ZW5kcyBNYXRTb3J0IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgc3RhdGUgPSBpbmplY3QoVGFibGVTdG9yZSk7XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLnN0YXRlLnNldFNvcnQodGhpcy5zb3J0Q2hhbmdlLnBpcGUoXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChmLHMpID0+IGYuYWN0aXZlID09PSBzLmFjdGl2ZSAmJiBmLmRpcmVjdGlvbiA9PT0gcy5kaXJlY3Rpb24pLFxyXG4gICAgICAgbWFwKHNjID0+ICh7IGtleTogc2MuYWN0aXZlLCBkaXJlY3Rpb246IHNjLmRpcmVjdGlvbiB9KSkpKTtcclxuICAgIHRoaXMuc3RhdGUub24oXHJcbiAgICAgIHRoaXMuc3RhdGUuc29ydCQsXHJcbiAgICAgIChydWxlcykgPT4ge1xyXG4gICAgICAgIGNvbnN0IHRvcFJ1bGUgPSB7IGFjdGl2ZTogcnVsZXNbMF0/LmFjdGl2ZSB8fCAnJywgZGlyZWN0aW9uOiBydWxlc1swXT8uZGlyZWN0aW9uIHx8ICcnIGFzIFNvcnREaXJlY3Rpb259O1xyXG4gICAgICAgIGNvbnN0IHRvcEFjdGl2ZUNoYW5nZWQgPSB0b3BSdWxlLmFjdGl2ZSAhPT0gdGhpcy5hY3RpdmUgfHwgJyc7XHJcbiAgICAgICAgY29uc3QgdG9wRGlyZWN0aW9uQ2hhbmdlZCA9IHRvcFJ1bGUuZGlyZWN0aW9uICE9PSB0aGlzLmRpcmVjdGlvbiB8fCAnJztcclxuICAgICAgICBpZih0b3BBY3RpdmVDaGFuZ2VkIHx8IHRvcERpcmVjdGlvbkNoYW5nZWQpe1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmUgPSB0b3BSdWxlLmFjdGl2ZTtcclxuICAgICAgICAgIHRoaXMuZGlyZWN0aW9uID0gdG9wUnVsZS5kaXJlY3Rpb247XHJcbiAgICAgICAgICB0aGlzLnNvcnRDaGFuZ2UuZW1pdCh0b3BSdWxlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGlzRGlmZmVyZW50KGE6IFNvcnRbXSwgYjogU29ydFtdKSB7XHJcbiAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykge1xyXG4gICAgaWYgKGFbaV0uYWN0aXZlICE9PSBiW2ldLmFjdGl2ZSB8fCBhW2ldLmRpcmVjdGlvbiAhPT0gYltpXS5kaXJlY3Rpb24pIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9IFxyXG4gIH1cclxuICByZXR1cm4gZmFsc2U7XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { Directive, Renderer2, Input, ElementRef, booleanAttribute, inject } from "@angular/core";
|
|
2
|
+
import { fromEvent } from "rxjs";
|
|
3
|
+
import { filter, map, switchMap, takeUntil } from "rxjs/operators";
|
|
4
|
+
import { defaultShareReplay } from "../../rxjs";
|
|
5
|
+
import { TableStore } from "../classes/table-store";
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class ResizeColumnDirective {
|
|
8
|
+
renderer = inject(Renderer2);
|
|
9
|
+
el = inject(ElementRef);
|
|
10
|
+
store = inject(TableStore);
|
|
11
|
+
resizable = false;
|
|
12
|
+
key;
|
|
13
|
+
ngOnInit() {
|
|
14
|
+
if (this.resizable) {
|
|
15
|
+
const { table, columnHead } = this.getTableAndColumnHeadHtmlElements();
|
|
16
|
+
const resizer = this.createResizerSpanInColumnHead(columnHead);
|
|
17
|
+
const aggregateMouseEventsMapped$ = this.mouseDownThroughMouseUpEventMapper(resizer, columnHead, table);
|
|
18
|
+
const resizeColsData$ = aggregateMouseEventsMapped$.pipe(filter(({ mouseMove }) => !!mouseMove.buttons), map(({ mouseDownData, mouseMove }) => {
|
|
19
|
+
const { newTableWidth, newColumnWidth } = this.calculateNewWidths(mouseDownData, mouseMove);
|
|
20
|
+
return ({
|
|
21
|
+
key: this.key,
|
|
22
|
+
widthInPixel: newColumnWidth,
|
|
23
|
+
tableSize: newTableWidth,
|
|
24
|
+
});
|
|
25
|
+
}), defaultShareReplay());
|
|
26
|
+
this.store.setUserDefinedWidth(resizeColsData$.pipe(map(resizeData => ([{ key: this.key, widthInPixel: resizeData.widthInPixel }]))));
|
|
27
|
+
this.store.setTableWidth(resizeColsData$.pipe(map(resizeData => resizeData.tableSize)));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
createResizerSpanInColumnHead(columnHead) {
|
|
31
|
+
const resizer = this.renderer.createElement("span");
|
|
32
|
+
this.renderer.addClass(resizer, "resize-holder");
|
|
33
|
+
resizer.style['cursor'] = 'col-resize';
|
|
34
|
+
resizer.style['user-select'] = 'none';
|
|
35
|
+
resizer.style['width'] = '10px';
|
|
36
|
+
resizer.style['height'] = '100%';
|
|
37
|
+
resizer.style['position'] = 'absolute';
|
|
38
|
+
resizer.style['right'] = '0';
|
|
39
|
+
resizer.style['top'] = '0';
|
|
40
|
+
resizer.style['z-index'] = '1';
|
|
41
|
+
this.renderer.appendChild(columnHead, resizer);
|
|
42
|
+
return resizer;
|
|
43
|
+
}
|
|
44
|
+
getTableAndColumnHeadHtmlElements() {
|
|
45
|
+
const columnHead = this.el.nativeElement;
|
|
46
|
+
const row = this.renderer.parentNode(columnHead);
|
|
47
|
+
const table = this.renderer.parentNode(row);
|
|
48
|
+
return ({ table, columnHead });
|
|
49
|
+
}
|
|
50
|
+
mouseDownThroughMouseUpEventMapper(resizer, columnHead, table) {
|
|
51
|
+
return this.resizerMouseDownEventMapper(resizer, columnHead, table)
|
|
52
|
+
.pipe(switchMap(mouseDownData => fromEvent(table, "mousemove").pipe(map(mouseMove => ({ mouseDownData, mouseMove })), takeUntil(fromEvent(document, "mouseup")))));
|
|
53
|
+
}
|
|
54
|
+
resizerMouseDownEventMapper(resizer, columnHead, table) {
|
|
55
|
+
return fromEvent(resizer, "mousedown").pipe(map(event => ({
|
|
56
|
+
startPageX: event.pageX,
|
|
57
|
+
startColumnWidth: this.getElementWidth(columnHead),
|
|
58
|
+
startTableWidth: this.getElementWidth(table),
|
|
59
|
+
})));
|
|
60
|
+
}
|
|
61
|
+
calculateNewWidths(mouseDownData, mouseMove) {
|
|
62
|
+
const change = (mouseMove.pageX - mouseDownData.startPageX);
|
|
63
|
+
let newColumnWidth = mouseDownData.startColumnWidth + change;
|
|
64
|
+
if (newColumnWidth < 1) {
|
|
65
|
+
newColumnWidth = 1;
|
|
66
|
+
}
|
|
67
|
+
const columnChange = newColumnWidth - mouseDownData.startColumnWidth;
|
|
68
|
+
const newTableWidth = (mouseDownData.startTableWidth + columnChange);
|
|
69
|
+
return ({ newTableWidth, newColumnWidth });
|
|
70
|
+
}
|
|
71
|
+
getElementWidth = (elem) => (+(globalThis.getComputedStyle(elem).getPropertyValue('width').replace('px', '')));
|
|
72
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ResizeColumnDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
73
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.2", type: ResizeColumnDirective, isStandalone: true, selector: "[resizeColumn]", inputs: { resizable: ["resizeColumn", "resizable", booleanAttribute], key: "key" }, ngImport: i0 });
|
|
74
|
+
}
|
|
75
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ResizeColumnDirective, decorators: [{
|
|
76
|
+
type: Directive,
|
|
77
|
+
args: [{
|
|
78
|
+
selector: "[resizeColumn]",
|
|
79
|
+
standalone: true
|
|
80
|
+
}]
|
|
81
|
+
}], propDecorators: { resizable: [{
|
|
82
|
+
type: Input,
|
|
83
|
+
args: [{ alias: 'resizeColumn', transform: booleanAttribute }]
|
|
84
|
+
}], key: [{
|
|
85
|
+
type: Input
|
|
86
|
+
}] } });
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLWNvbHVtbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9kaXJlY3RpdmVzL3Jlc2l6ZS1jb2x1bW4uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNoRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBTXBELE1BQU0sT0FBTyxxQkFBcUI7SUFDeEIsUUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM3QixFQUFFLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hDLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFcUMsU0FBUyxHQUFxQixLQUFLLENBQUM7SUFFM0YsR0FBRyxDQUFVO0lBRXRCLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUMsQ0FBQztZQUNsQixNQUFNLEVBQUMsS0FBSyxFQUFFLFVBQVUsRUFBQyxHQUFHLElBQUksQ0FBQyxpQ0FBaUMsRUFBRSxDQUFDO1lBQ3JFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUUvRCxNQUFNLDJCQUEyQixHQUFHLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxP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QUMsRUFBQyxhQUFhLEVBQUMsY0FBYyxFQUFDLENBQUMsQ0FBQTtJQUN6QyxDQUFDO0lBQ0QsZUFBZSxHQUFHLENBQUMsSUFBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO3VHQTFGOUcscUJBQXFCOzJGQUFyQixxQkFBcUIscUdBS1ksZ0JBQWdCOzsyRkFMakQscUJBQXFCO2tCQUpqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs4QkFNaUUsU0FBUztzQkFBeEUsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRyxjQUFjLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUVyRCxHQUFHO3NCQUFYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIE9uSW5pdCwgUmVuZGVyZXIyLCBJbnB1dCwgRWxlbWVudFJlZiwgYm9vbGVhbkF0dHJpYnV0ZSwgaW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgZnJvbUV2ZW50IH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IGRlZmF1bHRTaGFyZVJlcGxheSB9IGZyb20gXCIuLi8uLi9yeGpzXCI7XHJcbmltcG9ydCB7IFRhYmxlU3RvcmUgfSBmcm9tIFwiLi4vY2xhc3Nlcy90YWJsZS1zdG9yZVwiO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6IFwiW3Jlc2l6ZUNvbHVtbl1cIixcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZXNpemVDb2x1bW5EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXR7XHJcbiAgcHJpdmF0ZSByZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xyXG4gIHByaXZhdGUgZWwgPSBpbmplY3QoRWxlbWVudFJlZik7XHJcbiAgc3RvcmUgPSBpbmplY3QoVGFibGVTdG9yZSk7XHJcblxyXG4gIEBJbnB1dCh7IGFsaWFzIDogJ3Jlc2l6ZUNvbHVtbicsIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSByZXNpemFibGU6IGJvb2xlYW4gfCBzdHJpbmcgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkga2V5ITogc3RyaW5nO1xyXG5cclxuICBuZ09uSW5pdCgpe1xyXG4gICAgaWYgKHRoaXMucmVzaXphYmxlKXtcclxuICAgICAgY29uc3Qge3RhYmxlLCBjb2x1bW5IZWFkfSA9IHRoaXMuZ2V0VGFibGVBbmRDb2x1bW5IZWFkSHRtbEVsZW1lbnRzKCk7XHJcbiAgICAgIGNvbnN0IHJlc2l6ZXIgPSB0aGlzLmNyZWF0ZVJlc2l6ZXJTcGFuSW5Db2x1bW5IZWFkKGNvbHVtbkhlYWQpO1xyXG5cclxuICAgICAgY29uc3QgYWdncmVnYXRlTW91c2VFdmVudHNNYXBwZWQkID0gdGhpcy5tb3VzZURvd25UaHJvdWdoTW91c2VVcEV2ZW50TWFwcGVyKHJlc2l6ZXIsY29sdW1uSGVhZCx0YWJsZSlcclxuXHJcbiAgICAgIGNvbnN0IHJlc2l6ZUNvbHNEYXRhJCA9IGFnZ3JlZ2F0ZU1vdXNlRXZlbnRzTWFwcGVkJC5waXBlKFxyXG4gICAgICAgIGZpbHRlcigoe21vdXNlTW92ZX0pPT4hIW1vdXNlTW92ZS5idXR0b25zKSxcclxuICAgICAgICBtYXAoICh7bW91c2VEb3duRGF0YSxtb3VzZU1vdmV9KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHtuZXdUYWJsZVdpZHRoLG5ld0NvbHVtbldpZHRofSAgPSB0aGlzLmNhbGN1bGF0ZU5ld1dpZHRocyhtb3VzZURvd25EYXRhLG1vdXNlTW92ZSlcclxuICAgICAgICAgICAgcmV0dXJuICh7XHJcbiAgICAgICAgICAgICAga2V5OnRoaXMua2V5LFxyXG4gICAgICAgICAgICAgIHdpZHRoSW5QaXhlbDpuZXdDb2x1bW5XaWR0aCxcclxuICAgICAgICAgICAgICB0YWJsZVNpemU6bmV3VGFibGVXaWR0aCxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgIGRlZmF1bHRTaGFyZVJlcGxheSgpXHJcbiAgICAgICk7XHJcblxyXG4gICAgICB0aGlzLnN0b3JlLnNldFVzZXJEZWZpbmVkV2lkdGgocmVzaXplQ29sc0RhdGEkLnBpcGUoXHJcbiAgICAgICAgbWFwKHJlc2l6ZURhdGEgPT4gKFt7a2V5OiB0aGlzLmtleSwgd2lkdGhJblBpeGVsOiByZXNpemVEYXRhLndpZHRoSW5QaXhlbCB9XSkpXHJcbiAgICAgICkpO1xyXG5cclxuICAgICAgdGhpcy5zdG9yZS5zZXRUYWJsZVdpZHRoKHJlc2l6ZUNvbHNEYXRhJC5waXBlKFxyXG4gICAgICAgIG1hcChyZXNpemVEYXRhID0+IHJlc2l6ZURhdGEudGFibGVTaXplICkpKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBjcmVhdGVSZXNpemVyU3BhbkluQ29sdW1uSGVhZChjb2x1bW5IZWFkOkhUTUxFbGVtZW50KXtcclxuICAgIGNvbnN0IHJlc2l6ZXIgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhyZXNpemVyLCBcInJlc2l6ZS1ob2xkZXJcIik7XHJcbiAgICByZXNpemVyLnN0eWxlWydjdXJzb3InXT0nY29sLXJlc2l6ZSc7XHJcbiAgICByZXNpemVyLnN0eWxlWyd1c2VyLXNlbGVjdCddPSdub25lJztcclxuICAgIHJlc2l6ZXIuc3R5bGVbJ3dpZHRoJ109JzEwcHgnO1xyXG4gICAgcmVzaXplci5zdHlsZVsnaGVpZ2h0J109JzEwMCUnO1xyXG4gICAgcmVzaXplci5zdHlsZVsncG9zaXRpb24nXT0nYWJzb2x1dGUnO1xyXG4gICAgcmVzaXplci5zdHlsZVsncmlnaHQnXT0nMCc7XHJcbiAgICByZXNpemVyLnN0eWxlWyd0b3AnXT0nMCc7XHJcbiAgICByZXNpemVyLnN0eWxlWyd6LWluZGV4J109JzEnO1xyXG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChjb2x1bW5IZWFkLCByZXNpemVyKTtcclxuICAgIHJldHVybiByZXNpemVyO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGFibGVBbmRDb2x1bW5IZWFkSHRtbEVsZW1lbnRzKCk6e3RhYmxlOkhUTUxFbGVtZW50LGNvbHVtbkhlYWQ6SFRNTEVsZW1lbnR9e1xyXG4gICAgY29uc3QgY29sdW1uSGVhZDogSFRNTEVsZW1lbnQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBjb25zdCByb3cgPSB0aGlzLnJlbmRlcmVyLnBhcmVudE5vZGUoY29sdW1uSGVhZCk7XHJcbiAgICBjb25zdCB0YWJsZSA9IHRoaXMucmVuZGVyZXIucGFyZW50Tm9kZShyb3cpO1xyXG4gICAgcmV0dXJuICh7dGFibGUsY29sdW1uSGVhZH0pXHJcbiAgfVxyXG5cclxuICBtb3VzZURvd25UaHJvdWdoTW91c2VVcEV2ZW50TWFwcGVyKHJlc2l6ZXI6SFRNTEVsZW1lbnQsIGNvbHVtbkhlYWQ6SFRNTEVsZW1lbnQsIHRhYmxlOkhUTUxFbGVtZW50KXtcclxuICAgIHJldHVybiB0aGlzLnJlc2l6ZXJNb3VzZURvd25FdmVudE1hcHBlcihyZXNpemVyLGNvbHVtbkhlYWQsdGFibGUpXHJcbiAgICAucGlwZShcclxuICAgICAgc3dpdGNoTWFwKCBtb3VzZURvd25EYXRhID0+IGZyb21FdmVudDxNb3VzZUV2ZW50Pih0YWJsZSwgXCJtb3VzZW1vdmVcIikucGlwZShcclxuICAgICAgICBtYXAoIG1vdXNlTW92ZSA9PiAoe21vdXNlRG93bkRhdGEsIG1vdXNlTW92ZX0pKSxcclxuICAgICAgICB0YWtlVW50aWwoZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50LCBcIm1vdXNldXBcIikpXHJcbiAgICAgICkgKSxcclxuICAgIClcclxuICB9XHJcbiAgcmVzaXplck1vdXNlRG93bkV2ZW50TWFwcGVyKHJlc2l6ZXI6SFRNTEVsZW1lbnQsIGNvbHVtbkhlYWQ6SFRNTEVsZW1lbnQsIHRhYmxlOkhUTUxFbGVtZW50KXtcclxuICAgIHJldHVybiBmcm9tRXZlbnQ8TW91c2VFdmVudD4ocmVzaXplciwgXCJtb3VzZWRvd25cIikucGlwZShcclxuICAgICAgbWFwKGV2ZW50ID0+ICh7XHJcbiAgICAgICAgc3RhcnRQYWdlWDogZXZlbnQucGFnZVgsXHJcbiAgICAgICAgc3RhcnRDb2x1bW5XaWR0aDogdGhpcy5nZXRFbGVtZW50V2lkdGgoY29sdW1uSGVhZCksXHJcbiAgICAgICAgc3RhcnRUYWJsZVdpZHRoOiB0aGlzLmdldEVsZW1lbnRXaWR0aCh0YWJsZSksXHJcbiAgICAgIH0pKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGNhbGN1bGF0ZU5ld1dpZHRocyhtb3VzZURvd25EYXRhOiBNb3VzZURvd25EYXRhLCBtb3VzZU1vdmU6IE1vdXNlRXZlbnQpOntuZXdUYWJsZVdpZHRoOm51bWJlcixuZXdDb2x1bW5XaWR0aDpudW1iZXJ9e1xyXG4gICAgY29uc3QgY2hhbmdlID0gKG1vdXNlTW92ZS5wYWdlWCAtIG1vdXNlRG93bkRhdGEuc3RhcnRQYWdlWCApO1xyXG4gICAgbGV0IG5ld0NvbHVtbldpZHRoID0gbW91c2VEb3duRGF0YS5zdGFydENvbHVtbldpZHRoICsgY2hhbmdlO1xyXG4gICAgaWYobmV3Q29sdW1uV2lkdGggPCAxKXtcclxuICAgICAgbmV3Q29sdW1uV2lkdGggPSAxO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29sdW1uQ2hhbmdlID0gbmV3Q29sdW1uV2lkdGggLSBtb3VzZURvd25EYXRhLnN0YXJ0Q29sdW1uV2lkdGg7XHJcbiAgICBjb25zdCBuZXdUYWJsZVdpZHRoID0gKG1vdXNlRG93bkRhdGEuc3RhcnRUYWJsZVdpZHRoICsgY29sdW1uQ2hhbmdlKTtcclxuICAgIHJldHVybiAoe25ld1RhYmxlV2lkdGgsbmV3Q29sdW1uV2lkdGh9KVxyXG4gIH1cclxuICBnZXRFbGVtZW50V2lkdGggPSAoZWxlbTpIVE1MRWxlbWVudCkgPT4gKCsoZ2xvYmFsVGhpcy5nZXRDb21wdXRlZFN0eWxlKGVsZW0pLmdldFByb3BlcnR5VmFsdWUoJ3dpZHRoJykucmVwbGFjZSgncHgnLCcnKSkpXHJcblxyXG59XHJcbmludGVyZmFjZSBNb3VzZURvd25EYXRhe1xyXG4gIHN0YXJ0UGFnZVg6bnVtYmVyLFxyXG4gIHN0YXJ0Q29sdW1uV2lkdGg6bnVtYmVyLFxyXG4gIHN0YXJ0VGFibGVXaWR0aDpudW1iZXIsXHJcbn1cclxuIl19
|