From faeae0a6f1fc13fb3a094081b4a03bc0bb564ded Mon Sep 17 00:00:00 2001 From: Ivan Vasilov Date: Tue, 17 Dec 2024 11:39:48 +0100 Subject: [PATCH] Pass isNullable to the DatetimeEditor. --- .../grid/components/editor/DateTimeEditor.tsx | 90 ++++++++++--------- .../components/grid/utils/gridColumns.tsx | 12 ++- 2 files changed, 53 insertions(+), 49 deletions(-) diff --git a/apps/studio/components/grid/components/editor/DateTimeEditor.tsx b/apps/studio/components/grid/components/editor/DateTimeEditor.tsx index d03bf0d89fd..143a06e095a 100644 --- a/apps/studio/components/grid/components/editor/DateTimeEditor.tsx +++ b/apps/studio/components/grid/components/editor/DateTimeEditor.tsx @@ -1,4 +1,5 @@ import dayjs from 'dayjs' +import { ChevronDown } from 'lucide-react' import { useEffect, useRef, useState } from 'react' import type { RenderEditCellProps } from 'react-data-grid' @@ -13,14 +14,14 @@ import { PopoverContent_Shadcn_, PopoverTrigger_Shadcn_, } from 'ui' -import { TimestampInfo } from 'ui-patterns' import { Input } from 'ui-patterns/DataInputs/Input' +import { TimestampInfo } from 'ui-patterns/TimestampInfo' import { BlockKeys } from '../common/BlockKeys' -import { ChevronDown } from 'lucide-react' interface BaseEditorProps extends RenderEditCellProps { type: 'date' | 'datetime' | 'datetimetz' + isNullable: boolean } const FORMAT_MAP = { @@ -33,6 +34,7 @@ function BaseEditor({ row, column, type, + isNullable, onRowChange, onClose, }: BaseEditorProps) { @@ -70,7 +72,7 @@ function BaseEditor({ > setInputValue(e.target.value)} className="border-0 rounded-none bg-dash-sidebar outline-none !ring-0 !ring-offset-0" @@ -112,29 +114,44 @@ function BaseEditor({
- - - - + + + + )}
@@ -142,20 +159,9 @@ function BaseEditor({ ) } -export function DateTimeEditor( - props: RenderEditCellProps -) { - return -} - -export function DateTimeWithTimezoneEditor( - props: RenderEditCellProps -) { - return -} - -export function DateEditor( - props: RenderEditCellProps -) { - return +export function DateTimeEditor(type: 'datetime' | 'datetimetz' | 'date', isNullable: boolean) { + // eslint-disable-next-line react/display-name + return (props: RenderEditCellProps) => { + return + } } diff --git a/apps/studio/components/grid/utils/gridColumns.tsx b/apps/studio/components/grid/utils/gridColumns.tsx index 17399335bbb..c6e05b83102 100644 --- a/apps/studio/components/grid/utils/gridColumns.tsx +++ b/apps/studio/components/grid/utils/gridColumns.tsx @@ -2,11 +2,7 @@ import { CalculatedColumn } from 'react-data-grid' import { COLUMN_MIN_WIDTH } from 'components/grid/constants' import { BooleanEditor } from '../components/editor/BooleanEditor' -import { - DateEditor, - DateTimeEditor, - DateTimeWithTimezoneEditor, -} from '../components/editor/DateTimeEditor' +import { DateTimeEditor } from '../components/editor/DateTimeEditor' import { JsonEditor } from '../components/editor/JsonEditor' import { NumberEditor } from '../components/editor/NumberEditor' import { SelectEditor } from '../components/editor/SelectEditor' @@ -144,10 +140,12 @@ function getCellEditor( return (p: any) => } case 'date': { - return DateEditor + return DateTimeEditor('date', columnDefinition.isNullable || false) } case 'datetime': { - return columnDefinition.format.endsWith('z') ? DateTimeWithTimezoneEditor : DateTimeEditor + return columnDefinition.format.endsWith('z') + ? DateTimeEditor('datetimetz', columnDefinition.isNullable || false) + : DateTimeEditor('datetime', columnDefinition.isNullable || false) } case 'time': { return columnDefinition.format.endsWith('z') ? TimeWithTimezoneEditor : TimeEditor