schlechtenburg/packages/paragraph/lib/edit.tsx

51 lines
916 B
TypeScript
Raw Normal View History

2020-05-20 14:21:08 +00:00
import {
2020-12-30 01:32:46 +00:00
defineComponent,
2020-05-20 14:21:08 +00:00
reactive,
2020-05-24 20:39:14 +00:00
computed,
2020-05-20 14:21:08 +00:00
ref,
onMounted,
2020-12-27 21:32:43 +00:00
} from 'vue';
import { getDefaultData } from './util';
2020-05-24 20:00:14 +00:00
import './style.scss';
2020-05-20 14:21:08 +00:00
2020-12-30 01:32:46 +00:00
export default defineComponent({
2020-05-24 20:00:14 +00:00
name: 'sb-paragraph-edit',
2020-05-20 14:21:08 +00:00
props: {
2021-03-08 15:29:35 +00:00
blockId: { type: String, required: true },
2020-05-24 20:00:14 +00:00
data: {
type: null,
2020-05-24 20:00:14 +00:00
default: getDefaultData,
},
2020-05-20 14:21:08 +00:00
},
2021-03-08 15:29:35 +00:00
setup(props) {
const localData = reactive({
2020-05-24 15:33:25 +00:00
value: props.data.value,
2020-05-24 20:39:14 +00:00
align: props.data.align,
});
2020-05-24 20:39:14 +00:00
const inputEl = ref(null);
2020-05-24 15:33:25 +00:00
onMounted(() => {
if (inputEl.value) {
inputEl.value.innerHTML = localData.value;
}
});
2020-05-20 14:21:08 +00:00
2020-05-24 20:39:14 +00:00
const classes = computed(() => ({
2020-05-20 14:21:08 +00:00
'sb-paragraph': true,
2020-05-24 20:39:14 +00:00
[`sb-paragraph_align-${localData.align}`]: true,
}));
2020-05-20 14:21:08 +00:00
2020-05-25 21:10:21 +00:00
return () => (
<div class={classes.value}>
2020-05-20 14:21:08 +00:00
<p
2020-05-25 21:10:21 +00:00
class="sb-paragraph__input"
ref={inputEl}
2020-05-20 14:21:08 +00:00
></p>
2020-05-24 15:33:25 +00:00
</div>
2020-05-20 14:21:08 +00:00
);
},
2020-12-30 01:32:46 +00:00
});