@materialui-reactjs/admin 1.0.6 → 2.0.1
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/CHANGELOG.md +322 -0
- package/LICENSE +21 -0
- package/README.md +587 -453
- package/dist/Common-DFahMuQE.cjs +11 -0
- package/dist/Common-_PK8HLKN.js +267 -0
- package/dist/Env-DoS-iQjs.cjs +1 -0
- package/dist/Env-SHztUA3s.js +16 -0
- package/dist/HeaderUpdate-Dirxjmxs.cjs +1 -0
- package/dist/{chunks/HeaderUpdate-DuS-gHNR.js → HeaderUpdate-drlnuHI8.js} +28 -25
- package/dist/SortableItem-C3KzO8Xh.cjs +1 -0
- package/dist/SpinnerLoader-BujLjvC3.cjs +1 -0
- package/dist/{chunks/SpinnerLoader-h8RDIarB.js → SpinnerLoader-CyhOQC6d.js} +2 -2
- package/dist/UDragFile-D8wOZ1Ut.js +96 -0
- package/dist/UDragFile-Db0sK4M7.cjs +1 -0
- package/dist/{chunks/Validator-CXYkI7vJ.js → Validator-D2zwZeov.js} +83 -52
- package/dist/Validator-DBxl8wtE.cjs +1 -0
- package/dist/assets/css/form.css +1 -1
- package/dist/assets/css/index.css +1 -1
- package/dist/ckeditor/ckeditor.d.ts +3 -0
- package/dist/ckeditor/plugins/elfinder.d.ts +11 -0
- package/dist/ckeditor/plugins/fullscreen.d.ts +15 -0
- package/dist/ckeditor/plugins/pdffinder.d.ts +18 -0
- package/dist/ckeditor/types.d.ts +37 -0
- package/dist/common-CEZp8xpQ.js +30 -0
- package/dist/common-ivDX6gGq.cjs +1 -0
- package/dist/components/echarts/index.cjs +1 -0
- package/dist/components/echarts/index.js +1 -1
- package/dist/components/form/AdvancedMultiSelect.d.ts +6 -3
- package/dist/components/form/AsxhUImages.d.ts +2 -1
- package/dist/components/form/BoxAddRow.d.ts +13 -2
- package/dist/components/form/CheckTreeBox.d.ts +12 -3
- package/dist/components/form/CusForm.d.ts +19 -6
- package/dist/components/form/DateInput.d.ts +2 -1
- package/dist/components/form/Editor.d.ts +2 -1
- package/dist/components/form/EfFile.d.ts +2 -1
- package/dist/components/form/EfImage.d.ts +2 -1
- package/dist/components/form/EfImages.d.ts +2 -1
- package/dist/components/form/PImage.d.ts +2 -1
- package/dist/components/form/SelectAddRowBox.d.ts +9 -5
- package/dist/components/form/SelectAddRowBoxAdvanced.d.ts +13 -4
- package/dist/components/form/SelectBox.d.ts +20 -7
- package/dist/components/form/UDragFile.d.ts +2 -1
- package/dist/components/form/UFile.d.ts +2 -1
- package/dist/components/form/UFiles.d.ts +9 -2
- package/dist/components/form/UImages.d.ts +2 -1
- package/dist/components/form/index.cjs +1 -0
- package/dist/components/form/index.js +2 -2
- package/dist/components/loader/SpinnerLoader.d.ts +5 -1
- package/dist/components/loader/index.cjs +1 -0
- package/dist/components/loader/index.js +1 -2
- package/dist/components/meta/CardTable.d.ts +11 -5
- package/dist/components/meta/CardTable.types.d.ts +57 -0
- package/dist/components/meta/CusTooltip.d.ts +8 -2
- package/dist/components/meta/Head.d.ts +10 -1
- package/dist/components/meta/HeaderDetail.d.ts +2 -1
- package/dist/components/meta/HeaderUpdate.d.ts +5 -1
- package/dist/components/meta/ModalForm.d.ts +41 -11
- package/dist/components/meta/Navtabs.d.ts +1 -1
- package/dist/components/meta/ScrollTable.d.ts +7 -3
- package/dist/components/meta/SearchBox.d.ts +8 -5
- package/dist/components/meta/SortableItem.d.ts +11 -1
- package/dist/components/meta/index.cjs +1 -0
- package/dist/components/meta/index.d.ts +1 -0
- package/dist/components/meta/index.js +3 -3
- package/dist/components/sidebar/Sidebar.types.d.ts +9 -7
- package/dist/components/sidebar/index.cjs +1 -0
- package/dist/components/sidebar/index.js +1 -1
- package/dist/components/single/Detail.d.ts +8 -3
- package/dist/components/single/Fields.d.ts +10 -4
- package/dist/components/single/Import.d.ts +8 -3
- package/dist/components/single/List.d.ts +33 -7
- package/dist/components/single/Update.d.ts +10 -4
- package/dist/components/single/UpdateDetail.d.ts +3 -2
- package/dist/components/single/UpdateTableDetail.d.ts +4 -3
- package/dist/components/single/index.cjs +1 -0
- package/dist/components/single/index.js +1 -1
- package/dist/components/top-navbar/index.cjs +1 -0
- package/dist/components/top-navbar/index.js +78 -2
- package/dist/echarts-Bi3uwLbg.cjs +1 -0
- package/dist/{chunks/echarts-CRmndsxC.js → echarts-CTzMqeR5.js} +4 -4
- package/dist/form-heyswTRq.js +3897 -0
- package/dist/form-sgtop6li.cjs +49 -0
- package/dist/hook/common.d.ts +87 -0
- package/dist/hook/detail.cjs +1 -0
- package/dist/hook/detail.d.ts +9 -15
- package/dist/hook/detail.js +1 -11
- package/dist/hook/fields.cjs +1 -0
- package/dist/hook/fields.d.ts +6 -14
- package/dist/hook/fields.js +1 -11
- package/dist/hook/import.d.ts +6 -11
- package/dist/hook/index.cjs +1 -0
- package/dist/hook/index.d.ts +29 -20
- package/dist/hook/index.js +14 -11
- package/dist/hook/update.cjs +1 -0
- package/dist/hook/update.d.ts +11 -19
- package/dist/hook/update.js +12 -9
- package/dist/index.cjs +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.js +14 -11
- package/dist/meta-BANk9kHW.cjs +1 -0
- package/dist/meta-CheDAmMh.js +745 -0
- package/dist/rolldown-runtime-BocRIvOZ.cjs +1 -0
- package/dist/sidebar-CfQAYWi-.cjs +1 -0
- package/dist/{chunks/sidebar-Dj4Xr9du.js → sidebar-CzRmfvhi.js} +10 -13
- package/dist/{chunks/single-CRF61o_U.js → single-BsJ7TYJi.js} +364 -282
- package/dist/single-C2WPEjhk.cjs +1 -0
- package/dist/style.cjs +0 -0
- package/dist/style.d.ts +0 -0
- package/dist/style.js +0 -0
- package/dist/types/Menu.d.ts +25 -0
- package/dist/utils/Common.d.ts +224 -43
- package/dist/utils/CusRoute.d.ts +21 -1
- package/dist/utils/Env.d.ts +23 -2
- package/dist/utils/Group.d.ts +12 -1
- package/dist/utils/Validator.d.ts +34 -12
- package/dist/utils/index.cjs +11 -0
- package/dist/utils/index.d.ts +2 -1
- package/dist/utils/index.js +212 -171
- package/package.json +190 -163
- package/dist/chunks/Common-BURf0rBN.js +0 -222
- package/dist/chunks/Env-DRXhvUcb.js +0 -16
- package/dist/chunks/UDragFile-BnUR3riq.js +0 -92
- package/dist/chunks/form-CPkpL5eA.js +0 -45889
- package/dist/chunks/loader-BUiOnhOH.js +0 -1
- package/dist/chunks/meta-4qPWijBT.js +0 -758
- package/dist/chunks/top-navbar-Bob0gMUh.js +0 -78
- package/scripts/postinstall.cjs +0 -80
- /package/dist/{chunks/SortableItem-B4-Zsso3.js → SortableItem-B4-Zsso3.js} +0 -0
- /package/dist/{components/meta/Pdfviewer.d.ts → hook/import.cjs} +0 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const e=require("./rolldown-runtime-BocRIvOZ.cjs"),t=require("./Env-DoS-iQjs.cjs");let n=require("sweetalert2");n=e.t(n,1);let r=require("sweetalert2-react-content");r=e.t(r,1);let i=require("bootstrap");require("date-fns");let a=require("decimal.js");a=e.t(a,1),t.n();var o=e=>t.t()[e]??``,s=(e,t=!0)=>{let n=typeof e==`string`?document.querySelector(e):e;if(n){if(t)n.querySelector(`.boxSpinner`)||n.insertAdjacentHTML(`afterbegin`,`<div class="boxSpinner rounded">
|
|
2
|
+
<div class="spinner">
|
|
3
|
+
<div class="rect1"></div>
|
|
4
|
+
<div class="rect2"></div>
|
|
5
|
+
<div class="rect3"></div>
|
|
6
|
+
<div class="rect4"></div>
|
|
7
|
+
<div class="rect5"></div>
|
|
8
|
+
<div class="rect6"></div>
|
|
9
|
+
<div class="rect7"></div>
|
|
10
|
+
</div>
|
|
11
|
+
</div>`);else{let e=n.querySelector(`.boxSpinner`);e&&e.remove()}}},c=e=>{let t=new FormData;return Object.entries(e).forEach(([e,n])=>{if(n!=null){if(n instanceof FileList){Array.from(n).forEach(n=>t.append(e,n));return}if(n instanceof File){t.append(e,n);return}if(Array.isArray(n)&&n.every(e=>e instanceof File)){n.forEach(n=>t.append(e,n));return}if(Array.isArray(n)&&n.every(e=>[`string`,`number`,`boolean`].includes(typeof e))){n.forEach(n=>t.append(e,n.toString()));return}if(typeof n==`object`){t.append(e,JSON.stringify(n));return}n!=null&&typeof n!=`function`&&typeof n!=`object`&&t.append(e,String(n))}}),t},l=class extends Error{errorCode;constructor(e,t){super(e),this.name=`ApiError`,this.errorCode=t}};async function u(e,t={},n=`POST`,r=`application/json`,i=!0){let a={"Secret-Key":o(`SECRET_KEY`)};r!==`multipart/form-data`&&(a[`Content-Type`]=r);let s={method:n,headers:a,credentials:`include`};if(n==`POST`&&(s.body=r===`multipart/form-data`?c(t):JSON.stringify(t)),n===`GET`&&Object.keys(t).length>0){let n=new URLSearchParams;Object.entries(t).forEach(([e,t])=>{Array.isArray(t)?t.forEach(t=>n.append(e,String(t))):n.append(e,String(t))});let r=n.toString();e+=(e.includes(`?`)?`&`:`?`)+r}let u=await(await fetch(e,s)).text(),d=null;if(u)try{d=JSON.parse(u)}catch{d=u}if(d&&typeof d!=`string`&&d.status==200)return d;if(d&&typeof d!=`string`&&d.msg&&i)throw new l(d.msg,d.errorCode??`unknown`);if(i)throw Error(`invalid_response`);return!1}var d=(e=`Bạn có chắc muốn thực hiện thao tác này ?`,t=`Đồng ý`)=>(0,r.default)(n.default).fire({title:`Xác nhận`,text:e,icon:`warning`,showCancelButton:!0,confirmButtonColor:`#4CAF50`,cancelButtonColor:`#F44336`,confirmButtonText:t,cancelButtonText:`Hủy`,position:`top`}),f=(e,t=`top`,i=!1)=>{(0,r.default)(n.default).fire({toast:i,icon:`success`,position:t,title:e,showConfirmButton:!1,timer:1500})},p=e=>{(0,r.default)(n.default).fire({icon:`error`,position:`top`,title:e,showConfirmButton:!1})},m=e=>{if(!e)return null;let t=new Date(e);return isNaN(t.getTime())?null:{dd:String(t.getDate()).padStart(2,`0`),MM:String(t.getMonth()+1).padStart(2,`0`),yyyy:t.getFullYear(),hh:String(t.getHours()).padStart(2,`0`),mm:String(t.getMinutes()).padStart(2,`0`),ss:String(t.getSeconds()).padStart(2,`0`)}},h=e=>{let t=m(e);return t?`${t.dd}/${t.MM}/${t.yyyy}`:e?`Invalid Date`:``},g=e=>{let t=new URLSearchParams;return Object.entries(e).forEach(([e,n])=>{Array.isArray(n)?n.forEach(n=>{n!=null&&t.append(e,String(n))}):n!=null&&t.set(e,String(n))}),t.toString()},_=(e=typeof window<`u`?window.location.pathname:``,t=/\/(?:edit|detail|update)\/(\d+)(?=\/|$)/i)=>{let n=new RegExp(t.source,t.flags.includes(`g`)?t.flags:t.flags+`g`),r=null,i;for(;(i=n.exec(e))!==null;)r=i;if(!r)return null;let a=Number(r[1]);return Number.isFinite(a)?a:null},v=(e,t=`/styles/default.jpg`)=>e?o(`STATIC_URL`)+(`/`+e).replaceAll(`//`,`/`):t,y=e=>e?o(`STATIC_URL`)+(`/`+e).replaceAll(`//`,`/`):``,b=(e,t=`/styles/default.jpg`)=>e?o(`API_URL`)+(`/`+e).replaceAll(`//`,`/`):t,x=(e,t=`/styles/default.jpg`)=>e?o(`UPLOADS_URL`)+`/`+e:t;function S(e){let t=``;for(let n=0;n<e;n++){let e=Math.floor(Math.random()*62);t+=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789`[e]}return t}var C=/\.(jpg|jpeg|png|jfif|doc|docx|xls|xlsx|pdf)$/i,w=(e,t)=>{if(!e)return t;let n=e.split(`,`).map(e=>{let t=e.trim();return(t.includes(`/`)?t.slice(t.indexOf(`/`)+1):t).replace(/^\./,``)}).filter(Boolean);if(n.length===0)return t;let r=n.map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`));return RegExp(`\\.(${r.join(`|`)})$`,`i`)},T=(e,t=20,n=C)=>new Promise((r,i)=>{let a=Array.from(e??[]);if(a.length===0)return i(Error(`Tập tin không tồn tại`));for(let e of a){if(!n.test(e.name))return p(`Tập tin không hợp lệ`),i(Error(`Tập tin không hợp lệ`));if(e.size>t*1024*1024)return p(`Tập tin tải lên không quá ${t}M`),i(Error(`Tập tin tải lên không quá ${t}M`))}r()}),E={"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`},D=e=>String(e??``).replace(/[&<>"']/g,e=>E[e]),O=new Set([`danger`,`success`,`warning`,`info`,`primary`,`secondary`,`light`,`dark`]),k=(e=``,t=`danger`,n={})=>{let r=O.has(t)?t:`danger`,i=e=>n.raw?e:D(e);return typeof e==`string`?e.trim()===``?``:`<div class="alert alert-${r}">${i(e)}</div>`:!e||typeof e!=`object`?``:Object.values(e).filter(e=>e!=null&&String(e).trim()!==``).map(e=>`<div class="alert alert-${r}">${i(String(e))}</div>`).join(``)},A=(e,t={})=>new Promise((n,r)=>{try{let r=window.jQuery,i=r(e);if(!i.length)throw Error(`invalid_elfinder`);let a={url:o(`API_URL`)+`/elfinder/connector`,height:500,resizable:!0,baseUrl:`/assets/plugins/elFinder/`,defaultView:`list`,useBrowserHistory:!1,getFileCallback:e=>{n(e)}};i.elfinder(`destroy`).elfinder({...a,...t})}catch(e){r(e)}}),j=e=>{if(e instanceof Error)return e.message;if(typeof e==`string`)return e;try{return JSON.stringify(e)??String(e)}catch{return String(e)}},M=e=>new Promise((t,n)=>{try{let n=typeof e==`string`?document.querySelector(e):e;if(!n)throw Error(`invalid_modalEl_btnEl`);n.querySelectorAll(`.btn-md-close`)?.forEach(e=>{e?.addEventListener(`click`,()=>{r.hide()})});let r=i.Modal.getOrCreateInstance(n,{backdrop:`static`,keyboard:!1});t({md:r,modalEl:n})}catch(e){console.log(e),n(e)}}),N=(e,t,n=!1,r=!1)=>{if(!e)throw Error(`invalid_btnEl`);e.addEventListener(`click`,i=>{i.preventDefault(),M(t).then(({modalEl:t,md:i})=>{A(`#elfinderStatic`).then(t=>{n&&n({data:t,btnEl:e,md:i})}),t.addEventListener(`hidden.bs.modal`,()=>{r&&r()}),i.show()})})},P=(e,t,n=!1,r=!1)=>{if(!e)throw Error(`invalid_btnEl`);e.addEventListener(`click`,i=>{i.preventDefault(),M(t).then(({modalEl:t,md:i})=>{A(`#elfinderStatic`,{url:o(`API_URL`)+`/elfinder/connectorFiles`}).then(t=>{n&&n({data:t,btnEl:e,md:i})}),t.addEventListener(`hidden.bs.modal`,()=>{r&&r()}),i.show()})})},F=(e=!1)=>{let t=[{id:1,name:`Tiếng Việt`}];return e===!1?t:t.find(t=>t.id===e)?.name||``};Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return k}});
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
import { n as e, t } from "./Env-SHztUA3s.js";
|
|
2
|
+
import n from "sweetalert2";
|
|
3
|
+
import r from "sweetalert2-react-content";
|
|
4
|
+
import { Modal as i } from "bootstrap";
|
|
5
|
+
import "date-fns";
|
|
6
|
+
import "decimal.js";
|
|
7
|
+
//#region src/utils/Common.ts
|
|
8
|
+
e();
|
|
9
|
+
var a = (e) => t()[e] ?? "", o = (e, t = !0) => {
|
|
10
|
+
let n = typeof e == "string" ? document.querySelector(e) : e;
|
|
11
|
+
if (n) {
|
|
12
|
+
if (t) n.querySelector(".boxSpinner") || n.insertAdjacentHTML("afterbegin", "<div class=\"boxSpinner rounded\">\n <div class=\"spinner\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n <div class=\"rect6\"></div>\n <div class=\"rect7\"></div>\n </div>\n </div>");
|
|
13
|
+
else {
|
|
14
|
+
let e = n.querySelector(".boxSpinner");
|
|
15
|
+
e && e.remove();
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}, s = (e) => {
|
|
19
|
+
let t = new FormData();
|
|
20
|
+
return Object.entries(e).forEach(([e, n]) => {
|
|
21
|
+
if (n != null) {
|
|
22
|
+
if (n instanceof FileList) {
|
|
23
|
+
Array.from(n).forEach((n) => t.append(e, n));
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (n instanceof File) {
|
|
27
|
+
t.append(e, n);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if (Array.isArray(n) && n.every((e) => e instanceof File)) {
|
|
31
|
+
n.forEach((n) => t.append(e, n));
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (Array.isArray(n) && n.every((e) => [
|
|
35
|
+
"string",
|
|
36
|
+
"number",
|
|
37
|
+
"boolean"
|
|
38
|
+
].includes(typeof e))) {
|
|
39
|
+
n.forEach((n) => t.append(e, n.toString()));
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (typeof n == "object") {
|
|
43
|
+
t.append(e, JSON.stringify(n));
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
n != null && typeof n != "function" && typeof n != "object" && t.append(e, String(n));
|
|
47
|
+
}
|
|
48
|
+
}), t;
|
|
49
|
+
}, c = class extends Error {
|
|
50
|
+
errorCode;
|
|
51
|
+
constructor(e, t) {
|
|
52
|
+
super(e), this.name = "ApiError", this.errorCode = t;
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
async function l(e, t = {}, n = "POST", r = "application/json", i = !0) {
|
|
56
|
+
let o = { "Secret-Key": a("SECRET_KEY") };
|
|
57
|
+
r !== "multipart/form-data" && (o["Content-Type"] = r);
|
|
58
|
+
let l = {
|
|
59
|
+
method: n,
|
|
60
|
+
headers: o,
|
|
61
|
+
credentials: "include"
|
|
62
|
+
};
|
|
63
|
+
if (n == "POST" && (l.body = r === "multipart/form-data" ? s(t) : JSON.stringify(t)), n === "GET" && Object.keys(t).length > 0) {
|
|
64
|
+
let n = new URLSearchParams();
|
|
65
|
+
Object.entries(t).forEach(([e, t]) => {
|
|
66
|
+
Array.isArray(t) ? t.forEach((t) => n.append(e, String(t))) : n.append(e, String(t));
|
|
67
|
+
});
|
|
68
|
+
let r = n.toString();
|
|
69
|
+
e += (e.includes("?") ? "&" : "?") + r;
|
|
70
|
+
}
|
|
71
|
+
let u = await (await fetch(e, l)).text(), d = null;
|
|
72
|
+
if (u) try {
|
|
73
|
+
d = JSON.parse(u);
|
|
74
|
+
} catch {
|
|
75
|
+
d = u;
|
|
76
|
+
}
|
|
77
|
+
if (d && typeof d != "string" && d.status == 200) return d;
|
|
78
|
+
if (d && typeof d != "string" && d.msg && i) throw new c(d.msg, d.errorCode ?? "unknown");
|
|
79
|
+
if (i) throw Error("invalid_response");
|
|
80
|
+
return !1;
|
|
81
|
+
}
|
|
82
|
+
var u = (e = "Bạn có chắc muốn thực hiện thao tác này ?", t = "Đồng ý") => r(n).fire({
|
|
83
|
+
title: "Xác nhận",
|
|
84
|
+
text: e,
|
|
85
|
+
icon: "warning",
|
|
86
|
+
showCancelButton: !0,
|
|
87
|
+
confirmButtonColor: "#4CAF50",
|
|
88
|
+
cancelButtonColor: "#F44336",
|
|
89
|
+
confirmButtonText: t,
|
|
90
|
+
cancelButtonText: "Hủy",
|
|
91
|
+
position: "top"
|
|
92
|
+
}), d = (e, t = "top", i = !1) => {
|
|
93
|
+
r(n).fire({
|
|
94
|
+
toast: i,
|
|
95
|
+
icon: "success",
|
|
96
|
+
position: t,
|
|
97
|
+
title: e,
|
|
98
|
+
showConfirmButton: !1,
|
|
99
|
+
timer: 1500
|
|
100
|
+
});
|
|
101
|
+
}, f = (e) => {
|
|
102
|
+
r(n).fire({
|
|
103
|
+
icon: "error",
|
|
104
|
+
position: "top",
|
|
105
|
+
title: e,
|
|
106
|
+
showConfirmButton: !1
|
|
107
|
+
});
|
|
108
|
+
}, p = (e) => {
|
|
109
|
+
if (!e) return null;
|
|
110
|
+
let t = new Date(e);
|
|
111
|
+
return isNaN(t.getTime()) ? null : {
|
|
112
|
+
dd: String(t.getDate()).padStart(2, "0"),
|
|
113
|
+
MM: String(t.getMonth() + 1).padStart(2, "0"),
|
|
114
|
+
yyyy: t.getFullYear(),
|
|
115
|
+
hh: String(t.getHours()).padStart(2, "0"),
|
|
116
|
+
mm: String(t.getMinutes()).padStart(2, "0"),
|
|
117
|
+
ss: String(t.getSeconds()).padStart(2, "0")
|
|
118
|
+
};
|
|
119
|
+
}, m = (e) => {
|
|
120
|
+
let t = p(e);
|
|
121
|
+
return t ? `${t.dd}/${t.MM}/${t.yyyy}` : e ? "Invalid Date" : "";
|
|
122
|
+
}, h = (e) => {
|
|
123
|
+
let t = new URLSearchParams();
|
|
124
|
+
return Object.entries(e).forEach(([e, n]) => {
|
|
125
|
+
Array.isArray(n) ? n.forEach((n) => {
|
|
126
|
+
n != null && t.append(e, String(n));
|
|
127
|
+
}) : n != null && t.set(e, String(n));
|
|
128
|
+
}), t.toString();
|
|
129
|
+
}, g = (e = typeof window < "u" ? window.location.pathname : "", t = /\/(?:edit|detail|update)\/(\d+)(?=\/|$)/i) => {
|
|
130
|
+
let n = new RegExp(t.source, t.flags.includes("g") ? t.flags : t.flags + "g"), r = null, i;
|
|
131
|
+
for (; (i = n.exec(e)) !== null;) r = i;
|
|
132
|
+
if (!r) return null;
|
|
133
|
+
let a = Number(r[1]);
|
|
134
|
+
return Number.isFinite(a) ? a : null;
|
|
135
|
+
}, _ = (e, t = "/styles/default.jpg") => e ? a("STATIC_URL") + ("/" + e).replaceAll("//", "/") : t, v = (e) => e ? a("STATIC_URL") + ("/" + e).replaceAll("//", "/") : "", y = (e, t = "/styles/default.jpg") => e ? a("API_URL") + ("/" + e).replaceAll("//", "/") : t, b = (e, t = "/styles/default.jpg") => e ? a("UPLOADS_URL") + "/" + e : t;
|
|
136
|
+
function x(e) {
|
|
137
|
+
let t = "";
|
|
138
|
+
for (let n = 0; n < e; n++) {
|
|
139
|
+
let e = Math.floor(Math.random() * 62);
|
|
140
|
+
t += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"[e];
|
|
141
|
+
}
|
|
142
|
+
return t;
|
|
143
|
+
}
|
|
144
|
+
var S = /\.(jpg|jpeg|png|jfif|doc|docx|xls|xlsx|pdf)$/i, C = (e, t) => {
|
|
145
|
+
if (!e) return t;
|
|
146
|
+
let n = e.split(",").map((e) => {
|
|
147
|
+
let t = e.trim();
|
|
148
|
+
return (t.includes("/") ? t.slice(t.indexOf("/") + 1) : t).replace(/^\./, "");
|
|
149
|
+
}).filter(Boolean);
|
|
150
|
+
if (n.length === 0) return t;
|
|
151
|
+
let r = n.map((e) => e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"));
|
|
152
|
+
return RegExp(`\\.(${r.join("|")})$`, "i");
|
|
153
|
+
}, w = (e, t = 20, n = S) => new Promise((r, i) => {
|
|
154
|
+
let a = Array.from(e ?? []);
|
|
155
|
+
if (a.length === 0) return i(/* @__PURE__ */ Error("Tập tin không tồn tại"));
|
|
156
|
+
for (let e of a) {
|
|
157
|
+
if (!n.test(e.name)) return f("Tập tin không hợp lệ"), i(/* @__PURE__ */ Error("Tập tin không hợp lệ"));
|
|
158
|
+
if (e.size > t * 1024 * 1024) return f(`Tập tin tải lên không quá ${t}M`), i(/* @__PURE__ */ Error(`Tập tin tải lên không quá ${t}M`));
|
|
159
|
+
}
|
|
160
|
+
r();
|
|
161
|
+
}), T = {
|
|
162
|
+
"&": "&",
|
|
163
|
+
"<": "<",
|
|
164
|
+
">": ">",
|
|
165
|
+
"\"": """,
|
|
166
|
+
"'": "'"
|
|
167
|
+
}, E = (e) => String(e ?? "").replace(/[&<>"']/g, (e) => T[e]), D = /* @__PURE__ */ new Set([
|
|
168
|
+
"danger",
|
|
169
|
+
"success",
|
|
170
|
+
"warning",
|
|
171
|
+
"info",
|
|
172
|
+
"primary",
|
|
173
|
+
"secondary",
|
|
174
|
+
"light",
|
|
175
|
+
"dark"
|
|
176
|
+
]), O = (e = "", t = "danger", n = {}) => {
|
|
177
|
+
let r = D.has(t) ? t : "danger", i = (e) => n.raw ? e : E(e);
|
|
178
|
+
return typeof e == "string" ? e.trim() === "" ? "" : `<div class="alert alert-${r}">${i(e)}</div>` : !e || typeof e != "object" ? "" : Object.values(e).filter((e) => e != null && String(e).trim() !== "").map((e) => `<div class="alert alert-${r}">${i(String(e))}</div>`).join("");
|
|
179
|
+
}, k = (e, t = {}) => new Promise((n, r) => {
|
|
180
|
+
try {
|
|
181
|
+
let r = window.jQuery, i = r(e);
|
|
182
|
+
if (!i.length) throw Error("invalid_elfinder");
|
|
183
|
+
let o = {
|
|
184
|
+
url: a("API_URL") + "/elfinder/connector",
|
|
185
|
+
height: 500,
|
|
186
|
+
resizable: !0,
|
|
187
|
+
baseUrl: "/assets/plugins/elFinder/",
|
|
188
|
+
defaultView: "list",
|
|
189
|
+
useBrowserHistory: !1,
|
|
190
|
+
getFileCallback: (e) => {
|
|
191
|
+
n(e);
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
i.elfinder("destroy").elfinder({
|
|
195
|
+
...o,
|
|
196
|
+
...t
|
|
197
|
+
});
|
|
198
|
+
} catch (e) {
|
|
199
|
+
r(e);
|
|
200
|
+
}
|
|
201
|
+
}), A = (e) => {
|
|
202
|
+
if (e instanceof Error) return e.message;
|
|
203
|
+
if (typeof e == "string") return e;
|
|
204
|
+
try {
|
|
205
|
+
return JSON.stringify(e) ?? String(e);
|
|
206
|
+
} catch {
|
|
207
|
+
return String(e);
|
|
208
|
+
}
|
|
209
|
+
}, j = (e) => new Promise((t, n) => {
|
|
210
|
+
try {
|
|
211
|
+
let n = typeof e == "string" ? document.querySelector(e) : e;
|
|
212
|
+
if (!n) throw Error("invalid_modalEl_btnEl");
|
|
213
|
+
n.querySelectorAll(".btn-md-close")?.forEach((e) => {
|
|
214
|
+
e?.addEventListener("click", () => {
|
|
215
|
+
r.hide();
|
|
216
|
+
});
|
|
217
|
+
});
|
|
218
|
+
let r = i.getOrCreateInstance(n, {
|
|
219
|
+
backdrop: "static",
|
|
220
|
+
keyboard: !1
|
|
221
|
+
});
|
|
222
|
+
t({
|
|
223
|
+
md: r,
|
|
224
|
+
modalEl: n
|
|
225
|
+
});
|
|
226
|
+
} catch (e) {
|
|
227
|
+
console.log(e), n(e);
|
|
228
|
+
}
|
|
229
|
+
}), M = (e, t, n = !1, r = !1) => {
|
|
230
|
+
if (!e) throw Error("invalid_btnEl");
|
|
231
|
+
e.addEventListener("click", (i) => {
|
|
232
|
+
i.preventDefault(), j(t).then(({ modalEl: t, md: i }) => {
|
|
233
|
+
k("#elfinderStatic").then((t) => {
|
|
234
|
+
n && n({
|
|
235
|
+
data: t,
|
|
236
|
+
btnEl: e,
|
|
237
|
+
md: i
|
|
238
|
+
});
|
|
239
|
+
}), t.addEventListener("hidden.bs.modal", () => {
|
|
240
|
+
r && r();
|
|
241
|
+
}), i.show();
|
|
242
|
+
});
|
|
243
|
+
});
|
|
244
|
+
}, N = (e, t, n = !1, r = !1) => {
|
|
245
|
+
if (!e) throw Error("invalid_btnEl");
|
|
246
|
+
e.addEventListener("click", (i) => {
|
|
247
|
+
i.preventDefault(), j(t).then(({ modalEl: t, md: i }) => {
|
|
248
|
+
k("#elfinderStatic", { url: a("API_URL") + "/elfinder/connectorFiles" }).then((t) => {
|
|
249
|
+
n && n({
|
|
250
|
+
data: t,
|
|
251
|
+
btnEl: e,
|
|
252
|
+
md: i
|
|
253
|
+
});
|
|
254
|
+
}), t.addEventListener("hidden.bs.modal", () => {
|
|
255
|
+
r && r();
|
|
256
|
+
}), i.show();
|
|
257
|
+
});
|
|
258
|
+
});
|
|
259
|
+
}, P = (e = !1) => {
|
|
260
|
+
let t = [{
|
|
261
|
+
id: 1,
|
|
262
|
+
name: "Tiếng Việt"
|
|
263
|
+
}];
|
|
264
|
+
return e === !1 ? t : t.find((t) => t.id === e)?.name || "";
|
|
265
|
+
};
|
|
266
|
+
//#endregion
|
|
267
|
+
export { o as C, d as S, N as _, h as a, u as b, E as c, g as d, _ as f, x as g, b as h, j as i, m as l, y as m, l as n, k as o, P as p, w as r, A as s, C as t, v as u, M as v, f as x, O as y };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={},t=null,n=!1;function r(){return n?Promise.resolve(e):t||(t=fetch(`/env.json`,{cache:`no-cache`}).then(e=>{if(!e.ok)throw Error(`HTTP ${e.status} ${e.statusText}`);return e.json()}).then(t=>(e=t??{},e)).catch(t=>(console.warn(`[@materialui-reactjs/admin] Không tải được /env.json — dùng cấu hình rỗng.`,t),e={},e)).then(e=>(n=!0,e)),t)}function i(){return e}function a(){return n=!1,t=null,r()}Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return i}});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//#region src/utils/Env.ts
|
|
2
|
+
var e = {}, t = null, n = !1;
|
|
3
|
+
function r() {
|
|
4
|
+
return n ? Promise.resolve(e) : t || (t = fetch("/env.json", { cache: "no-cache" }).then((e) => {
|
|
5
|
+
if (!e.ok) throw Error(`HTTP ${e.status} ${e.statusText}`);
|
|
6
|
+
return e.json();
|
|
7
|
+
}).then((t) => (e = t ?? {}, e)).catch((t) => (console.warn("[@materialui-reactjs/admin] Không tải được /env.json — dùng cấu hình rỗng.", t), e = {}, e)).then((e) => (n = !0, e)), t);
|
|
8
|
+
}
|
|
9
|
+
function i() {
|
|
10
|
+
return e;
|
|
11
|
+
}
|
|
12
|
+
function a() {
|
|
13
|
+
return n = !1, t = null, r();
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
16
|
+
export { r as n, a as r, i as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("./Common-DFahMuQE.cjs");let t=require("react/jsx-runtime"),n=require("react-router-dom"),r=require("@mui/material"),i=require("react-helmet-async");function a({title:e,children:n,placement:i=`bottom`,y:a=-10}){return(0,t.jsx)(r.Tooltip,{title:e,placement:i,slotProps:{popper:{modifiers:[{name:`offset`,options:{offset:[0,a]}}]}},children:n})}var o=({data:e,onChange:r,onClickPage:i})=>{let a=Array.isArray(e?.items)?e.items:[],o=e?.length||10,s=e?.page||1,c=e?.recordTotal||0,l=Math.ceil(c/o),u=(s-1)*o,d=s-1,f=s+1,p=d>=1,m=l>s;return(0,t.jsx)(t.Fragment,{children:(0,t.jsxs)(`div`,{className:`d-flex justify-content-between align-items-center`,children:[(0,t.jsxs)(`span`,{children:[`Đang xem từ `,u+1,` đến `,u+a.length,` trong tổng số `,c]}),(0,t.jsx)(`nav`,{children:(0,t.jsxs)(`ul`,{className:`pagination`,children:[s>2&&(0,t.jsx)(`li`,{className:`page-item`,children:(0,t.jsx)(n.NavLink,{className:`first page-link`,to:`#`,"data-page":1,title:`Trang đầu tiên`,onClick:i,children:(0,t.jsx)(`i`,{className:`fal fa-fast-backward`})})}),p&&(0,t.jsx)(`li`,{className:`page-item`,children:(0,t.jsx)(n.NavLink,{className:`prev page-link`,to:`#`,"data-page":d,title:`Trang trước`,onClick:i,children:(0,t.jsx)(`i`,{className:`fal fa-angle-left`})})}),l>1&&(()=>{let e=Math.max(1,s-2),t=Math.min(l,s+2),n=[];for(let r=e;r<=t;r++)n.push(r);return n})().map(e=>(0,t.jsx)(`li`,{className:`page-item ${s===e?`active`:``}`,children:(0,t.jsx)(n.NavLink,{className:`page-link`,to:`#`,"data-page":e,onClick:s===e?void 0:i,children:e})},e)),m&&(0,t.jsx)(`li`,{className:`page-item`,children:(0,t.jsx)(n.NavLink,{className:`next page-link`,to:`#`,"data-page":f,title:`Trang tiếp theo`,onClick:i,children:(0,t.jsx)(`i`,{className:`fal fa-angle-right`})})}),s<l-1&&(0,t.jsx)(`li`,{className:`page-item`,children:(0,t.jsx)(n.NavLink,{className:`first page-link`,to:`#`,"data-page":l,title:`Trang cuối cùng`,onClick:i,children:(0,t.jsx)(`i`,{className:`fal fa-fast-forward`})})})]})}),(0,t.jsxs)(`div`,{className:`d-flex align-items-center`,children:[(0,t.jsx)(`span`,{className:`me-2`,children:`Xem`}),(0,t.jsx)(`div`,{className:`form-group pagination-length`,children:(0,t.jsxs)(`select`,{className:`pageLen`,name:`pageLen`,defaultValue:o,onChange:r,children:[(0,t.jsx)(`option`,{value:`10`,children:`10`}),(0,t.jsx)(`option`,{value:`25`,children:`25`}),(0,t.jsx)(`option`,{value:`50`,children:` 50`}),(0,t.jsx)(`option`,{value:`100`,children:`100`}),(0,t.jsx)(`option`,{value:`500`,children:`500`})]})})]})]})})},s=async(t,n)=>{try{let r=new URLSearchParams;for(let[e,n]of Object.entries(t))n!=null&&r.append(e,String(n));let i=`${n}?${r.toString()}`;return(await e.n(i,{},`GET`)).data}catch{return{items:[],page:1,length:10,pageTotal:0,recordTotal:0}}},c=async(t,n,r,i)=>{let a=t.currentTarget,o=Number(a.getAttribute(`data-page`)??1),s={...n,page:o};return i(`${r}?${e.a(s)}`,{replace:!0}),s},l=async(t,n,r)=>{let i={...t,page:1};return r(`${n}?${e.a(i)}`,{replace:!0}),i},u=async(e,t)=>{e.preventDefault();let{name:n,value:r}=e.target,i={...t};return n===`pageLen`?(i.pageLen=Number(r),i.page=1):i[n]=r,i},d=({title:e=``,cUri:r=``,fluid:a=!1,cUriTitle:o=``})=>(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.Helmet,{children:(0,t.jsx)(`title`,{children:e||`Truy cập không được phép`})}),(0,t.jsxs)(`div`,{className:`${a?`container-fluid`:`container`}`,children:[(0,t.jsx)(`div`,{className:`navbar navbar-main navbar-expand-lg px-0 shadow-none border-radius-xl py-3`,children:(0,t.jsx)(`nav`,{"aria-label":`breadcrumb`,children:(0,t.jsxs)(`ol`,{className:`breadcrumb bg-transparent m-0 p-0`,children:[(0,t.jsx)(`li`,{className:`breadcrumb-item`,children:(0,t.jsx)(n.Link,{className:`text-white`,to:`/`,children:(0,t.jsx)(`i`,{className:`fal fa-home`})})}),(0,t.jsx)(`li`,{className:`breadcrumb-item`,children:(0,t.jsx)(n.Link,{className:`text-white`,to:r,children:o})})]})})}),(0,t.jsx)(`div`,{style:{minHeight:`50vh`},className:`d-flex align-items-center`,children:(0,t.jsxs)(`div`,{className:`m-auto text-center`,children:[(0,t.jsx)(`h1`,{className:`display-1 text-bolder text-white`,children:`403`}),(0,t.jsx)(`h2`,{className:`text-white`,children:`Truy cập không được phép`}),(0,t.jsx)(`p`,{className:`lead text-white`,children:`Xin lỗi, bạn không có quyền truy cập vào trang này.`}),(0,t.jsx)(n.Link,{to:`/`,className:`btn btn-outline-white mt-4`,children:`trang chủ`})]})})]})]}),f=({title:e=``,cUri:r=``,fluid:a=!1,cUriTitle:o=``})=>(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.Helmet,{children:(0,t.jsx)(`title`,{children:e||`Không tìm thấy dữ liệu`})}),(0,t.jsxs)(`div`,{className:`${a?`container-fluid`:`container`}`,children:[(0,t.jsx)(`div`,{className:`navbar navbar-main navbar-expand-lg px-0 shadow-none border-radius-xl py-3`,children:(0,t.jsx)(`nav`,{"aria-label":`breadcrumb`,children:(0,t.jsxs)(`ol`,{className:`breadcrumb bg-transparent m-0 p-0`,children:[(0,t.jsx)(`li`,{className:`breadcrumb-item`,children:(0,t.jsx)(n.Link,{className:`text-white`,to:`/`,children:(0,t.jsx)(`i`,{className:`fal fa-home`})})}),(0,t.jsx)(`li`,{className:`breadcrumb-item`,children:(0,t.jsx)(n.Link,{className:`text-white`,to:r,children:o})})]})})}),(0,t.jsx)(`div`,{style:{minHeight:`50vh`},className:`d-flex align-items-center`,children:(0,t.jsxs)(`div`,{className:`m-auto text-center`,children:[(0,t.jsx)(`h1`,{className:`display-1 text-bolder text-white`,children:`404`}),(0,t.jsx)(`h2`,{className:`text-white`,children:`Không tìm thấy dữ liệu`}),(0,t.jsx)(`p`,{className:`lead text-white`,children:`Xin lỗi, dữ liệu của bạn không được tìm thấy`}),(0,t.jsx)(n.Link,{to:`/`,className:`btn btn-outline-white mt-4`,children:`trang chủ`})]})})]})]}),p=({adminUri:e,cUri:r,title:i,isSave:o=!1,titleAction:s=`Chi tiết`})=>(0,t.jsxs)(`div`,{className:`navbar navbar-main navbar-expand-lg px-0 shadow-none border-radius-xl py-3`,children:[(0,t.jsx)(`nav`,{"aria-label":`breadcrumb`,children:(0,t.jsxs)(`ol`,{className:`breadcrumb bg-transparent m-0 p-0`,children:[(0,t.jsx)(`li`,{className:`breadcrumb-item`,children:(0,t.jsx)(n.Link,{className:`text-white`,to:e,children:(0,t.jsx)(`i`,{className:`fal fa-home`})})}),(0,t.jsx)(`li`,{className:`breadcrumb-item`,children:(0,t.jsx)(n.Link,{className:`text-white`,to:r,children:i})}),(0,t.jsx)(`li`,{className:`breadcrumb-item text-white active`,"aria-current":`page`,children:s})]})}),(0,t.jsxs)(`div`,{className:`ms-auto`,children:[o&&(0,t.jsx)(a,{title:`Lưu lại`,children:(0,t.jsx)(`button`,{type:`submit`,className:`btn btn-sm btn-icon btn-success me-1`,children:(0,t.jsx)(`i`,{className:`material-icons text-white position-relative text-lg`,children:`save`})})}),(0,t.jsx)(a,{title:`Trở lại`,children:(0,t.jsx)(n.Link,{to:r,className:`btn btn-sm btn-icon btn-secondary`,children:(0,t.jsx)(`i`,{className:`material-icons text-white position-relative text-lg`,children:`reply`})})})]})]}),m=({adminUri:e,cUri:r,title:i,isCre:o=!1,isDel:s=!1,isCpy:c=!1,isImp:l=!1,isExp:u=!1,isField:d=!1,isReply:f=!1,replyUri:p=`#`,onDelete:m,onExport:h,onCopy:g})=>(0,t.jsxs)(`div`,{className:`navbar navbar-main navbar-expand-lg px-0 shadow-none border-radius-xl py-3`,"navbar-scroll":`true`,children:[(0,t.jsx)(`nav`,{"aria-label":`breadcrumb`,children:(0,t.jsxs)(`ol`,{className:`breadcrumb bg-transparent m-0 p-0`,children:[(0,t.jsx)(`li`,{className:`breadcrumb-item`,children:(0,t.jsx)(n.Link,{className:`text-white`,to:e||`/`,children:(0,t.jsx)(`i`,{className:`fal fa-home`})})}),(0,t.jsx)(`li`,{className:`breadcrumb-item text-white active`,"aria-current":`page`,children:i})]})}),(0,t.jsxs)(`div`,{className:`ms-auto`,children:[o&&(0,t.jsx)(a,{title:`Tạo mới`,children:(0,t.jsx)(n.Link,{to:r+`/create`,className:`btn btn-success btn-sm btn-icon ms-1`,children:(0,t.jsx)(`i`,{className:`material-icons text-white position-relative text-lg`,children:`add`})})}),u&&(0,t.jsx)(a,{title:`Export Excel`,children:(0,t.jsx)(`button`,{type:`button`,onClick:h,className:`btn btn-warning btn-sm btn-icon ms-1`,children:(0,t.jsx)(`i`,{className:`fal fa-download`})})}),l&&(0,t.jsx)(a,{title:`Import Excel`,children:(0,t.jsx)(n.Link,{to:r+`/import`,className:`btn btn-info btn-sm btn-icon ms-1`,children:(0,t.jsx)(`i`,{className:`fal fa-file-import`})})}),c&&(0,t.jsx)(a,{title:`Sao chép`,children:(0,t.jsx)(`button`,{onClick:g,type:`button`,className:`btn btn-purple btn-sm btn-icon ms-1`,children:(0,t.jsx)(`i`,{className:`material-icons text-white position-relative text-lg`,children:`copy`})})}),s&&(0,t.jsx)(a,{title:`Xóa`,children:(0,t.jsx)(`button`,{onClick:m,type:`button`,className:`btn btn-danger btn-sm btn-icon ms-1`,children:(0,t.jsx)(`i`,{className:`material-icons text-white position-relative text-lg`,children:`delete`})})}),d&&(0,t.jsx)(a,{title:`Tùy chỉnh trường dữ liệu`,children:(0,t.jsx)(n.Link,{to:r+`/fields`,className:`btn btn-purple btn-sm btn-icon ms-1`,children:(0,t.jsx)(`i`,{className:`material-icons text-white position-relative text-lg`,children:`manage_accounts`})})}),f&&(0,t.jsx)(a,{title:`Trở về`,children:(0,t.jsx)(n.Link,{to:p,className:`btn btn-secondary btn-sm btn-icon ms-1`,children:(0,t.jsx)(`i`,{className:`material-icons text-white position-relative text-lg`,children:`reply`})})})]})]}),h=({adminUri:e,cUri:r,title:i,itemId:o,isSave:s=!0,titleAction:c})=>(0,t.jsxs)(`div`,{className:`navbar navbar-main navbar-expand-lg px-0 shadow-none border-radius-xl py-3`,children:[(0,t.jsx)(`nav`,{"aria-label":`breadcrumb`,children:(0,t.jsxs)(`ol`,{className:`breadcrumb bg-transparent m-0 p-0`,children:[(0,t.jsx)(`li`,{className:`breadcrumb-item`,children:(0,t.jsx)(n.Link,{className:`text-white`,to:e||`/`,children:(0,t.jsx)(`i`,{className:`fal fa-home`})})}),(0,t.jsx)(`li`,{className:`breadcrumb-item`,children:(0,t.jsx)(n.Link,{className:`text-white`,to:r,children:i})}),(0,t.jsx)(`li`,{className:`breadcrumb-item text-white active`,"aria-current":`page`,children:c??(o?`Chỉnh sửa`:`Thêm mới`)})]})}),(0,t.jsxs)(`div`,{className:`ms-auto`,children:[s&&(0,t.jsx)(a,{title:`Lưu lại`,children:(0,t.jsx)(`button`,{type:`submit`,className:`btn btn-sm btn-icon btn-success me-1`,children:(0,t.jsx)(`i`,{className:`material-icons text-white position-relative text-lg`,children:`save`})})}),(0,t.jsx)(a,{title:`Trở lại`,children:(0,t.jsx)(n.Link,{to:r,className:`btn btn-sm btn-icon btn-secondary`,children:(0,t.jsx)(`i`,{className:`material-icons text-white position-relative text-lg`,children:`reply`})})})]})]});Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return o}});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a as e, n as t } from "./Common-_PK8HLKN.js";
|
|
2
2
|
import { Fragment as n, jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
3
3
|
import { Link as a, NavLink as o } from "react-router-dom";
|
|
4
4
|
import { Tooltip as s } from "@mui/material";
|
|
@@ -18,22 +18,22 @@ function l({ title: e, children: t, placement: n = "bottom", y: i = -10 }) {
|
|
|
18
18
|
//#endregion
|
|
19
19
|
//#region src/components/meta/Pagination.tsx
|
|
20
20
|
var u = ({ data: e, onChange: t, onClickPage: a }) => {
|
|
21
|
-
let s =
|
|
21
|
+
let s = Array.isArray(e?.items) ? e.items : [], c = e?.length || 10, l = e?.page || 1, u = e?.recordTotal || 0, d = Math.ceil(u / c), f = (l - 1) * c, p = l - 1, m = l + 1, h = p >= 1, g = d > l;
|
|
22
22
|
return /* @__PURE__ */ r(n, { children: /* @__PURE__ */ i("div", {
|
|
23
23
|
className: "d-flex justify-content-between align-items-center",
|
|
24
24
|
children: [
|
|
25
25
|
/* @__PURE__ */ i("span", { children: [
|
|
26
26
|
"Đang xem từ ",
|
|
27
|
-
|
|
27
|
+
f + 1,
|
|
28
28
|
" đến ",
|
|
29
|
-
|
|
29
|
+
f + s.length,
|
|
30
30
|
" trong tổng số ",
|
|
31
|
-
|
|
31
|
+
u
|
|
32
32
|
] }),
|
|
33
33
|
/* @__PURE__ */ r("nav", { children: /* @__PURE__ */ i("ul", {
|
|
34
34
|
className: "pagination",
|
|
35
35
|
children: [
|
|
36
|
-
|
|
36
|
+
l > 2 && /* @__PURE__ */ r("li", {
|
|
37
37
|
className: "page-item",
|
|
38
38
|
children: /* @__PURE__ */ r(o, {
|
|
39
39
|
className: "first page-link",
|
|
@@ -44,48 +44,48 @@ var u = ({ data: e, onChange: t, onClickPage: a }) => {
|
|
|
44
44
|
children: /* @__PURE__ */ r("i", { className: "fal fa-fast-backward" })
|
|
45
45
|
})
|
|
46
46
|
}),
|
|
47
|
-
|
|
47
|
+
h && /* @__PURE__ */ r("li", {
|
|
48
48
|
className: "page-item",
|
|
49
49
|
children: /* @__PURE__ */ r(o, {
|
|
50
50
|
className: "prev page-link",
|
|
51
51
|
to: "#",
|
|
52
|
-
"data-page":
|
|
52
|
+
"data-page": p,
|
|
53
53
|
title: "Trang trước",
|
|
54
54
|
onClick: a,
|
|
55
55
|
children: /* @__PURE__ */ r("i", { className: "fal fa-angle-left" })
|
|
56
56
|
})
|
|
57
57
|
}),
|
|
58
|
-
|
|
59
|
-
let
|
|
60
|
-
for (let
|
|
61
|
-
return
|
|
62
|
-
})().map((
|
|
63
|
-
className: `page-item ${
|
|
58
|
+
d > 1 && (() => {
|
|
59
|
+
let e = Math.max(1, l - 2), t = Math.min(d, l + 2), n = [];
|
|
60
|
+
for (let r = e; r <= t; r++) n.push(r);
|
|
61
|
+
return n;
|
|
62
|
+
})().map((e) => /* @__PURE__ */ r("li", {
|
|
63
|
+
className: `page-item ${l === e ? "active" : ""}`,
|
|
64
64
|
children: /* @__PURE__ */ r(o, {
|
|
65
65
|
className: "page-link",
|
|
66
66
|
to: "#",
|
|
67
|
-
"data-page":
|
|
68
|
-
onClick:
|
|
69
|
-
children:
|
|
67
|
+
"data-page": e,
|
|
68
|
+
onClick: l === e ? void 0 : a,
|
|
69
|
+
children: e
|
|
70
70
|
})
|
|
71
|
-
},
|
|
72
|
-
|
|
71
|
+
}, e)),
|
|
72
|
+
g && /* @__PURE__ */ r("li", {
|
|
73
73
|
className: "page-item",
|
|
74
74
|
children: /* @__PURE__ */ r(o, {
|
|
75
75
|
className: "next page-link",
|
|
76
76
|
to: "#",
|
|
77
|
-
"data-page":
|
|
77
|
+
"data-page": m,
|
|
78
78
|
title: "Trang tiếp theo",
|
|
79
79
|
onClick: a,
|
|
80
80
|
children: /* @__PURE__ */ r("i", { className: "fal fa-angle-right" })
|
|
81
81
|
})
|
|
82
82
|
}),
|
|
83
|
-
|
|
83
|
+
l < d - 1 && /* @__PURE__ */ r("li", {
|
|
84
84
|
className: "page-item",
|
|
85
85
|
children: /* @__PURE__ */ r(o, {
|
|
86
86
|
className: "first page-link",
|
|
87
87
|
to: "#",
|
|
88
|
-
"data-page":
|
|
88
|
+
"data-page": d,
|
|
89
89
|
title: "Trang cuối cùng",
|
|
90
90
|
onClick: a,
|
|
91
91
|
children: /* @__PURE__ */ r("i", { className: "fal fa-fast-forward" })
|
|
@@ -103,7 +103,7 @@ var u = ({ data: e, onChange: t, onClickPage: a }) => {
|
|
|
103
103
|
children: /* @__PURE__ */ i("select", {
|
|
104
104
|
className: "pageLen",
|
|
105
105
|
name: "pageLen",
|
|
106
|
-
defaultValue:
|
|
106
|
+
defaultValue: c,
|
|
107
107
|
onChange: t,
|
|
108
108
|
children: [
|
|
109
109
|
/* @__PURE__ */ r("option", {
|
|
@@ -134,8 +134,10 @@ var u = ({ data: e, onChange: t, onClickPage: a }) => {
|
|
|
134
134
|
}) });
|
|
135
135
|
}, d = async (e, n) => {
|
|
136
136
|
try {
|
|
137
|
-
let r =
|
|
138
|
-
|
|
137
|
+
let r = new URLSearchParams();
|
|
138
|
+
for (let [t, n] of Object.entries(e)) n != null && r.append(t, String(n));
|
|
139
|
+
let i = `${n}?${r.toString()}`;
|
|
140
|
+
return (await t(i, {}, "GET")).data;
|
|
139
141
|
} catch {
|
|
140
142
|
return {
|
|
141
143
|
items: [],
|
|
@@ -354,6 +356,7 @@ var u = ({ data: e, onChange: t, onClickPage: a }) => {
|
|
|
354
356
|
d && /* @__PURE__ */ r(l, {
|
|
355
357
|
title: "Export Excel",
|
|
356
358
|
children: /* @__PURE__ */ r("button", {
|
|
359
|
+
type: "button",
|
|
357
360
|
onClick: g,
|
|
358
361
|
className: "btn btn-warning btn-sm btn-icon ms-1",
|
|
359
362
|
children: /* @__PURE__ */ r("i", { className: "fal fa-download" })
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
let e=require("react/jsx-runtime"),t=require("@dnd-kit/utilities"),n=require("@dnd-kit/sortable");function r({id:r,className:i,iconSize:a=`24px`,iconStyle:o={cursor:`move`,right:`5px`,top:`5px`},children:s}){let{attributes:c,listeners:l,setNodeRef:u,transform:d,transition:f}=(0,n.useSortable)({id:r}),p={transform:t.CSS.Transform.toString(d),transition:f};return(0,e.jsxs)(`div`,{ref:u,style:p,className:i,children:[(0,e.jsx)(`div`,{...c,...l,style:o,className:`position-absolute`,children:(0,e.jsx)(`i`,{className:`fal fa-arrows-up-down-left-right`,style:{fontSize:a}})}),s]})}Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return r}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
let e=require("react/jsx-runtime");var t=({children:t,loading:n,style:r})=>(0,e.jsxs)(e.Fragment,{children:[n&&(0,e.jsx)(`div`,{className:`boxSpinner rounded`,"aria-hidden":`true`,style:r,children:(0,e.jsxs)(`div`,{className:`spinner`,children:[(0,e.jsx)(`div`,{className:`rect1`}),(0,e.jsx)(`div`,{className:`rect2`}),(0,e.jsx)(`div`,{className:`rect3`}),(0,e.jsx)(`div`,{className:`rect4`}),(0,e.jsx)(`div`,{className:`rect5`}),(0,e.jsx)(`div`,{className:`rect6`}),(0,e.jsx)(`div`,{className:`rect7`})]})}),!n&&t]});Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return t}});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Fragment as e, jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
2
2
|
//#region src/components/loader/SpinnerLoader.tsx
|
|
3
|
-
var r = ({ children: r, loading: i, style: a }) => /* @__PURE__ */ n(e, { children: [i
|
|
3
|
+
var r = ({ children: r, loading: i, style: a }) => /* @__PURE__ */ n(e, { children: [i && /* @__PURE__ */ t("div", {
|
|
4
4
|
className: "boxSpinner rounded",
|
|
5
5
|
"aria-hidden": "true",
|
|
6
6
|
style: a,
|
|
@@ -16,6 +16,6 @@ var r = ({ children: r, loading: i, style: a }) => /* @__PURE__ */ n(e, { childr
|
|
|
16
16
|
/* @__PURE__ */ t("div", { className: "rect7" })
|
|
17
17
|
]
|
|
18
18
|
})
|
|
19
|
-
}), i
|
|
19
|
+
}), !i && r] });
|
|
20
20
|
//#endregion
|
|
21
21
|
export { r as t };
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { r as e, t } from "./Common-_PK8HLKN.js";
|
|
2
|
+
import { useRef as n, useState as r } from "react";
|
|
3
|
+
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
4
|
+
//#region src/components/form/UDragFile.tsx
|
|
5
|
+
var o = ({ label: o, name: s, cpnClass: c = "", required: l = !1, onChange: u, ext: d = ".xlsx, .xls, .docx, .doc, .pdf" }) => {
|
|
6
|
+
let f = n(null), [p, m] = r(null), [h, g] = r(!1), _ = async (n) => {
|
|
7
|
+
n.preventDefault();
|
|
8
|
+
let r = f.current?.querySelector(".default-file-input"), i = r?.files;
|
|
9
|
+
if (!i) return;
|
|
10
|
+
let a = /\.(pdf|docx|doc|xlsx|xls)$/i, o = r.getAttribute("accept"), s = t(o, a);
|
|
11
|
+
e(i, 10, s).then(() => {
|
|
12
|
+
m(i[0]), u(n);
|
|
13
|
+
}).catch((e) => {
|
|
14
|
+
console.error("[UDragFile] Tập tin không hợp lệ:", e.message);
|
|
15
|
+
});
|
|
16
|
+
}, v = async (e) => {
|
|
17
|
+
e.preventDefault(), e.stopPropagation(), e.type === "dragenter" || e.type === "dragover" ? g(!0) : e.type === "dragleave" && g(!1);
|
|
18
|
+
};
|
|
19
|
+
return /* @__PURE__ */ i("div", {
|
|
20
|
+
className: c,
|
|
21
|
+
children: /* @__PURE__ */ a("div", {
|
|
22
|
+
ref: f,
|
|
23
|
+
className: "upload-files-container mb-3",
|
|
24
|
+
children: [/* @__PURE__ */ a("label", {
|
|
25
|
+
className: "drag-file-area mb-2",
|
|
26
|
+
onDragEnter: v,
|
|
27
|
+
onDragOver: v,
|
|
28
|
+
onDragLeave: v,
|
|
29
|
+
onDrop: async (n) => {
|
|
30
|
+
n.preventDefault(), n.stopPropagation();
|
|
31
|
+
let r = n.dataTransfer.files;
|
|
32
|
+
if (!r) return;
|
|
33
|
+
let i = f.current?.querySelector(".default-file-input"), a = /\.(pdf|docx|doc|xlsx|xls)$/i, o = i?.getAttribute("accept"), c = t(o, a);
|
|
34
|
+
e(r, 10, c).then(() => {
|
|
35
|
+
m(r[0] ?? null), u({
|
|
36
|
+
target: {
|
|
37
|
+
type: "file",
|
|
38
|
+
name: s,
|
|
39
|
+
files: r,
|
|
40
|
+
value: ""
|
|
41
|
+
},
|
|
42
|
+
preventDefault: () => {}
|
|
43
|
+
}), g(!1);
|
|
44
|
+
}).catch((e) => {
|
|
45
|
+
console.error("[UDragFile] Tập tin không hợp lệ:", e.message), g(!1);
|
|
46
|
+
});
|
|
47
|
+
},
|
|
48
|
+
"aria-label": o,
|
|
49
|
+
htmlFor: "importFile1",
|
|
50
|
+
children: [
|
|
51
|
+
/* @__PURE__ */ i("span", {
|
|
52
|
+
className: "upload-icon",
|
|
53
|
+
children: /* @__PURE__ */ i("i", { className: "fas fa-upload" })
|
|
54
|
+
}),
|
|
55
|
+
/* @__PURE__ */ a("h3", {
|
|
56
|
+
className: "dynamic-message",
|
|
57
|
+
children: [h ? "Thả tập tin vào đây" : "Chọn tập tin (" + d + ")", " "]
|
|
58
|
+
}),
|
|
59
|
+
/* @__PURE__ */ i("span", {
|
|
60
|
+
className: "label",
|
|
61
|
+
children: h ? "" : "hoặc kéo thả"
|
|
62
|
+
}),
|
|
63
|
+
/* @__PURE__ */ i("span", {
|
|
64
|
+
className: "browse-files d-none",
|
|
65
|
+
children: /* @__PURE__ */ i("input", {
|
|
66
|
+
id: "importFile1",
|
|
67
|
+
onChange: _,
|
|
68
|
+
type: "file",
|
|
69
|
+
required: l,
|
|
70
|
+
name: s,
|
|
71
|
+
className: "default-file-input",
|
|
72
|
+
accept: d
|
|
73
|
+
})
|
|
74
|
+
})
|
|
75
|
+
]
|
|
76
|
+
}), /* @__PURE__ */ i("div", {
|
|
77
|
+
className: "file-block",
|
|
78
|
+
children: p && /* @__PURE__ */ i("div", {
|
|
79
|
+
className: "inputClone",
|
|
80
|
+
children: /* @__PURE__ */ a("div", {
|
|
81
|
+
className: "file-info",
|
|
82
|
+
children: [/* @__PURE__ */ i("span", {
|
|
83
|
+
className: "file-name me-2",
|
|
84
|
+
children: p.name
|
|
85
|
+
}), /* @__PURE__ */ a("div", { children: ["|", /* @__PURE__ */ i("span", {
|
|
86
|
+
className: "ms-2 file-size",
|
|
87
|
+
children: (p.size / 1024).toFixed(1) + " KB"
|
|
88
|
+
})] })]
|
|
89
|
+
})
|
|
90
|
+
})
|
|
91
|
+
})]
|
|
92
|
+
})
|
|
93
|
+
});
|
|
94
|
+
};
|
|
95
|
+
//#endregion
|
|
96
|
+
export { o as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("./Common-DFahMuQE.cjs");let t=require("react"),n=require("react/jsx-runtime");var r=({label:r,name:i,cpnClass:a=``,required:o=!1,onChange:s,ext:c=`.xlsx, .xls, .docx, .doc, .pdf`})=>{let l=(0,t.useRef)(null),[u,d]=(0,t.useState)(null),[f,p]=(0,t.useState)(!1),m=async t=>{t.preventDefault();let n=l.current?.querySelector(`.default-file-input`),r=n?.files;if(!r)return;let i=/\.(pdf|docx|doc|xlsx|xls)$/i,a=n.getAttribute(`accept`),o=e.t(a,i);e.r(r,10,o).then(()=>{d(r[0]),s(t)}).catch(e=>{console.error(`[UDragFile] Tập tin không hợp lệ:`,e.message)})},h=async e=>{e.preventDefault(),e.stopPropagation(),e.type===`dragenter`||e.type===`dragover`?p(!0):e.type===`dragleave`&&p(!1)};return(0,n.jsx)(`div`,{className:a,children:(0,n.jsxs)(`div`,{ref:l,className:`upload-files-container mb-3`,children:[(0,n.jsxs)(`label`,{className:`drag-file-area mb-2`,onDragEnter:h,onDragOver:h,onDragLeave:h,onDrop:async t=>{t.preventDefault(),t.stopPropagation();let n=t.dataTransfer.files;if(!n)return;let r=l.current?.querySelector(`.default-file-input`),a=/\.(pdf|docx|doc|xlsx|xls)$/i,o=r?.getAttribute(`accept`),c=e.t(o,a);e.r(n,10,c).then(()=>{d(n[0]??null),s({target:{type:`file`,name:i,files:n,value:``},preventDefault:()=>{}}),p(!1)}).catch(e=>{console.error(`[UDragFile] Tập tin không hợp lệ:`,e.message),p(!1)})},"aria-label":r,htmlFor:`importFile1`,children:[(0,n.jsx)(`span`,{className:`upload-icon`,children:(0,n.jsx)(`i`,{className:`fas fa-upload`})}),(0,n.jsxs)(`h3`,{className:`dynamic-message`,children:[f?`Thả tập tin vào đây`:`Chọn tập tin (`+c+`)`,` `]}),(0,n.jsx)(`span`,{className:`label`,children:f?``:`hoặc kéo thả`}),(0,n.jsx)(`span`,{className:`browse-files d-none`,children:(0,n.jsx)(`input`,{id:`importFile1`,onChange:m,type:`file`,required:o,name:i,className:`default-file-input`,accept:c})})]}),(0,n.jsx)(`div`,{className:`file-block`,children:u&&(0,n.jsx)(`div`,{className:`inputClone`,children:(0,n.jsxs)(`div`,{className:`file-info`,children:[(0,n.jsx)(`span`,{className:`file-name me-2`,children:u.name}),(0,n.jsxs)(`div`,{children:[`|`,(0,n.jsx)(`span`,{className:`ms-2 file-size`,children:(u.size/1024).toFixed(1)+` KB`})]})]})})})]})})};Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return r}});
|