@mediusinc/mng-commons 5.3.0-rc.0 → 5.3.0-rc.2

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.
Files changed (101) hide show
  1. package/core/components/pages/error/error.page.component.d.ts +3 -0
  2. package/core/components/pages/not-found/not-found.page.component.d.ts +3 -0
  3. package/core/data-list/filter-metadata.model.d.ts +20 -0
  4. package/core/enum/enum-helpers.d.ts +5 -0
  5. package/core/helpers/number.d.ts +5 -0
  6. package/core/helpers/type-helpers.d.ts +1 -0
  7. package/core/index.d.ts +3 -1
  8. package/core/provide.d.ts +3 -2
  9. package/core/services/{local-storage-config.service.d.ts → commons-storage.service.d.ts} +4 -3
  10. package/core/services/commons.service.d.ts +24 -0
  11. package/core/services/tokens/module-config.token.d.ts +30 -8
  12. package/esm2022/core/components/pages/error/error.page.component.mjs +4 -1
  13. package/esm2022/core/components/pages/not-found/not-found.page.component.mjs +4 -1
  14. package/esm2022/core/data-list/data-list-params-helpers.mjs +3 -1
  15. package/esm2022/core/data-list/filter-metadata.model.mjs +2 -0
  16. package/esm2022/core/enum/enum-helpers.mjs +10 -1
  17. package/esm2022/core/helpers/date.mjs +2 -2
  18. package/esm2022/core/helpers/number.mjs +19 -0
  19. package/esm2022/core/helpers/type-helpers.mjs +1 -1
  20. package/esm2022/core/index.mjs +4 -2
  21. package/esm2022/core/pipes/boolean.pipe.mjs +7 -1
  22. package/esm2022/core/pipes/enum.pipe.mjs +16 -5
  23. package/esm2022/core/provide.mjs +6 -5
  24. package/esm2022/core/router/route-builder.mjs +8 -1
  25. package/esm2022/core/security/permission.guard.mjs +2 -2
  26. package/esm2022/core/security/permission.service.mjs +2 -2
  27. package/esm2022/core/services/commons-storage.service.mjs +31 -0
  28. package/esm2022/core/services/commons.service.mjs +25 -1
  29. package/esm2022/core/services/tokens/module-config.token.mjs +1 -1
  30. package/esm2022/filter/descriptors/filter-lookup.descriptor.mjs +2 -3
  31. package/esm2022/filter/descriptors/filter.descriptor.mjs +76 -31
  32. package/esm2022/filter/models/filter.model.mjs +6 -1
  33. package/esm2022/form/components/date-range/date-range.component.mjs +45 -14
  34. package/esm2022/form/components/dropdown/dropdown.component.mjs +77 -93
  35. package/esm2022/form/components/number-range/number-range.component.mjs +29 -12
  36. package/esm2022/table/api/descriptors/column.descriptor.mjs +2 -1
  37. package/esm2022/table/api/descriptors/table.descriptor.mjs +11 -20
  38. package/esm2022/table/api/models/table-columns.model.mjs +1 -1
  39. package/esm2022/table/api/models/table.model.mjs +1 -1
  40. package/esm2022/table/components/column-filter/column-filter.component.mjs +396 -0
  41. package/esm2022/table/components/filter/filter-active-tag/filter-active-tag.component.mjs +52 -0
  42. package/esm2022/table/components/filter/filter-form/filter-form.component.mjs +197 -0
  43. package/esm2022/table/components/filter/filter-overlay-with-tag/filter-overlay-with-tag.component.mjs +135 -0
  44. package/esm2022/table/components/table/table.component.mjs +39 -30
  45. package/esm2022/table/helpers/filters.mjs +297 -0
  46. package/esm2022/table/index.mjs +13 -2
  47. package/esm2022/table/models/filter.model.mjs +2 -0
  48. package/esm2022/table/pipes/filter-value.pipe.mjs +77 -0
  49. package/esm2022/table/provide.mjs +19 -0
  50. package/esm2022/table/services/data-list.service.mjs +1 -1
  51. package/esm2022/table/services/table-feature-config.token.mjs +3 -0
  52. package/esm2022/tableview/action/components/editor/injector-context/action-editor-injector-context.component.mjs +2 -2
  53. package/esm2022/tableview/action/components/localization/data-language-dropdown.component.mjs +2 -2
  54. package/esm2022/tableview/api/editor/descriptors/field.descriptor.mjs +1 -1
  55. package/esm2022/tableview/api/editor/models/editor-fields.model.mjs +1 -1
  56. package/esm2022/tableview/api/tableview/descriptors/tableview.descriptor.mjs +11 -13
  57. package/esm2022/tableview/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +2 -2
  58. package/esm2022/tableview/tableview/components/tableview/tableview.component.mjs +3 -4
  59. package/fesm2022/mediusinc-mng-commons-core.mjs +103 -17
  60. package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
  61. package/fesm2022/mediusinc-mng-commons-filter.mjs +81 -32
  62. package/fesm2022/mediusinc-mng-commons-filter.mjs.map +1 -1
  63. package/fesm2022/mediusinc-mng-commons-form.mjs +149 -117
  64. package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
  65. package/fesm2022/mediusinc-mng-commons-table-api.mjs +11 -19
  66. package/fesm2022/mediusinc-mng-commons-table-api.mjs.map +1 -1
  67. package/fesm2022/mediusinc-mng-commons-table.mjs +836 -363
  68. package/fesm2022/mediusinc-mng-commons-table.mjs.map +1 -1
  69. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +10 -12
  70. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
  71. package/fesm2022/mediusinc-mng-commons-tableview.mjs +5 -5
  72. package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
  73. package/filter/descriptors/filter.descriptor.d.ts +60 -16
  74. package/filter/models/filter.model.d.ts +4 -0
  75. package/form/components/date-range/date-range.component.d.ts +9 -3
  76. package/form/components/dropdown/dropdown.component.d.ts +6 -7
  77. package/form/components/number-range/number-range.component.d.ts +8 -4
  78. package/i18n/en.json +40 -0
  79. package/i18n/sl.json +40 -0
  80. package/package.json +7 -7
  81. package/table/api/descriptors/table.descriptor.d.ts +7 -7
  82. package/table/api/models/table-columns.model.d.ts +3 -3
  83. package/table/api/models/table.model.d.ts +0 -12
  84. package/table/components/{column-filter-full/column-filter-full.component.d.ts → column-filter/column-filter.component.d.ts} +23 -38
  85. package/table/components/filter/filter-active-tag/filter-active-tag.component.d.ts +20 -0
  86. package/table/components/filter/filter-form/filter-form.component.d.ts +53 -0
  87. package/table/components/filter/filter-overlay-with-tag/filter-overlay-with-tag.component.d.ts +35 -0
  88. package/table/components/table/table.component.d.ts +11 -8
  89. package/table/helpers/filters.d.ts +31 -0
  90. package/table/index.d.ts +10 -1
  91. package/table/models/filter.model.d.ts +24 -0
  92. package/table/pipes/filter-value.pipe.d.ts +19 -0
  93. package/table/provide.d.ts +8 -0
  94. package/table/services/data-list.service.d.ts +3 -2
  95. package/table/services/table-feature-config.token.d.ts +6 -0
  96. package/tableview/api/editor/descriptors/field.descriptor.d.ts +3 -3
  97. package/tableview/api/editor/models/editor-fields.model.d.ts +4 -4
  98. package/tableview/api/tableview/descriptors/tableview.descriptor.d.ts +8 -6
  99. package/version-info.json +5 -5
  100. package/esm2022/core/services/local-storage-config.service.mjs +0 -29
  101. package/esm2022/table/components/column-filter-full/column-filter-full.component.mjs +0 -655
