fixing
This commit is contained in:
parent
c1aec7f316
commit
54633d8936
|
|
@ -2,7 +2,7 @@ import * as React from "react";
|
|||
import { ColumnDef } from "@tanstack/react-table";
|
||||
|
||||
import { Eye, MoreVertical, SquarePen, Trash2 } from "lucide-react";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { cn, getCookiesDecrypt } from "@/lib/utils";
|
||||
import {
|
||||
DropdownMenu,
|
||||
DropdownMenuContent,
|
||||
|
|
@ -78,7 +78,7 @@ const columns: ColumnDef<any>[] = [
|
|||
enableHiding: false,
|
||||
cell: ({ row }) => {
|
||||
const MySwal = withReactContent(Swal);
|
||||
|
||||
const levelNumber = getCookiesDecrypt("ulne");
|
||||
async function doDelete(id: any) {
|
||||
// loading();
|
||||
const data = {
|
||||
|
|
@ -132,7 +132,7 @@ const columns: ColumnDef<any>[] = [
|
|||
<MoreVertical className="h-4 w-4 text-default-800" />
|
||||
</Button>
|
||||
</DropdownMenuTrigger>
|
||||
<DropdownMenuContent className="p-0" align="end">
|
||||
{/* <DropdownMenuContent className="p-0" align="end">
|
||||
<Link href={`/admin/settings/iklan/detail/${row.original.id}`}>
|
||||
<DropdownMenuItem className="p-2 border-b text-default-700 group focus:bg-default focus:text-primary-foreground rounded-none">
|
||||
<Eye className="w-4 h-4 me-1.5" />
|
||||
|
|
@ -152,6 +152,33 @@ const columns: ColumnDef<any>[] = [
|
|||
<Trash2 className="w-4 h-4 me-1.5" />
|
||||
Delete
|
||||
</DropdownMenuItem>
|
||||
</DropdownMenuContent> */}
|
||||
<DropdownMenuContent className="p-0" align="end">
|
||||
<Link href={`/admin/settings/iklan/detail/${row.original.id}`}>
|
||||
<DropdownMenuItem className="p-2 border-b text-default-700 group focus:bg-default focus:text-primary-foreground rounded-none">
|
||||
<Eye className="w-4 h-4 me-1.5" />
|
||||
View
|
||||
</DropdownMenuItem>
|
||||
</Link>
|
||||
|
||||
{levelNumber === "1" && (
|
||||
<>
|
||||
<Link href={`/admin/settings/iklan/update/${row.original.id}`}>
|
||||
<DropdownMenuItem className="p-2 border-b text-default-700 group focus:bg-default focus:text-primary-foreground rounded-none">
|
||||
<SquarePen className="w-4 h-4 me-1.5" />
|
||||
Edit
|
||||
</DropdownMenuItem>
|
||||
</Link>
|
||||
|
||||
<DropdownMenuItem
|
||||
onClick={() => handleDeleteAdvertisements(row.original.id)}
|
||||
className="p-2 border-b text-destructive bg-destructive/30 focus:bg-destructive focus:text-destructive-foreground rounded-none"
|
||||
>
|
||||
<Trash2 className="w-4 h-4 me-1.5" />
|
||||
Delete
|
||||
</DropdownMenuItem>
|
||||
</>
|
||||
)}
|
||||
</DropdownMenuContent>
|
||||
</DropdownMenu>
|
||||
);
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ import {
|
|||
UploadIcon,
|
||||
UserIcon,
|
||||
} from "lucide-react";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { cn, getCookiesDecrypt } from "@/lib/utils";
|
||||
import {
|
||||
DropdownMenu,
|
||||
DropdownMenuContent,
|
||||
|
|
@ -94,6 +94,9 @@ const AdvertisementsList = () => {
|
|||
const [statusFilter, setStatusFilter] = React.useState<number[]>([]);
|
||||
const [page, setPage] = React.useState(1);
|
||||
const [totalPage, setTotalPage] = React.useState(1);
|
||||
const roleId = getCookiesDecrypt("urie");
|
||||
const levelNumber = getCookiesDecrypt("ulne");
|
||||
const userLevelId = getCookiesDecrypt("ulie");
|
||||
const table = useReactTable({
|
||||
data: dataTable,
|
||||
columns,
|
||||
|
|
@ -203,10 +206,11 @@ const AdvertisementsList = () => {
|
|||
return (
|
||||
<>
|
||||
<div>
|
||||
{levelNumber === "1" && (
|
||||
<div className="flex-none">
|
||||
<Link href={"/admin/settings/iklan/create"}>
|
||||
<Button
|
||||
disabled={dataTable.length == 4}
|
||||
onClick={() => router.push("/admin/settings/iklan/create")}
|
||||
color="primary"
|
||||
className="text-white"
|
||||
size="md"
|
||||
|
|
@ -214,12 +218,15 @@ const AdvertisementsList = () => {
|
|||
<UploadIcon size={18} className="mr-2" />
|
||||
Tambah Iklan
|
||||
</Button>
|
||||
</Link>
|
||||
{dataTable.length == 4 && (
|
||||
<p className="text-sm text-red-400 pt-1">
|
||||
Jumlah Iklan Sudah Maksimal (4)
|
||||
</p>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
|
||||
{/* <TambahIklanModal /> */}
|
||||
</div>
|
||||
<div className="flex justify-between ">
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import { Link } from "@/components/navigation";
|
|||
import { useTranslations } from "next-intl";
|
||||
import withReactContent from "sweetalert2-react-content";
|
||||
import Swal from "sweetalert2";
|
||||
import { useState } from "react";
|
||||
|
||||
const useTableColumns = () => {
|
||||
const t = useTranslations("Table");
|
||||
|
|
@ -37,7 +38,6 @@ const useTableColumns = () => {
|
|||
onCheckedChange={(val) => table.toggleAllPageRowsSelected(!!val)}
|
||||
aria-label="Pilih semua pada halaman ini"
|
||||
/>
|
||||
|
||||
),
|
||||
cell: ({ row }) => (
|
||||
<Checkbox
|
||||
|
|
@ -140,15 +140,23 @@ const useTableColumns = () => {
|
|||
enableHiding: false,
|
||||
cell: ({ row }) => {
|
||||
const isDisabled = row.original.isPublish;
|
||||
const [open, setOpen] = useState(false);
|
||||
|
||||
const handleClick = (e: React.MouseEvent) => {
|
||||
if (e.ctrlKey) {
|
||||
console.log("Ctrl + Click detected");
|
||||
}
|
||||
// Paksa buka menu meskipun ctrl ditekan
|
||||
setOpen(true);
|
||||
};
|
||||
|
||||
return (
|
||||
<DropdownMenu>
|
||||
<DropdownMenu open={open} onOpenChange={setOpen}>
|
||||
<DropdownMenuTrigger asChild disabled={isDisabled}>
|
||||
<Button
|
||||
size="icon"
|
||||
className={`bg-transparent ring-offset-transparent hover:bg-transparent hover:ring-0 hover:ring-transparent ${
|
||||
isDisabled ? "cursor-not-allowed opacity-50" : ""
|
||||
}`}
|
||||
disabled={isDisabled}
|
||||
onClick={handleClick}
|
||||
className="bg-transparent ring-offset-transparent hover:bg-transparent hover:ring-0 hover:ring-transparent"
|
||||
>
|
||||
<span className="sr-only">Open menu</span>
|
||||
<MoreVertical className="h-4 w-4 text-default-800" />
|
||||
|
|
@ -159,7 +167,7 @@ const useTableColumns = () => {
|
|||
href={`/contributor/content/spit/convert/${row.original.contentId}`}
|
||||
>
|
||||
<DropdownMenuItem
|
||||
className={`p-2 border-b text-default-700 group focus:bg-default focus:text-primary-foreground rounded-none ${
|
||||
className={`cursor-pointer p-2 border-b text-default-700 group focus:bg-default focus:text-primary-foreground rounded-none ${
|
||||
isDisabled ? "cursor-not-allowed opacity-50" : ""
|
||||
}`}
|
||||
disabled={isDisabled}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import * as React from "react";
|
|||
import { ColumnDef } from "@tanstack/react-table";
|
||||
|
||||
import { Eye, MoreVertical, SquarePen, Trash2 } from "lucide-react";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { cn, getCookiesDecrypt } from "@/lib/utils";
|
||||
import {
|
||||
DropdownMenu,
|
||||
DropdownMenuContent,
|
||||
|
|
@ -206,6 +206,15 @@ const useTableColumns = () => {
|
|||
cell: ({ row }) => {
|
||||
const router = useRouter();
|
||||
const MySwal = withReactContent(Swal);
|
||||
const roleId = getCookiesDecrypt("urie");
|
||||
const levelNumber = getCookiesDecrypt("ulne");
|
||||
const userLevelId = getCookiesDecrypt("ulie");
|
||||
const contentLevelNumber =
|
||||
row.original.createdBy?.userLevel?.levelNumber;
|
||||
const isSameLevelOrLower =
|
||||
levelNumber &&
|
||||
contentLevelNumber &&
|
||||
+levelNumber <= +contentLevelNumber;
|
||||
|
||||
async function deleteProcess(id: any) {
|
||||
loading();
|
||||
|
|
@ -268,7 +277,24 @@ const useTableColumns = () => {
|
|||
</DropdownMenuItem>
|
||||
</Link>
|
||||
|
||||
{!isDone && (
|
||||
{/* {!isDone && (
|
||||
<>
|
||||
<Link href={`/contributor/task/update/${row.original.id}`}>
|
||||
<DropdownMenuItem className="p-2 border-b text-default-700 group focus:bg-default focus:text-primary-foreground rounded-none">
|
||||
<SquarePen className="w-4 h-4 me-1.5" />
|
||||
Edit
|
||||
</DropdownMenuItem>
|
||||
</Link>
|
||||
<DropdownMenuItem
|
||||
onClick={() => TaskDelete(row.original.id)}
|
||||
className="p-2 border-b text-destructive bg-destructive/30 focus:bg-destructive focus:text-destructive-foreground rounded-none"
|
||||
>
|
||||
<Trash2 className="w-4 h-4 me-1.5" />
|
||||
Delete
|
||||
</DropdownMenuItem>
|
||||
</>
|
||||
)} */}
|
||||
{!isDone && isSameLevelOrLower && (
|
||||
<>
|
||||
<Link href={`/contributor/task/update/${row.original.id}`}>
|
||||
<DropdownMenuItem className="p-2 border-b text-default-700 group focus:bg-default focus:text-primary-foreground rounded-none">
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ import FileUploader from "../shared/file-uploader";
|
|||
import { Icon } from "@/components/ui/icon";
|
||||
import { useParams } from "next/navigation";
|
||||
import Link from "next/link";
|
||||
import { useRouter } from "@/i18n/routing";
|
||||
|
||||
const calendarSchema = z.object({
|
||||
title: z.string().min(1, { message: "Judul diperlukan" }),
|
||||
|
|
@ -64,6 +65,7 @@ interface Detail {
|
|||
|
||||
export function TambahIklanDetail() {
|
||||
const [open, setOpen] = React.useState(false);
|
||||
const router = useRouter();
|
||||
const MySwal = withReactContent(Swal);
|
||||
const t = useTranslations("Schedule");
|
||||
const { id } = useParams() as { id: string };
|
||||
|
|
@ -376,6 +378,7 @@ export function TambahIklanDetail() {
|
|||
].map(({ label, value }) => (
|
||||
<label key={value} className="flex items-center gap-2">
|
||||
<Checkbox
|
||||
disabled
|
||||
id={value}
|
||||
checked={selectedPlacement === value}
|
||||
onCheckedChange={() => handlePlacementSelect(value)}
|
||||
|
|
@ -506,6 +509,7 @@ export function TambahIklanDetail() {
|
|||
name="title"
|
||||
render={({ field }) => (
|
||||
<Input
|
||||
readOnly
|
||||
size={"md"}
|
||||
type="text"
|
||||
value={detail?.title}
|
||||
|
|
@ -540,6 +544,7 @@ export function TambahIklanDetail() {
|
|||
name="description"
|
||||
render={({ field }) => (
|
||||
<Textarea
|
||||
readOnly
|
||||
rows={3}
|
||||
value={detail?.description}
|
||||
onChange={field.onChange}
|
||||
|
|
@ -554,12 +559,22 @@ export function TambahIklanDetail() {
|
|||
)}
|
||||
</div>
|
||||
|
||||
<div className="text-right">
|
||||
{/* <div className="text-right">
|
||||
<Link href={"admin/settings/iklan"}>
|
||||
<Button type="button" variant={"outline"} color="primary">
|
||||
Kembali
|
||||
</Button>
|
||||
</Link>
|
||||
</div> */}
|
||||
<div className="text-right">
|
||||
<Button
|
||||
type="button"
|
||||
variant="outline"
|
||||
color="primary"
|
||||
onClick={() => router.back()}
|
||||
>
|
||||
Kembali
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ import FileUploader from "../shared/file-uploader";
|
|||
import { Icon } from "@/components/ui/icon";
|
||||
import { close } from "@/config/swal";
|
||||
import { listDataAdvertisements } from "@/service/broadcast/broadcast";
|
||||
import { useRouter } from "@/i18n/routing";
|
||||
|
||||
const calendarSchema = z.object({
|
||||
title: z.string().min(1, { message: "Judul diperlukan" }),
|
||||
|
|
@ -54,6 +55,7 @@ interface FileUploaded {
|
|||
}
|
||||
|
||||
export function TambahIklanModal() {
|
||||
const router = useRouter();
|
||||
const [open, setOpen] = React.useState(false);
|
||||
const MySwal = withReactContent(Swal);
|
||||
const t = useTranslations("Schedule");
|
||||
|
|
@ -222,7 +224,7 @@ export function TambahIklanModal() {
|
|||
text: "Iklan berhasil ditambahkan.",
|
||||
confirmButtonText: "OK",
|
||||
}).then(() => {
|
||||
window.location.reload();
|
||||
router.push("/admin/settings/iklan");
|
||||
});
|
||||
|
||||
Cookies.set("scheduleId", response?.data?.data.id, {
|
||||
|
|
|
|||
|
|
@ -403,7 +403,7 @@ const Navbar = () => {
|
|||
<ThemeSwitcher />
|
||||
</div>
|
||||
|
||||
<div className="hidden custom-lg-button:relative text-gray-600 dark:text-white ">
|
||||
<div className=" custom-lg-button:relative text-gray-600 dark:text-white ">
|
||||
{/* <input
|
||||
value={onSearch}
|
||||
onChange={(e) => setOnSearch(e.target.value)}
|
||||
|
|
|
|||
Loading…
Reference in New Issue