Merge branch 'main' into fix/transfer-timeout-error

This commit is contained in:
Bassel Kanso 2023-03-14 11:44:46 +02:00 committed by GitHub
commit 65afa72d30
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 956 additions and 737 deletions

View File

@ -216,6 +216,10 @@ const createYupSchemaAttribute = (type, validations, options) => {
schema = yup schema = yup
.mixed(errorsTrads.json) .mixed(errorsTrads.json)
.test('isJSON', errorsTrads.json, (value) => { .test('isJSON', errorsTrads.json, (value) => {
if (!value || !value.length) {
return true;
}
try { try {
JSON.parse(value); JSON.parse(value);
@ -226,7 +230,9 @@ const createYupSchemaAttribute = (type, validations, options) => {
}) })
.nullable() .nullable()
.test('required', errorsTrads.required, (value) => { .test('required', errorsTrads.required, (value) => {
if (validations.required && !value.length) return false; if (validations.required && (!value || !value.length)) {
return false;
}
return true; return true;
}); });

View File

@ -5,14 +5,6 @@ const createDefaultForm = (attributes, allComponentsSchema) => {
const attribute = get(attributes, [current], {}); const attribute = get(attributes, [current], {});
const { default: defaultValue, component, type, required, min, repeatable } = attribute; const { default: defaultValue, component, type, required, min, repeatable } = attribute;
if (type === 'json') {
acc[current] = null;
}
if (type === 'json' && required === true) {
acc[current] = {};
}
if (defaultValue !== undefined) { if (defaultValue !== undefined) {
acc[current] = defaultValue; acc[current] = defaultValue;
} }

View File

@ -11,11 +11,6 @@ describe('CONTENT MANAGER | utils | createDefaultForm', () => {
expect(createDefaultForm(attributes, {})).toEqual({}); expect(createDefaultForm(attributes, {})).toEqual({});
}); });
it('should set the json type with the correct value', () => {
expect(createDefaultForm({ test: { type: 'json' } }, {})).toEqual({ test: null });
expect(createDefaultForm({ test: { type: 'json', required: true } }, {})).toEqual({ test: {} });
});
it('should init the requide dynamic zone type with an empty array', () => { it('should init the requide dynamic zone type with an empty array', () => {
expect(createDefaultForm({ test: { type: 'dynamiczone', required: true } })).toEqual({ expect(createDefaultForm({ test: { type: 'dynamiczone', required: true } })).toEqual({
test: [], test: [],

View File

@ -69,6 +69,7 @@ const FormHead = ({
})} })}
</Link> </Link>
} }
ellipsis
/> />
); );
}; };

View File

@ -63,8 +63,8 @@ const Table = ({
condition: canUpdate, condition: canUpdate,
})} })}
> >
<Td> <Td maxWidth={pxToRem(250)}>
<Typography textColor="neutral800" fontWeight="bold"> <Typography textColor="neutral800" fontWeight="bold" ellipsis>
{token.name} {token.name}
</Typography> </Typography>
</Td> </Td>

View File

@ -275,6 +275,10 @@ exports[`ADMIN | Pages | API TOKENS | EditView renders and matches the snapshot
font-weight: 600; font-weight: 600;
font-size: 2rem; font-size: 2rem;
line-height: 1.25; line-height: 1.25;
display: block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
color: #32324d; color: #32324d;
} }
@ -1824,6 +1828,10 @@ exports[`ADMIN | Pages | API TOKENS | EditView renders and matches the snapshot
font-weight: 600; font-weight: 600;
font-size: 2rem; font-size: 2rem;
line-height: 1.25; line-height: 1.25;
display: block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
color: #32324d; color: #32324d;
} }

View File

