@longsightgroup/qti3-a11y 0.5.4 → 0.7.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/index.js CHANGED
@@ -102,6 +102,7 @@ function contractForInteraction(interactionType) {
102
102
  keyboardModel: [
103
103
  "Tab moves into each radio or checkbox.",
104
104
  "Space toggles the focused option.",
105
+ "Shared-vocabulary hidden input-control presentation keeps controls keyboard focusable and projects focus indication onto the visible option.",
105
106
  ],
106
107
  requiredStates: ["checked", "aria-invalid", "aria-describedby"],
107
108
  };
@@ -111,9 +112,13 @@ function contractForInteraction(interactionType) {
111
112
  ...base,
112
113
  primaryRole: "group",
113
114
  keyboardModel: [
114
- "Tab moves through each item handle and its move buttons.",
115
- "Arrow Up, Arrow Down, Arrow Left, or Arrow Right reorders the focused item handle.",
116
- "Arrow icon buttons provide an explicit move-button fallback.",
115
+ "Default order layout: Tab moves through each item handle and its move buttons.",
116
+ "Default order layout: Arrow Up, Arrow Down, Arrow Left, or Arrow Right reorders the focused item handle.",
117
+ "Shared-vocabulary split layout: Tab moves through choices-bank buttons, placed item handles, move buttons, and remove buttons.",
118
+ "Shared-vocabulary split layout: Enter or Space on a choices-bank button adds the choice to the next available order target.",
119
+ "Shared-vocabulary split layout: Remove buttons return placed choices to the choices bank.",
120
+ "Shared-vocabulary split layout: empty target slots expose target label and empty state text for assistive technology.",
121
+ "Arrow icon buttons provide an explicit move-button fallback in both layouts.",
117
122
  "Adjacent moves are announced directionally in a polite live region; larger jumps announce the new position.",
118
123
  ],
119
124
  requiredStates: [
@@ -150,9 +155,22 @@ function contractForInteraction(interactionType) {
150
155
  ],
151
156
  };
152
157
  }
