diff --git a/packages/strapi-admin/admin/src/components/Users/ModalCreateBody/Padded.js b/packages/strapi-admin/admin/src/components/Users/ModalCreateBody/Padded.js new file mode 100644 index 0000000000..7cd9e3d18a --- /dev/null +++ b/packages/strapi-admin/admin/src/components/Users/ModalCreateBody/Padded.js @@ -0,0 +1,31 @@ +// TODO DELETE THIS COMPONENT WHEN @buffetjs is READY + +import PropTypes from 'prop-types'; +import styled from 'styled-components'; +/* eslint-disable indent */ + +const Padded = styled.div` + padding-top: ${({ theme, size, top }) => top && (theme.main.sizes.paddings[size] || size)}; + padding-right: ${({ theme, size, right }) => right && (theme.main.sizes.paddings[size] || size)}; + padding-bottom: ${({ theme, size, bottom }) => + bottom && (theme.main.sizes.paddings[size] || size)}; + padding-left: ${({ theme, size, left }) => left && (theme.main.sizes.paddings[size] || size)}; +`; + +Padded.defaultProps = { + bottom: false, + left: false, + right: false, + top: false, + size: 'sm', +}; + +Padded.propTypes = { + bottom: PropTypes.bool, + left: PropTypes.bool, + right: PropTypes.bool, + top: PropTypes.bool, + size: PropTypes.string, +}; + +export default Padded; diff --git a/packages/strapi-admin/admin/src/components/Users/ModalCreateBody/Text.js b/packages/strapi-admin/admin/src/components/Users/ModalCreateBody/Text.js new file mode 100644 index 0000000000..9bc56c31b6 --- /dev/null +++ b/packages/strapi-admin/admin/src/components/Users/ModalCreateBody/Text.js @@ -0,0 +1,40 @@ +// TODO DELETE THIS COMPONENT WHEN @buffetjs is READY + +import styled from 'styled-components'; +import PropTypes from 'prop-types'; + +const Text = styled.p` + margin: 0; + line-height: ${({ lineHeight }) => lineHeight}; + color: ${({ theme, color }) => theme.main.colors[color] || color}; + font-size: ${({ theme, fontSize }) => theme.main.sizes.fonts[fontSize]}; + font-weight: ${({ theme, fontWeight }) => theme.main.fontWeights[fontWeight]}; + text-transform: ${({ textTransform }) => textTransform}; + ${({ ellipsis }) => + ellipsis && + ` + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + `} +`; + +Text.defaultProps = { + color: 'greyDark', + ellipsis: false, + fontSize: 'md', + fontWeight: 'regular', + lineHeight: 'normal', + textTransform: 'none', +}; + +Text.propTypes = { + color: PropTypes.string, + ellipsis: PropTypes.bool, + fontSize: PropTypes.string, + fontWeight: PropTypes.string, + lineHeight: PropTypes.string, + textTransform: PropTypes.string, +}; + +export default Text; diff --git a/packages/strapi-admin/admin/src/components/Users/ModalCreateBody/Wrapper.js b/packages/strapi-admin/admin/src/components/Users/ModalCreateBody/Wrapper.js new file mode 100644 index 0000000000..ca59975c88 --- /dev/null +++ b/packages/strapi-admin/admin/src/components/Users/ModalCreateBody/Wrapper.js @@ -0,0 +1,12 @@ +import styled from 'styled-components'; +import { Container } from 'reactstrap'; + +const Wrapper = styled(Container)` + padding: 0; +`; + +Wrapper.defaultProps = { + fluid: true, +}; + +export default Wrapper; diff --git a/packages/strapi-admin/admin/src/components/Users/ModalCreateBody/index.js b/packages/strapi-admin/admin/src/components/Users/ModalCreateBody/index.js new file mode 100644 index 0000000000..3564f8d09f --- /dev/null +++ b/packages/strapi-admin/admin/src/components/Users/ModalCreateBody/index.js @@ -0,0 +1,64 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { ModalSection } from 'strapi-helper-plugin'; +import { FormattedMessage } from 'react-intl'; +import { Inputs } from '@buffetjs/custom'; +import { Col, Row } from 'reactstrap'; +import Padded from './Padded'; +import Text from './Text'; +import Wrapper from './Wrapper'; +import form from './utils/form'; + +const ModalCreateBody = ({ onSubmit }) => { + return ( +
+ ); +}; + +ModalCreateBody.defaultProps = { + onSubmit: e => e.preventDefault(), +}; + +ModalCreateBody.propTypes = { + onSubmit: PropTypes.func, +}; + +export default ModalCreateBody; diff --git a/packages/strapi-admin/admin/src/components/Users/ModalCreateBody/utils/form.js b/packages/strapi-admin/admin/src/components/Users/ModalCreateBody/utils/form.js new file mode 100644 index 0000000000..0749cb31a5 --- /dev/null +++ b/packages/strapi-admin/admin/src/components/Users/ModalCreateBody/utils/form.js @@ -0,0 +1,28 @@ +const form = { + firstname: { + label: 'Settings.permissions.users.form.firstname', + placeholder: 'e.g. John', + type: 'text', + validations: { + required: true, + }, + }, + lastname: { + label: 'Settings.permissions.users.form.lastname', + placeholder: 'e.g. Doe', + type: 'text', + validations: { + required: true, + }, + }, + email: { + label: 'Settings.permissions.users.form.email', + placeholder: 'e.g. john.doe@strapi.io', + type: 'email', + validations: { + required: true, + }, + }, +}; + +export default form; diff --git a/packages/strapi-admin/admin/src/containers/Users/ListPage/Header.js b/packages/strapi-admin/admin/src/containers/Users/ListPage/Header.js new file mode 100644 index 0000000000..21c023b94e --- /dev/null +++ b/packages/strapi-admin/admin/src/containers/Users/ListPage/Header.js @@ -0,0 +1,45 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { useGlobalContext } from 'strapi-helper-plugin'; +import { Header as HeaderCompo } from '@buffetjs/custom'; + +const Header = ({ count, onClickAddUser }) => { + const { formatMessage } = useGlobalContext(); + const tradBaseId = 'Settings.permissions.users.listview.'; + const headerDescriptionSuffix = + count > 1 ? 'header.description.plural' : 'header.description.singular'; + const headerProps = { + actions: [ + { + color: 'delete', + disabled: true, + label: formatMessage({ id: 'app.utils.delete' }), + type: 'button', + }, + + { + color: 'primary', + icon: true, + label: formatMessage({ id: 'Settings.permissions.users.create' }), + onClick: onClickAddUser, + type: 'button', + }, + ], + content: formatMessage({ id: `${tradBaseId}${headerDescriptionSuffix}` }, { number: count }), + title: { label: formatMessage({ id: `${tradBaseId}header.title` }) }, + }; + + return