@j-solution/components 1.7.0 → 1.9.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 (207) hide show
  1. package/README.md +413 -415
  2. package/assets/jwms-portal-frontend-Ct2Tc7yj.css +1 -0
  3. package/assets/styles/global-utilities.css +34 -0
  4. package/assets/styles/j-components.css +1 -1
  5. package/assets/styles/themes.css +443 -443
  6. package/components/atoms/JButton.vue.cjs +6 -1
  7. package/components/atoms/JButton.vue.cjs.map +1 -1
  8. package/components/atoms/JButton.vue.js +10 -85
  9. package/components/atoms/JButton.vue.js.map +1 -1
  10. package/components/atoms/JButton.vue2.cjs +1 -1
  11. package/components/atoms/JButton.vue2.cjs.map +1 -1
  12. package/components/atoms/JButton.vue2.js +85 -2
  13. package/components/atoms/JButton.vue2.js.map +1 -1
  14. package/components/atoms/JGrid.vue.cjs +1 -1
  15. package/components/atoms/JGrid.vue.js +1 -1
  16. package/components/atoms/JGrid.vue2.cjs +1 -1
  17. package/components/atoms/JGrid.vue2.cjs.map +1 -1
  18. package/components/atoms/JGrid.vue2.js +39 -35
  19. package/components/atoms/JGrid.vue2.js.map +1 -1
  20. package/components/atoms/JLabel.vue.cjs +1 -1
  21. package/components/atoms/JLabel.vue.cjs.map +1 -1
  22. package/components/atoms/JLabel.vue.js +26 -22
  23. package/components/atoms/JLabel.vue.js.map +1 -1
  24. package/components/atoms/JSectionTitle.vue.cjs +7 -0
  25. package/components/atoms/JSectionTitle.vue.cjs.map +1 -0
  26. package/components/atoms/JSectionTitle.vue.js +13 -0
  27. package/components/atoms/JSectionTitle.vue.js.map +1 -0
  28. package/components/atoms/JSectionTitle.vue2.cjs +2 -0
  29. package/components/atoms/JSectionTitle.vue2.cjs.map +1 -0
  30. package/components/atoms/JSectionTitle.vue2.js +67 -0
  31. package/components/atoms/JSectionTitle.vue2.js.map +1 -0
  32. package/components/atoms/JSplitter.vue.cjs +6 -1
  33. package/components/atoms/JSplitter.vue.cjs.map +1 -1
  34. package/components/atoms/JSplitter.vue.js +10 -59
  35. package/components/atoms/JSplitter.vue.js.map +1 -1
  36. package/components/atoms/JSplitter.vue2.cjs +1 -1
  37. package/components/atoms/JSplitter.vue2.cjs.map +1 -1
  38. package/components/atoms/JSplitter.vue2.js +59 -2
  39. package/components/atoms/JSplitter.vue2.js.map +1 -1
  40. package/components/examples/ExampleCrudPage.vue.cjs +1 -1
  41. package/components/examples/ExampleCrudPage.vue.cjs.map +1 -1
  42. package/components/examples/ExampleCrudPage.vue.js +228 -208
  43. package/components/examples/ExampleCrudPage.vue.js.map +1 -1
  44. package/components/examples/ExampleTabMappingPage.vue.cjs +1 -1
  45. package/components/examples/ExampleTabMappingPage.vue.cjs.map +1 -1
  46. package/components/examples/ExampleTabMappingPage.vue.js +341 -368
  47. package/components/examples/ExampleTabMappingPage.vue.js.map +1 -1
  48. package/components/molecules/JAlert.vue.cjs +1 -1
  49. package/components/molecules/JAlert.vue.cjs.map +1 -1
  50. package/components/molecules/JAlert.vue.js +18 -16
  51. package/components/molecules/JAlert.vue.js.map +1 -1
  52. package/components/molecules/JCard.vue.cjs +1 -1
  53. package/components/molecules/JCard.vue.cjs.map +1 -1
  54. package/components/molecules/JCard.vue.js +55 -39
  55. package/components/molecules/JCard.vue.js.map +1 -1
  56. package/components/molecules/JEmptyState.vue.cjs +7 -0
  57. package/components/molecules/JEmptyState.vue.cjs.map +1 -0
  58. package/components/molecules/JEmptyState.vue.js +13 -0
  59. package/components/molecules/JEmptyState.vue.js.map +1 -0
  60. package/components/molecules/JEmptyState.vue2.cjs +2 -0
  61. package/components/molecules/JEmptyState.vue2.cjs.map +1 -0
  62. package/components/molecules/JEmptyState.vue2.js +127 -0
  63. package/components/molecules/JEmptyState.vue2.js.map +1 -0
  64. package/components/molecules/JFormField.vue.cjs +6 -1
  65. package/components/molecules/JFormField.vue.cjs.map +1 -1
  66. package/components/molecules/JFormField.vue.js +10 -264
  67. package/components/molecules/JFormField.vue.js.map +1 -1
  68. package/components/molecules/JFormField.vue2.cjs +2 -0
  69. package/components/molecules/JFormField.vue2.cjs.map +1 -0
  70. package/components/molecules/JFormField.vue2.js +271 -0
  71. package/components/molecules/JFormField.vue2.js.map +1 -0
  72. package/components/molecules/JTabs.vue.cjs +1 -1
  73. package/components/molecules/JTabs.vue.js +1 -1
  74. package/components/molecules/JTabs.vue2.cjs +1 -1
  75. package/components/molecules/JTabs.vue2.cjs.map +1 -1
  76. package/components/molecules/JTabs.vue2.js +44 -50
  77. package/components/molecules/JTabs.vue2.js.map +1 -1
  78. package/components/molecules/JTitlebar.vue.cjs +1 -1
  79. package/components/molecules/JTitlebar.vue.cjs.map +1 -1
  80. package/components/molecules/JTitlebar.vue.js +23 -20
  81. package/components/molecules/JTitlebar.vue.js.map +1 -1
  82. package/components/organisms/JDynamicForm.vue2.cjs +1 -1
  83. package/components/organisms/JDynamicForm.vue2.cjs.map +1 -1
  84. package/components/organisms/JDynamicForm.vue2.js +35 -32
  85. package/components/organisms/JDynamicForm.vue2.js.map +1 -1
  86. package/components/organisms/JDynamicTabs.vue.cjs +1 -1
  87. package/components/organisms/JDynamicTabs.vue.cjs.map +1 -1
  88. package/components/organisms/JDynamicTabs.vue.js +47 -52
  89. package/components/organisms/JDynamicTabs.vue.js.map +1 -1
  90. package/components/organisms/JFilterBar.vue.cjs +6 -1
  91. package/components/organisms/JFilterBar.vue.cjs.map +1 -1
  92. package/components/organisms/JFilterBar.vue.js +10 -137
  93. package/components/organisms/JFilterBar.vue.js.map +1 -1
  94. package/components/organisms/JFilterBar.vue2.cjs +1 -1
  95. package/components/organisms/JFilterBar.vue2.cjs.map +1 -1
  96. package/components/organisms/JFilterBar.vue2.js +143 -2
  97. package/components/organisms/JFilterBar.vue2.js.map +1 -1
  98. package/components/organisms/JFormModal.vue.cjs +1 -1
  99. package/components/organisms/JFormModal.vue.cjs.map +1 -1
  100. package/components/organisms/JFormModal.vue.js +54 -49
  101. package/components/organisms/JFormModal.vue.js.map +1 -1
  102. package/components/organisms/JHeader.vue.cjs +1 -1
  103. package/components/organisms/JHeader.vue.cjs.map +1 -1
  104. package/components/organisms/JHeader.vue.js +191 -190
  105. package/components/organisms/JHeader.vue.js.map +1 -1
  106. package/components/organisms/JModal.vue.cjs +1 -1
  107. package/components/organisms/JModal.vue.cjs.map +1 -1
  108. package/components/organisms/JModal.vue.js +47 -45
  109. package/components/organisms/JModal.vue.js.map +1 -1
  110. package/components/organisms/JPageContainer.vue.cjs +1 -1
  111. package/components/organisms/JPageContainer.vue.cjs.map +1 -1
  112. package/components/organisms/JPageContainer.vue.js +22 -22
  113. package/components/organisms/JPageContainer.vue.js.map +1 -1
  114. package/components/organisms/JSearchPanel.vue2.cjs +1 -1
  115. package/components/organisms/JSearchPanel.vue2.cjs.map +1 -1
  116. package/components/organisms/JSearchPanel.vue2.js +34 -32
  117. package/components/organisms/JSearchPanel.vue2.js.map +1 -1
  118. package/components/organisms/JShuttle.vue.cjs +7 -0
  119. package/components/organisms/JShuttle.vue.cjs.map +1 -0
  120. package/components/organisms/JShuttle.vue.js +13 -0
  121. package/components/organisms/JShuttle.vue.js.map +1 -0
  122. package/components/organisms/JShuttle.vue2.cjs +2 -0
  123. package/components/organisms/JShuttle.vue2.cjs.map +1 -0
  124. package/components/organisms/JShuttle.vue2.js +216 -0
  125. package/components/organisms/JShuttle.vue2.js.map +1 -0
  126. package/components/organisms/JSidebar/JSidebar.vue.cjs +2 -0
  127. package/components/organisms/JSidebar/JSidebar.vue.cjs.map +1 -0
  128. package/components/organisms/JSidebar/JSidebar.vue.js +189 -0
  129. package/components/organisms/JSidebar/JSidebar.vue.js.map +1 -0
  130. package/components/{molecules/JFormField.vue3.cjs → organisms/JSidebar/JSidebar.vue2.cjs} +2 -2
  131. package/components/organisms/JSidebar/JSidebar.vue2.cjs.map +1 -0
  132. package/components/organisms/JSidebar/JSidebar.vue2.js +5 -0
  133. package/components/organisms/JSidebar/JSidebar.vue2.js.map +1 -0
  134. package/components/organisms/JSidebar/JSidebarGroup.vue.cjs +2 -0
  135. package/components/organisms/JSidebar/JSidebarGroup.vue.cjs.map +1 -0
  136. package/components/organisms/JSidebar/JSidebarGroup.vue.js +89 -0
  137. package/components/organisms/JSidebar/JSidebarGroup.vue.js.map +1 -0
  138. package/components/organisms/JSidebar/JSidebarGroup.vue2.cjs +2 -0
  139. package/components/organisms/JSidebar/JSidebarGroup.vue2.cjs.map +1 -0
  140. package/components/organisms/JSidebar/JSidebarGroup.vue2.js +5 -0
  141. package/components/organisms/JSidebar/JSidebarGroup.vue2.js.map +1 -0
  142. package/components/organisms/JSidebar/JSidebarItem.vue.cjs +2 -0
  143. package/components/organisms/JSidebar/JSidebarItem.vue.cjs.map +1 -0
  144. package/components/organisms/JSidebar/JSidebarItem.vue.js +79 -0
  145. package/components/organisms/JSidebar/JSidebarItem.vue.js.map +1 -0
  146. package/components/organisms/JSidebar/JSidebarItem.vue2.cjs +2 -0
  147. package/components/organisms/JSidebar/JSidebarItem.vue2.cjs.map +1 -0
  148. package/components/organisms/JSidebar/JSidebarItem.vue2.js +5 -0
  149. package/components/organisms/JSidebar/JSidebarItem.vue2.js.map +1 -0
  150. package/components/organisms/JSidebarSimple/JDynamicMenuItem.vue.cjs +1 -1
  151. package/components/organisms/JSidebarSimple/JDynamicMenuItem.vue.cjs.map +1 -1
  152. package/components/organisms/JSidebarSimple/JDynamicMenuItem.vue.js +52 -52
  153. package/components/organisms/JSidebarSimple/JDynamicMenuItem.vue.js.map +1 -1
  154. package/components/shadcn/Card.vue.cjs +1 -1
  155. package/components/shadcn/Card.vue.cjs.map +1 -1
  156. package/components/shadcn/Card.vue.js +1 -1
  157. package/components/shadcn/Card.vue.js.map +1 -1
  158. package/components/shadcn/CardContent.vue.cjs +1 -1
  159. package/components/shadcn/CardContent.vue.cjs.map +1 -1
  160. package/components/shadcn/CardContent.vue.js +4 -4
  161. package/components/shadcn/CardContent.vue.js.map +1 -1
  162. package/components/shadcn/CardHeader.vue.cjs +1 -1
  163. package/components/shadcn/CardHeader.vue.cjs.map +1 -1
  164. package/components/shadcn/CardHeader.vue.js +5 -5
  165. package/components/shadcn/CardHeader.vue.js.map +1 -1
  166. package/components/shadcn/Input.vue.cjs +1 -1
  167. package/components/shadcn/Input.vue.cjs.map +1 -1
  168. package/components/shadcn/Input.vue.js +3 -3
  169. package/components/shadcn/Input.vue.js.map +1 -1
  170. package/components/shadcn/SelectTrigger.vue.cjs +1 -1
  171. package/components/shadcn/SelectTrigger.vue.cjs.map +1 -1
  172. package/components/shadcn/SelectTrigger.vue.js +1 -1
  173. package/components/shadcn/SelectTrigger.vue.js.map +1 -1
  174. package/components/shadcn/TabsContent.vue.cjs +1 -1
  175. package/components/shadcn/TabsContent.vue.cjs.map +1 -1
  176. package/components/shadcn/TabsContent.vue.js +1 -1
  177. package/components/shadcn/TabsContent.vue.js.map +1 -1
  178. package/components/shadcn/TabsList.vue.cjs +1 -1
  179. package/components/shadcn/TabsList.vue.cjs.map +1 -1
  180. package/components/shadcn/TabsList.vue.js +10 -10
  181. package/components/shadcn/TabsList.vue.js.map +1 -1
  182. package/components/shadcn/Textarea.vue.cjs +1 -1
  183. package/components/shadcn/Textarea.vue.cjs.map +1 -1
  184. package/components/shadcn/Textarea.vue.js +1 -1
  185. package/components/shadcn/Textarea.vue.js.map +1 -1
  186. package/components/shadcn/index.cjs +1 -1
  187. package/components/shadcn/index.cjs.map +1 -1
  188. package/components/shadcn/index.js +4 -4
  189. package/components/shadcn/index.js.map +1 -1
  190. package/components/templates/JLayout.vue.cjs.map +1 -1
  191. package/components/templates/JLayout.vue.js.map +1 -1
  192. package/components/templates/JLayoutSimple.vue.cjs +1 -1
  193. package/components/templates/JLayoutSimple.vue.cjs.map +1 -1
  194. package/components/templates/JLayoutSimple.vue.js +36 -30
  195. package/components/templates/JLayoutSimple.vue.js.map +1 -1
  196. package/index.cjs +1 -1
  197. package/index.js +75 -67
  198. package/package.json +1 -1
  199. package/types/index.d.ts +662 -461
  200. package/types/sidebar.types.cjs +2 -0
  201. package/types/sidebar.types.cjs.map +1 -0
  202. package/types/sidebar.types.js +5 -0
  203. package/types/sidebar.types.js.map +1 -0
  204. package/assets/jwms-portal-frontend-CwxPfHfa.css +0 -1
  205. package/components/molecules/JFormField.vue3.cjs.map +0 -1
  206. package/components/molecules/JFormField.vue3.js +0 -6
  207. package/components/molecules/JFormField.vue3.js.map +0 -1
