diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..bfc0469 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "i18n-ally.localesPaths": [ + "frontend/src/locales" + ] +} \ No newline at end of file diff --git a/LaTeX_pdf/assets/epfl.png b/LaTeX_pdf/assets/epfl.png new file mode 100644 index 0000000..c54999e Binary files /dev/null and b/LaTeX_pdf/assets/epfl.png differ diff --git a/LaTeX_pdf/assignment.cls b/LaTeX_pdf/assignment.cls new file mode 100644 index 0000000..b327253 --- /dev/null +++ b/LaTeX_pdf/assignment.cls @@ -0,0 +1,60 @@ +% https://github.com/Ziqi-Yang/latex_assignment_template +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{assignment}[a latex class for editing your assignment] + +\LoadClass[11pt,letterpaper]{article} + +\RequirePackage[left=2cm,right=2cm,top=1.5cm,bottom=2cm]{geometry} +\RequirePackage[dvipsnames]{xcolor} +\RequirePackage{listings} +\RequirePackage{tcolorbox} + +\setlength{\textwidth}{6.5in} +\setlength{\textheight}{9.in} +\setlength{\oddsidemargin}{0in} +\setlength{\headheight}{0in} + +% create a box to highlight word +\newtcbox{\hword}[1][orange]{on line, arc = 0.3mm,auto outer arc,colback = #1!12!, colframe = #1!60!,colupper = black, boxsep =0mm, left =0.3mm, right = 0.3mm, top =0.4mm, bottom = 0.4mm,boxrule =0.2mm, bottomrule =0.2mm, toprule = 0.2mm} + +% default code style +\lstset{ + framerule=1pt, + frame=tb, + emphstyle={\small\ttfamily\bfseries\color{Orange}}, + numbers=left, + numberstyle= \tiny\color{black}, + basicstyle = \small\ttfamily, + keywordstyle = \bfseries\color{BrickRed}, + identifierstyle = \bfseries\color{black}, + stringstyle = \bfseries\color{ForestGreen}, + commentstyle = \bfseries\color{Violet}, + breaklines = true, + columns = fixed, + basewidth = .5em, + backgroundcolor=\color{Gray!5}, + tabsize=2, + showspaces=false, + showstringspaces=false, +} + +\newcommand{\assignmentTitle}[5]{ + \begin{flushleft} + \textbf{Student Name:} #1\\ + \textbf{Student ID:} #2 + \end{flushleft} + + \begin{flushright}\vspace{-15mm} + \includegraphics[height=1cm]{#3} + \end{flushright} + + \begin{flushleft}\vspace{0mm} + \textbf{\large #4} + \end{flushleft} + + \begin{flushleft}\vspace{-3.5mm} + \textbf{\large #5} + \end{flushleft} + + \noindent\rule{\linewidth}{.6pt} +} diff --git a/LaTeX_pdf/box-filter.lua b/LaTeX_pdf/box-filter.lua new file mode 100644 index 0000000..7146bc1 --- /dev/null +++ b/LaTeX_pdf/box-filter.lua @@ -0,0 +1,27 @@ +-- box-filter.lua +-- Converts fenced divs like: +-- ::: {.defbox title="Def. 1.1 -- Something"} +-- content (normal Markdown: **bold**, lists, code blocks, math...) +-- ::: +-- into raw LaTeX tcolorbox environments (defbox/theobox/exbox), while the +-- content itself stays as ordinary Markdown blocks that pandoc converts +-- normally (bold -> \textbf, code fences -> lstlisting, etc.). + +local boxnames = { defbox = true, theobox = true, exbox = true } + +function Div(el) + for name, _ in pairs(boxnames) do + if el.classes:includes(name) then + local title = el.attributes["title"] or "" + local open = pandoc.RawBlock("latex", "\\begin{" .. name .. "}[" .. title .. "]") + local close = pandoc.RawBlock("latex", "\\end{" .. name .. "}") + local blocks = { open } + for _, b in ipairs(el.content) do + table.insert(blocks, b) + end + table.insert(blocks, close) + return blocks + end + end + return nil +end diff --git a/LaTeX_pdf/modele.md b/LaTeX_pdf/modele.md new file mode 100644 index 0000000..093ddb3 --- /dev/null +++ b/LaTeX_pdf/modele.md @@ -0,0 +1,78 @@ +--- +student-name: "Antoine Pelletier" +student-id: "356029" +logo: "/home/tibiscuit/LaTeX_pdf/assets/epfl.png" +course: "CS473 -- System Programming for SOC's" +subtitle: "Lecture 2 Notes: Memory subsystem" +--- + + + +# Introduction + +Texte d'introduction du cours. On peut utiliser du **gras**, de +l'*italique*, des listes : + +- premier point +- second point + - sous-point + +et des énumérations numérotées : + +1. étape une +2. étape deux + +## Sous-section + +On peut librement imbriquer des sous-sections avec `##`, `###`, etc. + +# Définitions, théorèmes et exemples + +Pour respecter le rendu exact du LaTeX d'origine, les encadrés colorés +sont insérés en LaTeX brut au milieu du Markdown : + +\begin{defbox}[Nom de la définition] +Contenu de la définition, en Markdown normal (gras, italique, etc. +fonctionnent aussi à l'intérieur). +\end{defbox} + +\begin{theobox}[Nom du théorème] +Énoncé du théorème ou de la propriété importante à retenir. +\end{theobox} + +\begin{exbox}[Nom de l'exemple] +Illustration concrète, éventuellement avec un extrait de code : + +```c +int main() { + return 0; +} +``` +\end{exbox} + +# Tableaux + +Un tableau Markdown standard : + +| Colonne A | Colonne B | Colonne C | +|:----------|:---------:|----------:| +| gauche | centré | droite | +| ligne 2 | ligne 2 | ligne 2 | + +# Conclusion + +Résumé des points clés du cours, comme dans la dernière slide de chaque +lecture. diff --git a/LaTeX_pdf/template.tex b/LaTeX_pdf/template.tex new file mode 100644 index 0000000..9317767 --- /dev/null +++ b/LaTeX_pdf/template.tex @@ -0,0 +1,156 @@ +\documentclass[11pt]{article} + +% ---------- Encoding & fonts (pdflatex-compatible, no external fonts needed) ---------- +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{lmodern} +\usepackage{textcomp} +% Unicode chars pdflatex doesn't know out of the box +\DeclareUnicodeCharacter{2212}{\ensuremath{-}} % − minus sign +\DeclareUnicodeCharacter{2192}{\ensuremath{\rightarrow}} +\DeclareUnicodeCharacter{2190}{\ensuremath{\leftarrow}} +\DeclareUnicodeCharacter{2264}{\ensuremath{\leq}} +\DeclareUnicodeCharacter{2265}{\ensuremath{\geq}} +\DeclareUnicodeCharacter{00D7}{\ensuremath{\times}} + +% ---------- Page geometry (matches assignment.cls) ---------- +\usepackage[left=2cm,right=2cm,top=1.5cm,bottom=2cm]{geometry} +\usepackage{setspace} +\setstretch{1.08} + +% ---------- Math ---------- +\usepackage{amsmath,amssymb} + +% ---------- Colour & boxes ---------- +\usepackage[dvipsnames]{xcolor} +\usepackage[most]{tcolorbox} +\tcbuselibrary{skins,breakable} + +\newtcolorbox{defbox}[1][]{% + enhanced, breakable, colback=blue!5, colframe=blue!65!black, + fonttitle=\bfseries, coltitle=white, title={#1}, + boxrule=0.8pt, arc=2pt, left=6pt, right=6pt, top=4pt, bottom=4pt +} +\newtcolorbox{theobox}[1][]{% + enhanced, breakable, colback=red!5, colframe=red!55!black, + fonttitle=\bfseries, coltitle=white, title={#1}, + boxrule=0.8pt, arc=2pt, left=6pt, right=6pt, top=4pt, bottom=4pt +} +\newtcolorbox{exbox}[1][]{% + enhanced, breakable, colback=green!5, colframe=green!40!black, + fonttitle=\bfseries, coltitle=white, title={#1}, + boxrule=0.8pt, arc=2pt, left=6pt, right=6pt, top=4pt, bottom=4pt +} + +% Word-highlight box, matching assignment.cls's \hword +\newtcbox{\hword}[1][orange]{on line, arc=0.3mm, auto outer arc, + colback=#1!12!, colframe=#1!60!, colupper=black, boxsep=0mm, + left=0.3mm, right=0.3mm, top=0.4mm, bottom=0.4mm, + boxrule=0.2mm, bottomrule=0.2mm, toprule=0.2mm} + +% ---------- Tables ---------- +\usepackage{calc} +\usepackage{booktabs} +\usepackage{longtable} +\usepackage{array} +\providecommand{\tightlist}{% + \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} +\providecommand{\passthrough}[1]{#1} +\providecommand{\pandocbounded}[1]{#1} + +% Fix for a real bug (see jgm/pandoc#11201): longtable >= 4.21 (shipped with +% recent TeX Live, e.g. 2026) combined with the caption package's longtable +% patch tries to reference a counter literally named "none" as a placeholder +% for uncaptioned tables, which was never actually defined anywhere, crashing +% with "LaTeX Error: No counter 'none' defined." Defining it as an unused +% dummy counter satisfies that reference harmlessly. +\newcounter{none} + +% ---------- Code listings (pandoc --listings), matching assignment.cls ---------- +\usepackage{listings} +\usepackage{pmboxdraw} % box-drawing glyphs (├ └ │ ─ ...) under pdflatex +\lstset{ + % listings is not UTF-8 aware under pdflatex: map multibyte chars explicitly + literate= + {├}{{\textSFviii}}1 {└}{{\textSFii}}1 {┌}{{\textSFi}}1 {┐}{{\textSFiii}}1 {┘}{{\textSFiv}}1 {┤}{{\textSFix}}1 + {┬}{{\textSFvi}}1 {┴}{{\textSFvii}}1 {┼}{{\textSFv}}1 {│}{{\textSFxi}}1 {─}{{\textSFx}}1 + {é}{{\'e}}1 {è}{{\`e}}1 {ê}{{\^e}}1 {ë}{{\"e}}1 {à}{{\`a}}1 {â}{{\^a}}1 + {ù}{{\`u}}1 {û}{{\^u}}1 {ü}{{\"u}}1 {ô}{{\^o}}1 {ö}{{\"o}}1 {î}{{\^i}}1 + {ï}{{\"i}}1 {ç}{{\c{c}}}1 {É}{{\'E}}1 {È}{{\`E}}1 {À}{{\`A}}1 {Ç}{{\c{C}}}1 + {«}{{\guillemotleft}}1 {»}{{\guillemotright}}1 {’}{{'}}1 {…}{{...}}3 {−}{{-}}1 {–}{{--}}1 {—}{{---}}1 + {≤}{{$$\leq$$}}1 {≥}{{$$\geq$$}}1 {×}{{$$\times$$}}1 + {→}{{$$\rightarrow$$}}2 {←}{{$$\leftarrow$$}}2, + framerule=1pt, + frame=tb, + emphstyle={\small\ttfamily\bfseries\color{Orange}}, + numbers=left, + numberstyle=\tiny\color{black}, + basicstyle=\small\ttfamily, + keywordstyle=\bfseries\color{BrickRed}, + identifierstyle=\bfseries\color{black}, + stringstyle=\bfseries\color{ForestGreen}, + commentstyle=\bfseries\color{Violet}, + breaklines=true, + columns=fixed, + basewidth=.5em, + backgroundcolor=\color{Gray!5}, + tabsize=2, + showspaces=false, + showstringspaces=false, +} + +% ---------- Links ---------- +\usepackage[colorlinks=true,linkcolor=blue!60!black,urlcolor=blue!60!black,citecolor=blue!60!black]{hyperref} + +% caption is loaded AFTER hyperref on purpose: it needs to detect hyperref's +% presence at load time to patch longtable's anchor/bookmark generation +% correctly. Loading it before hyperref (as an earlier version of this +% template did) is a known cause of exactly the +% "LaTeX Error: No counter 'none' defined" crash on \begin{longtable}. +\usepackage{caption} +\captionsetup{skip=6pt} + +% Failsafe belt-and-braces: bypass hyperref's auto-computed \theHtable / +% \theHfigure chain entirely. +\providecommand{\theHtable}{\thetable} +\providecommand{\theHfigure}{\thefigure} + +% ---------- Section styling ---------- +\usepackage{sectsty} +\sectionfont{\Large\bfseries} +\subsectionfont{\large\bfseries\color{black!80}} + +\usepackage{graphicx} + +\begin{document} + +% ---------- Header (matches assignment.cls's \assignmentTitle) ---------- +\begin{flushleft} +$if(student-name)$\textbf{Student Name:} $student-name$\\$endif$ +$if(student-id)$\textbf{Student ID:} $student-id$$endif$ +\end{flushleft} + +$if(logo)$ +\begin{flushright}\vspace{-15mm} +\includegraphics[height=1cm]{$logo$} +\end{flushright} +$endif$ + +$if(course)$ +\begin{flushleft}\vspace{0mm} +\textbf{\large $course$} +\end{flushleft} +$endif$ + +$if(subtitle)$ +\begin{flushleft}\vspace{-3.5mm} +\textbf{\large $subtitle$} +\end{flushleft} +$endif$ + +\noindent\rule{\linewidth}{.6pt} +\vspace{4mm} + +$body$ + +\end{document} diff --git a/LaTeX_pdf/template.tex.bak b/LaTeX_pdf/template.tex.bak new file mode 100644 index 0000000..5d7f2ce --- /dev/null +++ b/LaTeX_pdf/template.tex.bak @@ -0,0 +1,138 @@ +\documentclass[11pt]{article} + +% ---------- Encoding & fonts (pdflatex-compatible, no external fonts needed) ---------- +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{lmodern} +\usepackage{textcomp} + +% ---------- Page geometry (matches assignment.cls) ---------- +\usepackage[left=2cm,right=2cm,top=1.5cm,bottom=2cm]{geometry} +\usepackage{setspace} +\setstretch{1.08} + +% ---------- Math ---------- +\usepackage{amsmath,amssymb} + +% ---------- Colour & boxes ---------- +\usepackage[dvipsnames]{xcolor} +\usepackage[most]{tcolorbox} +\tcbuselibrary{skins,breakable} + +\newtcolorbox{defbox}[1][]{% + enhanced, breakable, colback=blue!5, colframe=blue!65!black, + fonttitle=\bfseries, coltitle=white, title={#1}, + boxrule=0.8pt, arc=2pt, left=6pt, right=6pt, top=4pt, bottom=4pt +} +\newtcolorbox{theobox}[1][]{% + enhanced, breakable, colback=red!5, colframe=red!55!black, + fonttitle=\bfseries, coltitle=white, title={#1}, + boxrule=0.8pt, arc=2pt, left=6pt, right=6pt, top=4pt, bottom=4pt +} +\newtcolorbox{exbox}[1][]{% + enhanced, breakable, colback=green!5, colframe=green!40!black, + fonttitle=\bfseries, coltitle=white, title={#1}, + boxrule=0.8pt, arc=2pt, left=6pt, right=6pt, top=4pt, bottom=4pt +} + +% Word-highlight box, matching assignment.cls's \hword +\newtcbox{\hword}[1][orange]{on line, arc=0.3mm, auto outer arc, + colback=#1!12!, colframe=#1!60!, colupper=black, boxsep=0mm, + left=0.3mm, right=0.3mm, top=0.4mm, bottom=0.4mm, + boxrule=0.2mm, bottomrule=0.2mm, toprule=0.2mm} + +% ---------- Tables ---------- +\usepackage{calc} +\usepackage{booktabs} +\usepackage{longtable} +\usepackage{array} +\providecommand{\tightlist}{% + \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} +\providecommand{\passthrough}[1]{#1} +\providecommand{\pandocbounded}[1]{#1} + +% Fix for a real bug (see jgm/pandoc#11201): longtable >= 4.21 (shipped with +% recent TeX Live, e.g. 2026) combined with the caption package's longtable +% patch tries to reference a counter literally named "none" as a placeholder +% for uncaptioned tables, which was never actually defined anywhere, crashing +% with "LaTeX Error: No counter 'none' defined." Defining it as an unused +% dummy counter satisfies that reference harmlessly. +\newcounter{none} + +% ---------- Code listings (pandoc --listings), matching assignment.cls ---------- +\usepackage{listings} +\lstset{ + framerule=1pt, + frame=tb, + emphstyle={\small\ttfamily\bfseries\color{Orange}}, + numbers=left, + numberstyle=\tiny\color{black}, + basicstyle=\small\ttfamily, + keywordstyle=\bfseries\color{BrickRed}, + identifierstyle=\bfseries\color{black}, + stringstyle=\bfseries\color{ForestGreen}, + commentstyle=\bfseries\color{Violet}, + breaklines=true, + columns=fixed, + basewidth=.5em, + backgroundcolor=\color{Gray!5}, + tabsize=2, + showspaces=false, + showstringspaces=false, +} + +% ---------- Links ---------- +\usepackage[colorlinks=true,linkcolor=blue!60!black,urlcolor=blue!60!black,citecolor=blue!60!black]{hyperref} + +% caption is loaded AFTER hyperref on purpose: it needs to detect hyperref's +% presence at load time to patch longtable's anchor/bookmark generation +% correctly. Loading it before hyperref (as an earlier version of this +% template did) is a known cause of exactly the +% "LaTeX Error: No counter 'none' defined" crash on \begin{longtable}. +\usepackage{caption} +\captionsetup{skip=6pt} + +% Failsafe belt-and-braces: bypass hyperref's auto-computed \theHtable / +% \theHfigure chain entirely. +\providecommand{\theHtable}{\thetable} +\providecommand{\theHfigure}{\thefigure} + +% ---------- Section styling ---------- +\usepackage{sectsty} +\sectionfont{\Large\bfseries} +\subsectionfont{\large\bfseries\color{black!80}} + +\usepackage{graphicx} + +\begin{document} + +% ---------- Header (matches assignment.cls's \assignmentTitle) ---------- +\begin{flushleft} +$if(student-name)$\textbf{Student Name:} $student-name$\\$endif$ +$if(student-id)$\textbf{Student ID:} $student-id$$endif$ +\end{flushleft} + +$if(logo)$ +\begin{flushright}\vspace{-15mm} +\includegraphics[height=1cm]{$logo$} +\end{flushright} +$endif$ + +$if(course)$ +\begin{flushleft}\vspace{0mm} +\textbf{\large $course$} +\end{flushleft} +$endif$ + +$if(subtitle)$ +\begin{flushleft}\vspace{-3.5mm} +\textbf{\large $subtitle$} +\end{flushleft} +$endif$ + +\noindent\rule{\linewidth}{.6pt} +\vspace{4mm} + +$body$ + +\end{document} diff --git a/frontend/src/components/AppContent.vue b/frontend/src/components/AppContent.vue index da44fd4..926e0c1 100644 --- a/frontend/src/components/AppContent.vue +++ b/frontend/src/components/AppContent.vue @@ -11,14 +11,15 @@ import { } from '@/components/ui/dropdown-menu' import { Separator } from '@/components/ui/separator' import { SidebarInset, SidebarTrigger } from '@/components/ui/sidebar' +import ThemeToggle from '@/components/ThemeToggle.vue' import { locales, setLocale } from '@/services/i18n' import { useI18n } from 'vue-i18n' const route = useRoute() const { locale: currentLocale } = useI18n() -const selectedLangFlag = computed( - () => locales.find((l) => l.lang === currentLocale.value)?.flag ?? locales[0].flag, +const selectedLocale = computed( + () => locales.find((l) => l.lang === currentLocale.value) ?? locales[0], ) @@ -29,20 +30,22 @@ const selectedLangFlag = computed(

