@sumaris-net/ngx-components 2.8.1-beta2 → 2.8.1-beta3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/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.8.1-beta2",
4
+ "version": "2.8.1-beta3",
5
5
  "author": "contact@e-is.pro",
6
6
  "license": "AGPL-3.0",
7
7
  "readmeFilename": "README.md",
package/public_api.d.ts CHANGED
@@ -200,6 +200,7 @@ export * from './src/app/core/table/entities-table-datasource.class';
200
200
  export * from './src/app/core/table/entities-async-table-datasource.class';
201
201
  export * from './src/app/core/table/table-select-columns.component';
202
202
  export * from './src/app/core/table/actions-column.component';
203
+ export * from './src/app/core/table/row-field.component';
203
204
  export * from './src/app/core/icon/icon.component';
204
205
  export * from './src/app/core/icon/icon.module';
205
206
  export * from './src/app/core/home/home';
@@ -43,6 +43,7 @@ export declare class AccountPage extends AppForm<Account> implements OnInit, OnD
43
43
  readonly mobile: boolean;
44
44
  get valid(): boolean;
45
45
  protected showApiTokens: boolean;
46
+ protected showLatLonFormat: boolean;
46
47
  constructor(injector: Injector, formBuilder: UntypedFormBuilder, accountService: AccountService, network: NetworkService, navController: NavController, validatorService: AccountValidatorService, configService: ConfigService, cd: ChangeDetectorRef, locales: LocaleConfig[]);
47
48
  ngOnInit(): void;
48
49
  ngOnDestroy(): void;
@@ -8,6 +8,7 @@ import { IAppForm } from '../form/form.utils';
8
8
  import { AccountService } from '../services/account.service';
9
9
  import * as i0 from "@angular/core";
10
10
  export interface INewTokenModalOptions extends IEntityEditorModalOptions<UserToken> {
11
+ showScopes: boolean;
11
12
  tokenScopes: TokenScope[];
12
13
  existingNames: string[];
13
14
  }
@@ -18,6 +19,7 @@ export declare class NewTokenModal extends AppEntityEditorModal<UserToken> imple
18
19
  tokenForm: UntypedFormGroup;
19
20
  tokenAppForm: IAppForm;
20
21
  tokenConfig: MatAutocompleteFieldConfig;
22
+ showScopes: boolean;
21
23
  tokenScopes: TokenScope[];
22
24
  existingNames: string[];
23
25
  private readonly platform;
@@ -35,5 +37,5 @@ export declare class NewTokenModal extends AppEntityEditorModal<UserToken> imple
35
37
  copy(event: UIEvent): Promise<void>;
36
38
  protected getFlags(scopes: TokenScope[]): number;
37
39
  static ɵfac: i0.ɵɵFactoryDeclaration<NewTokenModal, never>;
38
- static ɵcmp: i0.ɵɵComponentDeclaration<NewTokenModal, "app-new-token-modal", never, { "tokenScopes": { "alias": "tokenScopes"; "required": false; }; "existingNames": { "alias": "existingNames"; "required": false; }; }, {}, never, ["*"], false, never>;
40
+ static ɵcmp: i0.ɵɵComponentDeclaration<NewTokenModal, "app-new-token-modal", never, { "showScopes": { "alias": "showScopes"; "required": false; }; "tokenScopes": { "alias": "tokenScopes"; "required": false; }; "existingNames": { "alias": "existingNames"; "required": false; }; }, {}, never, ["*"], false, never>;
39
41
  }
@@ -4,15 +4,20 @@ import { ValidatorService } from '@e-is/ngx-material-table';
4
4
  import { TokenScope, UserToken } from '../services/model/token.model';
5
5
  import { AppInMemoryTable } from '../table/memory-table.class';
6
6
  import { Environment } from '../../../environments/environment.class';
7
+ import { ConfigService } from '../services/config.service';
8
+ import { Configuration } from '../services/model/config.model';
7
9
  import * as i0 from "@angular/core";