@@ -0,0 +1,20 @@
1
+ import { FilterMatchMode } from '@mediusinc/mng-commons/core';
2
+ import { ModelDescriptor } from '@mediusinc/mng-commons/model';
3
+ import { CommonsFilterMetadataWithDescriptor, FilterActiveTagEvent } from '../../../models/filter.model';
4
+ import * as i0 from "@angular/core";
5
+ export declare class FilterActiveTagComponent {
6
+ readonly FilterMatchMode: typeof FilterMatchMode;
7
+ model: import("@angular/core").InputSignal<ModelDescriptor<any, any>>;
8
+ filter: import("@angular/core").InputSignal<CommonsFilterMetadataWithDescriptor>;
9
+ edit: import("@angular/core").OutputEmitterRef<FilterActiveTagEvent>;
10
+ remove: import("@angular/core").OutputEmitterRef<FilterActiveTagEvent>;
11
+ label: import("@angular/core").Signal<string>;
12
+ matchMode: import("@angular/core").Signal<string | undefined>;
13
+ matchModeSymbol: import("@angular/core").Signal<string>;
14
+ value: import("@angular/core").Signal<any>;
15
+ onRemove(event: Event): void;
16
+ onEdit(event: Event): void;
17
+ private getPropertyLabelKey;
18
+ static ɵfac: i0.ɵɵFactoryDeclaration<FilterActiveTagComponent, never>;
19
+ static ɵcmp: i0.ɵɵComponentDeclaration<FilterActiveTagComponent, "mng-filter-active-tag", never, { "model": { "alias": "model"; "required": true; "isSignal": true; }; "filter": { "alias": "filter"; "required": true; "isSignal": true; }; }, { "edit": "edit"; "remove": "remove"; }, never, never, true, never>;
20
+ }
@@ -0,0 +1,53 @@
1
+ import { NgForm } from '@angular/forms';
2
+ import { SelectItem } from 'primeng/api';
3
+ import { OverlayPanel } from 'primeng/overlaypanel';
4
+ import { FilterMatchMode } from '@mediusinc/mng-commons/core';
5
+ import { FilterDescriptor, FilterLookupDescriptor, FilterLookupTypeEnum, FilterTypeEnum } from '@mediusinc/mng-commons/filter';
6
+ import { ModelDescriptor } from '@mediusinc/mng-commons/model';
7
+ import { CommonsFilterMetadataWithDescriptor, FilterFormEmitEvent } from '../../../models/filter.model';
8
+ import * as i0 from "@angular/core";
9
+ export declare class FilterFormComponent {
10
+ readonly lookupTypeDropdown: FilterLookupTypeEnum;
11
+ readonly lookupTypeAutocomplete: FilterLookupTypeEnum;
12
+ readonly FilterTypeEnum: typeof FilterTypeEnum;
13
+ readonly FilterMatchMode: typeof FilterMatchMode;
14
+ private readonly elementRef;
15
+ private readonly moduleConfig;
16
+ private readonly primeConfig;
17
+ private readonly translate;
18
+ title: import("@angular/core").InputSignal<string | undefined>;
19
+ descriptors: import("@angular/core").InputSignal<FilterDescriptor<any, any>[]>;
20
+ model: import("@angular/core").InputSignal<ModelDescriptor<any, import("@mediusinc/mng-commons/core").ClassOptType<any>>>;
21
+ filter: import("@angular/core").InputSignal<CommonsFilterMetadataWithDescriptor | undefined>;
22
+ overlay: import("@angular/core").InputSignal<OverlayPanel | undefined>;
23
+ disabledProperties: import("@angular/core").InputSignal<string[]>;
24
+ apply: import("@angular/core").OutputEmitterRef<FilterFormEmitEvent>;
25
+ propertyOptionsWithTranslations: import("@angular/core").Signal<{
26
+ property: string;
27
+ label: string;
28
+ disabled: boolean;
29
+ }[]>;
30
+ selectedDescriptor: import("@angular/core").Signal<FilterDescriptor<any, any> | undefined>;
31
+ selectedDescriptorAsLookup: import("@angular/core").Signal<FilterLookupDescriptor<any, any, any> | undefined>;
32
+ matchModeOptions: import("@angular/core").Signal<SelectItem<any>[]>;
33
+ isEdit: import("@angular/core").Signal<boolean>;
34
+ formSubmitted: import("@angular/core").WritableSignal<boolean>;
35
+ formErrorMessage: import("@angular/core").WritableSignal<any>;
36
+ dateConfig: import("@angular/core").Signal<import("../../../models/filter.model").FilterDateConfig | undefined>;
37
+ numberConfig: import("@angular/core").Signal<{
38
+ fractionsMin: number | undefined;
39
+ fractionsMax: number | undefined;
40
+ } | undefined>;
41
+ private filterForm;
42
+ propertyModel: import("@angular/core").WritableSignal<string | null>;
43
+ matchModeModel: import("@angular/core").WritableSignal<string | null>;
44
+ valueModel: import("@angular/core").WritableSignal<any>;
45
+ caseSensitiveModel: import("@angular/core").WritableSignal<boolean>;
46
+ private serializationCfg;
47
+ constructor();
48
+ onFormSubmit(form: NgForm): void;
49
+ private resetForm;
50
+ private getPropertyLabelKey;
51
+ static ɵfac: i0.ɵɵFactoryDeclaration<FilterFormComponent, never>;
52
+ static ɵcmp: i0.ɵɵComponentDeclaration<FilterFormComponent, "mng-filter-form", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "descriptors": { "alias": "descriptors"; "required": true; "isSignal": true; }; "model": { "alias": "model"; "required": true; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "overlay": { "alias": "overlay"; "required": false; "isSignal": true; }; "disabledProperties": { "alias": "disabledProperties"; "required": false; "isSignal": true; }; }, { "apply": "apply"; }, never, never, true, never>;
53
+ }
@@ -0,0 +1,35 @@
1
+ import { Signal, TemplateRef } from '@angular/core';
2
+ import { TemplateDirective } from '@mediusinc/mng-commons/core';
3
+ import { FilterDescriptor } from '@mediusinc/mng-commons/filter';
4
+ import { ModelDescriptor } from '@mediusinc/mng-commons/model';
5
+ import { CommonsFilterMetadataWithDescriptor, FilterActiveTagEvent, FilterFormEmitEvent } from '../../../models/filter.model';
6
+ import * as i0 from "@angular/core";
7
+ export declare class FilterOverlayWithTagComponent {
8
+ private readonly primeTable;
9
+ private readonly dataListService;
10
+ private readonly moduleConfig;
11
+ descriptors: import("@angular/core").InputSignal<FilterDescriptor<any, any>[]>;
12
+ model: import("@angular/core").InputSignal<ModelDescriptor<any, import("@mediusinc/mng-commons/core").ClassOptType<any>>>;
13
+ private filterOverlay;
14
+ templates: Signal<readonly TemplateDirective[]>;
15
+ titleTemplate: Signal<TemplateRef<any> | null>;
16
+ filters: Signal<{
17
+ [p: string]: CommonsFilterMetadataWithDescriptor;
18
+ }>;
19
+ activeFilters: Signal<CommonsFilterMetadataWithDescriptor[]>;
20
+ activeFilterProperties: Signal<string[]>;
21
+ filterEdit: import("@angular/core").WritableSignal<CommonsFilterMetadataWithDescriptor | undefined>;
22
+ private serializationCfg;
23
+ private clickedOnFilterEvent;
24
+ constructor();
25
+ onFilterFormApply(event: FilterFormEmitEvent): void;
26
+ onFilterRemove(event: FilterActiveTagEvent): void;
27
+ onFilterEdit(event: FilterActiveTagEvent): void;
28
+ onFilterAdd(event: Event): void;
29
+ onOverlayHide(): void;
30
+ private onFilterAddOrEdit;
31
+ private setInitialFilters;
32
+ private updatePrimeTableFilter;
33
+ static ɵfac: i0.ɵɵFactoryDeclaration<FilterOverlayWithTagComponent, never>;
34
+ static ɵcmp: i0.ɵɵComponentDeclaration<FilterOverlayWithTagComponent, "mng-filter-overlay-with-tag", never, { "descriptors": { "alias": "descriptors"; "required": true; "isSignal": true; }; "model": { "alias": "model"; "required": true; "isSignal": true; }; }, {}, ["templates"], never, true, never>;
35
+ }
@@ -15,21 +15,25 @@ export declare class TableComponent<Item = any, Service = undefined, Sorts = any
15
15
  private readonly translate;
