You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
❌ This issue is not open for contribution. Visit Contributing guidelines to learn about the contributing process and how to find suitable issues.
Overview
Build the inline choice interaction editor and turn the question type on. The editor puts together the optional question, the passage editor holding the chips, and the options list for the selected chip. It uses the descriptor from #6180 and the chip from #6181.
Complexity: High Target branch: unstable
Context
In the design, an inline choice card in edit mode shows, top to bottom:
Type: the question type selector, set to "Inline choice"
Question (optional): a rich-text prompt field, like the other interactions'
Passage editor: helper text "Inline choice widgets can be inserted blank or converted from highlighted text.", then the passage's rich text TipTapEditor, whose toolbar adds Insert as a prominent, labelled button
Inline choice answer options: the options of the selected chip. Each row has a drag handle, a correct-answer marker, the option text, move up / move down, and remove; the correct row is highlighted. An Add option button follows the list.
In view mode, the card shows the question and the passage with its chips in place (e.g. 4 revolves, 3 Moon).
The editor core's multi-response support comes from #6179, so this editor receives, and emits, every dropdown's declaration in one interaction block.
The Change
interactions/inlineChoice/Editor.vue and a useInlineChoiceInteraction composable built on useInteraction, registered in interactions/index.js.
The descriptor offers Inline choice in the question type selector, and the card's question type label shows it.
The question field and the passage editor follow the layout above. The passage editor is a rich text editor, like the question field, with Insert added to its toolbar. Options are plain text and use the plain-text toolbar row from QTI Question Authoring in Kolibri Studio #5927 (history, copy / paste without formatting).
The options list shows the selected chip's options, and edits them through that chip's node, so undo, redo and copy / paste stay consistent with what the list shows:
add an option (Add option), edit its text, remove it
reorder by drag and drop, or with move up / move down
mark exactly one option as correct; marking another moves the mark
With no chip selected, the options list is not shown. Inserting a chip selects it, so its options appear right away. Removing the selected chip from the passage clears the selection.
Validation errors from the descriptor are shown next to the option or on the chip they belong to, and mark the question as incomplete, as in the other interactions.
View mode shows the question and the passage with its chips. Whether the chips show the correct answer follows Show answers, as the other interactions do.
Nearest references: shared/views/QTIEditor/interactions/choice/Editor.vue (options with a correct answer), shared/views/QTIEditor/interactions/ordering/Editor.vue (reordering)
AGENTS.md / CLAUDE.md for KDS, Composition API, i18n and testing conventions
AI usage
I used Claude Code to draft this issue from the Figma design and the existing interaction editors. I decided how to split the work and reviewed and edited the text.
❌ This issue is not open for contribution. Visit Contributing guidelines to learn about the contributing process and how to find suitable issues.
Overview
Build the inline choice interaction editor and turn the question type on. The editor puts together the optional question, the passage editor holding the chips, and the options list for the selected chip. It uses the descriptor from #6180 and the chip from #6181.
Complexity: High
Target branch: unstable
Context
In the design, an inline choice card in edit mode shows, top to bottom:
TipTapEditor, whose toolbar adds Insert as a prominent, labelled buttonIn view mode, the card shows the question and the passage with its chips in place (e.g.
4 revolves,3 Moon).The editor core's multi-response support comes from #6179, so this editor receives, and emits, every dropdown's declaration in one interaction block.
The Change
interactions/inlineChoice/Editor.vueand auseInlineChoiceInteractioncomposable built onuseInteraction, registered ininteractions/index.js.Out of Scope
Acceptance Criteria
General
Accessibility and i18n
qtiEditorStringsTesting
Testing
To check end-to-end, publish a channel with an inline choice question and open it in Kolibri's QTI viewer.
References
shared/views/QTIEditor/interactions/choice/Editor.vue(options with a correct answer),shared/views/QTIEditor/interactions/ordering/Editor.vue(reordering)AGENTS.md/CLAUDE.mdfor KDS, Composition API, i18n and testing conventionsAI usage
I used Claude Code to draft this issue from the Figma design and the existing interaction editors. I decided how to split the work and reviewed and edited the text.