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

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);
@@ -11333,6 +11344,15 @@ var ModalPassengerForm = ({
11333
11344
  const dynamicMinLengthId = idRuleLengthMatch ? parseInt(idRuleLengthMatch[1], 10) : 6;
11334
11345
  useEffect(() => {
11335
11346
  reset(defaultValues);
11347
+ if (defaultValues?.birthdate) {
11348
+ const { years, months } = calculateAge(defaultValues.birthdate);
11349
+ setValue(
11350
+ "age",
11351
+ `${years} ${mergedLabels.yearLabel} ${months} ${mergedLabels.monthLabel}`
11352
+ );
11353
+ } else {
11354
+ setValue("age", "");
11355
+ }
11336
11356
  }, [defaultValues, reset]);
11337
11357
  useEffect(() => {
11338
11358
  if (watchIdentityTypeId) {
@@ -11350,6 +11370,7 @@ var ModalPassengerForm = ({
11350
11370
  setValue("age", "");
11351
11371
  }
11352
11372
  }, [
11373
+ open,
11353
11374
  watchBirthdate,
11354
11375
  setValue,
11355
11376
  mergedLabels.yearLabel,
@@ -11885,14 +11906,23 @@ var ModalPassengerForm = ({
11885
11906
  size: "large",
11886
11907
  required: true,
11887
11908
  disableFutureDates: true,
11909
+ min: birthdateMinDate,
11910
+ max: birthdateMaxDate,
11888
11911
  validationRules: {
11889
11912
  required: mergedErrors.requiredDate,
11890
11913
  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;
11914
+ const { years } = calculateAge(value);
11915
+ if (years < minAge) {
11916
+ return mergedErrors.minAge.replace(
11917
+ /\d+/,
11918
+ minAge.toString()
11919
+ );
11920
+ }
11921
+ if (years > maxAge) {
11922
+ return mergedErrors.maxAge.replace(
11923
+ /\d+/,
11924
+ maxAge.toString()
11925
+ );
11896
11926
  }
11897
11927
  return true;
11898
11928
  }
@@ -12212,6 +12242,7 @@ var CardPassengerList = ({
12212
12242
  title,
12213
12243
  passengers,
12214
12244
  onPassengerClick,
12245
+ onIconClick,
12215
12246
  labels,
12216
12247
  className
12217
12248
  }) => {
@@ -12278,7 +12309,14 @@ var CardPassengerList = ({
12278
12309
  {
12279
12310
  icon: passenger.id && passenger.serviceName ? "fluent:edit-24-regular" : "fluent:chevron-right-24-regular",
12280
12311
  width: 20,
12281
- height: 20
12312
+ height: 20,
12313
+ onClick: (event) => {
12314
+ onIconClick(
12315
+ event,
12316
+ passenger,
12317
+ passenger.id && passenger.serviceName ? "edit" : "add"
12318
+ );
12319
+ }
12282
12320
  }
12283
12321
  )
12284
12322
  ]