@payfit/unity-components 0.0.0-alpha.6 → 0.0.0-alpha.7
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/cjs/components/anchor/Anchor.d.ts +1 -1
- package/dist/cjs/components/app-layout/AppLayout.d.ts +6 -1
- package/dist/cjs/components/app-layout/AppLayout.js +1 -1
- package/dist/cjs/components/app-menu/AppMenu.d.ts +9 -0
- package/dist/cjs/components/app-menu/AppMenu.js +1 -0
- package/dist/cjs/components/app-menu/parts/AppMenu.context.d.ts +9 -0
- package/dist/cjs/components/app-menu/parts/AppMenu.context.js +1 -0
- package/dist/cjs/components/app-menu/parts/AppMenuFooter.d.ts +31 -0
- package/dist/cjs/components/app-menu/parts/AppMenuFooter.js +1 -0
- package/dist/cjs/components/app-menu/parts/AppMenuHeader.d.ts +9 -0
- package/dist/cjs/components/app-menu/parts/AppMenuHeader.js +1 -0
- package/dist/cjs/components/app-menu/parts/AppMenuNavContent.d.ts +5 -0
- package/dist/cjs/components/app-menu/parts/AppMenuNavContent.js +1 -0
- package/dist/cjs/components/avatar/Avatar.context.d.ts +1 -1
- package/dist/cjs/components/avatar/parts/AvatarFallback.d.ts +1 -1
- package/dist/cjs/components/avatar/parts/AvatarFallback.js +1 -1
- package/dist/cjs/components/avatar/parts/AvatarPair.d.ts +20 -0
- package/dist/cjs/components/avatar/utils.d.ts +1 -0
- package/dist/cjs/components/avatar/utils.js +1 -0
- package/dist/cjs/components/breadcrumbs/Breadcrumbs.context.d.ts +1 -1
- package/dist/cjs/components/button/Button.d.ts +2 -1
- package/dist/cjs/components/checkbox/Checkbox.d.ts +225 -0
- package/dist/cjs/components/checkbox/Checkbox.js +1 -0
- package/dist/cjs/components/checkbox/parts/CheckboxIndicator.d.ts +13 -0
- package/dist/cjs/components/checkbox/parts/CheckboxIndicator.js +1 -0
- package/dist/cjs/components/checkbox-field/CheckboxField.d.ts +74 -0
- package/dist/cjs/components/checkbox-field/CheckboxField.js +1 -0
- package/dist/cjs/components/checkbox-group/CheckboxGroup.d.ts +65 -0
- package/dist/cjs/components/checkbox-group/CheckboxGroup.js +1 -0
- package/dist/cjs/components/checkbox-group-field/CheckboxGroupField.d.ts +79 -0
- package/dist/cjs/components/checkbox-group-field/CheckboxGroupField.js +1 -0
- package/dist/cjs/components/date-picker/DatePicker.d.ts +67 -0
- package/dist/cjs/components/date-picker/DatePicker.js +1 -0
- package/dist/cjs/components/date-picker/hooks/useMonthsList.d.ts +4 -0
- package/dist/cjs/components/date-picker/hooks/useMonthsList.js +1 -0
- package/dist/cjs/components/date-picker/hooks/useYearsList.d.ts +10 -0
- package/dist/cjs/components/date-picker/hooks/useYearsList.js +1 -0
- package/dist/cjs/components/date-picker/parts/DateCalendar.d.ts +9 -0
- package/dist/cjs/components/date-picker/parts/DateCalendar.js +1 -0
- package/dist/cjs/components/date-picker/parts/DateInput.d.ts +155 -0
- package/dist/cjs/components/date-picker/parts/DateInput.js +1 -0
- package/dist/cjs/components/date-picker/parts/DateSegmentSelect.d.ts +15 -0
- package/dist/cjs/components/date-picker/parts/DateSegmentSelect.js +1 -0
- package/dist/cjs/components/date-picker/utils.d.ts +12 -0
- package/dist/cjs/components/date-picker-field/DatePickerField.d.ts +83 -0
- package/dist/cjs/components/date-picker-field/DatePickerField.js +1 -0
- package/dist/cjs/components/dialog/Dialog.d.ts +1 -1
- package/dist/cjs/components/dialog/parts/DialogActions/DialogButton.d.ts +1 -1
- package/dist/cjs/components/dialog/parts/DialogActions.d.ts +1 -1
- package/dist/cjs/components/dialog/parts/DialogTitle.d.ts +1 -1
- package/dist/cjs/components/form/Form.context.d.ts +1 -1
- package/dist/cjs/components/form/Form.context.js +1 -1
- package/dist/cjs/components/form/Form.js +1 -1
- package/dist/cjs/components/form-field/FormField.context.d.ts +32 -14
- package/dist/cjs/components/form-field/FormField.context.js +1 -0
- package/dist/cjs/components/form-field/FormField.d.ts +40 -16
- package/dist/cjs/components/form-field/FormField.js +1 -0
- package/dist/cjs/components/form-field/parts/FormContextualLink.js +1 -0
- package/dist/cjs/components/form-field/parts/FormControl.d.ts +7 -0
- package/dist/cjs/components/form-field/parts/FormControl.js +1 -0
- package/dist/cjs/components/form-field/parts/FormFeedbackText.js +1 -0
- package/dist/cjs/components/form-field/parts/FormHelperText.d.ts +1 -1
- package/dist/cjs/components/form-field/parts/FormHelperText.js +1 -0
- package/dist/cjs/components/form-field/parts/FormLabel.d.ts +3 -3
- package/dist/cjs/components/form-field/parts/FormLabel.js +1 -0
- package/dist/cjs/components/form-field/utils/isFieldRequired.d.ts +8 -0
- package/dist/cjs/components/form-field/utils/isFieldRequired.js +1 -0
- package/dist/cjs/components/full-page-loader/FullPageLoader.d.ts +13 -0
- package/dist/cjs/components/full-page-loader/FullPageLoader.js +1 -0
- package/dist/cjs/components/icon/Icon.d.ts +1 -1
- package/dist/cjs/components/icon-button/CircularIconButton.d.ts +1 -1
- package/dist/cjs/components/icon-button/IconButton.d.ts +1 -1
- package/dist/cjs/components/index.d.ts +4 -0
- package/dist/cjs/components/input/Input.d.ts +48 -0
- package/dist/cjs/components/input/Input.js +1 -0
- package/dist/cjs/components/label/Label.d.ts +17 -0
- package/dist/cjs/components/label/Label.js +1 -0
- package/dist/cjs/components/link/Link.d.ts +10 -0
- package/dist/cjs/components/link/Link.js +1 -1
- package/dist/cjs/components/menu/Menu.d.ts +1 -1
- package/dist/cjs/components/menu/parts/MenuContent.d.ts +1 -1
- package/dist/cjs/components/menu/parts/MenuHeader.d.ts +1 -1
- package/dist/cjs/components/menu/parts/MenuItem.d.ts +2 -2
- package/dist/cjs/components/menu/parts/MenuSeparator.d.ts +1 -1
- package/dist/cjs/components/menu/parts/MenuTrigger.d.ts +1 -1
- package/dist/cjs/components/nav/Nav.d.ts +1 -1
- package/dist/cjs/components/nav/parts/NavGroup.d.ts +1 -1
- package/dist/cjs/components/nav/parts/NavItem.d.ts +1 -1
- package/dist/cjs/components/select/Select.d.ts +52 -0
- package/dist/cjs/components/select/Select.js +1 -0
- package/dist/cjs/components/select/parts/SearchInput.d.ts +2 -0
- package/dist/cjs/components/select/parts/SearchInput.js +1 -0
- package/dist/cjs/components/select/parts/SelectButton.d.ts +8 -0
- package/dist/cjs/components/select/parts/SelectButton.js +1 -0
- package/dist/cjs/components/select/parts/SelectOption.context.d.ts +8 -0
- package/dist/cjs/components/select/parts/SelectOption.context.js +1 -0
- package/dist/cjs/components/select/parts/SelectOption.d.ts +6 -0
- package/dist/cjs/components/select/parts/SelectOption.js +1 -0
- package/dist/cjs/components/select/parts/SelectOptionGroup.d.ts +12 -0
- package/dist/cjs/components/select/parts/SelectOptionGroup.js +1 -0
- package/dist/cjs/components/select/parts/SelectOptionHelper.d.ts +4 -0
- package/dist/cjs/components/select/parts/SelectOptionHelper.js +1 -0
- package/dist/cjs/components/select-field/SelectField.d.ts +50 -0
- package/dist/cjs/components/select-field/SelectField.js +1 -0
- package/dist/cjs/components/spinner/Spinner.d.ts +2 -2
- package/dist/cjs/components/spinner/Spinner.js +1 -1
- package/dist/cjs/components/spinner/dynamic-content.d.ts +1 -1
- package/dist/cjs/components/stepper/Stepper.context.d.ts +1 -1
- package/dist/cjs/components/tabs/Tabs.context.d.ts +1 -1
- package/dist/cjs/components/tabs/parts/NavigationButton.d.ts +1 -1
- package/dist/cjs/components/tabs/parts/Tab.d.ts +3 -1
- package/dist/cjs/components/text/Text.d.ts +1 -1
- package/dist/cjs/components/text-area/TextArea.d.ts +220 -0
- package/dist/cjs/components/text-area/TextArea.js +1 -0
- package/dist/cjs/components/text-field/TextField.d.ts +63 -0
- package/dist/cjs/components/text-field/TextField.js +1 -0
- package/dist/cjs/components/toast/Toast.context.d.ts +1 -1
- package/dist/cjs/components/toast/ToastManager.d.ts +1 -1
- package/dist/cjs/components/toast/UnityToast.d.ts +1 -1
- package/dist/cjs/components/toast/parts/ToastAction.d.ts +1 -1
- package/dist/cjs/components/toast/parts/ToastContent.d.ts +1 -1
- package/dist/cjs/components/toast/parts/ToastTitle.d.ts +1 -1
- package/dist/cjs/components/tooltip/Tooltip.d.ts +1 -1
- package/dist/cjs/docs/blocks/Cards.d.ts +7 -7
- package/dist/cjs/hooks/use-form.d.ts +5 -5
- package/dist/cjs/hooks/use-form.js +1 -0
- package/dist/cjs/hooks/use-resizable.d.ts +13 -0
- package/dist/cjs/hooks/use-resizable.js +1 -0
- package/dist/cjs/index.d.ts +30 -0
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/providers/router/RouterProvider.d.ts +1 -1
- package/dist/cjs/providers/router/integrations/UnityReactRouterV5Provider.d.ts +1 -1
- package/dist/esm/components/anchor/Anchor.d.mts +1 -1
- package/dist/esm/components/app-layout/AppLayout.d.mts +6 -1
- package/dist/esm/components/app-layout/AppLayout.mjs +35 -23
- package/dist/esm/components/app-menu/AppMenu.d.mts +9 -0
- package/dist/esm/components/app-menu/AppMenu.mjs +14 -0
- package/dist/esm/components/app-menu/parts/AppMenu.context.d.mts +9 -0
- package/dist/esm/components/app-menu/parts/AppMenu.context.mjs +25 -0
- package/dist/esm/components/app-menu/parts/AppMenuFooter.d.mts +31 -0
- package/dist/esm/components/app-menu/parts/AppMenuFooter.mjs +224 -0
- package/dist/esm/components/app-menu/parts/AppMenuHeader.d.mts +9 -0
- package/dist/esm/components/app-menu/parts/AppMenuHeader.mjs +41 -0
- package/dist/esm/components/app-menu/parts/AppMenuNavContent.d.mts +5 -0
- package/dist/esm/components/app-menu/parts/AppMenuNavContent.mjs +23 -0
- package/dist/esm/components/avatar/Avatar.context.d.mts +1 -1
- package/dist/esm/components/avatar/parts/AvatarFallback.d.mts +1 -1
- package/dist/esm/components/avatar/parts/AvatarFallback.mjs +9 -8
- package/dist/esm/components/avatar/parts/AvatarPair.d.mts +20 -0
- package/dist/esm/components/avatar/utils.d.mts +1 -0
- package/dist/esm/components/avatar/utils.mjs +4 -0
- package/dist/esm/components/breadcrumbs/Breadcrumbs.context.d.mts +1 -1
- package/dist/esm/components/button/Button.d.mts +2 -1
- package/dist/esm/components/checkbox/Checkbox.d.mts +225 -0
- package/dist/esm/components/checkbox/Checkbox.mjs +146 -0
- package/dist/esm/components/checkbox/parts/CheckboxIndicator.d.mts +13 -0
- package/dist/esm/components/checkbox/parts/CheckboxIndicator.mjs +146 -0
- package/dist/esm/components/checkbox-field/CheckboxField.d.mts +74 -0
- package/dist/esm/components/checkbox-field/CheckboxField.mjs +61 -0
- package/dist/esm/components/checkbox-group/CheckboxGroup.d.mts +65 -0
- package/dist/esm/components/checkbox-group/CheckboxGroup.mjs +66 -0
- package/dist/esm/components/checkbox-group-field/CheckboxGroupField.d.mts +79 -0
- package/dist/esm/components/checkbox-group-field/CheckboxGroupField.mjs +54 -0
- package/dist/esm/components/date-picker/DatePicker.d.mts +67 -0
- package/dist/esm/components/date-picker/DatePicker.mjs +163 -0
- package/dist/esm/components/date-picker/hooks/useMonthsList.d.mts +4 -0
- package/dist/esm/components/date-picker/hooks/useMonthsList.mjs +26 -0
- package/dist/esm/components/date-picker/hooks/useYearsList.d.mts +10 -0
- package/dist/esm/components/date-picker/hooks/useYearsList.mjs +33 -0
- package/dist/esm/components/date-picker/parts/DateCalendar.d.mts +9 -0
- package/dist/esm/components/date-picker/parts/DateCalendar.mjs +172 -0
- package/dist/esm/components/date-picker/parts/DateInput.d.mts +155 -0
- package/dist/esm/components/date-picker/parts/DateInput.mjs +124 -0
- package/dist/esm/components/date-picker/parts/DateSegmentSelect.d.mts +15 -0
- package/dist/esm/components/date-picker/parts/DateSegmentSelect.mjs +69 -0
- package/dist/esm/components/date-picker/utils.d.mts +12 -0
- package/dist/esm/components/date-picker-field/DatePickerField.d.mts +83 -0
- package/dist/esm/components/date-picker-field/DatePickerField.mjs +73 -0
- package/dist/esm/components/dialog/Dialog.d.mts +1 -1
- package/dist/esm/components/dialog/parts/DialogActions/DialogButton.d.mts +1 -1
- package/dist/esm/components/dialog/parts/DialogActions.d.mts +1 -1
- package/dist/esm/components/dialog/parts/DialogTitle.d.mts +1 -1
- package/dist/esm/components/form/Form.context.d.mts +1 -1
- package/dist/esm/components/form/Form.context.mjs +21 -14
- package/dist/esm/components/form/Form.mjs +1 -1
- package/dist/esm/components/form-field/FormField.context.d.mts +32 -14
- package/dist/esm/components/form-field/FormField.context.mjs +81 -0
- package/dist/esm/components/form-field/FormField.d.mts +40 -16
- package/dist/esm/components/form-field/FormField.mjs +60 -0
- package/dist/esm/components/form-field/parts/FormContextualLink.mjs +35 -0
- package/dist/esm/components/form-field/parts/FormControl.d.mts +7 -0
- package/dist/esm/components/form-field/parts/FormControl.mjs +50 -0
- package/dist/esm/components/form-field/parts/FormFeedbackText.mjs +25 -0
- package/dist/esm/components/form-field/parts/FormHelperText.d.mts +1 -1
- package/dist/esm/components/form-field/parts/FormHelperText.mjs +25 -0
- package/dist/esm/components/form-field/parts/FormLabel.d.mts +3 -3
- package/dist/esm/components/form-field/parts/FormLabel.mjs +30 -0
- package/dist/esm/components/form-field/utils/isFieldRequired.d.mts +8 -0
- package/dist/esm/components/form-field/utils/isFieldRequired.mjs +23 -0
- package/dist/esm/components/full-page-loader/FullPageLoader.d.mts +13 -0
- package/dist/esm/components/full-page-loader/FullPageLoader.mjs +26 -0
- package/dist/esm/components/icon/Icon.d.mts +1 -1
- package/dist/esm/components/icon-button/CircularIconButton.d.mts +1 -1
- package/dist/esm/components/icon-button/IconButton.d.mts +1 -1
- package/dist/esm/components/index.d.mts +4 -0
- package/dist/esm/components/input/Input.d.mts +48 -0
- package/dist/esm/components/input/Input.mjs +148 -0
- package/dist/esm/components/label/Label.d.mts +17 -0
- package/dist/esm/components/label/Label.mjs +56 -0
- package/dist/esm/components/link/Link.d.mts +10 -0
- package/dist/esm/components/link/Link.mjs +26 -24
- package/dist/esm/components/menu/Menu.d.mts +1 -1
- package/dist/esm/components/menu/parts/MenuContent.d.mts +1 -1
- package/dist/esm/components/menu/parts/MenuHeader.d.mts +1 -1
- package/dist/esm/components/menu/parts/MenuItem.d.mts +2 -2
- package/dist/esm/components/menu/parts/MenuSeparator.d.mts +1 -1
- package/dist/esm/components/menu/parts/MenuTrigger.d.mts +1 -1
- package/dist/esm/components/nav/Nav.d.mts +1 -1
- package/dist/esm/components/nav/parts/NavGroup.d.mts +1 -1
- package/dist/esm/components/nav/parts/NavItem.d.mts +1 -1
- package/dist/esm/components/select/Select.d.mts +52 -0
- package/dist/esm/components/select/Select.mjs +63 -0
- package/dist/esm/components/select/parts/SearchInput.d.mts +2 -0
- package/dist/esm/components/select/parts/SearchInput.mjs +39 -0
- package/dist/esm/components/select/parts/SelectButton.d.mts +8 -0
- package/dist/esm/components/select/parts/SelectButton.mjs +87 -0
- package/dist/esm/components/select/parts/SelectOption.context.d.mts +8 -0
- package/dist/esm/components/select/parts/SelectOption.context.mjs +24 -0
- package/dist/esm/components/select/parts/SelectOption.d.mts +6 -0
- package/dist/esm/components/select/parts/SelectOption.mjs +63 -0
- package/dist/esm/components/select/parts/SelectOptionGroup.d.mts +12 -0
- package/dist/esm/components/select/parts/SelectOptionGroup.mjs +26 -0
- package/dist/esm/components/select/parts/SelectOptionHelper.d.mts +4 -0
- package/dist/esm/components/select/parts/SelectOptionHelper.mjs +20 -0
- package/dist/esm/components/select-field/SelectField.d.mts +50 -0
- package/dist/esm/components/select-field/SelectField.mjs +65 -0
- package/dist/esm/components/spinner/Spinner.d.mts +2 -2
- package/dist/esm/components/spinner/Spinner.mjs +34 -27
- package/dist/esm/components/spinner/dynamic-content.d.mts +1 -1
- package/dist/esm/components/stepper/Stepper.context.d.mts +1 -1
- package/dist/esm/components/tabs/Tabs.context.d.mts +1 -1
- package/dist/esm/components/tabs/parts/NavigationButton.d.mts +1 -1
- package/dist/esm/components/tabs/parts/Tab.d.mts +3 -1
- package/dist/esm/components/text/Text.d.mts +1 -1
- package/dist/esm/components/text-area/TextArea.d.mts +220 -0
- package/dist/esm/components/text-area/TextArea.mjs +163 -0
- package/dist/esm/components/text-field/TextField.d.mts +63 -0
- package/dist/esm/components/text-field/TextField.mjs +78 -0
- package/dist/esm/components/toast/Toast.context.d.mts +1 -1
- package/dist/esm/components/toast/ToastManager.d.mts +1 -1
- package/dist/esm/components/toast/UnityToast.d.mts +1 -1
- package/dist/esm/components/toast/parts/ToastAction.d.mts +1 -1
- package/dist/esm/components/toast/parts/ToastContent.d.mts +1 -1
- package/dist/esm/components/toast/parts/ToastTitle.d.mts +1 -1
- package/dist/esm/components/tooltip/Tooltip.d.mts +1 -1
- package/dist/esm/docs/blocks/Cards.d.mts +7 -7
- package/dist/esm/hooks/use-form.d.mts +5 -5
- package/dist/esm/hooks/use-form.mjs +32 -0
- package/dist/esm/hooks/use-resizable.d.mts +13 -0
- package/dist/esm/hooks/use-resizable.mjs +51 -0
- package/dist/esm/index.d.mts +30 -0
- package/dist/esm/index.mjs +175 -109
- package/dist/esm/providers/router/RouterProvider.d.mts +1 -1
- package/dist/esm/providers/router/integrations/UnityReactRouterV5Provider.d.mts +1 -1
- package/i18n/en-GB.json +14 -3
- package/i18n/es-ES.json +14 -3
- package/i18n/fr-FR.json +14 -3
- package/package.json +21 -18
- package/dist/cjs/components/form-field/parts/FormInput.d.ts +0 -15
- package/dist/cjs/components/spinner/Spinner.module.css.js +0 -1
- package/dist/esm/components/form-field/parts/FormInput.d.mts +0 -15
- package/dist/esm/components/spinner/Spinner.module.css.mjs +0 -10
- package/dist/style.css +0 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { useMemo as g } from "react";
|
|
2
|
+
import { today as D, getLocalTimeZone as c, createCalendar as L, CalendarDate as d } from "@internationalized/date";
|
|
3
|
+
import { useLocale as v } from "react-aria-components";
|
|
4
|
+
function S({
|
|
5
|
+
yearsBefore: l = 100,
|
|
6
|
+
yearsAfter: s = 30,
|
|
7
|
+
startYear: m,
|
|
8
|
+
endYear: u
|
|
9
|
+
} = {}) {
|
|
10
|
+
const { locale: o } = v(), a = D(c()), y = new Intl.DateTimeFormat().resolvedOptions().calendar, t = L(y), n = new d(
|
|
11
|
+
t,
|
|
12
|
+
a.year,
|
|
13
|
+
a.month,
|
|
14
|
+
a.day
|
|
15
|
+
);
|
|
16
|
+
let e = m, r = u;
|
|
17
|
+
return e === void 0 && (e = n.year - l), r === void 0 && (r = n.year + s), g(
|
|
18
|
+
() => Array.from({ length: r - e + 1 }).map((w, f) => {
|
|
19
|
+
const i = e + f, p = new d(t, i, 1, 1);
|
|
20
|
+
return {
|
|
21
|
+
id: i.toString(),
|
|
22
|
+
name: p.toDate(c()).toLocaleString(o, {
|
|
23
|
+
year: "numeric",
|
|
24
|
+
calendar: t.identifier
|
|
25
|
+
})
|
|
26
|
+
};
|
|
27
|
+
}),
|
|
28
|
+
[o, t, r, e]
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
export {
|
|
32
|
+
S as useYearsList
|
|
33
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { DateValue } from '@internationalized/date';
|
|
2
|
+
import { CalendarProps as AriaDateCalendarProps } from 'react-aria-components';
|
|
3
|
+
type PropsFromAriaCalendar<TDate extends DateValue> = AriaDateCalendarProps<TDate>;
|
|
4
|
+
export type DateCalendarProps<TDate extends DateValue> = PropsFromAriaCalendar<TDate>;
|
|
5
|
+
declare function DateCalendar<TDate extends DateValue>({ value, defaultValue, minValue, maxValue, ...props }: DateCalendarProps<TDate>): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
declare namespace DateCalendar {
|
|
7
|
+
var displayName: string;
|
|
8
|
+
}
|
|
9
|
+
export { DateCalendar };
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { jsx as a, jsxs as r } from "react/jsx-runtime";
|
|
2
|
+
import { useState as f } from "react";
|
|
3
|
+
import { today as Y, getLocalTimeZone as h, isToday as j } from "@internationalized/date";
|
|
4
|
+
import { Dialog as I, Calendar as B, Heading as F, CalendarGrid as M, CalendarGridHeader as O, CalendarHeaderCell as T, CalendarGridBody as W, CalendarCell as k } from "react-aria-components";
|
|
5
|
+
import { tv as P } from "tailwind-variants";
|
|
6
|
+
import { IconButton as m } from "../../icon-button/IconButton.mjs";
|
|
7
|
+
import { useMonthsList as R } from "../hooks/useMonthsList.mjs";
|
|
8
|
+
import { useYearsList as Z } from "../hooks/useYearsList.mjs";
|
|
9
|
+
import { DateSegmentSelect as b } from "./DateSegmentSelect.mjs";
|
|
10
|
+
const $ = P({
|
|
11
|
+
slots: {
|
|
12
|
+
dialog: "uy-p-150",
|
|
13
|
+
calendarWrapper: "uy-flex uy-flex-col uy-gap-150",
|
|
14
|
+
dialogHeader: "uy-flex uy-items-center uy-h-500 uy-w-full",
|
|
15
|
+
dialogHeaderGroup: "uy-flex uy-items-center",
|
|
16
|
+
calendarGrid: "uy-border-separate uy-border-spacing-0 uy-w-full",
|
|
17
|
+
calendarHeaderCell: "uy-typography-body-strong uy-text-content-neutral-low uy-w-[44px] uy-h-[44px] uy-uppercase",
|
|
18
|
+
calendarCell: [
|
|
19
|
+
// base styles
|
|
20
|
+
"uy-typography-body uy-relative uy-text-content-form-enabled uy-w-[44px] uy-h-[44px] uy-outline-hidden uy-cursor-pointer uy-rounded-circle uy-flex uy-items-center uy-justify-center",
|
|
21
|
+
// interaction states
|
|
22
|
+
"hover:uy-bg-surface-neutral-hover active:uy-bg-surface-form-active data-[pressed]:uy-bg-surface-neutral-pressed focus-visible:uy-outline-2 focus-visible:uy-outline-utility-focus-ring focus-visible:uy-outline-offset-2",
|
|
23
|
+
// cells outside of current month
|
|
24
|
+
"data-[outside-month]:uy-text-content-neutral-disabled data-[outside-month]:uy-cursor-not-allowed data-[disabled]:uy-text-content-neutral-disabled data-[disabled]:uy-cursor-not-allowed data-[unavailable]:uy-text-content-neutral-disabled data-[unavailable]:uy-cursor-not-allowed",
|
|
25
|
+
// selected cells
|
|
26
|
+
"data-[selected]:uy-bg-surface-form-active data-[selected]:uy-text-content-inverted",
|
|
27
|
+
// "current day" (today) indicator
|
|
28
|
+
"data-[today]:after:uy-content-' ' data-[today]:after:uy-absolute data-[today]:after:uy-bottom-150 data-[today]:after:uy-w-100 data-[today]:after:uy-h-25 data-[today]:after:uy-bg-border-primary-active data-[today]:data-[selected]:after:uy-bg-content-inverted"
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
variants: {
|
|
32
|
+
isDisabled: {
|
|
33
|
+
true: {
|
|
34
|
+
calendarHeaderCell: "uy-text-content-form-disabled"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
defaultVariants: {
|
|
39
|
+
isDisabled: !1
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
function q({
|
|
43
|
+
value: u,
|
|
44
|
+
defaultValue: l,
|
|
45
|
+
minValue: d,
|
|
46
|
+
maxValue: o,
|
|
47
|
+
...t
|
|
48
|
+
}) {
|
|
49
|
+
const y = Y(h()), [g, p] = f(
|
|
50
|
+
u ?? l ?? y
|
|
51
|
+
), [s, n] = f(
|
|
52
|
+
u ?? l ?? y
|
|
53
|
+
), v = R(), C = Z({
|
|
54
|
+
startYear: d == null ? void 0 : d.year,
|
|
55
|
+
endYear: o == null ? void 0 : o.year
|
|
56
|
+
}), D = (e) => {
|
|
57
|
+
n(
|
|
58
|
+
(i) => i.set({ month: parseInt(e, 10) })
|
|
59
|
+
);
|
|
60
|
+
}, x = (e) => {
|
|
61
|
+
n(
|
|
62
|
+
(i) => i.set({ year: parseInt(e, 10) })
|
|
63
|
+
);
|
|
64
|
+
}, {
|
|
65
|
+
dialog: N,
|
|
66
|
+
calendarWrapper: w,
|
|
67
|
+
dialogHeader: H,
|
|
68
|
+
dialogHeaderGroup: c,
|
|
69
|
+
calendarGrid: G,
|
|
70
|
+
calendarHeaderCell: L,
|
|
71
|
+
calendarCell: S
|
|
72
|
+
} = $({ isDisabled: t.isDisabled });
|
|
73
|
+
return /* @__PURE__ */ a(I, { className: N(), children: /* @__PURE__ */ a(
|
|
74
|
+
B,
|
|
75
|
+
{
|
|
76
|
+
...t,
|
|
77
|
+
minValue: d,
|
|
78
|
+
maxValue: o,
|
|
79
|
+
value: g,
|
|
80
|
+
defaultValue: l,
|
|
81
|
+
onChange: (e) => {
|
|
82
|
+
p(e);
|
|
83
|
+
},
|
|
84
|
+
focusedValue: s,
|
|
85
|
+
onFocusChange: (e) => {
|
|
86
|
+
n(e);
|
|
87
|
+
},
|
|
88
|
+
children: /* @__PURE__ */ r("div", { className: w(), children: [
|
|
89
|
+
/* @__PURE__ */ r("header", { className: H(), children: [
|
|
90
|
+
/* @__PURE__ */ a(F, { className: "uy-sr-only" }),
|
|
91
|
+
/* @__PURE__ */ r(
|
|
92
|
+
"div",
|
|
93
|
+
{
|
|
94
|
+
className: c({
|
|
95
|
+
className: "uy-pl-100 uy-gap-200"
|
|
96
|
+
}),
|
|
97
|
+
children: [
|
|
98
|
+
/* @__PURE__ */ a(
|
|
99
|
+
b,
|
|
100
|
+
{
|
|
101
|
+
type: "month",
|
|
102
|
+
items: v,
|
|
103
|
+
value: s.month.toString(),
|
|
104
|
+
onChange: D,
|
|
105
|
+
isDisabled: t.isDisabled
|
|
106
|
+
}
|
|
107
|
+
),
|
|
108
|
+
/* @__PURE__ */ a(
|
|
109
|
+
b,
|
|
110
|
+
{
|
|
111
|
+
type: "year",
|
|
112
|
+
items: C,
|
|
113
|
+
value: s.year.toString(),
|
|
114
|
+
onChange: x,
|
|
115
|
+
isDisabled: t.isDisabled
|
|
116
|
+
}
|
|
117
|
+
)
|
|
118
|
+
]
|
|
119
|
+
}
|
|
120
|
+
),
|
|
121
|
+
/* @__PURE__ */ r(
|
|
122
|
+
"div",
|
|
123
|
+
{
|
|
124
|
+
className: c({
|
|
125
|
+
className: "uy-ml-auto uy-gap-100"
|
|
126
|
+
}),
|
|
127
|
+
children: [
|
|
128
|
+
/* @__PURE__ */ a(
|
|
129
|
+
m,
|
|
130
|
+
{
|
|
131
|
+
slot: "previous",
|
|
132
|
+
icon: "CaretLeftOutlined",
|
|
133
|
+
color: "neutral",
|
|
134
|
+
label: "Previous",
|
|
135
|
+
variant: "ghost",
|
|
136
|
+
isDisabled: t.isDisabled
|
|
137
|
+
}
|
|
138
|
+
),
|
|
139
|
+
/* @__PURE__ */ a(
|
|
140
|
+
m,
|
|
141
|
+
{
|
|
142
|
+
slot: "next",
|
|
143
|
+
icon: "CaretRightOutlined",
|
|
144
|
+
color: "neutral",
|
|
145
|
+
label: "Next",
|
|
146
|
+
variant: "ghost",
|
|
147
|
+
isDisabled: t.isDisabled
|
|
148
|
+
}
|
|
149
|
+
)
|
|
150
|
+
]
|
|
151
|
+
}
|
|
152
|
+
)
|
|
153
|
+
] }),
|
|
154
|
+
/* @__PURE__ */ r(M, { className: G(), weekdayStyle: "short", children: [
|
|
155
|
+
/* @__PURE__ */ a(O, { children: (e) => /* @__PURE__ */ a(T, { className: L(), children: e }) }),
|
|
156
|
+
/* @__PURE__ */ a(W, { children: (e) => /* @__PURE__ */ a(
|
|
157
|
+
k,
|
|
158
|
+
{
|
|
159
|
+
date: e,
|
|
160
|
+
"data-today": j(e, h()) ? !0 : void 0,
|
|
161
|
+
className: S()
|
|
162
|
+
}
|
|
163
|
+
) })
|
|
164
|
+
] })
|
|
165
|
+
] })
|
|
166
|
+
}
|
|
167
|
+
) });
|
|
168
|
+
}
|
|
169
|
+
q.displayName = "DateCalendar";
|
|
170
|
+
export {
|
|
171
|
+
q as DateCalendar
|
|
172
|
+
};
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { CalendarDate } from '@internationalized/date';
|
|
2
|
+
import { ReactElement } from 'react';
|
|
3
|
+
import { DateFieldProps } from 'react-aria-components';
|
|
4
|
+
export declare const dateInput: import('tailwind-variants').TVReturnType<{
|
|
5
|
+
isInvalid: {
|
|
6
|
+
true: {
|
|
7
|
+
base: string;
|
|
8
|
+
state: string;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
isReadOnly: {
|
|
12
|
+
true: {
|
|
13
|
+
base: string;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
isDisabled: {
|
|
17
|
+
true: {
|
|
18
|
+
base: string;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
}, {
|
|
22
|
+
base: string;
|
|
23
|
+
input: string;
|
|
24
|
+
state: string;
|
|
25
|
+
}, undefined, import('tailwind-variants/dist/config').TVConfig<{
|
|
26
|
+
isInvalid: {
|
|
27
|
+
true: {
|
|
28
|
+
base: string;
|
|
29
|
+
state: string;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
isReadOnly: {
|
|
33
|
+
true: {
|
|
34
|
+
base: string;
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
isDisabled: {
|
|
38
|
+
true: {
|
|
39
|
+
base: string;
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
}, {
|
|
43
|
+
isInvalid: {
|
|
44
|
+
true: {
|
|
45
|
+
base: string;
|
|
46
|
+
state: string;
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
isReadOnly: {
|
|
50
|
+
true: {
|
|
51
|
+
base: string;
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
isDisabled: {
|
|
55
|
+
true: {
|
|
56
|
+
base: string;
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
}>, {
|
|
60
|
+
isInvalid: {
|
|
61
|
+
true: {
|
|
62
|
+
base: string;
|
|
63
|
+
state: string;
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
isReadOnly: {
|
|
67
|
+
true: {
|
|
68
|
+
base: string;
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
isDisabled: {
|
|
72
|
+
true: {
|
|
73
|
+
base: string;
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
}, {
|
|
77
|
+
base: string;
|
|
78
|
+
input: string;
|
|
79
|
+
state: string;
|
|
80
|
+
}, import('tailwind-variants').TVReturnType<{
|
|
81
|
+
isInvalid: {
|
|
82
|
+
true: {
|
|
83
|
+
base: string;
|
|
84
|
+
state: string;
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
isReadOnly: {
|
|
88
|
+
true: {
|
|
89
|
+
base: string;
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
isDisabled: {
|
|
93
|
+
true: {
|
|
94
|
+
base: string;
|
|
95
|
+
};
|
|
96
|
+
};
|
|
97
|
+
}, {
|
|
98
|
+
base: string;
|
|
99
|
+
input: string;
|
|
100
|
+
state: string;
|
|
101
|
+
}, undefined, import('tailwind-variants/dist/config').TVConfig<{
|
|
102
|
+
isInvalid: {
|
|
103
|
+
true: {
|
|
104
|
+
base: string;
|
|
105
|
+
state: string;
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
isReadOnly: {
|
|
109
|
+
true: {
|
|
110
|
+
base: string;
|
|
111
|
+
};
|
|
112
|
+
};
|
|
113
|
+
isDisabled: {
|
|
114
|
+
true: {
|
|
115
|
+
base: string;
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
}, {
|
|
119
|
+
isInvalid: {
|
|
120
|
+
true: {
|
|
121
|
+
base: string;
|
|
122
|
+
state: string;
|
|
123
|
+
};
|
|
124
|
+
};
|
|
125
|
+
isReadOnly: {
|
|
126
|
+
true: {
|
|
127
|
+
base: string;
|
|
128
|
+
};
|
|
129
|
+
};
|
|
130
|
+
isDisabled: {
|
|
131
|
+
true: {
|
|
132
|
+
base: string;
|
|
133
|
+
};
|
|
134
|
+
};
|
|
135
|
+
}>, unknown, unknown, undefined>>;
|
|
136
|
+
export interface DateInputProps extends DateFieldProps<CalendarDate> {
|
|
137
|
+
/** Element to display after the input field */
|
|
138
|
+
suffix?: ReactElement;
|
|
139
|
+
/** Whether the field is required */
|
|
140
|
+
isRequired?: boolean;
|
|
141
|
+
/** Whether the field is in an invalid state */
|
|
142
|
+
isInvalid?: boolean;
|
|
143
|
+
/** Whether the field is in a loading state */
|
|
144
|
+
isLoading?: boolean;
|
|
145
|
+
/** Whether the field is disabled */
|
|
146
|
+
isDisabled?: boolean;
|
|
147
|
+
/** Whether the field is read-only */
|
|
148
|
+
isReadOnly?: boolean;
|
|
149
|
+
/** Clear button click handler */
|
|
150
|
+
onClearButtonPress?: () => void;
|
|
151
|
+
}
|
|
152
|
+
export declare function DateInput({ isLoading, isInvalid, isReadOnly, isDisabled, onClearButtonPress, }: DateInputProps): import("react/jsx-runtime").JSX.Element;
|
|
153
|
+
export declare namespace DateInput {
|
|
154
|
+
var displayName: string;
|
|
155
|
+
}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { jsxs as i, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { useContext as b } from "react";
|
|
3
|
+
import { DatePickerStateContext as x, DateInput as g, DateSegment as v } from "react-aria-components";
|
|
4
|
+
import { useIntl as I } from "react-intl";
|
|
5
|
+
import { tv as d } from "tailwind-variants";
|
|
6
|
+
import { CircularIconButton as h } from "../../icon-button/CircularIconButton.mjs";
|
|
7
|
+
import { Icon as D } from "../../icon/Icon.mjs";
|
|
8
|
+
import { Spinner as M } from "../../spinner/Spinner.mjs";
|
|
9
|
+
const N = d({
|
|
10
|
+
base: "uy-group uy-box-content uy-rounded-25 uy-px-25 uy-text-end uy-tabular-nums uy-outline-none uy-typography-body focus:uy-bg-surface-form-active focus:uy-rounded-25 focus:uy-text-content-inverted data-[disabled]:uy-text-content-form-disabled",
|
|
11
|
+
variants: {
|
|
12
|
+
isPlaceholder: {
|
|
13
|
+
true: "uy-text-content-neutral-lowest",
|
|
14
|
+
false: "uy-text-content-form-enabled"
|
|
15
|
+
},
|
|
16
|
+
isLiteral: {
|
|
17
|
+
true: "uy-text-content-form-enabled",
|
|
18
|
+
false: ""
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}), w = d({
|
|
22
|
+
slots: {
|
|
23
|
+
base: "uy-flex uy-gap-50 uy-flex-grow uy-pt-100 uy-pb-100 uy-pl-150 uy-pr-150 uy-rounded-100",
|
|
24
|
+
input: "uy-flex uy-gap-25 uy-w-fit uy-grow",
|
|
25
|
+
state: "uy-flex uy-gap-50 uy-items-center"
|
|
26
|
+
},
|
|
27
|
+
variants: {
|
|
28
|
+
isInvalid: {
|
|
29
|
+
true: {
|
|
30
|
+
base: "uy-bg-surface-form-error",
|
|
31
|
+
state: "uy-text-content-form-error"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
isReadOnly: {
|
|
35
|
+
true: {
|
|
36
|
+
base: "uy-border-border-form-disabled uy-bg-surface-form-disabled"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
isDisabled: {
|
|
40
|
+
true: {
|
|
41
|
+
base: "uy-bg-surface-form-disabled uy-text-content-form-disabled"
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
compoundVariants: [
|
|
46
|
+
{
|
|
47
|
+
isInvalid: !1,
|
|
48
|
+
isDisabled: !1,
|
|
49
|
+
isReadOnly: !1,
|
|
50
|
+
className: {
|
|
51
|
+
base: "uy-border-border-form-enabled uy-bg-surface-form-enabled",
|
|
52
|
+
state: "uy-text-content-neutral-disabled"
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
});
|
|
57
|
+
function O({
|
|
58
|
+
isLoading: n,
|
|
59
|
+
isInvalid: u,
|
|
60
|
+
isReadOnly: s,
|
|
61
|
+
isDisabled: l,
|
|
62
|
+
onClearButtonPress: a
|
|
63
|
+
}) {
|
|
64
|
+
const r = I(), t = b(x), { dateValue: f } = t, { base: c, input: m, state: y } = w({
|
|
65
|
+
isInvalid: !!u,
|
|
66
|
+
isReadOnly: !!s,
|
|
67
|
+
isDisabled: !!l
|
|
68
|
+
}), p = f && !n && !s && !l;
|
|
69
|
+
return /* @__PURE__ */ i("div", { className: c(), children: [
|
|
70
|
+
/* @__PURE__ */ e(g, { className: m(), children: (o) => /* @__PURE__ */ e(
|
|
71
|
+
v,
|
|
72
|
+
{
|
|
73
|
+
segment: o,
|
|
74
|
+
className: N({
|
|
75
|
+
isPlaceholder: o.isPlaceholder,
|
|
76
|
+
isLiteral: o.type === "literal"
|
|
77
|
+
})
|
|
78
|
+
}
|
|
79
|
+
) }),
|
|
80
|
+
/* @__PURE__ */ i("div", { className: y(), children: [
|
|
81
|
+
n && /* @__PURE__ */ e(
|
|
82
|
+
M,
|
|
83
|
+
{
|
|
84
|
+
color: "inherit",
|
|
85
|
+
size: "small",
|
|
86
|
+
label: r.formatMessage({
|
|
87
|
+
id: "unity:component:form-field:form-input:spinner:label",
|
|
88
|
+
defaultMessage: "Loading"
|
|
89
|
+
})
|
|
90
|
+
}
|
|
91
|
+
),
|
|
92
|
+
u && /* @__PURE__ */ e(
|
|
93
|
+
D,
|
|
94
|
+
{
|
|
95
|
+
src: "WarningCircleOutlined",
|
|
96
|
+
color: "content.form.invalid",
|
|
97
|
+
alt: r.formatMessage({
|
|
98
|
+
id: "unity:component:form-field:form-input:error:alt",
|
|
99
|
+
defaultMessage: "Error"
|
|
100
|
+
})
|
|
101
|
+
}
|
|
102
|
+
),
|
|
103
|
+
p && /* @__PURE__ */ e(
|
|
104
|
+
h,
|
|
105
|
+
{
|
|
106
|
+
slot: null,
|
|
107
|
+
title: r.formatMessage({
|
|
108
|
+
id: "unity:component:form-field:form-input:clear:title",
|
|
109
|
+
defaultMessage: "Clear"
|
|
110
|
+
}),
|
|
111
|
+
icon: "CloseOutlined",
|
|
112
|
+
onPress: () => {
|
|
113
|
+
t == null || t.setValue(null), a == null || a();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
)
|
|
117
|
+
] })
|
|
118
|
+
] });
|
|
119
|
+
}
|
|
120
|
+
O.displayName = "DateInput";
|
|
121
|
+
export {
|
|
122
|
+
O as DateInput,
|
|
123
|
+
w as dateInput
|
|
124
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface DateSegmentSelectProps {
|
|
2
|
+
items: Array<{
|
|
3
|
+
id: string | number;
|
|
4
|
+
name: string;
|
|
5
|
+
}>;
|
|
6
|
+
value: string;
|
|
7
|
+
onChange: (value: string) => void;
|
|
8
|
+
type: 'month' | 'year';
|
|
9
|
+
isDisabled?: boolean;
|
|
10
|
+
}
|
|
11
|
+
declare function DateSegmentSelect({ items, value, onChange, type, isDisabled, }: DateSegmentSelectProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
declare namespace DateSegmentSelect {
|
|
13
|
+
var displayName: string;
|
|
14
|
+
}
|
|
15
|
+
export { DateSegmentSelect };
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { jsxs as v, jsx as n } from "react/jsx-runtime";
|
|
2
|
+
import { useState as $ } from "react";
|
|
3
|
+
import { IconSprite as I } from "@payfit/unity-icons";
|
|
4
|
+
import { useId as w } from "react-aria";
|
|
5
|
+
import { useIntl as x } from "react-intl";
|
|
6
|
+
function N({
|
|
7
|
+
items: o,
|
|
8
|
+
value: i,
|
|
9
|
+
onChange: y,
|
|
10
|
+
type: e,
|
|
11
|
+
isDisabled: s = !1
|
|
12
|
+
}) {
|
|
13
|
+
const l = (t) => () => {
|
|
14
|
+
const a = o.find((b) => b.id === t);
|
|
15
|
+
return (a == null ? void 0 : a.name) ?? Array.from({ length: 3 }).join("\0");
|
|
16
|
+
}, r = w(), c = x(), [p, f] = $(l(i)), d = `${r}-calendar-${e}-select-label`, u = `${r}-calendar-${e}-select`, m = `${r}-calendar-${e}-select-description`, h = e === "month" ? "unity:component:form-field:date-picker:segment-select:month" : "unity:component:form-field:date-picker:segment-select:year", g = e === "month" ? "unity:component:form-field:date-picker:segment-select:month-description" : "unity:component:form-field:date-picker:segment-select:year-description";
|
|
17
|
+
return /* @__PURE__ */ v("div", { className: "uy-isolation-isolate uy-relative uy-inline-flex uy-items-center uy-cursor-pointer", children: [
|
|
18
|
+
/* @__PURE__ */ n(
|
|
19
|
+
"label",
|
|
20
|
+
{
|
|
21
|
+
id: d,
|
|
22
|
+
htmlFor: u,
|
|
23
|
+
className: "uy-sr-only",
|
|
24
|
+
"aria-hidden": "true",
|
|
25
|
+
children: c.formatMessage({
|
|
26
|
+
id: h,
|
|
27
|
+
defaultMessage: `Change current ${e}`
|
|
28
|
+
})
|
|
29
|
+
}
|
|
30
|
+
),
|
|
31
|
+
/* @__PURE__ */ n(
|
|
32
|
+
"select",
|
|
33
|
+
{
|
|
34
|
+
id: u,
|
|
35
|
+
value: i,
|
|
36
|
+
onChange: (t) => {
|
|
37
|
+
y(t.target.value), f(l(t.target.value));
|
|
38
|
+
},
|
|
39
|
+
disabled: s,
|
|
40
|
+
className: "uy-appearance-none uy-box-border uy-w-[var(--uy-selected-item-width)] uy-bg-transparent uy-border-none uy-rounded-50 uy-capitalize uy-text-content-form-enabled uy-typography-action-large uy-cursor-pointer uy-pr-300 disabled:uy-text-content-form-disabled focus-visible:uy-outline-2 focus-visible:uy-outline-offset-2 focus-visible:uy-outline-utility-focus-ring [-webkit-tap-highlight-color:transparent] [background-color:transparent]",
|
|
41
|
+
style: {
|
|
42
|
+
"--uy-selected-item-width": `calc(var(--uy-spacing-300) + ${p.length}ch)`
|
|
43
|
+
},
|
|
44
|
+
"aria-labelledby": d,
|
|
45
|
+
"aria-describedby": m,
|
|
46
|
+
children: o.map((t) => /* @__PURE__ */ n("option", { value: t.id, children: t.name }, t.id))
|
|
47
|
+
}
|
|
48
|
+
),
|
|
49
|
+
/* @__PURE__ */ n("div", { className: "uy-absolute uy-right-0 uy-pointer-events-none", children: /* @__PURE__ */ n(
|
|
50
|
+
I,
|
|
51
|
+
{
|
|
52
|
+
src: "CaretDownOutlined",
|
|
53
|
+
width: 20,
|
|
54
|
+
height: 20,
|
|
55
|
+
color: "inherit",
|
|
56
|
+
role: "presentation",
|
|
57
|
+
className: s ? "uy-text-content-form-disabled" : ""
|
|
58
|
+
}
|
|
59
|
+
) }),
|
|
60
|
+
/* @__PURE__ */ n("span", { id: m, className: "uy-sr-only", "aria-hidden": "true", children: c.formatMessage({
|
|
61
|
+
id: g,
|
|
62
|
+
defaultMessage: `Press Enter or Space to change ${e}, then use up and down arrows to select a ${e}`
|
|
63
|
+
}) })
|
|
64
|
+
] });
|
|
65
|
+
}
|
|
66
|
+
N.displayName = "DateSegmentSelect";
|
|
67
|
+
export {
|
|
68
|
+
N as DateSegmentSelect
|
|
69
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CalendarDate } from '@internationalized/date';
|
|
2
|
+
/**
|
|
3
|
+
* Converts a JS Date or string to a CalendarDate, preserving the local date components
|
|
4
|
+
* regardless of timezone.
|
|
5
|
+
*/
|
|
6
|
+
export declare const parseDateValue: (value: Date | string | undefined) => CalendarDate | undefined;
|
|
7
|
+
/**
|
|
8
|
+
* Converts a CalendarDate to a JS Date, preserving the local date components.
|
|
9
|
+
* This ensures that "2024-03-15" becomes "March 15, 2024" in the local timezone,
|
|
10
|
+
* without any unexpected shifts due to timezone conversion.
|
|
11
|
+
*/
|
|
12
|
+
export declare const calendarDateToDate: (date: CalendarDate | null) => Date | undefined;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { CalendarDate } from '@internationalized/date';
|
|
2
|
+
import { ForwardedRef, ReactNode } from 'react';
|
|
3
|
+
import { FieldPath, FieldValues } from 'react-hook-form';
|
|
4
|
+
import { infer as ZodInfer } from 'zod';
|
|
5
|
+
import { Schema } from '../../hooks/use-form.types.mjs';
|
|
6
|
+
import { DatePickerProps } from '../date-picker/DatePicker.mjs';
|
|
7
|
+
import { LabelProps } from '../label/Label.mjs';
|
|
8
|
+
export interface DatePickerFieldProps extends Pick<LabelProps, 'isRequired' | 'requiredVariant'>, DatePickerProps {
|
|
9
|
+
/** The name of the field, which should match the form schema. */
|
|
10
|
+
name: string;
|
|
11
|
+
/** The label for the date picker field. */
|
|
12
|
+
label: string;
|
|
13
|
+
/** The default value of the date picker field. */
|
|
14
|
+
defaultValue?: CalendarDate;
|
|
15
|
+
/** Helper text to display below the date picker field. */
|
|
16
|
+
helperText?: ReactNode;
|
|
17
|
+
/** Feedback text to display below the date picker field. */
|
|
18
|
+
feedbackText?: ReactNode;
|
|
19
|
+
/** A contextual link to display below the date picker field. */
|
|
20
|
+
contextualLink?: ReactNode;
|
|
21
|
+
/** Whether the field is in an invalid state. */
|
|
22
|
+
isInvalid?: boolean;
|
|
23
|
+
/** Whether the field is in a loading state. */
|
|
24
|
+
isLoading?: boolean;
|
|
25
|
+
/** Whether the field is disabled. */
|
|
26
|
+
isDisabled?: boolean;
|
|
27
|
+
/** Whether the field is read-only. */
|
|
28
|
+
isReadOnly?: boolean;
|
|
29
|
+
/** The minimum selectable date. */
|
|
30
|
+
minValue?: CalendarDate;
|
|
31
|
+
/** The maximum selectable date. */
|
|
32
|
+
maxValue?: CalendarDate;
|
|
33
|
+
/** Function to determine if a date should be disabled. */
|
|
34
|
+
isDateUnavailable?: (date: CalendarDate) => boolean;
|
|
35
|
+
/** Handler called when the clear button is pressed. */
|
|
36
|
+
onClearButtonPress?: () => void;
|
|
37
|
+
/** Handler called when the calendar overlay opens or closes. */
|
|
38
|
+
onOpenChange?: (isOpen: boolean) => void;
|
|
39
|
+
/** Handler called when the field loses focus. */
|
|
40
|
+
onBlur?: () => void;
|
|
41
|
+
/** Handler called when the field gains focus. */
|
|
42
|
+
onFocus?: () => void;
|
|
43
|
+
}
|
|
44
|
+
export type TypedDatePickerFieldProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = Omit<DatePickerFieldProps, 'name'> & {
|
|
45
|
+
name: TName;
|
|
46
|
+
};
|
|
47
|
+
type DatePickerFieldComponent = {
|
|
48
|
+
<TSchema extends Schema>(props: TypedDatePickerFieldProps<ZodInfer<TSchema>> & {
|
|
49
|
+
ref?: ForwardedRef<HTMLDivElement>;
|
|
50
|
+
}): React.JSX.Element;
|
|
51
|
+
displayName?: string;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* The `DatePickerField` component renders a full field that can accept date input, integrating with the `Form` component automatically.
|
|
55
|
+
* It provides a calendar overlay for date selection and supports direct text input for dates.
|
|
56
|
+
* @example
|
|
57
|
+
* ```tsx
|
|
58
|
+
* const schema = z.object({
|
|
59
|
+
* birthDate: z.custom<CalendarDate>(),
|
|
60
|
+
* startDate: z.custom<CalendarDate>()
|
|
61
|
+
* })
|
|
62
|
+
*
|
|
63
|
+
* function MyForm() {
|
|
64
|
+
* const { Form } = useUnityForm(schema)
|
|
65
|
+
*
|
|
66
|
+
* return (
|
|
67
|
+
* <Form action={handleSubmit}>
|
|
68
|
+
* <DatePickerField<typeof schema>
|
|
69
|
+
* name="birthDate" // Only "birthDate" | "startDate" allowed
|
|
70
|
+
* label="Birth Date"
|
|
71
|
+
* />
|
|
72
|
+
* </Form>
|
|
73
|
+
* )
|
|
74
|
+
* }
|
|
75
|
+
* ```
|
|
76
|
+
* @remarks
|
|
77
|
+
* [API & Docs](https://master--66fe6715241b661107117e47.chromatic.com/?path=/docs/forms-datepickerfield--docs) • [Design Guidelines](https://www.payfit.design/24f360409/p/719ac2-date-picker)
|
|
78
|
+
* @note The schema type parameter is needed to ensure type safety with the form's schema. If you omit it, the `name` prop will not be type-safe.
|
|
79
|
+
* @note
|
|
80
|
+
* This component requires `@internationalized/date` as a peer dependency. Make sure to install it in your project: `yarn add @internationalized/date`
|
|
81
|
+
*/
|
|
82
|
+
declare const DatePickerField: DatePickerFieldComponent;
|
|
83
|
+
export { DatePickerField };
|