Editor
The VEditor component is an integration of the CKEditor component with vee-validate for validation.
Usage
Basic Usage
To use the VEditor component, bind it to a value using the v-model directive:
INFO
The VEditor component is registered globally when you install with @morpheme/ui. So you don't need to import it manually.
Label
You can add a label to the VEditor component by using the label prop:
Validation
To add validation to the VEditor component, you can use the useForm hook from vee-validate. Here's an example of how to set up validation and handle form submission:
Props
| Name | Type | Default |
|---|---|---|
modelValue | string | '' |
value | string | '' |
name | string | '' |
rules | string | '' |
label | string | '' |
labelClass | string | '' |
wrapperClass | string | '' |
error | boolean | boolean |
errorClass | string | '' |
errorMessages | string[] | [] |
readonly | string | '' |
hint | String | '' |
Events
The VEditor component emits several Vue events that can be listened to and acted upon.
update:modelValue
This event is emitted when the modelValue prop of the VEditor component is updated. It passes the updated value as an argument.
<script setup lang="ts">
import {ref} from 'vue';
const value = ref('');
function onModelValueUpdate(value: string) {
// do something with the updated value
}
</script>
<template>
<VEditor v-model="value" @update:modelValue="onModelValueUpdate" />
</template><script setup lang="ts">
import {ref} from 'vue';
const value = ref('');
function onModelValueUpdate(value: string) {
// do something with the updated value
}
</script>
<template>
<VEditor v-model="value" @update:modelValue="onModelValueUpdate" />
</template>change
This event is emitted when the value of the VEditor component is changed. It passes the updated value as an argument.
<script setup lang="ts">
import {ref} from 'vue';
const value = ref('');
function onChange(value: string) {
// do something with the updated value
}
</script>
<template>
<VEditor v-model="value" @change="onChange" />
</template><script setup lang="ts">
import {ref} from 'vue';
const value = ref('');
function onChange(value: string) {
// do something with the updated value
}
</script>
<template>
<VEditor v-model="value" @change="onChange" />
</template>blur
This event is emitted when the VEditor component loses focus. It passes the event object as an argument.
<script setup lang="ts">
import {ref} from 'vue';
const value = ref('');
function onBlur(event: any) {
// do something with the event object
}
</script>
<template>
<VEditor v-model="value" @blur="onBlur" />
</template><script setup lang="ts">
import {ref} from 'vue';
const value = ref('');
function onBlur(event: any) {
// do something with the event object
}
</script>
<template>
<VEditor v-model="value" @blur="onBlur" />
</template>Slots
None
CSS Variables
:root {
--v-editor-height: 300px;
/* label */
--v-editor-label-font-size: var(
--input-label-font-size,
var(--size-font-sm)
);
--v-editor-label-font-weight: var(--font-weight-regular);
--v-editor-label-display: var(--v-input-label-display, block);
--v-editor-label-margin-bottom: var(--size-spacing-2);
// hint
--v-select-hint-font-size: var(--v-input-hint-font-size, 14px);
--v-select-hint-color: var(--v-input-hint-color);
--v-select-hint-margin-top: var(--v-input-hint-margin-top);
}:root {
--v-editor-height: 300px;
/* label */
--v-editor-label-font-size: var(
--input-label-font-size,
var(--size-font-sm)
);
--v-editor-label-font-weight: var(--font-weight-regular);
--v-editor-label-display: var(--v-input-label-display, block);
--v-editor-label-margin-bottom: var(--size-spacing-2);
// hint
--v-select-hint-font-size: var(--v-input-hint-font-size, 14px);
--v-select-hint-color: var(--v-input-hint-color);
--v-select-hint-margin-top: var(--v-input-hint-margin-top);
}Standalone Installation
You can also install the Editor component individually via @morpheme/editor package:
yarn install @morpheme/editoryarn install @morpheme/editor<script setup lang="ts">
import VEditor from '@morpheme/editor';
</script>
<template>
<VEditor />
</template><script setup lang="ts">
import VEditor from '@morpheme/editor';
</script>
<template>
<VEditor />
</template>Storybook
View Storybook documentation here.
Morpheme