Skip to content

Commit

Permalink
Merge pull request #13815 from strapi/fix/ui-bug-datetimepicker-from-…
Browse files Browse the repository at this point in the history
…another-locale-13674

fix/ui-bug-datetimepicker-from-another-locale-13674
  • Loading branch information
simotae14 committed Jul 27, 2022
2 parents b3b6bdf + 81c5cd0 commit af565b0
Show file tree
Hide file tree
Showing 7 changed files with 103 additions and 6 deletions.
4 changes: 3 additions & 1 deletion packages/core/database/lib/query/helpers/where.js
Expand Up @@ -134,7 +134,9 @@ const processWhere = (where, ctx) => {
}

if (isOperator(key)) {
throw new Error(`Only $and, $or and $not can only be used as root level operators. Found ${key}.`);
throw new Error(
`Only $and, $or and $not can only be used as root level operators. Found ${key}.`
);
}

const attribute = meta.attributes[key];
Expand Down
3 changes: 2 additions & 1 deletion packages/core/helper-plugin/.gitignore
Expand Up @@ -12,4 +12,5 @@ yarn-error.log
.DS_Store
npm-debug.log
.idea
stats.html
stats.html
coverage
Expand Up @@ -4,7 +4,22 @@ import { useState } from 'react';
import { Meta, Story, Canvas } from '@storybook/addon-docs/blocks';
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

Expand Down Expand Up @@ -38,7 +53,6 @@ Description...
<Canvas>
<Story name="error">
<DateTimePicker
label="Date time picker"
hint="This is a super description"
error="Very very very very very very very long error"
/>
Expand All @@ -54,7 +68,7 @@ Description...
<DateTimePicker
label="Date time picker"
hint="This is a super description"
value="2021-10-13T10dd:00:00.000Z"
value="2021-10-13T10:00:00.000Z"
/>
</Story>
</Canvas>
@@ -1,4 +1,4 @@
import React, { useState } from 'react';
import React, { useEffect, useState } from 'react';
import PropTypes from 'prop-types';
import styled from 'styled-components';
import { Stack } from '@strapi/design-system/Stack';
Expand Down Expand Up @@ -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 (
<CustomField
name={name}
Expand Down
Expand Up @@ -40,4 +40,67 @@ describe('DateTimePicker', () => {

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('');
});
});
1 change: 1 addition & 0 deletions packages/core/helper-plugin/package.json
Expand Up @@ -35,6 +35,7 @@
"prepublishOnly": "npm run build",
"storybook": "start-storybook -p 6006",
"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",
"watch": "yarn create:index && cross-env NODE_ENV=development webpack-cli -w"
},
Expand Down
1 change: 1 addition & 0 deletions test/config/front/global-setup.js
@@ -1,3 +1,4 @@
module.exports = async () => {
process.env.TZ = 'UTC';
process.env.LANG = 'en_US.UTF-8';
};

0 comments on commit af565b0

Please sign in to comment.