@j-solution/components 1.8.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.
- package/README.md +413 -415
- package/assets/jwms-portal-frontend-Ct2Tc7yj.css +1 -0
- package/assets/styles/j-components.css +1 -1
- package/assets/styles/themes.css +422 -422
- package/components/atoms/JButton.vue.cjs +1 -1
- package/components/atoms/JButton.vue.js +1 -1
- package/components/atoms/JButton.vue2.cjs.map +1 -1
- package/components/atoms/JButton.vue2.js.map +1 -1
- package/components/atoms/JLabel.vue.cjs.map +1 -1
- package/components/atoms/JLabel.vue.js.map +1 -1
- package/components/molecules/JTabs.vue.cjs +1 -1
- package/components/molecules/JTabs.vue.js +1 -1
- package/components/molecules/JTabs.vue2.cjs.map +1 -1
- package/components/molecules/JTabs.vue2.js.map +1 -1
- package/components/organisms/JDynamicTabs.vue.cjs.map +1 -1
- package/components/organisms/JDynamicTabs.vue.js.map +1 -1
- package/components/organisms/JFilterBar.vue.cjs +1 -1
- package/components/organisms/JFilterBar.vue.js +2 -2
- package/components/organisms/JFilterBar.vue2.cjs +1 -1
- package/components/organisms/JFilterBar.vue2.cjs.map +1 -1
- package/components/organisms/JFilterBar.vue2.js +14 -12
- package/components/organisms/JFilterBar.vue2.js.map +1 -1
- package/components/organisms/JPageContainer.vue.cjs.map +1 -1
- package/components/organisms/JPageContainer.vue.js.map +1 -1
- package/components/organisms/JSidebar/JSidebar.vue.cjs +2 -0
- package/components/organisms/JSidebar/JSidebar.vue.cjs.map +1 -0
- package/components/organisms/JSidebar/JSidebar.vue.js +189 -0
- package/components/organisms/JSidebar/JSidebar.vue.js.map +1 -0
- package/components/organisms/JSidebar/JSidebar.vue2.cjs +2 -0
- package/components/organisms/JSidebar/JSidebar.vue2.cjs.map +1 -0
- package/components/organisms/JSidebar/JSidebar.vue2.js +5 -0
- package/components/organisms/JSidebar/JSidebar.vue2.js.map +1 -0
- package/components/organisms/JSidebar/JSidebarGroup.vue.cjs +2 -0
- package/components/organisms/JSidebar/JSidebarGroup.vue.cjs.map +1 -0
- package/components/organisms/JSidebar/JSidebarGroup.vue.js +89 -0
- package/components/organisms/JSidebar/JSidebarGroup.vue.js.map +1 -0
- package/components/organisms/JSidebar/JSidebarGroup.vue2.cjs +2 -0
- package/components/organisms/JSidebar/JSidebarGroup.vue2.cjs.map +1 -0
- package/components/organisms/JSidebar/JSidebarGroup.vue2.js +5 -0
- package/components/organisms/JSidebar/JSidebarGroup.vue2.js.map +1 -0
- package/components/organisms/JSidebar/JSidebarItem.vue.cjs +2 -0
- package/components/organisms/JSidebar/JSidebarItem.vue.cjs.map +1 -0
- package/components/organisms/JSidebar/JSidebarItem.vue.js +79 -0
- package/components/organisms/JSidebar/JSidebarItem.vue.js.map +1 -0
- package/components/organisms/JSidebar/JSidebarItem.vue2.cjs +2 -0
- package/components/organisms/JSidebar/JSidebarItem.vue2.cjs.map +1 -0
- package/components/organisms/JSidebar/JSidebarItem.vue2.js +5 -0
- package/components/organisms/JSidebar/JSidebarItem.vue2.js.map +1 -0
- package/components/shadcn/Card.vue.cjs.map +1 -1
- package/components/shadcn/Card.vue.js.map +1 -1
- package/components/shadcn/CardContent.vue.cjs.map +1 -1
- package/components/shadcn/CardContent.vue.js.map +1 -1
- package/components/shadcn/CardHeader.vue.cjs.map +1 -1
- package/components/shadcn/CardHeader.vue.js.map +1 -1
- package/components/shadcn/Input.vue.cjs.map +1 -1
- package/components/shadcn/Input.vue.js.map +1 -1
- package/components/shadcn/SelectTrigger.vue.cjs.map +1 -1
- package/components/shadcn/SelectTrigger.vue.js.map +1 -1
- package/components/shadcn/TabsContent.vue.cjs.map +1 -1
- package/components/shadcn/TabsContent.vue.js.map +1 -1
- package/components/shadcn/Textarea.vue.cjs.map +1 -1
- package/components/shadcn/Textarea.vue.js.map +1 -1
- package/components/shadcn/index.cjs.map +1 -1
- package/components/shadcn/index.js.map +1 -1
- package/components/templates/JLayout.vue.cjs.map +1 -1
- package/components/templates/JLayout.vue.js.map +1 -1
- package/components/templates/JLayoutSimple.vue.cjs +1 -1
- package/components/templates/JLayoutSimple.vue.cjs.map +1 -1
- package/components/templates/JLayoutSimple.vue.js +36 -30
- package/components/templates/JLayoutSimple.vue.js.map +1 -1
- package/index.cjs +1 -1
- package/index.js +22 -20
- package/package.json +1 -1
- package/types/index.d.ts +119 -61
- package/types/sidebar.types.cjs +2 -0
- package/types/sidebar.types.cjs.map +1 -0
- package/types/sidebar.types.js +5 -0
- package/types/sidebar.types.js.map +1 -0
- package/assets/jwms-portal-frontend-BtHTA-UF.css +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JLayout.vue.js","sources":["../../../../src/components/templates/JLayout.vue"],"sourcesContent":["<script setup lang=\"ts\">\
|
|
1
|
+
{"version":3,"file":"JLayout.vue.js","sources":["../../../../src/components/templates/JLayout.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { cn } from '@/lib/utils'\n\n/**\n * JLayout - 기본 레이아웃 컴포넌트 (templates)\n * Base Layout Component\n * \n * @description\n * 공통 레이아웃 구조를 제공하는 기본 컴포넌트입니다.\n * Header, Sidebar, Content 영역을 슬롯으로 제공하여 유연한 레이아웃 구성이 가능합니다.\n * \n * 레이아웃 구조:\n * - header: 상단 헤더 영역 (슬롯)\n * - sidebar: 사이드바 영역 (슬롯)\n * - content: 메인 콘텐츠 영역 (슬롯, 기본 슬롯도 지원)\n * \n * @example\n * ```vue\n * <JLayout styletype=\"default\" :content-scroll=\"true\">\n * <template #header>\n * <JHeader logo-text=\"JWMS Portal\" />\n * </template>\n * <template #sidebar>\n * <JSidebarSimple :menu-items=\"menuItems\" />\n * </template>\n * <template #content>\n * <div>메인 콘텐츠</div>\n * </template>\n * </JLayout>\n * ```\n * \n * @example 기본 슬롯 사용\n * ```vue\n * <JLayout>\n * <div>기본 콘텐츠</div>\n * </JLayout>\n * ```\n */\n\ntype StyleType = 'default' | 'minimal'\n\nconst props = withDefaults(\n defineProps<{\n /** 레이아웃 스타일 타입 */\n styletype?: StyleType\n /** 콘텐츠 영역 스크롤 가능 여부 */\n contentScroll?: boolean\n /** 추가 CSS 클래스 */\n class?: string\n }>(),\n {\n styletype: 'default',\n contentScroll: true,\n }\n)\n\n// JLayout은 사이드바 상태를 직접 관리하지 않고, 슬롯으로 전달\n// Preset 컴포넌트(JLayoutAdvanced, JLayoutSimple)에서 상태 관리\n\n/**\n * 스타일 프리셋\n */\nconst STYLE_PRESETS: Record<StyleType, {\n containerClass: string\n contentClass: string\n}> = {\n default: {\n containerClass: 'flex flex-col h-screen w-full overflow-hidden',\n contentClass: 'flex flex-1 overflow-hidden',\n },\n minimal: {\n containerClass: 'flex flex-col h-screen w-full overflow-hidden',\n contentClass: 'flex flex-1 overflow-hidden',\n },\n}\n\nconst preset = computed(() => {\n return STYLE_PRESETS[props.styletype] ?? STYLE_PRESETS.default\n})\n\nconst contentClasses = computed(() => {\n return cn(\n preset.value.contentClass,\n !props.contentScroll && 'overflow-hidden'\n )\n})\n</script>\n\n<template>\n <div :class=\"cn(preset.containerClass, props.class)\">\n <!-- 헤더 슬롯 -->\n <slot name=\"header\" />\n\n <!-- 메인 컨텐츠 영역 -->\n <div :class=\"contentClasses\">\n <!-- 사이드바 슬롯 (사이드바가 보일 때만 border 표시) -->\n <slot name=\"sidebar\" />\n\n <!-- 콘텐츠 슬롯 -->\n <div class=\"flex-1 flex flex-col min-h-0\" :class=\"props.contentScroll ? 'overflow-auto' : 'overflow-hidden'\">\n <slot name=\"content\">\n <!-- 기본 슬롯도 지원 -->\n <slot />\n </slot>\n </div>\n </div>\n </div>\n</template>\n"],"names":["props","__props","STYLE_PRESETS","preset","computed","contentClasses","cn","_createElementBlock","_normalizeClass","_unref","_renderSlot","_ctx","_createElementVNode"],"mappings":";;;;;;;;;;AA0CA,UAAMA,IAAQC,GAqBRC,IAGD;AAAA,MACH,SAAS;AAAA,QACP,gBAAgB;AAAA,QAChB,cAAc;AAAA,MAAA;AAAA,MAEhB,SAAS;AAAA,QACP,gBAAgB;AAAA,QAChB,cAAc;AAAA,MAAA;AAAA,IAChB,GAGIC,IAASC,EAAS,MACfF,EAAcF,EAAM,SAAS,KAAKE,EAAc,OACxD,GAEKG,IAAiBD,EAAS,MACvBE;AAAA,MACLH,EAAO,MAAM;AAAA,MACb,CAACH,EAAM,iBAAiB;AAAA,IAAA,CAE3B;2BAICO,EAiBM,OAAA;AAAA,MAjBA,OAAKC,EAAEC,KAAGN,EAAA,MAAO,gBAAgBH,EAAM,KAAK,CAAA;AAAA,IAAA;MAEhDU,EAAsBC,EAAA,QAAA,QAAA;AAAA,MAGtBC,EAWM,OAAA;AAAA,QAXA,SAAOP,EAAA,KAAc;AAAA,MAAA;QAEzBK,EAAuBC,EAAA,QAAA,SAAA;AAAA,QAGvBC,EAKM,OAAA;AAAA,UALD,OAAKJ,EAAA,CAAC,gCAAuCR,EAAM,gBAAa,kBAAA,iBAAA,CAAA;AAAA,QAAA;UACnEU,EAGOC,yBAHP,MAGO;AAAA,YADLD,EAAQC,EAAA,QAAA,SAAA;AAAA,UAAA;;;;;;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),p=require("./JLayout.vue.cjs"),c=require("../organisms/JHeader.vue.cjs"),_=require("../organisms/JSidebar/JSidebar.vue.cjs"),v=require("../organisms/JPageContainer.vue.cjs"),g=e.defineComponent({__name:"JLayoutSimple",props:{styletype:{default:"default"},contentScroll:{type:Boolean,default:!0},class:{},menuItems:{default:()=>[]},activePath:{},storageKey:{}},emits:["menu-click"],setup(s,{emit:u}){const o=s,n=u,t=e.ref(!1),r=()=>{t.value=!t.value},i=(l,a)=>{n("menu-click",l,a)};return(l,a)=>(e.openBlock(),e.createBlock(p.default,e.normalizeProps(e.guardReactiveProps(o)),{header:e.withCtx(()=>[e.renderSlot(l.$slots,"header",{isSidebarCollapsed:t.value,onSidebarToggle:r},()=>[e.createVNode(c.default,{"logo-text":"JWMS Portal",styletype:o.styletype,"show-sidebar-toggle":!0,"is-sidebar-open":!t.value,onSidebarToggle:r},null,8,["styletype","is-sidebar-open"])])]),sidebar:e.withCtx(()=>[e.renderSlot(l.$slots,"sidebar",{isSidebarCollapsed:t.value},()=>[e.createVNode(_.default,{collapsed:t.value,"onUpdate:collapsed":a[0]||(a[0]=d=>t.value=d),items:o.menuItems,"active-path":o.activePath,"storage-key":o.storageKey,onMenuClick:i},null,8,["collapsed","items","active-path","storage-key"])])]),content:e.withCtx(()=>[e.renderSlot(l.$slots,"content",{},()=>[e.renderSlot(l.$slots,"default",{},()=>[e.createVNode(v.default,{title:"페이지 제목"},{default:e.withCtx(()=>[...a[1]||(a[1]=[e.createElementVNode("div",{class:"p-6"},[e.createElementVNode("p",{class:"text-muted-foreground"},"콘텐츠를 배치해주세요.")],-1)])]),_:1})])])]),_:3},16))}});exports.default=g;
|
|
2
2
|
//# sourceMappingURL=JLayoutSimple.vue.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JLayoutSimple.vue.cjs","sources":["../../../../src/components/templates/JLayoutSimple.vue"],"sourcesContent":["<script setup lang=\"ts\">\
|
|
1
|
+
{"version":3,"file":"JLayoutSimple.vue.cjs","sources":["../../../../src/components/templates/JLayoutSimple.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport JLayout from './JLayout.vue'\nimport JHeader from '@/components/organisms/JHeader.vue'\nimport JSidebar from '@/components/organisms/JSidebar/JSidebar.vue'\nimport JPageContainer from '@/components/organisms/JPageContainer.vue'\nimport type { SidebarMenuItem } from '@/types/sidebar.types'\n\n/**\n * JLayoutSimple - JSidebar + 일반 PageContainer 조합 템플릿\n *\n * @example\n * ```vue\n * <JLayoutSimple :menu-items=\"menuItems\" storage-key=\"my-app-favorites\">\n * <template #content>\n * <RouterView />\n * </template>\n * </JLayoutSimple>\n * ```\n */\n\nconst props = withDefaults(\n defineProps<{\n /** 레이아웃 스타일 타입 */\n styletype?: 'default' | 'minimal'\n /** 콘텐츠 영역 스크롤 가능 여부 */\n contentScroll?: boolean\n /** 추가 CSS 클래스 */\n class?: string\n /** 메뉴 아이템 목록 */\n menuItems?: SidebarMenuItem[]\n /** 현재 활성 경로 */\n activePath?: string\n /** 즐겨찾기 localStorage 키 */\n storageKey?: string\n }>(),\n {\n styletype: 'default',\n contentScroll: true,\n menuItems: () => [],\n }\n)\n\nconst emit = defineEmits<{\n 'menu-click': [item: SidebarMenuItem, event: MouseEvent]\n}>()\n\nconst isSidebarCollapsed = ref(false)\n\nconst handleSidebarToggle = () => {\n isSidebarCollapsed.value = !isSidebarCollapsed.value\n}\n\nconst handleMenuClick = (item: SidebarMenuItem, event: MouseEvent) => {\n emit('menu-click', item, event)\n}\n</script>\n\n<template>\n <JLayout v-bind=\"props\">\n <template #header>\n <slot name=\"header\" :is-sidebar-collapsed=\"isSidebarCollapsed\" :on-sidebar-toggle=\"handleSidebarToggle\">\n <JHeader\n logo-text=\"JWMS Portal\"\n :styletype=\"props.styletype\"\n :show-sidebar-toggle=\"true\"\n :is-sidebar-open=\"!isSidebarCollapsed\"\n @sidebar-toggle=\"handleSidebarToggle\"\n />\n </slot>\n </template>\n <template #sidebar>\n <slot name=\"sidebar\" :is-sidebar-collapsed=\"isSidebarCollapsed\">\n <JSidebar\n v-model:collapsed=\"isSidebarCollapsed\"\n :items=\"props.menuItems\"\n :active-path=\"props.activePath\"\n :storage-key=\"props.storageKey\"\n @menu-click=\"handleMenuClick\"\n />\n </slot>\n </template>\n <template #content>\n <slot name=\"content\">\n <slot>\n <!-- 기본 콘텐츠 예시 -->\n <JPageContainer title=\"페이지 제목\">\n <div class=\"p-6\">\n <p class=\"text-muted-foreground\">콘텐츠를 배치해주세요.</p>\n </div>\n </JPageContainer>\n </slot>\n </slot>\n </template>\n </JLayout>\n</template>\n"],"names":["props","__props","emit","__emit","isSidebarCollapsed","ref","handleSidebarToggle","handleMenuClick","item","event","_openBlock","_createBlock","JLayout","_renderSlot","_ctx","_createVNode","JHeader","JSidebar","$event","JPageContainer","_cache","_createElementVNode"],"mappings":"khBAqBA,MAAMA,EAAQC,EAsBRC,EAAOC,EAIPC,EAAqBC,EAAAA,IAAI,EAAK,EAE9BC,EAAsB,IAAM,CAChCF,EAAmB,MAAQ,CAACA,EAAmB,KACjD,EAEMG,EAAkB,CAACC,EAAuBC,IAAsB,CACpEP,EAAK,aAAcM,EAAMC,CAAK,CAChC,gBAIEC,EAAAA,UAAA,EAAAC,cAmCUC,EAAAA,8CAnCOZ,CAAK,CAAA,EAAA,CACT,iBACT,IAQO,CARPa,aAQOC,EAAA,OAAA,SAAA,CARc,mBAAsBV,EAAA,MAAqB,gBAAmBE,CAAA,EAAnF,IAQO,CAPLS,EAAAA,YAMEC,EAAAA,QAAA,CALA,YAAU,cACT,UAAWhB,EAAM,UACjB,sBAAqB,GACrB,mBAAkBI,EAAA,MAClB,gBAAgBE,CAAA,8CAIZ,kBACT,IAQO,CARPO,aAQOC,EAAA,OAAA,UAAA,CARe,mBAAsBV,EAAA,KAAA,EAA5C,IAQO,CAPLW,EAAAA,YAMEE,EAAAA,QAAA,CALQ,UAAWb,EAAA,0CAAAA,EAAkB,MAAAc,GACpC,MAAOlB,EAAM,UACb,cAAaA,EAAM,WACnB,cAAaA,EAAM,WACnB,YAAYO,CAAA,gEAIR,kBACT,IASO,CATPM,EAAAA,WASOC,sBATP,IASO,CARLD,EAAAA,WAOOC,sBAPP,IAOO,CALLC,EAAAA,YAIiBI,EAAAA,QAAA,CAJD,MAAM,UAAQ,mBAC5B,IAEM,CAAA,GAAAC,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAA,CAFNC,EAAAA,mBAEM,MAAA,CAFD,MAAM,OAAK,CACdA,EAAAA,mBAAiD,IAAA,CAA9C,MAAM,uBAAA,EAAwB,cAAY,CAAA"}
|
|
@@ -1,51 +1,57 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
const
|
|
1
|
+
import { defineComponent as f, ref as g, createBlock as y, openBlock as v, normalizeProps as b, guardReactiveProps as S, withCtx as l, renderSlot as s, createVNode as r, createElementVNode as n } from "vue";
|
|
2
|
+
import k from "./JLayout.vue.js";
|
|
3
|
+
import _ from "../organisms/JHeader.vue.js";
|
|
4
|
+
import $ from "../organisms/JSidebar/JSidebar.vue.js";
|
|
5
|
+
import h from "../organisms/JPageContainer.vue.js";
|
|
6
|
+
const w = /* @__PURE__ */ f({
|
|
7
7
|
__name: "JLayoutSimple",
|
|
8
8
|
props: {
|
|
9
9
|
styletype: { default: "default" },
|
|
10
10
|
contentScroll: { type: Boolean, default: !0 },
|
|
11
11
|
class: {},
|
|
12
12
|
menuItems: { default: () => [] },
|
|
13
|
-
|
|
13
|
+
activePath: {},
|
|
14
|
+
storageKey: {}
|
|
14
15
|
},
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
emits: ["menu-click"],
|
|
17
|
+
setup(d, { emit: p }) {
|
|
18
|
+
const a = d, m = p, e = g(!1), i = () => {
|
|
17
19
|
e.value = !e.value;
|
|
20
|
+
}, u = (t, o) => {
|
|
21
|
+
m("menu-click", t, o);
|
|
18
22
|
};
|
|
19
|
-
return (
|
|
20
|
-
header:
|
|
21
|
-
|
|
22
|
-
|
|
23
|
+
return (t, o) => (v(), y(k, b(S(a)), {
|
|
24
|
+
header: l(() => [
|
|
25
|
+
s(t.$slots, "header", {
|
|
26
|
+
isSidebarCollapsed: e.value,
|
|
23
27
|
onSidebarToggle: i
|
|
24
28
|
}, () => [
|
|
25
|
-
r(
|
|
29
|
+
r(_, {
|
|
26
30
|
"logo-text": "JWMS Portal",
|
|
27
|
-
styletype:
|
|
31
|
+
styletype: a.styletype,
|
|
28
32
|
"show-sidebar-toggle": !0,
|
|
29
|
-
"is-sidebar-open": e.value,
|
|
33
|
+
"is-sidebar-open": !e.value,
|
|
30
34
|
onSidebarToggle: i
|
|
31
35
|
}, null, 8, ["styletype", "is-sidebar-open"])
|
|
32
36
|
])
|
|
33
37
|
]),
|
|
34
|
-
sidebar:
|
|
35
|
-
|
|
36
|
-
r(
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
"
|
|
41
|
-
|
|
38
|
+
sidebar: l(() => [
|
|
39
|
+
s(t.$slots, "sidebar", { isSidebarCollapsed: e.value }, () => [
|
|
40
|
+
r($, {
|
|
41
|
+
collapsed: e.value,
|
|
42
|
+
"onUpdate:collapsed": o[0] || (o[0] = (c) => e.value = c),
|
|
43
|
+
items: a.menuItems,
|
|
44
|
+
"active-path": a.activePath,
|
|
45
|
+
"storage-key": a.storageKey,
|
|
46
|
+
onMenuClick: u
|
|
47
|
+
}, null, 8, ["collapsed", "items", "active-path", "storage-key"])
|
|
42
48
|
])
|
|
43
49
|
]),
|
|
44
|
-
content:
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
r(
|
|
48
|
-
default:
|
|
50
|
+
content: l(() => [
|
|
51
|
+
s(t.$slots, "content", {}, () => [
|
|
52
|
+
s(t.$slots, "default", {}, () => [
|
|
53
|
+
r(h, { title: "페이지 제목" }, {
|
|
54
|
+
default: l(() => [...o[1] || (o[1] = [
|
|
49
55
|
n("div", { class: "p-6" }, [
|
|
50
56
|
n("p", { class: "text-muted-foreground" }, "콘텐츠를 배치해주세요.")
|
|
51
57
|
], -1)
|
|
@@ -60,6 +66,6 @@ const O = /* @__PURE__ */ m({
|
|
|
60
66
|
}
|
|
61
67
|
});
|
|
62
68
|
export {
|
|
63
|
-
|
|
69
|
+
w as default
|
|
64
70
|
};
|
|
65
71
|
//# sourceMappingURL=JLayoutSimple.vue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JLayoutSimple.vue.js","sources":["../../../../src/components/templates/JLayoutSimple.vue"],"sourcesContent":["<script setup lang=\"ts\">\
|
|
1
|
+
{"version":3,"file":"JLayoutSimple.vue.js","sources":["../../../../src/components/templates/JLayoutSimple.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport JLayout from './JLayout.vue'\nimport JHeader from '@/components/organisms/JHeader.vue'\nimport JSidebar from '@/components/organisms/JSidebar/JSidebar.vue'\nimport JPageContainer from '@/components/organisms/JPageContainer.vue'\nimport type { SidebarMenuItem } from '@/types/sidebar.types'\n\n/**\n * JLayoutSimple - JSidebar + 일반 PageContainer 조합 템플릿\n *\n * @example\n * ```vue\n * <JLayoutSimple :menu-items=\"menuItems\" storage-key=\"my-app-favorites\">\n * <template #content>\n * <RouterView />\n * </template>\n * </JLayoutSimple>\n * ```\n */\n\nconst props = withDefaults(\n defineProps<{\n /** 레이아웃 스타일 타입 */\n styletype?: 'default' | 'minimal'\n /** 콘텐츠 영역 스크롤 가능 여부 */\n contentScroll?: boolean\n /** 추가 CSS 클래스 */\n class?: string\n /** 메뉴 아이템 목록 */\n menuItems?: SidebarMenuItem[]\n /** 현재 활성 경로 */\n activePath?: string\n /** 즐겨찾기 localStorage 키 */\n storageKey?: string\n }>(),\n {\n styletype: 'default',\n contentScroll: true,\n menuItems: () => [],\n }\n)\n\nconst emit = defineEmits<{\n 'menu-click': [item: SidebarMenuItem, event: MouseEvent]\n}>()\n\nconst isSidebarCollapsed = ref(false)\n\nconst handleSidebarToggle = () => {\n isSidebarCollapsed.value = !isSidebarCollapsed.value\n}\n\nconst handleMenuClick = (item: SidebarMenuItem, event: MouseEvent) => {\n emit('menu-click', item, event)\n}\n</script>\n\n<template>\n <JLayout v-bind=\"props\">\n <template #header>\n <slot name=\"header\" :is-sidebar-collapsed=\"isSidebarCollapsed\" :on-sidebar-toggle=\"handleSidebarToggle\">\n <JHeader\n logo-text=\"JWMS Portal\"\n :styletype=\"props.styletype\"\n :show-sidebar-toggle=\"true\"\n :is-sidebar-open=\"!isSidebarCollapsed\"\n @sidebar-toggle=\"handleSidebarToggle\"\n />\n </slot>\n </template>\n <template #sidebar>\n <slot name=\"sidebar\" :is-sidebar-collapsed=\"isSidebarCollapsed\">\n <JSidebar\n v-model:collapsed=\"isSidebarCollapsed\"\n :items=\"props.menuItems\"\n :active-path=\"props.activePath\"\n :storage-key=\"props.storageKey\"\n @menu-click=\"handleMenuClick\"\n />\n </slot>\n </template>\n <template #content>\n <slot name=\"content\">\n <slot>\n <!-- 기본 콘텐츠 예시 -->\n <JPageContainer title=\"페이지 제목\">\n <div class=\"p-6\">\n <p class=\"text-muted-foreground\">콘텐츠를 배치해주세요.</p>\n </div>\n </JPageContainer>\n </slot>\n </slot>\n </template>\n </JLayout>\n</template>\n"],"names":["props","__props","emit","__emit","isSidebarCollapsed","ref","handleSidebarToggle","handleMenuClick","item","event","_openBlock","_createBlock","JLayout","_renderSlot","_ctx","_createVNode","JHeader","JSidebar","$event","JPageContainer","_cache","_createElementVNode"],"mappings":";;;;;;;;;;;;;;;;;AAqBA,UAAMA,IAAQC,GAsBRC,IAAOC,GAIPC,IAAqBC,EAAI,EAAK,GAE9BC,IAAsB,MAAM;AAChC,MAAAF,EAAmB,QAAQ,CAACA,EAAmB;AAAA,IACjD,GAEMG,IAAkB,CAACC,GAAuBC,MAAsB;AACpE,MAAAP,EAAK,cAAcM,GAAMC,CAAK;AAAA,IAChC;sBAIEC,EAAA,GAAAC,EAmCUC,OAnCOZ,CAAK,CAAA,GAAA;AAAA,MACT,UACT,MAQO;AAAA,QARPa,EAQOC,EAAA,QAAA,UAAA;AAAA,UARc,oBAAsBV,EAAA;AAAA,UAAqB,iBAAmBE;AAAA,QAAA,GAAnF,MAQO;AAAA,UAPLS,EAMEC,GAAA;AAAA,YALA,aAAU;AAAA,YACT,WAAWhB,EAAM;AAAA,YACjB,uBAAqB;AAAA,YACrB,oBAAkBI,EAAA;AAAA,YAClB,iBAAgBE;AAAA,UAAA;;;MAIZ,WACT,MAQO;AAAA,QARPO,EAQOC,EAAA,QAAA,WAAA,EARe,oBAAsBV,EAAA,MAAA,GAA5C,MAQO;AAAA,UAPLW,EAMEE,GAAA;AAAA,YALQ,WAAWb,EAAA;AAAA,yDAAAA,EAAkB,QAAAc;AAAA,YACpC,OAAOlB,EAAM;AAAA,YACb,eAAaA,EAAM;AAAA,YACnB,eAAaA,EAAM;AAAA,YACnB,aAAYO;AAAA,UAAA;;;MAIR,WACT,MASO;AAAA,QATPM,EASOC,yBATP,MASO;AAAA,UARLD,EAOOC,yBAPP,MAOO;AAAA,YALLC,EAIiBI,GAAA,EAJD,OAAM,YAAQ;AAAA,yBAC5B,MAEM,CAAA,GAAAC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA;AAAA,gBAFNC,EAEM,OAAA,EAFD,OAAM,SAAK;AAAA,kBACdA,EAAiD,KAAA,EAA9C,OAAM,wBAAA,GAAwB,cAAY;AAAA,gBAAA;;;;;;;;;;;"}
|
package/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
require('./assets/styles/j-components.css');
|
|
2
2
|
require('./assets/styles/themes.css');
|
|
3
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});;/* empty css */;/* empty css */;/* empty css */;/* empty css */const e=require("./components/atoms/JButton.vue.cjs"),t=require("./components/atoms/JInput.vue.cjs"),u=require("./components/atoms/JTextarea.vue.cjs"),r=require("./components/atoms/JCheckbox.vue.cjs"),_=require("./components/atoms/JCombo.vue.cjs"),a=require("./components/atoms/JSearchCombo.vue.cjs"),i=require("./components/atoms/JRadio.vue.cjs"),p=require("./components/atoms/JSwitch.vue.cjs"),s=require("./components/atoms/JDatepicker.vue.cjs"),n=require("./components/atoms/JDivider.vue.cjs"),l=require("./components/atoms/JEditor.vue.cjs"),o=require("./components/atoms/JLink.vue.cjs"),c=require("./components/atoms/JImage.vue.cjs"),J=require("./components/atoms/JBadge.vue.cjs"),d=require("./components/atoms/JProgress.vue.cjs");;/* empty css */const v=require("./components/atoms/JSpinner.vue.cjs"),q=require("./components/atoms/JAvatar.vue.cjs"),f=require("./components/atoms/JKbd.vue.cjs"),g=require("./components/atoms/JTooltip.vue.cjs"),y=require("./components/atoms/JIcon.vue.cjs"),
|
|
3
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});;/* empty css */;/* empty css */;/* empty css */;/* empty css */const e=require("./components/atoms/JButton.vue.cjs"),t=require("./components/atoms/JInput.vue.cjs"),u=require("./components/atoms/JTextarea.vue.cjs"),r=require("./components/atoms/JCheckbox.vue.cjs"),_=require("./components/atoms/JCombo.vue.cjs"),a=require("./components/atoms/JSearchCombo.vue.cjs"),i=require("./components/atoms/JRadio.vue.cjs"),p=require("./components/atoms/JSwitch.vue.cjs"),s=require("./components/atoms/JDatepicker.vue.cjs"),n=require("./components/atoms/JDivider.vue.cjs"),l=require("./components/atoms/JEditor.vue.cjs"),o=require("./components/atoms/JLink.vue.cjs"),c=require("./components/atoms/JImage.vue.cjs"),J=require("./components/atoms/JBadge.vue.cjs"),d=require("./components/atoms/JProgress.vue.cjs");;/* empty css */const v=require("./components/atoms/JSpinner.vue.cjs"),q=require("./components/atoms/JAvatar.vue.cjs"),f=require("./components/atoms/JKbd.vue.cjs"),g=require("./components/atoms/JTooltip.vue.cjs"),y=require("./components/atoms/JIcon.vue.cjs"),b=require("./components/atoms/JLabel.vue.cjs"),m=require("./components/atoms/JPopover.vue.cjs"),S=require("./components/atoms/JPreview.vue.cjs"),T=require("./components/atoms/JGrid.vue.cjs"),C=require("./components/atoms/JSplitter.vue.cjs"),P=require("./components/atoms/JSectionTitle.vue.cjs"),h=require("vue-sonner"),A=require("./components/atoms/JToast.vue.cjs"),x=require("./components/molecules/JFormField.vue.cjs"),B=require("./components/molecules/JGroupCombo.vue.cjs"),F=require("./components/molecules/JTabs.vue.cjs"),L=require("./components/molecules/JSearchAddr.vue.cjs"),M=require("./components/molecules/JContextMenu.vue.cjs"),D=require("./components/molecules/JCard.vue.cjs"),E=require("./components/molecules/JAlert.vue.cjs"),k=require("./components/molecules/JAccordion.vue.cjs"),G=require("./components/molecules/JTitlebar.vue.cjs"),I=require("./components/molecules/JButtonGroup.vue.cjs"),w=require("./components/molecules/JBreadcrumb.vue.cjs"),j=require("./components/molecules/JEmptyState.vue.cjs"),H=require("./components/organisms/JDynamicTabs.vue.cjs"),K=require("./components/organisms/JModal.vue.cjs"),O=require("./components/organisms/JFormModal.vue.cjs"),R=require("./components/organisms/JDynamicForm.vue.cjs"),z=require("./components/organisms/JSearchPanel.vue.cjs"),N=require("./components/organisms/JFilterBar.vue.cjs"),Q=require("./components/organisms/JHeader.vue.cjs"),U=require("./components/organisms/JSidebar/JSidebar.vue.cjs"),V=require("./components/organisms/JSidebarSimple.vue.cjs"),W=require("./components/organisms/JSidebarAdvanced.vue.cjs"),X=require("./components/organisms/JPageContainer.vue.cjs"),Y=require("./components/organisms/JTree.vue.cjs"),Z=require("./components/organisms/JShuttle.vue.cjs"),$=require("./components/templates/JLayout.vue.cjs"),ee=require("./components/templates/JLayoutSimple.vue.cjs"),te=require("./components/templates/JLayoutAdvanced.vue.cjs"),ue=require("./components/examples/ExampleCrudPage.vue.cjs"),re=require("./components/examples/ExampleTabMappingPage.vue.cjs");exports.JButton=e.default;exports.JInput=t.default;exports.JTextarea=u.default;exports.JCheckbox=r.default;exports.JCombo=_.default;exports.JSearchCombo=a.default;exports.JRadio=i.default;exports.JSwitch=p.default;exports.JDatepicker=s.default;exports.JDivider=n.default;exports.JEditor=l.default;exports.JLink=o.default;exports.JImage=c.default;exports.JBadge=J.default;exports.JProgress=d.default;exports.JSpinner=v.default;exports.JAvatar=q.default;exports.JKbd=f.default;exports.JTooltip=g.default;exports.JIcon=y.default;exports.JLabel=b.default;exports.JPopover=m.default;exports.JPreview=S.default;exports.JGrid=T.default;exports.JSplitter=C.default;exports.JSectionTitle=P.default;Object.defineProperty(exports,"JToast",{enumerable:!0,get:()=>h.toast});exports.JToaster=A.default;exports.JFormField=x.default;exports.JGroupCombo=B.default;exports.JTabs=F.default;exports.JSearchAddr=L.default;exports.JContextMenu=M.default;exports.JCard=D.default;exports.JAlert=E.default;exports.JAccordion=k.default;exports.JTitlebar=G.default;exports.JButtonGroup=I.default;exports.JBreadcrumb=w.default;exports.JEmptyState=j.default;exports.JDynamicTabs=H.default;exports.JModal=K.default;exports.JFormModal=O.default;exports.JDynamicForm=R.default;exports.JSearchPanel=z.default;exports.JFilterBar=N.default;exports.JHeader=Q.default;exports.JSidebar=U.default;exports.JSidebarSimple=V.default;exports.JSidebarAdvanced=W.default;exports.JPageContainer=X.default;exports.JTree=Y.default;exports.JShuttle=Z.default;exports.JLayout=$.default;exports.JLayoutSimple=ee.default;exports.JLayoutAdvanced=te.default;exports.ExampleCrudPage=ue.default;exports.ExampleTabMappingPage=re.default;
|
|
4
4
|
//# sourceMappingURL=index.cjs.map
|
package/index.js
CHANGED
|
@@ -52,19 +52,20 @@ import { default as Re } from "./components/organisms/JDynamicForm.vue.js";
|
|
|
52
52
|
import { default as qe } from "./components/organisms/JSearchPanel.vue.js";
|
|
53
53
|
import { default as Ne } from "./components/organisms/JFilterBar.vue.js";
|
|
54
54
|
import { default as Qe } from "./components/organisms/JHeader.vue.js";
|
|
55
|
-
import { default as Ve } from "./components/organisms/
|
|
56
|
-
import { default as Xe } from "./components/organisms/
|
|
57
|
-
import { default as Ze } from "./components/organisms/
|
|
58
|
-
import { default as $e } from "./components/organisms/
|
|
59
|
-
import { default as aa } from "./components/organisms/
|
|
60
|
-
import { default as oa } from "./components/
|
|
61
|
-
import { default as fa } from "./components/templates/
|
|
62
|
-
import { default as ma } from "./components/templates/
|
|
63
|
-
import { default as la } from "./components/
|
|
64
|
-
import { default as sa } from "./components/examples/
|
|
55
|
+
import { default as Ve } from "./components/organisms/JSidebar/JSidebar.vue.js";
|
|
56
|
+
import { default as Xe } from "./components/organisms/JSidebarSimple.vue.js";
|
|
57
|
+
import { default as Ze } from "./components/organisms/JSidebarAdvanced.vue.js";
|
|
58
|
+
import { default as $e } from "./components/organisms/JPageContainer.vue.js";
|
|
59
|
+
import { default as aa } from "./components/organisms/JTree.vue.js";
|
|
60
|
+
import { default as oa } from "./components/organisms/JShuttle.vue.js";
|
|
61
|
+
import { default as fa } from "./components/templates/JLayout.vue.js";
|
|
62
|
+
import { default as ma } from "./components/templates/JLayoutSimple.vue.js";
|
|
63
|
+
import { default as la } from "./components/templates/JLayoutAdvanced.vue.js";
|
|
64
|
+
import { default as sa } from "./components/examples/ExampleCrudPage.vue.js";
|
|
65
|
+
import { default as Ja } from "./components/examples/ExampleTabMappingPage.vue.js";
|
|
65
66
|
export {
|
|
66
|
-
|
|
67
|
-
|
|
67
|
+
sa as ExampleCrudPage,
|
|
68
|
+
Ja as ExampleTabMappingPage,
|
|
68
69
|
he as JAccordion,
|
|
69
70
|
ge as JAlert,
|
|
70
71
|
R as JAvatar,
|
|
@@ -93,12 +94,12 @@ export {
|
|
|
93
94
|
l as JInput,
|
|
94
95
|
q as JKbd,
|
|
95
96
|
V as JLabel,
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
97
|
+
fa as JLayout,
|
|
98
|
+
la as JLayoutAdvanced,
|
|
99
|
+
ma as JLayoutSimple,
|
|
99
100
|
L as JLink,
|
|
100
101
|
Ie as JModal,
|
|
101
|
-
|
|
102
|
+
$e as JPageContainer,
|
|
102
103
|
X as JPopover,
|
|
103
104
|
Z as JPreview,
|
|
104
105
|
I as JProgress,
|
|
@@ -107,9 +108,10 @@ export {
|
|
|
107
108
|
b as JSearchCombo,
|
|
108
109
|
qe as JSearchPanel,
|
|
109
110
|
oe as JSectionTitle,
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
111
|
+
oa as JShuttle,
|
|
112
|
+
Ve as JSidebar,
|
|
113
|
+
Ze as JSidebarAdvanced,
|
|
114
|
+
Xe as JSidebarSimple,
|
|
113
115
|
H as JSpinner,
|
|
114
116
|
ae as JSplitter,
|
|
115
117
|
g as JSwitch,
|
|
@@ -119,6 +121,6 @@ export {
|
|
|
119
121
|
fe as JToast,
|
|
120
122
|
me as JToaster,
|
|
121
123
|
N as JTooltip,
|
|
122
|
-
|
|
124
|
+
aa as JTree
|
|
123
125
|
};
|
|
124
126
|
//# sourceMappingURL=index.js.map
|