@asdp/ferryui 0.1.22-dev.10206 → 0.1.22-dev.10210

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/index.d.mts CHANGED
@@ -2869,6 +2869,8 @@ interface ModalPassengerFormProps {
2869
2869
  * Whether the form is currently submitting
2870
2870
  */
2871
2871
  isLoading?: boolean;
2872
+ minAge: number;
2873
+ maxAge: number;
2872
2874
  }
2873
2875
 
2874
2876
  declare const ModalPassengerForm: React$1.FC<ModalPassengerFormProps>;
package/dist/index.d.ts CHANGED
@@ -2869,6 +2869,8 @@ interface ModalPassengerFormProps {
2869
2869
  * Whether the form is currently submitting
2870
2870
  */
2871
2871
  isLoading?: boolean;
2872
+ minAge: number;
2873
+ maxAge: number;
2872
2874
  }
2873
2875
 
2874
2876
  declare const ModalPassengerForm: React$1.FC<ModalPassengerFormProps>;
package/dist/index.js CHANGED
@@ -11298,7 +11298,9 @@ var ModalPassengerForm = ({
11298
11298
  idTypes,
11299
11299
  ticketClassOptions,
11300
11300
  onScanComplete,
11301
- isLoading
11301
+ isLoading,
11302
+ minAge,
11303
+ maxAge
11302
11304
  }) => {
11303
11305
  const styles = useStyles24();
11304
11306
  const mergedLabels = { ...DEFAULT_LABELS23[language], ...labels };
@@ -11307,6 +11309,15 @@ var ModalPassengerForm = ({
11307
11309
  ...labels?.errors
11308
11310
  };
11309
11311
  const displayTitle = title || mergedLabels.title;
11312
+ const computeDateBound = (yearsOffset) => {
11313
+ const d = /* @__PURE__ */ new Date();
11314
+ d.setFullYear(d.getFullYear() - yearsOffset);
11315
+ const offset = d.getTimezoneOffset();
11316
+ const adjusted = new Date(d.getTime() - offset * 60 * 1e3);
11317
+ return adjusted.toISOString().split("T")[0];
11318
+ };
11319
+ const birthdateMaxDate = computeDateBound(minAge);
11320
+ const birthdateMinDate = computeDateBound(maxAge);
11310
11321
  const [isModalSelectIdTypeOpen, setIsModalSelectIdTypeOpen] = React.useState(false);
11311
11322
  const [isModalScanOpen, setIsModalScanOpen] = React.useState(false);
11312
11323
  const [scannedIdType, setScannedIdType] = React.useState(null);
@@ -11894,14 +11905,23 @@ var ModalPassengerForm = ({
11894
11905
  size: "large",
11895
11906
  required: true,
11896
11907
  disableFutureDates: true,
11908
+ min: birthdateMinDate,
11909
+ max: birthdateMaxDate,
11897
11910
  validationRules: {
11898
11911
  required: mergedErrors.requiredDate,
11899
11912
  validate: (value) => {
11900
- const selectedDate = new Date(value);
11901
- const today = /* @__PURE__ */ new Date();
11902
- today.setHours(0, 0, 0, 0);
11903
- if (selectedDate > today) {
11904
- return mergedErrors.birthDateFuture;
11913
+ const { years } = calculateAge(value);
11914
+ if (years < minAge) {
11915
+ return mergedErrors.minAge.replace(
11916
+ /\d+/,
11917
+ minAge.toString()
11918
+ );
11919
+ }
11920
+ if (years > maxAge) {
11921
+ return mergedErrors.maxAge.replace(
11922
+ /\d+/,
11923
+ maxAge.toString()
11924
+ );
11905
11925
  }
11906
11926
  return true;
11907
11927
  }