@ -2,7 +2,7 @@ import * as yup from 'yup';
import { translatedErrors } from '@strapi/helper-plugin'; import { translatedErrors } from '@strapi/helper-plugin';
const schema = yup.object().shape({ const schema = yup.object().shape({
name: yup.string(translatedErrors.string).required(translatedErrors.required), name: yup.string(translatedErrors.string).max(100).required(translatedErrors.required),
type: yup type: yup
.string(translatedErrors.string) .string(translatedErrors.string)
.oneOf(['read-only', 'full-access', 'custom']) .oneOf(['read-only', 'full-access', 'custom'])

View File

@ -158,7 +158,7 @@ describe('ADMIN | Pages | API TOKENS | ListPage', () => {
cursor: pointer; cursor: pointer;
} }
.c36 { .c35 {
max-width: 15.625rem; max-width: 15.625rem;
} }
@ -255,9 +255,13 @@ describe('ADMIN | Pages | API TOKENS | ListPage', () => {
color: #666687; color: #666687;
} }
.c35 { .c36 {
font-size: 0.875rem; font-size: 0.875rem;
line-height: 1.43; line-height: 1.43;
display: block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
font-weight: 600; font-weight: 600;
color: #32324d; color: #32324d;
} }
@ -919,19 +923,19 @@ describe('ADMIN | Pages | API TOKENS | ListPage', () => {
> >
<td <td
aria-colindex="1" aria-colindex="1"
class="c25" class="c35 c25"
role="gridcell" role="gridcell"
tabindex="-1" tabindex="-1"
> >
<span <span
class="c5 c35" class="c5 c36"
> >
My super token My super token
</span> </span>
</td> </td>
<td <td
aria-colindex="2" aria-colindex="2"
class="c36 c25" class="c35 c25"
role="gridcell" role="gridcell"
tabindex="-1" tabindex="-1"
> >

View File

@ -148,6 +148,10 @@ exports[`ADMIN | Pages | TRANSFER TOKENS | EditView renders and matches the snap
font-weight: 600; font-weight: 600;
font-size: 2rem; font-size: 2rem;
line-height: 1.25; line-height: 1.25;
display: block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
color: #32324d; color: #32324d;
} }
@ -1121,6 +1125,10 @@ exports[`ADMIN | Pages | TRANSFER TOKENS | EditView renders and matches the snap
font-weight: 600; font-weight: 600;
font-size: 2rem; font-size: 2rem;
line-height: 1.25; line-height: 1.25;
display: block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
color: #32324d; color: #32324d;
} }

View File

@ -2,7 +2,7 @@ import * as yup from 'yup';
import { translatedErrors } from '@strapi/helper-plugin'; import { translatedErrors } from '@strapi/helper-plugin';
const schema = yup.object().shape({ const schema = yup.object().shape({
name: yup.string(translatedErrors.string).required(translatedErrors.required), name: yup.string(translatedErrors.string).max(100).required(translatedErrors.required),
description: yup.string().nullable(), description: yup.string().nullable(),
lifespan: yup.number().integer().min(0).nullable().defined(translatedErrors.required), lifespan: yup.number().integer().min(0).nullable().defined(translatedErrors.required),
}); });

View File

@ -158,7 +158,7 @@ describe('ADMIN | Pages | TRANSFER TOKENS | ListPage', () => {
cursor: pointer; cursor: pointer;
} }
.c36 { .c35 {
max-width: 15.625rem; max-width: 15.625rem;
} }
@ -255,9 +255,13 @@ describe('ADMIN | Pages | TRANSFER TOKENS | ListPage', () => {
color: #666687; color: #666687;
} }
.c35 { .c36 {
font-size: 0.875rem; font-size: 0.875rem;
line-height: 1.43; line-height: 1.43;
display: block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
font-weight: 600; font-weight: 600;
color: #32324d; color: #32324d;
} }
@ -919,19 +923,19 @@ describe('ADMIN | Pages | TRANSFER TOKENS | ListPage', () => {
> >
<td <td
aria-colindex="1" aria-colindex="1"
class="c25" class="c35 c25"
role="gridcell" role="gridcell"
tabindex="-1" tabindex="-1"
> >
<span <span
class="c5 c35" class="c5 c36"
> >
My super token My super token
</span> </span>
</td> </td>
<td <td
aria-colindex="2" aria-colindex="2"
class="c36 c25" class="c35 c25"
role="gridcell" role="gridcell"
tabindex="-1" tabindex="-1"
> >

File diff suppressed because it is too large Load Diff

View File

@ -48,6 +48,7 @@ const formatAttribute = (key, attribute) => {
multiple: !!attribute.multiple, multiple: !!attribute.multiple,
required: !!required, required: !!required,
configurable: configurable === false ? false : undefined, configurable: configurable === false ? false : undefined,
private: !!attribute.private,
allowedTypes: attribute.allowedTypes, allowedTypes: attribute.allowedTypes,
pluginOptions, pluginOptions,
}; };

View File

@ -4,20 +4,20 @@ import { useState } from 'react';
import { Meta, Story, Canvas } from '@storybook/addon-docs/blocks'; import { Meta, Story, Canvas } from '@storybook/addon-docs/blocks';
import DateTimePicker from './index'; import DateTimePicker from './index';
<Meta <Meta
title="components/DateTimePicker" title="components/DateTimePicker"
component={DateTimePicker} component={DateTimePicker}
argTypes={{ argTypes={{
label: { label: {
control: { control: {
type: 'text' type: 'text',
} },
}, },
value: { value: {
control: { control: {
type: 'date' type: 'date',
} },
} },
}} }}
/> />
@ -37,7 +37,7 @@ Description...
<DateTimePicker <DateTimePicker
onClear={() => setValue(undefined)} onClear={() => setValue(undefined)}
value={value} value={value}
onChange={e => setValue(e)} onChange={(e) => setValue(e)}
label="Date time picker" label="Date time picker"
hint="This is a super description" hint="This is a super description"
/> />
@ -53,6 +53,7 @@ Description...
<Canvas> <Canvas>
<Story name="error"> <Story name="error">
<DateTimePicker <DateTimePicker
label="Date time picker"
hint="This is a super description" hint="This is a super description"
error="Very very very very very very very long error" error="Very very very very very very very long error"
/> />

View File

@ -4,6 +4,7 @@ import { useEffect, useState, useRef } from 'react';
import { Meta, ArgsTable, Canvas, Story } from '@storybook/addon-docs'; import { Meta, ArgsTable, Canvas, Story } from '@storybook/addon-docs';
import { Button, Box, Main, Flex } from '@strapi/design-system'; import { Button, Box, Main, Flex } from '@strapi/design-system';
import useQueryParams from '../../hooks/useQueryParams'; import useQueryParams from '../../hooks/useQueryParams';
import useTracking from '../../hooks/useTracking';
import FilterListURLQuery from '../FilterListURLQuery'; import FilterListURLQuery from '../FilterListURLQuery';
import FilterPopoverURLQuery from './index'; import FilterPopoverURLQuery from './index';
@ -51,6 +52,7 @@ import { FilterListURLQuery } from '@strapi/helper-plugin';
metadatas: { label: 'city' }, metadatas: { label: 'city' },
}, },
]; ];
const { trackUsage } = useTracking();
return ( return (
<Main> <Main>
<Flex direction="column" alignItems="stretch" gap={6}> <Flex direction="column" alignItems="stretch" gap={6}>

View File

@ -142,11 +142,12 @@ const GenericInput = ({
labelAction={labelAction} labelAction={labelAction}
value={value} value={value}
error={errorMessage} error={errorMessage}
disabled={disabled}
hint={hint} hint={hint}
required={required} required={required}
onChange={(json) => { onChange={(json) => {
// Default to null when the field is not required and there is no input value // Default to null when the field is not required and there is no input value
const value = !attribute.required && !json.length ? 'null' : json; const value = !attribute.required && !json.length ? null : json;
onChange({ target: { name, value } }); onChange({ target: { name, value } });
}} }}
minHeight={pxToRem(252)} minHeight={pxToRem(252)}