@sumaris-net/ngx-components 2.9.0 → 2.9.1-8.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 (64) hide show
  1. package/doc/changelog.md +29 -0
  2. package/esm2022/public_api.mjs +3 -3
  3. package/esm2022/src/app/admin/services/filter/person.filter.mjs +1 -1
  4. package/esm2022/src/app/core/account/new-token.modal.mjs +1 -1
  5. package/esm2022/src/app/core/form/entity/entity-editor-modal.class.mjs +1 -1
  6. package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +1 -1
  7. package/esm2022/src/app/core/form/form.utils.mjs +9 -3
  8. package/esm2022/src/app/core/form/properties/properties.table.mjs +1 -1
  9. package/esm2022/src/app/core/home/home.mjs +49 -24
  10. package/esm2022/src/app/core/services/errors.mjs +1 -1
  11. package/esm2022/src/app/core/services/local-settings.service.mjs +9 -8
  12. package/esm2022/src/app/core/services/model/entity.model.mjs +1 -1
  13. package/esm2022/src/app/core/services/model/filter.model.mjs +1 -1
  14. package/esm2022/src/app/core/services/model/tree-item-entity.model.mjs +1 -1
  15. package/esm2022/src/app/core/services/testing/referential-filter.model.mjs +1 -1
  16. package/esm2022/src/app/core/table/testing/table.testing.mjs +1 -1
  17. package/esm2022/src/app/core/table/testing/table2.testing.mjs +1 -1
  18. package/esm2022/src/app/shared/form/field.component.mjs +1 -1
  19. package/esm2022/src/app/shared/forms.mjs +25 -2
  20. package/esm2022/src/app/shared/functions.mjs +3 -3
  21. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +43 -66
  22. package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +1 -1
  23. package/esm2022/src/app/shared/material/chips/chips.module.mjs +6 -3
  24. package/esm2022/src/app/shared/material/chips/material.chips.mjs +77 -59
  25. package/esm2022/src/app/shared/material/chips/testing/chips.test.mjs +3 -6
  26. package/esm2022/src/app/shared/material/paginator/material.paginator-i18n.mjs +11 -2
  27. package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +2 -6
  28. package/esm2022/src/app/shared/services/entity-service.class.mjs +1 -1
  29. package/esm2022/src/app/shared/services/memory-entity-service.class.mjs +1 -1
  30. package/esm2022/src/app/shared/types.mjs +1 -1
  31. package/esm2022/src/app/social/message/message.form.mjs +1 -1
  32. package/esm2022/src/app/social/message/message.model.mjs +1 -1
  33. package/esm2022/src/app/social/user-event/notification/user-event-notification.list.mjs +3 -3
  34. package/esm2022/src/app/social/user-event/testing/user-event.testing.model.mjs +1 -1
  35. package/fesm2022/sumaris-net.ngx-components.mjs +221 -171
  36. package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
  37. package/package.json +1 -1
  38. package/public_api.d.ts +2 -2
  39. package/src/app/admin/services/filter/person.filter.d.ts +1 -1
  40. package/src/app/core/form/entity/entity-editor-modal.class.d.ts +1 -1
  41. package/src/app/core/form/entity/entity-editor.class.d.ts +1 -10
  42. package/src/app/core/form/form.utils.d.ts +7 -1
  43. package/src/app/core/form/properties/properties.table.d.ts +1 -2
  44. package/src/app/core/home/home.d.ts +19 -5
  45. package/src/app/core/services/errors.d.ts +10 -0
  46. package/src/app/core/services/local-settings.service.d.ts +3 -1
  47. package/src/app/core/services/model/entity.model.d.ts +1 -2
  48. package/src/app/core/services/model/filter.model.d.ts +1 -1
  49. package/src/app/core/services/model/tree-item-entity.model.d.ts +1 -1
  50. package/src/app/core/services/testing/referential-filter.model.d.ts +1 -1
  51. package/src/app/shared/forms.d.ts +4 -0
  52. package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +10 -11
  53. package/src/app/shared/material/chips/chips.module.d.ts +2 -1
  54. package/src/app/shared/material/chips/material.chips.d.ts +8 -4
  55. package/src/app/shared/services/entity-service.class.d.ts +0 -2
  56. package/src/app/shared/services/memory-entity-service.class.d.ts +2 -1
  57. package/src/app/shared/types.d.ts +3 -0
  58. package/src/app/social/message/message.model.d.ts +1 -1
  59. package/src/app/social/user-event/testing/user-event.testing.model.d.ts +2 -3
  60. package/src/assets/i18n/fr.json +3 -1
  61. package/src/assets/manifest.json +1 -1
  62. package/src/theme/_ngx-components.forms.scss +43 -3
  63. package/src/theme/_ngx-components.scss +4 -1
  64. package/src/theme/_responsive.scss +0 -31
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sumaris-net/ngx-components",
3
3
  "description": "SUMARiS Angular components",
4
- "version": "2.9.0",
4
+ "version": "2.9.18.2",
5
5
  "author": "contact@e-is.pro",
6
6
  "license": "AGPL-3.0",
7
7
  "readmeFilename": "README.md",
package/public_api.d.ts CHANGED
@@ -155,6 +155,8 @@ export * from './src/app/core/services/pipes/person-to-string.pipe';
155
155
  export * from './src/app/core/services/pipes/usage-mode.pipes';
156
156
  export * from './src/app/core/services/pipes/referential-to-string.pipe';
157
157
  export * from './src/app/core/services/pipes/pipes.module';
158
+ export * from './src/app/core/services/base58';
159
+ export * from './src/app/core/services/errors';
158
160
  export * from './src/app/core/services/platform.service';
159
161
  export * from './src/app/core/services/network.service';
160
162
  export * from './src/app/core/services/network.types';
@@ -164,7 +166,6 @@ export * from './src/app/core/services/local-settings.service';
164
166
  export * from './src/app/core/services/account.service';
165
167
  export * from './src/app/core/services/crypto.service';
166
168
  export * from './src/app/core/services/auth-guard.service';
167
- export * from './src/app/core/services/base58';
168
169
  export * from './src/app/core/services/base-graphql-service.class';
169
170
  export * from './src/app/core/services/base-entity-service.class';
170
171
  export * from './src/app/core/services/storage/entities-storage.service';
@@ -288,7 +289,6 @@ export * from './src/app/shared/audio/audio.testing.module';
288
289
  export * from './src/app/core/core.testing.module';