16
16
  private readonly messageService;
17
17
  private readonly commons;
18
- private readonly localStorageService;
18
+ private readonly storageService;
19
+ private readonly config;
19
20
  readonly dataListService: DataListService<any>;
21
+ private readonly defaultFilterDisplayType;
20
22
  descriptorInput: import("@angular/core").InputSignal<TableDescriptorInst<Item, Sorts, Filters>>;
21
23
  items: import("@angular/core").InputSignal<Item[] | undefined>;
22
24
  result: import("@angular/core").InputSignal<DataListResult<Item> | undefined>;
23
25
  loadingInput: import("@angular/core").InputSignalWithTransform<boolean | undefined, unknown>;
24
26
  dataProvider: import("@angular/core").InputSignal<ITableDataProvider<Item, Service, Sorts, Filters> | undefined>;
25
- useQueryParams: import("@angular/core").InputSignal<boolean>;
26
- cellClickEnabled: import("@angular/core").InputSignal<boolean>;
27
+ useQueryParams: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
28
+ cellClickEnabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
27
29
  selectionMode: import("@angular/core").InputSignal<"single" | "multiple">;
28
- selectionEnabled: import("@angular/core").InputSignal<boolean>;
29
- rowReorderEnabledInput: import("@angular/core").InputSignal<boolean>;
30
+ selectionEnabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
31
+ rowReorderEnabledInput: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
30
32
  rowReorderEnabled: Signal<boolean>;