8
10
  export declare class UserTokenTable extends AppInMemoryTable<UserToken> implements OnInit {
9
11
  protected injector: Injector;
10
12
  protected formBuilder: UntypedFormBuilder;
11
13
  protected validatorService: ValidatorService;
12
14
  protected cd: ChangeDetectorRef;
15
+ protected configService: ConfigService;
13
16
  protected tokenScopes: TokenScope[];
14
17
  useSticky: boolean;
15
- constructor(injector: Injector, formBuilder: UntypedFormBuilder, validatorService: ValidatorService, cd: ChangeDetectorRef, environment: Environment, tokenScopes: TokenScope[]);
18
+ protected showScopes: boolean;
19
+ protected defaultScope: string;
20
+ constructor(injector: Injector, formBuilder: UntypedFormBuilder, validatorService: ValidatorService, cd: ChangeDetectorRef, configService: ConfigService, environment: Environment, tokenScopes: TokenScope[]);
16
21
  ngOnInit(): void;
17
22
  get value(): UserToken[];
18
23
  set value(data: UserToken[]);
@@ -21,7 +26,8 @@ export declare class UserTokenTable extends AppInMemoryTable<UserToken> implemen
21
26
  }): void;
22
27
  addToken(event: UIEvent): Promise<void>;
23
28
  display(scopes: TokenScope[]): string;
29
+ protected onConfigLoaded(config: Configuration): void;
24
30
  protected markForCheck(): void;
25
- static ɵfac: i0.ɵɵFactoryDeclaration<UserTokenTable, [null, null, null, null, null, { optional: true; }]>;
31
+ static ɵfac: i0.ɵɵFactoryDeclaration<UserTokenTable, [null, null, null, null, null, null, { optional: true; }]>;
26
32
  static ɵcmp: i0.ɵɵComponentDeclaration<UserTokenTable, "app-user-token-table", never, { "useSticky": { "alias": "useSticky"; "required": false; }; }, {}, never, never, false, never>;
27
33
  }
@@ -55,6 +55,7 @@ export declare class AppPropertiesTable extends AppInMemoryTable<PropertyEntity,
55
55
  ngOnInit(): void;
56
56
  get value(): PropertyEntity[];
57
57
  set value(data: PropertyEntity[]);
58
+ definitionByRow: (row: TableElement<PropertyEntity>) => FormFieldDefinition;
58
59
  setValue(value: PropertyEntity[], opts?: {
59
60
  emitEvent?: boolean;
60
61
  }): void;
