@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.mjs CHANGED
@@ -11289,7 +11289,9 @@ var ModalPassengerForm = ({
11289
11289
  idTypes,
11290
11290
  ticketClassOptions,
11291
11291
  onScanComplete,
11292
- isLoading
11292
+ isLoading,
11293
+ minAge,
11294
+ maxAge
11293
11295
  }) => {
11294
11296
  const styles = useStyles24();
11295
11297
  const mergedLabels = { ...DEFAULT_LABELS23[language], ...labels };
@@ -11298,6 +11300,15 @@ var ModalPassengerForm = ({
11298
11300
  ...labels?.errors
11299
11301
  };
11300
11302
  const displayTitle = title || mergedLabels.title;
11303
+ const computeDateBound = (yearsOffset) => {
11304
+ const d = /* @__PURE__ */ new Date();
11305
+ d.setFullYear(d.getFullYear() - yearsOffset);
11306
+ const offset = d.getTimezoneOffset();
11307
+ const adjusted = new Date(d.getTime() - offset * 60 * 1e3);
11308
+ return adjusted.toISOString().split("T")[0];
11309
+ };
11310
+ const birthdateMaxDate = computeDateBound(minAge);
11311
+ const birthdateMinDate = computeDateBound(maxAge);
11301
11312
  const [isModalSelectIdTypeOpen, setIsModalSelectIdTypeOpen] = useState(false);
11302
11313
  const [isModalScanOpen, setIsModalScanOpen] = useState(false);
11303
11314
  const [scannedIdType, setScannedIdType] = useState(null);
@@ -11885,14 +11896,23 @@ var ModalPassengerForm = ({
11885
11896
  size: "large",
11886
11897
  required: true,
11887
11898
  disableFutureDates: true,
11899
+ min: birthdateMinDate,
11900
+ max: birthdateMaxDate,
11888
11901
  validationRules: {
11889
11902
  required: mergedErrors.requiredDate,
11890
11903
  validate: (value) => {
11891
- const selectedDate = new Date(value);
11892
- const today = /* @__PURE__ */ new Date();
11893
- today.setHours(0, 0, 0, 0);
11894
- if (selectedDate > today) {
11895
- return mergedErrors.birthDateFuture;
11904
+ const { years } = calculateAge(value);
11905
+ if (years < minAge) {
11906
+ return mergedErrors.minAge.replace(
11907
+ /\d+/,
11908
+ minAge.toString()
11909
+ );
11910
+ }
11911
+ if (years > maxAge) {
11912
+ return mergedErrors.maxAge.replace(
11913
+ /\d+/,
11914
+ maxAge.toString()
11915
+ );
11896
11916
  }
11897
11917
  return true;
11898
11918
  }