diff --git a/web/package.json b/web/package.json
index 518d01a2c..b4c3f9871 100644
--- a/web/package.json
+++ b/web/package.json
@@ -75,6 +75,7 @@
"dependencies": {
"@babel/plugin-proposal-class-properties": "^7.10.4",
"@babel/preset-react": "^7.12.13",
+ "@date-io/core": "^1.3.6",
"@date-io/date-fns": "1.x",
"@emotion/sheet": "^1.0.1",
"@fortawesome/fontawesome-free": "^5.14.0",
diff --git a/web/pgadmin/static/js/components/FormComponents.jsx b/web/pgadmin/static/js/components/FormComponents.jsx
index 3c360fe44..58afb7c37 100644
--- a/web/pgadmin/static/js/components/FormComponents.jsx
+++ b/web/pgadmin/static/js/components/FormComponents.jsx
@@ -30,8 +30,6 @@ import { KeyboardDateTimePicker, KeyboardDatePicker, KeyboardTimePicker, MuiPick
import DateFnsUtils from '@date-io/date-fns';
import * as DateFns from 'date-fns';
-import moment from 'moment';
-
import CodeMirror from './CodeMirror';
import gettext from 'sources/gettext';
import { showFileDialog } from '../helpers/legacyConnector';
@@ -205,7 +203,7 @@ FormInputSQL.propTypes = {
/* https://date-fns.org/v2.24.0/docs/format */
const DATE_TIME_FORMAT = {
DATE_TIME_12: 'yyyy-MM-dd hh:mm:ss aa xxx',
- DATE_TIME_24: 'yyyy-MM-dd HH:mm:ss XXX',
+ DATE_TIME_24: 'yyyy-MM-dd HH:mm:ss xxx',
DATE: 'yyyy-MM-dd',
TIME_12: 'hh:mm:ss aa',
TIME_24: 'HH:mm:ss',
@@ -213,16 +211,20 @@ const DATE_TIME_FORMAT = {
export function InputDateTimePicker({value, onChange, readonly, controlProps, ...props}) {
let format = '';
+ let placeholder = '';
if (controlProps?.pickerType === 'Date') {
format = controlProps.format || DATE_TIME_FORMAT.DATE;
+ placeholder = controlProps.placeholder || 'YYYY-MM-DD';
} else if (controlProps?.pickerType === 'Time') {
format = controlProps.format || (controlProps.ampm ? DATE_TIME_FORMAT.TIME_12 : DATE_TIME_FORMAT.TIME_24);
+ placeholder = controlProps.placeholder || 'HH:mm:ss';
} else {
format = controlProps.format || (controlProps.ampm ? DATE_TIME_FORMAT.DATE_TIME_12 : DATE_TIME_FORMAT.DATE_TIME_24);
+ placeholder = controlProps.placeholder || 'YYYY-MM-DD HH:mm:ss Z';
}
- const handleChange = (dateVal)=> {
- onChange(DateFns.format(dateVal, format));
+ const handleChange = (dateVal, stringVal)=> {
+ onChange(stringVal);
};
/* Value should be a date object instead of string */
@@ -232,7 +234,7 @@ export function InputDateTimePicker({value, onChange, readonly, controlProps, ..
if(!DateFns.isValid(parseValue)) {
parseValue = DateFns.parseISO(value);
}
- value = !DateFns.isValid(parseValue) ? null : parseValue;
+ value = !DateFns.isValid(parseValue) ? value : parseValue;
}
if (readonly) {
@@ -240,47 +242,41 @@ export function InputDateTimePicker({value, onChange, readonly, controlProps, ..
readonly={readonly} controlProps={{placeholder: controlProps.placeholder}} {...props}/>);
}
+ let commonProps = {
+ ...props,
+ value: value,
+ format: format,
+ placeholder: placeholder,
+ label: '',
+ variant: 'inline',
+ readOnly: Boolean(readonly),
+ autoOk: controlProps.autoOk || false,
+ ampm: controlProps.ampm || false,
+ disablePast: controlProps.disablePast || false,
+ invalidDateMessage: '',
+ maxDateMessage: '',
+ minDateMessage: '',
+ onChange: handleChange,
+ fullWidth: true,
+ };
+
if (controlProps?.pickerType === 'Date') {
return (
-
+
);
} else if (controlProps?.pickerType === 'Time') {
- let newValue = (!_.isNull(value) && !_.isUndefined(value)) ? moment(value, 'HH:mm').toDate() : value;
return (
-
+
);
}
return (
-
+
);
}
diff --git a/web/yarn.lock b/web/yarn.lock
index 9e1392550..5583c9bf4 100644
--- a/web/yarn.lock
+++ b/web/yarn.lock
@@ -1145,7 +1145,7 @@
"@babel/helper-validator-identifier" "^7.14.9"
to-fast-properties "^2.0.0"
-"@date-io/core@1.x", "@date-io/core@^1.3.13":
+"@date-io/core@1.x", "@date-io/core@^1.3.13", "@date-io/core@^1.3.6":
version "1.3.13"
resolved "https://registry.yarnpkg.com/@date-io/core/-/core-1.3.13.tgz#90c71da493f20204b7a972929cc5c482d078b3fa"
integrity sha512-AlEKV7TxjeK+jxWVKcCFrfYAk8spX9aCyiToFIiLPtfQbsjmRGLIhb5VZgptQcJdHtLXo7+m0DuurwFgUToQuA==