@bwg-ui/core 1.0.0
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/README.md +106 -0
- package/dist/chunks/BwgLargeUploader-ByN1XWV4.js +809 -0
- package/dist/chunks/BwgLargeUploader-CU0-MVk4.cjs +1 -0
- package/dist/chunks/BwgSpace-CnLM4qcg.js +26 -0
- package/dist/chunks/BwgSpace-b0hmM1Ht.cjs +1 -0
- package/dist/chunks/QuickServiceToggle-CiCuWfCF.cjs +183 -0
- package/dist/chunks/QuickServiceToggle-y7esp1kp.js +15510 -0
- package/dist/chunks/ServiceCodeContext--ZnMtjzD.cjs +1 -0
- package/dist/chunks/ServiceCodeContext-CDZMr3Mm.js +87 -0
- package/dist/chunks/UtilsContext-B16Gh9LL.cjs +1 -0
- package/dist/chunks/UtilsContext-BbfZYiMR.js +240 -0
- package/dist/chunks/_commonjsHelpers-C6fGbg64.js +6 -0
- package/dist/chunks/_commonjsHelpers-DwGv2jUC.cjs +1 -0
- package/dist/chunks/codeStore-Dt6j826J.cjs +1 -0
- package/dist/chunks/codeStore-bxk_q1sl.js +449 -0
- package/dist/chunks/commonUtils-BV6WFv-z.js +628 -0
- package/dist/chunks/commonUtils-L9Jgc5y-.cjs +1 -0
- package/dist/chunks/favoriteStore-CguRSEcH.js +367 -0
- package/dist/chunks/favoriteStore-TgeeY32l.cjs +1 -0
- package/dist/chunks/jsx-runtime-CeSfJrVB.cjs +30 -0
- package/dist/chunks/jsx-runtime-Dpn_P65e.js +633 -0
- package/dist/chunks/messageUtils-9DXOwada.js +117 -0
- package/dist/chunks/messageUtils-RjJD_ArW.cjs +1 -0
- package/dist/chunks/popupStore-CVD8SPTa.cjs +1 -0
- package/dist/chunks/popupStore-Dp_fqtim.js +96 -0
- package/dist/chunks/realFormat-Cha7OTd9.cjs +1 -0
- package/dist/chunks/realFormat-DRGLFabQ.js +304 -0
- package/dist/chunks/serviceConfig-BJBsdee_.js +699 -0
- package/dist/chunks/serviceConfig-Cr2P4yr4.cjs +2 -0
- package/dist/components/common/BwgButtonGroup.d.ts +31 -0
- package/dist/components/common/BwgCmptArea.d.ts +16 -0
- package/dist/components/common/BwgConfigProvider.d.ts +10 -0
- package/dist/components/common/BwgDrawer.d.ts +20 -0
- package/dist/components/common/BwgGrid.d.ts +505 -0
- package/dist/components/common/BwgInfoArea.d.ts +8 -0
- package/dist/components/common/BwgPopup.d.ts +9 -0
- package/dist/components/common/BwgSpace.d.ts +11 -0
- package/dist/components/common/BwgTable.d.ts +13 -0
- package/dist/components/common/BwgTabs.d.ts +5 -0
- package/dist/components/common/BwgTitleBox.d.ts +29 -0
- package/dist/components/common/BwgView.d.ts +36 -0
- package/dist/components/common/ContentBox.d.ts +19 -0
- package/dist/components/common/ContentLayOut.d.ts +13 -0
- package/dist/components/common/GlobalConfigProvider.d.ts +9 -0
- package/dist/components/common/QuickServiceToggle.d.ts +13 -0
- package/dist/components/common/SearchBox.d.ts +16 -0
- package/dist/components/common/index.cjs +1 -0
- package/dist/components/common/index.d.ts +34 -0
- package/dist/components/common/index.js +24 -0
- package/dist/components/core/BwgButton.d.ts +6 -0
- package/dist/components/core/BwgCheck.d.ts +11 -0
- package/dist/components/core/BwgCheckList.d.ts +11 -0
- package/dist/components/core/BwgDatePicker.d.ts +10 -0
- package/dist/components/core/BwgForm.d.ts +6 -0
- package/dist/components/core/BwgFormItem.d.ts +17 -0
- package/dist/components/core/BwgInput.d.ts +9 -0
- package/dist/components/core/BwgLargeUploader.d.ts +15 -0
- package/dist/components/core/BwgMaskedInput.d.ts +20 -0
- package/dist/components/core/BwgMaskedPicker.d.ts +11 -0
- package/dist/components/core/BwgMultiSelect.d.ts +14 -0
- package/dist/components/core/BwgNumber.d.ts +13 -0
- package/dist/components/core/BwgRadio.d.ts +8 -0
- package/dist/components/core/BwgRangePicker.d.ts +12 -0
- package/dist/components/core/BwgSearch.d.ts +16 -0
- package/dist/components/core/BwgSelect.d.ts +15 -0
- package/dist/components/core/BwgTextArea.d.ts +8 -0
- package/dist/components/core/BwgUploader.d.ts +34 -0
- package/dist/components/core/index.cjs +1 -0
- package/dist/components/core/index.d.ts +36 -0
- package/dist/components/core/index.js +21 -0
- package/dist/components/guide/BwgComponentGuide.d.ts +2 -0
- package/dist/components/guide/BwgDeveloperGuide.d.ts +2 -0
- package/dist/components/guide/index.cjs +1 -0
- package/dist/components/guide/index.d.ts +2 -0
- package/dist/components/guide/index.js +7 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +291 -0
- package/dist/provider/contexts/CommonCodeContext.d.ts +46 -0
- package/dist/provider/contexts/SearchBoxContext.d.ts +15 -0
- package/dist/provider/contexts/ServiceCodeContext.d.ts +108 -0
- package/dist/provider/contexts/UtilsContext.d.ts +194 -0
- package/dist/provider/contexts/index.d.ts +4 -0
- package/dist/provider/hooks/index.d.ts +2 -0
- package/dist/provider/hooks/usePopup.d.ts +17 -0
- package/dist/provider/hooks/useViewState.d.ts +14 -0
- package/dist/provider/index.cjs +1 -0
- package/dist/provider/index.d.ts +2 -0
- package/dist/provider/index.js +27 -0
- package/dist/public/styles/assets/images/contents/icon/ico-business-trip.svg +21 -0
- package/dist/public/styles/assets/images/contents/icon/ico-holiday.svg +23 -0
- package/dist/public/styles/assets/images/contents/icon/ico-menu-help.svg +5 -0
- package/dist/public/styles/assets/images/contents/icon/ico-overtime.svg +17 -0
- package/dist/public/styles/assets/images/contents/icon/ico-quick-tab-move.svg +8 -0
- package/dist/public/styles/assets/images/contents/icon/quick tab-text.svg +4 -0
- package/dist/public/styles/assets/images/contents/icon/quick-tab-text.svg +4 -0
- package/dist/public/test.txt +0 -0
- package/dist/stores/codeStore.d.ts +173 -0
- package/dist/stores/favoriteStore.d.ts +19 -0
- package/dist/stores/index.cjs +1 -0
- package/dist/stores/index.d.ts +14 -0
- package/dist/stores/index.js +20 -0
- package/dist/stores/menuStore.d.ts +52 -0
- package/dist/stores/popupStore.d.ts +72 -0
- package/dist/stores/userStore.d.ts +36 -0
- package/dist/styles/assets/fonts/Roboto/Roboto-bold.eot +2751 -0
- package/dist/styles/assets/fonts/Roboto/Roboto-bold.svg +626 -0
- package/dist/styles/assets/fonts/Roboto/Roboto-bold.ttf +2755 -0
- package/dist/styles/assets/fonts/Roboto/Roboto-bold.woff +2755 -0
- package/dist/styles/assets/fonts/Roboto/Roboto-bold.woff2 +2754 -0
- package/dist/styles/assets/fonts/Roboto/Roboto-medium.eot +0 -0
- package/dist/styles/assets/fonts/Roboto/Roboto-medium.svg +1064 -0
- package/dist/styles/assets/fonts/Roboto/Roboto-medium.ttf +0 -0
- package/dist/styles/assets/fonts/Roboto/Roboto-medium.woff +0 -0
- package/dist/styles/assets/fonts/Roboto/Roboto-medium.woff2 +2754 -0
- package/dist/styles/assets/fonts/Roboto/Roboto-regular.eot +0 -0
- package/dist/styles/assets/fonts/Roboto/Roboto-regular.svg +1063 -0
- package/dist/styles/assets/fonts/Roboto/Roboto-regular.ttf +1597 -0
- package/dist/styles/assets/fonts/Roboto/Roboto-regular.woff +1597 -0
- package/dist/styles/assets/fonts/Roboto/Roboto-regular.woff2 +1597 -0
- package/dist/styles/assets/fonts/material/MaterialIcons-Regular.eot +1594 -0
- package/dist/styles/assets/fonts/material/MaterialIcons-Regular.ttf +0 -0
- package/dist/styles/assets/fonts/material/MaterialIcons-Regular.woff +1594 -0
- package/dist/styles/assets/fonts/material/MaterialIcons-Regular.woff2 +1594 -0
- package/dist/styles/assets/fonts/material/MaterialSymbolsOutlined.woff2 +0 -0
- package/dist/styles/assets/fonts/meiryo/meiryo.ttf +0 -0
- package/dist/styles/assets/fonts/meiryo/meiryob.ttf +0 -0
- package/dist/styles/assets/fonts/nanumBarun/NanumBarunGothic.eot +0 -0
- package/dist/styles/assets/fonts/nanumBarun/NanumBarunGothic.ttf +0 -0
- package/dist/styles/assets/fonts/nanumBarun/NanumBarunGothic.woff +0 -0
- package/dist/styles/assets/fonts/nanumBarun/NanumBarunGothicBold.eot +0 -0
- package/dist/styles/assets/fonts/nanumBarun/NanumBarunGothicBold.ttf +0 -0
- package/dist/styles/assets/fonts/nanumBarun/NanumBarunGothicBold.woff +0 -0
- package/dist/styles/assets/fonts/nanumBarun/NanumBarunGothicWeb.eot +0 -0
- package/dist/styles/assets/fonts/nanumBarun/NanumBarunGothicWeb.ttf +0 -0
- package/dist/styles/assets/fonts/nanumBarun/NanumBarunGothicWeb.woff +0 -0
- package/dist/styles/assets/fonts/nanumBarun/NanumBarunGothicWebBold.eot +0 -0
- package/dist/styles/assets/fonts/nanumBarun/NanumBarunGothicWebBold.ttf +0 -0
- package/dist/styles/assets/fonts/nanumBarun/NanumBarunGothicWebBold.woff +0 -0
- package/dist/styles/assets/fonts/nanumBarun/NanumBarunGothicWebLight.eot +0 -0
- package/dist/styles/assets/fonts/nanumBarun/NanumBarunGothicWebLight.ttf +0 -0
- package/dist/styles/assets/fonts/nanumBarun/NanumBarunGothicWebLight.woff +0 -0
- package/dist/styles/assets/fonts/notokr/NotoSans-Bold.eot +2314 -0
- package/dist/styles/assets/fonts/notokr/NotoSans-Bold.otf +2314 -0
- package/dist/styles/assets/fonts/notokr/NotoSans-Bold.svg +47 -0
- package/dist/styles/assets/fonts/notokr/NotoSans-Bold.ttf +2301 -0
- package/dist/styles/assets/fonts/notokr/NotoSans-Bold.woff +2314 -0
- package/dist/styles/assets/fonts/notokr/NotoSans-Bold.woff2 +2315 -0
- package/dist/styles/assets/fonts/notokr/NotoSans-Light.otf +0 -0
- package/dist/styles/assets/fonts/notokr/NotoSans-Light.woff +0 -0
- package/dist/styles/assets/fonts/notokr/NotoSans-Light.woff2 +0 -0
- package/dist/styles/assets/fonts/notokr/NotoSans-Medium.eot +0 -0
- package/dist/styles/assets/fonts/notokr/NotoSans-Medium.otf +0 -0
- package/dist/styles/assets/fonts/notokr/NotoSans-Medium.svg +47 -0
- package/dist/styles/assets/fonts/notokr/NotoSans-Medium.ttf +0 -0
- package/dist/styles/assets/fonts/notokr/NotoSans-Medium.woff +0 -0
- package/dist/styles/assets/fonts/notokr/NotoSans-Medium.woff2 +0 -0
- package/dist/styles/assets/fonts/notokr/NotoSans-Regular.eot +0 -0
- package/dist/styles/assets/fonts/notokr/NotoSans-Regular.otf +0 -0
- package/dist/styles/assets/fonts/notokr/NotoSans-Regular.svg +47 -0
- package/dist/styles/assets/fonts/notokr/NotoSans-Regular.ttf +2299 -0
- package/dist/styles/assets/fonts/notokr/NotoSans-Regular.woff +0 -0
- package/dist/styles/assets/fonts/notokr/NotoSans-Regular.woff2 +0 -0
- package/dist/styles/assets/fonts/poppins/Poppins-ExtraLight.eot +0 -0
- package/dist/styles/assets/fonts/poppins/Poppins-ExtraLight.ttf +0 -0
- package/dist/styles/assets/fonts/poppins/Poppins-ExtraLight.woff +0 -0
- package/dist/styles/assets/fonts/poppins/Poppins-ExtraLight.woff2 +0 -0
- package/dist/styles/assets/fonts/poppins/Poppins-Light.eot +0 -0
- package/dist/styles/assets/fonts/poppins/Poppins-Light.ttf +0 -0
- package/dist/styles/assets/fonts/poppins/Poppins-Light.woff +0 -0
- package/dist/styles/assets/fonts/poppins/Poppins-Light.woff2 +0 -0
- package/dist/styles/assets/fonts/poppins/Poppins-Medium.eot +0 -0
- package/dist/styles/assets/fonts/poppins/Poppins-Medium.ttf +0 -0
- package/dist/styles/assets/fonts/poppins/Poppins-Medium.woff +0 -0
- package/dist/styles/assets/fonts/poppins/Poppins-Medium.woff2 +0 -0
- package/dist/styles/assets/fonts/poppins/Poppins-Regular.eot +0 -0
- package/dist/styles/assets/fonts/poppins/Poppins-Regular.ttf +0 -0
- package/dist/styles/assets/fonts/poppins/Poppins-Regular.woff +0 -0
- package/dist/styles/assets/fonts/poppins/Poppins-Regular.woff2 +0 -0
- package/dist/styles/assets/fonts/poppins/Poppins-SemiBold.eot +0 -0
- package/dist/styles/assets/fonts/poppins/Poppins-SemiBold.ttf +0 -0
- package/dist/styles/assets/fonts/poppins/Poppins-SemiBold.woff +0 -0
- package/dist/styles/assets/fonts/poppins/Poppins-SemiBold.woff2 +0 -0
- package/dist/styles/assets/fonts/pretendard/Pretendard-Black.woff2 +0 -0
- package/dist/styles/assets/fonts/pretendard/Pretendard-Bold.woff2 +0 -0
- package/dist/styles/assets/fonts/pretendard/Pretendard-ExtraBold.woff2 +0 -0
- package/dist/styles/assets/fonts/pretendard/Pretendard-ExtraLight.woff2 +0 -0
- package/dist/styles/assets/fonts/pretendard/Pretendard-Light.woff2 +0 -0
- package/dist/styles/assets/fonts/pretendard/Pretendard-Medium.woff2 +0 -0
- package/dist/styles/assets/fonts/pretendard/Pretendard-Regular.woff2 +0 -0
- package/dist/styles/assets/fonts/pretendard/Pretendard-SemiBold.woff2 +0 -0
- package/dist/styles/assets/fonts/pretendard/Pretendard-Thin.woff2 +0 -0
- package/dist/styles/assets/images/README.md +144 -0
- package/dist/styles/assets/images/backgrounds/landing_bg.png +0 -0
- package/dist/styles/assets/images/backgrounds/login_bg_01.png +0 -0
- package/dist/styles/assets/images/backgrounds/login_bg_02.png +0 -0
- package/dist/styles/assets/images/contents/btn/btn-down-on.png +0 -0
- package/dist/styles/assets/images/contents/btn/btn-down.png +0 -0
- package/dist/styles/assets/images/contents/btn/btn-left-on.png +0 -0
- package/dist/styles/assets/images/contents/btn/btn-left.png +0 -0
- package/dist/styles/assets/images/contents/btn/btn-right-on.png +0 -0
- package/dist/styles/assets/images/contents/btn/btn-right.png +0 -0
- package/dist/styles/assets/images/contents/btn/btn-up-on.png +0 -0
- package/dist/styles/assets/images/contents/btn/btn-up.png +0 -0
- package/dist/styles/assets/images/contents/icon/ico-business-trip.svg +21 -0
- package/dist/styles/assets/images/contents/icon/ico-holiday.svg +23 -0
- package/dist/styles/assets/images/contents/icon/ico-menu-help.svg +5 -0
- package/dist/styles/assets/images/contents/icon/ico-overtime.svg +17 -0
- package/dist/styles/assets/images/contents/icon/ico-quick-tab-move.svg +4 -0
- package/dist/styles/assets/images/contents/icon/ico-setting.svg +4 -0
- package/dist/styles/assets/images/contents/icon/ico_blue.png +0 -0
- package/dist/styles/assets/images/contents/icon/ico_red.png +0 -0
- package/dist/styles/assets/images/contents/icon/quick tab-text.svg +4 -0
- package/dist/styles/assets/images/contents/icon/quick-tab-text.svg +4 -0
- package/dist/styles/assets/images/logos/KRX Logo.svg +22 -0
- package/dist/styles/assets/images/logos/bwg-logo-blue.png +0 -0
- package/dist/styles/assets/images/logos/krx-logo-x2.png +0 -0
- package/dist/styles/assets/images/logos/krx-logo.png +0 -0
- package/dist/styles/assets/react.svg +1 -0
- package/dist/styles/components.css +785 -0
- package/dist/styles/fonts.css +101 -0
- package/dist/styles/global.css +52 -0
- package/dist/styles/index.css +41 -0
- package/dist/styles/layout.css +1132 -0
- package/dist/styles/login.css +151 -0
- package/dist/styles/popup.css +30 -0
- package/dist/styles/renderers.css +190 -0
- package/dist/styles/size.css +4019 -0
- package/dist/styles/variables.css +106 -0
- package/dist/test.txt +0 -0
- package/dist/types/images.d.ts +25 -0
- package/dist/utils/apiUtils.d.ts +85 -0
- package/dist/utils/arrayUtils.d.ts +34 -0
- package/dist/utils/commonUtils.d.ts +54 -0
- package/dist/utils/cookieUtils.d.ts +4 -0
- package/dist/utils/dateUtils.d.ts +26 -0
- package/dist/utils/envUtils.d.ts +8 -0
- package/dist/utils/imageUtils.d.ts +31 -0
- package/dist/utils/index.cjs +1 -0
- package/dist/utils/index.d.ts +14 -0
- package/dist/utils/index.js +211 -0
- package/dist/utils/messageUtils.d.ts +65 -0
- package/dist/utils/notificationUtils.d.ts +51 -0
- package/dist/utils/objectUtils.d.ts +27 -0
- package/dist/utils/realFormat.d.ts +242 -0
- package/dist/utils/serviceConfig.d.ts +35 -0
- package/dist/utils/stringUtils.d.ts +142 -0
- package/dist/utils/userUtils.d.ts +19 -0
- package/package.json +123 -0
- package/public/styles/assets/images/contents/icon/ico-business-trip.svg +21 -0
- package/public/styles/assets/images/contents/icon/ico-holiday.svg +23 -0
- package/public/styles/assets/images/contents/icon/ico-menu-help.svg +5 -0
- package/public/styles/assets/images/contents/icon/ico-overtime.svg +17 -0
- package/public/styles/assets/images/contents/icon/ico-quick-tab-move.svg +8 -0
- package/public/styles/assets/images/contents/icon/quick tab-text.svg +4 -0
- package/public/styles/assets/images/contents/icon/quick-tab-text.svg +4 -0
- package/public/test.txt +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const K=require("axios"),c=require("crypto-js"),I=require("antd"),Be=require("zustand");var W=typeof document<"u"?document.currentScript:null;const E=e=>typeof e!="string"?!e:e.trim().length===0,q=(e,t)=>E(e)?t:e||"",je=e=>!E(e),F=(e,t,r="...")=>e.length<=t?e:e.substring(0,t)+r,$=e=>E(e)?e:e.charAt(0).toUpperCase()+e.slice(1).toLowerCase(),z=e=>E(e)?e:e.split(" ").map(t=>$(t)).join(" "),V=e=>e.replace(/-([a-z])/g,t=>t[1].toUpperCase()),J=e=>e.replace(/[A-Z]/g,t=>`_${t.toLowerCase()}`),Z=e=>e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`),X=e=>{const r=e.replace(/\D/g,"").match(/^(\d{3})(\d{4})(\d{4})$/);return r?`${r[1]}-${r[2]}-${r[3]}`:e},Y=e=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e),Q=e=>{try{return new URL(e),!0}catch{return!1}},ee=e=>e.replace(/\D/g,""),te=e=>e.replace(/[^a-zA-Z0-9가-힣\s]/g,""),re=e=>e.replace(/<[^>]*>/g,""),ne=e=>e.replace(/\n/g,"<br>"),oe=e=>e.replace(/<br\s*\/?>/gi,`
|
|
2
|
+
`),se=(e,t)=>{const r=e.match(t);return r||[]},Ke=(e,t)=>e.repeat(t),ae=(e,t,r=" ")=>e.padStart(t,r),ce=(e,t,r=" ")=>e.padEnd(t,r),ie=(e,t,r=" ")=>{const n=t-e.length;if(n<=0)return e;const s=Math.floor(n/2),o=n-s;return r.repeat(s)+e+r.repeat(o)},b=(e,t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789")=>{let r="";for(let n=0;n<e;n++)r+=t.charAt(Math.floor(Math.random()*t.length));return r},ue=e=>e.split("").reverse().join(""),le=(e,t)=>(e.match(new RegExp(t,"g"))||[]).length,de=e=>e.trim().split(/\s+/).length,ge=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){const t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)}),T=(e=32)=>{const r=ge().replace(/-/g,"");return e>=32?r+b(e-32,"0123456789abcdef"):r.substring(0,e)},me=()=>T(16),pe=()=>T(64),fe=(e=16)=>b(e,"0123456789"),he=(e=16)=>b(e,"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"),M=()=>ge(),G=()=>M().replace(/-/g,""),ye=()=>{const e=Date.now().toString(36),t=b(8,"0123456789abcdef");return e+t},Se=(e,t="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")=>e.replace(/[X-Z]/g,()=>t.charAt(Math.floor(Math.random()*t.length))),Ce=e=>{const t=c.SHA256(e);return c.enc.Base64.stringify(t)},A=()=>"abcdefghij1234567890!@#$%^&*();;",Ie=()=>"123456098765!@#$",Ue=e=>{if(!e)return"";try{const t=c.enc.Utf8.parse(A()),r=c.enc.Utf8.parse(Ie());return c.AES.encrypt(e,t,{iv:r,padding:c.pad.Pkcs7,mode:c.mode.CBC}).toString()}catch(t){return console.error("암호화 오류:",t),""}},Ne=e=>{if(!e)return"";try{const t=c.enc.Utf8.parse(A()),r=c.enc.Utf8.parse(Ie());return c.AES.decrypt(e,t,{iv:r,padding:c.pad.Pkcs7,mode:c.mode.CBC}).toString(c.enc.Utf8)}catch(t){return console.error("복호화 오류:",t),""}},De=(e,t)=>{if(!e)return"";try{const r=t||A();return c.AES.encrypt(e,r).toString()}catch(r){return console.error("간단한 암호화 오류:",r),""}},ve=(e,t)=>{if(!e)return"";try{const r=t||A();return c.AES.decrypt(e,r).toString(c.enc.Utf8)}catch(r){return console.error("간단한 복호화 오류:",r),""}},we=e=>e?c.MD5(e).toString():"",Ee=e=>e?c.SHA256(e).toString():"",be=e=>e?c.enc.Base64.stringify(c.enc.Utf8.parse(e)):"",xe=e=>{if(!e)return"";try{return c.enc.Base64.parse(e).toString(c.enc.Utf8)}catch(t){return console.error("Base64 디코딩 오류:",t),""}},qe=Object.freeze(Object.defineProperty({__proto__:null,base64Decode:xe,base64Encode:be,br2nl:oe,bxmDecrypt:Ne,bxmEncrypt:Ue,capitalize:$,capitalizeWords:z,center:ie,countChar:le,countWords:de,encryptSha256:Ce,extractNumbers:ee,findPattern:se,formatPhoneNumber:X,generateAlphanumericUID:he,generateCustomUID:Se,generateGUID:M,generateGUIDWithoutHyphens:G,generateLongUID:pe,generateNumericUID:fe,generateRandomString:b,generateShortUID:me,generateTimestampUID:ye,generateUID:T,isEmpty:E,isNotEmpty:je,isSafeEmpty:q,isValidEmail:Y,isValidUrl:Q,md5Hash:we,nl2br:ne,padLeft:ae,padRight:ce,removeHtmlTags:re,removeSpecialChars:te,repeat:Ke,reverse:ue,sha256Hash:Ee,simpleDecrypt:ve,simpleEncrypt:De,toCamelCase:V,toKebabCase:Z,toSnakeCase:J,truncate:F},Symbol.toStringTag,{value:"Module"})),g={duration:4.5,placement:"topRight"};class D{static instance;constructor(){}static getInstance(){return D.instance||(D.instance=new D),D.instance}showBwgError(t){const{message:r,description:n,duration:s=g.duration,placement:o=g.placement}=t;I.notification.error({message:`${r}`,description:n||"오류가 발생했습니다. 다시 시도해주세요.",duration:s,placement:o,style:{borderLeft:"4px solid #ff4d4f",backgroundColor:"#fff2f0"}})}showSuccess(t,r,n){I.notification.success({message:`${t}`,description:r,duration:n||g.duration,placement:g.placement})}showInfo(t,r,n){I.notification.info({message:`${t}`,description:r,duration:n||g.duration,placement:g.placement})}showWarning(t,r,n){I.notification.warning({message:`${t}`,description:r,duration:n||g.duration,placement:g.placement})}showError(t,r,n){I.notification.error({message:`${t}`,description:r,duration:n||g.duration,placement:g.placement})}destroy(){I.notification.destroy()}close(t){I.notification.destroy()}}const S=D.getInstance(),Fe=e=>{S.showBwgError(e)},ze=(e,t,r)=>{S.showSuccess(e,t,r)},Ve=(e,t,r)=>{S.showInfo(e,t,r)},Je=(e,t,r)=>{S.showWarning(e,t,r)},Ze=(e,t,r)=>{S.showError(e,t,r)},Xe=()=>{S.destroy()},Ye=e=>{S.close(e)};function Qe(e,t){let r;try{r=e()}catch{return}return{getItem:s=>{var o;const f=d=>d===null?null:JSON.parse(d,void 0),m=(o=r.getItem(s))!=null?o:null;return m instanceof Promise?m.then(f):f(m)},setItem:(s,o)=>r.setItem(s,JSON.stringify(o,void 0)),removeItem:s=>r.removeItem(s)}}const k=e=>t=>{try{const r=e(t);return r instanceof Promise?r:{then(n){return k(n)(r)},catch(n){return this}}}catch(r){return{then(n){return this},catch(n){return k(n)(r)}}}},et=(e,t)=>(r,n,s)=>{let o={storage:Qe(()=>localStorage),partialize:a=>a,version:0,merge:(a,N)=>({...N,...a}),...t},f=!1;const m=new Set,d=new Set;let u=o.storage;if(!u)return e((...a)=>{console.warn(`[zustand persist middleware] Unable to update item '${o.name}', the given storage is currently unavailable.`),r(...a)},n,s);const C=()=>{const a=o.partialize({...n()});return u.setItem(o.name,{state:a,version:o.version})},h=s.setState;s.setState=(a,N)=>(h(a,N),C());const y=e((...a)=>(r(...a),C()),n,s);s.getInitialState=()=>y;let U;const j=()=>{var a,N;if(!u)return;f=!1,m.forEach(i=>{var p;return i((p=n())!=null?p:y)});const P=((N=o.onRehydrateStorage)==null?void 0:N.call(o,(a=n())!=null?a:y))||void 0;return k(u.getItem.bind(u))(o.name).then(i=>{if(i)if(typeof i.version=="number"&&i.version!==o.version){if(o.migrate){const p=o.migrate(i.state,i.version);return p instanceof Promise?p.then(R=>[!0,R]):[!0,p]}console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}else return[!1,i.state];return[!1,void 0]}).then(i=>{var p;const[R,Ge]=i;if(U=o.merge(Ge,(p=n())!=null?p:y),r(U,!0),R)return C()}).then(()=>{P?.(U,void 0),U=n(),f=!0,d.forEach(i=>i(U))}).catch(i=>{P?.(void 0,i)})};return s.persist={setOptions:a=>{o={...o,...a},a.storage&&(u=a.storage)},clearStorage:()=>{u?.removeItem(o.name)},getOptions:()=>o,rehydrate:()=>j(),hasHydrated:()=>f,onHydrate:a=>(m.add(a),()=>{m.delete(a)}),onFinishHydration:a=>(d.add(a),()=>{d.delete(a)})},o.skipHydration||j(),U||y},_e=et,l=Be.create()(_e((e,t)=>({user:null,isLoggedIn:!1,login:r=>{e({user:r,isLoggedIn:!0}),console.log("사용자 로그인:",r)},logout:()=>{e({user:null,isLoggedIn:!1}),console.log("사용자 로그아웃")},updateUser:r=>{const n=t().user;n&&e({user:{...n,...r}})}}),{name:"user-storage",partialize:e=>({user:e.user,isLoggedIn:e.isLoggedIn})})),tt=()=>l.getState().user?.crprCd||null,Le=()=>l.getState().user?.userId||null,Pe=()=>l.getState().user?.userNm||null,rt=()=>l.getState().user?.userDvsn||null,nt=()=>l.getState().user?.emplNo||null,Te=()=>l.getState().user?.dprtCd||null,Ae=()=>l.getState().user?.dprtNm||null,O=()=>l.getState().user?.roleList||null,ot=e=>{const t=O();return t?t.includes(e):!1},st=e=>{const t=O();return t?e.some(r=>t.includes(r)):!1},at=e=>{const t=O();return t?e.every(r=>t.includes(r)):!1},ct=()=>l.getState().isLoggedIn,B=()=>l.getState().user,it=()=>B()!==null,ut=()=>{const e=Pe(),t=Le();return e||t||null},lt=()=>{const e=Ae(),t=Te();return e||(t?String(t):null)},v=(()=>{try{if(typeof __BWG_LOCAL__<"u")return!!__BWG_LOCAL__}catch{}try{const t={url:typeof document>"u"?require("url").pathToFileURL(__filename).href:W&&W.tagName.toUpperCase()==="SCRIPT"&&W.src||new URL("chunks/serviceConfig-Cr2P4yr4.cjs",document.baseURI).href}?.env;if(typeof t?.DEV=="boolean")return t.DEV;if(typeof t?.MODE=="string")return t.MODE==="development"}catch{}return typeof process<"u"&&process?.env?.NODE_ENV?process.env.NODE_ENV!=="production":!1})();let dt=[],gt=[];function Oe(){if(typeof window<"u"&&window.location)return window.location.hostname}const Re=(()=>{const e=Oe();return!!(e&&dt.includes(e))})(),We=(()=>{const e=Oe();return!!(e&>.includes(e))})();function ke(){return v?"X":Re?"D":We?"P":"X"}let L=null;const mt=e=>{L===null&&(L=e)},pt=()=>L,ft=async()=>(console.log("IP 검증 비활성화됨 (성능 최적화)"),L||"unknown"),H={method:"POST",timeout:3e4,withCredentials:!0,showLoading:!0,showError:!0,retryCount:3,retryDelay:1e3},w=K.create({timeout:H.timeout,withCredentials:H.withCredentials,headers:{"Content-Type":"application/json; charset=utf-8",Accept:"application/json; charset=utf-8"}});v&&(console.log("🔧 API Client Configuration:"),console.log(" - Timeout:",w.defaults.timeout),console.log(" - With Credentials:",w.defaults.withCredentials),console.log(" - Environment:",ke()));w.interceptors.request.use(e=>{let t="UNKNOWN",r="UNKNOWN";new Date().getTime();try{e.data&&e.data.header?(t=e.data.header.trxCd||"UNKNOWN",r=e.data.header.guid||"UNKNOWN"):e.params&&e.params.header&&(t=e.params.header.trxCd||"UNKNOWN",r=e.params.header.guid||"UNKNOWN")}catch(s){console.warn("trxCd/guid 추출 실패:",s)}e.trxCd=t,e.guid=r,e.requestStartTime=Date.now(),console.log(`🚀 API 요청 시작 [거래코드: ${t} / GUID: ${r}]`);const n=localStorage.getItem("accessToken");return n&&(e.headers.Authorization=`Bearer ${n}`),e.headers["Content-Type"]="application/json; charset=UTF-8",e.headers.Accept="application/json; charset=UTF-8",e},e=>(console.error("❌ 요청 인터셉터 에러:",e),Promise.reject(e)));w.interceptors.response.use(e=>{let t="UNKNOWN",r="UNKNOWN";const n=new Date().getTime();try{e.config.trxCd&&(t=e.config.trxCd),e.config.guid?r=e.config.guid:e.data&&e.data.header&&e.data.header.trxCd?(t=e.data.header.trxCd,r=e.data.header.guid||"UNKNOWN"):e.config.data&&e.config.data.header?(t=e.config.data.header.trxCd||"UNKNOWN",r=e.config.data.header.guid||"UNKNOWN"):e.config.params&&e.config.params.header&&(t=e.config.params.header.trxCd||"UNKNOWN",r=e.config.params.header.guid||"UNKNOWN")}catch(o){console.warn("trxCd/guid 추출 실패:",o)}let s=0;return e.config.requestStartTime&&(s=n-e.config.requestStartTime),console.log(`✅ API 응답 성공 [거래코드: ${t} / GUID : ${r}] - (소요시간: ${s}ms)`),e},async e=>{if(console.error("❌ API 응답 에러:",e),v&&console.error("🚨 Error Details:",{message:e.message,status:e.response?.status,statusText:e.response?.statusText,data:e.response?.data,config:{url:e.config?.url,method:e.config?.method,baseURL:e.config?.baseURL}}),e.response?.status===401){const t=localStorage.getItem("refreshToken");if(t)try{const r=await K.post("/auth/refresh",{refreshToken:t});if(r.data.accessToken){localStorage.setItem("accessToken",r.data.accessToken);const n=e.config;if(n)return n.headers.Authorization=`Bearer ${r.data.accessToken}`,w(n)}}catch{localStorage.removeItem("accessToken"),localStorage.removeItem("refreshToken"),window.location.href="/login"}}return Promise.reject(e)});const He=()=>G(),x=async(e,t,r)=>{try{const n={...H,...r},s={method:n.method,url:"/api/service",timeout:n.timeout,withCredentials:n.withCredentials};n.headers&&(s.headers=n.headers);const o=L||"unknown",f=__APP_CD__,m=__SYS_CD__;console.log("@@ request param :: ",t);const d={header:{trxCd:e,guid:He(),userInfo:B(),clientIp:o,domainId:"DEFAULT",appCd:f,sysCd:m},data:t};v&&(console.log("__BWG_LOCAL__ 테스트 입니다. ",v),console.log("📤 Request Data:",d)),n.method==="GET"?s.params=d||n.params:(s.data=d||n.data,n.params&&(s.params=n.params));let u;for(let C=0;C<=(n.retryCount||0);C++)try{const h=await w(s);if(h.data.header?.resCd==0){for(const y in h.data)if(y!=="header")return h.data[y]}else return Fe({message:"서비스 호출 실패",description:h.data.header?.resMsg||"요청 처리 중 오류가 발생했습니다.",duration:5}),null}catch(h){if(u=h,ht(u)&&C<(n.retryCount||0)){await yt(n.retryDelay||1e3);continue}break}throw u}catch(n){throw console.error("callService 에러:",n),n}},ht=e=>!e.response||e.response.status>=500&&e.response.status<600,yt=e=>new Promise(t=>setTimeout(t,e)),St=(e,t,r)=>x(e,t,{...r,method:"GET"}),Ct=(e,t,r)=>x(e,t,{...r,method:"POST"}),It=(e,t,r)=>x(e,t,{...r,method:"PUT"}),Ut=(e,t,r)=>x(e,t,{...r,method:"DELETE"}),Nt=(e,t,r)=>x(e,t,{...r,method:"PATCH"}),$e={AUTH_BTNS:"SCMSIGN00202",AUTH_MENU:"SCMSIGN00201",SRCH_CODE:"SCMSIGN00301",SRCH_POPU:"SCMPOPU00101",AUTH_BMRK:"SCMBMRK00101"};let _={};function Dt(e){_=e,console.log("🔧 Provider 서비스코드 오버라이드 설정:",e)}function Me(e){if(_[e]&&_[e].trim()!=="")return console.log(`🔧 Provider 설정 사용: ${e} = ${_[e]}`),_[e];const t=$e[e];return console.log(`🔧 기본값 사용: ${e} = ${t}`),t}function vt(){const e={};for(const t of Object.keys($e))e[t]=Me(t);return e}exports.apiDelete=Ut;exports.apiGet=St;exports.apiPatch=Nt;exports.apiPost=Ct;exports.apiPut=It;exports.base64Decode=xe;exports.base64Encode=be;exports.br2nl=oe;exports.bxmDecrypt=Ne;exports.bxmEncrypt=Ue;exports.callService=x;exports.capitalize=$;exports.capitalizeWords=z;exports.center=ie;exports.closeNotification=Ye;exports.countChar=le;exports.countWords=de;exports.destroyNotifications=Xe;exports.encryptSha256=Ce;exports.extractNumbers=ee;exports.findPattern=se;exports.formatPhoneNumber=X;exports.generateAlphanumericUID=he;exports.generateCustomUID=Se;exports.generateGUID=M;exports.generateGUIDWithoutHyphens=G;exports.generateLongUID=pe;exports.generateNumericUID=fe;exports.generateRandomString=b;exports.generateShortUID=me;exports.generateTimestampUID=ye;exports.generateUID=T;exports.getAllServiceCodes=vt;exports.getClientIp=pt;exports.getCrprCd=tt;exports.getDepartmentInfo=lt;exports.getDisplayName=ut;exports.getDprtCd=Te;exports.getDprtNm=Ae;exports.getEmplNo=nt;exports.getEnvCode=ke;exports.getGuid=He;exports.getRoleList=O;exports.getServiceCode=Me;exports.getUserDvsn=rt;exports.getUserId=Le;exports.getUserInfo=B;exports.getUserNm=Pe;exports.hasAllRoles=at;exports.hasAnyRole=st;exports.hasRole=ot;exports.hasUserInfo=it;exports.isDev=Re;exports.isEmpty=E;exports.isLocal=v;exports.isLoggedIn=ct;exports.isProd=We;exports.isSafeEmpty=q;exports.isValidEmail=Y;exports.isValidUrl=Q;exports.md5Hash=we;exports.nl2br=ne;exports.notificationService=S;exports.padLeft=ae;exports.padRight=ce;exports.persist=_e;exports.removeHtmlTags=re;exports.removeSpecialChars=te;exports.reverse=ue;exports.setClientIp=mt;exports.setServiceCodeOverrides=Dt;exports.sha256Hash=Ee;exports.showError=Ze;exports.showInfo=Ve;exports.showSuccess=ze;exports.showWarning=Je;exports.simpleDecrypt=ve;exports.simpleEncrypt=De;exports.stringUtils=qe;exports.toCamelCase=V;exports.toKebabCase=Z;exports.toSnakeCase=J;exports.truncate=F;exports.useUserStore=l;exports.verifyClientIp=ft;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export interface ButtonEvent {
|
|
3
|
+
[key: string]: () => void | Promise<void>;
|
|
4
|
+
}
|
|
5
|
+
export interface ButtonPermissionResponse {
|
|
6
|
+
grpId: string;
|
|
7
|
+
btnId: string;
|
|
8
|
+
btnNm: string;
|
|
9
|
+
btnSq: number;
|
|
10
|
+
iconType?: string;
|
|
11
|
+
iconVal?: string;
|
|
12
|
+
enblYn: string;
|
|
13
|
+
}
|
|
14
|
+
export interface BwgButtonGroupProps {
|
|
15
|
+
grpId: string;
|
|
16
|
+
menuId: string;
|
|
17
|
+
btnEvent?: {
|
|
18
|
+
[key: string]: (params?: any) => void | Promise<void>;
|
|
19
|
+
};
|
|
20
|
+
layout?: 'horizontal' | 'vertical';
|
|
21
|
+
size?: 'large' | 'middle' | 'small';
|
|
22
|
+
style?: React.CSSProperties;
|
|
23
|
+
className?: string;
|
|
24
|
+
onButtonClick?: (btnId: string, btnNm: string, grpId: string) => void;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* 재사용 가능한 커스텀 버튼 그룹 컴포넌트
|
|
28
|
+
* SCMSIGN00202 서비스를 통해 버튼 권한을 자동으로 조회하고 이벤트를 매핑
|
|
29
|
+
*/
|
|
30
|
+
declare const BwgButtonGroup: React.FC<BwgButtonGroupProps>;
|
|
31
|
+
export default BwgButtonGroup;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { default as React, CSSProperties } from 'react';
|
|
2
|
+
export interface BwgCmptAreaProps {
|
|
3
|
+
row1: React.ReactNode[];
|
|
4
|
+
row2?: React.ReactNode[];
|
|
5
|
+
row3?: React.ReactNode[];
|
|
6
|
+
row4?: React.ReactNode[];
|
|
7
|
+
row5?: React.ReactNode[];
|
|
8
|
+
style?: CSSProperties;
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* 입력 폼 영역을 동적으로 그리기 위한 컴포넌트
|
|
13
|
+
* 최대 5행을 구성할 수 있으며, colspan을 통한 동적 너비 조절 지원
|
|
14
|
+
*/
|
|
15
|
+
declare const BwgCmptArea: React.FC<BwgCmptAreaProps>;
|
|
16
|
+
export default BwgCmptArea;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { default as React, ReactNode } from 'react';
|
|
2
|
+
import { ThemeConfig } from 'antd';
|
|
3
|
+
export interface BwgConfigProviderProps {
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
customTheme?: Partial<ThemeConfig>;
|
|
6
|
+
customComponentSize?: 'small' | 'middle' | 'large';
|
|
7
|
+
layout?: 'compact' | 'comfortable' | 'spacious';
|
|
8
|
+
}
|
|
9
|
+
export declare const BwgConfigProvider: React.FC<BwgConfigProviderProps>;
|
|
10
|
+
export default BwgConfigProvider;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { DrawerProps } from 'antd';
|
|
2
|
+
export interface BwgDrawerProps extends DrawerProps {
|
|
3
|
+
/** 검색박스 영역 */
|
|
4
|
+
showSearchBox?: {
|
|
5
|
+
/** 검색박스 제목 */
|
|
6
|
+
title?: string | React.ReactNode;
|
|
7
|
+
/** 검색박스 영역 */
|
|
8
|
+
searchBox?: any;
|
|
9
|
+
/** 검색박스 영역 추가 버튼 */
|
|
10
|
+
extra?: any;
|
|
11
|
+
};
|
|
12
|
+
/** 닫기 버튼 영역 표시 여부 */
|
|
13
|
+
showCloseButton?: boolean;
|
|
14
|
+
/** 눈 버튼 영역 표시 여부 */
|
|
15
|
+
showEyesButton?: boolean;
|
|
16
|
+
/** 위치 설정 버튼 영역 표시 여부 */
|
|
17
|
+
shotSettingButton?: boolean;
|
|
18
|
+
}
|
|
19
|
+
declare const BwgDrawer: ({ children, showSearchBox, showCloseButton, showEyesButton, shotSettingButton, styles, ...props }: BwgDrawerProps) => import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
export default BwgDrawer;
|
|
@@ -0,0 +1,505 @@
|
|
|
1
|
+
import { FormInstance } from 'antd';
|
|
2
|
+
import { default as React, MutableRefObject } from 'react';
|
|
3
|
+
import { default as RealGrid, CellIndex, ClickData, ColumnHeaderItemLocation, DataColumn, DataProviderBase, GridBase, GridColumn, GridFitStyle, GridView, LocalDataProvider, LocalTreeDataProvider, SelectionStyle, TreeView, ValidationError, ValueType } from 'realgrid';
|
|
4
|
+
import { RealGridReact, RealTreeReact } from 'realgrid-react';
|
|
5
|
+
interface BwgGridDataLoadOption {
|
|
6
|
+
/** 작업한 현재 데이터 포커스 [default: false] */
|
|
7
|
+
isCurrent?: boolean;
|
|
8
|
+
/** 데이터 적재 후 그리드 행 포커스 여부 */
|
|
9
|
+
isFocus?: boolean;
|
|
10
|
+
/** 트리그리드 옵션 */
|
|
11
|
+
treeOption?: {
|
|
12
|
+
dataField: string;
|
|
13
|
+
parentField: string;
|
|
14
|
+
/** 펼치기 여부 [default: true] */
|
|
15
|
+
isExpand?: boolean;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* - 시스템에 사용하기 위해 정의된 그리드 이벤트 목록
|
|
20
|
+
* 2024.01.12 초기작성 시, 기존에 있던 그리드 이벤트 API Document에서 사용할 법한 콜백들을 정의
|
|
21
|
+
* - (참고) https://docs.realgrid.com/refs/grid-base 추가 정의 가능한 콜백목록
|
|
22
|
+
*/
|
|
23
|
+
interface BwgGridEventList {
|
|
24
|
+
/** 행추가 */
|
|
25
|
+
addRow?: (...params: any) => void;
|
|
26
|
+
/** 행삭제 */
|
|
27
|
+
delRow?: (...params: any) => void;
|
|
28
|
+
/**
|
|
29
|
+
* 그리드의 focus cell 의 위치 변경을 알리는 콜백
|
|
30
|
+
* @param grid GridBase 컨트롤
|
|
31
|
+
* @param newIndex 변경된 셀 위치정보
|
|
32
|
+
* @returns
|
|
33
|
+
*/
|
|
34
|
+
onCurrentChanged?: (grid: GridBase, newIndex: CellIndex) => void;
|
|
35
|
+
/**
|
|
36
|
+
* 그리드의 focus cell 의 위치 변경을 결정하는 콜백
|
|
37
|
+
* @param grid GridBase 컨트롤
|
|
38
|
+
* @param oldIndex 변경 전 셀 위치정보
|
|
39
|
+
* @param newIndex 변경 되는 셀 위치정보
|
|
40
|
+
* @returns
|
|
41
|
+
*/
|
|
42
|
+
onCurrentChanging?: (grid: GridBase, oldIndex: CellIndex, newIndex: CellIndex) => boolean;
|
|
43
|
+
/**
|
|
44
|
+
* dataProvider.setRows()를 실행한 이후 그리드 refresh가 완료된 후 발생하는 콜백
|
|
45
|
+
* @param grid
|
|
46
|
+
* @returns
|
|
47
|
+
*/
|
|
48
|
+
onDataLoadComplated?: (grid: GridBase) => void;
|
|
49
|
+
/**
|
|
50
|
+
* 데이터 행의 위치가 변경됨을 알리는 콜백
|
|
51
|
+
* @param grid GridBase 컨트롤
|
|
52
|
+
* @param oldRow 변경 전 데이터 행의 위치
|
|
53
|
+
* @param newRow 변경 후 데이터 행의 위치, -1인 경우 신규행이거나 또는 dataProvider가 비워진 경우이다.
|
|
54
|
+
* @returns
|
|
55
|
+
*/
|
|
56
|
+
onCurrentRowChanged?: (grid: GridBase, oldRow: number, newRow: number) => void;
|
|
57
|
+
/**
|
|
58
|
+
* 그리드 셀이 더블 클릭되었음을 알리는 콜백
|
|
59
|
+
* @param grid GridBase 컨트롤
|
|
60
|
+
* @param clickData 클릭된 셀 정보
|
|
61
|
+
* @returns
|
|
62
|
+
*/
|
|
63
|
+
onCellDblClicked?: (grid: GridBase, clickData: ClickData) => void;
|
|
64
|
+
/**
|
|
65
|
+
* 사용자가 checkBar의 체크박스를 클릭하거나 checkItem을 호출하여 체크를 변경했음을 알리는 콜백
|
|
66
|
+
* RealGrid Version1 에서 사용하던 onDataCellDblClicked 이 Rename 되었음.
|
|
67
|
+
* @param grid GridBase 컨트롤
|
|
68
|
+
* @param itemIndex 체크된 데이터 행의 순서
|
|
69
|
+
* @param checked 체크가 되었으면 true, 해제되었으면 false가 출력
|
|
70
|
+
* @returns
|
|
71
|
+
*/
|
|
72
|
+
onItemChecked?: (grid: GridBase, itemIndex: number, checked: boolean) => void;
|
|
73
|
+
/**
|
|
74
|
+
* 사용자가 checkBar의 Header를 클릭하여 전체선택, 해제를 하거나
|
|
75
|
+
* 또는 checkAll true / false 을 입력하여 전체선택, 해제를 했음을 알리는 콜백
|
|
76
|
+
* @param grid GridBase 컨트롤
|
|
77
|
+
* @param checked 체크가 되었으면 true, 해제되었으면 false가 출력
|
|
78
|
+
* @returns
|
|
79
|
+
*/
|
|
80
|
+
onItemAllChecked?: (grid: GridBase, checked: boolean) => void;
|
|
81
|
+
/**
|
|
82
|
+
* 사용자 입력으로 변경된 값이 행에 반영되었음을 알리는 콜백
|
|
83
|
+
* @param grid GridBase 컨트롤
|
|
84
|
+
* @param itemIndex 변경된 행의 순서
|
|
85
|
+
* @param row 변경된 행의 고유 번호
|
|
86
|
+
* @param field 변경된 필드의 인덱스
|
|
87
|
+
* @param oldValue 편집전 셀의 데이터 값
|
|
88
|
+
* @param newValue 편집후 셀의 데이터 값
|
|
89
|
+
* @returns
|
|
90
|
+
*/
|
|
91
|
+
onEditRowChanged?: (grid: GridBase, itemIndex: number, row: number, field: number, oldValue: any, newValue: any) => void;
|
|
92
|
+
/**
|
|
93
|
+
* 사용자의 컬럼 헤더 체크박스를 클릭을 알리는 콜백
|
|
94
|
+
* @param grid GridBase 컨트롤
|
|
95
|
+
* @param column 컬럼 오브젝트
|
|
96
|
+
* @param checked 체크 여부
|
|
97
|
+
* @returns
|
|
98
|
+
*/
|
|
99
|
+
onColumnCheckedChanged?: (grid: GridBase, column: GridColumn, checked: boolean) => void;
|
|
100
|
+
/**
|
|
101
|
+
* 사용자가 데이터 셀 내부의 action 버튼을 클릭했을 때 호출한다.
|
|
102
|
+
* @param grid GridBase 컨트롤
|
|
103
|
+
* @param index 데이터 셀이 포함된 아이템의 위치정보
|
|
104
|
+
* @param column 데이터 셀에 연결된 컬럼
|
|
105
|
+
* @returns
|
|
106
|
+
*/
|
|
107
|
+
onCellButtonClicked?: (grid: GridBase, index: CellIndex, column: GridColumn) => void;
|
|
108
|
+
/**
|
|
109
|
+
* 아이템이 사용자의 Key 입력 등으로 값이 변경되었음을 알리는 콜백
|
|
110
|
+
* @param grid GridBase 컨트롤
|
|
111
|
+
* @param index 변경된 행의 순서
|
|
112
|
+
* @param value
|
|
113
|
+
* @returns
|
|
114
|
+
*/
|
|
115
|
+
onEditChange?: (grid: GridBase, index: CellIndex, value: any) => void;
|
|
116
|
+
/**
|
|
117
|
+
* 키를 입력하였음을 알리는 콜백.
|
|
118
|
+
* @param grid GridBase 컨트롤
|
|
119
|
+
* @param event KeyboardEvent
|
|
120
|
+
* @returns
|
|
121
|
+
*/
|
|
122
|
+
/**
|
|
123
|
+
* 수정이나 추가 중인 편집 아이템의 한 필드값이 편집 완료되었음을 알리는 콜백
|
|
124
|
+
* @param grid GridBase 컨트롤
|
|
125
|
+
* @param itemIndex
|
|
126
|
+
* @param row
|
|
127
|
+
* @param field
|
|
128
|
+
* @returns
|
|
129
|
+
*/
|
|
130
|
+
onCellEdited?: (grid: GridBase, itemIndex: number, row: number, field: number) => void;
|
|
131
|
+
/**
|
|
132
|
+
* 그리드 셀이 클릭되었음을 알리는 콜백
|
|
133
|
+
* @param grid GridBase 컨트롤
|
|
134
|
+
* @param clickData
|
|
135
|
+
* @returns
|
|
136
|
+
*/
|
|
137
|
+
onCellClicked?: (grid: GridBase, clickData: ClickData) => void;
|
|
138
|
+
/**
|
|
139
|
+
* 키를 입력하였음을 알리는 콜백.
|
|
140
|
+
* @param grid GridBase 컨트롤
|
|
141
|
+
* @param event KeyboardEvent
|
|
142
|
+
* @returns
|
|
143
|
+
*/
|
|
144
|
+
onKeyUp?: (grid: GridBase, event: KeyboardEvent) => void;
|
|
145
|
+
/**
|
|
146
|
+
* 키 입력을 결정하는 콜백
|
|
147
|
+
* @param grid GridBase 컨트롤
|
|
148
|
+
* @param event KeyboardEvent
|
|
149
|
+
* @returns
|
|
150
|
+
*/
|
|
151
|
+
onKeyDown?: (grid: GridBase, event: KeyboardEvent) => boolean;
|
|
152
|
+
/**
|
|
153
|
+
* Wheel Event가 발생했음을 알리는 콜백
|
|
154
|
+
* 추후 페이징 처리가 필요하게 되면 해당 기능을 이용
|
|
155
|
+
* @param grid GridBase 컨트롤
|
|
156
|
+
* @param event WheelEvent
|
|
157
|
+
* @returns
|
|
158
|
+
*/
|
|
159
|
+
onWheel?: (grid: GridBase, event: WheelEvent) => boolean;
|
|
160
|
+
/**
|
|
161
|
+
* - 셀 편집을 완료하고 다른 셀로 이동할때 Javascript를 통한 사용자 검증 결과를 결정하는 콜백
|
|
162
|
+
* - (상세)
|
|
163
|
+
* 해당 컬럼 값에 문제가 있다면 검증 에러와 에러 메시지를 그리드에 반환값으로 전달한다.
|
|
164
|
+
* level과 message 값을 포함하는 오브젝트를 그리드에 전달하면 검증에 실패한 것으로 판단한다.
|
|
165
|
+
* ValidationError 형태로 반환해야 한다.
|
|
166
|
+
* @param grid GridBase 컨트롤
|
|
167
|
+
* @param column 컬럼 오브젝트
|
|
168
|
+
* @param inserting true: 열 추가 중, false: 열 수정 중
|
|
169
|
+
* @param value 입력된 필드의 값
|
|
170
|
+
* @param itemIndex 셀편집된 행의 순서
|
|
171
|
+
* @param dataRow 셀편집된 행의 고유 번호.
|
|
172
|
+
* @returns
|
|
173
|
+
*/
|
|
174
|
+
onValidateColumn?: (grid: GridBase, column: GridColumn, inserting: boolean, value: any, itemIndex: number, dataRow: number) => ValidationError;
|
|
175
|
+
/**
|
|
176
|
+
* - Javascript를 통한 행 단위 사용자 검증 결과를 결정하는 콜백
|
|
177
|
+
* - (상세)
|
|
178
|
+
* 해당 행의 값들에 문제가 있다면 검증 에러와 에러 메시지를 그리드에 반환값으로 전달한다.
|
|
179
|
+
* level과 message 값을 포함하는 오브젝트를 그리드에 전달하면 검증에 실패한 것으로 판단한다.
|
|
180
|
+
* ValidationError 형태로 반환해야 한다.
|
|
181
|
+
* @param grid GridBase 컨트롤
|
|
182
|
+
* @param itemIndex 검증하는 행의 순서
|
|
183
|
+
* @param dataRow 검증하는 행의 고유 번호
|
|
184
|
+
* @param inserting true: 열 추가 중, false: 열 수정 중
|
|
185
|
+
* @param values 입력된 필드들의 값
|
|
186
|
+
* @returns
|
|
187
|
+
*/
|
|
188
|
+
onValidateRow?: (grid: GridBase, itemIndex: number, dataRow: number, inserting: boolean, values: any[]) => ValidationError;
|
|
189
|
+
/**
|
|
190
|
+
* - validation 실패시 발생하는 콜백
|
|
191
|
+
* - (상세)
|
|
192
|
+
* 콜백함수에서 별도의 에러 처리가 가능하고, err 객체를 return 하면 자체 Validation 메세지가 표시되고 그 외의 경우 표시되지 않는다.
|
|
193
|
+
* level과 message 값을 포함하는 오브젝트를 그리드에 전달하면 검증에 실패한 것으로 판단한다.
|
|
194
|
+
* ValidationError 형태로 반환해야 한다.
|
|
195
|
+
* @param grid
|
|
196
|
+
* @param itemIndex 검증하는 행의 인덱스
|
|
197
|
+
* @param column 컬럼 오브젝트
|
|
198
|
+
* @param error 검증 결과
|
|
199
|
+
* @returns
|
|
200
|
+
*/
|
|
201
|
+
onValidationFail?: (grid: GridBase, itemIndex: number, column: GridColumn, error: ValidationError) => ValidationError;
|
|
202
|
+
/**
|
|
203
|
+
* - 데이터 행이 추가되었을을 알리는 콜백
|
|
204
|
+
* - (상세)
|
|
205
|
+
* onRowInserting 콜백에서 true가 반환되어 행이 추가된 후 발생한다.
|
|
206
|
+
* @param provider DataProvider 컨트롤
|
|
207
|
+
* @param row 추가된 데이터 행의 인덱스
|
|
208
|
+
* @returns
|
|
209
|
+
*/
|
|
210
|
+
onRowInserted?: (provider: DataProviderBase, row: CellIndex) => void;
|
|
211
|
+
/**
|
|
212
|
+
* - 그리드 셀에 포함된 엘리먼트가 클릭되었음을 알리는 콜백
|
|
213
|
+
* - (상세)
|
|
214
|
+
* 이 이벤트 내에서 클릭을 처리했다면 반드시 false를 리턴해야 element의 기본 동작을 실행하지 않는다.
|
|
215
|
+
* @param grid GridBase 컨트롤
|
|
216
|
+
* @param index 클릭된 데이터 셀의 위치정보
|
|
217
|
+
* @param clickData 클릭된 셀 정보
|
|
218
|
+
* @returns
|
|
219
|
+
*/
|
|
220
|
+
onCellItemClicked?: (grid: GridBase, index: CellIndex, clickData: ClickData) => void;
|
|
221
|
+
/**
|
|
222
|
+
* - Cell 별로 열리는 Editor 의 표시를 결정하는 콜백.
|
|
223
|
+
* @param grid GridBase 컨트롤
|
|
224
|
+
* @param index 클릭된 데이터 셀의 위치정보
|
|
225
|
+
* @param props 셀 편집기 설정 정보
|
|
226
|
+
* @param attrs 내부 편집기 element attributes. 사용자가 임의로 지정할 수 있는 값들.
|
|
227
|
+
* @returns
|
|
228
|
+
*/
|
|
229
|
+
onShowEditor?: (grid: GridBase, index: CellIndex, props: any, attrs: any) => boolean;
|
|
230
|
+
}
|
|
231
|
+
interface BwgGridRef {
|
|
232
|
+
/** 데이터 추가 */
|
|
233
|
+
addAllData: (data: any, option?: BwgGridDataLoadOption) => void;
|
|
234
|
+
/** 그리드 인스턴스 직접 접근 */
|
|
235
|
+
getGridInstance: () => RealGridReact | RealTreeReact | null;
|
|
236
|
+
/**
|
|
237
|
+
* 현재 선택된 행 번호 반환
|
|
238
|
+
* @default -1
|
|
239
|
+
*/
|
|
240
|
+
getCurrentRow: () => number;
|
|
241
|
+
/**
|
|
242
|
+
* 현재 선택된 행 인덱스 반환
|
|
243
|
+
* @default -1
|
|
244
|
+
*/
|
|
245
|
+
getCurrentIndex: () => number;
|
|
246
|
+
/** 데이터 프로바이더 직접 접근 */
|
|
247
|
+
dp: LocalDataProvider | LocalTreeDataProvider | null;
|
|
248
|
+
/** 그리드 뷰 직접 접근 */
|
|
249
|
+
vw: GridView | TreeView | null;
|
|
250
|
+
}
|
|
251
|
+
interface BwgGridProps {
|
|
252
|
+
/** 그리드 렌더 타입 */
|
|
253
|
+
type?: 'nrml' | 'tree';
|
|
254
|
+
/** 그리드영역 CSS 스타일 */
|
|
255
|
+
gridDivStyle?: React.CSSProperties;
|
|
256
|
+
/** 그리드영역 CSS 클래스 */
|
|
257
|
+
gridDivClassName?: string;
|
|
258
|
+
/** 그리드 컬럼 설정 */
|
|
259
|
+
gridColumns?: BwgGridColProps[];
|
|
260
|
+
/** 그리드 이벤트 설정 */
|
|
261
|
+
gridEvents?: BwgGridEventList;
|
|
262
|
+
/** 그리드 옵션 설정 */
|
|
263
|
+
gridOptions?: BwgGridOptions;
|
|
264
|
+
/** 그리드 컨텍스트 메뉴 옵션 */
|
|
265
|
+
gridContext?: {
|
|
266
|
+
excel?: BwgGridExcelOption;
|
|
267
|
+
};
|
|
268
|
+
/** Binding 할 FormRef */
|
|
269
|
+
bindRef?: MutableRefObject<FormInstance<any> | undefined>;
|
|
270
|
+
/** 그리드 커스텀렌더러 설정 */
|
|
271
|
+
renderers?: {
|
|
272
|
+
name: string;
|
|
273
|
+
renderer: typeof RealGrid.CustomCellRendererImpl | {
|
|
274
|
+
initContent?: (parent: any) => void;
|
|
275
|
+
render?: (grid: any, model: any, w: any, h: any) => void;
|
|
276
|
+
clearContent?: (parent: any) => void;
|
|
277
|
+
canClick?: (event: any) => boolean;
|
|
278
|
+
click?: (event: any) => any;
|
|
279
|
+
};
|
|
280
|
+
}[];
|
|
281
|
+
/** ref prop for forwardRef */
|
|
282
|
+
ref?: React.Ref<BwgGridRef>;
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* BWG 그리드 옵션
|
|
286
|
+
* @remark 리얼그리드 기본 옵션 중 커스터마이징 가능한 옵션 제공
|
|
287
|
+
* @property {BwgGridOptions.display} display - 그리드 디스플레이 옵션
|
|
288
|
+
* @property {BwgGridOptions.edit} edit - 그리드 편집 옵션
|
|
289
|
+
* @property {BwgGridOptions.copy} copy - 그리드 복사 옵션
|
|
290
|
+
* @property {BwgGridOptions.paste} paste - 그리드 붙여넣기 옵션
|
|
291
|
+
*/
|
|
292
|
+
interface BwgGridOptions {
|
|
293
|
+
/**
|
|
294
|
+
* 그리드 디스플레이 옵션
|
|
295
|
+
*/
|
|
296
|
+
display?: {
|
|
297
|
+
/**
|
|
298
|
+
* 그리드 행 높이
|
|
299
|
+
* @remark 행 높이 설정 시, 그리드 높이 설정 시 무시됨
|
|
300
|
+
* @default 43
|
|
301
|
+
*/
|
|
302
|
+
rowHeight?: number;
|
|
303
|
+
/**
|
|
304
|
+
* 그리드 최소 행 높이
|
|
305
|
+
* @default 43
|
|
306
|
+
*/
|
|
307
|
+
minRowHeight?: number;
|
|
308
|
+
/**
|
|
309
|
+
* 그리드 최대 행 높이
|
|
310
|
+
* @default 100
|
|
311
|
+
*/
|
|
312
|
+
maxRowHeight?: number;
|
|
313
|
+
/**
|
|
314
|
+
* 그리드 행 변경 지연 시간
|
|
315
|
+
* @default 0
|
|
316
|
+
*/
|
|
317
|
+
rowChangeDelay?: number;
|
|
318
|
+
/**
|
|
319
|
+
* 그리드 선택 스타일
|
|
320
|
+
* @see {@link SelectionStyle}
|
|
321
|
+
* @default SelectionStyle.ROWS
|
|
322
|
+
*/
|
|
323
|
+
selectionStyle?: SelectionStyle;
|
|
324
|
+
/**
|
|
325
|
+
* 컬럼들의 표시 방식을 조정하는 상수
|
|
326
|
+
* @see {@link GridFitStyle}
|
|
327
|
+
* @default GridFitStyle.FILL
|
|
328
|
+
*/
|
|
329
|
+
fitStyle?: GridFitStyle;
|
|
330
|
+
/**
|
|
331
|
+
* 짝수행의 className에 "rg-alternate-row" 추가를 설정한다.
|
|
332
|
+
* @default false
|
|
333
|
+
*/
|
|
334
|
+
useAlternateRowStyle?: boolean;
|
|
335
|
+
};
|
|
336
|
+
/**
|
|
337
|
+
* 그리드 편집 옵션
|
|
338
|
+
*/
|
|
339
|
+
edit?: {
|
|
340
|
+
/**
|
|
341
|
+
* 그리드 전체 편집 제어 옵션
|
|
342
|
+
* @default false
|
|
343
|
+
*/
|
|
344
|
+
editable?: boolean;
|
|
345
|
+
/**
|
|
346
|
+
* cell 편집 후 유효성 검사 여부
|
|
347
|
+
* @default false
|
|
348
|
+
*/
|
|
349
|
+
validateOnEdited?: boolean;
|
|
350
|
+
};
|
|
351
|
+
/** 복사 옵션 */
|
|
352
|
+
copy?: {
|
|
353
|
+
/**
|
|
354
|
+
* 선택 영역과 상관없이 focus 된 셀 하나만 복사할 것인지에 대한 여부
|
|
355
|
+
* @default false
|
|
356
|
+
*/
|
|
357
|
+
singleMode?: boolean;
|
|
358
|
+
};
|
|
359
|
+
/**
|
|
360
|
+
* 붙여넣기 옵션
|
|
361
|
+
*/
|
|
362
|
+
/**
|
|
363
|
+
* 그리드 헤더 옵션
|
|
364
|
+
*/
|
|
365
|
+
header?: {
|
|
366
|
+
/**
|
|
367
|
+
* 그리드 헤더 높이
|
|
368
|
+
* @default 40
|
|
369
|
+
*/
|
|
370
|
+
height?: number;
|
|
371
|
+
/**
|
|
372
|
+
* 그리드 헤더 스타일 클래스
|
|
373
|
+
* @default 'bwgGridHeader'
|
|
374
|
+
*/
|
|
375
|
+
styleName?: string;
|
|
376
|
+
};
|
|
377
|
+
/**
|
|
378
|
+
* 그리드 레이아웃 옵션
|
|
379
|
+
* @property {BwgGridOptions.layout.colspan} colspan - 컬럼 병합 옵션
|
|
380
|
+
*/
|
|
381
|
+
layout?: {
|
|
382
|
+
colspan: {
|
|
383
|
+
fieldName: string;
|
|
384
|
+
span: number;
|
|
385
|
+
}[];
|
|
386
|
+
};
|
|
387
|
+
/**
|
|
388
|
+
* 그리드 컨테이너 옵션
|
|
389
|
+
* @property {BwgGridOptions.container.check} check - 체크박스 표시 여부
|
|
390
|
+
* @property {BwgGridOptions.container.state} state - 상태바 표시 여부
|
|
391
|
+
* @property {BwgGridOptions.container.footer} footer - 하단 표시 여부
|
|
392
|
+
* @property {BwgGridOptions.container.checkAll} checkAll - 전체 체크박스 표시 여부
|
|
393
|
+
* @property {BwgGridOptions.container.indicator} indicator - 행 인디케이터 표시 여부
|
|
394
|
+
* @property {BwgGridOptions.container.panel} panel - 그룹 패널 표시 여부
|
|
395
|
+
*/
|
|
396
|
+
container?: {
|
|
397
|
+
/** 헤더 표시 여부 */
|
|
398
|
+
header?: boolean;
|
|
399
|
+
/**
|
|
400
|
+
* 라디오 버튼 표시 여부
|
|
401
|
+
* @remark 체크박스 옵션과 동시 사용시, 우선적용
|
|
402
|
+
*/
|
|
403
|
+
radio?: boolean;
|
|
404
|
+
/** 체크박스 표시 여부 */
|
|
405
|
+
check?: boolean;
|
|
406
|
+
/** 상태바 표시 여부 */
|
|
407
|
+
state?: boolean;
|
|
408
|
+
/** 하단 표시 여부 */
|
|
409
|
+
footer?: boolean;
|
|
410
|
+
/** 전체 체크박스 표시 여부 */
|
|
411
|
+
checkAll?: boolean;
|
|
412
|
+
/** 행 인디케이터 표시 여부 */
|
|
413
|
+
indicator?: boolean;
|
|
414
|
+
/** 그룹 패널 표시 여부 */
|
|
415
|
+
panel?: boolean;
|
|
416
|
+
};
|
|
417
|
+
}
|
|
418
|
+
interface BwgGridColHeaderProps {
|
|
419
|
+
text: string;
|
|
420
|
+
styleName?: string;
|
|
421
|
+
/**
|
|
422
|
+
* 컬럼 헤더의 이미지나 체크 박스의 위치 유형
|
|
423
|
+
*
|
|
424
|
+
* `checkLocation` - {@link ColumnHeaderItemLocation}
|
|
425
|
+
*/
|
|
426
|
+
checkLocation?: ColumnHeaderItemLocation;
|
|
427
|
+
}
|
|
428
|
+
interface BwgGridColProps extends DataColumn {
|
|
429
|
+
/** 컬럼명 (큰 의미를 갖지는 않는다.) */
|
|
430
|
+
name?: string;
|
|
431
|
+
/** (필수) 컬럼이 표시하는 데이터 필드의 이름 */
|
|
432
|
+
fieldName: string;
|
|
433
|
+
/** 컬럼 너비 */
|
|
434
|
+
width?: number;
|
|
435
|
+
/** 컬럼 표시 여부 */
|
|
436
|
+
visible?: boolean;
|
|
437
|
+
/** 컬럼 헤더 */
|
|
438
|
+
header?: BwgGridColHeaderProps;
|
|
439
|
+
/** 편집여부 */
|
|
440
|
+
editable?: boolean;
|
|
441
|
+
/** 컬럼 데이터 정렬 */
|
|
442
|
+
align?: 'left' | 'center' | 'right';
|
|
443
|
+
/** 컬럼 필드 자료형 */
|
|
444
|
+
dataType?: ValueType | string;
|
|
445
|
+
/** 컬럼 필수 */
|
|
446
|
+
required?: boolean;
|
|
447
|
+
/** 하위 레이아웃의 헤더 숨김 여부 */
|
|
448
|
+
hideChildHeaders?: boolean;
|
|
449
|
+
/** 그룹핑 자식 컬럼헤더 */
|
|
450
|
+
children?: BwgGridColProps[];
|
|
451
|
+
/** 그룹핑 정렬 */
|
|
452
|
+
direction?: 'vertical' | 'horizontal';
|
|
453
|
+
/** true시 lookupDisplay가 true인 컬럼은 value가 아닌 label 또는 labelField의 값을 복사 */
|
|
454
|
+
lookupDisplay?: boolean;
|
|
455
|
+
renderer?: any;
|
|
456
|
+
/** 레이아웃 설정 시 적용될 스타일 클래스 명 */
|
|
457
|
+
styleName?: string;
|
|
458
|
+
/** 하단의 footer 옵션 설정*/
|
|
459
|
+
footer?: any;
|
|
460
|
+
/** 셀 우측에 셀클릭 이벤트등으로 사용하는 button 설정 */
|
|
461
|
+
button?: any;
|
|
462
|
+
/** 셀의 text 형식 설정*/
|
|
463
|
+
textFormat?: string;
|
|
464
|
+
/**
|
|
465
|
+
* 계산필드 설정
|
|
466
|
+
* @예제) values[name] - values[name]
|
|
467
|
+
*
|
|
468
|
+
*/
|
|
469
|
+
valueExpression?: string;
|
|
470
|
+
valueCallback?: (ds: any, rowId: any, fieldName: any, fieldNames: any, values: any) => any;
|
|
471
|
+
}
|
|
472
|
+
interface BwgGridExcelOption {
|
|
473
|
+
/** footer 출력 여부 */
|
|
474
|
+
footer?: string;
|
|
475
|
+
/** 엑셀 파일명 (Default: 메뉴명.xlsx) */
|
|
476
|
+
fileName?: string;
|
|
477
|
+
/** 셀 머지 여부 (Default : false) */
|
|
478
|
+
isCellMerge?: boolean;
|
|
479
|
+
/** 시트명 */
|
|
480
|
+
sheetName?: string;
|
|
481
|
+
/** 제목 */
|
|
482
|
+
mainTitle?: string;
|
|
483
|
+
/** 부제 */
|
|
484
|
+
subTitle?: string;
|
|
485
|
+
/** 꼬리말 */
|
|
486
|
+
tailTitle?: string;
|
|
487
|
+
}
|
|
488
|
+
/**
|
|
489
|
+
* BwgGrid 커스텀 렌더러 타입 정의
|
|
490
|
+
*/
|
|
491
|
+
export interface BwgGridRenderType {
|
|
492
|
+
_root?: any;
|
|
493
|
+
initContent: (dom: any) => void;
|
|
494
|
+
render: (grid: any, model: any, w: any, h: any) => void;
|
|
495
|
+
clearContent: (dom: any) => void;
|
|
496
|
+
canClick: (event: any) => boolean;
|
|
497
|
+
click: () => any;
|
|
498
|
+
}
|
|
499
|
+
/**
|
|
500
|
+
* BwgGrid 렌더러 생성 유틸리티
|
|
501
|
+
*/
|
|
502
|
+
export declare const createBwgGridRenderer: (renderFunction: (grid: any, model: any, w: any, h: any, root: any) => void) => BwgGridRenderType;
|
|
503
|
+
declare const _default: React.ComponentType<BwgGridProps>;
|
|
504
|
+
export default _default;
|
|
505
|
+
export type { BwgGridColHeaderProps, BwgGridColProps, BwgGridOptions, BwgGridEventList, BwgGridDataLoadOption, BwgGridProps, BwgGridRef, };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export interface BwgInfoAreaProps {
|
|
3
|
+
title: string;
|
|
4
|
+
border?: boolean;
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
}
|
|
7
|
+
declare const BwgInfoArea: React.MemoExoticComponent<({ title, border, children }: BwgInfoAreaProps) => import("react/jsx-runtime").JSX.Element>;
|
|
8
|
+
export default BwgInfoArea;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* BwgSpace : 공간컴포넌트
|
|
4
|
+
* 추후 style => className 변경 예정
|
|
5
|
+
* @param children 하위 컴포넌트
|
|
6
|
+
* @returns
|
|
7
|
+
*/
|
|
8
|
+
declare const BwgSpace: ({ children }: {
|
|
9
|
+
children: ReactNode;
|
|
10
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export default BwgSpace;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { TableProps } from 'antd';
|
|
2
|
+
import { ColumnsType } from 'antd/es/table';
|
|
3
|
+
import { TableRowSelection } from 'antd/es/table/interface';
|
|
4
|
+
export interface BwgTableProps<RecordType> extends TableProps<RecordType> {
|
|
5
|
+
rowKey?: string;
|
|
6
|
+
columns: ColumnsType<RecordType>;
|
|
7
|
+
dataSource: RecordType[];
|
|
8
|
+
loading?: boolean;
|
|
9
|
+
rowSelection?: TableRowSelection<RecordType>;
|
|
10
|
+
size?: 'small' | 'middle' | 'large';
|
|
11
|
+
}
|
|
12
|
+
declare const BwgTable: <RecordType extends object>({ rowKey, columns, dataSource, loading, rowSelection, size, pagination, ...rest }: BwgTableProps<RecordType>) => import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export default BwgTable;
|