@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.
Files changed (52) hide show
  1. package/dist/{DatePicker-BiUWzq-V.js → DatePicker-CMlA-hNW.js} +475 -272
  2. package/dist/DatePicker-CMlA-hNW.js.map +1 -0
  3. package/dist/{Select-DCVlTRBI.js → Select-DrH-AzOD.js} +32 -9
  4. package/dist/Select-DrH-AzOD.js.map +1 -0
  5. package/dist/{TranslationProvider-BJjfFEgX.js → TranslationProvider-DKdbPweu.js} +9 -2
  6. package/dist/{TranslationProvider-BJjfFEgX.js.map → TranslationProvider-DKdbPweu.js.map} +1 -1
  7. package/dist/cjs/{DatePicker-C_nezxpH.js → DatePicker-CBxWLALJ.js} +474 -271
  8. package/dist/cjs/DatePicker-CBxWLALJ.js.map +1 -0
  9. package/dist/cjs/{Select-DReP9RU1.js → Select-BP2y7-eM.js} +32 -9
  10. package/dist/cjs/Select-BP2y7-eM.js.map +1 -0
  11. package/dist/cjs/{TranslationProvider-C1JDwKEN.js → TranslationProvider-Cao2ugzJ.js} +9 -2
  12. package/dist/cjs/{TranslationProvider-C1JDwKEN.js.map → TranslationProvider-Cao2ugzJ.js.map} +1 -1
  13. package/dist/cjs/components/DatePicker.js +1 -1
  14. package/dist/cjs/components/Select.js +1 -1
  15. package/dist/cjs/components/TranslationProvider.js +1 -1
  16. package/dist/cjs/components/index.js +5 -5
  17. package/dist/cjs/formik/Form.js +1 -0
  18. package/dist/cjs/formik/Form.js.map +1 -1
  19. package/dist/cjs/formik/Select.js +1 -1
  20. package/dist/cjs/formik/index.js +1 -1
  21. package/dist/cjs/index.js +5 -5
  22. package/dist/components/DatePicker/DatePickerFooter.d.ts +1 -1
  23. package/dist/components/DatePicker/RangeCalendar.d.ts +2 -1
  24. package/dist/components/DatePicker/RangeTimeSection.d.ts +37 -0
  25. package/dist/components/DatePicker/SegmentedTimeInput.d.ts +7 -1
  26. package/dist/components/DatePicker/TimeSection.d.ts +3 -0
  27. package/dist/components/DatePicker/types.d.ts +5 -2
  28. package/dist/components/DatePicker/useRangePicker.d.ts +4 -2
  29. package/dist/components/DatePicker/utils.d.ts +1 -0
  30. package/dist/components/DatePicker.js +1 -1
  31. package/dist/components/Select/MultiSelectCombobox.types.d.ts +1 -1
  32. package/dist/components/Select/SelectCombobox.types.d.ts +1 -1
  33. package/dist/components/Select/hooks/useCreatableItems.d.ts +2 -1
  34. package/dist/components/Select/hooks/useMultiSelectState.d.ts +1 -1
  35. package/dist/components/Select/hooks/useReportInputChange.d.ts +1 -0
  36. package/dist/components/Select/hooks/useSelectState.d.ts +1 -1
  37. package/dist/components/Select/types.d.ts +7 -2
  38. package/dist/components/Select.js +1 -1
  39. package/dist/components/TranslationProvider.js +1 -1
  40. package/dist/components/index.js +3 -3
  41. package/dist/formik/Form.js +1 -0
  42. package/dist/formik/Form.js.map +1 -1
  43. package/dist/formik/Select.js +1 -1
  44. package/dist/formik/index.js +1 -1
  45. package/dist/index.js +3 -3
  46. package/dist/translations/index.d.ts +7 -0
  47. package/package.json +2 -2
  48. package/CHANGELOG.md +0 -3
  49. package/dist/DatePicker-BiUWzq-V.js.map +0 -1
  50. package/dist/Select-DCVlTRBI.js.map +0 -1
  51. package/dist/cjs/DatePicker-C_nezxpH.js.map +0 -1
  52. 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
- /** Show the typed time field below the calendar. */
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
- rangeSelectionStep: "from" | "to";
13
- setRangeSelectionStep: import("react").Dispatch<import("react").SetStateAction<"from" | "to">>;
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;
@@ -1,4 +1,4 @@
1
- export { D as DatePicker } from '../DatePicker-BiUWzq-V.js';
1
+ export { D as DatePicker } from '../DatePicker-CMlA-hNW.js';
2
2
  import 'react/jsx-runtime';
3
3
  import 'react';
4
4
  import '../primitives/Calendar.js';
@@ -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 or
70
- * lazy-loaded, since the total count isn't known upfront.
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. */
@@ -1,4 +1,4 @@
1
- export { S as Select } from '../Select-DCVlTRBI.js';
1
+ export { S as Select } from '../Select-DrH-AzOD.js';
2
2
  import 'react/jsx-runtime';
3
3
  import 'react';
4
4
  import '../fieldIds-VpluAAMl.js';
@@ -1,4 +1,4 @@
1
- export { T as TranslationProvider } from '../TranslationProvider-BJjfFEgX.js';
1
+ export { T as TranslationProvider } from '../TranslationProvider-DKdbPweu.js';
2
2
  import 'react/jsx-runtime';
3
3
  import 'react';
4
4
  import 'react-i18next';
@@ -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-BiUWzq-V.js';
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-DCVlTRBI.js';
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-BJjfFEgX.js';
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';
@@ -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;
@@ -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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"}
@@ -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-DCVlTRBI.js';
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';
@@ -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-DCVlTRBI.js';
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-BJjfFEgX.js';
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-BiUWzq-V.js';
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-DCVlTRBI.js';
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.2",
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
@@ -1,3 +0,0 @@
1
- # Changelog
2
-
3
- All notable changes to this project will be documented in this file.