diff --git a/src/components/Views/Create.module.scss b/src/components/Views/Create.module.scss index 625fd8e1..a956c195 100644 --- a/src/components/Views/Create.module.scss +++ b/src/components/Views/Create.module.scss @@ -23,3 +23,31 @@ margin: 0 divide($container-padding-x, 2); } } + +.container { + .titleInput, + .subtitleInput { + border: 0; + outline: 0; + padding: 0; + font-size: 36px; + + &::placeholder { + opacity: 0.3; + color: #000; + } + } + + .titleInput { + font-weight: 700; + } +} + +.createSettings, +.create { + display: none; + + &.visible { + display: block; + } +} diff --git a/src/components/Views/Create.tsx b/src/components/Views/Create.tsx index ca834b80..40511d6c 100644 --- a/src/components/Views/Create.tsx +++ b/src/components/Views/Create.tsx @@ -5,9 +5,12 @@ import { clsx } from 'clsx' import styles from './Create.module.scss' import { Title } from '@solidjs/meta' import { createStore } from 'solid-js/store' -import type { ShoutInput, Topic } from '../../graphql/types.gen' +import type { Topic } from '../../graphql/types.gen' import { apiClient } from '../../utils/apiClient' import { TopicSelect } from '../Editor/TopicSelect/TopicSelect' +import { router, useRouter } from '../../stores/router' +import { getPagePath } from '@nanostores/router' +import { translit } from '../../utils/ru2en' const Editor = lazy(() => import('../Editor/Editor')) @@ -25,6 +28,9 @@ export const CreateView = () => { const { t } = useLocalize() const [topics, setTopics] = createSignal(null) + const { page } = useRouter() + + const [isSlugChanged, setIsSlugChanged] = createSignal(false) const [form, setForm] = createStore({ slug: '', @@ -45,8 +51,27 @@ export const CreateView = () => { e.preventDefault() } + const handleTitleInputChange = (e) => { + const title = e.currentTarget.value + setForm('title', title) + + if (!isSlugChanged()) { + const slug = translit(title).replaceAll(' ', '-') + setForm('slug', slug) + } + } + + const handleSlugInputChange = (e) => { + const slug = e.currentTarget.value + + if (slug !== form.slug) { + setIsSlugChanged(true) + } + setForm('slug', slug) + } + return ( - <> +
{t('Write an article')} }>
@@ -54,34 +79,23 @@ export const CreateView = () => {
-

Slug

-
- setForm('slug', e.currentTarget.value)} - /> - -
- -

Заголовок

-
+
setForm('title', e.currentTarget.value)} + onChange={handleTitleInputChange} /> - -
-

Подзаголовок

-
{ value={form.subtitle} onChange={(e) => setForm('subtitle', e.currentTarget.value)} /> - + + setForm('body', body)} /> + +
+ {/**/} + Настройки +
+
+

Настройки публикации

- setForm('body', body)} /> - -

Настройки публикации

- {/*

Лид

*/} - {/*
*/} - {/* */} - {/* */} - {/*
*/} - - {/*

Выбор сообщества

*/} - {/*

Сообщества можно перечислить через запятую

*/} - {/*
*/} - {/* */} - {/*
*/} - -

Темы

- {/*

*/} - {/* Добавьте несколько тем, чтобы читатель знал, о чем ваш материал, и мог найти*/} - {/* его на страницах интересных ему тем. Темы можно менять местами, первая тема*/} - {/* становится заглавной*/} - {/*

*/} -
- - setForm('selectedTopics', newSelectedTopics)} - selectedTopics={form.selectedTopics} +

Slug

+
+ - - {/**/} -
+ +
- {/*

Соавторы

*/} - {/*

У каждого соавтора можно добавить роль

*/} - {/*
*/} - {/*
*/} - {/* */} - {/* */} - {/*
*/} - {/* */} - {/*
*/} + {/*

Лид

*/} + {/*
*/} + {/* */} + {/* */} + {/*
*/} - {/*
*/} - {/*
Михаил Драбкин
*/} - {/*
*/} - {/* */} - {/*
*/} - {/*
*/} + {/*

Выбор сообщества

*/} + {/*

Сообщества можно перечислить через запятую

*/} + {/*
*/} + {/* */} + {/*
*/} -

Карточка материала на главной

-

- Выберите заглавное изображение для статьи, тут сразу можно увидеть как карточка будет - выглядеть на главной странице -

-
+

Темы

+ {/*

*/} + {/* Добавьте несколько тем, чтобы читатель знал, о чем ваш материал, и мог найти*/} + {/* его на страницах интересных ему тем. Темы можно менять местами, первая тема*/} + {/* становится заглавной*/} + {/*

*/} +
+ + setForm('selectedTopics', newSelectedTopics)} + selectedTopics={form.selectedTopics} + /> + + {/**/} +
-
-

- Проверьте ещё раз введённые данные, если всё верно, вы можете сохранить или - опубликовать ваш текст + {/*

Соавторы

*/} + {/*

У каждого соавтора можно добавить роль

*/} + {/*
*/} + {/*
*/} + {/* */} + {/* */} + {/*
*/} + {/* */} + {/*
*/} + + {/*
*/} + {/*
Михаил Драбкин
*/} + {/*
*/} + {/* */} + {/*
*/} + {/*
*/} + +

Карточка материала на главной

+

+ Выберите заглавное изображение для статьи, тут сразу можно увидеть как карточка будет + выглядеть на главной странице

- {/**/} - +
+ +
+

+ Проверьте ещё раз введённые данные, если всё верно, вы можете сохранить или + опубликовать ваш текст +

+ {/**/} + Назад + +
@@ -170,7 +207,7 @@ export const CreateView = () => {
- +
) }