feat: add titles to icon-only buttons
Docker Build / build (push) Has been cancelled
TS Lint / ESLint (push) Has been cancelled
TS Lint / Oxlint (push) Has been cancelled
TS Lint / TypeScript (push) Has been cancelled

This commit is contained in:
2026-07-15 16:08:52 +02:00
parent db9ecb4773
commit f811facff8
4 changed files with 44 additions and 13 deletions
+6 -1
View File
@@ -78,5 +78,10 @@
"call_to_action": "Create your list below:", "call_to_action": "Create your list below:",
"home_button": "Let's go !", "home_button": "Let's go !",
"share_button": "Share my list", "share_button": "Share my list",
"share_text": "Check my list on Tout Doux!" "share_text": "Check my list on Tout Doux!",
"add_button": "Add task",
"cancel_button": "Cancel editing",
"save_button": "Save task",
"clone_button": "Clone task",
"delete_button": "Delete task"
} }
+6 -1
View File
@@ -78,5 +78,10 @@
"call_to_action": "Créez ta liste ci-dessous :", "call_to_action": "Créez ta liste ci-dessous :",
"home_button": "C'est parti !", "home_button": "C'est parti !",
"share_button": "Partager ma liste", "share_button": "Partager ma liste",
"share_text": "Regarde ma liste sur Tout Doux!" "share_text": "Regarde ma liste sur Tout Doux!",
"add_button": "Ajouter la tâche",
"cancel_button": "Annuler la modification",
"save_button": "Sauvegarder la tâche",
"clone_button": "Cloner la tâche",
"delete_button": "Supprimer la tâche"
} }
+24 -4
View File
@@ -1,5 +1,12 @@
<script setup lang="ts"> <script setup lang="ts">
import { onBeforeMount, ref, watch, computed, defineAsyncComponent, nextTick } from "vue"; import {
onBeforeMount,
ref,
watch,
computed,
defineAsyncComponent,
nextTick,
} from "vue";
import type { Task } from "@/types"; import type { Task } from "@/types";
import { CopyIcon, TrashIcon, SaveIcon, XIcon } from "@lucide/vue"; import { CopyIcon, TrashIcon, SaveIcon, XIcon } from "@lucide/vue";
import { updateTask } from "@/api/tasks"; import { updateTask } from "@/api/tasks";
@@ -151,7 +158,11 @@ watch(task, () => {
<template v-else> <template v-else>
<div class="list-col-grow flex flex-col gap-2"> <div class="list-col-grow flex flex-col gap-2">
<div class="flex justify-evenly"> <div class="flex justify-evenly">
<button class="btn btn-square me-1" @click="onClose"> <button
class="btn btn-square me-1"
:title="$t('cancel_button')"
@click="onClose"
>
<x-icon /> <x-icon />
</button> </button>
<button <button
@@ -159,14 +170,23 @@ watch(task, () => {
:class=" :class="
editName.trim().length === 0 ? 'btn-disabled' : '' editName.trim().length === 0 ? 'btn-disabled' : ''
" "
:title="$t('save_button')"
@click="onSave" @click="onSave"
> >
<save-icon /> <save-icon />
</button> </button>
<button class="btn btn-square me-1" @click="onClone"> <button
class="btn btn-square me-1"
:title="$t('clone_button')"
@click="onClone"
>
<copy-icon /> <copy-icon />
</button> </button>
<button class="btn btn-square" @click="onDelete"> <button
class="btn btn-square"
:title="$t('delete_button')"
@click="onDelete"
>
<trash-icon /> <trash-icon />
</button> </button>
</div> </div>
+8 -7
View File
@@ -9,7 +9,7 @@ import {
CircleCheckBigIcon, CircleCheckBigIcon,
CheckCheckIcon, CheckCheckIcon,
SearchIcon, SearchIcon,
Share2Icon Share2Icon,
} from "@lucide/vue"; } from "@lucide/vue";
const TaskItem = defineAsyncComponent( const TaskItem = defineAsyncComponent(
() => import("@/components/TaskItem.vue"), () => import("@/components/TaskItem.vue"),
@@ -131,9 +131,9 @@ function onChangeSortReverse() {
function onShare() { function onShare() {
shareLink( shareLink(
`Tout Doux - ${list.value ?? ''}`, `Tout Doux - ${list.value ?? ""}`,
i18n.t('share_text'), i18n.t("share_text"),
`${document.location.href.split('?')[0] ?? ''}?lang=${i18n.locale.value}` `${document.location.href.split("?")[0] ?? ""}?lang=${i18n.locale.value}`,
) )
.then((viaShare) => { .then((viaShare) => {
if (!viaShare) { if (!viaShare) {
@@ -141,13 +141,13 @@ function onShare() {
} }
}) })
.catch(() => { .catch(() => {
alertError(i18n.t("alerts.share_error")) alertError(i18n.t("alerts.share_error"));
}); });
} }
function updateTitle() { function updateTitle() {
if (list.value !== null) { if (list.value !== null) {
document.title = `Tout Doux - ${list.value} (${completedCount.value.toFixed(0)}/${taskCount.value.toFixed(0)})` document.title = `Tout Doux - ${list.value} (${completedCount.value.toFixed(0)}/${taskCount.value.toFixed(0)})`;
} }
} }
@@ -238,6 +238,7 @@ onBeforeRouteUpdate((to) => {
<button <button
class="btn btn-square" class="btn btn-square"
:disabled="loading || taskInput.trim().length === 0" :disabled="loading || taskInput.trim().length === 0"
:title="$t('add_button')"
@click="onNewTask" @click="onNewTask"
> >
<circle-plus-icon /> <circle-plus-icon />
@@ -245,7 +246,7 @@ onBeforeRouteUpdate((to) => {
</div> </div>
<div> <div>
<button class="btn btn-sm px-4" @click="onShare"> <button class="btn btn-sm px-4" @click="onShare">
<share-2-icon class="inline" :size="16" /> {{ $t('share_button') }} <share-2-icon class="inline" :size="16" /> {{ $t("share_button") }}
</button> </button>
</div> </div>
<div class="collapse collapse-arrow font-light text-sm"> <div class="collapse collapse-arrow font-light text-sm">