import { require_prop_types } from "./chunk-ZYDILIPQ.js"; import "./chunk-AOWI4JYR.js"; import "./chunk-KGPWUC7Q.js"; import "./chunk-FVEHK4NK.js"; import "./chunk-C4NW23D7.js"; import "./chunk-E3IW2VDN.js"; import "./chunk-MN3D3XJI.js"; import "./chunk-C7H2BX76.js"; import "./chunk-U66AL5Y5.js"; import "./chunk-7KYK3FTC.js"; import "./chunk-JF4AI5LV.js"; import "./chunk-ALMC553V.js"; import "./chunk-PDGPTUUZ.js"; import "./chunk-XH2B3RAH.js"; import "./chunk-MLTBQQQV.js"; import "./chunk-GXKJFURG.js"; import "./chunk-7FUKGPNR.js"; import "./chunk-NAZM6EA4.js"; import "./chunk-UATNJIHQ.js"; import "./chunk-P4VL3IHZ.js"; import "./chunk-HIZVCZYI.js"; import "./chunk-7HX4OIS5.js"; import "./chunk-6LY4MOO2.js"; import "./chunk-SQLDXQZE.js"; import "./chunk-QF6GPHA4.js"; import "./chunk-SYWYLB7I.js"; import "./chunk-S3HPKOXW.js"; import "./chunk-JRLAXHTE.js"; import "./chunk-E4IFZ6ZT.js"; import "./chunk-XNACAI67.js"; import { useMutation, useQuery, useQueryClient } from "./chunk-QLEKUQKW.js"; import "./chunk-4J3VOWQV.js"; import "./chunk-PFI4R5WA.js"; import "./chunk-G2UWKDMB.js"; import "./chunk-B3BGMYGX.js"; import "./chunk-W6ICJ5TB.js"; import "./chunk-IHYIPMY2.js"; import "./chunk-UWHSN2C7.js"; import "./chunk-ERK7O2GM.js"; import { useFetchClient } from "./chunk-FCIM6RNO.js"; import "./chunk-J33IXKN4.js"; import "./chunk-NP53ZCXD.js"; import "./chunk-KFLQQE5L.js"; import "./chunk-ED4XR3VQ.js"; import "./chunk-MBK4V2X7.js"; import { require_isEmpty } from "./chunk-YJEURQPS.js"; import "./chunk-5ESYXDTN.js"; import "./chunk-GGK2TLCV.js"; import "./chunk-K65KIEAL.js"; import "./chunk-B7ZLODDO.js"; import "./chunk-PW7XKCYO.js"; import "./chunk-RMBEU7DO.js"; import "./chunk-RI2W2UZ6.js"; import "./chunk-IY256CNP.js"; import { errorsTrads } from "./chunk-IFOFBKTA.js"; import { create4 as create, create6 as create2 } from "./chunk-XLSIZGJF.js"; import "./chunk-EGNP2T5O.js"; import { useTracking } from "./chunk-GSN7U3BK.js"; import "./chunk-T3B5F2LV.js"; import "./chunk-YXDCVYVT.js"; import "./chunk-QIJGNK42.js"; import "./chunk-7PUJSL55.js"; import "./chunk-C2ZJTFO7.js"; import "./chunk-C75BZXCZ.js"; import "./chunk-APGTER6B.js"; import "./chunk-ZM6TT53G.js"; import { MemoizedInputRenderer } from "./chunk-6AXVGFVQ.js"; import { Form } from "./chunk-BFLP6DBI.js"; import { useRBAC } from "./chunk-CMLQV3Z2.js"; import "./chunk-D4WYVNVM.js"; import "./chunk-MMOBCIZG.js"; import "./chunk-IGCTEXRF.js"; import { Layouts } from "./chunk-TIVRAWTC.js"; import "./chunk-PQINNV4N.js"; import "./chunk-VYSYYPOB.js"; import { Page, useAPIErrorHandler } from "./chunk-5CAWUBTQ.js"; import "./chunk-W2TBR6J3.js"; import "./chunk-QEGMJR7H.js"; import "./chunk-LCL5TIBZ.js"; import "./chunk-WOQNBAGN.js"; import "./chunk-BHLYCXQ7.js"; import "./chunk-76QM3EFM.js"; import "./chunk-CE4VABH2.js"; import "./chunk-5VODLFKF.js"; import { useNotification } from "./chunk-N55RVBRV.js"; import { Box, Breadcrumbs, Button, Crumb, Grid, IconButton, Modal, Table, Tbody, Td, Th, Thead, Tr, Typography, VisuallyHidden, useIntl, useNotifyAT } from "./chunk-7XB6XSWQ.js"; import "./chunk-5ZC4PE57.js"; import "./chunk-TUXTO2Z5.js"; import "./chunk-FOD4ENRR.js"; import { ForwardRef$1v, ForwardRef$4F, ForwardRef$5n } from "./chunk-WRD5KPDH.js"; import { require_jsx_runtime } from "./chunk-NIAJZ5MX.js"; import "./chunk-ACIMPXWY.js"; import { require_react } from "./chunk-MADUDGYZ.js"; import { PERMISSIONS, getTrad } from "./chunk-DJJSG3NG.js"; import { __toESM } from "./chunk-PLDDJCW6.js"; // node_modules/@strapi/plugin-users-permissions/dist/admin/pages/EmailTemplates/index.mjs var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1); var React = __toESM(require_react(), 1); var import_isEmpty3 = __toESM(require_isEmpty(), 1); // node_modules/@strapi/plugin-users-permissions/dist/admin/pages/EmailTemplates/components/EmailForm.mjs var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); var import_react = __toESM(require_react(), 1); var import_prop_types = __toESM(require_prop_types(), 1); var import_isEmpty = __toESM(require_isEmpty(), 1); // node_modules/@strapi/plugin-users-permissions/dist/admin/pages/EmailTemplates/utils/schema.mjs var schema = create2().shape({ options: create2().shape({ from: create2().shape({ name: create().required({ id: errorsTrads.required.id, defaultMessage: "This field is required" }), email: create().email(errorsTrads.email).required({ id: errorsTrads.required.id, defaultMessage: "This field is required" }) }).required(), response_email: create().email(errorsTrads.email), object: create().required({ id: errorsTrads.required.id, defaultMessage: "This field is required" }), message: create().required({ id: errorsTrads.required.id, defaultMessage: "This field is required" }) }).required(errorsTrads.required.id) }); // node_modules/@strapi/plugin-users-permissions/dist/admin/pages/EmailTemplates/components/EmailForm.mjs var EmailForm = ({ template = {}, onToggle, open, onSubmit }) => { const { formatMessage } = useIntl(); return (0, import_jsx_runtime.jsx)(Modal.Root, { open, onOpenChange: onToggle, children: (0, import_jsx_runtime.jsxs)(Modal.Content, { children: [ (0, import_jsx_runtime.jsxs)(Modal.Header, { children: [ (0, import_jsx_runtime.jsxs)(Breadcrumbs, { label: `${formatMessage({ id: getTrad("PopUpForm.header.edit.email-templates"), defaultMessage: "Edit email template" })}, ${template.display ? formatMessage({ id: getTrad(template.display), defaultMessage: template.display }) : ""}`, children: [ (0, import_jsx_runtime.jsx)(Crumb, { children: formatMessage({ id: getTrad("PopUpForm.header.edit.email-templates"), defaultMessage: "Edit email template" }) }), (0, import_jsx_runtime.jsx)(Crumb, { isCurrent: true, children: template.display ? formatMessage({ id: getTrad(template.display), defaultMessage: template.display }) : "" }) ] }), (0, import_jsx_runtime.jsx)(VisuallyHidden, { children: (0, import_jsx_runtime.jsx)(Modal.Title, { children: `${formatMessage({ id: getTrad("PopUpForm.header.edit.email-templates"), defaultMessage: "Edit email template" })}, ${template.display ? formatMessage({ id: getTrad(template.display), defaultMessage: template.display }) : ""}` }) }) ] }), (0, import_jsx_runtime.jsx)(Form, { onSubmit, initialValues: template, validationSchema: schema, children: ({ isSubmitting }) => { return (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [ (0, import_jsx_runtime.jsx)(Modal.Body, { children: (0, import_jsx_runtime.jsx)(Grid.Root, { gap: 5, children: [ { label: formatMessage({ id: getTrad("PopUpForm.Email.options.from.name.label"), defaultMessage: "Shipper name" }), name: "options.from.name", size: 6, type: "string" }, { label: formatMessage({ id: getTrad("PopUpForm.Email.options.from.email.label"), defaultMessage: "Shipper email" }), name: "options.from.email", size: 6, type: "string" }, { label: formatMessage({ id: getTrad("PopUpForm.Email.options.response_email.label"), defaultMessage: "Response email" }), name: "options.response_email", size: 6, type: "string" }, { label: formatMessage({ id: getTrad("PopUpForm.Email.options.object.label"), defaultMessage: "Subject" }), name: "options.object", size: 6, type: "string" }, { label: formatMessage({ id: getTrad("PopUpForm.Email.options.message.label"), defaultMessage: "Message" }), name: "options.message", size: 12, type: "text" } ].map(({ size, ...field }) => (0, import_jsx_runtime.jsx)(Grid.Item, { col: size, direction: "column", alignItems: "stretch", children: (0, import_jsx_runtime.jsx)(MemoizedInputRenderer, { ...field }) }, field.name)) }) }), (0, import_jsx_runtime.jsxs)(Modal.Footer, { children: [ (0, import_jsx_runtime.jsx)(Modal.Close, { children: (0, import_jsx_runtime.jsx)(Button, { variant: "tertiary", children: "Cancel" }) }), (0, import_jsx_runtime.jsx)(Button, { loading: isSubmitting, type: "submit", children: "Finish" }) ] }) ] }); } }) ] }) }); }; EmailForm.defaultProps = { template: {} }; EmailForm.propTypes = { template: import_prop_types.default.shape({ display: import_prop_types.default.string, icon: import_prop_types.default.string, options: import_prop_types.default.shape({ from: import_prop_types.default.shape({ name: import_prop_types.default.string, email: import_prop_types.default.string }), message: import_prop_types.default.string, object: import_prop_types.default.string, response_email: import_prop_types.default.string }) }), open: import_prop_types.default.bool.isRequired, onSubmit: import_prop_types.default.func.isRequired, onToggle: import_prop_types.default.func.isRequired }; // node_modules/@strapi/plugin-users-permissions/dist/admin/pages/EmailTemplates/components/EmailTable.mjs var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); var import_react2 = __toESM(require_react(), 1); var import_prop_types2 = __toESM(require_prop_types(), 1); var import_isEmpty2 = __toESM(require_isEmpty(), 1); var EmailTable = ({ canUpdate, onEditClick }) => { const { formatMessage } = useIntl(); return (0, import_jsx_runtime2.jsxs)(Table, { colCount: 3, rowCount: 3, children: [ (0, import_jsx_runtime2.jsx)(Thead, { children: (0, import_jsx_runtime2.jsxs)(Tr, { children: [ (0, import_jsx_runtime2.jsx)(Th, { width: "1%", children: (0, import_jsx_runtime2.jsx)(VisuallyHidden, { children: formatMessage({ id: getTrad("Email.template.table.icon.label"), defaultMessage: "icon" }) }) }), (0, import_jsx_runtime2.jsx)(Th, { children: (0, import_jsx_runtime2.jsx)(Typography, { variant: "sigma", textColor: "neutral600", children: formatMessage({ id: getTrad("Email.template.table.name.label"), defaultMessage: "name" }) }) }), (0, import_jsx_runtime2.jsx)(Th, { width: "1%", children: (0, import_jsx_runtime2.jsx)(VisuallyHidden, { children: formatMessage({ id: getTrad("Email.template.table.action.label"), defaultMessage: "action" }) }) }) ] }) }), (0, import_jsx_runtime2.jsxs)(Tbody, { children: [ (0, import_jsx_runtime2.jsxs)(Tr, { cursor: "pointer", onClick: () => onEditClick("reset_password"), children: [ (0, import_jsx_runtime2.jsx)(Td, { children: (0, import_jsx_runtime2.jsx)(Box, { width: "3.2rem", height: "3.2rem", padding: "0.8rem", children: (0, import_jsx_runtime2.jsx)(ForwardRef$5n, { "aria-label": formatMessage({ id: "global.reset-password", defaultMessage: "Reset password" }) }) }) }), (0, import_jsx_runtime2.jsx)(Td, { children: (0, import_jsx_runtime2.jsx)(Typography, { children: formatMessage({ id: "global.reset-password", defaultMessage: "Reset password" }) }) }), (0, import_jsx_runtime2.jsx)(Td, { onClick: (e) => e.stopPropagation(), children: (0, import_jsx_runtime2.jsx)(IconButton, { onClick: () => onEditClick("reset_password"), label: formatMessage({ id: getTrad("Email.template.form.edit.label"), defaultMessage: "Edit a template" }), variant: "ghost", disabled: !canUpdate, children: (0, import_jsx_runtime2.jsx)(ForwardRef$1v, {}) }) }) ] }), (0, import_jsx_runtime2.jsxs)(Tr, { cursor: "pointer", onClick: () => onEditClick("email_confirmation"), children: [ (0, import_jsx_runtime2.jsx)(Td, { children: (0, import_jsx_runtime2.jsx)(Box, { width: "3.2rem", height: "3.2rem", padding: "0.8rem", children: (0, import_jsx_runtime2.jsx)(ForwardRef$4F, { "aria-label": formatMessage({ id: getTrad("Email.template.email_confirmation"), defaultMessage: "Email address confirmation" }) }) }) }), (0, import_jsx_runtime2.jsx)(Td, { children: (0, import_jsx_runtime2.jsx)(Typography, { children: formatMessage({ id: getTrad("Email.template.email_confirmation"), defaultMessage: "Email address confirmation" }) }) }), (0, import_jsx_runtime2.jsx)(Td, { onClick: (e) => e.stopPropagation(), children: (0, import_jsx_runtime2.jsx)(IconButton, { onClick: () => onEditClick("email_confirmation"), label: formatMessage({ id: getTrad("Email.template.form.edit.label"), defaultMessage: "Edit a template" }), variant: "ghost", disabled: !canUpdate, children: (0, import_jsx_runtime2.jsx)(ForwardRef$1v, {}) }) }) ] }) ] }) ] }); }; EmailTable.propTypes = { canUpdate: import_prop_types2.default.bool.isRequired, onEditClick: import_prop_types2.default.func.isRequired }; // node_modules/@strapi/plugin-users-permissions/dist/admin/pages/EmailTemplates/index.mjs var ProtectedEmailTemplatesPage = () => (0, import_jsx_runtime3.jsx)(Page.Protect, { permissions: PERMISSIONS.readEmailTemplates, children: (0, import_jsx_runtime3.jsx)(EmailTemplatesPage, {}) }); var EmailTemplatesPage = () => { const { formatMessage } = useIntl(); const { trackUsage } = useTracking(); const { notifyStatus } = useNotifyAT(); const { toggleNotification } = useNotification(); const queryClient = useQueryClient(); const { get, put } = useFetchClient(); const { formatAPIError } = useAPIErrorHandler(); const [isModalOpen, setIsModalOpen] = React.useState(false); const [templateToEdit, setTemplateToEdit] = React.useState(null); const { isLoading: isLoadingForPermissions, allowedActions: { canUpdate } } = useRBAC({ update: PERMISSIONS.updateEmailTemplates }); const { isLoading: isLoadingData, data } = useQuery([ "users-permissions", "email-templates" ], async () => { const { data: data2 } = await get("/users-permissions/email-templates"); return data2; }, { onSuccess() { notifyStatus(formatMessage({ id: getTrad("Email.template.data.loaded"), defaultMessage: "Email templates has been loaded" })); }, onError(error) { toggleNotification({ type: "danger", message: formatAPIError(error) }); } }); const isLoading = isLoadingForPermissions || isLoadingData; const handleToggle = () => { setIsModalOpen((prev) => !prev); }; const handleEditClick = (template) => { setTemplateToEdit(template); handleToggle(); }; const submitMutation = useMutation((body) => put("/users-permissions/email-templates", { "email-templates": body }), { async onSuccess() { await queryClient.invalidateQueries([ "users-permissions", "email-templates" ]); toggleNotification({ type: "success", message: formatMessage({ id: "notification.success.saved", defaultMessage: "Saved" }) }); trackUsage("didEditEmailTemplates"); handleToggle(); }, onError(error) { toggleNotification({ type: "danger", message: formatAPIError(error) }); }, refetchActive: true }); const handleSubmit = (body) => { trackUsage("willEditEmailTemplates"); const editedTemplates = { ...data, [templateToEdit]: body }; submitMutation.mutate(editedTemplates); }; if (isLoading) { return (0, import_jsx_runtime3.jsx)(Page.Loading, {}); } return (0, import_jsx_runtime3.jsxs)(Page.Main, { "aria-busy": submitMutation.isLoading, children: [ (0, import_jsx_runtime3.jsx)(Page.Title, { children: formatMessage({ id: "Settings.PageTitle", defaultMessage: "Settings - {name}" }, { name: formatMessage({ id: getTrad("HeaderNav.link.emailTemplates"), defaultMessage: "Email templates" }) }) }), (0, import_jsx_runtime3.jsx)(Layouts.Header, { title: formatMessage({ id: getTrad("HeaderNav.link.emailTemplates"), defaultMessage: "Email templates" }) }), (0, import_jsx_runtime3.jsxs)(Layouts.Content, { children: [ (0, import_jsx_runtime3.jsx)(EmailTable, { onEditClick: handleEditClick, canUpdate }), (0, import_jsx_runtime3.jsx)(EmailForm, { template: data[templateToEdit], onToggle: handleToggle, open: isModalOpen, onSubmit: handleSubmit }) ] }) ] }); }; export { EmailTemplatesPage, ProtectedEmailTemplatesPage }; //# sourceMappingURL=EmailTemplates-3V4J4ZNO.js.map