import React, { useCallback, useState } from 'react'; import { useRouter } from 'next/router'; import { createPage } from '~/client/services/page-operation'; import { toastError } from '~/client/util/toastr'; import { useSWRxCurrentPage } from '~/stores/page'; import loggerFactory from '~/utils/logger'; import styles from './PageCreateButton.module.scss'; import { Hexagon } from './Hexagon'; import { CreateButton } from './CreateButton'; const moduleClass = styles['grw-page-create-button']; const logger = loggerFactory('growi:cli:PageCreateButton'); export const PageCreateButton = React.memo((): JSX.Element => { const router = useRouter(); const { data: currentPage, isLoading } = useSWRxCurrentPage(); const [isHovered, setIsHovered] = useState(false); const [isCreating, setIsCreating] = useState(false); const onMouseEnterHandler = () => { setIsHovered(true); }; const onMouseLeaveHandler = () => { setIsHovered(false); }; const onCreateNewPageButtonHandler = useCallback(async() => { if (isLoading) return; try { setIsCreating(true); const parentPath = currentPage == null ? '/' : currentPage.path; const params = { isSlackEnabled: false, slackChannels: '', grant: currentPage?.grant || 1, pageTags: [], grantUserGroupId: currentPage?.grantedGroup?._id, shouldGeneratePath: true, }; const response = await createPage(parentPath, '', params); router.push(`${response.page.id}#edit`); } catch (err) { logger.warn(err); toastError(err); } finally { setIsCreating(false); } }, [currentPage, isLoading, router]); const onCreateTodaysButtonHandler = useCallback(() => { // router.push(`${router.pathname}#edit`); }, [router]); const onTemplateForChildrenButtonHandler = useCallback(() => { // router.push(`${router.pathname}/_template#edit`); }, [router]); const onTemplateForDescendantsButtonHandler = useCallback(() => { // router.push(`${router.pathname}/__template#edit`); }, [router]); // TODO: i18n // https://redmine.weseek.co.jp/issues/132681 return (
{isHovered && (

  • Create today's ...
  • {/* TODO: show correct create today's page path */} {/* https://redmine.weseek.co.jp/issues/132682 */}

  • Child page template
  • )}
    ); }); PageCreateButton.displayName = 'PageCreateButton';