@@ -1,13 +1,12 @@
1
- import { defineComponent as oe, ref as r, computed as I, createElementBlock as te, openBlock as R, createVNode as a, unref as t, withCtx as i, createElementVNode as s, createTextVNode as d, createBlock as ae, createCommentVNode as ie } from "vue";
2
- import b from "../molecules/JFormField.vue.js";
3
- /* empty css */
1
+ import { defineComponent as te, ref as r, resolveComponent as oe, createBlock as b, openBlock as g, withCtx as a, createVNode as i, unref as o, createElementVNode as n, createTextVNode as d, createCommentVNode as ae } from "vue";
2
+ import y from "../molecules/JFormField.vue.js";
4
3
  import "../shadcn/index.js";
5
4
  import "@vueuse/core";
6
5
  import "reka-ui";
7
6
  import "clsx";
8
7
  import "tailwind-merge";
9
8
  import "lucide-vue-next";
10
- import se from "../molecules/JTabs.vue.js";
9
+ import ie from "../molecules/JTabs.vue.js";
11
10
  /* empty css */
12
11
  /* empty css */
13
12
  import re from "../molecules/JCard.vue.js";
@@ -21,45 +20,47 @@ import "../shadcn/badge-variants.js";
21
20
  import "../shadcn/avatar-variants.js";
