@craftercms/studio-ui
Version:
Services, components, models & utils to build CrafterCMS authoring extensions.
113 lines (111 loc) • 3.44 kB
JavaScript
/*
* Copyright (C) 2007-2022 Crafter Software Corporation. All Rights Reserved.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3 as published by
* the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
* Copyright (C) 2007-2022 Crafter Software Corporation. All Rights Reserved.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as published by
* the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import RadioGroup from '@mui/material/RadioGroup';
import { defineMessages, useIntl } from 'react-intl';
import FormControl from '@mui/material/FormControl';
import FormControlLabel from '@mui/material/FormControlLabel';
import Radio from '@mui/material/Radio';
import { capitalize } from '@mui/material';
import Typography from '@mui/material/Typography';
import React from 'react';
const messages = defineMessages({
content: {
id: 'words.content',
defaultMessage: 'Content'
},
assets: {
id: 'words.assets',
defaultMessage: 'Assets'
},
templates: {
id: 'words.templates',
defaultMessage: 'Templates'
},
scripts: {
id: 'words.scripts',
defaultMessage: 'Scripts'
}
});
const defaultBasePaths = [
{
id: 'content',
path: '/site'
},
{
id: 'assets',
path: '/static-assets'
},
{
id: 'templates',
path: '/templates'
},
{
id: 'scripts',
path: '/scripts'
}
];
export function BasePathSelector(props) {
const { basePaths = defaultBasePaths, value = '', onChange, sx } = props;
const { formatMessage } = useIntl();
return React.createElement(
FormControl,
{ sx: sx },
React.createElement(
RadioGroup,
{ value: value, onChange: onChange },
basePaths.map((basePath) => {
var _a;
return React.createElement(FormControlLabel, {
value: basePath.path,
key: basePath.path,
control: React.createElement(Radio, { size: 'small' }),
label: React.createElement(
React.Fragment,
null,
(_a = basePath.label) !== null && _a !== void 0
? _a
: messages[basePath.id]
? formatMessage(messages[basePath.id])
: capitalize(basePath.id),
':',
' ',
React.createElement(
Typography,
{ color: 'text.secondary', variant: 'body2', component: 'span' },
basePath.path
)
)
});
})
)
);
}
export default BasePathSelector;