@longsightgroup/qti3-a11y 0.1.2 → 0.2.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
@@ -76,7 +76,7 @@ export const manualAssistiveTechnologyScripts = [
76
76
  expectedResults: [
77
77
  "JAWS announces a stable role and name for every operable control.",
78
78
  "Validation and feedback are reachable after scoring.",
79
- "Graphic, point, drawing, and custom-host fixtures expose a keyboard-operable fallback or control.",
79
+ "Graphic, point, and drawing fixtures expose keyboard-operable controls; PCI fixtures expose a focusable host for a keyboard-operable runtime.",
80
80
  "The item can be completed without hidden instructions or product-specific UI.",
81
81
  ],
82
82
  },
@@ -187,7 +187,7 @@ function contractForInteraction(interactionType) {
187
187
  requiredStates: ["aria-pressed", "aria-invalid", "aria-describedby"],
188
188
  };
189
189
  }
190
- if (interactionType === "selectPoint" || interactionType === "positionObject") {
190
+ if (interactionType === "selectPoint") {
191
191
  return {
192
192
  ...base,
193
193
  primaryRole: "button",
@@ -204,6 +204,24 @@ function contractForInteraction(interactionType) {
204
204
  ],
205
205
  };
206
206
  }
207
+ if (interactionType === "positionObject") {
208
+ return {
209
+ ...base,
210
+ primaryRole: "button",
211
+ focusStrategy: "Focus lands on the placement stage and movable object controls.",
212
+ keyboardModel: [
213
+ "Unanswered objects start unplaced outside the stage.",
214
+ "Arrow keys place or move the selected object by one unit.",
215
+ "Shift plus arrow keys move by ten units.",
216
+ "Enter or Space commits the selected coordinate.",
217
+ ],
218
+ requiredStates: [
219
+ "unplaced state or selected coordinate in accessible name",
220
+ "aria-invalid",
221
+ "aria-describedby",
222
+ ],
223
+ };
224
+ }
207
225
  if (interactionType === "slider") {
208
226
  return {
209
227
  ...base,
@@ -258,12 +276,19 @@ function contractForInteraction(interactionType) {
258
276
  return {
259
277
  ...base,
260
278
  primaryRole: "group",
261
- focusStrategy: "Focus enters the portable custom host and its fallback control.",
279
+ focusStrategy: "Focus enters the portable custom host; the host-provided PCI runtime owns focus routing for internal response controls.",
262
280
  keyboardModel: [
263
- "The host integration must expose a keyboard-operable response control.",
264
- "The fallback text input accepts a response when no integration has rendered.",
281
+ "The qti3-ts player exposes a focusable portable custom host and mount event.",
282
+ "The host-provided PCI runtime must expose keyboard-operable response controls.",
283
+ "The PCI runtime must expose accessible names, roles, values, and selected or invalid states for its rendered controls.",
284
+ "Response, validity, and suspend/resume state changes are reported through the portable custom interaction event contract.",
285
+ ],
286
+ requiredStates: [
287
+ "host metadata",
288
+ "host accessible name",
289
+ "runtime accessible name, role, and state",
290
+ "runtime validation bridge",
265
291
  ],
266
- requiredStates: ["host metadata", "aria-invalid", "aria-describedby"],
267
292
  };
268
293
  }
269
294
  return {
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.1.2",
3
+ "version": "0.2.0",
4
4
  "description": "Accessibility contracts and proof metadata for qti3 QTI 3 item interactions.",
5
5
  "keywords": [
6
6
  "a11y",
@@ -45,7 +45,7 @@
45
45
  "registry": "https://registry.npmjs.org"
46
46
  },
47
47
  "dependencies": {
48
- "@longsightgroup/qti3-core": "0.1.2"
48
+ "@longsightgroup/qti3-core": "0.2.0"
49
49
  },
50
50
  "scripts": {}
51
51
  }
package/src/index.ts CHANGED
@@ -115,7 +115,7 @@ export const manualAssistiveTechnologyScripts: ManualAssistiveTechnologyScript[]
115
115
  expectedResults: [
116
116
  "JAWS announces a stable role and name for every operable control.",
117
117
  "Validation and feedback are reachable after scoring.",
118
- "Graphic, point, drawing, and custom-host fixtures expose a keyboard-operable fallback or control.",
118
+ "Graphic, point, and drawing fixtures expose keyboard-operable controls; PCI fixtures expose a focusable host for a keyboard-operable runtime.",
119
119
  "The item can be completed without hidden instructions or product-specific UI.",
120
120
  ],
121
121
  },
@@ -238,7 +238,7 @@ function contractForInteraction(interactionType: QtiInteractionType): Interactio
238
238
  };
239
239
  }
240
240
 
241
- if (interactionType === "selectPoint" || interactionType === "positionObject") {
241
+ if (interactionType === "selectPoint") {
242
242
  return {
243
243
  ...base,
244
244
  primaryRole: "button",
@@ -256,6 +256,25 @@ function contractForInteraction(interactionType: QtiInteractionType): Interactio
256
256
  };
257
257
  }
258
258
 
259
+ if (interactionType === "positionObject") {
260
+ return {
261
+ ...base,
262
+ primaryRole: "button",
263
+ focusStrategy: "Focus lands on the placement stage and movable object controls.",
264
+ keyboardModel: [
265
+ "Unanswered objects start unplaced outside the stage.",
266
+ "Arrow keys place or move the selected object by one unit.",
267
+ "Shift plus arrow keys move by ten units.",
268
+ "Enter or Space commits the selected coordinate.",
269
+ ],
270
+ requiredStates: [
271
+ "unplaced state or selected coordinate in accessible name",
272
+ "aria-invalid",
273
+ "aria-describedby",
274
+ ],
275
+ };
276
+ }
277
+
259
278
  if (interactionType === "slider") {
260
279
  return {
261
280
  ...base,
@@ -315,12 +334,20 @@ function contractForInteraction(interactionType: QtiInteractionType): Interactio
315
334
  return {
316
335
  ...base,
317
336
  primaryRole: "group",
318
- focusStrategy: "Focus enters the portable custom host and its fallback control.",
337
+ focusStrategy:
338
+ "Focus enters the portable custom host; the host-provided PCI runtime owns focus routing for internal response controls.",
319
339
  keyboardModel: [
320
- "The host integration must expose a keyboard-operable response control.",
321
- "The fallback text input accepts a response when no integration has rendered.",
340
+ "The qti3-ts player exposes a focusable portable custom host and mount event.",
341
+ "The host-provided PCI runtime must expose keyboard-operable response controls.",
342
+ "The PCI runtime must expose accessible names, roles, values, and selected or invalid states for its rendered controls.",
343
+ "Response, validity, and suspend/resume state changes are reported through the portable custom interaction event contract.",
344
+ ],
345
+ requiredStates: [
346
+ "host metadata",
347
+ "host accessible name",
348
+ "runtime accessible name, role, and state",
349
+ "runtime validation bridge",
322
350
  ],
323
- requiredStates: ["host metadata", "aria-invalid", "aria-describedby"],
324
351
  };
325
352
  }
326
353