@lets-events/react 12.8.1 → 12.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +8 -8
- package/CHANGELOG.md +12 -0
- package/dist/index.d.mts +14 -6
- package/dist/index.d.ts +14 -6
- package/dist/index.js +73 -25
- package/dist/index.mjs +73 -25
- package/package.json +1 -1
- package/src/components/Calendar/index.tsx +20 -5
- package/src/components/DoubleCalendar/index.tsx +16 -4
- package/src/components/FormFields/CalendarFormField.tsx +3 -0
- package/src/components/FormFields/DateAndTimeFormField.tsx +3 -0
- package/src/components/FormFields/DoubleCalendarFormField.tsx +3 -0
- package/src/components/FormFields/SelectFormField.tsx +20 -0
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
-
> @lets-events/react@12.8.
|
|
3
|
+
> @lets-events/react@12.8.3 build
|
|
4
4
|
> tsup src/index.tsx --format esm,cjs --dts --external react
|
|
5
5
|
|
|
6
6
|
[1G[0K[34mCLI[39m Building entry: src/index.tsx
|
|
@@ -10,12 +10,12 @@
|
|
|
10
10
|
[34mCLI[39m Target: es6
|
|
11
11
|
[34mESM[39m Build start
|
|
12
12
|
[34mCJS[39m Build start
|
|
13
|
-
[
|
|
14
|
-
[
|
|
15
|
-
[
|
|
16
|
-
[
|
|
13
|
+
[32mCJS[39m [1mdist/index.js [22m[32m411.36 KB[39m
|
|
14
|
+
[32mCJS[39m ⚡️ Build success in 459ms
|
|
15
|
+
[32mESM[39m [1mdist/index.mjs [22m[32m395.98 KB[39m
|
|
16
|
+
[32mESM[39m ⚡️ Build success in 460ms
|
|
17
17
|
DTS Build start
|
|
18
|
-
DTS ⚡️ Build success in
|
|
19
|
-
DTS dist/index.d.mts
|
|
20
|
-
DTS dist/index.d.ts
|
|
18
|
+
DTS ⚡️ Build success in 8332ms
|
|
19
|
+
DTS dist/index.d.mts 404.05 KB
|
|
20
|
+
DTS dist/index.d.ts 404.05 KB
|
|
21
21
|
[1G[0K⠙[1G[0K
|
package/CHANGELOG.md
CHANGED
package/dist/index.d.mts
CHANGED
|
@@ -4725,9 +4725,10 @@ type CalendarProps = ComponentProps<typeof CalendarStyled> & {
|
|
|
4725
4725
|
hasError?: boolean;
|
|
4726
4726
|
expand?: boolean;
|
|
4727
4727
|
allowPastDates?: boolean;
|
|
4728
|
+
maxDate?: Date;
|
|
4728
4729
|
maxYearsFromNow?: number;
|
|
4729
4730
|
};
|
|
4730
|
-
declare function Calendar({ action, actionText, calendarLayout, selected, setSelected, position, hasError, expand, allowPastDates, maxYearsFromNow, ...props }: CalendarProps): react_jsx_runtime.JSX.Element;
|
|
4731
|
+
declare function Calendar({ action, actionText, calendarLayout, selected, setSelected, position, hasError, expand, allowPastDates, maxDate, maxYearsFromNow, ...props }: CalendarProps): react_jsx_runtime.JSX.Element;
|
|
4731
4732
|
|
|
4732
4733
|
type DateRange = {
|
|
4733
4734
|
from?: Date;
|
|
@@ -4744,9 +4745,10 @@ type DoubleCalendarProps = ComponentProps<typeof CalendarStyled> & {
|
|
|
4744
4745
|
expand?: boolean;
|
|
4745
4746
|
allowPastDates?: boolean;
|
|
4746
4747
|
maxYearsFromNow?: number;
|
|
4748
|
+
maxDate?: Date;
|
|
4747
4749
|
disabled?: boolean;
|
|
4748
4750
|
};
|
|
4749
|
-
declare function DoubleCalendar({ action, actionText, calendarLayout, selected, setSelected, position, hasError, expand, allowPastDates, maxYearsFromNow, disabled, ...props }: DoubleCalendarProps): react_jsx_runtime.JSX.Element;
|
|
4751
|
+
declare function DoubleCalendar({ action, actionText, calendarLayout, selected, setSelected, position, hasError, expand, allowPastDates, maxYearsFromNow, maxDate, disabled, ...props }: DoubleCalendarProps): react_jsx_runtime.JSX.Element;
|
|
4750
4752
|
|
|
4751
4753
|
declare const DrawerOverlayStyled: _stitches_react_types_styled_component.StyledComponent<"div", {
|
|
4752
4754
|
open?: boolean | "false" | "true" | undefined;
|
|
@@ -15247,13 +15249,16 @@ type SelectFormFieldProps = {
|
|
|
15247
15249
|
required?: boolean;
|
|
15248
15250
|
placeholder?: string;
|
|
15249
15251
|
options: Option[];
|
|
15252
|
+
showMoreButton?: boolean;
|
|
15253
|
+
showMoreButtonLabel?: string;
|
|
15254
|
+
showMoreButtonOnClick?: () => void;
|
|
15250
15255
|
validation?: {
|
|
15251
15256
|
validate?: (value: string) => boolean | string;
|
|
15252
15257
|
};
|
|
15253
15258
|
validationErrorMessage?: string;
|
|
15254
15259
|
defaultValue?: string;
|
|
15255
15260
|
};
|
|
15256
|
-
declare const SelectFormField: ({ name, label, required, placeholder, options, validation, validationErrorMessage, defaultValue, }: SelectFormFieldProps) => react_jsx_runtime.JSX.Element;
|
|
15261
|
+
declare const SelectFormField: ({ name, label, required, placeholder, options, showMoreButton, showMoreButtonLabel, showMoreButtonOnClick, validation, validationErrorMessage, defaultValue, }: SelectFormFieldProps) => react_jsx_runtime.JSX.Element;
|
|
15257
15262
|
|
|
15258
15263
|
type SwitchFormFieldProps = {
|
|
15259
15264
|
name: string;
|
|
@@ -15325,8 +15330,9 @@ type CalendarFormFieldProps = Omit<CalendarProps, "selected" | "setSelected"> &
|
|
|
15325
15330
|
rules?: Omit<RegisterOptions<FieldValues, string>, "valueAsNumber" | "valueAsDate" | "setValueAs" | "disabled">;
|
|
15326
15331
|
allowPastDates?: boolean;
|
|
15327
15332
|
maxYearsFromNow?: number;
|
|
15333
|
+
maxDate?: Date;
|
|
15328
15334
|
};
|
|
15329
|
-
declare const CalendarFormField: ({ name, label, required, validate, validationErrorMessage, rules, onChange, allowPastDates, maxYearsFromNow, ...calendarProps }: CalendarFormFieldProps) => react_jsx_runtime.JSX.Element;
|
|
15335
|
+
declare const CalendarFormField: ({ name, label, required, validate, validationErrorMessage, rules, onChange, allowPastDates, maxYearsFromNow, maxDate, ...calendarProps }: CalendarFormFieldProps) => react_jsx_runtime.JSX.Element;
|
|
15330
15336
|
|
|
15331
15337
|
type DoubleCalendarFormFieldProps = Omit<DoubleCalendarProps, "selected" | "setSelected"> & {
|
|
15332
15338
|
name: string;
|
|
@@ -15338,8 +15344,9 @@ type DoubleCalendarFormFieldProps = Omit<DoubleCalendarProps, "selected" | "setS
|
|
|
15338
15344
|
disabled?: boolean;
|
|
15339
15345
|
allowPastDates?: boolean;
|
|
15340
15346
|
maxYearsFromNow?: number;
|
|
15347
|
+
maxDate?: Date;
|
|
15341
15348
|
};
|
|
15342
|
-
declare const DoubleCalendarFormField: ({ name, label, required, validate, validationErrorMessage, rules, allowPastDates, maxYearsFromNow, disabled, ...calendarProps }: DoubleCalendarFormFieldProps) => react_jsx_runtime.JSX.Element;
|
|
15349
|
+
declare const DoubleCalendarFormField: ({ name, label, required, validate, validationErrorMessage, rules, allowPastDates, maxYearsFromNow, maxDate, disabled, ...calendarProps }: DoubleCalendarFormFieldProps) => react_jsx_runtime.JSX.Element;
|
|
15343
15350
|
|
|
15344
15351
|
type TimePickerFormFieldProps = Omit<TimePickerProps, "selected" | "setSelected"> & {
|
|
15345
15352
|
name: string;
|
|
@@ -15360,8 +15367,9 @@ type DateAndTimeFormFieldProps = Omit<CalendarProps, "selected" | "setSelected">
|
|
|
15360
15367
|
rules?: Omit<RegisterOptions<FieldValues, string>, "valueAsNumber" | "valueAsDate" | "setValueAs" | "disabled">;
|
|
15361
15368
|
allowPastDates?: boolean;
|
|
15362
15369
|
maxYearsFromNow?: number;
|
|
15370
|
+
maxDate?: Date;
|
|
15363
15371
|
};
|
|
15364
|
-
declare const DateAndTimeFormField: ({ name, label, required, validate, validationErrorMessage, rules, allowPastDates, maxYearsFromNow, ...props }: DateAndTimeFormFieldProps) => react_jsx_runtime.JSX.Element;
|
|
15372
|
+
declare const DateAndTimeFormField: ({ name, label, required, validate, validationErrorMessage, rules, allowPastDates, maxYearsFromNow, maxDate, ...props }: DateAndTimeFormFieldProps) => react_jsx_runtime.JSX.Element;
|
|
15365
15373
|
|
|
15366
15374
|
interface UploadConfig {
|
|
15367
15375
|
apiUrl: string;
|
package/dist/index.d.ts
CHANGED
|
@@ -4725,9 +4725,10 @@ type CalendarProps = ComponentProps<typeof CalendarStyled> & {
|
|
|
4725
4725
|
hasError?: boolean;
|
|
4726
4726
|
expand?: boolean;
|
|
4727
4727
|
allowPastDates?: boolean;
|
|
4728
|
+
maxDate?: Date;
|
|
4728
4729
|
maxYearsFromNow?: number;
|
|
4729
4730
|
};
|
|
4730
|
-
declare function Calendar({ action, actionText, calendarLayout, selected, setSelected, position, hasError, expand, allowPastDates, maxYearsFromNow, ...props }: CalendarProps): react_jsx_runtime.JSX.Element;
|
|
4731
|
+
declare function Calendar({ action, actionText, calendarLayout, selected, setSelected, position, hasError, expand, allowPastDates, maxDate, maxYearsFromNow, ...props }: CalendarProps): react_jsx_runtime.JSX.Element;
|
|
4731
4732
|
|
|
4732
4733
|
type DateRange = {
|
|
4733
4734
|
from?: Date;
|
|
@@ -4744,9 +4745,10 @@ type DoubleCalendarProps = ComponentProps<typeof CalendarStyled> & {
|
|
|
4744
4745
|
expand?: boolean;
|
|
4745
4746
|
allowPastDates?: boolean;
|
|
4746
4747
|
maxYearsFromNow?: number;
|
|
4748
|
+
maxDate?: Date;
|
|
4747
4749
|
disabled?: boolean;
|
|
4748
4750
|
};
|
|
4749
|
-
declare function DoubleCalendar({ action, actionText, calendarLayout, selected, setSelected, position, hasError, expand, allowPastDates, maxYearsFromNow, disabled, ...props }: DoubleCalendarProps): react_jsx_runtime.JSX.Element;
|
|
4751
|
+
declare function DoubleCalendar({ action, actionText, calendarLayout, selected, setSelected, position, hasError, expand, allowPastDates, maxYearsFromNow, maxDate, disabled, ...props }: DoubleCalendarProps): react_jsx_runtime.JSX.Element;
|
|
4750
4752
|
|
|
4751
4753
|
declare const DrawerOverlayStyled: _stitches_react_types_styled_component.StyledComponent<"div", {
|
|
4752
4754
|
open?: boolean | "false" | "true" | undefined;
|
|
@@ -15247,13 +15249,16 @@ type SelectFormFieldProps = {
|
|
|
15247
15249
|
required?: boolean;
|
|
15248
15250
|
placeholder?: string;
|
|
15249
15251
|
options: Option[];
|
|
15252
|
+
showMoreButton?: boolean;
|
|
15253
|
+
showMoreButtonLabel?: string;
|
|
15254
|
+
showMoreButtonOnClick?: () => void;
|
|
15250
15255
|
validation?: {
|
|
15251
15256
|
validate?: (value: string) => boolean | string;
|
|
15252
15257
|
};
|
|
15253
15258
|
validationErrorMessage?: string;
|
|
15254
15259
|
defaultValue?: string;
|
|
15255
15260
|
};
|
|
15256
|
-
declare const SelectFormField: ({ name, label, required, placeholder, options, validation, validationErrorMessage, defaultValue, }: SelectFormFieldProps) => react_jsx_runtime.JSX.Element;
|
|
15261
|
+
declare const SelectFormField: ({ name, label, required, placeholder, options, showMoreButton, showMoreButtonLabel, showMoreButtonOnClick, validation, validationErrorMessage, defaultValue, }: SelectFormFieldProps) => react_jsx_runtime.JSX.Element;
|
|
15257
15262
|
|
|
15258
15263
|
type SwitchFormFieldProps = {
|
|
15259
15264
|
name: string;
|
|
@@ -15325,8 +15330,9 @@ type CalendarFormFieldProps = Omit<CalendarProps, "selected" | "setSelected"> &
|
|
|
15325
15330
|
rules?: Omit<RegisterOptions<FieldValues, string>, "valueAsNumber" | "valueAsDate" | "setValueAs" | "disabled">;
|
|
15326
15331
|
allowPastDates?: boolean;
|
|
15327
15332
|
maxYearsFromNow?: number;
|
|
15333
|
+
maxDate?: Date;
|
|
15328
15334
|
};
|
|
15329
|
-
declare const CalendarFormField: ({ name, label, required, validate, validationErrorMessage, rules, onChange, allowPastDates, maxYearsFromNow, ...calendarProps }: CalendarFormFieldProps) => react_jsx_runtime.JSX.Element;
|
|
15335
|
+
declare const CalendarFormField: ({ name, label, required, validate, validationErrorMessage, rules, onChange, allowPastDates, maxYearsFromNow, maxDate, ...calendarProps }: CalendarFormFieldProps) => react_jsx_runtime.JSX.Element;
|
|
15330
15336
|
|
|
15331
15337
|
type DoubleCalendarFormFieldProps = Omit<DoubleCalendarProps, "selected" | "setSelected"> & {
|
|
15332
15338
|
name: string;
|
|
@@ -15338,8 +15344,9 @@ type DoubleCalendarFormFieldProps = Omit<DoubleCalendarProps, "selected" | "setS
|
|
|
15338
15344
|
disabled?: boolean;
|
|
15339
15345
|
allowPastDates?: boolean;
|
|
15340
15346
|
maxYearsFromNow?: number;
|
|
15347
|
+
maxDate?: Date;
|
|
15341
15348
|
};
|
|
15342
|
-
declare const DoubleCalendarFormField: ({ name, label, required, validate, validationErrorMessage, rules, allowPastDates, maxYearsFromNow, disabled, ...calendarProps }: DoubleCalendarFormFieldProps) => react_jsx_runtime.JSX.Element;
|
|
15349
|
+
declare const DoubleCalendarFormField: ({ name, label, required, validate, validationErrorMessage, rules, allowPastDates, maxYearsFromNow, maxDate, disabled, ...calendarProps }: DoubleCalendarFormFieldProps) => react_jsx_runtime.JSX.Element;
|
|
15343
15350
|
|
|
15344
15351
|
type TimePickerFormFieldProps = Omit<TimePickerProps, "selected" | "setSelected"> & {
|
|
15345
15352
|
name: string;
|
|
@@ -15360,8 +15367,9 @@ type DateAndTimeFormFieldProps = Omit<CalendarProps, "selected" | "setSelected">
|
|
|
15360
15367
|
rules?: Omit<RegisterOptions<FieldValues, string>, "valueAsNumber" | "valueAsDate" | "setValueAs" | "disabled">;
|
|
15361
15368
|
allowPastDates?: boolean;
|
|
15362
15369
|
maxYearsFromNow?: number;
|
|
15370
|
+
maxDate?: Date;
|
|
15363
15371
|
};
|
|
15364
|
-
declare const DateAndTimeFormField: ({ name, label, required, validate, validationErrorMessage, rules, allowPastDates, maxYearsFromNow, ...props }: DateAndTimeFormFieldProps) => react_jsx_runtime.JSX.Element;
|
|
15372
|
+
declare const DateAndTimeFormField: ({ name, label, required, validate, validationErrorMessage, rules, allowPastDates, maxYearsFromNow, maxDate, ...props }: DateAndTimeFormFieldProps) => react_jsx_runtime.JSX.Element;
|
|
15365
15373
|
|
|
15366
15374
|
interface UploadConfig {
|
|
15367
15375
|
apiUrl: string;
|
package/dist/index.js
CHANGED
|
@@ -8101,7 +8101,8 @@ function Calendar(_a) {
|
|
|
8101
8101
|
hasError,
|
|
8102
8102
|
expand,
|
|
8103
8103
|
allowPastDates = false,
|
|
8104
|
-
|
|
8104
|
+
maxDate,
|
|
8105
|
+
maxYearsFromNow
|
|
8105
8106
|
} = _b, props = __objRest(_b, [
|
|
8106
8107
|
"action",
|
|
8107
8108
|
"actionText",
|
|
@@ -8112,6 +8113,7 @@ function Calendar(_a) {
|
|
|
8112
8113
|
"hasError",
|
|
8113
8114
|
"expand",
|
|
8114
8115
|
"allowPastDates",
|
|
8116
|
+
"maxDate",
|
|
8115
8117
|
"maxYearsFromNow"
|
|
8116
8118
|
]);
|
|
8117
8119
|
const [inputValue, setInputValue] = (0, import_react8.useState)("");
|
|
@@ -8121,7 +8123,14 @@ function Calendar(_a) {
|
|
|
8121
8123
|
setShowCalendar(false);
|
|
8122
8124
|
});
|
|
8123
8125
|
const today = /* @__PURE__ */ new Date();
|
|
8124
|
-
const
|
|
8126
|
+
const resolvedMaxDate = maxDate != null ? maxDate : typeof maxYearsFromNow === "number" ? addYears(today, maxYearsFromNow) : void 0;
|
|
8127
|
+
const disabledDays = [];
|
|
8128
|
+
if (!allowPastDates) {
|
|
8129
|
+
disabledDays.push({ before: today });
|
|
8130
|
+
}
|
|
8131
|
+
if (resolvedMaxDate) {
|
|
8132
|
+
disabledDays.push({ after: resolvedMaxDate });
|
|
8133
|
+
}
|
|
8125
8134
|
(0, import_react8.useEffect)(() => {
|
|
8126
8135
|
if (selected) {
|
|
8127
8136
|
setInputValue(format2(selected, "dd/MM/yyyy"));
|
|
@@ -8138,6 +8147,10 @@ function Calendar(_a) {
|
|
|
8138
8147
|
console.warn("Datas passadas n\xE3o s\xE3o permitidas:", masked);
|
|
8139
8148
|
return;
|
|
8140
8149
|
}
|
|
8150
|
+
if (resolvedMaxDate && parsed > resolvedMaxDate) {
|
|
8151
|
+
console.warn("Data maior que o limite m\xE1ximo permitido:", masked);
|
|
8152
|
+
return;
|
|
8153
|
+
}
|
|
8141
8154
|
setSelected(parsed);
|
|
8142
8155
|
} else {
|
|
8143
8156
|
console.warn("Data inv\xE1lida inserida no input:", masked);
|
|
@@ -8175,9 +8188,9 @@ function Calendar(_a) {
|
|
|
8175
8188
|
onSelect: setSelected,
|
|
8176
8189
|
required: true,
|
|
8177
8190
|
locale: ptBR,
|
|
8178
|
-
disabled:
|
|
8191
|
+
disabled: disabledDays.length > 0 ? disabledDays : void 0,
|
|
8179
8192
|
startMonth: allowPastDates ? void 0 : today,
|
|
8180
|
-
endMonth:
|
|
8193
|
+
endMonth: resolvedMaxDate
|
|
8181
8194
|
}
|
|
8182
8195
|
) }) }),
|
|
8183
8196
|
action && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(CalendarFooterStyled, { children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
@@ -8214,6 +8227,7 @@ function DoubleCalendar(_a) {
|
|
|
8214
8227
|
expand,
|
|
8215
8228
|
allowPastDates = false,
|
|
8216
8229
|
maxYearsFromNow = 20,
|
|
8230
|
+
maxDate,
|
|
8217
8231
|
disabled = false
|
|
8218
8232
|
} = _b, props = __objRest(_b, [
|
|
8219
8233
|
"action",
|
|
@@ -8226,6 +8240,7 @@ function DoubleCalendar(_a) {
|
|
|
8226
8240
|
"expand",
|
|
8227
8241
|
"allowPastDates",
|
|
8228
8242
|
"maxYearsFromNow",
|
|
8243
|
+
"maxDate",
|
|
8229
8244
|
"disabled"
|
|
8230
8245
|
]);
|
|
8231
8246
|
const [startValue, setStartValue] = (0, import_react9.useState)("");
|
|
@@ -8237,7 +8252,14 @@ function DoubleCalendar(_a) {
|
|
|
8237
8252
|
setShowCalendar(false);
|
|
8238
8253
|
});
|
|
8239
8254
|
const today = /* @__PURE__ */ new Date();
|
|
8240
|
-
const
|
|
8255
|
+
const resolvedMaxDate = maxDate != null ? maxDate : typeof maxYearsFromNow === "number" ? addYears(today, maxYearsFromNow) : void 0;
|
|
8256
|
+
const disabledDays = [];
|
|
8257
|
+
if (!allowPastDates) {
|
|
8258
|
+
disabledDays.push({ before: today });
|
|
8259
|
+
}
|
|
8260
|
+
if (resolvedMaxDate) {
|
|
8261
|
+
disabledDays.push({ after: resolvedMaxDate });
|
|
8262
|
+
}
|
|
8241
8263
|
(0, import_react9.useEffect)(() => {
|
|
8242
8264
|
if (selected && selected.from) {
|
|
8243
8265
|
setStartValue(format2(selected.from, "dd/MM/yyyy"));
|
|
@@ -8289,9 +8311,9 @@ function DoubleCalendar(_a) {
|
|
|
8289
8311
|
onSelect: setSelected,
|
|
8290
8312
|
required: true,
|
|
8291
8313
|
locale: ptBR,
|
|
8292
|
-
disabled:
|
|
8314
|
+
disabled: disabledDays.length > 0 ? disabledDays : void 0,
|
|
8293
8315
|
fromMonth: allowPastDates ? void 0 : today,
|
|
8294
|
-
toMonth:
|
|
8316
|
+
toMonth: resolvedMaxDate
|
|
8295
8317
|
}
|
|
8296
8318
|
) }) }),
|
|
8297
8319
|
action && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(CalendarFooterStyled, { children: [
|
|
@@ -10876,6 +10898,9 @@ var SelectFormField = ({
|
|
|
10876
10898
|
required,
|
|
10877
10899
|
placeholder = "Selecione",
|
|
10878
10900
|
options,
|
|
10901
|
+
showMoreButton = false,
|
|
10902
|
+
showMoreButtonLabel = "Carregar mais",
|
|
10903
|
+
showMoreButtonOnClick,
|
|
10879
10904
|
validation,
|
|
10880
10905
|
validationErrorMessage = "Este campo \xE9 obrigat\xF3rio.",
|
|
10881
10906
|
defaultValue
|
|
@@ -10909,24 +10934,38 @@ var SelectFormField = ({
|
|
|
10909
10934
|
defaultValue: defaultValue || "",
|
|
10910
10935
|
render: ({ field: { value, onChange } }) => {
|
|
10911
10936
|
const selectedOption = options.find((opt) => opt.value === value);
|
|
10912
|
-
return /* @__PURE__ */ (0, import_jsx_runtime42.
|
|
10937
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
|
|
10913
10938
|
DropdownMenu2,
|
|
10914
10939
|
{
|
|
10915
10940
|
placeholder: (selectedOption == null ? void 0 : selectedOption.label) || placeholder,
|
|
10916
10941
|
fontWeight: "regular",
|
|
10917
10942
|
typography: "labelLarge",
|
|
10918
10943
|
color: haveError ? "error" : "default",
|
|
10919
|
-
children:
|
|
10920
|
-
|
|
10921
|
-
|
|
10922
|
-
|
|
10923
|
-
|
|
10924
|
-
|
|
10925
|
-
|
|
10926
|
-
|
|
10927
|
-
|
|
10928
|
-
|
|
10929
|
-
|
|
10944
|
+
children: [
|
|
10945
|
+
options.map((option, index) => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
10946
|
+
DropdownMenuItem,
|
|
10947
|
+
{
|
|
10948
|
+
value: option.value,
|
|
10949
|
+
onSelect: () => onChange(option.value),
|
|
10950
|
+
fontWeight: "regular",
|
|
10951
|
+
typography: "labelLarge",
|
|
10952
|
+
children: option.label
|
|
10953
|
+
},
|
|
10954
|
+
`${option.value}${index}`
|
|
10955
|
+
)),
|
|
10956
|
+
showMoreButton && showMoreButtonOnClick && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
10957
|
+
Button,
|
|
10958
|
+
{
|
|
10959
|
+
variant: "menuDropdownItem",
|
|
10960
|
+
color: "brand",
|
|
10961
|
+
onClick: showMoreButtonOnClick,
|
|
10962
|
+
fontWeight: "semibold",
|
|
10963
|
+
type: "button",
|
|
10964
|
+
css: { justifyContent: "flex-start", color: "var(--colors-brand500)!important" },
|
|
10965
|
+
children: showMoreButtonLabel
|
|
10966
|
+
}
|
|
10967
|
+
)
|
|
10968
|
+
]
|
|
10930
10969
|
}
|
|
10931
10970
|
);
|
|
10932
10971
|
}
|
|
@@ -13066,7 +13105,8 @@ var CalendarFormField = (_a) => {
|
|
|
13066
13105
|
rules,
|
|
13067
13106
|
onChange,
|
|
13068
13107
|
allowPastDates,
|
|
13069
|
-
maxYearsFromNow = 20
|
|
13108
|
+
maxYearsFromNow = 20,
|
|
13109
|
+
maxDate
|
|
13070
13110
|
} = _b, calendarProps = __objRest(_b, [
|
|
13071
13111
|
"name",
|
|
13072
13112
|
"label",
|
|
@@ -13076,7 +13116,8 @@ var CalendarFormField = (_a) => {
|
|
|
13076
13116
|
"rules",
|
|
13077
13117
|
"onChange",
|
|
13078
13118
|
"allowPastDates",
|
|
13079
|
-
"maxYearsFromNow"
|
|
13119
|
+
"maxYearsFromNow",
|
|
13120
|
+
"maxDate"
|
|
13080
13121
|
]);
|
|
13081
13122
|
const handleValidate = (0, import_react25.useCallback)(
|
|
13082
13123
|
(value) => {
|
|
@@ -13124,6 +13165,7 @@ var CalendarFormField = (_a) => {
|
|
|
13124
13165
|
},
|
|
13125
13166
|
hasError: haveError,
|
|
13126
13167
|
allowPastDates,
|
|
13168
|
+
maxDate,
|
|
13127
13169
|
maxYearsFromNow
|
|
13128
13170
|
}, calendarProps)
|
|
13129
13171
|
),
|
|
@@ -13145,6 +13187,7 @@ var DoubleCalendarFormField = (_a) => {
|
|
|
13145
13187
|
rules,
|
|
13146
13188
|
allowPastDates,
|
|
13147
13189
|
maxYearsFromNow = 20,
|
|
13190
|
+
maxDate,
|
|
13148
13191
|
disabled
|
|
13149
13192
|
} = _b, calendarProps = __objRest(_b, [
|
|
13150
13193
|
"name",
|
|
@@ -13155,6 +13198,7 @@ var DoubleCalendarFormField = (_a) => {
|
|
|
13155
13198
|
"rules",
|
|
13156
13199
|
"allowPastDates",
|
|
13157
13200
|
"maxYearsFromNow",
|
|
13201
|
+
"maxDate",
|
|
13158
13202
|
"disabled"
|
|
13159
13203
|
]);
|
|
13160
13204
|
const handleValidate = (0, import_react26.useCallback)(
|
|
@@ -13196,7 +13240,8 @@ var DoubleCalendarFormField = (_a) => {
|
|
|
13196
13240
|
disabled,
|
|
13197
13241
|
hasError: haveError,
|
|
13198
13242
|
allowPastDates,
|
|
13199
|
-
maxYearsFromNow
|
|
13243
|
+
maxYearsFromNow,
|
|
13244
|
+
maxDate
|
|
13200
13245
|
}, calendarProps)
|
|
13201
13246
|
),
|
|
13202
13247
|
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(ErrorFormMessage, { message: errorMsg })
|
|
@@ -13287,7 +13332,8 @@ var DateAndTimeFormField = (_a) => {
|
|
|
13287
13332
|
validationErrorMessage = "Este campo \xE9 obrigat\xF3rio.",
|
|
13288
13333
|
rules,
|
|
13289
13334
|
allowPastDates,
|
|
13290
|
-
maxYearsFromNow = 20
|
|
13335
|
+
maxYearsFromNow = 20,
|
|
13336
|
+
maxDate
|
|
13291
13337
|
} = _b, props = __objRest(_b, [
|
|
13292
13338
|
"name",
|
|
13293
13339
|
"label",
|
|
@@ -13296,7 +13342,8 @@ var DateAndTimeFormField = (_a) => {
|
|
|
13296
13342
|
"validationErrorMessage",
|
|
13297
13343
|
"rules",
|
|
13298
13344
|
"allowPastDates",
|
|
13299
|
-
"maxYearsFromNow"
|
|
13345
|
+
"maxYearsFromNow",
|
|
13346
|
+
"maxDate"
|
|
13300
13347
|
]);
|
|
13301
13348
|
const handleValidate = (0, import_react28.useCallback)(
|
|
13302
13349
|
(value) => {
|
|
@@ -13376,7 +13423,8 @@ var DateAndTimeFormField = (_a) => {
|
|
|
13376
13423
|
},
|
|
13377
13424
|
hasError: haveError,
|
|
13378
13425
|
allowPastDates,
|
|
13379
|
-
maxYearsFromNow
|
|
13426
|
+
maxYearsFromNow,
|
|
13427
|
+
maxDate
|
|
13380
13428
|
}, props)
|
|
13381
13429
|
) }),
|
|
13382
13430
|
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Flex, { direction: "column", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
package/dist/index.mjs
CHANGED
|
@@ -7985,7 +7985,8 @@ function Calendar(_a) {
|
|
|
7985
7985
|
hasError,
|
|
7986
7986
|
expand,
|
|
7987
7987
|
allowPastDates = false,
|
|
7988
|
-
|
|
7988
|
+
maxDate,
|
|
7989
|
+
maxYearsFromNow
|
|
7989
7990
|
} = _b, props = __objRest(_b, [
|
|
7990
7991
|
"action",
|
|
7991
7992
|
"actionText",
|
|
@@ -7996,6 +7997,7 @@ function Calendar(_a) {
|
|
|
7996
7997
|
"hasError",
|
|
7997
7998
|
"expand",
|
|
7998
7999
|
"allowPastDates",
|
|
8000
|
+
"maxDate",
|
|
7999
8001
|
"maxYearsFromNow"
|
|
8000
8002
|
]);
|
|
8001
8003
|
const [inputValue, setInputValue] = useState2("");
|
|
@@ -8005,7 +8007,14 @@ function Calendar(_a) {
|
|
|
8005
8007
|
setShowCalendar(false);
|
|
8006
8008
|
});
|
|
8007
8009
|
const today = /* @__PURE__ */ new Date();
|
|
8008
|
-
const
|
|
8010
|
+
const resolvedMaxDate = maxDate != null ? maxDate : typeof maxYearsFromNow === "number" ? addYears(today, maxYearsFromNow) : void 0;
|
|
8011
|
+
const disabledDays = [];
|
|
8012
|
+
if (!allowPastDates) {
|
|
8013
|
+
disabledDays.push({ before: today });
|
|
8014
|
+
}
|
|
8015
|
+
if (resolvedMaxDate) {
|
|
8016
|
+
disabledDays.push({ after: resolvedMaxDate });
|
|
8017
|
+
}
|
|
8009
8018
|
useEffect3(() => {
|
|
8010
8019
|
if (selected) {
|
|
8011
8020
|
setInputValue(format2(selected, "dd/MM/yyyy"));
|
|
@@ -8022,6 +8031,10 @@ function Calendar(_a) {
|
|
|
8022
8031
|
console.warn("Datas passadas n\xE3o s\xE3o permitidas:", masked);
|
|
8023
8032
|
return;
|
|
8024
8033
|
}
|
|
8034
|
+
if (resolvedMaxDate && parsed > resolvedMaxDate) {
|
|
8035
|
+
console.warn("Data maior que o limite m\xE1ximo permitido:", masked);
|
|
8036
|
+
return;
|
|
8037
|
+
}
|
|
8025
8038
|
setSelected(parsed);
|
|
8026
8039
|
} else {
|
|
8027
8040
|
console.warn("Data inv\xE1lida inserida no input:", masked);
|
|
@@ -8059,9 +8072,9 @@ function Calendar(_a) {
|
|
|
8059
8072
|
onSelect: setSelected,
|
|
8060
8073
|
required: true,
|
|
8061
8074
|
locale: ptBR,
|
|
8062
|
-
disabled:
|
|
8075
|
+
disabled: disabledDays.length > 0 ? disabledDays : void 0,
|
|
8063
8076
|
startMonth: allowPastDates ? void 0 : today,
|
|
8064
|
-
endMonth:
|
|
8077
|
+
endMonth: resolvedMaxDate
|
|
8065
8078
|
}
|
|
8066
8079
|
) }) }),
|
|
8067
8080
|
action && /* @__PURE__ */ jsx15(CalendarFooterStyled, { children: /* @__PURE__ */ jsx15(
|
|
@@ -8098,6 +8111,7 @@ function DoubleCalendar(_a) {
|
|
|
8098
8111
|
expand,
|
|
8099
8112
|
allowPastDates = false,
|
|
8100
8113
|
maxYearsFromNow = 20,
|
|
8114
|
+
maxDate,
|
|
8101
8115
|
disabled = false
|
|
8102
8116
|
} = _b, props = __objRest(_b, [
|
|
8103
8117
|
"action",
|
|
@@ -8110,6 +8124,7 @@ function DoubleCalendar(_a) {
|
|
|
8110
8124
|
"expand",
|
|
8111
8125
|
"allowPastDates",
|
|
8112
8126
|
"maxYearsFromNow",
|
|
8127
|
+
"maxDate",
|
|
8113
8128
|
"disabled"
|
|
8114
8129
|
]);
|
|
8115
8130
|
const [startValue, setStartValue] = useState3("");
|
|
@@ -8121,7 +8136,14 @@ function DoubleCalendar(_a) {
|
|
|
8121
8136
|
setShowCalendar(false);
|
|
8122
8137
|
});
|
|
8123
8138
|
const today = /* @__PURE__ */ new Date();
|
|
8124
|
-
const
|
|
8139
|
+
const resolvedMaxDate = maxDate != null ? maxDate : typeof maxYearsFromNow === "number" ? addYears(today, maxYearsFromNow) : void 0;
|
|
8140
|
+
const disabledDays = [];
|
|
8141
|
+
if (!allowPastDates) {
|
|
8142
|
+
disabledDays.push({ before: today });
|
|
8143
|
+
}
|
|
8144
|
+
if (resolvedMaxDate) {
|
|
8145
|
+
disabledDays.push({ after: resolvedMaxDate });
|
|
8146
|
+
}
|
|
8125
8147
|
useEffect4(() => {
|
|
8126
8148
|
if (selected && selected.from) {
|
|
8127
8149
|
setStartValue(format2(selected.from, "dd/MM/yyyy"));
|
|
@@ -8173,9 +8195,9 @@ function DoubleCalendar(_a) {
|
|
|
8173
8195
|
onSelect: setSelected,
|
|
8174
8196
|
required: true,
|
|
8175
8197
|
locale: ptBR,
|
|
8176
|
-
disabled:
|
|
8198
|
+
disabled: disabledDays.length > 0 ? disabledDays : void 0,
|
|
8177
8199
|
fromMonth: allowPastDates ? void 0 : today,
|
|
8178
|
-
toMonth:
|
|
8200
|
+
toMonth: resolvedMaxDate
|
|
8179
8201
|
}
|
|
8180
8202
|
) }) }),
|
|
8181
8203
|
action && /* @__PURE__ */ jsxs8(CalendarFooterStyled, { children: [
|
|
@@ -10769,6 +10791,9 @@ var SelectFormField = ({
|
|
|
10769
10791
|
required,
|
|
10770
10792
|
placeholder = "Selecione",
|
|
10771
10793
|
options,
|
|
10794
|
+
showMoreButton = false,
|
|
10795
|
+
showMoreButtonLabel = "Carregar mais",
|
|
10796
|
+
showMoreButtonOnClick,
|
|
10772
10797
|
validation,
|
|
10773
10798
|
validationErrorMessage = "Este campo \xE9 obrigat\xF3rio.",
|
|
10774
10799
|
defaultValue
|
|
@@ -10802,24 +10827,38 @@ var SelectFormField = ({
|
|
|
10802
10827
|
defaultValue: defaultValue || "",
|
|
10803
10828
|
render: ({ field: { value, onChange } }) => {
|
|
10804
10829
|
const selectedOption = options.find((opt) => opt.value === value);
|
|
10805
|
-
return /* @__PURE__ */
|
|
10830
|
+
return /* @__PURE__ */ jsxs23(
|
|
10806
10831
|
DropdownMenu2,
|
|
10807
10832
|
{
|
|
10808
10833
|
placeholder: (selectedOption == null ? void 0 : selectedOption.label) || placeholder,
|
|
10809
10834
|
fontWeight: "regular",
|
|
10810
10835
|
typography: "labelLarge",
|
|
10811
10836
|
color: haveError ? "error" : "default",
|
|
10812
|
-
children:
|
|
10813
|
-
|
|
10814
|
-
|
|
10815
|
-
|
|
10816
|
-
|
|
10817
|
-
|
|
10818
|
-
|
|
10819
|
-
|
|
10820
|
-
|
|
10821
|
-
|
|
10822
|
-
|
|
10837
|
+
children: [
|
|
10838
|
+
options.map((option, index) => /* @__PURE__ */ jsx42(
|
|
10839
|
+
DropdownMenuItem,
|
|
10840
|
+
{
|
|
10841
|
+
value: option.value,
|
|
10842
|
+
onSelect: () => onChange(option.value),
|
|
10843
|
+
fontWeight: "regular",
|
|
10844
|
+
typography: "labelLarge",
|
|
10845
|
+
children: option.label
|
|
10846
|
+
},
|
|
10847
|
+
`${option.value}${index}`
|
|
10848
|
+
)),
|
|
10849
|
+
showMoreButton && showMoreButtonOnClick && /* @__PURE__ */ jsx42(
|
|
10850
|
+
Button,
|
|
10851
|
+
{
|
|
10852
|
+
variant: "menuDropdownItem",
|
|
10853
|
+
color: "brand",
|
|
10854
|
+
onClick: showMoreButtonOnClick,
|
|
10855
|
+
fontWeight: "semibold",
|
|
10856
|
+
type: "button",
|
|
10857
|
+
css: { justifyContent: "flex-start", color: "var(--colors-brand500)!important" },
|
|
10858
|
+
children: showMoreButtonLabel
|
|
10859
|
+
}
|
|
10860
|
+
)
|
|
10861
|
+
]
|
|
10823
10862
|
}
|
|
10824
10863
|
);
|
|
10825
10864
|
}
|
|
@@ -12959,7 +12998,8 @@ var CalendarFormField = (_a) => {
|
|
|
12959
12998
|
rules,
|
|
12960
12999
|
onChange,
|
|
12961
13000
|
allowPastDates,
|
|
12962
|
-
maxYearsFromNow = 20
|
|
13001
|
+
maxYearsFromNow = 20,
|
|
13002
|
+
maxDate
|
|
12963
13003
|
} = _b, calendarProps = __objRest(_b, [
|
|
12964
13004
|
"name",
|
|
12965
13005
|
"label",
|
|
@@ -12969,7 +13009,8 @@ var CalendarFormField = (_a) => {
|
|
|
12969
13009
|
"rules",
|
|
12970
13010
|
"onChange",
|
|
12971
13011
|
"allowPastDates",
|
|
12972
|
-
"maxYearsFromNow"
|
|
13012
|
+
"maxYearsFromNow",
|
|
13013
|
+
"maxDate"
|
|
12973
13014
|
]);
|
|
12974
13015
|
const handleValidate = useCallback5(
|
|
12975
13016
|
(value) => {
|
|
@@ -13017,6 +13058,7 @@ var CalendarFormField = (_a) => {
|
|
|
13017
13058
|
},
|
|
13018
13059
|
hasError: haveError,
|
|
13019
13060
|
allowPastDates,
|
|
13061
|
+
maxDate,
|
|
13020
13062
|
maxYearsFromNow
|
|
13021
13063
|
}, calendarProps)
|
|
13022
13064
|
),
|
|
@@ -13038,6 +13080,7 @@ var DoubleCalendarFormField = (_a) => {
|
|
|
13038
13080
|
rules,
|
|
13039
13081
|
allowPastDates,
|
|
13040
13082
|
maxYearsFromNow = 20,
|
|
13083
|
+
maxDate,
|
|
13041
13084
|
disabled
|
|
13042
13085
|
} = _b, calendarProps = __objRest(_b, [
|
|
13043
13086
|
"name",
|
|
@@ -13048,6 +13091,7 @@ var DoubleCalendarFormField = (_a) => {
|
|
|
13048
13091
|
"rules",
|
|
13049
13092
|
"allowPastDates",
|
|
13050
13093
|
"maxYearsFromNow",
|
|
13094
|
+
"maxDate",
|
|
13051
13095
|
"disabled"
|
|
13052
13096
|
]);
|
|
13053
13097
|
const handleValidate = useCallback6(
|
|
@@ -13089,7 +13133,8 @@ var DoubleCalendarFormField = (_a) => {
|
|
|
13089
13133
|
disabled,
|
|
13090
13134
|
hasError: haveError,
|
|
13091
13135
|
allowPastDates,
|
|
13092
|
-
maxYearsFromNow
|
|
13136
|
+
maxYearsFromNow,
|
|
13137
|
+
maxDate
|
|
13093
13138
|
}, calendarProps)
|
|
13094
13139
|
),
|
|
13095
13140
|
/* @__PURE__ */ jsx57(ErrorFormMessage, { message: errorMsg })
|
|
@@ -13180,7 +13225,8 @@ var DateAndTimeFormField = (_a) => {
|
|
|
13180
13225
|
validationErrorMessage = "Este campo \xE9 obrigat\xF3rio.",
|
|
13181
13226
|
rules,
|
|
13182
13227
|
allowPastDates,
|
|
13183
|
-
maxYearsFromNow = 20
|
|
13228
|
+
maxYearsFromNow = 20,
|
|
13229
|
+
maxDate
|
|
13184
13230
|
} = _b, props = __objRest(_b, [
|
|
13185
13231
|
"name",
|
|
13186
13232
|
"label",
|
|
@@ -13189,7 +13235,8 @@ var DateAndTimeFormField = (_a) => {
|
|
|
13189
13235
|
"validationErrorMessage",
|
|
13190
13236
|
"rules",
|
|
13191
13237
|
"allowPastDates",
|
|
13192
|
-
"maxYearsFromNow"
|
|
13238
|
+
"maxYearsFromNow",
|
|
13239
|
+
"maxDate"
|
|
13193
13240
|
]);
|
|
13194
13241
|
const handleValidate = useCallback8(
|
|
13195
13242
|
(value) => {
|
|
@@ -13269,7 +13316,8 @@ var DateAndTimeFormField = (_a) => {
|
|
|
13269
13316
|
},
|
|
13270
13317
|
hasError: haveError,
|
|
13271
13318
|
allowPastDates,
|
|
13272
|
-
maxYearsFromNow
|
|
13319
|
+
maxYearsFromNow,
|
|
13320
|
+
maxDate
|
|
13273
13321
|
}, props)
|
|
13274
13322
|
) }),
|
|
13275
13323
|
/* @__PURE__ */ jsx59(Flex, { direction: "column", children: /* @__PURE__ */ jsx59(
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { ComponentProps, useRef, useEffect, useState } from "react";
|
|
2
2
|
import { useOnClickOutside } from "../../hooks/useOnClickOutside";
|
|
3
|
-
import { DayPicker } from "react-day-picker";
|
|
3
|
+
import { DayPicker, Matcher } from "react-day-picker";
|
|
4
4
|
import { ptBR } from "date-fns/locale";
|
|
5
5
|
import { parse, isValid, format, addYears } from "date-fns";
|
|
6
6
|
import { Button } from "../Button";
|
|
@@ -25,6 +25,7 @@ export type CalendarProps = ComponentProps<typeof CalendarStyled> & {
|
|
|
25
25
|
hasError?: boolean;
|
|
26
26
|
expand?: boolean;
|
|
27
27
|
allowPastDates?: boolean;
|
|
28
|
+
maxDate?: Date;
|
|
28
29
|
maxYearsFromNow?: number;
|
|
29
30
|
};
|
|
30
31
|
|
|
@@ -46,7 +47,8 @@ export function Calendar({
|
|
|
46
47
|
hasError,
|
|
47
48
|
expand,
|
|
48
49
|
allowPastDates = false,
|
|
49
|
-
|
|
50
|
+
maxDate,
|
|
51
|
+
maxYearsFromNow,
|
|
50
52
|
...props
|
|
51
53
|
}: CalendarProps) {
|
|
52
54
|
const [inputValue, setInputValue] = useState("");
|
|
@@ -58,7 +60,16 @@ export function Calendar({
|
|
|
58
60
|
setShowCalendar(false);
|
|
59
61
|
});
|
|
60
62
|
const today = new Date();
|
|
61
|
-
const
|
|
63
|
+
const resolvedMaxDate =
|
|
64
|
+
maxDate ?? (typeof maxYearsFromNow === "number" ? addYears(today, maxYearsFromNow) : undefined);
|
|
65
|
+
const disabledDays: Matcher[] = [];
|
|
66
|
+
|
|
67
|
+
if (!allowPastDates) {
|
|
68
|
+
disabledDays.push({ before: today });
|
|
69
|
+
}
|
|
70
|
+
if (resolvedMaxDate) {
|
|
71
|
+
disabledDays.push({ after: resolvedMaxDate });
|
|
72
|
+
}
|
|
62
73
|
|
|
63
74
|
useEffect(() => {
|
|
64
75
|
if (selected) {
|
|
@@ -78,6 +89,10 @@ export function Calendar({
|
|
|
78
89
|
console.warn("Datas passadas não são permitidas:", masked);
|
|
79
90
|
return;
|
|
80
91
|
}
|
|
92
|
+
if (resolvedMaxDate && parsed > resolvedMaxDate) {
|
|
93
|
+
console.warn("Data maior que o limite máximo permitido:", masked);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
81
96
|
setSelected(parsed);
|
|
82
97
|
} else {
|
|
83
98
|
console.warn("Data inválida inserida no input:", masked);
|
|
@@ -117,9 +132,9 @@ export function Calendar({
|
|
|
117
132
|
onSelect={setSelected}
|
|
118
133
|
required
|
|
119
134
|
locale={ptBR}
|
|
120
|
-
disabled={
|
|
135
|
+
disabled={disabledDays.length > 0 ? disabledDays : undefined}
|
|
121
136
|
startMonth={allowPastDates ? undefined : today}
|
|
122
|
-
endMonth={
|
|
137
|
+
endMonth={resolvedMaxDate}
|
|
123
138
|
/>
|
|
124
139
|
</DayPickerWrapperStyled>
|
|
125
140
|
</Box>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { ComponentProps, useRef, useEffect, useState } from "react";
|
|
2
2
|
import { useOnClickOutside } from "../../hooks/useOnClickOutside";
|
|
3
|
-
import { DayPicker } from "react-day-picker";
|
|
3
|
+
import { DayPicker, Matcher } from "react-day-picker";
|
|
4
4
|
import { ptBR } from "date-fns/locale";
|
|
5
5
|
import { format, addYears } from "date-fns";
|
|
6
6
|
import { Button } from "../Button";
|
|
@@ -28,6 +28,7 @@ export type DoubleCalendarProps = ComponentProps<typeof CalendarStyled> & {
|
|
|
28
28
|
expand?: boolean;
|
|
29
29
|
allowPastDates?: boolean;
|
|
30
30
|
maxYearsFromNow?: number;
|
|
31
|
+
maxDate?: Date;
|
|
31
32
|
disabled?: boolean;
|
|
32
33
|
};
|
|
33
34
|
|
|
@@ -42,6 +43,7 @@ export function DoubleCalendar({
|
|
|
42
43
|
expand,
|
|
43
44
|
allowPastDates = false,
|
|
44
45
|
maxYearsFromNow = 20,
|
|
46
|
+
maxDate,
|
|
45
47
|
disabled = false,
|
|
46
48
|
...props
|
|
47
49
|
}: DoubleCalendarProps) {
|
|
@@ -56,7 +58,17 @@ export function DoubleCalendar({
|
|
|
56
58
|
setShowCalendar(false);
|
|
57
59
|
});
|
|
58
60
|
const today = new Date();
|
|
59
|
-
const
|
|
61
|
+
const resolvedMaxDate =
|
|
62
|
+
maxDate ??
|
|
63
|
+
(typeof maxYearsFromNow === "number" ? addYears(today, maxYearsFromNow) : undefined);
|
|
64
|
+
const disabledDays: Matcher[] = [];
|
|
65
|
+
|
|
66
|
+
if (!allowPastDates) {
|
|
67
|
+
disabledDays.push({ before: today });
|
|
68
|
+
}
|
|
69
|
+
if (resolvedMaxDate) {
|
|
70
|
+
disabledDays.push({ after: resolvedMaxDate });
|
|
71
|
+
}
|
|
60
72
|
|
|
61
73
|
useEffect(() => {
|
|
62
74
|
if (selected && selected.from) {
|
|
@@ -117,9 +129,9 @@ export function DoubleCalendar({
|
|
|
117
129
|
onSelect={setSelected}
|
|
118
130
|
required
|
|
119
131
|
locale={ptBR}
|
|
120
|
-
disabled={
|
|
132
|
+
disabled={disabledDays.length > 0 ? disabledDays : undefined}
|
|
121
133
|
fromMonth={allowPastDates ? undefined : today}
|
|
122
|
-
toMonth={
|
|
134
|
+
toMonth={resolvedMaxDate}
|
|
123
135
|
/>
|
|
124
136
|
</DayPickerWrapperStyled>
|
|
125
137
|
</Box>
|
|
@@ -21,6 +21,7 @@ export type CalendarFormFieldProps = Omit<
|
|
|
21
21
|
>;
|
|
22
22
|
allowPastDates?: boolean;
|
|
23
23
|
maxYearsFromNow?: number;
|
|
24
|
+
maxDate?: Date;
|
|
24
25
|
};
|
|
25
26
|
|
|
26
27
|
export const CalendarFormField = ({
|
|
@@ -33,6 +34,7 @@ export const CalendarFormField = ({
|
|
|
33
34
|
onChange,
|
|
34
35
|
allowPastDates,
|
|
35
36
|
maxYearsFromNow = 20,
|
|
37
|
+
maxDate,
|
|
36
38
|
...calendarProps
|
|
37
39
|
}: CalendarFormFieldProps) => {
|
|
38
40
|
const handleValidate = useCallback(
|
|
@@ -85,6 +87,7 @@ export const CalendarFormField = ({
|
|
|
85
87
|
}}
|
|
86
88
|
hasError={haveError}
|
|
87
89
|
allowPastDates={allowPastDates}
|
|
90
|
+
maxDate={maxDate}
|
|
88
91
|
maxYearsFromNow={maxYearsFromNow}
|
|
89
92
|
{...calendarProps}
|
|
90
93
|
/>
|
|
@@ -24,6 +24,7 @@ export type DateAndTimeFormFieldProps = Omit<
|
|
|
24
24
|
>;
|
|
25
25
|
allowPastDates?: boolean;
|
|
26
26
|
maxYearsFromNow?: number;
|
|
27
|
+
maxDate?: Date;
|
|
27
28
|
};
|
|
28
29
|
|
|
29
30
|
export const DateAndTimeFormField = ({
|
|
@@ -35,6 +36,7 @@ export const DateAndTimeFormField = ({
|
|
|
35
36
|
rules,
|
|
36
37
|
allowPastDates,
|
|
37
38
|
maxYearsFromNow = 20,
|
|
39
|
+
maxDate,
|
|
38
40
|
...props
|
|
39
41
|
}: DateAndTimeFormFieldProps) => {
|
|
40
42
|
const handleValidate = useCallback(
|
|
@@ -129,6 +131,7 @@ export const DateAndTimeFormField = ({
|
|
|
129
131
|
hasError={haveError}
|
|
130
132
|
allowPastDates={allowPastDates}
|
|
131
133
|
maxYearsFromNow={maxYearsFromNow}
|
|
134
|
+
maxDate={maxDate}
|
|
132
135
|
{...(props as Omit<CalendarProps, "selected" | "setSelected">)}
|
|
133
136
|
/>
|
|
134
137
|
</Flex>
|
|
@@ -21,6 +21,7 @@ export type DoubleCalendarFormFieldProps = Omit<
|
|
|
21
21
|
disabled?: boolean;
|
|
22
22
|
allowPastDates?: boolean;
|
|
23
23
|
maxYearsFromNow?: number;
|
|
24
|
+
maxDate?: Date;
|
|
24
25
|
};
|
|
25
26
|
|
|
26
27
|
export const DoubleCalendarFormField = ({
|
|
@@ -32,6 +33,7 @@ export const DoubleCalendarFormField = ({
|
|
|
32
33
|
rules,
|
|
33
34
|
allowPastDates,
|
|
34
35
|
maxYearsFromNow = 20,
|
|
36
|
+
maxDate,
|
|
35
37
|
disabled,
|
|
36
38
|
...calendarProps
|
|
37
39
|
}: DoubleCalendarFormFieldProps) => {
|
|
@@ -82,6 +84,7 @@ export const DoubleCalendarFormField = ({
|
|
|
82
84
|
hasError={haveError}
|
|
83
85
|
allowPastDates={allowPastDates}
|
|
84
86
|
maxYearsFromNow={maxYearsFromNow}
|
|
87
|
+
maxDate={maxDate}
|
|
85
88
|
{...calendarProps}
|
|
86
89
|
/>
|
|
87
90
|
|
|
@@ -4,6 +4,7 @@ import { Flex } from "../Flex";
|
|
|
4
4
|
import { FormLabel } from "./subComponents/FormLabel";
|
|
5
5
|
import { ErrorFormMessage } from "./subComponents/ErrorFormMessage";
|
|
6
6
|
import { getNestedValue } from "../../utils/getNestedValue";
|
|
7
|
+
import { Button } from "../Button";
|
|
7
8
|
|
|
8
9
|
type Option = {
|
|
9
10
|
label: string;
|
|
@@ -16,6 +17,9 @@ export type SelectFormFieldProps = {
|
|
|
16
17
|
required?: boolean;
|
|
17
18
|
placeholder?: string;
|
|
18
19
|
options: Option[];
|
|
20
|
+
showMoreButton?: boolean;
|
|
21
|
+
showMoreButtonLabel?: string;
|
|
22
|
+
showMoreButtonOnClick?: () => void;
|
|
19
23
|
validation?: {
|
|
20
24
|
validate?: (value: string) => boolean | string;
|
|
21
25
|
};
|
|
@@ -29,6 +33,9 @@ export const SelectFormField = ({
|
|
|
29
33
|
required,
|
|
30
34
|
placeholder = "Selecione",
|
|
31
35
|
options,
|
|
36
|
+
showMoreButton = false,
|
|
37
|
+
showMoreButtonLabel = "Carregar mais",
|
|
38
|
+
showMoreButtonOnClick,
|
|
32
39
|
validation,
|
|
33
40
|
validationErrorMessage = "Este campo é obrigatório.",
|
|
34
41
|
defaultValue,
|
|
@@ -82,6 +89,19 @@ export const SelectFormField = ({
|
|
|
82
89
|
{option.label}
|
|
83
90
|
</DropdownMenuItem>
|
|
84
91
|
))}
|
|
92
|
+
|
|
93
|
+
{showMoreButton && showMoreButtonOnClick && (
|
|
94
|
+
<Button
|
|
95
|
+
variant="menuDropdownItem"
|
|
96
|
+
color="brand"
|
|
97
|
+
onClick={showMoreButtonOnClick}
|
|
98
|
+
fontWeight="semibold"
|
|
99
|
+
type="button"
|
|
100
|
+
css={{ justifyContent: "flex-start", color: "var(--colors-brand500)!important" }}
|
|
101
|
+
>
|
|
102
|
+
{showMoreButtonLabel}
|
|
103
|
+
</Button>
|
|
104
|
+
)}
|
|
85
105
|
</DropdownMenu>
|
|
86
106
|
);
|
|
87
107
|
}}
|