@bwg-ui/core 1.1.33 → 1.2.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/dist/chunks/{common-components-C-dWpBJk.js → common-components-CKPZB7JH.js} +1997 -1981
- package/dist/chunks/common-components-Cw7pbhrp.cjs +183 -0
- package/dist/chunks/{core-uWiM5s5E.js → core-C2wEZy2f.js} +1 -1
- package/dist/chunks/{core-Cdocvd6i.cjs → core-DfOWJ6JQ.cjs} +1 -1
- package/dist/chunks/{enc-base64-1cOwmBuR.js → enc-base64-BNbm__mu.js} +2 -2
- package/dist/chunks/{enc-base64-D3cQUe7q.cjs → enc-base64-DPfS87kE.cjs} +1 -1
- package/dist/chunks/{sha256-C1laOj1I.cjs → sha256-BXXaP9RF.cjs} +1 -1
- package/dist/chunks/{sha256-naKE9EFq.js → sha256-ZWZAX8tH.js} +2 -2
- package/dist/components/common/BwgDraggable.d.ts +1 -1
- package/dist/components/common/BwgDraggable.d.ts.map +1 -1
- package/dist/components/common/BwgGrid.d.ts +4 -4
- package/dist/components/common/BwgGrid.d.ts.map +1 -1
- package/dist/components/common/BwgView.d.ts.map +1 -1
- package/dist/components/common/index.cjs +1 -1
- package/dist/components/common/index.js +5 -5
- package/dist/components/core/BwgUploader.d.ts +31 -6
- package/dist/components/core/BwgUploader.d.ts.map +1 -1
- package/dist/components/core/index.cjs +1 -1
- package/dist/components/core/index.js +519 -451
- package/dist/components/guide/index.cjs +1 -1
- package/dist/components/guide/index.js +1 -1
- package/dist/components/layout/AppWrapper.d.ts +13 -0
- package/dist/components/layout/AppWrapper.d.ts.map +1 -0
- package/dist/components/layout/BwgPortal01.d.ts +5 -0
- package/dist/components/layout/BwgPortal01.d.ts.map +1 -0
- package/dist/components/layout/BwgPortal02.d.ts +5 -0
- package/dist/components/layout/BwgPortal02.d.ts.map +1 -0
- package/dist/components/layout/custom/ConfigurableContent.d.ts +4 -0
- package/dist/components/layout/custom/ConfigurableContent.d.ts.map +1 -0
- package/dist/components/layout/{ErrorBound.d.ts → custom/ConfigurableErrorBound.d.ts} +1 -1
- package/dist/components/layout/custom/ConfigurableErrorBound.d.ts.map +1 -0
- package/dist/components/layout/custom/ConfigurableHeader.d.ts +5 -0
- package/dist/components/layout/custom/ConfigurableHeader.d.ts.map +1 -0
- package/dist/components/layout/custom/ConfigurableMenuTab.d.ts +5 -0
- package/dist/components/layout/custom/ConfigurableMenuTab.d.ts.map +1 -0
- package/dist/components/layout/custom/ConfigurableSidebar.d.ts +5 -0
- package/dist/components/layout/custom/ConfigurableSidebar.d.ts.map +1 -0
- package/dist/components/layout/custom/index.d.ts +5 -0
- package/dist/components/layout/custom/index.d.ts.map +1 -0
- package/dist/components/layout/{ViewContainer.d.ts → default/ContentContainer.d.ts} +1 -1
- package/dist/components/layout/default/ContentContainer.d.ts.map +1 -0
- package/dist/components/layout/default/LandingContainer.d.ts +3 -0
- package/dist/components/layout/default/LandingContainer.d.ts.map +1 -0
- package/dist/components/layout/default/LoadingContainer.d.ts +11 -0
- package/dist/components/layout/default/LoadingContainer.d.ts.map +1 -0
- package/dist/components/layout/default/PopupContainer.d.ts +12 -0
- package/dist/components/layout/default/PopupContainer.d.ts.map +1 -0
- package/dist/components/layout/default/index.d.ts +5 -0
- package/dist/components/layout/default/index.d.ts.map +1 -0
- package/dist/components/layout/{PrivateProtectedOverlay.d.ts → extension/ProtectWrapper.d.ts} +3 -3
- package/dist/components/layout/extension/ProtectWrapper.d.ts.map +1 -0
- package/dist/components/layout/extension/index.d.ts +2 -0
- package/dist/components/layout/extension/index.d.ts.map +1 -0
- package/dist/components/layout/index.cjs +2 -2
- package/dist/components/layout/index.d.ts +7 -7
- package/dist/components/layout/index.d.ts.map +1 -1
- package/dist/components/layout/index.js +1437 -229
- package/dist/components/layout/types.d.ts +181 -0
- package/dist/components/layout/types.d.ts.map +1 -0
- package/dist/components/popup/SearchAddress.d.ts +3 -0
- package/dist/components/popup/SearchAddress.d.ts.map +1 -0
- package/dist/components/popup/SearchDepartmentP01.d.ts +3 -0
- package/dist/components/popup/SearchDepartmentP01.d.ts.map +1 -0
- package/dist/components/popup/SearchDepartmentP02.d.ts +3 -0
- package/dist/components/popup/SearchDepartmentP02.d.ts.map +1 -0
- package/dist/components/popup/SearchEmployeeP01.d.ts +3 -0
- package/dist/components/popup/SearchEmployeeP01.d.ts.map +1 -0
- package/dist/components/popup/SearchEmployeeP02.d.ts +3 -0
- package/dist/components/popup/SearchEmployeeP02.d.ts.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +133 -128
- package/dist/provider/index.cjs +1 -1
- package/dist/provider/index.js +84 -84
- package/dist/styles/assets/images/header/icon/ico-bell.svg +3 -3
- package/dist/styles/assets/images/header/icon/ico-logout.svg +10 -10
- package/dist/styles/assets/images/header/icon/ico-setting.svg +4 -4
- package/dist/styles/assets/images/header/icon/ico-sidebar-arrow.svg +3 -3
- package/dist/styles/layout-test.css +354 -0
- package/dist/styles/layout.css +65 -78
- package/dist/utils/index.cjs +1 -1
- package/dist/utils/index.js +3 -3
- package/package.json +4 -1
- package/dist/chunks/common-components-eKBzroXe.cjs +0 -183
- package/dist/components/layout/ErrorBound.d.ts.map +0 -1
- package/dist/components/layout/LoadingOverlay.d.ts +0 -6
- package/dist/components/layout/LoadingOverlay.d.ts.map +0 -1
- package/dist/components/layout/PrivateProtectedOverlay.d.ts.map +0 -1
- package/dist/components/layout/ProgressOverlay.d.ts +0 -11
- package/dist/components/layout/ProgressOverlay.d.ts.map +0 -1
- package/dist/components/layout/ProtectLayout.d.ts +0 -7
- package/dist/components/layout/ProtectLayout.d.ts.map +0 -1
- package/dist/components/layout/PublicLayout.d.ts +0 -7
- package/dist/components/layout/PublicLayout.d.ts.map +0 -1
- package/dist/components/layout/ViewContainer.d.ts.map +0 -1
package/dist/provider/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react"),O=require("../stores/index.cjs"),l=require("react/jsx-runtime"),M=require("antd"),U=require("../utils/index.cjs"),E={AUTH_BTNS:"SCMSIGN00202",AUTH_MENU:"SCMSIGN00201",SRCH_CODE:"SCMSIGN00301",SRCH_POPU:"SCMPOPU00101",AUTH_BMRK:"SCMBMRK00101"},B=n.createContext(null),_=({children:e,serviceCodes:t={}})=>{n.useEffect(()=>{U.setServiceCodeOverrides(t)},[t]);const s={serviceCodes:t,getServiceCode:r=>{if(t[r]&&t[r].trim()!=="")return console.log(`🔧 Provider 설정 사용: ${r} = ${t[r]}`),t[r];const c=E[r];return console.log(`🔧 기본값 사용: ${r} = ${c}`),c}};return l.jsx(B.Provider,{value:s,children:e})},y=()=>{const e=n.useContext(B);if(!e)throw new Error("useServiceCode must be used within a ServiceCodeProvider");return e},G=e=>{const{getServiceCode:t}=y();return t(e)},V=()=>{const{getServiceCode:e}=y(),t={};for(const o of Object.keys(E))t[o]=e(o);return t},$=()=>{const{getServiceCode:e}=y();console.log("🔧 bwg-core 서비스코드 설정:"),console.log("📋 Provider 설정 > 기본값 순서로 확인");for(const t of Object.keys(E)){const o=e(t);console.log(` ${t}: ${o}`)}},A=n.createContext(null),q=({children:e})=>{const t=n.useRef(null),C={searchBoxRef:t,getFormData:()=>t.current?.getFormData()||{},setFormData:a=>{t.current?.setFormData(a)},resetForm:()=>{t.current?.resetForm()},validateForm:async()=>await t.current?.validateForm()||{success:!1,error:null}};return l.jsx(A.Provider,{value:C,children:e})},H=()=>{const e=n.useContext(A);if(!e)throw new Error("useSearchBox must be used within a SearchBoxProvider");return e},I=n.createContext(null),W=()=>{const e=n.useContext(I);if(!e)throw new Error("useAuth must be used within AuthProvider");return e},z=({children:e})=>{const[t,o]=n.useState(!1),[s,r]=n.useState(!1),c=async i=>{const u=(await i.text()).trim().toLowerCase();try{const d=JSON.parse(u);if(typeof d=="object"&&d&&(d.ok===!0||d.success===!0))return!0}catch{}return!!["true","ok","1","y"].includes(u)},C=async i=>{r(!0);try{const u=await fetch("/serviceEndpoint/sso_check.jsp",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:"token="+encodeURIComponent(i)}),d=u.ok&&await c(u);return o(d),d}catch{return!1}finally{r(!1)}},a=async i=>{r(!0);try{const u=await fetch("/serviceEndpoint/sso_reauth.jsp",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:"pin="+encodeURIComponent(i)});return u.ok&&await c(u)?(o(!0),!0):!1}catch{return!1}finally{r(!1)}},m=()=>{o(!1)},h=n.useMemo(()=>({authed:t,busy:s,verifyWithToken:C,reauthWithPin:a,logout:m}),[t,s]);return l.jsx(I.Provider,{value:h,children:e})},F=n.createContext(
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react"),O=require("../stores/index.cjs"),l=require("react/jsx-runtime"),M=require("antd"),U=require("../utils/index.cjs"),E={AUTH_BTNS:"SCMSIGN00202",AUTH_MENU:"SCMSIGN00201",SRCH_CODE:"SCMSIGN00301",SRCH_POPU:"SCMPOPU00101",AUTH_BMRK:"SCMBMRK00101"},B=n.createContext(null),_=({children:e,serviceCodes:t={}})=>{n.useEffect(()=>{U.setServiceCodeOverrides(t)},[t]);const s={serviceCodes:t,getServiceCode:r=>{if(t[r]&&t[r].trim()!=="")return console.log(`🔧 Provider 설정 사용: ${r} = ${t[r]}`),t[r];const c=E[r];return console.log(`🔧 기본값 사용: ${r} = ${c}`),c}};return l.jsx(B.Provider,{value:s,children:e})},y=()=>{const e=n.useContext(B);if(!e)throw new Error("useServiceCode must be used within a ServiceCodeProvider");return e},G=e=>{const{getServiceCode:t}=y();return t(e)},V=()=>{const{getServiceCode:e}=y(),t={};for(const o of Object.keys(E))t[o]=e(o);return t},$=()=>{const{getServiceCode:e}=y();console.log("🔧 bwg-core 서비스코드 설정:"),console.log("📋 Provider 설정 > 기본값 순서로 확인");for(const t of Object.keys(E)){const o=e(t);console.log(` ${t}: ${o}`)}},A=n.createContext(null),q=({children:e})=>{const t=n.useRef(null),C={searchBoxRef:t,getFormData:()=>t.current?.getFormData()||{},setFormData:a=>{t.current?.setFormData(a)},resetForm:()=>{t.current?.resetForm()},validateForm:async()=>await t.current?.validateForm()||{success:!1,error:null}};return l.jsx(A.Provider,{value:C,children:e})},H=()=>{const e=n.useContext(A);if(!e)throw new Error("useSearchBox must be used within a SearchBoxProvider");return e},I=n.createContext(null),W=()=>{const e=n.useContext(I);if(!e)throw new Error("useAuth must be used within AuthProvider");return e},z=({children:e})=>{const[t,o]=n.useState(!1),[s,r]=n.useState(!1),c=async i=>{const u=(await i.text()).trim().toLowerCase();try{const d=JSON.parse(u);if(typeof d=="object"&&d&&(d.ok===!0||d.success===!0))return!0}catch{}return!!["true","ok","1","y"].includes(u)},C=async i=>{r(!0);try{const u=await fetch("/serviceEndpoint/sso_check.jsp",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:"token="+encodeURIComponent(i)}),d=u.ok&&await c(u);return o(d),d}catch{return!1}finally{r(!1)}},a=async i=>{r(!0);try{const u=await fetch("/serviceEndpoint/sso_reauth.jsp",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:"pin="+encodeURIComponent(i)});return u.ok&&await c(u)?(o(!0),!0):!1}catch{return!1}finally{r(!1)}},m=()=>{o(!1)},h=n.useMemo(()=>({authed:t,busy:s,verifyWithToken:C,reauthWithPin:a,logout:m}),[t,s]);return l.jsx(I.Provider,{value:h,children:e})},F=n.createContext(void 0),J=({children:e})=>{const{codeData:t,isLoading:o,error:s,lastUpdated:r,getCodeList:c,getCodeListByOption:C,getCodeName:a,getCodeColor:m,getCodeByOption:h,getAvailableGroupCodes:i,getGridLookup:u,fetchCommonCodes:d}=O.useCodeStore(),k={codeData:t,isLoading:o,error:s,lastUpdated:r,getCodeList:c,getCodeListByOption:C,getCodeName:a,getCodeColor:m,getCodeByOption:h,getAvailableGroupCodes:i,getGridLookup:u,refreshCodes:d};return l.jsx(F.Provider,{value:k,children:e})},f=()=>{const e=n.useContext(F);if(e===void 0)throw new Error("useCommonCode must be used within a CommonCodeProvider");return e},Q=()=>{const{getCodeList:e,isLoading:t,error:o}=f();return{getCodeList:e,isLoading:t,error:o}},X=()=>{const{getCodeName:e,isLoading:t,error:o}=f();return{getCodeName:e,isLoading:t,error:o}},Y=()=>{const{getCodeColor:e,isLoading:t,error:o}=f();return{getCodeColor:e,isLoading:t,error:o}},Z=()=>{const{getCodeListByOption:e,isLoading:t,error:o}=f();return{getCodeListByOption:e,isLoading:t,error:o}},K=()=>{const{getGridLookup:e,isLoading:t,error:o}=f();return{getGridLookup:e,isLoading:t,error:o}},N=n.createContext(null),ee=()=>{const e=n.useContext(N);if(!e)throw new Error("useLock must be used within ScreenProtectProvider");return e},te=({children:e,idleMs:t=1e4,onUnlock:o,persistLocked:s=!0,storageKey:r="inactivityLocked",eventTarget:c,overlayScope:C="global",overlayId:a="lock-overlay-root",overlayPosition:m="fixed"})=>{const h=s&&typeof window<"u"&&window.localStorage.getItem(r)==="1",[i,u]=n.useState(h),[d,k]=n.useState(t),P=Number.isFinite(d)&&d>0,w=n.useRef(null),T=()=>{try{s&&window.localStorage.setItem(r,"1")}catch{}u(!0)},b=async v=>{if(!(o&&!await o(v))){try{s&&window.localStorage.removeItem(r)}catch{}u(!1),P&&L()}},R=()=>{try{s&&window.localStorage.setItem(r,"1")}catch{}u(!0)},L=()=>{P&&(w.current&&window.clearTimeout(w.current),w.current=window.setTimeout(()=>{R()},d))};n.useEffect(()=>{if(!P)return;const v=()=>{i||L()},x={passive:!0},S=["pointermove","pointerdown","keydown","wheel","touchstart"],g=c??window;return S.forEach(p=>g.addEventListener(p,v,x)),L(),()=>{w.current&&window.clearTimeout(w.current),S.forEach(p=>g.removeEventListener(p,v))}},[d,i,c,P]),n.useEffect(()=>{if(!i)return;const v=p=>{const j=document.getElementById(a);j&&j.contains(p.target)||(p.stopPropagation(),p.preventDefault())},x={capture:!0},S=["pointerdown","pointerup","pointermove","click","wheel","keydown","keyup","touchstart","touchmove"],g=C==="scoped"?c??window:window;return S.forEach(p=>g.addEventListener(p,v,x)),()=>S.forEach(p=>g.removeEventListener(p,v,x))},[i,C,a,c]);const D=n.useMemo(()=>({locked:i,lock:T,unlock:b,setIdleMs:k}),[i]);return l.jsxs(N.Provider,{value:D,children:[l.jsx("div",{style:{width:"100%",height:"100%"},...i?{inert:""}:{},...i?{"aria-hidden":!0}:{},children:e}),i&&l.jsx(oe,{onUnlock:b,overlayId:a,overlayPosition:m})]})},oe=({onUnlock:e,overlayId:t="lock-overlay-root",overlayPosition:o="fixed"})=>{const[s]=n.useState(4),[r,c]=n.useState("");return l.jsx("div",{id:t,"aria-modal":"true",role:"dialog","aria-label":"Locked screen",style:{position:o,inset:0,background:"rgba(12, 14, 18, 0.85)",backdropFilter:"blur(4px)",display:"grid",placeItems:"center",zIndex:9999},children:l.jsxs("div",{className:"lockscreen-form",style:{width:420,maxWidth:"92vw"},children:[l.jsx("div",{className:"lock-icon-wrap",children:l.jsx("span",{className:"lock-icon-box"})}),l.jsx("h2",{children:"잠금됨"}),l.jsx("p",{children:"PIN 번호를 입력하세요"}),l.jsx("div",{className:"lock-ipt-wrap",style:{display:"flex",justifyContent:"center"},children:l.jsx(M.Input.OTP,{mask:"*",autoFocus:!0,length:s,value:r,onChange:C=>{const a=(C??"").replace(/\D/g,"").slice(0,s);c(a),a.length===s&&e(a)}})})]})})},re=()=>!1,ne=()=>{const{popups:e,activePopupId:t,setActivePopup:o,closePopup:s,openPopup:r}=O.usePopupStore(),c=n.useCallback(async(C,a,m)=>{try{await r(C,a,m)}catch(h){throw console.error("팝업 열기 실패:",h),h}},[r]);return{popups:e,activePopupId:t,setActivePopup:o,closePopup:s,showPopup:c,isPopup:e.length>0}};exports.AuthProvider=z;exports.CommonCodeProvider=J;exports.ScreenProtectProvider=te;exports.SearchBoxProvider=q;exports.ServiceCodeProvider=_;exports.useAllServiceCodes=V;exports.useAuth=W;exports.useCodeColor=Y;exports.useCodeList=Q;exports.useCodeListByOption=Z;exports.useCodeName=X;exports.useCommonCode=f;exports.useGridLookup=K;exports.useLock=ee;exports.useLogServiceCodeConfig=$;exports.usePopup=ne;exports.usePopupContext=re;exports.useSearchBox=H;exports.useServiceCode=y;exports.useServiceCodeValue=G;
|
package/dist/provider/index.js
CHANGED
|
@@ -124,12 +124,85 @@ const I = {
|
|
|
124
124
|
[t, n]
|
|
125
125
|
);
|
|
126
126
|
return /* @__PURE__ */ d(R.Provider, { value: m, children: e });
|
|
127
|
-
}, U = y(
|
|
127
|
+
}, U = y(
|
|
128
|
+
void 0
|
|
129
|
+
), ue = ({
|
|
130
|
+
children: e
|
|
131
|
+
}) => {
|
|
132
|
+
const {
|
|
133
|
+
codeData: t,
|
|
134
|
+
isLoading: o,
|
|
135
|
+
error: n,
|
|
136
|
+
lastUpdated: r,
|
|
137
|
+
getCodeList: s,
|
|
138
|
+
getCodeListByOption: l,
|
|
139
|
+
getCodeName: u,
|
|
140
|
+
getCodeColor: f,
|
|
141
|
+
getCodeByOption: m,
|
|
142
|
+
getAvailableGroupCodes: c,
|
|
143
|
+
getGridLookup: i,
|
|
144
|
+
fetchCommonCodes: a
|
|
145
|
+
} = H(), L = {
|
|
146
|
+
codeData: t,
|
|
147
|
+
isLoading: o,
|
|
148
|
+
error: n,
|
|
149
|
+
lastUpdated: r,
|
|
150
|
+
getCodeList: s,
|
|
151
|
+
getCodeListByOption: l,
|
|
152
|
+
getCodeName: u,
|
|
153
|
+
getCodeColor: f,
|
|
154
|
+
getCodeByOption: m,
|
|
155
|
+
getAvailableGroupCodes: c,
|
|
156
|
+
getGridLookup: i,
|
|
157
|
+
refreshCodes: a
|
|
158
|
+
};
|
|
159
|
+
return /* @__PURE__ */ d(U.Provider, { value: L, children: e });
|
|
160
|
+
}, k = () => {
|
|
128
161
|
const e = P(U);
|
|
162
|
+
if (e === void 0)
|
|
163
|
+
throw new Error("useCommonCode must be used within a CommonCodeProvider");
|
|
164
|
+
return e;
|
|
165
|
+
}, ae = () => {
|
|
166
|
+
const { getCodeList: e, isLoading: t, error: o } = k();
|
|
167
|
+
return {
|
|
168
|
+
getCodeList: e,
|
|
169
|
+
isLoading: t,
|
|
170
|
+
error: o
|
|
171
|
+
};
|
|
172
|
+
}, de = () => {
|
|
173
|
+
const { getCodeName: e, isLoading: t, error: o } = k();
|
|
174
|
+
return {
|
|
175
|
+
getCodeName: e,
|
|
176
|
+
isLoading: t,
|
|
177
|
+
error: o
|
|
178
|
+
};
|
|
179
|
+
}, le = () => {
|
|
180
|
+
const { getCodeColor: e, isLoading: t, error: o } = k();
|
|
181
|
+
return {
|
|
182
|
+
getCodeColor: e,
|
|
183
|
+
isLoading: t,
|
|
184
|
+
error: o
|
|
185
|
+
};
|
|
186
|
+
}, pe = () => {
|
|
187
|
+
const { getCodeListByOption: e, isLoading: t, error: o } = k();
|
|
188
|
+
return {
|
|
189
|
+
getCodeListByOption: e,
|
|
190
|
+
isLoading: t,
|
|
191
|
+
error: o
|
|
192
|
+
};
|
|
193
|
+
}, me = () => {
|
|
194
|
+
const { getGridLookup: e, isLoading: t, error: o } = k();
|
|
195
|
+
return {
|
|
196
|
+
getGridLookup: e,
|
|
197
|
+
isLoading: t,
|
|
198
|
+
error: o
|
|
199
|
+
};
|
|
200
|
+
}, j = y(null), fe = () => {
|
|
201
|
+
const e = P(j);
|
|
129
202
|
if (!e)
|
|
130
203
|
throw new Error("useLock must be used within ScreenProtectProvider");
|
|
131
204
|
return e;
|
|
132
|
-
},
|
|
205
|
+
}, he = ({
|
|
133
206
|
children: e,
|
|
134
207
|
idleMs: t = 1e4,
|
|
135
208
|
onUnlock: o,
|
|
@@ -201,7 +274,7 @@ const I = {
|
|
|
201
274
|
() => ({ locked: c, lock: _, unlock: F, setIdleMs: L }),
|
|
202
275
|
[c]
|
|
203
276
|
);
|
|
204
|
-
return /* @__PURE__ */ T(
|
|
277
|
+
return /* @__PURE__ */ T(j.Provider, { value: V, children: [
|
|
205
278
|
/* @__PURE__ */ d(
|
|
206
279
|
"div",
|
|
207
280
|
{
|
|
@@ -269,79 +342,6 @@ const I = {
|
|
|
269
342
|
] })
|
|
270
343
|
}
|
|
271
344
|
);
|
|
272
|
-
}, j = y(
|
|
273
|
-
void 0
|
|
274
|
-
), de = ({
|
|
275
|
-
children: e
|
|
276
|
-
}) => {
|
|
277
|
-
const {
|
|
278
|
-
codeData: t,
|
|
279
|
-
isLoading: o,
|
|
280
|
-
error: n,
|
|
281
|
-
lastUpdated: r,
|
|
282
|
-
getCodeList: s,
|
|
283
|
-
getCodeListByOption: l,
|
|
284
|
-
getCodeName: u,
|
|
285
|
-
getCodeColor: f,
|
|
286
|
-
getCodeByOption: m,
|
|
287
|
-
getAvailableGroupCodes: c,
|
|
288
|
-
getGridLookup: i,
|
|
289
|
-
fetchCommonCodes: a
|
|
290
|
-
} = H(), L = {
|
|
291
|
-
codeData: t,
|
|
292
|
-
isLoading: o,
|
|
293
|
-
error: n,
|
|
294
|
-
lastUpdated: r,
|
|
295
|
-
getCodeList: s,
|
|
296
|
-
getCodeListByOption: l,
|
|
297
|
-
getCodeName: u,
|
|
298
|
-
getCodeColor: f,
|
|
299
|
-
getCodeByOption: m,
|
|
300
|
-
getAvailableGroupCodes: c,
|
|
301
|
-
getGridLookup: i,
|
|
302
|
-
refreshCodes: a
|
|
303
|
-
};
|
|
304
|
-
return /* @__PURE__ */ d(j.Provider, { value: L, children: e });
|
|
305
|
-
}, k = () => {
|
|
306
|
-
const e = P(j);
|
|
307
|
-
if (e === void 0)
|
|
308
|
-
throw new Error("useCommonCode must be used within a CommonCodeProvider");
|
|
309
|
-
return e;
|
|
310
|
-
}, le = () => {
|
|
311
|
-
const { getCodeList: e, isLoading: t, error: o } = k();
|
|
312
|
-
return {
|
|
313
|
-
getCodeList: e,
|
|
314
|
-
isLoading: t,
|
|
315
|
-
error: o
|
|
316
|
-
};
|
|
317
|
-
}, pe = () => {
|
|
318
|
-
const { getCodeName: e, isLoading: t, error: o } = k();
|
|
319
|
-
return {
|
|
320
|
-
getCodeName: e,
|
|
321
|
-
isLoading: t,
|
|
322
|
-
error: o
|
|
323
|
-
};
|
|
324
|
-
}, me = () => {
|
|
325
|
-
const { getCodeColor: e, isLoading: t, error: o } = k();
|
|
326
|
-
return {
|
|
327
|
-
getCodeColor: e,
|
|
328
|
-
isLoading: t,
|
|
329
|
-
error: o
|
|
330
|
-
};
|
|
331
|
-
}, fe = () => {
|
|
332
|
-
const { getCodeListByOption: e, isLoading: t, error: o } = k();
|
|
333
|
-
return {
|
|
334
|
-
getCodeListByOption: e,
|
|
335
|
-
isLoading: t,
|
|
336
|
-
error: o
|
|
337
|
-
};
|
|
338
|
-
}, he = () => {
|
|
339
|
-
const { getGridLookup: e, isLoading: t, error: o } = k();
|
|
340
|
-
return {
|
|
341
|
-
getGridLookup: e,
|
|
342
|
-
isLoading: t,
|
|
343
|
-
error: o
|
|
344
|
-
};
|
|
345
345
|
}, we = () => !1, Ce = () => {
|
|
346
346
|
const { popups: e, activePopupId: t, setActivePopup: o, closePopup: n, openPopup: r } = W(), s = $(
|
|
347
347
|
async (l, u, f) => {
|
|
@@ -364,19 +364,19 @@ const I = {
|
|
|
364
364
|
};
|
|
365
365
|
export {
|
|
366
366
|
ie as AuthProvider,
|
|
367
|
-
|
|
368
|
-
|
|
367
|
+
ue as CommonCodeProvider,
|
|
368
|
+
he as ScreenProtectProvider,
|
|
369
369
|
ne as SearchBoxProvider,
|
|
370
370
|
ee as ServiceCodeProvider,
|
|
371
371
|
oe as useAllServiceCodes,
|
|
372
372
|
ce as useAuth,
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
373
|
+
le as useCodeColor,
|
|
374
|
+
ae as useCodeList,
|
|
375
|
+
pe as useCodeListByOption,
|
|
376
|
+
de as useCodeName,
|
|
377
377
|
k as useCommonCode,
|
|
378
|
-
|
|
379
|
-
|
|
378
|
+
me as useGridLookup,
|
|
379
|
+
fe as useLock,
|
|
380
380
|
re as useLogServiceCodeConfig,
|
|
381
381
|
Ce as usePopup,
|
|
382
382
|
we as usePopupContext,
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
-
<path d="M11.9998 19.9993V20.9993C11.9998 21.3932 12.0774 21.7833 12.2282 22.1473C12.3789 22.5112 12.5999 22.8419 12.8785 23.1205C13.157 23.399 13.4877 23.62 13.8517 23.7708C14.2156 23.9215 14.6057 23.9991 14.9997 23.9991C15.3936 23.9991 15.7837 23.9215 16.1477 23.7708C16.5116 23.62 16.8423 23.399 17.1209 23.1205C17.3994 22.8419 17.6204 22.5112 17.7712 22.1473C17.9219 21.7833 17.9995 21.3932 17.9995 20.9993V19.9993M20.9994 11.9997C20.9994 14.9996 22.9993 19.9993 22.9993 19.9993H7.00006C7.00006 19.9993 8.99996 15.9995 8.99996 11.9997C8.99996 8.73187 11.7318 6 14.9997 6C18.2675 6 20.9994 8.73187 20.9994 11.9997Z" stroke="#485299" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
3
|
-
</svg>
|
|
1
|
+
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M11.9998 19.9993V20.9993C11.9998 21.3932 12.0774 21.7833 12.2282 22.1473C12.3789 22.5112 12.5999 22.8419 12.8785 23.1205C13.157 23.399 13.4877 23.62 13.8517 23.7708C14.2156 23.9215 14.6057 23.9991 14.9997 23.9991C15.3936 23.9991 15.7837 23.9215 16.1477 23.7708C16.5116 23.62 16.8423 23.399 17.1209 23.1205C17.3994 22.8419 17.6204 22.5112 17.7712 22.1473C17.9219 21.7833 17.9995 21.3932 17.9995 20.9993V19.9993M20.9994 11.9997C20.9994 14.9996 22.9993 19.9993 22.9993 19.9993H7.00006C7.00006 19.9993 8.99996 15.9995 8.99996 11.9997C8.99996 8.73187 11.7318 6 14.9997 6C18.2675 6 20.9994 8.73187 20.9994 11.9997Z" stroke="#485299" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
3
|
+
</svg>
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
-
<g clip-path="url(#clip0_93_4488)">
|
|
3
|
-
<path d="M18 7H21C22.1046 7 23 7.89543 23 9V21C23 22.1046 22.1046 23 21 23H18M11 11L7 15M7 15L11 19M7 15L19 15" stroke="#485299" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
4
|
-
</g>
|
|
5
|
-
<defs>
|
|
6
|
-
<clipPath id="clip0_93_4488">
|
|
7
|
-
<rect width="30" height="30" fill="white"/>
|
|
8
|
-
</clipPath>
|
|
9
|
-
</defs>
|
|
10
|
-
</svg>
|
|
1
|
+
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g clip-path="url(#clip0_93_4488)">
|
|
3
|
+
<path d="M18 7H21C22.1046 7 23 7.89543 23 9V21C23 22.1046 22.1046 23 21 23H18M11 11L7 15M7 15L11 19M7 15L19 15" stroke="#485299" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
4
|
+
</g>
|
|
5
|
+
<defs>
|
|
6
|
+
<clipPath id="clip0_93_4488">
|
|
7
|
+
<rect width="30" height="30" fill="white"/>
|
|
8
|
+
</clipPath>
|
|
9
|
+
</defs>
|
|
10
|
+
</svg>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
-
<path d="M14 6H16C16.5523 6 17 6.44772 17 7V7.56879C17 7.99659 17.2871 8.36825 17.6822 8.53228C18.0775 8.69638 18.5377 8.63384 18.8403 8.33123L19.2426 7.92891C19.6331 7.53838 20.2663 7.53838 20.6568 7.92891L22.071 9.34312C22.4616 9.73365 22.4615 10.3668 22.071 10.7573L21.6688 11.1596C21.3661 11.4622 21.3036 11.9225 21.4677 12.3177C21.6317 12.7129 22.0034 13 22.4313 13L23 13C23.5523 13 24 13.4477 24 14V16C24 16.5523 23.5523 17 23 17H22.4312C22.0034 17 21.6318 17.2871 21.4677 17.6822C21.3036 18.0775 21.3661 18.5377 21.6688 18.8403L22.071 19.2426C22.4616 19.6331 22.4616 20.2663 22.071 20.6568L20.6568 22.071C20.2663 22.4616 19.6331 22.4616 19.2426 22.071L18.8403 21.6688C18.5377 21.3661 18.0775 21.3036 17.6822 21.4677C17.2871 21.6318 17 22.0034 17 22.4312V23C17 23.5523 16.5523 24 16 24H14C13.4477 24 13 23.5523 13 23V22.4313C13 22.0034 12.7129 21.6317 12.3177 21.4677C11.9225 21.3036 11.4622 21.3661 11.1596 21.6688L10.7573 22.071C10.3668 22.4616 9.73363 22.4616 9.34311 22.071L7.92889 20.6568C7.53837 20.2663 7.53837 19.6331 7.92889 19.2426L8.33123 18.8403C8.63384 18.5377 8.69638 18.0775 8.53228 17.6822C8.36825 17.2871 7.99659 17 7.56879 17H7C6.44772 17 6 16.5523 6 16V14C6 13.4477 6.44772 13 7 13L7.56877 13C7.99658 13 8.36825 12.7129 8.53229 12.3178C8.6964 11.9225 8.63386 11.4623 8.33123 11.1597L7.92891 10.7573C7.53838 10.3668 7.53838 9.73365 7.92891 9.34313L9.34312 7.92891C9.73365 7.53839 10.3668 7.53839 10.7573 7.92891L11.1597 8.33123C11.4623 8.63386 11.9225 8.6964 12.3178 8.53229C12.7129 8.36825 13 7.99658 13 7.56876V7C13 6.44772 13.4477 6 14 6Z" stroke="#485299" stroke-width="1.5"/>
|
|
3
|
-
<path d="M17 15C17 16.1046 16.1046 17 15 17C13.8954 17 13 16.1046 13 15C13 13.8954 13.8954 13 15 13C16.1046 13 17 13.8954 17 15Z" stroke="#485299" stroke-width="1.5"/>
|
|
4
|
-
</svg>
|
|
1
|
+
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M14 6H16C16.5523 6 17 6.44772 17 7V7.56879C17 7.99659 17.2871 8.36825 17.6822 8.53228C18.0775 8.69638 18.5377 8.63384 18.8403 8.33123L19.2426 7.92891C19.6331 7.53838 20.2663 7.53838 20.6568 7.92891L22.071 9.34312C22.4616 9.73365 22.4615 10.3668 22.071 10.7573L21.6688 11.1596C21.3661 11.4622 21.3036 11.9225 21.4677 12.3177C21.6317 12.7129 22.0034 13 22.4313 13L23 13C23.5523 13 24 13.4477 24 14V16C24 16.5523 23.5523 17 23 17H22.4312C22.0034 17 21.6318 17.2871 21.4677 17.6822C21.3036 18.0775 21.3661 18.5377 21.6688 18.8403L22.071 19.2426C22.4616 19.6331 22.4616 20.2663 22.071 20.6568L20.6568 22.071C20.2663 22.4616 19.6331 22.4616 19.2426 22.071L18.8403 21.6688C18.5377 21.3661 18.0775 21.3036 17.6822 21.4677C17.2871 21.6318 17 22.0034 17 22.4312V23C17 23.5523 16.5523 24 16 24H14C13.4477 24 13 23.5523 13 23V22.4313C13 22.0034 12.7129 21.6317 12.3177 21.4677C11.9225 21.3036 11.4622 21.3661 11.1596 21.6688L10.7573 22.071C10.3668 22.4616 9.73363 22.4616 9.34311 22.071L7.92889 20.6568C7.53837 20.2663 7.53837 19.6331 7.92889 19.2426L8.33123 18.8403C8.63384 18.5377 8.69638 18.0775 8.53228 17.6822C8.36825 17.2871 7.99659 17 7.56879 17H7C6.44772 17 6 16.5523 6 16V14C6 13.4477 6.44772 13 7 13L7.56877 13C7.99658 13 8.36825 12.7129 8.53229 12.3178C8.6964 11.9225 8.63386 11.4623 8.33123 11.1597L7.92891 10.7573C7.53838 10.3668 7.53838 9.73365 7.92891 9.34313L9.34312 7.92891C9.73365 7.53839 10.3668 7.53839 10.7573 7.92891L11.1597 8.33123C11.4623 8.63386 11.9225 8.6964 12.3178 8.53229C12.7129 8.36825 13 7.99658 13 7.56876V7C13 6.44772 13.4477 6 14 6Z" stroke="#485299" stroke-width="1.5"/>
|
|
3
|
+
<path d="M17 15C17 16.1046 16.1046 17 15 17C13.8954 17 13 16.1046 13 15C13 13.8954 13.8954 13 15 13C16.1046 13 17 13.8954 17 15Z" stroke="#485299" stroke-width="1.5"/>
|
|
4
|
+
</svg>
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
-
<path d="M6.77771 8.1809C6.37747 8.67607 5.62253 8.67607 5.22229 8.18089L2.98627 5.41454C2.4577 4.7606 2.92314 3.78592 3.76399 3.78592L8.23602 3.78592C9.07687 3.78592 9.5423 4.7606 9.01373 5.41454L6.77771 8.1809Z" fill="#B9B9B9"/>
|
|
3
|
-
</svg>
|
|
1
|
+
<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M6.77771 8.1809C6.37747 8.67607 5.62253 8.67607 5.22229 8.18089L2.98627 5.41454C2.4577 4.7606 2.92314 3.78592 3.76399 3.78592L8.23602 3.78592C9.07687 3.78592 9.5423 4.7606 9.01373 5.41454L6.77771 8.1809Z" fill="#B9B9B9"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
/* 메인 레이아웃 스타일 */
|
|
2
|
+
.main-layout {
|
|
3
|
+
min-height: 100vh;
|
|
4
|
+
overflow: hidden;
|
|
5
|
+
min-width: 1280px;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
/* 헤더 스타일 */
|
|
9
|
+
.header-wrapper {
|
|
10
|
+
background: var(--header-bg);
|
|
11
|
+
padding: 0 30px 0 20px;
|
|
12
|
+
border-bottom: 1px solid var(--border-color);
|
|
13
|
+
display: flex;
|
|
14
|
+
justify-content: space-between;
|
|
15
|
+
align-items: center;
|
|
16
|
+
z-index: 1000;
|
|
17
|
+
gap: 24px;
|
|
18
|
+
color: var(--header-text);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* 헤더 좌측
|
|
23
|
+
*/
|
|
24
|
+
.header-left {
|
|
25
|
+
display: flex;
|
|
26
|
+
align-items: center;
|
|
27
|
+
min-width: 200px;
|
|
28
|
+
|
|
29
|
+
.logo-container {
|
|
30
|
+
display: flex;
|
|
31
|
+
align-items: center;
|
|
32
|
+
height: 100%;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* 헤더 우측
|
|
38
|
+
*/
|
|
39
|
+
.header-right {
|
|
40
|
+
display: flex;
|
|
41
|
+
align-items: center;
|
|
42
|
+
justify-content: flex-end;
|
|
43
|
+
|
|
44
|
+
.logout-btn {
|
|
45
|
+
cursor: pointer;
|
|
46
|
+
}
|
|
47
|
+
.theme-btn {
|
|
48
|
+
cursor: pointer;
|
|
49
|
+
}
|
|
50
|
+
.alarm-btn {
|
|
51
|
+
cursor: pointer;
|
|
52
|
+
}
|
|
53
|
+
.avatar {
|
|
54
|
+
cursor: pointer;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.side-wrapper {
|
|
59
|
+
height: calc(100vh - 50px); /* 헤더 높이(50px)를 제외 */
|
|
60
|
+
overflow: visible; /* 토글 버튼이 짤리지 않도록 visible로 변경 */
|
|
61
|
+
display: flex;
|
|
62
|
+
flex-direction: column;
|
|
63
|
+
background-color: var(--sidebar-bg) !important;
|
|
64
|
+
position: relative; /* 토글 버튼의 absolute 포지셔닝을 위해 */
|
|
65
|
+
border-right: 1px solid var(--border-color);
|
|
66
|
+
|
|
67
|
+
.sider-toggle-btn {
|
|
68
|
+
position: absolute;
|
|
69
|
+
top: 9px;
|
|
70
|
+
right: -25px;
|
|
71
|
+
z-index: 1000;
|
|
72
|
+
width: 25px;
|
|
73
|
+
height: 41px;
|
|
74
|
+
background-color: #ffffff;
|
|
75
|
+
border: 1px solid #dddddd;
|
|
76
|
+
border-radius: 0 10px 10px 0;
|
|
77
|
+
display: flex;
|
|
78
|
+
align-items: center;
|
|
79
|
+
justify-content: center;
|
|
80
|
+
cursor: pointer;
|
|
81
|
+
box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.05);
|
|
82
|
+
transition: all 0.3s ease;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.sider-toggle-btn .ant-btn {
|
|
86
|
+
border-radius: 0 10px 10px 0;
|
|
87
|
+
font-size: 12px;
|
|
88
|
+
color: #787878;
|
|
89
|
+
padding: 0;
|
|
90
|
+
width: 100%;
|
|
91
|
+
height: 100%;
|
|
92
|
+
display: flex;
|
|
93
|
+
align-items: center;
|
|
94
|
+
justify-content: center;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.sider-search-ipt {
|
|
98
|
+
background: var(--sidebar-search-bg);
|
|
99
|
+
border-radius: var(--border-radius-xl);
|
|
100
|
+
border: 0;
|
|
101
|
+
color: var(--sidebar-search-text);
|
|
102
|
+
font-size: 13px;
|
|
103
|
+
font-weight: var(--font-weight-medium);
|
|
104
|
+
.anticon-search svg {
|
|
105
|
+
width: 20px;
|
|
106
|
+
height: 20px;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.sider-segmented {
|
|
111
|
+
padding: 5px;
|
|
112
|
+
background-color: var(--sidebar-segmented-bg);
|
|
113
|
+
border-radius: var(--border-radius-sm);
|
|
114
|
+
font-size: 13px;
|
|
115
|
+
color: var(--sidebar-segmented-text);
|
|
116
|
+
width: 100%;
|
|
117
|
+
|
|
118
|
+
.sider-segmented-item {
|
|
119
|
+
width: 20px;
|
|
120
|
+
height: 20px;
|
|
121
|
+
display: flex;
|
|
122
|
+
align-items: center;
|
|
123
|
+
justify-content: center;
|
|
124
|
+
flex-shrink: 0;
|
|
125
|
+
}
|
|
126
|
+
.ant-segmented-group {
|
|
127
|
+
gap: 5px;
|
|
128
|
+
}
|
|
129
|
+
.ant-segmented-item-selected {
|
|
130
|
+
color: var(--text-high);
|
|
131
|
+
font-weight: var(--font-weight-semibold);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.sider-content {
|
|
136
|
+
flex: 1;
|
|
137
|
+
display: flex;
|
|
138
|
+
flex-direction: column;
|
|
139
|
+
overflow: hidden;
|
|
140
|
+
|
|
141
|
+
/* 사이드바 로딩 스타일 */
|
|
142
|
+
.sider-loading {
|
|
143
|
+
position: absolute;
|
|
144
|
+
top: 50%;
|
|
145
|
+
left: 50%;
|
|
146
|
+
transform: translate(-50%, -50%);
|
|
147
|
+
display: flex;
|
|
148
|
+
flex-direction: column;
|
|
149
|
+
align-items: center;
|
|
150
|
+
justify-content: center;
|
|
151
|
+
gap: 12px;
|
|
152
|
+
z-index: 10;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.sider-loading-text {
|
|
156
|
+
font-size: 13px;
|
|
157
|
+
color: var(--text-secondary);
|
|
158
|
+
font-weight: var(--font-weight-medium);
|
|
159
|
+
letter-spacing: -0.2px;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/* 사이드바 에러 스타일 */
|
|
163
|
+
.sider-error {
|
|
164
|
+
position: absolute;
|
|
165
|
+
top: 50%;
|
|
166
|
+
left: 50%;
|
|
167
|
+
transform: translate(-50%, -50%);
|
|
168
|
+
display: flex;
|
|
169
|
+
flex-direction: column;
|
|
170
|
+
align-items: center;
|
|
171
|
+
justify-content: center;
|
|
172
|
+
gap: 8px;
|
|
173
|
+
padding: 16px;
|
|
174
|
+
background: rgba(255, 77, 79, 0.1);
|
|
175
|
+
border: 1px solid rgba(255, 77, 79, 0.2);
|
|
176
|
+
border-radius: var(--border-radius-md);
|
|
177
|
+
z-index: 10;
|
|
178
|
+
max-width: 200px;
|
|
179
|
+
text-align: center;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
.sider-error-icon {
|
|
183
|
+
font-size: 20px;
|
|
184
|
+
color: #ff4d4f;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
.sider-error-text {
|
|
188
|
+
font-size: 12px;
|
|
189
|
+
color: #ff4d4f;
|
|
190
|
+
font-weight: var(--font-weight-medium);
|
|
191
|
+
line-height: 1.4;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
.sider-menu-container {
|
|
195
|
+
padding-right: 17px;
|
|
196
|
+
margin-right: -17px;
|
|
197
|
+
height: 100%;
|
|
198
|
+
overflow-y: auto;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/* 사이드바 스크롤바 스타일링 */
|
|
202
|
+
.sider-menu::-webkit-scrollbar,
|
|
203
|
+
.sider-menu-container::-webkit-scrollbar {
|
|
204
|
+
width: 6px;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
.sider-menu::-webkit-scrollbar-track,
|
|
208
|
+
.sider-menu-container::-webkit-scrollbar-track {
|
|
209
|
+
background: transparent;
|
|
210
|
+
border-radius: 3px;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
.sider-menu::-webkit-scrollbar-thumb,
|
|
214
|
+
.sider-menu-container::-webkit-scrollbar-thumb {
|
|
215
|
+
background: #d9d9d9;
|
|
216
|
+
border-radius: 3px;
|
|
217
|
+
border: 1px solid #f0f0f0;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
.sider-menu::-webkit-scrollbar-thumb:hover,
|
|
221
|
+
.sider-menu-container::-webkit-scrollbar-thumb:hover {
|
|
222
|
+
background: #bfbfbf;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/* Firefox 스크롤바 스타일링 */
|
|
226
|
+
.sider-menu {
|
|
227
|
+
scrollbar-width: thin;
|
|
228
|
+
scrollbar-color: #d9d9d9 #f0f0f0;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/* Ant Design 메뉴 스타일 오버라이드 */
|
|
232
|
+
.sider-menu .ant-menu-item {
|
|
233
|
+
height: 30px;
|
|
234
|
+
transition: all 0.3s ease;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
.sider-menu .ant-menu-submenu-title {
|
|
238
|
+
height: 30px !important;
|
|
239
|
+
line-height: 30px !important;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
.sider-menu .ant-menu-submenu-title:hover {
|
|
243
|
+
background-color: unset !important;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* 메뉴 탭 스타일
|
|
250
|
+
*/
|
|
251
|
+
.menu-tab-wrapper {
|
|
252
|
+
background: var(--bg-primary);
|
|
253
|
+
|
|
254
|
+
.menu-tabs.ant-tabs .ant-tabs-nav {
|
|
255
|
+
margin: 0;
|
|
256
|
+
padding: 10px 34px 0 29px;
|
|
257
|
+
height: 45px;
|
|
258
|
+
display: flex;
|
|
259
|
+
align-items: center;
|
|
260
|
+
justify-content: space-between;
|
|
261
|
+
}
|
|
262
|
+
.ant-tabs-nav::before {
|
|
263
|
+
left: 29px;
|
|
264
|
+
bottom: 0;
|
|
265
|
+
border-bottom: 1px solid var(--border-color);
|
|
266
|
+
}
|
|
267
|
+
.menu-tabs.ant-tabs .ant-tabs-nav-wrap {
|
|
268
|
+
height: 35px;
|
|
269
|
+
flex: 1 !important;
|
|
270
|
+
align-items: flex-end;
|
|
271
|
+
}
|
|
272
|
+
.menu-tabs.ant-tabs .ant-tabs-nav-list {
|
|
273
|
+
display: flex;
|
|
274
|
+
align-items: center;
|
|
275
|
+
height: 100%;
|
|
276
|
+
flex-wrap: nowrap;
|
|
277
|
+
}
|
|
278
|
+
.menu-tabs.ant-tabs .ant-tabs-tab {
|
|
279
|
+
height: 100%;
|
|
280
|
+
border-radius: 10px 10px 0 0;
|
|
281
|
+
transition: all 0.3s ease;
|
|
282
|
+
padding: 0 10px 0 24px;
|
|
283
|
+
position: relative ;
|
|
284
|
+
background: #E7E9F4;
|
|
285
|
+
margin: 0 4px 0 0;
|
|
286
|
+
font-size: var(--font-size-sm);
|
|
287
|
+
color: #777;
|
|
288
|
+
border: 0;
|
|
289
|
+
.ant-tabs-tab-remove {
|
|
290
|
+
width: 20px;
|
|
291
|
+
height: 20px;
|
|
292
|
+
margin-right: 0;
|
|
293
|
+
margin-left: 10px;
|
|
294
|
+
color: #A1A1A1;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
.menu-tabs.ant-tabs .ant-tabs-tab:not(.ant-tabs-tab-active):hover {
|
|
298
|
+
background: #dbdeec;
|
|
299
|
+
color: var(--text-secondary);
|
|
300
|
+
}
|
|
301
|
+
.menu-tabs.ant-tabs .ant-tabs-tab-active {
|
|
302
|
+
background: var(--bg-primary);
|
|
303
|
+
border: 2px solid var(--primary-color);
|
|
304
|
+
border-bottom: none;
|
|
305
|
+
.ant-tabs-tab-btn {
|
|
306
|
+
color:var(--primary-color);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
.menu-tabs.ant-tabs .ant-tabs-content-holder {
|
|
310
|
+
display: none !important;
|
|
311
|
+
}
|
|
312
|
+
.menu-tabs.ant-tabs .ant-tabs-extra-content {
|
|
313
|
+
display: flex;
|
|
314
|
+
align-items: center;
|
|
315
|
+
gap: 4px;
|
|
316
|
+
flex-shrink: 0;
|
|
317
|
+
white-space: nowrap;
|
|
318
|
+
overflow: hidden;
|
|
319
|
+
padding-bottom: 13px;
|
|
320
|
+
}
|
|
321
|
+
.menu-tabs.ant-tabs .ant-tabs-extra-content > div {
|
|
322
|
+
display: flex !important;
|
|
323
|
+
align-items: center !important;
|
|
324
|
+
gap: 4px !important;
|
|
325
|
+
flex-wrap: nowrap !important;
|
|
326
|
+
}
|
|
327
|
+
.menu-tabs.ant-tabs .ant-tabs-extra-content .ant-btn {
|
|
328
|
+
height: 20px !important;
|
|
329
|
+
width: 20px !important;
|
|
330
|
+
font-size: 12px !important;
|
|
331
|
+
}
|
|
332
|
+
.menu-tabs.ant-tabs .ant-tabs-extra-content .ant-btn:hover {
|
|
333
|
+
color: #5E5E5E;
|
|
334
|
+
}
|
|
335
|
+
.menu-tabs.ant-tabs .ant-tabs-extra-content .ant-btn:disabled {
|
|
336
|
+
opacity: 0.5;
|
|
337
|
+
cursor: not-allowed;
|
|
338
|
+
background: none;
|
|
339
|
+
}
|
|
340
|
+
.menu-tabs.ant-tabs .ant-tabs-extra-content .menu-tabs-close-btn {
|
|
341
|
+
margin-left: 11px;
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
.menu-nav-wrapper {
|
|
345
|
+
display: flex;
|
|
346
|
+
align-items: center;
|
|
347
|
+
gap: 4px;
|
|
348
|
+
|
|
349
|
+
.menu-nav-buttons {
|
|
350
|
+
}
|
|
351
|
+
.menu-nav-tooltip {
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
}
|