153
- if (interactionType === "associate" ||
154
- interactionType === "graphicAssociate" ||
155
- interactionType === "match") {
158
+ if (interactionType === "match") {
159
+ return {
160
+ ...base,
161
+ primaryRole: "group or table",
162
+ keyboardModel: [
163
+ "Token-bank layout: Tab moves through source tokens, target tokens, selected pair chips, and remove controls.",
164
+ "Token-bank layout: Enter or Space selects one source token and one target token to create a pair.",
165
+ "Tabular layout: Tab moves through matrix cell buttons in row-major order.",
166
+ "Tabular layout: Enter or Space toggles the focused source-target cell.",
167
+ "Remove buttons delete selected pairs.",
168
+ "Pointer drag from a source token to a target token is a progressive enhancement in token-bank layout.",
169
+ ],
170
+ requiredStates: ["aria-pressed", "selected pair text", "aria-invalid", "aria-describedby"],
171
+ };
172
+ }
173
+ if (interactionType === "associate" || interactionType === "graphicAssociate") {
156
174
  return {
157
175
  ...base,
158
176
  primaryRole: "group",
@@ -348,6 +366,9 @@ function automatedProofFor(contract) {
348
366
  if (contract.requiresValidationMessageAssociation) {
349
367
  proof.push("validation message association contract");
350
368
  }
369
+ if (contract.interactionType === "graphicGapMatch") {
370
+ proof.push("image-backed gap choice keyboard, pointer, forced-colors, and narrow reflow browser coverage");
371
+ }
351
372
  proof.push("forced-colors, reduced-motion, and narrow viewport browser checks");
352
373
  return proof;
353
374
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@longsightgroup/qti3-a11y",
3
- "version": "0.5.4",
3
+ "version": "0.7.0",
4
4
  "description": "Accessibility contracts and proof metadata for qti3 QTI 3 item interactions.",
5
5
  "keywords": [
6
6
  "a11y",
@@ -36,7 +36,7 @@
36
36
  "type": "module",
37
37
  "exports": {
38
38
  ".": {
39
- "types": "./src/index.ts",
39
+ "types": "./dist/index.d.ts",
40
40
  "import": "./dist/index.js"
41
41
  }
42
42
  },
@@ -45,7 +45,7 @@
45
45
  "registry": "https://registry.npmjs.org"
46
46
  },
47
47
  "dependencies": {
48
- "@longsightgroup/qti3-core": "0.5.4"
48
+ "@longsightgroup/qti3-core": "0.7.0"
49
49
  },
50
50
  "scripts": {}
51
51
  }
package/src/index.ts CHANGED
@@ -143,6 +143,7 @@ function contractForInteraction(interactionType: QtiInteractionType): Interactio
143
143
  keyboardModel: [
144
144
  "Tab moves into each radio or checkbox.",
145
145
  "Space toggles the focused option.",
146
+ "Shared-vocabulary hidden input-control presentation keeps controls keyboard focusable and projects focus indication onto the visible option.",
146
147
  ],
147
148
  requiredStates: ["checked", "aria-invalid", "aria-describedby"],
148
149
  };
@@ -153,9 +154,13 @@ function contractForInteraction(interactionType: QtiInteractionType): Interactio
153
154
  ...base,
154
155
  primaryRole: "group",
155
156
  keyboardModel: [
156
- "Tab moves through each item handle and its move buttons.",
157
- "Arrow Up, Arrow Down, Arrow Left, or Arrow Right reorders the focused item handle.",
158
- "Arrow icon buttons provide an explicit move-button fallback.",
157
+ "Default order layout: Tab moves through each item handle and its move buttons.",
158
+ "Default order layout: Arrow Up, Arrow Down, Arrow Left, or Arrow Right reorders the focused item handle.",
159
+ "Shared-vocabulary split layout: Tab moves through choices-bank buttons, placed item handles, move buttons, and remove buttons.",
160
+ "Shared-vocabulary split layout: Enter or Space on a choices-bank button adds the choice to the next available order target.",
161
+ "Shared-vocabulary split layout: Remove buttons return placed choices to the choices bank.",
162
+ "Shared-vocabulary split layout: empty target slots expose target label and empty state text for assistive technology.",
163
+ "Arrow icon buttons provide an explicit move-button fallback in both layouts.",
159
164
  "Adjacent moves are announced directionally in a polite live region; larger jumps announce the new position.",
160
165
  ],
161
166
  requiredStates: [
@@ -195,11 +200,23 @@ function contractForInteraction(interactionType: QtiInteractionType): Interactio
195
200
  };
196
201
  }
197
202
 
198
- if (
199
- interactionType === "associate" ||
200
- interactionType === "graphicAssociate" ||
201
- interactionType === "match"
202
- ) {
203
+ if (interactionType === "match") {
204
+ return {
205
+ ...base,
206
+ primaryRole: "group or table",
207
+ keyboardModel: [
208
+ "Token-bank layout: Tab moves through source tokens, target tokens, selected pair chips, and remove controls.",
209
+ "Token-bank layout: Enter or Space selects one source token and one target token to create a pair.",
210
+ "Tabular layout: Tab moves through matrix cell buttons in row-major order.",
211
+ "Tabular layout: Enter or Space toggles the focused source-target cell.",
212
+ "Remove buttons delete selected pairs.",
213
+ "Pointer drag from a source token to a target token is a progressive enhancement in token-bank layout.",
214
+ ],
215
+ requiredStates: ["aria-pressed", "selected pair text", "aria-invalid", "aria-describedby"],
216
+ };
217
+ }
218
+
219
+ if (interactionType === "associate" || interactionType === "graphicAssociate") {
203
220
  return {
204
221
  ...base,
205
222
  primaryRole: "group",
@@ -413,6 +430,11 @@ function automatedProofFor(contract: InteractionA11yContract): string[] {
413
430
  if (contract.requiresValidationMessageAssociation) {
414
431
  proof.push("validation message association contract");
415
432
  }
433
+ if (contract.interactionType === "graphicGapMatch") {
434
+ proof.push(
435
+ "image-backed gap choice keyboard, pointer, forced-colors, and narrow reflow browser coverage",
436
+ );
437
+ }
416
438
  proof.push("forced-colors, reduced-motion, and narrow viewport browser checks");
417
439
  return proof;
418
440
  }