@sumaris-net/ngx-components 18.23.33 → 18.23.35
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/doc/changelog.md +7 -0
- package/esm2022/public_api.mjs +4 -1
- package/esm2022/src/app/core/form/list/list.form.mjs +8 -3
- package/esm2022/src/app/core/table/column/actions-column.component.mjs +1 -1
- package/esm2022/src/app/core/table/column/row-field.component.mjs +1 -1
- package/esm2022/src/app/core/table/table.pipes.mjs +6 -7
- package/esm2022/src/app/core/table/testing/table.testing.mjs +1 -1
- package/esm2022/src/app/core/table/testing/table.testing.module.mjs +25 -4
- package/esm2022/src/app/core/table/testing/table2.testing.mjs +63 -15
- package/esm2022/src/app/shared/directives/cell-selection/cell-identifier.directive.mjs +41 -0
- package/esm2022/src/app/shared/directives/cell-selection/cell-selection.directive.mjs +201 -0
- package/esm2022/src/app/shared/directives/cell-selection/cell-selection.service.mjs +186 -0
- package/esm2022/src/app/shared/directives/resizable/resizable.component.mjs +2 -2
- package/esm2022/src/app/shared/directives/resizable/resizable.directive.mjs +64 -13
- package/esm2022/src/app/shared/functions.mjs +1 -1
- package/esm2022/src/app/shared/validator/validators.mjs +15 -1
- package/fesm2022/sumaris-net.ngx-components.mjs +580 -34
- package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +3 -0
- package/src/app/core/form/list/list.form.d.ts +2 -1
- package/src/app/core/table/column/actions-column.component.d.ts +1 -1
- package/src/app/core/table/table.pipes.d.ts +2 -1
- package/src/app/core/table/testing/table.testing.module.d.ts +3 -1
- package/src/app/core/table/testing/table2.testing.d.ts +7 -3
- package/src/app/shared/directives/cell-selection/cell-identifier.directive.d.ts +15 -0
- package/src/app/shared/directives/cell-selection/cell-selection.directive.d.ts +28 -0
- package/src/app/shared/directives/cell-selection/cell-selection.service.d.ts +64 -0
- package/src/app/shared/directives/resizable/resizable.directive.d.ts +15 -3
- package/src/app/shared/functions.d.ts +1 -1
- package/src/app/shared/inputs.d.ts +1 -1
- package/src/app/shared/validator/validators.d.ts +1 -0
- package/src/assets/manifest.json +1 -1
- package/src/theme/_ngx-components.table.scss +48 -2
package/package.json
CHANGED
package/public_api.d.ts
CHANGED
|
@@ -68,6 +68,9 @@ export * from './src/app/shared/directives/resizable/resizable.directive';
|
|
|
68
68
|
export * from './src/app/shared/directives/resizable/resizable.component';
|
|
69
69
|
export * from './src/app/shared/directives/resizable/resizable.module';
|
|
70
70
|
export * from './src/app/shared/directives/autoresize.directive';
|
|
71
|
+
export * from './src/app/shared/directives/cell-selection/cell-selection.service';
|
|
72
|
+
export * from './src/app/shared/directives/cell-selection/cell-selection.directive';
|
|
73
|
+
export * from './src/app/shared/directives/cell-selection/cell-identifier.directive';
|
|
71
74
|
export * from './src/app/shared/pipes/pipes.module';
|
|
72
75
|
export * from './src/app/shared/pipes/date-format.pipe';
|
|
73
76
|
export * from './src/app/shared/pipes/date-from.pipe';
|
|
@@ -34,6 +34,7 @@ export declare class AppListForm<T = any> extends AppForm<T[]> implements OnInit
|
|
|
34
34
|
options: AppListFormOptions<T>;
|
|
35
35
|
displayWithFn: (item: any) => string;
|
|
36
36
|
equalsFn: (v1: T, v2: T) => boolean;
|
|
37
|
+
isEmptyFn: (item: T) => boolean;
|
|
37
38
|
onNewItem: EventEmitter<Event>;
|
|
38
39
|
selectionChanges: EventEmitter<T[]>;
|
|
39
40
|
set value(data: T[]);
|
|
@@ -77,5 +78,5 @@ export declare class AppListForm<T = any> extends AppForm<T[]> implements OnInit
|
|
|
77
78
|
protected createControl(data?: any): AbstractControl;
|
|
78
79
|
protected markForCheck(): void;
|
|
79
80
|
static ɵfac: i0.ɵɵFactoryDeclaration<AppListForm<any>, [null, null, null, null, null, { optional: true; }]>;
|
|
80
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<AppListForm<any>, "app-list-form", never, { "formArrayName": { "alias": "formArrayName"; "required": false; }; "formArray": { "alias": "formArray"; "required": false; }; "options": { "alias": "options"; "required": false; }; "displayWithFn": { "alias": "displayWith"; "required": false; }; "equalsFn": { "alias": "equals"; "required": false; }; }, { "onNewItem": "onNewItem"; "selectionChanges": "selectionChanges"; }, never, never, false, never>;
|
|
81
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AppListForm<any>, "app-list-form", never, { "formArrayName": { "alias": "formArrayName"; "required": false; }; "formArray": { "alias": "formArray"; "required": false; }; "options": { "alias": "options"; "required": false; }; "displayWithFn": { "alias": "displayWith"; "required": false; }; "equalsFn": { "alias": "equals"; "required": false; }; "isEmptyFn": { "alias": "isEmpty"; "required": false; }; }, { "onNewItem": "onNewItem"; "selectionChanges": "selectionChanges"; }, never, never, false, never>;
|
|
81
82
|
}
|
|
@@ -3,7 +3,7 @@ import { AsyncTableElement, TableElement } from '@e-is/ngx-material-table';
|
|
|
3
3
|
import { MatColumnDef, MatTable } from '@angular/material/table';
|
|
4
4
|
import { MatMenuTrigger } from '@angular/material/menu';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
|
-
export declare class ActionsColumnComponent<T extends TableElement<any> | AsyncTableElement<any
|
|
6
|
+
export declare class ActionsColumnComponent<T extends TableElement<any> | AsyncTableElement<any>> implements OnInit, OnDestroy {
|
|
7
7
|
private table;
|
|
8
8
|
private cd;
|
|
9
9
|
columnDef: MatColumnDef;
|
|
@@ -6,10 +6,11 @@ import { Subscription } from 'rxjs';
|
|
|
6
6
|
import { AppAsyncTable } from './async-table.class';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
export type AppTableRowCountProperty = 'visibleRowCount' | 'totalRowCount';
|
|
9
|
-
export declare abstract class AbstractTableSelectionPipe<R, O, T extends AppTable<any> | AppAsyncTable<any> = AppTable<any> | AppAsyncTable<any>> extends AbstractSelectionModelPipe<any, R, O> {
|
|
9
|
+
export declare abstract class AbstractTableSelectionPipe<R, O, T extends AppTable<any> | AppAsyncTable<any> = AppTable<any> | AppAsyncTable<any>> extends AbstractSelectionModelPipe<any, R, O> implements PipeTransform, OnDestroy {
|
|
10
10
|
private _onRowsChanges;
|
|
11
11
|
protected constructor(_ref: ChangeDetectorRef);
|
|
12
12
|
transform(selectionOrTable: SelectionModel<any> | T, tableOrOpts?: T | O, opts?: O): R;
|
|
13
|
+
private isTable;
|
|
13
14
|
protected _subscribe(selection: SelectionModel<any>, table?: T, opts?: O): Subscription;
|
|
14
15
|
protected _dispose(): void;
|
|
15
16
|
static ɵfac: i0.ɵɵFactoryDeclaration<AbstractTableSelectionPipe<any, any, any>, never>;
|
|
@@ -7,8 +7,10 @@ import * as i5 from "../../core.module";
|
|
|
7
7
|
import * as i6 from "@ngx-translate/core";
|
|
8
8
|
import * as i7 from "@angular/forms";
|
|
9
9
|
import * as i8 from "../../../shared/directives/resizable/resizable.module";
|
|
10
|
+
import * as i9 from "../../../shared/directives/cell-selection/cell-identifier.directive";
|
|
11
|
+
import * as i10 from "../../../shared/directives/cell-selection/cell-selection.directive";
|
|
10
12
|
export declare class TableTestingModule {
|
|
11
13
|
static ɵfac: i0.ɵɵFactoryDeclaration<TableTestingModule, never>;
|
|
12
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<TableTestingModule, [typeof i1.TableTestPage, typeof i2.Table2TestPage], [typeof i3.CommonModule, typeof i4.SharedModule, typeof i5.CoreModule, typeof i6.TranslateModule, typeof i7.FormsModule, typeof i8.ResizableModule], [typeof i1.TableTestPage, typeof i2.Table2TestPage, typeof i6.TranslateModule]>;
|
|
14
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<TableTestingModule, [typeof i1.TableTestPage, typeof i2.Table2TestPage], [typeof i3.CommonModule, typeof i4.SharedModule, typeof i5.CoreModule, typeof i6.TranslateModule, typeof i7.FormsModule, typeof i8.ResizableModule, typeof i9.CellIdentifierDirective, typeof i10.CellSelectionDirective], [typeof i1.TableTestPage, typeof i2.Table2TestPage, typeof i6.TranslateModule]>;
|
|
13
15
|
static ɵinj: i0.ɵɵInjectorDeclaration<TableTestingModule>;
|
|
14
16
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { AfterViewInit, Injector, OnDestroy, OnInit } from '@angular/core';
|
|
2
|
-
import { AppTable } from '../table.class';
|
|
3
2
|
import { Referential } from '../../services/model/referential.model';
|
|
4
3
|
import { IonInfiniteScroll } from '@ionic/angular';
|
|
5
4
|
import { InMemoryEntitiesService } from '../../../shared/services/memory-entity-service.class';
|
|
@@ -7,8 +6,10 @@ import { AppValidatorService } from '../../services/validator/base.validator.cla
|
|
|
7
6
|
import { AbstractControl, UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';
|
|
8
7
|
import { ReferentialFilter } from '../../services/testing/referential-filter.model';
|
|
9
8
|
import { MatExpansionPanel } from '@angular/material/expansion';
|
|
9
|
+
import { AppAsyncTable } from '../async-table.class';
|
|
10
|
+
import { CellSelectionEvent, ICellId } from '../../../shared/directives/cell-selection/cell-selection.service';
|
|
10
11
|
import * as i0 from "@angular/core";
|
|
11
|
-
export declare class Table2TestPage extends
|
|
12
|
+
export declare class Table2TestPage extends AppAsyncTable<Referential, ReferentialFilter> implements OnInit, OnDestroy, AfterViewInit {
|
|
12
13
|
protected validatorService: AppValidatorService;
|
|
13
14
|
protected formBuilder: UntypedFormBuilder;
|
|
14
15
|
static readonly maxRowCount = 100;
|
|
@@ -26,6 +27,7 @@ export declare class Table2TestPage extends AppTable<Referential, ReferentialFil
|
|
|
26
27
|
get hasMoreData(): boolean;
|
|
27
28
|
filterExpansionPanel: MatExpansionPanel;
|
|
28
29
|
infiniteScroll: IonInfiniteScroll;
|
|
30
|
+
protected readonly selectableColumns: string[];
|
|
29
31
|
get dataService(): InMemoryEntitiesService<Referential>;
|
|
30
32
|
constructor(injector: Injector, validatorService: AppValidatorService, formBuilder: UntypedFormBuilder);
|
|
31
33
|
ngOnInit(): void;
|
|
@@ -41,8 +43,10 @@ export declare class Table2TestPage extends AppTable<Referential, ReferentialFil
|
|
|
41
43
|
toggleFilterPanelFloating(): void;
|
|
42
44
|
applyFilterAndClosePanel(event?: Event): void;
|
|
43
45
|
closeFilterPanel(): void;
|
|
44
|
-
resetFilter(
|
|
46
|
+
resetFilter(event?: Event): Promise<void>;
|
|
45
47
|
protected generateData(offset?: number, size?: number): Referential[];
|
|
48
|
+
protected onCellSelectionChange(event: CellSelectionEvent<ICellId>): void;
|
|
49
|
+
protected onCellRightClick(event: MouseEvent): void;
|
|
46
50
|
static ɵfac: i0.ɵɵFactoryDeclaration<Table2TestPage, never>;
|
|
47
51
|
static ɵcmp: i0.ɵɵComponentDeclaration<Table2TestPage, "app-table2-testing", never, { "filterPanelFloating": { "alias": "filterPanelFloating"; "required": false; }; "sticky": { "alias": "sticky"; "required": false; }; "stickyEnd": { "alias": "stickyEnd"; "required": false; }; }, {}, never, ["[suffix]"], false, never>;
|
|
48
52
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
2
|
+
import { ICellId } from './cell-selection.service';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class CellIdentifierDirective<C extends ICellId = ICellId> implements OnInit {
|
|
5
|
+
cellId: import("@angular/core").InputSignal<C>;
|
|
6
|
+
protected isCellSelected: boolean;
|
|
7
|
+
protected isDragging: boolean;
|
|
8
|
+
private readonly service;
|
|
9
|
+
private readonly destroyRef;
|
|
10
|
+
ngOnInit(): void;
|
|
11
|
+
protected handleMouseDown(event: MouseEvent): Promise<void>;
|
|
12
|
+
protected handleMouseEnter(event: MouseEvent): Promise<void>;
|
|
13
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CellIdentifierDirective<any>, never>;
|
|
14
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<CellIdentifierDirective<any>, "[appCellId]", never, { "cellId": { "alias": "appCellId"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
2
|
+
import { CellSelectionEvent, ICellId } from './cell-selection.service';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class CellSelectionDirective<C extends ICellId = ICellId> implements OnInit {
|
|
5
|
+
selectableColumns: import("@angular/core").InputSignal<string[]>;
|
|
6
|
+
selectionChange: import("@angular/core").OutputEmitterRef<CellSelectionEvent<C>>;
|
|
7
|
+
rightClick: import("@angular/core").OutputEmitterRef<MouseEvent>;
|
|
8
|
+
protected service: import("./cell-selection.service").CellSelectionService<ICellId>;
|
|
9
|
+
private readonly elementRef;
|
|
10
|
+
private readonly renderer;
|
|
11
|
+
private readonly destroyRef;
|
|
12
|
+
private overlayElements;
|
|
13
|
+
constructor();
|
|
14
|
+
ngOnInit(): void;
|
|
15
|
+
private setupServiceConfiguration;
|
|
16
|
+
private setupGlobalMouseEvents;
|
|
17
|
+
private setupCopyListener;
|
|
18
|
+
addCellsOverlay(cells: C[]): void;
|
|
19
|
+
removeCellsOverlay(): void;
|
|
20
|
+
private groupContiguousCells;
|
|
21
|
+
private getAdjacentCells;
|
|
22
|
+
private getNextColumnName;
|
|
23
|
+
private getCellKey;
|
|
24
|
+
private calculateSelectionBounds;
|
|
25
|
+
private createOverlayElement;
|
|
26
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CellSelectionDirective<any>, never>;
|
|
27
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<CellSelectionDirective<any>, "[appCellSelection]", never, { "selectableColumns": { "alias": "appSelectableColumns"; "required": false; "isSignal": true; }; }, { "selectionChange": "appCellSelectionChange"; "rightClick": "appCellRightClick"; }, never, never, true, never>;
|
|
28
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import { EqualsFn } from '../../types';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare const APP_CELL_SELECTION_SERVICE_TOKEN: InjectionToken<CellSelectionService<ICellId>>;
|
|
6
|
+
export declare const APP_CELL_SELECTION_SERVICE_CONFIG_TOKEN: InjectionToken<CellSelectionServiceConfig<any>>;
|
|
7
|
+
export interface ICellId {
|
|
8
|
+
rowId: number;
|
|
9
|
+
columnName: string;
|
|
10
|
+
}
|
|
11
|
+
export interface CellSelectionEvent<C extends ICellId> {
|
|
12
|
+
selectedCells: C[];
|
|
13
|
+
isRangeSelection: boolean;
|
|
14
|
+
isToggleSelection: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface CellSelectionServiceConfig<C extends ICellId> {
|
|
17
|
+
equals: EqualsFn<C>;
|
|
18
|
+
new: (cellId: ICellId) => C;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Service to manage cell selection state across multiple directive instances.
|
|
22
|
+
* This service should be provided at the component level (not root) to ensure
|
|
23
|
+
* proper isolation between different table instances.
|
|
24
|
+
*/
|
|
25
|
+
export declare class CellSelectionService<C extends ICellId = ICellId> {
|
|
26
|
+
config: CellSelectionServiceConfig<any>;
|
|
27
|
+
selectableColumns: string[];
|
|
28
|
+
private _selectedCells;
|
|
29
|
+
private selectionStartCell;
|
|
30
|
+
private isSelecting;
|
|
31
|
+
draggedCells: C[];
|
|
32
|
+
private dragStartCell;
|
|
33
|
+
private isDragging;
|
|
34
|
+
readonly selectionChangeSubject: Subject<CellSelectionEvent<C>>;
|
|
35
|
+
readonly selectionRightClickSubject: Subject<MouseEvent>;
|
|
36
|
+
private readonly _equals;
|
|
37
|
+
private readonly _new;
|
|
38
|
+
constructor();
|
|
39
|
+
equals(cell1: C, cell2: C): boolean;
|
|
40
|
+
new(cellId: ICellId): C;
|
|
41
|
+
get selectedCells(): C[];
|
|
42
|
+
set selectedCells(value: C[]);
|
|
43
|
+
isCellSelected(cellId: C): boolean;
|
|
44
|
+
isCellDragged(cellId: C): boolean;
|
|
45
|
+
handleCellMouseDown(event: MouseEvent, cellId: C): Promise<void>;
|
|
46
|
+
handleCellMouseEnter(event: MouseEvent, cellId: C): Promise<void>;
|
|
47
|
+
endMouseMove(): void;
|
|
48
|
+
private startSelection;
|
|
49
|
+
private startDragSelection;
|
|
50
|
+
private toggleCellSelection;
|
|
51
|
+
private selectRange;
|
|
52
|
+
private updateSelection;
|
|
53
|
+
private updateDraggedCells;
|
|
54
|
+
private emitSelection;
|
|
55
|
+
calculateRangeCells(endCell: C): C[];
|
|
56
|
+
calculateRangeBetweenCells(startCell: C, endCell: C): C[];
|
|
57
|
+
resetSelectionState(): void;
|
|
58
|
+
resetDragState(): void;
|
|
59
|
+
private findFirstSelectedCell;
|
|
60
|
+
private findLastSelectedCell;
|
|
61
|
+
private findSelectedCell;
|
|
62
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CellSelectionService<any>, never>;
|
|
63
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<CellSelectionService<any>>;
|
|
64
|
+
}
|
|
@@ -4,9 +4,21 @@ import * as i0 from "@angular/core";
|
|
|
4
4
|
export declare class ResizableDirective {
|
|
5
5
|
private readonly document;
|
|
6
6
|
private readonly elementRef;
|
|
7
|
+
private readonly destroyRef;
|
|
8
|
+
/** Largeur minimale absolue de la colonne en pixels */
|
|
9
|
+
minWidth: number;
|
|
7
10
|
readonly resizable: Observable<number>;
|
|
8
|
-
readonly fit: Observable<MouseEvent
|
|
9
|
-
constructor(document:
|
|
11
|
+
readonly fit: Observable<MouseEvent>;
|
|
12
|
+
constructor(document: Document, elementRef: ElementRef<HTMLElement>);
|
|
13
|
+
/**
|
|
14
|
+
* Calcule la largeur minimale autorisée pour la colonne courante.
|
|
15
|
+
* La largeur minimale est calculée pour que la somme des largeurs de toutes les colonnes
|
|
16
|
+
* ne dépasse pas la largeur du conteneur du tableau.
|
|
17
|
+
*
|
|
18
|
+
* @param currentTh L'élément th de la colonne en cours de redimensionnement
|
|
19
|
+
* @returns La largeur minimale en pixels
|
|
20
|
+
*/
|
|
21
|
+
private calculateMinWidth;
|
|
10
22
|
static ɵfac: i0.ɵɵFactoryDeclaration<ResizableDirective, never>;
|
|
11
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<ResizableDirective, "[resizable]", never, {}, { "resizable": "resizable"; "fit": "fit"; }, never, never, false, never>;
|
|
23
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<ResizableDirective, "[resizable]", never, { "minWidth": { "alias": "minWidth"; "required": false; }; }, { "resizable": "resizable"; "fit": "fit"; }, never, never, false, never>;
|
|
12
24
|
}
|
|
@@ -6,7 +6,7 @@ export declare function isNotNil<T>(obj: T | null | undefined): boolean;
|
|
|
6
6
|
export declare function isNotNilOrBlank<T>(obj: T | null | undefined): boolean;
|
|
7
7
|
export declare function isNotNilOrNaN<T>(obj: T | null | undefined): boolean;
|
|
8
8
|
export declare function isNilOrNaN<T>(obj: T | null | undefined): boolean;
|
|
9
|
-
export declare function isNotEmptyArray<T>(obj: T[] | null | undefined): boolean;
|
|
9
|
+
export declare function isNotEmptyArray<T>(obj: T[] | readonly T[] | null | undefined): boolean;
|
|
10
10
|
export declare function firstArrayValue<T>(obj: T[] | null | undefined): T | undefined;
|
|
11
11
|
export declare function lastArrayValue<T>(obj: T[] | null | undefined): T | undefined;
|
|
12
12
|
export declare function isEmptyArray<T>(obj: T[] | null | undefined): boolean;
|
|
@@ -18,7 +18,7 @@ export interface InputElement extends FocusableElement {
|
|
|
18
18
|
}
|
|
19
19
|
export declare function isInputElement(object: any): object is InputElement;
|
|
20
20
|
export declare function asInputElement<T = any>(object: ElementRef<T>): InputElement | undefined;
|
|
21
|
-
export declare function tabindexComparator(a: InputElement, b: InputElement):
|
|
21
|
+
export declare function tabindexComparator(a: InputElement, b: InputElement): 0 | 1 | -1;
|
|
22
22
|
export interface CanGainFocusOptions {
|
|
23
23
|
minTabindex?: number;
|
|
24
24
|
maxTabindex?: number;
|
|
@@ -58,6 +58,7 @@ export declare class SharedValidators {
|
|
|
58
58
|
static dateRangeStart(endDateFieldName: string, msg?: string): ValidatorFn;
|
|
59
59
|
static copyParentErrors(errorNames?: string[]): ValidatorFn;
|
|
60
60
|
static clearError(control: AbstractControl, errorCode: string): void;
|
|
61
|
+
static copyError(sourceControl: AbstractControl, targetControl: AbstractControl, errorCode: string): void;
|
|
61
62
|
}
|
|
62
63
|
export declare class SharedFormGroupValidators {
|
|
63
64
|
static dateRange(startDateField: string, endDateField: string, opts?: {
|
package/src/assets/manifest.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "ngx-sumaris-components",
|
|
3
3
|
"short_name": "ngx-sumaris-components",
|
|
4
4
|
"manifest_version": 1,
|
|
5
|
-
"version": "18.23.
|
|
5
|
+
"version": "18.23.35",
|
|
6
6
|
"default_locale": "fr",
|
|
7
7
|
"description": "Angular components for building beautiful and responsive Apps",
|
|
8
8
|
"icons": [{
|
|
@@ -251,7 +251,6 @@
|
|
|
251
251
|
|
|
252
252
|
.mat-mdc-row,
|
|
253
253
|
.mat-mdc-footer-row {
|
|
254
|
-
|
|
255
254
|
// Disabled row
|
|
256
255
|
&.mat-mdc-row-disabled *,
|
|
257
256
|
&.mat-row-disabled * {
|
|
@@ -552,8 +551,55 @@
|
|
|
552
551
|
border-bottom-width: var(--mat-table-row-item-outline-width, 1px) !important;
|
|
553
552
|
border-bottom-style: solid !important;
|
|
554
553
|
}
|
|
555
|
-
}
|
|
556
554
|
|
|
555
|
+
// Cell selection
|
|
556
|
+
--app-cell-selected-color: var(--ion-color-secondary50);
|
|
557
|
+
--app-cell-dragging-color: var(--ion-color-secondary50-shade);
|
|
558
|
+
--app-cell-selection-border-color: var(--ion-color-accent, gray);
|
|
559
|
+
|
|
560
|
+
td.cell-selected {
|
|
561
|
+
background-color: var(--app-cell-selected-color) !important;
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
td.cell-dragging {
|
|
565
|
+
background-color: var(--app-cell-dragging-color) !important;
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
div.cell-selection-overlay {
|
|
569
|
+
position: absolute;
|
|
570
|
+
z-index: 5;
|
|
571
|
+
animation: linearGradientMove 0.3s infinite linear;
|
|
572
|
+
background:
|
|
573
|
+
linear-gradient(90deg, var(--app-cell-selection-border-color) 50%, transparent 0) repeat-x,
|
|
574
|
+
linear-gradient(90deg, var(--app-cell-selection-border-color) 50%, transparent 0) repeat-x,
|
|
575
|
+
linear-gradient(0deg, var(--app-cell-selection-border-color) 50%, transparent 0) repeat-y,
|
|
576
|
+
linear-gradient(0deg, var(--app-cell-selection-border-color) 50%, transparent 0) repeat-y;
|
|
577
|
+
background-size:
|
|
578
|
+
4px 2px,
|
|
579
|
+
4px 2px,
|
|
580
|
+
2px 4px,
|
|
581
|
+
2px 4px;
|
|
582
|
+
background-position:
|
|
583
|
+
0 0,
|
|
584
|
+
0 100%,
|
|
585
|
+
0 0,
|
|
586
|
+
100% 0;
|
|
587
|
+
background-color: unset;
|
|
588
|
+
box-sizing: border-box;
|
|
589
|
+
pointer-events: none;
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
// Animated dashed border keyframes
|
|
593
|
+
@keyframes linearGradientMove {
|
|
594
|
+
100% {
|
|
595
|
+
background-position:
|
|
596
|
+
4px 0,
|
|
597
|
+
-4px 100%,
|
|
598
|
+
0 -4px,
|
|
599
|
+
100% 4px;
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
}
|
|
557
603
|
|
|
558
604
|
// Paginator
|
|
559
605
|
.mat-mdc-paginator {
|