22
21
  import "dompurify";
23
22
  /* empty css */
24
- import y from "../atoms/JGrid.vue.js";
25
- import A from "../atoms/JSplitter.vue.js";
23
+ import U from "../atoms/JGrid.vue.js";
24
+ import F from "../atoms/JSplitter.vue.js";
25
+ /* empty css */
26
26
  import "vue-sonner";
27
- import ne from "../molecules/JTitlebar.vue.js";
27
+ import J from "../molecules/JEmptyState.vue.js";
28
28
  /* empty css */
29
29
  /* empty css */
30
- import z from "../organisms/JFilterBar.vue.js";
30
+ import T from "../organisms/JFilterBar.vue.js";
31
31
  import "vue-router";
32
32
  /* empty css */
33
33
  /* empty css */
34
- const me = { class: "flex flex-col h-full gap-2 bg-background text-foreground" }, de = { class: "flex flex-col h-full gap-2 p-2" }, ue = { class: "grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-2" }, pe = { class: "h-full overflow-auto bg-background" }, ce = { class: "h-full overflow-y-auto border-l bg-muted/30" }, fe = { class: "grid grid-cols-1 md:grid-cols-2 gap-2 mt-2" }, ve = { class: "grid grid-cols-1 md:grid-cols-2 gap-2 mt-2" }, be = { class: "flex justify-end gap-2" }, ge = { class: "flex flex-col h-full gap-2 p-2" }, ye = { class: "grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-2" }, we = { class: "h-full overflow-auto bg-background" }, ke = { class: "h-full flex gap-2 overflow-hidden items-stretch p-2 bg-background" }, Ce = { class: "flex-1 flex flex-col overflow-hidden" }, xe = { class: "flex-1 overflow-auto bg-background" }, Ne = { class: "flex flex-col justify-center gap-2 px-2" }, Ve = { class: "flex-1 flex flex-col overflow-hidden" }, _e = { class: "flex-1 overflow-auto bg-background" }, sl = /* @__PURE__ */ oe({
34
+ import se from "../organisms/JShuttle.vue.js";
35
+ const ne = { class: "flex flex-col h-full gap-2 p-2" }, me = { class: "grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-2" }, de = { class: "h-full overflow-auto bg-background" }, ue = { class: "h-full overflow-y-auto bg-muted/30" }, pe = { class: "grid grid-cols-1 md:grid-cols-2 gap-2 mt-2" }, ce = { class: "grid grid-cols-1 md:grid-cols-2 gap-2 mt-2" }, fe = { class: "flex flex-col h-full gap-2 p-2" }, ve = { class: "grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-2" }, be = { class: "h-full overflow-auto bg-background" }, ge = { class: "h-full" }, Qe = /* @__PURE__ */ te({
35
36
  __name: "ExampleTabMappingPage",
36
- setup(De, { expose: G }) {
37
- const w = r("master"), U = [
37
+ setup(ye, { expose: Y }) {
38
+ const x = r("master"), P = [
38
39
  { id: "master", label: "회원사 기본정보" },
39
40
  { id: "mapping-customer", label: "고객사 매핑" }
40
41
  ];
41
- function $(l) {
42
- console.log("탭 변경:", l);
42
+ function S(t) {
43
+ console.log("탭 변경:", t);
43
44
  }
44
- const T = [
45
+ const G = [
45
46
  { value: "Y", label: "Y:활성" },
46
47
  { value: "N", label: "N:비활성" }
47
- ], k = r(!1), p = r({
48
+ ], M = r(!1), m = r({
48
49
  isActive: "",
49
50
  keyword: ""
50
- }), Y = {
51
+ }), B = {
51
52
  isActive: {
52
53
  label: "활성여부",
53
- displayValue: (l) => l === "Y" ? "Y:활성" : l === "N" ? "N:비활성" : ""
54
+ displayValue: (t) => t === "Y" ? "Y:활성" : t === "N" ? "N:비활성" : ""
54
55
  },
55
56
  keyword: {
56
57
  label: "검색어"
57
58
  }
58
- }, C = r([
59
+ }, I = r([
59
60
  { memberId: "M001", memberName: "제이솔루션", isActive: "Y" },
60
61
  { memberId: "M002", memberName: "ABC물류", isActive: "Y" },
61
62
  { memberId: "M003", memberName: "XYZ유통", isActive: "N" }
62
- ]), F = r([
63
+ ]), _ = r([
63
64
  {
64
65
  field: "memberId",
65
66
  headerName: "회원사코드",
@@ -78,22 +79,22 @@ const me = { class: "flex flex-col h-full gap-2 bg-background text-foreground" }
78
79
  field: "isActive",
79
80
  headerName: "활성",
80
81
  width: 100,
81
- cellRenderer: (l) => l.value === "Y" ? "✓" : "",
82
+ cellRenderer: (t) => t.value === "Y" ? "✓" : "",
82
83
  enableRowGroup: !0,
83
84
  // Row Group으로 사용 가능
84
85
  enablePivot: !0
85
86
  // Pivot Column으로 사용 가능
86
87
  }
87
- ]), S = [
88
+ ]), $ = [
88
89
  {
89
90
  icon: "pencil",
90
91
  label: "수정",
91
92
  tooltip: "편집",
92
- onClick: (l) => {
93
- f.value = !1, n.value = {
94
- memberId: l.memberId,
95
- memberName: l.memberName,
96
- isActive: l.isActive
93
+ onClick: (t) => {
94
+ p.value = !1, s.value = {
95
+ memberId: t.memberId,
96
+ memberName: t.memberName,
97
+ isActive: t.isActive
97
98
  };
98
99
  }
99
100
  },
@@ -102,421 +103,393 @@ const me = { class: "flex flex-col h-full gap-2 bg-background text-foreground" }
102
103
  label: "삭제",
103
104
  tooltip: "삭제",
104
105
  styletype: "danger",
105
- onClick: (l) => {
106
- confirm(`${l.memberName}을(를) 삭제하시겠습니까?`) && (console.log("회원사 삭제:", l.memberId), alert(`삭제되었습니다: ${l.memberName}`));
106
+ onClick: (t) => {
107
+ confirm(`${t.memberName}을(를) 삭제하시겠습니까?`) && (console.log("회원사 삭제:", t.memberId), alert(`삭제되었습니다: ${t.memberName}`));
107
108
  }
108
109
  }
109
- ], x = r(), f = r(!1), n = r({
110
+ ], D = r(), p = r(!1), s = r({
110
111
  memberId: "",
111
112
  memberName: "",
112
113
  isActive: "Y"
113
114
  });
114
- function B(l) {
115
- f.value = !1, n.value = {
116
- memberId: l.data.memberId,
117
- memberName: l.data.memberName,
118
- isActive: l.data.isActive
115
+ function E(t) {
116
+ p.value = !1, s.value = {
117
+ memberId: t.data.memberId,
118
+ memberName: t.data.memberName,
119
+ isActive: t.data.isActive
119
120
  };
120
121
  }
121
- function P() {
122
- f.value = !0, n.value = {
122
+ function H() {
123
+ p.value = !0, s.value = {
123
124
  memberId: "",
124
125
  memberName: "",
125
126
  isActive: "Y"
126
127
  };
127
128
  }
128
- function E() {
129
- console.log("회원사 저장:", n.value), alert(`저장되었습니다: ${n.value.memberName}`);
129
+ function L() {
130
+ console.log("회원사 저장:", s.value), alert(`저장되었습니다: ${s.value.memberName}`);
130
131
  }
131
- function j() {
132
- confirm(`${n.value.memberName}을(를) 삭제하시겠습니까?`) && (console.log("회원사 삭제:", n.value.memberId), alert(`삭제되었습니다: ${n.value.memberName}`));
132
+ function W() {
133
+ confirm(`${s.value.memberName}을(를) 삭제하시겠습니까?`) && (console.log("회원사 삭제:", s.value.memberId), alert(`삭제되었습니다: ${s.value.memberName}`));
133
134
  }
134
- function H() {
135
- p.value = {
135
+ function h() {
136
+ m.value = {
136
137
  isActive: "",
137
138
  keyword: ""
138
139
  };
139
140
  }
140
- function J() {
141
- console.log("회원사 조회:", p.value);
141
+ function O() {
142
+ console.log("회원사 조회:", m.value);
142
143
  }
143
- function W() {
144
+ function X() {
144
145
  alert("회원사 관리 페이지 도움말");
145
146
  }
146
- const N = r(!1), v = r({
147
+ const A = r(!1), f = r({
147
148
  keyword: ""
148
- }), K = {
149
+ }), Z = {
149
150
  keyword: {
150
151
  label: "검색어"
151
152
  }
152
- }, V = r(), _ = r(), D = r(), L = r([
153
+ }, z = r(), j = r([
153
154
  { field: "memberId", headerName: "회원사코드", width: 150 },
154
155
  { field: "memberName", headerName: "회원사명", flex: 1 }
155
- ]), m = r(""), c = r({
156
+ ]), N = r(""), v = r({
156
157
  M001: ["C001", "C002"],
157
158
  // 제이솔루션에 매핑된 고객사
158
159
  M002: ["C003"],
159
160
  // ABC물류에 매핑된 고객사
160
161
  M003: []
161
162
  // XYZ유통에 매핑된 고객사 없음
162
- }), h = [
163
- { code: "C001", name: "고객A" },
164
- { code: "C002", name: "고객B" },
165
- { code: "C003", name: "고객C" },
166
- { code: "C004", name: "고객D" },
167
- { code: "C005", name: "고객E" }
168
- ], M = r([
163
+ }), R = [
164
+ { id: "C001", code: "C001", name: "고객A" },
165
+ { id: "C002", code: "C002", name: "고객B" },
166
+ { id: "C003", code: "C003", name: "고객C" },
167
+ { id: "C004", code: "C004", name: "고객D" },
168
+ { id: "C005", code: "C005", name: "고객E" }
169
+ ], q = r([
169
170
  { field: "code", headerName: "코드", width: 120 },
170
171
  { field: "name", headerName: "이름", flex: 1 }
171
- ]), O = I(() => {
172
- if (!m.value) return [];
173
- const l = c.value[m.value] || [];
174
- return h.filter((e) => !l.includes(e.code));
175
- }), X = I(() => {
176
- if (!m.value) return [];
177
- const l = c.value[m.value] || [];
178
- return h.filter((e) => l.includes(e.code));
179
- });
180
- function Z(l) {
181
- m.value = l.data.memberId, console.log("선택된 회원사:", l.data.memberName);
182
- }
183
- function q() {
184
- if (!m.value) {
185
- alert("회원사를 먼저 선택해주세요.");
186
- return;
187
- }
188
- const l = _.value?.getSelectedRows() || [];
189
- if (l.length === 0) {
190
- alert("매핑할 고객사를 선택해주세요.");
191
- return;
192
- }
193
- const e = l.map((g) => g.code), o = m.value;
194
- c.value[o] || (c.value[o] = []), c.value[o].push(...e), console.log("매핑:", e);
172
+ ]), w = r([]), V = r([]);
173
+ function K(t) {
174
+ N.value = t.data.memberId, console.log("선택된 회원사:", t.data.memberName);
175
+ const e = v.value[t.data.memberId] || [];
176
+ w.value = R.filter((c) => !e.includes(c.code)), V.value = R.filter((c) => e.includes(c.code));
195
177
  }
196
- function Q() {
197
- if (!m.value) {
178
+ function Q(t) {
179
+ if (!N.value) {
198
180
  alert("회원사를 먼저 선택해주세요.");
199
181
  return;
200
182
  }
201
- const l = D.value?.getSelectedRows() || [];
202
- if (l.length === 0) {
203
- alert("해제할 고객사를 선택해주세요.");
204
- return;
183
+ const { items: e, direction: c } = t, l = N.value;
184
+ if (c === "toRight") {
185
+ const C = e.map((k) => k.code);
186
+ v.value[l] || (v.value[l] = []), v.value[l].push(...C), console.log("매핑:", C);
187
+ } else {
188
+ const C = e.map((k) => k.code);
189
+ v.value[l] = (v.value[l] || []).filter(
190
+ (k) => !C.includes(k)
191
+ ), console.log("해제:", C);
205
192
  }
206
- const e = l.map((g) => g.code), o = m.value;
207
- c.value[o] = (c.value[o] || []).filter(
208
- (g) => !e.includes(g)
209
- ), console.log("해제:", e);
210
193
  }
211
194
  function ee() {
212
- v.value = {
195
+ f.value = {
213
196
  keyword: ""
214
197
  };
215
198
  }
216
199
  function le() {
217
- console.log("매핑 조회:", v.value);
200
+ console.log("매핑 조회:", f.value);
218
201
  }
219
- return G({ masterGridRef: x, mappingMasterGridRef: V }), (l, e) => (R(), te("div", me, [
220
- a(t(ne), {
221
- icon: "users",
202
+ return Y({ masterGridRef: D, mappingMasterGridRef: z }), w.value = [], V.value = [], (t, e) => {
203
+ const c = oe("JPageContainer");
204
+ return g(), b(c, {
222
205
  title: "회원사 관리",
206
+ icon: "users",
223
207
  description: "회원사 정보 및 고객사 매핑을 관리합니다",
224
208
  showHelp: !0,
225
- onHelp: W
226
- }),
227
- a(t(se), {
228
- activeTabId: w.value,
229
- "onUpdate:activeTabId": e[10] || (e[10] = (o) => w.value = o),
230
- tabs: U,
231
- onTabChange: $
209
+ onHelp: X,
210
+ "content-scroll": !1
232
211
  }, {
233
- "content-master": i(() => [
234
- s("div", de, [
235
- a(t(z), {
236
- collapsed: k.value,
237
- "onUpdate:collapsed": e[2] || (e[2] = (o) => k.value = o),
238
- filterValues: p.value,
239
- "onUpdate:filterValues": e[3] || (e[3] = (o) => p.value = o),
240
- filterDisplay: Y,
241
- collapsible: !0,
242
- title: "회원사 목록"
243
- }, {
244
- actions: i(() => [
245
- a(t(u), {
246
- size: "sm",
247
- variant: "outline",
248
- onClick: H
249
- }, {
250
- default: i(() => [...e[11] || (e[11] = [
251
- d("초기화", -1)
252
- ])]),
253
- _: 1
254
- }),
255
- a(t(u), {
256
- size: "sm",
257
- styletype: "primary",
258
- onClick: J
212
+ default: a(() => [
213
+ i(o(ie), {
214
+ activeTabId: x.value,
215
+ "onUpdate:activeTabId": e[12] || (e[12] = (l) => x.value = l),
216
+ tabs: P,
217
+ onTabChange: S
218
+ }, {
219
+ "content-master": a(() => [
220
+ n("div", ne, [
221
+ i(o(T), {
222
+ collapsed: M.value,
223
+ "onUpdate:collapsed": e[2] || (e[2] = (l) => M.value = l),
224
+ filterValues: m.value,
225
+ "onUpdate:filterValues": e[3] || (e[3] = (l) => m.value = l),
226
+ filterDisplay: B,
227
+ collapsible: !0,
228
+ title: "회원사 목록"
259
229
  }, {
260
- default: i(() => [...e[12] || (e[12] = [
261
- d("조회", -1)
262
- ])]),
263
- _: 1
264
- }),
265
- a(t(u), {
266
- size: "sm",
267
- styletype: "primary",
268
- onClick: P
269
- }, {
270
- default: i(() => [...e[13] || (e[13] = [
271
- d("신규", -1)
272
- ])]),
273
- _: 1
274
- })
275
- ]),
276
- filters: i(() => [
277
- s("div", ue, [
278
- a(t(b), {
279
- type: "combo",
280
- label: "활성여부",
281
- modelValue: p.value.isActive,
282
- "onUpdate:modelValue": e[0] || (e[0] = (o) => p.value.isActive = o),
283
- options: T,
284
- orientation: "horizontal",
285
- labelWidth: "30%"
286
- }, null, 8, ["modelValue"]),
287
- a(t(b), {
288
- type: "input",
289
- label: "검색어",
290
- modelValue: p.value.keyword,
291
- "onUpdate:modelValue": e[1] || (e[1] = (o) => p.value.keyword = o),
292
- orientation: "horizontal",
293
- labelWidth: "30%"
294
- }, null, 8, ["modelValue"])
295
- ])
296
- ]),
297
- _: 1
298
- }, 8, ["collapsed", "filterValues"]),
299
- a(t(A), {
300
- direction: "horizontal",
301
- "default-size": 60,
302
- "min-size": 30,
303
- "second-min-size": 20,
304
- "second-max-size": 60,
305
- gap: 2,
306
- class: "flex-1"
307
- }, {
308
- left: i(() => [
309
- s("div", pe, [
310
- a(t(y), {
311
- ref_key: "masterGridRef",
312
- ref: x,
313
- columnDefs: F.value,
314
- rowData: C.value,
315
- "action-buttons": S,
316
- enableGrouping: !0,
317
- enablePivot: !0,
318
- enableColumnsToolPanel: !0,
319
- rowGroupPanelShow: "always",
320
- pivotPanelShow: "always",
321
- groupDefaultExpanded: 1,
322
- compactFooter: !0,
323
- onRowClicked: B
324
- }, null, 8, ["columnDefs", "rowData"])
325
- ])
326
- ]),
327
- right: i(() => [
328
- s("div", ce, [
329
- a(t(re), {
330
- class: "h-full",
331
- title: f.value ? "신규 등록" : "상세 정보"
332
- }, {
333
- footer: i(() => [
334
- s("div", be, [
335
- a(t(u), {
336
- styletype: "primary",
337
- size: "sm",
338
- onClick: E
339
- }, {
340
- default: i(() => [...e[14] || (e[14] = [
341
- d("저장", -1)
342
- ])]),
343
- _: 1
344
- }),
345
- f.value ? ie("", !0) : (R(), ae(t(u), {
346
- key: 0,
347
- variant: "outline",
348
- size: "sm",
349
- onClick: j
350
- }, {
351
- default: i(() => [...e[15] || (e[15] = [
352
- d("삭제", -1)
353
- ])]),
354
- _: 1
355
- }))
356
- ])
357
- ]),
358
- default: i(() => [
359
- s("div", fe, [
360
- a(t(b), {
361
- type: "input",
362
- label: "회원사코드",
363
- modelValue: n.value.memberId,
364
- "onUpdate:modelValue": e[4] || (e[4] = (o) => n.value.memberId = o),
365
- readonly: !f.value,
366
- placeholder: "회원사 코드"
367
- }, null, 8, ["modelValue", "readonly"]),
368
- a(t(b), {
369
- type: "input",
370
- label: "회원사명",
371
- modelValue: n.value.memberName,
372
- "onUpdate:modelValue": e[5] || (e[5] = (o) => n.value.memberName = o),
373
- placeholder: "회원사 이름"
374
- }, null, 8, ["modelValue"])
375
- ]),
376
- s("div", ve, [
377
- a(t(b), {
378
- type: "checkbox",
379
- label: "활성여부",
380
- modelValue: n.value.isActive,
381
- "onUpdate:modelValue": e[6] || (e[6] = (o) => n.value.isActive = o),
382
- inlineLabel: "활성"
383
- }, null, 8, ["modelValue"])
384
- ])
385
- ]),
386
- _: 1
387
- }, 8, ["title"])
388
- ])
389
- ]),
390
- _: 1
391
- })
392
- ])
393
- ]),
394
- "content-mapping-customer": i(() => [
395
- s("div", ge, [
396
- a(t(z), {
397
- collapsed: N.value,
398
- "onUpdate:collapsed": e[8] || (e[8] = (o) => N.value = o),
399
- filterValues: v.value,
400
- "onUpdate:filterValues": e[9] || (e[9] = (o) => v.value = o),
401
- filterDisplay: K,
402
- collapsible: !0,
403
- title: "회원사별 고객사 매핑"
404
- }, {
405
- actions: i(() => [
406
- a(t(u), {
407
- size: "sm",
408
- variant: "outline",
409
- onClick: ee
410
- }, {
411
- default: i(() => [...e[16] || (e[16] = [
412
- d("초기화", -1)
413
- ])]),
230
+ actions: a(() => [
231
+ i(o(u), {
232
+ size: "xs",
233
+ variant: "outline",
234
+ onClick: h
235
+ }, {
236
+ default: a(() => [...e[13] || (e[13] = [
237
+ d("초기화", -1)
238
+ ])]),
239
+ _: 1
240
+ }),
241
+ i(o(u), {
242
+ size: "xs",
243
+ styletype: "primary",
244
+ onClick: O
245
+ }, {
246
+ default: a(() => [...e[14] || (e[14] = [
247
+ d("조회", -1)
248
+ ])]),
249
+ _: 1
250
+ }),
251
+ i(o(u), {
252
+ size: "xs",
253
+ styletype: "primary",
254
+ onClick: H
255
+ }, {
256
+ default: a(() => [...e[15] || (e[15] = [
257
+ d("신규", -1)
258
+ ])]),
259
+ _: 1
260
+ })
261
+ ]),
262
+ filters: a(() => [
263
+ n("div", me, [
264
+ i(o(y), {
265
+ type: "combo",
266
+ label: "활성여부",
267
+ modelValue: m.value.isActive,
268
+ "onUpdate:modelValue": e[0] || (e[0] = (l) => m.value.isActive = l),
269
+ options: G,
270
+ orientation: "horizontal",
271
+ labelWidth: "30%"
272
+ }, null, 8, ["modelValue"]),
273
+ i(o(y), {
274
+ type: "input",
275
+ label: "검색어",
276
+ modelValue: m.value.keyword,
277
+ "onUpdate:modelValue": e[1] || (e[1] = (l) => m.value.keyword = l),
278
+ orientation: "horizontal",
279
+ labelWidth: "30%"
280
+ }, null, 8, ["modelValue"])
281
+ ])
282
+ ]),
414
283
  _: 1
415
- }),
416
- a(t(u), {
417
- size: "sm",
418
- styletype: "primary",
419
- onClick: le
284
+ }, 8, ["collapsed", "filterValues"]),
285
+ i(o(F), {
286
+ direction: "horizontal",
287
+ "default-size": 60,
288
+ "min-size": 30,
289
+ "second-min-size": 20,
290
+ "second-max-size": 60,
291
+ class: "flex-1"
420
292
  }, {
421
- default: i(() => [...e[17] || (e[17] = [
422
- d("조회", -1)
423
- ])]),
424
- _: 1
425
- })
426
- ]),
427
- filters: i(() => [
428
- s("div", ye, [
429
- a(t(b), {
430
- type: "input",
431
- label: "검색어",
432
- modelValue: v.value.keyword,
433
- "onUpdate:modelValue": e[7] || (e[7] = (o) => v.value.keyword = o)
434
- }, null, 8, ["modelValue"])
435
- ])
436
- ]),
437
- _: 1
438
- }, 8, ["collapsed", "filterValues"]),
439
- a(t(A), {
440
- direction: "vertical",
441
- "default-size": 30,
442
- "min-size": 20,
443
- "second-min-size": 40,
444
- gap: 2,
445
- class: "flex-1"
446
- }, {
447
- top: i(() => [
448
- s("div", we, [
449
- a(t(y), {
450
- ref_key: "mappingMasterGridRef",
451
- ref: V,
452
- columnDefs: L.value,
453
- rowData: C.value,
454
- onRowClicked: Z
455
- }, null, 8, ["columnDefs", "rowData"])
456
- ])
457
- ]),
458
- bottom: i(() => [
459
- s("div", ke, [
460
- s("div", Ce, [
461
- e[18] || (e[18] = s("h4", { class: "text-sm font-semibold mb-2 px-2" }, "미매핑 고객사", -1)),
462
- s("div", xe, [
463
- a(t(y), {
464
- ref_key: "unmappedGridRef",
465
- ref: _,
466
- columnDefs: M.value,
467
- rowData: O.value,
468
- pagination: !1,
469
- checkbox: ""
293
+ left: a(() => [
294
+ n("div", de, [
295
+ i(o(U), {
296
+ ref_key: "masterGridRef",
297
+ ref: D,
298
+ columnDefs: _.value,
299
+ rowData: I.value,
300
+ "action-buttons": $,
301
+ enableGrouping: !0,
302
+ enablePivot: !0,
303
+ enableColumnsToolPanel: !0,
304
+ rowGroupPanelShow: "always",
305
+ pivotPanelShow: "always",
306
+ groupDefaultExpanded: 1,
307
+ compactFooter: !0,
308
+ onRowClicked: E
470
309
  }, null, 8, ["columnDefs", "rowData"])
471
310
  ])
472
311
  ]),
473
- s("div", Ne, [
474
- a(t(u), {
475
- styletype: "primary",
476
- size: "sm",
477
- onClick: q
312
+ right: a(() => [
313
+ n("div", ue, [
314
+ !s.value.memberId && !p.value ? (g(), b(o(J), {
315
+ key: 0,
316
+ variant: "simple",
317
+ icon: "mousePointerClick",
318
+ title: "항목을 선택하거나 신규 버튼을 클릭하세요",
319
+ class: "h-full"
320
+ })) : (g(), b(o(re), {
321
+ key: 1,
322
+ class: "h-full",
323
+ title: p.value ? "신규 등록" : "상세 정보",
324
+ variant: "elevated"
325
+ }, {
326
+ actions: a(() => [
327
+ i(o(u), {
328
+ size: "xs",
329
+ styletype: "primary",
330
+ onClick: L
331
+ }, {
332
+ default: a(() => [...e[16] || (e[16] = [
333
+ d("저장", -1)
334
+ ])]),
335
+ _: 1
336
+ }),
337
+ p.value ? ae("", !0) : (g(), b(o(u), {
338
+ key: 0,
339
+ size: "xs",
340
+ variant: "destructive",
341
+ onClick: W
342
+ }, {
343
+ default: a(() => [...e[17] || (e[17] = [
344
+ d("삭제", -1)
345
+ ])]),
346
+ _: 1
347
+ })),
348
+ i(o(u), {
349
+ size: "xs",
350
+ variant: "outline",
351
+ onClick: h
352
+ }, {
353
+ default: a(() => [...e[18] || (e[18] = [
354
+ d("취소", -1)
355
+ ])]),
356
+ _: 1
357
+ })
358
+ ]),
359
+ default: a(() => [
360
+ n("div", pe, [
361
+ i(o(y), {
362
+ type: "input",
363
+ label: "회원사코드",
364
+ modelValue: s.value.memberId,
365
+ "onUpdate:modelValue": e[4] || (e[4] = (l) => s.value.memberId = l),
366
+ readonly: !p.value,
367
+ placeholder: "회원사 코드"
368
+ }, null, 8, ["modelValue", "readonly"]),
369
+ i(o(y), {
370
+ type: "input",
371
+ label: "회원사명",
372
+ modelValue: s.value.memberName,
373
+ "onUpdate:modelValue": e[5] || (e[5] = (l) => s.value.memberName = l),
374
+ placeholder: "회원사 이름"
375
+ }, null, 8, ["modelValue"])
376
+ ]),
377
+ n("div", ce, [
378
+ i(o(y), {
379
+ type: "checkbox",
380
+ label: "활성여부",
381
+ modelValue: s.value.isActive,
382
+ "onUpdate:modelValue": e[6] || (e[6] = (l) => s.value.isActive = l),
383
+ inlineLabel: "활성"
384
+ }, null, 8, ["modelValue"])
385
+ ])
386
+ ]),
387
+ _: 1
388
+ }, 8, ["title"]))
389
+ ])
390
+ ]),
391
+ _: 1
392
+ })
393
+ ])
394
+ ]),
395
+ "content-mapping-customer": a(() => [
396
+ n("div", fe, [
397
+ i(o(T), {
398
+ collapsed: A.value,
399
+ "onUpdate:collapsed": e[8] || (e[8] = (l) => A.value = l),
400
+ filterValues: f.value,
401
+ "onUpdate:filterValues": e[9] || (e[9] = (l) => f.value = l),
402
+ filterDisplay: Z,
403
+ collapsible: !0,
404
+ title: "회원사별 고객사 매핑"
405
+ }, {
406
+ actions: a(() => [
407
+ i(o(u), {
408
+ size: "xs",
409
+ variant: "outline",
410
+ onClick: ee
478
411
  }, {
479
- default: i(() => [...e[19] || (e[19] = [
480
- d("매핑 ▶", -1)
412
+ default: a(() => [...e[19] || (e[19] = [
413
+ d("초기화", -1)
481
414
  ])]),
482
415
  _: 1
483
416
  }),
484
- a(t(u), {
485
- variant: "outline",
486
- size: "sm",
487
- onClick: Q
417
+ i(o(u), {
418
+ size: "xs",
419
+ styletype: "primary",
420
+ onClick: le
488
421
  }, {
489
- default: i(() => [...e[20] || (e[20] = [
490
- d("◀ 해제", -1)
422
+ default: a(() => [...e[20] || (e[20] = [
423
+ d("조회", -1)
491
424
  ])]),
492
425
  _: 1
493
426
  })
494
427
  ]),
495
- s("div", Ve, [
496
- e[21] || (e[21] = s("h4", { class: "text-sm font-semibold mb-2 px-2" }, "매핑된 고객사", -1)),
497
- s("div", _e, [
498
- a(t(y), {
499
- ref_key: "mappedGridRef",
500
- ref: D,
501
- columnDefs: M.value,
502
- rowData: X.value,
503
- pagination: !1,
504
- checkbox: ""
428
+ filters: a(() => [
429
+ n("div", ve, [
430
+ i(o(y), {
431
+ type: "input",
432
+ label: "검색어",
433
+ modelValue: f.value.keyword,
434
+ "onUpdate:modelValue": e[7] || (e[7] = (l) => f.value.keyword = l)
435
+ }, null, 8, ["modelValue"])
436
+ ])
437
+ ]),
438
+ _: 1
439
+ }, 8, ["collapsed", "filterValues"]),
440
+ i(o(F), {
441
+ direction: "vertical",
442
+ "default-size": 30,
443
+ "min-size": 20,
444
+ "second-min-size": 40,
445
+ class: "flex-1"
446
+ }, {
447
+ top: a(() => [
448
+ n("div", be, [
449
+ i(o(U), {
450
+ ref_key: "mappingMasterGridRef",
451
+ ref: z,
452
+ columnDefs: j.value,
453
+ rowData: I.value,
454
+ onRowClicked: K
505
455
  }, null, 8, ["columnDefs", "rowData"])
506
456
  ])
507
- ])
508
- ])
509
- ]),
510
- _: 1
511
- })
512
- ])
457
+ ]),
458
+ bottom: a(() => [
459
+ n("div", ge, [
460
+ N.value ? (g(), b(o(se), {
461
+ key: 1,
462
+ "left-title": "미매핑 고객사",
463
+ "right-title": "매핑된 고객사",
464
+ "column-defs": q.value,
465
+ "left-data": w.value,
466
+ "onUpdate:leftData": e[10] || (e[10] = (l) => w.value = l),
467
+ "right-data": V.value,
468
+ "onUpdate:rightData": e[11] || (e[11] = (l) => V.value = l),
469
+ searchable: !1,
470
+ onMove: Q
471
+ }, null, 8, ["column-defs", "left-data", "right-data"])) : (g(), b(o(J), {
472
+ key: 0,
473
+ variant: "simple",
474
+ icon: "arrowLeftRight",
475
+ title: "상단에서 회원사를 선택하세요",
476
+ class: "h-full"
477
+ }))
478
+ ])
479
+ ]),
480
+ _: 1
481
+ })
482
+ ])
483
+ ]),
484
+ _: 1
485
+ }, 8, ["activeTabId"])
513
486
  ]),
514
487
  _: 1
515
- }, 8, ["activeTabId"])
516
- ]));
488
+ });
489
+ };
517
490
  }
518
491
  });
519
492
  export {
520
- sl as default
493
+ Qe as default
521
494
  };
522
495
  //# sourceMappingURL=ExampleTabMappingPage.vue.js.map