{{ route.meta.title ? $t(route.meta.title) : '' }}

+ - + {{ locale.lang.toUpperCase() }} diff --git a/frontend/src/components/AppSidebar.vue b/frontend/src/components/AppSidebar.vue index 9358251..c766af3 100644 --- a/frontend/src/components/AppSidebar.vue +++ b/frontend/src/components/AppSidebar.vue @@ -66,7 +66,7 @@ function onNavigate() { diff --git a/frontend/src/components/ThemeToggle.vue b/frontend/src/components/ThemeToggle.vue new file mode 100644 index 0000000..1842ae4 --- /dev/null +++ b/frontend/src/components/ThemeToggle.vue @@ -0,0 +1,25 @@ + + + diff --git a/frontend/src/components/courses/CourseFormDialog.vue b/frontend/src/components/courses/CourseFormDialog.vue new file mode 100644 index 0000000..7dac4dd --- /dev/null +++ b/frontend/src/components/courses/CourseFormDialog.vue @@ -0,0 +1,189 @@ + + + diff --git a/frontend/src/components/schedule/SlotFormDialog.vue b/frontend/src/components/schedule/SlotFormDialog.vue new file mode 100644 index 0000000..7a2b367 --- /dev/null +++ b/frontend/src/components/schedule/SlotFormDialog.vue @@ -0,0 +1,204 @@ + + + diff --git a/frontend/src/components/ui/dialog/Dialog.vue b/frontend/src/components/ui/dialog/Dialog.vue index 47b0968..ff50359 100644 --- a/frontend/src/components/ui/dialog/Dialog.vue +++ b/frontend/src/components/ui/dialog/Dialog.vue @@ -1,6 +1,6 @@ diff --git a/frontend/src/components/ui/dialog/DialogContent.vue b/frontend/src/components/ui/dialog/DialogContent.vue index 4bc0a1c..b2bf24a 100644 --- a/frontend/src/components/ui/dialog/DialogContent.vue +++ b/frontend/src/components/ui/dialog/DialogContent.vue @@ -1,21 +1,21 @@ @@ -31,7 +31,8 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits) cn( 'fixed left-1/2 top-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg', props.class, - )" + ) + " > diff --git a/frontend/src/components/ui/dialog/DialogDescription.vue b/frontend/src/components/ui/dialog/DialogDescription.vue index 062c3a5..bf04fdc 100644 --- a/frontend/src/components/ui/dialog/DialogDescription.vue +++ b/frontend/src/components/ui/dialog/DialogDescription.vue @@ -1,13 +1,13 @@ diff --git a/frontend/src/components/ui/dialog/DialogFooter.vue b/frontend/src/components/ui/dialog/DialogFooter.vue index 5f481e5..c6f5d4e 100644 --- a/frontend/src/components/ui/dialog/DialogFooter.vue +++ b/frontend/src/components/ui/dialog/DialogFooter.vue @@ -1,19 +1,12 @@ diff --git a/frontend/src/components/ui/dialog/DialogHeader.vue b/frontend/src/components/ui/dialog/DialogHeader.vue index 33aa003..e22a1fd 100644 --- a/frontend/src/components/ui/dialog/DialogHeader.vue +++ b/frontend/src/components/ui/dialog/DialogHeader.vue @@ -1,16 +1,14 @@ diff --git a/frontend/src/components/ui/dialog/DialogScrollContent.vue b/frontend/src/components/ui/dialog/DialogScrollContent.vue index 59a32ec..46bb80e 100644 --- a/frontend/src/components/ui/dialog/DialogScrollContent.vue +++ b/frontend/src/components/ui/dialog/DialogScrollContent.vue @@ -1,21 +1,21 @@ @@ -33,13 +33,18 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits) ) " v-bind="forwarded" - @pointer-down-outside="(event) => { - const originalEvent = event.detail.originalEvent; - const target = originalEvent.target as HTMLElement; - if (originalEvent.offsetX > target.clientWidth || originalEvent.offsetY > target.clientHeight) { - event.preventDefault(); + @pointer-down-outside=" + (event) => { + const originalEvent = event.detail.originalEvent + const target = originalEvent.target as HTMLElement + if ( + originalEvent.offsetX > target.clientWidth || + originalEvent.offsetY > target.clientHeight + ) { + event.preventDefault() + } } - }" + " > diff --git a/frontend/src/components/ui/dialog/DialogTitle.vue b/frontend/src/components/ui/dialog/DialogTitle.vue index 1de56de..b4dfbeb 100644 --- a/frontend/src/components/ui/dialog/DialogTitle.vue +++ b/frontend/src/components/ui/dialog/DialogTitle.vue @@ -1,13 +1,13 @@ @@ -15,12 +15,7 @@ const forwardedProps = useForwardProps(delegatedProps)