4
4
* SPDX-License-Identifier: AGPL-3.0-only
5
5
*/
6
6
7
+ import ISO from 'iso-639-1'
7
8
import React , { useState } from 'react'
8
- import { Modal } from 'react-bootstrap'
9
+ import { Modal , Row } from 'react-bootstrap'
10
+ import { useTranslation } from 'react-i18next'
9
11
import { 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'
11
13
import { BooleanMetadataInput } from './boolean-metadata-input'
12
- import { InputLabel } from './input-label'
13
14
import { DatalistMetadataInput } from './datalist-metadata-input'
14
- import { TextDirectionMetadataInput } from './text-direction-metadata- input'
15
+ import { InputLabel } from './input-label '
15
16
import { StringMetadataInput } from './string-metadata-input'
16
17
import { StringMetadataTextarea } from './string-metadata-textarea'
17
18
import { TagsMetadataInput } from './tags-metadata-input'
19
+ import { TextDirectionMetadataInput } from './text-direction-metadata-input'
18
20
19
21
export interface MetadataEditorProps {
20
22
show : boolean ,
@@ -32,6 +34,7 @@ export interface SelectMetadataOptions<T> {
32
34
}
33
35
34
36
export const MetadataEditor : React . FC < MetadataEditorProps > = ( { show, onHide } ) => {
37
+ const { t } = useTranslation ( ) ;
35
38
const [ yamlMetadata , setYamlMetadata ] = useState < Omit < YAMLMetaData , 'opengraph' > > ( {
36
39
title : "Test Title" ,
37
40
description : "Test Description\nwith two lines" ,
@@ -48,42 +51,52 @@ export const MetadataEditor: React.FC<MetadataEditorProps> = ({ show, onHide })
48
51
49
52
return (
50
53
< CommonModal
54
+ size = 'xl'
51
55
show = { show }
52
56
onHide = { onHide }
53
57
closeButton = { true }
54
58
titleI18nKey = { 'editor.modal.metadataEditor.title' } >
55
59
< 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 >
87
100
</ Modal . Body >
88
101
</ CommonModal >
89
102
)
0 commit comments