Files
classroomio/apps/dashboard/src/lib/components/QuestionContainer/index.svelte
T
Adeyemi AdetunjiandRotimi Best d75e2f258e feat: multi language support (#254)
* feat: multitranslational support

* - completion of settings page
- completion of sidebar

* sidebar rerendering bug fix

* completion of the lesson navigation & materials page

* completion of the course navigation

* completion of requested languages

* - Implementation of Language Picker
- Rename Bug Fixes

* checkpoint save

* - addition of the language picker to the onboarding.
- addition of the language switcher for the lesson notes.

* merge completion

* initialization of the new branch

* add transition.svelte file

* lesson note bug fix

* feat: add translation migration

* completion of translation

* fix height issue of dropdown

* refactoring

* fix: improve code with LOCALE from db

* finally get it fully functional

* connect with AI

* backward compatibility for lesson note

* preserve old content, when generating AI content

* undo translations in upgrade modal

* fix duplicate key issue from codacy trigger

---------

Co-authored-by: Rotimi Best <best@classroomio.com>
2024-04-19 05:45:48 +01:00

74 lines
1.9 KiB
Svelte

<script>
import TextField from '../Form/TextField.svelte';
import TrashCanIcon from 'carbon-icons-svelte/lib/TrashCan.svelte';
import IconButton from '$lib/components/IconButton/index.svelte';
import { t } from '$lib/utils/functions/translations';
export let isTitle = false;
export let onClose = () => {};
export let scrollToQuestion = false;
export let points = undefined;
export let hasError = false;
export let onPointsChange = () => {};
let ref;
$: {
if (ref && scrollToQuestion) {
ref.scrollIntoView({
block: 'start',
behavior: 'smooth',
inline: 'nearest'
});
}
}
</script>
<div
bind:this={ref}
class="bg-white dark:bg-black border-2 {hasError
? 'border-red-700'
: 'border-gray hover:border-primary-700'} rounded-md mb-6 relative root"
>
{#if isTitle}
<div class="title absolute bg-primary-700" />
{/if}
<div class="px-4 {isTitle ? 'pt-4' : 'pt-2'} pb-3">
<slot />
</div>
{#if typeof points !== 'undefined'}
<div
class="flex justify-between items-center border-gray border-t-2 border-r-0 border-b-0 border-l-0 p-2"
>
<div class="flex items-center w-40">
<p class="dark:text-white text-sm mr-2">{$t('course.navItem.lessons.exercises.new_exercise_modal.points')}:</p>
<TextField
placeholder={$t('course.navItem.lessons.exercises.new_exercise_modal.points')}
bind:value={points}
type="number"
onChange={onPointsChange}
/>
</div>
{#if onClose && !isTitle}
<IconButton onClick={onClose}>
<TrashCanIcon size={24} />
</IconButton>
{/if}
</div>
{/if}
</div>
<style>
.title {
color: rgba(255, 255, 255, 1);
border-top-left-radius: 8px;
border-top-right-radius: 8px;
height: 10px;
left: -1px;
top: -1px;
width: calc(100% + 2px);
}
</style>