289
290
  export * from './src/app/core/services/testing/referential-filter.model';
290
291
  export * from './src/app/core/services/testing/referential.validator';
291
- export * from './src/app/core/services/errors';
292
292
  export * from './src/app/core/table/testing/table.testing.module';
293
293
  export * from './src/app/core/table/testing/table.testing';
294
294
  export * from './src/app/core/table/testing/table2.testing';
@@ -1,8 +1,8 @@
1
1
  import { EntityFilter } from '../../../core/services/model/filter.model';
2
2
  import { Person } from '../../../core/services/model/person.model';
3
- import { FilterFn } from '../../../shared/services/entity-service.class';
4
3
  import { EntityAsObjectOptions } from '../../../core/services/model/entity.model';
5
4
  import { StoreObject } from '@apollo/client/core';
5
+ import { FilterFn } from '../../../shared/types';
6
6
  export declare class PersonFilter extends EntityFilter<PersonFilter, Person> {
7
7
  static fromObject: (source: any, opts?: any) => PersonFilter;
8
8
  static searchFilter(source: any): FilterFn<Person>;
@@ -6,10 +6,10 @@ import { Entity } from '../../services/model/entity.model';
6
6
  import { UsageMode } from '../../services/model/settings.model';
7
7
  import { FormGroup } from '@angular/forms';
8
8
  import { AppTabEditor, AppTabEditorOptions } from './tab-editor.class';
9
+ import { AppErrorWithDetails } from '../../services/errors';
9
10
  import { DateFormatService } from '../../../shared/pipes/date-format.pipe';
10
11
  import { WaitForOptions } from '../../../shared/observables';
11
12
  import { FormErrorTranslator } from '../../../shared/validator/form-error-adapter.class';
12
- import { AppErrorWithDetails } from './entity-editor.class';
13
13
  import * as i0 from "@angular/core";
14
14
  export interface IEntityEditorModalOptions<T extends Entity<T, ID> = Entity<any, any>, ID = number> {
15
15
  isNew: boolean;
@@ -6,13 +6,13 @@ import { Entity } from '../../services/model/entity.model';
6
6
  import { UsageMode } from '../../services/model/settings.model';
7
7
  import { FormGroup } from '@angular/forms';
8
8
  import { AppTabEditor, AppTabEditorOptions, IAppTabEditor } from './tab-editor.class';
9
+ import { AppErrorWithDetails } from '../../services/errors';
9
10
  import { EntityServiceLoadOptions, IEntityService } from '../../../shared/services/entity-service.class';
10
11
  import { DateFormatService } from '../../../shared/pipes/date-format.pipe';
11
12
  import { Environment } from '../../../../environments/environment.class';
12
13
  import { HistoryPageReference } from '../../services/model/history.model';
13
14
  import { WaitForOptions } from '../../../shared/observables';
14
15
  import { FormErrorTranslator } from '../../../shared/validator/form-error-adapter.class';
15
- import { FormErrors } from '../../../shared/forms';
16
16
  import * as i0 from "@angular/core";
17
17
  export interface IAppEntityEditor<T> extends IAppTabEditor<T> {
18
18
  usageMode: UsageMode;
@@ -34,15 +34,6 @@ export declare class AppEditorOptions extends AppTabEditorOptions {
34
34
  autoOpenNextTab?: boolean;
35
35
  i18nPrefix?: string;
36
36
  }
37
- export interface AppError {
38
- code?: number;
39
- message?: string;
40
- }
41
- export interface AppErrorWithDetails extends AppError {
42
- details: AppError & {
43
- errors?: FormErrors;
44
- };
45
- }
46
37
  export declare abstract class AppEntityEditor<T extends Entity<T, ID>, S extends IEntityService<T, ID> = IEntityService<T, any>, ID = number, LO extends EntityServiceLoadOptions = EntityServiceLoadOptions> extends AppTabEditor<T, ID, LO> implements OnInit, OnDestroy, AfterViewInit, IAppEntityEditor<T> {
47
38
  protected dataType: new () => T;
48
39
  protected dataService?: S;
@@ -2,7 +2,7 @@ import { AbstractControl, AbstractControlOptions, UntypedFormArray, UntypedFormB
2
2
  import { Entity } from '../services/model/entity.model';
3
3
  import { filterNumberInput, selectInputContent } from '../../shared/inputs';
4
4
  import { WaitForOptions } from '../../shared/observables';
5
- import { addValueInArray, clearValueInArray, copyEntity2Form, disableControls, getControlFromPath, getFormErrors, getFormValueFromEntity, logFormErrors, markAllAsTouched, markAsUntouched, removeValueInArray, resizeArray, updateValueAndValidity, waitIdle, waitWhilePending } from '../../shared/forms';
5
+ import { addValueInArray, clearValueInArray, copyEntity2Form, disableControls, filterFormErrors, filterFormErrorsByPath, filterFormErrorsByPrefix, getControlFromPath, getFormErrors, getFormValueFromEntity, logFormErrors, markAllAsTouched, markAsUntouched, removeValueInArray, resizeArray, updateValueAndValidity, waitIdle, waitWhilePending } from '../../shared/forms';
6
6
  export declare type IAppFormGetter = () => IAppForm;
7
7
  export declare interface OnReady {
8
8
  ngOnReady(): any;
@@ -321,6 +321,9 @@ export declare class AppFormArray<T extends Entity<T>, C extends AbstractControl
321
321
  removeAllEmpty(): void;
322
322
  protected setAllowEmptyArray(value: boolean): void;
323
323
  }
324
+ /**
325
+ * Helper class, for angular forms
326
+ */
324
327
  export declare class AppFormUtils {
325
328
  static copyEntity2Form: typeof copyEntity2Form;
326
329
  static getFormValueFromEntity: typeof getFormValueFromEntity;
@@ -354,6 +357,9 @@ export declare class AppFormUtils {
354
357
  static isControlHasInput: typeof isControlHasInput;
355
358
  static setCalculatedValue: typeof setCalculatedValue;
356
359
  static resetCalculatedValue: typeof resetCalculatedValue;
360
+ static filterErrorsByPrefix: typeof filterFormErrorsByPrefix;
361
+ static filterErrorsByPath: typeof filterFormErrorsByPath;
362
+ static filterErrors: typeof filterFormErrors;
357
363
  }
358
364
  export declare function isControlHasInput(controls: {
359
365
  [key: string]: AbstractControl;
@@ -4,11 +4,10 @@ import { Entity, EntityAsObjectOptions } from '../../services/model/entity.model
4
4
  import { AppValidatorService } from '../../services/validator/base.validator.class';
5
5
  import { AbstractControl, UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';
6
6
  import { FormFieldDefinition, FormFieldDefinitionMap } from '../../../shared/form/field.model';
7
- import { FilterFn } from '../../../shared/services/entity-service.class';
8
7
  import { Environment } from '../../../../environments/environment.class';
9
8
  import { TableElement } from '@e-is/ngx-material-table';
10
9
  import { EntityFilter } from '../../services/model/filter.model';
11
- import { ObjectMap } from '../../../shared/types';
10
+ import { FilterFn, ObjectMap } from '../../../shared/types';
12
11
  import { MatExpansionPanel } from '@angular/material/expansion';
13
12
  import * as i0 from "@angular/core";
14
13
  interface TranslatedFormFieldDefinition extends FormFieldDefinition {
@@ -15,10 +15,17 @@ import { IMenuItem } from '../menu/menu.model';
15
15
  import { ShowToastOptions } from '../../shared/toast/toasts';
16
16
  import { Environment } from '../../../environments/environment.class';
17
17
  import { HistoryPageReference } from '../services/model/history.model';
18
+ import { RxState } from '@rx-angular/state';
18
19
  import * as i0 from "@angular/core";
19
20
  export declare const getRandomImage: (files: string[]) => string;
20
21
  export declare const APP_HOME_BUTTONS: InjectionToken<IMenuItem[]>;
21
- export declare class HomePage implements OnDestroy {
22
+ export interface HomePageState {
23
+ loading: boolean;
24
+ showSpinner: boolean;
25
+ showPartnerBanner: boolean;
26
+ pageHistory: HistoryPageReference[];
27
+ }
28
+ export declare class HomePage extends RxState<HomePageState> implements OnDestroy {
22
29
  private accountService;
23
30
  private modalCtrl;
24
31
  private translate;
@@ -34,13 +41,12 @@ export declare class HomePage implements OnDestroy {
34
41
  private readonly _debug;
35
42
  private _subscription;
36
43
  private _config;
37
- loading: boolean;
44
+ protected pageHistory$: import("rxjs").Observable<HistoryPageReference[]>;
45
+ protected loading$: import("rxjs").Observable<boolean>;
38
46
  waitingNetwork: boolean;
39
- showSpinner: boolean;
40
47
  accountName: string;
41
48
  isLogin: boolean;
42
49
  $partners: BehaviorSubject<Department[]>;
43
- loadingBanner: boolean;
44
50
  logo: string;
45
51
  description: string;
46
52
  appName: string;
@@ -48,10 +54,17 @@ export declare class HomePage implements OnDestroy {
48
54
  canRegister: boolean;
49
55
  contentStyle: any;
50
56
  contentCredits: string;
51
- pageHistory: HistoryPageReference[];
52
57
  offline: boolean;
53
58
  $filteredButtons: BehaviorSubject<IMenuItem[]>;
54
59
  readonly showAccountButton: boolean;
60
+ set pageHistory(value: HistoryPageReference[]);
61
+ get pageHistory(): HistoryPageReference[];
62
+ set loading(value: boolean);
63
+ get loading(): boolean;
64
+ set showSpinner(value: boolean);
65
+ get showSpinner(): boolean;
66
+ set showPartnerBanner(value: boolean);
67
+ get showPartnerBanner(): boolean;
55
68
  get currentLocaleCode(): string;
56
69
  constructor(accountService: AccountService, modalCtrl: ModalController, translate: TranslateService, toastController: ToastController, configService: ConfigService, platform: PlatformService, cd: ChangeDetectorRef, network: NetworkService, settings: LocalSettingsService, environment: Environment, locales: LocaleConfig[], buttons: IMenuItem[]);
57
70
  ngOnDestroy(): void;
@@ -68,6 +81,7 @@ export declare class HomePage implements OnDestroy {
68
81
  protected onLogin(account: Account): void;
69
82
  protected onLogout(): void;
70
83
  protected refreshButtons(account?: Account): void;
84
+ protected removePageHistory(path: string): Promise<void>;
71
85
  protected markForCheck(): void;
72
86
  static ɵfac: i0.ɵɵFactoryDeclaration<HomePage, [null, null, null, null, null, null, null, null, null, null, null, { optional: true; }]>;
73
87
  static ɵcmp: i0.ɵɵComponentDeclaration<HomePage, "app-page-home", never, {}, {}, never, never, false, never>;
@@ -1,3 +1,13 @@
1
+ import { FormErrors } from '../../shared/forms';
2
+ export interface AppError {
3
+ code?: number;
4
+ message?: string;
5
+ }
6
+ export interface AppErrorWithDetails extends AppError {
7
+ details: AppError & {
8
+ errors?: FormErrors;
9
+ };
10
+ }
1
11
  export declare interface ServiceError {
2
12
  code: number;
3
13
  message: string;
@@ -81,7 +81,9 @@ export declare class LocalSettingsService extends StartableService<LocalSettings
81
81
  addToPageHistory(page: HistoryPageReference, opts?: AddToPageHistoryOptions, pageHistory?: HistoryPageReference[]): Promise<void>;
82
82
  removePageHistory(path: string, opts?: {
83
83
  emitEvent?: boolean;
84
- }, pageHistory?: HistoryPageReference[]): any;
84
+ persistImmediate?: boolean;
85
+ }, pageHistory?: HistoryPageReference[], // used for recursive call to children)
86
+ depth?: number): any;
85
87
  clearPageHistory(): Promise<void>;
86
88
  protected ngOnStop(): Promise<void>;
87
89
  private resetData;
@@ -1,7 +1,6 @@
1
1
  import { Moment } from 'moment';
2
2
  import { getPropertyByPath } from '../../../shared/functions';
3
- import { FilterFn } from '../../../shared/services/entity-service.class';
4
- import { ObjectMap, ObjectMapEntry, PropertiesArray, PropertiesMap } from '../../../shared/types';
3
+ import { FilterFn, ObjectMap, ObjectMapEntry, PropertiesArray, PropertiesMap } from '../../../shared/types';
5
4
  import { StoreObject } from '@apollo/client/core';
6
5
  import { TreeItemEntityUtils } from './tree-item-entity.model';
7
6
  import { SortDirection } from '@angular/material/sort';
@@ -1,5 +1,5 @@
1
1
  import { Entity, EntityAsObjectOptions, IEntity } from './entity.model';
2
- import { FilterFn } from '../../../shared/services/entity-service.class';
2
+ import { FilterFn } from '../../../shared/types';
3
3
  export interface IEntityFilter<F extends IEntityFilter<F, T, ID, AO, FO>, T extends IEntity<T, any>, ID = number, AO extends EntityAsObjectOptions = EntityAsObjectOptions, FO = any> extends IEntity<F, ID, AO, FO> {
4
4
  asPodObject(): any;
5
5
  asFilterFn(): FilterFn<T>;
@@ -1,6 +1,6 @@
1
1
  import { IEntity } from './entity.model';
2
- import { FilterFn } from '../../../shared/services/entity-service.class';
3
2
  import { EntityFilter } from './filter.model';
3
+ import { FilterFn } from '../../../shared/types';
4
4
  export declare interface ITreeItemEntity<T extends IEntity<T, ID>, ID = number> {
5
5
  parentId: ID;
6
6
  parent: T;
@@ -1,6 +1,6 @@
1
1
  import { EntityFilter } from '../model/filter.model';
2
2
  import { Referential } from '../model/referential.model';
3
- import { FilterFn } from '../../../shared/services/entity-service.class';
3
+ import { FilterFn } from '../../../shared/types';
4
4
  export declare class ReferentialFilter extends EntityFilter<ReferentialFilter, Referential> {
5
5
  static fromObject: (source: any, opts?: any) => ReferentialFilter;
6
6
  searchText: string;
@@ -1,5 +1,6 @@
1
1
  import { AbstractControl, UntypedFormArray, UntypedFormGroup, ValidationErrors } from '@angular/forms';
2
2
  import { WaitForOptions } from './observables';
3
+ import { Predicate } from '@angular/core';
3
4
  export interface FormErrors {
4
5
  [key: string]: ValidationErrors;
5
6
  }
@@ -91,3 +92,6 @@ export declare function waitWhilePending<T extends {
91
92
  export declare function waitIdle<T extends {
92
93
  loading: boolean;
93
94
  }>(form: T, opts?: WaitForOptions): Promise<void>;
95
+ export declare function filterFormErrorsByPrefix(errors: FormErrors, ...prefixes: string[]): FormErrors;
96
+ export declare function filterFormErrorsByPath(errors: FormErrors, filter: Predicate<string>): FormErrors;
97
+ export declare function filterFormErrors(errors: FormErrors, filter: Predicate<[string, any]>): FormErrors;
@@ -1,4 +1,4 @@
1
- import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, OnInit, Renderer2, ViewRef } from '@angular/core';
1
+ import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, OnInit, Renderer2 } from '@angular/core';
2
2
  import { ControlValueAccessor, FormGroupDirective, UntypedFormControl } from '@angular/forms';
3
3
  import { BehaviorSubject, Observable } from 'rxjs';
4
4
  import { SuggestFn } from '../../services/entity-service.class';
@@ -14,7 +14,6 @@ export declare class MatAutocompleteField implements OnInit, AfterViewInit, OnDe
14
14
  protected cd: ChangeDetectorRef;
15
15
  protected modalController: ModalController;
16
16
  protected renderer: Renderer2;
17
- private viewRef;
18
17
  private formGroupDir;
19
18
  private _onChangeCallback;
20
19
  private _onTouchedCallback;
@@ -60,6 +59,7 @@ export declare class MatAutocompleteField implements OnInit, AfterViewInit, OnDe
60
59
  noResultMessage: string;
61
60
  panelClass: string;
62
61
  panelWidth: string;
62
+ disableRipple: boolean;
63
63
  matAutocompletePosition: 'auto' | 'above' | 'below';
64
64
  multiple: boolean;
65
65
  fetchMoreThreshold: string;
@@ -68,22 +68,21 @@ export declare class MatAutocompleteField implements OnInit, AfterViewInit, OnDe
68
68
  debug: boolean;
69
69
  showSearchBar: boolean;
70
70
  stickySearchBar: boolean;
71
- disableRipple: boolean;
72
- applyImplicitValue: boolean | (() => boolean);
71
+ applyImplicitValue: boolean | ((value: any) => boolean);
73
72
  dropButtonTitle: string;
74
73
  clearButtonTitle: string;
75
74
  clicked: EventEmitter<MouseEvent>;
76
75
  blurred: EventEmitter<FocusEvent>;
77
76
  focused: EventEmitter<FocusEvent>;
78
77
  dropButtonClick: EventEmitter<Event>;
79
- keydownEscape: EventEmitter<any>;
80
- keyupEnter: EventEmitter<any>;
78
+ keydownEscape: EventEmitter<Event>;
79
+ keyupEnter: EventEmitter<Event>;
81
80
  matSelect: MatSelect;
82
81
  ionSearchbar: IonSearchbar;
83
82
  matInputText: ElementRef;
84
83
  autocomplete: MatAutocomplete;
85
84
  autocompleteTrigger: MatAutocompleteTrigger;
86
- constructor(cd: ChangeDetectorRef, modalController: ModalController, renderer: Renderer2, viewRef: ViewRef, formGroupDir: FormGroupDirective);
85
+ constructor(cd: ChangeDetectorRef, modalController: ModalController, renderer: Renderer2, formGroupDir: FormGroupDirective);
87
86
  get itemCount(): number;
88
87
  get canFetchMore(): boolean;
89
88
  set filter(value: any);
@@ -98,7 +97,6 @@ export declare class MatAutocompleteField implements OnInit, AfterViewInit, OnDe
98
97
  get disabled(): boolean;
99
98
  get enabled(): boolean;
100
99
  get loading(): boolean;
101
- get desktop(): boolean;
102
100
  ngOnInit(): void;
103
101
  ngAfterViewInit(): void;
104
102
  ngOnDestroy(): void;
@@ -140,8 +138,8 @@ export declare class MatAutocompleteField implements OnInit, AfterViewInit, OnDe
140
138
  * @private
141
139
  */
142
140
  private _fixSearchbarOverlay;
143
- static ɵfac: i0.ɵɵFactoryDeclaration<MatAutocompleteField, [null, null, null, null, { optional: true; }]>;
144
- static ɵcmp: i0.ɵɵComponentDeclaration<MatAutocompleteField, "mat-autocomplete-field", never, { "equals": { "alias": "equals"; "required": false; }; "logPrefix": { "alias": "logPrefix"; "required": false; }; "formControl": { "alias": "formControl"; "required": false; }; "formControlName": { "alias": "formControlName"; "required": false; }; "floatLabel": { "alias": "floatLabel"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "subscriptSizing": { "alias": "subscriptSizing"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "suggestFn": { "alias": "suggestFn"; "required": false; }; "required": { "alias": "required"; "required": false; }; "mobile": { "alias": "mobile"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; "debounceTime": { "alias": "debounceTime"; "required": false; }; "displayWith": { "alias": "displayWith"; "required": false; }; "displayAttributes": { "alias": "displayAttributes"; "required": false; }; "displayColumnSizes": { "alias": "displayColumnSizes"; "required": false; }; "displayColumnNames": { "alias": "displayColumnNames"; "required": false; }; "highlightAccent": { "alias": "highlightAccent"; "required": false; }; "showAllOnFocus": { "alias": "showAllOnFocus"; "required": false; }; "showPanelOnFocus": { "alias": "showPanelOnFocus"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "config": { "alias": "config"; "required": false; }; "i18nPrefix": { "alias": "i18nPrefix"; "required": false; }; "noResultMessage": { "alias": "noResultMessage"; "required": false; }; "panelClass": { "alias": "panelClass"; "required": false; }; "panelWidth": { "alias": "panelWidth"; "required": false; }; "matAutocompletePosition": { "alias": "matAutocompletePosition"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "fetchMoreThreshold": { "alias": "fetchMoreThreshold"; "required": false; }; "suggestLengthThreshold": { "alias": "suggestLengthThreshold"; "required": false; }; "showLoadingSpinner": { "alias": "showLoadingSpinner"; "required": false; }; "debug": { "alias": "debug"; "required": false; }; "showSearchBar": { "alias": "showSearchBar"; "required": false; }; "stickySearchBar": { "alias": "stickySearchBar"; "required": false; }; "disableRipple": { "alias": "disableRipple"; "required": false; }; "applyImplicitValue": { "alias": "applyImplicitValue"; "required": false; }; "dropButtonTitle": { "alias": "dropButtonTitle"; "required": false; }; "clearButtonTitle": { "alias": "clearButtonTitle"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "items": { "alias": "items"; "required": false; }; }, { "clicked": "click"; "blurred": "blur"; "focused": "focus"; "dropButtonClick": "dropButtonClick"; "keydownEscape": "keydown.escape"; "keyupEnter": "keyup.enter"; }, never, ["[matAfter]", "[matPrefix]", "[matSuffix]", "mat-error,[matError]", "mat-hint:not([align='end']),[matHint]", "mat-hint[align='end']"], false, never>;
141
+ static ɵfac: i0.ɵɵFactoryDeclaration<MatAutocompleteField, [null, null, null, { optional: true; }]>;
142
+ static ɵcmp: i0.ɵɵComponentDeclaration<MatAutocompleteField, "mat-autocomplete-field", never, { "equals": { "alias": "equals"; "required": false; }; "logPrefix": { "alias": "logPrefix"; "required": false; }; "formControl": { "alias": "formControl"; "required": false; }; "formControlName": { "alias": "formControlName"; "required": false; }; "floatLabel": { "alias": "floatLabel"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "subscriptSizing": { "alias": "subscriptSizing"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "suggestFn": { "alias": "suggestFn"; "required": false; }; "required": { "alias": "required"; "required": false; }; "mobile": { "alias": "mobile"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; "debounceTime": { "alias": "debounceTime"; "required": false; }; "displayWith": { "alias": "displayWith"; "required": false; }; "displayAttributes": { "alias": "displayAttributes"; "required": false; }; "displayColumnSizes": { "alias": "displayColumnSizes"; "required": false; }; "displayColumnNames": { "alias": "displayColumnNames"; "required": false; }; "highlightAccent": { "alias": "highlightAccent"; "required": false; }; "showAllOnFocus": { "alias": "showAllOnFocus"; "required": false; }; "showPanelOnFocus": { "alias": "showPanelOnFocus"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "config": { "alias": "config"; "required": false; }; "i18nPrefix": { "alias": "i18nPrefix"; "required": false; }; "noResultMessage": { "alias": "noResultMessage"; "required": false; }; "panelClass": { "alias": "panelClass"; "required": false; }; "panelWidth": { "alias": "panelWidth"; "required": false; }; "disableRipple": { "alias": "disableRipple"; "required": false; }; "matAutocompletePosition": { "alias": "matAutocompletePosition"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "fetchMoreThreshold": { "alias": "fetchMoreThreshold"; "required": false; }; "suggestLengthThreshold": { "alias": "suggestLengthThreshold"; "required": false; }; "showLoadingSpinner": { "alias": "showLoadingSpinner"; "required": false; }; "debug": { "alias": "debug"; "required": false; }; "showSearchBar": { "alias": "showSearchBar"; "required": false; }; "stickySearchBar": { "alias": "stickySearchBar"; "required": false; }; "applyImplicitValue": { "alias": "applyImplicitValue"; "required": false; }; "dropButtonTitle": { "alias": "dropButtonTitle"; "required": false; }; "clearButtonTitle": { "alias": "clearButtonTitle"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "items": { "alias": "items"; "required": false; }; }, { "clicked": "click"; "blurred": "blur"; "focused": "focus"; "dropButtonClick": "dropButtonClick"; "keydownEscape": "keydown.escape"; "keyupEnter": "keyup.enter"; }, never, ["[matAfter]", "[matPrefix]", "[matSuffix]", "mat-error,[matError]", "mat-hint:not([align='end']),[matHint]", "mat-hint[align='end']"], false, never>;
145
143
  static ngAcceptInputType_required: unknown;
146
144
  static ngAcceptInputType_mobile: unknown;
147
145
  static ngAcceptInputType_clearable: unknown;
@@ -150,11 +148,12 @@ export declare class MatAutocompleteField implements OnInit, AfterViewInit, OnDe
150
148
  static ngAcceptInputType_showAllOnFocus: unknown;
151
149
  static ngAcceptInputType_showPanelOnFocus: unknown;
152
150
  static ngAcceptInputType_autofocus: unknown;
151
+ static ngAcceptInputType_disableRipple: unknown;
153
152
  static ngAcceptInputType_multiple: unknown;
154
153
  static ngAcceptInputType_suggestLengthThreshold: unknown;
155
154
  static ngAcceptInputType_showLoadingSpinner: unknown;
156
155
  static ngAcceptInputType_debug: unknown;
157
156
  static ngAcceptInputType_showSearchBar: unknown;
158
157
  static ngAcceptInputType_stickySearchBar: unknown;
159
- static ngAcceptInputType_disableRipple: unknown;
158
+ static ngAcceptInputType_readonly: unknown;
160
159
  }
@@ -14,8 +14,9 @@ import * as i12 from "@angular/material/button";
14
14
  import * as i13 from "@angular/material/select";
15
15
  import * as i14 from "@angular/material/chips";
16
16
  import * as i15 from "@ngx-translate/core";
17
+ import * as i16 from "../../rx-state.module";
17
18
  export declare class SharedMatChipsModule {
18
19
  static ɵfac: i0.ɵɵFactoryDeclaration<SharedMatChipsModule, never>;
19
- static ɵmod: i0.ɵɵNgModuleDeclaration<SharedMatChipsModule, [typeof i1.MatChipsField], [typeof i2.CommonModule, typeof i3.IonicModule, typeof i4.ReactiveFormsModule, typeof i5.SharedPipesModule, typeof i6.SharedDirectivesModule, typeof i7.MatCommonModule, typeof i8.MatAutocompleteModule, typeof i9.MatFormFieldModule, typeof i10.MatInputModule, typeof i11.MatIconModule, typeof i12.MatButtonModule, typeof i13.MatSelectModule, typeof i14.MatChipsModule, typeof i15.TranslateModule], [typeof i1.MatChipsField]>;
20
+ static ɵmod: i0.ɵɵNgModuleDeclaration<SharedMatChipsModule, [typeof i1.MatChipsField], [typeof i2.CommonModule, typeof i3.IonicModule, typeof i4.ReactiveFormsModule, typeof i5.SharedPipesModule, typeof i6.SharedDirectivesModule, typeof i7.MatCommonModule, typeof i8.MatAutocompleteModule, typeof i9.MatFormFieldModule, typeof i10.MatInputModule, typeof i11.MatIconModule, typeof i12.MatButtonModule, typeof i13.MatSelectModule, typeof i14.MatChipsModule, typeof i15.TranslateModule, typeof i16.RxStateModule], [typeof i1.MatChipsField]>;
20
21
  static ɵinj: i0.ɵɵInjectorDeclaration<SharedMatChipsModule>;
21
22
  }
@@ -7,7 +7,7 @@ import { AppFloatLabelType, DisplayFn, EqualsFn } from '../../form/field.model';
7
7
  import { ThemePalette } from '@angular/material/core';
8
8
  import { MatAutocompleteFieldConfig } from '../autocomplete/material.autocomplete.config';
9
9
  import { MatFormFieldAppearance, SubscriptSizing } from '@angular/material/form-field';
10
- import { MatAutocomplete, MatAutocompleteSelectedEvent, MatAutocompleteTrigger } from '@angular/material/autocomplete';
10
+ import { MatAutocomplete, MatAutocompleteTrigger } from '@angular/material/autocomplete';
11
11
  import * as i0 from "@angular/core";
12
12
  export declare class MatChipsField implements OnInit, OnDestroy, InputElement, ControlValueAccessor {
13
13
  protected cd: ChangeDetectorRef;
@@ -55,6 +55,7 @@ export declare class MatChipsField implements OnInit, OnDestroy, InputElement, C
55
55
  noResultMessage: string;
56
56
  panelClass: string;
57
57
  panelWidth: string;
58
+ disableRipple: boolean;
58
59
  matAutocompletePosition: 'auto' | 'above' | 'below';
59
60
  itemSize: string;
60
61
  fetchMoreThreshold: string;
@@ -62,6 +63,7 @@ export declare class MatChipsField implements OnInit, OnDestroy, InputElement, C
62
63
  showLoadingSpinner: boolean;
63
64
  chipColor: ThemePalette;
64
65
  debug: boolean;
66
+ applyImplicitValue: boolean | ((value: any) => boolean);
65
67
  dropButtonTitle: string;
66
68
  clearButtonTitle: string;
67
69
  clicked: EventEmitter<MouseEvent>;
@@ -91,9 +93,9 @@ export declare class MatChipsField implements OnInit, OnDestroy, InputElement, C
91
93
  /**
92
94
  * Add item to chips
93
95
  *
94
- * @param event
96
+ * @param item
95
97
  */
96
- add(event: MatAutocompleteSelectedEvent): void;
98
+ add(item: any): void;
97
99
  /**
98
100
  * Remove item from chips
99
101
  *
@@ -124,7 +126,7 @@ export declare class MatChipsField implements OnInit, OnDestroy, InputElement, C
124
126
  private markForCheck;
125
127
  private markAsLoading;
126
128
  static ɵfac: i0.ɵɵFactoryDeclaration<MatChipsField, [null, { optional: true; }]>;
127
- static ɵcmp: i0.ɵɵComponentDeclaration<MatChipsField, "mat-chips-field", never, { "equals": { "alias": "equals"; "required": false; }; "logPrefix": { "alias": "logPrefix"; "required": false; }; "formControl": { "alias": "formControl"; "required": false; }; "formControlName": { "alias": "formControlName"; "required": false; }; "floatLabel": { "alias": "floatLabel"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "subscriptSizing": { "alias": "subscriptSizing"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "suggestFn": { "alias": "suggestFn"; "required": false; }; "required": { "alias": "required"; "required": false; }; "mobile": { "alias": "mobile"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; "debounceTime": { "alias": "debounceTime"; "required": false; }; "displayWith": { "alias": "displayWith"; "required": false; }; "displayAttributes": { "alias": "displayAttributes"; "required": false; }; "displayColumnSizes": { "alias": "displayColumnSizes"; "required": false; }; "displayColumnNames": { "alias": "displayColumnNames"; "required": false; }; "highlightAccent": { "alias": "highlightAccent"; "required": false; }; "showAllOnFocus": { "alias": "showAllOnFocus"; "required": false; }; "showPanelOnFocus": { "alias": "showPanelOnFocus"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "config": { "alias": "config"; "required": false; }; "i18nPrefix": { "alias": "i18nPrefix"; "required": false; }; "noResultMessage": { "alias": "noResultMessage"; "required": false; }; "panelClass": { "alias": "class"; "required": false; }; "panelWidth": { "alias": "panelWidth"; "required": false; }; "matAutocompletePosition": { "alias": "matAutocompletePosition"; "required": false; }; "itemSize": { "alias": "itemSize"; "required": false; }; "fetchMoreThreshold": { "alias": "fetchMoreThreshold"; "required": false; }; "suggestLengthThreshold": { "alias": "suggestLengthThreshold"; "required": false; }; "showLoadingSpinner": { "alias": "showLoadingSpinner"; "required": false; }; "chipColor": { "alias": "chipColor"; "required": false; }; "debug": { "alias": "debug"; "required": false; }; "dropButtonTitle": { "alias": "dropButtonTitle"; "required": false; }; "clearButtonTitle": { "alias": "clearButtonTitle"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "items": { "alias": "items"; "required": false; }; }, { "clicked": "click"; "blurred": "blur"; "focused": "focus"; "dropButtonClick": "dropButtonClick"; "keydownEscape": "keydown.escape"; "keyupEnter": "keyup.enter"; }, never, ["[matAfter]", "[matPrefix]", "[matSuffix]", "mat-error,[matError]", "mat-hint:not([align='end']),[matHint]", "mat-hint[align='end']"], false, never>;
129
+ static ɵcmp: i0.ɵɵComponentDeclaration<MatChipsField, "mat-chips-field", never, { "equals": { "alias": "equals"; "required": false; }; "logPrefix": { "alias": "logPrefix"; "required": false; }; "formControl": { "alias": "formControl"; "required": false; }; "formControlName": { "alias": "formControlName"; "required": false; }; "floatLabel": { "alias": "floatLabel"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "subscriptSizing": { "alias": "subscriptSizing"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "suggestFn": { "alias": "suggestFn"; "required": false; }; "required": { "alias": "required"; "required": false; }; "mobile": { "alias": "mobile"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; "debounceTime": { "alias": "debounceTime"; "required": false; }; "displayWith": { "alias": "displayWith"; "required": false; }; "displayAttributes": { "alias": "displayAttributes"; "required": false; }; "displayColumnSizes": { "alias": "displayColumnSizes"; "required": false; }; "displayColumnNames": { "alias": "displayColumnNames"; "required": false; }; "highlightAccent": { "alias": "highlightAccent"; "required": false; }; "showAllOnFocus": { "alias": "showAllOnFocus"; "required": false; }; "showPanelOnFocus": { "alias": "showPanelOnFocus"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "config": { "alias": "config"; "required": false; }; "i18nPrefix": { "alias": "i18nPrefix"; "required": false; }; "noResultMessage": { "alias": "noResultMessage"; "required": false; }; "panelClass": { "alias": "panelClass"; "required": false; }; "panelWidth": { "alias": "panelWidth"; "required": false; }; "disableRipple": { "alias": "disableRipple"; "required": false; }; "matAutocompletePosition": { "alias": "matAutocompletePosition"; "required": false; }; "itemSize": { "alias": "itemSize"; "required": false; }; "fetchMoreThreshold": { "alias": "fetchMoreThreshold"; "required": false; }; "suggestLengthThreshold": { "alias": "suggestLengthThreshold"; "required": false; }; "showLoadingSpinner": { "alias": "showLoadingSpinner"; "required": false; }; "chipColor": { "alias": "chipColor"; "required": false; }; "debug": { "alias": "debug"; "required": false; }; "applyImplicitValue": { "alias": "applyImplicitValue"; "required": false; }; "dropButtonTitle": { "alias": "dropButtonTitle"; "required": false; }; "clearButtonTitle": { "alias": "clearButtonTitle"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "items": { "alias": "items"; "required": false; }; }, { "clicked": "click"; "blurred": "blur"; "focused": "focus"; "dropButtonClick": "dropButtonClick"; "keydownEscape": "keydown.escape"; "keyupEnter": "keyup.enter"; }, never, ["[matAfter]", "[matPrefix]", "[matSuffix]", "mat-error,[matError]", "mat-hint:not([align='end']),[matHint]", "mat-hint[align='end']"], false, never>;
128
130
  static ngAcceptInputType_required: unknown;
129
131
  static ngAcceptInputType_mobile: unknown;
130
132
  static ngAcceptInputType_readonly: unknown;
@@ -134,6 +136,8 @@ export declare class MatChipsField implements OnInit, OnDestroy, InputElement, C
134
136
  static ngAcceptInputType_showAllOnFocus: unknown;
135
137
  static ngAcceptInputType_showPanelOnFocus: unknown;
136
138
  static ngAcceptInputType_autofocus: unknown;
139
+ static ngAcceptInputType_disableRipple: unknown;
140
+ static ngAcceptInputType_suggestLengthThreshold: unknown;
137
141
  static ngAcceptInputType_showLoadingSpinner: unknown;
138
142
  static ngAcceptInputType_debug: unknown;
139
143
  }
@@ -22,8 +22,6 @@ export declare type SuggestFn<T, F> = (value: any, filter?: F, sortBy?: string |
22
22
  export declare interface SuggestService<T, F> {
23
23
  suggest: SuggestFn<T, F>;
24
24
  }
25
- export declare type FilterFn<T> = (data: T) => boolean;
26
- export declare type FilterFnFactory<T, F> = (filter: F) => FilterFn<T>;
27
25
  export declare interface EntityServiceLoadOptions {
28
26
  fetchPolicy?: FetchPolicy;
29
27
  trash?: boolean;
@@ -1,10 +1,11 @@
1
1
  import { BehaviorSubject, Observable } from 'rxjs';
2
- import { EntitiesServiceLoadOptions, EntitiesServiceWatchOptions, FilterFn, FilterFnFactory, IEntitiesService, LoadResult } from './entity-service.class';
2
+ import { EntitiesServiceLoadOptions, EntitiesServiceWatchOptions, IEntitiesService, LoadResult } from './entity-service.class';
3
3
  import { SortDirection } from '@angular/material/sort';
4
4
  import { OnDestroy } from '@angular/core';
5
5
  import { IEntity } from '../../core/services/model/entity.model';
6
6
  import { WaitForOptions } from '../observables';
7
7
  import { StartableObservableService } from './startable-observable-service.class';
8
+ import { FilterFn, FilterFnFactory } from '../types';
8
9
  import * as i0 from "@angular/core";
9
10
  export interface InMemoryEntitiesServiceOptions<T, F> {
10
11
  onSort?: (data: T[], sortBy?: string, sortDirection?: SortDirection) => T[];
@@ -1,5 +1,6 @@
1
1
  import { ThemePalette } from '@angular/material/core';
2
2
  import { PredefinedColors } from '@ionic/core';
3
+ import { Predicate } from '@angular/core';
3
4
  export declare type KeyType = string | number;
4
5
  export declare type KeyValueType<T> = {
5
6
  [key in KeyType]: T;
@@ -24,3 +25,5 @@ export declare interface IconRef {
24
25
  matSvgIcon?: string;
25
26
  color?: AppColors;
26
27
  }
28
+ export declare type FilterFn<T> = Predicate<T>;
29
+ export declare type FilterFnFactory<T, F> = (filter: F) => FilterFn<T>;
@@ -1,9 +1,9 @@
1
1
  import { Entity, EntityAsObjectOptions } from '../../core/services/model/entity.model';
2
2
  import { StoreObject } from '@apollo/client/core';
3
3
  import { EntityFilter } from '../../core/services/model/filter.model';
4
- import { FilterFn } from '../../shared/services/entity-service.class';
5
4
  import { Person } from '../../core/services/model/person.model';
6
5
  import { PersonFilter } from '../../admin/services/filter/person.filter';
6
+ import { FilterFn } from '../../shared/types';
7
7
  export declare const MessageTypes: {
8
8
  INBOX_MESSAGE: string;
9
9
  EMAIL: string;
@@ -1,9 +1,8 @@
1
1
  import { Entity, EntityAsObjectOptions } from '../../../core/services/model/entity.model';
2
2
  import { Moment } from 'moment';
3
- import { IconRef } from '../../../shared/types';
4
- import { EventLevel, IUserEvent, IUserEventFilter, IUserEventAction } from '../user-event.model';
3
+ import { FilterFn, IconRef } from '../../../shared/types';
4
+ import { EventLevel, IUserEvent, IUserEventAction, IUserEventFilter } from '../user-event.model';
5
5
  import { EntityFilter } from '../../../core/services/model/filter.model';
6
- import { FilterFn } from '../../../shared/services/entity-service.class';
7
6
  import { StoreObject } from '@apollo/client/core';
8
7
  export declare class UserEventTest extends Entity<UserEventTest> implements IUserEvent<UserEventTest> {
9
8
  static fromObject: (source: any, opts?: any) => UserEventTest;
@@ -125,7 +125,9 @@
125
125
  "ITEMS_PER_PAGE": "Nombre de lignes",
126
126
  "NEXT_PAGE": "Page suivante",
127
127
  "PREVIOUS_PAGE": "Page précédente",
128
- "OF": "sur"
128
+ "OF": "sur",
129
+ "FIRST_PAGE": "Première page",
130
+ "LAST_PAGE": "Dernière page"
129
131
  },
130
132
  "TABLE": {
131
133
  "FILTERED_PARENTHESIS": "(filtré)"
@@ -2,7 +2,7 @@
2
2
  "name": "ngx-sumaris-components",
3
3
  "short_name": "ngx-sumaris-components",
4
4
  "manifest_version": 1,
5
- "version": "2.9.0",
5
+ "version": "2.9.18",
6
6
  "default_locale": "fr",
7
7
  "description": "Angular components for building beautiful and responsive Apps",
8
8
  "icons": [{
@@ -191,24 +191,64 @@ ion-grid.form-container {
191
191
  padding: 0;
192
192
 
193
193
  & > ion-col {
194
-
195
194
  // No top/bottom padding between grid cell
196
195
  padding-bottom: 0;
197
196
  padding-top: 0;
198
197
 
199
198
  & > ion-label {
200
199
  color: var(--ion-color-primary100);
201
- padding-inline-end: 5px;
202
200
  }
203
201
 
204
- & > ion-label[text-wrap] {
202
+ & > ion-label[text-wrap],
203
+ & > ion-label.ion-text-wrap {
205
204
  word-wrap: normal;
206
205
  white-space: normal;
206
+ line-height: 1rem !important;
207
207
  }
208
208
  }
209
209
  }
210
210
  }
211
211
 
212
+
213
+ // --------------------------------------------------
214
+ // Forms
215
+ // --------------------------------------------------
216
+ // On small screen, align label on left
217
+ @media screen and (max-width: $screen-sm-max) {
218
+ form.form-container > ion-grid,
219
+ ion-grid.form-container {
220
+ ion-col > ion-label.ion-float-center,
221
+ ion-col > ion-label.ion-float-end {
222
+ display: block;
223
+ width: 100%;
224
+ text-align: start !important;
225
+ line-height: 37px;
226
+ min-height: 37px;
227
+ margin-top: 0;
228
+ margin-bottom: 0;
229
+ margin-right: 0;
230
+ }
231
+ }
232
+ }
233
+
234
+ // On large screen, align label on right
235
+ @media screen and (min-width: $screen-md) {
236
+
237
+ form.form-container > ion-grid,
238
+ ion-grid.form-container {
239
+ ion-col > ion-label.ion-float-center,
240
+ ion-col > ion-label.ion-float-end {
241
+ display: block;
242
+ text-align: end !important;
243
+ min-height: var(--mat-form-field-container-height, 45px);
244
+ margin-top: 11px;
245
+ margin-bottom: 11px;
246
+ padding-inline-end: 5px;
247
+ }
248
+ }
249
+ }
250
+
251
+
212
252
  // TODO: activer ce code et tester les mat-select en dark mode
213
253
  //html {
214
254
  // div.mat-mdc-select-panel {
@@ -255,7 +255,10 @@ mat-option:not(:last-of-type) {
255
255
 
256
256
  // FIXME : This is a workaround find at : https://github.com/angular/components/issues/26000#issuecomment-1563107933
257
257
  .cdk-overlay-pane.mat-select-panel-fit-content {
258
- min-width: fit-content;
258
+ --min-width: fit-content;
259
+ --max-width: calc(100vw - 64px);
260
+ min-width: var(--min-width);
261
+ max-width: var(--max-width);
259
262
  }
260
263
 
261
264
  .mat-mdc-autocomplete-panel-center .mat-mdc-autocomplete-panel,