@ktortu/aaa 0.1.0-beta.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -7
- package/cdk/styles/tabs.css +100 -21
- package/fesm2022/ktortu-aaa-button.mjs +18 -11
- package/fesm2022/ktortu-aaa-button.mjs.map +1 -1
- package/fesm2022/ktortu-aaa-card.mjs +29 -4
- package/fesm2022/ktortu-aaa-card.mjs.map +1 -1
- package/fesm2022/ktortu-aaa-cdk.mjs +58 -15
- package/fesm2022/ktortu-aaa-cdk.mjs.map +1 -1
- package/fesm2022/ktortu-aaa-dialog.mjs +69 -12
- package/fesm2022/ktortu-aaa-dialog.mjs.map +1 -1
- package/fesm2022/ktortu-aaa-forms.mjs +455 -260
- package/fesm2022/ktortu-aaa-forms.mjs.map +1 -1
- package/fesm2022/ktortu-aaa-i18n.mjs +114 -0
- package/fesm2022/ktortu-aaa-i18n.mjs.map +1 -0
- package/fesm2022/ktortu-aaa-menu.mjs +38 -13
- package/fesm2022/ktortu-aaa-menu.mjs.map +1 -1
- package/fesm2022/ktortu-aaa-tabs.mjs +319 -42
- package/fesm2022/ktortu-aaa-tabs.mjs.map +1 -1
- package/fesm2022/ktortu-aaa-tooltip.mjs +3 -2
- package/fesm2022/ktortu-aaa-tooltip.mjs.map +1 -1
- package/fesm2022/ktortu-aaa.mjs +1 -0
- package/fesm2022/ktortu-aaa.mjs.map +1 -1
- package/forms/radio/radio-group.css +3 -3
- package/forms/styles/field-box.css +150 -2
- package/forms/styles/tokens.css +3 -0
- package/menu/menu.css +8 -4
- package/package.json +5 -1
- package/types/ktortu-aaa-button.d.ts +22 -8
- package/types/ktortu-aaa-card.d.ts +24 -4
- package/types/ktortu-aaa-cdk.d.ts +38 -0
- package/types/ktortu-aaa-dialog.d.ts +45 -9
- package/types/ktortu-aaa-forms.d.ts +336 -149
- package/types/ktortu-aaa-i18n.d.ts +74 -0
- package/types/ktortu-aaa-menu.d.ts +15 -8
- package/types/ktortu-aaa-tabs.d.ts +130 -13
- package/types/ktortu-aaa-tooltip.d.ts +5 -0
- package/types/ktortu-aaa.d.ts +1 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { EnvironmentProviders } from '@angular/core';
|
|
2
|
+
import { KtFieldConfig, KtSelectConfigOptions, KtChipsConfig } from '@ktortu/aaa/forms';
|
|
3
|
+
import { KtTabsConfig } from '@ktortu/aaa/tabs';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Agrégat de TOUS les libellés traduisibles de la lib, groupés par famille de composants.
|
|
7
|
+
* Chaque clé reprend la config du token correspondant (`Partial` : tout est optionnel — on ne
|
|
8
|
+
* fournit que ce qu'on veut traduire). C'est l'« interface de traduction » unique de la lib :
|
|
9
|
+
* un point d'entrée pour brancher une langue d'un coup.
|
|
10
|
+
*
|
|
11
|
+
* @see provideKtTranslations pour enregistrer un jeu de libellés.
|
|
12
|
+
* @see provideKtDefaultFR pour partir des libellés français.
|
|
13
|
+
*/
|
|
14
|
+
interface KtTranslations {
|
|
15
|
+
/** Libellés des champs (`clearLabel`, `helpLabel`) → {@link KT_FIELD_CONFIG}. */
|
|
16
|
+
field?: Partial<KtFieldConfig>;
|
|
17
|
+
/** Libellés des selects / multi-selects → {@link KT_SELECT_CONFIG}. */
|
|
18
|
+
select?: Partial<KtSelectConfigOptions>;
|
|
19
|
+
/** Libellés des listes de chips → {@link KT_CHIPS_CONFIG}. */
|
|
20
|
+
chips?: Partial<KtChipsConfig>;
|
|
21
|
+
/** Libellés de la pagination des onglets → {@link KT_TABS_CONFIG}. */
|
|
22
|
+
tabs?: Partial<KtTabsConfig>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Enregistre, en un seul appel, les libellés fournis sur les tokens de config de la lib.
|
|
26
|
+
* Base = défauts anglais de chaque composant ; seules les familles **présentes** dans `t` sont
|
|
27
|
+
* fournies (les autres gardent leur défaut anglais et restent surchargeables ailleurs).
|
|
28
|
+
*
|
|
29
|
+
* À placer dans les `providers` de `app.config.ts` (ou de tout injecteur).
|
|
30
|
+
*
|
|
31
|
+
* @param t Libellés à fournir, groupés par famille ; seules les familles présentes sont enregistrées.
|
|
32
|
+
* @returns Les `EnvironmentProviders` liant chaque famille présente à son token de config.
|
|
33
|
+
* @example
|
|
34
|
+
* ```ts
|
|
35
|
+
* provideKtTranslations({ tabs: { nextLabel: 'Suivant', previousLabel: 'Précédent' } })
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
declare function provideKtTranslations(t: KtTranslations): EnvironmentProviders;
|
|
39
|
+
/**
|
|
40
|
+
* Fusion par famille de deux {@link KtTranslations} : `over` écrase `base`, clé par clé.
|
|
41
|
+
* @param base Libellés de référence (ex. un dictionnaire de langue complet).
|
|
42
|
+
* @param over Libellés prioritaires venant écraser `base`.
|
|
43
|
+
* @returns Un nouveau {@link KtTranslations} fusionné, famille par famille.
|
|
44
|
+
* @example mergeKtTranslations(KT_FR_TRANSLATIONS, { tabs: { nextLabel: 'Suivant' } })
|
|
45
|
+
*/
|
|
46
|
+
declare function mergeKtTranslations(base: KtTranslations, over: KtTranslations): KtTranslations;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Dictionnaire **français** complet de tous les libellés de la lib. Figé et réutilisable :
|
|
50
|
+
* importable tel quel (ex. pour le composer avec d'autres réglages) ou via {@link provideKtDefaultFR}.
|
|
51
|
+
* Les libellés à pluriels sont des fonctions, pour laisser la grammaire au consommateur.
|
|
52
|
+
*/
|
|
53
|
+
declare const KT_FR_TRANSLATIONS: KtTranslations;
|
|
54
|
+
/**
|
|
55
|
+
* Enregistre les libellés **français** par défaut sur toute la lib, en un seul appel.
|
|
56
|
+
* `overrides` permet d'ajuster ponctuellement sans tout réécrire (fusion par famille,
|
|
57
|
+
* cf. {@link mergeKtTranslations}). À placer dans les `providers` de `app.config.ts`.
|
|
58
|
+
*
|
|
59
|
+
* @param overrides Libellés à ajuster par-dessus le français (fusion par famille). Défaut : `{}`.
|
|
60
|
+
* @returns Les `EnvironmentProviders` enregistrant le français (fusionné aux `overrides`).
|
|
61
|
+
* @example
|
|
62
|
+
* ```ts
|
|
63
|
+
* // app.config.ts
|
|
64
|
+
* providers: [
|
|
65
|
+
* provideKtDefaultFR(), // tout en français
|
|
66
|
+
* // ou en ajustant un libellé précis :
|
|
67
|
+
* provideKtDefaultFR({ tabs: { nextLabel: 'Suivant' } }),
|
|
68
|
+
* ]
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
declare function provideKtDefaultFR(overrides?: KtTranslations): EnvironmentProviders;
|
|
72
|
+
|
|
73
|
+
export { KT_FR_TRANSLATIONS, mergeKtTranslations, provideKtDefaultFR, provideKtTranslations };
|
|
74
|
+
export type { KtTranslations };
|
|
@@ -48,7 +48,6 @@ declare class KtMenu {
|
|
|
48
48
|
* ```
|
|
49
49
|
*/
|
|
50
50
|
declare class KtMenuItem {
|
|
51
|
-
private readonly host;
|
|
52
51
|
private readonly ariaItem;
|
|
53
52
|
private readonly platformId;
|
|
54
53
|
protected anchorName: string | undefined;
|
|
@@ -88,7 +87,6 @@ declare class KtMenuSeparator {
|
|
|
88
87
|
* ```
|
|
89
88
|
*/
|
|
90
89
|
declare class KtMenuTrigger {
|
|
91
|
-
private readonly host;
|
|
92
90
|
private readonly ariaTrigger;
|
|
93
91
|
private readonly platformId;
|
|
94
92
|
private readonly idGen;
|
|
@@ -111,8 +109,13 @@ declare class KtMenuTrigger {
|
|
|
111
109
|
*/
|
|
112
110
|
declare class KtMenuItemCheckbox {
|
|
113
111
|
private readonly ariaItem;
|
|
114
|
-
|
|
112
|
+
private readonly host;
|
|
113
|
+
/**
|
|
114
|
+
* État coché, bidirectionnel : `[(checked)]`.
|
|
115
|
+
* @default false
|
|
116
|
+
*/
|
|
115
117
|
readonly checked: i0.ModelSignal<boolean>;
|
|
118
|
+
constructor();
|
|
116
119
|
protected activate(event: Event): void;
|
|
117
120
|
static ɵfac: i0.ɵɵFactoryDeclaration<KtMenuItemCheckbox, never>;
|
|
118
121
|
static ɵdir: i0.ɵɵDirectiveDeclaration<KtMenuItemCheckbox, "[ktMenuItemCheckbox]", never, { "checked": { "alias": "checked"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; }, never, never, true, never>;
|
|
@@ -133,7 +136,10 @@ declare const KT_MENU_RADIO_GROUP: InjectionToken<KtMenuRadioGroup<unknown>>;
|
|
|
133
136
|
* ```
|
|
134
137
|
*/
|
|
135
138
|
declare class KtMenuRadioGroup<V> {
|
|
136
|
-
/**
|
|
139
|
+
/**
|
|
140
|
+
* Valeur sélectionnée du groupe, bidirectionnelle : `[(value)]`.
|
|
141
|
+
* @default null
|
|
142
|
+
*/
|
|
137
143
|
readonly value: i0.ModelSignal<V | null>;
|
|
138
144
|
static ɵfac: i0.ɵɵFactoryDeclaration<KtMenuRadioGroup<any>, never>;
|
|
139
145
|
static ɵdir: i0.ɵɵDirectiveDeclaration<KtMenuRadioGroup<any>, "[ktMenuRadioGroup]", ["ktMenuRadioGroup"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
@@ -151,7 +157,8 @@ declare class KtMenuRadioGroup<V> {
|
|
|
151
157
|
declare class KtMenuItemRadio<V> {
|
|
152
158
|
private readonly ariaItem;
|
|
153
159
|
private readonly group;
|
|
154
|
-
|
|
160
|
+
private readonly host;
|
|
161
|
+
/** Valeur portée par ce radio (comparée à celle du groupe). @default (requis) */
|
|
155
162
|
readonly value: i0.InputSignal<V>;
|
|
156
163
|
protected readonly checked: i0.Signal<boolean>;
|
|
157
164
|
constructor();
|
|
@@ -162,10 +169,10 @@ declare class KtMenuItemRadio<V> {
|
|
|
162
169
|
|
|
163
170
|
/**
|
|
164
171
|
* Import ergonomique de toute la famille menu (couche de THÈME ktortu) en une fois :
|
|
165
|
-
* `imports: [
|
|
172
|
+
* `imports: [KtMenuImports]` au lieu d'énumérer chaque directive. À composer avec les directives
|
|
166
173
|
* d'`@angular/aria/menu` (`Menu`, `MenuItem`, `MenuTrigger`, `MenuContent`), qui apportent le
|
|
167
174
|
* comportement accessible.
|
|
168
175
|
*/
|
|
169
|
-
declare const
|
|
176
|
+
declare const KtMenuImports: readonly [typeof KtMenu, typeof KtMenuItem, typeof KtMenuSeparator, typeof KtMenuTrigger, typeof KtMenuItemCheckbox, typeof KtMenuItemRadio, typeof KtMenuRadioGroup];
|
|
170
177
|
|
|
171
|
-
export {
|
|
178
|
+
export { KT_MENU_RADIO_GROUP, KtMenu, KtMenuImports, KtMenuItem, KtMenuItemCheckbox, KtMenuItemRadio, KtMenuRadioGroup, KtMenuSeparator, KtMenuTrigger };
|
|
@@ -1,27 +1,144 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { InjectionToken } from '@angular/core';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* Pilote le **débordement** d'une liste d'onglets `@angular/aria/tabs` (cf. tabs.css). Deux rôles :
|
|
6
|
+
*
|
|
7
|
+
* 1. **Scroll-into-view** : amène l'onglet sélectionné dans la vue au montage et lors d'un changement
|
|
8
|
+
* de sélection programmatique (ce que le CSS seul ne fait pas), en respectant `prefers-reduced-motion`.
|
|
9
|
+
* 2. **Pagination** : expose un état réactif (`canScrollStart()`, `canScrollEnd()`, `overflowing()`,
|
|
10
|
+
* `orientation()`) et une méthode `scrollByPage()`, pour brancher des boutons chevrons (cf. le
|
|
11
|
+
* composant clé-en-main `KtTabScrollerPager`, ou des boutons custom via `exportAs: 'ktTabScroller'`).
|
|
8
12
|
*
|
|
9
13
|
* Opt-in, à poser sur `[ngTabList]` :
|
|
10
14
|
*
|
|
11
15
|
* @example
|
|
12
16
|
* ```html
|
|
13
|
-
* <ul ngTabList
|
|
17
|
+
* <ul ngTabList ktTabScroller #s="ktTabScroller" [(selectedTab)]="tab"> … </ul>
|
|
18
|
+
* <button (click)="s.scrollByPage('start')" [disabled]="!s.canScrollStart()">‹</button>
|
|
14
19
|
* ```
|
|
15
|
-
*
|
|
16
|
-
* Intégrée réactivement avec `@angular/aria/tabs` via son `ModelSignal` `selectedTab`.
|
|
17
20
|
*/
|
|
18
|
-
declare class
|
|
21
|
+
declare class KtTabScroller {
|
|
19
22
|
private readonly list;
|
|
20
23
|
private readonly tabList;
|
|
24
|
+
private readonly doc;
|
|
25
|
+
private readonly destroyRef;
|
|
26
|
+
/** Préférence « réduire les animations », lue à chaud (absente possible en SSR/jsdom). */
|
|
27
|
+
private readonly reducedMotion;
|
|
28
|
+
/**
|
|
29
|
+
* Métriques de débordement. Mises à jour UNIQUEMENT depuis des callbacks navigateur
|
|
30
|
+
* (`afterNextRender`, `scroll`, `ResizeObserver`, `MutationObserver`) — jamais depuis le corps
|
|
31
|
+
* d'un effet réactif, pour rester conforme (pas d'écriture de signal dans un effet).
|
|
32
|
+
*/
|
|
33
|
+
private readonly metrics;
|
|
34
|
+
/** Reste-t-il du contenu hors-champ côté début (à brancher sur le bouton « précédent ») ? */
|
|
35
|
+
readonly canScrollStart: _angular_core.Signal<boolean>;
|
|
36
|
+
/** Reste-t-il du contenu hors-champ côté fin (à brancher sur le bouton « suivant ») ? */
|
|
37
|
+
readonly canScrollEnd: _angular_core.Signal<boolean>;
|
|
38
|
+
/** La liste déborde-t-elle ? (utile pour masquer toute la barre de pagination). */
|
|
39
|
+
readonly overflowing: _angular_core.Signal<boolean>;
|
|
40
|
+
/** Axe courant, dérivé de l'orientation `@angular/aria`. */
|
|
41
|
+
readonly orientation: _angular_core.Signal<"horizontal" | "vertical">;
|
|
42
|
+
constructor();
|
|
43
|
+
/**
|
|
44
|
+
* Fait défiler d'environ une « page » (≈ {@link PAGE_RATIO} de la zone visible) vers le début ou la
|
|
45
|
+
* fin. `behavior` respecte `prefers-reduced-motion`. Le navigateur sature au min/max ; les boutons
|
|
46
|
+
* câblés sont `disabled` aux extrémités, donc l'appel n'a pas lieu à vide.
|
|
47
|
+
*/
|
|
48
|
+
scrollByPage(dir: 'start' | 'end'): void;
|
|
49
|
+
/** Met à jour le signal de métriques. Appelé depuis des callbacks navigateur (jamais un effet). */
|
|
50
|
+
private remeasure;
|
|
51
|
+
/** Mesure le débordement (lecture pure de géométrie, n'écrit rien). */
|
|
52
|
+
private measure;
|
|
53
|
+
private isVertical;
|
|
54
|
+
private isRtl;
|
|
55
|
+
/**
|
|
56
|
+
* `auto` si l'utilisateur a demandé à réduire les animations (WCAG 2.3.3 AAA), `smooth` sinon.
|
|
57
|
+
* Passer un `behavior` explicite à `scrollTo`/`scrollBy` écrase la propriété CSS `scroll-behavior`,
|
|
58
|
+
* d'où la nécessité de répliquer ici la décision que le CSS prend via `prefers-reduced-motion`.
|
|
59
|
+
*/
|
|
60
|
+
private scrollBehavior;
|
|
61
|
+
/**
|
|
62
|
+
* Calcule l'offset à atteindre pour amener l'onglet actif dans la vue, ou `null` s'il est déjà
|
|
63
|
+
* visible (ou s'il n'y a aucun onglet sélectionné). Lit `selectedTab()` → dépendance réactive.
|
|
64
|
+
*/
|
|
65
|
+
private computeScrollTarget;
|
|
66
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KtTabScroller, never>;
|
|
67
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KtTabScroller, "[ngTabList][ktTabScroller]", ["ktTabScroller"], {}, {}, never, never, true, never>;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Composant clé-en-main : enveloppe une liste d'onglets `@angular/aria/tabs` débordante de deux
|
|
72
|
+
* **chevrons de pagination** accessibles (style Material). Il ne contient aucune logique propre :
|
|
73
|
+
* il lit l'état réactif de la directive headless {@link KtTabScroller} (à poser sur le `ngTabList`
|
|
74
|
+
* projeté) et câble deux boutons {@link KtButton}.
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```html
|
|
78
|
+
* <kt-tab-scroller>
|
|
79
|
+
* <ul ngTabList ktTabScroller [(selectedTab)]="tab">
|
|
80
|
+
* @for (t of tabs; track t) { <li ngTab [value]="t">…</li> }
|
|
81
|
+
* </ul>
|
|
82
|
+
* </kt-tab-scroller>
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
declare class KtTabScrollerPager {
|
|
86
|
+
private readonly host;
|
|
87
|
+
private readonly doc;
|
|
88
|
+
/** Défauts d'app (provider global `KT_TABS_CONFIG`) ; les inputs ci-dessous priment dessus. */
|
|
89
|
+
private readonly config;
|
|
90
|
+
/** La directive headless posée sur le `ngTabList` projeté (`descendants` car dans le viewport). */
|
|
91
|
+
protected readonly scroller: _angular_core.Signal<KtTabScroller>;
|
|
92
|
+
/** Sens de lecture (figé au montage : le RTL inverse les chevrons gauche/droite). */
|
|
93
|
+
private readonly dir;
|
|
94
|
+
protected readonly startIcon: _angular_core.Signal<"expand_less" | "chevron_right" | "chevron_left">;
|
|
95
|
+
protected readonly endIcon: _angular_core.Signal<"chevron_right" | "chevron_left" | "expand_more">;
|
|
96
|
+
/**
|
|
97
|
+
* Noms accessibles des chevrons (`aria-label`). Résolution `input ?? KT_TABS_CONFIG ?? défaut`,
|
|
98
|
+
* comme partout dans la lib (cf. `KT_FIELD_CONFIG`/`KT_CHIPS_CONFIG`). Défauts en anglais : lib
|
|
99
|
+
* neutre i18n, les textes sont fournis par le consommateur (provider global ou binding).
|
|
100
|
+
*/
|
|
101
|
+
/**
|
|
102
|
+
* `aria-label` du chevron « onglets précédents ».
|
|
103
|
+
* @default config.previousLabel ?? 'Previous tabs'
|
|
104
|
+
*/
|
|
105
|
+
readonly previousLabel: _angular_core.InputSignal<string>;
|
|
106
|
+
/**
|
|
107
|
+
* `aria-label` du chevron « onglets suivants ».
|
|
108
|
+
* @default config.nextLabel ?? 'Next tabs'
|
|
109
|
+
*/
|
|
110
|
+
readonly nextLabel: _angular_core.InputSignal<string>;
|
|
21
111
|
constructor();
|
|
22
|
-
|
|
23
|
-
static
|
|
24
|
-
|
|
112
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KtTabScrollerPager, never>;
|
|
113
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KtTabScrollerPager, "kt-tab-scroller", never, { "previousLabel": { "alias": "previousLabel"; "required": false; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; }, {}, ["scroller"], ["[ngTabList]"], true, never>;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* @deprecated Utilisez {@link KtTabScroller} (sélecteur `[ktTabScroller]`) : même défilement de
|
|
118
|
+
* l'onglet sélectionné dans la vue, plus la pagination par chevrons. `ktTabScroll` reste un **alias
|
|
119
|
+
* fonctionnel** (il applique `KtTabScroller` comme directive hôte) et sera retiré dans une version
|
|
120
|
+
* majeure ultérieure.
|
|
121
|
+
*
|
|
122
|
+
* Note : depuis cette version, une liste pilotée par `ktTabScroll`/`ktTabScroller` masque sa
|
|
123
|
+
* scrollbar native par défaut (les chevrons / ombres prennent le relais). Réafficher la barre via
|
|
124
|
+
* `--tab-scroller-scrollbar: thin`.
|
|
125
|
+
*/
|
|
126
|
+
declare class KtTabScroll {
|
|
127
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KtTabScroll, never>;
|
|
128
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KtTabScroll, "[ngTabList][ktTabScroll]", ["ktTabScroll"], {}, {}, never, never, true, [{ directive: typeof KtTabScroller; inputs: {}; outputs: {}; }]>;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/** Défauts applicables à tous les `kt-tab-scroller` (surchargeables par instance via les inputs).
|
|
132
|
+
Lib neutre i18n : les textes sont fournis par le consommateur (ici en une fois).
|
|
133
|
+
Fourni en `Partial` : un consommateur n'override que ce qu'il veut.
|
|
134
|
+
Calqué sur `KT_FIELD_CONFIG`/`KT_CHIPS_CONFIG`. */
|
|
135
|
+
interface KtTabsConfig {
|
|
136
|
+
/** `aria-label` du chevron de pagination « onglets précédents ». Défaut : `'Previous tabs'`. */
|
|
137
|
+
previousLabel: string;
|
|
138
|
+
/** `aria-label` du chevron de pagination « onglets suivants ». Défaut : `'Next tabs'`. */
|
|
139
|
+
nextLabel: string;
|
|
25
140
|
}
|
|
141
|
+
declare const KT_TABS_CONFIG: InjectionToken<Partial<KtTabsConfig>>;
|
|
26
142
|
|
|
27
|
-
export { KtTabScroll };
|
|
143
|
+
export { KT_TABS_CONFIG, KtTabScroll, KtTabScroller, KtTabScrollerPager };
|
|
144
|
+
export type { KtTabsConfig };
|
|
@@ -2,9 +2,13 @@ import * as _angular_core from '@angular/core';
|
|
|
2
2
|
import { InjectionToken, OnDestroy, TemplateRef, Provider } from '@angular/core';
|
|
3
3
|
|
|
4
4
|
type KtTooltipPosition = 'top' | 'bottom' | 'left' | 'right';
|
|
5
|
+
/** Défauts d'infobulle (délais, position) injectables via `provideKtTooltip` / `KT_TOOLTIP_CONFIG`. */
|
|
5
6
|
interface KtTooltipConfig {
|
|
7
|
+
/** Délai (ms) avant apparition au survol/focus. */
|
|
6
8
|
showDelay: number;
|
|
9
|
+
/** Délai (ms) avant masquage (laisse le temps d'atteindre l'infobulle, WCAG « hoverable »). */
|
|
7
10
|
hideDelay: number;
|
|
11
|
+
/** Position de l'infobulle autour de la cible. */
|
|
8
12
|
position: KtTooltipPosition;
|
|
9
13
|
}
|
|
10
14
|
declare const KT_TOOLTIP_CONFIG: InjectionToken<Partial<KtTooltipConfig>>;
|
|
@@ -50,6 +54,7 @@ declare class KtTooltip implements OnDestroy {
|
|
|
50
54
|
private readonly idGen;
|
|
51
55
|
private readonly uid;
|
|
52
56
|
private readonly tooltipId;
|
|
57
|
+
/** Id du noeud `role="tooltip"`. Public : sert aux liaisons d'accessibilité (`aria-describedby`) du déclencheur. */
|
|
53
58
|
readonly idForA11y: string;
|
|
54
59
|
private readonly anchorName;
|
|
55
60
|
/** Vrai quand l'infobulle est susceptible de s'afficher (contenu non vide et non désactivée).
|
package/types/ktortu-aaa.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export * from '@ktortu/aaa/card';
|
|
|
3
3
|
export * from '@ktortu/aaa/cdk';
|
|
4
4
|
export * from '@ktortu/aaa/dialog';
|
|
5
5
|
export * from '@ktortu/aaa/forms';
|
|
6
|
+
export * from '@ktortu/aaa/i18n';
|
|
6
7
|
export * from '@ktortu/aaa/menu';
|
|
7
8
|
export * from '@ktortu/aaa/tabs';
|
|
8
9
|
export * from '@ktortu/aaa/tooltip';
|