@bigbinary/neeto-atoms 1.1.2 → 1.1.4-beta1
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-BiUWzq-V.js → DatePicker-CMlA-hNW.js} +475 -272
- package/dist/DatePicker-CMlA-hNW.js.map +1 -0
- package/dist/{Select-DCVlTRBI.js → Select-DrH-AzOD.js} +32 -9
- package/dist/Select-DrH-AzOD.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-C_nezxpH.js → DatePicker-CBxWLALJ.js} +474 -271
- package/dist/cjs/DatePicker-CBxWLALJ.js.map +1 -0
- package/dist/cjs/{Select-DReP9RU1.js → Select-BP2y7-eM.js} +32 -9
- package/dist/cjs/Select-BP2y7-eM.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/Select.js +1 -1
- package/dist/cjs/components/TranslationProvider.js +1 -1
- package/dist/cjs/components/index.js +5 -5
- package/dist/cjs/formik/Form.js +1 -0
- package/dist/cjs/formik/Form.js.map +1 -1
- package/dist/cjs/formik/Select.js +1 -1
- package/dist/cjs/formik/index.js +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 +1 -0
- package/dist/components/DatePicker.js +1 -1
- package/dist/components/Select/MultiSelectCombobox.types.d.ts +1 -1
- package/dist/components/Select/SelectCombobox.types.d.ts +1 -1
- package/dist/components/Select/hooks/useCreatableItems.d.ts +2 -1
- package/dist/components/Select/hooks/useMultiSelectState.d.ts +1 -1
- package/dist/components/Select/hooks/useReportInputChange.d.ts +1 -0
- package/dist/components/Select/hooks/useSelectState.d.ts +1 -1
- package/dist/components/Select/types.d.ts +7 -2
- package/dist/components/Select.js +1 -1
- package/dist/components/TranslationProvider.js +1 -1
- package/dist/components/index.js +3 -3
- package/dist/formik/Form.js +1 -0
- package/dist/formik/Form.js.map +1 -1
- package/dist/formik/Select.js +1 -1
- package/dist/formik/index.js +1 -1
- package/dist/index.js +3 -3
- package/dist/translations/index.d.ts +7 -0
- package/package.json +2 -2
- package/CHANGELOG.md +0 -3
- package/dist/DatePicker-BiUWzq-V.js.map +0 -1
- package/dist/Select-DCVlTRBI.js.map +0 -1
- package/dist/cjs/DatePicker-C_nezxpH.js.map +0 -1
- package/dist/cjs/Select-DReP9RU1.js.map +0 -1
|
@@ -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;
|
|
@@ -36,6 +36,7 @@ export declare const getDisplayFormat: (dateFormat: string, timeFormat: string,
|
|
|
36
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;
|
|
@@ -20,7 +20,7 @@ export interface MultiSelectComboboxProps {
|
|
|
20
20
|
searchPlaceholder: string;
|
|
21
21
|
isAsync: boolean;
|
|
22
22
|
/** Matches options against the query the Select tracks itself. */
|
|
23
|
-
optionFilter: (v: string, q: string, fn?: (v: string) => string) => boolean;
|
|
23
|
+
optionFilter: ((v: string, q: string, fn?: (v: string) => string) => boolean) | null;
|
|
24
24
|
isControlled: boolean;
|
|
25
25
|
valueProp?: string[];
|
|
26
26
|
defaultValue?: string[];
|
|
@@ -31,7 +31,7 @@ export interface SelectComboboxProps {
|
|
|
31
31
|
/** Whether options are loaded asynchronously. */
|
|
32
32
|
isAsync: boolean;
|
|
33
33
|
/** Matches options against the query the Select tracks itself. */
|
|
34
|
-
optionFilter: (v: string, q: string, fn?: (v: string) => string) => boolean;
|
|
34
|
+
optionFilter: ((v: string, q: string, fn?: (v: string) => string) => boolean) | null;
|
|
35
35
|
/** Whether the component is in controlled mode. */
|
|
36
36
|
isControlled: boolean;
|
|
37
37
|
/** Controlled value (only when isControlled=true). */
|
|
@@ -14,6 +14,7 @@ interface UseCreatableItemsConfig {
|
|
|
14
14
|
onCreateOption?: (inputValue: string) => void;
|
|
15
15
|
onChange?: (values: string[]) => void;
|
|
16
16
|
onAsyncInputChange?: (value: string) => void;
|
|
17
|
+
onInputChange?: (value: string) => void;
|
|
17
18
|
children?: React.ReactNode;
|
|
18
19
|
}
|
|
19
20
|
interface UseCreatableItemsReturn {
|
|
@@ -29,5 +30,5 @@ interface UseCreatableItemsReturn {
|
|
|
29
30
|
}) => void;
|
|
30
31
|
handleValueChange: (next: string[] | null) => void;
|
|
31
32
|
}
|
|
32
|
-
export declare function useCreatableItems({ isCreatable, isGrouped, flatOptions, selectedValues, baseUiItems, onCreateOption, onChange, onAsyncInputChange, children, }: UseCreatableItemsConfig): UseCreatableItemsReturn;
|
|
33
|
+
export declare function useCreatableItems({ isCreatable, isGrouped, flatOptions, selectedValues, baseUiItems, onCreateOption, onChange, onAsyncInputChange, onInputChange, children, }: UseCreatableItemsConfig): UseCreatableItemsReturn;
|
|
33
34
|
export {};
|
|
@@ -21,7 +21,7 @@ export declare function useMultiSelectState(props: MultiSelectProps): {
|
|
|
21
21
|
label: string;
|
|
22
22
|
items: string[];
|
|
23
23
|
}[] | undefined;
|
|
24
|
-
optionFilter: (itemValue: string, query: string, itemToString?: (v: string) => string) => boolean;
|
|
24
|
+
optionFilter: ((itemValue: string, query: string, itemToString?: (v: string) => string) => boolean) | null;
|
|
25
25
|
handleInputValueChange: (value: string, details?: {
|
|
26
26
|
reason?: string;
|
|
27
27
|
}) => void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function useReportInputChange(onInputChange?: (inputValue: string) => void): (nextValue: string) => void;
|
|
@@ -21,7 +21,7 @@ export declare function useSelectState(props: SingleSelectProps): {
|
|
|
21
21
|
label: string;
|
|
22
22
|
items: string[];
|
|
23
23
|
}[] | undefined;
|
|
24
|
-
optionFilter: (itemValue: string, _query: string, itemToString?: (v: string) => string) => boolean;
|
|
24
|
+
optionFilter: ((itemValue: string, _query: string, itemToString?: (v: string) => string) => boolean) | null;
|
|
25
25
|
handleValueChange: (next: string | null) => void;
|
|
26
26
|
handleInputValueChange: (value: string, details?: {
|
|
27
27
|
reason?: string;
|
|
@@ -66,8 +66,9 @@ interface SelectSharedProps {
|
|
|
66
66
|
searchPlaceholder?: string;
|
|
67
67
|
/**
|
|
68
68
|
* Hide the search field when there are fewer than this many options, so
|
|
69
|
-
* short dropdowns stay clean. Ignored when options are async, creatable
|
|
70
|
-
* lazy-loaded, since the total
|
|
69
|
+
* short dropdowns stay clean. Ignored when options are async, creatable,
|
|
70
|
+
* lazy-loaded or server-filtered (`filterOption={null}`), since the total
|
|
71
|
+
* count isn't known upfront.
|
|
71
72
|
* @default undefined (search is always shown)
|
|
72
73
|
*/
|
|
73
74
|
searchThreshold?: number;
|
|
@@ -127,6 +128,10 @@ interface SelectSharedProps {
|
|
|
127
128
|
fetchMore?: () => void;
|
|
128
129
|
/** Total number of options on the server (lazy loading). */
|
|
129
130
|
totalOptionsCount?: number;
|
|
131
|
+
/** Callback fired when the search input value changes. */
|
|
132
|
+
onInputChange?: (inputValue: string) => void;
|
|
133
|
+
/** Pass `null` to skip client-side filtering (server-side search). */
|
|
134
|
+
filterOption?: null;
|
|
130
135
|
/** Custom data-testid prefix for the component tree. */
|
|
131
136
|
dataTestId?: string;
|
|
132
137
|
/** Props forwarded to the FieldLabel. */
|
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';
|
|
@@ -19,7 +19,7 @@ export { P as Pagination } from '../Pagination-yjG8uCpV.js';
|
|
|
19
19
|
export { P as Popover } from '../Popover-B0QALwsd.js';
|
|
20
20
|
export { P as Progress } from '../Progress-DbtLbWf8.js';
|
|
21
21
|
export { R as RadioGroup } from '../RadioGroup-CBXByAMW.js';
|
|
22
|
-
export { S as Select } from '../Select-
|
|
22
|
+
export { S as Select } from '../Select-DrH-AzOD.js';
|
|
23
23
|
export { S as Sheet } from '../Sheet-D1MWtg1q.js';
|
|
24
24
|
export { S as Slider } from '../Slider-CxQdlyHZ.js';
|
|
25
25
|
export { S as Spinner } from '../Spinner-vfggfvEp.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":";;;;;AAEA,MAAM,4BAAA,GAA+B,CACnC,MAAA,EACA,MAAA,GAAS,EAAA,KACI;AACb,EAAA,MAAM,SAAmB,EAAC;AAE1B,EAAA,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AAC/C,IAAA,IAAI,CAAC,KAAA,EAAO;AACZ,IAAA,MAAM,UAAU,MAAA,GAAS,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,GAAK,GAAA;AAC9C,IAAA,IAAI,EAAA,CAAG,MAAA,EAAQ,KAAK,CAAA,EAAG;AACrB,MAAA,MAAA,CAAO,IAAA;AAAA,QACL,GAAG,4BAAA;AAAA,UACD,KAAA;AAAA,UACA;AAAA;AACF,OACF;AAAA,IACF,CAAA,MAAO;AACL,MAAA,MAAA,CAAO,KAAK,OAAO,CAAA;AAAA,IACrB;AAAA,EACF,CAAC,CAAA;AAED,EAAA,OAAO,MAAA;AACT,CAAA;AAEA,MAAM,oBAAoB,CACxB,YAAA,KACuB,4BAAA,CAA6B,YAAY,IAAI,CAAC,CAAA;AAEhE,MAAM,wBAAA,GAA2B,CACtC,MAAA,GAAkC,OAElC,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA,CAAE,MAAA;AAAA,EAClB,eAAa,MAAA,CAAO,SAAS,KAAK,IAAA,IAAQ,MAAA,CAAO,SAAS,CAAA,KAAM;AAClE,CAAA;AAEK,MAAM,aAAA,GAAgB,CAC3B,OAAA,EACA,MAAA,EACA,MAAA,KACS;AACT,EAAA,MAAM,cAAA,GAAiB,kBAAkB,MAAM,CAAA;AAC/C,EAAA,MAAM,CAAC,oBAAoB,CAAA,GAAI,wBAAA,CAAyB,MAAM,CAAA;AAE9D,EAAA,IAAI,CAAC,cAAA,IAAkB,CAAC,oBAAA,EAAsB;AAE9C,EAAA,MAAM,iBAAiB,cAAA,IAAkB,oBAAA;AACzC,EAAA,MAAM,gBAAA,GAAmB,QAAQ,OAAA,EAAS,aAAA;AAAA,IACxC,UAAU,cAAc,CAAA,EAAA;AAAA,GAC1B;AAEA,EAAA,gBAAA,EAAkB,cAAA,CAAe;AAAA,IAC/B,QAAA,EAAU,QAAA;AAAA,IACV,KAAA,EAAO;AAAA,GACR,CAAA;AACH,CAAA;;AC9CA,MAAM,kBAAA,GAAqB,CAAC,EAAE,OAAA,EAAQ,KAA+B;AACnE,EAAA,MAAM,EAAE,WAAA,EAAa,OAAA,EAAS,MAAA,EAAQ,MAAA,KAAW,gBAAA,EAAiB;AAElE,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,qBAAA,GAAwB,yBAAyB,MAAM,CAAA;AAC7D,IAAA,IAAI,CAAC,OAAA,CAAQ,OAAA,IAAY,OAAA,IAAW,qBAAA,CAAsB,WAAW,CAAA,EAAI;AACvE,MAAA;AAAA,IACF;AAEA,IAAA,aAAA,CAAc,OAAA,EAAS,QAAmC,MAAM,CAAA;AAAA,EAClE,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,OAAO,IAAA;AACT,CAAA;;ACNA,MAAM,WAAA,GAAc,UAAA;AAAA,EAClB,CAAC,EAAE,SAAA,EAAW,WAAW,QAAA,EAAU,kBAAA,IAAsB,GAAA,KAAQ;AAC/D,IAAA,MAAM,EAAE,cAAc,SAAA,EAAW,UAAA,EAAY,YAAY,GAAG,SAAA,KAC1D,gBAAA,EAAiB;AAEnB,IAAA,MAAM,EAAE,KAAA,EAAO,WAAA,EAAa,YAAA,EAAc,QAAO,GAAI,SAAA;AAErD,IAAA,MAAM,4BAAA,GAA+B,OAAwB,IAAI,CAAA;AACjE,IAAA,MAAM,UACH,GAAA,IACD,4BAAA;AAEF,IAAA,MAAM,aAAA,GAAgB,WAAA;AAAA,MACpB,OAAO,KAAA,KAAgD;AACrD,QAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,QAAA,MAAM,2BAAA,GACJ,MAAA,CAAO,OAAA,KAAY,UAAA,IAAc,MAAA,CAAO,MAAA;AAE1C,QAAA,IAAI,KAAA,CAAM,QAAQ,OAAA,EAAS;AAC3B,QAAA,IAAI,2BAAA,IAA+B,CAAC,KAAA,CAAM,OAAA,EAAS;AAEnD,QAAA,KAAA,CAAM,cAAA,EAAe;AAErB,QAAA,IAAI,MAAM,QAAA,EAAU;AACpB,QAAA,IAAI,CAAC,eAAe,YAAA,EAAc;AAElC,QAAA,IAAI;AACF,UAAA,MAAM,MAAA,GAAS,MAAM,YAAA,EAAa;AAClC,UAAA,MAAM,aAAA,GAAgB,yBAAyB,MAAM,CAAA;AAErD,UAAA,IACE,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA,CAAE,MAAA,GAAS,CAAA,IAC7B,MAAA,CAAO,IAAA,CAAK,aAAa,CAAA,CAAE,MAAA,GAAS,CAAA,EACpC;AACA,YAAA,SAAA,CAAU,MAAM,CAAA;AAChB,YAAA,UAAA,CAAW,EAAE,GAAG,MAAA,EAAQ,GAAG,QAAQ,CAAA;AACnC,YAAA,IAAI,kBAAA,EAAoB;AACtB,cAAA,aAAA,CAAc,OAAA,EAAS,QAAmC,MAAM,CAAA;AAAA,YAClE;AAAA,UACF,CAAA,MAAO;AACL,YAAA,MAAM,UAAA,EAAW;AAAA,UACnB;AAAA,QACF,SAAS,KAAA,EAAO;AACd,UAAA,OAAA,CAAQ,KAAA;AAAA,YACN,uEAAA;AAAA,YACA;AAAA,WACF;AAAA,QACF;AAAA,MACF,CAAA;AAAA,MACA;AAAA,QACE,YAAA;AAAA,QACA,SAAA;AAAA,QACA,UAAA;AAAA,QACA,WAAA;AAAA,QACA,YAAA;AAAA,QACA,UAAA;AAAA,QACA,MAAA;AAAA,QACA,kBAAA;AAAA,QACA;AAAA;AACF,KACF;AAEA,IAAA,uBACE,IAAA;AAAA,MAACA,MAAA;AAAA,MAAA;AAAA,QACE,GAAG,EAAE,SAAA,EAAU;AAAA,QAChB,UAAA,EAAU,IAAA;AAAA,QACV,GAAA,EAAK,OAAA;AAAA,QACL,SAAA,EAAW,aAAA;AAAA,QACV,GAAG,SAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,kBAAA,oBAAsB,GAAA,CAAC,kBAAA,EAAA,EAAoB,GAAG,EAAE,SAAQ,EAAG,CAAA;AAAA,UAC3D;AAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AACF,CAAA;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;;AC1E1B,MAAM,IAAA,GAAO,UAAA;AAAA,EACX,CACE,EAAE,SAAA,EAAW,QAAA,EAAU,aAAa,SAAA,EAAW,kBAAA,GAAqB,KAAA,EAAM,EAC1E,GAAA,KACG;AACH,IAAA,MAAM,SAAA,GAAY,OAAkC,IAAI,CAAA;AAExD,IAAA,MAAM,YAAA,GAAuD,CAC3D,MAAA,EACA,OAAA,KACG;AACH,MAAA,MAAM,qBAAA,GAAwB,wBAAA;AAAA,QAC5B,UAAU,OAAA,EAAS;AAAA,OACrB;AAEA,MAAA,IAAI,qBAAA,CAAsB,SAAS,CAAA,EAAG;AACpC,QAAA,OAAA,CAAQ,cAAc,KAAK,CAAA;AAE3B,QAAA,OAAO,MAAA;AAAA,MACT;AAEA,MAAA,OAAO,WAAA,CAAY,QAAA,CAAS,MAAA,EAAQ,OAAO,CAAA;AAAA,IAC7C,CAAA;AAEA,IAAA,uBACE,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAU,SAAA;AAAA,QACT,GAAG,WAAA;AAAA,QACJ,QAAA,EAAU,YAAA;AAAA,QAET,qCACC,GAAA,CAAC,WAAA,EAAA,EAAa,GAAG,EAAE,WAAW,SAAA,EAAW,GAAA,EAAK,kBAAA,EAAmB,EAC9D,iBAAO,QAAA,KAAa,UAAA,GAAa,QAAA,CAAS,KAAK,IAAI,QAAA,EACtD;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF;AAEA,IAAA,CAAK,WAAA,GAAc,MAAA;;;;"}
|
|
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/formik/Select.js
CHANGED
|
@@ -2,7 +2,7 @@ import { jsx } from 'react/jsx-runtime';
|
|
|
2
2
|
import { forwardRef } from 'react';
|
|
3
3
|
import { useField, useFormikContext, getIn } from 'formik';
|
|
4
4
|
import { dissoc } from 'ramda';
|
|
5
|
-
import { S as Select } from '../Select-
|
|
5
|
+
import { S as Select } from '../Select-DrH-AzOD.js';
|
|
6
6
|
import '../fieldIds-VpluAAMl.js';
|
|
7
7
|
import '../hyphenize-TRhMI0tl.js';
|
|
8
8
|
import '../Combobox-LxuMoLF5.js';
|
package/dist/formik/index.js
CHANGED
|
@@ -63,7 +63,7 @@ import '../hyphenize-TRhMI0tl.js';
|
|
|
63
63
|
import '../withIconSize-BonoFXeH.js';
|
|
64
64
|
import '../Textarea-CUe09-sr.js';
|
|
65
65
|
import '../primitives/Textarea.js';
|
|
66
|
-
import '../Select-
|
|
66
|
+
import '../Select-DrH-AzOD.js';
|
|
67
67
|
import '../Combobox-LxuMoLF5.js';
|
|
68
68
|
import '../useAriaHiddenCleanup-Qc0GmbER.js';
|
|
69
69
|
import '../chevron-down-BNi0ntys.js';
|
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';
|
|
@@ -25,7 +25,7 @@ export { P as Pagination } from './Pagination-yjG8uCpV.js';
|
|
|
25
25
|
export { P as Popover } from './Popover-B0QALwsd.js';
|
|
26
26
|
export { P as Progress } from './Progress-DbtLbWf8.js';
|
|
27
27
|
export { R as RadioGroup } from './RadioGroup-CBXByAMW.js';
|
|
28
|
-
export { S as Select } from './Select-
|
|
28
|
+
export { S as Select } from './Select-DrH-AzOD.js';
|
|
29
29
|
export { S as Sheet } from './Sheet-D1MWtg1q.js';
|
|
30
30
|
export { S as Slider } from './Slider-CxQdlyHZ.js';
|
|
31
31
|
export { S as Spinner } from './Spinner-vfggfvEp.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
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bigbinary/neeto-atoms",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.4-beta1",
|
|
4
4
|
"author": "BigBinary",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"engines": {
|
|
@@ -209,4 +209,4 @@
|
|
|
209
209
|
"react-router-dom": "^5.3.3"
|
|
210
210
|
},
|
|
211
211
|
"packageManager": "yarn@4.9.2"
|
|
212
|
-
}
|
|
212
|
+
}
|
package/CHANGELOG.md
DELETED