From 06b8e01b1a32047b5ce0f11930c1c4ef078603b3 Mon Sep 17 00:00:00 2001 From: K Muller Date: Wed, 17 Dec 2025 11:56:39 +0100 Subject: [PATCH] feat: :sparkles: add slugifycator button component --- .../back/Components/Inputs/Slugifycator.tsx | 43 +++++++++++++++++++ resources/ts/back/Pages/DynamicPages/Form.tsx | 34 +++------------ resources/ts/back/Pages/News/Form.tsx | 29 +++---------- resources/ts/back/Pages/NewsCategory/Form.tsx | 29 +++---------- 4 files changed, 61 insertions(+), 74 deletions(-) create mode 100644 resources/ts/back/Components/Inputs/Slugifycator.tsx diff --git a/resources/ts/back/Components/Inputs/Slugifycator.tsx b/resources/ts/back/Components/Inputs/Slugifycator.tsx new file mode 100644 index 00000000..76c6a300 --- /dev/null +++ b/resources/ts/back/Components/Inputs/Slugifycator.tsx @@ -0,0 +1,43 @@ +import str from "@/hooks/use-string" +import SimpleString from "./SimpleString" +import useTrans from "@/hooks/use-translations" +import BtnOptionnalLinkWithTooltip from "../BtnOptionnalLinkWithTooltip" +import { GavelIcon } from "lucide-react" + +interface Props { + setData: (name: string, value: string) => void; + value: string + targetValue: string + wordCounter?: boolean; +} +const Slugifycator = (props: Props) => { + const {value, targetValue, setData, wordCounter = false} = props; + return ( +
+ + } + tooltipContent={str(useTrans('back.slugify')).ucFirst().value()} + type="button" + variant="secondary" + onClick={() => setData("slug", str(targetValue).slug().value())} + /> +
+ ) +} + +export default Slugifycator; diff --git a/resources/ts/back/Pages/DynamicPages/Form.tsx b/resources/ts/back/Pages/DynamicPages/Form.tsx index 2fe13d2e..c62f63c1 100644 --- a/resources/ts/back/Pages/DynamicPages/Form.tsx +++ b/resources/ts/back/Pages/DynamicPages/Form.tsx @@ -40,6 +40,7 @@ import { } from "@/back/types/global"; import SubmitButton from "@/back/Components/SubmitButton"; import { useCrudSubmit } from "@/hooks/use-crud-submit"; +import Slugifycator from "@/back/Components/Inputs/Slugifycator"; export default function Form({ model, @@ -247,34 +248,11 @@ export default function Form({ setData={setData} onSelectValue={(value) => setSelectedGroup((value as DynamicPageModel).title[locale])} /> -
- - } - tooltipContent={str(useTrans('back.slugify')).ucFirst().value()} - type="button" - variant="secondary" - onClick={() => { - setData("slug", str(data.title).slug().value()); - }} - /> -
+
-
- - } - tooltipContent={str(useTrans('back.slugify')).ucFirst().value()} - type="button" - variant="secondary" - onClick={() => setData("slug", str(data.title).slug().value())} - /> -
+
-
- - } - tooltipContent={str(useTrans('back.slugify')).ucFirst().value()} - type="button" - variant="secondary" - onClick={() => setData("slug", str(data.name).slug().value())} - /> -
+