- 에스크로 표시가 영구히 렌더되지 않던 문제: is_escrow 가 DB·모델·부분취소 차단 로직에는 있으나 OrderPaymentResource 가 내보내지 않아, 이 값을 참조하는 주문 상세(관리자·구매자)의 에스크로 행이 항상 false 로 평가됐다. Resource 에 노출한다. - 결제수단을 바꿔도 이전 수단의 입력이 주문에 실리던 문제: 결제수단 버튼이 _local.paymentMethod 만 바꾸고 슬롯이 소유한 확장 페이로드·환불계좌는 비우지 않았다. 확장 슬롯과 환불계좌 블록은 결제수단 조건부로 언마운트되지만 _local 값은 남으므로, 무통장에서 현금영수증·환불계좌를 입력한 뒤 카드로 전환하면 그 값이 주문 생성 요청에 그대로 실렸다. 프론트는 결제수단 전환 시 슬롯 소유 상태를 초기화하고, 서버는 환불계좌가 쓰이지 않는 결제수단이면 저장하지 않도록 게이팅한다(현금영수증은 이미 dbank 게이트 보유). - Modal 이 받지 않는 size prop 을 쓰던 4곳을 width 로 교체(무시되어 의도한 폭이 나오지 않았다). 토스 에러 모달의 setState target 을 params 안으로 옮긴다. - 레이아웃 편집기 팔레트에서 체크박스를 넣으면 라벨 없이 네모 칸만 놓이던 문제: Checkbox 는 label prop 을 렌더하지 않으므로 Label 래핑 + Span 텍스트로 바꾸고, Accordion 이 Label 을 받도록 중첩 스펙을 맞춘다.
475 lines
8.3 KiB
JSON
475 lines
8.3 KiB
JSON
{
|
|
"comment": "draggable = 편집기에서 드래그/팔레트 배치 가능한 컴포넌트 목록. containers.accepts = 해당 컨테이너가 자식으로 받을 수 있는 컴포넌트 이름 목록. Img/Hr/Icon 등 leaf 는 accepts:[] 로 자식 거부. composite 는 통째 이동만 허용(자체는 draggable 에 포함되나 내부 accepts 는 [] 로 비편집).",
|
|
"draggable": [
|
|
"Div",
|
|
"Span",
|
|
"P",
|
|
"H1",
|
|
"H2",
|
|
"H3",
|
|
"H4",
|
|
"A",
|
|
"Button",
|
|
"Img",
|
|
"Icon",
|
|
"Hr",
|
|
"Ul",
|
|
"Ol",
|
|
"Li",
|
|
"Nav",
|
|
"Section",
|
|
"Code",
|
|
"Pre",
|
|
"Container",
|
|
"Grid",
|
|
"Flex",
|
|
"SectionLayout",
|
|
"ThreeColumnLayout",
|
|
"Card",
|
|
"Badge",
|
|
"StatusBadge",
|
|
"Alert",
|
|
"EmptyState",
|
|
"LoadingSpinner",
|
|
"PageHeader",
|
|
"Breadcrumb",
|
|
"TabNavigation",
|
|
"TabNavigationScroll",
|
|
"Toggle",
|
|
"FormField",
|
|
"Input",
|
|
"Textarea",
|
|
"Label",
|
|
"Select",
|
|
"Checkbox",
|
|
"RadioGroup",
|
|
"FileInput",
|
|
"FileUploader",
|
|
"DataGrid",
|
|
"CardGrid",
|
|
"Pagination",
|
|
"SearchBar",
|
|
"StatCard",
|
|
"ProductCard",
|
|
"TemplateCard",
|
|
"BarChart",
|
|
"DonutChart",
|
|
"HtmlContent",
|
|
"HtmlEditor",
|
|
"ImageGallery",
|
|
"Form",
|
|
"Table",
|
|
"Accordion",
|
|
"IconButton",
|
|
"Dropdown",
|
|
"ActionMenu",
|
|
"TagInput",
|
|
"SearchableDropdown",
|
|
"RichSelect",
|
|
"TagSelect",
|
|
"IconSelect",
|
|
"ChipCheckbox",
|
|
"MultilingualInput",
|
|
"MultilingualTagInput",
|
|
"LanguageSelector",
|
|
"PermissionTree",
|
|
"CategoryTree",
|
|
"ExtensionBadge",
|
|
"UserProfile",
|
|
"FilterGroup",
|
|
"SortableMenuList",
|
|
"DynamicFieldList",
|
|
"SectionHeader",
|
|
"ThemeToggle",
|
|
"NotificationCenter",
|
|
"ColumnSelector",
|
|
"AdminSidebar",
|
|
"AdminFooter"
|
|
],
|
|
"containers": {
|
|
"Div": {
|
|
"accepts": [
|
|
"Div",
|
|
"Span",
|
|
"P",
|
|
"H1",
|
|
"H2",
|
|
"H3",
|
|
"H4",
|
|
"A",
|
|
"Button",
|
|
"Img",
|
|
"Icon",
|
|
"Hr",
|
|
"Ul",
|
|
"Ol",
|
|
"Nav",
|
|
"Section",
|
|
"Code",
|
|
"Pre",
|
|
"Container",
|
|
"Grid",
|
|
"Flex",
|
|
"SectionLayout",
|
|
"ThreeColumnLayout",
|
|
"Card",
|
|
"Badge",
|
|
"StatusBadge",
|
|
"Alert",
|
|
"EmptyState",
|
|
"LoadingSpinner",
|
|
"PageHeader",
|
|
"Breadcrumb",
|
|
"TabNavigation",
|
|
"TabNavigationScroll",
|
|
"Toggle",
|
|
"FormField",
|
|
"Input",
|
|
"Textarea",
|
|
"Label",
|
|
"Select",
|
|
"Checkbox",
|
|
"RadioGroup",
|
|
"FileInput",
|
|
"FileUploader",
|
|
"DataGrid",
|
|
"CardGrid",
|
|
"Pagination",
|
|
"SearchBar",
|
|
"StatCard",
|
|
"ProductCard",
|
|
"TemplateCard",
|
|
"BarChart",
|
|
"DonutChart",
|
|
"HtmlContent",
|
|
"HtmlEditor",
|
|
"ImageGallery",
|
|
"Form",
|
|
"Table",
|
|
"Accordion",
|
|
"IconButton",
|
|
"Dropdown",
|
|
"ActionMenu",
|
|
"TagInput",
|
|
"SearchableDropdown",
|
|
"RichSelect",
|
|
"TagSelect",
|
|
"IconSelect",
|
|
"ChipCheckbox",
|
|
"MultilingualInput",
|
|
"MultilingualTagInput",
|
|
"LanguageSelector",
|
|
"PermissionTree",
|
|
"CategoryTree",
|
|
"ExtensionBadge",
|
|
"UserProfile",
|
|
"FilterGroup",
|
|
"SortableMenuList",
|
|
"DynamicFieldList",
|
|
"SectionHeader",
|
|
"ThemeToggle",
|
|
"NotificationCenter",
|
|
"ColumnSelector",
|
|
"AdminSidebar",
|
|
"AdminFooter"
|
|
]
|
|
},
|
|
"Section": {
|
|
"accepts": [
|
|
"Div",
|
|
"Span",
|
|
"P",
|
|
"H1",
|
|
"H2",
|
|
"H3",
|
|
"H4",
|
|
"A",
|
|
"Button",
|
|
"Img",
|
|
"Icon",
|
|
"Hr",
|
|
"Container",
|
|
"Grid",
|
|
"Flex",
|
|
"Card",
|
|
"PageHeader",
|
|
"DataGrid",
|
|
"CardGrid",
|
|
"SectionHeader",
|
|
"ThemeToggle",
|
|
"NotificationCenter",
|
|
"ColumnSelector",
|
|
"AdminSidebar",
|
|
"AdminFooter"
|
|
]
|
|
},
|
|
"Nav": {
|
|
"accepts": [
|
|
"Ul",
|
|
"Ol",
|
|
"A",
|
|
"Button",
|
|
"Span",
|
|
"Icon",
|
|
"Div"
|
|
]
|
|
},
|
|
"P": {
|
|
"accepts": [
|
|
"Span",
|
|
"A",
|
|
"Img",
|
|
"Icon",
|
|
"Code"
|
|
]
|
|
},
|
|
"Span": {
|
|
"accepts": [
|
|
"Span",
|
|
"A",
|
|
"Img",
|
|
"Icon"
|
|
]
|
|
},
|
|
"A": {
|
|
"accepts": [
|
|
"Span",
|
|
"Img",
|
|
"Icon"
|
|
]
|
|
},
|
|
"Ul": {
|
|
"accepts": [
|
|
"Li"
|
|
]
|
|
},
|
|
"Ol": {
|
|
"accepts": [
|
|
"Li"
|
|
]
|
|
},
|
|
"Li": {
|
|
"accepts": [
|
|
"Span",
|
|
"A",
|
|
"Img",
|
|
"Icon",
|
|
"P",
|
|
"Div",
|
|
"Button"
|
|
]
|
|
},
|
|
"Container": {
|
|
"accepts": [
|
|
"Div",
|
|
"Span",
|
|
"P",
|
|
"H1",
|
|
"H2",
|
|
"H3",
|
|
"H4",
|
|
"A",
|
|
"Button",
|
|
"Img",
|
|
"Icon",
|
|
"Hr",
|
|
"Ul",
|
|
"Ol",
|
|
"Section",
|
|
"Grid",
|
|
"Flex",
|
|
"SectionLayout",
|
|
"ThreeColumnLayout",
|
|
"Card",
|
|
"PageHeader",
|
|
"Breadcrumb",
|
|
"TabNavigation",
|
|
"DataGrid",
|
|
"CardGrid",
|
|
"Pagination",
|
|
"SectionHeader",
|
|
"ThemeToggle",
|
|
"NotificationCenter",
|
|
"ColumnSelector",
|
|
"AdminSidebar",
|
|
"AdminFooter"
|
|
]
|
|
},
|
|
"Grid": {
|
|
"accepts": [
|
|
"Div",
|
|
"Span",
|
|
"P",
|
|
"H1",
|
|
"H2",
|
|
"H3",
|
|
"H4",
|
|
"A",
|
|
"Button",
|
|
"Img",
|
|
"Icon",
|
|
"Card",
|
|
"StatCard",
|
|
"ProductCard",
|
|
"TemplateCard"
|
|
]
|
|
},
|
|
"Flex": {
|
|
"accepts": [
|
|
"Div",
|
|
"Span",
|
|
"P",
|
|
"H1",
|
|
"H2",
|
|
"H3",
|
|
"H4",
|
|
"A",
|
|
"Button",
|
|
"Img",
|
|
"Icon",
|
|
"Hr",
|
|
"Card",
|
|
"Badge",
|
|
"StatusBadge"
|
|
]
|
|
},
|
|
"SectionLayout": {
|
|
"accepts": [
|
|
"Div",
|
|
"Section",
|
|
"Container",
|
|
"Grid",
|
|
"Flex",
|
|
"Card",
|
|
"PageHeader",
|
|
"SectionHeader",
|
|
"ThemeToggle",
|
|
"NotificationCenter",
|
|
"ColumnSelector",
|
|
"AdminSidebar",
|
|
"AdminFooter"
|
|
]
|
|
},
|
|
"ThreeColumnLayout": {
|
|
"accepts": [
|
|
"Div",
|
|
"Section",
|
|
"Container",
|
|
"Grid",
|
|
"Flex",
|
|
"Card",
|
|
"PageHeader",
|
|
"SectionHeader",
|
|
"ThemeToggle",
|
|
"NotificationCenter",
|
|
"ColumnSelector",
|
|
"AdminSidebar",
|
|
"AdminFooter"
|
|
]
|
|
},
|
|
"Card": {
|
|
"accepts": [
|
|
"Div",
|
|
"Span",
|
|
"P",
|
|
"H1",
|
|
"H2",
|
|
"H3",
|
|
"H4",
|
|
"A",
|
|
"Button",
|
|
"Img",
|
|
"Icon",
|
|
"Hr",
|
|
"Badge",
|
|
"StatusBadge",
|
|
"Ul",
|
|
"Ol"
|
|
]
|
|
},
|
|
"Form": {
|
|
"accepts": [
|
|
"Div",
|
|
"Span",
|
|
"P",
|
|
"Label",
|
|
"Input",
|
|
"Textarea",
|
|
"Select",
|
|
"Checkbox",
|
|
"RadioGroup",
|
|
"FileInput",
|
|
"FileUploader",
|
|
"Button",
|
|
"FormField",
|
|
"Container",
|
|
"Grid",
|
|
"Flex",
|
|
"Hr",
|
|
"MultilingualInput",
|
|
"MultilingualTagInput",
|
|
"TagInput",
|
|
"TagSelect",
|
|
"SearchableDropdown",
|
|
"RichSelect",
|
|
"IconSelect",
|
|
"ChipCheckbox",
|
|
"DynamicFieldList"
|
|
]
|
|
},
|
|
"FormField": {
|
|
"accepts": [
|
|
"Input",
|
|
"Textarea",
|
|
"Select",
|
|
"Checkbox",
|
|
"RadioGroup",
|
|
"FileInput",
|
|
"FileUploader",
|
|
"Label",
|
|
"Span",
|
|
"MultilingualInput",
|
|
"MultilingualTagInput",
|
|
"TagInput",
|
|
"TagSelect",
|
|
"SearchableDropdown",
|
|
"RichSelect",
|
|
"IconSelect"
|
|
]
|
|
},
|
|
"Table": {
|
|
"accepts": []
|
|
},
|
|
"Accordion": {
|
|
"accepts": [
|
|
"Div",
|
|
"Span",
|
|
"P",
|
|
"H1",
|
|
"H2",
|
|
"H3",
|
|
"H4",
|
|
"A",
|
|
"Button",
|
|
"Img",
|
|
"Icon",
|
|
"Hr",
|
|
"Ul",
|
|
"Ol",
|
|
"Container",
|
|
"Grid",
|
|
"Flex",
|
|
"Card",
|
|
"DataGrid",
|
|
"Table",
|
|
"FormField",
|
|
"Input",
|
|
"Textarea",
|
|
"Select",
|
|
"Checkbox",
|
|
"Label"
|
|
]
|
|
}
|
|
}
|
|
}
|