Merge branch 'master' into releases/4.3.0

This commit is contained in:
Convly 2022-07-27 12:55:48 +02:00
commit ba91f47f04
10 changed files with 829 additions and 796 deletions

View File

@ -51,7 +51,6 @@ module.exports = {
'<rootDir>/packages/admin-test-utils/lib/setup/styled-components.js', '<rootDir>/packages/admin-test-utils/lib/setup/styled-components.js',
'<rootDir>/packages/admin-test-utils/lib/setup/strapi.js', '<rootDir>/packages/admin-test-utils/lib/setup/strapi.js',
], ],
testEnvironment: 'jsdom',
transform: { transform: {
'^.+\\.js$': ['@swc/jest', { jsc: { parser: { jsx: true, dynamicImport: true } } }], '^.+\\.js$': ['@swc/jest', { jsc: { parser: { jsx: true, dynamicImport: true } } }],
'\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$':

View File

@ -99,11 +99,10 @@
"glob": "7.2.3", "glob": "7.2.3",
"husky": "3.1.0", "husky": "3.1.0",
"istanbul": "~0.4.2", "istanbul": "~0.4.2",
"jest": "28.1.3", "jest": "26.6.3",
"jest-circus": "28.1.3", "jest-circus": "26.6.3",
"jest-cli": "28.1.3", "jest-cli": "26.6.3",
"jest-environment-jsdom": "28.1.3", "jest-watch-typeahead": "0.6.5",
"jest-watch-typeahead": "2.0.0",
"lerna": "5.1.6", "lerna": "5.1.6",
"lint-staged": "10.5.4", "lint-staged": "10.5.4",
"lodash": "4.17.21", "lodash": "4.17.21",

View File

@ -238,7 +238,8 @@ const EditViewDataManagerProvider = ({
['text', 'textarea', 'string', 'email', 'uid', 'select', 'select-one', 'number'].includes( ['text', 'textarea', 'string', 'email', 'uid', 'select', 'select-one', 'number'].includes(
type type
) && ) &&
!value !value &&
value !== 0
) { ) {
inputValue = null; inputValue = null;
} }

View File

@ -12,4 +12,5 @@ yarn-error.log
.DS_Store .DS_Store
npm-debug.log npm-debug.log
.idea .idea
stats.html stats.html
coverage

View File

@ -4,7 +4,22 @@ 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 title="components/DateTimePicker" component={DateTimePicker} /> <Meta
title="components/DateTimePicker"
component={DateTimePicker}
argTypes={{
label: {
control: {
type: 'text'
}
},
value: {
control: {
type: 'date'
}
}
}}
/>
# DateTimePicker # DateTimePicker
@ -38,7 +53,6 @@ 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"
/> />
@ -54,7 +68,7 @@ Description...
<DateTimePicker <DateTimePicker
label="Date time picker" label="Date time picker"
hint="This is a super description" hint="This is a super description"
value="2021-10-13T10dd:00:00.000Z" value="2021-10-13T10:00:00.000Z"
/> />
</Story> </Story>
</Canvas> </Canvas>

View File

@ -1,4 +1,4 @@
import React, { useState } from 'react'; import React, { useEffect, useState } from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import styled from 'styled-components'; import styled from 'styled-components';
import { Stack } from '@strapi/design-system/Stack'; import { Stack } from '@strapi/design-system/Stack';
@ -109,6 +109,21 @@ const DateTimePicker = ({
} }
}; };
useEffect(() => {
if (value) {
const parsedData = parseDate(value);
setDateValue(parsedData);
setTimeValue(
parsedData
? `${parsedData.getHours()}:${parsedData.getMinutes()}:${parsedData.getSeconds()}`
: null
);
} else {
setDateValue(undefined);
setTimeValue(undefined);
}
}, [value]);
return ( return (
<CustomField <CustomField
name={name} name={name}

View File

@ -40,4 +40,67 @@ describe('DateTimePicker', () => {
expect(datepicker.value).toBe('10/13/2021'); expect(datepicker.value).toBe('10/13/2021');
}); });
it('should rerender a new value passed as props', () => {
const { rerender } = render(
<ThemeProvider theme={lightTheme}>
<DateTimePicker
value={new Date('2021-10-13T13:43:00.000Z')}
step={15}
onChange={() => {}}
name="datetimepicker"
label="Date time picker"
hint="This is a super description"
/>
</ThemeProvider>
);
rerender(
<ThemeProvider theme={lightTheme}>
<DateTimePicker
value={new Date('2021-10-04T13:00:00.000Z')}
step={15}
onChange={() => {}}
name="datetimepicker"
label="Date time picker"
hint="This is a super description"
/>
</ThemeProvider>
);
const datepicker = screen.getByTestId('datetimepicker-date');
expect(datepicker.value).toBe('10/4/2021');
});
it('should rerender an empty value if it is passed as props', () => {
const { rerender } = render(
<ThemeProvider theme={lightTheme}>
<DateTimePicker
value={new Date('2021-10-13T13:43:00.000Z')}
step={15}
onChange={() => {}}
name="datetimepicker"
label="Date time picker"
hint="This is a super description"
/>
</ThemeProvider>
);
rerender(
<ThemeProvider theme={lightTheme}>
<DateTimePicker
step={15}
onChange={() => {}}
name="datetimepicker"
label="Date time picker"
hint="This is a super description"
/>
</ThemeProvider>
);
const datepicker = screen.getByTestId('datetimepicker-date');
expect(datepicker.value).toBe('');
});
}); });

View File

@ -34,6 +34,7 @@
"prepublishOnly": "npm run build", "prepublishOnly": "npm run build",
"storybook": "start-storybook -p 6006", "storybook": "start-storybook -p 6006",
"test:front": "jest --config ./jest.config.front.js", "test:front": "jest --config ./jest.config.front.js",
"test:front:cov": "jest --config ./jest.config.front.js --coverage --collectCoverageFrom='<rootDir>/packages/core/helper-plugin/lib/src/**/*.js' --coverageDirectory='<rootDir>/packages/core/helper-plugin/coverage'",
"test:front:watch": "jest --config ./jest.config.front.js --watchAll", "test:front:watch": "jest --config ./jest.config.front.js --watchAll",
"watch": "yarn create:index && cross-env NODE_ENV=development webpack-cli -w" "watch": "yarn create:index && cross-env NODE_ENV=development webpack-cli -w"
}, },

View File

@ -1,3 +1,4 @@
module.exports = async () => { module.exports = async () => {
process.env.TZ = 'UTC'; process.env.TZ = 'UTC';
process.env.LANG = 'en_US.UTF-8';
}; };

1507
yarn.lock

File diff suppressed because it is too large Load Diff