{#snippet gradingBadge(question)} {@const autoGradable = isQuestionAutoGradable(question)} {#snippet child({ props })} {autoGradable ? $t('course.navItem.lessons.exercises.all_exercises.edit_mode.question_type_auto_gradable') : $t('course.navItem.lessons.exercises.all_exercises.edit_mode.question_type_manual_grading')} {/snippet} {autoGradable ? $t('course.navItem.lessons.exercises.all_exercises.edit_mode.question_type_auto_gradable_description') : $t('course.navItem.lessons.exercises.all_exercises.edit_mode.question_type_manual_grading_description')} {/snippet} {#snippet questionEditor(question, index)} {@const questionStoreIndex = $questionnaire.questions.findIndex((item) => item.id === question.id)} { question.isDirty = true; }} > {#if typeof question.code === 'string'}
handleCode(question.id, false)}>
{/if} {@render gradingBadge(question)}
onSharedQuestionChange(question.id, nextQuestion)} > {#snippet questionTypeSelect()} onQuestionTypeChange(question.id, nextValue)} triggerQuestionType={question?.questionType} types={availableQuestionTypes} /> {/snippet} {#if getQuestionErrorMsg(errors, question, 'option')}

{getQuestionErrorMsg(errors, question, 'option')}

{/if}
{/snippet} {#snippet compactQuestionRow(question, index)}
{index + 1}

{question.title || getExerciseEditorQuestionTypeLabel(question?.questionType)}

{getExerciseEditorQuestionTypeLabel(question?.questionType)}

{/snippet}
{#if Object.values(errors).length}

{$t('course.navItem.lessons.exercises.all_exercises.edit_mode.error')}

{/if}
{#if hasSections($questionnaire.sections)}
{#each activeSections as section, sectionIndex (section.id)} {@const sectionQuestions = getQuestionsForSection($questionnaire.questions, section.id)} {@const reorderSectionQuestions = getReorderQuestionsForSection(section.id, sectionQuestions)} handleUpdateSectionTitle(section.id, title)} onDescriptionChange={(description) => handleUpdateSectionDescription(section.id, description)} onColorThemeChange={(colorTheme) => handleUpdateSectionColorTheme(section.id, colorTheme)} onAddQuestion={() => addQuestionToSection(section.id)} onDelete={() => onInitSectionDeleteClicked(section.id)} onMoveUp={() => moveSection(section.id, -1)} onMoveDown={() => moveSection(section.id, 1)} canMoveUp={sectionIndex > 0} canMoveDown={sectionIndex < activeSections.length - 1} >
handleSectionQuestionDndConsider(section.id, event)} onfinalize={(event) => handleSectionQuestionDndFinalize(section.id, event)} > {#each reorderQuestions ? reorderSectionQuestions : sectionQuestions as question, index (question.id)}
{#if reorderQuestions}
{#if reorderQuestions} {@render compactQuestionRow(question, index)} {:else} {@render questionEditor(question, index)} {/if}
{/each}
handleUpdateSectionAfterBehavior(section.id, behavior)} /> {/each}
{:else} {#each $questionnaire.questions as question, index (question.id)} {#if !question.deletedAt} {@render questionEditor(question, index)} {/if} {/each} {/if}