@mediusinc/mng-commons 7.0.0-rc.1 → 7.0.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 (37) hide show
  1. package/core/index.d.ts +24 -4
  2. package/fesm2022/mediusinc-mng-commons-core.mjs +108 -72
  3. package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
  4. package/fesm2022/mediusinc-mng-commons-filter.mjs +16 -0
  5. package/fesm2022/mediusinc-mng-commons-filter.mjs.map +1 -1
  6. package/fesm2022/mediusinc-mng-commons-form-api.mjs.map +1 -1
  7. package/fesm2022/mediusinc-mng-commons-form.mjs +406 -49
  8. package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
  9. package/fesm2022/mediusinc-mng-commons-model-class.mjs.map +1 -1
  10. package/fesm2022/mediusinc-mng-commons-model.mjs.map +1 -1
  11. package/fesm2022/mediusinc-mng-commons-table-api-class.mjs.map +1 -1
  12. package/fesm2022/mediusinc-mng-commons-table-api.mjs.map +1 -1
  13. package/fesm2022/mediusinc-mng-commons-table-column-toggle.component-BQ99oqWO.mjs +30 -0
  14. package/fesm2022/mediusinc-mng-commons-table-column-toggle.component-BQ99oqWO.mjs.map +1 -0
  15. package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-BLuM5Kpu.mjs +2700 -0
  16. package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-BLuM5Kpu.mjs.map +1 -0
  17. package/fesm2022/mediusinc-mng-commons-table.mjs +1 -1
  18. package/fesm2022/mediusinc-mng-commons-tableview-api-class.mjs.map +1 -1
  19. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +31 -3
  20. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
  21. package/fesm2022/mediusinc-mng-commons-tableview.mjs +155 -123
  22. package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
  23. package/fesm2022/mediusinc-mng-commons.mjs.map +1 -1
  24. package/filter/index.d.ts +13 -0
  25. package/form/index.d.ts +109 -22
  26. package/i18n/en.json +12 -1
  27. package/i18n/sl.json +12 -1
  28. package/package.json +24 -24
  29. package/table/api/index.d.ts +2 -2
  30. package/table/index.d.ts +97 -29
  31. package/tableview/api/index.d.ts +17 -2
  32. package/tableview/index.d.ts +7 -1
  33. package/version-info.json +6 -6
  34. package/fesm2022/mediusinc-mng-commons-table-column-toggle.component-0Dtv48mq.mjs +0 -30
  35. package/fesm2022/mediusinc-mng-commons-table-column-toggle.component-0Dtv48mq.mjs.map +0 -1
  36. package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-BsAwyXiN.mjs +0 -2417
  37. package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-BsAwyXiN.mjs.map +0 -1
package/table/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as primeng_api from 'primeng/api';
2
- import { SelectItem, SortMeta, MessageService, ToastMessageOptions } from 'primeng/api';
2
+ import { SelectItem, MenuItem, SortMeta, MessageService, ToastMessageOptions } from 'primeng/api';
3
3
  import * as _angular_core from '@angular/core';
4
4
  import { OnDestroy, Signal, TemplateRef, PipeTransform, InjectionToken, Provider } from '@angular/core';
5
5
  import * as _mediusinc_mng_commons_core from '@mediusinc/mng-commons/core';
@@ -12,8 +12,8 @@ import { NgForm } from '@angular/forms';
12
12
  import { Popover } from 'primeng/popover';
13
13
  import * as _mediusinc_mng_commons_table from '@mediusinc/mng-commons/table';
14
14
  import { Table, TableColumnReorderEvent, TableRowReorderEvent, TableLazyLoadEvent, TableFilterEvent } from 'primeng/table';
15
- import { PrimeNG } from 'primeng/config';
16
15
  import { MultiSelectChangeEvent } from 'primeng/multiselect';
16
+ import { PrimeNG } from 'primeng/config';
17
17
  import { LookupDataProviderInst } from '@mediusinc/mng-commons/form/api';
18
18
  import { TranslateService } from '@ngx-translate/core';
19
19
  import { ReplaySubject, Observable } from 'rxjs';
@@ -46,6 +46,10 @@ interface FilterDateConfig {
46
46
  format?: string;
47
47
  showTime?: boolean;
48
48
  showSeconds?: boolean;
49
+ showMilliseconds?: boolean;
50
+ primeTimePicker?: boolean;
51
+ timeSelectInterval?: number;
52
+ timeSelect?: boolean;
49
53
  }
