structra-ui 0.2.55 → 0.2.56
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/fesm2022/structra-ui.mjs +159 -44
- package/fesm2022/structra-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/types/structra-ui.d.ts +41 -6
package/package.json
CHANGED
package/types/structra-ui.d.ts
CHANGED
|
@@ -1040,6 +1040,7 @@ declare class SwitchFieldComponent extends BooleanFieldDirective implements Afte
|
|
|
1040
1040
|
declare class DropdownBaseComponent {
|
|
1041
1041
|
private readonly appTheme;
|
|
1042
1042
|
private readonly overlay;
|
|
1043
|
+
private connectedOverlay?;
|
|
1043
1044
|
/**
|
|
1044
1045
|
* O overlay do CDK fica sob `body`; sem estas classes, `var(--app-color-*)` cai no `:root`.
|
|
1045
1046
|
* Tem de ser **array**: uma única string com espaço quebra `classList.add` e as classes não aplicam.
|
|
@@ -1068,11 +1069,18 @@ declare class DropdownBaseComponent {
|
|
|
1068
1069
|
/** Empurra o overlay para caber no viewport quando há espaço insuficiente. */
|
|
1069
1070
|
pushConnectedOverlay: boolean;
|
|
1070
1071
|
/**
|
|
1071
|
-
*
|
|
1072
|
-
*
|
|
1072
|
+
* `true`: mantém a última posição escolhida e só reancora ao rect do gatilho — evita flip/push bruscos
|
|
1073
|
+
* quando o conteúdo do painel muda (ex.: multiselect que reordena opções ao seleccionar).
|
|
1074
|
+
*/
|
|
1075
|
+
lockConnectedOverlayPosition: boolean;
|
|
1076
|
+
/**
|
|
1077
|
+
* Sobrescrever a estratégia CDK (ex.: `noop()` em cenários de teste).
|
|
1078
|
+
* Por omissão: **reposiciona** em desktop; em ambientes sem `(hover: hover)` usa **fecho ao scroll**
|
|
1079
|
+
* da página (lista não fica desalinhada ao rolar o formulário no telemóvel).
|
|
1073
1080
|
*/
|
|
1074
1081
|
scrollStrategy: ScrollStrategy | null;
|
|
1075
|
-
readonly
|
|
1082
|
+
readonly repositionScrollStrategy: _angular_cdk_overlay.RepositionScrollStrategy;
|
|
1083
|
+
readonly closeOnOuterScrollStrategy: _angular_cdk_overlay.CloseScrollStrategy;
|
|
1076
1084
|
get effectiveScrollStrategy(): ScrollStrategy;
|
|
1077
1085
|
/**
|
|
1078
1086
|
* `true`: painel sem fundo/borda/sombra próprios — o conteúdo (ex.: `app-menu-list`) define o chrome.
|
|
@@ -1090,12 +1098,17 @@ declare class DropdownBaseComponent {
|
|
|
1090
1098
|
onOverlayKeydown(ev: KeyboardEvent): void;
|
|
1091
1099
|
setOpen(next: boolean): void;
|
|
1092
1100
|
toggle(): void;
|
|
1101
|
+
/**
|
|
1102
|
+
* Após o gatilho ou o painel mudarem de layout com o overlay aberto (ex.: teclado / multiselect).
|
|
1103
|
+
*/
|
|
1104
|
+
scheduleOverlayPositionSync(): void;
|
|
1093
1105
|
static ɵfac: i0.ɵɵFactoryDeclaration<DropdownBaseComponent, never>;
|
|
1094
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DropdownBaseComponent, "app-dropdown-base", never, { "open": { "alias": "open"; "required": false; }; "panelTemplate": { "alias": "panelTemplate"; "required": true; }; "panelWidthPx": { "alias": "panelWidthPx"; "required": false; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; }; "hasBackdrop": { "alias": "hasBackdrop"; "required": false; }; "connectedPositions": { "alias": "connectedPositions"; "required": false; }; "pushConnectedOverlay": { "alias": "pushConnectedOverlay"; "required": false; }; "scrollStrategy": { "alias": "scrollStrategy"; "required": false; }; "bareOverlayPanel": { "alias": "bareOverlayPanel"; "required": false; }; }, { "openChange": "openChange"; }, never, ["[appDropdownTrigger]"], true, never>;
|
|
1106
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DropdownBaseComponent, "app-dropdown-base", never, { "open": { "alias": "open"; "required": false; }; "panelTemplate": { "alias": "panelTemplate"; "required": true; }; "panelWidthPx": { "alias": "panelWidthPx"; "required": false; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; }; "hasBackdrop": { "alias": "hasBackdrop"; "required": false; }; "connectedPositions": { "alias": "connectedPositions"; "required": false; }; "pushConnectedOverlay": { "alias": "pushConnectedOverlay"; "required": false; }; "lockConnectedOverlayPosition": { "alias": "lockConnectedOverlayPosition"; "required": false; }; "scrollStrategy": { "alias": "scrollStrategy"; "required": false; }; "bareOverlayPanel": { "alias": "bareOverlayPanel"; "required": false; }; }, { "openChange": "openChange"; }, never, ["[appDropdownTrigger]"], true, never>;
|
|
1095
1107
|
static ngAcceptInputType_open: unknown;
|
|
1096
1108
|
static ngAcceptInputType_closeOnEscape: unknown;
|
|
1097
1109
|
static ngAcceptInputType_hasBackdrop: unknown;
|
|
1098
1110
|
static ngAcceptInputType_pushConnectedOverlay: unknown;
|
|
1111
|
+
static ngAcceptInputType_lockConnectedOverlayPosition: unknown;
|
|
1099
1112
|
static ngAcceptInputType_bareOverlayPanel: unknown;
|
|
1100
1113
|
}
|
|
1101
1114
|
|
|
@@ -1255,9 +1268,15 @@ declare class MultiselectFieldComponent extends DropdownMultiOptionFieldBase imp
|
|
|
1255
1268
|
optionsPanelTpl: TemplateRef<unknown>;
|
|
1256
1269
|
private readonly dropdownTriggerRootRef;
|
|
1257
1270
|
private readonly nativeInputRef?;
|
|
1271
|
+
private readonly dropdownBase?;
|
|
1258
1272
|
panelOpen: boolean;
|
|
1259
1273
|
panelOverlayWidth: number;
|
|
1260
1274
|
private scrollLoadTimer;
|
|
1275
|
+
/**
|
|
1276
|
+
* Sem hover primário (telemóvel): o CDK volta a avaliar encaixe quando a lista reordena e o painel
|
|
1277
|
+
* pode «saltar» por cima do campo — `lockPosition` mantém ancoragem ao fundo do gatilho.
|
|
1278
|
+
*/
|
|
1279
|
+
get lockOverlayWhileOpen(): boolean;
|
|
1261
1280
|
ngAfterViewInit(): void;
|
|
1262
1281
|
writeValue(value: unknown[] | null): void;
|
|
1263
1282
|
protected afterWriteValue(_value: unknown[]): void;
|
|
@@ -1332,6 +1351,11 @@ declare class DropdownSearchFieldComponent extends DropdownOptionFieldBase imple
|
|
|
1332
1351
|
get isLockedSelectionDisplay(): boolean;
|
|
1333
1352
|
/** `readonly` nativo: prop do campo ou bloqueio de exibição da seleção. */
|
|
1334
1353
|
get isNativeInputReadonly(): boolean;
|
|
1354
|
+
/**
|
|
1355
|
+
* Paginação / API pode devolver o mesmo `value` em mais do que uma linha — `track` só por valor
|
|
1356
|
+
* duplica chaves (aviso NG0955). O índice na vista torna a chave única sem alterar select/multiselect.
|
|
1357
|
+
*/
|
|
1358
|
+
trackOption(index: number, opt: UiSelectOption<unknown>): unknown;
|
|
1335
1359
|
ngOnChanges(changes: SimpleChanges): void;
|
|
1336
1360
|
ngOnDestroy(): void;
|
|
1337
1361
|
onDropdownOpenChange(next: boolean, openMode?: DropdownSearchOpenMode): void;
|
|
@@ -3112,6 +3136,10 @@ declare class MenuListComponent<T = string> implements OnChanges, AfterViewInit
|
|
|
3112
3136
|
*/
|
|
3113
3137
|
persistGroupExpansion: boolean;
|
|
3114
3138
|
searchable: boolean;
|
|
3139
|
+
/**
|
|
3140
|
+
* Com `searchable`, se `true` limpa o campo e repõe a lista completa após {@link itemSelect}.
|
|
3141
|
+
*/
|
|
3142
|
+
limparAposPesquisar: boolean;
|
|
3115
3143
|
searchPlaceholder: string;
|
|
3116
3144
|
readonly itemSelect: EventEmitter<T>;
|
|
3117
3145
|
readonly closeRequest: EventEmitter<void>;
|
|
@@ -3128,12 +3156,15 @@ declare class MenuListComponent<T = string> implements OnChanges, AfterViewInit
|
|
|
3128
3156
|
get expandAllGroupsWhenSearching(): boolean;
|
|
3129
3157
|
get showSearchNoResults(): boolean;
|
|
3130
3158
|
ngOnChanges(changes: SimpleChanges): void;
|
|
3159
|
+
/** `false` quando o corpo já tratou a selecção no mesmo ciclo — não repetir após `afterNextRender`. */
|
|
3160
|
+
private needsDeferredBodyRouteSync;
|
|
3131
3161
|
/**
|
|
3132
3162
|
* O corpo do menu só existe após o primeiro render; no drawer mobile isso atrasa `ensureExpanded`
|
|
3133
3163
|
* relativamente ao `ngOnChanges` do corpo — repetimos após `afterNextRender`.
|
|
3134
3164
|
*/
|
|
3135
3165
|
private scheduleBodyRouteSelectionSync;
|
|
3136
3166
|
onSearchQueryInput(value: string | null): void;
|
|
3167
|
+
onMenuItemSelect(id: T): void;
|
|
3137
3168
|
resetHighlight(): void;
|
|
3138
3169
|
focusFirstOption(): void;
|
|
3139
3170
|
/**
|
|
@@ -3143,13 +3174,14 @@ declare class MenuListComponent<T = string> implements OnChanges, AfterViewInit
|
|
|
3143
3174
|
syncSelectionForMobileDrawerOpen(): void;
|
|
3144
3175
|
private syncDisplayItems;
|
|
3145
3176
|
static ɵfac: i0.ɵɵFactoryDeclaration<MenuListComponent<any>, never>;
|
|
3146
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<MenuListComponent<any>, "app-menu-list", never, { "appTheme": { "alias": "appTheme"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": true; }; "menuId": { "alias": "menuId"; "required": false; }; "dense": { "alias": "dense"; "required": false; }; "nested": { "alias": "nested"; "required": false; }; "selectedItemId": { "alias": "selectedItemId"; "required": false; }; "compressText": { "alias": "compressText"; "required": false; }; "clickToOpen": { "alias": "clickToOpen"; "required": false; }; "groupCollapsible": { "alias": "groupCollapsible"; "required": false; }; "groupDefaultExpansion": { "alias": "groupDefaultExpansion"; "required": false; }; "persistGroupExpansion": { "alias": "persistGroupExpansion"; "required": false; }; "searchable": { "alias": "searchable"; "required": false; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; }; }, { "itemSelect": "itemSelect"; "closeRequest": "closeRequest"; "submenuBack": "submenuBack"; "groupToggled": "groupToggled"; "selectionScrollHint": "selectionScrollHint"; }, never, never, true, never>;
|
|
3177
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<MenuListComponent<any>, "app-menu-list", never, { "appTheme": { "alias": "appTheme"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": true; }; "menuId": { "alias": "menuId"; "required": false; }; "dense": { "alias": "dense"; "required": false; }; "nested": { "alias": "nested"; "required": false; }; "selectedItemId": { "alias": "selectedItemId"; "required": false; }; "compressText": { "alias": "compressText"; "required": false; }; "clickToOpen": { "alias": "clickToOpen"; "required": false; }; "groupCollapsible": { "alias": "groupCollapsible"; "required": false; }; "groupDefaultExpansion": { "alias": "groupDefaultExpansion"; "required": false; }; "persistGroupExpansion": { "alias": "persistGroupExpansion"; "required": false; }; "searchable": { "alias": "searchable"; "required": false; }; "limparAposPesquisar": { "alias": "limparAposPesquisar"; "required": false; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; }; }, { "itemSelect": "itemSelect"; "closeRequest": "closeRequest"; "submenuBack": "submenuBack"; "groupToggled": "groupToggled"; "selectionScrollHint": "selectionScrollHint"; }, never, never, true, never>;
|
|
3147
3178
|
static ngAcceptInputType_dense: unknown;
|
|
3148
3179
|
static ngAcceptInputType_nested: unknown;
|
|
3149
3180
|
static ngAcceptInputType_compressText: unknown;
|
|
3150
3181
|
static ngAcceptInputType_groupCollapsible: unknown;
|
|
3151
3182
|
static ngAcceptInputType_persistGroupExpansion: unknown;
|
|
3152
3183
|
static ngAcceptInputType_searchable: unknown;
|
|
3184
|
+
static ngAcceptInputType_limparAposPesquisar: unknown;
|
|
3153
3185
|
}
|
|
3154
3186
|
|
|
3155
3187
|
/**
|
|
@@ -3464,6 +3496,8 @@ declare class AppSidebarComponent<T extends string = string> implements OnChange
|
|
|
3464
3496
|
mobileNavOpenPulse: boolean;
|
|
3465
3497
|
/** Repassado a {@link MenuListComponent.searchable}: campo de pesquisa na lista da lateral. */
|
|
3466
3498
|
searchable: boolean;
|
|
3499
|
+
/** Repassado a {@link MenuListComponent.limparAposPesquisar}. */
|
|
3500
|
+
limparAposPesquisar: boolean;
|
|
3467
3501
|
/**
|
|
3468
3502
|
* Repassado a {@link MenuListComponent.clickToOpen}: submenus na lateral abrem por **clique** (`true`, omissão)
|
|
3469
3503
|
* ou por **hover** (`false`).
|
|
@@ -3525,10 +3559,11 @@ declare class AppSidebarComponent<T extends string = string> implements OnChange
|
|
|
3525
3559
|
private scheduleSidebarHeadLayoutGuards;
|
|
3526
3560
|
private applySidebarHeadLayoutGuards;
|
|
3527
3561
|
static ɵfac: i0.ɵɵFactoryDeclaration<AppSidebarComponent<any>, never>;
|
|
3528
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<AppSidebarComponent<any>, "app-sidebar", never, { "appTheme": { "alias": "appTheme"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": true; }; "menuId": { "alias": "menuId"; "required": false; }; "selectedItemId": { "alias": "selectedItemId"; "required": false; }; "collapsed": { "alias": "collapsed"; "required": false; }; "mobileNavOpenPulse": { "alias": "mobileNavOpenPulse"; "required": false; }; "searchable": { "alias": "searchable"; "required": false; }; "clickToOpen": { "alias": "clickToOpen"; "required": false; }; "groupCollapsible": { "alias": "groupCollapsible"; "required": false; }; "groupDefaultExpansion": { "alias": "groupDefaultExpansion"; "required": false; }; }, { "itemSelect": "itemSelect"; }, never, ["[appSidebarBrand]", "[appSidebarToolbar]"], true, never>;
|
|
3562
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AppSidebarComponent<any>, "app-sidebar", never, { "appTheme": { "alias": "appTheme"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": true; }; "menuId": { "alias": "menuId"; "required": false; }; "selectedItemId": { "alias": "selectedItemId"; "required": false; }; "collapsed": { "alias": "collapsed"; "required": false; }; "mobileNavOpenPulse": { "alias": "mobileNavOpenPulse"; "required": false; }; "searchable": { "alias": "searchable"; "required": false; }; "limparAposPesquisar": { "alias": "limparAposPesquisar"; "required": false; }; "clickToOpen": { "alias": "clickToOpen"; "required": false; }; "groupCollapsible": { "alias": "groupCollapsible"; "required": false; }; "groupDefaultExpansion": { "alias": "groupDefaultExpansion"; "required": false; }; }, { "itemSelect": "itemSelect"; }, never, ["[appSidebarBrand]", "[appSidebarToolbar]"], true, never>;
|
|
3529
3563
|
static ngAcceptInputType_collapsed: unknown;
|
|
3530
3564
|
static ngAcceptInputType_mobileNavOpenPulse: unknown;
|
|
3531
3565
|
static ngAcceptInputType_searchable: unknown;
|
|
3566
|
+
static ngAcceptInputType_limparAposPesquisar: unknown;
|
|
3532
3567
|
static ngAcceptInputType_groupCollapsible: unknown;
|
|
3533
3568
|
}
|
|
3534
3569
|
|