31
33
  columnLastMinWidth: import("@angular/core").InputSignal<number | undefined>;
32
34
  columnsColspan: Signal<number>;
35
+ hasTitleDisplay: Signal<string | Type<any> | TemplateRef<any> | undefined>;
36
+ isCaptionVisible: Signal<string | boolean | Type<any> | TemplateRef<any>>;
33
37
  captionComponent: import("@angular/core").InputSignal<Type<any> | undefined>;
34
38
  columnCustomLastComponent: import("@angular/core").InputSignal<Type<any> | undefined>;
35
39
  globalFilterFieldsInput: import("@angular/core").InputSignal<string[] | undefined>;
@@ -56,9 +60,7 @@ export declare class TableComponent<Item = any, Service = undefined, Sorts = any
56
60
  className: Signal<string>;
57
61
  private dataProviderService;
58
62
  private dataProviderLatestLazyLoadEvent?;
59
- private latestLazyLoadEventVersion;
60
63
  private latestParamsWithDefaults?;
61
- private latestParamsWithDefaultsVersion;
62
64
  private dataProviderSubscription?;
63
65
  descriptor: import("@angular/core").WritableSignal<TableDescriptorInst<any, any, any>>;
64
66
  private localstorageKey;
@@ -66,8 +68,9 @@ export declare class TableComponent<Item = any, Service = undefined, Sorts = any
66
68
  private layoutPreferences;
67
69
  columns: Signal<ColumnWithPreferences[]>;
68
70
  visibleColumns: Signal<ColumnWithPreferences[]>;
71
+ filterDescriptors: Signal<import("@mediusinc/mng-commons/filter").FilterDescriptor<any, any>[]>;
69
72
  hasColumnFilters: Signal<boolean>;
70
- private filterDescriptors;
73
+ overlayWithTagFilters: Signal<import("@mediusinc/mng-commons/filter").FilterDescriptor<any, any>[]>;
71
74
  private defaultParams;
72
75
  anyColumnVisible: Signal<boolean>;
73
76
  hasCustomLastColumn: Signal<import("@angular/core").InputSignal<Type<any> | undefined>>;
@@ -0,0 +1,31 @@
1
+ import { PrimeNGConfig, SelectItem } from 'primeng/api';
2
+ import { CommonsFilterMetadata, CommonsModuleConfig, CommonsSerializationConfig, FilterMatchModeExtendedType, Nullable, SingleOrArrayType } from '@mediusinc/mng-commons/core';
3
+ import { FilterDescriptor, FilterTypeEnum } from '@mediusinc/mng-commons/filter';
4
+ import { FilterDateConfig } from '../models/filter.model';
5
+ export declare function generateMatchModeOptions(primeConfig: PrimeNGConfig, descriptor: FilterDescriptor<any, any> | undefined, cmpSerCfg?: CommonsSerializationConfig): SelectItem[];
6
+ /**
7
+ * Gets the default match mode for a filter.
8
+ *
9
+ * @param {FilterDescriptor<any, any>} [descriptor] - The filter descriptor.
10
+ * @param {SelectItem[]} [matchModes=[]] - The available match modes options.
11
+ *
12
+ * @return {FilterMatchModeExtendedType} The default match mode for the filter.
13
+ */
14
+ export declare function filterGetDefaultMatchMode(descriptor?: FilterDescriptor<any, any>, matchModes?: SelectItem[]): FilterMatchModeExtendedType;
15
+ export declare function filterSetMetadataOnChange(filter: CommonsFilterMetadata, matchMode?: FilterMatchModeExtendedType, value?: any, filterType?: FilterTypeEnum, filterDateCfg?: FilterDateConfig): CommonsFilterMetadata;
16
+ export declare function filterSetMetadataOnDisplayChange(filter: CommonsFilterMetadata | undefined, displayMatchMode: FilterMatchModeExtendedType, displayValue: any, filterType?: FilterTypeEnum, filterDateCfg?: FilterDateConfig): {
17
+ displayMatchMode: string;
18
+ matchMode: string;
19
+ displayValue: any;
20
+ value: SingleOrArrayType<Nullable<string | number | boolean | Date>>;
21
+ caseSensitive?: boolean | undefined;
22
+ operator?: string | undefined;
23
+ };
24
+ export declare function filterAreDatesEqual(fromDate: Date | string | number, toDate: Date | string | number, filterDateCfg?: FilterDateConfig): boolean;
25
+ export declare function filterApplySerializationConfigToCmp(config: CommonsModuleConfig | null, cmpSerCfg: CommonsSerializationConfig): void;
26
+ export declare function filterAdjustDisplayValueOnMatchModeChange(matchMode?: FilterMatchModeExtendedType, value?: any): any;
27
+ export declare function filterGetDateConfig(descriptor?: FilterDescriptor<any, any>, serCfg?: CommonsSerializationConfig): FilterDateConfig | undefined;
28
+ export declare function filterGetNumberConfig(descriptor?: FilterDescriptor<any, any>): {
29
+ fractionsMin: number | undefined;
30
+ fractionsMax: number | undefined;
31
+ } | undefined;
package/table/index.d.ts CHANGED
@@ -1,8 +1,17 @@
1
- export * from './components/column-filter-full/column-filter-full.component';
1
+ export * from './components/column-filter/column-filter.component';
2
2
  export * from './components/column-value/column-value.component';
3
+ export * from './components/filter/filter-active-tag/filter-active-tag.component';
4
+ export * from './components/filter/filter-form/filter-form.component';
5
+ export * from './components/filter/filter-overlay-with-tag/filter-overlay-with-tag.component';
3
6
  export * from './components/table/table.component';
7
+ export * from './helpers/filters';
4
8
  export * from './helpers/notification';
5
9
  export * from './helpers/table-layout-prefs';
10
+ export * from './models/column-preferences.model';
11
+ export * from './models/filter.model';
12
+ export * from './pipes/filter-value.pipe';
6
13
  export * from './pipes/locale-default-row-class.pipe';
7
14
  export * from './pipes/table-column-filter-class.pipe';
8
15
  export * from './services/data-list.service';
16
+ export * from './services/table-feature-config.token';
17
+ export * from './provide';
@@ -0,0 +1,24 @@
1
+ import { CommonsFilterMetadata, FilterMatchModeExtendedType } from '@mediusinc/mng-commons/core';
2
+ import { FilterDescriptor } from '@mediusinc/mng-commons/filter';
3
+ export interface CommonsFilterMetadataWithDescriptor extends CommonsFilterMetadata {
4
+ descriptor: FilterDescriptor<any, any>;
5
+ }
6
+ export interface FilterFormEmitEvent {
7
+ property: string;
8
+ matchMode: FilterMatchModeExtendedType;
9
+ value?: any | null | any[];
10
+ caseSensitive: boolean;
11
+ }
12
+ export interface FilterActiveTagEvent {
13
+ filter: CommonsFilterMetadataWithDescriptor;
14
+ event?: Event;
15
+ }
16
+ export interface FilterDateConfig {
17
+ valueUtc?: boolean;
18
+ valueNoTime?: boolean;
19
+ valueNoTimezone?: boolean;
20
+ valueNoMillis?: boolean;
21
+ format?: string;
22
+ showTime?: boolean;
23
+ showSeconds?: boolean;
24
+ }
@@ -0,0 +1,19 @@
1
+ import { OnDestroy, PipeTransform } from '@angular/core';
2
+ import { Observable, ReplaySubject } from 'rxjs';
3
+ import { FilterDescriptor } from '@mediusinc/mng-commons/filter';
4
+ import * as i0 from "@angular/core";
5
+ export declare class FilterValuePipe implements PipeTransform, OnDestroy {
6
+ private readonly locale;
7
+ private readonly translate;
8
+ private readonly enumPipe;
9
+ private subscription?;
10
+ subject: ReplaySubject<any>;
11
+ transform(value: unknown, descriptor?: FilterDescriptor<any, any>): Observable<any>;
12
+ /**
13
+ * If returns a string, this represents i18n key that must go through translation. If translation is not needed, undefined is returned.
14
+ */
15
+ private prepareValueTransform;
16
+ ngOnDestroy(): void;
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<FilterValuePipe, never>;
18
+ static ɵpipe: i0.ɵɵPipeDeclaration<FilterValuePipe, "mngFilterValue", true>;
19
+ }
@@ -0,0 +1,8 @@
1
+ import { CommonsFeature } from '@mediusinc/mng-commons/core';
2
+ import { TableFeatureConfig } from './services/table-feature-config.token';
3
+ /**
4
+ * Prepares providers for usage of the tableview functionalities.
5
+ *
6
+ * @returns {CommonsFeature} The `CommonsFeature` object with the layout configuration.
7
+ */
8
+ export declare function withTable(config?: TableFeatureConfig): CommonsFeature;
@@ -1,8 +1,9 @@
1
- import { FilterMetadata, SortMeta } from 'primeng/api';
1
+ import { SortMeta } from 'primeng/api';
2
+ import { CommonsFilterMetadata } from '@mediusinc/mng-commons/core';
2
3
  import * as i0 from "@angular/core";
