44 * SPDX-License-Identifier: AGPL-3.0-only
55 */
66
7+ import ISO from 'iso-639-1'
78import React , { useState } from 'react'
8- import { Modal } from 'react-bootstrap'
9+ import { Modal , Row } from 'react-bootstrap'
10+ import { useTranslation } from 'react-i18next'
911import { CommonModal } from '../../../common/modals/common-modal'
10- import { TextDirection , YAMLMetaData } from '../../yaml-metadata/yaml-metadata'
12+ import { supportedDocumentTypes , TextDirection , YAMLMetaData } from '../../yaml-metadata/yaml-metadata'
1113import { BooleanMetadataInput } from './boolean-metadata-input'
12- import { InputLabel } from './input-label'
1314import { DatalistMetadataInput } from './datalist-metadata-input'
14- import { TextDirectionMetadataInput } from './text-direction-metadata- input'
15+ import { InputLabel } from './input-label '
1516import { StringMetadataInput } from './string-metadata-input'
1617import { StringMetadataTextarea } from './string-metadata-textarea'
1718import { TagsMetadataInput } from './tags-metadata-input'
19+ import { TextDirectionMetadataInput } from './text-direction-metadata-input'
1820
1921export interface MetadataEditorProps {
2022 show : boolean ,
@@ -32,6 +34,7 @@ export interface SelectMetadataOptions<T> {
3234}
3335
3436export const MetadataEditor : React . FC < MetadataEditorProps > = ( { show, onHide } ) => {
37+ const { t } = useTranslation ( ) ;
3538 const [ yamlMetadata , setYamlMetadata ] = useState < Omit < YAMLMetaData , 'opengraph' > > ( {
3639 title : "Test Title" ,
3740 description : "Test Description\nwith two lines" ,
@@ -48,42 +51,52 @@ export const MetadataEditor: React.FC<MetadataEditorProps> = ({ show, onHide })
4851
4952 return (
5053 < CommonModal
54+ size = 'xl'
5155 show = { show }
5256 onHide = { onHide }
5357 closeButton = { true }
5458 titleI18nKey = { 'editor.modal.metadataEditor.title' } >
5559 < Modal . Body >
56- < InputLabel id = { 'title' } label = { "title" } >
57- < StringMetadataInput id = { 'title' } content = { yamlMetadata . title } onContentChange = { title => setYamlMetadata ( { ...yamlMetadata , title} ) } />
58- </ InputLabel >
59- < InputLabel id = { 'description' } label = { "description" } >
60- < StringMetadataTextarea id = { 'description' } content = { yamlMetadata . description } onContentChange = { description => setYamlMetadata ( { ...yamlMetadata , description} ) } />
61- </ InputLabel >
62- < InputLabel id = { 'tags' } label = { "tags" } >
63- < TagsMetadataInput id = { 'tags' } content = { yamlMetadata . tags } onContentChange = { tags => setYamlMetadata ( { ...yamlMetadata , tags} ) } />
64- </ InputLabel >
65- < InputLabel id = { 'robots' } label = { "robots" } >
66- < StringMetadataInput id = { 'robots' } content = { yamlMetadata . robots } onContentChange = { robots => setYamlMetadata ( { ...yamlMetadata , robots} ) } />
67- </ InputLabel >
68- < InputLabel id = { 'lang' } label = { "lang" } >
69- < DatalistMetadataInput id = { 'lang' } options = { [ 'aa' , 'ab' , 'af' , 'de-at' ] } content = { yamlMetadata . lang } onContentChange = { lang => setYamlMetadata ( { ...yamlMetadata , lang} ) } />
70- </ InputLabel >
71- < InputLabel id = { 'dir' } label = { "dir" } >
72- < TextDirectionMetadataInput
73- id = { 'dir' }
74- content = { yamlMetadata . dir }
75- onContentChange = { dir => setYamlMetadata ( { ...yamlMetadata , dir } ) }
76- />
77- </ InputLabel >
78- < InputLabel id = { 'breaks' } label = { "breaks" } >
79- < BooleanMetadataInput id = { 'breaks' } label = { "breaks" } content = { yamlMetadata . breaks } onContentChange = { breaks => setYamlMetadata ( { ...yamlMetadata , breaks} ) } />
80- </ InputLabel >
81- < InputLabel id = { 'GA' } label = { "GA" } >
82- < StringMetadataInput id = { 'GA' } content = { yamlMetadata . GA } onContentChange = { GA => setYamlMetadata ( { ...yamlMetadata , GA } ) } />
83- </ InputLabel >
84- < InputLabel id = { 'disqus' } label = { "disqus" } >
85- < StringMetadataInput id = { 'disqus' } content = { yamlMetadata . disqus } onContentChange = { disqus => setYamlMetadata ( { ...yamlMetadata , disqus} ) } />
86- </ InputLabel >
60+ < Row >
61+ < div className = 'col-6' >
62+ < InputLabel id = { 'title' } label = { t ( 'editor.modal.metadataEditor.labels.title' ) } >
63+ < StringMetadataInput id = { 'title' } content = { yamlMetadata . title } onContentChange = { title => setYamlMetadata ( { ...yamlMetadata , title} ) } />
64+ </ InputLabel >
65+ < InputLabel id = { 'type' } label = { t ( 'editor.modal.metadataEditor.labels.type' ) } >
66+ < DatalistMetadataInput id = { 'type' } options = { supportedDocumentTypes } content = { yamlMetadata . type } onContentChange = { type => setYamlMetadata ( { ...yamlMetadata , type} ) } />
67+ </ InputLabel >
68+ < InputLabel id = { 'description' } label = { t ( 'editor.modal.metadataEditor.labels.description' ) } >
69+ < StringMetadataTextarea id = { 'description' } content = { yamlMetadata . description } onContentChange = { description => setYamlMetadata ( { ...yamlMetadata , description} ) } />
70+ </ InputLabel >
71+ < InputLabel id = { 'tags' } label = { t ( 'editor.modal.metadataEditor.labels.tags' ) } >
72+ < TagsMetadataInput id = { 'tags' } content = { yamlMetadata . tags } onContentChange = { tags => setYamlMetadata ( { ...yamlMetadata , tags} ) } />
73+ </ InputLabel >
74+ < InputLabel id = { 'lang' } label = { t ( 'editor.modal.metadataEditor.labels.lang' ) } >
75+ < DatalistMetadataInput id = { 'lang' } options = { ISO . getAllCodes ( ) } content = { yamlMetadata . lang } onContentChange = { lang => setYamlMetadata ( { ...yamlMetadata , lang} ) } />
76+ </ InputLabel >
77+ </ div >
78+ < div className = 'col-6' >
79+ < InputLabel id = { 'dir' } label = { t ( 'editor.modal.metadataEditor.labels.dir' ) } >
80+ < TextDirectionMetadataInput
81+ id = { 'dir' }
82+ content = { yamlMetadata . dir }
83+ onContentChange = { dir => setYamlMetadata ( { ...yamlMetadata , dir } ) }
84+ />
85+ </ InputLabel >
86+ < InputLabel id = { 'breaks' } label = { t ( 'editor.modal.metadataEditor.labels.breaks' ) } >
87+ < BooleanMetadataInput id = { 'breaks' } label = { t ( 'editor.modal.metadataEditor.labels.breaks' ) } content = { yamlMetadata . breaks } onContentChange = { breaks => setYamlMetadata ( { ...yamlMetadata , breaks} ) } />
88+ </ InputLabel >
89+ < InputLabel id = { 'robots' } label = { t ( 'editor.modal.metadataEditor.labels.robots' ) } >
90+ < StringMetadataInput id = { 'robots' } content = { yamlMetadata . robots } onContentChange = { robots => setYamlMetadata ( { ...yamlMetadata , robots} ) } />
91+ </ InputLabel >
92+ < InputLabel id = { 'GA' } label = { t ( 'editor.modal.metadataEditor.labels.GA' ) } >
93+ < StringMetadataInput id = { 'GA' } content = { yamlMetadata . GA } onContentChange = { GA => setYamlMetadata ( { ...yamlMetadata , GA } ) } />
94+ </ InputLabel >
95+ < InputLabel id = { 'disqus' } label = { t ( 'editor.modal.metadataEditor.labels.disqus' ) } >
96+ < StringMetadataInput id = { 'disqus' } content = { yamlMetadata . disqus } onContentChange = { disqus => setYamlMetadata ( { ...yamlMetadata , disqus} ) } />
97+ </ InputLabel >
98+ </ div >
99+ </ Row >
87100 </ Modal . Body >
88101 </ CommonModal >
89102 )
0 commit comments