@solidxai/core-ui 0.1.6 → 0.1.7-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidTimeField.d.ts","sourceRoot":"","sources":["../../../../../src/components/core/form/fields/SolidTimeField.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"SolidTimeField.d.ts","sourceRoot":"","sources":["../../../../../src/components/core/form/fields/SolidTimeField.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAE3B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAE3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAmCzE,qBAAa,cAAe,YAAW,WAAW;IAE9C,OAAO,CAAC,YAAY,CAAkB;gBAE1B,YAAY,EAAE,eAAe;IAIzC,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,GAAG,GAAG;IAoBnD,YAAY,IAAI,GAAG;IAkBnB,gBAAgB,IAAI,GAAG,CAAC,MAAM;IAa9B,MAAM,CAAC,MAAM,EAAE,YAAY;IAmC3B,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY;CAYjE;AAID,eAAO,MAAM,yBAAyB,6BAA8B,yBAAyB,4CAyD5F,CAAA;AAGD,eAAO,MAAM,yBAAyB,8BAGnC,yBAAyB,4CA4B3B,CAAC"}
|
|
@@ -14,10 +14,10 @@ import { Calendar } from "primereact/calendar";
|
|
|
14
14
|
import { Message } from "primereact/message";
|
|
15
15
|
import { useRef } from "react";
|
|
16
16
|
import * as Yup from 'yup';
|
|
17
|
+
import dayjs from 'dayjs';
|
|
17
18
|
import { getExtensionComponent } from "../../../../helpers/registry";
|
|
18
19
|
import { SolidFieldTooltip } from "../../../../components/common/SolidFieldTooltip";
|
|
19
20
|
import { ERROR_MESSAGES } from "../../../../constants/error-messages";
|
|
20
|
-
import { DateFieldViewComponent } from '../../../../components/core/common/DateFieldViewComponent';
|
|
21
21
|
// Converts multiple time formats into a JavaScript Date object
|
|
22
22
|
function parseTimeStringToDate(timeStr) {
|
|
23
23
|
if (!timeStr)
|
|
@@ -190,6 +190,8 @@ export var DefaultTimeFormViewWidget = function (_a) {
|
|
|
190
190
|
var showFieldLabel = (_c = fieldLayoutInfo === null || fieldLayoutInfo === void 0 ? void 0 : fieldLayoutInfo.attrs) === null || _c === void 0 ? void 0 : _c.showLabel;
|
|
191
191
|
var rawValue = formik.values[fieldName];
|
|
192
192
|
var format = (_d = fieldLayoutInfo.attrs) === null || _d === void 0 ? void 0 : _d.format;
|
|
193
|
-
|
|
193
|
+
var parsedTime = rawValue ? parseTimeStringToDate(rawValue) : null;
|
|
194
|
+
var displayValue = parsedTime ? (format ? dayjs(parsedTime).format(format) : formatTime(parsedTime)) : "-";
|
|
195
|
+
return (_jsxs("div", { className: "mt-2 flex flex-column gap-2", children: [showFieldLabel !== false && (_jsx("p", { className: "m-0 form-field-label font-medium", children: fieldLabel })), _jsx("p", { className: "m-0", children: displayValue })] }));
|
|
194
196
|
};
|
|
195
197
|
//# sourceMappingURL=SolidTimeField.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidTimeField.js","sourceRoot":"","sources":["../../../../../src/components/core/form/fields/SolidTimeField.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport { Calendar } from \"primereact/calendar\";\nimport { Message } from \"primereact/message\";\nimport { useRef } from \"react\";\nimport * as Yup from 'yup';\nimport { FormikObject, ISolidField, SolidFieldProps } from \"./ISolidField\";\nimport { getExtensionComponent } from \"../../../../helpers/registry\";\nimport { SolidFormFieldWidgetProps } from \"../../../../types/solid-core\";\nimport { SolidFieldTooltip } from \"../../../../components/common/SolidFieldTooltip\";\nimport { ERROR_MESSAGES } from \"../../../../constants/error-messages\";\nimport { DateFieldViewComponent } from '../../../../components/core/common/DateFieldViewComponent';\n\n\n// Converts multiple time formats into a JavaScript Date object\nfunction parseTimeStringToDate(timeStr: string): Date | null {\n if (!timeStr) return null;\n\n // CASE 1: HH:mm:ss\n if (typeof timeStr === \"string\" && /^\\d{2}:\\d{2}:\\d{2}$/.test(timeStr)) {\n const [h, m, s] = timeStr.split(\":\").map(Number);\n const d = new Date();\n d.setHours(h, m, s, 0);\n return d;\n }\n\n // CASE 2: timestamp or timestamptz\n try {\n const d = new Date(timeStr); // ← AUTO UTC → LOCAL conversion\n if (!isNaN(d.getTime())) return d;\n } catch (e) {\n console.error(`${ERROR_MESSAGES.FIELD_INAVLID_FORMAT('Date')}:,${e}`)\n }\n\n return null;\n}\n\n// Formats a Date object to a HH:mm:ss string for display\nfunction formatTime(date: Date | null): string {\n if (!date) return \"\";\n return date.toLocaleTimeString();\n}\n\n\nexport class SolidTimeField implements ISolidField {\n\n private fieldContext: SolidFieldProps;\n\n constructor(fieldContext: SolidFieldProps) {\n this.fieldContext = fieldContext;\n }\n\n updateFormData(value: any, formData: FormData): any {\n const fieldLayoutInfo = this.fieldContext.field;\n if (value instanceof Date) {\n // Use local date with selected time\n const now = new Date();\n const localDate = new Date(\n now.getFullYear(),\n now.getMonth(),\n now.getDate(),\n value.getHours(),\n value.getMinutes(),\n value.getSeconds()\n );\n\n formData.append(fieldLayoutInfo.attrs.name, localDate.toISOString());\n } else if (value) {\n formData.append(fieldLayoutInfo.attrs.name, value);\n }\n }\n\n initialValue(): any {\n const fieldName = this.fieldContext.field.attrs.name;\n const fieldDefaultValue = this.fieldContext?.fieldMetadata?.defaultValue;\n const existingValue = this.fieldContext.data[fieldName];\n\n if (existingValue) {\n if (existingValue instanceof Date) {\n return existingValue;\n }\n if (typeof existingValue === \"string\") {\n const parsed = parseTimeStringToDate(existingValue);\n if (parsed) return parsed;\n }\n }\n\n return fieldDefaultValue ? new Date(fieldDefaultValue) : null;\n }\n\n validationSchema(): Yup.Schema {\n let schema = Yup.date().nullable();\n const fieldMetadata = this.fieldContext.fieldMetadata;\n const fieldLayoutInfo = this.fieldContext.field;\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n\n // 1. required \n if (fieldMetadata.required) {\n schema = schema.required(ERROR_MESSAGES.FIELD_REUQIRED(fieldLabel));\n }\n return schema;\n }\n\n render(formik: FormikObject) {\n const fieldMetadata = this.fieldContext.fieldMetadata;\n const fieldLayoutInfo = this.fieldContext.field;\n const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];\n const className = fieldLayoutInfo.attrs?.className || 'field col-12';\n\n\n let viewWidget = fieldLayoutInfo.attrs.viewWidget;\n let editWidget = fieldLayoutInfo.attrs.editWidget;\n if (!editWidget) {\n editWidget = 'DefaultTimeFormEditWidget';\n }\n if (!viewWidget) {\n viewWidget = 'DefaultTimeFormViewWidget';\n }\n const viewMode: string = this.fieldContext.viewMode;\n\n return (\n <>\n <div className={className}>\n {viewMode === \"view\" &&\n this.renderExtensionRenderMode(viewWidget, formik)\n }\n {viewMode === \"edit\" &&\n <>\n {editWidget &&\n this.renderExtensionRenderMode(editWidget, formik)\n }\n </>\n }\n </div>\n </>\n );\n }\n\n renderExtensionRenderMode(widget: string, formik: FormikObject) {\n let DynamicWidget = getExtensionComponent(widget);\n const widgetProps: SolidFormFieldWidgetProps = {\n formik: formik,\n fieldContext: this.fieldContext,\n }\n return (\n <>\n {DynamicWidget && <DynamicWidget {...widgetProps} />}\n </>\n )\n }\n}\n\n\n\nexport const DefaultTimeFormEditWidget = ({ formik, fieldContext }: SolidFormFieldWidgetProps) => {\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n const className = fieldLayoutInfo.attrs?.className || 'field col-12';\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const calendarRef = useRef<any>(null); // Reference for the Calendar component\n const fieldDescription = fieldLayoutInfo.attrs.description ?? fieldMetadata.description;\n const solidFormViewMetaData = fieldContext.solidFormViewMetaData;\n const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;\n const readOnlyPermission = fieldContext.readOnly;\n\n const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];\n\n const fieldDisabled = fieldLayoutInfo.attrs?.disabled;\n const formDisabled = solidFormViewMetaData.data.solidView?.layout?.attrs?.disabled;\n\n const fieldValue = formik.values[fieldLayoutInfo.attrs.name];\n\n\n\n return (\n <div className=\"relative\">\n <div className=\"flex flex-column gap-2 mt-1 sm:mt-2 md:mt-3 lg:mt-4\">\n {showFieldLabel != false &&\n <label htmlFor={fieldLayoutInfo.attrs.name} className=\"form-field-label\">{fieldLabel}\n {fieldMetadata.required && <span className=\"text-red-500\"> *</span>}\n <SolidFieldTooltip fieldContext={fieldContext} />\n {/* {fieldDescription && <span className=\"form_field_help\">({fieldDescription}) </span>} */}\n </label>\n }\n <Calendar\n disabled={formDisabled || fieldDisabled || readOnlyPermission}\n ref={calendarRef} // Attach ref to Calendar\n id={fieldLayoutInfo.attrs.name}\n aria-describedby={`${fieldLayoutInfo.attrs.name}-help`}\n // onChange={formik.handleChange}\n onChange={(e) => fieldContext.onChange(e, 'onFieldChange')}\n\n //@ts-ignore\n // value={formik.values[fieldLayoutInfo.attrs.name] ? formik.values[fieldLayoutInfo.attrs.name] : Date()}\n value={fieldValue instanceof Date ? fieldValue : typeof fieldValue === \"string\" ? parseTimeStringToDate(fieldValue) : null}\n // dateFormat=\"mm/dd/yy\"\n // placeholder=\"mm/dd/yyyy hh:mm\"\n hideOnDateTimeSelect\n timeOnly\n showTime className=\"\"\n hourFormat=\"24\"\n\n />\n </div>\n {isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (\n <div className=\"absolute mt-1\">\n <Message severity=\"error\" text={formik?.errors[fieldLayoutInfo.attrs.name]?.toString()} />\n </div>\n )}\n </div>\n );\n}\n\n\nexport const DefaultTimeFormViewWidget = ({\n formik,\n fieldContext,\n}: SolidFormFieldWidgetProps) => {\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n\n const fieldName = fieldLayoutInfo.attrs.name;\n const fieldLabel =\n fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;\n\n const rawValue = formik.values[fieldName];\n const format = fieldLayoutInfo.attrs?.format\n\n\n return (\n <div className=\"mt-2 flex flex-column gap-2\">\n {showFieldLabel !== false && (\n <p className=\"m-0 form-field-label font-medium\">\n {fieldLabel}\n </p>\n )}\n\n <p className=\"m-0\">\n {/* {displayValue ?? \"-\"} */}\n <DateFieldViewComponent value={rawValue} format={format} fallback=\"-\"></DateFieldViewComponent>\n\n </p>\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"SolidTimeField.js","sourceRoot":"","sources":["../../../../../src/components/core/form/fields/SolidTimeField.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport { Calendar } from \"primereact/calendar\";\nimport { Message } from \"primereact/message\";\nimport { useRef } from \"react\";\nimport * as Yup from 'yup';\nimport dayjs from 'dayjs';\nimport { FormikObject, ISolidField, SolidFieldProps } from \"./ISolidField\";\nimport { getExtensionComponent } from \"../../../../helpers/registry\";\nimport { SolidFormFieldWidgetProps } from \"../../../../types/solid-core\";\nimport { SolidFieldTooltip } from \"../../../../components/common/SolidFieldTooltip\";\nimport { ERROR_MESSAGES } from \"../../../../constants/error-messages\";\n\n\n// Converts multiple time formats into a JavaScript Date object\nfunction parseTimeStringToDate(timeStr: string): Date | null {\n if (!timeStr) return null;\n\n // CASE 1: HH:mm:ss\n if (typeof timeStr === \"string\" && /^\\d{2}:\\d{2}:\\d{2}$/.test(timeStr)) {\n const [h, m, s] = timeStr.split(\":\").map(Number);\n const d = new Date();\n d.setHours(h, m, s, 0);\n return d;\n }\n\n // CASE 2: timestamp or timestamptz\n try {\n const d = new Date(timeStr); // ← AUTO UTC → LOCAL conversion\n if (!isNaN(d.getTime())) return d;\n } catch (e) {\n console.error(`${ERROR_MESSAGES.FIELD_INAVLID_FORMAT('Date')}:,${e}`)\n }\n\n return null;\n}\n\n// Formats a Date object to a HH:mm:ss string for display\nfunction formatTime(date: Date | null): string {\n if (!date) return \"\";\n return date.toLocaleTimeString();\n}\n\n\nexport class SolidTimeField implements ISolidField {\n\n private fieldContext: SolidFieldProps;\n\n constructor(fieldContext: SolidFieldProps) {\n this.fieldContext = fieldContext;\n }\n\n updateFormData(value: any, formData: FormData): any {\n const fieldLayoutInfo = this.fieldContext.field;\n if (value instanceof Date) {\n // Use local date with selected time\n const now = new Date();\n const localDate = new Date(\n now.getFullYear(),\n now.getMonth(),\n now.getDate(),\n value.getHours(),\n value.getMinutes(),\n value.getSeconds()\n );\n\n formData.append(fieldLayoutInfo.attrs.name, localDate.toISOString());\n } else if (value) {\n formData.append(fieldLayoutInfo.attrs.name, value);\n }\n }\n\n initialValue(): any {\n const fieldName = this.fieldContext.field.attrs.name;\n const fieldDefaultValue = this.fieldContext?.fieldMetadata?.defaultValue;\n const existingValue = this.fieldContext.data[fieldName];\n\n if (existingValue) {\n if (existingValue instanceof Date) {\n return existingValue;\n }\n if (typeof existingValue === \"string\") {\n const parsed = parseTimeStringToDate(existingValue);\n if (parsed) return parsed;\n }\n }\n\n return fieldDefaultValue ? new Date(fieldDefaultValue) : null;\n }\n\n validationSchema(): Yup.Schema {\n let schema = Yup.date().nullable();\n const fieldMetadata = this.fieldContext.fieldMetadata;\n const fieldLayoutInfo = this.fieldContext.field;\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n\n // 1. required \n if (fieldMetadata.required) {\n schema = schema.required(ERROR_MESSAGES.FIELD_REUQIRED(fieldLabel));\n }\n return schema;\n }\n\n render(formik: FormikObject) {\n const fieldMetadata = this.fieldContext.fieldMetadata;\n const fieldLayoutInfo = this.fieldContext.field;\n const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];\n const className = fieldLayoutInfo.attrs?.className || 'field col-12';\n\n\n let viewWidget = fieldLayoutInfo.attrs.viewWidget;\n let editWidget = fieldLayoutInfo.attrs.editWidget;\n if (!editWidget) {\n editWidget = 'DefaultTimeFormEditWidget';\n }\n if (!viewWidget) {\n viewWidget = 'DefaultTimeFormViewWidget';\n }\n const viewMode: string = this.fieldContext.viewMode;\n\n return (\n <>\n <div className={className}>\n {viewMode === \"view\" &&\n this.renderExtensionRenderMode(viewWidget, formik)\n }\n {viewMode === \"edit\" &&\n <>\n {editWidget &&\n this.renderExtensionRenderMode(editWidget, formik)\n }\n </>\n }\n </div>\n </>\n );\n }\n\n renderExtensionRenderMode(widget: string, formik: FormikObject) {\n let DynamicWidget = getExtensionComponent(widget);\n const widgetProps: SolidFormFieldWidgetProps = {\n formik: formik,\n fieldContext: this.fieldContext,\n }\n return (\n <>\n {DynamicWidget && <DynamicWidget {...widgetProps} />}\n </>\n )\n }\n}\n\n\n\nexport const DefaultTimeFormEditWidget = ({ formik, fieldContext }: SolidFormFieldWidgetProps) => {\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n const className = fieldLayoutInfo.attrs?.className || 'field col-12';\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const calendarRef = useRef<any>(null); // Reference for the Calendar component\n const fieldDescription = fieldLayoutInfo.attrs.description ?? fieldMetadata.description;\n const solidFormViewMetaData = fieldContext.solidFormViewMetaData;\n const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;\n const readOnlyPermission = fieldContext.readOnly;\n\n const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];\n\n const fieldDisabled = fieldLayoutInfo.attrs?.disabled;\n const formDisabled = solidFormViewMetaData.data.solidView?.layout?.attrs?.disabled;\n\n const fieldValue = formik.values[fieldLayoutInfo.attrs.name];\n\n\n\n return (\n <div className=\"relative\">\n <div className=\"flex flex-column gap-2 mt-1 sm:mt-2 md:mt-3 lg:mt-4\">\n {showFieldLabel != false &&\n <label htmlFor={fieldLayoutInfo.attrs.name} className=\"form-field-label\">{fieldLabel}\n {fieldMetadata.required && <span className=\"text-red-500\"> *</span>}\n <SolidFieldTooltip fieldContext={fieldContext} />\n {/* {fieldDescription && <span className=\"form_field_help\">({fieldDescription}) </span>} */}\n </label>\n }\n <Calendar\n disabled={formDisabled || fieldDisabled || readOnlyPermission}\n ref={calendarRef} // Attach ref to Calendar\n id={fieldLayoutInfo.attrs.name}\n aria-describedby={`${fieldLayoutInfo.attrs.name}-help`}\n // onChange={formik.handleChange}\n onChange={(e) => fieldContext.onChange(e, 'onFieldChange')}\n\n //@ts-ignore\n // value={formik.values[fieldLayoutInfo.attrs.name] ? formik.values[fieldLayoutInfo.attrs.name] : Date()}\n value={fieldValue instanceof Date ? fieldValue : typeof fieldValue === \"string\" ? parseTimeStringToDate(fieldValue) : null}\n // dateFormat=\"mm/dd/yy\"\n // placeholder=\"mm/dd/yyyy hh:mm\"\n hideOnDateTimeSelect\n timeOnly\n showTime className=\"\"\n hourFormat=\"24\"\n\n />\n </div>\n {isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (\n <div className=\"absolute mt-1\">\n <Message severity=\"error\" text={formik?.errors[fieldLayoutInfo.attrs.name]?.toString()} />\n </div>\n )}\n </div>\n );\n}\n\n\nexport const DefaultTimeFormViewWidget = ({\n formik,\n fieldContext,\n}: SolidFormFieldWidgetProps) => {\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n\n const fieldName = fieldLayoutInfo.attrs.name;\n const fieldLabel =\n fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;\n\n const rawValue = formik.values[fieldName];\n const format = fieldLayoutInfo.attrs?.format;\n\n const parsedTime = rawValue ? parseTimeStringToDate(rawValue) : null;\n const displayValue = parsedTime ? (format ? dayjs(parsedTime).format(format) : formatTime(parsedTime)) : \"-\";\n\n return (\n <div className=\"mt-2 flex flex-column gap-2\">\n {showFieldLabel !== false && (\n <p className=\"m-0 form-field-label font-medium\">\n {fieldLabel}\n </p>\n )}\n\n <p className=\"m-0\">\n {displayValue}\n </p>\n </div>\n );\n};\n"]}
|
|
@@ -3,12 +3,12 @@ import { Calendar } from "primereact/calendar";
|
|
|
3
3
|
import { Message } from "primereact/message";
|
|
4
4
|
import { useRef } from "react";
|
|
5
5
|
import * as Yup from 'yup';
|
|
6
|
+
import dayjs from 'dayjs';
|
|
6
7
|
import { FormikObject, ISolidField, SolidFieldProps } from "./ISolidField";
|
|
7
8
|
import { getExtensionComponent } from "../../../../helpers/registry";
|
|
8
9
|
import { SolidFormFieldWidgetProps } from "../../../../types/solid-core";
|
|
9
10
|
import { SolidFieldTooltip } from "../../../../components/common/SolidFieldTooltip";
|
|
10
11
|
import { ERROR_MESSAGES } from "../../../../constants/error-messages";
|
|
11
|
-
import { DateFieldViewComponent } from '../../../../components/core/common/DateFieldViewComponent';
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
// Converts multiple time formats into a JavaScript Date object
|
|
@@ -224,8 +224,10 @@ export const DefaultTimeFormViewWidget = ({
|
|
|
224
224
|
const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;
|
|
225
225
|
|
|
226
226
|
const rawValue = formik.values[fieldName];
|
|
227
|
-
const format = fieldLayoutInfo.attrs?.format
|
|
227
|
+
const format = fieldLayoutInfo.attrs?.format;
|
|
228
228
|
|
|
229
|
+
const parsedTime = rawValue ? parseTimeStringToDate(rawValue) : null;
|
|
230
|
+
const displayValue = parsedTime ? (format ? dayjs(parsedTime).format(format) : formatTime(parsedTime)) : "-";
|
|
229
231
|
|
|
230
232
|
return (
|
|
231
233
|
<div className="mt-2 flex flex-column gap-2">
|
|
@@ -236,9 +238,7 @@ export const DefaultTimeFormViewWidget = ({
|
|
|
236
238
|
)}
|
|
237
239
|
|
|
238
240
|
<p className="m-0">
|
|
239
|
-
{
|
|
240
|
-
<DateFieldViewComponent value={rawValue} format={format} fallback="-"></DateFieldViewComponent>
|
|
241
|
-
|
|
241
|
+
{displayValue}
|
|
242
242
|
</p>
|
|
243
243
|
</div>
|
|
244
244
|
);
|