@gnggln/ng-ui-system 1.0.0-alpha.0
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/esm2022/gnggln-ng-ui-system.mjs +5 -0
- package/esm2022/lib/components/accordion/accordion.component.mjs +353 -0
- package/esm2022/lib/components/accordion/accordion.types.mjs +6 -0
- package/esm2022/lib/components/accordion/index.mjs +2 -0
- package/esm2022/lib/components/base-layout/base-layout.component.mjs +218 -0
- package/esm2022/lib/components/base-layout/base-layout.types.mjs +6 -0
- package/esm2022/lib/components/base-layout/index.mjs +14 -0
- package/esm2022/lib/components/button/button-area.component.mjs +196 -0
- package/esm2022/lib/components/button/button.component.mjs +164 -0
- package/esm2022/lib/components/button/button.types.mjs +6 -0
- package/esm2022/lib/components/button/index.mjs +16 -0
- package/esm2022/lib/components/crud-table/crud-table.component.mjs +789 -0
- package/esm2022/lib/components/crud-table/crud-table.types.mjs +6 -0
- package/esm2022/lib/components/crud-table/index.mjs +16 -0
- package/esm2022/lib/components/form-builder/adapters/it-date-adapter.mjs +82 -0
- package/esm2022/lib/components/form-builder/directives/currency-input.directive.mjs +184 -0
- package/esm2022/lib/components/form-builder/form-builder.component.mjs +824 -0
- package/esm2022/lib/components/form-builder/form-wizard.component.mjs +510 -0
- package/esm2022/lib/components/form-builder/index.mjs +19 -0
- package/esm2022/lib/components/form-builder/services/form-condition.service.mjs +132 -0
- package/esm2022/lib/components/form-builder/services/form-validation.service.mjs +381 -0
- package/esm2022/lib/components/form-builder/services/location.service.mjs +140 -0
- package/esm2022/lib/components/form-builder/services/wizard-sync.service.mjs +84 -0
- package/esm2022/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.mjs +161 -0
- package/esm2022/lib/components/form-builder/sub-components/file-input/file-input.component.mjs +310 -0
- package/esm2022/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.mjs +648 -0
- package/esm2022/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.mjs +432 -0
- package/esm2022/lib/components/form-builder/types/condition.types.mjs +6 -0
- package/esm2022/lib/components/form-builder/types/field.types.mjs +6 -0
- package/esm2022/lib/components/form-builder/types/index.mjs +2 -0
- package/esm2022/lib/components/form-builder/types/schema.types.mjs +6 -0
- package/esm2022/lib/components/form-builder/types/territoriale.types.mjs +6 -0
- package/esm2022/lib/components/form-builder/types/validation.types.mjs +6 -0
- package/esm2022/lib/components/form-builder-editor/form-builder-editor.component.mjs +730 -0
- package/esm2022/lib/components/form-builder-editor/form-builder-editor.service.mjs +56 -0
- package/esm2022/lib/components/form-builder-editor/index.mjs +21 -0
- package/esm2022/lib/components/form-builder-editor/services/editor-persistence.service.mjs +190 -0
- package/esm2022/lib/components/form-builder-editor/services/editor-state.service.mjs +324 -0
- package/esm2022/lib/components/form-builder-editor/services/field-factory.service.mjs +188 -0
- package/esm2022/lib/components/form-builder-editor/sub-components/condition-editor/condition-editor.component.mjs +667 -0
- package/esm2022/lib/components/form-builder-editor/sub-components/editor-toolbar/editor-toolbar.component.mjs +317 -0
- package/esm2022/lib/components/form-builder-editor/sub-components/field-config-panel/field-config-panel.component.mjs +611 -0
- package/esm2022/lib/components/form-builder-editor/sub-components/field-palette/field-palette.component.mjs +267 -0
- package/esm2022/lib/components/form-builder-editor/sub-components/form-values-panel/form-values-panel.component.mjs +276 -0
- package/esm2022/lib/components/form-builder-editor/sub-components/options-editor/options-editor.component.mjs +323 -0
- package/esm2022/lib/components/form-builder-editor/sub-components/preview-container/preview-container.component.mjs +238 -0
- package/esm2022/lib/components/form-builder-editor/sub-components/section-editor/section-editor.component.mjs +472 -0
- package/esm2022/lib/components/form-builder-editor/sub-components/validation-editor/validation-editor.component.mjs +473 -0
- package/esm2022/lib/components/form-builder-editor/types/editor.types.mjs +6 -0
- package/esm2022/lib/components/layout-builder/index.mjs +18 -0
- package/esm2022/lib/components/layout-builder/layout-builder.component.mjs +1730 -0
- package/esm2022/lib/components/layout-builder/layout-builder.types.mjs +9 -0
- package/esm2022/lib/components/layout-builder/layout.service.mjs +239 -0
- package/esm2022/lib/components/modal/confirm-dialog.component.mjs +151 -0
- package/esm2022/lib/components/modal/index.mjs +4 -0
- package/esm2022/lib/components/modal/modal.component.mjs +139 -0
- package/esm2022/lib/components/modal/modal.service.mjs +194 -0
- package/esm2022/lib/components/modal/modal.types.mjs +6 -0
- package/esm2022/lib/components/page-header/breadcrumb.service.mjs +242 -0
- package/esm2022/lib/components/page-header/index.mjs +20 -0
- package/esm2022/lib/components/page-header/page-header.component.mjs +243 -0
- package/esm2022/lib/components/page-header/page-header.types.mjs +21 -0
- package/esm2022/lib/components/table/index.mjs +2 -0
- package/esm2022/lib/components/table/paginated-table.component.mjs +407 -0
- package/esm2022/lib/components/table/table.types.mjs +6 -0
- package/esm2022/lib/core/types/index.mjs +6 -0
- package/esm2022/lib/core/utils/index.mjs +53 -0
- package/esm2022/lib/sources/location-data.opt.json +8942 -0
- package/esm2022/lib/sources/nazioni.opt.json +215 -0
- package/esm2022/public-api.mjs +34 -0
- package/fesm2022/gnggln-ng-ui-system.mjs +55752 -0
- package/fesm2022/gnggln-ng-ui-system.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/accordion/accordion.component.d.ts +118 -0
- package/lib/components/accordion/accordion.types.d.ts +62 -0
- package/lib/components/accordion/index.d.ts +2 -0
- package/lib/components/base-layout/base-layout.component.d.ts +83 -0
- package/lib/components/base-layout/base-layout.types.d.ts +26 -0
- package/lib/components/base-layout/index.d.ts +13 -0
- package/lib/components/button/button-area.component.d.ts +88 -0
- package/lib/components/button/button.component.d.ts +55 -0
- package/lib/components/button/button.types.d.ts +70 -0
- package/lib/components/button/index.d.ts +15 -0
- package/lib/components/crud-table/crud-table.component.d.ts +143 -0
- package/lib/components/crud-table/crud-table.types.d.ts +207 -0
- package/lib/components/crud-table/index.d.ts +15 -0
- package/lib/components/form-builder/adapters/it-date-adapter.d.ts +32 -0
- package/lib/components/form-builder/directives/currency-input.directive.d.ts +48 -0
- package/lib/components/form-builder/form-builder.component.d.ts +183 -0
- package/lib/components/form-builder/form-wizard.component.d.ts +87 -0
- package/lib/components/form-builder/index.d.ts +13 -0
- package/lib/components/form-builder/services/form-condition.service.d.ts +46 -0
- package/lib/components/form-builder/services/form-validation.service.d.ts +63 -0
- package/lib/components/form-builder/services/location.service.d.ts +83 -0
- package/lib/components/form-builder/services/wizard-sync.service.d.ts +63 -0
- package/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.d.ts +28 -0
- package/lib/components/form-builder/sub-components/file-input/file-input.component.d.ts +41 -0
- package/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.d.ts +145 -0
- package/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.d.ts +108 -0
- package/lib/components/form-builder/types/condition.types.d.ts +51 -0
- package/lib/components/form-builder/types/field.types.d.ts +288 -0
- package/lib/components/form-builder/types/index.d.ts +5 -0
- package/lib/components/form-builder/types/schema.types.d.ts +227 -0
- package/lib/components/form-builder/types/territoriale.types.d.ts +170 -0
- package/lib/components/form-builder/types/validation.types.d.ts +174 -0
- package/lib/components/form-builder-editor/form-builder-editor.component.d.ts +117 -0
- package/lib/components/form-builder-editor/form-builder-editor.service.d.ts +38 -0
- package/lib/components/form-builder-editor/index.d.ts +15 -0
- package/lib/components/form-builder-editor/services/editor-persistence.service.d.ts +42 -0
- package/lib/components/form-builder-editor/services/editor-state.service.d.ts +66 -0
- package/lib/components/form-builder-editor/services/field-factory.service.d.ts +28 -0
- package/lib/components/form-builder-editor/sub-components/condition-editor/condition-editor.component.d.ts +139 -0
- package/lib/components/form-builder-editor/sub-components/editor-toolbar/editor-toolbar.component.d.ts +43 -0
- package/lib/components/form-builder-editor/sub-components/field-config-panel/field-config-panel.component.d.ts +83 -0
- package/lib/components/form-builder-editor/sub-components/field-palette/field-palette.component.d.ts +40 -0
- package/lib/components/form-builder-editor/sub-components/form-values-panel/form-values-panel.component.d.ts +51 -0
- package/lib/components/form-builder-editor/sub-components/options-editor/options-editor.component.d.ts +63 -0
- package/lib/components/form-builder-editor/sub-components/preview-container/preview-container.component.d.ts +68 -0
- package/lib/components/form-builder-editor/sub-components/section-editor/section-editor.component.d.ts +82 -0
- package/lib/components/form-builder-editor/sub-components/validation-editor/validation-editor.component.d.ts +112 -0
- package/lib/components/form-builder-editor/types/editor.types.d.ts +124 -0
- package/lib/components/layout-builder/index.d.ts +16 -0
- package/lib/components/layout-builder/layout-builder.component.d.ts +85 -0
- package/lib/components/layout-builder/layout-builder.types.d.ts +436 -0
- package/lib/components/layout-builder/layout.service.d.ts +100 -0
- package/lib/components/modal/confirm-dialog.component.d.ts +46 -0
- package/lib/components/modal/index.d.ts +4 -0
- package/lib/components/modal/modal.component.d.ts +44 -0
- package/lib/components/modal/modal.service.d.ts +93 -0
- package/lib/components/modal/modal.types.d.ts +110 -0
- package/lib/components/page-header/breadcrumb.service.d.ts +96 -0
- package/lib/components/page-header/index.d.ts +16 -0
- package/lib/components/page-header/page-header.component.d.ts +59 -0
- package/lib/components/page-header/page-header.types.d.ts +96 -0
- package/lib/components/table/index.d.ts +2 -0
- package/lib/components/table/paginated-table.component.d.ts +85 -0
- package/lib/components/table/table.types.d.ts +81 -0
- package/lib/core/types/index.d.ts +57 -0
- package/lib/core/utils/index.d.ts +29 -0
- package/package.json +44 -0
- package/public-api.d.ts +22 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import { UiValidationRule, UiValidationType, UiCrossFieldOperator } from '../../../form-builder/types/index';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Interfaccia per le opzioni dei tipi di validazione nella select.
|
|
6
|
+
*/
|
|
7
|
+
interface ValidationTypeOption {
|
|
8
|
+
/** Valore del tipo di validazione. */
|
|
9
|
+
value: UiValidationType;
|
|
10
|
+
/** Etichetta visualizzata nella select. */
|
|
11
|
+
label: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Interfaccia per le opzioni degli operatori cross-field nella select.
|
|
15
|
+
*/
|
|
16
|
+
interface CrossFieldOperatorOption {
|
|
17
|
+
/** Valore dell'operatore. */
|
|
18
|
+
value: UiCrossFieldOperator;
|
|
19
|
+
/** Etichetta visualizzata nella select. */
|
|
20
|
+
label: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Editor per le regole di validazione dei campi.
|
|
24
|
+
*
|
|
25
|
+
* Permette di aggiungere, modificare e rimuovere regole di validazione
|
|
26
|
+
* per un campo del form builder. Supporta validazioni standard,
|
|
27
|
+
* cross-field, date e file.
|
|
28
|
+
*
|
|
29
|
+
* @selector ui-validation-editor
|
|
30
|
+
*/
|
|
31
|
+
export declare class UiValidationEditorComponent {
|
|
32
|
+
/** Lista delle regole di validazione da editare. */
|
|
33
|
+
validations: UiValidationRule[];
|
|
34
|
+
/** Emesso quando la lista di regole viene modificata. */
|
|
35
|
+
validationsChange: EventEmitter<UiValidationRule[]>;
|
|
36
|
+
/** Opzioni disponibili per il tipo di validazione. */
|
|
37
|
+
readonly validationTypes: ValidationTypeOption[];
|
|
38
|
+
/** Opzioni per gli operatori di confronto cross-field. */
|
|
39
|
+
readonly crossFieldOperators: CrossFieldOperatorOption[];
|
|
40
|
+
/**
|
|
41
|
+
* Verifica se il tipo di validazione richiede un campo valore.
|
|
42
|
+
* @param type - Tipo di validazione da verificare
|
|
43
|
+
* @returns true se il tipo richiede un valore
|
|
44
|
+
*/
|
|
45
|
+
requiresValue(type: UiValidationType): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Restituisce il placeholder appropriato per il campo valore
|
|
48
|
+
* in base al tipo di validazione selezionato.
|
|
49
|
+
* @param type - Tipo di validazione
|
|
50
|
+
* @returns Stringa placeholder
|
|
51
|
+
*/
|
|
52
|
+
getValuePlaceholder(type: UiValidationType): string;
|
|
53
|
+
/**
|
|
54
|
+
* Aggiunge una nuova regola di validazione con valori predefiniti.
|
|
55
|
+
*/
|
|
56
|
+
addValidation(): void;
|
|
57
|
+
/**
|
|
58
|
+
* Rimuove la regola di validazione all'indice specificato.
|
|
59
|
+
* @param index - Indice della regola da rimuovere
|
|
60
|
+
*/
|
|
61
|
+
removeValidation(index: number): void;
|
|
62
|
+
/**
|
|
63
|
+
* Gestisce il cambio del tipo di validazione.
|
|
64
|
+
* Se il tipo diventa 'crossField', inizializza la configurazione cross-field.
|
|
65
|
+
* @param index - Indice della regola
|
|
66
|
+
* @param type - Nuovo tipo di validazione
|
|
67
|
+
*/
|
|
68
|
+
onTypeChange(index: number, type: UiValidationType): void;
|
|
69
|
+
/**
|
|
70
|
+
* Gestisce il cambio del valore della regola.
|
|
71
|
+
* @param index - Indice della regola
|
|
72
|
+
* @param value - Nuovo valore
|
|
73
|
+
*/
|
|
74
|
+
onValueChange(index: number, value: any): void;
|
|
75
|
+
/**
|
|
76
|
+
* Gestisce il cambio del messaggio di errore.
|
|
77
|
+
* @param index - Indice della regola
|
|
78
|
+
* @param message - Nuovo messaggio
|
|
79
|
+
*/
|
|
80
|
+
onMessageChange(index: number, message: string): void;
|
|
81
|
+
/**
|
|
82
|
+
* Gestisce il cambio del campo target nella configurazione cross-field.
|
|
83
|
+
* @param index - Indice della regola
|
|
84
|
+
* @param targetField - Nuova chiave del campo target
|
|
85
|
+
*/
|
|
86
|
+
onCrossFieldTargetChange(index: number, targetField: string): void;
|
|
87
|
+
/**
|
|
88
|
+
* Gestisce il cambio dell'operatore nella configurazione cross-field.
|
|
89
|
+
* @param index - Indice della regola
|
|
90
|
+
* @param operator - Nuovo operatore
|
|
91
|
+
*/
|
|
92
|
+
onCrossFieldOperatorChange(index: number, operator: UiCrossFieldOperator): void;
|
|
93
|
+
/**
|
|
94
|
+
* Gestisce il cambio del tipo di dato nella configurazione cross-field.
|
|
95
|
+
* @param index - Indice della regola
|
|
96
|
+
* @param dataType - Nuovo tipo di dato ('date' | 'number')
|
|
97
|
+
*/
|
|
98
|
+
onCrossFieldDataTypeChange(index: number, dataType: 'date' | 'number'): void;
|
|
99
|
+
/**
|
|
100
|
+
* Clona l'array delle validazioni per garantire immutabilita.
|
|
101
|
+
* @returns Copia superficiale dell'array di validazioni
|
|
102
|
+
*/
|
|
103
|
+
private cloneValidations;
|
|
104
|
+
/**
|
|
105
|
+
* Emette l'evento di cambio validazioni.
|
|
106
|
+
* @param validations - Nuova lista di validazioni
|
|
107
|
+
*/
|
|
108
|
+
private emitChange;
|
|
109
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UiValidationEditorComponent, never>;
|
|
110
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<UiValidationEditorComponent, "ui-validation-editor", never, { "validations": { "alias": "validations"; "required": false; }; }, { "validationsChange": "validationsChange"; }, never, never, true, never>;
|
|
111
|
+
}
|
|
112
|
+
export {};
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module ng-ui-system/form-builder-editor
|
|
3
|
+
* Tipi e interfacce per l'editor visuale del form builder.
|
|
4
|
+
*/
|
|
5
|
+
import { UiFieldType, UiFormSchema } from '../../form-builder/types/index';
|
|
6
|
+
import { UiIconName } from '../../../core/types';
|
|
7
|
+
/**
|
|
8
|
+
* Stato corrente dell'editor.
|
|
9
|
+
* Gestito dal servizio UiEditorStateService tramite BehaviorSubject.
|
|
10
|
+
*/
|
|
11
|
+
export interface UiEditorState {
|
|
12
|
+
/** Schema del form in fase di editing. */
|
|
13
|
+
schema: UiFormSchema;
|
|
14
|
+
/** ID della sezione attualmente selezionata. */
|
|
15
|
+
selectedSectionId: string | null;
|
|
16
|
+
/** Chiave del campo attualmente selezionato. */
|
|
17
|
+
selectedFieldKey: string | null;
|
|
18
|
+
/** Indica se lo schema e stato modificato dall'ultimo salvataggio. */
|
|
19
|
+
isDirty: boolean;
|
|
20
|
+
/** Data dell'ultimo salvataggio. */
|
|
21
|
+
lastSaved: Date | null;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Categorie per raggruppare i tipi di campo nella palette.
|
|
25
|
+
*/
|
|
26
|
+
export type UiEditorFieldCategory = 'basic' | 'choice' | 'datetime' | 'advanced' | 'custom';
|
|
27
|
+
/**
|
|
28
|
+
* Elemento della palette dei tipi di campo.
|
|
29
|
+
* Rappresenta un tipo di campo trascinabile nella palette laterale.
|
|
30
|
+
*/
|
|
31
|
+
export interface UiEditorFieldPaletteItem {
|
|
32
|
+
/** Tipo di campo. */
|
|
33
|
+
type: UiFieldType;
|
|
34
|
+
/** Nome visualizzato nella palette. */
|
|
35
|
+
label: string;
|
|
36
|
+
/** Icona Lucide da mostrare. */
|
|
37
|
+
icon: UiIconName;
|
|
38
|
+
/** Descrizione breve del tipo di campo. */
|
|
39
|
+
description: string;
|
|
40
|
+
/** Categoria di appartenenza. */
|
|
41
|
+
category: UiEditorFieldCategory;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Campo disponibile per la selezione nelle condizioni.
|
|
45
|
+
* Versione semplificata del field descriptor per le select.
|
|
46
|
+
*/
|
|
47
|
+
export interface UiEditorAvailableField {
|
|
48
|
+
/** Chiave univoca del campo. */
|
|
49
|
+
key: string;
|
|
50
|
+
/** Label visualizzata. */
|
|
51
|
+
label: string;
|
|
52
|
+
/** Tipo di campo. */
|
|
53
|
+
type: string;
|
|
54
|
+
/** Opzioni (per campi select, radio, etc.). */
|
|
55
|
+
options?: {
|
|
56
|
+
value: any;
|
|
57
|
+
label: string;
|
|
58
|
+
}[];
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Elemento del breadcrumb di navigazione dell'editor.
|
|
62
|
+
*/
|
|
63
|
+
export interface UiEditorBreadcrumbItem {
|
|
64
|
+
/** Label visualizzata. */
|
|
65
|
+
label: string;
|
|
66
|
+
/** ID dell'elemento (form, sezione o campo). */
|
|
67
|
+
id: string;
|
|
68
|
+
/** Tipo di elemento. */
|
|
69
|
+
type: 'form' | 'section' | 'field';
|
|
70
|
+
/** Se e l'elemento attualmente attivo. */
|
|
71
|
+
active: boolean;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Struttura dati per il salvataggio nel localStorage.
|
|
75
|
+
*/
|
|
76
|
+
export interface UiEditorStorageData {
|
|
77
|
+
/** Schema salvato. */
|
|
78
|
+
schema: UiFormSchema;
|
|
79
|
+
/** Timestamp del salvataggio (epoch ms). */
|
|
80
|
+
timestamp: number;
|
|
81
|
+
/** Versione dello storage per compatibilita futura. */
|
|
82
|
+
version: string;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Risultato della validazione dello schema nell'editor.
|
|
86
|
+
*/
|
|
87
|
+
export interface UiEditorSchemaValidationResult {
|
|
88
|
+
/** Se lo schema e valido. */
|
|
89
|
+
valid: boolean;
|
|
90
|
+
/** Errori di validazione. */
|
|
91
|
+
errors: UiEditorSchemaValidationError[];
|
|
92
|
+
/** Warning di validazione. */
|
|
93
|
+
warnings: UiEditorSchemaValidationWarning[];
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Errore di validazione dello schema.
|
|
97
|
+
*/
|
|
98
|
+
export interface UiEditorSchemaValidationError {
|
|
99
|
+
/** Tipo di errore. */
|
|
100
|
+
type: 'duplicate_key' | 'invalid_type' | 'missing_required' | 'invalid_reference' | 'invalid_format';
|
|
101
|
+
/** Messaggio di errore. */
|
|
102
|
+
message: string;
|
|
103
|
+
/** Path dell'elemento con errore (es. `sections[0].fields[2].key`). */
|
|
104
|
+
path: string;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Warning di validazione dello schema.
|
|
108
|
+
*/
|
|
109
|
+
export interface UiEditorSchemaValidationWarning {
|
|
110
|
+
/** Tipo di warning. */
|
|
111
|
+
type: 'missing_label' | 'empty_options' | 'unused_field' | 'circular_condition';
|
|
112
|
+
/** Messaggio di warning. */
|
|
113
|
+
message: string;
|
|
114
|
+
/** Path dell'elemento con warning. */
|
|
115
|
+
path: string;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Dati passati alla modale dell'editor.
|
|
119
|
+
* Iniettabili tramite MAT_DIALOG_DATA.
|
|
120
|
+
*/
|
|
121
|
+
export interface UiEditorDialogData {
|
|
122
|
+
/** Schema iniziale da caricare nell'editor. */
|
|
123
|
+
initialSchema?: UiFormSchema;
|
|
124
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ng-ui-system — Layout Builder entry point.
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```typescript
|
|
6
|
+
* import {
|
|
7
|
+
* UiLayoutBuilderComponent,
|
|
8
|
+
* UiLayoutService,
|
|
9
|
+
* UiLayoutSchema,
|
|
10
|
+
* UiNavItem,
|
|
11
|
+
* } from 'ng-ui-system';
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
export { UiLayoutBuilderComponent } from './layout-builder.component';
|
|
15
|
+
export { UiLayoutService } from './layout.service';
|
|
16
|
+
export { UiLayoutMode, UiContentType, UiLayoutBreadcrumb, UiLayoutSchema, UiNavItem, UiNavItemType, UiNavGroup, UiNavSection, UiNavAutoDiscoveryConfig, UiLayoutNavigationConfig, UiLayoutLogo, UiLayoutHeaderConfig, UiFooterLink, UiLayoutFooterConfig, UiFabAction, UiLayoutFabConfig, UiLayoutPageHeaderConfig, UiLayoutLoaderConfig, UiBarType, UiBarConfig, UiTopbarConfig, UiNotificationBarConfig, UiBrandBarConfig, UiUserDropdownConfig, UiDropdownItem, UiNavigationBarConfig, UiLinksBarConfig, UiBarLinkItem, } from './layout-builder.types';
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema-driven application shell that materializes a full responsive layout
|
|
3
|
+
* from a single `UiLayoutSchema` descriptor.
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - Two layout modes: sidebar (collapsible) and topbar (multi-bar stack)
|
|
7
|
+
* - Programmatic mode switching with loader masking
|
|
8
|
+
* - Content type: fluid, boxed, fullscreen
|
|
9
|
+
* - Speed-dial FAB with context-sensitive actions
|
|
10
|
+
* - Overlay loader with body-scroll locking
|
|
11
|
+
* - Auto-derived breadcrumbs from navigation schema
|
|
12
|
+
* - Skip-to-content link and full keyboard navigation
|
|
13
|
+
*
|
|
14
|
+
* @selector ui-layout-builder
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```html
|
|
18
|
+
* <ui-layout-builder [schema]="layoutSchema" />
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
import { OnInit, OnDestroy } from '@angular/core';
|
|
22
|
+
import { UiLayoutService } from './layout.service';
|
|
23
|
+
import { UiLayoutSchema, UiLayoutMode, UiContentType, UiLayoutBreadcrumb, UiNavItem, UiNavSection, UiLayoutFabConfig, UiFabAction, UiBarConfig } from './layout-builder.types';
|
|
24
|
+
import * as i0 from "@angular/core";
|
|
25
|
+
export declare class UiLayoutBuilderComponent implements OnInit, OnDestroy {
|
|
26
|
+
/** Full layout descriptor. */
|
|
27
|
+
schema: UiLayoutSchema;
|
|
28
|
+
readonly layoutService: UiLayoutService;
|
|
29
|
+
private readonly router;
|
|
30
|
+
private readonly cdr;
|
|
31
|
+
private subs;
|
|
32
|
+
currentUrl: string;
|
|
33
|
+
expandedIds: Set<string>;
|
|
34
|
+
fabOpen: boolean;
|
|
35
|
+
currentFabConfig: UiLayoutFabConfig | null;
|
|
36
|
+
loading: boolean;
|
|
37
|
+
sidebarOpen: boolean;
|
|
38
|
+
sidebarCollapsed: boolean;
|
|
39
|
+
layoutMode: UiLayoutMode;
|
|
40
|
+
contentType: UiContentType;
|
|
41
|
+
contentTransitioning: boolean;
|
|
42
|
+
breadcrumbs: UiLayoutBreadcrumb[];
|
|
43
|
+
userDropdownOpen: boolean;
|
|
44
|
+
hnavDropdownId: string | null;
|
|
45
|
+
private navBadges;
|
|
46
|
+
private navVisibility;
|
|
47
|
+
private barVisibility;
|
|
48
|
+
/** Resolved page title from the last breadcrumb. */
|
|
49
|
+
get pageTitle(): string;
|
|
50
|
+
/** Items flagged for the mobile bottom navigation bar (max 5). */
|
|
51
|
+
get bottomNavItems(): UiNavItem[];
|
|
52
|
+
get mobileMode(): string;
|
|
53
|
+
/** Topbar bars filtered by visibility (schema default + service overrides). */
|
|
54
|
+
get visibleBars(): UiBarConfig[];
|
|
55
|
+
ngOnInit(): void;
|
|
56
|
+
ngOnDestroy(): void;
|
|
57
|
+
onEscape(): void;
|
|
58
|
+
onDocumentClick(event: MouseEvent): void;
|
|
59
|
+
getItemsForSection(section: UiNavSection): UiNavItem[];
|
|
60
|
+
isItemHidden(item: UiNavItem): boolean;
|
|
61
|
+
getItemBadge(item: UiNavItem): string | number | null;
|
|
62
|
+
isParentActive(item: UiNavItem): boolean;
|
|
63
|
+
isRouteActive(item: UiNavItem): boolean;
|
|
64
|
+
toggleExpand(item: UiNavItem): void;
|
|
65
|
+
onNavClick(): void;
|
|
66
|
+
onFabMainClick(): void;
|
|
67
|
+
onFabAction(action: UiFabAction): void;
|
|
68
|
+
getTopbarNavItems(bar: UiBarConfig): UiNavItem[];
|
|
69
|
+
toggleHnavDropdown(itemId: string): void;
|
|
70
|
+
dismissBar(barId: string): void;
|
|
71
|
+
onDropdownAction(item: {
|
|
72
|
+
action?: () => void;
|
|
73
|
+
}): void;
|
|
74
|
+
/**
|
|
75
|
+
* Derives breadcrumbs by matching the current URL against the
|
|
76
|
+
* navigation schema. Walks top-level items, sections, and children
|
|
77
|
+
* to build a trail from root to current page.
|
|
78
|
+
*/
|
|
79
|
+
private computeBreadcrumbs;
|
|
80
|
+
private urlMatches;
|
|
81
|
+
private findSectionLabel;
|
|
82
|
+
private autoExpandFromUrl;
|
|
83
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UiLayoutBuilderComponent, never>;
|
|
84
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<UiLayoutBuilderComponent, "ui-layout-builder", never, { "schema": { "alias": "schema"; "required": true; }; }, {}, never, never, true, never>;
|
|
85
|
+
}
|