@j-solution/components 1.4.2 → 1.5.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.
@@ -3,5 +3,5 @@
3
3
  for (const [t_key, t_val] of t_opts)
4
4
  t_merged[t_key] = t_val;
5
5
  return t_merged;
6
- };,u=t(e.default,[["__scopeId","data-v-daf6a5db"]]);exports.default=u;
6
+ };,u=t(e.default,[["__scopeId","data-v-4ced4b77"]]);exports.default=u;
7
7
  //# sourceMappingURL=JEditor.vue.cjs.map
@@ -6,8 +6,8 @@ const t = (t_comp, t_opts) => {
6
6
  t_merged[t_key] = t_val;
7
7
  return t_merged;
8
8
  };
9
- const f = /* @__PURE__ */ t(o, [["__scopeId", "data-v-daf6a5db"]]);
9
+ const _ = /* @__PURE__ */ t(o, [["__scopeId", "data-v-4ced4b77"]]);
10
10
  export {
11
- f as default
11
+ _ as default
12
12
  };
13
13
  //# sourceMappingURL=JEditor.vue.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("vue"),i=require("md-editor-v3");;/* empty css */const u=a.defineComponent({__name:"JEditor",props:{modelValue:{default:""},placeholder:{default:"마크다운을 입력하세요..."},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},height:{default:500},theme:{default:"light"},class:{}},emits:["update:modelValue","change","save"],setup(e,{emit:d}){const o=e,t=d,n=l=>{t("update:modelValue",l),t("change",l)},r=l=>{t("save",l)};return(l,s)=>(a.openBlock(),a.createElementBlock("div",{class:a.normalizeClass(["j-editor-wrapper",o.class])},[a.createVNode(a.unref(i.MdEditor),{"model-value":e.modelValue,placeholder:e.placeholder,disabled:e.disabled,readonly:e.readonly,"editor-class-name":"j-editor","preview-class-name":"j-editor-preview",height:e.height,theme:e.theme,language:"en-US","onUpdate:modelValue":n,onOnSave:r},null,8,["model-value","placeholder","disabled","readonly","height","theme"])],2))}});exports.default=u;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("vue"),r=require("md-editor-v3");;/* empty css */const u=l.defineComponent({__name:"JEditor",props:{modelValue:{default:""},placeholder:{default:"마크다운을 입력하세요..."},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},height:{default:"300px"},theme:{default:"light"},class:{}},emits:["update:modelValue","change","save"],setup(e,{emit:d}){const o=e,t=d,n=a=>{t("update:modelValue",a),t("change",a)},i=a=>{t("save",a)};return(a,s)=>(l.openBlock(),l.createElementBlock("div",{class:l.normalizeClass(["j-editor-wrapper",o.class])},[l.createVNode(l.unref(r.MdEditor),{"model-value":e.modelValue,placeholder:e.placeholder,disabled:e.disabled,"read-only":e.readonly,"editor-class-name":"j-editor","preview-class-name":"j-editor-preview",style:l.normalizeStyle({height:typeof e.height=="number"?`${e.height}px`:e.height}),theme:e.theme,language:"en-US","onUpdate:modelValue":n,onOnSave:i},null,8,["model-value","placeholder","disabled","read-only","style","theme"])],2))}});exports.default=u;
2
2
  //# sourceMappingURL=JEditor.vue2.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"JEditor.vue2.cjs","sources":["../../../../src/components/atoms/JEditor.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed } from 'vue'\r\nimport { MdEditor } from 'md-editor-v3'\r\nimport 'md-editor-v3/lib/style.css'\r\n\r\nconst props = withDefaults(\r\n defineProps<{\r\n /** 마크다운 내용 (v-model) */\r\n modelValue?: string\r\n /** 플레이스홀더 텍스트 */\r\n placeholder?: string\r\n /** 비활성화 상태 */\r\n disabled?: boolean\r\n /** 읽기 전용 상태 */\r\n readonly?: boolean\r\n /** 에디터 높이 */\r\n height?: string | number\r\n /** 테마 (light/dark) */\r\n theme?: 'light' | 'dark'\r\n /** 추가 CSS 클래스 */\r\n class?: string\r\n }>(),\r\n {\r\n modelValue: '',\r\n placeholder: '마크다운을 입력하세요...',\r\n disabled: false,\r\n readonly: false,\r\n height: 500,\r\n theme: 'light',\r\n },\r\n)\r\n\r\nconst emit = defineEmits<{\r\n 'update:modelValue': [value: string]\r\n 'change': [value: string]\r\n 'save': [value: string]\r\n}>()\r\n\r\nconst handleChange = (value: string) => {\r\n emit('update:modelValue', value)\r\n emit('change', value)\r\n}\r\n\r\nconst handleSave = (value: string) => {\r\n emit('save', value)\r\n}\r\n</script>\r\n\r\n<template>\r\n <div :class=\"['j-editor-wrapper', props.class]\">\r\n <MdEditor\r\n :model-value=\"modelValue\"\r\n :placeholder=\"placeholder\"\r\n :disabled=\"disabled\"\r\n :readonly=\"readonly\"\r\n :editor-class-name=\"'j-editor'\"\r\n :preview-class-name=\"'j-editor-preview'\"\r\n :height=\"height\"\r\n :theme=\"theme\"\r\n language=\"en-US\"\r\n @update:model-value=\"handleChange\"\r\n @on-save=\"handleSave\"\r\n />\r\n </div>\r\n</template>\r\n\r\n<style scoped>\r\n.j-editor-wrapper {\r\n @apply w-full;\r\n}\r\n</style>\r\n"],"names":["props","__props","emit","__emit","handleChange","value","handleSave","_createElementBlock","_normalizeClass","_createVNode","_unref","MdEditor"],"mappings":"0kBAKA,MAAMA,EAAQC,EA2BRC,EAAOC,EAMPC,EAAgBC,GAAkB,CACtCH,EAAK,oBAAqBG,CAAK,EAC/BH,EAAK,SAAUG,CAAK,CACtB,EAEMC,EAAcD,GAAkB,CACpCH,EAAK,OAAQG,CAAK,CACpB,8BAIEE,EAAAA,mBAcM,MAAA,CAdA,MAAKC,EAAAA,eAAA,CAAA,mBAAuBR,EAAM,KAAK,CAAA,CAAA,GAC3CS,cAYEC,EAAAA,MAAAC,EAAAA,QAAA,EAAA,CAXC,cAAaV,EAAA,WACb,YAAaA,EAAA,YACb,SAAUA,EAAA,SACV,SAAUA,EAAA,SACV,oBAAmB,WACnB,qBAAoB,mBACpB,OAAQA,EAAA,OACR,MAAOA,EAAA,MACR,SAAS,QACR,sBAAoBG,EACpB,SAASE,CAAA"}
1
+ {"version":3,"file":"JEditor.vue2.cjs","sources":["../../../../src/components/atoms/JEditor.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { MdEditor } from 'md-editor-v3'\r\nimport 'md-editor-v3/lib/style.css'\r\n\r\nconst props = withDefaults(\r\n defineProps<{\r\n /** 마크다운 내용 (v-model) */\r\n modelValue?: string\r\n /** 플레이스홀더 텍스트 */\r\n placeholder?: string\r\n /** 비활성화 상태 */\r\n disabled?: boolean\r\n /** 읽기 전용 상태 */\r\n readonly?: boolean\r\n /** 에디터 높이 */\r\n height?: string | number\r\n /** 테마 (light/dark) */\r\n theme?: 'light' | 'dark'\r\n /** 추가 CSS 클래스 */\r\n class?: string\r\n }>(),\r\n {\r\n modelValue: '',\r\n placeholder: '마크다운을 입력하세요...',\r\n disabled: false,\r\n readonly: false,\r\n height: '300px',\r\n theme: 'light',\r\n },\r\n)\r\n\r\nconst emit = defineEmits<{\r\n 'update:modelValue': [value: string]\r\n 'change': [value: string]\r\n 'save': [value: string]\r\n}>()\r\n\r\nconst handleChange = (value: string) => {\r\n emit('update:modelValue', value)\r\n emit('change', value)\r\n}\r\n\r\nconst handleSave = (value: string) => {\r\n emit('save', value)\r\n}\r\n</script>\r\n\r\n<template>\r\n <div :class=\"['j-editor-wrapper', props.class]\">\r\n <MdEditor\r\n :model-value=\"modelValue\"\r\n :placeholder=\"placeholder\"\r\n :disabled=\"disabled\"\r\n :read-only=\"readonly\"\r\n :editor-class-name=\"'j-editor'\"\r\n :preview-class-name=\"'j-editor-preview'\"\r\n :style=\"{ height: typeof height === 'number' ? `${height}px` : height }\"\r\n :theme=\"theme\"\r\n language=\"en-US\"\r\n @update:model-value=\"handleChange\"\r\n @on-save=\"handleSave\"\r\n />\r\n </div>\r\n</template>\r\n\r\n<style scoped>\r\n.j-editor-wrapper {\r\n @apply w-full;\r\n}\r\n</style>\r\n"],"names":["props","__props","emit","__emit","handleChange","value","handleSave","_createElementBlock","_normalizeClass","_createVNode","_unref","MdEditor","_normalizeStyle"],"mappings":"8kBAIA,MAAMA,EAAQC,EA2BRC,EAAOC,EAMPC,EAAgBC,GAAkB,CACtCH,EAAK,oBAAqBG,CAAK,EAC/BH,EAAK,SAAUG,CAAK,CACtB,EAEMC,EAAcD,GAAkB,CACpCH,EAAK,OAAQG,CAAK,CACpB,8BAIEE,EAAAA,mBAcM,MAAA,CAdA,MAAKC,EAAAA,eAAA,CAAA,mBAAuBR,EAAM,KAAK,CAAA,CAAA,GAC3CS,cAYEC,EAAAA,MAAAC,EAAAA,QAAA,EAAA,CAXC,cAAaV,EAAA,WACb,YAAaA,EAAA,YACb,SAAUA,EAAA,SACV,YAAWA,EAAA,SACX,oBAAmB,WACnB,qBAAoB,mBACpB,MAAKW,EAAAA,eAAA,CAAA,OAAA,OAAmBX,EAAA,QAAM,SAAA,GAAmBA,EAAA,MAAM,KAAOA,EAAA,OAAM,EACpE,MAAOA,EAAA,MACR,SAAS,QACR,sBAAoBG,EACpB,SAASE,CAAA"}
@@ -1,14 +1,14 @@
1
- import { defineComponent as r, createElementBlock as i, openBlock as m, normalizeClass as s, createVNode as c, unref as h } from "vue";
2
- import { MdEditor as u } from "md-editor-v3";
1
+ import { defineComponent as i, createElementBlock as m, openBlock as r, normalizeClass as h, createVNode as s, unref as c, normalizeStyle as u } from "vue";
2
+ import { MdEditor as f } from "md-editor-v3";
3
3
  /* empty css */