50
54
  interface FilterNumberConfig {
51
55
  fractionsMin?: number;
@@ -62,7 +66,7 @@ declare class FilterService {
62
66
  toggleCaseSensitivity(): void;
63
67
  clear(): void;
64
68
  setDisplayValue(displayValue: any): void;
65
- setState(state?: FilterState): void;
69
+ setState(state?: FilterState, updateTable?: boolean): void;
66
70
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FilterService, never>;
67
71
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<FilterService>;
68
72
  }
@@ -90,7 +94,6 @@ declare class TableFilterComponent implements OnDestroy {
90
94
  protected readonly isMultiselect: _angular_core.Signal<boolean>;
91
95
  protected readonly placeholderKey: _angular_core.Signal<string>;
92
96
  protected readonly booleanOptions: BooleanFilterDropdownItem[];
93
- protected readonly noFilterLabel: _angular_core.WritableSignal<any>;
94
97
  constructor();
95
98
  ngOnDestroy(): void;
96
99
  protected onTextModelChange(event: Event): void;
@@ -152,21 +155,27 @@ declare class TableColumnValueComponent<T, TT> {
152
155
  }
153
156
 
154
157
  declare class TableFilterActiveTagComponent {
158
+ private readonly translateService;
155
159
  readonly FilterMatchMode: typeof FilterMatchMode;
156
160
  model: _angular_core.InputSignal<ModelDescriptor<any>>;
157
161
  filter: _angular_core.InputSignal<FilterStateWithConfig>;
158
162
  edit: _angular_core.OutputEmitterRef<FilterActiveTagEvent>;
159
163
  remove: _angular_core.OutputEmitterRef<FilterActiveTagEvent>;
164
+ toggleDisabled: _angular_core.OutputEmitterRef<FilterActiveTagEvent>;
160
165
  label: _angular_core.Signal<string>;
161
166
  matchMode: _angular_core.Signal<string | undefined>;
162
167
  matchModeSymbol: _angular_core.Signal<string>;
163
168
  value: _angular_core.Signal<any>;
164
169
  protected isActive: _angular_core.Signal<boolean>;
170
+ menuItems: _angular_core.WritableSignal<MenuItem[]>;
171
+ private tagMenu;
165
172
  onRemove(event: Event): void;
166
173
  onEdit(event: Event): void;
174
+ onDisable(event: Event): void;
175
+ openTagMenu(event: Event): void;
167
176
  private getPropertyLabelKey;
168
177
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableFilterActiveTagComponent, never>;
169
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableFilterActiveTagComponent, "mng-table-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>;
178
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableFilterActiveTagComponent, "mng-table-filter-active-tag", never, { "model": { "alias": "model"; "required": true; "isSignal": true; }; "filter": { "alias": "filter"; "required": true; "isSignal": true; }; }, { "edit": "edit"; "remove": "remove"; "toggleDisabled": "toggleDisabled"; }, never, never, true, never>;
170
179
  }
171
180
 
172
181
  declare class TableFilterFormComponent {
@@ -199,6 +208,7 @@ declare class TableFilterFormComponent {
199
208
  valueModel: _angular_core.WritableSignal<any>;
200
209
  caseSensitiveModel: _angular_core.WritableSignal<boolean>;
201
210
  isMultiselect: _angular_core.Signal<boolean>;
211
+ protected addFilterShortcutText: string;
202
212
  constructor();
203
213
  onFormSubmit(form: NgForm): void;
204
214
  resetForm(value?: FilterFormModel): void;
@@ -226,6 +236,7 @@ declare class TableHeaderWithFiltersTemplateDirective extends TemplateDirective<
226
236
  }
227
237
 
228
238
  declare class TableHeaderWithFiltersComponent {
239
+ private readonly translateService;
229
240
  private static readonly SEARCH_WORD_LIMIT_MAX;
230
241
  private readonly tableData;
231
242
  private readonly tableConfig;
@@ -240,6 +251,7 @@ declare class TableHeaderWithFiltersComponent {
240
251
  } | undefined>;
241
252
  searchLimitWordMax: _angular_core.InputSignal<number | null | undefined>;
242
253
  enableCaseSensitive: _angular_core.InputSignalWithTransform<boolean, unknown>;
254
+ protected filterMenuItems: _angular_core.WritableSignal<MenuItem[]>;
243
255
  private filterOverlay;
244
256
  private filterFormComponent;
245
257
  templates: Signal<readonly TableHeaderWithFiltersTemplateDirective[]>;
@@ -259,6 +271,8 @@ declare class TableHeaderWithFiltersComponent {
259
271
  displayMatchMode: string;
260
272
  config: FilterConfig;
261
273
  }[]>;
274
+ protected allActiveFiltersDisabled: Signal<boolean>;
275
+ protected addFilterShortcutText: string;
262
276
  searchValue: Signal<string | undefined>;
263
277
  searchCaseSensitive: Signal<boolean | undefined>;
264
278
  searchWordLimitMaxError: _angular_core.WritableSignal<boolean>;
@@ -266,50 +280,106 @@ declare class TableHeaderWithFiltersComponent {
266
280
  private searchValueSubject;
267
281
  private searchCaseSensitiveSubject;
268
282
  private clickedOnFilterEvent;
283
+ private readonly filterSplitButton;
284
+ private readonly searchInput;
269
285
  constructor();
270
- onFilterFormApply(event: FilterFormEmitEvent): void;
271
- onFilterRemove(event: FilterActiveTagEvent): void;
272
- onFilterEdit(event: FilterActiveTagEvent): void;
273
- onFilterAdd(event: Event): void;
274
- onSearchChange(value: string): void;
275
- onSearchCaseSensitiveChange(value: boolean): void;
276
- onOverlayHide(): void;
286
+ protected onFilterFormApply(event: FilterFormEmitEvent): void;
287
+ protected onFilterRemove(event: FilterActiveTagEvent): void;
288
+ protected onFilterEdit(event: FilterActiveTagEvent): void;
289
+ private overlaySelectors;
290
+ private isOverlayOpen;
291
+ filterShortcuts(event: KeyboardEvent): void;
292
+ protected onFilterSplitButtonShow(): void;
293
+ protected onFilterAdd(event: Event): void;
294
+ protected onFilterToggleDisabled(event: FilterActiveTagEvent): void;
295
+ private onFilterToggleDisableAll;
296
+ private onFilterRemoveAll;
297
+ protected onSearchChange(value: string): void;
298
+ protected onSearchSubmit(event: Event): void;
299
+ protected onSearchCaseSensitiveChange(value: boolean): void;
300
+ protected onOverlayHide(): void;
277
301
  private onFilterAddOrEdit;
278
302
  private getInitialFilters;
279
- private updatePrimeTableFilter;
280
- private updatePrimeTableGlobalFilter;
303
+ private updateFilter;
304
+ private updateSearch;
281
305
  protected readonly FilterTypeEnum: typeof FilterTypeEnum;
282
306
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableHeaderWithFiltersComponent, never>;
283
307
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableHeaderWithFiltersComponent, "mng-table-header-with-filters", never, { "metadata": { "alias": "metadata"; "required": true; "isSignal": true; }; "genericFilterDescriptor": { "alias": "genericFilterDescriptor"; "required": false; "isSignal": true; }; "model": { "alias": "model"; "required": true; "isSignal": true; }; "enableSearch": { "alias": "enableSearch"; "required": false; "isSignal": true; }; "search": { "alias": "search"; "required": false; "isSignal": true; }; "searchLimitWordMax": { "alias": "searchLimitWordMax"; "required": false; "isSignal": true; }; "enableCaseSensitive": { "alias": "enableCaseSensitive"; "required": false; "isSignal": true; }; }, {}, ["templates"], never, true, never>;
284
308
  }
285
309
 
286
- declare class TableDataService<Item> implements OnDestroy {
310
+ interface SearchState {
311
+ value: string;
312
+ caseSensitive: boolean;
313
+ }
314
+ declare abstract class ADataListService<Item> {
315
+ abstract readonly params: Signal<DataListParams | undefined>;
316
+ abstract readonly sortStates: Signal<SortMeta[] | undefined>;
317
+ abstract readonly filterStates: Signal<Record<string, FilterState>>;
318
+ abstract readonly searchState: Signal<SearchState | undefined>;
319
+ abstract readonly offset: Signal<number>;
320
+ abstract readonly rows: Signal<number>;
321
+ abstract readonly data: Signal<Item[]>;
322
+ abstract readonly count: Signal<number>;
323
+ abstract readonly loading: Signal<boolean>;
324
+ /**
325
+ * Sets the params.
326
+ * @param params The new params to set.
327
+ * @param fromQueryParams
328
+ */
329
+ abstract setParams(params: DataListParams, fromQueryParams: boolean): void;
330
+ /**
331
+ * Updates filter states when not directly set by `setParams`.
332
+ *
333
+ * @param filters Map of filters with state updates.
334
+ */
335
+ abstract updateFilters(filters: Record<string, FilterState | undefined>): void;
336
+ /**
337
+ * Updates search state when not directly set by `setParams`.
338
+ *
339
+ * @param search
340
+ */
341
+ abstract updateSearch(search: SearchState | undefined): void;
342
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ADataListService<any>, never>;
343
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ADataListService<any>>;
344
+ }
345
+
346
+ declare class TableDataService<Item> extends ADataListService<Item> {
287
347
  #private;
288
348
  readonly params: Signal<DataListParams<string, string> | undefined>;
289
- readonly sortMeta: Signal<SortMeta[] | undefined>;
349
+ readonly sortStates: Signal<SortMeta[] | undefined>;
290
350
  readonly filterStates: Signal<Record<string, FilterState>>;
291
- readonly searchMeta: Signal<{
351
+ readonly primeFilterStates: Signal<{
352
+ [x: string]: FilterState;
353
+ }>;
354
+ readonly searchState: Signal<{
292
355
  value: string;
293
356
  caseSensitive: boolean;
294
357
  } | undefined>;
295
358
  readonly isAllPaginationMetaInitialized: Signal<boolean>;
296
359
  readonly paginationMode: Signal<TablePaginationModeEnum>;
297
360
  readonly offset: Signal<number>;
298
- readonly rows: Signal<number | undefined>;
361
+ readonly rows: Signal<number>;
299
362
  readonly data: Signal<Item[]>;
300
363
  readonly count: Signal<number>;
301
364
  readonly loading: Signal<boolean>;
302
365
  readonly selectedItems: _angular_core.WritableSignal<Item[]>;
366
+ constructor();
303
367
  setDataSources(arrayItems: Signal<Item[] | undefined>, dataListResult: Signal<DataListResult<Item> | undefined>, dataProvider: Signal<ITableDataProvider<Item, any, any, any> | undefined>, manualLoading: Signal<boolean | undefined>): void;
304
368
  setPrimeTable(cmp?: Table<Item>): void;
305
- fetchWithDataProvider(params: DataListParams, onErrorFn: (error: Error) => void): boolean;
369
+ fetchWithDataProvider(paramsList: DataListParams, onErrorFn: (error: Error) => void): boolean;
306
370
  setParams(params: DataListParams, fromQueryParams?: boolean): void;
307
371
  /**
308
- * Updates primeNG component with new filters and triggers data reload (if lazy load) or inline filtering.
309
- * @param key Filter's key
310
- * @param filter Filter's metadata
372
+ * Updates primeNG component with new filters and triggers data reload (if lazy load) or inline filtering
373
+ * Usually setting the params should trigger the cycle to load data and calculate other states (sort, filter, search, etc.) from params.
374
+ * In case of PrimeNG's inline filtering, the internal primeNG state must be updated first and the states must subsequently be updated via callback functions.
375
+ *
376
+ * @param filters - { [fieldName]: FilterState | undefined } where:
377
+ * - fieldName = column field identifier
378
+ * - FilterState = full filter config
379
+ * - undefined = clears filter for that field
311
380
  */
312
- updatePrimeFilter(key: string, filter: FilterState | undefined): void;
381
+ updateFilters(filters: Record<string, FilterState | undefined>): void;
382
+ updateSearch(search: SearchState | undefined): void;
313
383
  /**
314
384
  * Compare the given params with the stored params in the DataListService.
315
385
  *
@@ -318,7 +388,6 @@ declare class TableDataService<Item> implements OnDestroy {
318
388
  * @return {boolean} - True if the given params match the stored params, otherwise false.
319
389
  */
320
390
  private compareWithCurrentParams;
321
- ngOnDestroy(): void;
322
391
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableDataService<any>, never>;
323
392
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<TableDataService<any>>;
324
393
  }
@@ -326,7 +395,6 @@ declare class TableDataService<Item> implements OnDestroy {
326
395
  declare class TableMetadataService {
327
396
  #private;
328
397
  static readonly cmpTypeName = "TableComponent";
329
- readonly primeConfig: PrimeNG;
330
398
  readonly moduleConfig: _mediusinc_mng_commons_core.CommonsModuleConfig | null;
331
399
  readonly tableModuleConfig: _mediusinc_mng_commons_table.TableFeatureConfig | null;
332
400
  readonly serializationCfg: CommonsSerializationConfig;
@@ -446,8 +514,8 @@ declare class TableComponent<Item = any, Service = undefined, Sorts = any, Filte
446
514
  cellClick: _angular_core.OutputRef<TableCellClickEvent<Item>>;
447
515
  selectionChange: _angular_core.OutputEmitterRef<Item[]>;
448
516
  rowReorder: _angular_core.OutputEmitterRef<TableRowReorderEvent>;
449
- readonly templates: _angular_core.InputSignal<TableTemplateDirective<"columnCustomLast" | "footer" | "rowExpandContent" | "columnHeader" | "headerTitleRowRight" | "headerTitle" | "header">[]>;
450
- readonly contentTemplates: Signal<readonly TableTemplateDirective<"columnCustomLast" | "footer" | "rowExpandContent" | "columnHeader" | "headerTitleRowRight" | "headerTitle" | "header">[]>;
517
+ readonly templates: _angular_core.InputSignal<TableTemplateDirective<"footer" | "header" | "columnCustomLast" | "rowExpandContent" | "columnHeader" | "headerTitleRowRight" | "headerTitle">[]>;
518
+ readonly contentTemplates: Signal<readonly TableTemplateDirective<"footer" | "header" | "columnCustomLast" | "rowExpandContent" | "columnHeader" | "headerTitleRowRight" | "headerTitle">[]>;
451
519
  readonly primeTable: Signal<Table<Item> | undefined>;
452
520
  headerTemplate: Signal<TemplateRef<TableTemplateContext> | null>;
453
521
  headerTitleTemplate: Signal<TemplateRef<TableTemplateContext> | null>;
@@ -576,5 +644,5 @@ declare function withTable(config?: TableFeatureConfig): CommonsFeature;
576
644
  */
577
645
  declare function provideTableChild(config?: TableFeatureConfig): Provider[];
578
646
 
579
- export { COMMONS_TABLE_FEATURE_CONFIG_IT, FilterService, FilterValuePipe, LocaleDefaultRowClassPipe, TableColumnValueComponent, TableComponent, TableDataService, TableFilterActiveTagComponent, TableFilterClassPipe, TableFilterComponent, TableFilterFormComponent, TableHeaderWithFiltersComponent, TableTemplateDirective, createFilterDescriptorsFromGeneric, filterAdjustDisplayValueOnMatchModeChange, filterApplySerializationConfigToCmp, filterAreDatesEqual, filterGenerateMatchModeOptions, filterGetDateConfig, filterGetDefaultMatchMode, filterGetNumberConfig, filterSetStateOnChange, filterSetStateOnDisplayChange, generateTableLayoutPrefsKey, isFilterValueBlank, provideTableChild, tableNotificationError, withTable };
580
- export type { ColumnWithPreferences, FilterActiveTagEvent, FilterConfig, FilterDateConfig, FilterFormEmitEvent, FilterNumberConfig, FilterStateWithConfig, ITable, TableFeatureConfig };
647
+ export { ADataListService, COMMONS_TABLE_FEATURE_CONFIG_IT, FilterService, FilterValuePipe, LocaleDefaultRowClassPipe, TableColumnValueComponent, TableComponent, TableDataService, TableFilterActiveTagComponent, TableFilterClassPipe, TableFilterComponent, TableFilterFormComponent, TableHeaderWithFiltersComponent, TableTemplateDirective, createFilterDescriptorsFromGeneric, filterAdjustDisplayValueOnMatchModeChange, filterApplySerializationConfigToCmp, filterAreDatesEqual, filterGenerateMatchModeOptions, filterGetDateConfig, filterGetDefaultMatchMode, filterGetNumberConfig, filterSetStateOnChange, filterSetStateOnDisplayChange, generateTableLayoutPrefsKey, isFilterValueBlank, provideTableChild, tableNotificationError, withTable };
648
+ export type { ColumnWithPreferences, FilterActiveTagEvent, FilterConfig, FilterDateConfig, FilterFormEmitEvent, FilterNumberConfig, FilterStateWithConfig, ITable, SearchState, TableFeatureConfig };
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { InputSignal, OutputEmitterRef, Type, InputSignalWithTransform, WritableSignal, Injector, InjectionToken } from '@angular/core';
3
3
  import * as _mediusinc_mng_commons_core from '@mediusinc/mng-commons/core';
4
- import { IdType, ActionData, ActionParameters, GetterFn, StyleLevelEnum, ServiceClassType, ILookupDataProvider, ILookupDescriptor, LookupDataProviderLookupFnType, EnumValue, EnumConstantType, ItemOrObservable, ArrayItemType, ITableviewDescriptor, ITableDescriptor, CommonPropsObjType3, IEditorDescriptor, IDataProvider, Nullable, IActionDescriptor, APermissions, ClassType, ServiceClassOptType, Undefined, DataProviderInst, StyleSizeEnum, DataListResult, CommonsErrorBaseOptions, ACommonsErrorBase, ICommonsActionError, ClassFunctionKeysWithParamAndReturnType, ClassFunctionKeyParam1ObjKeyExtendsOfTargetType, CommonsRouteData } from '@mediusinc/mng-commons/core';
4
+ import { IdType, ActionData, ActionParameters, GetterFn, PrimeMessageSeverityType, StyleLevelEnum, ServiceClassType, ILookupDataProvider, ILookupDescriptor, LookupDataProviderLookupFnType, EnumValue, EnumConstantType, ItemOrObservable, ArrayItemType, ITableviewDescriptor, ITableDescriptor, CommonPropsObjType3, IEditorDescriptor, IDataProvider, Nullable, IActionDescriptor, APermissions, ClassType, ServiceClassOptType, Undefined, DataProviderInst, StyleSizeEnum, DataListResult, CommonsErrorBaseOptions, ACommonsErrorBase, ICommonsActionError, ClassFunctionKeysWithParamAndReturnType, ClassFunctionKeyParam1ObjKeyExtendsOfTargetType, CommonsRouteData } from '@mediusinc/mng-commons/core';
5
5
  import { IActionButtonDescriptor, InputTrimType, EmptyValueType } from '@mediusinc/mng-commons/form/api';
6
6
  import { EnumDescriptor, TypeDescriptor, ModelDescriptor, ModelDescriptorCreateOpts } from '@mediusinc/mng-commons/model';
7
7
  import { ToastMessageOptions, Confirmation } from 'primeng/api';
@@ -450,7 +450,7 @@ interface FieldActionResult {
450
450
  }
451
451
  interface FieldActionResultMessage {
452
452
  content: string;
453
- severity?: 'success' | 'warn' | 'error' | 'info' | 'secondary' | 'contrast';
453
+ severity?: PrimeMessageSeverityType;
454
454
  }
455
455
 
456
456
  type FieldActionRunFnType<EditorModel, ParentEditorModel = undefined> = (ctx: FieldActionContext<EditorModel, ParentEditorModel>) => void | FieldActionResult | Observable<FieldActionResult>;
@@ -659,6 +659,10 @@ type FieldInputDatePickerDisplayOptsType = {
659
659
  format?: string;
660
660
  showTime?: boolean;
661
661
  showSeconds?: boolean;
662
+ showMilliseconds?: boolean;
663
+ primeTimePicker?: boolean;
664
+ timeSelectInterval?: number;
665
+ timeSelect?: boolean;
662
666
  };
663
667
  type FieldInputDateValidationOptsType<FieldValue, EditorModel, ParentEditorModel> = {
664
668
  min?: Date | FieldInputDatePickerDynamicMinMaxFnType<FieldValue, EditorModel, ParentEditorModel>;
@@ -742,6 +746,10 @@ declare class FieldInputDescriptor<EditorModel, FieldModel = FieldInputDescripto
742
746
  private _datePickerMax?;
743
747
  private _datePickerShowTime?;
744
748
  private _datePickerShowSeconds?;
749
+ private _datePickerShowMilliseconds?;
750
+ private _datePickerPrimeTimePicker?;
751
+ private _datePickerTimeSelectInterval?;
752
+ private _datePickerTimeSelect?;
745
753
  private _datePickerValueUtc?;
746
754
  private _datePickerValueNoTimezone?;
747
755
  private _datePickerValueNoTime?;
@@ -790,6 +798,10 @@ declare class FieldInputDescriptor<EditorModel, FieldModel = FieldInputDescripto
790
798
  get datePickerMax(): Date | FieldInputDatePickerDynamicMinMaxFnType<FieldValue, EditorModel, ParentEditorModel> | undefined;
791
799
  get datePickerShowTime(): boolean | undefined;
792
800
  get datePickerShowSeconds(): boolean | undefined;
801
+ get datePickerShowMilliseconds(): boolean | undefined;
802
+ get datePickerPrimeTimePicker(): boolean | undefined;
803
+ get datePickerTimeSelect(): boolean | undefined;
804
+ get datePickerTimeSelectInterval(): number | undefined;
793
805
  get datePickerValueUtc(): boolean | undefined;
794
806
  get datePickerValueNoTimezone(): boolean | undefined;
795
807
  get datePickerValueNoTime(): boolean | undefined;
@@ -1780,6 +1792,7 @@ declare class ActionEditorDescriptorInst<Item, Service = any, EditorItem = Item,
1780
1792
  protected _fetchNotificationOnError?: ActionNotificationType | boolean;
1781
1793
  protected _dialogSize: StyleSizeEnum;
1782
1794
  protected _dialogClassName?: string;
1795
+ protected _dialogIsMaximizable?: boolean;
1783
1796
  protected _fetchFunction?: ActionEditorRunFnType<Item, ParentEditorItem, Service, FetchInputItem, EditorItem>;
1784
1797
  protected _submitFunction?: ActionEditorRunFnType<Item, ParentEditorItem, Service, EditorItem, SubmitReturnItem>;
1785
1798
  protected _editorComponent?: Type<any>;
@@ -1792,6 +1805,7 @@ declare class ActionEditorDescriptorInst<Item, Service = any, EditorItem = Item,
1792
1805
  get editorDescriptor(): EditorDescriptorInst<EditorItem, ParentEditorItem>;
1793
1806
  get dialogSize(): StyleSizeEnum;
1794
1807
  get dialogClassName(): string | undefined;
1808
+ get dialogIsMaximizable(): boolean | undefined;
1795
1809
  get fetchNotificationOnSuccess(): boolean | ActionNotificationType | undefined;
1796
1810
  get fetchNotificationOnError(): boolean | ActionNotificationType | undefined;
1797
1811
  get dataProvider(): IEditorDataProvider<Item, any> | undefined;
@@ -1809,6 +1823,7 @@ declare class ActionEditorDescriptorInst<Item, Service = any, EditorItem = Item,
1809
1823
  withEditorTitle(title: string | null, params?: any): this;
1810
1824
  withDialogSize(size?: StyleSizeEnum): this;
1811
1825
  withDialogClassName(className: string): this;
1826
+ withDialogMaximizable(isMaximizable?: boolean): this;
1812
1827
  withRunFunction(fn: ActionEditorRunFnType<Item, ParentEditorItem, Service, EditorItem, SubmitReturnItem>): this;
1813
1828
  withFetchFunction(fn: ActionEditorRunFnType<Item, ParentEditorItem, Service, FetchInputItem, EditorItem>): this;
1814
1829
  withSubmitFunction(fn: ActionEditorRunFnType<Item, ParentEditorItem, Service, EditorItem, SubmitReturnItem>): this;
@@ -268,7 +268,12 @@ declare class FormEditorComponent<Item = any, ParentItem = any> implements IForm
268
268
  private _formlyInitialItem;
269
269
  private initialItemInput;
270
270
  private setterFields;
271
- formMessages: _angular_core.WritableSignal<ToastMessageOptions[]>;
271
+ readonly formMessages: _angular_core.WritableSignal<ToastMessageOptions[]>;
272
+ protected readonly formMessagesTypeNarrowed: _angular_core.Signal<{
273
+ severity: _mediusinc_mng_commons_core.PrimeMessageSeverityType | undefined;
274
+ text: string | undefined;
275
+ icon: string | undefined;
276
+ }[]>;
272
277
  readonly restoreLocalStateButtonStyle: string;
273
278
  readonly previewLocalStateButtonStyle: string;
274
279
  readonly clearLocalStateButtonStyle: string;
@@ -1058,6 +1063,7 @@ declare class FormlyFieldTableDialogMultiselectComponent extends ACommonsFormlyF
1058
1063
  declare class FormlyFieldTabsComponent extends ACommonsFormlyGroupType<any, any, FieldTabGroupDescriptor<any>> implements OnInit {
1059
1064
  fieldGroup: _angular_core.WritableSignal<CommonsFormlyFieldConfig<any, any, any, _mediusinc_mng_commons_tableview_api.CommonsFormlyFieldProps<any, any, any>>[]>;
1060
1065
  ngOnInit(): void;
1066
+ protected onEscape(): void;
1061
1067
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FormlyFieldTabsComponent, never>;
1062
1068
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<FormlyFieldTabsComponent, "mng-formly-field-tabs", never, {}, {}, never, never, true, never>;
1063
1069
  }
package/version-info.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@mediusinc/mng-commons",
3
- "version": "7.0.0-rc.1",
4
- "tag": "v6.2.0-rc.0",
5
- "distance": 24,
6
- "hash": "a9e3e81d",
3
+ "version": "7.0.0-rc.2",
4
+ "tag": null,
5
+ "distance": null,
6
+ "hash": "66a002f",
7
7
  "dirty": true,
8
- "semver": "6.2.0-rc.0+24.ga9e3e81d.dirty",
8
+ "semver": null,
9
9
  "buildTimestamp": null,
10
- "raw": "v6.2.0-rc.0-24-a9e3e81d-dirty"
10
+ "raw": "7.0.0-rc.2-66a002f-dirty"
11
11
  }
@@ -1,30 +0,0 @@
1
- import { NgClass } from '@angular/common';
2
- import * as i0 from '@angular/core';
3
- import { inject, input, computed, ChangeDetectionStrategy, Component } from '@angular/core';
4
- import * as i1 from '@angular/forms';
5
- import { FormsModule } from '@angular/forms';
6
- import { TranslatePipe } from '@ngx-translate/core';
7
- import { Button } from 'primeng/button';
8
- import { MultiSelect } from 'primeng/multiselect';
9
- import { Tooltip } from 'primeng/tooltip';
10
- import { I18nPropertyPipe } from '@mediusinc/mng-commons/core';
11
- import { T as TableMetadataService, a as TablePreferencesService } from './mediusinc-mng-commons-table-mediusinc-mng-commons-table-BsAwyXiN.mjs';
12
-
13
- class TableColumnToggleComponent {
14
- constructor() {
15
- this.metadata = inject(TableMetadataService);
16
- this.prefs = inject(TablePreferencesService);
17
- // data source inputs
18
- this.columns = input.required(...(ngDevMode ? [{ debugName: "columns" }] : []));
19
- this.anyColumnVisible = computed(() => this.columns().length > 0, ...(ngDevMode ? [{ debugName: "anyColumnVisible" }] : []));
20
- }
21
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: TableColumnToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
22
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.7", type: TableColumnToggleComponent, isStandalone: true, selector: "mng-table-column-toggle", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<p-multiSelect\n #columnToggleMultiselect\n styleClass=\"p-button-primary mng-table-columns-multiselect\"\n appendTo=\"body\"\n dataKey=\"id\"\n tooltipPosition=\"left\"\n placeholder=\"\"\n dropdownIcon=\"pi pi-sliders-h\"\n [filter]=\"false\"\n [options]=\"prefs.columnsWithPrefs()\"\n [ngModel]=\"columns()\"\n [pTooltip]=\"'mngTable.adjustTable' | translate\"\n [displaySelectedLabel]=\"false\"\n (onChange)=\"prefs.onColumnToggle($event)\">\n <ng-template #filter>\n <div class=\"flex w-full justify-between items-center\">\n <div class=\"p-checkbox\">\n <div class=\"p-hidden-accessible\">\n <input type=\"checkbox\" readonly=\"readonly\" [checked]=\"columnToggleMultiselect.allSelected\" (keydown.space)=\"columnToggleMultiselect.onToggleAll($event)\" />\n </div>\n <div\n class=\"p-checkbox-box cursor-pointer\"\n role=\"checkbox\"\n [attr.aria-checked]=\"columnToggleMultiselect.allSelected\"\n [class.p-select-option-selected]=\"anyColumnVisible()\"\n (click)=\"prefs.onColumnToggleAll()\">\n <span class=\"p-checkbox-icon\" [ngClass]=\"{'pi pi-check': anyColumnVisible()}\"></span>\n </div>\n </div>\n <p-button\n icon=\"pi pi-replay\"\n severity=\"secondary\"\n text=\"true\"\n tooltipPosition=\"left\"\n [pTooltip]=\"'mngTable.resetLayout' | translate\"\n (click)=\"prefs.clearLayoutPreferences()\"></p-button>\n </div>\n </ng-template>\n <ng-template #item let-item>\n {{\n (item.descriptor.title && !item.descriptor.titleUseModelBase\n ? item.descriptor.title\n : (item.descriptor.title ?? item.descriptor.property | mngI18nProperty: metadata.descriptor().model)\n ) | translate\n }}\n </ng-template>\n</p-multiSelect>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: MultiSelect, selector: "p-multiSelect, p-multiselect, p-multi-select", inputs: ["id", "ariaLabel", "styleClass", "panelStyle", "panelStyleClass", "inputId", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "dataKey", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "chipIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "placeholder", "options", "filterValue", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus", "highlightOnSelect", "size", "variant", "fluid", "appendTo"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo"] }, { kind: "component", type: Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "buttonProps", "autofocus", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "pipe", type: I18nPropertyPipe, name: "mngI18nProperty" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
23
- }
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: TableColumnToggleComponent, decorators: [{
25
- type: Component,
26
- args: [{ selector: 'mng-table-column-toggle', imports: [I18nPropertyPipe, NgClass, MultiSelect, FormsModule, TranslatePipe, Tooltip, Button], changeDetection: ChangeDetectionStrategy.OnPush, template: "<p-multiSelect\n #columnToggleMultiselect\n styleClass=\"p-button-primary mng-table-columns-multiselect\"\n appendTo=\"body\"\n dataKey=\"id\"\n tooltipPosition=\"left\"\n placeholder=\"\"\n dropdownIcon=\"pi pi-sliders-h\"\n [filter]=\"false\"\n [options]=\"prefs.columnsWithPrefs()\"\n [ngModel]=\"columns()\"\n [pTooltip]=\"'mngTable.adjustTable' | translate\"\n [displaySelectedLabel]=\"false\"\n (onChange)=\"prefs.onColumnToggle($event)\">\n <ng-template #filter>\n <div class=\"flex w-full justify-between items-center\">\n <div class=\"p-checkbox\">\n <div class=\"p-hidden-accessible\">\n <input type=\"checkbox\" readonly=\"readonly\" [checked]=\"columnToggleMultiselect.allSelected\" (keydown.space)=\"columnToggleMultiselect.onToggleAll($event)\" />\n </div>\n <div\n class=\"p-checkbox-box cursor-pointer\"\n role=\"checkbox\"\n [attr.aria-checked]=\"columnToggleMultiselect.allSelected\"\n [class.p-select-option-selected]=\"anyColumnVisible()\"\n (click)=\"prefs.onColumnToggleAll()\">\n <span class=\"p-checkbox-icon\" [ngClass]=\"{'pi pi-check': anyColumnVisible()}\"></span>\n </div>\n </div>\n <p-button\n icon=\"pi pi-replay\"\n severity=\"secondary\"\n text=\"true\"\n tooltipPosition=\"left\"\n [pTooltip]=\"'mngTable.resetLayout' | translate\"\n (click)=\"prefs.clearLayoutPreferences()\"></p-button>\n </div>\n </ng-template>\n <ng-template #item let-item>\n {{\n (item.descriptor.title && !item.descriptor.titleUseModelBase\n ? item.descriptor.title\n : (item.descriptor.title ?? item.descriptor.property | mngI18nProperty: metadata.descriptor().model)\n ) | translate\n }}\n </ng-template>\n</p-multiSelect>\n" }]
27
- }] });
28
-
29
- export { TableColumnToggleComponent };
30
- //# sourceMappingURL=mediusinc-mng-commons-table-column-toggle.component-0Dtv48mq.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mediusinc-mng-commons-table-column-toggle.component-0Dtv48mq.mjs","sources":["../tmp-esm2022/table/components/column-toggle/column-toggle.component.js"],"sourcesContent":["import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Button } from 'primeng/button';\nimport { MultiSelect } from 'primeng/multiselect';\nimport { Tooltip } from 'primeng/tooltip';\nimport { I18nPropertyPipe } from '@mediusinc/mng-commons/core';\nimport { TableMetadataService } from '../../services/table-metadata.service';\nimport { TablePreferencesService } from '../../services/table-preferences.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nexport class TableColumnToggleComponent {\n constructor() {\n this.metadata = inject(TableMetadataService);\n this.prefs = inject(TablePreferencesService);\n // data source inputs\n this.columns = input.required(...(ngDevMode ? [{ debugName: \"columns\" }] : []));\n this.anyColumnVisible = computed(() => this.columns().length > 0, ...(ngDevMode ? [{ debugName: \"anyColumnVisible\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: TableColumnToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.1.7\", type: TableColumnToggleComponent, isStandalone: true, selector: \"mng-table-column-toggle\", inputs: { columns: { classPropertyName: \"columns\", publicName: \"columns\", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: \"<p-multiSelect\\n #columnToggleMultiselect\\n styleClass=\\\"p-button-primary mng-table-columns-multiselect\\\"\\n appendTo=\\\"body\\\"\\n dataKey=\\\"id\\\"\\n tooltipPosition=\\\"left\\\"\\n placeholder=\\\"\\\"\\n dropdownIcon=\\\"pi pi-sliders-h\\\"\\n [filter]=\\\"false\\\"\\n [options]=\\\"prefs.columnsWithPrefs()\\\"\\n [ngModel]=\\\"columns()\\\"\\n [pTooltip]=\\\"'mngTable.adjustTable' | translate\\\"\\n [displaySelectedLabel]=\\\"false\\\"\\n (onChange)=\\\"prefs.onColumnToggle($event)\\\">\\n <ng-template #filter>\\n <div class=\\\"flex w-full justify-between items-center\\\">\\n <div class=\\\"p-checkbox\\\">\\n <div class=\\\"p-hidden-accessible\\\">\\n <input type=\\\"checkbox\\\" readonly=\\\"readonly\\\" [checked]=\\\"columnToggleMultiselect.allSelected\\\" (keydown.space)=\\\"columnToggleMultiselect.onToggleAll($event)\\\" />\\n </div>\\n <div\\n class=\\\"p-checkbox-box cursor-pointer\\\"\\n role=\\\"checkbox\\\"\\n [attr.aria-checked]=\\\"columnToggleMultiselect.allSelected\\\"\\n [class.p-select-option-selected]=\\\"anyColumnVisible()\\\"\\n (click)=\\\"prefs.onColumnToggleAll()\\\">\\n <span class=\\\"p-checkbox-icon\\\" [ngClass]=\\\"{'pi pi-check': anyColumnVisible()}\\\"></span>\\n </div>\\n </div>\\n <p-button\\n icon=\\\"pi pi-replay\\\"\\n severity=\\\"secondary\\\"\\n text=\\\"true\\\"\\n tooltipPosition=\\\"left\\\"\\n [pTooltip]=\\\"'mngTable.resetLayout' | translate\\\"\\n (click)=\\\"prefs.clearLayoutPreferences()\\\"></p-button>\\n </div>\\n </ng-template>\\n <ng-template #item let-item>\\n {{\\n (item.descriptor.title && !item.descriptor.titleUseModelBase\\n ? item.descriptor.title\\n : (item.descriptor.title ?? item.descriptor.property | mngI18nProperty: metadata.descriptor().model)\\n ) | translate\\n }}\\n </ng-template>\\n</p-multiSelect>\\n\", dependencies: [{ kind: \"directive\", type: NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"component\", type: MultiSelect, selector: \"p-multiSelect, p-multiselect, p-multi-select\", inputs: [\"id\", \"ariaLabel\", \"styleClass\", \"panelStyle\", \"panelStyleClass\", \"inputId\", \"readonly\", \"group\", \"filter\", \"filterPlaceHolder\", \"filterLocale\", \"overlayVisible\", \"tabindex\", \"dataKey\", \"ariaLabelledBy\", \"displaySelectedLabel\", \"maxSelectedLabels\", \"selectionLimit\", \"selectedItemsLabel\", \"showToggleAll\", \"emptyFilterMessage\", \"emptyMessage\", \"resetFilterOnHide\", \"dropdownIcon\", \"chipIcon\", \"optionLabel\", \"optionValue\", \"optionDisabled\", \"optionGroupLabel\", \"optionGroupChildren\", \"showHeader\", \"filterBy\", \"scrollHeight\", \"lazy\", \"virtualScroll\", \"loading\", \"virtualScrollItemSize\", \"loadingIcon\", \"virtualScrollOptions\", \"overlayOptions\", \"ariaFilterLabel\", \"filterMatchMode\", \"tooltip\", \"tooltipPosition\", \"tooltipPositionStyle\", \"tooltipStyleClass\", \"autofocusFilter\", \"display\", \"autocomplete\", \"showClear\", \"autofocus\", \"placeholder\", \"options\", \"filterValue\", \"selectAll\", \"focusOnHover\", \"filterFields\", \"selectOnFocus\", \"autoOptionFocus\", \"highlightOnSelect\", \"size\", \"variant\", \"fluid\", \"appendTo\"], outputs: [\"onChange\", \"onFilter\", \"onFocus\", \"onBlur\", \"onClick\", \"onClear\", \"onPanelShow\", \"onPanelHide\", \"onLazyLoad\", \"onRemove\", \"onSelectAllChange\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"directive\", type: Tooltip, selector: \"[pTooltip]\", inputs: [\"tooltipPosition\", \"tooltipEvent\", \"positionStyle\", \"tooltipStyleClass\", \"tooltipZIndex\", \"escape\", \"showDelay\", \"hideDelay\", \"life\", \"positionTop\", \"positionLeft\", \"autoHide\", \"fitContent\", \"hideOnEscape\", \"pTooltip\", \"tooltipDisabled\", \"tooltipOptions\", \"appendTo\"] }, { kind: \"component\", type: Button, selector: \"p-button\", inputs: [\"type\", \"iconPos\", \"icon\", \"badge\", \"label\", \"disabled\", \"loading\", \"loadingIcon\", \"raised\", \"rounded\", \"text\", \"plain\", \"severity\", \"outlined\", \"link\", \"tabindex\", \"size\", \"variant\", \"style\", \"styleClass\", \"badgeClass\", \"badgeSeverity\", \"ariaLabel\", \"buttonProps\", \"autofocus\", \"fluid\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\"] }, { kind: \"pipe\", type: I18nPropertyPipe, name: \"mngI18nProperty\" }, { kind: \"pipe\", type: TranslatePipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: TableColumnToggleComponent, decorators: [{\n type: Component,\n args: [{ selector: 'mng-table-column-toggle', imports: [I18nPropertyPipe, NgClass, MultiSelect, FormsModule, TranslatePipe, Tooltip, Button], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<p-multiSelect\\n #columnToggleMultiselect\\n styleClass=\\\"p-button-primary mng-table-columns-multiselect\\\"\\n appendTo=\\\"body\\\"\\n dataKey=\\\"id\\\"\\n tooltipPosition=\\\"left\\\"\\n placeholder=\\\"\\\"\\n dropdownIcon=\\\"pi pi-sliders-h\\\"\\n [filter]=\\\"false\\\"\\n [options]=\\\"prefs.columnsWithPrefs()\\\"\\n [ngModel]=\\\"columns()\\\"\\n [pTooltip]=\\\"'mngTable.adjustTable' | translate\\\"\\n [displaySelectedLabel]=\\\"false\\\"\\n (onChange)=\\\"prefs.onColumnToggle($event)\\\">\\n <ng-template #filter>\\n <div class=\\\"flex w-full justify-between items-center\\\">\\n <div class=\\\"p-checkbox\\\">\\n <div class=\\\"p-hidden-accessible\\\">\\n <input type=\\\"checkbox\\\" readonly=\\\"readonly\\\" [checked]=\\\"columnToggleMultiselect.allSelected\\\" (keydown.space)=\\\"columnToggleMultiselect.onToggleAll($event)\\\" />\\n </div>\\n <div\\n class=\\\"p-checkbox-box cursor-pointer\\\"\\n role=\\\"checkbox\\\"\\n [attr.aria-checked]=\\\"columnToggleMultiselect.allSelected\\\"\\n [class.p-select-option-selected]=\\\"anyColumnVisible()\\\"\\n (click)=\\\"prefs.onColumnToggleAll()\\\">\\n <span class=\\\"p-checkbox-icon\\\" [ngClass]=\\\"{'pi pi-check': anyColumnVisible()}\\\"></span>\\n </div>\\n </div>\\n <p-button\\n icon=\\\"pi pi-replay\\\"\\n severity=\\\"secondary\\\"\\n text=\\\"true\\\"\\n tooltipPosition=\\\"left\\\"\\n [pTooltip]=\\\"'mngTable.resetLayout' | translate\\\"\\n (click)=\\\"prefs.clearLayoutPreferences()\\\"></p-button>\\n </div>\\n </ng-template>\\n <ng-template #item let-item>\\n {{\\n (item.descriptor.title && !item.descriptor.titleUseModelBase\\n ? item.descriptor.title\\n : (item.descriptor.title ?? item.descriptor.property | mngI18nProperty: metadata.descriptor().model)\\n ) | translate\\n }}\\n </ng-template>\\n</p-multiSelect>\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXRvZ2dsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90YWJsZS9zcmMvY29tcG9uZW50cy9jb2x1bW4tdG9nZ2xlL2NvbHVtbi10b2dnbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vdGFibGUvc3JjL2NvbXBvbmVudHMvY29sdW1uLXRvZ2dsZS9jb2x1bW4tdG9nZ2xlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN4QyxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFeEMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFHN0QsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDM0UsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sMENBQTBDLENBQUM7OztBQVFqRixNQUFNLE9BQU8sMEJBQTBCO0lBTnZDO1FBT3VCLGFBQVEsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN4QyxVQUFLLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFFM0QscUJBQXFCO1FBQ0wsWUFBTyxHQUFHLEtBQUssQ0FBQyxRQUFRLGtEQUEyQixDQUFDO1FBRTFELHFCQUFnQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsNERBQUMsQ0FBQztLQUMxRTs4R0FSWSwwQkFBMEI7a0dBQTFCLDBCQUEwQiw0TkNyQnZDLG9pRUErQ0EsNENEN0JnQyxPQUFPLG9GQUFFLFdBQVcsaXZDQUFFLFdBQVcsK1ZBQWlCLE9BQU8sNlVBQUUsTUFBTSxxWUFBbkYsZ0JBQWdCLG1EQUFxQyxhQUFhOzsyRkFHbkUsMEJBQTBCO2tCQU50QyxTQUFTOytCQUNJLHlCQUF5QixXQUUxQixDQUFDLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLG1CQUM3RSx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ0NsYXNzfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBpbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7VHJhbnNsYXRlUGlwZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0J1dHRvbn0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHtNdWx0aVNlbGVjdH0gZnJvbSAncHJpbWVuZy9tdWx0aXNlbGVjdCc7XG5pbXBvcnQge1Rvb2x0aXB9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XG5cbmltcG9ydCB7STE4blByb3BlcnR5UGlwZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxuaW1wb3J0IHtDb2x1bW5XaXRoUHJlZmVyZW5jZXN9IGZyb20gJy4uLy4uL21vZGVscy9jb2x1bW4tcHJlZmVyZW5jZXMubW9kZWwnO1xuaW1wb3J0IHtUYWJsZU1ldGFkYXRhU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGFibGUtbWV0YWRhdGEuc2VydmljZSc7XG5pbXBvcnQge1RhYmxlUHJlZmVyZW5jZXNTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90YWJsZS1wcmVmZXJlbmNlcy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdtbmctdGFibGUtY29sdW1uLXRvZ2dsZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbHVtbi10b2dnbGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIGltcG9ydHM6IFtJMThuUHJvcGVydHlQaXBlLCBOZ0NsYXNzLCBNdWx0aVNlbGVjdCwgRm9ybXNNb2R1bGUsIFRyYW5zbGF0ZVBpcGUsIFRvb2x0aXAsIEJ1dHRvbl0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb2x1bW5Ub2dnbGVDb21wb25lbnQge1xuICAgIHByb3RlY3RlZCByZWFkb25seSBtZXRhZGF0YSA9IGluamVjdChUYWJsZU1ldGFkYXRhU2VydmljZSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHByZWZzID0gaW5qZWN0KFRhYmxlUHJlZmVyZW5jZXNTZXJ2aWNlKTtcblxuICAgIC8vIGRhdGEgc291cmNlIGlucHV0c1xuICAgIHB1YmxpYyByZWFkb25seSBjb2x1bW5zID0gaW5wdXQucmVxdWlyZWQ8Q29sdW1uV2l0aFByZWZlcmVuY2VzW10+KCk7XG5cbiAgICBwcm90ZWN0ZWQgYW55Q29sdW1uVmlzaWJsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY29sdW1ucygpLmxlbmd0aCA+IDApO1xufVxuIiwiPHAtbXVsdGlTZWxlY3RcbiAgICAjY29sdW1uVG9nZ2xlTXVsdGlzZWxlY3RcbiAgICBzdHlsZUNsYXNzPVwicC1idXR0b24tcHJpbWFyeSBtbmctdGFibGUtY29sdW1ucy1tdWx0aXNlbGVjdFwiXG4gICAgYXBwZW5kVG89XCJib2R5XCJcbiAgICBkYXRhS2V5PVwiaWRcIlxuICAgIHRvb2x0aXBQb3NpdGlvbj1cImxlZnRcIlxuICAgIHBsYWNlaG9sZGVyPVwiXCJcbiAgICBkcm9wZG93bkljb249XCJwaSBwaS1zbGlkZXJzLWhcIlxuICAgIFtmaWx0ZXJdPVwiZmFsc2VcIlxuICAgIFtvcHRpb25zXT1cInByZWZzLmNvbHVtbnNXaXRoUHJlZnMoKVwiXG4gICAgW25nTW9kZWxdPVwiY29sdW1ucygpXCJcbiAgICBbcFRvb2x0aXBdPVwiJ21uZ1RhYmxlLmFkanVzdFRhYmxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgW2Rpc3BsYXlTZWxlY3RlZExhYmVsXT1cImZhbHNlXCJcbiAgICAob25DaGFuZ2UpPVwicHJlZnMub25Db2x1bW5Ub2dnbGUoJGV2ZW50KVwiPlxuICAgIDxuZy10ZW1wbGF0ZSAjZmlsdGVyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCB3LWZ1bGwganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY2hlY2tib3hcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1oaWRkZW4tYWNjZXNzaWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgcmVhZG9ubHk9XCJyZWFkb25seVwiIFtjaGVja2VkXT1cImNvbHVtblRvZ2dsZU11bHRpc2VsZWN0LmFsbFNlbGVjdGVkXCIgKGtleWRvd24uc3BhY2UpPVwiY29sdW1uVG9nZ2xlTXVsdGlzZWxlY3Qub25Ub2dnbGVBbGwoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtY2hlY2tib3gtYm94IGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1jaGVja2VkXT1cImNvbHVtblRvZ2dsZU11bHRpc2VsZWN0LmFsbFNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnAtc2VsZWN0LW9wdGlvbi1zZWxlY3RlZF09XCJhbnlDb2x1bW5WaXNpYmxlKClcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicHJlZnMub25Db2x1bW5Ub2dnbGVBbGwoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtY2hlY2tib3gtaWNvblwiIFtuZ0NsYXNzXT1cInsncGkgcGktY2hlY2snOiBhbnlDb2x1bW5WaXNpYmxlKCl9XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8cC1idXR0b25cbiAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktcmVwbGF5XCJcbiAgICAgICAgICAgICAgICBzZXZlcml0eT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgdGV4dD1cInRydWVcIlxuICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImxlZnRcIlxuICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCInbW5nVGFibGUucmVzZXRMYXlvdXQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicHJlZnMuY2xlYXJMYXlvdXRQcmVmZXJlbmNlcygpXCI+PC9wLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2l0ZW0gbGV0LWl0ZW0+XG4gICAgICAgIHt7XG4gICAgICAgICAgICAoaXRlbS5kZXNjcmlwdG9yLnRpdGxlICYmICFpdGVtLmRlc2NyaXB0b3IudGl0bGVVc2VNb2RlbEJhc2VcbiAgICAgICAgICAgICAgICA/IGl0ZW0uZGVzY3JpcHRvci50aXRsZVxuICAgICAgICAgICAgICAgIDogKGl0ZW0uZGVzY3JpcHRvci50aXRsZSA/PyBpdGVtLmRlc2NyaXB0b3IucHJvcGVydHkgfCBtbmdJMThuUHJvcGVydHk6IG1ldGFkYXRhLmRlc2NyaXB0b3IoKS5tb2RlbClcbiAgICAgICAgICAgICkgfCB0cmFuc2xhdGVcbiAgICAgICAgfX1cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9wLW11bHRpU2VsZWN0PlxuIl19"],"names":[],"mappings":"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"}