@sentropic/design-system-vue 0.12.0 → 0.13.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/dist/Popper.js CHANGED
@@ -83,11 +83,21 @@ export function computePosition(anchorRect, panelWidth, panelHeight, options) {
83
83
  }
84
84
  return { placement: joinPlacement(side, align), top, left };
85
85
  }
86
+ /** Returns all keyboard-focusable children of `container`. */
87
+ function getFocusable(container) {
88
+ if (typeof window === "undefined")
89
+ return [];
90
+ return Array.from(container.querySelectorAll('a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),' +
91
+ 'textarea:not([disabled]),[tabindex]:not([tabindex="-1"]),[contenteditable="true"]')).filter((el) => !el.closest("[disabled]"));
92
+ }
86
93
  /**
87
94
  * Float a panel next to an anchor element. Positioning is recomputed on open,
88
95
  * scroll, and resize via `computePosition` (pure geometry shared across
89
96
  * frameworks). Renders nothing unless `open` and an `anchor` are provided.
90
97
  * SSR-safe: all DOM access happens inside `onMounted` / watchers.
98
+ *
99
+ * A11y: optional `trapFocus` traps keyboard focus inside the panel (Tab/Shift+Tab
100
+ * cycle, Escape calls `onClose`, focus restored to the pre-open element on close).
91
101
  */