3
4
  export declare class DataListService<Item> {
4
5
  sortMeta: import("@angular/core").WritableSignal<SortMeta[] | null>;
5
- filterMeta: import("@angular/core").WritableSignal<Record<string, FilterMetadata>>;
6
+ filterMeta: import("@angular/core").WritableSignal<Record<string, CommonsFilterMetadata>>;
6
7
  rowsPerPageOptions: import("@angular/core").WritableSignal<number[]>;
7
8
  rows: import("@angular/core").WritableSignal<number>;
8
9
  offset: import("@angular/core").WritableSignal<number>;
@@ -0,0 +1,6 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import { FilterDisplayTypeEnum } from '@mediusinc/mng-commons/filter';
3
+ export interface TableFeatureConfig {
4
+ filterDisplayType?: FilterDisplayTypeEnum;
5
+ }
6
+ export declare const COMMONS_TABLE_FEATURE_CONFIG_IT: InjectionToken<TableFeatureConfig>;
@@ -51,8 +51,8 @@ export type FieldInputNumberFractionOptsType = {
51
51
  export type FieldInputLocaleOptsType = {
52
52
  locale?: string;
53
53
  };
54
- export type FieldInputDatePickerOptsType<FieldValue, EditorModel, ParentEditorModel> = FieldInputDatePickerDisplayOptsType & FieldInputDateValidationOptsType<FieldValue, EditorModel, ParentEditorModel> & DateOptsType;
55
- export type DateOptsType = {
54
+ export type FieldInputDatePickerOptsType<FieldValue, EditorModel, ParentEditorModel> = FieldInputDatePickerDisplayOptsType & FieldInputDateValidationOptsType<FieldValue, EditorModel, ParentEditorModel> & FieldDateOptsType;
55
+ export type FieldDateOptsType = {
56
56
  asDateObj?: boolean;
57
57
  utc?: boolean;
58
58
  noTime?: boolean;
@@ -186,7 +186,7 @@ export declare class FieldInputDescriptor<EditorModel, FieldModel = FieldInputDe
186
186
  withDatePickerDisplay(opts?: FieldInputDatePickerDisplayOptsType): this;
187
187
  withDateValidation(opts?: FieldInputDateValidationOptsType<FieldValue, EditorModel, ParentEditorModel>): this;
188
188
  withInputTrim(trimOption?: InputTrimType): this;
189
- withDateValue(opts?: DateOptsType): this;
189
+ withDateValue(opts?: FieldDateOptsType): this;
190
190
  withTextValidationEmail(email?: boolean): this;
191
191
  withFileOnSelectHandler(fn?: FieldInputFileOnSelectHandlerFnType): this;
192
192
  copy(): FieldInputDescriptor<EditorModel, FieldModel, FieldValue, ParentEditorModel>;
@@ -1,6 +1,6 @@
1
- import { ArrayItemType, EnumConstantType, ITableviewDescriptor, IdType, Nullable } from '@mediusinc/mng-commons/core';
1
+ import { ArrayItemType, EnumConstantType, ITableDescriptor, ITableviewDescriptor, IdType, Nullable } from '@mediusinc/mng-commons/core';
2
2
  import { EnumDescriptor, TypeDescriptor } from '@mediusinc/mng-commons/model';
3
- import { ITableDataProvider, ITableDescriptorInternal } from '@mediusinc/mng-commons/table/api';
3
+ import { ITableDataProvider } from '@mediusinc/mng-commons/table/api';
4
4
  import { FieldActionDescriptor } from '../descriptors/field-action.descriptor';
5
5
  import { AFieldDescriptor } from '../descriptors/field-base.descriptor';
6
6
  import { FieldLookupDescriptor, FieldLookupEnumDescriptor, FieldLookupProviderType } from '../descriptors/field-lookup.descriptor';
@@ -31,8 +31,8 @@ export interface IFieldsManageInterface<EditorModel, ParentEditorModel> {
31
31
  addFieldLookupEnumUnsafe<Enum = EnumConstantType>(property: string, enumModel: EnumDescriptor<Enum>, options?: Array<Enum>): FieldLookupEnumDescriptor<Enum, EditorModel, ParentEditorModel>;
32
32
  addFieldManyEditor<Property extends keyof EditorModel, FieldModel = ArrayItemType<EditorModel[Property]>, FieldValue = EditorModel[Property]>(property: Property, tableviewDescriptor: ITableviewDescriptor<FieldModel, any, any, EditorModel>): FieldManyEditorDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel>;
33
33
  addFieldManyEditorUnsafe<FieldModel, FieldValue = FieldModel[]>(property: string, tableviewDescriptor: ITableviewDescriptor<FieldModel, any, any, EditorModel>): FieldManyEditorDescriptor<FieldModel, EditorModel, FieldValue, ParentEditorModel>;
34
- addFieldManyToManyEditor<Property extends keyof EditorModel, Service, FieldModel = ArrayItemType<EditorModel[Property]>, FieldValue = EditorModel[Property]>(property: Property, mainTableDescriptor: ITableDescriptorInternal<FieldModel>, lookupTableDescriptor: ITableDescriptorInternal<FieldModel>, lookupDataProvider: ITableDataProvider<FieldModel, Service>): FieldManyToManyEditorDescriptor<FieldModel, EditorModel, Service, FieldValue, ParentEditorModel>;
35
- addFieldManyToManyEditorUnsafe<FieldModel, Service, FieldValue = FieldModel[]>(property: string, mainTableDescriptor: ITableDescriptorInternal<FieldModel>, lookupTableDescriptor: ITableDescriptorInternal<FieldModel>, lookupDataProvider: ITableDataProvider<FieldModel, Service>): FieldManyToManyEditorDescriptor<FieldModel, EditorModel, Service, FieldValue, ParentEditorModel>;
34
+ addFieldManyToManyEditor<Property extends keyof EditorModel, Service, FieldModel = ArrayItemType<EditorModel[Property]>, FieldValue = EditorModel[Property]>(property: Property, mainTableDescriptor: ITableDescriptor<FieldModel, any, any>, lookupTableDescriptor: ITableDescriptor<FieldModel, any, any>, lookupDataProvider: ITableDataProvider<FieldModel, Service>): FieldManyToManyEditorDescriptor<FieldModel, EditorModel, Service, FieldValue, ParentEditorModel>;
35
+ addFieldManyToManyEditorUnsafe<FieldModel, Service, FieldValue = FieldModel[]>(property: string, mainTableDescriptor: ITableDescriptor<FieldModel, any, any>, lookupTableDescriptor: ITableDescriptor<FieldModel, any, any>, lookupDataProvider: ITableDataProvider<FieldModel, Service>): FieldManyToManyEditorDescriptor<FieldModel, EditorModel, Service, FieldValue, ParentEditorModel>;
36
36
  withValidation<Value = EditorModel>(name: string, validator?: FormValidator<Value, ParentEditorModel>, message?: FormValidationMessage<Value, ParentEditorModel>, opts?: FieldValidationDescriptorOptsType<keyof EditorModel>): this;
37
37
  withValidationUnsafe<Value = EditorModel>(name: string, validator?: FormValidator<Value, ParentEditorModel>, message?: FormValidationMessage<Value, ParentEditorModel>, opts?: FieldValidationDescriptorOptsType): this;
38
38
  }
@@ -1,5 +1,5 @@
1
1
  import { ArrayItemType, EnumConstantType, ILookupDataProvider, ITableviewDescriptor, IdType, KeyofAndOfType, Nullable } from '@mediusinc/mng-commons/core';
2
- import { FilterDescriptor } from '@mediusinc/mng-commons/filter';
2
+ import { FilterDescriptor, FilterDisplayTypeEnum } from '@mediusinc/mng-commons/filter';
3
3
  import { EnumDescriptor, ModelDescriptor, TypeDescriptor } from '@mediusinc/mng-commons/model';
4
4
  import { ColumnDescriptor, IColumnsManageInterface, ITableDataProvider, TableDescriptorInst, TableDynamicDescriptorInst } from '@mediusinc/mng-commons/table/api';
5
5
  import { EditorDescriptorInst } from '../../editor/descriptors/editor.descriptor';
@@ -17,14 +17,12 @@ export declare class TableviewDescriptorInst<TableviewModel, Sorts = keyof Table
17
17
  protected _detailsEditor: EditorDescriptorInst<TableviewModel, ParentEditorModel>;
18
18
  protected _addEditor: EditorDescriptorInst<TableviewModel, ParentEditorModel>;
19
19
  protected _editEditor: EditorDescriptorInst<TableviewModel, ParentEditorModel>;
20
- protected _tableTitle?: string;
21
20
  protected _isLocalized: boolean;
22
21
  constructor(model: ModelDescriptor<TableviewModel>);
23
22
  get table(): TableDescriptorInst<TableviewModel, Sorts, Filters>;
24
23
  get detailsEditor(): EditorDescriptorInst<TableviewModel, ParentEditorModel>;
25
24
  get addEditor(): EditorDescriptorInst<TableviewModel, ParentEditorModel>;
26
25
  get editEditor(): EditorDescriptorInst<TableviewModel, ParentEditorModel>;
27
- get tableTitle(): string | undefined;
28
26
  get model(): ModelDescriptor<TableviewModel, import("@mediusinc/mng-commons/core").ClassOptType<TableviewModel>>;
29
27
  isLocalized(): boolean;
30
28
  withTableDescriptor(descriptor: TableDescriptorInst<TableviewModel, Sorts, Filters>): this;
@@ -38,7 +36,11 @@ export declare class TableviewDescriptorInst<TableviewModel, Sorts = keyof Table
38
36
  * @param type which editor type to set to disabled
39
37
  */
40
38
  withDisabledEditorDescriptor(type?: TableviewEditorTypeEnum): this;
41
- withTableTitle(title: string): this;
39
+ /**
40
+ * @deprecated Use {table.withTitle} directly
41
+ * @param title
42
+ */
43
+ withTableTitle(title: string | undefined): this;
42
44
  withValidation<Value = TableviewModel>(name: string, expression: FormValidator<Value, ParentEditorModel>, message?: FormValidationMessage<Value, ParentEditorModel>, opts?: FieldValidationDescriptorOptsType<keyof TableviewModel>): this;
43
45
  withValidationUnsafe<Value = TableviewModel>(name: string, expression: FormValidator<Value, ParentEditorModel>, message?: FormValidationMessage<Value, ParentEditorModel>, opts?: FieldValidationDescriptorOptsType): this;
44
46
  getColumn(property: keyof TableviewModel): ColumnDescriptor<any, TableviewModel, any> | null;
@@ -72,10 +74,10 @@ export declare class TableviewDescriptorInst<TableviewModel, Sorts = keyof Table
72
74
  addFilterLookupUnsafe<FilterModel, Service = undefined>(property: string, provider?: ILookupDataProvider<FilterModel, Service>, optionsValueProperty?: string): import("@mediusinc/mng-commons/filter").FilterLookupDescriptor<FilterModel, TableviewModel, Service>;
73
75
  addFilterLookupEnum<Enum>(property: Filters, enumDesc: EnumDescriptor<Enum>, options?: Array<Enum>): import("@mediusinc/mng-commons/filter").FilterLookupEnumDescriptor<Enum, unknown>;
74
76
  addFilterLookupEnumUnsafe<Enum = EnumConstantType>(property: string, enumDesc: EnumDescriptor<Enum>, options?: Array<Enum>): import("@mediusinc/mng-commons/filter").FilterLookupEnumDescriptor<Enum, unknown>;
75
- addFilterFromColumn(property: Extract<Filters, keyof TableviewModel>, forceSimple?: boolean): FilterDescriptor<any, TableviewModel>;
77
+ addFilterFromColumn(property: Extract<Filters, keyof TableviewModel>, displayType?: FilterDisplayTypeEnum, forceSimple?: boolean): FilterDescriptor<any, TableviewModel>;
76
78
  withFiltersFromColumns(...properties: Extract<Filters, keyof TableviewModel>[]): this;
77
79
  withFiltersFromColumnsUnsafe(...properties: string[]): this;
78
- addFilterFromColumnUnsafe(property: string, forceSimple?: boolean): FilterDescriptor<any, TableviewModel>;
80
+ addFilterFromColumnUnsafe(property: string, displayType?: FilterDisplayTypeEnum, forceSimple?: boolean): FilterDescriptor<any, TableviewModel>;
79
81
  withFilter<FilterModel>(property: Filters, filter: FilterDescriptor<FilterModel, TableviewModel>): this;
80
82
  withFilterUnsafe<FilterModel>(filter: FilterDescriptor<FilterModel, TableviewModel>): this;
81
83
  getField(property: keyof TableviewModel, editorType: TableviewEditorTypeEnum): AFieldDescriptor<any, TableviewModel, ParentEditorModel, undefined> | null;
package/version-info.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@mediusinc/mng-commons",
3
- "version": "5.3.0-rc.0",
3
+ "version": "5.3.0-rc.2",
4
4
  "tag": "v5.2.0-rc.2",
5
- "distance": 15,
6
- "hash": "9b56542d",
5
+ "distance": 26,
6
+ "hash": "e02f975a",
7
7
  "dirty": true,
8
- "semver": "5.2.0-rc.2+15.g9b56542d.dirty",
8
+ "semver": "5.2.0-rc.2+26.ge02f975a.dirty",
9
9
  "buildTimestamp": null,
10
- "raw": "v5.2.0-rc.2-15-9b56542d-dirty"
10
+ "raw": "v5.2.0-rc.2-26-e02f975a-dirty"
11
11
  }
@@ -1,29 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class LocalStorageService {
4
- constructor() {
5
- this._configKey = 'CommonsUserPrefs';
6
- }
7
- buildLocalStorageKey(type, key) {
8
- return `${this._configKey}_${type}_${key}`;
9
- }
10
- getItem(type, key) {
11
- const localstorageData = localStorage.getItem(this.buildLocalStorageKey(type, key));
12
- if (localstorageData) {
13
- return JSON.parse(localstorageData);
14
- }
15
- return undefined;
16
- }
17
- setItem(type, key, value) {
18
- localStorage.setItem(this.buildLocalStorageKey(type, key), JSON.stringify(value));
19
- }
20
- removeItem(type, key) {
21
- localStorage.removeItem(this.buildLocalStorageKey(type, key));
22
- }
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: LocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
24
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: LocalStorageService }); }
25
- }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: LocalStorageService, decorators: [{
27
- type: Injectable
28
- }] });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS1jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc3JjL3NlcnZpY2VzL2xvY2FsLXN0b3JhZ2UtY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFLekMsTUFBTSxPQUFPLG1CQUFtQjtJQURoQztRQUVxQixlQUFVLEdBQUcsa0JBQWtCLENBQUM7S0FxQnBEO0lBbkJXLG9CQUFvQixDQUFDLElBQVksRUFBRSxHQUFXO1FBQ2xELE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRU0sT0FBTyxDQUFrQyxJQUFZLEVBQUUsR0FBVztRQUNyRSxNQUFNLGdCQUFnQixHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3BGLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUNuQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQztJQUVNLE9BQU8sQ0FBa0MsSUFBWSxFQUFFLEdBQVcsRUFBRSxLQUFRO1FBQy9FLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVNLFVBQVUsQ0FBQyxJQUFZLEVBQUUsR0FBVztRQUN2QyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDOzhHQXJCUSxtQkFBbUI7a0hBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCB0eXBlIExvY2Fsc3RvcmFnZUNvbmZpZ1ZhbHVlVHlwZSA9IHN0cmluZyB8IG51bWJlciB8IERhdGUgfCBvYmplY3QgfCBib29sZWFuO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTG9jYWxTdG9yYWdlU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfY29uZmlnS2V5ID0gJ0NvbW1vbnNVc2VyUHJlZnMnO1xuXG4gICAgcHJpdmF0ZSBidWlsZExvY2FsU3RvcmFnZUtleSh0eXBlOiBzdHJpbmcsIGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuX2NvbmZpZ0tleX1fJHt0eXBlfV8ke2tleX1gO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJdGVtPFQgPSBMb2NhbHN0b3JhZ2VDb25maWdWYWx1ZVR5cGU+KHR5cGU6IHN0cmluZywga2V5OiBzdHJpbmcpOiBUIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgbG9jYWxzdG9yYWdlRGF0YSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuYnVpbGRMb2NhbFN0b3JhZ2VLZXkodHlwZSwga2V5KSk7XG4gICAgICAgIGlmIChsb2NhbHN0b3JhZ2VEYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbHN0b3JhZ2VEYXRhKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRJdGVtPFQgPSBMb2NhbHN0b3JhZ2VDb25maWdWYWx1ZVR5cGU+KHR5cGU6IHN0cmluZywga2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogdm9pZCB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuYnVpbGRMb2NhbFN0b3JhZ2VLZXkodHlwZSwga2V5KSwgSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlSXRlbSh0eXBlOiBzdHJpbmcsIGtleTogc3RyaW5nKSB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuYnVpbGRMb2NhbFN0b3JhZ2VLZXkodHlwZSwga2V5KSk7XG4gICAgfVxufVxuIl19