@mychoice/mychoice-sdk-store 2.2.12 → 2.2.17

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.
Files changed (28) hide show
  1. package/dist/cjs/index.js +82 -4
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/services/api/carInsuranceApi.interfaces.d.ts +235 -0
  4. package/dist/cjs/services/api/index.d.ts +1 -0
  5. package/dist/cjs/states/reducers/states/formStates/FormCarState/ConfigState/hoox.d.ts +3 -0
  6. package/dist/cjs/states/reducers/states/formStates/FormCarState/DiscountState/interfaces.d.ts +1 -0
  7. package/dist/cjs/states/reducers/states/formStates/FormCarState/QuoteState/interfaces.d.ts +3 -1
  8. package/dist/cjs/states/reducers/states/formStates/FormCarState/VehicleState/actions.d.ts +5 -1
  9. package/dist/cjs/states/reducers/states/formStates/FormCarState/VehicleState/helper.d.ts +2 -2
  10. package/dist/cjs/states/reducers/states/formStates/FormCarState/VehicleState/initialState.d.ts +5 -0
  11. package/dist/cjs/states/reducers/states/formStates/FormCarState/VehicleState/interfaces.d.ts +28 -0
  12. package/dist/cjs/states/reducers/states/formStates/FormHomeState/QuoteState/interfaces.d.ts +3 -1
  13. package/dist/cjs/states/reducers/states/formStates/FormLifeState/QuoteState/interfaces.d.ts +1 -0
  14. package/dist/esm/index.js +82 -5
  15. package/dist/esm/index.js.map +1 -1
  16. package/dist/esm/services/api/carInsuranceApi.interfaces.d.ts +235 -0
  17. package/dist/esm/services/api/index.d.ts +1 -0
  18. package/dist/esm/states/reducers/states/formStates/FormCarState/ConfigState/hoox.d.ts +3 -0
  19. package/dist/esm/states/reducers/states/formStates/FormCarState/DiscountState/interfaces.d.ts +1 -0
  20. package/dist/esm/states/reducers/states/formStates/FormCarState/QuoteState/interfaces.d.ts +3 -1
  21. package/dist/esm/states/reducers/states/formStates/FormCarState/VehicleState/actions.d.ts +5 -1
  22. package/dist/esm/states/reducers/states/formStates/FormCarState/VehicleState/helper.d.ts +2 -2
  23. package/dist/esm/states/reducers/states/formStates/FormCarState/VehicleState/initialState.d.ts +5 -0
  24. package/dist/esm/states/reducers/states/formStates/FormCarState/VehicleState/interfaces.d.ts +28 -0
  25. package/dist/esm/states/reducers/states/formStates/FormHomeState/QuoteState/interfaces.d.ts +3 -1
  26. package/dist/esm/states/reducers/states/formStates/FormLifeState/QuoteState/interfaces.d.ts +1 -0
  27. package/dist/index.d.ts +45 -4
  28. package/package.json +3 -3
