mirror of
https://github.com/strapi/strapi.git
synced 2025-09-25 16:29:34 +00:00
moved RelationInput to CM/components
This commit is contained in:
parent
ed11abadcc
commit
d883b17e1f
@ -3,10 +3,12 @@ import styled from 'styled-components';
|
|||||||
import { components } from 'react-select';
|
import { components } from 'react-select';
|
||||||
import { useIntl } from 'react-intl';
|
import { useIntl } from 'react-intl';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
|
|
||||||
|
import { pxToRem } from '@strapi/helper-plugin';
|
||||||
import { Flex } from '@strapi/design-system/Flex';
|
import { Flex } from '@strapi/design-system/Flex';
|
||||||
import { Typography } from '@strapi/design-system/Typography';
|
import { Typography } from '@strapi/design-system/Typography';
|
||||||
|
|
||||||
import pxToRem from '../../../utils/pxToRem';
|
import { getTrad } from '../../../utils';
|
||||||
|
|
||||||
const StyledBullet = styled.div`
|
const StyledBullet = styled.div`
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
@ -25,14 +27,12 @@ export const Option = (props) => {
|
|||||||
|
|
||||||
if (publicationState) {
|
if (publicationState) {
|
||||||
const isDraft = publicationState === 'draft';
|
const isDraft = publicationState === 'draft';
|
||||||
// To fix: use getTrad utils from CM once component is migrated into CM components
|
|
||||||
const draftMessage = {
|
const draftMessage = {
|
||||||
id: 'content-manager.components.Select.draft-info-title',
|
id: getTrad('components.Select.draft-info-title'),
|
||||||
defaultMessage: 'State: Draft',
|
defaultMessage: 'State: Draft',
|
||||||
};
|
};
|
||||||
// To fix: use getTrad utils from CM once component is migrated into CM components
|
|
||||||
const publishedMessage = {
|
const publishedMessage = {
|
||||||
id: 'content-manager.components.Select.publish-info-title',
|
id: getTrad('components.Select.publish-info-title'),
|
||||||
defaultMessage: 'State: Published',
|
defaultMessage: 'State: Published',
|
||||||
};
|
};
|
||||||
const title = isDraft ? formatMessage(draftMessage) : formatMessage(publishedMessage);
|
const title = isDraft ? formatMessage(draftMessage) : formatMessage(publishedMessage);
|
@ -1,9 +1,10 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { render, screen, fireEvent, act } from '@testing-library/react';
|
import { render, screen, fireEvent, act } from '@testing-library/react';
|
||||||
import { IntlProvider } from 'react-intl';
|
import { IntlProvider } from 'react-intl';
|
||||||
|
|
||||||
|
import { ReactSelect } from '@strapi/helper-plugin';
|
||||||
import { ThemeProvider, lightTheme } from '@strapi/design-system';
|
import { ThemeProvider, lightTheme } from '@strapi/design-system';
|
||||||
|
|
||||||
import ReactSelect from '../../../ReactSelect';
|
|
||||||
import { Option } from '../Option';
|
import { Option } from '../Option';
|
||||||
|
|
||||||
const setup = (props) =>
|
const setup = (props) =>
|
||||||
@ -15,7 +16,7 @@ const setup = (props) =>
|
|||||||
</ThemeProvider>
|
</ThemeProvider>
|
||||||
);
|
);
|
||||||
|
|
||||||
describe('RelationInput || Option', () => {
|
describe('Content-Manager || RelationInput || Option', () => {
|
||||||
it('should render custom Option with published state title', () => {
|
it('should render custom Option with published state title', () => {
|
||||||
setup({ options: [{ mainField: 'relation 1', publicationState: 'published' }] });
|
setup({ options: [{ mainField: 'relation 1', publicationState: 'published' }] });
|
||||||
|
|
@ -11,7 +11,7 @@ const setup = ({ endAction }) =>
|
|||||||
</ThemeProvider>
|
</ThemeProvider>
|
||||||
);
|
);
|
||||||
|
|
||||||
describe('RelationItem', () => {
|
describe('Content-Manager || RelationInput || RelationItem', () => {
|
||||||
it('should render and match snapshot', () => {
|
it('should render and match snapshot', () => {
|
||||||
const { container } = setup({});
|
const { container } = setup({});
|
||||||
|
|
@ -14,7 +14,7 @@ const setup = ({ endAction }) =>
|
|||||||
</ThemeProvider>
|
</ThemeProvider>
|
||||||
);
|
);
|
||||||
|
|
||||||
describe('RelationList', () => {
|
describe('Content-Manager || RelationInput || RelationList', () => {
|
||||||
it('should render and match snapshot', () => {
|
it('should render and match snapshot', () => {
|
||||||
const { container } = setup({});
|
const { container } = setup({});
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||||
|
|
||||||
exports[`RelationItem should render and match snapshot 1`] = `
|
exports[`Content-Manager || RelationInput || RelationItem should render and match snapshot 1`] = `
|
||||||
.c3 {
|
.c3 {
|
||||||
border: 0;
|
border: 0;
|
||||||
-webkit-clip: rect(0 0 0 0);
|
-webkit-clip: rect(0 0 0 0);
|
@ -1,6 +1,6 @@
|
|||||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||||
|
|
||||||
exports[`RelationList should render and match snapshot 1`] = `
|
exports[`Content-Manager || RelationInput || RelationList should render and match snapshot 1`] = `
|
||||||
.c6 {
|
.c6 {
|
||||||
border: 0;
|
border: 0;
|
||||||
-webkit-clip: rect(0 0 0 0);
|
-webkit-clip: rect(0 0 0 0);
|
@ -2,6 +2,7 @@ import PropTypes from 'prop-types';
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import styled from 'styled-components';
|
import styled from 'styled-components';
|
||||||
|
|
||||||
|
import { ReactSelect } from '@strapi/helper-plugin';
|
||||||
import { Badge } from '@strapi/design-system/Badge';
|
import { Badge } from '@strapi/design-system/Badge';
|
||||||
import { Box } from '@strapi/design-system/Box';
|
import { Box } from '@strapi/design-system/Box';
|
||||||
import { BaseLink } from '@strapi/design-system/BaseLink';
|
import { BaseLink } from '@strapi/design-system/BaseLink';
|
||||||
@ -19,15 +20,13 @@ import { RelationItem } from './components/RelationItem';
|
|||||||
import { RelationList } from './components/RelationList';
|
import { RelationList } from './components/RelationList';
|
||||||
import { Option } from './components/Option';
|
import { Option } from './components/Option';
|
||||||
|
|
||||||
import ReactSelect from '../ReactSelect';
|
|
||||||
|
|
||||||
const RelationItemCenterChildren = styled(RelationItem)`
|
const RelationItemCenterChildren = styled(RelationItem)`
|
||||||
div {
|
div {
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
export const RelationInput = ({
|
const RelationInput = ({
|
||||||
description,
|
description,
|
||||||
disabled,
|
disabled,
|
||||||
error,
|
error,
|
||||||
@ -212,3 +211,5 @@ RelationInput.propTypes = {
|
|||||||
searchResults: ReactQuerySearchResult,
|
searchResults: ReactQuerySearchResult,
|
||||||
relations: ReactQueryRelationResult,
|
relations: ReactQueryRelationResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export default RelationInput;
|
@ -1,105 +0,0 @@
|
|||||||
<!--- RelationInput.stories.mdx --->
|
|
||||||
|
|
||||||
import { Meta, ArgsTable, Canvas, Story } from '@storybook/addon-docs';
|
|
||||||
import { BaseLink } from '@strapi/design-system/BaseLink';
|
|
||||||
import { Badge } from '@strapi/design-system/Badge';
|
|
||||||
import { Icon } from '@strapi/design-system/Icon';
|
|
||||||
import { Box } from '@strapi/design-system/Box';
|
|
||||||
import Cross from '@strapi/icons/Cross';
|
|
||||||
import { RelationInput } from './RelationInput';
|
|
||||||
import { relations } from './relationsDataMock';
|
|
||||||
|
|
||||||
<Meta title="components/RelationInput" />
|
|
||||||
|
|
||||||
# RelationInput
|
|
||||||
|
|
||||||
WIP
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
<Canvas>
|
|
||||||
<Story name="base">
|
|
||||||
<Box padding={8}>
|
|
||||||
<RelationInput
|
|
||||||
id="relations-1"
|
|
||||||
label="Relations"
|
|
||||||
labelLoadMore="Load More"
|
|
||||||
listHeight="200px"
|
|
||||||
loadingMessage='Relations are loading'
|
|
||||||
name="options"
|
|
||||||
publicationStateTranslations={{ draft: 'Draft', published: 'Published' }}
|
|
||||||
searchResults={{
|
|
||||||
data: {
|
|
||||||
pages: [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
id: 6,
|
|
||||||
mainField: 'Relation 6',
|
|
||||||
publicationState: 'draft',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 7,
|
|
||||||
mainField: 'Relation 7',
|
|
||||||
publicationState: 'published',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 8,
|
|
||||||
mainField: 'Relation 8',
|
|
||||||
publicationState: false,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
],
|
|
||||||
},
|
|
||||||
isLoading: false,
|
|
||||||
isSuccess: true,
|
|
||||||
}}
|
|
||||||
relations={{
|
|
||||||
data: {
|
|
||||||
pages: [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
id: 1,
|
|
||||||
href: '/',
|
|
||||||
mainField:
|
|
||||||
'Relation 1 with a very very very very very very very very very very very very very very very very very very very super huge really really long title',
|
|
||||||
publicationState: 'draft',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 2,
|
|
||||||
href: '',
|
|
||||||
mainField:
|
|
||||||
'Relation 2 with a very very very very very very very very very very very very very very very very very very very super huge really really long title',
|
|
||||||
publicationState: 'published',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 3,
|
|
||||||
href: '',
|
|
||||||
mainField: 'Relation 3',
|
|
||||||
publicationState: 'published',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 4,
|
|
||||||
href: '',
|
|
||||||
mainField: 'Relation 4',
|
|
||||||
publicationState: 'draft',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 5,
|
|
||||||
href: '',
|
|
||||||
mainField: 'Relation 5',
|
|
||||||
publicationState: false,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
],
|
|
||||||
},
|
|
||||||
isLoading: false,
|
|
||||||
isSuccess: true,
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
</Box>
|
|
||||||
</Story>
|
|
||||||
</Canvas>
|
|
||||||
|
|
||||||
### Props
|
|
||||||
|
|
||||||
<ArgsTable of={RelationItem} />
|
|
@ -1,3 +0,0 @@
|
|||||||
import { RelationInput } from './RelationInput';
|
|
||||||
|
|
||||||
export default RelationInput;
|
|
@ -1,42 +0,0 @@
|
|||||||
export const relations = [
|
|
||||||
{
|
|
||||||
title: 'This is my first article relation',
|
|
||||||
status: 'published',
|
|
||||||
id: 1,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'This is my second article relation',
|
|
||||||
status: 'draft',
|
|
||||||
id: 2,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'This is my third article relation',
|
|
||||||
status: 'published',
|
|
||||||
id: 3,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'This is my fourth article relation',
|
|
||||||
status: 'published',
|
|
||||||
id: 4,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'This is my fifth article relation',
|
|
||||||
status: 'published',
|
|
||||||
id: 5,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'This is my sixth article relation',
|
|
||||||
status: 'draft',
|
|
||||||
id: 6,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'This is my seventh article relation',
|
|
||||||
status: 'published',
|
|
||||||
id: 7,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'This is my eighth article relation',
|
|
||||||
status: 'published',
|
|
||||||
id: 8,
|
|
||||||
},
|
|
||||||
];
|
|
@ -68,7 +68,6 @@ export { default as ReactSelect } from './components/ReactSelect';
|
|||||||
export { default as ReactSelectAsync } from './components/ReactSelect/Async';
|
export { default as ReactSelectAsync } from './components/ReactSelect/Async';
|
||||||
export { default as Link } from './components/Link';
|
export { default as Link } from './components/Link';
|
||||||
export { default as LinkButton } from './components/LinkButton';
|
export { default as LinkButton } from './components/LinkButton';
|
||||||
export { default as RelationInput } from './components/RelationInput';
|
|
||||||
|
|
||||||
// New icons
|
// New icons
|
||||||
export { default as SortIcon } from './icons/SortIcon';
|
export { default as SortIcon } from './icons/SortIcon';
|
||||||
|
Loading…
x
Reference in New Issue
Block a user