@citolab/qti-components 7.13.0 → 7.14.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/cdn/index.global.js +1 -1
- package/cdn/index.js +103 -103
- package/custom-elements.json +1128 -315
- package/dist/chunks/{chunk-IHE5M7QU.js → chunk-CNLDFJAA.js} +4 -4
- package/dist/chunks/chunk-CNLDFJAA.js.map +1 -0
- package/dist/chunks/{chunk-WFUXZ4UT.js → chunk-LJ4KAG72.js} +26 -36
- package/dist/chunks/chunk-LJ4KAG72.js.map +1 -0
- package/dist/chunks/{chunk-TFNRSY74.js → chunk-SJGUMIKK.js} +24 -19
- package/dist/chunks/chunk-SJGUMIKK.js.map +1 -0
- package/dist/chunks/{chunk-XI7S3HP2.js → chunk-XD7DR5YG.js} +363 -337
- package/dist/chunks/chunk-XD7DR5YG.js.map +1 -0
- package/dist/exports/qti-test.d.ts +2 -2
- package/dist/index.d.ts +3 -3
- package/dist/index.js +47 -36
- package/dist/index.js.map +1 -1
- package/dist/qti-components/index.d.ts +10 -9
- package/dist/qti-components/index.js +4 -2
- package/dist/qti-components-jsx.d.ts +15 -15
- package/dist/qti-item/index.js +2 -2
- package/dist/qti-loader/index.js +2 -2
- package/dist/qti-loader/index.js.map +1 -1
- package/dist/qti-test/index.d.ts +3 -3
- package/dist/qti-test/index.js +3 -3
- package/dist/{qti-test-DEJqAn7G.d.ts → qti-test-Db7oNIWY.d.ts} +1 -1
- package/dist/{qti-transform-test-DkSRdVBF.d.ts → qti-transform-test-Bz9A3hmD.d.ts} +2 -5
- package/dist/qti-transformers/index.d.ts +3 -3
- package/dist/qti-transformers/index.js +1 -1
- package/dist/vscode.html-custom-data.json +4 -21
- package/package.json +10 -1
- package/dist/chunks/chunk-IHE5M7QU.js.map +0 -1
- package/dist/chunks/chunk-TFNRSY74.js.map +0 -1
- package/dist/chunks/chunk-WFUXZ4UT.js.map +0 -1
- package/dist/chunks/chunk-XI7S3HP2.js.map +0 -1
package/custom-elements.json
CHANGED
|
@@ -1247,7 +1247,6 @@
|
|
|
1247
1247
|
"text": "string"
|
|
1248
1248
|
},
|
|
1249
1249
|
"default": "''",
|
|
1250
|
-
"description": "The href of the stimulus.",
|
|
1251
1250
|
"attribute": "href"
|
|
1252
1251
|
},
|
|
1253
1252
|
{
|
|
@@ -1257,7 +1256,6 @@
|
|
|
1257
1256
|
"text": "string"
|
|
1258
1257
|
},
|
|
1259
1258
|
"default": "''",
|
|
1260
|
-
"description": "The identifier of the stimulus.",
|
|
1261
1259
|
"attribute": "identifier"
|
|
1262
1260
|
},
|
|
1263
1261
|
{
|
|
@@ -1286,7 +1284,6 @@
|
|
|
1286
1284
|
"text": "string"
|
|
1287
1285
|
},
|
|
1288
1286
|
"default": "''",
|
|
1289
|
-
"description": "The href of the stimulus.",
|
|
1290
1287
|
"fieldName": "href"
|
|
1291
1288
|
},
|
|
1292
1289
|
{
|
|
@@ -1295,7 +1292,6 @@
|
|
|
1295
1292
|
"text": "string"
|
|
1296
1293
|
},
|
|
1297
1294
|
"default": "''",
|
|
1298
|
-
"description": "The identifier of the stimulus.",
|
|
1299
1295
|
"fieldName": "identifier"
|
|
1300
1296
|
}
|
|
1301
1297
|
],
|
|
@@ -1307,6 +1303,27 @@
|
|
|
1307
1303
|
"customElement": true,
|
|
1308
1304
|
"modulePath": "src/lib/qti-components/qti-assessment-stimulus-ref/qti-assessment-stimulus-ref.ts",
|
|
1309
1305
|
"definitionPath": "src/lib/qti-components/qti-assessment-stimulus-ref/qti-assessment-stimulus-ref.ts"
|
|
1306
|
+
},
|
|
1307
|
+
{
|
|
1308
|
+
"kind": "class",
|
|
1309
|
+
"description": "",
|
|
1310
|
+
"name": "QtiAssessmentStimulusRefConnectedEvent",
|
|
1311
|
+
"members": [
|
|
1312
|
+
{
|
|
1313
|
+
"kind": "field",
|
|
1314
|
+
"name": "eventName",
|
|
1315
|
+
"type": {
|
|
1316
|
+
"text": "string"
|
|
1317
|
+
},
|
|
1318
|
+
"privacy": "public",
|
|
1319
|
+
"static": true,
|
|
1320
|
+
"default": "'qti-assessment-stimulus-ref-connected'"
|
|
1321
|
+
}
|
|
1322
|
+
],
|
|
1323
|
+
"superclass": {
|
|
1324
|
+
"name": "Event",
|
|
1325
|
+
"module": "src/lib/qti-components/qti-assessment-stimulus-ref/qti-assessment-stimulus-ref.ts"
|
|
1326
|
+
}
|
|
1310
1327
|
}
|
|
1311
1328
|
],
|
|
1312
1329
|
"exports": [
|
|
@@ -1325,6 +1342,14 @@
|
|
|
1325
1342
|
"name": "QtiAssessmentStimulusRef",
|
|
1326
1343
|
"module": "src/lib/qti-components/qti-assessment-stimulus-ref/qti-assessment-stimulus-ref.ts"
|
|
1327
1344
|
}
|
|
1345
|
+
},
|
|
1346
|
+
{
|
|
1347
|
+
"kind": "js",
|
|
1348
|
+
"name": "QtiAssessmentStimulusRefConnectedEvent",
|
|
1349
|
+
"declaration": {
|
|
1350
|
+
"name": "QtiAssessmentStimulusRefConnectedEvent",
|
|
1351
|
+
"module": "src/lib/qti-components/qti-assessment-stimulus-ref/qti-assessment-stimulus-ref.ts"
|
|
1352
|
+
}
|
|
1328
1353
|
}
|
|
1329
1354
|
]
|
|
1330
1355
|
},
|
|
@@ -23229,7 +23254,7 @@
|
|
|
23229
23254
|
"type": {
|
|
23230
23255
|
"text": "Story"
|
|
23231
23256
|
},
|
|
23232
|
-
"default": "{ render: (_, { loaded: { itemDoc } }) => { return html` <qti-item> <item-container .itemDoc=${itemDoc}></item-container> </qti-item> `; }, loaders: [ async ({ args }) => { const itemDoc = qtiTransformItem() .load(args['item-url']) .
|
|
23257
|
+
"default": "{ render: (_, { loaded: { itemDoc } }) => { return html` <qti-item> <item-container .itemDoc=${itemDoc}></item-container> </qti-item> `; }, loaders: [ async ({ args }) => { const itemDoc = qtiTransformItem() .load(args['item-url']) .then(api => api.htmlDoc()); return { itemDoc }; } ], play: ItemURL.play, tags: ['!autodocs'] }"
|
|
23233
23258
|
},
|
|
23234
23259
|
{
|
|
23235
23260
|
"kind": "variable",
|
|
@@ -23261,7 +23286,7 @@
|
|
|
23261
23286
|
"type": {
|
|
23262
23287
|
"text": "Story"
|
|
23263
23288
|
},
|
|
23264
|
-
"default": "{ render: (_, { loaded: { itemXML } }) => { return html` <qti-item> <item-container .itemXML=${itemXML}></item-container> </qti-item> `; }, loaders: [ async ({ args }) => { const itemXML = await qtiTransformItem() .load(args['item-url']) .
|
|
23289
|
+
"default": "{ render: (_, { loaded: { itemXML } }) => { return html` <qti-item> <item-container .itemXML=${itemXML}></item-container> </qti-item> `; }, loaders: [ async ({ args }) => { const itemXML = await qtiTransformItem() .load(args['item-url']) .then(api => api.xml()); return { itemXML }; } ], play: ItemURL.play, tags: ['!autodocs'] }"
|
|
23265
23290
|
},
|
|
23266
23291
|
{
|
|
23267
23292
|
"kind": "variable",
|
|
@@ -23269,7 +23294,7 @@
|
|
|
23269
23294
|
"type": {
|
|
23270
23295
|
"text": "Meta<typeof ItemContainer & { 'item-url': string }>"
|
|
23271
23296
|
},
|
|
23272
|
-
"default": "{ component: 'item-container', args: { ...args, 'item-url': '/qti-item/example-choice-item.xml' }, argTypes, parameters: { actions: { handles: events } } // tags: ['autodocs', 'new'] }"
|
|
23297
|
+
"default": "{ component: 'item-container', args: { ...args, 'item-url': 'assets/qti-item/example-choice-item.xml' }, argTypes, parameters: { actions: { handles: events } } // tags: ['autodocs', 'new'] }"
|
|
23273
23298
|
}
|
|
23274
23299
|
],
|
|
23275
23300
|
"exports": [
|
|
@@ -23545,7 +23570,7 @@
|
|
|
23545
23570
|
"type": {
|
|
23546
23571
|
"text": "Story"
|
|
23547
23572
|
},
|
|
23548
|
-
"default": "{ args: { 'item-url': '/qti-item/example-inline-choice.xml' }, render: args => html` <qti-item> <div> <item-container style=\"display: block; width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-candidate-correction></item-show-candidate-correction> </div> </qti-item> `, play: async ({ canvasElement, step }) => { const canvas = within(canvasElement); const item = await getAssessmentItemFromItemContainer(canvasElement); const interaction = await waitFor(() => { const el = item.querySelector('qti-inline-choice-interaction'); if (!el) throw new Error('inline-choice interaction not found'); return el; }); const selectElement = await waitFor(() => { const select = interaction.shadowRoot?.querySelector<HTMLSelectElement>('select'); if (!select) throw new Error('select element not yet available'); return select; }); const showButton = await canvas.findByShadowText(/Show candidate correction/i); await step('Select an inline choice option', async () => { selectElement.value = 'Y'; // de correcte identifier (York) selectElement.dispatchEvent(new Event('change', { bubbles: true })); }); await step('Click on the Show Candidate Correction button', async () => { await showButton.click(); await step('Verify candidate correction by checking selected option', async () => { const selectedOption = Array.from(selectElement.options).find(opt => opt.selected); expect(selectedOption).not.toBeUndefined(); expect(selectedOption.value).toBe('Y'); expect(selectedOption.textContent.trim()).toBe('York'); }); }); } }"
|
|
23573
|
+
"default": "{ args: { 'item-url': 'assets/qti-item/example-inline-choice.xml' }, render: args => html` <qti-item> <div> <item-container style=\"display: block; width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-candidate-correction></item-show-candidate-correction> </div> </qti-item> `, play: async ({ canvasElement, step }) => { const canvas = within(canvasElement); const item = await getAssessmentItemFromItemContainer(canvasElement); const interaction = await waitFor(() => { const el = item.querySelector('qti-inline-choice-interaction'); if (!el) throw new Error('inline-choice interaction not found'); return el; }); const selectElement = await waitFor(() => { const select = interaction.shadowRoot?.querySelector<HTMLSelectElement>('select'); if (!select) throw new Error('select element not yet available'); return select; }); const showButton = await canvas.findByShadowText(/Show candidate correction/i); await step('Select an inline choice option', async () => { selectElement.value = 'Y'; // de correcte identifier (York) selectElement.dispatchEvent(new Event('change', { bubbles: true })); }); await step('Click on the Show Candidate Correction button', async () => { await showButton.click(); await step('Verify candidate correction by checking selected option', async () => { const selectedOption = Array.from(selectElement.options).find(opt => opt.selected); expect(selectedOption).not.toBeUndefined(); expect(selectedOption.value).toBe('Y'); expect(selectedOption.textContent.trim()).toBe('York'); }); }); } }"
|
|
23549
23574
|
},
|
|
23550
23575
|
{
|
|
23551
23576
|
"kind": "variable",
|
|
@@ -23553,7 +23578,7 @@
|
|
|
23553
23578
|
"type": {
|
|
23554
23579
|
"text": "Story"
|
|
23555
23580
|
},
|
|
23556
|
-
"default": "{ args: { 'item-url': '/qti-test-package/items/match.xml' // Set the new item URL here }, render: args => html` <qti-item> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-candidate-correction></item-show-candidate-correction> </div> </qti-item>`, play: async ({ canvasElement, step }) => { // wait for qti-simple-choice to be rendered const canvas = within(canvasElement); const showCorrectButton = await canvas.findByShadowText(/Show candidate correction/i); const matchItem1 = (await canvas.findByShadowText('Prospero')) as QtiSimpleAssociableChoice; const matchItem2 = (await canvas.findByShadowText('Capulet')) as QtiSimpleAssociableChoice; const matchItem3 = (await canvas.findByShadowText('Demetrius')) as QtiSimpleAssociableChoice; const dropZone1 = await canvas.findByShadowText('The Tempest'); const dropZone2 = await canvas.findByShadowText(\"A Midsummer-Night's Dream\"); const dropZone3 = await canvas.findByShadowText('Romeo and Juliet'); await step('Drag and drop match interaction items', async () => { await drag(matchItem1, { to: dropZone1 }); await drag(matchItem2, { to: dropZone2 }); await drag(matchItem3, { to: dropZone3 }); await showCorrectButton.click(); await step('Verify candidate correction state is applied', async () => { const matchItem1List = Array.from(await canvas.findAllByShadowText('Prospero')); const matchItem1CandidateResponse = matchItem1List[1] as QtiSimpleAssociableChoice; const matchItem2List = Array.from(await canvas.findAllByShadowText('Capulet')); const matchItem2CandidateResponse = matchItem2List[1] as QtiSimpleAssociableChoice; const matchItem3List = Array.from(await canvas.findAllByShadowText('Demetrius')); const matchItem3CandidateResponse = matchItem3List[1] as QtiSimpleAssociableChoice; expect(matchItem1CandidateResponse.internals.states.has('candidate-correct')).toBe(true); expect(matchItem2CandidateResponse.internals.states.has('candidate-correct')).toBe(false); expect(matchItem3CandidateResponse.internals.states.has('candidate-correct')).toBe(false); expect(matchItem1CandidateResponse.internals.states.has('candidate-incorrect')).toBe(false); expect(matchItem2CandidateResponse.internals.states.has('candidate-incorrect')).toBe(true); expect(matchItem3CandidateResponse.internals.states.has('candidate-incorrect')).toBe(true); }); }); } }"
|
|
23581
|
+
"default": "{ args: { 'item-url': 'assets/qti-test-package/items/match.xml' // Set the new item URL here }, render: args => html` <qti-item> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-candidate-correction></item-show-candidate-correction> </div> </qti-item>`, play: async ({ canvasElement, step }) => { // wait for qti-simple-choice to be rendered const canvas = within(canvasElement); const showCorrectButton = await canvas.findByShadowText(/Show candidate correction/i); const matchItem1 = (await canvas.findByShadowText('Prospero')) as QtiSimpleAssociableChoice; const matchItem2 = (await canvas.findByShadowText('Capulet')) as QtiSimpleAssociableChoice; const matchItem3 = (await canvas.findByShadowText('Demetrius')) as QtiSimpleAssociableChoice; const dropZone1 = await canvas.findByShadowText('The Tempest'); const dropZone2 = await canvas.findByShadowText(\"A Midsummer-Night's Dream\"); const dropZone3 = await canvas.findByShadowText('Romeo and Juliet'); await step('Drag and drop match interaction items', async () => { await drag(matchItem1, { to: dropZone1 }); await drag(matchItem2, { to: dropZone2 }); await drag(matchItem3, { to: dropZone3 }); await showCorrectButton.click(); await step('Verify candidate correction state is applied', async () => { const matchItem1List = Array.from(await canvas.findAllByShadowText('Prospero')); const matchItem1CandidateResponse = matchItem1List[1] as QtiSimpleAssociableChoice; const matchItem2List = Array.from(await canvas.findAllByShadowText('Capulet')); const matchItem2CandidateResponse = matchItem2List[1] as QtiSimpleAssociableChoice; const matchItem3List = Array.from(await canvas.findAllByShadowText('Demetrius')); const matchItem3CandidateResponse = matchItem3List[1] as QtiSimpleAssociableChoice; expect(matchItem1CandidateResponse.internals.states.has('candidate-correct')).toBe(true); expect(matchItem2CandidateResponse.internals.states.has('candidate-correct')).toBe(false); expect(matchItem3CandidateResponse.internals.states.has('candidate-correct')).toBe(false); expect(matchItem1CandidateResponse.internals.states.has('candidate-incorrect')).toBe(false); expect(matchItem2CandidateResponse.internals.states.has('candidate-incorrect')).toBe(true); expect(matchItem3CandidateResponse.internals.states.has('candidate-incorrect')).toBe(true); }); }); } }"
|
|
23557
23582
|
},
|
|
23558
23583
|
{
|
|
23559
23584
|
"kind": "variable",
|
|
@@ -23561,7 +23586,7 @@
|
|
|
23561
23586
|
"type": {
|
|
23562
23587
|
"text": "Story"
|
|
23563
23588
|
},
|
|
23564
|
-
"default": "{ args: { 'item-url': '/qti-test-package/items/match.xml' // Set the new item URL here }, render: args => html` <qti-item> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-candidate-correction></item-show-candidate-correction> </div> </qti-item>`, play: async ({ canvasElement, step }) => { // wait for qti-simple-choice to be rendered - fresh UI state const canvas = within(canvasElement); const showCorrectButton = await canvas.findByShadowText(/Show candidate correction/i); const matchItem1 = (await canvas.findByShadowText('Prospero')) as QtiSimpleAssociableChoice; const matchItem2 = (await canvas.findByShadowText('Lysander')) as QtiSimpleAssociableChoice; const matchItem3 = (await canvas.findByShadowText('Demetrius')) as QtiSimpleAssociableChoice; const dropZone1 = await canvas.findByShadowText('The Tempest'); await step('Drag and drop all match interaction items to single dropzone', async () => { await drag(matchItem1, { to: dropZone1 }); await drag(matchItem2, { to: dropZone1 }); await drag(matchItem3, { to: dropZone1 }); await showCorrectButton.click(); await step('Verify candidate correction state is applied', async () => { const matchItem1List = Array.from(await canvas.findAllByShadowText('Prospero')); const matchItem1CandidateResponse = matchItem1List[1] as QtiSimpleAssociableChoice; const matchItem2List = Array.from(await canvas.findAllByShadowText('Lysander')); const matchItem2CandidateResponse = matchItem2List[1] as QtiSimpleAssociableChoice; const matchItem3List = Array.from(await canvas.findAllByShadowText('Demetrius')); const matchItem3CandidateResponse = matchItem3List[1] as QtiSimpleAssociableChoice; expect(matchItem1CandidateResponse.internals.states.has('candidate-correct')).toBe(true); expect(matchItem2CandidateResponse.internals.states.has('candidate-correct')).toBe(false); expect(matchItem3CandidateResponse.internals.states.has('candidate-correct')).toBe(false); expect(matchItem1CandidateResponse.internals.states.has('candidate-incorrect')).toBe(false); expect(matchItem2CandidateResponse.internals.states.has('candidate-incorrect')).toBe(true); expect(matchItem3CandidateResponse.internals.states.has('candidate-incorrect')).toBe(true); }); }); } }"
|
|
23589
|
+
"default": "{ args: { 'item-url': 'assets/qti-test-package/items/match.xml' // Set the new item URL here }, render: args => html` <qti-item> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-candidate-correction></item-show-candidate-correction> </div> </qti-item>`, play: async ({ canvasElement, step }) => { // wait for qti-simple-choice to be rendered - fresh UI state const canvas = within(canvasElement); const showCorrectButton = await canvas.findByShadowText(/Show candidate correction/i); const matchItem1 = (await canvas.findByShadowText('Prospero')) as QtiSimpleAssociableChoice; const matchItem2 = (await canvas.findByShadowText('Lysander')) as QtiSimpleAssociableChoice; const matchItem3 = (await canvas.findByShadowText('Demetrius')) as QtiSimpleAssociableChoice; const dropZone1 = await canvas.findByShadowText('The Tempest'); await step('Drag and drop all match interaction items to single dropzone', async () => { await drag(matchItem1, { to: dropZone1 }); await drag(matchItem2, { to: dropZone1 }); await drag(matchItem3, { to: dropZone1 }); await showCorrectButton.click(); await step('Verify candidate correction state is applied', async () => { const matchItem1List = Array.from(await canvas.findAllByShadowText('Prospero')); const matchItem1CandidateResponse = matchItem1List[1] as QtiSimpleAssociableChoice; const matchItem2List = Array.from(await canvas.findAllByShadowText('Lysander')); const matchItem2CandidateResponse = matchItem2List[1] as QtiSimpleAssociableChoice; const matchItem3List = Array.from(await canvas.findAllByShadowText('Demetrius')); const matchItem3CandidateResponse = matchItem3List[1] as QtiSimpleAssociableChoice; expect(matchItem1CandidateResponse.internals.states.has('candidate-correct')).toBe(true); expect(matchItem2CandidateResponse.internals.states.has('candidate-correct')).toBe(false); expect(matchItem3CandidateResponse.internals.states.has('candidate-correct')).toBe(false); expect(matchItem1CandidateResponse.internals.states.has('candidate-incorrect')).toBe(false); expect(matchItem2CandidateResponse.internals.states.has('candidate-incorrect')).toBe(true); expect(matchItem3CandidateResponse.internals.states.has('candidate-incorrect')).toBe(true); }); }); } }"
|
|
23565
23590
|
},
|
|
23566
23591
|
{
|
|
23567
23592
|
"kind": "variable",
|
|
@@ -23569,7 +23594,7 @@
|
|
|
23569
23594
|
"type": {
|
|
23570
23595
|
"text": "Meta<typeof ItemContainer & { 'item-url': string }>"
|
|
23571
23596
|
},
|
|
23572
|
-
"default": "{ component: 'item-container', args: { ...args, 'item-url': '/qti-item/example-choice-item.xml' }, argTypes, parameters: { actions: { handles: events } } // tags: ['autodocs', 'new'] }"
|
|
23597
|
+
"default": "{ component: 'item-container', args: { ...args, 'item-url': 'assets/qti-item/example-choice-item.xml' }, argTypes, parameters: { actions: { handles: events } } // tags: ['autodocs', 'new'] }"
|
|
23573
23598
|
},
|
|
23574
23599
|
{
|
|
23575
23600
|
"kind": "variable",
|
|
@@ -23577,7 +23602,7 @@
|
|
|
23577
23602
|
"type": {
|
|
23578
23603
|
"text": "Story"
|
|
23579
23604
|
},
|
|
23580
|
-
"default": "{ args: { 'item-url': '/qti-item/example-choice-multiple-item.xml' // Set the new item URL here }, render: args => html` <qti-item> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-candidate-correction ${spread(args)}></item-show-candidate-correction> </div> </qti-item>`, play: async ({ canvasElement, step }) => { // wait for qti-simple-choice to be rendered const canvas = within(canvasElement); // const choices = await canvas.findAllByShadowRole('radio'); const choiceA: QtiSimpleChoice = await canvas.findByShadowText('This is correct.'); const choiceB: QtiSimpleChoice = await canvas.findByShadowText('This is also correct.'); const choiceC: QtiSimpleChoice = await canvas.findByShadowText('This is wrong.'); const showCorrectButton = canvas.getAllByShadowText(/Show candidate correction/i)[0]; await step('Click on the Show Correct button', async () => { await choiceA.click(); await choiceC.click(); await showCorrectButton.click(); await step('Verify candidate correction state is applied', async () => { expect(choiceA.internals.states.has('candidate-correct')).toBe(true); expect(choiceB.internals.states.has('candidate-correct')).toBe(false); expect(choiceC.internals.states.has('candidate-correct')).toBe(false); expect(choiceA.internals.states.has('candidate-incorrect')).toBe(false); expect(choiceB.internals.states.has('candidate-incorrect')).toBe(false); expect(choiceC.internals.states.has('candidate-incorrect')).toBe(true); }); }); await step('Click on the Hide Correct button and deselect options', async () => { await showCorrectButton.click(); await step('Verify candidate correction state is removed', async () => { expect(choiceA.internals.states.has('candidate-correct')).toBe(false); expect(choiceB.internals.states.has('candidate-correct')).toBe(false); expect(choiceC.internals.states.has('candidate-correct')).toBe(false); expect(choiceA.internals.states.has('candidate-incorrect')).toBe(false); expect(choiceB.internals.states.has('candidate-incorrect')).toBe(false); expect(choiceC.internals.states.has('candidate-incorrect')).toBe(false); }); await choiceA.click(); await choiceC.click(); }); } }"
|
|
23605
|
+
"default": "{ args: { 'item-url': 'assets/qti-item/example-choice-multiple-item.xml' // Set the new item URL here }, render: args => html` <qti-item> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-candidate-correction ${spread(args)}></item-show-candidate-correction> </div> </qti-item>`, play: async ({ canvasElement, step }) => { // wait for qti-simple-choice to be rendered const canvas = within(canvasElement); // const choices = await canvas.findAllByShadowRole('radio'); const choiceA: QtiSimpleChoice = await canvas.findByShadowText('This is correct.'); const choiceB: QtiSimpleChoice = await canvas.findByShadowText('This is also correct.'); const choiceC: QtiSimpleChoice = await canvas.findByShadowText('This is wrong.'); const showCorrectButton = canvas.getAllByShadowText(/Show candidate correction/i)[0]; await step('Click on the Show Correct button', async () => { await choiceA.click(); await choiceC.click(); await showCorrectButton.click(); await step('Verify candidate correction state is applied', async () => { expect(choiceA.internals.states.has('candidate-correct')).toBe(true); expect(choiceB.internals.states.has('candidate-correct')).toBe(false); expect(choiceC.internals.states.has('candidate-correct')).toBe(false); expect(choiceA.internals.states.has('candidate-incorrect')).toBe(false); expect(choiceB.internals.states.has('candidate-incorrect')).toBe(false); expect(choiceC.internals.states.has('candidate-incorrect')).toBe(true); }); }); await step('Click on the Hide Correct button and deselect options', async () => { await showCorrectButton.click(); await step('Verify candidate correction state is removed', async () => { expect(choiceA.internals.states.has('candidate-correct')).toBe(false); expect(choiceB.internals.states.has('candidate-correct')).toBe(false); expect(choiceC.internals.states.has('candidate-correct')).toBe(false); expect(choiceA.internals.states.has('candidate-incorrect')).toBe(false); expect(choiceB.internals.states.has('candidate-incorrect')).toBe(false); expect(choiceC.internals.states.has('candidate-incorrect')).toBe(false); }); await choiceA.click(); await choiceC.click(); }); } }"
|
|
23581
23606
|
},
|
|
23582
23607
|
{
|
|
23583
23608
|
"kind": "variable",
|
|
@@ -23585,7 +23610,7 @@
|
|
|
23585
23610
|
"type": {
|
|
23586
23611
|
"text": "Story"
|
|
23587
23612
|
},
|
|
23588
|
-
"default": "{ args: { 'item-url': '/qti-item/example-choice-nocorrect-item.xml' // Set the new item URL here }, render: args => html` <qti-item> <item-container style=\"width: 400px; height: 350px; display: block;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-candidate-correction ${spread(args)}></item-show-candidate-correction> <!-- </div> --> </qti-item>`, play: async ({ canvasElement, step }) => { // // wait for qti-simple-choice to be rendered const canvas = within(canvasElement); await canvas.findByShadowText('You must stay with your luggage at all times.'); const _ = canvas.getAllByShadowText(/No correct response specified/i)[0]; const itemShowCorrect = canvasElement.querySelector('item-show-candidate-correction'); await step('Verify the Show Correct button is disabled', async () => { expect(itemShowCorrect.disabled).toBe(true); }); } }"
|
|
23613
|
+
"default": "{ args: { 'item-url': 'assets/qti-item/example-choice-nocorrect-item.xml' // Set the new item URL here }, render: args => html` <qti-item> <item-container style=\"width: 400px; height: 350px; display: block;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-candidate-correction ${spread(args)}></item-show-candidate-correction> <!-- </div> --> </qti-item>`, play: async ({ canvasElement, step }) => { // // wait for qti-simple-choice to be rendered const canvas = within(canvasElement); await canvas.findByShadowText('You must stay with your luggage at all times.'); const _ = canvas.getAllByShadowText(/No correct response specified/i)[0]; const itemShowCorrect = canvasElement.querySelector('item-show-candidate-correction'); await step('Verify the Show Correct button is disabled', async () => { expect(itemShowCorrect.disabled).toBe(true); }); } }"
|
|
23589
23614
|
},
|
|
23590
23615
|
{
|
|
23591
23616
|
"kind": "variable",
|
|
@@ -23593,7 +23618,7 @@
|
|
|
23593
23618
|
"type": {
|
|
23594
23619
|
"text": "Story"
|
|
23595
23620
|
},
|
|
23596
|
-
"default": "{ args: { 'item-url': '/qti-test-package/items/select_point.xml' }, render: args => html` <qti-item> <div> <item-container style=\"display: block; width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-candidate-correction></item-show-candidate-correction> </div> </qti-item> `, play: async ({ canvasElement, step }) => { const canvas = within(canvasElement); const showButton = await canvas.findByShadowText(/Show candidate correction/i); const image = await canvas.findByShadowAltText('UK Map'); await step('Click on correct point in the image', async () => { const rect = image.getBoundingClientRect(); await fireEvent.click(image, { clientX: rect.left + rect.width * 0.5, clientY: rect.top + rect.height * 0.4 }); }); await step('Click on incorrect points in the image', async () => { const rect = image.getBoundingClientRect(); await fireEvent.click(image, { clientX: rect.left + rect.width * 0.5, clientY: rect.top + rect.height * 0.6 }); await fireEvent.click(image, { clientX: rect.left + rect.width * 0.55, clientY: rect.top + rect.height * 0.65 }); }); await step('Click on the Show Candidate Correction button', async () => { await showButton.click(); await step('Verify candidate correction by checking selected options', async () => { const item = await getAssessmentItemFromItemContainer(canvasElement); const interaction: QtiSelectPointInteraction = item.querySelector('qti-select-point-interaction'); const buttonsCorrect = interaction.shadowRoot?.querySelectorAll<HTMLButtonElement>('button[part=\"point correct\"]'); const buttonsIncorrect = interaction.shadowRoot?.querySelectorAll<HTMLButtonElement>( 'button[part=\"point incorrect\"]' ); expect(buttonsCorrect).toHaveLength(1); expect(buttonsIncorrect).toHaveLength(2); }); }); } }"
|
|
23621
|
+
"default": "{ args: { 'item-url': 'assets/qti-test-package/items/select_point.xml' }, render: args => html` <qti-item> <div> <item-container style=\"display: block; width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-candidate-correction></item-show-candidate-correction> </div> </qti-item> `, play: async ({ canvasElement, step }) => { const canvas = within(canvasElement); const showButton = await canvas.findByShadowText(/Show candidate correction/i); const image = await canvas.findByShadowAltText('UK Map'); await step('Click on correct point in the image', async () => { const rect = image.getBoundingClientRect(); await fireEvent.click(image, { clientX: rect.left + rect.width * 0.5, clientY: rect.top + rect.height * 0.4 }); }); await step('Click on incorrect points in the image', async () => { const rect = image.getBoundingClientRect(); await fireEvent.click(image, { clientX: rect.left + rect.width * 0.5, clientY: rect.top + rect.height * 0.6 }); await fireEvent.click(image, { clientX: rect.left + rect.width * 0.55, clientY: rect.top + rect.height * 0.65 }); }); await step('Click on the Show Candidate Correction button', async () => { await showButton.click(); await step('Verify candidate correction by checking selected options', async () => { const item = await getAssessmentItemFromItemContainer(canvasElement); const interaction: QtiSelectPointInteraction = item.querySelector('qti-select-point-interaction'); const buttonsCorrect = interaction.shadowRoot?.querySelectorAll<HTMLButtonElement>('button[part=\"point correct\"]'); const buttonsIncorrect = interaction.shadowRoot?.querySelectorAll<HTMLButtonElement>( 'button[part=\"point incorrect\"]' ); expect(buttonsCorrect).toHaveLength(1); expect(buttonsIncorrect).toHaveLength(2); }); }); } }"
|
|
23597
23622
|
},
|
|
23598
23623
|
{
|
|
23599
23624
|
"kind": "variable",
|
|
@@ -23601,7 +23626,7 @@
|
|
|
23601
23626
|
"type": {
|
|
23602
23627
|
"text": "Story"
|
|
23603
23628
|
},
|
|
23604
|
-
"default": "{ args: { 'item-url': '/qti-item/example-text-entry.xml' }, render: args => html` <qti-item> <div> <item-container style=\"display: block; width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-candidate-correction></item-show-candidate-correction> </div> </qti-item> `, play: async ({ canvasElement, step }) => { const canvas = within(canvasElement); const showButton = await canvas.findByShadowText(/Show candidate correction/i); const item = await getAssessmentItemFromItemContainer(canvasElement); const interaction: QtiTextEntryInteraction = item.querySelector('qti-text-entry-interaction'); const input = interaction.shadowRoot?.querySelector<HTMLInputElement>('input'); await step('Type in the correct answer text entry interaction', async () => { input.value = 'York'; input.dispatchEvent(new Event('input', { bubbles: true })); input.dispatchEvent(new Event('change', { bubbles: true })); }); await step('Click on the Show Candidate Correction button', async () => { await showButton.click(); await step('Verify candidate correction by checking selected option', async () => { expect(interaction.internals.states.has('candidate-correct')).toBe(true); expect(interaction.internals.states.has('candidate-incorrect')).toBe(false); expect(interaction.internals.states.has('candidate-partially-correct')).toBe(false); }); }); await step('Type in the partially correct answer text entry interaction', async () => { input.value = 'york'; input.dispatchEvent(new Event('input', { bubbles: true })); input.dispatchEvent(new Event('change', { bubbles: true })); }); await step('Click on the Show Candidate Correction button', async () => { await showButton.click(); await step('Verify candidate correction by checking selected option', async () => { const interactionResponse: QtiTextEntryInteraction = item.querySelector('qti-text-entry-interaction'); expect(interactionResponse.internals.states.has('candidate-correct')).toBe(false); expect(interactionResponse.internals.states.has('candidate-incorrect')).toBe(false); expect(interactionResponse.internals.states.has('candidate-partially-correct')).toBe(true); }); }); await step('Type in the incorrect answer text entry interaction', async () => { input.value = 'bla'; input.dispatchEvent(new Event('input', { bubbles: true })); input.dispatchEvent(new Event('change', { bubbles: true })); }); await step('Click on the Show Candidate Correction button', async () => { await showButton.click(); await step('Verify candidate correction by checking selected option', async () => { const interactionResponse: QtiTextEntryInteraction = item.querySelector('qti-text-entry-interaction'); expect(interactionResponse.internals.states.has('candidate-correct')).toBe(false); expect(interactionResponse.internals.states.has('candidate-incorrect')).toBe(true); expect(interactionResponse.internals.states.has('candidate-partially-correct')).toBe(false); }); }); } }"
|
|
23629
|
+
"default": "{ args: { 'item-url': 'assets/qti-item/example-text-entry.xml' }, render: args => html` <qti-item> <div> <item-container style=\"display: block; width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-candidate-correction></item-show-candidate-correction> </div> </qti-item> `, play: async ({ canvasElement, step }) => { const canvas = within(canvasElement); const showButton = await canvas.findByShadowText(/Show candidate correction/i); const item = await getAssessmentItemFromItemContainer(canvasElement); const interaction: QtiTextEntryInteraction = item.querySelector('qti-text-entry-interaction'); const input = interaction.shadowRoot?.querySelector<HTMLInputElement>('input'); await step('Type in the correct answer text entry interaction', async () => { input.value = 'York'; input.dispatchEvent(new Event('input', { bubbles: true })); input.dispatchEvent(new Event('change', { bubbles: true })); }); await step('Click on the Show Candidate Correction button', async () => { await showButton.click(); await step('Verify candidate correction by checking selected option', async () => { expect(interaction.internals.states.has('candidate-correct')).toBe(true); expect(interaction.internals.states.has('candidate-incorrect')).toBe(false); expect(interaction.internals.states.has('candidate-partially-correct')).toBe(false); }); }); await step('Type in the partially correct answer text entry interaction', async () => { input.value = 'york'; input.dispatchEvent(new Event('input', { bubbles: true })); input.dispatchEvent(new Event('change', { bubbles: true })); }); await step('Click on the Show Candidate Correction button', async () => { await showButton.click(); await step('Verify candidate correction by checking selected option', async () => { const interactionResponse: QtiTextEntryInteraction = item.querySelector('qti-text-entry-interaction'); expect(interactionResponse.internals.states.has('candidate-correct')).toBe(false); expect(interactionResponse.internals.states.has('candidate-incorrect')).toBe(false); expect(interactionResponse.internals.states.has('candidate-partially-correct')).toBe(true); }); }); await step('Type in the incorrect answer text entry interaction', async () => { input.value = 'bla'; input.dispatchEvent(new Event('input', { bubbles: true })); input.dispatchEvent(new Event('change', { bubbles: true })); }); await step('Click on the Show Candidate Correction button', async () => { await showButton.click(); await step('Verify candidate correction by checking selected option', async () => { const interactionResponse: QtiTextEntryInteraction = item.querySelector('qti-text-entry-interaction'); expect(interactionResponse.internals.states.has('candidate-correct')).toBe(false); expect(interactionResponse.internals.states.has('candidate-incorrect')).toBe(true); expect(interactionResponse.internals.states.has('candidate-partially-correct')).toBe(false); }); }); } }"
|
|
23605
23630
|
}
|
|
23606
23631
|
],
|
|
23607
23632
|
"exports": [
|
|
@@ -23901,7 +23926,7 @@
|
|
|
23901
23926
|
"type": {
|
|
23902
23927
|
"text": "Story"
|
|
23903
23928
|
},
|
|
23904
|
-
"default": "{ args: { 'item-url': '/qti-test-package/items/gap_match.xml' // Set the new item URL here }, render: args => html` <qti-item> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response ${spread(args)}></item-show-correct-response> </div> </qti-item>`, play: async ({ canvasElement, step }) => { const canvas = within(canvasElement); const interaction = await getAssessmentItemFromItemContainer(canvasElement); const showCorrectButton = canvas.getAllByShadowText(/Show correct/i)[0]; await step('Click on the Show Correct button', async () => { await showCorrectButton.click(); const correctOptions = interaction.querySelectorAll(`[class=\"correct-option\"]`); expect(correctOptions.length).toBe(2); expect(correctOptions[0].textContent).toBe('winter'); expect(correctOptions[1].textContent).toBe('summer'); }); } }"
|
|
23929
|
+
"default": "{ args: { 'item-url': 'assets/qti-test-package/items/gap_match.xml' // Set the new item URL here }, render: args => html` <qti-item> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response ${spread(args)}></item-show-correct-response> </div> </qti-item>`, play: async ({ canvasElement, step }) => { const canvas = within(canvasElement); const interaction = await getAssessmentItemFromItemContainer(canvasElement); const showCorrectButton = canvas.getAllByShadowText(/Show correct/i)[0]; await step('Click on the Show Correct button', async () => { await showCorrectButton.click(); const correctOptions = interaction.querySelectorAll(`[class=\"correct-option\"]`); expect(correctOptions.length).toBe(2); expect(correctOptions[0].textContent).toBe('winter'); expect(correctOptions[1].textContent).toBe('summer'); }); } }"
|
|
23905
23930
|
},
|
|
23906
23931
|
{
|
|
23907
23932
|
"kind": "variable",
|
|
@@ -23909,7 +23934,7 @@
|
|
|
23909
23934
|
"type": {
|
|
23910
23935
|
"text": "Story"
|
|
23911
23936
|
},
|
|
23912
|
-
"default": "{ args: { 'item-url': '/qti-test-package/items/graphic_associate.xml' // Set the new item URL here }, render: args => html` <qti-item> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; border: 2px solid blue; transform: scale(0.7); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response></item-show-correct-response> <!-- <print-item-variables></print-item-variables> --> </div> </qti-item>`, play: async ({ canvasElement, step }) => { // wait for qti-simple-choices to be rendered const canvas = within(canvasElement); const item = await getAssessmentItemFromItemContainer(canvasElement); const interaction = item.querySelector('qti-graphic-associate-interaction'); const showCorrectButton = canvas.getAllByShadowText(/Show correct/i)[0]; await step('Click on the Show Correct button', async () => { await showCorrectButton.click(); const lines = interaction.shadowRoot.querySelector('line-container').querySelectorAll(`[part='correct-line']`).length === 2; expect(lines).toBe(true); }); } }"
|
|
23937
|
+
"default": "{ args: { 'item-url': 'assets/qti-test-package/items/graphic_associate.xml' // Set the new item URL here }, render: args => html` <qti-item> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; border: 2px solid blue; transform: scale(0.7); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response></item-show-correct-response> <!-- <print-item-variables></print-item-variables> --> </div> </qti-item>`, play: async ({ canvasElement, step }) => { // wait for qti-simple-choices to be rendered const canvas = within(canvasElement); const item = await getAssessmentItemFromItemContainer(canvasElement); const interaction = item.querySelector('qti-graphic-associate-interaction'); const showCorrectButton = canvas.getAllByShadowText(/Show correct/i)[0]; await step('Click on the Show Correct button', async () => { await showCorrectButton.click(); const lines = interaction.shadowRoot.querySelector('line-container').querySelectorAll(`[part='correct-line']`).length === 2; expect(lines).toBe(true); }); } }"
|
|
23913
23938
|
},
|
|
23914
23939
|
{
|
|
23915
23940
|
"kind": "variable",
|
|
@@ -23917,7 +23942,7 @@
|
|
|
23917
23942
|
"type": {
|
|
23918
23943
|
"text": "Story"
|
|
23919
23944
|
},
|
|
23920
|
-
"default": "{ args: { 'item-url': '/qti-item/example-graphic-order.xml' // Set the new item URL here }, render: args => html` <qti-item> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response></item-show-correct-response> </div> </qti-item>`, play: async ({ canvasElement, step }) => { // wait for qti-simple-choices to be rendered const canvas = within(canvasElement); const item = await getAssessmentItemFromItemContainer(canvasElement); const interaction = item.querySelector('qti-graphic-order-interaction'); const showCorrectButton = canvas.getAllByShadowText(/Show correct/i)[0]; await step('Click on the Show Correct button', async () => { await showCorrectButton.click(); const hotspotChoice = interaction.querySelectorAll('qti-hotspot-choice'); // const get after content expect(window.getComputedStyle(hotspotChoice[0], ':after').content).toBe('\"C=1\"'); expect(window.getComputedStyle(hotspotChoice[1], ':after').content).toBe('\"C=4\"'); expect(window.getComputedStyle(hotspotChoice[2], ':after').content).toBe('\"C=2\"'); expect(window.getComputedStyle(hotspotChoice[3], ':after').content).toBe('\"C=3\"'); }); } }"
|
|
23945
|
+
"default": "{ args: { 'item-url': 'assets/qti-item/example-graphic-order.xml' // Set the new item URL here }, render: args => html` <qti-item> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response></item-show-correct-response> </div> </qti-item>`, play: async ({ canvasElement, step }) => { // wait for qti-simple-choices to be rendered const canvas = within(canvasElement); const item = await getAssessmentItemFromItemContainer(canvasElement); const interaction = item.querySelector('qti-graphic-order-interaction'); const showCorrectButton = canvas.getAllByShadowText(/Show correct/i)[0]; await step('Click on the Show Correct button', async () => { await showCorrectButton.click(); const hotspotChoice = interaction.querySelectorAll('qti-hotspot-choice'); // const get after content expect(window.getComputedStyle(hotspotChoice[0], ':after').content).toBe('\"C=1\"'); expect(window.getComputedStyle(hotspotChoice[1], ':after').content).toBe('\"C=4\"'); expect(window.getComputedStyle(hotspotChoice[2], ':after').content).toBe('\"C=2\"'); expect(window.getComputedStyle(hotspotChoice[3], ':after').content).toBe('\"C=3\"'); }); } }"
|
|
23921
23946
|
},
|
|
23922
23947
|
{
|
|
23923
23948
|
"kind": "variable",
|
|
@@ -23925,7 +23950,7 @@
|
|
|
23925
23950
|
"type": {
|
|
23926
23951
|
"text": "Story"
|
|
23927
23952
|
},
|
|
23928
|
-
"default": "{ args: { 'item-url': '/qti-item/example-inline-choice.xml' // Zorg dat dit item een inline-choice bevat }, render: args => html`<qti-item> <div> <item-container style=\"display: block; width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response></item-show-correct-response> </div> </qti-item>`, play: async ({ canvasElement, step }) => { const item = document.querySelector('qti-item'); item.configContext = { correctResponseMode: 'full' }; const canvas = within(canvasElement); const showCorrectButton = await canvas.findByShadowText(/Show correct/i); await step('Click on the Show Correct button', async () => { await fireEvent.click(showCorrectButton); await step('Verify full correct response is shown', async () => { const fullCorrectResponse = await waitFor(() => canvas.getByShadowRole('full-correct-response')
|
|
23953
|
+
"default": "{ args: { 'item-url': 'assets/qti-item/example-inline-choice.xml' // Zorg dat dit item een inline-choice bevat }, render: args => html`<qti-item> <div> <item-container style=\"display: block; width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response></item-show-correct-response> </div> </qti-item>`, play: async ({ canvasElement, step }) => { const item = document.querySelector('qti-item'); item.configContext = { correctResponseMode: 'full' }; const canvas = within(canvasElement); const showCorrectButton = await canvas.findByShadowText(/Show correct/i); await step('Click on the Show Correct button', async () => { await fireEvent.click(showCorrectButton); await step('Verify full correct response is shown', async () => { const fullCorrectResponse = await waitFor(() => canvas.getByShadowRole('full-correct-response')); expect(fullCorrectResponse).toBeVisible(); const interaction = fullCorrectResponse.querySelector('qti-inline-choice-interaction'); expect(interaction).not.toBeNull(); const select = interaction.shadowRoot.querySelector('select'); expect(select).not.toBeNull(); const selectedOption = Array.from(select.options).find(opt => opt.selected); expect(selectedOption).not.toBeUndefined(); expect(selectedOption.textContent.trim()).toBe('York'); }); }); } }"
|
|
23929
23954
|
},
|
|
23930
23955
|
{
|
|
23931
23956
|
"kind": "variable",
|
|
@@ -23933,7 +23958,7 @@
|
|
|
23933
23958
|
"type": {
|
|
23934
23959
|
"text": "Story"
|
|
23935
23960
|
},
|
|
23936
|
-
"default": "{ args: { 'item-url': '/qti-item/example-inline-choice.xml' // Set the new item URL here }, render: args => html` <qti-item> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response></item-show-correct-response> </div> </qti-item>`, play: async ({ canvasElement, step }) => { const item = document.querySelector('qti-item'); item.configContext = { correctResponseMode: 'internal' }; const canvas = within(canvasElement); const itemAssessment = await getAssessmentItemFromItemContainer(canvasElement); const interaction = itemAssessment.querySelector('qti-inline-choice-interaction'); const showCorrectButton = await canvas.findByShadowText(`Show correct response`); await step('Click on the Show Correct button', async () => { await showCorrectButton.click(); const correctResponse = interaction.shadowRoot.querySelector<HTMLSpanElement>('[part=\"correct-option\"]'); //.findByShadowLabelText('correct-response'); expect(correctResponse).not.toBeNull(); expect(correctResponse.innerText).toBe('York'); }); } }"
|
|
23961
|
+
"default": "{ args: { 'item-url': 'assets/qti-item/example-inline-choice.xml' // Set the new item URL here }, render: args => html` <qti-item> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response></item-show-correct-response> </div> </qti-item>`, play: async ({ canvasElement, step }) => { const item = document.querySelector('qti-item'); item.configContext = { correctResponseMode: 'internal' }; const canvas = within(canvasElement); const itemAssessment = await getAssessmentItemFromItemContainer(canvasElement); const interaction = itemAssessment.querySelector('qti-inline-choice-interaction'); const showCorrectButton = await canvas.findByShadowText(`Show correct response`); await step('Click on the Show Correct button', async () => { await showCorrectButton.click(); const correctResponse = interaction.shadowRoot.querySelector<HTMLSpanElement>('[part=\"correct-option\"]'); //.findByShadowLabelText('correct-response'); expect(correctResponse).not.toBeNull(); expect(correctResponse.innerText).toBe('York'); }); } }"
|
|
23937
23962
|
},
|
|
23938
23963
|
{
|
|
23939
23964
|
"kind": "variable",
|
|
@@ -23941,7 +23966,7 @@
|
|
|
23941
23966
|
"type": {
|
|
23942
23967
|
"text": "Story"
|
|
23943
23968
|
},
|
|
23944
|
-
"default": "{ args: { 'item-url': '/qti-test-package/items/match.xml' // Set the new item URL here // 'item-url': 'api/kennisnet-1/ITEM002.xml' // Set the new item URL here }, render: args => html` <qti-item> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response ${spread(args)}></item-show-correct-response> </div> </qti-item>`, play: async ({ canvasElement, step }) => { const canvas = within(canvasElement); const interaction = await getAssessmentItemFromItemContainer(canvasElement); const showCorrectButton = canvas.getAllByShadowText(/Show correct/i)[0]; await step('Click on the Show Correct button', async () => { await showCorrectButton.click(); const correctElements = interaction.querySelectorAll(`[class=\"correct-option\"]`); expect(correctElements.length).toBe(3); const correctOptions = Array.from(correctElements).map(el => el.textContent); const allExist = correctOptions.every(element => ['Prospero', 'Demetrius', 'Capulet'].includes(element)); expect(allExist).toBe(true); }); } }"
|
|
23969
|
+
"default": "{ args: { 'item-url': 'assets/qti-test-package/items/match.xml' // Set the new item URL here // 'item-url': 'api/kennisnet-1/ITEM002.xml' // Set the new item URL here }, render: args => html` <qti-item> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response ${spread(args)}></item-show-correct-response> </div> </qti-item>`, play: async ({ canvasElement, step }) => { const canvas = within(canvasElement); const interaction = await getAssessmentItemFromItemContainer(canvasElement); const showCorrectButton = canvas.getAllByShadowText(/Show correct/i)[0]; await step('Click on the Show Correct button', async () => { await showCorrectButton.click(); const correctElements = interaction.querySelectorAll(`[class=\"correct-option\"]`); expect(correctElements.length).toBe(3); const correctOptions = Array.from(correctElements).map(el => el.textContent); const allExist = correctOptions.every(element => ['Prospero', 'Demetrius', 'Capulet'].includes(element)); expect(allExist).toBe(true); }); } }"
|
|
23945
23970
|
},
|
|
23946
23971
|
{
|
|
23947
23972
|
"kind": "variable",
|
|
@@ -23949,7 +23974,7 @@
|
|
|
23949
23974
|
"type": {
|
|
23950
23975
|
"text": "Story"
|
|
23951
23976
|
},
|
|
23952
|
-
"default": "{ args: { 'item-url': '/qti-test-package/items/match.xml' // Set the new item URL here // 'item-url': 'api/kennisnet-1/ITEM002.xml' // Set the new item URL here }, render: args => html` <qti-item> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response ${spread(args)}></item-show-correct-response> </div> </qti-item>`, play: async ({ canvasElement, step }) => { const item = document.querySelector('qti-item'); item.configContext = { correctResponseMode: 'full' }; const canvas = within(canvasElement); const showCorrectButton = await canvas.findByShadowText(/Show correct/i); await step('Click on the Show Correct button', async () => { await fireEvent.click(showCorrectButton); await step('Verify full correct response is shown', async () => { const fullCorrectResponse = await waitFor(() => canvas.getByShadowRole('full-correct-response')
|
|
23977
|
+
"default": "{ args: { 'item-url': 'assets/qti-test-package/items/match.xml' // Set the new item URL here // 'item-url': 'api/kennisnet-1/ITEM002.xml' // Set the new item URL here }, render: args => html` <qti-item> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response ${spread(args)}></item-show-correct-response> </div> </qti-item>`, play: async ({ canvasElement, step }) => { const item = document.querySelector('qti-item'); item.configContext = { correctResponseMode: 'full' }; const canvas = within(canvasElement); const showCorrectButton = await canvas.findByShadowText(/Show correct/i); await step('Click on the Show Correct button', async () => { await fireEvent.click(showCorrectButton); await step('Verify full correct response is shown', async () => { const fullCorrectResponse = await waitFor(() => canvas.getByShadowRole('full-correct-response')); expect(fullCorrectResponse).toBeVisible(); }); }); } }"
|
|
23953
23978
|
},
|
|
23954
23979
|
{
|
|
23955
23980
|
"kind": "variable",
|
|
@@ -23957,7 +23982,7 @@
|
|
|
23957
23982
|
"type": {
|
|
23958
23983
|
"text": "Story"
|
|
23959
23984
|
},
|
|
23960
|
-
"default": "{ args: { 'item-url': '/qti-test-package/items/match-tabular.xml' // Set the new item URL here // 'item-url': 'api/kennisnet-1/ITEM002.xml' // Set the new item URL here }, render: args => html` <qti-item> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response ${spread(args)}></item-show-correct-response> </div> </qti-item>`, play: async ({ canvasElement, step }) => { const canvas = within(canvasElement); const item = await getAssessmentItemFromItemContainer(canvasElement); const showCorrectButton = canvas.getAllByShadowText(/Show correct/i)[0]; const interaction = item.querySelector('qti-match-interaction'); await step('Click on the Show Correct button', async () => { await showCorrectButton.click(); // Find all elements with rb-correct or cb-correct parts // This uses the shadow DOM API to find elements with specific part attributes const correctRadioButtons = interaction.shadowRoot.querySelectorAll('[part~=\"rb-correct\"]'); const correctCheckboxes = interaction.shadowRoot.querySelectorAll('[part~=\"cb-correct\"]'); // Combine both types of correct elements const allCorrectElements = [...correctRadioButtons, ...correctCheckboxes] as HTMLInputElement[]; // Verify we have the expected number of correct answers expect(allCorrectElements.length).toBe(4); // Get the associated row identifiers for the correct options const correctRowIds = Array.from(allCorrectElements).map(el => el.name); // Get the values of the correct inputs (which contain the row and column IDs) const correctValues = Array.from(allCorrectElements).map(el => el.value); // Parse the values to extract row IDs const rowIds = correctValues.map(value => value.split(' ')[0]); // Verify the correct row IDs exist const expectedRowIds = ['C', 'P', 'L', 'D']; const allExist = rowIds.every(rowId => expectedRowIds.includes(rowId)); expect(allExist).toBe(true); }); } }"
|
|
23985
|
+
"default": "{ args: { 'item-url': 'assets/qti-test-package/items/match-tabular.xml' // Set the new item URL here // 'item-url': 'api/kennisnet-1/ITEM002.xml' // Set the new item URL here }, render: args => html` <qti-item> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response ${spread(args)}></item-show-correct-response> </div> </qti-item>`, play: async ({ canvasElement, step }) => { const canvas = within(canvasElement); const item = await getAssessmentItemFromItemContainer(canvasElement); const showCorrectButton = canvas.getAllByShadowText(/Show correct/i)[0]; const interaction = item.querySelector('qti-match-interaction'); await step('Click on the Show Correct button', async () => { await showCorrectButton.click(); // Find all elements with rb-correct or cb-correct parts // This uses the shadow DOM API to find elements with specific part attributes const correctRadioButtons = interaction.shadowRoot.querySelectorAll('[part~=\"rb-correct\"]'); const correctCheckboxes = interaction.shadowRoot.querySelectorAll('[part~=\"cb-correct\"]'); // Combine both types of correct elements const allCorrectElements = [...correctRadioButtons, ...correctCheckboxes] as HTMLInputElement[]; // Verify we have the expected number of correct answers expect(allCorrectElements.length).toBe(4); // Get the associated row identifiers for the correct options const correctRowIds = Array.from(allCorrectElements).map(el => el.name); // Get the values of the correct inputs (which contain the row and column IDs) const correctValues = Array.from(allCorrectElements).map(el => el.value); // Parse the values to extract row IDs const rowIds = correctValues.map(value => value.split(' ')[0]); // Verify the correct row IDs exist const expectedRowIds = ['C', 'P', 'L', 'D']; const allExist = rowIds.every(rowId => expectedRowIds.includes(rowId)); expect(allExist).toBe(true); }); } }"
|
|
23961
23986
|
},
|
|
23962
23987
|
{
|
|
23963
23988
|
"kind": "variable",
|
|
@@ -23965,7 +23990,7 @@
|
|
|
23965
23990
|
"type": {
|
|
23966
23991
|
"text": "Meta<typeof ItemContainer & { 'item-url': string }>"
|
|
23967
23992
|
},
|
|
23968
|
-
"default": "{ component: 'item-container', args: { ...args, 'item-url': '/qti-item/example-choice-item.xml' }, argTypes, parameters: { actions: { handles: events } } // tags: ['autodocs', 'new'] }"
|
|
23993
|
+
"default": "{ component: 'item-container', args: { ...args, 'item-url': 'assets/qti-item/example-choice-item.xml' }, argTypes, parameters: { actions: { handles: events } } // tags: ['autodocs', 'new'] }"
|
|
23969
23994
|
},
|
|
23970
23995
|
{
|
|
23971
23996
|
"kind": "variable",
|
|
@@ -23973,7 +23998,7 @@
|
|
|
23973
23998
|
"type": {
|
|
23974
23999
|
"text": "Story"
|
|
23975
24000
|
},
|
|
23976
|
-
"default": "{ args: { 'item-url': '/qti-item/example-multiple-interactions.xml' // Set the new item URL here }, render: args => html` <qti-item> <item-container style=\"width: 400px; height: 350px; display: block;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response ${spread(args)}></item-show-correct-response> <!-- </div> --> </qti-item>`, play: async ({ canvasElement, step }) => { // // wait for qti-simple-choice to be rendered const canvas = within(canvasElement); const interactions = await waitFor(() => { const itemContainer = canvasElement.querySelector('item-container'); if (!itemContainer) { throw new Error('Item container not found'); } if (!itemContainer.shadowRoot) { throw new Error('Shadow root not found'); } if (!itemContainer.shadowRoot.querySelector('qti-inline-choice-interaction')) { throw new Error('qti-inline-choice-interaction not found'); } return itemContainer.shadowRoot.querySelectorAll('qti-inline-choice-interaction'); }); const showCorrectButton = canvas.getAllByShadowText(/Show correct/i)[0]; await step('Click on the Show Correct button', async () => { await showCorrectButton.click(); }); await step('Verify correct response state is applied', async () => { for (const interaction of interactions) { const feedback = interaction.shadowRoot.querySelector('[part=\"correct-option\"]'); expect(feedback).not.toBeNull(); } }); } }"
|
|
24001
|
+
"default": "{ args: { 'item-url': 'assets/qti-item/example-multiple-interactions.xml' // Set the new item URL here }, render: args => html` <qti-item> <item-container style=\"width: 400px; height: 350px; display: block;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response ${spread(args)}></item-show-correct-response> <!-- </div> --> </qti-item>`, play: async ({ canvasElement, step }) => { // // wait for qti-simple-choice to be rendered const canvas = within(canvasElement); const interactions = await waitFor(() => { const itemContainer = canvasElement.querySelector('item-container'); if (!itemContainer) { throw new Error('Item container not found'); } if (!itemContainer.shadowRoot) { throw new Error('Shadow root not found'); } if (!itemContainer.shadowRoot.querySelector('qti-inline-choice-interaction')) { throw new Error('qti-inline-choice-interaction not found'); } return itemContainer.shadowRoot.querySelectorAll('qti-inline-choice-interaction'); }); const showCorrectButton = canvas.getAllByShadowText(/Show correct/i)[0]; await step('Click on the Show Correct button', async () => { await showCorrectButton.click(); }); await step('Verify correct response state is applied', async () => { for (const interaction of interactions) { const feedback = interaction.shadowRoot.querySelector('[part=\"correct-option\"]'); expect(feedback).not.toBeNull(); } }); } }"
|
|
23977
24002
|
},
|
|
23978
24003
|
{
|
|
23979
24004
|
"kind": "variable",
|
|
@@ -23981,7 +24006,7 @@
|
|
|
23981
24006
|
"type": {
|
|
23982
24007
|
"text": "Story"
|
|
23983
24008
|
},
|
|
23984
|
-
"default": "{ args: { 'item-url': '/qti-item/example-choice-multiple-item.xml' // Set the new item URL here }, render: args => html` <qti-item> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response ${spread(args)}></item-show-correct-response> </div> </qti-item>`, play: async ({ canvasElement, step }) => { const item = document.querySelector('qti-item'); item.configContext = { correctResponseMode: 'full'
|
|
24009
|
+
"default": "{ args: { 'item-url': 'assets/qti-item/example-choice-multiple-item.xml' // Set the new item URL here }, render: args => html` <qti-item> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response ${spread(args)}></item-show-correct-response> </div> </qti-item>`, play: async ({ canvasElement, step }) => { const item = document.querySelector('qti-item'); item.configContext = { correctResponseMode: 'full' }; const canvas = within(canvasElement); const showCorrectButton = await canvas.findByShadowText(/Show correct/i); await step('Select the correct response mode full', async () => { await fireEvent.click(showCorrectButton); await step('Verify correct response full state is applied', async () => { const fullCorrectResponse = await canvas.findByShadowRole('full-correct-response'); expect(fullCorrectResponse).toBeVisible(); const interaction = fullCorrectResponse.querySelector('qti-choice-interaction'); const choices = Array.from(interaction.querySelectorAll('qti-simple-choice')); await interaction.updateComplete; expect(choices[0].internals.states.has('--checked')).toBe(true); expect(choices[1].internals.states.has('--checked')).toBe(true); expect(choices[2].internals.states.has('--checked')).toBe(false); }); }); } }"
|
|
23985
24010
|
},
|
|
23986
24011
|
{
|
|
23987
24012
|
"kind": "variable",
|
|
@@ -23989,7 +24014,7 @@
|
|
|
23989
24014
|
"type": {
|
|
23990
24015
|
"text": "Story"
|
|
23991
24016
|
},
|
|
23992
|
-
"default": "{ args: { 'item-url': '/qti-item/example-choice-multiple-item.xml' // Set the new item URL here }, render: args => html` <qti-item> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response ${spread(args)}></item-show-correct-response> </div> </qti-item>`, play: async ({ canvasElement, step }) => { const item = document.querySelector('qti-item'); item.configContext = { correctResponseMode: 'internal' }; // wait for qti-simple-choice to be rendered const canvas = within(canvasElement); // const choices = await canvas.findAllByShadowRole('radio'); const choiceA: QtiSimpleChoice = await canvas.findByShadowText('This is correct.'); const choiceB: QtiSimpleChoice = await canvas.findByShadowText('This is also correct.'); const choiceC: QtiSimpleChoice = await canvas.findByShadowText('This is wrong.'); const showCorrectButton = await canvas.findByShadowText(/Show correct/i); await step('Click on the Show Correct button', async () => { await showCorrectButton.click(); await step('Verify correct response state is applied', async () => { expect(choiceA.internals.states.has('correct-response')).toBe(true); expect(choiceB.internals.states.has('correct-response')).toBe(true); expect(choiceC.internals.states.has('correct-response')).toBe(false); expect(choiceA.internals.states.has('incorrect-response')).toBe(false); expect(choiceB.internals.states.has('incorrect-response')).toBe(false); expect(choiceC.internals.states.has('incorrect-response')).toBe(true); }); }); } }"
|
|
24017
|
+
"default": "{ args: { 'item-url': 'assets/qti-item/example-choice-multiple-item.xml' // Set the new item URL here }, render: args => html` <qti-item> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response ${spread(args)}></item-show-correct-response> </div> </qti-item>`, play: async ({ canvasElement, step }) => { const item = document.querySelector('qti-item'); item.configContext = { correctResponseMode: 'internal' }; // wait for qti-simple-choice to be rendered const canvas = within(canvasElement); // const choices = await canvas.findAllByShadowRole('radio'); const choiceA: QtiSimpleChoice = await canvas.findByShadowText('This is correct.'); const choiceB: QtiSimpleChoice = await canvas.findByShadowText('This is also correct.'); const choiceC: QtiSimpleChoice = await canvas.findByShadowText('This is wrong.'); const showCorrectButton = await canvas.findByShadowText(/Show correct/i); await step('Click on the Show Correct button', async () => { await showCorrectButton.click(); await step('Verify correct response state is applied', async () => { expect(choiceA.internals.states.has('correct-response')).toBe(true); expect(choiceB.internals.states.has('correct-response')).toBe(true); expect(choiceC.internals.states.has('correct-response')).toBe(false); expect(choiceA.internals.states.has('incorrect-response')).toBe(false); expect(choiceB.internals.states.has('incorrect-response')).toBe(false); expect(choiceC.internals.states.has('incorrect-response')).toBe(true); }); }); } }"
|
|
23993
24018
|
},
|
|
23994
24019
|
{
|
|
23995
24020
|
"kind": "variable",
|
|
@@ -23997,7 +24022,7 @@
|
|
|
23997
24022
|
"type": {
|
|
23998
24023
|
"text": "Story"
|
|
23999
24024
|
},
|
|
24000
|
-
"default": "{ args: { 'item-url': '/qti-item/example-choice-nocorrect-item.xml' // Set the new item URL here }, render: args => html` <qti-item> <item-container style=\"width: 400px; height: 350px; display: block;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response ${spread(args)}></item-show-correct-response> <!-- </div> --> </qti-item>`, play: async ({ canvasElement, step }) => { // // wait for qti-simple-choice to be rendered const canvas = within(canvasElement); await canvas.findByShadowText('You must stay with your luggage at all times.'); const _ = canvas.getAllByShadowText(/No correct response specified/i)[0]; const itemShowCorrect = canvasElement.querySelector('item-show-correct-response'); await step('Verify the Show Correct button is disabled', async () => { expect(itemShowCorrect.disabled).toBe(true); }); } }"
|
|
24025
|
+
"default": "{ args: { 'item-url': 'assets/qti-item/example-choice-nocorrect-item.xml' // Set the new item URL here }, render: args => html` <qti-item> <item-container style=\"width: 400px; height: 350px; display: block;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response ${spread(args)}></item-show-correct-response> <!-- </div> --> </qti-item>`, play: async ({ canvasElement, step }) => { // // wait for qti-simple-choice to be rendered const canvas = within(canvasElement); await canvas.findByShadowText('You must stay with your luggage at all times.'); const _ = canvas.getAllByShadowText(/No correct response specified/i)[0]; const itemShowCorrect = canvasElement.querySelector('item-show-correct-response'); await step('Verify the Show Correct button is disabled', async () => { expect(itemShowCorrect.disabled).toBe(true); }); } }"
|
|
24001
24026
|
},
|
|
24002
24027
|
{
|
|
24003
24028
|
"kind": "variable",
|
|
@@ -24005,7 +24030,7 @@
|
|
|
24005
24030
|
"type": {
|
|
24006
24031
|
"text": "Story"
|
|
24007
24032
|
},
|
|
24008
|
-
"default": "{ args: { 'item-url': '/qti-test-package/items/select_point.xml' // Set the new item URL here }, render: args => html`<qti-item> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response ${spread(args)}></item-show-correct-response> </div> </qti-item>`, play: async ({ canvasElement, step }) => { // wait for qti-simple-choice to be rendered const canvas = within(canvasElement); const item = await getAssessmentItemFromItemContainer(canvasElement); const interaction = item.querySelector('qti-select-point-interaction'); const showCorrectButton = canvas.getAllByShadowText(/Show correct/i)[0]; await step('Click on the Show Correct button', async () => { await showCorrectButton.click(); const correctIndication = interaction.shadowRoot.querySelector('[alt=\"correct-response-1\"]'); expect(correctIndication).not.toBeNull(); }); } }"
|
|
24033
|
+
"default": "{ args: { 'item-url': 'assets/qti-test-package/items/select_point.xml' // Set the new item URL here }, render: args => html`<qti-item> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response ${spread(args)}></item-show-correct-response> </div> </qti-item>`, play: async ({ canvasElement, step }) => { // wait for qti-simple-choice to be rendered const canvas = within(canvasElement); const item = await getAssessmentItemFromItemContainer(canvasElement); const interaction = item.querySelector('qti-select-point-interaction'); const showCorrectButton = canvas.getAllByShadowText(/Show correct/i)[0]; await step('Click on the Show Correct button', async () => { await showCorrectButton.click(); const correctIndication = interaction.shadowRoot.querySelector('[alt=\"correct-response-1\"]'); expect(correctIndication).not.toBeNull(); }); } }"
|
|
24009
24034
|
},
|
|
24010
24035
|
{
|
|
24011
24036
|
"kind": "variable",
|
|
@@ -24013,7 +24038,7 @@
|
|
|
24013
24038
|
"type": {
|
|
24014
24039
|
"text": "Story"
|
|
24015
24040
|
},
|
|
24016
|
-
"default": "{ args: { 'item-url': '/qti-item/example-select-point.xml' // Set the new item URL here }, render: args => html` <qti-item> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response ${spread(args)}></item-show-correct-response> </div> </qti-item>`, play: async ({ canvasElement, step }) => { // wait for qti-simple-choices to be rendered const canvas = within(canvasElement); const item = await getAssessmentItemFromItemContainer(canvasElement); const interaction = item.querySelector('qti-select-point-interaction'); const showCorrectButton = canvas.getAllByShadowText(/Show correct/i)[0]; await step('Click on the Show Correct button', async () => { await showCorrectButton.click(); const correctIndication1 = interaction.shadowRoot.querySelector('[alt=\"correct-response-1\"]'); const correctIndication2 = interaction.shadowRoot.querySelector('[alt=\"correct-response-2\"]'); const correctIndication3 = interaction.shadowRoot.querySelector('[alt=\"correct-response-3\"]'); expect(correctIndication1).not.toBeNull(); expect(correctIndication2).not.toBeNull(); expect(correctIndication3).not.toBeNull(); }); } }"
|
|
24041
|
+
"default": "{ args: { 'item-url': 'assets/qti-item/example-select-point.xml' // Set the new item URL here }, render: args => html` <qti-item> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response ${spread(args)}></item-show-correct-response> </div> </qti-item>`, play: async ({ canvasElement, step }) => { // wait for qti-simple-choices to be rendered const canvas = within(canvasElement); const item = await getAssessmentItemFromItemContainer(canvasElement); const interaction = item.querySelector('qti-select-point-interaction'); const showCorrectButton = canvas.getAllByShadowText(/Show correct/i)[0]; await step('Click on the Show Correct button', async () => { await showCorrectButton.click(); const correctIndication1 = interaction.shadowRoot.querySelector('[alt=\"correct-response-1\"]'); const correctIndication2 = interaction.shadowRoot.querySelector('[alt=\"correct-response-2\"]'); const correctIndication3 = interaction.shadowRoot.querySelector('[alt=\"correct-response-3\"]'); expect(correctIndication1).not.toBeNull(); expect(correctIndication2).not.toBeNull(); expect(correctIndication3).not.toBeNull(); }); } }"
|
|
24017
24042
|
},
|
|
24018
24043
|
{
|
|
24019
24044
|
"kind": "variable",
|
|
@@ -24021,7 +24046,7 @@
|
|
|
24021
24046
|
"type": {
|
|
24022
24047
|
"text": "Story"
|
|
24023
24048
|
},
|
|
24024
|
-
"default": "{ args: { 'item-url': '/qti-item/example-slider.xml' // Set the new item URL here }, render: args => html` <qti-item> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response></item-show-correct-response> </div> </qti-item>`, play: async ({ canvasElement, step }) => { // wait for qti-simple-choices to be rendered const canvas = within(canvasElement); const item = await getAssessmentItemFromItemContainer(canvasElement); const interaction = item.querySelector('qti-slider-interaction'); const showCorrectButton = canvas.getAllByShadowText(/Show correct/i)[0]; await step('Click on the Show Correct button', async () => { await showCorrectButton.click(); const correctIndication = interaction.shadowRoot.querySelectorAll('[id=\"knob-correct\"]'); expect(correctIndication.length).toBe(1); }); } }"
|
|
24049
|
+
"default": "{ args: { 'item-url': 'assets/qti-item/example-slider.xml' // Set the new item URL here }, render: args => html` <qti-item> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response></item-show-correct-response> </div> </qti-item>`, play: async ({ canvasElement, step }) => { // wait for qti-simple-choices to be rendered const canvas = within(canvasElement); const item = await getAssessmentItemFromItemContainer(canvasElement); const interaction = item.querySelector('qti-slider-interaction'); const showCorrectButton = canvas.getAllByShadowText(/Show correct/i)[0]; await step('Click on the Show Correct button', async () => { await showCorrectButton.click(); const correctIndication = interaction.shadowRoot.querySelectorAll('[id=\"knob-correct\"]'); expect(correctIndication.length).toBe(1); }); } }"
|
|
24025
24050
|
},
|
|
24026
24051
|
{
|
|
24027
24052
|
"kind": "variable",
|
|
@@ -24029,7 +24054,7 @@
|
|
|
24029
24054
|
"type": {
|
|
24030
24055
|
"text": "Story"
|
|
24031
24056
|
},
|
|
24032
|
-
"default": "{ args: { 'item-url': '/qti-test-package/items/text_entry.xml' // Set the new item URL here }, render: args => html` <qti-item navigate=\"item\"> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response ${spread(args)}></item-show-correct-response> </div> </qti-item>`, play: async ({ canvasElement, step }) => { const test = document.querySelector('qti-item'); test.configContext = { correctResponseMode: 'full' }; const canvas = within(canvasElement); const showCorrectButton = await canvas.findByShadowText(/Show correct/i); await step('Select the correct response mode full', async () => { await fireEvent.click(showCorrectButton); await step('Verify correct response full state is applied', async () => { const fullCorrectResponse = await canvas.findByShadowRole('full-correct-response'); expect(fullCorrectResponse).toBeVisible(); }); }); } }"
|
|
24057
|
+
"default": "{ args: { 'item-url': 'assets/qti-test-package/items/text_entry.xml' // Set the new item URL here }, render: args => html` <qti-item navigate=\"item\"> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response ${spread(args)}></item-show-correct-response> </div> </qti-item>`, play: async ({ canvasElement, step }) => { const test = document.querySelector('qti-item'); test.configContext = { correctResponseMode: 'full' }; const canvas = within(canvasElement); const showCorrectButton = await canvas.findByShadowText(/Show correct/i); await step('Select the correct response mode full', async () => { await fireEvent.click(showCorrectButton); await step('Verify correct response full state is applied', async () => { const fullCorrectResponse = await canvas.findByShadowRole('full-correct-response'); expect(fullCorrectResponse).toBeVisible(); }); }); } }"
|
|
24033
24058
|
},
|
|
24034
24059
|
{
|
|
24035
24060
|
"kind": "variable",
|
|
@@ -24037,7 +24062,7 @@
|
|
|
24037
24062
|
"type": {
|
|
24038
24063
|
"text": "Story"
|
|
24039
24064
|
},
|
|
24040
|
-
"default": "{ args: { 'item-url': '/qti-test-package/items/text_entry.xml' // Set the new item URL here }, render: args => html` <qti-item navigate=\"item\"> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response ${spread(args)}></item-show-correct-response> </div> </qti-item>`, play: async ({ canvasElement, step }) => { const test = document.querySelector('qti-item'); test.configContext = { correctResponseMode: 'internal' }; const canvas = within(canvasElement); const item = await getAssessmentItemFromItemContainer(canvasElement); const interaction = item.querySelector('qti-text-entry-interaction'); const showCorrectButton = canvas.getAllByShadowText(/Show correct/i)[0]; await step('Click on the Show Correct button', async () => { await showCorrectButton.click(); const correctElement = interaction.shadowRoot.querySelector('[part=\"correct\"]'); expect(correctElement).toBeVisible(); }); } }"
|
|
24065
|
+
"default": "{ args: { 'item-url': 'assets/qti-test-package/items/text_entry.xml' // Set the new item URL here }, render: args => html` <qti-item navigate=\"item\"> <div> <item-container style=\"display: block;width: 400px; height: 350px;\" item-url=${args['item-url'] as string}> <template> <style> qti-assessment-item { padding: 1rem; display: block; aspect-ratio: 4 / 3; width: 800px; border: 2px solid blue; transform: scale(0.5); transform-origin: top left; } </style> </template> </item-container> <item-show-correct-response ${spread(args)}></item-show-correct-response> </div> </qti-item>`, play: async ({ canvasElement, step }) => { const test = document.querySelector('qti-item'); test.configContext = { correctResponseMode: 'internal' }; const canvas = within(canvasElement); const item = await getAssessmentItemFromItemContainer(canvasElement); const interaction = item.querySelector('qti-text-entry-interaction'); const showCorrectButton = canvas.getAllByShadowText(/Show correct/i)[0]; await step('Click on the Show Correct button', async () => { await showCorrectButton.click(); const correctElement = interaction.shadowRoot.querySelector('[part=\"correct\"]'); expect(correctElement).toBeVisible(); }); } }"
|
|
24041
24066
|
}
|
|
24042
24067
|
],
|
|
24043
24068
|
"exports": [
|
|
@@ -27785,28 +27810,79 @@
|
|
|
27785
27810
|
"declarations": [
|
|
27786
27811
|
{
|
|
27787
27812
|
"kind": "mixin",
|
|
27788
|
-
"description": "",
|
|
27813
|
+
"description": "Navigation mixin for QTI test components\n\nProvides comprehensive navigation functionality with:\n- Efficient item/section loading with AbortController support\n- Stimulus reference coordination and duplicate prevention\n- Proper event timing and state management\n- Error handling and edge case coverage",
|
|
27789
27814
|
"name": "TestNavigationMixin",
|
|
27790
27815
|
"members": [
|
|
27791
27816
|
{
|
|
27792
27817
|
"kind": "field",
|
|
27793
|
-
"name": "
|
|
27818
|
+
"name": "_activeController",
|
|
27794
27819
|
"type": {
|
|
27795
|
-
"text": "
|
|
27820
|
+
"text": "AbortController | null"
|
|
27796
27821
|
},
|
|
27797
27822
|
"privacy": "private",
|
|
27798
|
-
"default": "
|
|
27823
|
+
"default": "null"
|
|
27824
|
+
},
|
|
27825
|
+
{
|
|
27826
|
+
"kind": "method",
|
|
27827
|
+
"name": "_applyStimulusContent",
|
|
27828
|
+
"privacy": "private",
|
|
27829
|
+
"return": {
|
|
27830
|
+
"type": {
|
|
27831
|
+
"text": "void"
|
|
27832
|
+
}
|
|
27833
|
+
},
|
|
27834
|
+
"parameters": [
|
|
27835
|
+
{
|
|
27836
|
+
"name": "stimulus",
|
|
27837
|
+
"type": {
|
|
27838
|
+
"text": "DocumentFragment | null"
|
|
27839
|
+
}
|
|
27840
|
+
},
|
|
27841
|
+
{
|
|
27842
|
+
"name": "element",
|
|
27843
|
+
"type": {
|
|
27844
|
+
"text": "{ identifier: string }"
|
|
27845
|
+
}
|
|
27846
|
+
},
|
|
27847
|
+
{
|
|
27848
|
+
"name": "item",
|
|
27849
|
+
"type": {
|
|
27850
|
+
"text": "{ identifier: string }"
|
|
27851
|
+
}
|
|
27852
|
+
}
|
|
27853
|
+
]
|
|
27854
|
+
},
|
|
27855
|
+
{
|
|
27856
|
+
"kind": "method",
|
|
27857
|
+
"name": "_bindEventHandlers",
|
|
27858
|
+
"privacy": "private",
|
|
27859
|
+
"return": {
|
|
27860
|
+
"type": {
|
|
27861
|
+
"text": "void"
|
|
27862
|
+
}
|
|
27863
|
+
}
|
|
27864
|
+
},
|
|
27865
|
+
{
|
|
27866
|
+
"kind": "method",
|
|
27867
|
+
"name": "_cancelPreviousNavigation",
|
|
27868
|
+
"privacy": "private",
|
|
27869
|
+
"return": {
|
|
27870
|
+
"type": {
|
|
27871
|
+
"text": "void"
|
|
27872
|
+
}
|
|
27873
|
+
},
|
|
27874
|
+
"description": "Cancel previous navigation and clean up all state"
|
|
27799
27875
|
},
|
|
27800
27876
|
{
|
|
27801
27877
|
"kind": "method",
|
|
27802
|
-
"name": "
|
|
27878
|
+
"name": "_checkLoadingComplete",
|
|
27803
27879
|
"privacy": "private",
|
|
27804
27880
|
"return": {
|
|
27805
27881
|
"type": {
|
|
27806
27882
|
"text": "void"
|
|
27807
27883
|
}
|
|
27808
27884
|
},
|
|
27809
|
-
"description": "
|
|
27885
|
+
"description": "Check if loading is complete and dispatch events accordingly"
|
|
27810
27886
|
},
|
|
27811
27887
|
{
|
|
27812
27888
|
"kind": "method",
|
|
@@ -27816,12 +27892,61 @@
|
|
|
27816
27892
|
"type": {
|
|
27817
27893
|
"text": "void"
|
|
27818
27894
|
}
|
|
27895
|
+
}
|
|
27896
|
+
},
|
|
27897
|
+
{
|
|
27898
|
+
"kind": "method",
|
|
27899
|
+
"name": "_clearNavigationState",
|
|
27900
|
+
"privacy": "private",
|
|
27901
|
+
"return": {
|
|
27902
|
+
"type": {
|
|
27903
|
+
"text": "void"
|
|
27904
|
+
}
|
|
27905
|
+
}
|
|
27906
|
+
},
|
|
27907
|
+
{
|
|
27908
|
+
"kind": "method",
|
|
27909
|
+
"name": "_clearStimulusRef",
|
|
27910
|
+
"privacy": "private",
|
|
27911
|
+
"return": {
|
|
27912
|
+
"type": {
|
|
27913
|
+
"text": "void"
|
|
27914
|
+
}
|
|
27915
|
+
}
|
|
27916
|
+
},
|
|
27917
|
+
{
|
|
27918
|
+
"kind": "method",
|
|
27919
|
+
"name": "_createNavigationError",
|
|
27920
|
+
"privacy": "private",
|
|
27921
|
+
"return": {
|
|
27922
|
+
"type": {
|
|
27923
|
+
"text": "NavigationError"
|
|
27924
|
+
}
|
|
27819
27925
|
},
|
|
27820
|
-
"
|
|
27926
|
+
"parameters": [
|
|
27927
|
+
{
|
|
27928
|
+
"name": "error",
|
|
27929
|
+
"type": {
|
|
27930
|
+
"text": "any"
|
|
27931
|
+
}
|
|
27932
|
+
},
|
|
27933
|
+
{
|
|
27934
|
+
"name": "type",
|
|
27935
|
+
"type": {
|
|
27936
|
+
"text": "string"
|
|
27937
|
+
}
|
|
27938
|
+
},
|
|
27939
|
+
{
|
|
27940
|
+
"name": "id",
|
|
27941
|
+
"type": {
|
|
27942
|
+
"text": "string"
|
|
27943
|
+
}
|
|
27944
|
+
}
|
|
27945
|
+
]
|
|
27821
27946
|
},
|
|
27822
27947
|
{
|
|
27823
27948
|
"kind": "method",
|
|
27824
|
-
"name": "
|
|
27949
|
+
"name": "_dispatchError",
|
|
27825
27950
|
"privacy": "private",
|
|
27826
27951
|
"return": {
|
|
27827
27952
|
"type": {
|
|
@@ -27835,12 +27960,11 @@
|
|
|
27835
27960
|
"text": "NavigationError"
|
|
27836
27961
|
}
|
|
27837
27962
|
}
|
|
27838
|
-
]
|
|
27839
|
-
"description": "Dispatch error event to notify the UI"
|
|
27963
|
+
]
|
|
27840
27964
|
},
|
|
27841
27965
|
{
|
|
27842
27966
|
"kind": "method",
|
|
27843
|
-
"name": "
|
|
27967
|
+
"name": "_dispatchLoadingEnded",
|
|
27844
27968
|
"privacy": "private",
|
|
27845
27969
|
"return": {
|
|
27846
27970
|
"type": {
|
|
@@ -27849,107 +27973,146 @@
|
|
|
27849
27973
|
},
|
|
27850
27974
|
"parameters": [
|
|
27851
27975
|
{
|
|
27852
|
-
"name": "
|
|
27976
|
+
"name": "type",
|
|
27977
|
+
"type": {
|
|
27978
|
+
"text": "string"
|
|
27979
|
+
}
|
|
27980
|
+
},
|
|
27981
|
+
{
|
|
27982
|
+
"name": "id",
|
|
27853
27983
|
"type": {
|
|
27854
|
-
"text": "
|
|
27984
|
+
"text": "string"
|
|
27855
27985
|
}
|
|
27856
27986
|
}
|
|
27857
|
-
]
|
|
27858
|
-
"description": "Dispatch status event to indicate loading state"
|
|
27987
|
+
]
|
|
27859
27988
|
},
|
|
27860
27989
|
{
|
|
27861
27990
|
"kind": "method",
|
|
27862
|
-
"name": "
|
|
27991
|
+
"name": "_dispatchLoadingStarted",
|
|
27863
27992
|
"privacy": "private",
|
|
27864
27993
|
"return": {
|
|
27865
27994
|
"type": {
|
|
27866
|
-
"text": "
|
|
27995
|
+
"text": "void"
|
|
27867
27996
|
}
|
|
27868
27997
|
},
|
|
27869
27998
|
"parameters": [
|
|
27870
27999
|
{
|
|
27871
|
-
"name": "
|
|
28000
|
+
"name": "type",
|
|
28001
|
+
"type": {
|
|
28002
|
+
"text": "string"
|
|
28003
|
+
}
|
|
28004
|
+
},
|
|
28005
|
+
{
|
|
28006
|
+
"name": "id",
|
|
27872
28007
|
"type": {
|
|
27873
28008
|
"text": "string"
|
|
27874
28009
|
}
|
|
27875
28010
|
}
|
|
27876
|
-
]
|
|
27877
|
-
"description": "Gets all item IDs in a section"
|
|
28011
|
+
]
|
|
27878
28012
|
},
|
|
27879
28013
|
{
|
|
27880
28014
|
"kind": "method",
|
|
27881
|
-
"name": "
|
|
28015
|
+
"name": "_dispatchTestLoaded",
|
|
27882
28016
|
"privacy": "private",
|
|
27883
28017
|
"return": {
|
|
27884
28018
|
"type": {
|
|
27885
28019
|
"text": "void"
|
|
27886
28020
|
}
|
|
27887
28021
|
},
|
|
27888
|
-
"
|
|
28022
|
+
"parameters": [
|
|
28023
|
+
{
|
|
28024
|
+
"name": "results",
|
|
28025
|
+
"type": {
|
|
28026
|
+
"text": "any[]"
|
|
28027
|
+
}
|
|
28028
|
+
}
|
|
28029
|
+
]
|
|
27889
28030
|
},
|
|
27890
28031
|
{
|
|
27891
|
-
"kind": "
|
|
27892
|
-
"name": "
|
|
27893
|
-
"type": {
|
|
27894
|
-
"text": "NavigationError | null"
|
|
27895
|
-
},
|
|
28032
|
+
"kind": "method",
|
|
28033
|
+
"name": "_executeNavigation",
|
|
27896
28034
|
"privacy": "private",
|
|
27897
|
-
"
|
|
28035
|
+
"return": {
|
|
28036
|
+
"type": {
|
|
28037
|
+
"text": "Promise<void>"
|
|
28038
|
+
}
|
|
28039
|
+
},
|
|
28040
|
+
"parameters": [
|
|
28041
|
+
{
|
|
28042
|
+
"name": "type",
|
|
28043
|
+
"type": {
|
|
28044
|
+
"text": "'item' | 'section'"
|
|
28045
|
+
}
|
|
28046
|
+
},
|
|
28047
|
+
{
|
|
28048
|
+
"name": "id",
|
|
28049
|
+
"type": {
|
|
28050
|
+
"text": "string"
|
|
28051
|
+
}
|
|
28052
|
+
}
|
|
28053
|
+
]
|
|
27898
28054
|
},
|
|
27899
28055
|
{
|
|
27900
|
-
"kind": "
|
|
27901
|
-
"name": "
|
|
27902
|
-
"type": {
|
|
27903
|
-
"text": "string | null"
|
|
27904
|
-
},
|
|
28056
|
+
"kind": "method",
|
|
28057
|
+
"name": "_findItemRef",
|
|
27905
28058
|
"privacy": "private",
|
|
27906
|
-
"
|
|
28059
|
+
"return": {
|
|
28060
|
+
"type": {
|
|
28061
|
+
"text": "QtiAssessmentItemRef"
|
|
28062
|
+
}
|
|
28063
|
+
},
|
|
28064
|
+
"parameters": [
|
|
28065
|
+
{
|
|
28066
|
+
"name": "itemId",
|
|
28067
|
+
"type": {
|
|
28068
|
+
"text": "string"
|
|
28069
|
+
}
|
|
28070
|
+
}
|
|
28071
|
+
]
|
|
27907
28072
|
},
|
|
27908
28073
|
{
|
|
27909
28074
|
"kind": "method",
|
|
27910
|
-
"name": "
|
|
28075
|
+
"name": "_findSection",
|
|
27911
28076
|
"privacy": "private",
|
|
27912
28077
|
"return": {
|
|
27913
28078
|
"type": {
|
|
27914
|
-
"text": "
|
|
28079
|
+
"text": "QtiAssessmentSection | null"
|
|
27915
28080
|
}
|
|
27916
28081
|
},
|
|
27917
28082
|
"parameters": [
|
|
27918
28083
|
{
|
|
27919
|
-
"name": "
|
|
28084
|
+
"name": "sectionId",
|
|
27920
28085
|
"type": {
|
|
27921
|
-
"text": "string
|
|
28086
|
+
"text": "string"
|
|
27922
28087
|
}
|
|
27923
28088
|
}
|
|
27924
|
-
]
|
|
27925
|
-
"description": "Load items with improved error handling and timeout"
|
|
28089
|
+
]
|
|
27926
28090
|
},
|
|
27927
28091
|
{
|
|
27928
28092
|
"kind": "method",
|
|
27929
|
-
"name": "
|
|
28093
|
+
"name": "_getDefaultNavigationId",
|
|
27930
28094
|
"privacy": "private",
|
|
27931
28095
|
"return": {
|
|
27932
28096
|
"type": {
|
|
27933
|
-
"text": "
|
|
28097
|
+
"text": "string | undefined"
|
|
27934
28098
|
}
|
|
27935
28099
|
},
|
|
27936
28100
|
"parameters": [
|
|
27937
28101
|
{
|
|
27938
|
-
"name": "
|
|
28102
|
+
"name": "type",
|
|
27939
28103
|
"type": {
|
|
27940
|
-
"text": "
|
|
28104
|
+
"text": "'item' | 'section'"
|
|
27941
28105
|
}
|
|
27942
28106
|
}
|
|
27943
|
-
]
|
|
27944
|
-
"description": "Navigates to a specific item"
|
|
28107
|
+
]
|
|
27945
28108
|
},
|
|
27946
28109
|
{
|
|
27947
28110
|
"kind": "method",
|
|
27948
|
-
"name": "
|
|
28111
|
+
"name": "_getSectionItemIds",
|
|
27949
28112
|
"privacy": "private",
|
|
27950
28113
|
"return": {
|
|
27951
28114
|
"type": {
|
|
27952
|
-
"text": "
|
|
28115
|
+
"text": "string[]"
|
|
27953
28116
|
}
|
|
27954
28117
|
},
|
|
27955
28118
|
"parameters": [
|
|
@@ -27959,25 +28122,34 @@
|
|
|
27959
28122
|
"text": "string"
|
|
27960
28123
|
}
|
|
27961
28124
|
}
|
|
27962
|
-
]
|
|
27963
|
-
"description": "Navigates to a specific section"
|
|
28125
|
+
]
|
|
27964
28126
|
},
|
|
27965
28127
|
{
|
|
27966
|
-
"kind": "
|
|
27967
|
-
"name": "
|
|
27968
|
-
"
|
|
27969
|
-
|
|
28128
|
+
"kind": "method",
|
|
28129
|
+
"name": "_handleItemConnected",
|
|
28130
|
+
"privacy": "private",
|
|
28131
|
+
"return": {
|
|
28132
|
+
"type": {
|
|
28133
|
+
"text": "void"
|
|
28134
|
+
}
|
|
27970
28135
|
},
|
|
27971
|
-
"
|
|
27972
|
-
|
|
28136
|
+
"parameters": [
|
|
28137
|
+
{
|
|
28138
|
+
"name": "e",
|
|
28139
|
+
"type": {
|
|
28140
|
+
"text": "CustomEvent<QtiAssessmentItemRef>"
|
|
28141
|
+
}
|
|
28142
|
+
}
|
|
28143
|
+
],
|
|
28144
|
+
"description": "Handle item connection events - track connected items and discover stimulus references"
|
|
27973
28145
|
},
|
|
27974
28146
|
{
|
|
27975
28147
|
"kind": "method",
|
|
27976
|
-
"name": "
|
|
28148
|
+
"name": "_handleNavigationError",
|
|
27977
28149
|
"privacy": "private",
|
|
27978
28150
|
"return": {
|
|
27979
28151
|
"type": {
|
|
27980
|
-
"text": "
|
|
28152
|
+
"text": "void"
|
|
27981
28153
|
}
|
|
27982
28154
|
},
|
|
27983
28155
|
"parameters": [
|
|
@@ -27988,7 +28160,7 @@
|
|
|
27988
28160
|
}
|
|
27989
28161
|
},
|
|
27990
28162
|
{
|
|
27991
|
-
"name": "
|
|
28163
|
+
"name": "type",
|
|
27992
28164
|
"type": {
|
|
27993
28165
|
"text": "string"
|
|
27994
28166
|
}
|
|
@@ -27999,28 +28171,268 @@
|
|
|
27999
28171
|
"text": "string"
|
|
28000
28172
|
}
|
|
28001
28173
|
}
|
|
28002
|
-
]
|
|
28003
|
-
"description": "Normalize different error types into a consistent NavigationError format"
|
|
28174
|
+
]
|
|
28004
28175
|
},
|
|
28005
28176
|
{
|
|
28006
|
-
"kind": "
|
|
28007
|
-
"name": "
|
|
28008
|
-
"type": {
|
|
28009
|
-
"text": "{ type: 'item' | 'section'; id: string } | null"
|
|
28010
|
-
},
|
|
28177
|
+
"kind": "method",
|
|
28178
|
+
"name": "_handleNavigationRequest",
|
|
28011
28179
|
"privacy": "private",
|
|
28012
|
-
"
|
|
28013
|
-
|
|
28014
|
-
|
|
28015
|
-
|
|
28016
|
-
|
|
28017
|
-
|
|
28018
|
-
|
|
28019
|
-
|
|
28020
|
-
"
|
|
28180
|
+
"parameters": [
|
|
28181
|
+
{
|
|
28182
|
+
"name": "{ detail }",
|
|
28183
|
+
"type": {
|
|
28184
|
+
"text": "CustomEvent<{ type: 'item' | 'section'; id: string }>"
|
|
28185
|
+
}
|
|
28186
|
+
}
|
|
28187
|
+
],
|
|
28188
|
+
"description": "Main navigation request handler with proper lifecycle management"
|
|
28021
28189
|
},
|
|
28022
28190
|
{
|
|
28023
|
-
"kind": "
|
|
28191
|
+
"kind": "method",
|
|
28192
|
+
"name": "_handleStimulusRefConnected",
|
|
28193
|
+
"privacy": "private",
|
|
28194
|
+
"return": {
|
|
28195
|
+
"type": {
|
|
28196
|
+
"text": "Promise<void>"
|
|
28197
|
+
}
|
|
28198
|
+
},
|
|
28199
|
+
"parameters": [
|
|
28200
|
+
{
|
|
28201
|
+
"name": "e",
|
|
28202
|
+
"type": {
|
|
28203
|
+
"text": "QtiAssessmentStimulusRefConnectedEvent"
|
|
28204
|
+
}
|
|
28205
|
+
}
|
|
28206
|
+
],
|
|
28207
|
+
"description": "Handle stimulus reference connection events with duplicate prevention"
|
|
28208
|
+
},
|
|
28209
|
+
{
|
|
28210
|
+
"kind": "method",
|
|
28211
|
+
"name": "_handleTestConnected",
|
|
28212
|
+
"privacy": "private",
|
|
28213
|
+
"return": {
|
|
28214
|
+
"type": {
|
|
28215
|
+
"text": "void"
|
|
28216
|
+
}
|
|
28217
|
+
},
|
|
28218
|
+
"parameters": [
|
|
28219
|
+
{
|
|
28220
|
+
"name": "e",
|
|
28221
|
+
"type": {
|
|
28222
|
+
"text": "CustomEvent<QtiAssessmentTest>"
|
|
28223
|
+
}
|
|
28224
|
+
}
|
|
28225
|
+
]
|
|
28226
|
+
},
|
|
28227
|
+
{
|
|
28228
|
+
"kind": "method",
|
|
28229
|
+
"name": "_initializeNavigation",
|
|
28230
|
+
"privacy": "private",
|
|
28231
|
+
"return": {
|
|
28232
|
+
"type": {
|
|
28233
|
+
"text": "void"
|
|
28234
|
+
}
|
|
28235
|
+
}
|
|
28236
|
+
},
|
|
28237
|
+
{
|
|
28238
|
+
"kind": "field",
|
|
28239
|
+
"name": "_loadedStimulusHrefs",
|
|
28240
|
+
"privacy": "private",
|
|
28241
|
+
"default": "new Set<string>()"
|
|
28242
|
+
},
|
|
28243
|
+
{
|
|
28244
|
+
"kind": "field",
|
|
28245
|
+
"name": "_loadingState",
|
|
28246
|
+
"type": {
|
|
28247
|
+
"text": "object"
|
|
28248
|
+
},
|
|
28249
|
+
"privacy": "private",
|
|
28250
|
+
"default": "{ expectedItems: 0, connectedItems: 0, expectedStimulus: 0, loadedStimulus: 0, isComplete: false }"
|
|
28251
|
+
},
|
|
28252
|
+
{
|
|
28253
|
+
"kind": "field",
|
|
28254
|
+
"name": "_loadingStimulusHrefs",
|
|
28255
|
+
"privacy": "private",
|
|
28256
|
+
"default": "new Set<string>()"
|
|
28257
|
+
},
|
|
28258
|
+
{
|
|
28259
|
+
"kind": "method",
|
|
28260
|
+
"name": "_loadItems",
|
|
28261
|
+
"privacy": "private",
|
|
28262
|
+
"return": {
|
|
28263
|
+
"type": {
|
|
28264
|
+
"text": "Promise<void>"
|
|
28265
|
+
}
|
|
28266
|
+
},
|
|
28267
|
+
"parameters": [
|
|
28268
|
+
{
|
|
28269
|
+
"name": "itemIds",
|
|
28270
|
+
"type": {
|
|
28271
|
+
"text": "string[]"
|
|
28272
|
+
}
|
|
28273
|
+
}
|
|
28274
|
+
],
|
|
28275
|
+
"description": "Load items with simple tracking"
|
|
28276
|
+
},
|
|
28277
|
+
{
|
|
28278
|
+
"kind": "field",
|
|
28279
|
+
"name": "_loadResults",
|
|
28280
|
+
"type": {
|
|
28281
|
+
"text": "any[]"
|
|
28282
|
+
},
|
|
28283
|
+
"privacy": "private",
|
|
28284
|
+
"default": "[]"
|
|
28285
|
+
},
|
|
28286
|
+
{
|
|
28287
|
+
"kind": "method",
|
|
28288
|
+
"name": "_loadSingleItem",
|
|
28289
|
+
"privacy": "private",
|
|
28290
|
+
"parameters": [
|
|
28291
|
+
{
|
|
28292
|
+
"name": "itemRef",
|
|
28293
|
+
"type": {
|
|
28294
|
+
"text": "QtiAssessmentItemRef"
|
|
28295
|
+
}
|
|
28296
|
+
}
|
|
28297
|
+
]
|
|
28298
|
+
},
|
|
28299
|
+
{
|
|
28300
|
+
"kind": "method",
|
|
28301
|
+
"name": "_loadStimulus",
|
|
28302
|
+
"privacy": "private",
|
|
28303
|
+
"return": {
|
|
28304
|
+
"type": {
|
|
28305
|
+
"text": "Promise<DocumentFragment | null>"
|
|
28306
|
+
}
|
|
28307
|
+
},
|
|
28308
|
+
"parameters": [
|
|
28309
|
+
{
|
|
28310
|
+
"name": "href",
|
|
28311
|
+
"type": {
|
|
28312
|
+
"text": "string"
|
|
28313
|
+
}
|
|
28314
|
+
}
|
|
28315
|
+
]
|
|
28316
|
+
},
|
|
28317
|
+
{
|
|
28318
|
+
"kind": "method",
|
|
28319
|
+
"name": "_loadStimulusRef",
|
|
28320
|
+
"privacy": "private",
|
|
28321
|
+
"return": {
|
|
28322
|
+
"type": {
|
|
28323
|
+
"text": "Promise<void>"
|
|
28324
|
+
}
|
|
28325
|
+
},
|
|
28326
|
+
"parameters": [
|
|
28327
|
+
{
|
|
28328
|
+
"name": "element",
|
|
28329
|
+
"type": {
|
|
28330
|
+
"text": "{ identifier: string; href: string }"
|
|
28331
|
+
}
|
|
28332
|
+
},
|
|
28333
|
+
{
|
|
28334
|
+
"name": "item",
|
|
28335
|
+
"type": {
|
|
28336
|
+
"text": "{ identifier: string }"
|
|
28337
|
+
}
|
|
28338
|
+
}
|
|
28339
|
+
],
|
|
28340
|
+
"description": "Load stimulus reference with simple tracking"
|
|
28341
|
+
},
|
|
28342
|
+
{
|
|
28343
|
+
"kind": "method",
|
|
28344
|
+
"name": "_navigateToItem",
|
|
28345
|
+
"privacy": "private",
|
|
28346
|
+
"return": {
|
|
28347
|
+
"type": {
|
|
28348
|
+
"text": "Promise<void>"
|
|
28349
|
+
}
|
|
28350
|
+
},
|
|
28351
|
+
"parameters": [
|
|
28352
|
+
{
|
|
28353
|
+
"name": "itemId",
|
|
28354
|
+
"type": {
|
|
28355
|
+
"text": "string"
|
|
28356
|
+
}
|
|
28357
|
+
}
|
|
28358
|
+
],
|
|
28359
|
+
"description": "Navigate to specific item with simple state tracking"
|
|
28360
|
+
},
|
|
28361
|
+
{
|
|
28362
|
+
"kind": "method",
|
|
28363
|
+
"name": "_navigateToSection",
|
|
28364
|
+
"privacy": "private",
|
|
28365
|
+
"return": {
|
|
28366
|
+
"type": {
|
|
28367
|
+
"text": "Promise<void>"
|
|
28368
|
+
}
|
|
28369
|
+
},
|
|
28370
|
+
"parameters": [
|
|
28371
|
+
{
|
|
28372
|
+
"name": "sectionId",
|
|
28373
|
+
"type": {
|
|
28374
|
+
"text": "string"
|
|
28375
|
+
}
|
|
28376
|
+
}
|
|
28377
|
+
],
|
|
28378
|
+
"description": "Navigate to section with simple state tracking"
|
|
28379
|
+
},
|
|
28380
|
+
{
|
|
28381
|
+
"kind": "method",
|
|
28382
|
+
"name": "_resetLoadingState",
|
|
28383
|
+
"privacy": "private",
|
|
28384
|
+
"return": {
|
|
28385
|
+
"type": {
|
|
28386
|
+
"text": "void"
|
|
28387
|
+
}
|
|
28388
|
+
},
|
|
28389
|
+
"description": "Reset loading state for new navigation"
|
|
28390
|
+
},
|
|
28391
|
+
{
|
|
28392
|
+
"kind": "field",
|
|
28393
|
+
"name": "_testElement",
|
|
28394
|
+
"type": {
|
|
28395
|
+
"text": "QtiAssessmentTest"
|
|
28396
|
+
},
|
|
28397
|
+
"privacy": "protected"
|
|
28398
|
+
},
|
|
28399
|
+
{
|
|
28400
|
+
"kind": "method",
|
|
28401
|
+
"name": "_updateSessionContext",
|
|
28402
|
+
"privacy": "private",
|
|
28403
|
+
"return": {
|
|
28404
|
+
"type": {
|
|
28405
|
+
"text": "void"
|
|
28406
|
+
}
|
|
28407
|
+
},
|
|
28408
|
+
"parameters": [
|
|
28409
|
+
{
|
|
28410
|
+
"name": "itemRef",
|
|
28411
|
+
"type": {
|
|
28412
|
+
"text": "QtiAssessmentItemRef"
|
|
28413
|
+
}
|
|
28414
|
+
},
|
|
28415
|
+
{
|
|
28416
|
+
"name": "itemId",
|
|
28417
|
+
"type": {
|
|
28418
|
+
"text": "string"
|
|
28419
|
+
}
|
|
28420
|
+
}
|
|
28421
|
+
]
|
|
28422
|
+
},
|
|
28423
|
+
{
|
|
28424
|
+
"kind": "method",
|
|
28425
|
+
"name": "_waitForLoadingComplete",
|
|
28426
|
+
"privacy": "private",
|
|
28427
|
+
"return": {
|
|
28428
|
+
"type": {
|
|
28429
|
+
"text": "Promise<void>"
|
|
28430
|
+
}
|
|
28431
|
+
},
|
|
28432
|
+
"description": "Wait for loading to complete with simple polling"
|
|
28433
|
+
},
|
|
28434
|
+
{
|
|
28435
|
+
"kind": "field",
|
|
28024
28436
|
"name": "cacheTransform",
|
|
28025
28437
|
"type": {
|
|
28026
28438
|
"text": "boolean"
|
|
@@ -28028,6 +28440,12 @@
|
|
|
28028
28440
|
"default": "false",
|
|
28029
28441
|
"attribute": "cache-transform"
|
|
28030
28442
|
},
|
|
28443
|
+
{
|
|
28444
|
+
"kind": "method",
|
|
28445
|
+
"name": "getLoadingProgress",
|
|
28446
|
+
"privacy": "public",
|
|
28447
|
+
"description": "Get current loading progress for external consumption"
|
|
28448
|
+
},
|
|
28031
28449
|
{
|
|
28032
28450
|
"kind": "field",
|
|
28033
28451
|
"name": "navigate",
|
|
@@ -28051,16 +28469,19 @@
|
|
|
28051
28469
|
"name": "type",
|
|
28052
28470
|
"type": {
|
|
28053
28471
|
"text": "'item' | 'section'"
|
|
28054
|
-
}
|
|
28472
|
+
},
|
|
28473
|
+
"description": "Navigation type ('item' or 'section')"
|
|
28055
28474
|
},
|
|
28056
28475
|
{
|
|
28057
28476
|
"name": "id",
|
|
28058
28477
|
"optional": true,
|
|
28059
28478
|
"type": {
|
|
28060
28479
|
"text": "string"
|
|
28061
|
-
}
|
|
28480
|
+
},
|
|
28481
|
+
"description": "Target identifier (optional, falls back to first available)"
|
|
28062
28482
|
}
|
|
28063
|
-
]
|
|
28483
|
+
],
|
|
28484
|
+
"description": "Navigate to a specific item or section"
|
|
28064
28485
|
},
|
|
28065
28486
|
{
|
|
28066
28487
|
"kind": "field",
|
|
@@ -28068,8 +28489,7 @@
|
|
|
28068
28489
|
"type": {
|
|
28069
28490
|
"text": "PostLoadTestTransformCallback | null"
|
|
28070
28491
|
},
|
|
28071
|
-
"default": "null"
|
|
28072
|
-
"attribute": "postLoadTestTransformCallback"
|
|
28492
|
+
"default": "null"
|
|
28073
28493
|
},
|
|
28074
28494
|
{
|
|
28075
28495
|
"kind": "field",
|
|
@@ -28077,8 +28497,7 @@
|
|
|
28077
28497
|
"type": {
|
|
28078
28498
|
"text": "PostLoadTransformCallback | null"
|
|
28079
28499
|
},
|
|
28080
|
-
"default": "null"
|
|
28081
|
-
"attribute": "postLoadTransformCallback"
|
|
28500
|
+
"default": "null"
|
|
28082
28501
|
},
|
|
28083
28502
|
{
|
|
28084
28503
|
"kind": "field",
|
|
@@ -28088,26 +28507,6 @@
|
|
|
28088
28507
|
},
|
|
28089
28508
|
"default": "30000",
|
|
28090
28509
|
"attribute": "requestTimeout"
|
|
28091
|
-
},
|
|
28092
|
-
{
|
|
28093
|
-
"kind": "method",
|
|
28094
|
-
"name": "retryNavigation",
|
|
28095
|
-
"privacy": "public",
|
|
28096
|
-
"return": {
|
|
28097
|
-
"type": {
|
|
28098
|
-
"text": "void"
|
|
28099
|
-
}
|
|
28100
|
-
},
|
|
28101
|
-
"description": "Retry the last failed navigation"
|
|
28102
|
-
},
|
|
28103
|
-
{
|
|
28104
|
-
"kind": "field",
|
|
28105
|
-
"name": "showLoadingIndicators",
|
|
28106
|
-
"type": {
|
|
28107
|
-
"text": "boolean"
|
|
28108
|
-
},
|
|
28109
|
-
"default": "true",
|
|
28110
|
-
"attribute": "showLoadingIndicators"
|
|
28111
28510
|
}
|
|
28112
28511
|
],
|
|
28113
28512
|
"events": [
|
|
@@ -28118,7 +28517,13 @@
|
|
|
28118
28517
|
}
|
|
28119
28518
|
},
|
|
28120
28519
|
{
|
|
28121
|
-
"name": "qti-navigation-
|
|
28520
|
+
"name": "qti-navigation-loading-ended",
|
|
28521
|
+
"type": {
|
|
28522
|
+
"text": "CustomEvent"
|
|
28523
|
+
}
|
|
28524
|
+
},
|
|
28525
|
+
{
|
|
28526
|
+
"name": "qti-navigation-loading-started",
|
|
28122
28527
|
"type": {
|
|
28123
28528
|
"text": "CustomEvent"
|
|
28124
28529
|
}
|
|
@@ -28154,36 +28559,12 @@
|
|
|
28154
28559
|
"fieldName": "navigate"
|
|
28155
28560
|
},
|
|
28156
28561
|
{
|
|
28157
|
-
"name": "
|
|
28562
|
+
"name": "requestTimeout",
|
|
28158
28563
|
"type": {
|
|
28159
|
-
"text": "
|
|
28160
|
-
},
|
|
28161
|
-
"default": "null",
|
|
28162
|
-
"fieldName": "postLoadTestTransformCallback"
|
|
28163
|
-
},
|
|
28164
|
-
{
|
|
28165
|
-
"name": "postLoadTransformCallback",
|
|
28166
|
-
"type": {
|
|
28167
|
-
"text": "PostLoadTransformCallback | null"
|
|
28168
|
-
},
|
|
28169
|
-
"default": "null",
|
|
28170
|
-
"fieldName": "postLoadTransformCallback"
|
|
28171
|
-
},
|
|
28172
|
-
{
|
|
28173
|
-
"name": "requestTimeout",
|
|
28174
|
-
"type": {
|
|
28175
|
-
"text": "number"
|
|
28564
|
+
"text": "number"
|
|
28176
28565
|
},
|
|
28177
28566
|
"default": "30000",
|
|
28178
28567
|
"fieldName": "requestTimeout"
|
|
28179
|
-
},
|
|
28180
|
-
{
|
|
28181
|
-
"name": "showLoadingIndicators",
|
|
28182
|
-
"type": {
|
|
28183
|
-
"text": "boolean"
|
|
28184
|
-
},
|
|
28185
|
-
"default": "true",
|
|
28186
|
-
"fieldName": "showLoadingIndicators"
|
|
28187
28568
|
}
|
|
28188
28569
|
],
|
|
28189
28570
|
"parameters": [
|
|
@@ -29264,12 +29645,46 @@
|
|
|
29264
29645
|
"members": [
|
|
29265
29646
|
{
|
|
29266
29647
|
"kind": "field",
|
|
29267
|
-
"name": "
|
|
29648
|
+
"name": "_activeController",
|
|
29268
29649
|
"type": {
|
|
29269
|
-
"text": "
|
|
29650
|
+
"text": "AbortController | null"
|
|
29270
29651
|
},
|
|
29271
29652
|
"privacy": "private",
|
|
29272
|
-
"default": "
|
|
29653
|
+
"default": "null",
|
|
29654
|
+
"inheritedFrom": {
|
|
29655
|
+
"name": "TestNavigationMixin",
|
|
29656
|
+
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
29657
|
+
}
|
|
29658
|
+
},
|
|
29659
|
+
{
|
|
29660
|
+
"kind": "method",
|
|
29661
|
+
"name": "_applyStimulusContent",
|
|
29662
|
+
"privacy": "private",
|
|
29663
|
+
"return": {
|
|
29664
|
+
"type": {
|
|
29665
|
+
"text": "void"
|
|
29666
|
+
}
|
|
29667
|
+
},
|
|
29668
|
+
"parameters": [
|
|
29669
|
+
{
|
|
29670
|
+
"name": "stimulus",
|
|
29671
|
+
"type": {
|
|
29672
|
+
"text": "DocumentFragment | null"
|
|
29673
|
+
}
|
|
29674
|
+
},
|
|
29675
|
+
{
|
|
29676
|
+
"name": "element",
|
|
29677
|
+
"type": {
|
|
29678
|
+
"text": "{ identifier: string }"
|
|
29679
|
+
}
|
|
29680
|
+
},
|
|
29681
|
+
{
|
|
29682
|
+
"name": "item",
|
|
29683
|
+
"type": {
|
|
29684
|
+
"text": "{ identifier: string }"
|
|
29685
|
+
}
|
|
29686
|
+
}
|
|
29687
|
+
],
|
|
29273
29688
|
"inheritedFrom": {
|
|
29274
29689
|
"name": "TestNavigationMixin",
|
|
29275
29690
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
@@ -29277,14 +29692,43 @@
|
|
|
29277
29692
|
},
|
|
29278
29693
|
{
|
|
29279
29694
|
"kind": "method",
|
|
29280
|
-
"name": "
|
|
29695
|
+
"name": "_bindEventHandlers",
|
|
29281
29696
|
"privacy": "private",
|
|
29282
29697
|
"return": {
|
|
29283
29698
|
"type": {
|
|
29284
29699
|
"text": "void"
|
|
29285
29700
|
}
|
|
29286
29701
|
},
|
|
29287
|
-
"
|
|
29702
|
+
"inheritedFrom": {
|
|
29703
|
+
"name": "TestNavigationMixin",
|
|
29704
|
+
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
29705
|
+
}
|
|
29706
|
+
},
|
|
29707
|
+
{
|
|
29708
|
+
"kind": "method",
|
|
29709
|
+
"name": "_cancelPreviousNavigation",
|
|
29710
|
+
"privacy": "private",
|
|
29711
|
+
"return": {
|
|
29712
|
+
"type": {
|
|
29713
|
+
"text": "void"
|
|
29714
|
+
}
|
|
29715
|
+
},
|
|
29716
|
+
"description": "Cancel previous navigation and clean up all state",
|
|
29717
|
+
"inheritedFrom": {
|
|
29718
|
+
"name": "TestNavigationMixin",
|
|
29719
|
+
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
29720
|
+
}
|
|
29721
|
+
},
|
|
29722
|
+
{
|
|
29723
|
+
"kind": "method",
|
|
29724
|
+
"name": "_checkLoadingComplete",
|
|
29725
|
+
"privacy": "private",
|
|
29726
|
+
"return": {
|
|
29727
|
+
"type": {
|
|
29728
|
+
"text": "void"
|
|
29729
|
+
}
|
|
29730
|
+
},
|
|
29731
|
+
"description": "Check if loading is complete and dispatch events accordingly",
|
|
29288
29732
|
"inheritedFrom": {
|
|
29289
29733
|
"name": "TestNavigationMixin",
|
|
29290
29734
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
@@ -29298,8 +29742,342 @@
|
|
|
29298
29742
|
"type": {
|
|
29299
29743
|
"text": "void"
|
|
29300
29744
|
}
|
|
29301
|
-
},
|
|
29302
|
-
"
|
|
29745
|
+
},
|
|
29746
|
+
"inheritedFrom": {
|
|
29747
|
+
"name": "TestNavigationMixin",
|
|
29748
|
+
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
29749
|
+
}
|
|
29750
|
+
},
|
|
29751
|
+
{
|
|
29752
|
+
"kind": "method",
|
|
29753
|
+
"name": "_clearNavigationState",
|
|
29754
|
+
"privacy": "private",
|
|
29755
|
+
"return": {
|
|
29756
|
+
"type": {
|
|
29757
|
+
"text": "void"
|
|
29758
|
+
}
|
|
29759
|
+
},
|
|
29760
|
+
"inheritedFrom": {
|
|
29761
|
+
"name": "TestNavigationMixin",
|
|
29762
|
+
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
29763
|
+
}
|
|
29764
|
+
},
|
|
29765
|
+
{
|
|
29766
|
+
"kind": "method",
|
|
29767
|
+
"name": "_clearStimulusRef",
|
|
29768
|
+
"privacy": "private",
|
|
29769
|
+
"return": {
|
|
29770
|
+
"type": {
|
|
29771
|
+
"text": "void"
|
|
29772
|
+
}
|
|
29773
|
+
},
|
|
29774
|
+
"inheritedFrom": {
|
|
29775
|
+
"name": "TestNavigationMixin",
|
|
29776
|
+
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
29777
|
+
}
|
|
29778
|
+
},
|
|
29779
|
+
{
|
|
29780
|
+
"kind": "method",
|
|
29781
|
+
"name": "_createNavigationError",
|
|
29782
|
+
"privacy": "private",
|
|
29783
|
+
"return": {
|
|
29784
|
+
"type": {
|
|
29785
|
+
"text": "NavigationError"
|
|
29786
|
+
}
|
|
29787
|
+
},
|
|
29788
|
+
"parameters": [
|
|
29789
|
+
{
|
|
29790
|
+
"name": "error",
|
|
29791
|
+
"type": {
|
|
29792
|
+
"text": "any"
|
|
29793
|
+
}
|
|
29794
|
+
},
|
|
29795
|
+
{
|
|
29796
|
+
"name": "type",
|
|
29797
|
+
"type": {
|
|
29798
|
+
"text": "string"
|
|
29799
|
+
}
|
|
29800
|
+
},
|
|
29801
|
+
{
|
|
29802
|
+
"name": "id",
|
|
29803
|
+
"type": {
|
|
29804
|
+
"text": "string"
|
|
29805
|
+
}
|
|
29806
|
+
}
|
|
29807
|
+
],
|
|
29808
|
+
"inheritedFrom": {
|
|
29809
|
+
"name": "TestNavigationMixin",
|
|
29810
|
+
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
29811
|
+
}
|
|
29812
|
+
},
|
|
29813
|
+
{
|
|
29814
|
+
"kind": "method",
|
|
29815
|
+
"name": "_dispatchError",
|
|
29816
|
+
"privacy": "private",
|
|
29817
|
+
"return": {
|
|
29818
|
+
"type": {
|
|
29819
|
+
"text": "void"
|
|
29820
|
+
}
|
|
29821
|
+
},
|
|
29822
|
+
"parameters": [
|
|
29823
|
+
{
|
|
29824
|
+
"name": "error",
|
|
29825
|
+
"type": {
|
|
29826
|
+
"text": "NavigationError"
|
|
29827
|
+
}
|
|
29828
|
+
}
|
|
29829
|
+
],
|
|
29830
|
+
"inheritedFrom": {
|
|
29831
|
+
"name": "TestNavigationMixin",
|
|
29832
|
+
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
29833
|
+
}
|
|
29834
|
+
},
|
|
29835
|
+
{
|
|
29836
|
+
"kind": "method",
|
|
29837
|
+
"name": "_dispatchLoadingEnded",
|
|
29838
|
+
"privacy": "private",
|
|
29839
|
+
"return": {
|
|
29840
|
+
"type": {
|
|
29841
|
+
"text": "void"
|
|
29842
|
+
}
|
|
29843
|
+
},
|
|
29844
|
+
"parameters": [
|
|
29845
|
+
{
|
|
29846
|
+
"name": "type",
|
|
29847
|
+
"type": {
|
|
29848
|
+
"text": "string"
|
|
29849
|
+
}
|
|
29850
|
+
},
|
|
29851
|
+
{
|
|
29852
|
+
"name": "id",
|
|
29853
|
+
"type": {
|
|
29854
|
+
"text": "string"
|
|
29855
|
+
}
|
|
29856
|
+
}
|
|
29857
|
+
],
|
|
29858
|
+
"inheritedFrom": {
|
|
29859
|
+
"name": "TestNavigationMixin",
|
|
29860
|
+
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
29861
|
+
}
|
|
29862
|
+
},
|
|
29863
|
+
{
|
|
29864
|
+
"kind": "method",
|
|
29865
|
+
"name": "_dispatchLoadingStarted",
|
|
29866
|
+
"privacy": "private",
|
|
29867
|
+
"return": {
|
|
29868
|
+
"type": {
|
|
29869
|
+
"text": "void"
|
|
29870
|
+
}
|
|
29871
|
+
},
|
|
29872
|
+
"parameters": [
|
|
29873
|
+
{
|
|
29874
|
+
"name": "type",
|
|
29875
|
+
"type": {
|
|
29876
|
+
"text": "string"
|
|
29877
|
+
}
|
|
29878
|
+
},
|
|
29879
|
+
{
|
|
29880
|
+
"name": "id",
|
|
29881
|
+
"type": {
|
|
29882
|
+
"text": "string"
|
|
29883
|
+
}
|
|
29884
|
+
}
|
|
29885
|
+
],
|
|
29886
|
+
"inheritedFrom": {
|
|
29887
|
+
"name": "TestNavigationMixin",
|
|
29888
|
+
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
29889
|
+
}
|
|
29890
|
+
},
|
|
29891
|
+
{
|
|
29892
|
+
"kind": "method",
|
|
29893
|
+
"name": "_dispatchTestLoaded",
|
|
29894
|
+
"privacy": "private",
|
|
29895
|
+
"return": {
|
|
29896
|
+
"type": {
|
|
29897
|
+
"text": "void"
|
|
29898
|
+
}
|
|
29899
|
+
},
|
|
29900
|
+
"parameters": [
|
|
29901
|
+
{
|
|
29902
|
+
"name": "results",
|
|
29903
|
+
"type": {
|
|
29904
|
+
"text": "any[]"
|
|
29905
|
+
}
|
|
29906
|
+
}
|
|
29907
|
+
],
|
|
29908
|
+
"inheritedFrom": {
|
|
29909
|
+
"name": "TestNavigationMixin",
|
|
29910
|
+
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
29911
|
+
}
|
|
29912
|
+
},
|
|
29913
|
+
{
|
|
29914
|
+
"kind": "method",
|
|
29915
|
+
"name": "_executeNavigation",
|
|
29916
|
+
"privacy": "private",
|
|
29917
|
+
"return": {
|
|
29918
|
+
"type": {
|
|
29919
|
+
"text": "Promise<void>"
|
|
29920
|
+
}
|
|
29921
|
+
},
|
|
29922
|
+
"parameters": [
|
|
29923
|
+
{
|
|
29924
|
+
"name": "type",
|
|
29925
|
+
"type": {
|
|
29926
|
+
"text": "'item' | 'section'"
|
|
29927
|
+
}
|
|
29928
|
+
},
|
|
29929
|
+
{
|
|
29930
|
+
"name": "id",
|
|
29931
|
+
"type": {
|
|
29932
|
+
"text": "string"
|
|
29933
|
+
}
|
|
29934
|
+
}
|
|
29935
|
+
],
|
|
29936
|
+
"inheritedFrom": {
|
|
29937
|
+
"name": "TestNavigationMixin",
|
|
29938
|
+
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
29939
|
+
}
|
|
29940
|
+
},
|
|
29941
|
+
{
|
|
29942
|
+
"kind": "method",
|
|
29943
|
+
"name": "_findItemRef",
|
|
29944
|
+
"privacy": "private",
|
|
29945
|
+
"return": {
|
|
29946
|
+
"type": {
|
|
29947
|
+
"text": "QtiAssessmentItemRef"
|
|
29948
|
+
}
|
|
29949
|
+
},
|
|
29950
|
+
"parameters": [
|
|
29951
|
+
{
|
|
29952
|
+
"name": "itemId",
|
|
29953
|
+
"type": {
|
|
29954
|
+
"text": "string"
|
|
29955
|
+
}
|
|
29956
|
+
}
|
|
29957
|
+
],
|
|
29958
|
+
"inheritedFrom": {
|
|
29959
|
+
"name": "TestNavigationMixin",
|
|
29960
|
+
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
29961
|
+
}
|
|
29962
|
+
},
|
|
29963
|
+
{
|
|
29964
|
+
"kind": "method",
|
|
29965
|
+
"name": "_findSection",
|
|
29966
|
+
"privacy": "private",
|
|
29967
|
+
"return": {
|
|
29968
|
+
"type": {
|
|
29969
|
+
"text": "QtiAssessmentSection | null"
|
|
29970
|
+
}
|
|
29971
|
+
},
|
|
29972
|
+
"parameters": [
|
|
29973
|
+
{
|
|
29974
|
+
"name": "sectionId",
|
|
29975
|
+
"type": {
|
|
29976
|
+
"text": "string"
|
|
29977
|
+
}
|
|
29978
|
+
}
|
|
29979
|
+
],
|
|
29980
|
+
"inheritedFrom": {
|
|
29981
|
+
"name": "TestNavigationMixin",
|
|
29982
|
+
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
29983
|
+
}
|
|
29984
|
+
},
|
|
29985
|
+
{
|
|
29986
|
+
"kind": "method",
|
|
29987
|
+
"name": "_getDefaultNavigationId",
|
|
29988
|
+
"privacy": "private",
|
|
29989
|
+
"return": {
|
|
29990
|
+
"type": {
|
|
29991
|
+
"text": "string | undefined"
|
|
29992
|
+
}
|
|
29993
|
+
},
|
|
29994
|
+
"parameters": [
|
|
29995
|
+
{
|
|
29996
|
+
"name": "type",
|
|
29997
|
+
"type": {
|
|
29998
|
+
"text": "'item' | 'section'"
|
|
29999
|
+
}
|
|
30000
|
+
}
|
|
30001
|
+
],
|
|
30002
|
+
"inheritedFrom": {
|
|
30003
|
+
"name": "TestNavigationMixin",
|
|
30004
|
+
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
30005
|
+
}
|
|
30006
|
+
},
|
|
30007
|
+
{
|
|
30008
|
+
"kind": "method",
|
|
30009
|
+
"name": "_getSectionItemIds",
|
|
30010
|
+
"privacy": "private",
|
|
30011
|
+
"return": {
|
|
30012
|
+
"type": {
|
|
30013
|
+
"text": "string[]"
|
|
30014
|
+
}
|
|
30015
|
+
},
|
|
30016
|
+
"parameters": [
|
|
30017
|
+
{
|
|
30018
|
+
"name": "sectionId",
|
|
30019
|
+
"type": {
|
|
30020
|
+
"text": "string"
|
|
30021
|
+
}
|
|
30022
|
+
}
|
|
30023
|
+
],
|
|
30024
|
+
"inheritedFrom": {
|
|
30025
|
+
"name": "TestNavigationMixin",
|
|
30026
|
+
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
30027
|
+
}
|
|
30028
|
+
},
|
|
30029
|
+
{
|
|
30030
|
+
"kind": "method",
|
|
30031
|
+
"name": "_handleItemConnected",
|
|
30032
|
+
"privacy": "private",
|
|
30033
|
+
"return": {
|
|
30034
|
+
"type": {
|
|
30035
|
+
"text": "void"
|
|
30036
|
+
}
|
|
30037
|
+
},
|
|
30038
|
+
"parameters": [
|
|
30039
|
+
{
|
|
30040
|
+
"name": "e",
|
|
30041
|
+
"type": {
|
|
30042
|
+
"text": "CustomEvent<QtiAssessmentItemRef>"
|
|
30043
|
+
}
|
|
30044
|
+
}
|
|
30045
|
+
],
|
|
30046
|
+
"description": "Handle item connection events - track connected items and discover stimulus references",
|
|
30047
|
+
"inheritedFrom": {
|
|
30048
|
+
"name": "TestNavigationMixin",
|
|
30049
|
+
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
30050
|
+
}
|
|
30051
|
+
},
|
|
30052
|
+
{
|
|
30053
|
+
"kind": "method",
|
|
30054
|
+
"name": "_handleNavigationError",
|
|
30055
|
+
"privacy": "private",
|
|
30056
|
+
"return": {
|
|
30057
|
+
"type": {
|
|
30058
|
+
"text": "void"
|
|
30059
|
+
}
|
|
30060
|
+
},
|
|
30061
|
+
"parameters": [
|
|
30062
|
+
{
|
|
30063
|
+
"name": "error",
|
|
30064
|
+
"type": {
|
|
30065
|
+
"text": "any"
|
|
30066
|
+
}
|
|
30067
|
+
},
|
|
30068
|
+
{
|
|
30069
|
+
"name": "type",
|
|
30070
|
+
"type": {
|
|
30071
|
+
"text": "string"
|
|
30072
|
+
}
|
|
30073
|
+
},
|
|
30074
|
+
{
|
|
30075
|
+
"name": "id",
|
|
30076
|
+
"type": {
|
|
30077
|
+
"text": "string"
|
|
30078
|
+
}
|
|
30079
|
+
}
|
|
30080
|
+
],
|
|
29303
30081
|
"inheritedFrom": {
|
|
29304
30082
|
"name": "TestNavigationMixin",
|
|
29305
30083
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
@@ -29307,22 +30085,17 @@
|
|
|
29307
30085
|
},
|
|
29308
30086
|
{
|
|
29309
30087
|
"kind": "method",
|
|
29310
|
-
"name": "
|
|
30088
|
+
"name": "_handleNavigationRequest",
|
|
29311
30089
|
"privacy": "private",
|
|
29312
|
-
"return": {
|
|
29313
|
-
"type": {
|
|
29314
|
-
"text": "void"
|
|
29315
|
-
}
|
|
29316
|
-
},
|
|
29317
30090
|
"parameters": [
|
|
29318
30091
|
{
|
|
29319
|
-
"name": "
|
|
30092
|
+
"name": "{ detail }",
|
|
29320
30093
|
"type": {
|
|
29321
|
-
"text": "
|
|
30094
|
+
"text": "CustomEvent<{ type: 'item' | 'section'; id: string }>"
|
|
29322
30095
|
}
|
|
29323
30096
|
}
|
|
29324
30097
|
],
|
|
29325
|
-
"description": "
|
|
30098
|
+
"description": "Main navigation request handler with proper lifecycle management",
|
|
29326
30099
|
"inheritedFrom": {
|
|
29327
30100
|
"name": "TestNavigationMixin",
|
|
29328
30101
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
@@ -29330,22 +30103,22 @@
|
|
|
29330
30103
|
},
|
|
29331
30104
|
{
|
|
29332
30105
|
"kind": "method",
|
|
29333
|
-
"name": "
|
|
30106
|
+
"name": "_handleStimulusRefConnected",
|
|
29334
30107
|
"privacy": "private",
|
|
29335
30108
|
"return": {
|
|
29336
30109
|
"type": {
|
|
29337
|
-
"text": "void"
|
|
30110
|
+
"text": "Promise<void>"
|
|
29338
30111
|
}
|
|
29339
30112
|
},
|
|
29340
30113
|
"parameters": [
|
|
29341
30114
|
{
|
|
29342
|
-
"name": "
|
|
30115
|
+
"name": "e",
|
|
29343
30116
|
"type": {
|
|
29344
|
-
"text": "
|
|
30117
|
+
"text": "QtiAssessmentStimulusRefConnectedEvent"
|
|
29345
30118
|
}
|
|
29346
30119
|
}
|
|
29347
30120
|
],
|
|
29348
|
-
"description": "
|
|
30121
|
+
"description": "Handle stimulus reference connection events with duplicate prevention",
|
|
29349
30122
|
"inheritedFrom": {
|
|
29350
30123
|
"name": "TestNavigationMixin",
|
|
29351
30124
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
@@ -29353,22 +30126,21 @@
|
|
|
29353
30126
|
},
|
|
29354
30127
|
{
|
|
29355
30128
|
"kind": "method",
|
|
29356
|
-
"name": "
|
|
30129
|
+
"name": "_handleTestConnected",
|
|
29357
30130
|
"privacy": "private",
|
|
29358
30131
|
"return": {
|
|
29359
30132
|
"type": {
|
|
29360
|
-
"text": "
|
|
30133
|
+
"text": "void"
|
|
29361
30134
|
}
|
|
29362
30135
|
},
|
|
29363
30136
|
"parameters": [
|
|
29364
30137
|
{
|
|
29365
|
-
"name": "
|
|
30138
|
+
"name": "e",
|
|
29366
30139
|
"type": {
|
|
29367
|
-
"text": "
|
|
30140
|
+
"text": "CustomEvent<QtiAssessmentTest>"
|
|
29368
30141
|
}
|
|
29369
30142
|
}
|
|
29370
30143
|
],
|
|
29371
|
-
"description": "Gets all item IDs in a section",
|
|
29372
30144
|
"inheritedFrom": {
|
|
29373
30145
|
"name": "TestNavigationMixin",
|
|
29374
30146
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
@@ -29383,7 +30155,6 @@
|
|
|
29383
30155
|
"text": "void"
|
|
29384
30156
|
}
|
|
29385
30157
|
},
|
|
29386
|
-
"description": "Initialize navigation when test is first connected",
|
|
29387
30158
|
"inheritedFrom": {
|
|
29388
30159
|
"name": "TestNavigationMixin",
|
|
29389
30160
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
@@ -29391,12 +30162,9 @@
|
|
|
29391
30162
|
},
|
|
29392
30163
|
{
|
|
29393
30164
|
"kind": "field",
|
|
29394
|
-
"name": "
|
|
29395
|
-
"type": {
|
|
29396
|
-
"text": "NavigationError | null"
|
|
29397
|
-
},
|
|
30165
|
+
"name": "_loadedStimulusHrefs",
|
|
29398
30166
|
"privacy": "private",
|
|
29399
|
-
"default": "
|
|
30167
|
+
"default": "new Set<string>()",
|
|
29400
30168
|
"inheritedFrom": {
|
|
29401
30169
|
"name": "TestNavigationMixin",
|
|
29402
30170
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
@@ -29404,12 +30172,22 @@
|
|
|
29404
30172
|
},
|
|
29405
30173
|
{
|
|
29406
30174
|
"kind": "field",
|
|
29407
|
-
"name": "
|
|
30175
|
+
"name": "_loadingState",
|
|
29408
30176
|
"type": {
|
|
29409
|
-
"text": "
|
|
30177
|
+
"text": "object"
|
|
29410
30178
|
},
|
|
29411
30179
|
"privacy": "private",
|
|
29412
|
-
"default": "
|
|
30180
|
+
"default": "{ expectedItems: 0, connectedItems: 0, expectedStimulus: 0, loadedStimulus: 0, isComplete: false }",
|
|
30181
|
+
"inheritedFrom": {
|
|
30182
|
+
"name": "TestNavigationMixin",
|
|
30183
|
+
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
30184
|
+
}
|
|
30185
|
+
},
|
|
30186
|
+
{
|
|
30187
|
+
"kind": "field",
|
|
30188
|
+
"name": "_loadingStimulusHrefs",
|
|
30189
|
+
"privacy": "private",
|
|
30190
|
+
"default": "new Set<string>()",
|
|
29413
30191
|
"inheritedFrom": {
|
|
29414
30192
|
"name": "TestNavigationMixin",
|
|
29415
30193
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
@@ -29421,7 +30199,7 @@
|
|
|
29421
30199
|
"privacy": "private",
|
|
29422
30200
|
"return": {
|
|
29423
30201
|
"type": {
|
|
29424
|
-
"text": "Promise<
|
|
30202
|
+
"text": "Promise<void>"
|
|
29425
30203
|
}
|
|
29426
30204
|
},
|
|
29427
30205
|
"parameters": [
|
|
@@ -29432,7 +30210,20 @@
|
|
|
29432
30210
|
}
|
|
29433
30211
|
}
|
|
29434
30212
|
],
|
|
29435
|
-
"description": "Load items with
|
|
30213
|
+
"description": "Load items with simple tracking",
|
|
30214
|
+
"inheritedFrom": {
|
|
30215
|
+
"name": "TestNavigationMixin",
|
|
30216
|
+
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
30217
|
+
}
|
|
30218
|
+
},
|
|
30219
|
+
{
|
|
30220
|
+
"kind": "field",
|
|
30221
|
+
"name": "_loadResults",
|
|
30222
|
+
"type": {
|
|
30223
|
+
"text": "any[]"
|
|
30224
|
+
},
|
|
30225
|
+
"privacy": "private",
|
|
30226
|
+
"default": "[]",
|
|
29436
30227
|
"inheritedFrom": {
|
|
29437
30228
|
"name": "TestNavigationMixin",
|
|
29438
30229
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
@@ -29440,22 +30231,38 @@
|
|
|
29440
30231
|
},
|
|
29441
30232
|
{
|
|
29442
30233
|
"kind": "method",
|
|
29443
|
-
"name": "
|
|
30234
|
+
"name": "_loadSingleItem",
|
|
30235
|
+
"privacy": "private",
|
|
30236
|
+
"parameters": [
|
|
30237
|
+
{
|
|
30238
|
+
"name": "itemRef",
|
|
30239
|
+
"type": {
|
|
30240
|
+
"text": "QtiAssessmentItemRef"
|
|
30241
|
+
}
|
|
30242
|
+
}
|
|
30243
|
+
],
|
|
30244
|
+
"inheritedFrom": {
|
|
30245
|
+
"name": "TestNavigationMixin",
|
|
30246
|
+
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
30247
|
+
}
|
|
30248
|
+
},
|
|
30249
|
+
{
|
|
30250
|
+
"kind": "method",
|
|
30251
|
+
"name": "_loadStimulus",
|
|
29444
30252
|
"privacy": "private",
|
|
29445
30253
|
"return": {
|
|
29446
30254
|
"type": {
|
|
29447
|
-
"text": "Promise<
|
|
30255
|
+
"text": "Promise<DocumentFragment | null>"
|
|
29448
30256
|
}
|
|
29449
30257
|
},
|
|
29450
30258
|
"parameters": [
|
|
29451
30259
|
{
|
|
29452
|
-
"name": "
|
|
30260
|
+
"name": "href",
|
|
29453
30261
|
"type": {
|
|
29454
30262
|
"text": "string"
|
|
29455
30263
|
}
|
|
29456
30264
|
}
|
|
29457
30265
|
],
|
|
29458
|
-
"description": "Navigates to a specific item",
|
|
29459
30266
|
"inheritedFrom": {
|
|
29460
30267
|
"name": "TestNavigationMixin",
|
|
29461
30268
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
@@ -29463,7 +30270,7 @@
|
|
|
29463
30270
|
},
|
|
29464
30271
|
{
|
|
29465
30272
|
"kind": "method",
|
|
29466
|
-
"name": "
|
|
30273
|
+
"name": "_loadStimulusRef",
|
|
29467
30274
|
"privacy": "private",
|
|
29468
30275
|
"return": {
|
|
29469
30276
|
"type": {
|
|
@@ -29472,26 +30279,42 @@
|
|
|
29472
30279
|
},
|
|
29473
30280
|
"parameters": [
|
|
29474
30281
|
{
|
|
29475
|
-
"name": "
|
|
30282
|
+
"name": "element",
|
|
29476
30283
|
"type": {
|
|
29477
|
-
"text": "string"
|
|
30284
|
+
"text": "{ identifier: string; href: string }"
|
|
30285
|
+
}
|
|
30286
|
+
},
|
|
30287
|
+
{
|
|
30288
|
+
"name": "item",
|
|
30289
|
+
"type": {
|
|
30290
|
+
"text": "{ identifier: string }"
|
|
29478
30291
|
}
|
|
29479
30292
|
}
|
|
29480
30293
|
],
|
|
29481
|
-
"description": "
|
|
30294
|
+
"description": "Load stimulus reference with simple tracking",
|
|
29482
30295
|
"inheritedFrom": {
|
|
29483
30296
|
"name": "TestNavigationMixin",
|
|
29484
30297
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
29485
30298
|
}
|
|
29486
30299
|
},
|
|
29487
30300
|
{
|
|
29488
|
-
"kind": "
|
|
29489
|
-
"name": "
|
|
29490
|
-
"
|
|
29491
|
-
|
|
30301
|
+
"kind": "method",
|
|
30302
|
+
"name": "_navigateToItem",
|
|
30303
|
+
"privacy": "private",
|
|
30304
|
+
"return": {
|
|
30305
|
+
"type": {
|
|
30306
|
+
"text": "Promise<void>"
|
|
30307
|
+
}
|
|
29492
30308
|
},
|
|
29493
|
-
"
|
|
29494
|
-
|
|
30309
|
+
"parameters": [
|
|
30310
|
+
{
|
|
30311
|
+
"name": "itemId",
|
|
30312
|
+
"type": {
|
|
30313
|
+
"text": "string"
|
|
30314
|
+
}
|
|
30315
|
+
}
|
|
30316
|
+
],
|
|
30317
|
+
"description": "Navigate to specific item with simple state tracking",
|
|
29495
30318
|
"inheritedFrom": {
|
|
29496
30319
|
"name": "TestNavigationMixin",
|
|
29497
30320
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
@@ -29499,34 +30322,37 @@
|
|
|
29499
30322
|
},
|
|
29500
30323
|
{
|
|
29501
30324
|
"kind": "method",
|
|
29502
|
-
"name": "
|
|
30325
|
+
"name": "_navigateToSection",
|
|
29503
30326
|
"privacy": "private",
|
|
29504
30327
|
"return": {
|
|
29505
30328
|
"type": {
|
|
29506
|
-
"text": "
|
|
30329
|
+
"text": "Promise<void>"
|
|
29507
30330
|
}
|
|
29508
30331
|
},
|
|
29509
30332
|
"parameters": [
|
|
29510
30333
|
{
|
|
29511
|
-
"name": "
|
|
29512
|
-
"type": {
|
|
29513
|
-
"text": "any"
|
|
29514
|
-
}
|
|
29515
|
-
},
|
|
29516
|
-
{
|
|
29517
|
-
"name": "navigationType",
|
|
29518
|
-
"type": {
|
|
29519
|
-
"text": "string"
|
|
29520
|
-
}
|
|
29521
|
-
},
|
|
29522
|
-
{
|
|
29523
|
-
"name": "id",
|
|
30334
|
+
"name": "sectionId",
|
|
29524
30335
|
"type": {
|
|
29525
30336
|
"text": "string"
|
|
29526
30337
|
}
|
|
29527
30338
|
}
|
|
29528
30339
|
],
|
|
29529
|
-
"description": "
|
|
30340
|
+
"description": "Navigate to section with simple state tracking",
|
|
30341
|
+
"inheritedFrom": {
|
|
30342
|
+
"name": "TestNavigationMixin",
|
|
30343
|
+
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
30344
|
+
}
|
|
30345
|
+
},
|
|
30346
|
+
{
|
|
30347
|
+
"kind": "method",
|
|
30348
|
+
"name": "_resetLoadingState",
|
|
30349
|
+
"privacy": "private",
|
|
30350
|
+
"return": {
|
|
30351
|
+
"type": {
|
|
30352
|
+
"text": "void"
|
|
30353
|
+
}
|
|
30354
|
+
},
|
|
30355
|
+
"description": "Reset loading state for new navigation",
|
|
29530
30356
|
"inheritedFrom": {
|
|
29531
30357
|
"name": "TestNavigationMixin",
|
|
29532
30358
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
@@ -29554,19 +30380,6 @@
|
|
|
29554
30380
|
"module": "src/lib/qti-test/core/mixins/test-view.mixin.ts"
|
|
29555
30381
|
}
|
|
29556
30382
|
},
|
|
29557
|
-
{
|
|
29558
|
-
"kind": "field",
|
|
29559
|
-
"name": "_targetNavigation",
|
|
29560
|
-
"type": {
|
|
29561
|
-
"text": "{ type: 'item' | 'section'; id: string } | null"
|
|
29562
|
-
},
|
|
29563
|
-
"privacy": "private",
|
|
29564
|
-
"default": "null",
|
|
29565
|
-
"inheritedFrom": {
|
|
29566
|
-
"name": "TestNavigationMixin",
|
|
29567
|
-
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
29568
|
-
}
|
|
29569
|
-
},
|
|
29570
30383
|
{
|
|
29571
30384
|
"kind": "field",
|
|
29572
30385
|
"name": "_testElement",
|
|
@@ -29632,6 +30445,49 @@
|
|
|
29632
30445
|
"module": "src/lib/qti-test/core/test-base.ts"
|
|
29633
30446
|
}
|
|
29634
30447
|
},
|
|
30448
|
+
{
|
|
30449
|
+
"kind": "method",
|
|
30450
|
+
"name": "_updateSessionContext",
|
|
30451
|
+
"privacy": "private",
|
|
30452
|
+
"return": {
|
|
30453
|
+
"type": {
|
|
30454
|
+
"text": "void"
|
|
30455
|
+
}
|
|
30456
|
+
},
|
|
30457
|
+
"parameters": [
|
|
30458
|
+
{
|
|
30459
|
+
"name": "itemRef",
|
|
30460
|
+
"type": {
|
|
30461
|
+
"text": "QtiAssessmentItemRef"
|
|
30462
|
+
}
|
|
30463
|
+
},
|
|
30464
|
+
{
|
|
30465
|
+
"name": "itemId",
|
|
30466
|
+
"type": {
|
|
30467
|
+
"text": "string"
|
|
30468
|
+
}
|
|
30469
|
+
}
|
|
30470
|
+
],
|
|
30471
|
+
"inheritedFrom": {
|
|
30472
|
+
"name": "TestNavigationMixin",
|
|
30473
|
+
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
30474
|
+
}
|
|
30475
|
+
},
|
|
30476
|
+
{
|
|
30477
|
+
"kind": "method",
|
|
30478
|
+
"name": "_waitForLoadingComplete",
|
|
30479
|
+
"privacy": "private",
|
|
30480
|
+
"return": {
|
|
30481
|
+
"type": {
|
|
30482
|
+
"text": "Promise<void>"
|
|
30483
|
+
}
|
|
30484
|
+
},
|
|
30485
|
+
"description": "Wait for loading to complete with simple polling",
|
|
30486
|
+
"inheritedFrom": {
|
|
30487
|
+
"name": "TestNavigationMixin",
|
|
30488
|
+
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
30489
|
+
}
|
|
30490
|
+
},
|
|
29635
30491
|
{
|
|
29636
30492
|
"kind": "field",
|
|
29637
30493
|
"name": "cacheTransform",
|
|
@@ -29645,6 +30501,19 @@
|
|
|
29645
30501
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
29646
30502
|
}
|
|
29647
30503
|
},
|
|
30504
|
+
{
|
|
30505
|
+
"kind": "method",
|
|
30506
|
+
"name": "getLoadingProgress",
|
|
30507
|
+
"privacy": "public",
|
|
30508
|
+
"description": "Get current loading progress for external consumption",
|
|
30509
|
+
"inheritedFrom": {
|
|
30510
|
+
"name": "TestNavigationMixin",
|
|
30511
|
+
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
30512
|
+
},
|
|
30513
|
+
"type": {
|
|
30514
|
+
"text": "getLoadingProgress() => void"
|
|
30515
|
+
}
|
|
30516
|
+
},
|
|
29648
30517
|
{
|
|
29649
30518
|
"kind": "method",
|
|
29650
30519
|
"name": "getOutcome",
|
|
@@ -29722,16 +30591,19 @@
|
|
|
29722
30591
|
"name": "type",
|
|
29723
30592
|
"type": {
|
|
29724
30593
|
"text": "'item' | 'section'"
|
|
29725
|
-
}
|
|
30594
|
+
},
|
|
30595
|
+
"description": "Navigation type ('item' or 'section')"
|
|
29726
30596
|
},
|
|
29727
30597
|
{
|
|
29728
30598
|
"name": "id",
|
|
29729
30599
|
"optional": true,
|
|
29730
30600
|
"type": {
|
|
29731
30601
|
"text": "string"
|
|
29732
|
-
}
|
|
30602
|
+
},
|
|
30603
|
+
"description": "Target identifier (optional, falls back to first available)"
|
|
29733
30604
|
}
|
|
29734
30605
|
],
|
|
30606
|
+
"description": "Navigate to a specific item or section",
|
|
29735
30607
|
"inheritedFrom": {
|
|
29736
30608
|
"name": "TestNavigationMixin",
|
|
29737
30609
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
@@ -29763,7 +30635,6 @@
|
|
|
29763
30635
|
"text": "PostLoadTestTransformCallback | null"
|
|
29764
30636
|
},
|
|
29765
30637
|
"default": "null",
|
|
29766
|
-
"attribute": "postLoadTestTransformCallback",
|
|
29767
30638
|
"inheritedFrom": {
|
|
29768
30639
|
"name": "TestNavigationMixin",
|
|
29769
30640
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
@@ -29776,7 +30647,6 @@
|
|
|
29776
30647
|
"text": "PostLoadTransformCallback | null"
|
|
29777
30648
|
},
|
|
29778
30649
|
"default": "null",
|
|
29779
|
-
"attribute": "postLoadTransformCallback",
|
|
29780
30650
|
"inheritedFrom": {
|
|
29781
30651
|
"name": "TestNavigationMixin",
|
|
29782
30652
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
@@ -29795,24 +30665,6 @@
|
|
|
29795
30665
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
29796
30666
|
}
|
|
29797
30667
|
},
|
|
29798
|
-
{
|
|
29799
|
-
"kind": "method",
|
|
29800
|
-
"name": "retryNavigation",
|
|
29801
|
-
"privacy": "public",
|
|
29802
|
-
"return": {
|
|
29803
|
-
"type": {
|
|
29804
|
-
"text": "void"
|
|
29805
|
-
}
|
|
29806
|
-
},
|
|
29807
|
-
"description": "Retry the last failed navigation",
|
|
29808
|
-
"inheritedFrom": {
|
|
29809
|
-
"name": "TestNavigationMixin",
|
|
29810
|
-
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
29811
|
-
},
|
|
29812
|
-
"type": {
|
|
29813
|
-
"text": "retryNavigation() => void"
|
|
29814
|
-
}
|
|
29815
|
-
},
|
|
29816
30668
|
{
|
|
29817
30669
|
"kind": "field",
|
|
29818
30670
|
"name": "sessionContext",
|
|
@@ -29826,19 +30678,6 @@
|
|
|
29826
30678
|
"module": "src/lib/qti-test/core/test-base.ts"
|
|
29827
30679
|
}
|
|
29828
30680
|
},
|
|
29829
|
-
{
|
|
29830
|
-
"kind": "field",
|
|
29831
|
-
"name": "showLoadingIndicators",
|
|
29832
|
-
"type": {
|
|
29833
|
-
"text": "boolean"
|
|
29834
|
-
},
|
|
29835
|
-
"default": "true",
|
|
29836
|
-
"attribute": "showLoadingIndicators",
|
|
29837
|
-
"inheritedFrom": {
|
|
29838
|
-
"name": "TestNavigationMixin",
|
|
29839
|
-
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
29840
|
-
}
|
|
29841
|
-
},
|
|
29842
30681
|
{
|
|
29843
30682
|
"kind": "field",
|
|
29844
30683
|
"name": "testContext",
|
|
@@ -29921,7 +30760,17 @@
|
|
|
29921
30760
|
}
|
|
29922
30761
|
},
|
|
29923
30762
|
{
|
|
29924
|
-
"name": "qti-navigation-
|
|
30763
|
+
"name": "qti-navigation-loading-ended",
|
|
30764
|
+
"type": {
|
|
30765
|
+
"text": "CustomEvent"
|
|
30766
|
+
},
|
|
30767
|
+
"inheritedFrom": {
|
|
30768
|
+
"name": "TestNavigationMixin",
|
|
30769
|
+
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
30770
|
+
}
|
|
30771
|
+
},
|
|
30772
|
+
{
|
|
30773
|
+
"name": "qti-navigation-loading-started",
|
|
29925
30774
|
"type": {
|
|
29926
30775
|
"text": "CustomEvent"
|
|
29927
30776
|
},
|
|
@@ -30012,30 +30861,6 @@
|
|
|
30012
30861
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
30013
30862
|
}
|
|
30014
30863
|
},
|
|
30015
|
-
{
|
|
30016
|
-
"name": "postLoadTestTransformCallback",
|
|
30017
|
-
"type": {
|
|
30018
|
-
"text": "PostLoadTestTransformCallback | null"
|
|
30019
|
-
},
|
|
30020
|
-
"default": "null",
|
|
30021
|
-
"fieldName": "postLoadTestTransformCallback",
|
|
30022
|
-
"inheritedFrom": {
|
|
30023
|
-
"name": "TestNavigationMixin",
|
|
30024
|
-
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
30025
|
-
}
|
|
30026
|
-
},
|
|
30027
|
-
{
|
|
30028
|
-
"name": "postLoadTransformCallback",
|
|
30029
|
-
"type": {
|
|
30030
|
-
"text": "PostLoadTransformCallback | null"
|
|
30031
|
-
},
|
|
30032
|
-
"default": "null",
|
|
30033
|
-
"fieldName": "postLoadTransformCallback",
|
|
30034
|
-
"inheritedFrom": {
|
|
30035
|
-
"name": "TestNavigationMixin",
|
|
30036
|
-
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
30037
|
-
}
|
|
30038
|
-
},
|
|
30039
30864
|
{
|
|
30040
30865
|
"name": "requestTimeout",
|
|
30041
30866
|
"type": {
|
|
@@ -30047,18 +30872,6 @@
|
|
|
30047
30872
|
"name": "TestNavigationMixin",
|
|
30048
30873
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
30049
30874
|
}
|
|
30050
|
-
},
|
|
30051
|
-
{
|
|
30052
|
-
"name": "showLoadingIndicators",
|
|
30053
|
-
"type": {
|
|
30054
|
-
"text": "boolean"
|
|
30055
|
-
},
|
|
30056
|
-
"default": "true",
|
|
30057
|
-
"fieldName": "showLoadingIndicators",
|
|
30058
|
-
"inheritedFrom": {
|
|
30059
|
-
"name": "TestNavigationMixin",
|
|
30060
|
-
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
30061
|
-
}
|
|
30062
30875
|
}
|
|
30063
30876
|
],
|
|
30064
30877
|
"modulePath": "src/lib/qti-test/core/qti-test.ts",
|