schlechtenburg/packages/example-site/components/PageToolbar.tsx

71 lines
1.6 KiB
TypeScript
Raw Normal View History

2022-12-28 18:46:51 +00:00
import { defineComponent } from 'vue';
2022-12-28 19:59:58 +00:00
import { SbButton, SbMode } from '@schlechtenburg/core';
2022-12-29 02:47:45 +00:00
import PageBreadcrumb from '~~/components/PageBreadcrumb';
import './PageToolbar.scss';
2022-12-28 18:46:51 +00:00
export default defineComponent({
async setup() {
2022-12-29 02:47:45 +00:00
const {
currentPage,
currentPageId,
setCurrentPageId,
} = useCurrentPage();
const { pages, insertPage } = usePages();
2022-12-28 18:46:51 +00:00
const {
mode,
edit,
cancel,
save,
} = useEditor();
2022-12-29 02:47:45 +00:00
const addChildPage = () => {
insertPage({
id: 'draft',
attributes: {
title: 'New page',
block: getNewPageBlock(),
slug: 'new-page',
parent: {
data: {
id: currentPage.value?.id,
},
},
},
});
setCurrentPageId('draft');
edit(currentPage.value?.attributes?.block!);
};
2022-12-28 18:46:51 +00:00
return () => (
<div class="ex-page-toolbar">
2022-12-29 02:47:45 +00:00
<PageBreadcrumb />
{currentPageId.value !== 'draft'
? <SbButton
type="button"
onClick={() => addChildPage()}
>Add child page</SbButton>
: null}
2022-12-28 18:46:51 +00:00
{ mode.value === SbMode.View
2022-12-28 19:59:58 +00:00
? <SbButton
2022-12-28 18:46:51 +00:00
type="button"
2022-12-29 02:47:45 +00:00
onClick={() => edit(currentPage.value?.attributes?.block!)}
2022-12-28 19:59:58 +00:00
>Edit</SbButton>
2022-12-28 18:46:51 +00:00
: <>
2022-12-28 19:59:58 +00:00
<SbButton
2022-12-28 18:46:51 +00:00
type="button"
onClick={() => cancel()}
2022-12-28 19:59:58 +00:00
>Cancel</SbButton>
<SbButton
2022-12-28 18:46:51 +00:00
type="button"
onClick={() => save()}
2022-12-28 19:59:58 +00:00
>Save</SbButton>
2022-12-28 18:46:51 +00:00
</>}
</div>
);
},
});