package/dist/cjs/index.js CHANGED
@@ -429,6 +429,7 @@ const globalStateReducer = redux.combineReducers({
429
429
  exports.CarBrokerTypeEnum = void 0;
430
430
  (function (CarBrokerTypeEnum) {
431
431
  CarBrokerTypeEnum["Youset"] = "youset";
432
+ CarBrokerTypeEnum["Mitch"] = "mitch";
432
433
  })(exports.CarBrokerTypeEnum || (exports.CarBrokerTypeEnum = {}));
433
434
 
434
435
  const vehicleComprehensiveInitialState = {
@@ -455,6 +456,11 @@ const limitedWaiverOfDepreciationInitialState = {
455
456
  coverage: true,
456
457
  limit: 1,
457
458
  };
459
+ const vehicleAccidentBenefitsInitialState = {
460
+ baseCoverage: 'minimum_required',
461
+ additionalCoverages: [],
462
+ abAcknowledged: false,
463
+ };
458
464
  const vehicleItemInitialState = {
459
465
  year: '',
460
466
  make: '',
@@ -477,6 +483,7 @@ const vehicleItemInitialState = {
477
483
  lossofuse: { ...vehicleLossOfUseInitialState },
478
484
  liabilityfordamage: { ...vehicleLiabilityForDamageInitialState },
479
485
  limitedwaiverofdepreciation: { ...limitedWaiverOfDepreciationInitialState },
486
+ accidentbenefits: { ...vehicleAccidentBenefitsInitialState },
480
487
  postalCode: '',
481
488
  locationIndex: '',
482
489
  city: '',
@@ -532,6 +539,10 @@ exports.StoreFormCarVehicleActionTypes = void 0;
532
539
  StoreFormCarVehicleActionTypes["FormCarLossOfUseCoverageSelect"] = "FormCarLossOfUseCoverageSelect";
533
540
  StoreFormCarVehicleActionTypes["FormCarLiabilityForDamageCoverageSelect"] = "FormCarLiabilityForDamageCoverageSelect";
534
541
  StoreFormCarVehicleActionTypes["FormCarLimitedWaiverOfDepreciationCoverageSelect"] = "FormCarLimitedWaiverOfDepreciationCoverageSelect";
542
+ StoreFormCarVehicleActionTypes["FormCarAccidentBenefitsBaseCoverageSelect"] = "FormCarAccidentBenefitsBaseCoverageSelect";
543
+ StoreFormCarVehicleActionTypes["FormCarAccidentBenefitsAdditionalCoveragesSet"] = "FormCarAccidentBenefitsAdditionalCoveragesSet";
544
+ StoreFormCarVehicleActionTypes["FormCarAccidentBenefitsAdditionalCoverageRemove"] = "FormCarAccidentBenefitsAdditionalCoverageRemove";
545
+ StoreFormCarVehicleActionTypes["FormCarAccidentBenefitsAcknowledge"] = "FormCarAccidentBenefitsAcknowledge";
535
546
  })(exports.StoreFormCarVehicleActionTypes || (exports.StoreFormCarVehicleActionTypes = {}));
536
547
 
537
548
  const createTab = (name, id) => ({
@@ -565,6 +576,7 @@ const createVehicleItem = (state) => ({
565
576
  comprehensive: state.items[0].comprehensive,
566
577
  collision: state.items[0].collision,
567
578
  liability: state.items[0].liability,
579
+ accidentbenefits: state.items[0].accidentbenefits,
568
580
  },
569
581
  ],
570
582
  tabs: [...state.tabs, { ...createTab('Vehicle', state.tabs.length) }],
@@ -696,6 +708,26 @@ const formCarVehicleStateReducer = (state = { ...carFormVehicleInitialState }, a
696
708
  return setLocalVehicles(action.localIndex, setCarCoverageProperty(state, 'liabilityfordamage', action.payload.coverage, action.payload.limit));
697
709
  case exports.StoreFormCarVehicleActionTypes.FormCarLimitedWaiverOfDepreciationCoverageSelect:
698
710
  return setLocalVehicles(action.localIndex, setCarCoverageProperty(state, 'limitedwaiverofdepreciation', action.payload.coverage, action.payload.limit));
711
+ case exports.StoreFormCarVehicleActionTypes.FormCarAccidentBenefitsBaseCoverageSelect:
712
+ return setLocalVehicles(action.localIndex, setItemProperty(state, 'accidentbenefits', {
713
+ ...state.items[state.activeIndex].accidentbenefits,
714
+ baseCoverage: action.payload.baseCoverage,
715
+ }));
716
+ case exports.StoreFormCarVehicleActionTypes.FormCarAccidentBenefitsAdditionalCoveragesSet:
717
+ return setLocalVehicles(action.localIndex, setItemProperty(state, 'accidentbenefits', {
718
+ ...state.items[state.activeIndex].accidentbenefits,
719
+ additionalCoverages: action.payload.additionalCoverages,
720
+ }));
721
+ case exports.StoreFormCarVehicleActionTypes.FormCarAccidentBenefitsAdditionalCoverageRemove:
722
+ return setLocalVehicles(action.localIndex, setItemProperty(state, 'accidentbenefits', {
723
+ ...state.items[state.activeIndex].accidentbenefits,
724
+ additionalCoverages: state.items[state.activeIndex].accidentbenefits.additionalCoverages.filter((coverage) => coverage !== action.payload.coverageValue),
725
+ }));
726
+ case exports.StoreFormCarVehicleActionTypes.FormCarAccidentBenefitsAcknowledge:
727
+ return setLocalVehicles(action.localIndex, setItemProperty(state, 'accidentbenefits', {
728
+ ...state.items[state.activeIndex].accidentbenefits,
729
+ abAcknowledged: true,
730
+ }));
699
731
  default:
700
732
  return state;
701
733
  }
@@ -2263,6 +2295,7 @@ const getDwellingInitialState = (type) => {
2263
2295
  exports.HomeBrokerTypeEnum = void 0;
2264
2296
  (function (HomeBrokerTypeEnum) {
2265
2297
  HomeBrokerTypeEnum["Youset"] = "youset";
2298
+ HomeBrokerTypeEnum["Mitch"] = "mitch";
2266
2299
  })(exports.HomeBrokerTypeEnum || (exports.HomeBrokerTypeEnum = {}));
2267
2300
 
2268
2301
  const formHomePostalInitialState = {
@@ -3721,6 +3754,16 @@ const useProvince = () => {
3721
3754
  isOntarioProvince: code === OntarioCode,
3722
3755
  };
3723
3756
  };
3757
+ const useAbReform = () => {
3758
+ const { isOntarioProvince } = useProvince();
3759
+ const { discountState } = useTypedSelector((state) => state).formCarState;
3760
+ const { policyStartYear, policyStartMonth, policyStartDay, policyStart, } = discountState;
3761
+ const policyStartDate = policyStartYear && policyStartMonth && policyStartDay
3762
+ ? `${policyStartYear}-${policyStartMonth}-${policyStartDay}`
3763
+ : policyStart;
3764
+ const isAbReformActive = isOntarioProvince && policyStartDate >= '2026-07-01';
3765
+ return { isAbReformActive };
3766
+ };
3724
3767
 
3725
3768
  const useStoreFormHomeQuote = () => {
3726
3769
  const { appConfigState } = useStoreAppConfig();
@@ -5054,9 +5097,12 @@ const CarQuoteDataHandler = () => {
5054
5097
  const postal = mychoiceSdkComponents.deepClone(postalState).item;
5055
5098
  const discount = mychoiceSdkComponents.deepClone(discountState);
5056
5099
  const { policyStartYear, policyStartMonth, policyStartDay } = discountState;
5100
+ const policyStartDate = policyStartYear && policyStartMonth && policyStartDay
5101
+ ? `${policyStartYear}-${policyStartMonth}-${policyStartDay}`
5102
+ : discountState.policyStart;
5057
5103
  // dispatchQuoteState({ type: StoreFormCarQuoteActionTypes.UpdateCarCallMessage, payload: { showCallMessage: false } });
5058
5104
  if (policyStartYear && policyStartMonth && policyStartDay) {
5059
- discount.policyStart = `${policyStartYear}-${policyStartMonth}-${policyStartDay}`;
5105
+ discount.policyStart = policyStartDate;
5060
5106
  delete discount.policyStartYear;
5061
5107
  delete discount.policyStartMonth;
5062
5108
  delete discount.policyStartDay;
@@ -5073,6 +5119,13 @@ const CarQuoteDataHandler = () => {
5073
5119
  provinceName: postal.provinceName,
5074
5120
  };
5075
5121
  requestBody.quoterInfo.recalculate = isRecalc;
5122
+ const isAbReformEligible = requestBody.provinceCode === 'ON' && policyStartDate >= '2026-07-01';
5123
+ // Flag if any Accident Benefits buy-ups are selected (Ontario only)
5124
+ if (isRecalc && isAbReformEligible) {
5125
+ const hasAbChanges = vehicles.some((v) => v.accidentbenefits?.baseCoverage !== 'minimum_required'
5126
+ || v.accidentbenefits?.additionalCoverages?.length > 0);
5127
+ requestBody.quoterInfo.accidentBenefitsChanged = hasAbChanges;
5128
+ }
5076
5129
  delete requestBody.isValid;
5077
5130
  delete requestBody.inValidation;
5078
5131
  if (hasToBeConfirmed !== undefined) {
@@ -5282,7 +5335,20 @@ const CarQuoteDataHandler = () => {
5282
5335
  vehicle.comprehensive.coverage = false;
5283
5336
  vehicle.comprehensive.deductible = 1000;
5284
5337
  }
5285
- return vehicle;
5338
+ const { accidentbenefits, ...vehiclePayload } = vehicle;
5339
+ const transformedVehicle = { ...vehiclePayload };
5340
+ if (accidentbenefits) {
5341
+ const { baseCoverage, additionalCoverages } = accidentbenefits;
5342
+ if (isAbReformEligible
5343
+ && (baseCoverage !== 'minimum_required' || additionalCoverages.length > 0)) {
5344
+ transformedVehicle.accidentBenefits = {
5345
+ baseCoverage,
5346
+ additionalCoverages,
5347
+ };
5348
+ }
5349
+ }
5350
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
5351
+ return transformedVehicle;
5286
5352
  });
5287
5353
  requestBody.vehlinks = localVehlinks;
5288
5354
  return {
@@ -5863,6 +5929,7 @@ const useValidationVehicle = () => {
5863
5929
  const { inValidation: vehicleFormIsInValidation = false, isValid: vehicleFormIsValid = false, } = vehicleState;
5864
5930
  const { appConfigState } = useStoreAppConfig();
5865
5931
  const { dispatchAppModalState } = useStoreAppModal();
5932
+ const { isAbReformActive } = useAbReform();
5866
5933
  const navigate = reactRouterDom.useNavigate();
5867
5934
  const vehicleFormValidate = (isRedirect = true) => {
5868
5935
  let formIsValid = false;
@@ -5893,6 +5960,13 @@ const useValidationVehicle = () => {
5893
5960
  return item;
5894
5961
  });
5895
5962
  });
5963
+ if (isAbReformActive) {
5964
+ vehicleState.items.forEach((item) => {
5965
+ if (!item.accidentbenefits.abAcknowledged) {
5966
+ errors.push('abAcknowledged');
5967
+ }
5968
+ });
5969
+ }
5896
5970
  if (!errors.length) {
5897
5971
  dispatchVehicleState({
5898
5972
  type: exports.StoreFormCarVehicleActionTypes.FormCarVehicleValidateSet,
@@ -5905,12 +5979,15 @@ const useValidationVehicle = () => {
5905
5979
  formIsValid = true;
5906
5980
  }
5907
5981
  else {
5908
- const element = document.getElementsByName(errors[0])[0];
5982
+ const element = document.getElementsByName(errors[0])[0] ?? document.getElementById(errors[0]);
5909
5983
  element?.scrollIntoView({ block: 'center', behavior: 'smooth' });
5984
+ const hasOnlyAbError = errors.every((e) => e === 'abAcknowledged');
5910
5985
  dispatchAppModalState({
5911
5986
  type: exports.StoreConfigAppModalActionTypes.AppModalMessageModal,
5912
5987
  payload: {
5913
- title: 'Please enter missing values of required fields',
5988
+ title: hasOnlyAbError
5989
+ ? 'Please review the Accident Benefits section'
5990
+ : 'Please enter missing values of required fields',
5914
5991
  },
5915
5992
  });
5916
5993
  dispatchVehicleState({
@@ -7478,6 +7555,7 @@ exports.parseAutofillParam = parseAutofillParam;
7478
7555
  exports.parseLifeAutofillParam = parseLifeAutofillParam;
7479
7556
  exports.reducers = reducers;
7480
7557
  exports.token = default_1;
7558
+ exports.useAbReform = useAbReform;
7481
7559
  exports.useAutofillCarForm = useAutofillCarForm;
7482
7560
  exports.useAutofillLifeForm = useAutofillLifeForm;
7483
7561
  exports.useHandlerAuth = useHandlerAuth;