@arsedizioni/ars-utils 22.0.84 → 22.0.86
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/arsedizioni-ars-utils-clipper.common.mjs +24 -24
- package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs +48 -48
- package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-core.mjs +287 -286
- package/fesm2022/arsedizioni-ars-utils-core.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-evolution.common.mjs +15 -15
- package/fesm2022/arsedizioni-ars-utils-help.mjs +9 -9
- package/fesm2022/arsedizioni-ars-utils-support.common.mjs +9 -9
- package/fesm2022/arsedizioni-ars-utils-support.ui.mjs +6 -6
- package/fesm2022/arsedizioni-ars-utils-tinymce.mjs +3 -3
- package/fesm2022/arsedizioni-ars-utils-ui.application.mjs +57 -57
- package/fesm2022/arsedizioni-ars-utils-ui.mjs +115 -120
- package/fesm2022/arsedizioni-ars-utils-ui.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-ui.oauth.mjs +6 -6
- package/package.json +1 -1
- package/types/arsedizioni-ars-utils-clipper.ui.d.ts +1 -1
- package/types/arsedizioni-ars-utils-core.d.ts +103 -15
- package/types/arsedizioni-ars-utils-ui.application.d.ts +2 -2
- package/types/arsedizioni-ars-utils-ui.d.ts +17 -11
|
@@ -201,8 +201,8 @@ class LoginOAuthComponent {
|
|
|
201
201
|
}
|
|
202
202
|
this.googleButtonWrapper.click();
|
|
203
203
|
}
|
|
204
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0
|
|
205
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0
|
|
204
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: LoginOAuthComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
205
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.0", type: LoginOAuthComponent, isStandalone: true, selector: "login-oauth", inputs: { showInfo: { classPropertyName: "showInfo", publicName: "showInfo", isSignal: true, isRequired: false, transformFunction: null }, applicationName: { classPropertyName: "applicationName", publicName: "applicationName", isSignal: true, isRequired: false, transformFunction: null }, autoInitialize: { classPropertyName: "autoInitialize", publicName: "autoInitialize", isSignal: true, isRequired: false, transformFunction: null }, allowMicrosoft: { classPropertyName: "allowMicrosoft", publicName: "allowMicrosoft", isSignal: true, isRequired: false, transformFunction: null }, allowGoogle: { classPropertyName: "allowGoogle", publicName: "allowGoogle", isSignal: true, isRequired: false, transformFunction: null }, googleClientId: { classPropertyName: "googleClientId", publicName: "googleClientId", isSignal: true, isRequired: false, transformFunction: null }, msalScope: { classPropertyName: "msalScope", publicName: "msalScope", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { success: "success" }, providers: [
|
|
206
206
|
{
|
|
207
207
|
provide: MSAL_INSTANCE,
|
|
208
208
|
deps: [EnvironmentService],
|
|
@@ -221,7 +221,7 @@ class LoginOAuthComponent {
|
|
|
221
221
|
MsalBroadcastService
|
|
222
222
|
], ngImport: i0, template: "<div class=\"login-oauth\">\r\n @if(showInfo()) {\r\n <div class=\"message\">\r\n <p>Questa sezione consente di accedere al servizio utilizzando un provider OAuth2.</p>\r\n @if(applicationName()) {\r\n <p>La email utilizzata deve essere collegata ad un utente valido di {{applicationName()}} e dei servizi ad esso\r\n connessi.</p>\r\n }\r\n </div>\r\n }\r\n @if (allowMicrosoft()) {\r\n <div class=\"button\">\r\n <button mat-flat-button (click)=\"loginMSAL()\" aria-label=\"Effettua accesso\"\r\n [disabled]=\"!oauthMicrosoftReady()\" style=\"width: 100%;\">\r\n Accedi con Microsoft</button>\r\n </div>\r\n }\r\n @if (allowGoogle()) {\r\n <div class=\"button\">\r\n <button mat-flat-button (click)=\"loginGoogle()\" style=\"width: 100%;\"\r\n aria-label=\"Effettua accesso\" [disabled]=\"!oauthGoogleReady()\">\r\n Accedi con Google</button>\r\n </div>\r\n }\r\n</div>\r\n", styles: [".login-oauth{text-align:center}.login-oauth .button{padding:10px 0;width:100%}.login-oauth .message{padding:0 0 10px!important;font-size:small}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
223
223
|
}
|
|
224
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0
|
|
224
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: LoginOAuthComponent, decorators: [{
|
|
225
225
|
type: Component,
|
|
226
226
|
args: [{ selector: 'login-oauth', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
227
227
|
{
|
|
@@ -274,10 +274,10 @@ class LoginOAuthOkMSComponent {
|
|
|
274
274
|
console.error('Errore durante la comunicazione della risposta di autenticazione:', error);
|
|
275
275
|
});
|
|
276
276
|
}
|
|
277
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0
|
|
278
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0
|
|
277
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: LoginOAuthOkMSComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
278
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.0", type: LoginOAuthOkMSComponent, isStandalone: true, selector: "app-login-oauth-ok-ms", inputs: { message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFill>\r\n <div class=\"login-auto fade-in\">\r\n <div class=\"message\">\r\n Autenticazione in corso...\r\n </div>\r\n <mat-progress-bar mode=\"indeterminate\" ></mat-progress-bar>\r\n </div>\r\n</div>\r\n", styles: [".login-auto{padding:20px 0}.login-auto .message{font-size:large;font-weight:700;color:var(--ars-color-primary);max-width:300px;text-align:center;width:100%;padding:40px 0}\n"], dependencies: [{ kind: "ngmodule", type: FlexLayoutModule }, { kind: "directive", type: i1$1.FxLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg] ", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1$1.FxLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg] ", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1$1.FxFlexFillDirective, selector: " [fxFlexFill], [fxFill], [fxFlexFill.xs], [fxFlexFill.sm], [fxFlexFill.md], [fxFlexFill.lg], [fxFlexFill.xl], [fxFlexFill.lt-sm], [fxFlexFill.lt-md], [fxFlexFill.lt-lg], [fxFlexFill.lt-xl], [fxFlexFill.gt-xs], [fxFlexFill.gt-sm], [fxFlexFill.gt-md], [fxFlexFill.gt-lg] ", inputs: ["fxFlexFill", "fxFill", "fxFlexFill.xs", "fxFlexFill.sm", "fxFlexFill.md", "fxFlexFill.lg", "fxFlexFill.xl", "fxFlexFill.lt-sm", "fxFlexFill.lt-md", "fxFlexFill.lt-lg", "fxFlexFill.lt-xl", "fxFlexFill.gt-xs", "fxFlexFill.gt-sm", "fxFlexFill.gt-md", "fxFlexFill.gt-lg"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i2.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
279
279
|
}
|
|
280
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0
|
|
280
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: LoginOAuthOkMSComponent, decorators: [{
|
|
281
281
|
type: Component,
|
|
282
282
|
args: [{ selector: 'app-login-oauth-ok-ms', changeDetection: ChangeDetectionStrategy.OnPush, imports: [FlexLayoutModule, MatProgressBarModule], template: "<div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFill>\r\n <div class=\"login-auto fade-in\">\r\n <div class=\"message\">\r\n Autenticazione in corso...\r\n </div>\r\n <mat-progress-bar mode=\"indeterminate\" ></mat-progress-bar>\r\n </div>\r\n</div>\r\n", styles: [".login-auto{padding:20px 0}.login-auto .message{font-size:large;font-weight:700;color:var(--ars-color-primary);max-width:300px;text-align:center;width:100%;padding:40px 0}\n"] }]
|
|
283
283
|
}], ctorParameters: () => [], propDecorators: { message: [{ type: i0.Input, args: [{ isSignal: true, alias: "message", required: false }] }] } });
|
package/package.json
CHANGED
|
@@ -1049,7 +1049,7 @@ declare class ClipperDocumentMenuComponent {
|
|
|
1049
1049
|
private readonly renderer2;
|
|
1050
1050
|
private readonly clipperService;
|
|
1051
1051
|
readonly useSelections: _angular_core.InputSignal<boolean>;
|
|
1052
|
-
readonly selectionSource: _angular_core.InputSignal<"
|
|
1052
|
+
readonly selectionSource: _angular_core.InputSignal<"none" | "selection" | "bag">;
|
|
1053
1053
|
/**
|
|
1054
1054
|
* Computed signal that returns the current effective document selection.
|
|
1055
1055
|
* Re-evaluates when any input signal or the underlying selection model changes.
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { EnvironmentProviders, PipeTransform, EventEmitter, OnDestroy, Signal } from '@angular/core';
|
|
2
|
+
import { EnvironmentProviders, InjectionToken, PipeTransform, EventEmitter, OnDestroy, Signal } from '@angular/core';
|
|
3
3
|
import { DateAdapter, MatDateFormats } from '@angular/material/core';
|
|
4
4
|
import { Locale } from 'date-fns';
|
|
5
|
+
import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent, HttpInterceptorFn } from '@angular/common/http';
|
|
6
|
+
import { Observable } from 'rxjs';
|
|
5
7
|
import { Validator, AbstractControl, ValidationErrors } from '@angular/forms';
|
|
6
8
|
import { SafeHtml, SafeResourceUrl } from '@angular/platform-browser';
|
|
7
9
|
import { SelectionModel } from '@angular/cdk/collections';
|
|
8
|
-
import { Observable } from 'rxjs';
|
|
9
10
|
|
|
10
11
|
declare const MAT_DATE_FNS_FORMATS: MatDateFormats;
|
|
11
12
|
/**
|
|
@@ -192,16 +193,6 @@ declare class DateFnsAdapter extends DateAdapter<Date, Locale> {
|
|
|
192
193
|
static ɵfac: i0.ɵɵFactoryDeclaration<DateFnsAdapter, never>;
|
|
193
194
|
static ɵprov: i0.ɵɵInjectableDeclaration<DateFnsAdapter>;
|
|
194
195
|
}
|
|
195
|
-
/** Opzioni di configurazione del supporto date ARS. */
|
|
196
|
-
interface ArsDateFnsOptions {
|
|
197
|
-
/** Timezone IANA usato da adapter e serializzazione (default: `Europe/Rome`). */
|
|
198
|
-
timeZone?: string;
|
|
199
|
-
/**
|
|
200
|
-
* Registra l'interceptor che serializza le Date come wall-clock locale.
|
|
201
|
-
* Richiede `withInterceptorsFromDi()` in `provideHttpClient()`. Default: `true`.
|
|
202
|
-
*/
|
|
203
|
-
httpSerialization?: boolean;
|
|
204
|
-
}
|
|
205
196
|
/**
|
|
206
197
|
* Standalone providers for the ARS date-fns adapter.
|
|
207
198
|
*
|
|
@@ -214,7 +205,104 @@ interface ArsDateFnsOptions {
|
|
|
214
205
|
* providers: [provideArsDateFns()]
|
|
215
206
|
* });
|
|
216
207
|
*/
|
|
217
|
-
declare function provideArsDateFns(
|
|
208
|
+
declare function provideArsDateFns(): EnvironmentProviders;
|
|
209
|
+
|
|
210
|
+
/** Default application timezone: all dates are serialised as Europe/Rome wall-clock values. */
|
|
211
|
+
declare const DEFAULT_TIME_ZONE = "Europe/Rome";
|
|
212
|
+
/**
|
|
213
|
+
* IANA timezone used to serialise dates towards the backend.
|
|
214
|
+
* Override it in the application providers to run the same code in another zone:
|
|
215
|
+
* `{ provide: ARS_TIME_ZONE, useValue: 'Europe/Zurich' }`.
|
|
216
|
+
*/
|
|
217
|
+
declare const ARS_TIME_ZONE: InjectionToken<string>;
|
|
218
|
+
/**
|
|
219
|
+
* Functional interceptor that serialises every `Date` in an outgoing request
|
|
220
|
+
* body as a naive local datetime string (`yyyy-MM-ddTHH:mm:ss`: no `Z`, no offset).
|
|
221
|
+
*
|
|
222
|
+
* WHY: `JSON.stringify` calls `Date.prototype.toJSON`, which emits a UTC instant.
|
|
223
|
+
* A date picked as 29/07/2026 00:00 in Rome (UTC+2) becomes
|
|
224
|
+
* `2026-07-28T22:00:00.000Z`, so the server stores the 28th — the classic
|
|
225
|
+
* "off by one day" bug. Sending the wall-clock value instead makes
|
|
226
|
+
* System.Text.Json produce a `DateTime` with `Kind = Unspecified` and the exact
|
|
227
|
+
* day/time the user selected.
|
|
228
|
+
*
|
|
229
|
+
* This is the single serialisation boundary of the application: no call site has
|
|
230
|
+
* to convert anything, and it also covers dates that lost a per-instance
|
|
231
|
+
* `toJSON` along the way (e.g. after `structuredClone`).
|
|
232
|
+
*
|
|
233
|
+
* Register it explicitly in `provideHttpClient(withInterceptors([...]))`.
|
|
234
|
+
* If you would rather have the library register it for you, use
|
|
235
|
+
* {@link provideArsLocalDates} instead.
|
|
236
|
+
*
|
|
237
|
+
* @example
|
|
238
|
+
* provideHttpClient(withInterceptors([
|
|
239
|
+
* arsLocalDateInterceptor,
|
|
240
|
+
* evolutionAuthInterceptor(...),
|
|
241
|
+
* ]));
|
|
242
|
+
*/
|
|
243
|
+
declare const arsLocalDateInterceptor: HttpInterceptorFn;
|
|
244
|
+
/**
|
|
245
|
+
* Class-based twin of {@link arsLocalDateInterceptor}.
|
|
246
|
+
*
|
|
247
|
+
* Exists because a functional `HttpInterceptorFn` can ONLY be registered inside
|
|
248
|
+
* `provideHttpClient(withInterceptors([...]))`, while a class registered on the
|
|
249
|
+
* `HTTP_INTERCEPTORS` multi-token can be contributed by any `EnvironmentProviders` —
|
|
250
|
+
* which is what lets {@link provideArsLocalDates} (and `provideArsDateFns`) wire it up
|
|
251
|
+
* on their own.
|
|
252
|
+
*
|
|
253
|
+
* REQUIRES `withInterceptorsFromDi()` in the application's `provideHttpClient()`:
|
|
254
|
+
* without it Angular never reads `HTTP_INTERCEPTORS` and this interceptor is
|
|
255
|
+
* silently skipped.
|
|
256
|
+
*/
|
|
257
|
+
declare class ArsLocalDateInterceptor implements HttpInterceptor {
|
|
258
|
+
private readonly timeZone;
|
|
259
|
+
/**
|
|
260
|
+
* Normalises the request body before handing it to the next handler.
|
|
261
|
+
* @param req - The outgoing request.
|
|
262
|
+
* @param next - The next handler in the chain.
|
|
263
|
+
*/
|
|
264
|
+
intercept(req: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>>;
|
|
265
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ArsLocalDateInterceptor, never>;
|
|
266
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ArsLocalDateInterceptor>;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Standalone providers for date serialisation towards the backend.
|
|
270
|
+
*
|
|
271
|
+
* Registers {@link ArsLocalDateInterceptor} so that every `Date` in a request
|
|
272
|
+
* body travels as a naive local datetime string instead of a UTC instant.
|
|
273
|
+
*
|
|
274
|
+
* IMPORTANT: the application MUST call `withInterceptorsFromDi()`, otherwise
|
|
275
|
+
* these providers have no effect at all (no error is raised).
|
|
276
|
+
*
|
|
277
|
+
* @param timeZone - IANA timezone name (default: `Europe/Rome`).
|
|
278
|
+
*
|
|
279
|
+
* @example
|
|
280
|
+
* providers: [
|
|
281
|
+
* provideArsLocalDates(),
|
|
282
|
+
* provideHttpClient(withInterceptors([evolutionAuthInterceptor(...)]), withInterceptorsFromDi()),
|
|
283
|
+
* ]
|
|
284
|
+
*/
|
|
285
|
+
declare function provideArsLocalDates(timeZone?: string): EnvironmentProviders;
|
|
286
|
+
/**
|
|
287
|
+
* Formats a date as a date-only ISO string (`yyyy-MM-dd`) using its wall-clock
|
|
288
|
+
* calendar day in the given timezone. Use it for query-string parameters and for
|
|
289
|
+
* DTO fields mapped to a .NET `DateOnly`, which the interceptor cannot detect.
|
|
290
|
+
*
|
|
291
|
+
* @param value - The date to serialise.
|
|
292
|
+
* @param timeZone - IANA timezone name (default: `Europe/Rome`).
|
|
293
|
+
* @returns The `yyyy-MM-dd` string, or `undefined` for empty/invalid input.
|
|
294
|
+
*/
|
|
295
|
+
declare function toLocalDateOnlyString(value?: Date | null, timeZone?: string): string | undefined;
|
|
296
|
+
/**
|
|
297
|
+
* Formats a date as a naive local datetime string (`yyyy-MM-ddTHH:mm:ss`), the
|
|
298
|
+
* same representation produced by the interceptor. Useful for query-string
|
|
299
|
+
* parameters, which never pass through the request body.
|
|
300
|
+
*
|
|
301
|
+
* @param value - The date to serialise.
|
|
302
|
+
* @param timeZone - IANA timezone name (default: `Europe/Rome`).
|
|
303
|
+
* @returns The naive datetime string, or `undefined` for empty/invalid input.
|
|
304
|
+
*/
|
|
305
|
+
declare function toLocalDateTimeString(value?: Date | null, timeZone?: string): string | undefined;
|
|
218
306
|
|
|
219
307
|
/**
|
|
220
308
|
* Directive that moves browser focus to the host element after the first render cycle.
|
|
@@ -1784,5 +1872,5 @@ declare class ThemeService implements OnDestroy {
|
|
|
1784
1872
|
static ɵprov: i0.ɵɵInjectableDeclaration<ThemeService>;
|
|
1785
1873
|
}
|
|
1786
1874
|
|
|
1787
|
-
export { AutoFocusDirective, BroadcastChannelManager, BroadcastService, CHANNEL_NAME, CopyClipboardDirective, DateFnsAdapter, DateFormat, DateInterval, DateIntervalChangeDirective, DeleteModel, EmailsValidatorDirective, EnvironmentService, EqualsValidatorDirective, FileInfo, FileSizeValidatorDirective, FormatHtmlPipe, FormatMarkdownPipe, FormatPipe, GroupModel, GuidValidatorDirective, IDModel, ImportModel, MAT_DATE_FNS_FORMATS, MaxTermsValidatorDirective, NotEmptyValidatorDirective, NotEqualValidatorDirective, NotFutureValidatorDirective, PasswordValidatorDirective, QueryModel, RelationModel, RemoveFocusDirective, ReplacePipe, SafeHtmlPipe, SafeUrlPipe, ScreenService, SearchCallbackPipe, SearchFilterPipe, SelectableModel, SplashService, SqlDateValidatorDirective, SystemUtils, ThemeService, TimeValidatorDirective, UpdateRelationsModel, UrlValidatorDirective, UtilsMessages, ValidIfDirective, ValidatorDirective, ValueModel, provideArsDateFns };
|
|
1788
|
-
export type { AddModel, AddResultModel, ApiResponse, ApiResult,
|
|
1875
|
+
export { ARS_TIME_ZONE, ArsLocalDateInterceptor, AutoFocusDirective, BroadcastChannelManager, BroadcastService, CHANNEL_NAME, CopyClipboardDirective, DEFAULT_TIME_ZONE, DateFnsAdapter, DateFormat, DateInterval, DateIntervalChangeDirective, DeleteModel, EmailsValidatorDirective, EnvironmentService, EqualsValidatorDirective, FileInfo, FileSizeValidatorDirective, FormatHtmlPipe, FormatMarkdownPipe, FormatPipe, GroupModel, GuidValidatorDirective, IDModel, ImportModel, MAT_DATE_FNS_FORMATS, MaxTermsValidatorDirective, NotEmptyValidatorDirective, NotEqualValidatorDirective, NotFutureValidatorDirective, PasswordValidatorDirective, QueryModel, RelationModel, RemoveFocusDirective, ReplacePipe, SafeHtmlPipe, SafeUrlPipe, ScreenService, SearchCallbackPipe, SearchFilterPipe, SelectableModel, SplashService, SqlDateValidatorDirective, SystemUtils, ThemeService, TimeValidatorDirective, UpdateRelationsModel, UrlValidatorDirective, UtilsMessages, ValidIfDirective, ValidatorDirective, ValueModel, arsLocalDateInterceptor, provideArsDateFns, provideArsLocalDates, toLocalDateOnlyString, toLocalDateTimeString };
|
|
1876
|
+
export type { AddModel, AddResultModel, ApiResponse, ApiResult, BroadcastChannelMessageBag, BroadcastChannelSubscriberInfo, BroadcastMessageInfo, BroadcastMessageToastData, Checkable, DeleteResultModel, DoneResult, EnableDisableModel, ErrorInfo, File, Folder, FolderTree, INode, KeyOf, LoginResult, NameValueItem, PasswordStrength, QueryResultModel, SearchBag, SearchFilterMetadata, Searchable, SendToModel, ThemeType, UpdateModel, UpdateResultModel, Validated };
|
|
@@ -1005,7 +1005,7 @@ declare class ChipsSelectorComponent implements OnDestroy, ControlValueAccessor
|
|
|
1005
1005
|
/** Minimum width in pixels when collapsed. Use `-1` for automatic. */
|
|
1006
1006
|
readonly collapsedWidth: _angular_core.InputSignal<number>;
|
|
1007
1007
|
/** Display mode used when the selector is in collapsed state. */
|
|
1008
|
-
readonly collapsedDisplayMode: _angular_core.InputSignal<"
|
|
1008
|
+
readonly collapsedDisplayMode: _angular_core.InputSignal<"button" | "dropdown">;
|
|
1009
1009
|
/** Pixel threshold below which the selector collapses. Use `-1` to disable. */
|
|
1010
1010
|
readonly collapseAt: _angular_core.InputSignal<number>;
|
|
1011
1011
|
/** When `true`, `collapseAt` is compared against the container width rather than the window width. */
|
|
@@ -1018,7 +1018,7 @@ declare class ChipsSelectorComponent implements OnDestroy, ControlValueAccessor
|
|
|
1018
1018
|
/** When `true`, at least one item must remain selected. */
|
|
1019
1019
|
readonly mustSelect: _angular_core.InputSignal<boolean>;
|
|
1020
1020
|
/** Layout mode: `'collapsed'` forces dropdown mode, `'dynamic'` collapses based on `collapseAt`. */
|
|
1021
|
-
readonly mode: _angular_core.InputSignal<"
|
|
1021
|
+
readonly mode: _angular_core.InputSignal<"dynamic" | "collapsed">;
|
|
1022
1022
|
/** When `true`, chips are stacked vertically instead of wrapping horizontally. */
|
|
1023
1023
|
readonly stacked: _angular_core.InputSignal<boolean>;
|
|
1024
1024
|
/** Chips below this index receive extra padding to align with other UI elements. */
|
|
@@ -410,7 +410,7 @@ declare class BusyDialogComponent {
|
|
|
410
410
|
/** Current progress value (0–100). Used when `progressMode` is `'determinate'`. */
|
|
411
411
|
readonly progress: _angular_core.WritableSignal<number>;
|
|
412
412
|
/** Progress mode passed to the Material progress components. */
|
|
413
|
-
readonly progressMode: _angular_core.WritableSignal<"
|
|
413
|
+
readonly progressMode: _angular_core.WritableSignal<"indeterminate" | "determinate">;
|
|
414
414
|
/** Message displayed above the progress indicator. */
|
|
415
415
|
readonly message: _angular_core.WritableSignal<string>;
|
|
416
416
|
/**
|
|
@@ -684,13 +684,13 @@ declare class IfBpDirective {
|
|
|
684
684
|
declare const BS5_BREAKPOINTS: Record<string, string>;
|
|
685
685
|
/** InjectionToken — override to customise or extend breakpoints */
|
|
686
686
|
declare const LAYOUT_BREAKPOINTS: InjectionToken<Record<string, string>>;
|
|
687
|
-
/** Ordered canonical aliases, smallest → largest (
|
|
687
|
+
/** Ordered canonical aliases, smallest → largest (the MediaObserver picks the widest match) */
|
|
688
688
|
declare const CANONICAL_ALIASES: readonly ["xs", "sm", "md", "lg", "xl"];
|
|
689
689
|
type BreakpointAlias = typeof CANONICAL_ALIASES[number];
|
|
690
690
|
/**
|
|
691
691
|
* All non-canonical alias families.
|
|
692
692
|
* Used by ResponsiveBaseDirective.resolveNonCanonical() to handle lt-* / gt-*
|
|
693
|
-
* inputs without polluting the
|
|
693
|
+
* inputs without polluting the canonical resolution logic.
|
|
694
694
|
* Device aliases (handset/tablet/web*) are intentionally excluded: they are
|
|
695
695
|
* point-in-time queries for *ifBp / MediaObserver, not directive input suffixes.
|
|
696
696
|
*/
|
|
@@ -805,12 +805,11 @@ type NcValues<T> = Partial<Record<NonCanonicalKey, T>>;
|
|
|
805
805
|
*
|
|
806
806
|
* ── Resolution strategy (unchanged) ──────────────────────────────────────
|
|
807
807
|
*
|
|
808
|
-
* Canonical aliases (xs … xl, CDK tiers)
|
|
808
|
+
* Canonical aliases (xs … xl, CDK tiers) → exact match, then the unsuffixed value
|
|
809
809
|
* Non-canonical (lt-*, gt-*) → point-in-time isActive() checks
|
|
810
810
|
* Final order: resolveNonCanonical() wins over resolve()
|
|
811
811
|
*/
|
|
812
812
|
|
|
813
|
-
declare const ALIAS_INDEX: Map<string, number>;
|
|
814
813
|
/**
|
|
815
814
|
* All non-canonical alias keys in priority order (most specific first).
|
|
816
815
|
* lt-sm is "below sm" (= xs only), lt-md is "below md" (= xs+sm), etc.
|
|
@@ -818,14 +817,21 @@ declare const ALIAS_INDEX: Map<string, number>;
|
|
|
818
817
|
*/
|
|
819
818
|
declare const NON_CANONICAL_PRIORITY: readonly ["lt-sm", "lt-md", "lt-lg", "lt-xl", "gt-xs", "gt-sm", "gt-md", "gt-lg"];
|
|
820
819
|
/**
|
|
821
|
-
* Resolution with
|
|
820
|
+
* Resolution with two-tier priority:
|
|
822
821
|
*
|
|
823
822
|
* 1. Exact breakpoint match (e.g. currentBp='sm' → values['sm'])
|
|
824
|
-
* 2. Generic `default` value (e.g. [fxFlex]="49"
|
|
825
|
-
* 3. Mobile-first cascade down (e.g. [fxFlex.xs]="X" [fxFlex.md]="Y" → lg cascades to md)
|
|
823
|
+
* 2. Generic `default` value (the unsuffixed input, e.g. [fxFlex]="49")
|
|
826
824
|
*
|
|
827
|
-
*
|
|
828
|
-
*
|
|
825
|
+
* There is deliberately NO cascade between canonical tiers. A suffixed value belongs to its own
|
|
826
|
+
* breakpoint and to no other, which is what ngx-layout does and what fxShow/fxHide already did
|
|
827
|
+
* here. The cascade this replaces made `fxFlex.xs="100"` with no base `fxFlex` apply at every
|
|
828
|
+
* width — the exact opposite of what the `.xs` suffix reads like.
|
|
829
|
+
*
|
|
830
|
+
* So `[fxFlex]="49" [fxFlex.xs]="100"` gives xs→100 and sm+→49, while `[fxFlex.xs]="100"` on its
|
|
831
|
+
* own gives xs→100 and sm+→no style at all.
|
|
832
|
+
* @param values - The value declared for each canonical alias, plus the unsuffixed `default`.
|
|
833
|
+
* @param currentBp - The canonical alias currently active.
|
|
834
|
+
* @returns The value to apply, or `undefined` when no rule covers the current breakpoint.
|
|
829
835
|
*/
|
|
830
836
|
declare function resolve<T>(values: BpValues<T>, currentBp: BreakpointAlias): T | undefined;
|
|
831
837
|
/**
|
|
@@ -1286,5 +1292,5 @@ declare class FlexLayoutModule {
|
|
|
1286
1292
|
static ɵinj: _angular_core.ɵɵInjectorDeclaration<FlexLayoutModule>;
|
|
1287
1293
|
}
|
|
1288
1294
|
|
|
1289
|
-
export { ALIAS_FAMILIES,
|
|
1295
|
+
export { ALIAS_FAMILIES, BS5_BREAKPOINTS, BusyDialogComponent, BusyTimer, CANONICAL_ALIASES, ConfirmDialogComponent, CredentialsDialogComponent, DeleteDialogComponent, DeleteDialogConfirmMode, DialogService, FlexLayoutModule, FxClassDirective, FxFlexAlignDirective, FxFlexDirective, FxFlexFillDirective, FxFlexOffsetDirective, FxFlexOrderDirective, FxGridAreaDirective, FxGridColumnDirective, FxGridDirective, FxLayoutAlignDirective, FxLayoutDirective, FxLayoutGapDirective, FxLayoutWrapDirective, FxShowHideDirective, FxStyleDirective, IfBpDirective, InfoDialogComponent, LAYOUT_BREAKPOINTS, LAYOUT_VALUES, MediaObserver, NON_CANONICAL_PRIORITY, OtpInputComponent, PaginatorIntl, PasswordStrengthComponent, RecoverPasswordDialogComponent, ResetPasswordDialogComponent, ResponsiveBaseDirective, ToastComponent, UIService, applyVisibility, buildAlignStyles, buildFlexStyles, buildLayoutCSS, resolve, resolveAll, resolveFlexInput, resolveNonCanonical, resolveParentFlow, validateBasis, validateLayoutValue, validateWrapValue };
|
|
1290
1296
|
export type { BpValues, BreakpointAlias, CanonicalKey, ConfirmDialogData, ConfirmDialogOption, CredentialsDialogData, CredentialsDialogResult, DeleteDialogData, DialogOption, DialogResult, IDialogService, InfoDialogData, NcValues, NonCanonicalKey, RecoverPasswordDialogData, RecoverPasswordDialogResult, ResetPasswordDialogData, ResetPasswordDialogMode, ResetPasswordDialogResult, ToastData };
|