92
102
  export const Popper = defineComponent({
93
103
  name: "Popper",
@@ -105,6 +115,16 @@ export const Popper = defineComponent({
105
115
  strategy: { type: String, default: "absolute" },
106
116
  portal: { type: Boolean, default: true },
107
117
  class: { type: String, default: undefined },
118
+ onPlacementChange: {
119
+ type: Function,
120
+ default: undefined,
121
+ },
122
+ trapFocus: { type: Boolean, default: false },
123
+ closeOnEscape: { type: Boolean, default: true },
124
+ onClose: {
125
+ type: Function,
126
+ default: undefined,
127
+ },
108
128
  },
109
129
  emits: {
110
130
  placementChange: (_placement) => true,
@@ -116,6 +136,9 @@ export const Popper = defineComponent({
116
136
  // Placement actually applied (may differ from the requested `placement`
117
137
  // after a flip). Defaults to the requested placement.
118
138
  const resolvedPlacement = ref(props.placement);
139
+ // SSR-safe: capture the element that had focus before the panel opened.
140
+ // Plain variable (not ref) so writes inside watch don't trigger re-runs.
141
+ let preFocusEl = null;
119
142
  function reposition() {
120
143
  if (typeof window === "undefined")
121
144
  return;
@@ -151,6 +174,7 @@ export const Popper = defineComponent({
151
174
  if (result.placement !== resolvedPlacement.value) {
152
175
  resolvedPlacement.value = result.placement;
153
176
  emit("placementChange", result.placement);
177
+ props.onPlacementChange?.(result.placement);
154
178
  }
155
179
  }
156
180
  const onScroll = () => reposition();
@@ -161,8 +185,6 @@ export const Popper = defineComponent({
161
185
  return;
162
186
  if (!props.open || !props.anchor)
163
187
  return;
164
- // Reset to the requested placement before recomputing so a re-open
165
- // re-evaluates flips from scratch.
166
188
  resolvedPlacement.value = props.placement;
167
189
  reposition();
168
190
  if (!listening) {
@@ -180,13 +202,120 @@ export const Popper = defineComponent({
180
202
  listening = false;
181
203
  }
182
204
  }
205
+ // ─── a11y: focus management ──────────────────────────────────────────────
206
+ // Escape sur document (closeOnEscape).
207
+ let escapeCleanup = null;
208
+ // focusin recapture (trapFocus).
209
+ let focusinCleanup = null;
210
+ function stopA11y() {
211
+ escapeCleanup?.();
212
+ escapeCleanup = null;
213
+ focusinCleanup?.();
214
+ focusinCleanup = null;
215
+ }
216
+ function startA11y() {
217
+ if (typeof window === "undefined")
218
+ return;
219
+ if (!props.open)
220
+ return;
221
+ // Snapshot pre-focus element (trapFocus only).
222
+ if (props.trapFocus) {
223
+ preFocusEl = document.activeElement;
224
+ // Move focus into the panel after render.
225
+ setTimeout(() => {
226
+ if (!panel.value)
227
+ return;
228
+ const focusable = getFocusable(panel.value);
229
+ if (focusable.length > 0)
230
+ focusable[0].focus();
231
+ else
232
+ panel.value.focus();
233
+ }, 0);
234
+ }
235
+ // Escape on document.
236
+ if (props.closeOnEscape) {
237
+ const handler = (e) => {
238
+ if (e.key === "Escape") {
239
+ e.preventDefault();
240
+ props.onClose?.();
241
+ }
242
+ };
243
+ document.addEventListener("keydown", handler);
244
+ escapeCleanup = () => document.removeEventListener("keydown", handler);
245
+ }
246
+ // focusin recapture (trapFocus only).
247
+ if (props.trapFocus) {
248
+ const handleFocusIn = (e) => {
249
+ if (!panel.value)
250
+ return;
251
+ const target = e.target;
252
+ if (target && !panel.value.contains(target)) {
253
+ const focusable = getFocusable(panel.value);
254
+ if (focusable.length > 0)
255
+ focusable[0].focus();
256
+ else
257
+ panel.value.focus();
258
+ }
259
+ };
260
+ document.addEventListener("focusin", handleFocusIn);
261
+ focusinCleanup = () => document.removeEventListener("focusin", handleFocusIn);
262
+ }
263
+ }
264
+ function stopFocusTrap() {
265
+ stopA11y();
266
+ // Restore focus only if trapFocus was active and element is still in DOM.
267
+ if (props.trapFocus &&
268
+ preFocusEl &&
269
+ typeof preFocusEl.focus === "function" &&
270
+ document.contains(preFocusEl)) {
271
+ preFocusEl.focus();
272
+ }
273
+ preFocusEl = null;
274
+ }
183
275
  onMounted(start);
184
- watch(() => [props.open, props.anchor], () => {
276
+ watch(() => [props.open, props.anchor], ([open]) => {
185
277
  stop();
186
- start();
278
+ stopA11y();
279
+ if (open) {
280
+ start();
281
+ startA11y();
282
+ }
283
+ else {
284
+ stopFocusTrap();
285
+ }
187
286
  });
188
287
  watch(() => [props.placement, props.offset, props.flip, props.shift, props.strategy], () => reposition());
189
- onBeforeUnmount(stop);
288
+ onBeforeUnmount(() => {
289
+ stop();
290
+ stopA11y();
291
+ preFocusEl = null;
292
+ });
293
+ /** Keyboard handler attached to the panel for Tab-trap cycling. */
294
+ function handlePanelKeydown(e) {
295
+ if (!props.trapFocus || !panel.value)
296
+ return;
297
+ if (e.key !== "Tab")
298
+ return;
299
+ const focusable = getFocusable(panel.value);
300
+ if (focusable.length === 0) {
301
+ e.preventDefault();
302
+ return;
303
+ }
304
+ const first = focusable[0];
305
+ const last = focusable[focusable.length - 1];
306
+ if (e.shiftKey) {
307
+ if (document.activeElement === first) {
308
+ e.preventDefault();
309
+ last.focus();
310
+ }
311
+ }
312
+ else {
313
+ if (document.activeElement === last) {
314
+ e.preventDefault();
315
+ first.focus();
316
+ }
317
+ }
318
+ }
190
319
  return () => {
191
320
  if (!props.open || !props.anchor)
192
321
  return null;
@@ -196,6 +325,8 @@ export const Popper = defineComponent({
196
325
  class: classNames("st-popper", props.class),
197
326
  "data-popper-placement": resolvedPlacement.value,
198
327
  style: `position: ${props.strategy}; top: ${top.value}px; left: ${left.value}px;`,
328
+ tabindex: props.trapFocus ? -1 : undefined,
329
+ onKeydown: props.trapFocus ? handlePanelKeydown : undefined,
199
330
  }, [
200
331
  slots.default?.(),
201
332
  props.arrow
@@ -1 +1 @@
1
- {"version":3,"file":"Popper.js","sourceRoot":"","sources":["../src/Popper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Popper.js","sourceRoot":"","sources":["../src/Popper.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Rating.d.ts","sourceRoot":"","sources":["../src/Rating.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAK5C,MAAM,MAAM,WAAW,GAAG;IACxB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,sDAAsD;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAiDF,eAAO,MAAM,MAAM;;;;;;;;;;cAMgB,MAAM,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;;;;;;;;;;;;cAKpC,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;cALT,MAAM,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;;;;;;;;;;;;cAKpC,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;sBALK,MAAM,KAAK,IAAI;;;;;;;4EA4H9D,CAAC"}
1
+ {"version":3,"file":"Rating.d.ts","sourceRoot":"","sources":["../src/Rating.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAK5C,MAAM,MAAM,WAAW,GAAG;IACxB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,sDAAsD;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAiDF,eAAO,MAAM,MAAM;;;;;;;;;;cAMgB,MAAM,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;;;;;;;;;;;;cAKpC,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;cALT,MAAM,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;;;;;;;;;;;;cAKpC,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;sBALK,MAAM,KAAK,IAAI;;;;;;;4EAoP9D,CAAC"}
package/dist/Rating.js CHANGED
@@ -55,6 +55,8 @@ export const Rating = defineComponent({
55
55
  emits: ["change", "update:modelValue"],
56
56
  setup(props, { emit, attrs }) {
57
57
  const internal = ref(props.value ?? 0);
58
+ // Refs des boutons radio pour déplacer le focus programmatiquement (mode entier).
59
+ const radioRefs = ref({});
58
60
  return () => {
59
61
  const current = props.value ?? internal.value;
60
62
  const max = props.max;
@@ -62,6 +64,7 @@ export const Rating = defineComponent({
62
64
  const stars = Array.from({ length: max }, (_, i) => i + 1);
63
65
  // L'étoile « focusable » (tabindex 0) suit la valeur ; à 0 c'est la première.
64
66
  const focusedStar = current > 0 ? Math.ceil(current) : 1;
67
+ const valueText = `${current} / ${max}`;
65
68
  const fill = (star) => {
66
69
  if (current >= star)
67
70
  return "full";
@@ -96,57 +99,147 @@ export const Rating = defineComponent({
96
99
  }
97
100
  commit(next);
98
101
  };
99
- const onKeyDown = (event) => {
102
+ // Clavier pour le mode entier (radiogroup) : déplace le focus DOM.
103
+ const onRadioKeyDown = (event) => {
100
104
  if (props.readonly)
101
105
  return;
102
- const step = props.allowHalf ? 0.5 : 1;
106
+ const step = 1;
103
107
  let handled = true;
108
+ let next = null;
104
109
  switch (event.key) {
105
110
  case "ArrowRight":
106
111
  case "ArrowUp":
107
- commit(Math.min(max, current + step));
112
+ next = Math.min(max, current + step);
108
113
  break;
109
114
  case "ArrowLeft":
110
115
  case "ArrowDown":
111
- commit(Math.max(0, current - step));
116
+ // Ne pas descendre sous 1 (pas de radio "0").
117
+ next = Math.max(1, current - step);
112
118
  break;
113
119
  case "Home":
114
- commit(0);
120
+ // Home → première étoile (1), pas 0.
121
+ next = 1;
115
122
  break;
116
123
  case "End":
117
- commit(max);
124
+ next = max;
118
125
  break;
119
126
  default:
120
127
  handled = false;
121
128
  }
122
- if (handled)
129
+ if (handled) {
123
130
  event.preventDefault();
131
+ if (next !== null) {
132
+ commit(next);
133
+ const targetStar = next > 0 ? Math.ceil(next) : 1;
134
+ const targetEl = radioRefs.value[targetStar];
135
+ if (targetEl)
136
+ targetEl.focus();
137
+ }
138
+ }
139
+ };
140
+ // Clavier pour le mode slider (allowHalf).
141
+ const onSliderKeyDown = (event) => {
142
+ if (props.readonly)
143
+ return;
144
+ const step = 0.5;
145
+ let handled = true;
146
+ let next = null;
147
+ switch (event.key) {
148
+ case "ArrowRight":
149
+ case "ArrowUp":
150
+ next = Math.min(max, current + step);
151
+ break;
152
+ case "ArrowLeft":
153
+ case "ArrowDown":
154
+ next = Math.max(0, current - step);
155
+ break;
156
+ case "Home":
157
+ next = 0;
158
+ break;
159
+ case "End":
160
+ next = max;
161
+ break;
162
+ default:
163
+ handled = false;
164
+ }
165
+ if (handled) {
166
+ event.preventDefault();
167
+ if (next !== null)
168
+ commit(next);
169
+ }
124
170
  };
171
+ const baseClass = classNames("st-rating", `st-rating--${props.size}`, props.readonly && "st-rating--readonly", props.class);
172
+ // --- Mode readonly : role=img sur le conteneur, pas d'éléments interactifs disabled.
173
+ if (props.readonly) {
174
+ return h("div", {
175
+ ...attrs,
176
+ class: baseClass,
177
+ role: "img",
178
+ "aria-label": props.label ? `${props.label} : ${valueText}` : valueText,
179
+ }, stars.map((star) => {
180
+ const state = fill(star);
181
+ return h("span", {
182
+ key: star,
183
+ class: classNames("st-rating__star", state === "full" && "st-rating__star--full", state === "half" && "st-rating__star--half"),
184
+ "aria-hidden": "true",
185
+ }, [
186
+ state === "half"
187
+ ? StarHalfIcon(iconSize)
188
+ : StarIcon(iconSize, state === "full" ? "currentColor" : "none"),
189
+ ]);
190
+ }));
191
+ }
192
+ // --- Mode allowHalf : slider ARIA (valeurs fractionnaires).
193
+ if (props.allowHalf) {
194
+ return h("div", {
195
+ ...attrs,
196
+ class: baseClass,
197
+ role: "slider",
198
+ "aria-label": props.label,
199
+ "aria-valuemin": 0,
200
+ "aria-valuemax": max,
201
+ "aria-valuenow": current,
202
+ "aria-valuetext": valueText,
203
+ tabindex: 0,
204
+ onKeydown: onSliderKeyDown,
205
+ }, stars.map((star) => {
206
+ const state = fill(star);
207
+ return h("span", {
208
+ key: star,
209
+ class: classNames("st-rating__star", state === "full" && "st-rating__star--full", state === "half" && "st-rating__star--half"),
210
+ "aria-hidden": "true",
211
+ onClick: (event) => onStarClick(event, star),
212
+ }, [
213
+ state === "half"
214
+ ? StarHalfIcon(iconSize)
215
+ : StarIcon(iconSize, state === "full" ? "currentColor" : "none"),
216
+ ]);
217
+ }));
218
+ }
219
+ // --- Mode entier : radiogroup / radio avec roving tabindex.
220
+ // onKeydown est aussi sur le conteneur pour capturer les events qui
221
+ // n'ont pas encore bubblé depuis un radio enfant (tests + edge cases).
125
222
  return h("div", {
126
223
  ...attrs,
127
- class: classNames("st-rating", `st-rating--${props.size}`, props.readonly && "st-rating--readonly", props.class),
224
+ class: baseClass,
128
225
  role: "radiogroup",
129
226
  "aria-label": props.label,
130
- "aria-readonly": props.readonly ? "true" : undefined,
227
+ onKeydown: onRadioKeyDown,
131
228
  }, stars.map((star) => {
132
229
  const state = fill(star);
133
230
  return h("button", {
134
231
  key: star,
232
+ ref: (el) => { radioRefs.value[star] = el; },
135
233
  type: "button",
136
234
  class: classNames("st-rating__star", state === "full" && "st-rating__star--full", state === "half" && "st-rating__star--half"),
137
235
  role: "radio",
138
236
  name: props.name,
139
- "aria-checked": Math.ceil(current) === star ? "true" : "false",
237
+ "aria-checked": current === star ? "true" : "false",
140
238
  "aria-label": `${star} / ${max}`,
141
- tabindex: !props.readonly && star === focusedStar ? 0 : -1,
142
- disabled: props.readonly,
239
+ tabindex: star === focusedStar ? 0 : -1,
143
240
  onClick: (event) => onStarClick(event, star),
144
- onKeydown: onKeyDown,
145
- }, [
146
- state === "half"
147
- ? StarHalfIcon(iconSize)
148
- : StarIcon(iconSize, state === "full" ? "currentColor" : "none"),
149
- ]);
241
+ onKeydown: onRadioKeyDown,
242
+ }, [StarIcon(iconSize, state === "full" ? "currentColor" : "none")]);
150
243
  }));
151
244
  };
152
245
  },
@@ -1 +1 @@
1
- {"version":3,"file":"Rating.js","sourceRoot":"","sources":["../src/Rating.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Rating.js","sourceRoot":"","sources":["../src/Rating.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,8 @@ export type SelectableListProps = {
30
30
  * `multiple` toggles rows independently. Controlled via `value`/`onChange`,
31
31
  * otherwise it keeps its own internal selection. Pilots each child row through
32
32
  * provide/inject (role="option" + the computed tabindex / aria-selected).
33
+ * Disabled rows are registered but skipped during keyboard navigation; if a
34
+ * disabled row holds focus, focus transfers to the next enabled row.
33
35
  */
34
36
  export declare const SelectableList: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
35
37
  label: {
@@ -1 +1 @@
1
- {"version":3,"file":"SelectableList.d.ts","sourceRoot":"","sources":["../src/SelectableList.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,QAAQ,EACd,MAAM,KAAK,CAAC;AAOb,MAAM,MAAM,mBAAmB,GAAG;IAChC,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IACjC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAkBF;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;cASI,QAAQ,CAAC,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;;;;cAIzC,QAAQ,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;;;;;;;;;;qBAMtD,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;;;;;;;;;;;;;;;cAVd,QAAQ,CAAC,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;;;;cAIzC,QAAQ,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;;;;;;;;;;;;sBAAlC,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,KAAK,IAAI;;;;4EA+IxE,CAAC"}
1
+ {"version":3,"file":"SelectableList.d.ts","sourceRoot":"","sources":["../src/SelectableList.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,QAAQ,EACd,MAAM,KAAK,CAAC;AAOb,MAAM,MAAM,mBAAmB,GAAG;IAChC,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IACjC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAkBF;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;cASI,QAAQ,CAAC,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;;;;cAIzC,QAAQ,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;;;;;;;;;;qBAMtD,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;;;;;;;;;;;;;;;cAVd,QAAQ,CAAC,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;;;;cAIzC,QAAQ,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;;;;;;;;;;;;sBAAlC,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,KAAK,IAAI;;;;4EAqLxE,CAAC"}
@@ -1,4 +1,4 @@
1
- import { computed, defineComponent, h, provide, ref, } from "vue";
1
+ import { computed, defineComponent, h, provide, ref, watch, } from "vue";
2
2
  import { classNames } from "./classNames.js";
3
3
  import { SELECTABLE_LIST_KEY, } from "./SelectableRow.js";
4
4
  function toSet(v) {
@@ -23,6 +23,8 @@ function sortByDom(list) {
23
23
  * `multiple` toggles rows independently. Controlled via `value`/`onChange`,
24
24
  * otherwise it keeps its own internal selection. Pilots each child row through
25
25
  * provide/inject (role="option" + the computed tabindex / aria-selected).
26
+ * Disabled rows are registered but skipped during keyboard navigation; if a
27
+ * disabled row holds focus, focus transfers to the next enabled row.
26
28
  */
27
29
  export const SelectableList = defineComponent({
28
30
  name: "SelectableList",
@@ -52,21 +54,24 @@ export const SelectableList = defineComponent({
52
54
  const internal = ref(new Set());
53
55
  const selectedValues = computed(() => controlled.value ? toSet(props.value) : internal.value);
54
56
  // Row registry, ordered by DOM position so arrow nav matches the visual
55
- // order regardless of registration timing.
57
+ // order regardless of registration timing. Disabled rows are included so
58
+ // the list can skip them during navigation and detect focus transfer.
56
59
  const entries = ref([]);
57
60
  // The element holding the roving tab stop (tabindex 0). Null until a row is
58
- // focused; until then the FIRST registered row is the default stop.
61
+ // focused; until then the FIRST enabled row is the default stop.
59
62
  const tabStopEl = ref(null);
60
- // Bumped on every selection / focus / registry change so child rows (which
61
- // read `version`) re-render and recompute role / tabindex / aria-selected.
63
+ // Bumped on every selection / focus / registry change so child rows
64
+ // (which read `version`) re-render and recompute role / tabindex / aria-selected.
62
65
  const version = ref(0);
63
66
  function bump() {
64
67
  version.value++;
65
68
  }
66
- function register(el, rowValue) {
69
+ // register/unregister called from each row on mount/update/unmount.
70
+ // Disabled rows are registered with disabled:true so navigate() can skip them.
71
+ function register(el, rowValue, rowDisabled = false) {
67
72
  entries.value = sortByDom([
68
73
  ...entries.value.filter((e) => e.el !== el),
69
- { el, value: rowValue },
74
+ { el, value: rowValue, disabled: rowDisabled },
70
75
  ]);
71
76
  bump();
72
77
  return () => {
@@ -76,8 +81,28 @@ export const SelectableList = defineComponent({
76
81
  bump();
77
82
  };
78
83
  }
79
- // Default roving stop = first registered (DOM-ordered) row when none focused.
80
- const effectiveTabStop = computed(() => tabStopEl.value ?? entries.value[0]?.el ?? null);
84
+ // Default roving stop = first non-disabled DOM-ordered row when none focused,
85
+ // or when the current tabStopEl has become disabled.
86
+ const effectiveTabStop = computed(() => {
87
+ if (tabStopEl.value) {
88
+ const entry = entries.value.find((e) => e.el === tabStopEl.value);
89
+ if (entry && !entry.disabled)
90
+ return tabStopEl.value;
91
+ }
92
+ return entries.value.find((e) => !e.disabled)?.el ?? null;
93
+ });
94
+ // Si la row qui détient le focus DOM devient disabled, transférer le focus
95
+ // vers la nouvelle cible de roving tabindex.
96
+ watch(effectiveTabStop, (newStop) => {
97
+ if (!newStop)
98
+ return;
99
+ if (tabStopEl.value !== null) {
100
+ const disabledEntry = entries.value.find((e) => e.el === tabStopEl.value && e.disabled);
101
+ if (disabledEntry && tabStopEl.value?.contains(document.activeElement ?? null)) {
102
+ newStop.focus();
103
+ }
104
+ }
105
+ });
81
106
  function valueOf(el) {
82
107
  return entries.value.find((e) => e.el === el)?.value;
83
108
  }
@@ -89,7 +114,6 @@ export const SelectableList = defineComponent({
89
114
  return el === effectiveTabStop.value;
90
115
  }
91
116
  function fireChange(value) {
92
- // `emit("change")` invokes the `onChange` prop/listener exactly once.
93
117
  emit("change", value);
94
118
  }
95
119
  function emitNext(next) {
@@ -131,17 +155,44 @@ export const SelectableList = defineComponent({
131
155
  const idx = list.findIndex((e) => e.el === el);
132
156
  if (idx === -1)
133
157
  return;
134
- let targetIdx = idx;
135
- if (key === "ArrowDown" || key === "ArrowRight")
136
- targetIdx = idx + 1;
137
- else if (key === "ArrowUp" || key === "ArrowLeft")
138
- targetIdx = idx - 1;
139
- else if (key === "Home")
140
- targetIdx = 0;
141
- else if (key === "End")
142
- targetIdx = list.length - 1;
143
- // Clamp (no wrap) so Home/End and arrows stay within bounds.
144
- targetIdx = Math.max(0, Math.min(list.length - 1, targetIdx));
158
+ let targetIdx = null;
159
+ if (key === "ArrowDown" || key === "ArrowRight") {
160
+ // Walk forward, find the next non-disabled entry.
161
+ for (let i = idx + 1; i < list.length; i++) {
162
+ if (!list[i].disabled) {
163
+ targetIdx = i;
164
+ break;
165
+ }
166
+ }
167
+ }
168
+ else if (key === "ArrowUp" || key === "ArrowLeft") {
169
+ // Walk backward, find the previous non-disabled entry.
170
+ for (let i = idx - 1; i >= 0; i--) {
171
+ if (!list[i].disabled) {
172
+ targetIdx = i;
173
+ break;
174
+ }
175
+ }
176
+ }
177
+ else if (key === "Home") {
178
+ for (let i = 0; i < list.length; i++) {
179
+ if (!list[i].disabled) {
180
+ targetIdx = i;
181
+ break;
182
+ }
183
+ }
184
+ }
185
+ else if (key === "End") {
186
+ for (let i = list.length - 1; i >= 0; i--) {
187
+ if (!list[i].disabled) {
188
+ targetIdx = i;
189
+ break;
190
+ }
191
+ }
192
+ }
193
+ // If no target found (all remaining disabled, or already at boundary), stay put.
194
+ if (targetIdx === null)
195
+ return;
145
196
  const target = list[targetIdx]?.el;
146
197
  if (target) {
147
198
  tabStopEl.value = target;