@citolab/qti-components 7.12.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 +102 -102
- package/custom-elements.json +1123 -334
- 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-GGTWY53P.js → chunk-XD7DR5YG.js} +362 -339
- 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 +16 -5
- 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 -18
- 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 -4
- package/dist/qti-test/index.js +2 -2
- package/dist/{qti-test-BWQRhMTT.d.ts → qti-test-Db7oNIWY.d.ts} +2 -2
- 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 +5 -27
- package/package.json +10 -1
- package/dist/chunks/chunk-GGTWY53P.js.map +0 -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/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": [
|
|
@@ -25186,7 +25211,8 @@
|
|
|
25186
25211
|
{
|
|
25187
25212
|
"kind": "method",
|
|
25188
25213
|
"name": "handleTestURLChange",
|
|
25189
|
-
"privacy": "protected"
|
|
25214
|
+
"privacy": "protected",
|
|
25215
|
+
"description": "Callback function to transform the test after loading"
|
|
25190
25216
|
},
|
|
25191
25217
|
{
|
|
25192
25218
|
"kind": "method",
|
|
@@ -25198,19 +25224,6 @@
|
|
|
25198
25224
|
"name": "initializeTemplateContent",
|
|
25199
25225
|
"privacy": "private"
|
|
25200
25226
|
},
|
|
25201
|
-
{
|
|
25202
|
-
"kind": "field",
|
|
25203
|
-
"name": "postLoadTestTransformCallback",
|
|
25204
|
-
"type": {
|
|
25205
|
-
"text": "PostLoadTestTransformCallback | null"
|
|
25206
|
-
},
|
|
25207
|
-
"default": "null",
|
|
25208
|
-
"description": "Callback function to transform the test after loading",
|
|
25209
|
-
"attribute": "postLoadTestTransformCallback",
|
|
25210
|
-
"parsedType": {
|
|
25211
|
-
"text": "{ } | null"
|
|
25212
|
-
}
|
|
25213
|
-
},
|
|
25214
25227
|
{
|
|
25215
25228
|
"kind": "field",
|
|
25216
25229
|
"name": "templateContent",
|
|
@@ -25251,18 +25264,6 @@
|
|
|
25251
25264
|
}
|
|
25252
25265
|
],
|
|
25253
25266
|
"attributes": [
|
|
25254
|
-
{
|
|
25255
|
-
"name": "postLoadTestTransformCallback",
|
|
25256
|
-
"type": {
|
|
25257
|
-
"text": "PostLoadTestTransformCallback | null"
|
|
25258
|
-
},
|
|
25259
|
-
"default": "null",
|
|
25260
|
-
"description": "Callback function to transform the test after loading",
|
|
25261
|
-
"fieldName": "postLoadTestTransformCallback",
|
|
25262
|
-
"parsedType": {
|
|
25263
|
-
"text": "{ } | null"
|
|
25264
|
-
}
|
|
25265
|
-
},
|
|
25266
25267
|
{
|
|
25267
25268
|
"name": "test-url",
|
|
25268
25269
|
"type": {
|
|
@@ -27809,28 +27810,79 @@
|
|
|
27809
27810
|
"declarations": [
|
|
27810
27811
|
{
|
|
27811
27812
|
"kind": "mixin",
|
|
27812
|
-
"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",
|
|
27813
27814
|
"name": "TestNavigationMixin",
|
|
27814
27815
|
"members": [
|
|
27815
27816
|
{
|
|
27816
27817
|
"kind": "field",
|
|
27817
|
-
"name": "
|
|
27818
|
+
"name": "_activeController",
|
|
27818
27819
|
"type": {
|
|
27819
|
-
"text": "
|
|
27820
|
+
"text": "AbortController | null"
|
|
27820
27821
|
},
|
|
27821
27822
|
"privacy": "private",
|
|
27822
|
-
"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"
|
|
27823
27875
|
},
|
|
27824
27876
|
{
|
|
27825
27877
|
"kind": "method",
|
|
27826
|
-
"name": "
|
|
27878
|
+
"name": "_checkLoadingComplete",
|
|
27827
27879
|
"privacy": "private",
|
|
27828
27880
|
"return": {
|
|
27829
27881
|
"type": {
|
|
27830
27882
|
"text": "void"
|
|
27831
27883
|
}
|
|
27832
27884
|
},
|
|
27833
|
-
"description": "
|
|
27885
|
+
"description": "Check if loading is complete and dispatch events accordingly"
|
|
27834
27886
|
},
|
|
27835
27887
|
{
|
|
27836
27888
|
"kind": "method",
|
|
@@ -27840,12 +27892,61 @@
|
|
|
27840
27892
|
"type": {
|
|
27841
27893
|
"text": "void"
|
|
27842
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
|
+
}
|
|
27843
27925
|
},
|
|
27844
|
-
"
|
|
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
|
+
]
|
|
27845
27946
|
},
|
|
27846
27947
|
{
|
|
27847
27948
|
"kind": "method",
|
|
27848
|
-
"name": "
|
|
27949
|
+
"name": "_dispatchError",
|
|
27849
27950
|
"privacy": "private",
|
|
27850
27951
|
"return": {
|
|
27851
27952
|
"type": {
|
|
@@ -27859,12 +27960,11 @@
|
|
|
27859
27960
|
"text": "NavigationError"
|
|
27860
27961
|
}
|
|
27861
27962
|
}
|
|
27862
|
-
]
|
|
27863
|
-
"description": "Dispatch error event to notify the UI"
|
|
27963
|
+
]
|
|
27864
27964
|
},
|
|
27865
27965
|
{
|
|
27866
27966
|
"kind": "method",
|
|
27867
|
-
"name": "
|
|
27967
|
+
"name": "_dispatchLoadingEnded",
|
|
27868
27968
|
"privacy": "private",
|
|
27869
27969
|
"return": {
|
|
27870
27970
|
"type": {
|
|
@@ -27873,107 +27973,146 @@
|
|
|
27873
27973
|
},
|
|
27874
27974
|
"parameters": [
|
|
27875
27975
|
{
|
|
27876
|
-
"name": "
|
|
27976
|
+
"name": "type",
|
|
27977
|
+
"type": {
|
|
27978
|
+
"text": "string"
|
|
27979
|
+
}
|
|
27980
|
+
},
|
|
27981
|
+
{
|
|
27982
|
+
"name": "id",
|
|
27877
27983
|
"type": {
|
|
27878
|
-
"text": "
|
|
27984
|
+
"text": "string"
|
|
27879
27985
|
}
|
|
27880
27986
|
}
|
|
27881
|
-
]
|
|
27882
|
-
"description": "Dispatch status event to indicate loading state"
|
|
27987
|
+
]
|
|
27883
27988
|
},
|
|
27884
27989
|
{
|
|
27885
27990
|
"kind": "method",
|
|
27886
|
-
"name": "
|
|
27991
|
+
"name": "_dispatchLoadingStarted",
|
|
27887
27992
|
"privacy": "private",
|
|
27888
27993
|
"return": {
|
|
27889
27994
|
"type": {
|
|
27890
|
-
"text": "
|
|
27995
|
+
"text": "void"
|
|
27891
27996
|
}
|
|
27892
27997
|
},
|
|
27893
27998
|
"parameters": [
|
|
27894
27999
|
{
|
|
27895
|
-
"name": "
|
|
28000
|
+
"name": "type",
|
|
28001
|
+
"type": {
|
|
28002
|
+
"text": "string"
|
|
28003
|
+
}
|
|
28004
|
+
},
|
|
28005
|
+
{
|
|
28006
|
+
"name": "id",
|
|
27896
28007
|
"type": {
|
|
27897
28008
|
"text": "string"
|
|
27898
28009
|
}
|
|
27899
28010
|
}
|
|
27900
|
-
]
|
|
27901
|
-
"description": "Gets all item IDs in a section"
|
|
28011
|
+
]
|
|
27902
28012
|
},
|
|
27903
28013
|
{
|
|
27904
28014
|
"kind": "method",
|
|
27905
|
-
"name": "
|
|
28015
|
+
"name": "_dispatchTestLoaded",
|
|
27906
28016
|
"privacy": "private",
|
|
27907
28017
|
"return": {
|
|
27908
28018
|
"type": {
|
|
27909
28019
|
"text": "void"
|
|
27910
28020
|
}
|
|
27911
28021
|
},
|
|
27912
|
-
"
|
|
28022
|
+
"parameters": [
|
|
28023
|
+
{
|
|
28024
|
+
"name": "results",
|
|
28025
|
+
"type": {
|
|
28026
|
+
"text": "any[]"
|
|
28027
|
+
}
|
|
28028
|
+
}
|
|
28029
|
+
]
|
|
27913
28030
|
},
|
|
27914
28031
|
{
|
|
27915
|
-
"kind": "
|
|
27916
|
-
"name": "
|
|
27917
|
-
"type": {
|
|
27918
|
-
"text": "NavigationError | null"
|
|
27919
|
-
},
|
|
28032
|
+
"kind": "method",
|
|
28033
|
+
"name": "_executeNavigation",
|
|
27920
28034
|
"privacy": "private",
|
|
27921
|
-
"
|
|
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
|
+
]
|
|
27922
28054
|
},
|
|
27923
28055
|
{
|
|
27924
|
-
"kind": "
|
|
27925
|
-
"name": "
|
|
27926
|
-
"type": {
|
|
27927
|
-
"text": "string | null"
|
|
27928
|
-
},
|
|
28056
|
+
"kind": "method",
|
|
28057
|
+
"name": "_findItemRef",
|
|
27929
28058
|
"privacy": "private",
|
|
27930
|
-
"
|
|
28059
|
+
"return": {
|
|
28060
|
+
"type": {
|
|
28061
|
+
"text": "QtiAssessmentItemRef"
|
|
28062
|
+
}
|
|
28063
|
+
},
|
|
28064
|
+
"parameters": [
|
|
28065
|
+
{
|
|
28066
|
+
"name": "itemId",
|
|
28067
|
+
"type": {
|
|
28068
|
+
"text": "string"
|
|
28069
|
+
}
|
|
28070
|
+
}
|
|
28071
|
+
]
|
|
27931
28072
|
},
|
|
27932
28073
|
{
|
|
27933
28074
|
"kind": "method",
|
|
27934
|
-
"name": "
|
|
28075
|
+
"name": "_findSection",
|
|
27935
28076
|
"privacy": "private",
|
|
27936
28077
|
"return": {
|
|
27937
28078
|
"type": {
|
|
27938
|
-
"text": "
|
|
28079
|
+
"text": "QtiAssessmentSection | null"
|
|
27939
28080
|
}
|
|
27940
28081
|
},
|
|
27941
28082
|
"parameters": [
|
|
27942
28083
|
{
|
|
27943
|
-
"name": "
|
|
28084
|
+
"name": "sectionId",
|
|
27944
28085
|
"type": {
|
|
27945
|
-
"text": "string
|
|
28086
|
+
"text": "string"
|
|
27946
28087
|
}
|
|
27947
28088
|
}
|
|
27948
|
-
]
|
|
27949
|
-
"description": "Load items with improved error handling and timeout"
|
|
28089
|
+
]
|
|
27950
28090
|
},
|
|
27951
28091
|
{
|
|
27952
28092
|
"kind": "method",
|
|
27953
|
-
"name": "
|
|
28093
|
+
"name": "_getDefaultNavigationId",
|
|
27954
28094
|
"privacy": "private",
|
|
27955
28095
|
"return": {
|
|
27956
28096
|
"type": {
|
|
27957
|
-
"text": "
|
|
28097
|
+
"text": "string | undefined"
|
|
27958
28098
|
}
|
|
27959
28099
|
},
|
|
27960
28100
|
"parameters": [
|
|
27961
28101
|
{
|
|
27962
|
-
"name": "
|
|
28102
|
+
"name": "type",
|
|
27963
28103
|
"type": {
|
|
27964
|
-
"text": "
|
|
28104
|
+
"text": "'item' | 'section'"
|
|
27965
28105
|
}
|
|
27966
28106
|
}
|
|
27967
|
-
]
|
|
27968
|
-
"description": "Navigates to a specific item"
|
|
28107
|
+
]
|
|
27969
28108
|
},
|
|
27970
28109
|
{
|
|
27971
28110
|
"kind": "method",
|
|
27972
|
-
"name": "
|
|
28111
|
+
"name": "_getSectionItemIds",
|
|
27973
28112
|
"privacy": "private",
|
|
27974
28113
|
"return": {
|
|
27975
28114
|
"type": {
|
|
27976
|
-
"text": "
|
|
28115
|
+
"text": "string[]"
|
|
27977
28116
|
}
|
|
27978
28117
|
},
|
|
27979
28118
|
"parameters": [
|
|
@@ -27983,25 +28122,34 @@
|
|
|
27983
28122
|
"text": "string"
|
|
27984
28123
|
}
|
|
27985
28124
|
}
|
|
27986
|
-
]
|
|
27987
|
-
"description": "Navigates to a specific section"
|
|
28125
|
+
]
|
|
27988
28126
|
},
|
|
27989
28127
|
{
|
|
27990
|
-
"kind": "
|
|
27991
|
-
"name": "
|
|
27992
|
-
"
|
|
27993
|
-
|
|
28128
|
+
"kind": "method",
|
|
28129
|
+
"name": "_handleItemConnected",
|
|
28130
|
+
"privacy": "private",
|
|
28131
|
+
"return": {
|
|
28132
|
+
"type": {
|
|
28133
|
+
"text": "void"
|
|
28134
|
+
}
|
|
27994
28135
|
},
|
|
27995
|
-
"
|
|
27996
|
-
|
|
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"
|
|
27997
28145
|
},
|
|
27998
28146
|
{
|
|
27999
28147
|
"kind": "method",
|
|
28000
|
-
"name": "
|
|
28148
|
+
"name": "_handleNavigationError",
|
|
28001
28149
|
"privacy": "private",
|
|
28002
28150
|
"return": {
|
|
28003
28151
|
"type": {
|
|
28004
|
-
"text": "
|
|
28152
|
+
"text": "void"
|
|
28005
28153
|
}
|
|
28006
28154
|
},
|
|
28007
28155
|
"parameters": [
|
|
@@ -28012,7 +28160,7 @@
|
|
|
28012
28160
|
}
|
|
28013
28161
|
},
|
|
28014
28162
|
{
|
|
28015
|
-
"name": "
|
|
28163
|
+
"name": "type",
|
|
28016
28164
|
"type": {
|
|
28017
28165
|
"text": "string"
|
|
28018
28166
|
}
|
|
@@ -28023,17 +28171,222 @@
|
|
|
28023
28171
|
"text": "string"
|
|
28024
28172
|
}
|
|
28025
28173
|
}
|
|
28026
|
-
]
|
|
28027
|
-
|
|
28174
|
+
]
|
|
28175
|
+
},
|
|
28176
|
+
{
|
|
28177
|
+
"kind": "method",
|
|
28178
|
+
"name": "_handleNavigationRequest",
|
|
28179
|
+
"privacy": "private",
|
|
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"
|
|
28189
|
+
},
|
|
28190
|
+
{
|
|
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>()"
|
|
28028
28242
|
},
|
|
28029
28243
|
{
|
|
28030
28244
|
"kind": "field",
|
|
28031
|
-
"name": "
|
|
28245
|
+
"name": "_loadingState",
|
|
28032
28246
|
"type": {
|
|
28033
|
-
"text": "
|
|
28247
|
+
"text": "object"
|
|
28034
28248
|
},
|
|
28035
28249
|
"privacy": "private",
|
|
28036
|
-
"default": "
|
|
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"
|
|
28037
28390
|
},
|
|
28038
28391
|
{
|
|
28039
28392
|
"kind": "field",
|
|
@@ -28043,6 +28396,41 @@
|
|
|
28043
28396
|
},
|
|
28044
28397
|
"privacy": "protected"
|
|
28045
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
|
+
},
|
|
28046
28434
|
{
|
|
28047
28435
|
"kind": "field",
|
|
28048
28436
|
"name": "cacheTransform",
|
|
@@ -28052,6 +28440,12 @@
|
|
|
28052
28440
|
"default": "false",
|
|
28053
28441
|
"attribute": "cache-transform"
|
|
28054
28442
|
},
|
|
28443
|
+
{
|
|
28444
|
+
"kind": "method",
|
|
28445
|
+
"name": "getLoadingProgress",
|
|
28446
|
+
"privacy": "public",
|
|
28447
|
+
"description": "Get current loading progress for external consumption"
|
|
28448
|
+
},
|
|
28055
28449
|
{
|
|
28056
28450
|
"kind": "field",
|
|
28057
28451
|
"name": "navigate",
|
|
@@ -28075,16 +28469,19 @@
|
|
|
28075
28469
|
"name": "type",
|
|
28076
28470
|
"type": {
|
|
28077
28471
|
"text": "'item' | 'section'"
|
|
28078
|
-
}
|
|
28472
|
+
},
|
|
28473
|
+
"description": "Navigation type ('item' or 'section')"
|
|
28079
28474
|
},
|
|
28080
28475
|
{
|
|
28081
28476
|
"name": "id",
|
|
28082
28477
|
"optional": true,
|
|
28083
28478
|
"type": {
|
|
28084
28479
|
"text": "string"
|
|
28085
|
-
}
|
|
28480
|
+
},
|
|
28481
|
+
"description": "Target identifier (optional, falls back to first available)"
|
|
28086
28482
|
}
|
|
28087
|
-
]
|
|
28483
|
+
],
|
|
28484
|
+
"description": "Navigate to a specific item or section"
|
|
28088
28485
|
},
|
|
28089
28486
|
{
|
|
28090
28487
|
"kind": "field",
|
|
@@ -28092,8 +28489,7 @@
|
|
|
28092
28489
|
"type": {
|
|
28093
28490
|
"text": "PostLoadTestTransformCallback | null"
|
|
28094
28491
|
},
|
|
28095
|
-
"default": "null"
|
|
28096
|
-
"attribute": "postLoadTestTransformCallback"
|
|
28492
|
+
"default": "null"
|
|
28097
28493
|
},
|
|
28098
28494
|
{
|
|
28099
28495
|
"kind": "field",
|
|
@@ -28101,8 +28497,7 @@
|
|
|
28101
28497
|
"type": {
|
|
28102
28498
|
"text": "PostLoadTransformCallback | null"
|
|
28103
28499
|
},
|
|
28104
|
-
"default": "null"
|
|
28105
|
-
"attribute": "postLoadTransformCallback"
|
|
28500
|
+
"default": "null"
|
|
28106
28501
|
},
|
|
28107
28502
|
{
|
|
28108
28503
|
"kind": "field",
|
|
@@ -28112,26 +28507,6 @@
|
|
|
28112
28507
|
},
|
|
28113
28508
|
"default": "30000",
|
|
28114
28509
|
"attribute": "requestTimeout"
|
|
28115
|
-
},
|
|
28116
|
-
{
|
|
28117
|
-
"kind": "method",
|
|
28118
|
-
"name": "retryNavigation",
|
|
28119
|
-
"privacy": "public",
|
|
28120
|
-
"return": {
|
|
28121
|
-
"type": {
|
|
28122
|
-
"text": "void"
|
|
28123
|
-
}
|
|
28124
|
-
},
|
|
28125
|
-
"description": "Retry the last failed navigation"
|
|
28126
|
-
},
|
|
28127
|
-
{
|
|
28128
|
-
"kind": "field",
|
|
28129
|
-
"name": "showLoadingIndicators",
|
|
28130
|
-
"type": {
|
|
28131
|
-
"text": "boolean"
|
|
28132
|
-
},
|
|
28133
|
-
"default": "true",
|
|
28134
|
-
"attribute": "showLoadingIndicators"
|
|
28135
28510
|
}
|
|
28136
28511
|
],
|
|
28137
28512
|
"events": [
|
|
@@ -28142,7 +28517,13 @@
|
|
|
28142
28517
|
}
|
|
28143
28518
|
},
|
|
28144
28519
|
{
|
|
28145
|
-
"name": "qti-navigation-
|
|
28520
|
+
"name": "qti-navigation-loading-ended",
|
|
28521
|
+
"type": {
|
|
28522
|
+
"text": "CustomEvent"
|
|
28523
|
+
}
|
|
28524
|
+
},
|
|
28525
|
+
{
|
|
28526
|
+
"name": "qti-navigation-loading-started",
|
|
28146
28527
|
"type": {
|
|
28147
28528
|
"text": "CustomEvent"
|
|
28148
28529
|
}
|
|
@@ -28178,39 +28559,15 @@
|
|
|
28178
28559
|
"fieldName": "navigate"
|
|
28179
28560
|
},
|
|
28180
28561
|
{
|
|
28181
|
-
"name": "
|
|
28562
|
+
"name": "requestTimeout",
|
|
28182
28563
|
"type": {
|
|
28183
|
-
"text": "
|
|
28564
|
+
"text": "number"
|
|
28184
28565
|
},
|
|
28185
|
-
"default": "
|
|
28186
|
-
"fieldName": "
|
|
28187
|
-
}
|
|
28188
|
-
|
|
28189
|
-
|
|
28190
|
-
"type": {
|
|
28191
|
-
"text": "PostLoadTransformCallback | null"
|
|
28192
|
-
},
|
|
28193
|
-
"default": "null",
|
|
28194
|
-
"fieldName": "postLoadTransformCallback"
|
|
28195
|
-
},
|
|
28196
|
-
{
|
|
28197
|
-
"name": "requestTimeout",
|
|
28198
|
-
"type": {
|
|
28199
|
-
"text": "number"
|
|
28200
|
-
},
|
|
28201
|
-
"default": "30000",
|
|
28202
|
-
"fieldName": "requestTimeout"
|
|
28203
|
-
},
|
|
28204
|
-
{
|
|
28205
|
-
"name": "showLoadingIndicators",
|
|
28206
|
-
"type": {
|
|
28207
|
-
"text": "boolean"
|
|
28208
|
-
},
|
|
28209
|
-
"default": "true",
|
|
28210
|
-
"fieldName": "showLoadingIndicators"
|
|
28211
|
-
}
|
|
28212
|
-
],
|
|
28213
|
-
"parameters": [
|
|
28566
|
+
"default": "30000",
|
|
28567
|
+
"fieldName": "requestTimeout"
|
|
28568
|
+
}
|
|
28569
|
+
],
|
|
28570
|
+
"parameters": [
|
|
28214
28571
|
{
|
|
28215
28572
|
"name": "superClass",
|
|
28216
28573
|
"type": {
|
|
@@ -29288,12 +29645,12 @@
|
|
|
29288
29645
|
"members": [
|
|
29289
29646
|
{
|
|
29290
29647
|
"kind": "field",
|
|
29291
|
-
"name": "
|
|
29648
|
+
"name": "_activeController",
|
|
29292
29649
|
"type": {
|
|
29293
|
-
"text": "
|
|
29650
|
+
"text": "AbortController | null"
|
|
29294
29651
|
},
|
|
29295
29652
|
"privacy": "private",
|
|
29296
|
-
"default": "
|
|
29653
|
+
"default": "null",
|
|
29297
29654
|
"inheritedFrom": {
|
|
29298
29655
|
"name": "TestNavigationMixin",
|
|
29299
29656
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
@@ -29301,14 +29658,77 @@
|
|
|
29301
29658
|
},
|
|
29302
29659
|
{
|
|
29303
29660
|
"kind": "method",
|
|
29304
|
-
"name": "
|
|
29661
|
+
"name": "_applyStimulusContent",
|
|
29305
29662
|
"privacy": "private",
|
|
29306
29663
|
"return": {
|
|
29307
29664
|
"type": {
|
|
29308
29665
|
"text": "void"
|
|
29309
29666
|
}
|
|
29310
29667
|
},
|
|
29311
|
-
"
|
|
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
|
+
],
|
|
29688
|
+
"inheritedFrom": {
|
|
29689
|
+
"name": "TestNavigationMixin",
|
|
29690
|
+
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
29691
|
+
}
|
|
29692
|
+
},
|
|
29693
|
+
{
|
|
29694
|
+
"kind": "method",
|
|
29695
|
+
"name": "_bindEventHandlers",
|
|
29696
|
+
"privacy": "private",
|
|
29697
|
+
"return": {
|
|
29698
|
+
"type": {
|
|
29699
|
+
"text": "void"
|
|
29700
|
+
}
|
|
29701
|
+
},
|
|
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",
|
|
29312
29732
|
"inheritedFrom": {
|
|
29313
29733
|
"name": "TestNavigationMixin",
|
|
29314
29734
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
@@ -29322,8 +29742,342 @@
|
|
|
29322
29742
|
"type": {
|
|
29323
29743
|
"text": "void"
|
|
29324
29744
|
}
|
|
29325
|
-
},
|
|
29326
|
-
"
|
|
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
|
+
],
|
|
29327
30081
|
"inheritedFrom": {
|
|
29328
30082
|
"name": "TestNavigationMixin",
|
|
29329
30083
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
@@ -29331,22 +30085,17 @@
|
|
|
29331
30085
|
},
|
|
29332
30086
|
{
|
|
29333
30087
|
"kind": "method",
|
|
29334
|
-
"name": "
|
|
30088
|
+
"name": "_handleNavigationRequest",
|
|
29335
30089
|
"privacy": "private",
|
|
29336
|
-
"return": {
|
|
29337
|
-
"type": {
|
|
29338
|
-
"text": "void"
|
|
29339
|
-
}
|
|
29340
|
-
},
|
|
29341
30090
|
"parameters": [
|
|
29342
30091
|
{
|
|
29343
|
-
"name": "
|
|
30092
|
+
"name": "{ detail }",
|
|
29344
30093
|
"type": {
|
|
29345
|
-
"text": "
|
|
30094
|
+
"text": "CustomEvent<{ type: 'item' | 'section'; id: string }>"
|
|
29346
30095
|
}
|
|
29347
30096
|
}
|
|
29348
30097
|
],
|
|
29349
|
-
"description": "
|
|
30098
|
+
"description": "Main navigation request handler with proper lifecycle management",
|
|
29350
30099
|
"inheritedFrom": {
|
|
29351
30100
|
"name": "TestNavigationMixin",
|
|
29352
30101
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
@@ -29354,22 +30103,22 @@
|
|
|
29354
30103
|
},
|
|
29355
30104
|
{
|
|
29356
30105
|
"kind": "method",
|
|
29357
|
-
"name": "
|
|
30106
|
+
"name": "_handleStimulusRefConnected",
|
|
29358
30107
|
"privacy": "private",
|
|
29359
30108
|
"return": {
|
|
29360
30109
|
"type": {
|
|
29361
|
-
"text": "void"
|
|
30110
|
+
"text": "Promise<void>"
|
|
29362
30111
|
}
|
|
29363
30112
|
},
|
|
29364
30113
|
"parameters": [
|
|
29365
30114
|
{
|
|
29366
|
-
"name": "
|
|
30115
|
+
"name": "e",
|
|
29367
30116
|
"type": {
|
|
29368
|
-
"text": "
|
|
30117
|
+
"text": "QtiAssessmentStimulusRefConnectedEvent"
|
|
29369
30118
|
}
|
|
29370
30119
|
}
|
|
29371
30120
|
],
|
|
29372
|
-
"description": "
|
|
30121
|
+
"description": "Handle stimulus reference connection events with duplicate prevention",
|
|
29373
30122
|
"inheritedFrom": {
|
|
29374
30123
|
"name": "TestNavigationMixin",
|
|
29375
30124
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
@@ -29377,22 +30126,21 @@
|
|
|
29377
30126
|
},
|
|
29378
30127
|
{
|
|
29379
30128
|
"kind": "method",
|
|
29380
|
-
"name": "
|
|
30129
|
+
"name": "_handleTestConnected",
|
|
29381
30130
|
"privacy": "private",
|
|
29382
30131
|
"return": {
|
|
29383
30132
|
"type": {
|
|
29384
|
-
"text": "
|
|
30133
|
+
"text": "void"
|
|
29385
30134
|
}
|
|
29386
30135
|
},
|
|
29387
30136
|
"parameters": [
|
|
29388
30137
|
{
|
|
29389
|
-
"name": "
|
|
30138
|
+
"name": "e",
|
|
29390
30139
|
"type": {
|
|
29391
|
-
"text": "
|
|
30140
|
+
"text": "CustomEvent<QtiAssessmentTest>"
|
|
29392
30141
|
}
|
|
29393
30142
|
}
|
|
29394
30143
|
],
|
|
29395
|
-
"description": "Gets all item IDs in a section",
|
|
29396
30144
|
"inheritedFrom": {
|
|
29397
30145
|
"name": "TestNavigationMixin",
|
|
29398
30146
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
@@ -29407,7 +30155,6 @@
|
|
|
29407
30155
|
"text": "void"
|
|
29408
30156
|
}
|
|
29409
30157
|
},
|
|
29410
|
-
"description": "Initialize navigation when test is first connected",
|
|
29411
30158
|
"inheritedFrom": {
|
|
29412
30159
|
"name": "TestNavigationMixin",
|
|
29413
30160
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
@@ -29415,12 +30162,9 @@
|
|
|
29415
30162
|
},
|
|
29416
30163
|
{
|
|
29417
30164
|
"kind": "field",
|
|
29418
|
-
"name": "
|
|
29419
|
-
"type": {
|
|
29420
|
-
"text": "NavigationError | null"
|
|
29421
|
-
},
|
|
30165
|
+
"name": "_loadedStimulusHrefs",
|
|
29422
30166
|
"privacy": "private",
|
|
29423
|
-
"default": "
|
|
30167
|
+
"default": "new Set<string>()",
|
|
29424
30168
|
"inheritedFrom": {
|
|
29425
30169
|
"name": "TestNavigationMixin",
|
|
29426
30170
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
@@ -29428,12 +30172,22 @@
|
|
|
29428
30172
|
},
|
|
29429
30173
|
{
|
|
29430
30174
|
"kind": "field",
|
|
29431
|
-
"name": "
|
|
30175
|
+
"name": "_loadingState",
|
|
29432
30176
|
"type": {
|
|
29433
|
-
"text": "
|
|
30177
|
+
"text": "object"
|
|
29434
30178
|
},
|
|
29435
30179
|
"privacy": "private",
|
|
29436
|
-
"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>()",
|
|
29437
30191
|
"inheritedFrom": {
|
|
29438
30192
|
"name": "TestNavigationMixin",
|
|
29439
30193
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
@@ -29445,7 +30199,7 @@
|
|
|
29445
30199
|
"privacy": "private",
|
|
29446
30200
|
"return": {
|
|
29447
30201
|
"type": {
|
|
29448
|
-
"text": "Promise<
|
|
30202
|
+
"text": "Promise<void>"
|
|
29449
30203
|
}
|
|
29450
30204
|
},
|
|
29451
30205
|
"parameters": [
|
|
@@ -29456,7 +30210,20 @@
|
|
|
29456
30210
|
}
|
|
29457
30211
|
}
|
|
29458
30212
|
],
|
|
29459
|
-
"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": "[]",
|
|
29460
30227
|
"inheritedFrom": {
|
|
29461
30228
|
"name": "TestNavigationMixin",
|
|
29462
30229
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
@@ -29464,22 +30231,38 @@
|
|
|
29464
30231
|
},
|
|
29465
30232
|
{
|
|
29466
30233
|
"kind": "method",
|
|
29467
|
-
"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",
|
|
29468
30252
|
"privacy": "private",
|
|
29469
30253
|
"return": {
|
|
29470
30254
|
"type": {
|
|
29471
|
-
"text": "Promise<
|
|
30255
|
+
"text": "Promise<DocumentFragment | null>"
|
|
29472
30256
|
}
|
|
29473
30257
|
},
|
|
29474
30258
|
"parameters": [
|
|
29475
30259
|
{
|
|
29476
|
-
"name": "
|
|
30260
|
+
"name": "href",
|
|
29477
30261
|
"type": {
|
|
29478
30262
|
"text": "string"
|
|
29479
30263
|
}
|
|
29480
30264
|
}
|
|
29481
30265
|
],
|
|
29482
|
-
"description": "Navigates to a specific item",
|
|
29483
30266
|
"inheritedFrom": {
|
|
29484
30267
|
"name": "TestNavigationMixin",
|
|
29485
30268
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
@@ -29487,7 +30270,7 @@
|
|
|
29487
30270
|
},
|
|
29488
30271
|
{
|
|
29489
30272
|
"kind": "method",
|
|
29490
|
-
"name": "
|
|
30273
|
+
"name": "_loadStimulusRef",
|
|
29491
30274
|
"privacy": "private",
|
|
29492
30275
|
"return": {
|
|
29493
30276
|
"type": {
|
|
@@ -29496,26 +30279,42 @@
|
|
|
29496
30279
|
},
|
|
29497
30280
|
"parameters": [
|
|
29498
30281
|
{
|
|
29499
|
-
"name": "
|
|
30282
|
+
"name": "element",
|
|
29500
30283
|
"type": {
|
|
29501
|
-
"text": "string"
|
|
30284
|
+
"text": "{ identifier: string; href: string }"
|
|
30285
|
+
}
|
|
30286
|
+
},
|
|
30287
|
+
{
|
|
30288
|
+
"name": "item",
|
|
30289
|
+
"type": {
|
|
30290
|
+
"text": "{ identifier: string }"
|
|
29502
30291
|
}
|
|
29503
30292
|
}
|
|
29504
30293
|
],
|
|
29505
|
-
"description": "
|
|
30294
|
+
"description": "Load stimulus reference with simple tracking",
|
|
29506
30295
|
"inheritedFrom": {
|
|
29507
30296
|
"name": "TestNavigationMixin",
|
|
29508
30297
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
29509
30298
|
}
|
|
29510
30299
|
},
|
|
29511
30300
|
{
|
|
29512
|
-
"kind": "
|
|
29513
|
-
"name": "
|
|
29514
|
-
"
|
|
29515
|
-
|
|
30301
|
+
"kind": "method",
|
|
30302
|
+
"name": "_navigateToItem",
|
|
30303
|
+
"privacy": "private",
|
|
30304
|
+
"return": {
|
|
30305
|
+
"type": {
|
|
30306
|
+
"text": "Promise<void>"
|
|
30307
|
+
}
|
|
29516
30308
|
},
|
|
29517
|
-
"
|
|
29518
|
-
|
|
30309
|
+
"parameters": [
|
|
30310
|
+
{
|
|
30311
|
+
"name": "itemId",
|
|
30312
|
+
"type": {
|
|
30313
|
+
"text": "string"
|
|
30314
|
+
}
|
|
30315
|
+
}
|
|
30316
|
+
],
|
|
30317
|
+
"description": "Navigate to specific item with simple state tracking",
|
|
29519
30318
|
"inheritedFrom": {
|
|
29520
30319
|
"name": "TestNavigationMixin",
|
|
29521
30320
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
@@ -29523,34 +30322,37 @@
|
|
|
29523
30322
|
},
|
|
29524
30323
|
{
|
|
29525
30324
|
"kind": "method",
|
|
29526
|
-
"name": "
|
|
30325
|
+
"name": "_navigateToSection",
|
|
29527
30326
|
"privacy": "private",
|
|
29528
30327
|
"return": {
|
|
29529
30328
|
"type": {
|
|
29530
|
-
"text": "
|
|
30329
|
+
"text": "Promise<void>"
|
|
29531
30330
|
}
|
|
29532
30331
|
},
|
|
29533
30332
|
"parameters": [
|
|
29534
30333
|
{
|
|
29535
|
-
"name": "
|
|
29536
|
-
"type": {
|
|
29537
|
-
"text": "any"
|
|
29538
|
-
}
|
|
29539
|
-
},
|
|
29540
|
-
{
|
|
29541
|
-
"name": "navigationType",
|
|
29542
|
-
"type": {
|
|
29543
|
-
"text": "string"
|
|
29544
|
-
}
|
|
29545
|
-
},
|
|
29546
|
-
{
|
|
29547
|
-
"name": "id",
|
|
30334
|
+
"name": "sectionId",
|
|
29548
30335
|
"type": {
|
|
29549
30336
|
"text": "string"
|
|
29550
30337
|
}
|
|
29551
30338
|
}
|
|
29552
30339
|
],
|
|
29553
|
-
"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",
|
|
29554
30356
|
"inheritedFrom": {
|
|
29555
30357
|
"name": "TestNavigationMixin",
|
|
29556
30358
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
@@ -29578,19 +30380,6 @@
|
|
|
29578
30380
|
"module": "src/lib/qti-test/core/mixins/test-view.mixin.ts"
|
|
29579
30381
|
}
|
|
29580
30382
|
},
|
|
29581
|
-
{
|
|
29582
|
-
"kind": "field",
|
|
29583
|
-
"name": "_targetNavigation",
|
|
29584
|
-
"type": {
|
|
29585
|
-
"text": "{ type: 'item' | 'section'; id: string } | null"
|
|
29586
|
-
},
|
|
29587
|
-
"privacy": "private",
|
|
29588
|
-
"default": "null",
|
|
29589
|
-
"inheritedFrom": {
|
|
29590
|
-
"name": "TestNavigationMixin",
|
|
29591
|
-
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
29592
|
-
}
|
|
29593
|
-
},
|
|
29594
30383
|
{
|
|
29595
30384
|
"kind": "field",
|
|
29596
30385
|
"name": "_testElement",
|
|
@@ -29656,6 +30445,49 @@
|
|
|
29656
30445
|
"module": "src/lib/qti-test/core/test-base.ts"
|
|
29657
30446
|
}
|
|
29658
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
|
+
},
|
|
29659
30491
|
{
|
|
29660
30492
|
"kind": "field",
|
|
29661
30493
|
"name": "cacheTransform",
|
|
@@ -29669,6 +30501,19 @@
|
|
|
29669
30501
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
29670
30502
|
}
|
|
29671
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
|
+
},
|
|
29672
30517
|
{
|
|
29673
30518
|
"kind": "method",
|
|
29674
30519
|
"name": "getOutcome",
|
|
@@ -29746,16 +30591,19 @@
|
|
|
29746
30591
|
"name": "type",
|
|
29747
30592
|
"type": {
|
|
29748
30593
|
"text": "'item' | 'section'"
|
|
29749
|
-
}
|
|
30594
|
+
},
|
|
30595
|
+
"description": "Navigation type ('item' or 'section')"
|
|
29750
30596
|
},
|
|
29751
30597
|
{
|
|
29752
30598
|
"name": "id",
|
|
29753
30599
|
"optional": true,
|
|
29754
30600
|
"type": {
|
|
29755
30601
|
"text": "string"
|
|
29756
|
-
}
|
|
30602
|
+
},
|
|
30603
|
+
"description": "Target identifier (optional, falls back to first available)"
|
|
29757
30604
|
}
|
|
29758
30605
|
],
|
|
30606
|
+
"description": "Navigate to a specific item or section",
|
|
29759
30607
|
"inheritedFrom": {
|
|
29760
30608
|
"name": "TestNavigationMixin",
|
|
29761
30609
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
@@ -29787,7 +30635,6 @@
|
|
|
29787
30635
|
"text": "PostLoadTestTransformCallback | null"
|
|
29788
30636
|
},
|
|
29789
30637
|
"default": "null",
|
|
29790
|
-
"attribute": "postLoadTestTransformCallback",
|
|
29791
30638
|
"inheritedFrom": {
|
|
29792
30639
|
"name": "TestNavigationMixin",
|
|
29793
30640
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
@@ -29800,7 +30647,6 @@
|
|
|
29800
30647
|
"text": "PostLoadTransformCallback | null"
|
|
29801
30648
|
},
|
|
29802
30649
|
"default": "null",
|
|
29803
|
-
"attribute": "postLoadTransformCallback",
|
|
29804
30650
|
"inheritedFrom": {
|
|
29805
30651
|
"name": "TestNavigationMixin",
|
|
29806
30652
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
@@ -29819,24 +30665,6 @@
|
|
|
29819
30665
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
29820
30666
|
}
|
|
29821
30667
|
},
|
|
29822
|
-
{
|
|
29823
|
-
"kind": "method",
|
|
29824
|
-
"name": "retryNavigation",
|
|
29825
|
-
"privacy": "public",
|
|
29826
|
-
"return": {
|
|
29827
|
-
"type": {
|
|
29828
|
-
"text": "void"
|
|
29829
|
-
}
|
|
29830
|
-
},
|
|
29831
|
-
"description": "Retry the last failed navigation",
|
|
29832
|
-
"inheritedFrom": {
|
|
29833
|
-
"name": "TestNavigationMixin",
|
|
29834
|
-
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
29835
|
-
},
|
|
29836
|
-
"type": {
|
|
29837
|
-
"text": "retryNavigation() => void"
|
|
29838
|
-
}
|
|
29839
|
-
},
|
|
29840
30668
|
{
|
|
29841
30669
|
"kind": "field",
|
|
29842
30670
|
"name": "sessionContext",
|
|
@@ -29850,19 +30678,6 @@
|
|
|
29850
30678
|
"module": "src/lib/qti-test/core/test-base.ts"
|
|
29851
30679
|
}
|
|
29852
30680
|
},
|
|
29853
|
-
{
|
|
29854
|
-
"kind": "field",
|
|
29855
|
-
"name": "showLoadingIndicators",
|
|
29856
|
-
"type": {
|
|
29857
|
-
"text": "boolean"
|
|
29858
|
-
},
|
|
29859
|
-
"default": "true",
|
|
29860
|
-
"attribute": "showLoadingIndicators",
|
|
29861
|
-
"inheritedFrom": {
|
|
29862
|
-
"name": "TestNavigationMixin",
|
|
29863
|
-
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
29864
|
-
}
|
|
29865
|
-
},
|
|
29866
30681
|
{
|
|
29867
30682
|
"kind": "field",
|
|
29868
30683
|
"name": "testContext",
|
|
@@ -29945,7 +30760,17 @@
|
|
|
29945
30760
|
}
|
|
29946
30761
|
},
|
|
29947
30762
|
{
|
|
29948
|
-
"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",
|
|
29949
30774
|
"type": {
|
|
29950
30775
|
"text": "CustomEvent"
|
|
29951
30776
|
},
|
|
@@ -30036,30 +30861,6 @@
|
|
|
30036
30861
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
30037
30862
|
}
|
|
30038
30863
|
},
|
|
30039
|
-
{
|
|
30040
|
-
"name": "postLoadTestTransformCallback",
|
|
30041
|
-
"type": {
|
|
30042
|
-
"text": "PostLoadTestTransformCallback | null"
|
|
30043
|
-
},
|
|
30044
|
-
"default": "null",
|
|
30045
|
-
"fieldName": "postLoadTestTransformCallback",
|
|
30046
|
-
"inheritedFrom": {
|
|
30047
|
-
"name": "TestNavigationMixin",
|
|
30048
|
-
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
30049
|
-
}
|
|
30050
|
-
},
|
|
30051
|
-
{
|
|
30052
|
-
"name": "postLoadTransformCallback",
|
|
30053
|
-
"type": {
|
|
30054
|
-
"text": "PostLoadTransformCallback | null"
|
|
30055
|
-
},
|
|
30056
|
-
"default": "null",
|
|
30057
|
-
"fieldName": "postLoadTransformCallback",
|
|
30058
|
-
"inheritedFrom": {
|
|
30059
|
-
"name": "TestNavigationMixin",
|
|
30060
|
-
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
30061
|
-
}
|
|
30062
|
-
},
|
|
30063
30864
|
{
|
|
30064
30865
|
"name": "requestTimeout",
|
|
30065
30866
|
"type": {
|
|
@@ -30071,18 +30872,6 @@
|
|
|
30071
30872
|
"name": "TestNavigationMixin",
|
|
30072
30873
|
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
30073
30874
|
}
|
|
30074
|
-
},
|
|
30075
|
-
{
|
|
30076
|
-
"name": "showLoadingIndicators",
|
|
30077
|
-
"type": {
|
|
30078
|
-
"text": "boolean"
|
|
30079
|
-
},
|
|
30080
|
-
"default": "true",
|
|
30081
|
-
"fieldName": "showLoadingIndicators",
|
|
30082
|
-
"inheritedFrom": {
|
|
30083
|
-
"name": "TestNavigationMixin",
|
|
30084
|
-
"module": "src/lib/qti-test/core/mixins/test-navigation.mixin.ts"
|
|
30085
|
-
}
|
|
30086
30875
|
}
|
|
30087
30876
|
],
|
|
30088
30877
|
"modulePath": "src/lib/qti-test/core/qti-test.ts",
|