items
설명
선택 사항. Editor에서 렌 더링할 컴포넌트를 정의합니다사용법
items?: {
comp?: string | Component;
key?: string;
label?: string;
labelTemplate?: (value: any) => string;
column?: "right" | "left";
batch?: string | number;
hidden?: boolean;
section?: string;
sectionMode?: "accordion" | "exclusive";
activeSection?: boolean;
options?: {
id?: string | number;
label?: string;
[key: string]: any;
}[];
required?: boolean;
validation?: (value: any) => boolean;
validationMessage?: string;
config?: {
[key: string]: any;
};
[key: string]: any;
}[];
파라미터
comp– (필수) 컴포넌트 유형(예:"text","textarea","select") 또는 Svelte 컴포넌트를 지정합니다. 컴포넌트를 찾을 수 없거나 제공되지 않은 경우"text"가 사용됩니다.key– (필수) 아이템을 editor의values객체 내 속성에 바인딩하는 고유 키label– (선택 사항) 컨트롤 옆에 표시되는 텍스트 레이블labelTemplate– (선택 사항) 현재 값을 기반으로 커스텀 레이블 문자열을 반환하는 함수column– (선택 사항) 컨트롤이 렌더링될 열을 정의합니다: "left" | "right"batch– (선택 사항) 일괄 렌더링 또는 처리를 위해 아이템을 그룹화합니다hidden– (선택 사항)true이면 아이템이 렌더링되지 않습니다section– (선택 사항) 아이템을 이름이 지정된 섹션에 할당합니다sectionMode– (선택 사항) 접을 수 있는 섹션의 동작을 정의합니다:"accordion"– 여러 섹션을 동시에 열어 둘 수 있습니다"exclusive"– 한 번에 하나의 섹션만 열어 둘 수 있습니다
activeSection– (선택 사항)true이면 섹션이 기본적으로 펼쳐집니다options– (선택 사항) 사용 가능한 옵션 목록을 정의합니다.select,radio등의 컴포넌트에서 사용됩니다.required– (선택 사항) 필드를 필수로 표시합니다validation– (선택 사항) 커스텀 유효성 검사 함수입니다. 유효한 값에 대해true를, 그렇지 않으면false를 반환해야 합니다validationMessage– (선택 사항) 유효성 검사 실패 시 표시되는 메시지config– (선택 사항) 컴포넌트에 직접 전달되는 임의의 설정 객체[key: string]– (선택 사항) editor 아이템에 추가 속성이나 properties를 첨부할 수 있습니다
예제
editor에서 편집 가능한 텍스트 컨트롤 렌더링
<script>
import { Editor } from "@svar-ui/svelte-editor";
const items = [
{
comp: "text",
key: "name",
label: "Name"
}
];
</script>
<Editor {items} />
editor에서 읽기 전용 블록 렌더링
<script>
import { Editor } from "@svar-ui/svelte-editor";
const items = [
{
comp: "readonly",
key: "name",
label: "Name"
}
];
</script>
<Editor {items} />
editor에서 라디오 버튼 렌더링
<script>
import { RadioButtonGroup } from "@svar-ui/svelte-core";
import { Editor, registerEditorItem } from "@svar-ui/svelte-editor";
registerEditorItem("radio-group", RadioButtonGroup);
const items = [
{
comp: "radio-group",
key: "name",
label: "Name",
options: [
{
value: "s",
label: "Scorpions",
},
{
value: "m",
label: "Muse",
},
]
}
];
</script>
<Editor {items} />
editor에서 textarea 컨트롤 렌더링
<script>
import { Editor } from "@svar-ui/svelte-editor";
registerEditorItem("textarea", TextArea);
const items = [
{
comp: "textarea",
key: "name",
label: "Name"
}
];
</script>
<Editor {items} />
editor에서 슬라이더 컨트롤 렌더링
<script>
import { Slider } from "@svar-ui/svelte-core";
import { Editor, registerEditorItem } from "@svar-ui/svelte-editor";
registerEditorItem("slider", Slider);
const items = [
{
comp: "slider",
key: "name",
label: "Name"
}
];
</script>
<Editor {items} />
editor에서 rich select 컨트롤 렌더링
<script>
import { RichSelect } from "@svar-ui/svelte-core";
import { Editor, registerEditorItem } from "@svar-ui/svelte-editor";
registerEditorItem("select", RichSelect);
const items = [
{
comp: "select",
key: "name",
label: "Name",
options: [
{ id: 1, label: "High", color: "#DF282F" },
{ id: 2, label: "Medium", color: "#FFC975" },
{ id: 3, label: "Low", color: "#65D3B3" },
]
}
];
</script>
<Editor {items} />
editor에서 datepicker 컨트롤 렌더링
<script>
import { DatePicker } from "@svar-ui/svelte-core";
import { Editor, registerEditorItem } from "@svar-ui/svelte-editor";
registerEditorItem("datepicker", DatePicker);
const items = [
{
comp: "datepicker",
key: "name",
label: "Name"
}
];
</script>
<Editor {items} />
editor에서 colorpicker 컨트롤 렌더링
<script>
import { ColorSelect } from "@svar-ui/svelte-core";
import { Editor, registerEditorItem } from "@svar-ui/svelte-editor";
registerEditorItem("colorselect", ColorSelect);
const items = [
{
comp: "colorselect",
key: "name",
label: "Name"
}
];
</script>
<Editor {items} />
editor에 댓글 추가
<script>
import { Editor, registerEditorItem } from "@svar-ui/svelte-editor";
import { Comments } from "@svar-ui/svelte-comments";
registerEditorItem("comments", Comments);
const users = [
{
id: 1,
name: "John Doe",
avatar: "https://via.placeholder.com/150",
},
];
const items = [
{
comp: "comments",
key: "comments",
label: "Comments",
users,
activeUser: 1,
},
];
const data = {
comments: [
{
id: 1,
user: 1,
content: "Greetings, fellow colleagues.",
date: new Date(),
},
],
}
</script>
<Editor {items} values={data} />
editor에 태스크 목록 추가
<script>
import { Editor, registerEditorItem } from "@svar-ui/svelte-editor";
import { TaskList } from "@svar-ui/svelte-tasklist";
registerEditorItem("tasks", Tasklist);
const items = [
{
comp: "tasks",
key: "task",
label: "Task",
},
];
const data = {
task: [
{
id: 1,
title: "Task 1",
status: 1,
},
],
}
</script>
<Editor {items} values={data} />
폼을 섹션으로 분할
<script>
import { Editor, registerEditorItem } from "@svar-ui/svelte-editor";
import { Comments } from "@svar-ui/svelte-comments";
registerEditorItem("comments", Comments);
const items = [
{
comp: "section",
key: "common-section",
label: "Common settings",
},
{
comp: "text",
key: "name",
label: "Name",
},
{
comp: "textarea",
key: "descr",
label: "Description",
},
{
comp: "section",
key: "comments-section",
label: "Comments",
},
{
comp: "comments",
key: "comments",
section: "comments-section",
}
];
</script>
<Editor {items} />
모든 필드는 접을 수 있는 섹션 내에 렌더링됩니다.
필드를 필수로 표시
<script>
import { Editor } from "@svar-ui/svelte-editor";
const items = [
{
comp: "text",
key: "name",
required: true,
},
];
</script>
<Editor {items} />
이 예제는 editor에서 name 필드를 필수로 표시하는 방법을 보여줍니다.
필드에 유효성 검사 규칙 정의
<script>
import { Editor } from "@svar-ui/svelte-editor";
const items = [
{ comp: "text", key: "name", label: "Name",
validation: val => {
const regEx = /^[a-zA-Z]+$/;
return val && regEx.test(val);
},
validationMessage: "wrong name format"
}
];
</script>
<Editor {items} />
이 예제는 "Name" 필드에 특정 정규 표현식과 일치하는 입력을 요구하는 유효성 검사 규칙을 정의합니다. 입력이 일치하지 않으면 유효성 검사 메시지 "wrong name format"이 표시됩니다.