mirror of
https://github.com/Buriburizaem0n/admin-frontend-domain.git
synced 2026-05-06 05:38:51 +00:00
e783692ac9
* feat: enhance public notes functionality with flexible options - Make public notes optional to prevent default values causing frontend issues - Add dual editing modes: raw text editing and custom fields (avoid hardcoded schema) - Set raw text mode as default, populate input on edit, submit raw text content always - Add toggle switch: submit raw text when enabled, submit empty & hide controls when disabled - New records default to disabled public notes; auto-expand on edit based on content * chore: auto-fix linting and formatting issues * feat: Add public annotation data structure and utility functions Implemented Zod validation patterns, default values, parsing functions, and utility functions for public notes, and updated related internationalization text. * chore: auto-fix linting and formatting issues * refactor(server): Replace i18n implementation Replace direct use of i18n.t with react-i18next's useTranslation hook to improve internationalization support. * refactor(public-note): Optimize data model and validation logic Removed the pruneEmpty function and simplified the date processing logic, making billingDataMod and planDataMod optional fields. Also optimized the validation logic to handle optional fields. * chore: auto-fix linting and formatting issues * fix zod validation & don't write empty values when parsing * use raw mode if object contains unknown fields * rename some features * chore: Update dependency package versions Upgrade multiple npm dependencies to their latest versions, including react, tailwindcss, and eslint. Ignore lock files. * fix(server): Fix default value when bill amount is undefined Changed undefined values for bill amount to the default value "0" to avoid potential null value errors. --------- Co-authored-by: Guccen <171530509+Chillln@users.noreply.github.com> Co-authored-by: uubulb <uub@suwako.de>
115 lines
4.4 KiB
TypeScript
115 lines
4.4 KiB
TypeScript
import { buttonVariants } from "@/components/ui/button"
|
|
import { cn } from "@/lib/utils"
|
|
import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog"
|
|
import { ComponentPropsWithoutRef, ComponentRef, HTMLAttributes, forwardRef } from "react"
|
|
|
|
const AlertDialog = AlertDialogPrimitive.Root
|
|
|
|
const AlertDialogTrigger = AlertDialogPrimitive.Trigger
|
|
|
|
const AlertDialogPortal = AlertDialogPrimitive.Portal
|
|
|
|
const AlertDialogOverlay = forwardRef<
|
|
ComponentRef<typeof AlertDialogPrimitive.Overlay>,
|
|
ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>
|
|
>(({ className, ...props }, ref) => (
|
|
<AlertDialogPrimitive.Overlay
|
|
className={cn(
|
|
"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
className,
|
|
)}
|
|
{...props}
|
|
ref={ref}
|
|
/>
|
|
))
|
|
AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName
|
|
|
|
const AlertDialogContent = forwardRef<
|
|
ComponentRef<typeof AlertDialogPrimitive.Content>,
|
|
ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>
|
|
>(({ className, ...props }, ref) => (
|
|
<AlertDialogPortal>
|
|
<AlertDialogOverlay />
|
|
<AlertDialogPrimitive.Content
|
|
ref={ref}
|
|
className={cn(
|
|
"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] 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",
|
|
className,
|
|
)}
|
|
{...props}
|
|
/>
|
|
</AlertDialogPortal>
|
|
))
|
|
AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName
|
|
|
|
const AlertDialogHeader = ({ className, ...props }: HTMLAttributes<HTMLDivElement>) => (
|
|
<div className={cn("flex flex-col space-y-2 text-center sm:text-left", className)} {...props} />
|
|
)
|
|
AlertDialogHeader.displayName = "AlertDialogHeader"
|
|
|
|
const AlertDialogFooter = ({ className, ...props }: HTMLAttributes<HTMLDivElement>) => (
|
|
<div
|
|
className={cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className)}
|
|
{...props}
|
|
/>
|
|
)
|
|
AlertDialogFooter.displayName = "AlertDialogFooter"
|
|
|
|
const AlertDialogTitle = forwardRef<
|
|
ComponentRef<typeof AlertDialogPrimitive.Title>,
|
|
ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>
|
|
>(({ className, ...props }, ref) => (
|
|
<AlertDialogPrimitive.Title
|
|
ref={ref}
|
|
className={cn("text-lg font-semibold", className)}
|
|
{...props}
|
|
/>
|
|
))
|
|
AlertDialogTitle.displayName = "AlertDialogTitle"
|
|
|
|
const AlertDialogDescription = forwardRef<
|
|
ComponentRef<typeof AlertDialogPrimitive.Description>,
|
|
ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>
|
|
>(({ className, ...props }, ref) => (
|
|
<AlertDialogPrimitive.Description
|
|
ref={ref}
|
|
className={cn("text-sm text-muted-foreground", className)}
|
|
{...props}
|
|
/>
|
|
))
|
|
AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName
|
|
|
|
const AlertDialogAction = forwardRef<
|
|
ComponentRef<typeof AlertDialogPrimitive.Action>,
|
|
ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>
|
|
>(({ className, ...props }, ref) => (
|
|
<AlertDialogPrimitive.Action ref={ref} className={cn(buttonVariants(), className)} {...props} />
|
|
))
|
|
AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName
|
|
|
|
const AlertDialogCancel = forwardRef<
|
|
ComponentRef<typeof AlertDialogPrimitive.Cancel>,
|
|
ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>
|
|
>(({ className, ...props }, ref) => (
|
|
<AlertDialogPrimitive.Cancel
|
|
ref={ref}
|
|
className={cn(buttonVariants({ variant: "outline" }), "mt-2 sm:mt-0", className)}
|
|
{...props}
|
|
/>
|
|
))
|
|
AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName
|
|
|
|
export {
|
|
AlertDialog,
|
|
AlertDialogPortal,
|
|
AlertDialogOverlay,
|
|
AlertDialogTrigger,
|
|
AlertDialogContent,
|
|
AlertDialogHeader,
|
|
AlertDialogFooter,
|
|
AlertDialogTitle,
|
|
AlertDialogDescription,
|
|
AlertDialogAction,
|
|
AlertDialogCancel,
|
|
}
|