@@ -4,9 +4,12 @@ export declare const CORE_CONFIG_OPTIONS: Readonly<{
4
4
  FAVICON: FormFieldDefinition<string, import("../../../shared/form/field.model").FormFieldType, any>;
5
5
  DEFAULT_LOCALE: FormFieldDefinition<string, import("../../../shared/form/field.model").FormFieldType, any>;
6
6
  DEFAULT_LAT_LONG_FORMAT: FormFieldDefinition<string, import("../../../shared/form/field.model").FormFieldType, any>;
7
+ DEFAULT_LAT_LONG_FORMAT_ENABLED: FormFieldDefinition<string, import("../../../shared/form/field.model").FormFieldType, any>;
7
8
  REGISTRATION_ENABLE: FormFieldDefinition<string, import("../../../shared/form/field.model").FormFieldType, any>;
8
9
  AUTH_TOKEN_TYPE: FormFieldDefinition<string, import("../../../shared/form/field.model").FormFieldType, any>;
9
10
  AUTH_API_TOKEN_ENABLED: FormFieldDefinition<string, import("../../../shared/form/field.model").FormFieldType, any>;
11
+ AUTH_API_TOKEN_SCOPE_ENABLED: FormFieldDefinition<string, import("../../../shared/form/field.model").FormFieldType, any>;
12
+ DEFAULT_AUTH_API_TOKEN_SCOPE: FormFieldDefinition<string, import("../../../shared/form/field.model").FormFieldType, any>;
10
13
  GRAVATAR_ENABLE: FormFieldDefinition<string, import("../../../shared/form/field.model").FormFieldType, any>;
11
14
  GRAVATAR_URL: FormFieldDefinition<string, import("../../../shared/form/field.model").FormFieldType, any>;
12
15
  TESTING: FormFieldDefinition<string, import("../../../shared/form/field.model").FormFieldType, any>;
@@ -0,0 +1,40 @@
1
+ import { ChangeDetectorRef, OnDestroy, OnInit } from '@angular/core';
2
+ import { ThemePalette } from '@angular/material/core';
3
+ import { PredefinedColors } from '@ionic/core';
4
+ import { MatFormFieldAppearance } from '@angular/material/form-field';
5
+ import { AppFloatLabelType, FormFieldDefinition } from '../../shared/form/field.model';
6
+ import { MatColumnDef, MatTable } from '@angular/material/table';
7
+ import { AsyncTableElement, TableElement } from '@e-is/ngx-material-table';
8
+ import * as i0 from "@angular/core";
9
+ export declare class AppRowField implements OnInit, OnDestroy {
10
+ protected cd: ChangeDetectorRef;
11
+ matTable: MatTable<any>;
12
+ columnDef: MatColumnDef;
13
+ name: string;
14
+ definition: FormFieldDefinition;
15
+ definitionFn: (row: TableElement<any> | AsyncTableElement<any>) => FormFieldDefinition;
16
+ headerI18n: string;
17
+ sortable: boolean;
18
+ resizable: boolean;
19
+ required: boolean;
20
+ readonly: boolean;
21
+ sticky: boolean;
22
+ draggable: boolean;
23
+ disabled: boolean;
24
+ placeholder: string;
25
+ compact: boolean;
26
+ floatLabel: AppFloatLabelType;
27
+ appearance: MatFormFieldAppearance;
28
+ tabindex: number;
29
+ autofocus: boolean;
30
+ clearable: boolean;
31
+ chipColor: ThemePalette | PredefinedColors;
32
+ classList: string;
33
+ debug: boolean;
34
+ protected logPrefix: string;
35
+ constructor(cd: ChangeDetectorRef, matTable: MatTable<any>);
36
+ ngOnInit(): void;
37
+ ngOnDestroy(): void;
38
+ static ɵfac: i0.ɵɵFactoryDeclaration<AppRowField, never>;
39
+ static ɵcmp: i0.ɵɵComponentDeclaration<AppRowField, "app-row-field", never, { "name": { "alias": "name"; "required": false; }; "definition": { "alias": "definition"; "required": false; }; "definitionFn": { "alias": "definitionFn"; "required": false; }; "headerI18n": { "alias": "headerI18n"; "required": false; }; "sortable": { "alias": "sortable"; "required": false; }; "resizable": { "alias": "resizable"; "required": false; }; "required": { "alias": "required"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "sticky": { "alias": "sticky"; "required": false; }; "draggable": { "alias": "draggable"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "compact": { "alias": "compact"; "required": false; }; "floatLabel": { "alias": "floatLabel"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; "chipColor": { "alias": "chipColor"; "required": false; }; "classList": { "alias": "class"; "required": false; }; "debug": { "alias": "debug"; "required": false; }; }, {}, never, never, false, never>;
40
+ }
@@ -1,11 +1,13 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./table-select-columns.component";
3
3
  import * as i2 from "./actions-column.component";
4
- import * as i3 from "./table.pipes";
5
- import * as i4 from "../../shared/shared.module";
6
- import * as i5 from "@ngx-translate/core";
4
+ import * as i3 from "./row-field.component";
5
+ import * as i4 from "./table.pipes";
6
+ import * as i5 from "../../shared/shared.module";
7
+ import * as i6 from "@ngx-translate/core";
8
+ import * as i7 from "../../shared/directives/resizable/resizable.module";
7
9
  export declare class AppTableModule {
8
10
  static ɵfac: i0.ɵɵFactoryDeclaration<AppTableModule, never>;
9
- static ɵmod: i0.ɵɵNgModuleDeclaration<AppTableModule, [typeof i1.TableSelectColumnsComponent, typeof i2.ActionsColumnComponent, typeof i3.IsAllSelectedPipe, typeof i3.IsNotAllSelectedPipe], [typeof i4.SharedModule, typeof i5.TranslateModule], [typeof i5.TranslateModule, typeof i1.TableSelectColumnsComponent, typeof i2.ActionsColumnComponent, typeof i3.IsAllSelectedPipe, typeof i3.IsNotAllSelectedPipe]>;
11
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AppTableModule, [typeof i1.TableSelectColumnsComponent, typeof i2.ActionsColumnComponent, typeof i3.AppRowField, typeof i4.IsAllSelectedPipe, typeof i4.IsNotAllSelectedPipe, typeof i4.DisplayByDefinitionPipe], [typeof i5.SharedModule, typeof i6.TranslateModule, typeof i7.ResizableModule], [typeof i6.TranslateModule, typeof i1.TableSelectColumnsComponent, typeof i2.ActionsColumnComponent, typeof i3.AppRowField, typeof i4.IsAllSelectedPipe, typeof i4.IsNotAllSelectedPipe, typeof i4.DisplayByDefinitionPipe]>;
10
12
  static ɵinj: i0.ɵɵInjectorDeclaration<AppTableModule>;
11
13
  }
@@ -3,6 +3,8 @@ import { SelectionModel } from '@angular/cdk/collections';
3
3
  import { AbstractSelectionModelPipe } from '../../shared/pipes/selection.pipes';
4
4
  import { AppTable } from './table.class';
5
5
  import { Subscription } from 'rxjs';
6
+ import { FormFieldDefinition } from '../../shared/form/field.model';
7
+ import { TranslateService } from '@ngx-translate/core';
6
8
  import * as i0 from "@angular/core";
7
9
  export type AppTableRowCountProperty = 'visibleRowCount' | 'totalRowCount';
8
10
  export declare abstract class AbstractTableSelectionPipe<R, O, T extends AppTable<any> = AppTable<any>> extends AbstractSelectionModelPipe<any, R, O> {
@@ -26,3 +28,9 @@ export declare class IsNotAllSelectedPipe extends IsAllSelectedPipe implements P
26
28
  static ɵfac: i0.ɵɵFactoryDeclaration<IsNotAllSelectedPipe, never>;
27
29
  static ɵpipe: i0.ɵɵPipeDeclaration<IsNotAllSelectedPipe, "isNotAllSelected", false>;
28
30
  }
31
+ export declare class DisplayByDefinitionPipe implements PipeTransform {
32
+ protected translate: TranslateService;
33
+ transform(value: any, definition: FormFieldDefinition): string;
34
+ static ɵfac: i0.ɵɵFactoryDeclaration<DisplayByDefinitionPipe, never>;
35
+ static ɵpipe: i0.ɵɵPipeDeclaration<DisplayByDefinitionPipe, "displayByDefinition", false>;
36
+ }
@@ -152,6 +152,7 @@
152
152
  "ENABLE_GRAVATAR": "User > Enable Gravatar?",
153
153
  "DEFAULT_LOCALE": "Default Language",
154
154
  "DEFAULT_LATLONG_FORMAT": "Default lat/lon format",
155
+ "ENABLE_DEFAULT_LATLONG_FORMAT": "Show default lat/lon format",
155
156
  "APP_MIN_VERSION": "App > Minimal compatible version (x.y.z)",
156
157
  "HELP_URL": "App > User manual (URL)",
157
158
  "FORUM_URL": "App > Forum address (URL)",
@@ -203,7 +204,9 @@
203
204
  "TOKEN": "Crypto",
204
205
  "BASIC_AND_TOKEN": "Basic and crypto"
205
206
  },
206
- "ENABLE_AUTH_API_TOKENS": "API > Enable auth tokens"
207
+ "ENABLE_AUTH_API_TOKENS": "API > Enable auth tokens",
208
+ "ENABLE_AUTH_API_TOKENS_SCOPE": "API > Enable rights on auth tokens",
209
+ "DEFAULT_AUTH_API_TOKEN_SCOPE": "API > Default right on new auth token"
207
210
  }
208
211
  },
209
212
  "MENU": {
@@ -152,6 +152,7 @@
152
152
  "ENABLE_GRAVATAR": "User > Enable Gravatar?",
153
153
  "DEFAULT_LOCALE": "Default Language",
154
154
  "DEFAULT_LATLONG_FORMAT": "Default lat/lon format",
155
+ "ENABLE_DEFAULT_LATLONG_FORMAT": "Show default lat/lon format",
155
156
  "APP_MIN_VERSION": "App > Minimal compatible version (x.y.z)",
156
157
  "HELP_URL": "App > User manual (URL)",
157
158
  "FORUM_URL": "App > Forum address (URL)",
@@ -203,7 +204,9 @@
203
204
  "TOKEN": "Crypto",
204
205
  "BASIC_AND_TOKEN": "Basic and crypto"
205
206
  },
206
- "ENABLE_AUTH_API_TOKENS": "API > Enable auth tokens"
207
+ "ENABLE_AUTH_API_TOKENS": "API > Enable auth tokens",
208
+ "ENABLE_AUTH_API_TOKENS_SCOPE": "API > Enable rights on auth tokens",
209
+ "DEFAULT_AUTH_API_TOKEN_SCOPE": "API > Default right on new auth token"
207
210
  }
