@argusoft/medplat-core 1.0.32 → 1.0.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{AccessRights-DBjTQA1-.js → AccessRights-BC43Jhml.js} +264 -199
- package/dist/AccessRights-BC43Jhml.js.map +1 -0
- package/dist/{BrandsPage-CdcAvaml-ZtVTX6vX.js → BrandsPage-CdcAvaml-CYT80CMH.js} +3 -3
- package/dist/{BrandsPage-CdcAvaml-ZtVTX6vX.js.map → BrandsPage-CdcAvaml-CYT80CMH.js.map} +1 -1
- package/dist/{CategoriesPage-BprQEYJw-CclreTv1.js → CategoriesPage-BprQEYJw-BRAukJB1.js} +3 -3
- package/dist/{CategoriesPage-BprQEYJw-CclreTv1.js.map → CategoriesPage-BprQEYJw-BRAukJB1.js.map} +1 -1
- package/dist/ChangePasswordModalCore-rypTxA2O.js +238 -0
- package/dist/ChangePasswordModalCore-rypTxA2O.js.map +1 -0
- package/dist/{DashboardPage-CTiGSx71-CsYohJ5e.js → DashboardPage-CTiGSx71-DX-TzGOH.js} +3 -3
- package/dist/{DashboardPage-CTiGSx71-CsYohJ5e.js.map → DashboardPage-CTiGSx71-DX-TzGOH.js.map} +1 -1
- package/dist/{FacilityPicker-BXa2VF7i-Dab_Jwa5.js → FacilityPicker-BXa2VF7i-D0JUIqLv.js} +2 -2
- package/dist/{FacilityPicker-BXa2VF7i-Dab_Jwa5.js.map → FacilityPicker-BXa2VF7i-D0JUIqLv.js.map} +1 -1
- package/dist/FaqList-CeDEuhU_.js +237 -0
- package/dist/FaqList-CeDEuhU_.js.map +1 -0
- package/dist/FaqSkeletons-hLCEcRr-.js +19 -0
- package/dist/FaqSkeletons-hLCEcRr-.js.map +1 -0
- package/dist/FaqView-sDzBVyXV.js +617 -0
- package/dist/FaqView-sDzBVyXV.js.map +1 -0
- package/dist/{FeatureMenu-Kc73yPHH.js → FeatureMenu-CaI-ZhSZ.js} +2 -2
- package/dist/{FeatureMenu-Kc73yPHH.js.map → FeatureMenu-CaI-ZhSZ.js.map} +1 -1
- package/dist/{ImmunizationConfigurationBase-lKsJZMak.js → ImmunizationConfigurationBase-Clkk0-n6.js} +2352 -2332
- package/dist/{ImmunizationConfigurationBase-lKsJZMak.js.map → ImmunizationConfigurationBase-Clkk0-n6.js.map} +1 -1
- package/dist/{InventoryPage-JadYMCzU-CzJQfQ2A.js → InventoryPage-JadYMCzU-CWcCauMI.js} +4 -4
- package/dist/{InventoryPage-JadYMCzU-CzJQfQ2A.js.map → InventoryPage-JadYMCzU-CWcCauMI.js.map} +1 -1
- package/dist/ManageFaq-4cT6bntx.js +1583 -0
- package/dist/ManageFaq-4cT6bntx.js.map +1 -0
- package/dist/ManageFaq.css +1 -0
- package/dist/{ManageUser-Dm0l833u.js → ManageUser-DchUMAyC.js} +2 -2
- package/dist/{ManageUser-Dm0l833u.js.map → ManageUser-DchUMAyC.js.map} +1 -1
- package/dist/{MemberProfileCard-01d_jz3w-DYHtbgMX.js → MemberProfileCard-01d_jz3w-CQi_zu6x.js} +3 -3
- package/dist/{MemberProfileCard-01d_jz3w-DYHtbgMX.js.map → MemberProfileCard-01d_jz3w-CQi_zu6x.js.map} +1 -1
- package/dist/{PaymentCreatePage-D6NZBUC3-DxXf2kvH.js → PaymentCreatePage-D6NZBUC3-_98S21Sa.js} +4 -4
- package/dist/{PaymentCreatePage-D6NZBUC3-DxXf2kvH.js.map → PaymentCreatePage-D6NZBUC3-_98S21Sa.js.map} +1 -1
- package/dist/{PaymentsPage-CHieGNrn-BnYCtqHd.js → PaymentsPage-CHieGNrn-ChCXEyck.js} +3 -3
- package/dist/{PaymentsPage-CHieGNrn-BnYCtqHd.js.map → PaymentsPage-CHieGNrn-ChCXEyck.js.map} +1 -1
- package/dist/{PickupBatchLinesEditor-QPaqFtUO-CY7BShYh.js → PickupBatchLinesEditor-QPaqFtUO-BEtI5mIU.js} +2 -2
- package/dist/{PickupBatchLinesEditor-QPaqFtUO-CY7BShYh.js.map → PickupBatchLinesEditor-QPaqFtUO-BEtI5mIU.js.map} +1 -1
- package/dist/{PickupCreatePage-C7_67u_u-OId8-e2a.js → PickupCreatePage-C7_67u_u-DbDIZ1WC.js} +5 -5
- package/dist/{PickupCreatePage-C7_67u_u-OId8-e2a.js.map → PickupCreatePage-C7_67u_u-DbDIZ1WC.js.map} +1 -1
- package/dist/{PickupsPage-BWblMlic-CWkgeBw0.js → PickupsPage-BWblMlic-KehDMebm.js} +4 -4
- package/dist/{PickupsPage-BWblMlic-CWkgeBw0.js.map → PickupsPage-BWblMlic-KehDMebm.js.map} +1 -1
- package/dist/{PmGuard-BvUUbU80-BpYNaDzl.js → PmGuard-BvUUbU80-DJipZoSg.js} +2 -2
- package/dist/{PmGuard-BvUUbU80-BpYNaDzl.js.map → PmGuard-BvUUbU80-DJipZoSg.js.map} +1 -1
- package/dist/{ProductEditPage-Dbq4vUAA-BoBmTPPL.js → ProductEditPage-Dbq4vUAA-DusAdAvm.js} +4 -4
- package/dist/{ProductEditPage-Dbq4vUAA-BoBmTPPL.js.map → ProductEditPage-Dbq4vUAA-DusAdAvm.js.map} +1 -1
- package/dist/{ProductsPage-BI22nPb4-CQBjnc-n.js → ProductsPage-BI22nPb4-D3GnWz34.js} +4 -4
- package/dist/{ProductsPage-BI22nPb4-CQBjnc-n.js.map → ProductsPage-BI22nPb4-D3GnWz34.js.map} +1 -1
- package/dist/{PurchaseCreatePage-C0EK9z4w-BQMTsjE7.js → PurchaseCreatePage-C0EK9z4w-D4PlZsOH.js} +4 -4
- package/dist/{PurchaseCreatePage-C0EK9z4w-BQMTsjE7.js.map → PurchaseCreatePage-C0EK9z4w-D4PlZsOH.js.map} +1 -1
- package/dist/{PurchaseRequestDetailPage-DhBuOGHZ-CWZPqzt9.js → PurchaseRequestDetailPage-DhBuOGHZ-CAmlL4fP.js} +3 -3
- package/dist/{PurchaseRequestDetailPage-DhBuOGHZ-CWZPqzt9.js.map → PurchaseRequestDetailPage-DhBuOGHZ-CAmlL4fP.js.map} +1 -1
- package/dist/{PurchaseRequestsPage-Bj9HUMxb-B7-AxT8m.js → PurchaseRequestsPage-Bj9HUMxb-BCAhEEkL.js} +3 -3
- package/dist/{PurchaseRequestsPage-Bj9HUMxb-B7-AxT8m.js.map → PurchaseRequestsPage-Bj9HUMxb-BCAhEEkL.js.map} +1 -1
- package/dist/{PurchasesPage-Djl1AqD_-DXeYFMrX.js → PurchasesPage-Djl1AqD_-DxBRFRDy.js} +3 -3
- package/dist/{PurchasesPage-Djl1AqD_-DXeYFMrX.js.map → PurchasesPage-Djl1AqD_-DxBRFRDy.js.map} +1 -1
- package/dist/{SaleCreatePage-DHBLmlBr-BlgjVsq6.js → SaleCreatePage-DHBLmlBr-aEGmvJQq.js} +4 -4
- package/dist/{SaleCreatePage-DHBLmlBr-BlgjVsq6.js.map → SaleCreatePage-DHBLmlBr-aEGmvJQq.js.map} +1 -1
- package/dist/{SalesPage-eF9Yr42z-BQ9FlXC3.js → SalesPage-eF9Yr42z-CvOr82vo.js} +3 -3
- package/dist/{SalesPage-eF9Yr42z-BQ9FlXC3.js.map → SalesPage-eF9Yr42z-CvOr82vo.js.map} +1 -1
- package/dist/{SettingsPage-Cre-UE3r-9ntnLYsQ.js → SettingsPage-Cre-UE3r-CGTVp5Zw.js} +3 -3
- package/dist/{SettingsPage-Cre-UE3r-9ntnLYsQ.js.map → SettingsPage-Cre-UE3r-CGTVp5Zw.js.map} +1 -1
- package/dist/{StorageUnitsPage-CTEVuemZ-B4osG74N.js → StorageUnitsPage-CTEVuemZ-C7zkwKMz.js} +5 -5
- package/dist/{StorageUnitsPage-CTEVuemZ-B4osG74N.js.map → StorageUnitsPage-CTEVuemZ-C7zkwKMz.js.map} +1 -1
- package/dist/{SubMenu-OO2zhKiu.js → SubMenu-DZIhur09.js} +2 -2
- package/dist/{SubMenu-OO2zhKiu.js.map → SubMenu-DZIhur09.js.map} +1 -1
- package/dist/{TransactionsPage-Zuu7sjID-B-ACzvd1.js → TransactionsPage-Zuu7sjID-BDmUK7s1.js} +3 -3
- package/dist/{TransactionsPage-Zuu7sjID-B-ACzvd1.js.map → TransactionsPage-Zuu7sjID-BDmUK7s1.js.map} +1 -1
- package/dist/{TransferCreatePage-DlT0nCDj-B2SdPgYB.js → TransferCreatePage-DlT0nCDj-evHPJc99.js} +4 -4
- package/dist/{TransferCreatePage-DlT0nCDj-B2SdPgYB.js.map → TransferCreatePage-DlT0nCDj-evHPJc99.js.map} +1 -1
- package/dist/{TransfersPage-DqaSvHda-G2tFa5Jq.js → TransfersPage-DqaSvHda-DAUn5SSr.js} +3 -3
- package/dist/{TransfersPage-DqaSvHda-G2tFa5Jq.js.map → TransfersPage-DqaSvHda-DAUn5SSr.js.map} +1 -1
- package/dist/{VaccineEducation-T_UE57Ef.js → VaccineEducation-DWkNNasF.js} +2 -2
- package/dist/{VaccineEducation-T_UE57Ef.js.map → VaccineEducation-DWkNNasF.js.map} +1 -1
- package/dist/VaccineEducationConfigurator-BFCvu5Mw.js +1450 -0
- package/dist/VaccineEducationConfigurator-BFCvu5Mw.js.map +1 -0
- package/dist/VaccineEducationConfigurator.css +1 -4
- package/dist/{VaccineEducationList-Ok7_5EFb.js → VaccineEducationList-BxZHahCh.js} +2 -2
- package/dist/{VaccineEducationList-Ok7_5EFb.js.map → VaccineEducationList-BxZHahCh.js.map} +1 -1
- package/dist/{VialsPage-LoDaUqVv-DmMXbK8j.js → VialsPage-LoDaUqVv-Dw00Zc06.js} +4 -4
- package/dist/{VialsPage-LoDaUqVv-DmMXbK8j.js.map → VialsPage-LoDaUqVv-Dw00Zc06.js.map} +1 -1
- package/dist/{VaccineEducationConfigurator-CWc20_rv.js → ckeditor5-_x14lrzc.js} +4014 -5372
- package/dist/ckeditor5-_x14lrzc.js.map +1 -0
- package/dist/ckeditor5.css +4 -0
- package/dist/faqMedia-FDpje7v0.js +234 -0
- package/dist/faqMedia-FDpje7v0.js.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.js +1 -1
- package/dist/{index.lib-BySa9-Z-.js → index.lib-QDEODnRT.js} +343 -303
- package/dist/index.lib-QDEODnRT.js.map +1 -0
- package/dist/{listValueStore-5d4vNGQM-WclZ5nBG.js → listValueStore-5d4vNGQM-DB08drLf.js} +2 -2
- package/dist/{listValueStore-5d4vNGQM-WclZ5nBG.js.map → listValueStore-5d4vNGQM-DB08drLf.js.map} +1 -1
- package/dist/proxy-C4gcRXzG.js +5265 -0
- package/dist/proxy-C4gcRXzG.js.map +1 -0
- package/package.json +3 -2
- package/dist/AccessRights-DBjTQA1-.js.map +0 -1
- package/dist/ChangePasswordModalCore-DZGOkbRY.js +0 -5494
- package/dist/ChangePasswordModalCore-DZGOkbRY.js.map +0 -1
- package/dist/VaccineEducationConfigurator-CWc20_rv.js.map +0 -1
- package/dist/index.lib-BySa9-Z-.js.map +0 -1
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import { jsxs as x, jsx as n } from "react/jsx-runtime";
|
|
2
|
+
import { useState as d, useRef as F, useEffect as C, createElement as N } from "react";
|
|
3
|
+
import l from "prop-types";
|
|
4
|
+
import { Box as f, Tooltip as P, Button as v, IconButton as R, Popover as j, Autocomplete as B, TextField as z, Divider as V, Typography as k } from "@mui/material";
|
|
5
|
+
import { FontAwesomeIcon as b } from "@fortawesome/react-fontawesome";
|
|
6
|
+
import { faImage as D, faTrash as _, faUpload as G } from "@fortawesome/free-solid-svg-icons";
|
|
7
|
+
import L from "@/common/fontAwesomeIcons/FontAwesomeIcons";
|
|
8
|
+
import { FontAwesomeIconsNames as U } from "@/common/fontAwesomeIcons/FontAwesomeIconsNames";
|
|
9
|
+
import { showToast as S } from "@/common/toaster/toaster";
|
|
10
|
+
import { useTranslateProvider as J } from "@/common/languageTranslator/TranslationContext";
|
|
11
|
+
import { api as W } from "@/common/interceptors/AxiosInterceptor";
|
|
12
|
+
import { FormConfiguratorService as q } from "@/common/services/FormConfiguratorService";
|
|
13
|
+
const g = 100, I = (e) => (e || "").replace(/^fa/, "").replace(/([a-z])([A-Z])/g, "$1 $2");
|
|
14
|
+
function H({ value: e, onChange: o }) {
|
|
15
|
+
const { translate: i } = J(), [p, s] = d(null), [a, c] = d(""), [m, h] = d(g), O = F(null), y = !!p;
|
|
16
|
+
C(() => {
|
|
17
|
+
y && (c(""), h(g));
|
|
18
|
+
}, [y]);
|
|
19
|
+
const T = a ? U.filter(
|
|
20
|
+
(r) => I(r).toLowerCase().includes(a.toLowerCase())
|
|
21
|
+
) : U, M = (r) => {
|
|
22
|
+
var w;
|
|
23
|
+
const t = (w = r.target.files) == null ? void 0 : w[0];
|
|
24
|
+
if (r.target.value = "", !t) return;
|
|
25
|
+
if (!t.type.includes("svg") && !t.name.toLowerCase().endsWith(".svg")) {
|
|
26
|
+
S({ message: i("Only SVG files are allowed"), type: "error" });
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (t.size > 100 * 1024) {
|
|
30
|
+
S({ message: i("SVG must be under 100KB"), type: "error" });
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const u = new FileReader();
|
|
34
|
+
u.onload = (E) => {
|
|
35
|
+
o({ iconType: "svg", icon: E.target.result }), s(null);
|
|
36
|
+
}, u.readAsText(t);
|
|
37
|
+
};
|
|
38
|
+
return /* @__PURE__ */ x(f, { sx: { display: "flex", alignItems: "center", gap: 1 }, children: [
|
|
39
|
+
/* @__PURE__ */ n(P, { title: i("Choose an icon"), arrow: !0, children: /* @__PURE__ */ n(
|
|
40
|
+
v,
|
|
41
|
+
{
|
|
42
|
+
variant: "outlined",
|
|
43
|
+
color: "inherit",
|
|
44
|
+
onClick: (r) => s(r.currentTarget),
|
|
45
|
+
sx: {
|
|
46
|
+
textTransform: "none",
|
|
47
|
+
minWidth: 0,
|
|
48
|
+
width: 44,
|
|
49
|
+
height: 44,
|
|
50
|
+
p: 0,
|
|
51
|
+
borderRadius: 2,
|
|
52
|
+
borderStyle: e ? "solid" : "dashed"
|
|
53
|
+
},
|
|
54
|
+
"data-testid": "category-icon-trigger",
|
|
55
|
+
children: e ? /* @__PURE__ */ n(A, { value: e, size: "lg" }) : /* @__PURE__ */ n(b, { icon: D, opacity: 0.5 })
|
|
56
|
+
}
|
|
57
|
+
) }),
|
|
58
|
+
e && /* @__PURE__ */ n(
|
|
59
|
+
R,
|
|
60
|
+
{
|
|
61
|
+
size: "small",
|
|
62
|
+
"aria-label": i("Remove icon"),
|
|
63
|
+
onClick: () => o(null),
|
|
64
|
+
"data-testid": "category-icon-remove",
|
|
65
|
+
children: /* @__PURE__ */ n(b, { icon: _, size: "xs" })
|
|
66
|
+
}
|
|
67
|
+
),
|
|
68
|
+
/* @__PURE__ */ x(
|
|
69
|
+
j,
|
|
70
|
+
{
|
|
71
|
+
open: y,
|
|
72
|
+
anchorEl: p,
|
|
73
|
+
onClose: () => s(null),
|
|
74
|
+
anchorOrigin: { vertical: "bottom", horizontal: "left" },
|
|
75
|
+
slotProps: { paper: { sx: { p: 2, width: 300 } } },
|
|
76
|
+
children: [
|
|
77
|
+
/* @__PURE__ */ n(
|
|
78
|
+
B,
|
|
79
|
+
{
|
|
80
|
+
size: "small",
|
|
81
|
+
options: T.slice(0, m),
|
|
82
|
+
inputValue: a,
|
|
83
|
+
onInputChange: (r, t) => {
|
|
84
|
+
c(t), h(g);
|
|
85
|
+
},
|
|
86
|
+
onChange: (r, t) => {
|
|
87
|
+
t && (o({ iconType: "fontawesome", icon: t }), s(null));
|
|
88
|
+
},
|
|
89
|
+
value: null,
|
|
90
|
+
getOptionLabel: (r) => I(r),
|
|
91
|
+
slotProps: {
|
|
92
|
+
listbox: {
|
|
93
|
+
onScroll: (r) => {
|
|
94
|
+
const t = r.currentTarget;
|
|
95
|
+
t.scrollTop + t.clientHeight >= t.scrollHeight - 5 && h((u) => Math.min(u + g, T.length));
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
renderOption: (r, t) => /* @__PURE__ */ N(f, { component: "li", ...r, key: t, sx: { display: "flex", gap: 1.25 } }, /* @__PURE__ */ n(f, { sx: { width: 18, textAlign: "center", color: "primary.main" }, children: /* @__PURE__ */ n(L, { iconName: t }) }), /* @__PURE__ */ n("span", { children: I(t) })),
|
|
100
|
+
renderInput: (r) => /* @__PURE__ */ n(z, { ...r, autoFocus: !0, placeholder: i("Search icons…") })
|
|
101
|
+
}
|
|
102
|
+
),
|
|
103
|
+
/* @__PURE__ */ n(V, { sx: { my: 1.5 }, children: i("OR") }),
|
|
104
|
+
/* @__PURE__ */ x(
|
|
105
|
+
v,
|
|
106
|
+
{
|
|
107
|
+
variant: "outlined",
|
|
108
|
+
color: "inherit",
|
|
109
|
+
fullWidth: !0,
|
|
110
|
+
component: "label",
|
|
111
|
+
size: "small",
|
|
112
|
+
startIcon: /* @__PURE__ */ n(b, { icon: G, size: "xs" }),
|
|
113
|
+
sx: { textTransform: "none" },
|
|
114
|
+
children: [
|
|
115
|
+
i("Upload SVG"),
|
|
116
|
+
/* @__PURE__ */ n(
|
|
117
|
+
"input",
|
|
118
|
+
{
|
|
119
|
+
ref: O,
|
|
120
|
+
type: "file",
|
|
121
|
+
hidden: !0,
|
|
122
|
+
accept: ".svg,image/svg+xml",
|
|
123
|
+
onChange: M
|
|
124
|
+
}
|
|
125
|
+
)
|
|
126
|
+
]
|
|
127
|
+
}
|
|
128
|
+
),
|
|
129
|
+
/* @__PURE__ */ n(k, { variant: "caption", sx: { display: "block", mt: 0.75, color: "text.disabled" }, children: i("Up to 100KB.") })
|
|
130
|
+
]
|
|
131
|
+
}
|
|
132
|
+
)
|
|
133
|
+
] });
|
|
134
|
+
}
|
|
135
|
+
H.propTypes = {
|
|
136
|
+
value: l.shape({ iconType: l.oneOf(["fontawesome", "svg"]), icon: l.string }),
|
|
137
|
+
onChange: l.func.isRequired
|
|
138
|
+
};
|
|
139
|
+
function A({ value: e, size: o }) {
|
|
140
|
+
return e != null && e.icon ? e.iconType === "svg" ? /* @__PURE__ */ n(
|
|
141
|
+
f,
|
|
142
|
+
{
|
|
143
|
+
component: "span",
|
|
144
|
+
sx: {
|
|
145
|
+
display: "inline-flex",
|
|
146
|
+
width: o === "lg" ? 22 : 16,
|
|
147
|
+
height: o === "lg" ? 22 : 16,
|
|
148
|
+
color: "primary.main",
|
|
149
|
+
"& svg": { width: "100%", height: "100%" }
|
|
150
|
+
},
|
|
151
|
+
dangerouslySetInnerHTML: { __html: e.icon }
|
|
152
|
+
}
|
|
153
|
+
) : /* @__PURE__ */ n(f, { component: "span", sx: { color: "primary.main", display: "inline-flex" }, children: /* @__PURE__ */ n(L, { iconName: e.icon, size: o }) }) : null;
|
|
154
|
+
}
|
|
155
|
+
A.propTypes = {
|
|
156
|
+
value: l.shape({ iconType: l.oneOf(["fontawesome", "svg"]), icon: l.string }),
|
|
157
|
+
size: l.string
|
|
158
|
+
};
|
|
159
|
+
const ae = (e) => {
|
|
160
|
+
if (e && typeof e == "object") return e;
|
|
161
|
+
if (!e || typeof e != "string") return null;
|
|
162
|
+
try {
|
|
163
|
+
const o = JSON.parse(e);
|
|
164
|
+
return o && typeof o == "object" ? o : null;
|
|
165
|
+
} catch {
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
}, le = (e) => e ? JSON.stringify(e) : "", $ = "FAQ", ce = {
|
|
169
|
+
image: {
|
|
170
|
+
accept: ".jpg,.jpeg,.png,.webp,image/jpeg,image/png,image/webp",
|
|
171
|
+
extensions: /* @__PURE__ */ new Set(["jpg", "jpeg", "png", "webp"]),
|
|
172
|
+
allowedLabel: "JPG, PNG or WEBP",
|
|
173
|
+
maxFileMb: 5,
|
|
174
|
+
maxItems: 4
|
|
175
|
+
},
|
|
176
|
+
video: {
|
|
177
|
+
accept: ".mp4,.mov,.webm,video/mp4,video/quicktime,video/webm",
|
|
178
|
+
extensions: /* @__PURE__ */ new Set(["mp4", "mov", "webm"]),
|
|
179
|
+
allowedLabel: "MP4, MOV or WEBM",
|
|
180
|
+
maxFileMb: 25,
|
|
181
|
+
maxItems: 2
|
|
182
|
+
}
|
|
183
|
+
}, pe = (e) => (e.split(".").pop() || "").toLowerCase(), me = async (e, o) => {
|
|
184
|
+
const i = crypto.randomUUID(), p = new URLSearchParams({
|
|
185
|
+
moduleName: $,
|
|
186
|
+
documentUUID: i,
|
|
187
|
+
isTemporary: "false"
|
|
188
|
+
});
|
|
189
|
+
return await W.post(
|
|
190
|
+
`/document/uploaddocumentV2?${p.toString()}`,
|
|
191
|
+
{ fileToUpload: e },
|
|
192
|
+
{ type: "fileUpload", showLoader: !1 }
|
|
193
|
+
), { uuid: i, fileName: e.name, type: o };
|
|
194
|
+
}, de = (e) => {
|
|
195
|
+
const [o, i] = d(null), [p, s] = d(!!e);
|
|
196
|
+
return C(() => {
|
|
197
|
+
if (!e) {
|
|
198
|
+
i(null), s(!1);
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
let a = null, c = !1;
|
|
202
|
+
return s(!0), q.getFileByUUID(e).then((m) => {
|
|
203
|
+
c || !((m == null ? void 0 : m.data) instanceof Blob) || (a = URL.createObjectURL(m.data), i(a));
|
|
204
|
+
}).catch(() => {
|
|
205
|
+
c || i(null);
|
|
206
|
+
}).finally(() => {
|
|
207
|
+
c || s(!1);
|
|
208
|
+
}), () => {
|
|
209
|
+
c = !0, a && URL.revokeObjectURL(a);
|
|
210
|
+
};
|
|
211
|
+
}, [e]), { dataUrl: o, isLoading: p };
|
|
212
|
+
}, fe = (e) => {
|
|
213
|
+
if (Array.isArray(e)) return e;
|
|
214
|
+
if (!e || typeof e != "string") return [];
|
|
215
|
+
try {
|
|
216
|
+
const o = JSON.parse(e);
|
|
217
|
+
return Array.isArray(o) ? o : [];
|
|
218
|
+
} catch {
|
|
219
|
+
return [];
|
|
220
|
+
}
|
|
221
|
+
}, ue = (e) => JSON.stringify(e || []);
|
|
222
|
+
export {
|
|
223
|
+
A as C,
|
|
224
|
+
ce as M,
|
|
225
|
+
H as a,
|
|
226
|
+
de as b,
|
|
227
|
+
ue as c,
|
|
228
|
+
fe as d,
|
|
229
|
+
pe as g,
|
|
230
|
+
ae as p,
|
|
231
|
+
le as s,
|
|
232
|
+
me as u
|
|
233
|
+
};
|
|
234
|
+
//# sourceMappingURL=faqMedia-FDpje7v0.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faqMedia-FDpje7v0.js","sources":["../src/views/Faq/components/CategoryIconPicker.jsx","../src/views/Faq/utils/categoryIcon.js","../src/views/Faq/utils/faqMedia.js"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport {\n Autocomplete,\n Box,\n Button,\n Divider,\n IconButton,\n Popover,\n TextField,\n Tooltip,\n Typography,\n} from \"@mui/material\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faImage, faTrash, faUpload } from \"@fortawesome/free-solid-svg-icons\";\nimport FontAwesomeIcons from \"@/common/fontAwesomeIcons/FontAwesomeIcons\";\nimport { FontAwesomeIconsNames } from \"@/common/fontAwesomeIcons/FontAwesomeIconsNames\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\n\nconst PAGE_SIZE = 100;\n\nconst formatIconName = (name) => (name || \"\").replace(/^fa/, \"\").replace(/([a-z])([A-Z])/g, \"$1 $2\");\n\nexport default function CategoryIconPicker({ value, onChange }) {\n const { translate } = useTranslateProvider();\n const [anchorEl, setAnchorEl] = useState(null);\n const [inputValue, setInputValue] = useState(\"\");\n const [visibleCount, setVisibleCount] = useState(PAGE_SIZE);\n const fileInputRef = useRef(null);\n\n const open = Boolean(anchorEl);\n\n useEffect(() => {\n if (open) {\n setInputValue(\"\");\n setVisibleCount(PAGE_SIZE);\n }\n }, [open]);\n\n const filteredNames = inputValue\n ? FontAwesomeIconsNames.filter((name) =>\n formatIconName(name).toLowerCase().includes(inputValue.toLowerCase())\n )\n : FontAwesomeIconsNames;\n\n const handleSvgUpload = (event) => {\n const file = event.target.files?.[0];\n event.target.value = \"\";\n if (!file) return;\n\n if (!file.type.includes(\"svg\") && !file.name.toLowerCase().endsWith(\".svg\")) {\n showToast({ message: translate(\"Only SVG files are allowed\"), type: \"error\" });\n return;\n }\n if (file.size > 100 * 1024) {\n showToast({ message: translate(\"SVG must be under 100KB\"), type: \"error\" });\n return;\n }\n\n const reader = new FileReader();\n reader.onload = (event2) => {\n onChange({ iconType: \"svg\", icon: event2.target.result });\n setAnchorEl(null);\n };\n reader.readAsText(file);\n };\n\n return (\n <Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1 }}>\n <Tooltip title={translate(\"Choose an icon\")} arrow>\n <Button\n variant=\"outlined\"\n color=\"inherit\"\n onClick={(event) => setAnchorEl(event.currentTarget)}\n sx={{\n textTransform: \"none\",\n minWidth: 0,\n width: 44,\n height: 44,\n p: 0,\n borderRadius: 2,\n borderStyle: value ? \"solid\" : \"dashed\",\n }}\n data-testid=\"category-icon-trigger\"\n >\n {value ? (\n <CategoryIcon value={value} size=\"lg\" />\n ) : (\n <FontAwesomeIcon icon={faImage} opacity={0.5} />\n )}\n </Button>\n </Tooltip>\n\n {value && (\n <IconButton\n size=\"small\"\n aria-label={translate(\"Remove icon\")}\n onClick={() => onChange(null)}\n data-testid=\"category-icon-remove\"\n >\n <FontAwesomeIcon icon={faTrash} size=\"xs\" />\n </IconButton>\n )}\n\n <Popover\n open={open}\n anchorEl={anchorEl}\n onClose={() => setAnchorEl(null)}\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"left\" }}\n slotProps={{ paper: { sx: { p: 2, width: 300 } } }}\n >\n <Autocomplete\n size=\"small\"\n options={filteredNames.slice(0, visibleCount)}\n inputValue={inputValue}\n onInputChange={(_, next) => {\n setInputValue(next);\n setVisibleCount(PAGE_SIZE);\n }}\n onChange={(_, name) => {\n if (name) {\n onChange({ iconType: \"fontawesome\", icon: name });\n setAnchorEl(null);\n }\n }}\n value={null}\n getOptionLabel={(name) => formatIconName(name)}\n slotProps={{\n listbox: {\n onScroll: (event) => {\n const el = event.currentTarget;\n if (el.scrollTop + el.clientHeight >= el.scrollHeight - 5) {\n setVisibleCount((count) => Math.min(count + PAGE_SIZE, filteredNames.length));\n }\n },\n },\n }}\n renderOption={(props, name) => (\n <Box component=\"li\" {...props} key={name} sx={{ display: \"flex\", gap: 1.25 }}>\n <Box sx={{ width: 18, textAlign: \"center\", color: \"primary.main\" }}>\n <FontAwesomeIcons iconName={name} />\n </Box>\n <span>{formatIconName(name)}</span>\n </Box>\n )}\n renderInput={(params) => (\n <TextField {...params} autoFocus placeholder={translate(\"Search icons…\")} />\n )}\n />\n\n <Divider sx={{ my: 1.5 }}>{translate(\"OR\")}</Divider>\n\n <Button\n variant=\"outlined\"\n color=\"inherit\"\n fullWidth\n component=\"label\"\n size=\"small\"\n startIcon={<FontAwesomeIcon icon={faUpload} size=\"xs\" />}\n sx={{ textTransform: \"none\" }}\n >\n {translate(\"Upload SVG\")}\n <input\n ref={fileInputRef}\n type=\"file\"\n hidden\n accept=\".svg,image/svg+xml\"\n onChange={handleSvgUpload}\n />\n </Button>\n <Typography variant=\"caption\" sx={{ display: \"block\", mt: 0.75, color: \"text.disabled\" }}>\n {translate(\"Up to 100KB.\")}\n </Typography>\n </Popover>\n </Box>\n );\n}\n\nCategoryIconPicker.propTypes = {\n value: PropTypes.shape({ iconType: PropTypes.oneOf([\"fontawesome\", \"svg\"]), icon: PropTypes.string }),\n onChange: PropTypes.func.isRequired,\n};\n\nexport function CategoryIcon({ value, size }) {\n if (!value?.icon) return null;\n\n if (value.iconType === \"svg\") {\n return (\n <Box\n component=\"span\"\n sx={{\n display: \"inline-flex\",\n width: size === \"lg\" ? 22 : 16,\n height: size === \"lg\" ? 22 : 16,\n color: \"primary.main\",\n \"& svg\": { width: \"100%\", height: \"100%\" },\n }}\n dangerouslySetInnerHTML={{ __html: value.icon }}\n />\n );\n }\n\n return (\n <Box component=\"span\" sx={{ color: \"primary.main\", display: \"inline-flex\" }}>\n <FontAwesomeIcons iconName={value.icon} size={size} />\n </Box>\n );\n}\n\nCategoryIcon.propTypes = {\n value: PropTypes.shape({ iconType: PropTypes.oneOf([\"fontawesome\", \"svg\"]), icon: PropTypes.string }),\n size: PropTypes.string,\n};\n","export const parseCategoryIcon = (raw) => {\n if (raw && typeof raw === \"object\") return raw;\n if (!raw || typeof raw !== \"string\") return null;\n try {\n const parsed = JSON.parse(raw);\n return parsed && typeof parsed === \"object\" ? parsed : null;\n } catch {\n return null;\n }\n};\n\nexport const serializeCategoryIcon = (value) => (value ? JSON.stringify(value) : \"\");\n","import { useEffect, useState } from \"react\";\nimport { api } from \"@/common/interceptors/AxiosInterceptor\";\nimport { FormConfiguratorService } from \"@/common/services/FormConfiguratorService\";\n\nconst MODULE_NAME = \"FAQ\";\n\nexport const MEDIA_TYPES = {\n image: {\n accept: \".jpg,.jpeg,.png,.webp,image/jpeg,image/png,image/webp\",\n extensions: new Set([\"jpg\", \"jpeg\", \"png\", \"webp\"]),\n allowedLabel: \"JPG, PNG or WEBP\",\n maxFileMb: 5,\n maxItems: 4,\n },\n video: {\n accept: \".mp4,.mov,.webm,video/mp4,video/quicktime,video/webm\",\n extensions: new Set([\"mp4\", \"mov\", \"webm\"]),\n allowedLabel: \"MP4, MOV or WEBM\",\n maxFileMb: 25,\n maxItems: 2,\n },\n};\n\nexport const getExtension = (fileName) => (fileName.split(\".\").pop() || \"\").toLowerCase();\n\nexport const uploadFaqMedia = async (file, mediaType) => {\n const documentUUID = crypto.randomUUID();\n const params = new URLSearchParams({\n moduleName: MODULE_NAME,\n documentUUID,\n isTemporary: \"false\",\n });\n await api.post(\n `/document/uploaddocumentV2?${params.toString()}`,\n { fileToUpload: file },\n { type: \"fileUpload\", showLoader: false },\n );\n return { uuid: documentUUID, fileName: file.name, type: mediaType };\n};\n\nexport const useResolvedFile = (uuid) => {\n const [dataUrl, setDataUrl] = useState(null);\n const [isLoading, setIsLoading] = useState(Boolean(uuid));\n\n useEffect(() => {\n if (!uuid) {\n setDataUrl(null);\n setIsLoading(false);\n return undefined;\n }\n\n let objectUrl = null;\n let cancelled = false;\n setIsLoading(true);\n\n FormConfiguratorService.getFileByUUID(uuid)\n .then((res) => {\n if (cancelled || !(res?.data instanceof Blob)) return;\n objectUrl = URL.createObjectURL(res.data);\n setDataUrl(objectUrl);\n })\n .catch(() => {\n if (!cancelled) setDataUrl(null);\n })\n .finally(() => {\n if (!cancelled) setIsLoading(false);\n });\n\n return () => {\n cancelled = true;\n if (objectUrl) URL.revokeObjectURL(objectUrl);\n };\n }, [uuid]);\n\n return { dataUrl, isLoading };\n};\n\nexport const parseMedia = (raw) => {\n if (Array.isArray(raw)) return raw;\n if (!raw || typeof raw !== \"string\") return [];\n try {\n const parsed = JSON.parse(raw);\n return Array.isArray(parsed) ? parsed : [];\n } catch {\n return [];\n }\n};\n\nexport const serializeMedia = (items) => JSON.stringify(items || []);\n"],"names":["PAGE_SIZE","formatIconName","name","CategoryIconPicker","value","onChange","translate","useTranslateProvider","anchorEl","setAnchorEl","useState","inputValue","setInputValue","visibleCount","setVisibleCount","fileInputRef","useRef","open","useEffect","filteredNames","FontAwesomeIconsNames","handleSvgUpload","event","file","_a","showToast","reader","event2","jsxs","Box","jsx","Tooltip","Button","CategoryIcon","FontAwesomeIcon","faImage","IconButton","faTrash","Popover","Autocomplete","_","next","el","count","props","createElement","FontAwesomeIcons","params","TextField","Divider","faUpload","Typography","PropTypes","size","parseCategoryIcon","raw","parsed","serializeCategoryIcon","MODULE_NAME","MEDIA_TYPES","getExtension","fileName","uploadFaqMedia","mediaType","documentUUID","api","useResolvedFile","uuid","dataUrl","setDataUrl","isLoading","setIsLoading","objectUrl","cancelled","FormConfiguratorService","res","parseMedia","serializeMedia","items"],"mappings":"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"}
|