@besaitech/ng-design-system 0.0.46 → 0.0.48
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.
|
@@ -10260,26 +10260,42 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
10260
10260
|
}], propDecorators: { trigger: [{ type: i0.ViewChild, args: ['trigger', { isSignal: true }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], email: [{ type: i0.Input, args: [{ isSignal: true, alias: "email", required: false }] }], initials: [{ type: i0.Input, args: [{ isSignal: true, alias: "initials", required: false }] }], src: [{ type: i0.Input, args: [{ isSignal: true, alias: "src", required: false }] }], status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], showDetails: [{ type: i0.Input, args: [{ isSignal: true, alias: "showDetails", required: false }] }], avatarSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "avatarSize", required: false }] }], avatarBgClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "avatarBgClass", required: false }] }], menuLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "menuLabel", required: false }] }], openChange: [{ type: i0.Output, args: ["openChange"] }] } });
|
|
10261
10261
|
|
|
10262
10262
|
/**
|
|
10263
|
-
* A single row inside a menu surface (the {@link SdsUserMenu} dropdown, or any custom popover). Renders
|
|
10264
|
-
*
|
|
10265
|
-
*
|
|
10266
|
-
*
|
|
10263
|
+
* A single row inside a menu surface (the {@link SdsUserMenu} dropdown, or any custom popover). Renders,
|
|
10264
|
+
* in order of precedence: a plain anchor when [href] is set (an EXTERNAL or cross-origin URL), a
|
|
10265
|
+
* Router anchor when [link] is set (an in-app route), or a button otherwise. It always emits
|
|
10266
|
+
* {@link select} on activation. The parent menu closes itself when an item is activated, so an item
|
|
10267
|
+
* never has to reach back into the menu.
|
|
10267
10268
|
*
|
|
10268
10269
|
* `tone="danger"` paints a destructive action (sign out, delete). Trailing content (a shortcut hint, a
|
|
10269
10270
|
* count) projects into the default slot after the label.
|
|
10270
10271
|
*
|
|
10271
10272
|
* @example
|
|
10272
|
-
* <sds-menu-item icon="user" label="Profil" link="/profile" />
|
|
10273
|
+
* <sds-menu-item icon="user" label="Profil" link="/profile" /> <!-- in-app route -->
|
|
10274
|
+
* <sds-menu-item icon="external-link" label="Site public" href="https://…" target="_blank" />
|
|
10273
10275
|
* <sds-menu-item icon="log-out" label="Se déconnecter" tone="danger" (select)="signOut()" />
|
|
10274
10276
|
*/
|
|
10275
10277
|
class SdsMenuItem {
|
|
10276
10278
|
icon = input(null, ...(ngDevMode ? [{ debugName: "icon" }] : []));
|
|
10277
10279
|
label = input.required(...(ngDevMode ? [{ debugName: "label" }] : []));
|
|
10278
|
-
/** Router link target; when null (default) the item
|
|
10280
|
+
/** Router link target for an in-app route; when null (default) the item is not a Router link. */
|
|
10279
10281
|
link = input(null, ...(ngDevMode ? [{ debugName: "link" }] : []));
|
|
10282
|
+
/**
|
|
10283
|
+
* External / cross-origin URL. When set, the item renders a plain `<a [href]>` (NOT a Router link),
|
|
10284
|
+
* so it works for another app's origin. Takes precedence over {@link link}.
|
|
10285
|
+
*/
|
|
10286
|
+
href = input(null, ...(ngDevMode ? [{ debugName: "href" }] : []));
|
|
10287
|
+
/** Anchor target for {@link href}, e.g. `_blank` to open the destination in a new tab. */
|
|
10288
|
+
target = input(null, ...(ngDevMode ? [{ debugName: "target" }] : []));
|
|
10289
|
+
/**
|
|
10290
|
+
* `rel` for {@link href}. Defaults to `noopener noreferrer` when {@link target} is `_blank` (the safe
|
|
10291
|
+
* default for a new-tab external link); pass a value to override, or `''` to clear it.
|
|
10292
|
+
*/
|
|
10293
|
+
rel = input(null, ...(ngDevMode ? [{ debugName: "rel" }] : []));
|
|
10280
10294
|
tone = input('default', ...(ngDevMode ? [{ debugName: "tone" }] : []));
|
|
10281
10295
|
disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
|
|
10282
10296
|
select = output();
|
|
10297
|
+
/** `noopener noreferrer` is forced for a `_blank` external link unless the consumer set `rel` explicitly. */
|
|
10298
|
+
resolvedRel = computed(() => this.rel() !== null ? this.rel() : this.target() === '_blank' ? 'noopener noreferrer' : null, ...(ngDevMode ? [{ debugName: "resolvedRel" }] : []));
|
|
10283
10299
|
rowClass = computed(() => {
|
|
10284
10300
|
const base = 'flex w-full items-center gap-3 px-4 py-2.5 text-sm font-medium transition-colors ' +
|
|
10285
10301
|
'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset ' +
|
|
@@ -10290,8 +10306,18 @@ class SdsMenuItem {
|
|
|
10290
10306
|
return `${base} ${tone}`;
|
|
10291
10307
|
}, ...(ngDevMode ? [{ debugName: "rowClass" }] : []));
|
|
10292
10308
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SdsMenuItem, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10293
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: SdsMenuItem, isStandalone: true, selector: "sds-menu-item", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: false, transformFunction: null }, tone: { classPropertyName: "tone", publicName: "tone", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { select: "select" }, host: { classAttribute: "block" }, ngImport: i0, template: `
|
|
10294
|
-
@if (
|
|
10309
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: SdsMenuItem, isStandalone: true, selector: "sds-menu-item", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: false, transformFunction: null }, href: { classPropertyName: "href", publicName: "href", isSignal: true, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null }, rel: { classPropertyName: "rel", publicName: "rel", isSignal: true, isRequired: false, transformFunction: null }, tone: { classPropertyName: "tone", publicName: "tone", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { select: "select" }, host: { classAttribute: "block" }, ngImport: i0, template: `
|
|
10310
|
+
@if (href() !== null) {
|
|
10311
|
+
<a
|
|
10312
|
+
[href]="href()"
|
|
10313
|
+
[attr.target]="target()"
|
|
10314
|
+
[attr.rel]="resolvedRel()"
|
|
10315
|
+
[class]="rowClass()"
|
|
10316
|
+
(click)="select.emit()"
|
|
10317
|
+
>
|
|
10318
|
+
<ng-container [ngTemplateOutlet]="content" />
|
|
10319
|
+
</a>
|
|
10320
|
+
} @else if (link() !== null) {
|
|
10295
10321
|
<a [routerLink]="link()" [class]="rowClass()" (click)="select.emit()">
|
|
10296
10322
|
<ng-container [ngTemplateOutlet]="content" />
|
|
10297
10323
|
</a>
|
|
@@ -10318,7 +10344,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
10318
10344
|
imports: [NgTemplateOutlet, RouterLink, SdsIcon],
|
|
10319
10345
|
host: { class: 'block' },
|
|
10320
10346
|
template: `
|
|
10321
|
-
@if (
|
|
10347
|
+
@if (href() !== null) {
|
|
10348
|
+
<a
|
|
10349
|
+
[href]="href()"
|
|
10350
|
+
[attr.target]="target()"
|
|
10351
|
+
[attr.rel]="resolvedRel()"
|
|
10352
|
+
[class]="rowClass()"
|
|
10353
|
+
(click)="select.emit()"
|
|
10354
|
+
>
|
|
10355
|
+
<ng-container [ngTemplateOutlet]="content" />
|
|
10356
|
+
</a>
|
|
10357
|
+
} @else if (link() !== null) {
|
|
10322
10358
|
<a [routerLink]="link()" [class]="rowClass()" (click)="select.emit()">
|
|
10323
10359
|
<ng-container [ngTemplateOutlet]="content" />
|
|
10324
10360
|
</a>
|
|
@@ -10337,7 +10373,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
10337
10373
|
</ng-template>
|
|
10338
10374
|
`,
|
|
10339
10375
|
}]
|
|
10340
|
-
}], propDecorators: { icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], link: [{ type: i0.Input, args: [{ isSignal: true, alias: "link", required: false }] }], tone: [{ type: i0.Input, args: [{ isSignal: true, alias: "tone", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], select: [{ type: i0.Output, args: ["select"] }] } });
|
|
10376
|
+
}], propDecorators: { icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], link: [{ type: i0.Input, args: [{ isSignal: true, alias: "link", required: false }] }], href: [{ type: i0.Input, args: [{ isSignal: true, alias: "href", required: false }] }], target: [{ type: i0.Input, args: [{ isSignal: true, alias: "target", required: false }] }], rel: [{ type: i0.Input, args: [{ isSignal: true, alias: "rel", required: false }] }], tone: [{ type: i0.Input, args: [{ isSignal: true, alias: "tone", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], select: [{ type: i0.Output, args: ["select"] }] } });
|
|
10341
10377
|
|
|
10342
10378
|
const norm = (s) => s.normalize('NFD').replace(/[̀-ͯ]/g, '').toLowerCase();
|
|
10343
10379
|
/**
|