Merge branch 'dev-1' of http://38.47.180.165:3000/kontenhumas/kontenhumas-fe
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
This commit is contained in:
commit
a71cbeefeb
|
|
@ -41,6 +41,7 @@ import {
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { useTranslations } from "next-intl";
|
import { useTranslations } from "next-intl";
|
||||||
import { getCategoriesAll } from "@/service/service/settings/settings";
|
import { getCategoriesAll } from "@/service/service/settings/settings";
|
||||||
|
import { listArticleCategories } from "@/service/content";
|
||||||
|
|
||||||
const FormSchema = z.object({
|
const FormSchema = z.object({
|
||||||
name: z.string({
|
name: z.string({
|
||||||
|
|
@ -62,15 +63,17 @@ export default function CreateTagModal() {
|
||||||
|
|
||||||
const form = useForm<z.infer<typeof FormSchema>>({
|
const form = useForm<z.infer<typeof FormSchema>>({
|
||||||
resolver: zodResolver(FormSchema),
|
resolver: zodResolver(FormSchema),
|
||||||
|
defaultValues: {
|
||||||
|
name: "",
|
||||||
|
category: "",
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const onSubmit = async (data: z.infer<typeof FormSchema>) => {
|
const onSubmit = async (data: z.infer<typeof FormSchema>) => {
|
||||||
const request = {
|
const request = {
|
||||||
tagName: data.name,
|
tagName: data.name,
|
||||||
categoryId: Number(data.category),
|
categoryId: Number(data.category),
|
||||||
isActive: true,
|
isActive: true,
|
||||||
};
|
};
|
||||||
console.log("reqqq", request);
|
|
||||||
// const response = await postDataFeedback(request);
|
// const response = await postDataFeedback(request);
|
||||||
// close();
|
// close();
|
||||||
// if (response?.error) {
|
// if (response?.error) {
|
||||||
|
|
@ -86,23 +89,30 @@ export default function CreateTagModal() {
|
||||||
};
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
getCategoryParent();
|
const fetchCategories = async () => {
|
||||||
}, []);
|
try {
|
||||||
async function getCategoryParent() {
|
const response = await listArticleCategories(1, 100);
|
||||||
const response = await getCategoriesAll();
|
|
||||||
const res = response?.data?.data.content;
|
if (response?.error) {
|
||||||
console.log("res", res);
|
console.error("Failed to fetch categories:", response.message);
|
||||||
var levelsArr: { id: number; label: string; value: string }[] = [];
|
return;
|
||||||
res.forEach((levels: { id: number; name: string }) => {
|
|
||||||
levelsArr.push({
|
|
||||||
id: levels.id,
|
|
||||||
label: levels.name,
|
|
||||||
value: String(levels.id),
|
|
||||||
});
|
|
||||||
});
|
|
||||||
setCategoryList(levelsArr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const categories =
|
||||||
|
response?.data?.data?.map((item: any) => ({
|
||||||
|
value: String(item.id), // wajib string
|
||||||
|
label: item.title, // pakai title dari API
|
||||||
|
})) || [];
|
||||||
|
|
||||||
|
setCategoryList(categories);
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Failed to fetch categories:", error);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
fetchCategories();
|
||||||
|
}, []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Dialog open={isOpen} onOpenChange={setIsOpen}>
|
<Dialog open={isOpen} onOpenChange={setIsOpen}>
|
||||||
<DialogTrigger asChild>
|
<DialogTrigger asChild>
|
||||||
|
|
@ -112,7 +122,10 @@ export default function CreateTagModal() {
|
||||||
</DialogTrigger>
|
</DialogTrigger>
|
||||||
<DialogContent size="md">
|
<DialogContent size="md">
|
||||||
<DialogHeader>
|
<DialogHeader>
|
||||||
<DialogTitle> {t("add-tags", { defaultValue: "Add Tags" })}</DialogTitle>
|
<DialogTitle>
|
||||||
|
{" "}
|
||||||
|
{t("add-tags", { defaultValue: "Add Tags" })}
|
||||||
|
</DialogTitle>
|
||||||
</DialogHeader>
|
</DialogHeader>
|
||||||
<Form {...form}>
|
<Form {...form}>
|
||||||
<form
|
<form
|
||||||
|
|
@ -133,12 +146,12 @@ export default function CreateTagModal() {
|
||||||
role="combobox"
|
role="combobox"
|
||||||
className={cn(
|
className={cn(
|
||||||
"w-[400px] justify-between",
|
"w-[400px] justify-between",
|
||||||
!field.value && "text-muted-foreground"
|
!field.value && "text-muted-foreground",
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
{field.value
|
{field.value
|
||||||
? categoryList.find(
|
? categoryList.find(
|
||||||
(categ) => categ.value === field.value
|
(categ) => categ.value === field.value,
|
||||||
)?.label
|
)?.label
|
||||||
: "Pilih level"}
|
: "Pilih level"}
|
||||||
<ChevronsUpDown className="ml-2 h-4 w-4 shrink-0 opacity-50" />
|
<ChevronsUpDown className="ml-2 h-4 w-4 shrink-0 opacity-50" />
|
||||||
|
|
@ -165,7 +178,7 @@ export default function CreateTagModal() {
|
||||||
"ml-auto",
|
"ml-auto",
|
||||||
role.value === field.value
|
role.value === field.value
|
||||||
? "opacity-100"
|
? "opacity-100"
|
||||||
: "opacity-0"
|
: "opacity-0",
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
</CommandItem>
|
</CommandItem>
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,7 @@ import useTableColumns from "./columns";
|
||||||
import { errorAutoClose, successAutoClose } from "@/lib/swal";
|
import { errorAutoClose, successAutoClose } from "@/lib/swal";
|
||||||
import { close, loading } from "@/config/swal";
|
import { close, loading } from "@/config/swal";
|
||||||
import DetailTenant from "@/components/form/tenant/tenant-detail-update-form";
|
import DetailTenant from "@/components/form/tenant/tenant-detail-update-form";
|
||||||
|
import { getInfoProfile } from "@/service/auth";
|
||||||
|
|
||||||
function TenantSettingsContentTable() {
|
function TenantSettingsContentTable() {
|
||||||
const [activeTab, setActiveTab] = useLocalStorage(
|
const [activeTab, setActiveTab] = useLocalStorage(
|
||||||
|
|
@ -199,25 +200,42 @@ function TenantSettingsContentTable() {
|
||||||
<div className="container mx-auto p-6 space-y-6 border rounded-lg">
|
<div className="container mx-auto p-6 space-y-6 border rounded-lg">
|
||||||
<div className="flex items-center justify-between ">
|
<div className="flex items-center justify-between ">
|
||||||
<div>
|
<div>
|
||||||
<h1 className="text-3xl font-bold text-gray-900 dark:text-white">Tenant Settings</h1>
|
<h1 className="text-3xl font-bold text-gray-900 dark:text-white">
|
||||||
|
Tenant Settings
|
||||||
|
</h1>
|
||||||
<p className="text-gray-600 mt-2">
|
<p className="text-gray-600 mt-2">
|
||||||
Manage approval workflows and user levels for your tenant
|
Manage approval workflows and user levels for your tenant
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
{/* <div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
<SettingsIcon className="h-6 w-6 text-gray-500" />
|
<SettingsIcon className="h-6 w-6 text-gray-500" />
|
||||||
<Button variant="outline" size="sm" onClick={checkWorkflowStatus}>
|
{/* <Button variant="outline" size="sm" onClick={checkWorkflowStatus}>
|
||||||
Check Workflow Status
|
Check Workflow Status
|
||||||
</Button>
|
</Button> */}
|
||||||
<Button
|
<Button
|
||||||
|
variant="outline"
|
||||||
|
size="sm"
|
||||||
|
className="bg-red-50 text-red-600 border-red-200 hover:bg-red-100"
|
||||||
|
onClick={async () => {
|
||||||
|
const res = await getInfoProfile();
|
||||||
|
const workflowInfo = res?.data?.data?.approvalWorkflowInfo;
|
||||||
|
|
||||||
|
if (workflowInfo) {
|
||||||
|
showWorkflowModal(workflowInfo);
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Test Modal
|
||||||
|
</Button>
|
||||||
|
{/* <Button
|
||||||
variant="outline"
|
variant="outline"
|
||||||
size="sm"
|
size="sm"
|
||||||
onClick={() => showWorkflowModal({ hasWorkflowSetup: false })}
|
onClick={() => showWorkflowModal({ hasWorkflowSetup: false })}
|
||||||
className="bg-red-50 text-red-600 border-red-200 hover:bg-red-100"
|
className="bg-red-50 text-red-600 border-red-200 hover:bg-red-100"
|
||||||
>
|
>
|
||||||
Test Modal
|
Test Modal
|
||||||
</Button>
|
</Button> */}
|
||||||
</div> */}
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Tabs value={activeTab} onValueChange={setActiveTab} className="w-full">
|
<Tabs value={activeTab} onValueChange={setActiveTab} className="w-full">
|
||||||
|
|
@ -431,7 +449,9 @@ function TenantSettingsContentTable() {
|
||||||
{step.stepOrder}
|
{step.stepOrder}
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div className="font-medium text-black">{step.stepName}</div>
|
<div className="font-medium text-black">
|
||||||
|
{step.stepName}
|
||||||
|
</div>
|
||||||
<div className="text-sm text-gray-500">
|
<div className="text-sm text-gray-500">
|
||||||
{step.conditionType &&
|
{step.conditionType &&
|
||||||
`Condition: ${step.conditionType}`}
|
`Condition: ${step.conditionType}`}
|
||||||
|
|
@ -905,7 +925,7 @@ function TenantSettingsContentTable() {
|
||||||
<UserLevelsForm
|
<UserLevelsForm
|
||||||
mode="single"
|
mode="single"
|
||||||
initialData={{
|
initialData={{
|
||||||
// id: editingUserLevel.id,
|
id: editingUserLevel.id,
|
||||||
name: editingUserLevel.name,
|
name: editingUserLevel.name,
|
||||||
aliasName: editingUserLevel.aliasName,
|
aliasName: editingUserLevel.aliasName,
|
||||||
levelNumber: editingUserLevel.levelNumber,
|
levelNumber: editingUserLevel.levelNumber,
|
||||||
|
|
|
||||||
|
|
@ -71,10 +71,18 @@ export const LoginForm: React.FC<LoginFormProps> = ({
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// const onSubmit = async (data: LoginFormData) => {
|
||||||
|
// try {
|
||||||
|
// // onSuccess?.(data);
|
||||||
|
// await handleLogin(data);
|
||||||
|
// } catch (error: any) {
|
||||||
|
// onError?.(error.message || "Login failed");
|
||||||
|
// }
|
||||||
|
// };
|
||||||
|
|
||||||
const onSubmit = async (data: LoginFormData) => {
|
const onSubmit = async (data: LoginFormData) => {
|
||||||
try {
|
try {
|
||||||
// onSuccess?.(data);
|
onSuccess?.(data); // hanya kirim data ke AuthPage
|
||||||
await handleLogin(data);
|
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
onError?.(error.message || "Login failed");
|
onError?.(error.message || "Login failed");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,8 @@ import { getMenuActionsByMenuId, MenuAction } from "@/service/menu-actions";
|
||||||
import Swal from "sweetalert2";
|
import Swal from "sweetalert2";
|
||||||
|
|
||||||
interface UserLevelsFormProps {
|
interface UserLevelsFormProps {
|
||||||
initialData?: UserLevelsCreateRequest;
|
// initialData?: UserLevelsCreateRequest;
|
||||||
|
initialData?: UserLevelsCreateRequest & { id?: number };
|
||||||
onSave?: (data: UserLevelsCreateRequest) => void;
|
onSave?: (data: UserLevelsCreateRequest) => void;
|
||||||
onCancel?: () => void;
|
onCancel?: () => void;
|
||||||
isLoading?: boolean;
|
isLoading?: boolean;
|
||||||
|
|
@ -458,8 +459,14 @@ export const UserLevelsForm: React.FC<UserLevelsFormProps> = ({
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const isBulkMode = activeTab === "bulk";
|
const isBulkMode = activeTab === "bulk";
|
||||||
const isEditing = Boolean((initialData as any)?.id);
|
// const isEditing = Boolean((initialData as any)?.id);
|
||||||
const userLevelId = (initialData as any)?.id;
|
// const userLevelId = (initialData as any)?.id;
|
||||||
|
|
||||||
|
const isEditing = typeof initialData?.id === "number";
|
||||||
|
const userLevelId = initialData?.id;
|
||||||
|
|
||||||
|
console.log("IS EDITING:", isEditing);
|
||||||
|
console.log("USER LEVEL ID:", userLevelId);
|
||||||
|
|
||||||
/* ===============================
|
/* ===============================
|
||||||
* BULK MODE
|
* BULK MODE
|
||||||
|
|
@ -520,8 +527,15 @@ export const UserLevelsForm: React.FC<UserLevelsFormProps> = ({
|
||||||
}
|
}
|
||||||
|
|
||||||
let response;
|
let response;
|
||||||
if (isEditing) {
|
// if (isEditing) {
|
||||||
response = await updateUserLevel(userLevelId, formData);
|
// response = await updateUserLevel(userLevelId, formData);
|
||||||
|
// } else {
|
||||||
|
// response = await createUserLevel(formData);
|
||||||
|
// }
|
||||||
|
|
||||||
|
if (isEditing && userLevelId !== undefined) {
|
||||||
|
const { id, ...payload } = formData as any;
|
||||||
|
response = await updateUserLevel(userLevelId, payload);
|
||||||
} else {
|
} else {
|
||||||
response = await createUserLevel(formData);
|
response = await createUserLevel(formData);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -261,10 +261,8 @@ export default function FormImage() {
|
||||||
pointOfView: "None",
|
pointOfView: "None",
|
||||||
clientId: "",
|
clientId: "",
|
||||||
};
|
};
|
||||||
console.log("Sending request for title with data:", titleData);
|
|
||||||
const titleRes = await getGenerateTitle(titleData);
|
const titleRes = await getGenerateTitle(titleData);
|
||||||
setTitle(titleRes?.data?.data || "");
|
setTitle(titleRes?.data?.data || "");
|
||||||
console.log("Generated title:", titleRes?.data?.data);
|
|
||||||
|
|
||||||
const keywordsData = {
|
const keywordsData = {
|
||||||
keyword: selectedMainKeyword,
|
keyword: selectedMainKeyword,
|
||||||
|
|
@ -275,12 +273,9 @@ export default function FormImage() {
|
||||||
pointOfView: "None",
|
pointOfView: "None",
|
||||||
clientId: "",
|
clientId: "",
|
||||||
};
|
};
|
||||||
console.log("Sending request for keywords with data:", keywordsData);
|
|
||||||
const keywordsRes = await getGenerateKeywords(keywordsData);
|
const keywordsRes = await getGenerateKeywords(keywordsData);
|
||||||
setSelectedSEO(keywordsRes?.data?.data || []);
|
setSelectedSEO(keywordsRes?.data?.data || []);
|
||||||
console.log("Generated keywords:", keywordsRes?.data?.data);
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Error during generation process:", error);
|
|
||||||
} finally {
|
} finally {
|
||||||
setIsLoading(false);
|
setIsLoading(false);
|
||||||
}
|
}
|
||||||
|
|
@ -310,9 +305,7 @@ export default function FormImage() {
|
||||||
console.log("Sending request for title with data:", titleData);
|
console.log("Sending request for title with data:", titleData);
|
||||||
const titleRes = await getGenerateTitle(titleData);
|
const titleRes = await getGenerateTitle(titleData);
|
||||||
setTitle(titleRes?.data?.data || "");
|
setTitle(titleRes?.data?.data || "");
|
||||||
console.log("Generated title:", titleRes?.data?.data);
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Error generating title:", error);
|
|
||||||
} finally {
|
} finally {
|
||||||
setIsLoading(false);
|
setIsLoading(false);
|
||||||
}
|
}
|
||||||
|
|
@ -322,7 +315,6 @@ export default function FormImage() {
|
||||||
title: "WARNING",
|
title: "WARNING",
|
||||||
text: "Please provide a valid title.",
|
text: "Please provide a valid title.",
|
||||||
});
|
});
|
||||||
console.error("Please provide a valid main keyword.");
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -339,10 +331,8 @@ export default function FormImage() {
|
||||||
pointOfView: "None",
|
pointOfView: "None",
|
||||||
clientId: "",
|
clientId: "",
|
||||||
};
|
};
|
||||||
console.log("Sending request for keywords with data:", keywordsData);
|
|
||||||
const keywordsRes = await getGenerateKeywords(keywordsData);
|
const keywordsRes = await getGenerateKeywords(keywordsData);
|
||||||
setSelectedSEO(keywordsRes?.data?.data || []);
|
setSelectedSEO(keywordsRes?.data?.data || []);
|
||||||
console.log("Generated keywords:", keywordsRes?.data?.data);
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Error generating keywords:", error);
|
console.error("Error generating keywords:", error);
|
||||||
} finally {
|
} finally {
|
||||||
|
|
@ -378,7 +368,6 @@ export default function FormImage() {
|
||||||
};
|
};
|
||||||
|
|
||||||
const res = await generateDataArticle(request);
|
const res = await generateDataArticle(request);
|
||||||
console.log("AI RESPONSE FULL:", res);
|
|
||||||
close();
|
close();
|
||||||
|
|
||||||
if (res?.error) {
|
if (res?.error) {
|
||||||
|
|
|
||||||
|
|
@ -113,12 +113,12 @@ export function WorkflowModalProvider({ children }: WorkflowModalProviderProps)
|
||||||
return (
|
return (
|
||||||
<WorkflowModalContext.Provider value={{ showWorkflowModal, hideWorkflowModal, refreshWorkflowStatus }}>
|
<WorkflowModalContext.Provider value={{ showWorkflowModal, hideWorkflowModal, refreshWorkflowStatus }}>
|
||||||
{children}
|
{children}
|
||||||
{/* <WorkflowSetupModal
|
<WorkflowSetupModal
|
||||||
isOpen={isModalOpen}
|
isOpen={isModalOpen}
|
||||||
onClose={hideWorkflowModal}
|
onClose={hideWorkflowModal}
|
||||||
workflowInfo={workflowInfo}
|
workflowInfo={workflowInfo}
|
||||||
onRefresh={refreshWorkflowStatus}
|
onRefresh={refreshWorkflowStatus}
|
||||||
/> */}
|
/>
|
||||||
</WorkflowModalContext.Provider>
|
</WorkflowModalContext.Provider>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,11 @@
|
||||||
"use client";
|
"use client";
|
||||||
import React, { useState, useEffect } from "react";
|
import React, { useState, useEffect } from "react";
|
||||||
import { Dialog, DialogContent, DialogHeader, DialogTitle } from "@/components/ui/dialog";
|
import {
|
||||||
|
Dialog,
|
||||||
|
DialogContent,
|
||||||
|
DialogHeader,
|
||||||
|
DialogTitle,
|
||||||
|
} from "@/components/ui/dialog";
|
||||||
import { Button } from "@/components/ui/button";
|
import { Button } from "@/components/ui/button";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { IconX, SettingsIcon } from "@/components/icons";
|
import { IconX, SettingsIcon } from "@/components/icons";
|
||||||
|
|
@ -20,7 +25,12 @@ interface WorkflowSetupModalProps {
|
||||||
onRefresh?: () => Promise<void>;
|
onRefresh?: () => Promise<void>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function WorkflowSetupModal({ isOpen, onClose, workflowInfo, onRefresh }: WorkflowSetupModalProps) {
|
export default function WorkflowSetupModal({
|
||||||
|
isOpen,
|
||||||
|
onClose,
|
||||||
|
workflowInfo,
|
||||||
|
onRefresh,
|
||||||
|
}: WorkflowSetupModalProps) {
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const pathname = usePathname();
|
const pathname = usePathname();
|
||||||
const [isVisible, setIsVisible] = useState(false);
|
const [isVisible, setIsVisible] = useState(false);
|
||||||
|
|
@ -33,7 +43,11 @@ export default function WorkflowSetupModal({ isOpen, onClose, workflowInfo, onRe
|
||||||
|
|
||||||
const handleClose = () => {
|
const handleClose = () => {
|
||||||
// Allow closing if workflow is setup OR if user is on tenant settings page
|
// Allow closing if workflow is setup OR if user is on tenant settings page
|
||||||
if (workflowInfo?.hasWorkflowSetup || pathname?.includes('/admin/settings/tenant') || pathname?.includes('/tenant')) {
|
if (
|
||||||
|
workflowInfo?.hasWorkflowSetup ||
|
||||||
|
pathname?.includes("/admin/settings/tenant") ||
|
||||||
|
pathname?.includes("/tenant")
|
||||||
|
) {
|
||||||
setIsVisible(false);
|
setIsVisible(false);
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
onClose();
|
onClose();
|
||||||
|
|
@ -52,19 +66,33 @@ export default function WorkflowSetupModal({ isOpen, onClose, workflowInfo, onRe
|
||||||
return (
|
return (
|
||||||
<Dialog
|
<Dialog
|
||||||
open={isVisible}
|
open={isVisible}
|
||||||
onOpenChange={(workflowInfo?.hasWorkflowSetup || pathname?.includes('/admin/settings/tenant') || pathname?.includes('/tenant')) ? handleClose : undefined}
|
onOpenChange={
|
||||||
|
workflowInfo?.hasWorkflowSetup ||
|
||||||
|
pathname?.includes("/admin/settings/tenant") ||
|
||||||
|
pathname?.includes("/tenant")
|
||||||
|
? handleClose
|
||||||
|
: undefined
|
||||||
|
}
|
||||||
>
|
>
|
||||||
<DialogContent
|
<DialogContent
|
||||||
className="max-w-md"
|
className="max-w-md"
|
||||||
onPointerDownOutside={(e) => {
|
onPointerDownOutside={(e) => {
|
||||||
// Prevent closing by clicking outside unless workflow is setup or on tenant settings page
|
// Prevent closing by clicking outside unless workflow is setup or on tenant settings page
|
||||||
if (!workflowInfo?.hasWorkflowSetup && !pathname?.includes('/admin/settings/tenant') && !pathname?.includes('/tenant')) {
|
if (
|
||||||
|
!workflowInfo?.hasWorkflowSetup &&
|
||||||
|
!pathname?.includes("/admin/settings/tenant") &&
|
||||||
|
!pathname?.includes("/tenant")
|
||||||
|
) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
onEscapeKeyDown={(e) => {
|
onEscapeKeyDown={(e) => {
|
||||||
// Prevent closing by pressing ESC unless workflow is setup or on tenant settings page
|
// Prevent closing by pressing ESC unless workflow is setup or on tenant settings page
|
||||||
if (!workflowInfo?.hasWorkflowSetup && !pathname?.includes('/admin/settings/tenant') && !pathname?.includes('/tenant')) {
|
if (
|
||||||
|
!workflowInfo?.hasWorkflowSetup &&
|
||||||
|
!pathname?.includes("/admin/settings/tenant") &&
|
||||||
|
!pathname?.includes("/tenant")
|
||||||
|
) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
|
|
@ -85,7 +113,8 @@ export default function WorkflowSetupModal({ isOpen, onClose, workflowInfo, onRe
|
||||||
</DialogHeader>
|
</DialogHeader>
|
||||||
|
|
||||||
<div className="space-y-4">
|
<div className="space-y-4">
|
||||||
{!workflowInfo?.hasWorkflowSetup ? (
|
{
|
||||||
|
!workflowInfo?.hasWorkflowSetup ? (
|
||||||
// No Workflow Setup
|
// No Workflow Setup
|
||||||
<Card className="border-orange-200 bg-orange-50">
|
<Card className="border-orange-200 bg-orange-50">
|
||||||
<CardContent className="p-4">
|
<CardContent className="p-4">
|
||||||
|
|
@ -98,7 +127,8 @@ export default function WorkflowSetupModal({ isOpen, onClose, workflowInfo, onRe
|
||||||
Workflow Belum Dikonfigurasi
|
Workflow Belum Dikonfigurasi
|
||||||
</h3>
|
</h3>
|
||||||
<p className="text-sm text-orange-700 mb-4">
|
<p className="text-sm text-orange-700 mb-4">
|
||||||
Anda belum melakukan setup workflow, silahkan setup terlebih dahulu.
|
Anda belum melakukan setup workflow, silahkan setup
|
||||||
|
terlebih dahulu.
|
||||||
</p>
|
</p>
|
||||||
<div className="flex gap-2">
|
<div className="flex gap-2">
|
||||||
<Button
|
<Button
|
||||||
|
|
@ -109,7 +139,8 @@ export default function WorkflowSetupModal({ isOpen, onClose, workflowInfo, onRe
|
||||||
<SettingsIcon className="h-4 w-4 mr-2" />
|
<SettingsIcon className="h-4 w-4 mr-2" />
|
||||||
Setup Workflow
|
Setup Workflow
|
||||||
</Button>
|
</Button>
|
||||||
{(pathname?.includes('/admin/settings/tenant') || pathname?.includes('/tenant')) && (
|
{(pathname?.includes("/admin/settings/tenant") ||
|
||||||
|
pathname?.includes("/tenant")) && (
|
||||||
<Button
|
<Button
|
||||||
variant="outline"
|
variant="outline"
|
||||||
onClick={handleClose}
|
onClick={handleClose}
|
||||||
|
|
@ -123,7 +154,97 @@ export default function WorkflowSetupModal({ isOpen, onClose, workflowInfo, onRe
|
||||||
</div>
|
</div>
|
||||||
</CardContent>
|
</CardContent>
|
||||||
</Card>
|
</Card>
|
||||||
) : ''
|
) : (
|
||||||
|
<Card className="border-green-200 bg-green-50">
|
||||||
|
<CardContent className="p-5 space-y-4">
|
||||||
|
<div className="flex items-start gap-3">
|
||||||
|
<div className="h-6 w-6 rounded-full bg-green-600 flex items-center justify-center mt-1">
|
||||||
|
<span className="text-white text-sm">✓</span>
|
||||||
|
</div>
|
||||||
|
<div className="flex-1">
|
||||||
|
<h3 className="font-semibold text-green-900 mb-3">
|
||||||
|
Workflow Sudah Dikonfigurasi
|
||||||
|
</h3>
|
||||||
|
|
||||||
|
<div className="space-y-2 text-sm">
|
||||||
|
<div className="flex justify-between">
|
||||||
|
<span className="text-gray-600">
|
||||||
|
Default Workflow
|
||||||
|
</span>
|
||||||
|
<span className="font-medium">
|
||||||
|
{workflowInfo.defaultWorkflowName}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="flex justify-between">
|
||||||
|
<span className="text-gray-600">Workflow ID</span>
|
||||||
|
<span className="font-mono">
|
||||||
|
#{workflowInfo.defaultWorkflowId}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="flex justify-between">
|
||||||
|
<span className="text-gray-600">
|
||||||
|
Requires Approval
|
||||||
|
</span>
|
||||||
|
<span
|
||||||
|
className={
|
||||||
|
workflowInfo.requiresApproval
|
||||||
|
? "text-green-600 font-medium"
|
||||||
|
: "text-gray-500"
|
||||||
|
}
|
||||||
|
>
|
||||||
|
{workflowInfo.requiresApproval ? "Yes" : "No"}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="flex justify-between">
|
||||||
|
<span className="text-gray-600">Auto Publish</span>
|
||||||
|
<span
|
||||||
|
className={
|
||||||
|
workflowInfo.autoPublishArticles
|
||||||
|
? "text-green-600 font-medium"
|
||||||
|
: "text-gray-500"
|
||||||
|
}
|
||||||
|
>
|
||||||
|
{workflowInfo.autoPublishArticles ? "Yes" : "No"}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="flex justify-between">
|
||||||
|
<span className="text-gray-600">Approval Status</span>
|
||||||
|
<span
|
||||||
|
className={
|
||||||
|
workflowInfo.isApprovalActive
|
||||||
|
? "text-green-600 font-medium"
|
||||||
|
: "text-red-600 font-medium"
|
||||||
|
}
|
||||||
|
>
|
||||||
|
{workflowInfo.isApprovalActive
|
||||||
|
? "Active"
|
||||||
|
: "Inactive"}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* <div className="flex gap-2 mt-4">
|
||||||
|
<Button
|
||||||
|
onClick={handleSetupWorkflow}
|
||||||
|
variant="outline"
|
||||||
|
size="sm"
|
||||||
|
>
|
||||||
|
<SettingsIcon className="h-4 w-4 mr-2" />
|
||||||
|
Manage Workflow
|
||||||
|
</Button>
|
||||||
|
|
||||||
|
<Button variant="outline" onClick={handleClose} size="sm">
|
||||||
|
Close
|
||||||
|
</Button>
|
||||||
|
</div> */}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</CardContent>
|
||||||
|
</Card>
|
||||||
// Workflow Setup Complete
|
// Workflow Setup Complete
|
||||||
// <Card className="border-green-200 bg-green-50">
|
// <Card className="border-green-200 bg-green-50">
|
||||||
// <CardContent className="p-4">
|
// <CardContent className="p-4">
|
||||||
|
|
@ -173,6 +294,8 @@ export default function WorkflowSetupModal({ isOpen, onClose, workflowInfo, onRe
|
||||||
// </div>
|
// </div>
|
||||||
// </CardContent>
|
// </CardContent>
|
||||||
// </Card>
|
// </Card>
|
||||||
|
)
|
||||||
|
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
</DialogContent>
|
</DialogContent>
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,8 @@
|
||||||
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
||||||
*/
|
*/
|
||||||
declare const Collection_base: {
|
declare const Collection_base: {
|
||||||
new (): import("@ckeditor/ckeditor5-utils/src/emittermixin.js").Emitter;
|
new (): import("./emittermixin.js").Emitter;
|
||||||
prototype: import("@ckeditor/ckeditor5-utils/src/emittermixin.js").Emitter;
|
prototype: import("./emittermixin.js").Emitter;
|
||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
* Collections are ordered sets of objects. Items in the collection can be retrieved by their indexes
|
* Collections are ordered sets of objects. Items in the collection can be retrieved by their indexes
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@
|
||||||
*/
|
*/
|
||||||
declare function diff<T>(a: ArrayLike<T>, b: ArrayLike<T>, cmp?: (a: T, b: T) => boolean): Array<DiffResult>;
|
declare function diff<T>(a: ArrayLike<T>, b: ArrayLike<T>, cmp?: (a: T, b: T) => boolean): Array<DiffResult>;
|
||||||
declare namespace diff {
|
declare namespace diff {
|
||||||
var fastDiff: typeof import("@ckeditor/ckeditor5-utils/src/fastdiff.js").default;
|
var fastDiff: typeof import("./fastdiff.js").default;
|
||||||
}
|
}
|
||||||
export default diff;
|
export default diff;
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
||||||
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
||||||
*/
|
*/
|
||||||
import type { DiffResult } from '@ckeditor/ckeditor5-utils/src/diff.js';
|
import type { DiffResult } from './diff.js';
|
||||||
/**
|
/**
|
||||||
* @module utils/difftochanges
|
* @module utils/difftochanges
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
6
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/dom/emittermixin.d.ts
generated
vendored
6
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/dom/emittermixin.d.ts
generated
vendored
|
|
@ -5,9 +5,9 @@
|
||||||
/**
|
/**
|
||||||
* @module utils/dom/emittermixin
|
* @module utils/dom/emittermixin
|
||||||
*/
|
*/
|
||||||
import { type Emitter, type CallbackOptions, type BaseEvent, type GetCallback } from '@ckeditor/ckeditor5-utils/src/emittermixin.js';
|
import { type Emitter, type CallbackOptions, type BaseEvent, type GetCallback } from '../emittermixin.js';
|
||||||
import type EventInfo from '@ckeditor/ckeditor5-utils/src/eventinfo.js';
|
import type EventInfo from '../eventinfo.js';
|
||||||
import type { Constructor, Mixed } from '@ckeditor/ckeditor5-utils/src/mix.js';
|
import type { Constructor, Mixed } from '../mix.js';
|
||||||
/**
|
/**
|
||||||
* Mixin that injects the DOM events API into its host. It provides the API
|
* Mixin that injects the DOM events API into its host. It provides the API
|
||||||
* compatible with {@link module:utils/emittermixin~Emitter}.
|
* compatible with {@link module:utils/emittermixin~Emitter}.
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
||||||
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
||||||
*/
|
*/
|
||||||
import Rect, { type RectSource } from '@ckeditor/ckeditor5-utils/src/dom/rect.js';
|
import Rect, { type RectSource } from './rect.js';
|
||||||
/**
|
/**
|
||||||
* Calculates the `position: absolute` coordinates of a given element so it can be positioned with respect to the
|
* Calculates the `position: absolute` coordinates of a given element so it can be positioned with respect to the
|
||||||
* target in the visually most efficient way, taking various restrictions like viewport or limiter geometry
|
* target in the visually most efficient way, taking various restrictions like viewport or limiter geometry
|
||||||
|
|
|
||||||
|
|
@ -5,10 +5,10 @@
|
||||||
/**
|
/**
|
||||||
* @module utils/emittermixin
|
* @module utils/emittermixin
|
||||||
*/
|
*/
|
||||||
import EventInfo from '@ckeditor/ckeditor5-utils/src/eventinfo.js';
|
import EventInfo from './eventinfo.js';
|
||||||
import { type PriorityString } from '@ckeditor/ckeditor5-utils/src/priorities.js';
|
import { type PriorityString } from './priorities.js';
|
||||||
import type { Constructor, Mixed } from '@ckeditor/ckeditor5-utils/src/mix.js';
|
import type { Constructor, Mixed } from './mix.js';
|
||||||
import '@ckeditor/ckeditor5-utils/src/version.js';
|
import './version.js';
|
||||||
/**
|
/**
|
||||||
* Mixin that injects the {@link ~Emitter events API} into its host.
|
* Mixin that injects the {@link ~Emitter events API} into its host.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,8 @@
|
||||||
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
||||||
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
||||||
*/
|
*/
|
||||||
import type { DiffResult } from '@ckeditor/ckeditor5-utils/src/diff.js';
|
import type { DiffResult } from './diff.js';
|
||||||
import type { Change } from '@ckeditor/ckeditor5-utils/src/difftochanges.js';
|
import type { Change } from './difftochanges.js';
|
||||||
/**
|
/**
|
||||||
* @module utils/fastdiff
|
* @module utils/fastdiff
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,10 @@
|
||||||
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
||||||
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
||||||
*/
|
*/
|
||||||
declare const FocusTracker_base: import("@ckeditor/ckeditor5-utils/src/mix.js").Mixed<{
|
declare const FocusTracker_base: import("./mix.js").Mixed<{
|
||||||
new (): import("@ckeditor/ckeditor5-utils/src/observablemixin.js").Observable;
|
new (): import("./observablemixin.js").Observable;
|
||||||
prototype: import("@ckeditor/ckeditor5-utils/src/observablemixin.js").Observable;
|
prototype: import("./observablemixin.js").Observable;
|
||||||
}, import("@ckeditor/ckeditor5-utils/src/dom/emittermixin.js").DomEmitter>;
|
}, import("./dom/emittermixin.js").DomEmitter>;
|
||||||
/**
|
/**
|
||||||
* Allows observing a group of `Element`s whether at least one of them is focused.
|
* Allows observing a group of `Element`s whether at least one of them is focused.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -5,60 +5,60 @@
|
||||||
/**
|
/**
|
||||||
* @module utils
|
* @module utils
|
||||||
*/
|
*/
|
||||||
export { default as env } from '@ckeditor/ckeditor5-utils/src/env.js';
|
export { default as env } from './env.js';
|
||||||
export { default as diff, type DiffResult } from '@ckeditor/ckeditor5-utils/src/diff.js';
|
export { default as diff, type DiffResult } from './diff.js';
|
||||||
export { default as fastDiff } from '@ckeditor/ckeditor5-utils/src/fastdiff.js';
|
export { default as fastDiff } from './fastdiff.js';
|
||||||
export { default as diffToChanges } from '@ckeditor/ckeditor5-utils/src/difftochanges.js';
|
export { default as diffToChanges } from './difftochanges.js';
|
||||||
export { default as mix } from '@ckeditor/ckeditor5-utils/src/mix.js';
|
export { default as mix } from './mix.js';
|
||||||
export type { Constructor, Mixed } from '@ckeditor/ckeditor5-utils/src/mix.js';
|
export type { Constructor, Mixed } from './mix.js';
|
||||||
export { default as EmitterMixin, type Emitter, type BaseEvent, type CallbackOptions, type EmitterMixinDelegateChain, type GetCallback, type GetCallbackOptions, type GetEventInfo, type GetNameOrEventInfo } from '@ckeditor/ckeditor5-utils/src/emittermixin.js';
|
export { default as EmitterMixin, type Emitter, type BaseEvent, type CallbackOptions, type EmitterMixinDelegateChain, type GetCallback, type GetCallbackOptions, type GetEventInfo, type GetNameOrEventInfo } from './emittermixin.js';
|
||||||
export { default as EventInfo } from '@ckeditor/ckeditor5-utils/src/eventinfo.js';
|
export { default as EventInfo } from './eventinfo.js';
|
||||||
export { default as ObservableMixin, type Observable, type DecoratedMethodEvent, type ObservableChangeEvent, type ObservableSetEvent } from '@ckeditor/ckeditor5-utils/src/observablemixin.js';
|
export { default as ObservableMixin, type Observable, type DecoratedMethodEvent, type ObservableChangeEvent, type ObservableSetEvent } from './observablemixin.js';
|
||||||
export { default as CKEditorError, logError, logWarning } from '@ckeditor/ckeditor5-utils/src/ckeditorerror.js';
|
export { default as CKEditorError, logError, logWarning } from './ckeditorerror.js';
|
||||||
export { default as ElementReplacer } from '@ckeditor/ckeditor5-utils/src/elementreplacer.js';
|
export { default as ElementReplacer } from './elementreplacer.js';
|
||||||
export { default as abortableDebounce, type AbortableFunc } from '@ckeditor/ckeditor5-utils/src/abortabledebounce.js';
|
export { default as abortableDebounce, type AbortableFunc } from './abortabledebounce.js';
|
||||||
export { default as count } from '@ckeditor/ckeditor5-utils/src/count.js';
|
export { default as count } from './count.js';
|
||||||
export { default as compareArrays } from '@ckeditor/ckeditor5-utils/src/comparearrays.js';
|
export { default as compareArrays } from './comparearrays.js';
|
||||||
export { default as createElement } from '@ckeditor/ckeditor5-utils/src/dom/createelement.js';
|
export { default as createElement } from './dom/createelement.js';
|
||||||
export { default as Config } from '@ckeditor/ckeditor5-utils/src/config.js';
|
export { default as Config } from './config.js';
|
||||||
export { default as isIterable } from '@ckeditor/ckeditor5-utils/src/isiterable.js';
|
export { default as isIterable } from './isiterable.js';
|
||||||
export { default as DomEmitterMixin, type DomEmitter } from '@ckeditor/ckeditor5-utils/src/dom/emittermixin.js';
|
export { default as DomEmitterMixin, type DomEmitter } from './dom/emittermixin.js';
|
||||||
export { default as findClosestScrollableAncestor } from '@ckeditor/ckeditor5-utils/src/dom/findclosestscrollableancestor.js';
|
export { default as findClosestScrollableAncestor } from './dom/findclosestscrollableancestor.js';
|
||||||
export { default as global } from '@ckeditor/ckeditor5-utils/src/dom/global.js';
|
export { default as global } from './dom/global.js';
|
||||||
export { default as getAncestors } from '@ckeditor/ckeditor5-utils/src/dom/getancestors.js';
|
export { default as getAncestors } from './dom/getancestors.js';
|
||||||
export { default as getDataFromElement } from '@ckeditor/ckeditor5-utils/src/dom/getdatafromelement.js';
|
export { default as getDataFromElement } from './dom/getdatafromelement.js';
|
||||||
export { default as getBorderWidths } from '@ckeditor/ckeditor5-utils/src/dom/getborderwidths.js';
|
export { default as getBorderWidths } from './dom/getborderwidths.js';
|
||||||
export { default as isText } from '@ckeditor/ckeditor5-utils/src/dom/istext.js';
|
export { default as isText } from './dom/istext.js';
|
||||||
export { default as Rect, type RectSource } from '@ckeditor/ckeditor5-utils/src/dom/rect.js';
|
export { default as Rect, type RectSource } from './dom/rect.js';
|
||||||
export { default as ResizeObserver } from '@ckeditor/ckeditor5-utils/src/dom/resizeobserver.js';
|
export { default as ResizeObserver } from './dom/resizeobserver.js';
|
||||||
export { default as setDataInElement } from '@ckeditor/ckeditor5-utils/src/dom/setdatainelement.js';
|
export { default as setDataInElement } from './dom/setdatainelement.js';
|
||||||
export { default as toUnit } from '@ckeditor/ckeditor5-utils/src/dom/tounit.js';
|
export { default as toUnit } from './dom/tounit.js';
|
||||||
export { default as indexOf } from '@ckeditor/ckeditor5-utils/src/dom/indexof.js';
|
export { default as indexOf } from './dom/indexof.js';
|
||||||
export { default as insertAt } from '@ckeditor/ckeditor5-utils/src/dom/insertat.js';
|
export { default as insertAt } from './dom/insertat.js';
|
||||||
export { default as isComment } from '@ckeditor/ckeditor5-utils/src/dom/iscomment.js';
|
export { default as isComment } from './dom/iscomment.js';
|
||||||
export { default as isNode } from '@ckeditor/ckeditor5-utils/src/dom/isnode.js';
|
export { default as isNode } from './dom/isnode.js';
|
||||||
export { default as isRange } from '@ckeditor/ckeditor5-utils/src/dom/isrange.js';
|
export { default as isRange } from './dom/isrange.js';
|
||||||
export { default as isValidAttributeName } from '@ckeditor/ckeditor5-utils/src/dom/isvalidattributename.js';
|
export { default as isValidAttributeName } from './dom/isvalidattributename.js';
|
||||||
export { default as isVisible } from '@ckeditor/ckeditor5-utils/src/dom/isvisible.js';
|
export { default as isVisible } from './dom/isvisible.js';
|
||||||
export { getOptimalPosition, type Options as PositionOptions, type PositioningFunction, type DomPoint } from '@ckeditor/ckeditor5-utils/src/dom/position.js';
|
export { getOptimalPosition, type Options as PositionOptions, type PositioningFunction, type DomPoint } from './dom/position.js';
|
||||||
export { default as remove } from '@ckeditor/ckeditor5-utils/src/dom/remove.js';
|
export { default as remove } from './dom/remove.js';
|
||||||
export * from '@ckeditor/ckeditor5-utils/src/dom/scroll.js';
|
export * from './dom/scroll.js';
|
||||||
export * from '@ckeditor/ckeditor5-utils/src/keyboard.js';
|
export * from './keyboard.js';
|
||||||
export * from '@ckeditor/ckeditor5-utils/src/language.js';
|
export * from './language.js';
|
||||||
export { default as Locale, type LocaleTranslate, type Translations } from '@ckeditor/ckeditor5-utils/src/locale.js';
|
export { default as Locale, type LocaleTranslate, type Translations } from './locale.js';
|
||||||
export { default as Collection, type CollectionAddEvent, type CollectionChangeEvent, type CollectionRemoveEvent } from '@ckeditor/ckeditor5-utils/src/collection.js';
|
export { default as Collection, type CollectionAddEvent, type CollectionChangeEvent, type CollectionRemoveEvent } from './collection.js';
|
||||||
export { default as first } from '@ckeditor/ckeditor5-utils/src/first.js';
|
export { default as first } from './first.js';
|
||||||
export { default as FocusTracker } from '@ckeditor/ckeditor5-utils/src/focustracker.js';
|
export { default as FocusTracker } from './focustracker.js';
|
||||||
export { default as KeystrokeHandler } from '@ckeditor/ckeditor5-utils/src/keystrokehandler.js';
|
export { default as KeystrokeHandler } from './keystrokehandler.js';
|
||||||
export { default as toArray, type ArrayOrItem, type ReadonlyArrayOrItem } from '@ckeditor/ckeditor5-utils/src/toarray.js';
|
export { default as toArray, type ArrayOrItem, type ReadonlyArrayOrItem } from './toarray.js';
|
||||||
export { default as toMap } from '@ckeditor/ckeditor5-utils/src/tomap.js';
|
export { default as toMap } from './tomap.js';
|
||||||
export { default as priorities, type PriorityString } from '@ckeditor/ckeditor5-utils/src/priorities.js';
|
export { default as priorities, type PriorityString } from './priorities.js';
|
||||||
export { default as retry, exponentialDelay } from '@ckeditor/ckeditor5-utils/src/retry.js';
|
export { default as retry, exponentialDelay } from './retry.js';
|
||||||
export { default as insertToPriorityArray } from '@ckeditor/ckeditor5-utils/src/inserttopriorityarray.js';
|
export { default as insertToPriorityArray } from './inserttopriorityarray.js';
|
||||||
export { default as spliceArray } from '@ckeditor/ckeditor5-utils/src/splicearray.js';
|
export { default as spliceArray } from './splicearray.js';
|
||||||
export { default as uid } from '@ckeditor/ckeditor5-utils/src/uid.js';
|
export { default as uid } from './uid.js';
|
||||||
export { default as delay, type DelayedFunc } from '@ckeditor/ckeditor5-utils/src/delay.js';
|
export { default as delay, type DelayedFunc } from './delay.js';
|
||||||
export { default as verifyLicense } from '@ckeditor/ckeditor5-utils/src/verifylicense.js';
|
export { default as verifyLicense } from './verifylicense.js';
|
||||||
export { default as wait } from '@ckeditor/ckeditor5-utils/src/wait.js';
|
export { default as wait } from './wait.js';
|
||||||
export * from '@ckeditor/ckeditor5-utils/src/unicode.js';
|
export * from './unicode.js';
|
||||||
export { default as version, releaseDate } from '@ckeditor/ckeditor5-utils/src/version.js';
|
export { default as version, releaseDate } from './version.js';
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
||||||
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
||||||
*/
|
*/
|
||||||
import { type PriorityString } from '@ckeditor/ckeditor5-utils/src/priorities.js';
|
import { type PriorityString } from './priorities.js';
|
||||||
/**
|
/**
|
||||||
* @module utils/inserttopriorityarray
|
* @module utils/inserttopriorityarray
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
*
|
*
|
||||||
* @module utils/keyboard
|
* @module utils/keyboard
|
||||||
*/
|
*/
|
||||||
import type { LanguageDirection } from '@ckeditor/ckeditor5-utils/src/language.js';
|
import type { LanguageDirection } from './language.js';
|
||||||
/**
|
/**
|
||||||
* An object with `keyName => keyCode` pairs for a set of known keys.
|
* An object with `keyName => keyCode` pairs for a set of known keys.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
6
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/keystrokehandler.d.ts
generated
vendored
6
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/keystrokehandler.d.ts
generated
vendored
|
|
@ -2,9 +2,9 @@
|
||||||
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
||||||
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
||||||
*/
|
*/
|
||||||
import type { Emitter } from '@ckeditor/ckeditor5-utils/src/emittermixin.js';
|
import type { Emitter } from './emittermixin.js';
|
||||||
import { type KeystrokeInfo } from '@ckeditor/ckeditor5-utils/src/keyboard.js';
|
import { type KeystrokeInfo } from './keyboard.js';
|
||||||
import type { PriorityString } from '@ckeditor/ckeditor5-utils/src/priorities.js';
|
import type { PriorityString } from './priorities.js';
|
||||||
/**
|
/**
|
||||||
* Keystroke handler allows registering callbacks for given keystrokes.
|
* Keystroke handler allows registering callbacks for given keystrokes.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -5,9 +5,9 @@
|
||||||
/**
|
/**
|
||||||
* @module utils/locale
|
* @module utils/locale
|
||||||
*/
|
*/
|
||||||
import { type ArrayOrItem } from '@ckeditor/ckeditor5-utils/src/toarray.js';
|
import { type ArrayOrItem } from './toarray.js';
|
||||||
import { type Message } from '@ckeditor/ckeditor5-utils/src/translation-service.js';
|
import { type Message } from './translation-service.js';
|
||||||
import { type LanguageDirection } from '@ckeditor/ckeditor5-utils/src/language.js';
|
import { type LanguageDirection } from './language.js';
|
||||||
/**
|
/**
|
||||||
* Represents the localization services.
|
* Represents the localization services.
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
4
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/observablemixin.d.ts
generated
vendored
4
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/observablemixin.d.ts
generated
vendored
|
|
@ -5,8 +5,8 @@
|
||||||
/**
|
/**
|
||||||
* @module utils/observablemixin
|
* @module utils/observablemixin
|
||||||
*/
|
*/
|
||||||
import { type Emitter } from '@ckeditor/ckeditor5-utils/src/emittermixin.js';
|
import { type Emitter } from './emittermixin.js';
|
||||||
import type { Constructor, Mixed } from '@ckeditor/ckeditor5-utils/src/mix.js';
|
import type { Constructor, Mixed } from './mix.js';
|
||||||
/**
|
/**
|
||||||
* A mixin that injects the "observable properties" and data binding functionality described in the
|
* A mixin that injects the "observable properties" and data binding functionality described in the
|
||||||
* {@link ~Observable} interface.
|
* {@link ~Observable} interface.
|
||||||
|
|
|
||||||
6
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/translation-service.d.ts
generated
vendored
6
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/translation-service.d.ts
generated
vendored
|
|
@ -7,9 +7,9 @@
|
||||||
*/
|
*/
|
||||||
import type { Translations } from './locale.js';
|
import type { Translations } from './locale.js';
|
||||||
import { type ArrayOrItem } from './toarray.js';
|
import { type ArrayOrItem } from './toarray.js';
|
||||||
// declare global {
|
declare global {
|
||||||
// var CKEDITOR_TRANSLATIONS: Translations;
|
var CKEDITOR_TRANSLATIONS: Translations;
|
||||||
// }
|
}
|
||||||
/**
|
/**
|
||||||
* Adds translations to existing ones or overrides the existing translations. These translations will later
|
* Adds translations to existing ones or overrides the existing translations. These translations will later
|
||||||
* be available for the {@link module:utils/locale~Locale#t `t()`} function.
|
* be available for the {@link module:utils/locale~Locale#t `t()`} function.
|
||||||
|
|
|
||||||
|
|
@ -5,10 +5,10 @@
|
||||||
/**
|
/**
|
||||||
* @module widget/widgetresize
|
* @module widget/widgetresize
|
||||||
*/
|
*/
|
||||||
import Resizer from '@ckeditor/ckeditor5-widget/src/widgetresize/resizer.js';
|
import Resizer from './widgetresize/resizer.js';
|
||||||
import { Plugin, type Editor } from '@ckeditor/ckeditor5-core';
|
import { Plugin, type Editor } from '@ckeditor/ckeditor5-core';
|
||||||
import { type Element, type ViewContainerElement } from '@ckeditor/ckeditor5-engine';
|
import { type Element, type ViewContainerElement } from '@ckeditor/ckeditor5-engine';
|
||||||
import '@ckeditor/ckeditor5-widget/theme/widgetresize.css';
|
import '../theme/widgetresize.css';
|
||||||
/**
|
/**
|
||||||
* The widget resize feature plugin.
|
* The widget resize feature plugin.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,8 @@
|
||||||
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
||||||
*/
|
*/
|
||||||
import { Rect, type DecoratedMethodEvent } from '@ckeditor/ckeditor5-utils';
|
import { Rect, type DecoratedMethodEvent } from '@ckeditor/ckeditor5-utils';
|
||||||
import ResizeState from '@ckeditor/ckeditor5-widget/src/widgetresize/resizerstate.js';
|
import ResizeState from './resizerstate.js';
|
||||||
import type { ResizerOptions } from '@ckeditor/ckeditor5-widget/src/widgetresize.js';
|
import type { ResizerOptions } from '../widgetresize.js';
|
||||||
declare const Resizer_base: {
|
declare const Resizer_base: {
|
||||||
new (): import("@ckeditor/ckeditor5-utils").Observable;
|
new (): import("@ckeditor/ckeditor5-utils").Observable;
|
||||||
prototype: import("@ckeditor/ckeditor5-utils").Observable;
|
prototype: import("@ckeditor/ckeditor5-utils").Observable;
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
||||||
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
||||||
*/
|
*/
|
||||||
import type { ResizerOptions } from '@ckeditor/ckeditor5-widget/src/widgetresize.js';
|
import type { ResizerOptions } from '../widgetresize.js';
|
||||||
declare const ResizeState_base: {
|
declare const ResizeState_base: {
|
||||||
new (): import("@ckeditor/ckeditor5-utils").Observable;
|
new (): import("@ckeditor/ckeditor5-utils").Observable;
|
||||||
prototype: import("@ckeditor/ckeditor5-utils").Observable;
|
prototype: import("@ckeditor/ckeditor5-utils").Observable;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue