@j-solution/components 1.2.1 → 1.4.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 (55) hide show
  1. package/README.md +6 -14
  2. package/USAGE_GUIDE.md +772 -1480
  3. package/assets/jwms-portal-frontend-Cs1trVbC.css +1 -0
  4. package/assets/styles/j-components.css +1 -1
  5. package/components/atoms/JEditor.vue.cjs +1 -1
  6. package/components/atoms/JEditor.vue.js +2 -2
  7. package/components/atoms/JEditor.vue2.cjs +1 -1
  8. package/components/atoms/JEditor.vue2.cjs.map +1 -1
  9. package/components/atoms/JEditor.vue2.js +1 -0
  10. package/components/atoms/JEditor.vue2.js.map +1 -1
  11. package/components/atoms/JPreview.vue.cjs +1 -1
  12. package/components/atoms/JPreview.vue.js +1 -1
  13. package/components/atoms/JPreview.vue2.cjs +1 -1
  14. package/components/atoms/JPreview.vue2.cjs.map +1 -1
  15. package/components/atoms/JPreview.vue2.js +2 -1
  16. package/components/atoms/JPreview.vue2.js.map +1 -1
  17. package/components/molecules/JFormField.vue.cjs +1 -1
  18. package/components/molecules/JFormField.vue.cjs.map +1 -1
  19. package/components/molecules/JFormField.vue.js +1 -1
  20. package/components/molecules/JFormField.vue.js.map +1 -1
  21. package/components/organisms/JFilterBar.vue.cjs +2 -0
  22. package/components/organisms/JFilterBar.vue.cjs.map +1 -0
  23. package/components/organisms/JFilterBar.vue.js +51 -0
  24. package/components/organisms/JFilterBar.vue.js.map +1 -0
  25. package/components/organisms/JFilterBar.vue2.cjs +2 -0
  26. package/components/organisms/JFilterBar.vue2.cjs.map +1 -0
  27. package/components/organisms/JFilterBar.vue2.js +5 -0
  28. package/components/organisms/JFilterBar.vue2.js.map +1 -0
  29. package/components/organisms/JSidebarSimple/JDynamicMenuItem.vue.cjs +1 -1
  30. package/components/organisms/JSidebarSimple/JDynamicMenuItem.vue.cjs.map +1 -1
  31. package/components/organisms/JSidebarSimple/JDynamicMenuItem.vue.js +45 -40
  32. package/components/organisms/JSidebarSimple/JDynamicMenuItem.vue.js.map +1 -1
  33. package/components/organisms/JSidebarSimple.vue.cjs +1 -1
  34. package/components/organisms/JSidebarSimple.vue.js +2 -2
  35. package/components/organisms/JSidebarSimple.vue2.cjs +1 -1
  36. package/components/organisms/JSidebarSimple.vue2.cjs.map +1 -1
  37. package/components/organisms/JSidebarSimple.vue2.js +40 -70
  38. package/components/organisms/JSidebarSimple.vue2.js.map +1 -1
  39. package/components/organisms/JTree.vue.cjs +2 -0
  40. package/components/organisms/JTree.vue.cjs.map +1 -0
  41. package/components/organisms/JTree.vue.js +83 -0
  42. package/components/organisms/JTree.vue.js.map +1 -0
  43. package/components/organisms/JTree.vue2.cjs +2 -0
  44. package/components/organisms/JTree.vue2.cjs.map +1 -0
  45. package/components/organisms/JTree.vue2.js +5 -0
  46. package/components/organisms/JTree.vue2.js.map +1 -0
  47. package/index.cjs +1 -1
  48. package/index.js +37 -33
  49. package/lib/menu-utils.cjs +2 -0
  50. package/lib/menu-utils.cjs.map +1 -0
  51. package/lib/menu-utils.js +33 -0
  52. package/lib/menu-utils.js.map +1 -0
  53. package/package.json +1 -1
  54. package/types/index.d.ts +156 -34
  55. package/assets/jwms-portal-frontend-D8DdrheA.css +0 -1
package/types/index.d.ts CHANGED
@@ -188,7 +188,36 @@ handleError: (errs: any) => void;
188
188
  }, {}, {}, {}, {}> | null;
189
189
  }, any>;
190
190
 
191
- declare const __VLS_component_19: DefineComponent<__VLS_Props_33, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
191
+ declare const __VLS_component_19: DefineComponent<JFilterBarProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
192
+ "update:collapsed": (value: boolean) => any;
193
+ }, string, PublicProps, Readonly<JFilterBarProps> & Readonly<{
194
+ "onUpdate:collapsed"?: ((value: boolean) => any) | undefined;
195
+ }>, {
196
+ collapsible: boolean;
197
+ mode: "full" | "simple";
198
+ collapsed: boolean;
199
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
200
+
201
+ declare const __VLS_component_2: DefineComponent<__VLS_Props_2, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
202
+ "update:modelValue": (value: string | number) => any;
203
+ change: (value: string | number) => any;
204
+ focus: (event: FocusEvent) => any;
205
+ blur: (event: FocusEvent) => any;
206
+ }, string, PublicProps, Readonly<__VLS_Props_2> & Readonly<{
207
+ "onUpdate:modelValue"?: ((value: string | number) => any) | undefined;
208
+ onChange?: ((value: string | number) => any) | undefined;
209
+ onFocus?: ((event: FocusEvent) => any) | undefined;
210
+ onBlur?: ((event: FocusEvent) => any) | undefined;
211
+ }>, {
212
+ disabled: boolean;
213
+ type: string;
214
+ placeholder: string;
215
+ readonly: boolean;
216
+ required: boolean;
217
+ styletype: StyleType_2;
218
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLInputElement>;
219
+
220
+ declare const __VLS_component_20: DefineComponent<__VLS_Props_33, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
192
221
  logoClick: () => any;
193
222
  navClick: (item: HeaderNavItem, index: number) => any;
194
223
  notificationClick: (item: NotificationItem) => any;
@@ -214,26 +243,7 @@ defaultTheme: string;
214
243
  availableThemes: string[];
215
244
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLElement>;
216
245
 
217
- declare const __VLS_component_2: DefineComponent<__VLS_Props_2, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
218
- "update:modelValue": (value: string | number) => any;
219
- change: (value: string | number) => any;
220
- focus: (event: FocusEvent) => any;
221
- blur: (event: FocusEvent) => any;
222
- }, string, PublicProps, Readonly<__VLS_Props_2> & Readonly<{
223
- "onUpdate:modelValue"?: ((value: string | number) => any) | undefined;
224
- onChange?: ((value: string | number) => any) | undefined;
225
- onFocus?: ((event: FocusEvent) => any) | undefined;
226
- onBlur?: ((event: FocusEvent) => any) | undefined;
227
- }>, {
228
- disabled: boolean;
229
- type: string;
230
- placeholder: string;
231
- readonly: boolean;
232
- required: boolean;
233
- styletype: StyleType_2;
234
- }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLInputElement>;
235
-
236
- declare const __VLS_component_20: DefineComponent<__VLS_Props_36, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
246
+ declare const __VLS_component_21: DefineComponent<__VLS_Props_36, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
237
247
  breadcrumbClick: (item: BreadcrumbItem, index: number) => any;
238
248
  titlebarButtonClick: (button: TitlebarButton) => any;
239
249
  }, string, PublicProps, Readonly<__VLS_Props_36> & Readonly<{
@@ -247,12 +257,12 @@ showTitlebar: boolean;
247
257
  contentScroll: boolean;
248
258
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
249
259
 
250
- declare const __VLS_component_21: DefineComponent<__VLS_Props_37, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_37> & Readonly<{}>, {
251
- styletype: StyleType_28;
260
+ declare const __VLS_component_22: DefineComponent<__VLS_Props_38, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_38> & Readonly<{}>, {
261
+ styletype: StyleType_29;
252
262
  contentScroll: boolean;
253
263
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
254
264
 
255
- declare const __VLS_component_22: DefineComponent<__VLS_Props_38, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_38> & Readonly<{}>, {
265
+ declare const __VLS_component_23: DefineComponent<__VLS_Props_39, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_39> & Readonly<{}>, {
256
266
  styletype: "default" | "minimal";
257
267
  permissions: MenuPermission[];
258
268
  menuItems: SidebarMenuItem[];
@@ -803,8 +813,27 @@ declare type __VLS_Props_36 = {
803
813
  };
804
814
 
805
815
  declare type __VLS_Props_37 = {
806
- /** 레이아웃 스타일 타입 */
816
+ /** 트리 노드 데이터 */
817
+ items: SidebarMenuItem[];
818
+ /** 펼쳐진 노드 키 목록 (v-model 지원, 배열) */
819
+ expandedKeys?: (number | string)[];
820
+ /** 현재 선택(하이라이트)된 노드의 menuKey (v-model 지원) */
821
+ activeKey?: number | string | null;
822
+ /** 권한 목록 */
823
+ permissions?: MenuPermission[];
824
+ /** 최대 깊이 제한 (무한 루프 방지) */
825
+ maxDepth?: number;
826
+ /** 스타일 타입 */
807
827
  styletype?: StyleType_28;
828
+ /** 검색어 (노드 필터링) */
829
+ searchQuery?: string;
830
+ /** 추가 CSS 클래스 */
831
+ class?: string;
832
+ };
833
+
834
+ declare type __VLS_Props_38 = {
835
+ /** 레이아웃 스타일 타입 */
836
+ styletype?: StyleType_29;
808
837
  /** 콘텐츠 영역 스크롤 가능 여부 */
809
838
  contentScroll?: boolean;
810
839
  /** 추가 CSS 클래스 */
@@ -841,7 +870,7 @@ declare type __VLS_Props_37 = {
841
870
  * </JLayoutSimple>
842
871
  * ```
843
872
  */
844
- declare type __VLS_Props_38 = {
873
+ declare type __VLS_Props_39 = {
845
874
  /** 레이아웃 스타일 타입 */
846
875
  styletype?: 'default' | 'minimal';
847
876
  /** 콘텐츠 영역 스크롤 가능 여부 */
@@ -1084,9 +1113,10 @@ declare function __VLS_template_19(): {
1084
1113
  attrs: Partial<{}>;
1085
1114
  slots: {
1086
1115
  actions?(_: {}): any;
1116
+ filters?(_: {}): any;
1087
1117
  };
1088
1118
  refs: {};
1089
- rootEl: HTMLElement;
1119
+ rootEl: HTMLDivElement;
1090
1120
  };
1091
1121
 
1092
1122
  declare function __VLS_template_2(): {
@@ -1099,6 +1129,15 @@ declare function __VLS_template_2(): {
1099
1129
  };
1100
1130
 
1101
1131
  declare function __VLS_template_20(): {
1132
+ attrs: Partial<{}>;
1133
+ slots: {
1134
+ actions?(_: {}): any;
1135
+ };
1136
+ refs: {};
1137
+ rootEl: HTMLElement;
1138
+ };
1139
+
1140
+ declare function __VLS_template_21(): {
1102
1141
  attrs: Partial<{}>;
1103
1142
  slots: {
1104
1143
  'titlebar-buttons'?(_: {}): any;
@@ -1108,7 +1147,7 @@ declare function __VLS_template_20(): {
1108
1147
  rootEl: HTMLDivElement;
1109
1148
  };
1110
1149
 
1111
- declare function __VLS_template_21(): {
1150
+ declare function __VLS_template_22(): {
1112
1151
  attrs: Partial<{}>;
1113
1152
  slots: {
1114
1153
  header?(_: {}): any;
@@ -1120,7 +1159,7 @@ declare function __VLS_template_21(): {
1120
1159
  rootEl: HTMLDivElement;
1121
1160
  };
1122
1161
 
1123
- declare function __VLS_template_22(): {
1162
+ declare function __VLS_template_23(): {
1124
1163
  attrs: Partial<{}>;
1125
1164
  slots: {
1126
1165
  header?(_: {
@@ -1231,6 +1270,8 @@ declare type __VLS_TemplateResult_21 = ReturnType<typeof __VLS_template_21>;
1231
1270
 
1232
1271
  declare type __VLS_TemplateResult_22 = ReturnType<typeof __VLS_template_22>;
1233
1272
 
1273
+ declare type __VLS_TemplateResult_23 = ReturnType<typeof __VLS_template_23>;
1274
+
1234
1275
  declare type __VLS_TemplateResult_3 = ReturnType<typeof __VLS_template_3>;
1235
1276
 
1236
1277
  declare type __VLS_TemplateResult_4 = ReturnType<typeof __VLS_template_4>;
@@ -1335,6 +1376,12 @@ declare type __VLS_WithTemplateSlots_22<T, S> = T & {
1335
1376
  };
1336
1377
  };
1337
1378
 
1379
+ declare type __VLS_WithTemplateSlots_23<T, S> = T & {
1380
+ new (): {
1381
+ $slots: S;
1382
+ };
1383
+ };
1384
+
1338
1385
  declare type __VLS_WithTemplateSlots_3<T, S> = T & {
1339
1386
  new (): {
1340
1387
  $slots: S;
@@ -1808,6 +1855,17 @@ readonly: boolean;
1808
1855
  theme: "light" | "dark";
1809
1856
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
1810
1857
 
1858
+ export declare const JFilterBar: __VLS_WithTemplateSlots_19<typeof __VLS_component_19, __VLS_TemplateResult_19["slots"]>;
1859
+
1860
+ declare interface JFilterBarProps {
1861
+ /** full: 토글+필터 있음, simple: 버튼만 */
1862
+ mode?: 'full' | 'simple';
1863
+ /** 필터 접힘 상태 (v-model 지원) */
1864
+ collapsed?: boolean;
1865
+ /** 접기/펼치기 가능 여부. false면 토글 버튼 숨김 & 필터 항상 표시 */
1866
+ collapsible?: boolean;
1867
+ }
1868
+
1811
1869
  export declare const JFormField: DefineComponent<__VLS_Props_25, {
1812
1870
  clearError: () => void;
1813
1871
  }, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
@@ -1877,7 +1935,7 @@ styletype: StyleType_21;
1877
1935
  groupedOptions: GroupedOption[];
1878
1936
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
1879
1937
 
1880
- export declare const JHeader: __VLS_WithTemplateSlots_19<typeof __VLS_component_19, __VLS_TemplateResult_19["slots"]>;
1938
+ export declare const JHeader: __VLS_WithTemplateSlots_20<typeof __VLS_component_20, __VLS_TemplateResult_20["slots"]>;
1881
1939
 
1882
1940
  export declare const JIcon: DefineComponent<__VLS_Props_20, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_20> & Readonly<{}>, {
1883
1941
  size: SizeType_3;
@@ -1907,11 +1965,11 @@ export declare const JKbd: __VLS_WithTemplateSlots_5<typeof __VLS_component_5, _
1907
1965
 
1908
1966
  export declare const JLabel: __VLS_WithTemplateSlots_7<typeof __VLS_component_7, __VLS_TemplateResult_7["slots"]>;
1909
1967
 
1910
- export declare const JLayout: __VLS_WithTemplateSlots_21<typeof __VLS_component_21, __VLS_TemplateResult_21["slots"]>;
1968
+ export declare const JLayout: __VLS_WithTemplateSlots_22<typeof __VLS_component_22, __VLS_TemplateResult_22["slots"]>;
1911
1969
 
1912
1970
  export { JLayoutAdvanced }
1913
1971
 
1914
- export declare const JLayoutSimple: __VLS_WithTemplateSlots_22<typeof __VLS_component_22, __VLS_TemplateResult_22["slots"]>;
1972
+ export declare const JLayoutSimple: __VLS_WithTemplateSlots_23<typeof __VLS_component_23, __VLS_TemplateResult_23["slots"]>;
1915
1973
 
1916
1974
  export declare const JLink: __VLS_WithTemplateSlots_3<typeof __VLS_component_3, __VLS_TemplateResult_3["slots"]>;
1917
1975
 
@@ -1938,7 +1996,7 @@ declare interface JModalProps {
1938
1996
  disabled?: boolean;
1939
1997
  }
1940
1998
 
1941
- export declare const JPageContainer: __VLS_WithTemplateSlots_20<typeof __VLS_component_20, __VLS_TemplateResult_20["slots"]>;
1999
+ export declare const JPageContainer: __VLS_WithTemplateSlots_21<typeof __VLS_component_21, __VLS_TemplateResult_21["slots"]>;
1942
2000
 
1943
2001
  export declare const JPopover: __VLS_WithTemplateSlots_8<typeof __VLS_component_8, __VLS_TemplateResult_8["slots"]>;
1944
2002
 
@@ -2210,6 +2268,25 @@ closeButton: boolean;
2210
2268
 
2211
2269
  export declare const JTooltip: __VLS_WithTemplateSlots_6<typeof __VLS_component_6, __VLS_TemplateResult_6["slots"]>;
2212
2270
 
2271
+ export declare const JTree: DefineComponent<__VLS_Props_37, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
2272
+ expandChange: (menuKey: string | number | undefined, expanded: boolean) => any;
2273
+ nodeClick: (event: MenuClickEvent) => any;
2274
+ "update:expandedKeys": (keys: (string | number)[]) => any;
2275
+ "update:activeKey": (key: string | number | null) => any;
2276
+ }, string, PublicProps, Readonly<__VLS_Props_37> & Readonly<{
2277
+ onExpandChange?: ((menuKey: string | number | undefined, expanded: boolean) => any) | undefined;
2278
+ onNodeClick?: ((event: MenuClickEvent) => any) | undefined;
2279
+ "onUpdate:expandedKeys"?: ((keys: (string | number)[]) => any) | undefined;
2280
+ "onUpdate:activeKey"?: ((key: string | number | null) => any) | undefined;
2281
+ }>, {
2282
+ styletype: StyleType_28;
2283
+ permissions: MenuPermission[];
2284
+ expandedKeys: (number | string)[];
2285
+ maxDepth: number;
2286
+ activeKey: number | string | null;
2287
+ searchQuery: string;
2288
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
2289
+
2213
2290
  declare type LabelPosition = 'right' | 'left' | 'top' | 'bottom';
2214
2291
 
2215
2292
  /**
@@ -2473,6 +2550,51 @@ declare type StyleType_26 = 'default' | 'minimal';
2473
2550
  */
2474
2551
  declare type StyleType_27 = 'default' | 'minimal';
2475
2552
 
2553
+ /**
2554
+ * JTree - 트리 뷰 컴포넌트
2555
+ * Tree View Component
2556
+ *
2557
+ * @description
2558
+ * 계층 데이터를 조회/탐색하는 읽기 전용 트리 컴포넌트입니다.
2559
+ * JDynamicMenuItem을 재귀적으로 렌더링하며, 네비게이션 기능을 비활성화하고
2560
+ * nodeClick 이벤트로 선택을 처리합니다.
2561
+ *
2562
+ * @example
2563
+ * ```vue
2564
+ * <JTree
2565
+ * :items="treeData"
2566
+ * v-model:expanded-keys="expandedKeys"
2567
+ * v-model:active-key="activeKey"
2568
+ * @node-click="handleNodeClick"
2569
+ * />
2570
+ * ```
2571
+ *
2572
+ * @example JSON 트리 데이터 예시
2573
+ * ```json
2574
+ * [
2575
+ * {
2576
+ * "label": "프로그램 관리",
2577
+ * "icon": "folder",
2578
+ * "menuType": "F",
2579
+ * "menuKey": 1,
2580
+ * "children": [
2581
+ * {
2582
+ * "label": "시스템 관리",
2583
+ * "menuType": "L",
2584
+ * "menuKey": 11
2585
+ * },
2586
+ * {
2587
+ * "label": "사용자 관리",
2588
+ * "menuType": "L",
2589
+ * "menuKey": 12
2590
+ * }
2591
+ * ]
2592
+ * }
2593
+ * ]
2594
+ * ```
2595
+ */
2596
+ declare type StyleType_28 = 'default' | 'minimal';
2597
+
2476
2598
  /**
2477
2599
  * JLayout - 기본 레이아웃 컴포넌트 (templates)
2478
2600
  * Base Layout Component
@@ -2508,7 +2630,7 @@ declare type StyleType_27 = 'default' | 'minimal';
2508
2630
  * </JLayout>
2509
2631
  * ```
2510
2632
  */
2511
- declare type StyleType_28 = 'default' | 'minimal';
2633
+ declare type StyleType_29 = 'default' | 'minimal';
2512
2634
 
2513
2635
  declare type StyleType_3 = 'default' | 'error' | 'success' | 'warning' | 'sm' | 'lg';
2514
2636