@bigbinary/neeto-atoms 1.1.1 → 1.1.3
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.
- package/dist/{DatePicker-BC9AOZJ2.js → DatePicker-CMlA-hNW.js} +478 -280
- package/dist/DatePicker-CMlA-hNW.js.map +1 -0
- package/dist/{TranslationProvider-BJjfFEgX.js → TranslationProvider-DKdbPweu.js} +9 -2
- package/dist/{TranslationProvider-BJjfFEgX.js.map → TranslationProvider-DKdbPweu.js.map} +1 -1
- package/dist/cjs/{DatePicker-aGLz-3Bz.js → DatePicker-CBxWLALJ.js} +477 -279
- package/dist/cjs/DatePicker-CBxWLALJ.js.map +1 -0
- package/dist/cjs/{TranslationProvider-C1JDwKEN.js → TranslationProvider-Cao2ugzJ.js} +9 -2
- package/dist/cjs/{TranslationProvider-C1JDwKEN.js.map → TranslationProvider-Cao2ugzJ.js.map} +1 -1
- package/dist/cjs/components/DatePicker.js +1 -1
- package/dist/cjs/components/TranslationProvider.js +1 -1
- package/dist/cjs/components/index.js +2 -2
- package/dist/cjs/formik/Form.js +1 -0
- package/dist/cjs/formik/Form.js.map +1 -1
- package/dist/cjs/index.js +5 -5
- package/dist/components/DatePicker/DatePickerFooter.d.ts +1 -1
- package/dist/components/DatePicker/RangeCalendar.d.ts +2 -1
- package/dist/components/DatePicker/RangeTimeSection.d.ts +37 -0
- package/dist/components/DatePicker/SegmentedTimeInput.d.ts +7 -1
- package/dist/components/DatePicker/TimeSection.d.ts +3 -0
- package/dist/components/DatePicker/types.d.ts +5 -2
- package/dist/components/DatePicker/useRangePicker.d.ts +4 -2
- package/dist/components/DatePicker/utils.d.ts +2 -1
- package/dist/components/DatePicker.js +1 -1
- package/dist/components/TranslationProvider.js +1 -1
- package/dist/components/index.js +2 -2
- package/dist/formik/Form.js +1 -0
- package/dist/formik/Form.js.map +1 -1
- package/dist/index.js +2 -2
- package/dist/translations/index.d.ts +7 -0
- package/package.json +1 -1
- package/dist/DatePicker-BC9AOZJ2.js.map +0 -1
- package/dist/cjs/DatePicker-aGLz-3Bz.js.map +0 -1
package/dist/cjs/index.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var utils$1 = require('@bigbinary/neeto-commons-frontend/utils');
|
|
4
|
-
var TranslationProvider = require('./TranslationProvider-
|
|
4
|
+
var TranslationProvider = require('./TranslationProvider-Cao2ugzJ.js');
|
|
5
|
+
var DirectionProvider = require('./DirectionProvider-BTtE4FcN.js');
|
|
5
6
|
var components_DropdownMenu = require('./components/DropdownMenu.js');
|
|
6
7
|
var useMobile = require('./use-mobile-Be9CI6km.js');
|
|
7
8
|
var utils = require('./utils-BhM0B89p.js');
|
|
@@ -14,9 +15,8 @@ var Callout = require('./Callout-Bci3POCo.js');
|
|
|
14
15
|
var Checkbox = require('./Checkbox-83g1FDsc.js');
|
|
15
16
|
var ColorPicker = require('./ColorPicker-CODJ0QKs.js');
|
|
16
17
|
var DataTable = require('./DataTable-KvsmFjeu.js');
|
|
17
|
-
var DatePicker = require('./DatePicker-
|
|
18
|
+
var DatePicker = require('./DatePicker-CBxWLALJ.js');
|
|
18
19
|
var Dialog = require('./Dialog-B_FZwr_u.js');
|
|
19
|
-
var DirectionProvider = require('./DirectionProvider-BTtE4FcN.js');
|
|
20
20
|
var Empty = require('./Empty-Bwpsj82B.js');
|
|
21
21
|
var Input = require('./Input-DFvMBpiU.js');
|
|
22
22
|
var Kbd = require('./Kbd--A8Gl8TV.js');
|
|
@@ -44,6 +44,7 @@ require('react/jsx-runtime');
|
|
|
44
44
|
require('react');
|
|
45
45
|
require('react-i18next');
|
|
46
46
|
require('i18next');
|
|
47
|
+
require('./index-BY6wgiQV.js');
|
|
47
48
|
require('./primitives/DropdownMenu.js');
|
|
48
49
|
require('./chevron-right-0jNdwX2Q.js');
|
|
49
50
|
require('./createLucideIcon-D0tRgV6l.js');
|
|
@@ -57,7 +58,6 @@ require('./index-DMbj7vXd.js');
|
|
|
57
58
|
require('react-dom');
|
|
58
59
|
require('./index-CMFCdiR6.js');
|
|
59
60
|
require('./index-Ch55j1or.js');
|
|
60
|
-
require('./index-BY6wgiQV.js');
|
|
61
61
|
require('./index-Bvu9MiFi.js');
|
|
62
62
|
require('./index-lWVw05cs.js');
|
|
63
63
|
require('./index-CS_WSHYi.js');
|
|
@@ -153,6 +153,7 @@ Object.defineProperty(exports, "dayjs", {
|
|
|
153
153
|
});
|
|
154
154
|
exports.TranslationProvider = TranslationProvider.TranslationProvider;
|
|
155
155
|
exports.translations = TranslationProvider.resources;
|
|
156
|
+
exports.DirectionProvider = DirectionProvider.DirectionProvider;
|
|
156
157
|
exports.DropdownMenu = components_DropdownMenu.DropdownMenu;
|
|
157
158
|
exports.useIsMobile = useMobile.useIsMobile;
|
|
158
159
|
exports.cn = utils.cn;
|
|
@@ -173,7 +174,6 @@ exports.useTableSelection = DataTable.useTableSelection;
|
|
|
173
174
|
exports.useTableSort = DataTable.useTableSort;
|
|
174
175
|
exports.DatePicker = DatePicker.DatePicker;
|
|
175
176
|
exports.Dialog = Dialog.Dialog;
|
|
176
|
-
exports.DirectionProvider = DirectionProvider.DirectionProvider;
|
|
177
177
|
exports.Empty = Empty.Empty;
|
|
178
178
|
exports.Input = Input.Input;
|
|
179
179
|
exports.Kbd = Kbd.KbdNamespace;
|
|
@@ -12,8 +12,9 @@ interface RangeCalendarProps {
|
|
|
12
12
|
endMonth: Date;
|
|
13
13
|
onHoverIn: (e: React.MouseEvent<HTMLElement>) => void;
|
|
14
14
|
onHoverOut: () => void;
|
|
15
|
+
onKeyDown?: (e: React.KeyboardEvent<HTMLDivElement>) => void;
|
|
15
16
|
numberOfMonths?: number;
|
|
16
17
|
className?: string;
|
|
17
18
|
}
|
|
18
|
-
export declare const RangeCalendar: ({ todayDate, weekStartsOn, month, onMonthChange, selected, onSelect, disabled, startMonth, endMonth, onHoverIn, onHoverOut, numberOfMonths, className, }: RangeCalendarProps) => import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
export declare const RangeCalendar: ({ todayDate, weekStartsOn, month, onMonthChange, selected, onSelect, disabled, startMonth, endMonth, onHoverIn, onHoverOut, onKeyDown, numberOfMonths, className, }: RangeCalendarProps) => import("react/jsx-runtime").JSX.Element;
|
|
19
20
|
export {};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { TimeValue } from "../TimePicker/types";
|
|
3
|
+
import { type SegmentedTimeInputHandle } from "./SegmentedTimeInput";
|
|
4
|
+
import type { RangeEndpoint } from "./useRangePicker";
|
|
5
|
+
interface RangeTimeSectionProps {
|
|
6
|
+
/** The picked days, formatted, e.g. "15/11/2026"; empty until picked. */
|
|
7
|
+
fromDateLabel: string;
|
|
8
|
+
toDateLabel: string;
|
|
9
|
+
/** The end falls on the start's day, picked or not; End reads "Same day". */
|
|
10
|
+
isEndOnStartDay: boolean;
|
|
11
|
+
fromValue: TimeValue;
|
|
12
|
+
toValue: TimeValue;
|
|
13
|
+
onFromChange: (value: TimeValue) => void;
|
|
14
|
+
onToChange: (value: TimeValue) => void;
|
|
15
|
+
/**
|
|
16
|
+
* The endpoint the next calendar click sets; its heading is highlighted.
|
|
17
|
+
* Only the headings switch it, so typing a time doesn't redirect the click.
|
|
18
|
+
*/
|
|
19
|
+
activeEndpoint: RangeEndpoint;
|
|
20
|
+
onEndpointSelect: (endpoint: RangeEndpoint) => void;
|
|
21
|
+
/** Minute increment; also shows the hint naming it. Omit for any minute. */
|
|
22
|
+
minuteStep?: number;
|
|
23
|
+
/** Reports whether either typed time is incomplete, so OK can refuse it. */
|
|
24
|
+
onErrorChange: (hasError: boolean) => void;
|
|
25
|
+
/** Show incomplete-time errors, e.g. right after OK. */
|
|
26
|
+
showError: boolean;
|
|
27
|
+
/** The end is not after the start: both days are the same. */
|
|
28
|
+
isOrderInvalid: boolean;
|
|
29
|
+
/** e.g. "India Standard Time (UTC+5:30)"; hidden when null. */
|
|
30
|
+
timezoneLabel: string | null;
|
|
31
|
+
/** Lets the picker move focus to the start time. */
|
|
32
|
+
fromTimeRef?: React.Ref<SegmentedTimeInputHandle>;
|
|
33
|
+
disabled?: boolean;
|
|
34
|
+
className?: string;
|
|
35
|
+
}
|
|
36
|
+
declare const RangeTimeSection: React.FC<RangeTimeSectionProps>;
|
|
37
|
+
export { RangeTimeSection };
|
|
@@ -11,7 +11,13 @@ interface SegmentedTimeInputProps {
|
|
|
11
11
|
invalid?: boolean;
|
|
12
12
|
disabled?: boolean;
|
|
13
13
|
autoFocus?: boolean;
|
|
14
|
+
"aria-label"?: string;
|
|
14
15
|
"aria-describedby"?: string;
|
|
16
|
+
"data-testid"?: string;
|
|
15
17
|
}
|
|
16
|
-
|
|
18
|
+
export interface SegmentedTimeInputHandle {
|
|
19
|
+
/** Focuses the field with its hour part active. */
|
|
20
|
+
focusHour: () => void;
|
|
21
|
+
}
|
|
22
|
+
declare const SegmentedTimeInput: React.ForwardRefExoticComponent<SegmentedTimeInputProps & React.RefAttributes<SegmentedTimeInputHandle>>;
|
|
17
23
|
export { SegmentedTimeInput };
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import type { TimeValue } from "../TimePicker/types";
|
|
3
|
+
import type { SegmentedTimeError } from "./segmentedTime";
|
|
3
4
|
interface TimeSectionProps {
|
|
4
5
|
value: TimeValue;
|
|
5
6
|
/** Minute increment; also shows the hint naming it. Omit for any minute. */
|
|
@@ -18,5 +19,7 @@ interface TimeSectionProps {
|
|
|
18
19
|
disabled?: boolean;
|
|
19
20
|
className?: string;
|
|
20
21
|
}
|
|
22
|
+
export declare const ERROR_DEFAULTS: Record<SegmentedTimeError, string>;
|
|
23
|
+
export declare const stepExamples: (step: number) => [string, string];
|
|
21
24
|
declare const TimeSection: React.FC<TimeSectionProps>;
|
|
22
25
|
export { TimeSection };
|
|
@@ -25,9 +25,12 @@ export interface DatePickerProps {
|
|
|
25
25
|
dateFormat?: string;
|
|
26
26
|
/** Time format string (date-fns compatible, e.g. "HH:mm:ss"). */
|
|
27
27
|
timeFormat?: string;
|
|
28
|
-
/**
|
|
28
|
+
/**
|
|
29
|
+
* Show the typed time field below the calendar. Ranges get a Start and an
|
|
30
|
+
* End field; a new range ends at the end of its last day.
|
|
31
|
+
*/
|
|
29
32
|
showTime?: boolean;
|
|
30
|
-
/** Show the "Now" button in the footer. Defaults to true
|
|
33
|
+
/** Show the "Now" button in the footer. Defaults to true; never shown for a range with `showTime`. */
|
|
31
34
|
showNow?: boolean;
|
|
32
35
|
/**
|
|
33
36
|
* With `showTime`, the minute increment, e.g. 5: typed minutes snap to it,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { DateRange } from "react-day-picker";
|
|
2
2
|
type RangeTuple = [Date | null, Date | null];
|
|
3
|
+
export type RangeEndpoint = "from" | "to";
|
|
3
4
|
interface UseRangePickerOptions {
|
|
4
5
|
currentValue: unknown;
|
|
5
6
|
showTime: boolean;
|
|
@@ -9,8 +10,9 @@ interface UseRangePickerOptions {
|
|
|
9
10
|
}
|
|
10
11
|
export declare const useRangePicker: ({ currentValue, showTime, needConfirm, commitValue, setOpen, }: UseRangePickerOptions) => {
|
|
11
12
|
pendingRange: RangeTuple | null;
|
|
12
|
-
|
|
13
|
-
|
|
13
|
+
setPendingRange: import("react").Dispatch<import("react").SetStateAction<RangeTuple | null>>;
|
|
14
|
+
activeEndpoint: RangeEndpoint;
|
|
15
|
+
setActiveEndpoint: import("react").Dispatch<import("react").SetStateAction<RangeEndpoint>>;
|
|
14
16
|
hoveredDate: Date | null;
|
|
15
17
|
handleRangeSelect: (_range: {
|
|
16
18
|
from?: Date;
|
|
@@ -33,9 +33,10 @@ export declare const applyTimezone: (date: Date) => Date;
|
|
|
33
33
|
export declare const toUserTzDayjs: (date: Date) => Dayjs;
|
|
34
34
|
export declare const toDayjs: (date: Date) => Dayjs;
|
|
35
35
|
export declare const getDisplayFormat: (dateFormat: string, timeFormat: string, showTime: boolean) => string;
|
|
36
|
-
export declare const getDatePlaceholder: (dateFormat: string,
|
|
36
|
+
export declare const getDatePlaceholder: (dateFormat: string, type: "date" | "range") => string;
|
|
37
37
|
export declare const isDatePartComplete: (part: string, maskEnabled: boolean, singleDateLen: number) => boolean;
|
|
38
38
|
export declare const parseRangeText: (text: string, displayFormat: string, maskEnabled: boolean, singleDateLen: number) => [Date, Date] | null;
|
|
39
|
+
export declare const startOfDay: (date: Date) => Date;
|
|
39
40
|
export declare const startOfWeek: (date: Date, weekStartsOn?: number) => Date;
|
|
40
41
|
export declare const weekDaysFrom: (start: Date) => Date[];
|
|
41
42
|
export declare const isMonthDisabled: (monthDate: Date, minDate?: Date, maxDate?: Date) => boolean;
|
package/dist/components/index.js
CHANGED
|
@@ -8,7 +8,7 @@ export { C as Callout } from '../Callout-DJGi3MQR.js';
|
|
|
8
8
|
export { C as Checkbox } from '../Checkbox-BalUzegZ.js';
|
|
9
9
|
export { C as ColorPicker } from '../ColorPicker-g9siUaIe.js';
|
|
10
10
|
export { D as DataTable, u as useColumnOrdering, a as useColumnPinning, b as useColumnVisibility, c as useTablePagination, d as useTableSelection, e as useTableSort } from '../DataTable-BAf51Sfw.js';
|
|
11
|
-
export { D as DatePicker } from '../DatePicker-
|
|
11
|
+
export { D as DatePicker } from '../DatePicker-CMlA-hNW.js';
|
|
12
12
|
export { D as Dialog } from '../Dialog-ZTcfRPwU.js';
|
|
13
13
|
export { E as Empty } from '../Empty-B4iQJlmf.js';
|
|
14
14
|
export { I as Input } from '../Input-Dm5ILPH3.js';
|
|
@@ -30,7 +30,7 @@ export { T as Textarea } from '../Textarea-CUe09-sr.js';
|
|
|
30
30
|
export { T as TimePicker, a as TimePickerPanel } from '../TimePicker-CJ8K2zea.js';
|
|
31
31
|
export { T as Toastr } from '../Toastr-Dhl8V1V2.js';
|
|
32
32
|
export { T as Tooltip } from '../Tooltip-DWDsgyx7.js';
|
|
33
|
-
export { T as TranslationProvider } from '../TranslationProvider-
|
|
33
|
+
export { T as TranslationProvider } from '../TranslationProvider-DKdbPweu.js';
|
|
34
34
|
export { T as Tree } from '../Tree-Cf0rLcX9.js';
|
|
35
35
|
export { T as TreeSelect } from '../TreeSelect-BV18q8UD.js';
|
|
36
36
|
export { T as Typography, t as typographyVariants } from '../Typography-Bu78IBJy.js';
|
package/dist/formik/Form.js
CHANGED
|
@@ -63,6 +63,7 @@ const FormWrapper = forwardRef(
|
|
|
63
63
|
const isEventFromEditorOrTextarea = target.tagName === "TEXTAREA" || target.editor;
|
|
64
64
|
if (event.key !== "Enter") return;
|
|
65
65
|
if (isEventFromEditorOrTextarea && !event.metaKey) return;
|
|
66
|
+
if (!event.currentTarget.contains(target)) return;
|
|
66
67
|
event.preventDefault();
|
|
67
68
|
if (event.shiftKey) return;
|
|
68
69
|
if (!isFormDirty || isSubmitting) return;
|
package/dist/formik/Form.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Form.js","sources":["../../src/formik/Form/ScrollToErrorField/utils.ts","../../src/formik/Form/ScrollToErrorField/index.tsx","../../src/formik/Form/FormWrapper.tsx","../../src/formik/Form/index.tsx"],"sourcesContent":["import { is } from \"ramda\";\n\nconst transformObjectToDotNotation = (\n object: Record<string, unknown>,\n prefix = \"\"\n): string[] => {\n const result: string[] = [];\n\n Object.entries(object).forEach(([key, value]) => {\n if (!value) return;\n const nextKey = prefix ? `${prefix}.${key}` : key;\n if (is(Object, value)) {\n result.push(\n ...transformObjectToDotNotation(\n value as Record<string, unknown>,\n nextKey\n )\n );\n } else {\n result.push(nextKey);\n }\n });\n\n return result;\n};\n\nconst getErrorFieldName = (\n formikErrors: Record<string, unknown>\n): string | undefined => transformObjectToDotNotation(formikErrors)?.[0];\n\nexport const getFieldsWithServerError = (\n status: Record<string, unknown> = {}\n): string[] =>\n Object.keys(status).filter(\n fieldName => status[fieldName] != null && status[fieldName] !== \"\"\n );\n\nexport const scrollToError = (\n formRef: React.RefObject<HTMLFormElement | null>,\n errors: Record<string, unknown>,\n status: Record<string, unknown>\n): void => {\n const fieldErrorName = getErrorFieldName(errors);\n const [fieldWithServerError] = getFieldsWithServerError(status);\n\n if (!fieldErrorName && !fieldWithServerError) return;\n\n const errorFieldName = fieldErrorName || fieldWithServerError;\n const errorFormElement = formRef.current?.querySelector(\n `[name=\"${errorFieldName}\"]`\n );\n\n errorFormElement?.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n });\n};\n","import { useEffect } from \"react\";\n\nimport { useFormikContext } from \"formik\";\n\nimport { getFieldsWithServerError, scrollToError } from \"./utils\";\n\ninterface ScrollToErrorFieldProps {\n formRef: React.RefObject<HTMLFormElement | null>;\n}\n\nconst ScrollToErrorField = ({ formRef }: ScrollToErrorFieldProps) => {\n const { submitCount, isValid, errors, status } = useFormikContext();\n\n useEffect(() => {\n const fieldsWithServerError = getFieldsWithServerError(status);\n if (!formRef.current || (isValid && fieldsWithServerError.length === 0)) {\n return;\n }\n\n scrollToError(formRef, errors as Record<string, unknown>, status);\n }, [submitCount]);\n\n return null;\n};\n\nexport default ScrollToErrorField;\n","import React, { useCallback, forwardRef, useRef } from \"react\";\n\nimport { Form as FormikForm, useFormikContext } from \"formik\";\n\nimport ScrollToErrorField from \"./ScrollToErrorField\";\nimport {\n getFieldsWithServerError,\n scrollToError,\n} from \"./ScrollToErrorField/utils\";\n\ninterface FormWrapperProps {\n className?: string;\n formProps?: React.ComponentProps<\"form\">;\n children: React.ReactNode;\n scrollToErrorField: boolean;\n}\n\nconst FormWrapper = forwardRef<HTMLFormElement, FormWrapperProps>(\n ({ className, formProps, children, scrollToErrorField }, ref) => {\n const { validateForm, setErrors, setTouched, submitForm, ...formikBag } =\n useFormikContext();\n\n const { dirty: isFormDirty, isSubmitting, status } = formikBag;\n\n const formRefForScrollToErrorField = useRef<HTMLFormElement>(null);\n const formRef =\n (ref as React.RefObject<HTMLFormElement | null>) ||\n formRefForScrollToErrorField;\n\n const handleKeyDown = useCallback(\n async (event: React.KeyboardEvent<HTMLFormElement>) => {\n const target = event.target as HTMLElement & { editor?: unknown };\n const isEventFromEditorOrTextarea =\n target.tagName === \"TEXTAREA\" || target.editor;\n\n if (event.key !== \"Enter\") return;\n if (isEventFromEditorOrTextarea && !event.metaKey) return;\n\n event.preventDefault();\n\n if (event.shiftKey) return;\n if (!isFormDirty || isSubmitting) return;\n\n try {\n const errors = await validateForm();\n const fieldStatuses = getFieldsWithServerError(status);\n\n if (\n Object.keys(errors).length > 0 ||\n Object.keys(fieldStatuses).length > 0\n ) {\n setErrors(errors);\n setTouched({ ...errors, ...status });\n if (scrollToErrorField) {\n scrollToError(formRef, errors as Record<string, unknown>, status);\n }\n } else {\n await submitForm();\n }\n } catch (error) {\n console.error(\n \"An unhandled error was caught while validating or submitting the form\",\n error\n );\n }\n },\n [\n validateForm,\n setErrors,\n setTouched,\n isFormDirty,\n isSubmitting,\n submitForm,\n status,\n scrollToErrorField,\n formRef,\n ]\n );\n\n return (\n <FormikForm\n {...{ className }}\n noValidate\n ref={formRef}\n onKeyDown={handleKeyDown}\n {...formProps}\n >\n {scrollToErrorField && <ScrollToErrorField {...{ formRef }} />}\n {children}\n </FormikForm>\n );\n }\n);\n\nFormWrapper.displayName = \"FormWrapper\";\n\nexport default FormWrapper;\n","import React, { forwardRef, useRef } from \"react\";\n\nimport { Formik, FormikConfig, FormikProps, FormikValues } from \"formik\";\n\nimport FormWrapper from \"./FormWrapper\";\nimport { getFieldsWithServerError } from \"./ScrollToErrorField/utils\";\n\nexport interface FormProps<T extends FormikValues = FormikValues> {\n /** Formik configuration: initialValues, validationSchema, onSubmit, etc. */\n formikProps: FormikConfig<T>;\n /** Props forwarded to the HTML form element. */\n formProps?: React.ComponentProps<\"form\">;\n /** Auto-scroll to the first error field on submit. */\n scrollToErrorField?: boolean;\n /** Additional class name for the form wrapper. */\n className?: string;\n /** Render children directly or as a function receiving FormikProps. */\n children: React.ReactNode | ((props: FormikProps<T>) => React.ReactNode);\n}\n\nconst Form = forwardRef<HTMLFormElement, FormProps>(\n (\n { className, children, formikProps, formProps, scrollToErrorField = false },\n ref\n ) => {\n const formikRef = useRef<FormikProps<FormikValues>>(null);\n\n const handleSubmit: FormikConfig<FormikValues>[\"onSubmit\"] = (\n values,\n actions\n ) => {\n const fieldsWithServerError = getFieldsWithServerError(\n formikRef.current?.status\n );\n\n if (fieldsWithServerError.length > 0) {\n actions.setSubmitting(false);\n\n return undefined;\n }\n\n return formikProps.onSubmit(values, actions);\n };\n\n return (\n <Formik\n innerRef={formikRef as React.Ref<FormikProps<FormikValues>>}\n {...formikProps}\n onSubmit={handleSubmit}\n >\n {props => (\n <FormWrapper {...{ className, formProps, ref, scrollToErrorField }}>\n {typeof children === \"function\" ? children(props) : children}\n </FormWrapper>\n )}\n </Formik>\n );\n }\n);\n\nForm.displayName = \"Form\";\n\nexport { Form };\n"],"names":["FormikForm"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Form.js","sources":["../../src/formik/Form/ScrollToErrorField/utils.ts","../../src/formik/Form/ScrollToErrorField/index.tsx","../../src/formik/Form/FormWrapper.tsx","../../src/formik/Form/index.tsx"],"sourcesContent":["import { is } from \"ramda\";\n\nconst transformObjectToDotNotation = (\n object: Record<string, unknown>,\n prefix = \"\"\n): string[] => {\n const result: string[] = [];\n\n Object.entries(object).forEach(([key, value]) => {\n if (!value) return;\n const nextKey = prefix ? `${prefix}.${key}` : key;\n if (is(Object, value)) {\n result.push(\n ...transformObjectToDotNotation(\n value as Record<string, unknown>,\n nextKey\n )\n );\n } else {\n result.push(nextKey);\n }\n });\n\n return result;\n};\n\nconst getErrorFieldName = (\n formikErrors: Record<string, unknown>\n): string | undefined => transformObjectToDotNotation(formikErrors)?.[0];\n\nexport const getFieldsWithServerError = (\n status: Record<string, unknown> = {}\n): string[] =>\n Object.keys(status).filter(\n fieldName => status[fieldName] != null && status[fieldName] !== \"\"\n );\n\nexport const scrollToError = (\n formRef: React.RefObject<HTMLFormElement | null>,\n errors: Record<string, unknown>,\n status: Record<string, unknown>\n): void => {\n const fieldErrorName = getErrorFieldName(errors);\n const [fieldWithServerError] = getFieldsWithServerError(status);\n\n if (!fieldErrorName && !fieldWithServerError) return;\n\n const errorFieldName = fieldErrorName || fieldWithServerError;\n const errorFormElement = formRef.current?.querySelector(\n `[name=\"${errorFieldName}\"]`\n );\n\n errorFormElement?.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n });\n};\n","import { useEffect } from \"react\";\n\nimport { useFormikContext } from \"formik\";\n\nimport { getFieldsWithServerError, scrollToError } from \"./utils\";\n\ninterface ScrollToErrorFieldProps {\n formRef: React.RefObject<HTMLFormElement | null>;\n}\n\nconst ScrollToErrorField = ({ formRef }: ScrollToErrorFieldProps) => {\n const { submitCount, isValid, errors, status } = useFormikContext();\n\n useEffect(() => {\n const fieldsWithServerError = getFieldsWithServerError(status);\n if (!formRef.current || (isValid && fieldsWithServerError.length === 0)) {\n return;\n }\n\n scrollToError(formRef, errors as Record<string, unknown>, status);\n }, [submitCount]);\n\n return null;\n};\n\nexport default ScrollToErrorField;\n","import React, { useCallback, forwardRef, useRef } from \"react\";\n\nimport { Form as FormikForm, useFormikContext } from \"formik\";\n\nimport ScrollToErrorField from \"./ScrollToErrorField\";\nimport {\n getFieldsWithServerError,\n scrollToError,\n} from \"./ScrollToErrorField/utils\";\n\ninterface FormWrapperProps {\n className?: string;\n formProps?: React.ComponentProps<\"form\">;\n children: React.ReactNode;\n scrollToErrorField: boolean;\n}\n\nconst FormWrapper = forwardRef<HTMLFormElement, FormWrapperProps>(\n ({ className, formProps, children, scrollToErrorField }, ref) => {\n const { validateForm, setErrors, setTouched, submitForm, ...formikBag } =\n useFormikContext();\n\n const { dirty: isFormDirty, isSubmitting, status } = formikBag;\n\n const formRefForScrollToErrorField = useRef<HTMLFormElement>(null);\n const formRef =\n (ref as React.RefObject<HTMLFormElement | null>) ||\n formRefForScrollToErrorField;\n\n const handleKeyDown = useCallback(\n async (event: React.KeyboardEvent<HTMLFormElement>) => {\n const target = event.target as HTMLElement & { editor?: unknown };\n const isEventFromEditorOrTextarea =\n target.tagName === \"TEXTAREA\" || target.editor;\n\n if (event.key !== \"Enter\") return;\n if (isEventFromEditorOrTextarea && !event.metaKey) return;\n // React bubbles events from portaled content (a date picker's\n // popover, a select menu) up to the form even though they sit outside\n // it in the DOM. Leave their Enter alone, so e.g. OK still clicks.\n if (!event.currentTarget.contains(target)) return;\n\n event.preventDefault();\n\n if (event.shiftKey) return;\n if (!isFormDirty || isSubmitting) return;\n\n try {\n const errors = await validateForm();\n const fieldStatuses = getFieldsWithServerError(status);\n\n if (\n Object.keys(errors).length > 0 ||\n Object.keys(fieldStatuses).length > 0\n ) {\n setErrors(errors);\n setTouched({ ...errors, ...status });\n if (scrollToErrorField) {\n scrollToError(formRef, errors as Record<string, unknown>, status);\n }\n } else {\n await submitForm();\n }\n } catch (error) {\n console.error(\n \"An unhandled error was caught while validating or submitting the form\",\n error\n );\n }\n },\n [\n validateForm,\n setErrors,\n setTouched,\n isFormDirty,\n isSubmitting,\n submitForm,\n status,\n scrollToErrorField,\n formRef,\n ]\n );\n\n return (\n <FormikForm\n {...{ className }}\n noValidate\n ref={formRef}\n onKeyDown={handleKeyDown}\n {...formProps}\n >\n {scrollToErrorField && <ScrollToErrorField {...{ formRef }} />}\n {children}\n </FormikForm>\n );\n }\n);\n\nFormWrapper.displayName = \"FormWrapper\";\n\nexport default FormWrapper;\n","import React, { forwardRef, useRef } from \"react\";\n\nimport { Formik, FormikConfig, FormikProps, FormikValues } from \"formik\";\n\nimport FormWrapper from \"./FormWrapper\";\nimport { getFieldsWithServerError } from \"./ScrollToErrorField/utils\";\n\nexport interface FormProps<T extends FormikValues = FormikValues> {\n /** Formik configuration: initialValues, validationSchema, onSubmit, etc. */\n formikProps: FormikConfig<T>;\n /** Props forwarded to the HTML form element. */\n formProps?: React.ComponentProps<\"form\">;\n /** Auto-scroll to the first error field on submit. */\n scrollToErrorField?: boolean;\n /** Additional class name for the form wrapper. */\n className?: string;\n /** Render children directly or as a function receiving FormikProps. */\n children: React.ReactNode | ((props: FormikProps<T>) => React.ReactNode);\n}\n\nconst Form = forwardRef<HTMLFormElement, FormProps>(\n (\n { className, children, formikProps, formProps, scrollToErrorField = false },\n ref\n ) => {\n const formikRef = useRef<FormikProps<FormikValues>>(null);\n\n const handleSubmit: FormikConfig<FormikValues>[\"onSubmit\"] = (\n values,\n actions\n ) => {\n const fieldsWithServerError = getFieldsWithServerError(\n formikRef.current?.status\n );\n\n if (fieldsWithServerError.length > 0) {\n actions.setSubmitting(false);\n\n return undefined;\n }\n\n return formikProps.onSubmit(values, actions);\n };\n\n return (\n <Formik\n innerRef={formikRef as React.Ref<FormikProps<FormikValues>>}\n {...formikProps}\n onSubmit={handleSubmit}\n >\n {props => (\n <FormWrapper {...{ className, formProps, ref, scrollToErrorField }}>\n {typeof children === \"function\" ? children(props) : children}\n </FormWrapper>\n )}\n </Formik>\n );\n }\n);\n\nForm.displayName = \"Form\";\n\nexport { Form };\n"],"names":["FormikForm"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { dayjs } from '@bigbinary/neeto-commons-frontend/utils';
|
|
2
2
|
export { dayjs } from '@bigbinary/neeto-commons-frontend/utils';
|
|
3
|
-
export { T as TranslationProvider, r as translations } from './TranslationProvider-
|
|
3
|
+
export { T as TranslationProvider, r as translations } from './TranslationProvider-DKdbPweu.js';
|
|
4
4
|
export { DropdownMenu } from './components/DropdownMenu.js';
|
|
5
5
|
export { u as useIsMobile } from './use-mobile-QbHL72cX.js';
|
|
6
6
|
export { c as cn } from './utils-BJnb9o5c.js';
|
|
@@ -13,7 +13,7 @@ export { C as Callout } from './Callout-DJGi3MQR.js';
|
|
|
13
13
|
export { C as Checkbox } from './Checkbox-BalUzegZ.js';
|
|
14
14
|
export { C as ColorPicker } from './ColorPicker-g9siUaIe.js';
|
|
15
15
|
export { D as DataTable, u as useColumnOrdering, a as useColumnPinning, b as useColumnVisibility, c as useTablePagination, d as useTableSelection, e as useTableSort } from './DataTable-BAf51Sfw.js';
|
|
16
|
-
export { D as DatePicker } from './DatePicker-
|
|
16
|
+
export { D as DatePicker } from './DatePicker-CMlA-hNW.js';
|
|
17
17
|
export { D as Dialog } from './Dialog-ZTcfRPwU.js';
|
|
18
18
|
export { D as DirectionProvider } from './DirectionProvider-weqLz_BJ.js';
|
|
19
19
|
export { E as Empty } from './Empty-B4iQJlmf.js';
|
|
@@ -77,12 +77,19 @@ export declare const resources: {
|
|
|
77
77
|
datePicker: {
|
|
78
78
|
timeField: string;
|
|
79
79
|
addTime: string;
|
|
80
|
+
start: string;
|
|
81
|
+
end: string;
|
|
82
|
+
startTime: string;
|
|
83
|
+
endTime: string;
|
|
84
|
+
pickADay: string;
|
|
85
|
+
sameDay: string;
|
|
80
86
|
timeHint: string;
|
|
81
87
|
errors: {
|
|
82
88
|
timeRequired: string;
|
|
83
89
|
hourRequired: string;
|
|
84
90
|
minuteRequired: string;
|
|
85
91
|
periodRequired: string;
|
|
92
|
+
endBeforeStart: string;
|
|
86
93
|
};
|
|
87
94
|
};
|
|
88
95
|
};
|