@ktortu/aaa 0.9.4 → 0.9.6
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/README.md +25 -1
- package/button/button-tokens.css +3 -1
- package/button/button.css +3 -3
- package/card/card-tokens.css +2 -1
- package/cdk/styles/foundation.css +19 -10
- package/dialog/dialog.css +58 -4
- package/fesm2022/ktortu-aaa-dialog.mjs +28 -14
- package/fesm2022/ktortu-aaa-dialog.mjs.map +1 -1
- package/fesm2022/ktortu-aaa-forms.mjs +402 -36
- package/fesm2022/ktortu-aaa-forms.mjs.map +1 -1
- package/fesm2022/ktortu-aaa-layout.mjs +286 -0
- package/fesm2022/ktortu-aaa-layout.mjs.map +1 -0
- package/fesm2022/ktortu-aaa.mjs +1 -0
- package/fesm2022/ktortu-aaa.mjs.map +1 -1
- package/forms/chips/chip-listbox.css +56 -0
- package/forms/chips/chip.css +47 -0
- package/forms/chips/tokens.css +5 -0
- package/forms/field/field.css +3 -1
- package/forms/styles/select-panel.css +3 -3
- package/package.json +5 -1
- package/styles/layout.css +140 -0
- package/styles/styles.css +1 -0
- package/themes/theme-ant.css +21 -16
- package/themes/theme-architecte.css +28 -28
- package/themes/theme-aurora.css +23 -23
- package/themes/theme-bootstrap.css +19 -19
- package/themes/theme-carbon.css +18 -18
- package/themes/theme-catppuccin.css +27 -27
- package/themes/theme-cyberpunk.css +28 -28
- package/themes/theme-fluent.css +32 -19
- package/themes/theme-material-you.css +78 -27
- package/themes/theme-material.css +28 -19
- package/themes/theme-primer.css +24 -18
- package/themes/theme-vegetal.css +21 -21
- package/tooltip/tooltip.css +1 -0
- package/types/ktortu-aaa-dialog.d.ts +23 -1
- package/types/ktortu-aaa-forms.d.ts +118 -6
- package/types/ktortu-aaa-layout.d.ts +117 -0
- package/types/ktortu-aaa.d.ts +1 -0
|
@@ -66,6 +66,10 @@ interface KtFieldConfig {
|
|
|
66
66
|
appearance: KtFieldAppearance;
|
|
67
67
|
/** Politique du label flottant en `outline` (`auto` | `always`). Défaut : `'auto'`. */
|
|
68
68
|
floatLabel: KtFloatLabel;
|
|
69
|
+
/** Masquer visuellement le label (tout en le gardant dans le DOM pour l'accessibilité). Défaut : `false`. */
|
|
70
|
+
hideLabel: boolean;
|
|
71
|
+
/** Masquer visuellement le bloc d'erreur (tout en le gardant dans le DOM pour l'accessibilité). Défaut : `false`. */
|
|
72
|
+
hideErrors: boolean;
|
|
69
73
|
}
|
|
70
74
|
declare const KT_FIELD_CONFIG: InjectionToken<Partial<KtFieldConfig>>;
|
|
71
75
|
/**
|
|
@@ -153,6 +157,10 @@ declare class KtField implements KtFieldParent {
|
|
|
153
157
|
readonly hideHintWhenInvalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
154
158
|
/** Afficher toutes les erreurs au lieu de la première seule. @default KT_FIELD_CONFIG.showAllErrors ?? false */
|
|
155
159
|
readonly showAllErrors: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
160
|
+
/** Masquer visuellement le label. @default KT_FIELD_CONFIG.hideLabel ?? false */
|
|
161
|
+
readonly hideLabel: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
162
|
+
/** Masquer visuellement le bloc d'erreur. @default KT_FIELD_CONFIG.hideErrors ?? false */
|
|
163
|
+
readonly hideErrors: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
156
164
|
/** Apparence du chrome : `fill` (label au-dessus) ou `outline` (bordure + label flottant, façon
|
|
157
165
|
Material). Non fournie ⇒ valeur du `KT_FIELD_CONFIG`, sinon `'fill'`. @default undefined */
|
|
158
166
|
readonly appearance: _angular_core.InputSignal<KtFieldAppearance | undefined>;
|
|
@@ -180,7 +188,7 @@ declare class KtField implements KtFieldParent {
|
|
|
180
188
|
readonly describedBy: _angular_core.Signal<string | null>;
|
|
181
189
|
protected onHelpClick(event: MouseEvent): void;
|
|
182
190
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KtField, never>;
|
|
183
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KtField, "kt-field", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "helpText": { "alias": "helpText"; "required": false; "isSignal": true; }; "helpLabel": { "alias": "helpLabel"; "required": false; "isSignal": true; }; "customDescribedBy": { "alias": "customDescribedBy"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "fieldId": { "alias": "fieldId"; "required": false; "isSignal": true; }; "hideHintWhenInvalid": { "alias": "hideHintWhenInvalid"; "required": false; "isSignal": true; }; "showAllErrors": { "alias": "showAllErrors"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "floatLabel": { "alias": "floatLabel"; "required": false; "isSignal": true; }; }, { "helpClick": "helpClick"; }, ["control"], ["[ktFieldHelp]", "*"], true, never>;
|
|
191
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KtField, "kt-field", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "helpText": { "alias": "helpText"; "required": false; "isSignal": true; }; "helpLabel": { "alias": "helpLabel"; "required": false; "isSignal": true; }; "customDescribedBy": { "alias": "customDescribedBy"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "fieldId": { "alias": "fieldId"; "required": false; "isSignal": true; }; "hideHintWhenInvalid": { "alias": "hideHintWhenInvalid"; "required": false; "isSignal": true; }; "showAllErrors": { "alias": "showAllErrors"; "required": false; "isSignal": true; }; "hideLabel": { "alias": "hideLabel"; "required": false; "isSignal": true; }; "hideErrors": { "alias": "hideErrors"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "floatLabel": { "alias": "floatLabel"; "required": false; "isSignal": true; }; }, { "helpClick": "helpClick"; }, ["control"], ["[ktFieldHelp]", "*"], true, never>;
|
|
184
192
|
}
|
|
185
193
|
|
|
186
194
|
/** Marque le contrôle (natif ou custom) d'un champ pour que `Field` y câble l'a11y
|
|
@@ -328,6 +336,10 @@ declare abstract class KtBaseInputField<T> {
|
|
|
328
336
|
/** Politique du label flottant en outline (`auto` | `always`) ; non fournie ⇒ `KT_FIELD_CONFIG.floatLabel`
|
|
329
337
|
?? `'auto'`. En `always`, le label reste en haut même vide et le placeholder s'affiche. @default undefined */
|
|
330
338
|
readonly floatLabel: _angular_core.InputSignal<KtFloatLabel | undefined>;
|
|
339
|
+
/** Masquer visuellement le label. @default KT_FIELD_CONFIG.hideLabel ?? false */
|
|
340
|
+
readonly hideLabel: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
341
|
+
/** Masquer visuellement le bloc d'erreur. @default KT_FIELD_CONFIG.hideErrors ?? false */
|
|
342
|
+
readonly hideErrors: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
331
343
|
protected readonly inputRef: _angular_core.Signal<ElementRef<HTMLInputElement | HTMLTextAreaElement> | undefined>;
|
|
332
344
|
private readonly matcher;
|
|
333
345
|
protected readonly showInvalid: _angular_core.Signal<boolean>;
|
|
@@ -362,7 +374,7 @@ declare abstract class KtBaseInputField<T> {
|
|
|
362
374
|
/** La valeur est-elle vide (affichage du bouton d'effacement) ? */
|
|
363
375
|
protected abstract isEmpty(value: T): boolean;
|
|
364
376
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KtBaseInputField<any>, never>;
|
|
365
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KtBaseInputField<any>, never, never, { "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "dirty": { "alias": "dirty"; "required": false; "isSignal": true; }; "pending": { "alias": "pending"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "helpText": { "alias": "helpText"; "required": false; "isSignal": true; }; "helpLabel": { "alias": "helpLabel"; "required": false; "isSignal": true; }; "customDescribedBy": { "alias": "customDescribedBy"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "prefix": { "alias": "prefix"; "required": false; "isSignal": true; }; "suffix": { "alias": "suffix"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; "errorMatcher": { "alias": "errorMatcher"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "floatLabel": { "alias": "floatLabel"; "required": false; "isSignal": true; }; }, { "touched": "touchedChange"; "helpClick": "helpClick"; }, never, never, true, never>;
|
|
377
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KtBaseInputField<any>, never, never, { "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "dirty": { "alias": "dirty"; "required": false; "isSignal": true; }; "pending": { "alias": "pending"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "helpText": { "alias": "helpText"; "required": false; "isSignal": true; }; "helpLabel": { "alias": "helpLabel"; "required": false; "isSignal": true; }; "customDescribedBy": { "alias": "customDescribedBy"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "prefix": { "alias": "prefix"; "required": false; "isSignal": true; }; "suffix": { "alias": "suffix"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; "errorMatcher": { "alias": "errorMatcher"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "floatLabel": { "alias": "floatLabel"; "required": false; "isSignal": true; }; "hideLabel": { "alias": "hideLabel"; "required": false; "isSignal": true; }; "hideErrors": { "alias": "hideErrors"; "required": false; "isSignal": true; }; }, { "touched": "touchedChange"; "helpClick": "helpClick"; }, never, never, true, never>;
|
|
366
378
|
}
|
|
367
379
|
|
|
368
380
|
/** Suggestion d'un champ de saisie (rendu `<datalist>`) : soit la valeur seule, soit un couple
|
|
@@ -982,6 +994,10 @@ declare abstract class KtBaseSelect<T, V = T> {
|
|
|
982
994
|
/** Politique du label flottant en outline (`auto` | `always`) ; non fournie ⇒ `KT_FIELD_CONFIG.floatLabel`
|
|
983
995
|
?? `'auto'`. @default undefined */
|
|
984
996
|
readonly floatLabel: _angular_core.InputSignal<KtFloatLabel | undefined>;
|
|
997
|
+
/** Masquer visuellement le label. @default KT_FIELD_CONFIG.hideLabel ?? false */
|
|
998
|
+
readonly hideLabel: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
999
|
+
/** Masquer visuellement le bloc d'erreur. @default KT_FIELD_CONFIG.hideErrors ?? false */
|
|
1000
|
+
readonly hideErrors: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
985
1001
|
/** Affiche un champ de recherche en tête du popup (desktop) / de la sheet (téléphone).
|
|
986
1002
|
Pour les listes longues ; le texte tapé ne sert qu'à filtrer (réinitialisé à la fermeture). @default false */
|
|
987
1003
|
readonly filterable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
@@ -1086,7 +1102,7 @@ declare abstract class KtBaseSelect<T, V = T> {
|
|
|
1086
1102
|
protected onDragStart(event: PointerEvent): void;
|
|
1087
1103
|
private animateAndCloseSelect;
|
|
1088
1104
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KtBaseSelect<any, any>, never>;
|
|
1089
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KtBaseSelect<any, any>, never, never, { "options": { "alias": "options"; "required": true; "isSignal": true; }; "optionLabel": { "alias": "optionLabel"; "required": false; "isSignal": true; }; "optionValue": { "alias": "optionValue"; "required": false; "isSignal": true; }; "optionDisabled": { "alias": "optionDisabled"; "required": false; "isSignal": true; }; "compareWith": { "alias": "compareWith"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "dirty": { "alias": "dirty"; "required": false; "isSignal": true; }; "pending": { "alias": "pending"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "helpText": { "alias": "helpText"; "required": false; "isSignal": true; }; "helpLabel": { "alias": "helpLabel"; "required": false; "isSignal": true; }; "customDescribedBy": { "alias": "customDescribedBy"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "errorMatcher": { "alias": "errorMatcher"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "floatLabel": { "alias": "floatLabel"; "required": false; "isSignal": true; }; "filterable": { "alias": "filterable"; "required": false; "isSignal": true; }; "filterPlaceholder": { "alias": "filterPlaceholder"; "required": false; "isSignal": true; }; "filterLabel": { "alias": "filterLabel"; "required": false; "isSignal": true; }; "filterFn": { "alias": "filterFn"; "required": false; "isSignal": true; }; "maxVisibleOptions": { "alias": "maxVisibleOptions"; "required": false; "isSignal": true; }; "truncatedResultsText": { "alias": "truncatedResultsText"; "required": false; "isSignal": true; }; "truncatedResultsAnnouncement": { "alias": "truncatedResultsAnnouncement"; "required": false; "isSignal": true; }; }, { "helpClick": "helpClick"; "touched": "touchedChange"; }, never, never, true, never>;
|
|
1105
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KtBaseSelect<any, any>, never, never, { "options": { "alias": "options"; "required": true; "isSignal": true; }; "optionLabel": { "alias": "optionLabel"; "required": false; "isSignal": true; }; "optionValue": { "alias": "optionValue"; "required": false; "isSignal": true; }; "optionDisabled": { "alias": "optionDisabled"; "required": false; "isSignal": true; }; "compareWith": { "alias": "compareWith"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "dirty": { "alias": "dirty"; "required": false; "isSignal": true; }; "pending": { "alias": "pending"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "helpText": { "alias": "helpText"; "required": false; "isSignal": true; }; "helpLabel": { "alias": "helpLabel"; "required": false; "isSignal": true; }; "customDescribedBy": { "alias": "customDescribedBy"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "errorMatcher": { "alias": "errorMatcher"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "floatLabel": { "alias": "floatLabel"; "required": false; "isSignal": true; }; "hideLabel": { "alias": "hideLabel"; "required": false; "isSignal": true; }; "hideErrors": { "alias": "hideErrors"; "required": false; "isSignal": true; }; "filterable": { "alias": "filterable"; "required": false; "isSignal": true; }; "filterPlaceholder": { "alias": "filterPlaceholder"; "required": false; "isSignal": true; }; "filterLabel": { "alias": "filterLabel"; "required": false; "isSignal": true; }; "filterFn": { "alias": "filterFn"; "required": false; "isSignal": true; }; "maxVisibleOptions": { "alias": "maxVisibleOptions"; "required": false; "isSignal": true; }; "truncatedResultsText": { "alias": "truncatedResultsText"; "required": false; "isSignal": true; }; "truncatedResultsAnnouncement": { "alias": "truncatedResultsAnnouncement"; "required": false; "isSignal": true; }; }, { "helpClick": "helpClick"; "touched": "touchedChange"; }, never, never, true, never>;
|
|
1090
1106
|
}
|
|
1091
1107
|
|
|
1092
1108
|
/** Contexte typé reçu par le template d'une option (`ktSelectOption`). */
|
|
@@ -1451,7 +1467,92 @@ declare abstract class ChipTransitionScope {
|
|
|
1451
1467
|
}
|
|
1452
1468
|
|
|
1453
1469
|
/**
|
|
1454
|
-
*
|
|
1470
|
+
* Groupe de puces sélectionnables (Chip Listbox) conforme à l'ARIA Listbox / WCAG AAA.
|
|
1471
|
+
* Orchestrateur : s'intègre aux formulaires réactifs ou de modèle via `FormValueControl`.
|
|
1472
|
+
* Permet la sélection simple ou multiple, avec gestion du roving tabindex et des touches fléchées
|
|
1473
|
+
* de façon autonome et robuste.
|
|
1474
|
+
*
|
|
1475
|
+
* @example
|
|
1476
|
+
* ```html
|
|
1477
|
+
* <kt-chip-listbox label="Filtres" [(value)]="selectedTags" multiple>
|
|
1478
|
+
* <kt-chip [value]="'angular'">Angular</kt-chip>
|
|
1479
|
+
* <kt-chip [value]="'react'">React</kt-chip>
|
|
1480
|
+
* </kt-chip-listbox>
|
|
1481
|
+
* ```
|
|
1482
|
+
*/
|
|
1483
|
+
declare class KtChipListbox<V> implements FormValueControl<V | V[] | null> {
|
|
1484
|
+
private readonly config;
|
|
1485
|
+
private readonly doc;
|
|
1486
|
+
/** Valeur sélectionnée (two-way) : tableau de valeurs (si multiple) ou valeur unique (si simple). */
|
|
1487
|
+
readonly value: _angular_core.ModelSignal<V | V[] | null>;
|
|
1488
|
+
/** État « touché » (two-way), piloté par `[formField]`. @default false */
|
|
1489
|
+
readonly touched: _angular_core.ModelSignal<boolean>;
|
|
1490
|
+
/** Désactive le groupe de puces. @default false */
|
|
1491
|
+
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1492
|
+
/** Mode lecture seule (bloque la sélection). @default false */
|
|
1493
|
+
readonly readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1494
|
+
/** Marque le groupe comme invalide. @default false */
|
|
1495
|
+
readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1496
|
+
/** Affiche l'astérisque requis et aria-required sur le groupe. @default false */
|
|
1497
|
+
readonly required: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1498
|
+
/** État « modifié » (dirty). @default false */
|
|
1499
|
+
readonly dirty: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1500
|
+
/** Validation asynchrone en cours. @default false */
|
|
1501
|
+
readonly pending: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1502
|
+
/** Erreurs de validation à afficher. @default [] */
|
|
1503
|
+
readonly errors: _angular_core.InputSignal<readonly WithOptionalFieldTree<ValidationError>[]>;
|
|
1504
|
+
/** Autorise la sélection de plusieurs puces. @default false */
|
|
1505
|
+
readonly multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1506
|
+
/** Identifiant du composant (sélecteurs de test stables). @default auto-généré */
|
|
1507
|
+
readonly id: _angular_core.InputSignal<string | undefined>;
|
|
1508
|
+
/** Libellé (légende) du groupe de puces. @default undefined */
|
|
1509
|
+
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
1510
|
+
/** Texte d'aide affiché sous le groupe. @default undefined */
|
|
1511
|
+
readonly hint: _angular_core.InputSignal<string | undefined>;
|
|
1512
|
+
/** Nom accessible (aria-label) quand label est absent. @default undefined */
|
|
1513
|
+
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
1514
|
+
/** Masquer visuellement le label. @default KT_FIELD_CONFIG.hideLabel ?? false */
|
|
1515
|
+
readonly hideLabel: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1516
|
+
/** Masquer visuellement le bloc d'erreur. @default KT_FIELD_CONFIG.hideErrors ?? false */
|
|
1517
|
+
readonly hideErrors: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1518
|
+
/** Stratégie d'affichage des erreurs. @default undefined */
|
|
1519
|
+
readonly errorMatcher: _angular_core.InputSignal<KtFieldErrorMatcher | undefined>;
|
|
1520
|
+
/** Afficher toutes les erreurs. @default false */
|
|
1521
|
+
readonly showAllErrors: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1522
|
+
/** Fonction de comparaison de valeurs pour déterminer la sélection. */
|
|
1523
|
+
readonly compareWith: _angular_core.InputSignal<((a: V, b: V) => boolean) | undefined>;
|
|
1524
|
+
private readonly el;
|
|
1525
|
+
private readonly errorResolver;
|
|
1526
|
+
private readonly idGen;
|
|
1527
|
+
private readonly uid;
|
|
1528
|
+
protected readonly baseId: _angular_core.Signal<string>;
|
|
1529
|
+
protected readonly labelId: _angular_core.Signal<string>;
|
|
1530
|
+
protected readonly hintId: _angular_core.Signal<string>;
|
|
1531
|
+
protected readonly errorId: _angular_core.Signal<string>;
|
|
1532
|
+
protected readonly activeIndex: _angular_core.WritableSignal<number>;
|
|
1533
|
+
private readonly matcher;
|
|
1534
|
+
protected readonly showInvalid: _angular_core.Signal<boolean>;
|
|
1535
|
+
protected readonly resolvedErrors: _angular_core.Signal<_ktortu_aaa_forms.KtFieldError[]>;
|
|
1536
|
+
protected readonly displayedErrors: _angular_core.Signal<_ktortu_aaa_forms.KtFieldError[]>;
|
|
1537
|
+
protected readonly resolvedAriaLabel: _angular_core.Signal<string | null>;
|
|
1538
|
+
protected readonly describedBy: _angular_core.Signal<string | null>;
|
|
1539
|
+
private readonly comparator;
|
|
1540
|
+
constructor();
|
|
1541
|
+
private query;
|
|
1542
|
+
/** Détermine si une valeur d'option est sélectionnée. */
|
|
1543
|
+
isSelected(optionValue: V): boolean;
|
|
1544
|
+
/** Bascule la sélection d'une valeur d'option. */
|
|
1545
|
+
toggle(optionValue: V): void;
|
|
1546
|
+
protected onKeydown(event: KeyboardEvent): void;
|
|
1547
|
+
protected onFocusin(event: FocusEvent): void;
|
|
1548
|
+
/** Focus la première option active. */
|
|
1549
|
+
focus(options?: FocusOptions): void;
|
|
1550
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KtChipListbox<any>, never>;
|
|
1551
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KtChipListbox<any>, "kt-chip-listbox", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "dirty": { "alias": "dirty"; "required": false; "isSignal": true; }; "pending": { "alias": "pending"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "hideLabel": { "alias": "hideLabel"; "required": false; "isSignal": true; }; "hideErrors": { "alias": "hideErrors"; "required": false; "isSignal": true; }; "errorMatcher": { "alias": "errorMatcher"; "required": false; "isSignal": true; }; "showAllErrors": { "alias": "showAllErrors"; "required": false; "isSignal": true; }; "compareWith": { "alias": "compareWith"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; }, never, ["*"], true, never>;
|
|
1552
|
+
}
|
|
1553
|
+
|
|
1554
|
+
/**
|
|
1555
|
+
* Pilule individuelle (tag). Utilisable seule (tag statique), dans `kt-chip-list` ou dans `kt-chip-listbox`.
|
|
1455
1556
|
* Le label vient de la projection de contenu ; `removable` ajoute un bouton « retirer »
|
|
1456
1557
|
* (24px visibles, cible 44px via ::after — technique des boutons icon-only).
|
|
1457
1558
|
*
|
|
@@ -1463,6 +1564,7 @@ declare abstract class ChipTransitionScope {
|
|
|
1463
1564
|
*/
|
|
1464
1565
|
declare class KtChip {
|
|
1465
1566
|
protected readonly scope: ChipTransitionScope | null;
|
|
1567
|
+
protected readonly listbox: KtChipListbox<unknown> | null;
|
|
1466
1568
|
private readonly idGen;
|
|
1467
1569
|
/** Nom de View Transition propre au chip (détail interne, posé en host binding). */
|
|
1468
1570
|
protected readonly viewTransitionName: string;
|
|
@@ -1472,9 +1574,19 @@ declare class KtChip {
|
|
|
1472
1574
|
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1473
1575
|
/** Libellé accessible du bouton « retirer » (inclure le nom de l'item : « Remove X »). @default 'Remove' */
|
|
1474
1576
|
readonly removeLabel: _angular_core.InputSignal<string>;
|
|
1577
|
+
/** État sélectionné unitaire (quand utilisé hors boîte de liste). @default false */
|
|
1578
|
+
readonly checked: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1579
|
+
/** Valeur portée par la puce (utilisée au sein d'un groupe de sélection). */
|
|
1580
|
+
readonly value: _angular_core.InputSignal<unknown>;
|
|
1475
1581
|
/** Émis au clic sur le bouton « retirer » (le parent décide de retirer le chip). */
|
|
1476
1582
|
readonly remove: _angular_core.OutputEmitterRef<void>;
|
|
1583
|
+
private readonly initialRole;
|
|
1584
|
+
/** Rôle d'accessibilité calculé (préserve les rôles statiques comme listitem). */
|
|
1585
|
+
protected readonly role: _angular_core.Signal<string | null>;
|
|
1586
|
+
/** Signal consolidé de l'état de sélection (dérivé du parent listbox ou de l'input checked). */
|
|
1587
|
+
readonly selected: _angular_core.Signal<boolean>;
|
|
1477
1588
|
private readonly removeBtn;
|
|
1589
|
+
constructor();
|
|
1478
1590
|
/**
|
|
1479
1591
|
* Focus programmatique du bouton « retirer ». Helper de coordination interne (focus management
|
|
1480
1592
|
* d'`kt-chip-list`), non destiné aux consommateurs.
|
|
@@ -1482,7 +1594,7 @@ declare class KtChip {
|
|
|
1482
1594
|
*/
|
|
1483
1595
|
focusRemove(): void;
|
|
1484
1596
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KtChip, never>;
|
|
1485
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KtChip, "kt-chip", never, { "removable": { "alias": "removable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "removeLabel": { "alias": "removeLabel"; "required": false; "isSignal": true; }; }, { "remove": "remove"; }, never, ["*"], true, never>;
|
|
1597
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KtChip, "kt-chip", never, { "removable": { "alias": "removable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "removeLabel": { "alias": "removeLabel"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "remove": "remove"; }, never, ["*"], true, never>;
|
|
1486
1598
|
}
|
|
1487
1599
|
|
|
1488
1600
|
/** Contexte typé reçu par le template d'un chip custom (`ktChipItem`). */
|
|
@@ -1966,5 +2078,5 @@ declare class KtFixedClock extends KtClock {
|
|
|
1966
2078
|
today(): Temporal$1.PlainDate;
|
|
1967
2079
|
}
|
|
1968
2080
|
|
|
1969
|
-
export { DEFAULT_KT_SELECT_CONFIG, KT_CHIPS_CONFIG, KT_DEFAULT_FIELD_ERROR_MESSAGES, KT_FIELD, KT_FIELD_CONFIG, KT_SELECT_CONFIG, KtBaseInputField, KtBaseSelect, KtBaseTemporalField, KtBaseTimeTemporalField, KtCheckbox, KtCheckboxGroup, KtChip, KtChipItemDef, KtChipList, KtClock, KtDateField, KtDateTimeField, KtField, KtFieldControl, KtFieldErrorResolver, KtFixedClock, KtInstantField, KtMultiSelect, KtMultiSelectChipDef, KtMultiSelectOptionDef, KtMultiSelectTriggerDef, KtNumberField, KtPasswordField, KtRadio, KtRadioGroup, KtSelect, KtSelectConfig, KtSelectOptionDef, KtSelectTriggerDef, KtSwitch, KtTemporalDatePipe, KtTextArea, KtTextField, KtTimeField, KtYearMonthField, Temporal, defaultKtFieldErrorMatcher, ktErrorParam, normalizeKtSuggestions, provideKtField };
|
|
2081
|
+
export { DEFAULT_KT_SELECT_CONFIG, KT_CHIPS_CONFIG, KT_DEFAULT_FIELD_ERROR_MESSAGES, KT_FIELD, KT_FIELD_CONFIG, KT_SELECT_CONFIG, KtBaseInputField, KtBaseSelect, KtBaseTemporalField, KtBaseTimeTemporalField, KtCheckbox, KtCheckboxGroup, KtChip, KtChipItemDef, KtChipList, KtChipListbox, KtClock, KtDateField, KtDateTimeField, KtField, KtFieldControl, KtFieldErrorResolver, KtFixedClock, KtInstantField, KtMultiSelect, KtMultiSelectChipDef, KtMultiSelectOptionDef, KtMultiSelectTriggerDef, KtNumberField, KtPasswordField, KtRadio, KtRadioGroup, KtSelect, KtSelectConfig, KtSelectOptionDef, KtSelectTriggerDef, KtSwitch, KtTemporalDatePipe, KtTextArea, KtTextField, KtTimeField, KtYearMonthField, Temporal, defaultKtFieldErrorMatcher, ktErrorParam, normalizeKtSuggestions, provideKtField };
|
|
1970
2082
|
export type { CalendarDate, KtChipItemContext, KtChipsConfig, KtDatalistOption, KtErrorMessageFactory, KtFieldAppearance, KtFieldConfig, KtFieldError, KtFieldErrorMatcher, KtFieldErrorMessages, KtFieldErrorState, KtFieldParent, KtFloatLabel, KtKeyish, KtMultiSelectChipContext, KtMultiSelectOptionContext, KtMultiSelectSelectionChange, KtMultiSelectTriggerContext, KtPasswordAutocomplete, KtResolvableError, KtSelectConfigOptions, KtSelectOptionContext, KtSelectSelectionChange, KtSelectTriggerContext, KtSuggestion, KtTextFieldType, KtTimePrecision, LocalDateTime, Timestamp, WallTime, ZonedTimestamp };
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { InjectionToken } from '@angular/core';
|
|
3
|
+
import * as i1 from '@angular/cdk/a11y';
|
|
4
|
+
|
|
5
|
+
/** Mode d'état de la navigation latérale. */
|
|
6
|
+
type KtSidenavState = 'expanded' | 'rail' | 'hidden';
|
|
7
|
+
declare const KT_LAYOUT_DEFAULT_STATE: InjectionToken<KtSidenavState>;
|
|
8
|
+
/**
|
|
9
|
+
* Service global de gestion de la mise en page (Layout).
|
|
10
|
+
* Gère l'état d'ouverture/fermeture de la barre latérale sur mobile et bureau,
|
|
11
|
+
* ainsi que le comportement spécifique de "rail" sur bureau.
|
|
12
|
+
*
|
|
13
|
+
* NOTE: Ce service n'est pas "providedIn: 'root'". Le développeur doit le fournir
|
|
14
|
+
* (via le tableau providers d'un composant parent ou de l'application) pour
|
|
15
|
+
* maîtriser le scope (ex: avoir plusieurs layouts indépendants).
|
|
16
|
+
*/
|
|
17
|
+
declare class KtLayoutService {
|
|
18
|
+
private readonly viewport;
|
|
19
|
+
private readonly defaultState;
|
|
20
|
+
/**
|
|
21
|
+
* Comportement actif lors de la fermeture sur ordinateur (écran non mobile).
|
|
22
|
+
* Renseigné généralement par le composant racine `KtLayoutComponent`.
|
|
23
|
+
*/
|
|
24
|
+
readonly desktopCloseBehavior: _angular_core.WritableSignal<"rail" | "hidden">;
|
|
25
|
+
private readonly _isDesktopOpen;
|
|
26
|
+
private readonly _isMobileOpen;
|
|
27
|
+
readonly isMobile: _angular_core.Signal<boolean>;
|
|
28
|
+
readonly isRail: _angular_core.Signal<boolean>;
|
|
29
|
+
readonly isExpanded: _angular_core.Signal<boolean>;
|
|
30
|
+
readonly isHidden: _angular_core.Signal<boolean>;
|
|
31
|
+
readonly isMobileOpen: _angular_core.Signal<boolean>;
|
|
32
|
+
toggle(): void;
|
|
33
|
+
open(): void;
|
|
34
|
+
close(): void;
|
|
35
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KtLayoutService, never>;
|
|
36
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<KtLayoutService>;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Composant racine de l'application qui gère la structure de base (Sidebar, Toolbar, Contenu).
|
|
41
|
+
* Configure dynamiquement le comportement du layout.
|
|
42
|
+
*/
|
|
43
|
+
declare class KtLayoutComponent {
|
|
44
|
+
/**
|
|
45
|
+
* Définit le comportement de la navigation latérale lors de sa fermeture sur bureau (écran large).
|
|
46
|
+
* - `'hidden'` (défaut) : le menu est complètement masqué et retiré du flux visuel/a11y.
|
|
47
|
+
* - `'rail'` : le menu est réduit à une fine barre verticale (mini-sidebar), permettant
|
|
48
|
+
* d'afficher uniquement les icônes. Idéal si les liens possèdent des icônes explicites.
|
|
49
|
+
*/
|
|
50
|
+
readonly desktopCloseBehavior: _angular_core.InputSignal<"rail" | "hidden">;
|
|
51
|
+
protected readonly layout: KtLayoutService;
|
|
52
|
+
constructor();
|
|
53
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KtLayoutComponent, never>;
|
|
54
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KtLayoutComponent, "kt-layout", never, { "desktopCloseBehavior": { "alias": "desktopCloseBehavior"; "required": false; "isSignal": true; }; }, {}, never, ["kt-sidenav", "kt-toolbar", "*"], true, never>;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Composant représentant le panneau latéral de navigation.
|
|
59
|
+
* Se comporte comme un tiroir (drawer) superposé sur mobile, et comme un
|
|
60
|
+
* menu latéral persistant (réductible ou masquable) sur ordinateur.
|
|
61
|
+
*/
|
|
62
|
+
declare class KtSidenavComponent {
|
|
63
|
+
protected readonly layout: KtLayoutService;
|
|
64
|
+
protected readonly isHidden: _angular_core.Signal<boolean>;
|
|
65
|
+
private readonly trapFocus;
|
|
66
|
+
constructor();
|
|
67
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KtSidenavComponent, never>;
|
|
68
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KtSidenavComponent, "kt-sidenav", never, {}, {}, never, ["*"], true, [{ directive: typeof i1.CdkTrapFocus; inputs: {}; outputs: {}; }]>;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Barre d'outils supérieure (Toolbar / Top app bar).
|
|
73
|
+
* Se place généralement dans un `kt-layout`.
|
|
74
|
+
*/
|
|
75
|
+
declare class KtToolbarComponent {
|
|
76
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KtToolbarComponent, never>;
|
|
77
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KtToolbarComponent, "kt-toolbar", never, {}, {}, never, ["*"], true, never>;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
declare class KtNavItemComponent {
|
|
81
|
+
label: _angular_core.InputSignal<string>;
|
|
82
|
+
protected readonly layout: KtLayoutService;
|
|
83
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KtNavItemComponent, never>;
|
|
84
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KtNavItemComponent, "kt-nav-item", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; }, {}, never, ["[kt-icon]", "*"], true, never>;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Directive applicable sur n'importe quel élément (souvent un bouton) pour basculer
|
|
89
|
+
* l'état d'ouverture du panneau latéral (Sidenav).
|
|
90
|
+
*
|
|
91
|
+
* Expose l'état du layout pour des utilisations dynamiques dans le template
|
|
92
|
+
* (ex: changer l'icône selon l'état).
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```html
|
|
96
|
+
* <button ktSidenavToggle #btn="ktSidenavToggle" [icon]="btn.isRail() ? 'right' : 'left'">
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
declare class KtSidenavToggleDirective {
|
|
100
|
+
private readonly layout;
|
|
101
|
+
/** Indique si le menu est actuellement réduit en mode rail. */
|
|
102
|
+
readonly isRail: _angular_core.Signal<boolean>;
|
|
103
|
+
/** Indique si le menu est actuellement complètement étendu sur bureau. */
|
|
104
|
+
readonly isExpanded: _angular_core.Signal<boolean>;
|
|
105
|
+
/** Indique si le menu est totalement masqué. */
|
|
106
|
+
readonly isHidden: _angular_core.Signal<boolean>;
|
|
107
|
+
/** Indique si le tiroir est actuellement ouvert par-dessus le contenu (mobile). */
|
|
108
|
+
readonly isMobileOpen: _angular_core.Signal<boolean>;
|
|
109
|
+
/** Indique si l'écran actuel est de taille compacte (mobile). */
|
|
110
|
+
readonly isMobile: _angular_core.Signal<boolean>;
|
|
111
|
+
onClick(): void;
|
|
112
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KtSidenavToggleDirective, never>;
|
|
113
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KtSidenavToggleDirective, "[ktSidenavToggle]", ["ktSidenavToggle"], {}, {}, never, never, true, never>;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export { KT_LAYOUT_DEFAULT_STATE, KtLayoutComponent, KtLayoutService, KtNavItemComponent, KtSidenavComponent, KtSidenavToggleDirective, KtToolbarComponent };
|
|
117
|
+
export type { KtSidenavState };
|
package/types/ktortu-aaa.d.ts
CHANGED