4
- const y = /* @__PURE__ */ r({
4
+ const V = /* @__PURE__ */ i({
5
5
  __name: "JEditor",
6
6
  props: {
7
7
  modelValue: { default: "" },
8
8
  placeholder: { default: "마크다운을 입력하세요..." },
9
9
  disabled: { type: Boolean, default: !1 },
10
10
  readonly: { type: Boolean, default: !1 },
11
- height: { default: 500 },
11
+ height: { default: "300px" },
12
12
  theme: { default: "light" },
13
13
  class: {}
14
14
  },
@@ -19,26 +19,26 @@ const y = /* @__PURE__ */ r({
19
19
  }, n = (a) => {
20
20
  l("save", a);
21
21
  };
22
- return (a, f) => (m(), i("div", {
23
- class: s(["j-editor-wrapper", d.class])
22
+ return (a, g) => (r(), m("div", {
23
+ class: h(["j-editor-wrapper", d.class])
24
24
  }, [
25
- c(h(u), {
25
+ s(c(f), {
26
26
  "model-value": e.modelValue,
27
27
  placeholder: e.placeholder,
28
28
  disabled: e.disabled,
29
- readonly: e.readonly,
29
+ "read-only": e.readonly,
30
30
  "editor-class-name": "j-editor",
31
31
  "preview-class-name": "j-editor-preview",
32
- height: e.height,
32
+ style: u({ height: typeof e.height == "number" ? `${e.height}px` : e.height }),
33
33
  theme: e.theme,
34
34
  language: "en-US",
35
35
  "onUpdate:modelValue": o,
36
36
  onOnSave: n
37
- }, null, 8, ["model-value", "placeholder", "disabled", "readonly", "height", "theme"])
37
+ }, null, 8, ["model-value", "placeholder", "disabled", "read-only", "style", "theme"])
38
38
  ], 2));
39
39
  }
40
40
  });
41
41
  export {
42
- y as default
42
+ V as default
43
43
  };
44
44
  //# sourceMappingURL=JEditor.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"JEditor.vue2.js","sources":["../../../../src/components/atoms/JEditor.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed } from 'vue'\r\nimport { MdEditor } from 'md-editor-v3'\r\nimport 'md-editor-v3/lib/style.css'\r\n\r\nconst props = withDefaults(\r\n defineProps<{\r\n /** 마크다운 내용 (v-model) */\r\n modelValue?: string\r\n /** 플레이스홀더 텍스트 */\r\n placeholder?: string\r\n /** 비활성화 상태 */\r\n disabled?: boolean\r\n /** 읽기 전용 상태 */\r\n readonly?: boolean\r\n /** 에디터 높이 */\r\n height?: string | number\r\n /** 테마 (light/dark) */\r\n theme?: 'light' | 'dark'\r\n /** 추가 CSS 클래스 */\r\n class?: string\r\n }>(),\r\n {\r\n modelValue: '',\r\n placeholder: '마크다운을 입력하세요...',\r\n disabled: false,\r\n readonly: false,\r\n height: 500,\r\n theme: 'light',\r\n },\r\n)\r\n\r\nconst emit = defineEmits<{\r\n 'update:modelValue': [value: string]\r\n 'change': [value: string]\r\n 'save': [value: string]\r\n}>()\r\n\r\nconst handleChange = (value: string) => {\r\n emit('update:modelValue', value)\r\n emit('change', value)\r\n}\r\n\r\nconst handleSave = (value: string) => {\r\n emit('save', value)\r\n}\r\n</script>\r\n\r\n<template>\r\n <div :class=\"['j-editor-wrapper', props.class]\">\r\n <MdEditor\r\n :model-value=\"modelValue\"\r\n :placeholder=\"placeholder\"\r\n :disabled=\"disabled\"\r\n :readonly=\"readonly\"\r\n :editor-class-name=\"'j-editor'\"\r\n :preview-class-name=\"'j-editor-preview'\"\r\n :height=\"height\"\r\n :theme=\"theme\"\r\n language=\"en-US\"\r\n @update:model-value=\"handleChange\"\r\n @on-save=\"handleSave\"\r\n />\r\n </div>\r\n</template>\r\n\r\n<style scoped>\r\n.j-editor-wrapper {\r\n @apply w-full;\r\n}\r\n</style>\r\n"],"names":["props","__props","emit","__emit","handleChange","value","handleSave","_createElementBlock","_normalizeClass","_createVNode","_unref","MdEditor"],"mappings":";;;;;;;;;;;;;;;;AAKA,UAAMA,IAAQC,GA2BRC,IAAOC,GAMPC,IAAe,CAACC,MAAkB;AACtC,MAAAH,EAAK,qBAAqBG,CAAK,GAC/BH,EAAK,UAAUG,CAAK;AAAA,IACtB,GAEMC,IAAa,CAACD,MAAkB;AACpC,MAAAH,EAAK,QAAQG,CAAK;AAAA,IACpB;2BAIEE,EAcM,OAAA;AAAA,MAdA,OAAKC,EAAA,CAAA,oBAAuBR,EAAM,KAAK,CAAA;AAAA,IAAA;MAC3CS,EAYEC,EAAAC,CAAA,GAAA;AAAA,QAXC,eAAaV,EAAA;AAAA,QACb,aAAaA,EAAA;AAAA,QACb,UAAUA,EAAA;AAAA,QACV,UAAUA,EAAA;AAAA,QACV,qBAAmB;AAAA,QACnB,sBAAoB;AAAA,QACpB,QAAQA,EAAA;AAAA,QACR,OAAOA,EAAA;AAAA,QACR,UAAS;AAAA,QACR,uBAAoBG;AAAA,QACpB,UAASE;AAAA,MAAA;;;;"}
1
+ {"version":3,"file":"JEditor.vue2.js","sources":["../../../../src/components/atoms/JEditor.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { MdEditor } from 'md-editor-v3'\r\nimport 'md-editor-v3/lib/style.css'\r\n\r\nconst props = withDefaults(\r\n defineProps<{\r\n /** 마크다운 내용 (v-model) */\r\n modelValue?: string\r\n /** 플레이스홀더 텍스트 */\r\n placeholder?: string\r\n /** 비활성화 상태 */\r\n disabled?: boolean\r\n /** 읽기 전용 상태 */\r\n readonly?: boolean\r\n /** 에디터 높이 */\r\n height?: string | number\r\n /** 테마 (light/dark) */\r\n theme?: 'light' | 'dark'\r\n /** 추가 CSS 클래스 */\r\n class?: string\r\n }>(),\r\n {\r\n modelValue: '',\r\n placeholder: '마크다운을 입력하세요...',\r\n disabled: false,\r\n readonly: false,\r\n height: '300px',\r\n theme: 'light',\r\n },\r\n)\r\n\r\nconst emit = defineEmits<{\r\n 'update:modelValue': [value: string]\r\n 'change': [value: string]\r\n 'save': [value: string]\r\n}>()\r\n\r\nconst handleChange = (value: string) => {\r\n emit('update:modelValue', value)\r\n emit('change', value)\r\n}\r\n\r\nconst handleSave = (value: string) => {\r\n emit('save', value)\r\n}\r\n</script>\r\n\r\n<template>\r\n <div :class=\"['j-editor-wrapper', props.class]\">\r\n <MdEditor\r\n :model-value=\"modelValue\"\r\n :placeholder=\"placeholder\"\r\n :disabled=\"disabled\"\r\n :read-only=\"readonly\"\r\n :editor-class-name=\"'j-editor'\"\r\n :preview-class-name=\"'j-editor-preview'\"\r\n :style=\"{ height: typeof height === 'number' ? `${height}px` : height }\"\r\n :theme=\"theme\"\r\n language=\"en-US\"\r\n @update:model-value=\"handleChange\"\r\n @on-save=\"handleSave\"\r\n />\r\n </div>\r\n</template>\r\n\r\n<style scoped>\r\n.j-editor-wrapper {\r\n @apply w-full;\r\n}\r\n</style>\r\n"],"names":["props","__props","emit","__emit","handleChange","value","handleSave","_createElementBlock","_normalizeClass","_createVNode","_unref","MdEditor","_normalizeStyle"],"mappings":";;;;;;;;;;;;;;;;AAIA,UAAMA,IAAQC,GA2BRC,IAAOC,GAMPC,IAAe,CAACC,MAAkB;AACtC,MAAAH,EAAK,qBAAqBG,CAAK,GAC/BH,EAAK,UAAUG,CAAK;AAAA,IACtB,GAEMC,IAAa,CAACD,MAAkB;AACpC,MAAAH,EAAK,QAAQG,CAAK;AAAA,IACpB;2BAIEE,EAcM,OAAA;AAAA,MAdA,OAAKC,EAAA,CAAA,oBAAuBR,EAAM,KAAK,CAAA;AAAA,IAAA;MAC3CS,EAYEC,EAAAC,CAAA,GAAA;AAAA,QAXC,eAAaV,EAAA;AAAA,QACb,aAAaA,EAAA;AAAA,QACb,UAAUA,EAAA;AAAA,QACV,aAAWA,EAAA;AAAA,QACX,qBAAmB;AAAA,QACnB,sBAAoB;AAAA,QACpB,OAAKW,EAAA,EAAA,QAAA,OAAmBX,EAAA,UAAM,WAAA,GAAmBA,EAAA,MAAM,OAAOA,EAAA,QAAM;AAAA,QACpE,OAAOA,EAAA;AAAA,QACR,UAAS;AAAA,QACR,uBAAoBG;AAAA,QACpB,UAASE;AAAA,MAAA;;;;"}
@@ -3,5 +3,5 @@
3
3
  for (const [t_key, t_val] of t_opts)
4
4
  t_merged[t_key] = t_val;
5
5
  return t_merged;
6
- };,u=t(e.default,[["__scopeId","data-v-cf2b44a2"]]);exports.default=u;
6
+ };,u=t(e.default,[["__scopeId","data-v-4b111a60"]]);exports.default=u;
7
7
  //# sourceMappingURL=JGrid.vue.cjs.map
@@ -6,8 +6,8 @@ const r = (r_comp, r_opts) => {
6
6
  r_merged[r_key] = r_val;
7
7
  return r_merged;
8
8
  };
9
- const m = /* @__PURE__ */ r(o, [["__scopeId", "data-v-cf2b44a2"]]);
9
+ const p = /* @__PURE__ */ r(o, [["__scopeId", "data-v-4b111a60"]]);
10
10
  export {
11
- m as default
11
+ p as default
12
12
  };
13
13
  //# sourceMappingURL=JGrid.vue.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("vue"),v=require("ag-grid-vue3"),u=require("ag-grid-community"),b=require("ag-grid-enterprise");;/* empty css */;/* empty css */;/* empty css */const x={class:"ag-grid-container"},D=l.defineComponent({__name:"JGrid",props:{rowData:{},columnDefs:{},theme:{default:"ag-theme-balham"},pagination:{type:Boolean,default:!1},checkbox:{type:Boolean,default:!1},summaryColumn:{type:Boolean,default:!1},hiddenColumn:{type:Boolean,default:!1},enableGrouping:{type:Boolean,default:!1},enablePivot:{type:Boolean,default:!1},enableExcelExport:{type:Boolean,default:!1}},emits:["rowClicked","rowDoubleClicked","cellClicked","selectionChanged","cellValueChanged","gridReady"],setup(a,{expose:r,emit:c}){u.ModuleRegistry.registerModules([u.AllCommunityModule,b.AllEnterpriseModule]);const o=a,t=c,n=l.ref(null),s=l.ref(null),i=l.computed(()=>{if(!o.checkbox)return o.columnDefs;const e=[...o.columnDefs];return e.length>0&&(e[0]={...e[0],checkboxSelection:!0,headerCheckboxSelection:!0}),e}),d=l.computed(()=>({columnDefs:i.value,rowData:o.rowData,pagination:o.pagination,rowSelection:o.checkbox?"multiple":void 0,suppressRowClickSelection:o.checkbox,sideBar:o.enableGrouping||o.enablePivot?{toolPanels:[{id:"columns",labelDefault:"Columns",labelKey:"columns",iconKey:"columns",toolPanel:"agColumnsToolPanel",toolPanelParams:{suppressRowGroups:!o.enableGrouping,suppressValues:!o.enablePivot,suppressPivots:!o.enablePivot,suppressPivotMode:!o.enablePivot}}],defaultToolPanel:"columns",hiddenByDefault:!1}:void 0,groupDefaultExpanded:o.enableGrouping?1:void 0,suppressAggFuncInHeader:!1}));r({gridApi:n,gridColumnApi:s,exportToExcel:()=>{n.value&&o.enableExcelExport&&n.value.exportDataAsExcel({fileName:"grid-export.xlsx"})}});const p=e=>{n.value=e.api,s.value=e.api,t("gridReady",e)},f=e=>{t("rowClicked",e)},m=e=>{t("rowDoubleClicked",e)},g=e=>{t("cellClicked",e)},C=e=>{t("selectionChanged",e)},h=e=>{t("cellValueChanged",e)};return l.watch(()=>o.columnDefs,()=>{n.value&&n.value.setGridOption("columnDefs",i.value)},{deep:!0}),l.watch(()=>o.rowData,()=>{n.value&&n.value.setGridOption("rowData",o.rowData)},{deep:!0}),(e,y)=>(l.openBlock(),l.createElementBlock("div",x,[l.createVNode(l.unref(v.AgGridVue),{"column-defs":i.value,"row-data":a.rowData,"grid-options":d.value,class:l.normalizeClass(a.theme),style:{height:"100%",width:"100%"},onGridReady:p,onRowClicked:f,onRowDoubleClicked:m,onCellClicked:g,onSelectionChanged:C,onCellValueChanged:h},null,8,["column-defs","row-data","grid-options","class"])]))}});exports.default=D;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("vue"),b=require("ag-grid-vue3"),r=require("ag-grid-community"),v=require("ag-grid-enterprise");;/* empty css */;/* empty css */;/* empty css */const w={class:"ag-grid-container"},x=l.defineComponent({__name:"JGrid",props:{rowData:{},columnDefs:{},theme:{default:"ag-theme-balham"},pagination:{type:Boolean,default:!1},checkbox:{type:Boolean,default:!1},summaryColumn:{type:Boolean,default:!1},hiddenColumn:{type:Boolean,default:!1},enableGrouping:{type:Boolean,default:!1},enablePivot:{type:Boolean,default:!1},enableExcelExport:{type:Boolean,default:!1},enableTreeData:{type:Boolean,default:!1},getDataPath:{type:Function,default:void 0},autoGroupColumnDef:{default:void 0},selectedRows:{default:()=>[]}},emits:["rowClicked","rowDoubleClicked","cellClicked","selectionChanged","cellValueChanged","gridReady","update:selectedRows"],setup(n,{expose:c,emit:d}){r.ModuleRegistry.registerModules([r.AllCommunityModule,v.AllEnterpriseModule]);const e=n,t=d,a=l.ref(null),s=l.ref(null),u=l.computed(()=>{if(!e.checkbox)return e.columnDefs;const o=[...e.columnDefs];return o.length>0&&(o[0]={...o[0],checkboxSelection:!0,headerCheckboxSelection:!0}),o}),p=l.computed(()=>({columnDefs:u.value,rowData:e.rowData,pagination:e.pagination,rowSelection:e.checkbox?"multiple":void 0,suppressRowClickSelection:e.checkbox,sideBar:e.enableGrouping||e.enablePivot?{toolPanels:[{id:"columns",labelDefault:"Columns",labelKey:"columns",iconKey:"columns",toolPanel:"agColumnsToolPanel",toolPanelParams:{suppressRowGroups:!e.enableGrouping,suppressValues:!e.enablePivot,suppressPivots:!e.enablePivot,suppressPivotMode:!e.enablePivot}}],defaultToolPanel:"columns",hiddenByDefault:!1}:void 0,groupDefaultExpanded:e.enableGrouping||e.enableTreeData?1:void 0,suppressAggFuncInHeader:!1,treeData:e.enableTreeData||void 0,getDataPath:e.enableTreeData?e.getDataPath||(i=>i.path||[]):void 0,autoGroupColumnDef:e.enableTreeData&&e.autoGroupColumnDef?e.autoGroupColumnDef:void 0}));c({gridApi:a,gridColumnApi:s,exportToExcel:()=>{a.value&&e.enableExcelExport&&a.value.exportDataAsExcel({fileName:"grid-export.xlsx"})}});const f=o=>{a.value=o.api,s.value=o.api,t("gridReady",o)},m=o=>{t("rowClicked",o)},g=o=>{t("rowDoubleClicked",o)},D=o=>{t("cellClicked",o)},C=o=>{t("selectionChanged",o),t("update:selectedRows",o.api.getSelectedRows())},h=o=>{t("cellValueChanged",o)};return l.watch(()=>e.columnDefs,()=>{a.value&&a.value.setGridOption("columnDefs",u.value)},{deep:!0}),l.watch(()=>e.rowData,()=>{a.value&&a.value.setGridOption("rowData",e.rowData)},{deep:!0}),(o,i)=>(l.openBlock(),l.createElementBlock("div",w,[l.createVNode(l.unref(b.AgGridVue),{"column-defs":u.value,"row-data":n.rowData,"grid-options":p.value,class:l.normalizeClass(n.theme),style:{height:"100%",width:"100%"},onGridReady:f,onRowClicked:m,onRowDoubleClicked:g,onCellClicked:D,onSelectionChanged:C,onCellValueChanged:h},null,8,["column-defs","row-data","grid-options","class"])]))}});exports.default=x;
2
2
  //# sourceMappingURL=JGrid.vue2.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"JGrid.vue2.cjs","sources":["../../../../src/components/atoms/JGrid.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed, ref, watch } from 'vue'\r\nimport { AgGridVue } from 'ag-grid-vue3'\r\nimport type {\r\n ColDef,\r\n GridOptions,\r\n RowClickedEvent,\r\n CellClickedEvent,\r\n SelectionChangedEvent,\r\n CellValueChangedEvent,\r\n RowDoubleClickedEvent,\r\n GridReadyEvent,\r\n} from 'ag-grid-community'\r\nimport { ModuleRegistry, AllCommunityModule } from 'ag-grid-community'\r\n// Enterprise 모듈 import (Grouping, Pivot, Excel Export 등)\r\nimport { AllEnterpriseModule } from 'ag-grid-enterprise'\r\n// ag-grid.css는 제거 - v34에서 Theming API와 충돌 방지\r\n// 테마 CSS 파일만 사용 (클래스 기반 테마)\r\n// v34에서는 dark 테마가 같은 CSS 파일 안에 포함되어 있음\r\n// 예: ag-theme-quartz.css에 .ag-theme-quartz-dark 클래스 포함\r\nimport 'ag-grid-community/styles/ag-theme-quartz.css'\r\nimport 'ag-grid-community/styles/ag-theme-alpine.css'\r\nimport 'ag-grid-community/styles/ag-theme-balham.css'\r\n\r\n// AG Grid 모듈 등록 (Community + Enterprise)\r\nModuleRegistry.registerModules([AllCommunityModule, AllEnterpriseModule])\r\n\r\nconst props = withDefaults(\r\n defineProps<{\r\n /** 그리드에 표시할 데이터 배열 */\r\n rowData: any[]\r\n /** 컬럼 정의 배열 */\r\n columnDefs: ColDef[]\r\n /** ag-Grid 테마 */\r\n theme?: string\r\n /** 페이지네이션 활성화 여부 */\r\n pagination?: boolean\r\n /** 체크박스 선택 활성화 여부 */\r\n checkbox?: boolean\r\n /** 요약 컬럼 표시 여부 */\r\n summaryColumn?: boolean\r\n /** 숨김 컬럼 관리 활성화 여부 */\r\n hiddenColumn?: boolean\r\n /** 그룹핑 기능 활성화 여부 (Enterprise) */\r\n enableGrouping?: boolean\r\n /** 피벗 기능 활성화 여부 (Enterprise) */\r\n enablePivot?: boolean\r\n /** Excel 내보내기 기능 활성화 여부 (Enterprise) */\r\n enableExcelExport?: boolean\r\n }>(),\r\n {\r\n theme: 'ag-theme-balham',\r\n pagination: false,\r\n checkbox: false,\r\n summaryColumn: false,\r\n hiddenColumn: false,\r\n enableGrouping: false,\r\n enablePivot: false,\r\n enableExcelExport: false,\r\n },\r\n)\r\n\r\nconst emit = defineEmits<{\r\n /** 행 클릭 이벤트 */\r\n rowClicked: [event: RowClickedEvent]\r\n /** 행 더블클릭 이벤트 */\r\n rowDoubleClicked: [event: RowDoubleClickedEvent]\r\n /** 셀 클릭 이벤트 */\r\n cellClicked: [event: CellClickedEvent]\r\n /** 선택 변경 이벤트 (체크박스 등) */\r\n selectionChanged: [event: SelectionChangedEvent]\r\n /** 셀 값 변경 이벤트 */\r\n cellValueChanged: [event: CellValueChangedEvent]\r\n /** 그리드 준비 완료 이벤트 */\r\n gridReady: [event: GridReadyEvent]\r\n}>()\r\n\r\n// ag-Grid 인스턴스 참조\r\nconst gridApi = ref<any>(null)\r\nconst gridColumnApi = ref<any>(null)\r\n\r\n// checkbox 활성화 시 첫 번째 컬럼에 checkboxSelection 추가\r\nconst processedColumnDefs = computed(() => {\r\n if (!props.checkbox) {\r\n return props.columnDefs\r\n }\r\n\r\n const columnDefs = [...props.columnDefs]\r\n if (columnDefs.length > 0) {\r\n // 첫 번째 컬럼에 checkboxSelection 추가\r\n columnDefs[0] = {\r\n ...columnDefs[0],\r\n checkboxSelection: true,\r\n headerCheckboxSelection: true,\r\n }\r\n }\r\n return columnDefs\r\n})\r\n\r\n// Grid 옵션 설정\r\nconst gridOptions = computed<GridOptions>(() => {\r\n const options: GridOptions = {\r\n // theme 옵션 제거 - 클래스 기반 테마(:class=\"theme\") 사용\r\n columnDefs: processedColumnDefs.value,\r\n rowData: props.rowData,\r\n pagination: props.pagination,\r\n rowSelection: props.checkbox ? 'multiple' : undefined,\r\n // 체크박스 모드일 때 row 클릭으로 선택이 변경되지 않도록 설정\r\n // 체크박스만으로 선택을 제어하도록 함\r\n suppressRowClickSelection: props.checkbox,\r\n // suppressColumnsToolPanel은 ag-grid v34에서 더 이상 지원되지 않음\r\n // summaryColumn은 pinnedBottomRowData 또는 다른 옵션으로 구현 가능\r\n \r\n // Enterprise 기능 옵션\r\n sideBar: props.enableGrouping || props.enablePivot ? {\r\n toolPanels: [\r\n {\r\n id: 'columns',\r\n labelDefault: 'Columns',\r\n labelKey: 'columns',\r\n iconKey: 'columns',\r\n toolPanel: 'agColumnsToolPanel',\r\n toolPanelParams: {\r\n suppressRowGroups: !props.enableGrouping,\r\n suppressValues: !props.enablePivot,\r\n suppressPivots: !props.enablePivot,\r\n suppressPivotMode: !props.enablePivot,\r\n },\r\n },\r\n ],\r\n defaultToolPanel: 'columns',\r\n hiddenByDefault: false,\r\n } : undefined,\r\n \r\n // 그룹핑 기본 설정\r\n groupDefaultExpanded: props.enableGrouping ? 1 : undefined,\r\n suppressAggFuncInHeader: false,\r\n }\r\n\r\n return options\r\n})\r\n\r\n// Excel 내보내기 함수 (외부에서 사용 가능하도록 expose)\r\nconst exportToExcel = () => {\r\n if (gridApi.value && props.enableExcelExport) {\r\n gridApi.value.exportDataAsExcel({\r\n fileName: 'grid-export.xlsx',\r\n })\r\n }\r\n}\r\n\r\n// 그리드 API를 외부에 노출\r\ndefineExpose({\r\n gridApi,\r\n gridColumnApi,\r\n exportToExcel,\r\n})\r\n\r\n// Grid ready 이벤트 핸들러\r\nconst onGridReady = (params: GridReadyEvent) => {\r\n gridApi.value = params.api\r\n gridColumnApi.value = params.api // v34에서 columnApi는 deprecated\r\n emit('gridReady', params)\r\n}\r\n\r\n// 행 클릭 이벤트 핸들러\r\nconst onRowClicked = (event: RowClickedEvent) => {\r\n emit('rowClicked', event)\r\n}\r\n\r\n// 행 더블클릭 이벤트 핸들러\r\nconst onRowDoubleClicked = (event: RowDoubleClickedEvent) => {\r\n emit('rowDoubleClicked', event)\r\n}\r\n\r\n// 셀 클릭 이벤트 핸들러\r\nconst onCellClicked = (event: CellClickedEvent) => {\r\n emit('cellClicked', event)\r\n}\r\n\r\n// 선택 변경 이벤트 핸들러\r\nconst onSelectionChanged = (event: SelectionChangedEvent) => {\r\n emit('selectionChanged', event)\r\n}\r\n\r\n// 셀 값 변경 이벤트 핸들러\r\nconst onCellValueChanged = (event: CellValueChangedEvent) => {\r\n emit('cellValueChanged', event)\r\n}\r\n\r\n// columnDefs 변경 감지\r\nwatch(\r\n () => props.columnDefs,\r\n () => {\r\n if (gridApi.value) {\r\n gridApi.value.setGridOption('columnDefs', processedColumnDefs.value)\r\n }\r\n },\r\n { deep: true },\r\n)\r\n\r\n// rowData 변경 감지\r\nwatch(\r\n () => props.rowData,\r\n () => {\r\n if (gridApi.value) {\r\n gridApi.value.setGridOption('rowData', props.rowData)\r\n }\r\n },\r\n { deep: true },\r\n)\r\n</script>\r\n\r\n<template>\r\n <div class=\"ag-grid-container\">\r\n <AgGridVue\r\n :column-defs=\"processedColumnDefs\"\r\n :row-data=\"rowData\"\r\n :grid-options=\"gridOptions\"\r\n :class=\"theme\"\r\n style=\"height: 100%; width: 100%\"\r\n @grid-ready=\"onGridReady\"\r\n @row-clicked=\"onRowClicked\"\r\n @row-double-clicked=\"onRowDoubleClicked\"\r\n @cell-clicked=\"onCellClicked\"\r\n @selection-changed=\"onSelectionChanged\"\r\n @cell-value-changed=\"onCellValueChanged\"\r\n />\r\n </div>\r\n</template>\r\n\r\n<style scoped>\r\n.ag-grid-container {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n</style>\r\n"],"names":["ModuleRegistry","AllCommunityModule","AllEnterpriseModule","props","__props","emit","__emit","gridApi","ref","gridColumnApi","processedColumnDefs","computed","columnDefs","gridOptions","__expose","onGridReady","params","onRowClicked","event","onRowDoubleClicked","onCellClicked","onSelectionChanged","onCellValueChanged","watch","_openBlock","_createElementBlock","_hoisted_1","_createVNode","_unref","AgGridVue"],"mappings":"6mCAyBAA,EAAAA,eAAe,gBAAgB,CAACC,EAAAA,mBAAoBC,EAAAA,mBAAmB,CAAC,EAExE,MAAMC,EAAQC,EAmCRC,EAAOC,EAgBPC,EAAUC,EAAAA,IAAS,IAAI,EACvBC,EAAgBD,EAAAA,IAAS,IAAI,EAG7BE,EAAsBC,EAAAA,SAAS,IAAM,CACzC,GAAI,CAACR,EAAM,SACT,OAAOA,EAAM,WAGf,MAAMS,EAAa,CAAC,GAAGT,EAAM,UAAU,EACvC,OAAIS,EAAW,OAAS,IAEtBA,EAAW,CAAC,EAAI,CACd,GAAGA,EAAW,CAAC,EACf,kBAAmB,GACnB,wBAAyB,EAAA,GAGtBA,CACT,CAAC,EAGKC,EAAcF,EAAAA,SAAsB,KACX,CAE3B,WAAYD,EAAoB,MAChC,QAASP,EAAM,QACf,WAAYA,EAAM,WAClB,aAAcA,EAAM,SAAW,WAAa,OAG5C,0BAA2BA,EAAM,SAKjC,QAASA,EAAM,gBAAkBA,EAAM,YAAc,CACnD,WAAY,CACV,CACE,GAAI,UACJ,aAAc,UACd,SAAU,UACV,QAAS,UACT,UAAW,qBACX,gBAAiB,CACf,kBAAmB,CAACA,EAAM,eAC1B,eAAgB,CAACA,EAAM,YACvB,eAAgB,CAACA,EAAM,YACvB,kBAAmB,CAACA,EAAM,WAAA,CAC5B,CACF,EAEF,iBAAkB,UAClB,gBAAiB,EAAA,EACf,OAGJ,qBAAsBA,EAAM,eAAiB,EAAI,OACjD,wBAAyB,EAAA,EAI5B,EAYDW,EAAa,CACX,QAAAP,EACA,cAAAE,EACA,cAZoB,IAAM,CACtBF,EAAQ,OAASJ,EAAM,mBACzBI,EAAQ,MAAM,kBAAkB,CAC9B,SAAU,kBAAA,CACX,CAEL,CAME,CACD,EAGD,MAAMQ,EAAeC,GAA2B,CAC9CT,EAAQ,MAAQS,EAAO,IACvBP,EAAc,MAAQO,EAAO,IAC7BX,EAAK,YAAaW,CAAM,CAC1B,EAGMC,EAAgBC,GAA2B,CAC/Cb,EAAK,aAAca,CAAK,CAC1B,EAGMC,EAAsBD,GAAiC,CAC3Db,EAAK,mBAAoBa,CAAK,CAChC,EAGME,EAAiBF,GAA4B,CACjDb,EAAK,cAAea,CAAK,CAC3B,EAGMG,EAAsBH,GAAiC,CAC3Db,EAAK,mBAAoBa,CAAK,CAChC,EAGMI,EAAsBJ,GAAiC,CAC3Db,EAAK,mBAAoBa,CAAK,CAChC,EAGAK,OAAAA,EAAAA,MACE,IAAMpB,EAAM,WACZ,IAAM,CACAI,EAAQ,OACVA,EAAQ,MAAM,cAAc,aAAcG,EAAoB,KAAK,CAEvE,EACA,CAAE,KAAM,EAAA,CAAK,EAIfa,EAAAA,MACE,IAAMpB,EAAM,QACZ,IAAM,CACAI,EAAQ,OACVA,EAAQ,MAAM,cAAc,UAAWJ,EAAM,OAAO,CAExD,EACA,CAAE,KAAM,EAAA,CAAK,UAKbqB,YAAA,EAAAC,qBAcM,MAdNC,EAcM,CAbJC,cAYEC,EAAAA,MAAAC,EAAAA,SAAA,EAAA,CAXC,cAAanB,EAAA,MACb,WAAUN,EAAA,QACV,eAAcS,EAAA,MACd,uBAAOT,EAAA,KAAK,EACb,MAAA,CAAA,OAAA,OAAA,MAAA,MAAA,EACC,YAAAW,EACA,aAAAE,EACA,mBAAAE,EACA,cAAAC,EACA,mBAAAC,EACA,mBAAAC,CAAA"}
1
+ {"version":3,"file":"JGrid.vue2.cjs","sources":["../../../../src/components/atoms/JGrid.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed, ref, watch } from 'vue'\r\nimport { AgGridVue } from 'ag-grid-vue3'\r\nimport type {\r\n ColDef,\r\n GridOptions,\r\n RowClickedEvent,\r\n CellClickedEvent,\r\n SelectionChangedEvent,\r\n CellValueChangedEvent,\r\n RowDoubleClickedEvent,\r\n GridReadyEvent,\r\n} from 'ag-grid-community'\r\nimport { ModuleRegistry, AllCommunityModule } from 'ag-grid-community'\r\n// Enterprise 모듈 import (Grouping, Pivot, Excel Export 등)\r\nimport { AllEnterpriseModule } from 'ag-grid-enterprise'\r\n// ag-grid.css는 제거 - v34에서 Theming API와 충돌 방지\r\n// 테마 CSS 파일만 사용 (클래스 기반 테마)\r\n// v34에서는 dark 테마가 같은 CSS 파일 안에 포함되어 있음\r\n// 예: ag-theme-quartz.css에 .ag-theme-quartz-dark 클래스 포함\r\nimport 'ag-grid-community/styles/ag-theme-quartz.css'\r\nimport 'ag-grid-community/styles/ag-theme-alpine.css'\r\nimport 'ag-grid-community/styles/ag-theme-balham.css'\r\n\r\n// AG Grid 모듈 등록 (Community + Enterprise)\r\nModuleRegistry.registerModules([AllCommunityModule, AllEnterpriseModule])\r\n\r\nconst props = withDefaults(\r\n defineProps<{\r\n /** 그리드에 표시할 데이터 배열 */\r\n rowData: any[]\r\n /** 컬럼 정의 배열 */\r\n columnDefs: ColDef[]\r\n /** ag-Grid 테마 */\r\n theme?: string\r\n /** 페이지네이션 활성화 여부 */\r\n pagination?: boolean\r\n /** 체크박스 선택 활성화 여부 */\r\n checkbox?: boolean\r\n /** 요약 컬럼 표시 여부 */\r\n summaryColumn?: boolean\r\n /** 숨김 컬럼 관리 활성화 여부 */\r\n hiddenColumn?: boolean\r\n /** 그룹핑 기능 활성화 여부 (Enterprise) */\r\n enableGrouping?: boolean\r\n /** 피벗 기능 활성화 여부 (Enterprise) */\r\n enablePivot?: boolean\r\n /** Excel 내보내기 기능 활성화 여부 (Enterprise) */\r\n enableExcelExport?: boolean\r\n /** Tree Data 기능 활성화 여부 (Enterprise) */\r\n enableTreeData?: boolean\r\n /** Tree Data 계층 경로를 반환하는 함수 */\r\n getDataPath?: (data: any) => (string | number)[]\r\n /** Tree Data 그룹 컬럼 정의 */\r\n autoGroupColumnDef?: ColDef\r\n /** 선택된 행 데이터 배열 (v-model:selected-rows) */\r\n selectedRows?: any[]\r\n }>(),\r\n {\r\n theme: 'ag-theme-balham',\r\n pagination: false,\r\n checkbox: false,\r\n summaryColumn: false,\r\n hiddenColumn: false,\r\n enableGrouping: false,\r\n enablePivot: false,\r\n enableExcelExport: false,\r\n enableTreeData: false,\r\n getDataPath: undefined,\r\n autoGroupColumnDef: undefined,\r\n selectedRows: () => [],\r\n },\r\n)\r\n\r\nconst emit = defineEmits<{\r\n /** 행 클릭 이벤트 */\r\n rowClicked: [event: RowClickedEvent]\r\n /** 행 더블클릭 이벤트 */\r\n rowDoubleClicked: [event: RowDoubleClickedEvent]\r\n /** 셀 클릭 이벤트 */\r\n cellClicked: [event: CellClickedEvent]\r\n /** 선택 변경 이벤트 (체크박스 등) */\r\n selectionChanged: [event: SelectionChangedEvent]\r\n /** 셀 값 변경 이벤트 */\r\n cellValueChanged: [event: CellValueChangedEvent]\r\n /** 그리드 준비 완료 이벤트 */\r\n gridReady: [event: GridReadyEvent]\r\n /** 선택된 행 변경 이벤트 (v-model:selected-rows) */\r\n 'update:selectedRows': [rows: any[]]\r\n}>()\r\n\r\n// ag-Grid 인스턴스 참조\r\nconst gridApi = ref<any>(null)\r\nconst gridColumnApi = ref<any>(null)\r\n\r\n// checkbox 활성화 시 첫 번째 컬럼에 checkboxSelection 추가\r\nconst processedColumnDefs = computed(() => {\r\n if (!props.checkbox) {\r\n return props.columnDefs\r\n }\r\n\r\n const columnDefs = [...props.columnDefs]\r\n if (columnDefs.length > 0) {\r\n // 첫 번째 컬럼에 checkboxSelection 추가\r\n columnDefs[0] = {\r\n ...columnDefs[0],\r\n checkboxSelection: true,\r\n headerCheckboxSelection: true,\r\n }\r\n }\r\n return columnDefs\r\n})\r\n\r\n// Grid 옵션 설정\r\nconst gridOptions = computed<GridOptions>(() => {\r\n const options: GridOptions = {\r\n // theme 옵션 제거 - 클래스 기반 테마(:class=\"theme\") 사용\r\n columnDefs: processedColumnDefs.value,\r\n rowData: props.rowData,\r\n pagination: props.pagination,\r\n rowSelection: props.checkbox ? 'multiple' : undefined,\r\n // 체크박스 모드일 때 row 클릭으로 선택이 변경되지 않도록 설정\r\n // 체크박스만으로 선택을 제어하도록 함\r\n suppressRowClickSelection: props.checkbox,\r\n // suppressColumnsToolPanel은 ag-grid v34에서 더 이상 지원되지 않음\r\n // summaryColumn은 pinnedBottomRowData 또는 다른 옵션으로 구현 가능\r\n \r\n // Enterprise 기능 옵션\r\n sideBar: props.enableGrouping || props.enablePivot ? {\r\n toolPanels: [\r\n {\r\n id: 'columns',\r\n labelDefault: 'Columns',\r\n labelKey: 'columns',\r\n iconKey: 'columns',\r\n toolPanel: 'agColumnsToolPanel',\r\n toolPanelParams: {\r\n suppressRowGroups: !props.enableGrouping,\r\n suppressValues: !props.enablePivot,\r\n suppressPivots: !props.enablePivot,\r\n suppressPivotMode: !props.enablePivot,\r\n },\r\n },\r\n ],\r\n defaultToolPanel: 'columns',\r\n hiddenByDefault: false,\r\n } : undefined,\r\n \r\n // 그룹핑 기본 설정\r\n groupDefaultExpanded: props.enableGrouping || props.enableTreeData ? 1 : undefined,\r\n suppressAggFuncInHeader: false,\r\n\r\n // Tree Data 설정 (Enterprise)\r\n treeData: props.enableTreeData || undefined,\r\n getDataPath: props.enableTreeData\r\n ? (props.getDataPath || ((data: any) => data.path || []))\r\n : undefined,\r\n autoGroupColumnDef: props.enableTreeData && props.autoGroupColumnDef\r\n ? props.autoGroupColumnDef\r\n : undefined,\r\n }\r\n\r\n return options\r\n})\r\n\r\n// Excel 내보내기 함수 (외부에서 사용 가능하도록 expose)\r\nconst exportToExcel = () => {\r\n if (gridApi.value && props.enableExcelExport) {\r\n gridApi.value.exportDataAsExcel({\r\n fileName: 'grid-export.xlsx',\r\n })\r\n }\r\n}\r\n\r\n// 그리드 API를 외부에 노출\r\ndefineExpose({\r\n gridApi,\r\n gridColumnApi,\r\n exportToExcel,\r\n})\r\n\r\n// Grid ready 이벤트 핸들러\r\nconst onGridReady = (params: GridReadyEvent) => {\r\n gridApi.value = params.api\r\n gridColumnApi.value = params.api // v34에서 columnApi는 deprecated\r\n emit('gridReady', params)\r\n}\r\n\r\n// 행 클릭 이벤트 핸들러\r\nconst onRowClicked = (event: RowClickedEvent) => {\r\n emit('rowClicked', event)\r\n}\r\n\r\n// 행 더블클릭 이벤트 핸들러\r\nconst onRowDoubleClicked = (event: RowDoubleClickedEvent) => {\r\n emit('rowDoubleClicked', event)\r\n}\r\n\r\n// 셀 클릭 이벤트 핸들러\r\nconst onCellClicked = (event: CellClickedEvent) => {\r\n emit('cellClicked', event)\r\n}\r\n\r\n// 선택 변경 이벤트 핸들러\r\nconst onSelectionChanged = (event: SelectionChangedEvent) => {\r\n emit('selectionChanged', event)\r\n emit('update:selectedRows', event.api.getSelectedRows())\r\n}\r\n\r\n// 셀 값 변경 이벤트 핸들러\r\nconst onCellValueChanged = (event: CellValueChangedEvent) => {\r\n emit('cellValueChanged', event)\r\n}\r\n\r\n// columnDefs 변경 감지\r\nwatch(\r\n () => props.columnDefs,\r\n () => {\r\n if (gridApi.value) {\r\n gridApi.value.setGridOption('columnDefs', processedColumnDefs.value)\r\n }\r\n },\r\n { deep: true },\r\n)\r\n\r\n// rowData 변경 감지\r\nwatch(\r\n () => props.rowData,\r\n () => {\r\n if (gridApi.value) {\r\n gridApi.value.setGridOption('rowData', props.rowData)\r\n }\r\n },\r\n { deep: true },\r\n)\r\n</script>\r\n\r\n<template>\r\n <div class=\"ag-grid-container\">\r\n <AgGridVue\r\n :column-defs=\"processedColumnDefs\"\r\n :row-data=\"rowData\"\r\n :grid-options=\"gridOptions\"\r\n :class=\"theme\"\r\n style=\"height: 100%; width: 100%\"\r\n @grid-ready=\"onGridReady\"\r\n @row-clicked=\"onRowClicked\"\r\n @row-double-clicked=\"onRowDoubleClicked\"\r\n @cell-clicked=\"onCellClicked\"\r\n @selection-changed=\"onSelectionChanged\"\r\n @cell-value-changed=\"onCellValueChanged\"\r\n />\r\n </div>\r\n</template>\r\n\r\n<style scoped>\r\n.ag-grid-container {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n</style>\r\n"],"names":["ModuleRegistry","AllCommunityModule","AllEnterpriseModule","props","__props","emit","__emit","gridApi","ref","gridColumnApi","processedColumnDefs","computed","columnDefs","gridOptions","data","__expose","onGridReady","params","onRowClicked","event","onRowDoubleClicked","onCellClicked","onSelectionChanged","onCellValueChanged","watch","_openBlock","_createElementBlock","_hoisted_1","_createVNode","_unref","AgGridVue"],"mappings":"yxCAyBAA,EAAAA,eAAe,gBAAgB,CAACC,EAAAA,mBAAoBC,EAAAA,mBAAmB,CAAC,EAExE,MAAMC,EAAQC,EA+CRC,EAAOC,EAkBPC,EAAUC,EAAAA,IAAS,IAAI,EACvBC,EAAgBD,EAAAA,IAAS,IAAI,EAG7BE,EAAsBC,EAAAA,SAAS,IAAM,CACzC,GAAI,CAACR,EAAM,SACT,OAAOA,EAAM,WAGf,MAAMS,EAAa,CAAC,GAAGT,EAAM,UAAU,EACvC,OAAIS,EAAW,OAAS,IAEtBA,EAAW,CAAC,EAAI,CACd,GAAGA,EAAW,CAAC,EACf,kBAAmB,GACnB,wBAAyB,EAAA,GAGtBA,CACT,CAAC,EAGKC,EAAcF,EAAAA,SAAsB,KACX,CAE3B,WAAYD,EAAoB,MAChC,QAASP,EAAM,QACf,WAAYA,EAAM,WAClB,aAAcA,EAAM,SAAW,WAAa,OAG5C,0BAA2BA,EAAM,SAKjC,QAASA,EAAM,gBAAkBA,EAAM,YAAc,CACnD,WAAY,CACV,CACE,GAAI,UACJ,aAAc,UACd,SAAU,UACV,QAAS,UACT,UAAW,qBACX,gBAAiB,CACf,kBAAmB,CAACA,EAAM,eAC1B,eAAgB,CAACA,EAAM,YACvB,eAAgB,CAACA,EAAM,YACvB,kBAAmB,CAACA,EAAM,WAAA,CAC5B,CACF,EAEF,iBAAkB,UAClB,gBAAiB,EAAA,EACf,OAGJ,qBAAsBA,EAAM,gBAAkBA,EAAM,eAAiB,EAAI,OACzE,wBAAyB,GAGzB,SAAUA,EAAM,gBAAkB,OAClC,YAAaA,EAAM,eACdA,EAAM,cAAiBW,GAAcA,EAAK,MAAQ,CAAA,GACnD,OACJ,mBAAoBX,EAAM,gBAAkBA,EAAM,mBAC9CA,EAAM,mBACN,MAAA,EAIP,EAYDY,EAAa,CACX,QAAAR,EACA,cAAAE,EACA,cAZoB,IAAM,CACtBF,EAAQ,OAASJ,EAAM,mBACzBI,EAAQ,MAAM,kBAAkB,CAC9B,SAAU,kBAAA,CACX,CAEL,CAME,CACD,EAGD,MAAMS,EAAeC,GAA2B,CAC9CV,EAAQ,MAAQU,EAAO,IACvBR,EAAc,MAAQQ,EAAO,IAC7BZ,EAAK,YAAaY,CAAM,CAC1B,EAGMC,EAAgBC,GAA2B,CAC/Cd,EAAK,aAAcc,CAAK,CAC1B,EAGMC,EAAsBD,GAAiC,CAC3Dd,EAAK,mBAAoBc,CAAK,CAChC,EAGME,EAAiBF,GAA4B,CACjDd,EAAK,cAAec,CAAK,CAC3B,EAGMG,EAAsBH,GAAiC,CAC3Dd,EAAK,mBAAoBc,CAAK,EAC9Bd,EAAK,sBAAuBc,EAAM,IAAI,gBAAA,CAAiB,CACzD,EAGMI,EAAsBJ,GAAiC,CAC3Dd,EAAK,mBAAoBc,CAAK,CAChC,EAGAK,OAAAA,EAAAA,MACE,IAAMrB,EAAM,WACZ,IAAM,CACAI,EAAQ,OACVA,EAAQ,MAAM,cAAc,aAAcG,EAAoB,KAAK,CAEvE,EACA,CAAE,KAAM,EAAA,CAAK,EAIfc,EAAAA,MACE,IAAMrB,EAAM,QACZ,IAAM,CACAI,EAAQ,OACVA,EAAQ,MAAM,cAAc,UAAWJ,EAAM,OAAO,CAExD,EACA,CAAE,KAAM,EAAA,CAAK,UAKbsB,YAAA,EAAAC,qBAcM,MAdNC,EAcM,CAbJC,cAYEC,EAAAA,MAAAC,EAAAA,SAAA,EAAA,CAXC,cAAapB,EAAA,MACb,WAAUN,EAAA,QACV,eAAcS,EAAA,MACd,uBAAOT,EAAA,KAAK,EACb,MAAA,CAAA,OAAA,OAAA,MAAA,MAAA,EACC,YAAAY,EACA,aAAAE,EACA,mBAAAE,EACA,cAAAC,EACA,mBAAAC,EACA,mBAAAC,CAAA"}
@@ -1,11 +1,11 @@
1
- import { defineComponent as v, ref as i, computed as r, watch as u, createElementBlock as x, openBlock as D, createVNode as w, unref as k, normalizeClass as y } from "vue";
2
- import { AgGridVue as P } from "ag-grid-vue3";
3
- import { ModuleRegistry as B, AllCommunityModule as E } from "ag-grid-community";
4
- import { AllEnterpriseModule as G } from "ag-grid-enterprise";
1
+ import { defineComponent as v, ref as i, computed as r, watch as c, createElementBlock as w, openBlock as x, createVNode as y, unref as k, normalizeClass as P } from "vue";
2
+ import { AgGridVue as G } from "ag-grid-vue3";
3
+ import { ModuleRegistry as B, AllCommunityModule as R } from "ag-grid-community";
4
+ import { AllEnterpriseModule as E } from "ag-grid-enterprise";
5
5
  /* empty css */
6
6
  /* empty css */
7
7
  /* empty css */
8
- const R = { class: "ag-grid-container" }, z = /* @__PURE__ */ v({
8
+ const T = { class: "ag-grid-container" }, N = /* @__PURE__ */ v({
9
9
  __name: "JGrid",
10
10
  props: {
11
11
  rowData: {},
@@ -17,33 +17,37 @@ const R = { class: "ag-grid-container" }, z = /* @__PURE__ */ v({
17
17
  hiddenColumn: { type: Boolean, default: !1 },
18
18
  enableGrouping: { type: Boolean, default: !1 },
19
19
  enablePivot: { type: Boolean, default: !1 },
20
- enableExcelExport: { type: Boolean, default: !1 }
20
+ enableExcelExport: { type: Boolean, default: !1 },
21
+ enableTreeData: { type: Boolean, default: !1 },
22
+ getDataPath: { type: Function, default: void 0 },
23
+ autoGroupColumnDef: { default: void 0 },
24
+ selectedRows: { default: () => [] }
21
25
  },
22
- emits: ["rowClicked", "rowDoubleClicked", "cellClicked", "selectionChanged", "cellValueChanged", "gridReady"],
23
- setup(n, { expose: c, emit: d }) {
24
- B.registerModules([E, G]);
25
- const o = n, t = d, l = i(null), s = i(null), a = r(() => {
26
- if (!o.checkbox)
27
- return o.columnDefs;
28
- const e = [...o.columnDefs];
29
- return e.length > 0 && (e[0] = {
30
- ...e[0],
26
+ emits: ["rowClicked", "rowDoubleClicked", "cellClicked", "selectionChanged", "cellValueChanged", "gridReady", "update:selectedRows"],
27
+ setup(t, { expose: d, emit: p }) {
28
+ B.registerModules([R, E]);
29
+ const e = t, a = p, l = i(null), u = i(null), n = r(() => {
30
+ if (!e.checkbox)
31
+ return e.columnDefs;
32
+ const o = [...e.columnDefs];
33
+ return o.length > 0 && (o[0] = {
34
+ ...o[0],
31
35
  checkboxSelection: !0,
32
36
  headerCheckboxSelection: !0
33
- }), e;
34
- }), p = r(() => ({
37
+ }), o;
38
+ }), f = r(() => ({
35
39
  // theme 옵션 제거 - 클래스 기반 테마(:class="theme") 사용
36
- columnDefs: a.value,
37
- rowData: o.rowData,
38
- pagination: o.pagination,
39
- rowSelection: o.checkbox ? "multiple" : void 0,
40
+ columnDefs: n.value,
41
+ rowData: e.rowData,
42
+ pagination: e.pagination,
43
+ rowSelection: e.checkbox ? "multiple" : void 0,
40
44
  // 체크박스 모드일 때 row 클릭으로 선택이 변경되지 않도록 설정
41
45
  // 체크박스만으로 선택을 제어하도록 함
42
- suppressRowClickSelection: o.checkbox,
46
+ suppressRowClickSelection: e.checkbox,
43
47
  // suppressColumnsToolPanel은 ag-grid v34에서 더 이상 지원되지 않음
44
48
  // summaryColumn은 pinnedBottomRowData 또는 다른 옵션으로 구현 가능
45
49
  // Enterprise 기능 옵션
46
- sideBar: o.enableGrouping || o.enablePivot ? {
50
+ sideBar: e.enableGrouping || e.enablePivot ? {
47
51
  toolPanels: [
48
52
  {
49
53
  id: "columns",
@@ -52,10 +56,10 @@ const R = { class: "ag-grid-container" }, z = /* @__PURE__ */ v({
52
56
  iconKey: "columns",
53
57
  toolPanel: "agColumnsToolPanel",
54
58
  toolPanelParams: {
55
- suppressRowGroups: !o.enableGrouping,
56
- suppressValues: !o.enablePivot,
57
- suppressPivots: !o.enablePivot,
58
- suppressPivotMode: !o.enablePivot
59
+ suppressRowGroups: !e.enableGrouping,
60
+ suppressValues: !e.enablePivot,
61
+ suppressPivots: !e.enablePivot,
62
+ suppressPivotMode: !e.enablePivot
59
63
  }
60
64
  }
61
65
  ],
@@ -63,53 +67,57 @@ const R = { class: "ag-grid-container" }, z = /* @__PURE__ */ v({
63
67
  hiddenByDefault: !1
64
68
  } : void 0,
65
69
  // 그룹핑 기본 설정
66
- groupDefaultExpanded: o.enableGrouping ? 1 : void 0,
67
- suppressAggFuncInHeader: !1
70
+ groupDefaultExpanded: e.enableGrouping || e.enableTreeData ? 1 : void 0,
71
+ suppressAggFuncInHeader: !1,
72
+ // Tree Data 설정 (Enterprise)
73
+ treeData: e.enableTreeData || void 0,
74
+ getDataPath: e.enableTreeData ? e.getDataPath || ((s) => s.path || []) : void 0,
75
+ autoGroupColumnDef: e.enableTreeData && e.autoGroupColumnDef ? e.autoGroupColumnDef : void 0
68
76
  }));
69
- c({
77
+ d({
70
78
  gridApi: l,
71
- gridColumnApi: s,
79
+ gridColumnApi: u,
72
80
  exportToExcel: () => {
73
- l.value && o.enableExcelExport && l.value.exportDataAsExcel({
81
+ l.value && e.enableExcelExport && l.value.exportDataAsExcel({
74
82
  fileName: "grid-export.xlsx"
75
83
  });
76
84
  }
77
85
  });
78
- const m = (e) => {
79
- l.value = e.api, s.value = e.api, t("gridReady", e);
80
- }, f = (e) => {
81
- t("rowClicked", e);
82
- }, g = (e) => {
83
- t("rowDoubleClicked", e);
84
- }, C = (e) => {
85
- t("cellClicked", e);
86
- }, h = (e) => {
87
- t("selectionChanged", e);
88
- }, b = (e) => {
89
- t("cellValueChanged", e);
86
+ const m = (o) => {
87
+ l.value = o.api, u.value = o.api, a("gridReady", o);
88
+ }, g = (o) => {
89
+ a("rowClicked", o);
90
+ }, D = (o) => {
91
+ a("rowDoubleClicked", o);
92
+ }, C = (o) => {
93
+ a("cellClicked", o);
94
+ }, h = (o) => {
95
+ a("selectionChanged", o), a("update:selectedRows", o.api.getSelectedRows());
96
+ }, b = (o) => {
97
+ a("cellValueChanged", o);
90
98
  };
91
- return u(
92
- () => o.columnDefs,
99
+ return c(
100
+ () => e.columnDefs,
93
101
  () => {
94
- l.value && l.value.setGridOption("columnDefs", a.value);
102
+ l.value && l.value.setGridOption("columnDefs", n.value);
95
103
  },
96
104
  { deep: !0 }
97
- ), u(
98
- () => o.rowData,
105
+ ), c(
106
+ () => e.rowData,
99
107
  () => {
100
- l.value && l.value.setGridOption("rowData", o.rowData);
108
+ l.value && l.value.setGridOption("rowData", e.rowData);
101
109
  },
102
110
  { deep: !0 }
103
- ), (e, V) => (D(), x("div", R, [
104
- w(k(P), {
105
- "column-defs": a.value,
106
- "row-data": n.rowData,
107
- "grid-options": p.value,
108
- class: y(n.theme),
111
+ ), (o, s) => (x(), w("div", T, [
112
+ y(k(G), {
113
+ "column-defs": n.value,
114
+ "row-data": t.rowData,
115
+ "grid-options": f.value,
116
+ class: P(t.theme),
109
117
  style: { height: "100%", width: "100%" },
110
118
  onGridReady: m,
111
- onRowClicked: f,
112
- onRowDoubleClicked: g,
119
+ onRowClicked: g,
120
+ onRowDoubleClicked: D,
113
121
  onCellClicked: C,
114
122
  onSelectionChanged: h,
115
123
  onCellValueChanged: b
@@ -118,6 +126,6 @@ const R = { class: "ag-grid-container" }, z = /* @__PURE__ */ v({
118
126
  }
119
127
  });
120
128
  export {
121
- z as default
129
+ N as default
122
130
  };
123
131
  //# sourceMappingURL=JGrid.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"JGrid.vue2.js","sources":["../../../../src/components/atoms/JGrid.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed, ref, watch } from 'vue'\r\nimport { AgGridVue } from 'ag-grid-vue3'\r\nimport type {\r\n ColDef,\r\n GridOptions,\r\n RowClickedEvent,\r\n CellClickedEvent,\r\n SelectionChangedEvent,\r\n CellValueChangedEvent,\r\n RowDoubleClickedEvent,\r\n GridReadyEvent,\r\n} from 'ag-grid-community'\r\nimport { ModuleRegistry, AllCommunityModule } from 'ag-grid-community'\r\n// Enterprise 모듈 import (Grouping, Pivot, Excel Export 등)\r\nimport { AllEnterpriseModule } from 'ag-grid-enterprise'\r\n// ag-grid.css는 제거 - v34에서 Theming API와 충돌 방지\r\n// 테마 CSS 파일만 사용 (클래스 기반 테마)\r\n// v34에서는 dark 테마가 같은 CSS 파일 안에 포함되어 있음\r\n// 예: ag-theme-quartz.css에 .ag-theme-quartz-dark 클래스 포함\r\nimport 'ag-grid-community/styles/ag-theme-quartz.css'\r\nimport 'ag-grid-community/styles/ag-theme-alpine.css'\r\nimport 'ag-grid-community/styles/ag-theme-balham.css'\r\n\r\n// AG Grid 모듈 등록 (Community + Enterprise)\r\nModuleRegistry.registerModules([AllCommunityModule, AllEnterpriseModule])\r\n\r\nconst props = withDefaults(\r\n defineProps<{\r\n /** 그리드에 표시할 데이터 배열 */\r\n rowData: any[]\r\n /** 컬럼 정의 배열 */\r\n columnDefs: ColDef[]\r\n /** ag-Grid 테마 */\r\n theme?: string\r\n /** 페이지네이션 활성화 여부 */\r\n pagination?: boolean\r\n /** 체크박스 선택 활성화 여부 */\r\n checkbox?: boolean\r\n /** 요약 컬럼 표시 여부 */\r\n summaryColumn?: boolean\r\n /** 숨김 컬럼 관리 활성화 여부 */\r\n hiddenColumn?: boolean\r\n /** 그룹핑 기능 활성화 여부 (Enterprise) */\r\n enableGrouping?: boolean\r\n /** 피벗 기능 활성화 여부 (Enterprise) */\r\n enablePivot?: boolean\r\n /** Excel 내보내기 기능 활성화 여부 (Enterprise) */\r\n enableExcelExport?: boolean\r\n }>(),\r\n {\r\n theme: 'ag-theme-balham',\r\n pagination: false,\r\n checkbox: false,\r\n summaryColumn: false,\r\n hiddenColumn: false,\r\n enableGrouping: false,\r\n enablePivot: false,\r\n enableExcelExport: false,\r\n },\r\n)\r\n\r\nconst emit = defineEmits<{\r\n /** 행 클릭 이벤트 */\r\n rowClicked: [event: RowClickedEvent]\r\n /** 행 더블클릭 이벤트 */\r\n rowDoubleClicked: [event: RowDoubleClickedEvent]\r\n /** 셀 클릭 이벤트 */\r\n cellClicked: [event: CellClickedEvent]\r\n /** 선택 변경 이벤트 (체크박스 등) */\r\n selectionChanged: [event: SelectionChangedEvent]\r\n /** 셀 값 변경 이벤트 */\r\n cellValueChanged: [event: CellValueChangedEvent]\r\n /** 그리드 준비 완료 이벤트 */\r\n gridReady: [event: GridReadyEvent]\r\n}>()\r\n\r\n// ag-Grid 인스턴스 참조\r\nconst gridApi = ref<any>(null)\r\nconst gridColumnApi = ref<any>(null)\r\n\r\n// checkbox 활성화 시 첫 번째 컬럼에 checkboxSelection 추가\r\nconst processedColumnDefs = computed(() => {\r\n if (!props.checkbox) {\r\n return props.columnDefs\r\n }\r\n\r\n const columnDefs = [...props.columnDefs]\r\n if (columnDefs.length > 0) {\r\n // 첫 번째 컬럼에 checkboxSelection 추가\r\n columnDefs[0] = {\r\n ...columnDefs[0],\r\n checkboxSelection: true,\r\n headerCheckboxSelection: true,\r\n }\r\n }\r\n return columnDefs\r\n})\r\n\r\n// Grid 옵션 설정\r\nconst gridOptions = computed<GridOptions>(() => {\r\n const options: GridOptions = {\r\n // theme 옵션 제거 - 클래스 기반 테마(:class=\"theme\") 사용\r\n columnDefs: processedColumnDefs.value,\r\n rowData: props.rowData,\r\n pagination: props.pagination,\r\n rowSelection: props.checkbox ? 'multiple' : undefined,\r\n // 체크박스 모드일 때 row 클릭으로 선택이 변경되지 않도록 설정\r\n // 체크박스만으로 선택을 제어하도록 함\r\n suppressRowClickSelection: props.checkbox,\r\n // suppressColumnsToolPanel은 ag-grid v34에서 더 이상 지원되지 않음\r\n // summaryColumn은 pinnedBottomRowData 또는 다른 옵션으로 구현 가능\r\n \r\n // Enterprise 기능 옵션\r\n sideBar: props.enableGrouping || props.enablePivot ? {\r\n toolPanels: [\r\n {\r\n id: 'columns',\r\n labelDefault: 'Columns',\r\n labelKey: 'columns',\r\n iconKey: 'columns',\r\n toolPanel: 'agColumnsToolPanel',\r\n toolPanelParams: {\r\n suppressRowGroups: !props.enableGrouping,\r\n suppressValues: !props.enablePivot,\r\n suppressPivots: !props.enablePivot,\r\n suppressPivotMode: !props.enablePivot,\r\n },\r\n },\r\n ],\r\n defaultToolPanel: 'columns',\r\n hiddenByDefault: false,\r\n } : undefined,\r\n \r\n // 그룹핑 기본 설정\r\n groupDefaultExpanded: props.enableGrouping ? 1 : undefined,\r\n suppressAggFuncInHeader: false,\r\n }\r\n\r\n return options\r\n})\r\n\r\n// Excel 내보내기 함수 (외부에서 사용 가능하도록 expose)\r\nconst exportToExcel = () => {\r\n if (gridApi.value && props.enableExcelExport) {\r\n gridApi.value.exportDataAsExcel({\r\n fileName: 'grid-export.xlsx',\r\n })\r\n }\r\n}\r\n\r\n// 그리드 API를 외부에 노출\r\ndefineExpose({\r\n gridApi,\r\n gridColumnApi,\r\n exportToExcel,\r\n})\r\n\r\n// Grid ready 이벤트 핸들러\r\nconst onGridReady = (params: GridReadyEvent) => {\r\n gridApi.value = params.api\r\n gridColumnApi.value = params.api // v34에서 columnApi는 deprecated\r\n emit('gridReady', params)\r\n}\r\n\r\n// 행 클릭 이벤트 핸들러\r\nconst onRowClicked = (event: RowClickedEvent) => {\r\n emit('rowClicked', event)\r\n}\r\n\r\n// 행 더블클릭 이벤트 핸들러\r\nconst onRowDoubleClicked = (event: RowDoubleClickedEvent) => {\r\n emit('rowDoubleClicked', event)\r\n}\r\n\r\n// 셀 클릭 이벤트 핸들러\r\nconst onCellClicked = (event: CellClickedEvent) => {\r\n emit('cellClicked', event)\r\n}\r\n\r\n// 선택 변경 이벤트 핸들러\r\nconst onSelectionChanged = (event: SelectionChangedEvent) => {\r\n emit('selectionChanged', event)\r\n}\r\n\r\n// 셀 값 변경 이벤트 핸들러\r\nconst onCellValueChanged = (event: CellValueChangedEvent) => {\r\n emit('cellValueChanged', event)\r\n}\r\n\r\n// columnDefs 변경 감지\r\nwatch(\r\n () => props.columnDefs,\r\n () => {\r\n if (gridApi.value) {\r\n gridApi.value.setGridOption('columnDefs', processedColumnDefs.value)\r\n }\r\n },\r\n { deep: true },\r\n)\r\n\r\n// rowData 변경 감지\r\nwatch(\r\n () => props.rowData,\r\n () => {\r\n if (gridApi.value) {\r\n gridApi.value.setGridOption('rowData', props.rowData)\r\n }\r\n },\r\n { deep: true },\r\n)\r\n</script>\r\n\r\n<template>\r\n <div class=\"ag-grid-container\">\r\n <AgGridVue\r\n :column-defs=\"processedColumnDefs\"\r\n :row-data=\"rowData\"\r\n :grid-options=\"gridOptions\"\r\n :class=\"theme\"\r\n style=\"height: 100%; width: 100%\"\r\n @grid-ready=\"onGridReady\"\r\n @row-clicked=\"onRowClicked\"\r\n @row-double-clicked=\"onRowDoubleClicked\"\r\n @cell-clicked=\"onCellClicked\"\r\n @selection-changed=\"onSelectionChanged\"\r\n @cell-value-changed=\"onCellValueChanged\"\r\n />\r\n </div>\r\n</template>\r\n\r\n<style scoped>\r\n.ag-grid-container {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n</style>\r\n"],"names":["ModuleRegistry","AllCommunityModule","AllEnterpriseModule","props","__props","emit","__emit","gridApi","ref","gridColumnApi","processedColumnDefs","computed","columnDefs","gridOptions","__expose","onGridReady","params","onRowClicked","event","onRowDoubleClicked","onCellClicked","onSelectionChanged","onCellValueChanged","watch","_openBlock","_createElementBlock","_hoisted_1","_createVNode","_unref","AgGridVue"],"mappings":"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"}
1
+ {"version":3,"file":"JGrid.vue2.js","sources":["../../../../src/components/atoms/JGrid.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed, ref, watch } from 'vue'\r\nimport { AgGridVue } from 'ag-grid-vue3'\r\nimport type {\r\n ColDef,\r\n GridOptions,\r\n RowClickedEvent,\r\n CellClickedEvent,\r\n SelectionChangedEvent,\r\n CellValueChangedEvent,\r\n RowDoubleClickedEvent,\r\n GridReadyEvent,\r\n} from 'ag-grid-community'\r\nimport { ModuleRegistry, AllCommunityModule } from 'ag-grid-community'\r\n// Enterprise 모듈 import (Grouping, Pivot, Excel Export 등)\r\nimport { AllEnterpriseModule } from 'ag-grid-enterprise'\r\n// ag-grid.css는 제거 - v34에서 Theming API와 충돌 방지\r\n// 테마 CSS 파일만 사용 (클래스 기반 테마)\r\n// v34에서는 dark 테마가 같은 CSS 파일 안에 포함되어 있음\r\n// 예: ag-theme-quartz.css에 .ag-theme-quartz-dark 클래스 포함\r\nimport 'ag-grid-community/styles/ag-theme-quartz.css'\r\nimport 'ag-grid-community/styles/ag-theme-alpine.css'\r\nimport 'ag-grid-community/styles/ag-theme-balham.css'\r\n\r\n// AG Grid 모듈 등록 (Community + Enterprise)\r\nModuleRegistry.registerModules([AllCommunityModule, AllEnterpriseModule])\r\n\r\nconst props = withDefaults(\r\n defineProps<{\r\n /** 그리드에 표시할 데이터 배열 */\r\n rowData: any[]\r\n /** 컬럼 정의 배열 */\r\n columnDefs: ColDef[]\r\n /** ag-Grid 테마 */\r\n theme?: string\r\n /** 페이지네이션 활성화 여부 */\r\n pagination?: boolean\r\n /** 체크박스 선택 활성화 여부 */\r\n checkbox?: boolean\r\n /** 요약 컬럼 표시 여부 */\r\n summaryColumn?: boolean\r\n /** 숨김 컬럼 관리 활성화 여부 */\r\n hiddenColumn?: boolean\r\n /** 그룹핑 기능 활성화 여부 (Enterprise) */\r\n enableGrouping?: boolean\r\n /** 피벗 기능 활성화 여부 (Enterprise) */\r\n enablePivot?: boolean\r\n /** Excel 내보내기 기능 활성화 여부 (Enterprise) */\r\n enableExcelExport?: boolean\r\n /** Tree Data 기능 활성화 여부 (Enterprise) */\r\n enableTreeData?: boolean\r\n /** Tree Data 계층 경로를 반환하는 함수 */\r\n getDataPath?: (data: any) => (string | number)[]\r\n /** Tree Data 그룹 컬럼 정의 */\r\n autoGroupColumnDef?: ColDef\r\n /** 선택된 행 데이터 배열 (v-model:selected-rows) */\r\n selectedRows?: any[]\r\n }>(),\r\n {\r\n theme: 'ag-theme-balham',\r\n pagination: false,\r\n checkbox: false,\r\n summaryColumn: false,\r\n hiddenColumn: false,\r\n enableGrouping: false,\r\n enablePivot: false,\r\n enableExcelExport: false,\r\n enableTreeData: false,\r\n getDataPath: undefined,\r\n autoGroupColumnDef: undefined,\r\n selectedRows: () => [],\r\n },\r\n)\r\n\r\nconst emit = defineEmits<{\r\n /** 행 클릭 이벤트 */\r\n rowClicked: [event: RowClickedEvent]\r\n /** 행 더블클릭 이벤트 */\r\n rowDoubleClicked: [event: RowDoubleClickedEvent]\r\n /** 셀 클릭 이벤트 */\r\n cellClicked: [event: CellClickedEvent]\r\n /** 선택 변경 이벤트 (체크박스 등) */\r\n selectionChanged: [event: SelectionChangedEvent]\r\n /** 셀 값 변경 이벤트 */\r\n cellValueChanged: [event: CellValueChangedEvent]\r\n /** 그리드 준비 완료 이벤트 */\r\n gridReady: [event: GridReadyEvent]\r\n /** 선택된 행 변경 이벤트 (v-model:selected-rows) */\r\n 'update:selectedRows': [rows: any[]]\r\n}>()\r\n\r\n// ag-Grid 인스턴스 참조\r\nconst gridApi = ref<any>(null)\r\nconst gridColumnApi = ref<any>(null)\r\n\r\n// checkbox 활성화 시 첫 번째 컬럼에 checkboxSelection 추가\r\nconst processedColumnDefs = computed(() => {\r\n if (!props.checkbox) {\r\n return props.columnDefs\r\n }\r\n\r\n const columnDefs = [...props.columnDefs]\r\n if (columnDefs.length > 0) {\r\n // 첫 번째 컬럼에 checkboxSelection 추가\r\n columnDefs[0] = {\r\n ...columnDefs[0],\r\n checkboxSelection: true,\r\n headerCheckboxSelection: true,\r\n }\r\n }\r\n return columnDefs\r\n})\r\n\r\n// Grid 옵션 설정\r\nconst gridOptions = computed<GridOptions>(() => {\r\n const options: GridOptions = {\r\n // theme 옵션 제거 - 클래스 기반 테마(:class=\"theme\") 사용\r\n columnDefs: processedColumnDefs.value,\r\n rowData: props.rowData,\r\n pagination: props.pagination,\r\n rowSelection: props.checkbox ? 'multiple' : undefined,\r\n // 체크박스 모드일 때 row 클릭으로 선택이 변경되지 않도록 설정\r\n // 체크박스만으로 선택을 제어하도록 함\r\n suppressRowClickSelection: props.checkbox,\r\n // suppressColumnsToolPanel은 ag-grid v34에서 더 이상 지원되지 않음\r\n // summaryColumn은 pinnedBottomRowData 또는 다른 옵션으로 구현 가능\r\n \r\n // Enterprise 기능 옵션\r\n sideBar: props.enableGrouping || props.enablePivot ? {\r\n toolPanels: [\r\n {\r\n id: 'columns',\r\n labelDefault: 'Columns',\r\n labelKey: 'columns',\r\n iconKey: 'columns',\r\n toolPanel: 'agColumnsToolPanel',\r\n toolPanelParams: {\r\n suppressRowGroups: !props.enableGrouping,\r\n suppressValues: !props.enablePivot,\r\n suppressPivots: !props.enablePivot,\r\n suppressPivotMode: !props.enablePivot,\r\n },\r\n },\r\n ],\r\n defaultToolPanel: 'columns',\r\n hiddenByDefault: false,\r\n } : undefined,\r\n \r\n // 그룹핑 기본 설정\r\n groupDefaultExpanded: props.enableGrouping || props.enableTreeData ? 1 : undefined,\r\n suppressAggFuncInHeader: false,\r\n\r\n // Tree Data 설정 (Enterprise)\r\n treeData: props.enableTreeData || undefined,\r\n getDataPath: props.enableTreeData\r\n ? (props.getDataPath || ((data: any) => data.path || []))\r\n : undefined,\r\n autoGroupColumnDef: props.enableTreeData && props.autoGroupColumnDef\r\n ? props.autoGroupColumnDef\r\n : undefined,\r\n }\r\n\r\n return options\r\n})\r\n\r\n// Excel 내보내기 함수 (외부에서 사용 가능하도록 expose)\r\nconst exportToExcel = () => {\r\n if (gridApi.value && props.enableExcelExport) {\r\n gridApi.value.exportDataAsExcel({\r\n fileName: 'grid-export.xlsx',\r\n })\r\n }\r\n}\r\n\r\n// 그리드 API를 외부에 노출\r\ndefineExpose({\r\n gridApi,\r\n gridColumnApi,\r\n exportToExcel,\r\n})\r\n\r\n// Grid ready 이벤트 핸들러\r\nconst onGridReady = (params: GridReadyEvent) => {\r\n gridApi.value = params.api\r\n gridColumnApi.value = params.api // v34에서 columnApi는 deprecated\r\n emit('gridReady', params)\r\n}\r\n\r\n// 행 클릭 이벤트 핸들러\r\nconst onRowClicked = (event: RowClickedEvent) => {\r\n emit('rowClicked', event)\r\n}\r\n\r\n// 행 더블클릭 이벤트 핸들러\r\nconst onRowDoubleClicked = (event: RowDoubleClickedEvent) => {\r\n emit('rowDoubleClicked', event)\r\n}\r\n\r\n// 셀 클릭 이벤트 핸들러\r\nconst onCellClicked = (event: CellClickedEvent) => {\r\n emit('cellClicked', event)\r\n}\r\n\r\n// 선택 변경 이벤트 핸들러\r\nconst onSelectionChanged = (event: SelectionChangedEvent) => {\r\n emit('selectionChanged', event)\r\n emit('update:selectedRows', event.api.getSelectedRows())\r\n}\r\n\r\n// 셀 값 변경 이벤트 핸들러\r\nconst onCellValueChanged = (event: CellValueChangedEvent) => {\r\n emit('cellValueChanged', event)\r\n}\r\n\r\n// columnDefs 변경 감지\r\nwatch(\r\n () => props.columnDefs,\r\n () => {\r\n if (gridApi.value) {\r\n gridApi.value.setGridOption('columnDefs', processedColumnDefs.value)\r\n }\r\n },\r\n { deep: true },\r\n)\r\n\r\n// rowData 변경 감지\r\nwatch(\r\n () => props.rowData,\r\n () => {\r\n if (gridApi.value) {\r\n gridApi.value.setGridOption('rowData', props.rowData)\r\n }\r\n },\r\n { deep: true },\r\n)\r\n</script>\r\n\r\n<template>\r\n <div class=\"ag-grid-container\">\r\n <AgGridVue\r\n :column-defs=\"processedColumnDefs\"\r\n :row-data=\"rowData\"\r\n :grid-options=\"gridOptions\"\r\n :class=\"theme\"\r\n style=\"height: 100%; width: 100%\"\r\n @grid-ready=\"onGridReady\"\r\n @row-clicked=\"onRowClicked\"\r\n @row-double-clicked=\"onRowDoubleClicked\"\r\n @cell-clicked=\"onCellClicked\"\r\n @selection-changed=\"onSelectionChanged\"\r\n @cell-value-changed=\"onCellValueChanged\"\r\n />\r\n </div>\r\n</template>\r\n\r\n<style scoped>\r\n.ag-grid-container {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n</style>\r\n"],"names":["ModuleRegistry","AllCommunityModule","AllEnterpriseModule","props","__props","emit","__emit","gridApi","ref","gridColumnApi","processedColumnDefs","computed","columnDefs","gridOptions","data","__expose","onGridReady","params","onRowClicked","event","onRowDoubleClicked","onCellClicked","onSelectionChanged","onCellValueChanged","watch","_openBlock","_createElementBlock","_hoisted_1","_createVNode","_unref","AgGridVue"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@j-solution/components",
3
3
  "description": "Vue 3 Atomic Design component kit for enterprise dashboards",
4
- "version": "1.4.2",
4
+ "version": "1.5.0",
5
5
  "type": "module",
6
6
  "main": "./index.cjs",
7
7
  "module": "./index.js",
package/types/index.d.ts CHANGED
@@ -599,6 +599,14 @@ declare type __VLS_Props_24 = {
599
599
  enablePivot?: boolean;
600
600
  /** Excel 내보내기 기능 활성화 여부 (Enterprise) */
601
601
  enableExcelExport?: boolean;
602
+ /** Tree Data 기능 활성화 여부 (Enterprise) */
603
+ enableTreeData?: boolean;
604
+ /** Tree Data 계층 경로를 반환하는 함수 */
605
+ getDataPath?: (data: any) => (string | number)[];
606
+ /** Tree Data 그룹 컬럼 정의 */
607
+ autoGroupColumnDef?: ColDef;
608
+ /** 선택된 행 데이터 배열 (v-model:selected-rows) */
609
+ selectedRows?: any[];
602
610
  };
603
611
 
604
612
  declare type __VLS_Props_25 = {
@@ -1946,6 +1954,7 @@ cellClicked: (event: CellClickedEvent<any, any, any>) => any;
1946
1954
  selectionChanged: (event: SelectionChangedEvent<any, any>) => any;
1947
1955
  cellValueChanged: (event: CellValueChangedEvent<any, any, any>) => any;
1948
1956
  gridReady: (event: GridReadyEvent<any, any>) => any;
1957
+ "update:selectedRows": (rows: any[]) => any;
1949
1958
  }, string, PublicProps, Readonly<__VLS_Props_24> & Readonly<{
1950
1959
  onRowClicked?: ((event: RowClickedEvent<any, any>) => any) | undefined;
1951
1960
  onRowDoubleClicked?: ((event: RowDoubleClickedEvent<any, any>) => any) | undefined;
@@ -1953,6 +1962,7 @@ onCellClicked?: ((event: CellClickedEvent<any, any, any>) => any) | undefined;
1953
1962
  onSelectionChanged?: ((event: SelectionChangedEvent<any, any>) => any) | undefined;
1954
1963
  onCellValueChanged?: ((event: CellValueChangedEvent<any, any, any>) => any) | undefined;
1955
1964
  onGridReady?: ((event: GridReadyEvent<any, any>) => any) | undefined;
1965
+ "onUpdate:selectedRows"?: ((rows: any[]) => any) | undefined;
1956
1966
  }>, {
1957
1967
  theme: string;
1958
1968
  pagination: boolean;
@@ -1962,6 +1972,10 @@ hiddenColumn: boolean;
1962
1972
  enableGrouping: boolean;
1963
1973
  enablePivot: boolean;
1964
1974
  enableExcelExport: boolean;
1975
+ enableTreeData: boolean;
1976
+ getDataPath: (data: any) => (string | number)[];
1977
+ autoGroupColumnDef: ColDef;
1978
+ selectedRows: any[];
1965
1979
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
1966
1980
 
1967
1981
  export declare const JGroupCombo: DefineComponent<__VLS_Props_26, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {