{"version":3,"file":"ExampleCrudPage.vue.cjs","sources":["../../../../src/components/examples/ExampleCrudPage.vue"],"sourcesContent":["<template>\n  <JPageContainer title=\"고객사 관리\" icon=\"building\" description=\"고객사 정보를 조회하고 관리합니다\" :show-help=\"true\" :content-scroll=\"false\" @help=\"onHelp\">\n\n      <!-- ==================== 필터바 ==================== -->\n      <JFilterBar\n        v-model:collapsed=\"filterCollapsed\"\n        v-model:filter-values=\"filterValues\"\n        :filter-display=\"filterDisplay\"\n        :collapsible=\"true\"\n        title=\"고객사 목록\"\n      >\n        <!-- 액션 버튼 -->\n        <template #actions>\n          <JButton size=\"xs\" variant=\"outline\" @click=\"onReset\">초기화</JButton>\n          <JButton size=\"xs\" styletype=\"primary\" @click=\"onSearch\">조회</JButton>\n          <JButton size=\"xs\" styletype=\"primary\" @click=\"onNew\">신규</JButton>\n        </template>\n\n        <!-- 필터 필드 - 다중 열 배치 -->\n        <template #filters>\n          <div class=\"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-2\">\n            <JFormField\n              v-model=\"filterValues.isActive\"\n              type=\"combo\"\n              label=\"활성여부\"\n              :options=\"activeOptions\"\n              orientation=\"horizontal\"\n              label-width=\"30%\"\n            />\n            <JFormField\nv-model=\"filterValues.keyword\" type=\"input\" label=\"검색어\"\n              orientation=\"horizontal\"\n              label-width=\"30%\" />\n          </div>\n        </template>\n      </JFilterBar>\n\n      <!-- ==================== 그리드 + 상세 영역 (Resizable) ==================== -->\n      <JSplitter\n        direction=\"horizontal\"\n        :default-size=\"60\"\n        :min-size=\"30\"\n        :second-min-size=\"20\"\n        :second-max-size=\"60\"\n        class=\"flex-1\"\n      >\n        <!-- 좌측: 그리드 -->\n        <template #left>\n          <div class=\"h-full overflow-auto bg-background\">\n            <JGrid\n              ref=\"gridRef\"\n              :column-defs=\"columnDefs\"\n              :row-data=\"rowData\"\n              :action-buttons=\"actionButtons\"\n              :enable-grouping=\"true\"\n              :enable-pivot=\"true\"\n              :enable-columns-tool-panel=\"true\"\n              row-group-panel-show=\"always\"\n              pivot-panel-show=\"always\"\n              :group-default-expanded=\"1\"\n              :compact-footer=\"true\"\n              @row-clicked=\"onRowClicked\"\n            />\n          </div>\n        </template>\n\n        <!-- 우측: 상세 영역 -->\n        <template #right>\n          <div class=\"h-full overflow-y-auto bg-muted/30\">\n            <!-- 선택된 항목이 없을 때: EmptyState -->\n            <JEmptyState\n              v-if=\"!detail.code && !isNew\"\n              variant=\"simple\"\n              icon=\"mousePointerClick\"\n              title=\"항목을 선택하거나 신규 버튼을 클릭하세요\"\n              class=\"h-full\"\n            />\n            \n            <!-- 선택된 항목이 있거나 신규일 때: 상세 폼 -->\n            <JCard \n              v-else\n              class=\"h-full\" \n              :title=\"isNew ? '신규 등록' : '상세 정보'\"\n              variant=\"elevated\"\n            >\n              <!-- actions 슬롯 (header 우측 버튼) -->\n              <template #actions>\n                <JButton size=\"xs\" styletype=\"primary\" @click=\"onSave\">저장</JButton>\n                <JButton v-if=\"!isNew\" size=\"xs\" variant=\"destructive\" @click=\"onDelete\">삭제</JButton>\n                <JButton size=\"xs\" variant=\"outline\" @click=\"onReset\">취소</JButton>\n              </template>\n\n            <!-- 2열 그리드: 코드, 이름 -->\n            <div class=\"grid grid-cols-1 md:grid-cols-2 gap-2\">\n              <JFormField\n                v-model=\"detail.code\"\n                type=\"input\"\n                label=\"코드\"\n                :readonly=\"!isNew\"\n                placeholder=\"고객사 코드\"\n              />\n              <JFormField\n                v-model=\"detail.name\"\n                type=\"input\"\n                label=\"이름\"\n                placeholder=\"고객사 이름\"\n              />\n            </div>\n\n            <!-- 2열 그리드: 분류, 활성여부 -->\n            <div class=\"grid grid-cols-1 md:grid-cols-2 gap-2 mt-2\">\n              <JFormField\n                v-model=\"detail.category\"\n                type=\"combo\"\n                label=\"분류\"\n                :options=\"categoryOptions\"\n              />\n              <JFormField\n                v-model=\"detail.isActive\"\n                type=\"checkbox\"\n                label=\"활성여부\"\n                inline-label=\"활성\"\n              />\n            </div>\n            <div class=\"grid grid-cols-1 gap-2 mt-2\">\n              <!-- 전체 너비: 비고 -->\n              <JFormField v-model=\"detail.remark\" type=\"textarea\" label=\"비고\" placeholder=\"비고\" />\n\n            </div>\n\n            </JCard>\n          </div>\n        </template>\n      </JSplitter>\n  </JPageContainer> \n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport { JCard, JEmptyState } from '@/components/molecules'\nimport { JFilterBar } from '@/components/organisms'\nimport { JGrid, JButton, JSplitter, type ActionButton } from '@/components/atoms'\nimport { JFormField } from '@/components/molecules'\nimport JPageContainer from '../organisms/JPageContainer.vue'\n\n// ==================== 필터 상태 ====================\nconst filterCollapsed = ref(false)\n\n// 필터 값 (v-model:filterValues)\nconst filterValues = ref({\n  isActive: '',\n  keyword: '',\n})\n\n// 필터 표시 설정 (배지에 표시될 라벨 및 값 변환 함수)\nconst filterDisplay = {\n  isActive: {\n    label: '활성여부',\n    displayValue: (val: unknown) => {\n      if (val === 'Y') return 'Y:활성'\n      if (val === 'N') return 'N:비활성'\n      return ''\n    },\n  },\n  keyword: {\n    label: '검색어',\n  },\n}\n\n// ==================== 옵션 데이터 ====================\nconst activeOptions = [\n  { value: 'Y', label: 'Y:활성' },\n  { value: 'N', label: 'N:비활성' },\n]\n\nconst categoryOptions = [\n  { value: 'A', label: 'A등급' },\n  { value: 'B', label: 'B등급' },\n  { value: 'C', label: 'C등급' },\n]\n\n// ==================== 그리드 설정 ====================\nconst gridRef = ref()\n\n// Mock 데이터 - 실제 백엔드 응답 구조\nconst rowData = ref([\n  { code: 'C001', name: '제이솔루션', category: 'A', isActive: 'Y', remark: '주력 고객사' },\n  { code: 'C002', name: 'ABC물류', category: 'B', isActive: 'Y', remark: '' },\n  { code: 'C003', name: 'XYZ유통', category: 'A', isActive: 'N', remark: '비활성' },\n  { code: 'C004', name: '대한물류', category: 'B', isActive: 'Y', remark: '' },\n  { code: 'C005', name: '글로벌이커머스', category: 'A', isActive: 'Y', remark: '신규 고객사' },\n])\n\nconst columnDefs = ref([\n  { \n    field: 'code', \n    headerName: '코드', \n    width: 120,\n    enableValue: true,  // 집계 가능 (count)\n  },\n  { \n    field: 'name', \n    headerName: '이름', \n    width: 200,\n    enableValue: true,  // 집계 가능 (count)\n  },\n  { \n    field: 'category', \n    headerName: '분류', \n    width: 100,\n    enableRowGroup: true,  // Row Group으로 사용 가능\n    enablePivot: true,     // Pivot Column으로 사용 가능\n  },\n  {\n    field: 'isActive',\n    headerName: '활성',\n    width: 100,\n    cellRenderer: (params: any) => (params.value === 'Y' ? '✓' : ''),\n    enableRowGroup: true,  // Row Group으로 사용 가능\n    enablePivot: true,     // Pivot Column으로 사용 가능\n  },\n  { \n    field: 'remark', \n    headerName: '비고', \n    flex: 1,\n    enableValue: true,  // 집계 가능 (count)\n  },\n])\n\n// 행별 액션 버튼\nconst actionButtons: ActionButton[] = [\n  {\n    icon: 'pencil',\n    label: '수정',\n    tooltip: '편집',\n    onClick: (rowData: any) => {\n      isNew.value = false\n      detail.value = {\n        code: rowData.code,\n        name: rowData.name,\n        category: rowData.category,\n        isActive: rowData.isActive,\n        remark: rowData.remark,\n      }\n    },\n  },\n  {\n    icon: 'trash2',\n    label: '삭제',\n    tooltip: '삭제',\n    styletype: 'danger',\n    onClick: (rowData: any) => {\n      if (confirm(`${rowData.name}을(를) 삭제하시겠습니까?`)) {\n        console.log('삭제:', rowData.code)\n        alert(`삭제되었습니다: ${rowData.name}`)\n      }\n    },\n  },\n]\n\n// ==================== 상세 영역 상태 ====================\nconst isNew = ref(false)\nconst detail = ref({\n  code: '',\n  name: '',\n  category: '',\n  isActive: 'Y',\n  remark: '',\n})\n\n// ==================== 이벤트 핸들러 ====================\n\n/**\n * 그리드 행 클릭 핸들러\n */\nfunction onRowClicked(event: any) {\n  isNew.value = false\n  const rowData = event.data\n\n  // 선택된 행 데이터를 상세 영역에 바인딩\n  detail.value = {\n    code: rowData.code,\n    name: rowData.name,\n    category: rowData.category,\n    isActive: rowData.isActive,\n    remark: rowData.remark,\n  }\n}\n\n/**\n * 신규 버튼 클릭\n */\nfunction onNew() {\n  isNew.value = true\n  // 상세 영역 초기화\n  detail.value = {\n    code: '',\n    name: '',\n    category: '',\n    isActive: 'Y',\n    remark: '',\n  }\n}\n\n/**\n * 저장 버튼 클릭\n */\nfunction onSave() {\n  console.log('저장:', detail.value)\n  // TODO: 실제 구현 시 API 호출로 대체\n  // if (isNew.value) {\n  //   await api.createCustomer(detail.value)\n  // } else {\n  //   await api.updateCustomer(detail.value.code, detail.value)\n  // }\n  // 성공 시 그리드 데이터 갱신\n  alert(`저장되었습니다: ${detail.value.name}`)\n}\n\n/**\n * 삭제 버튼 클릭\n */\nfunction onDelete() {\n  if (confirm(`${detail.value.name}을(를) 삭제하시겠습니까?`)) {\n    console.log('삭제:', detail.value.code)\n    // TODO: 실제 구현 시 API 호출로 대체\n    // await api.deleteCustomer(detail.value.code)\n    // 성공 시 그리드에서 해당 행 제거\n    alert(`삭제되었습니다: ${detail.value.name}`)\n  }\n}\n\n/**\n * 초기화 버튼 클릭\n */\nfunction onReset() {\n  filterValues.value = {\n    isActive: '',\n    keyword: '',\n  }\n  console.log('필터 초기화')\n}\n\n/**\n * 조회 버튼 클릭\n */\nfunction onSearch() {\n  console.log('조회 조건:', filterValues.value)\n  // TODO: 실제 구현 시 API 호출로 대체\n  // const result = await api.searchCustomers(filterValues.value)\n  // rowData.value = result.data\n}\n\n/**\n * 도움말 아이콘 클릭\n */\nfunction onHelp() {\n  alert('고객사 관리 페이지 도움말')\n}\n\ndefineExpose({ gridRef })\n</script>\n"],"names":["filterCollapsed","ref","filterValues","filterDisplay","val","activeOptions","categoryOptions","gridRef","rowData","columnDefs","params","actionButtons","isNew","detail","onRowClicked","event","onNew","onSave","onDelete","onReset","onSearch","onHelp","__expose","_createBlock","JPageContainer","_createVNode","_unref","JFilterBar","$event","JButton","_cache","_createElementVNode","_hoisted_1","JFormField","JSplitter","_hoisted_2","JGrid","_hoisted_3","JEmptyState","JCard","_hoisted_4","_hoisted_5","_hoisted_6"],"mappings":"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"}