208
211
  },
209
212
  "MENU": {
@@ -152,6 +152,7 @@
152
152
  "ENABLE_GRAVATAR": "Utilisateur > Utiliser Gravatar ?",
153
153
  "DEFAULT_LOCALE": "Langue par défaut",
154
154
  "DEFAULT_LATLONG_FORMAT": "Format lat/lon par défaut",
155
+ "ENABLE_DEFAULT_LATLONG_FORMAT": "Affichage du format lat/lon par défaut",
155
156
  "APP_MIN_VERSION": "App > Version minimale compatible (x.y.z)",
156
157
  "HELP_URL": "App > Adresse du manuel utilisateur (URL)",
157
158
  "FORUM_URL": "App > Adresse du forum (URL)",
@@ -203,7 +204,9 @@
203
204
  "TOKEN": "Cryptographique",
204
205
  "BASIC_AND_TOKEN": "Basique et cryptographique"
205
206
  },
206
- "ENABLE_AUTH_API_TOKENS": "API > Activer les jetons d'authentification"
207
+ "ENABLE_AUTH_API_TOKENS": "API > Activer les jetons d'authentification",
208
+ "ENABLE_AUTH_API_TOKENS_SCOPE": "API > Activer les droits des jetons d'authentification",
209
+ "DEFAULT_AUTH_API_TOKEN_SCOPE": "API > Droit par défaut d'un nouveau jeton d'authentification"
207
210
  }
