@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.
Files changed (257) hide show
  1. package/README.md +106 -0
  2. package/dist/chunks/BwgLargeUploader-ByN1XWV4.js +809 -0
  3. package/dist/chunks/BwgLargeUploader-CU0-MVk4.cjs +1 -0
  4. package/dist/chunks/BwgSpace-CnLM4qcg.js +26 -0
  5. package/dist/chunks/BwgSpace-b0hmM1Ht.cjs +1 -0
  6. package/dist/chunks/QuickServiceToggle-CiCuWfCF.cjs +183 -0
  7. package/dist/chunks/QuickServiceToggle-y7esp1kp.js +15510 -0
  8. package/dist/chunks/ServiceCodeContext--ZnMtjzD.cjs +1 -0
  9. package/dist/chunks/ServiceCodeContext-CDZMr3Mm.js +87 -0
  10. package/dist/chunks/UtilsContext-B16Gh9LL.cjs +1 -0
  11. package/dist/chunks/UtilsContext-BbfZYiMR.js +240 -0
  12. package/dist/chunks/_commonjsHelpers-C6fGbg64.js +6 -0
  13. package/dist/chunks/_commonjsHelpers-DwGv2jUC.cjs +1 -0
  14. package/dist/chunks/codeStore-Dt6j826J.cjs +1 -0
  15. package/dist/chunks/codeStore-bxk_q1sl.js +449 -0
  16. package/dist/chunks/commonUtils-BV6WFv-z.js +628 -0
  17. package/dist/chunks/commonUtils-L9Jgc5y-.cjs +1 -0
  18. package/dist/chunks/favoriteStore-CguRSEcH.js +367 -0
  19. package/dist/chunks/favoriteStore-TgeeY32l.cjs +1 -0
  20. package/dist/chunks/jsx-runtime-CeSfJrVB.cjs +30 -0
  21. package/dist/chunks/jsx-runtime-Dpn_P65e.js +633 -0
  22. package/dist/chunks/messageUtils-9DXOwada.js +117 -0
  23. package/dist/chunks/messageUtils-RjJD_ArW.cjs +1 -0
  24. package/dist/chunks/popupStore-CVD8SPTa.cjs +1 -0
  25. package/dist/chunks/popupStore-Dp_fqtim.js +96 -0
  26. package/dist/chunks/realFormat-Cha7OTd9.cjs +1 -0
  27. package/dist/chunks/realFormat-DRGLFabQ.js +304 -0
  28. package/dist/chunks/serviceConfig-BJBsdee_.js +699 -0
  29. package/dist/chunks/serviceConfig-Cr2P4yr4.cjs +2 -0
  30. package/dist/components/common/BwgButtonGroup.d.ts +31 -0
  31. package/dist/components/common/BwgCmptArea.d.ts +16 -0
  32. package/dist/components/common/BwgConfigProvider.d.ts +10 -0
  33. package/dist/components/common/BwgDrawer.d.ts +20 -0
  34. package/dist/components/common/BwgGrid.d.ts +505 -0
  35. package/dist/components/common/BwgInfoArea.d.ts +8 -0
  36. package/dist/components/common/BwgPopup.d.ts +9 -0
  37. package/dist/components/common/BwgSpace.d.ts +11 -0
  38. package/dist/components/common/BwgTable.d.ts +13 -0
  39. package/dist/components/common/BwgTabs.d.ts +5 -0
  40. package/dist/components/common/BwgTitleBox.d.ts +29 -0
  41. package/dist/components/common/BwgView.d.ts +36 -0
  42. package/dist/components/common/ContentBox.d.ts +19 -0
  43. package/dist/components/common/ContentLayOut.d.ts +13 -0
  44. package/dist/components/common/GlobalConfigProvider.d.ts +9 -0
  45. package/dist/components/common/QuickServiceToggle.d.ts +13 -0
  46. package/dist/components/common/SearchBox.d.ts +16 -0
  47. package/dist/components/common/index.cjs +1 -0
  48. package/dist/components/common/index.d.ts +34 -0
  49. package/dist/components/common/index.js +24 -0
  50. package/dist/components/core/BwgButton.d.ts +6 -0
  51. package/dist/components/core/BwgCheck.d.ts +11 -0
  52. package/dist/components/core/BwgCheckList.d.ts +11 -0
  53. package/dist/components/core/BwgDatePicker.d.ts +10 -0
  54. package/dist/components/core/BwgForm.d.ts +6 -0
  55. package/dist/components/core/BwgFormItem.d.ts +17 -0
  56. package/dist/components/core/BwgInput.d.ts +9 -0
  57. package/dist/components/core/BwgLargeUploader.d.ts +15 -0
  58. package/dist/components/core/BwgMaskedInput.d.ts +20 -0
  59. package/dist/components/core/BwgMaskedPicker.d.ts +11 -0
  60. package/dist/components/core/BwgMultiSelect.d.ts +14 -0
  61. package/dist/components/core/BwgNumber.d.ts +13 -0
  62. package/dist/components/core/BwgRadio.d.ts +8 -0
  63. package/dist/components/core/BwgRangePicker.d.ts +12 -0
  64. package/dist/components/core/BwgSearch.d.ts +16 -0
  65. package/dist/components/core/BwgSelect.d.ts +15 -0
  66. package/dist/components/core/BwgTextArea.d.ts +8 -0
  67. package/dist/components/core/BwgUploader.d.ts +34 -0
  68. package/dist/components/core/index.cjs +1 -0
  69. package/dist/components/core/index.d.ts +36 -0
  70. package/dist/components/core/index.js +21 -0
  71. package/dist/components/guide/BwgComponentGuide.d.ts +2 -0
  72. package/dist/components/guide/BwgDeveloperGuide.d.ts +2 -0
  73. package/dist/components/guide/index.cjs +1 -0
  74. package/dist/components/guide/index.d.ts +2 -0
  75. package/dist/components/guide/index.js +7 -0
  76. package/dist/index.cjs +1 -0
  77. package/dist/index.d.ts +5 -0
  78. package/dist/index.js +291 -0
  79. package/dist/provider/contexts/CommonCodeContext.d.ts +46 -0
  80. package/dist/provider/contexts/SearchBoxContext.d.ts +15 -0
  81. package/dist/provider/contexts/ServiceCodeContext.d.ts +108 -0
  82. package/dist/provider/contexts/UtilsContext.d.ts +194 -0
  83. package/dist/provider/contexts/index.d.ts +4 -0
  84. package/dist/provider/hooks/index.d.ts +2 -0
  85. package/dist/provider/hooks/usePopup.d.ts +17 -0
  86. package/dist/provider/hooks/useViewState.d.ts +14 -0
  87. package/dist/provider/index.cjs +1 -0
  88. package/dist/provider/index.d.ts +2 -0
  89. package/dist/provider/index.js +27 -0
  90. package/dist/public/styles/assets/images/contents/icon/ico-business-trip.svg +21 -0
  91. package/dist/public/styles/assets/images/contents/icon/ico-holiday.svg +23 -0
  92. package/dist/public/styles/assets/images/contents/icon/ico-menu-help.svg +5 -0
  93. package/dist/public/styles/assets/images/contents/icon/ico-overtime.svg +17 -0
  94. package/dist/public/styles/assets/images/contents/icon/ico-quick-tab-move.svg +8 -0
  95. package/dist/public/styles/assets/images/contents/icon/quick tab-text.svg +4 -0
  96. package/dist/public/styles/assets/images/contents/icon/quick-tab-text.svg +4 -0
  97. package/dist/public/test.txt +0 -0
  98. package/dist/stores/codeStore.d.ts +173 -0
  99. package/dist/stores/favoriteStore.d.ts +19 -0
  100. package/dist/stores/index.cjs +1 -0
  101. package/dist/stores/index.d.ts +14 -0
  102. package/dist/stores/index.js +20 -0
  103. package/dist/stores/menuStore.d.ts +52 -0
  104. package/dist/stores/popupStore.d.ts +72 -0
  105. package/dist/stores/userStore.d.ts +36 -0
  106. package/dist/styles/assets/fonts/Roboto/Roboto-bold.eot +2751 -0
  107. package/dist/styles/assets/fonts/Roboto/Roboto-bold.svg +626 -0
  108. package/dist/styles/assets/fonts/Roboto/Roboto-bold.ttf +2755 -0
  109. package/dist/styles/assets/fonts/Roboto/Roboto-bold.woff +2755 -0
  110. package/dist/styles/assets/fonts/Roboto/Roboto-bold.woff2 +2754 -0
  111. package/dist/styles/assets/fonts/Roboto/Roboto-medium.eot +0 -0
  112. package/dist/styles/assets/fonts/Roboto/Roboto-medium.svg +1064 -0
  113. package/dist/styles/assets/fonts/Roboto/Roboto-medium.ttf +0 -0
  114. package/dist/styles/assets/fonts/Roboto/Roboto-medium.woff +0 -0
  115. package/dist/styles/assets/fonts/Roboto/Roboto-medium.woff2 +2754 -0
  116. package/dist/styles/assets/fonts/Roboto/Roboto-regular.eot +0 -0
  117. package/dist/styles/assets/fonts/Roboto/Roboto-regular.svg +1063 -0
  118. package/dist/styles/assets/fonts/Roboto/Roboto-regular.ttf +1597 -0
  119. package/dist/styles/assets/fonts/Roboto/Roboto-regular.woff +1597 -0
  120. package/dist/styles/assets/fonts/Roboto/Roboto-regular.woff2 +1597 -0
  121. package/dist/styles/assets/fonts/material/MaterialIcons-Regular.eot +1594 -0
  122. package/dist/styles/assets/fonts/material/MaterialIcons-Regular.ttf +0 -0
  123. package/dist/styles/assets/fonts/material/MaterialIcons-Regular.woff +1594 -0
  124. package/dist/styles/assets/fonts/material/MaterialIcons-Regular.woff2 +1594 -0
  125. package/dist/styles/assets/fonts/material/MaterialSymbolsOutlined.woff2 +0 -0
  126. package/dist/styles/assets/fonts/meiryo/meiryo.ttf +0 -0
  127. package/dist/styles/assets/fonts/meiryo/meiryob.ttf +0 -0
  128. package/dist/styles/assets/fonts/nanumBarun/NanumBarunGothic.eot +0 -0
  129. package/dist/styles/assets/fonts/nanumBarun/NanumBarunGothic.ttf +0 -0
  130. package/dist/styles/assets/fonts/nanumBarun/NanumBarunGothic.woff +0 -0
  131. package/dist/styles/assets/fonts/nanumBarun/NanumBarunGothicBold.eot +0 -0
  132. package/dist/styles/assets/fonts/nanumBarun/NanumBarunGothicBold.ttf +0 -0
  133. package/dist/styles/assets/fonts/nanumBarun/NanumBarunGothicBold.woff +0 -0
  134. package/dist/styles/assets/fonts/nanumBarun/NanumBarunGothicWeb.eot +0 -0
  135. package/dist/styles/assets/fonts/nanumBarun/NanumBarunGothicWeb.ttf +0 -0
  136. package/dist/styles/assets/fonts/nanumBarun/NanumBarunGothicWeb.woff +0 -0
  137. package/dist/styles/assets/fonts/nanumBarun/NanumBarunGothicWebBold.eot +0 -0
  138. package/dist/styles/assets/fonts/nanumBarun/NanumBarunGothicWebBold.ttf +0 -0
  139. package/dist/styles/assets/fonts/nanumBarun/NanumBarunGothicWebBold.woff +0 -0
  140. package/dist/styles/assets/fonts/nanumBarun/NanumBarunGothicWebLight.eot +0 -0
  141. package/dist/styles/assets/fonts/nanumBarun/NanumBarunGothicWebLight.ttf +0 -0
  142. package/dist/styles/assets/fonts/nanumBarun/NanumBarunGothicWebLight.woff +0 -0
  143. package/dist/styles/assets/fonts/notokr/NotoSans-Bold.eot +2314 -0
  144. package/dist/styles/assets/fonts/notokr/NotoSans-Bold.otf +2314 -0
  145. package/dist/styles/assets/fonts/notokr/NotoSans-Bold.svg +47 -0
  146. package/dist/styles/assets/fonts/notokr/NotoSans-Bold.ttf +2301 -0
  147. package/dist/styles/assets/fonts/notokr/NotoSans-Bold.woff +2314 -0
  148. package/dist/styles/assets/fonts/notokr/NotoSans-Bold.woff2 +2315 -0
  149. package/dist/styles/assets/fonts/notokr/NotoSans-Light.otf +0 -0
  150. package/dist/styles/assets/fonts/notokr/NotoSans-Light.woff +0 -0
  151. package/dist/styles/assets/fonts/notokr/NotoSans-Light.woff2 +0 -0
  152. package/dist/styles/assets/fonts/notokr/NotoSans-Medium.eot +0 -0
  153. package/dist/styles/assets/fonts/notokr/NotoSans-Medium.otf +0 -0
  154. package/dist/styles/assets/fonts/notokr/NotoSans-Medium.svg +47 -0
  155. package/dist/styles/assets/fonts/notokr/NotoSans-Medium.ttf +0 -0
  156. package/dist/styles/assets/fonts/notokr/NotoSans-Medium.woff +0 -0
  157. package/dist/styles/assets/fonts/notokr/NotoSans-Medium.woff2 +0 -0
  158. package/dist/styles/assets/fonts/notokr/NotoSans-Regular.eot +0 -0
  159. package/dist/styles/assets/fonts/notokr/NotoSans-Regular.otf +0 -0
  160. package/dist/styles/assets/fonts/notokr/NotoSans-Regular.svg +47 -0
  161. package/dist/styles/assets/fonts/notokr/NotoSans-Regular.ttf +2299 -0
  162. package/dist/styles/assets/fonts/notokr/NotoSans-Regular.woff +0 -0
  163. package/dist/styles/assets/fonts/notokr/NotoSans-Regular.woff2 +0 -0
  164. package/dist/styles/assets/fonts/poppins/Poppins-ExtraLight.eot +0 -0
  165. package/dist/styles/assets/fonts/poppins/Poppins-ExtraLight.ttf +0 -0
  166. package/dist/styles/assets/fonts/poppins/Poppins-ExtraLight.woff +0 -0
  167. package/dist/styles/assets/fonts/poppins/Poppins-ExtraLight.woff2 +0 -0
  168. package/dist/styles/assets/fonts/poppins/Poppins-Light.eot +0 -0
  169. package/dist/styles/assets/fonts/poppins/Poppins-Light.ttf +0 -0
  170. package/dist/styles/assets/fonts/poppins/Poppins-Light.woff +0 -0
  171. package/dist/styles/assets/fonts/poppins/Poppins-Light.woff2 +0 -0
  172. package/dist/styles/assets/fonts/poppins/Poppins-Medium.eot +0 -0
  173. package/dist/styles/assets/fonts/poppins/Poppins-Medium.ttf +0 -0
  174. package/dist/styles/assets/fonts/poppins/Poppins-Medium.woff +0 -0
  175. package/dist/styles/assets/fonts/poppins/Poppins-Medium.woff2 +0 -0
  176. package/dist/styles/assets/fonts/poppins/Poppins-Regular.eot +0 -0
  177. package/dist/styles/assets/fonts/poppins/Poppins-Regular.ttf +0 -0
  178. package/dist/styles/assets/fonts/poppins/Poppins-Regular.woff +0 -0
  179. package/dist/styles/assets/fonts/poppins/Poppins-Regular.woff2 +0 -0
  180. package/dist/styles/assets/fonts/poppins/Poppins-SemiBold.eot +0 -0
  181. package/dist/styles/assets/fonts/poppins/Poppins-SemiBold.ttf +0 -0
  182. package/dist/styles/assets/fonts/poppins/Poppins-SemiBold.woff +0 -0
  183. package/dist/styles/assets/fonts/poppins/Poppins-SemiBold.woff2 +0 -0
  184. package/dist/styles/assets/fonts/pretendard/Pretendard-Black.woff2 +0 -0
  185. package/dist/styles/assets/fonts/pretendard/Pretendard-Bold.woff2 +0 -0
  186. package/dist/styles/assets/fonts/pretendard/Pretendard-ExtraBold.woff2 +0 -0
  187. package/dist/styles/assets/fonts/pretendard/Pretendard-ExtraLight.woff2 +0 -0
  188. package/dist/styles/assets/fonts/pretendard/Pretendard-Light.woff2 +0 -0
  189. package/dist/styles/assets/fonts/pretendard/Pretendard-Medium.woff2 +0 -0
  190. package/dist/styles/assets/fonts/pretendard/Pretendard-Regular.woff2 +0 -0
  191. package/dist/styles/assets/fonts/pretendard/Pretendard-SemiBold.woff2 +0 -0
  192. package/dist/styles/assets/fonts/pretendard/Pretendard-Thin.woff2 +0 -0
  193. package/dist/styles/assets/images/README.md +144 -0
  194. package/dist/styles/assets/images/backgrounds/landing_bg.png +0 -0
  195. package/dist/styles/assets/images/backgrounds/login_bg_01.png +0 -0
  196. package/dist/styles/assets/images/backgrounds/login_bg_02.png +0 -0
  197. package/dist/styles/assets/images/contents/btn/btn-down-on.png +0 -0
  198. package/dist/styles/assets/images/contents/btn/btn-down.png +0 -0
  199. package/dist/styles/assets/images/contents/btn/btn-left-on.png +0 -0
  200. package/dist/styles/assets/images/contents/btn/btn-left.png +0 -0
  201. package/dist/styles/assets/images/contents/btn/btn-right-on.png +0 -0
  202. package/dist/styles/assets/images/contents/btn/btn-right.png +0 -0
  203. package/dist/styles/assets/images/contents/btn/btn-up-on.png +0 -0
  204. package/dist/styles/assets/images/contents/btn/btn-up.png +0 -0
  205. package/dist/styles/assets/images/contents/icon/ico-business-trip.svg +21 -0
  206. package/dist/styles/assets/images/contents/icon/ico-holiday.svg +23 -0
  207. package/dist/styles/assets/images/contents/icon/ico-menu-help.svg +5 -0
  208. package/dist/styles/assets/images/contents/icon/ico-overtime.svg +17 -0
  209. package/dist/styles/assets/images/contents/icon/ico-quick-tab-move.svg +4 -0
  210. package/dist/styles/assets/images/contents/icon/ico-setting.svg +4 -0
  211. package/dist/styles/assets/images/contents/icon/ico_blue.png +0 -0
  212. package/dist/styles/assets/images/contents/icon/ico_red.png +0 -0
  213. package/dist/styles/assets/images/contents/icon/quick tab-text.svg +4 -0
  214. package/dist/styles/assets/images/contents/icon/quick-tab-text.svg +4 -0
  215. package/dist/styles/assets/images/logos/KRX Logo.svg +22 -0
  216. package/dist/styles/assets/images/logos/bwg-logo-blue.png +0 -0
  217. package/dist/styles/assets/images/logos/krx-logo-x2.png +0 -0
  218. package/dist/styles/assets/images/logos/krx-logo.png +0 -0
  219. package/dist/styles/assets/react.svg +1 -0
  220. package/dist/styles/components.css +785 -0
  221. package/dist/styles/fonts.css +101 -0
  222. package/dist/styles/global.css +52 -0
  223. package/dist/styles/index.css +41 -0
  224. package/dist/styles/layout.css +1132 -0
  225. package/dist/styles/login.css +151 -0
  226. package/dist/styles/popup.css +30 -0
  227. package/dist/styles/renderers.css +190 -0
  228. package/dist/styles/size.css +4019 -0
  229. package/dist/styles/variables.css +106 -0
  230. package/dist/test.txt +0 -0
  231. package/dist/types/images.d.ts +25 -0
  232. package/dist/utils/apiUtils.d.ts +85 -0
  233. package/dist/utils/arrayUtils.d.ts +34 -0
  234. package/dist/utils/commonUtils.d.ts +54 -0
  235. package/dist/utils/cookieUtils.d.ts +4 -0
  236. package/dist/utils/dateUtils.d.ts +26 -0
  237. package/dist/utils/envUtils.d.ts +8 -0
  238. package/dist/utils/imageUtils.d.ts +31 -0
  239. package/dist/utils/index.cjs +1 -0
  240. package/dist/utils/index.d.ts +14 -0
  241. package/dist/utils/index.js +211 -0
  242. package/dist/utils/messageUtils.d.ts +65 -0
  243. package/dist/utils/notificationUtils.d.ts +51 -0
  244. package/dist/utils/objectUtils.d.ts +27 -0
  245. package/dist/utils/realFormat.d.ts +242 -0
  246. package/dist/utils/serviceConfig.d.ts +35 -0
  247. package/dist/utils/stringUtils.d.ts +142 -0
  248. package/dist/utils/userUtils.d.ts +19 -0
  249. package/package.json +123 -0
  250. package/public/styles/assets/images/contents/icon/ico-business-trip.svg +21 -0
  251. package/public/styles/assets/images/contents/icon/ico-holiday.svg +23 -0
  252. package/public/styles/assets/images/contents/icon/ico-menu-help.svg +5 -0
  253. package/public/styles/assets/images/contents/icon/ico-overtime.svg +17 -0
  254. package/public/styles/assets/images/contents/icon/ico-quick-tab-move.svg +8 -0
  255. package/public/styles/assets/images/contents/icon/quick tab-text.svg +4 -0
  256. package/public/styles/assets/images/contents/icon/quick-tab-text.svg +4 -0
  257. 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&&gt.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,9 @@
1
+ import { default as React } from 'react';
2
+ export interface BwgPopupProps {
3
+ popup?: any;
4
+ popupEvent?: any;
5
+ onClose?: () => void;
6
+ children: React.ReactNode;
7
+ }
8
+ declare const BwgPopup: React.FC<BwgPopupProps>;
9
+ export default BwgPopup;
@@ -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;
@@ -0,0 +1,5 @@
1
+ import { TabsProps } from 'antd';
2
+ export interface BwgTabsProps extends TabsProps {
3
+ }
4
+ declare const BwgTabs: (props: BwgTabsProps) => import("react/jsx-runtime").JSX.Element;
5
+ export default BwgTabs;