208
211
  },
209
212
  "MENU": {
@@ -91,7 +91,7 @@
91
91
  transition: none !important;
92
92
  }
93
93
 
94
- .mat-sort-header-arrow:not([style*="opacity: 1"]) {
94
+ .mat-sort-header-arrow:not([style*='opacity: 1']) {
95
95
  display: none;
96
96
  }
97
97
  }
@@ -108,7 +108,6 @@
108
108
  .mat-mdc-header-cell,
109
109
  .mat-mdc-cell,
110
110
  .mat-mdc-footer-cell {
111
-
112
111
  // Remove default padding
113
112
  padding-inline: 0;
114
113
 
@@ -126,7 +125,6 @@
126
125
 
127
126
  /* Add a start padding to content (but not the cell itself) (e.g. tables with odd/event style - like BatchGroupsTable) */
128
127
  &.mat-mdc-cell-content-start-padding {
129
-
130
128
  // Reset start padding here (only apply cell's content)
131
129
  padding-inline-start: 0;
132
130
 
@@ -221,7 +219,7 @@
221
219
  .mat-mdc-cell-computed,
222
220
  .mat-cell-computed,
223
221
  .mat-mdc-cell ion-text.computed,
224
- .mat-mdc-cell ion-label.computed,{
222
+ .mat-mdc-cell ion-label.computed {
225
223
  --ion-text-color: var(--app-form-color-computed, #{$app-form-color-computed}) !important;
226
224
  color: var(--ion-text-color) !important;
227
225
  font-style: italic;
@@ -229,7 +227,6 @@
229
227
  }
230
228
 
231
229
  .mat-mdc-row {
232
-
233
230
  // Disabled row
234
231
  &.mat-mdc-row-disabled *,
235
232
  &.mat-row-disabled * {
@@ -250,7 +247,7 @@
250
247
  &.mat-mdc-row-selected,
251
248
  &.mat-row-selected {
252
249
  --ion-text-color: var(--app-table-row-item-selected-text-color) !important;
253
- --ion-background-color: var(--app-table-row-item-selected-background-color) !important;;
250
+ --ion-background-color: var(--app-table-row-item-selected-background-color) !important;
254
251
 
255
252
  --mdc-filled-text-field-input-text-color: var(--ion-text-color);
256
253
  --mat-select-enabled-trigger-text-color: var(--ion-text-color);
@@ -271,7 +268,6 @@
271
268
  &.mat-row-disabled:hover {
272
269
  background-color: var(--ion-background-color) !important;
273
270
  }
274
-
275
271
  }
276
272
 
277
273
  // Dirty row
@@ -303,7 +299,7 @@
303
299
  color: inherit;
304
300
 
305
301
  .mdc-floating-label {
306
- visibility: hidden;
302
+ visibility: hidden;
307
303
  }
308
304
  }
309
305
 
@@ -343,7 +339,8 @@
343
339
  .mat-mdc-form-field-icon-prefix {
344
340
  padding: 0;
345
341
 
346
- ion-icon, .mat-icon {
342
+ ion-icon,
343
+ .mat-icon {
347
344
  $font-size: calculateRem(18px);
348
345
  $margin-vertical: calculateRem(4px);
349
346
  height: $font-size;
@@ -375,13 +372,13 @@
375
372
  white-space: nowrap;
376
373
  }
377
374
 
378
- input[type=number]::-webkit-outer-spin-button,
379
- input[type=number]::-webkit-inner-spin-button {
375
+ input[type='number']::-webkit-outer-spin-button,
376
+ input[type='number']::-webkit-inner-spin-button {
380
377
  -webkit-appearance: none;
381
378
  margin: 0;
382
379
  }
383
380
 
384
- input[type=number] {
381
+ input[type='number'] {
385
382
  //text-align: right;
386
383
  -moz-appearance: textfield;
387
384
  }
@@ -396,7 +393,8 @@
396
393
  --mdc-icon-button-state-layer-size: 24px;
397
394
  padding: 0;
398
395
 
399
- ion-icon, .mat-icon {
396
+ ion-icon,
397
+ .mat-icon {
400
398
  $font-size: calculateRem(18px);
401
399
  font-size: $font-size;
402
400
  line-height: 1.125;
@@ -406,7 +404,6 @@
406
404
  width: var(--mdc-icon-button-state-layer-size);
407
405
  }
408
406
  }
409
-
410
407
  }
411
408
 
412
409
  // Specific behavior for chips
@@ -427,7 +424,7 @@
427
424
  visibility: hidden;
428
425
  }
429
426
 
430
- &.mat-form-field-hide-placeholder .mat-mdc-select-placeholder {
427
+ &.mat-form-field-hide-placeholder .mat-mdc-select-placeholder {
431
428
  /* TODO use variables select theme */
432
429
  color: rgba(0, 0, 0, 0.6) !important;
433
430
  -webkit-text-fill-color: rgba(0, 0, 0, 0.6) !important;
@@ -449,7 +446,6 @@
449
446
  .mat-boolean-field-button.mat-mdc-form-field-appearance-fill .mat-mdc-form-field-infix,
450
447
  .mat-boolean-field-button .mat-mdc-form-field-infix {
451
448
  // Increase top border (because of button height)
452
-
453
449
  }
454
450
 
455
451
  mat-date-time-field {
@@ -555,16 +551,24 @@
555
551
  --mdc-icon-button-state-layer-size: var(--mat-paginator-container-size) !important;
556
552
  padding: 6px !important;
557
553
  }
554
+ }
558
555
 
556
+ // -------------------------
557
+ // Specific Properties table
558
+ // -------------------------
559
+ app-properties-table {
560
+ .mat-column-value {
561
+ min-width: 50%;
562
+ max-width: 50%;
563
+ width: 50%;
564
+ }
559
565
  }
560
566
 
561
567
  html.plt-mobile {
562
-
563
568
  // fixme: class mat-paginator-footer not used anymore, use .mat-mdc-paginator
564
569
  .mat-paginator-footer {
565
570
  .mat-paginator-outer-container {
566
571
  .mat-paginator-container {
567
-
568
572
  // Move paginator to the left,
569
573
  // because floating button are on the right
570
574
  margin-top: 0 !important;