@mychoice/mychoice-sdk-modules 2.2.13 → 2.2.15

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/cjs/index.js CHANGED
@@ -241,7 +241,7 @@ const BlockNextPageInfo$2 = () => {
241
241
  return null;
242
242
  };
243
243
 
244
- const BlockSubmit$2 = ({ className, label, buttonSize, isRecalc = false, }) => {
244
+ const BlockSubmit$2 = ({ className, label, buttonSize, isRecalc = false, onSubmitClick, }) => {
245
245
  const { quoteState: { isRequested, quoteConfirm } } = mychoiceSdkStore.useStoreFormCarQuote();
246
246
  const { discountState: { isValid } } = mychoiceSdkStore.useStoreFormCarDiscount();
247
247
  const { appConfigState: { localIndex, insuranceType } } = mychoiceSdkStore.useStoreAppConfig();
@@ -249,13 +249,17 @@ const BlockSubmit$2 = ({ className, label, buttonSize, isRecalc = false, }) => {
249
249
  const { postRequestQuote } = mychoiceSdkStore.CarQuoteDataHandler();
250
250
  const { carDiscountFormValidate } = mychoiceSdkStore.useValidationCarDiscount();
251
251
  const handleGetQuotesClick = () => {
252
+ onSubmitClick?.();
252
253
  if (!isValid) {
253
254
  carDiscountFormValidate(false, () => postRequestQuote(isRecalc, quoteConfirm));
254
255
  }
255
- else if (!isRequested) {
256
+ else if (isRecalc) {
256
257
  postRequestQuote(isRecalc, quoteConfirm);
257
258
  }
258
- else if (!isRecalc) {
259
+ else if (!isRequested) {
260
+ postRequestQuote(false, quoteConfirm);
261
+ }
262
+ else {
259
263
  navigate(`/${localIndex || mychoiceSdkComponents.defaultLocalIndex}/${insuranceType}/quotes`);
260
264
  }
261
265
  };
@@ -265,11 +269,12 @@ BlockSubmit$2.defaultProps = {
265
269
  buttonSize: mychoiceSdkComponents.SizeTypes.Large,
266
270
  label: 'Get Your Quotes',
267
271
  className: '',
272
+ onSubmitClick: undefined,
268
273
  };
269
274
 
270
275
  const VehicleOfferCoverages = ({ coverages, nonStandardCoverages, }) => {
271
276
  const { vehicleState, dispatchVehicleState } = mychoiceSdkStore.useStoreFormCarVehicle();
272
- const { comprehensive, collision, liability, lossofuse, liabilityfordamage, limitedwaiverofdepreciation } = vehicleState.items[vehicleState.activeIndex];
277
+ const { comprehensive, collision, liability, lossofuse, liabilityfordamage, limitedwaiverofdepreciation, accidentbenefits } = vehicleState.items[vehicleState.activeIndex];
273
278
  const vehicle_names = vehicleState.items.map(({ year, make, model }) => [`${year} ${make} ${model}`]);
274
279
  const isLeased = vehicleState.items.some((item) => item.leased);
275
280
  const handleComprehensiveChange = ({ value }) => {
@@ -384,7 +389,9 @@ const VehicleOfferCoverages = ({ coverages, nonStandardCoverages, }) => {
384
389
  }, 0);
385
390
  return `$${total.toFixed(2)}`;
386
391
  };
387
- return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("div", { className: "offer-coverages-container", children: jsxRuntime.jsxs("table", { className: "offer-coverages-table", children: [jsxRuntime.jsxs("tr", { className: "table-header", children: [jsxRuntime.jsx("td", { children: vehicle_names.join(', ') }), jsxRuntime.jsx("td", { children: "Selection" }), jsxRuntime.jsx("td", { children: "Premium" })] }), jsxRuntime.jsx("tr", { children: jsxRuntime.jsx("td", { colSpan: 3, children: jsxRuntime.jsx("div", { className: "divider" }) }) }), jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsxs("td", { children: ["Third Party Liability Coverage", jsxRuntime.jsx("div", { style: { display: 'inline-block', marginLeft: '5px' }, children: jsxRuntime.jsx(mychoiceSdkComponents.TooltipForm, { id: "my-tooltip", description: "Third-party liability coverage is mandatory in Ontario and protects you if you're found at fault for injuring or killing someone or damaging their property while driving. This includes people in other vehicles, pedestrians, cyclists, and even passengers in your own car, as well as property like fences, buildings, street signs, and light poles. If you’re sued, this coverage helps pay for legal defence, settlements, and any court-ordered payments. The minimum required coverage is $200,000, but that amount often isn’t enough—most drivers choose at least $2 million to avoid having to pay out-of-pocket if costs exceed the limit. This is a mandatory coverage in Ontario. Talk to your broker to ensure you have the right amount of protection." }) })] }), jsxRuntime.jsx("td", { children: jsxRuntime.jsx(SelectFormBox, { options: mychoiceSdkComponents.liabilityOptions, name: "liability-limit", onChange: handleLiabilityChange, defaultValue: getSelectedOption(mychoiceSdkComponents.liabilityOptions, liability.coverage ? liability.limit : 1000000), title: "", description: "", placeholder: "Select from the list", autoSelectIfValueIsOutOfOptions: false, size: mychoiceSdkComponents.SizeTypes.Small, className: "coverages-select-input" }) }), jsxRuntime.jsx("td", { children: getTPBIandTPPD() })] }), jsxRuntime.jsx("tr", { children: jsxRuntime.jsx("td", { colSpan: 3, children: jsxRuntime.jsx("div", { className: "divider" }) }) }), jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsxs("td", { children: ["Direct Compensation - Property Damange Coverage", jsxRuntime.jsx("div", { style: { display: 'inline-block', marginLeft: '5px' }, children: jsxRuntime.jsx(mychoiceSdkComponents.TooltipForm, { id: "my-tooltip", description: "Third - Party Liability Direct Compensation responds when you are determined to be not at-fault in an accident with another vehicle, and covers the cost of damage to your vehicle (or actual cash value payout), it's equipment, contents, loss of use, and other associated incidentals such as towing fees and lot fees. This is considered an optional coverage, and it is highly recommended that you do not remove it. If your vehicle is financed or leased, the lienholder/lessor must agree to allow you to remove it. Should you remove it, you must also remove collision or all perils coverage. You will be entirely out-of-pocket in a not-at-fault accident and are legally restricted from claiming reimbursement (suing) the other vehicle owner or their insurer. Chat to your broker for more details about this coverage." }) })] }), jsxRuntime.jsx("td", { children: "$0 Deductible" }), jsxRuntime.jsx("td", { children: getCoveragePremium('TPDC') })] }), jsxRuntime.jsx("tr", { children: jsxRuntime.jsx("td", { colSpan: 3, children: jsxRuntime.jsx("div", { className: "divider" }) }) }), jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsxs("td", { children: ["Accident Benefits Coverage", jsxRuntime.jsx("div", { style: { display: 'inline-block', marginLeft: '5px' }, children: jsxRuntime.jsx(mychoiceSdkComponents.TooltipForm, { id: "my-tooltip", description: 'Accident Benefits is a mandatory coverage that responds when there is injury or death in an accident, regardless of fault, and for all affected individuals. It provides a core series of benefits with the capacity to increase coverage values, along with a menu of optional additional benefits that can be added on. The core and optional coverages must be thoroughly reviewed and evaluated, and decisions made based on your own personal circumstances and needs. Chat to your broker for more details about this coverage.' }) })] }), jsxRuntime.jsx("td", { children: "Included" }), jsxRuntime.jsx("td", { children: getCoveragePremium('AB') })] }), jsxRuntime.jsx("tr", { children: jsxRuntime.jsx("td", { colSpan: 3, children: jsxRuntime.jsx("div", { className: "divider" }) }) }), jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsxs("td", { children: ["Uninsured Automobile Coverage", jsxRuntime.jsx("div", { style: { display: 'inline-block', marginLeft: '5px' }, children: jsxRuntime.jsx(mychoiceSdkComponents.TooltipForm, { id: "my-tooltip", description: 'Uninsured Motorist Coverage is a mandatory coverage which responds when you are not at-fault in an accident with an uninsured or unidentified (hit-and-run) vehicle, and have incurred bodily injuries, death, or damage to your property, and the offending vehicle owner cannot be found, of if identified, cannot adequately compensate you. Coverage is capped to match the province minimum liability limit of $200,000. Due to the low coverage value, it is highly recommended to ensure inclusion of the OPCF44 Family Protection Coverage endorsement for additional protection. Chat to your broker for more details about this coverage.' }) })] }), jsxRuntime.jsx("td", { children: "Included" }), jsxRuntime.jsx("td", { children: getCoveragePremium('UA') })] }), jsxRuntime.jsx("tr", { children: jsxRuntime.jsx("td", { colSpan: 3, children: jsxRuntime.jsx("div", { className: "divider" }) }) }), jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsxs("td", { children: ["Comprehensive Coverage", jsxRuntime.jsx("div", { style: { display: 'inline-block', marginLeft: '5px' }, children: jsxRuntime.jsx(mychoiceSdkComponents.TooltipForm, { id: "my-tooltip", description: 'Comprehensive coverage responds to types of damages ( repair or actual cash value payout) incurred by your vehicle when it is not actively being driven. Examples would be fire, theft, vandalism, glass breakage, and weather-related losses. While considered an optional coverage, it is highly recommended. Should your vehicle be financed or leased, the lienholder/lessor will not allow you to leave this coverage out and will impose a satisfactory deductible to meet their requirements.' }) })] }), jsxRuntime.jsx("td", { children: jsxRuntime.jsx(SelectFormBox, { options: mychoiceSdkComponents.coverageOptions, name: "comprehensive-coverage", onChange: handleComprehensiveChange, defaultValue: getSelectedOption(mychoiceSdkComponents.coverageOptions, comprehensive.coverage ? comprehensive.deductible : 0), title: "", description: "", placeholder: "Select from the list", autoSelectIfValueIsOutOfOptions: false, size: mychoiceSdkComponents.SizeTypes.Small, className: "coverages-select-input" }) }), jsxRuntime.jsx("td", { children: getCoveragePremium('CMP') })] }), jsxRuntime.jsx("tr", { children: jsxRuntime.jsx("td", { colSpan: 3, children: jsxRuntime.jsx("div", { className: "divider" }) }) }), jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsxs("td", { children: ["Collision Coverage", jsxRuntime.jsx("div", { style: { display: 'inline-block', marginLeft: '5px' }, children: jsxRuntime.jsx(mychoiceSdkComponents.TooltipForm, { id: "my-tooltip", description: 'Collision coverage responds to your vehicle damages (repair or actual cash value payout) in the event you collide with another vehicle or object in the course of its use or operation, and is determined to be at-fault. While considered an optional coverage, it is highly recommended. Should your vehicle be financed or leased, the lienholder/lessor will not allow you to leave this coverage out and will impose a satisfactory deductible to meet their requirements. Chat to your broker for more details about this coverage.' }) })] }), jsxRuntime.jsx("td", { children: jsxRuntime.jsx(SelectFormBox, { options: mychoiceSdkComponents.coverageOptions, name: "collision-coverage", onChange: handleCollisionChange, defaultValue: getSelectedOption(mychoiceSdkComponents.coverageOptions, collision.coverage ? collision.deductible : 0), title: "", description: "", placeholder: "Select from the list", autoSelectIfValueIsOutOfOptions: false, size: mychoiceSdkComponents.SizeTypes.Small, className: "coverages-select-input" }) }), jsxRuntime.jsx("td", { children: getCoveragePremium('COL') })] }), jsxRuntime.jsx("tr", { children: jsxRuntime.jsx("td", { colSpan: 3, children: jsxRuntime.jsx("div", { className: "divider" }) }) }), doesCoverageExist('5') && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsx("td", { children: "Permission to Rent or Lease (OPCF 5)" }), jsxRuntime.jsx("td", { children: "Included" }), jsxRuntime.jsx("td", { children: getCoveragePremium('5') })] }), jsxRuntime.jsx("tr", { children: jsxRuntime.jsx("td", { colSpan: 3, children: jsxRuntime.jsx("div", { className: "divider" }) }) })] })), isNonStandardCoverageActive(20) && (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsxs("td", { children: ["Loss of Use (OPCF 20)", jsxRuntime.jsx("div", { style: { display: 'inline-block', marginLeft: '5px' }, children: jsxRuntime.jsx(mychoiceSdkComponents.TooltipForm, { id: "my-tooltip", description: 'The OPCF20 Loss of Use / Transportation Replacement endorsement responds when you are determined to be at-fault for an accident, or have a comprehensive claim, and need replacement transportation while your vehicle is out-of-service being repaired, or until it is deemed to be a total loss and a settlement offer is made by your insurer. Most often used to pay for a temporary replacement vehicle rental, it can also be used to compensate for other acceptable forms of travel. Depending on the insurer, the coverage limits available may be a dollar amount or a time amount, and you must have collision and comprehensive, or all perils coverage to include this endorsement. While it is optional, it is highly recommended, and careful consideration must be given to the coverage amounts chosen, as repair delays can quickly exhaust your policy limits, leaving you out-of-pocket for transportation expenses. Chat to your broker for more details about this coverage.' }) })] }), jsxRuntime.jsx("td", { style: { paddingBottom: '7px' }, children: jsxRuntime.jsx(SelectFormBox, { options: mychoiceSdkComponents.lossOfUseOptions, name: "loss-of-use", onChange: handleLossOfUseChange, defaultValue: getSelectedOption(mychoiceSdkComponents.lossOfUseOptions, lossofuse.coverage ? lossofuse.limit : 0), title: "", description: "", placeholder: "Select from the list", autoSelectIfValueIsOutOfOptions: false, size: mychoiceSdkComponents.SizeTypes.Small, className: "coverages-select-input" }) }), jsxRuntime.jsx("td", { rowSpan: doesCoverageExist('PAK6') ? 2 : 1, children: doesCoverageExist('PAK6') ? getCoveragePremium('PAK6') : getCoveragePremium('20') })] }) })), isNonStandardCoverageActive(27) && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsxs("td", { children: ["Liability for Damage for Non-Owned Cars (OPCF 27)", jsxRuntime.jsx("div", { style: { display: 'inline-block', marginLeft: '5px' }, children: jsxRuntime.jsx(mychoiceSdkComponents.TooltipForm, { id: "my-tooltip", description: 'The OPCF27 Liability for Damage to Non-Owned Automobile(s) endorsement responds when you rent or borrow a vehicle, and want to extend your coverages to that vehicle. Often used for special occasion rentals or vacation vehicle rentals. Full liability and physical damage coverages must be on your insured vehicle for this endorsement to apply, and a deductible is applicable. Careful consideration must be given in choosing a coverage amount that adequately covers the value of the vehicle you are expecting to rent or borrow. While considered optional, it is highly recommended, and often "packaged" with the OPCF20 Loss of Use / Transportation Replacement coverage by many insurers. Chat to your broker for more details about this coverage.' }) })] }), jsxRuntime.jsx("td", { children: jsxRuntime.jsx(SelectFormBox, { options: mychoiceSdkComponents.liabilityForDamageOptions, name: "liaiblity-for-damage", onChange: handleLiaiblityForDamageChange, defaultValue: getSelectedOption(mychoiceSdkComponents.liabilityForDamageOptions, liabilityfordamage.coverage ? liabilityfordamage.limit : 0), title: "", description: "", placeholder: "Select from the list", autoSelectIfValueIsOutOfOptions: false, size: mychoiceSdkComponents.SizeTypes.Small, className: "coverages-select-input" }) }), !doesCoverageExist('PAK6') && jsxRuntime.jsx("td", { children: getCoveragePremium('27') })] }), jsxRuntime.jsx("tr", { children: jsxRuntime.jsx("td", { colSpan: 3, children: jsxRuntime.jsx("div", { className: "divider" }) }) })] })), isNonStandardCoverageActive('aCCW') && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsxs("td", { children: ["Accident Waiver or Forgiveness (OPCF 39)", jsxRuntime.jsx("div", { style: { display: 'inline-block', marginLeft: '5px' }, children: jsxRuntime.jsx(mychoiceSdkComponents.TooltipForm, { id: "my-tooltip", description: "The OPCF39 Accident Waiver/Forgiveness endorsement responds by protecting your existing driving record from being negatively impacted by a single, partial at-fault or fully at-fault accident, and must be on the policy before the accident. The benefit of the coverage continues as long as you stay with the same insurer, as it's not transferable should you move to another insurance company. Subsequent at-fault or partial at-fault accidents will not have the protection and will be adversely rated accordingly. Eligibility, terms, conditions, and formulations used can vary significantly between insurers, so careful review and consideration are essential. While purchasing this endorsement is optional, it is highly recommended as the alternative of being accident-rated for several years will be significantly higher in premiums than the cost of the endorsement. Chat to your broker for more details about this coverage." }) })] }), jsxRuntime.jsx("td", { children: "Included" }), jsxRuntime.jsx("td", { children: getCoveragePremium('ACCW') })] }), jsxRuntime.jsx("tr", { children: jsxRuntime.jsx("td", { colSpan: 3, children: jsxRuntime.jsx("div", { className: "divider" }) }) })] })), isNonStandardCoverageActive(43) && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsxs("td", { children: ["Limited waiver of depreciation (OPCF ", isLeased ? '43A' : '43', ")", jsxRuntime.jsx("div", { style: { display: 'inline-block', marginLeft: '5px' }, children: jsxRuntime.jsx(mychoiceSdkComponents.TooltipForm, { id: "my-tooltip", description: 'The OPCF43/43A Removing Depreciation Deduction / Limited Waiver of Depreciation endorsement responds by protecting your original purchase/lease price of a "new" vehicle (as evidenced by a bill of sale or lease agreement) from depreciation should the vehicle be a total loss from an insured peril. Only new vehicles, and in some cases "demo\'s" with limited mileage are eligible, and the endorsement must be added immediately upon the vehicle delivery. Coverage durations available vary between insurers, generally ranging from 24 months to 60 months from the possession date of the vehicle. While an optional coverage, it is highly recommended as, without it, a total loss settlement based on actual cash value could leave you contractually owing money to a lienholder or lessor. Chat to your broker for more details about this coverage.' }) })] }), jsxRuntime.jsx("td", { children: jsxRuntime.jsx(SelectFormBox, { options: mychoiceSdkComponents.limitedWaiverOfDepreciationOptions, name: "liaiblity-for-damage", onChange: handleLimitedWaiverOfDepreciationChange, defaultValue: getSelectedOption(mychoiceSdkComponents.limitedWaiverOfDepreciationOptions, limitedwaiverofdepreciation.coverage ? limitedwaiverofdepreciation.limit : 0), title: "", description: "", placeholder: "Select from the list", autoSelectIfValueIsOutOfOptions: false, size: mychoiceSdkComponents.SizeTypes.Small, className: "coverages-select-input" }) }), jsxRuntime.jsx("td", { children: getCoveragePremium('43') })] }), jsxRuntime.jsx("tr", { children: jsxRuntime.jsx("td", { colSpan: 3, children: jsxRuntime.jsx("div", { className: "divider" }) }) })] })), jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsxs("td", { children: ["Family Protection (OPCF 44)", jsxRuntime.jsx("div", { style: { display: 'inline-block', marginLeft: '5px' }, children: jsxRuntime.jsx(mychoiceSdkComponents.TooltipForm, { id: "my-tooltip", description: 'The OPCF44 Family Protection Endorsement responds when you are determined to be not at-fault in a vehicle accident, and your claim / civil suit against the offending vehicle owner is not adequately satisfied as they are unidentified, uninsured, or underinsured. This endorsement bridges their coverages (if any) up to the full limits of the OPCF44 coverage on your policy. While considered an optional coverage, it is highly recommended as a form of self protection, and is extremely low in cost. Chat to your broker for more details about this coverage.' }) })] }), jsxRuntime.jsx("td", { children: "Included" }), jsxRuntime.jsx("td", { children: getCoveragePremium('44') })] }), jsxRuntime.jsx("tr", { children: jsxRuntime.jsx("td", { colSpan: 3, children: jsxRuntime.jsx("div", { className: "divider" }) }) }), jsxRuntime.jsxs("tr", { className: "premium-total", children: [jsxRuntime.jsx("td", { children: "Annual Premium" }), jsxRuntime.jsx("td", {}), jsxRuntime.jsx("td", { children: getSumOfPremiums() })] })] }) }), jsxRuntime.jsx("div", { style: { display: 'flex', flexDirection: 'column' }, children: jsxRuntime.jsx(BlockSubmit$2, { className: "mychoice recalculate", label: "Recalculate Quote", buttonSize: mychoiceSdkComponents.SizeTypes.Medium, isRecalc: true }) })] }));
392
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("div", { className: "offer-coverages-container", children: jsxRuntime.jsxs("table", { className: "offer-coverages-table", children: [jsxRuntime.jsxs("tr", { className: "table-header", children: [jsxRuntime.jsx("td", { children: vehicle_names.join(', ') }), jsxRuntime.jsx("td", { children: "Selection" }), jsxRuntime.jsx("td", { children: "Premium" })] }), jsxRuntime.jsx("tr", { children: jsxRuntime.jsx("td", { colSpan: 3, children: jsxRuntime.jsx("div", { className: "divider" }) }) }), jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsxs("td", { children: ["Third Party Liability Coverage", jsxRuntime.jsx("div", { style: { display: 'inline-block', marginLeft: '5px' }, children: jsxRuntime.jsx(mychoiceSdkComponents.TooltipForm, { id: "my-tooltip", description: "Third-party liability coverage is mandatory in Ontario and protects you if you're found at fault for injuring or killing someone or damaging their property while driving. This includes people in other vehicles, pedestrians, cyclists, and even passengers in your own car, as well as property like fences, buildings, street signs, and light poles. If you’re sued, this coverage helps pay for legal defence, settlements, and any court-ordered payments. The minimum required coverage is $200,000, but that amount often isn’t enough—most drivers choose at least $2 million to avoid having to pay out-of-pocket if costs exceed the limit. This is a mandatory coverage in Ontario. Talk to your broker to ensure you have the right amount of protection." }) })] }), jsxRuntime.jsx("td", { children: jsxRuntime.jsx(SelectFormBox, { options: mychoiceSdkComponents.liabilityOptions, name: "liability-limit", onChange: handleLiabilityChange, defaultValue: getSelectedOption(mychoiceSdkComponents.liabilityOptions, liability.coverage ? liability.limit : 1000000), title: "", description: "", placeholder: "Select from the list", autoSelectIfValueIsOutOfOptions: false, size: mychoiceSdkComponents.SizeTypes.Small, className: "coverages-select-input" }) }), jsxRuntime.jsx("td", { children: getTPBIandTPPD() })] }), jsxRuntime.jsx("tr", { children: jsxRuntime.jsx("td", { colSpan: 3, children: jsxRuntime.jsx("div", { className: "divider" }) }) }), jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsxs("td", { children: ["Direct Compensation - Property Damange Coverage", jsxRuntime.jsx("div", { style: { display: 'inline-block', marginLeft: '5px' }, children: jsxRuntime.jsx(mychoiceSdkComponents.TooltipForm, { id: "my-tooltip", description: "Third - Party Liability Direct Compensation responds when you are determined to be not at-fault in an accident with another vehicle, and covers the cost of damage to your vehicle (or actual cash value payout), it's equipment, contents, loss of use, and other associated incidentals such as towing fees and lot fees. This is considered an optional coverage, and it is highly recommended that you do not remove it. If your vehicle is financed or leased, the lienholder/lessor must agree to allow you to remove it. Should you remove it, you must also remove collision or all perils coverage. You will be entirely out-of-pocket in a not-at-fault accident and are legally restricted from claiming reimbursement (suing) the other vehicle owner or their insurer. Chat to your broker for more details about this coverage." }) })] }), jsxRuntime.jsx("td", { children: "$0 Deductible" }), jsxRuntime.jsx("td", { children: getCoveragePremium('TPDC') })] }), jsxRuntime.jsx("tr", { children: jsxRuntime.jsx("td", { colSpan: 3, children: jsxRuntime.jsx("div", { className: "divider" }) }) }), jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsxs("td", { children: ["Accident Benefits Coverage", jsxRuntime.jsx("div", { style: { display: 'inline-block', marginLeft: '5px' }, children: jsxRuntime.jsx(mychoiceSdkComponents.TooltipForm, { id: "my-tooltip", description: 'Accident Benefits is a mandatory coverage that responds when there is injury or death in an accident, regardless of fault, and for all affected individuals. It provides a core series of benefits with the capacity to increase coverage values, along with a menu of optional additional benefits that can be added on. The core and optional coverages must be thoroughly reviewed and evaluated, and decisions made based on your own personal circumstances and needs. Chat to your broker for more details about this coverage.' }) }), accidentbenefits && accidentbenefits.additionalCoverages.length > 0 && (jsxRuntime.jsx("div", { style: { marginTop: '4px', fontSize: '0.85em' }, children: mychoiceSdkComponents.accidentBenefitsOptionalOptions
393
+ .filter((o) => accidentbenefits.additionalCoverages.includes(o.value))
394
+ .map((o) => (jsxRuntime.jsx("div", { children: o.name }, o.value))) }))] }), jsxRuntime.jsx("td", { children: "Included" }), jsxRuntime.jsx("td", { children: getCoveragePremium('AB') })] }), jsxRuntime.jsx("tr", { children: jsxRuntime.jsx("td", { colSpan: 3, children: jsxRuntime.jsx("div", { className: "divider" }) }) }), jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsxs("td", { children: ["Uninsured Automobile Coverage", jsxRuntime.jsx("div", { style: { display: 'inline-block', marginLeft: '5px' }, children: jsxRuntime.jsx(mychoiceSdkComponents.TooltipForm, { id: "my-tooltip", description: 'Uninsured Motorist Coverage is a mandatory coverage which responds when you are not at-fault in an accident with an uninsured or unidentified (hit-and-run) vehicle, and have incurred bodily injuries, death, or damage to your property, and the offending vehicle owner cannot be found, of if identified, cannot adequately compensate you. Coverage is capped to match the province minimum liability limit of $200,000. Due to the low coverage value, it is highly recommended to ensure inclusion of the OPCF44 Family Protection Coverage endorsement for additional protection. Chat to your broker for more details about this coverage.' }) })] }), jsxRuntime.jsx("td", { children: "Included" }), jsxRuntime.jsx("td", { children: getCoveragePremium('UA') })] }), jsxRuntime.jsx("tr", { children: jsxRuntime.jsx("td", { colSpan: 3, children: jsxRuntime.jsx("div", { className: "divider" }) }) }), jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsxs("td", { children: ["Comprehensive Coverage", jsxRuntime.jsx("div", { style: { display: 'inline-block', marginLeft: '5px' }, children: jsxRuntime.jsx(mychoiceSdkComponents.TooltipForm, { id: "my-tooltip", description: 'Comprehensive coverage responds to types of damages ( repair or actual cash value payout) incurred by your vehicle when it is not actively being driven. Examples would be fire, theft, vandalism, glass breakage, and weather-related losses. While considered an optional coverage, it is highly recommended. Should your vehicle be financed or leased, the lienholder/lessor will not allow you to leave this coverage out and will impose a satisfactory deductible to meet their requirements.' }) })] }), jsxRuntime.jsx("td", { children: jsxRuntime.jsx(SelectFormBox, { options: mychoiceSdkComponents.coverageOptions, name: "comprehensive-coverage", onChange: handleComprehensiveChange, defaultValue: getSelectedOption(mychoiceSdkComponents.coverageOptions, comprehensive.coverage ? comprehensive.deductible : 0), title: "", description: "", placeholder: "Select from the list", autoSelectIfValueIsOutOfOptions: false, size: mychoiceSdkComponents.SizeTypes.Small, className: "coverages-select-input" }) }), jsxRuntime.jsx("td", { children: getCoveragePremium('CMP') })] }), jsxRuntime.jsx("tr", { children: jsxRuntime.jsx("td", { colSpan: 3, children: jsxRuntime.jsx("div", { className: "divider" }) }) }), jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsxs("td", { children: ["Collision Coverage", jsxRuntime.jsx("div", { style: { display: 'inline-block', marginLeft: '5px' }, children: jsxRuntime.jsx(mychoiceSdkComponents.TooltipForm, { id: "my-tooltip", description: 'Collision coverage responds to your vehicle damages (repair or actual cash value payout) in the event you collide with another vehicle or object in the course of its use or operation, and is determined to be at-fault. While considered an optional coverage, it is highly recommended. Should your vehicle be financed or leased, the lienholder/lessor will not allow you to leave this coverage out and will impose a satisfactory deductible to meet their requirements. Chat to your broker for more details about this coverage.' }) })] }), jsxRuntime.jsx("td", { children: jsxRuntime.jsx(SelectFormBox, { options: mychoiceSdkComponents.coverageOptions, name: "collision-coverage", onChange: handleCollisionChange, defaultValue: getSelectedOption(mychoiceSdkComponents.coverageOptions, collision.coverage ? collision.deductible : 0), title: "", description: "", placeholder: "Select from the list", autoSelectIfValueIsOutOfOptions: false, size: mychoiceSdkComponents.SizeTypes.Small, className: "coverages-select-input" }) }), jsxRuntime.jsx("td", { children: getCoveragePremium('COL') })] }), jsxRuntime.jsx("tr", { children: jsxRuntime.jsx("td", { colSpan: 3, children: jsxRuntime.jsx("div", { className: "divider" }) }) }), doesCoverageExist('5') && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsx("td", { children: "Permission to Rent or Lease (OPCF 5)" }), jsxRuntime.jsx("td", { children: "Included" }), jsxRuntime.jsx("td", { children: getCoveragePremium('5') })] }), jsxRuntime.jsx("tr", { children: jsxRuntime.jsx("td", { colSpan: 3, children: jsxRuntime.jsx("div", { className: "divider" }) }) })] })), isNonStandardCoverageActive(20) && (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsxs("td", { children: ["Loss of Use (OPCF 20)", jsxRuntime.jsx("div", { style: { display: 'inline-block', marginLeft: '5px' }, children: jsxRuntime.jsx(mychoiceSdkComponents.TooltipForm, { id: "my-tooltip", description: 'The OPCF20 Loss of Use / Transportation Replacement endorsement responds when you are determined to be at-fault for an accident, or have a comprehensive claim, and need replacement transportation while your vehicle is out-of-service being repaired, or until it is deemed to be a total loss and a settlement offer is made by your insurer. Most often used to pay for a temporary replacement vehicle rental, it can also be used to compensate for other acceptable forms of travel. Depending on the insurer, the coverage limits available may be a dollar amount or a time amount, and you must have collision and comprehensive, or all perils coverage to include this endorsement. While it is optional, it is highly recommended, and careful consideration must be given to the coverage amounts chosen, as repair delays can quickly exhaust your policy limits, leaving you out-of-pocket for transportation expenses. Chat to your broker for more details about this coverage.' }) })] }), jsxRuntime.jsx("td", { style: { paddingBottom: '7px' }, children: jsxRuntime.jsx(SelectFormBox, { options: mychoiceSdkComponents.lossOfUseOptions, name: "loss-of-use", onChange: handleLossOfUseChange, defaultValue: getSelectedOption(mychoiceSdkComponents.lossOfUseOptions, lossofuse.coverage ? lossofuse.limit : 0), title: "", description: "", placeholder: "Select from the list", autoSelectIfValueIsOutOfOptions: false, size: mychoiceSdkComponents.SizeTypes.Small, className: "coverages-select-input" }) }), jsxRuntime.jsx("td", { rowSpan: doesCoverageExist('PAK6') ? 2 : 1, children: doesCoverageExist('PAK6') ? getCoveragePremium('PAK6') : getCoveragePremium('20') })] }) })), isNonStandardCoverageActive(27) && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsxs("td", { children: ["Liability for Damage for Non-Owned Cars (OPCF 27)", jsxRuntime.jsx("div", { style: { display: 'inline-block', marginLeft: '5px' }, children: jsxRuntime.jsx(mychoiceSdkComponents.TooltipForm, { id: "my-tooltip", description: 'The OPCF27 Liability for Damage to Non-Owned Automobile(s) endorsement responds when you rent or borrow a vehicle, and want to extend your coverages to that vehicle. Often used for special occasion rentals or vacation vehicle rentals. Full liability and physical damage coverages must be on your insured vehicle for this endorsement to apply, and a deductible is applicable. Careful consideration must be given in choosing a coverage amount that adequately covers the value of the vehicle you are expecting to rent or borrow. While considered optional, it is highly recommended, and often "packaged" with the OPCF20 Loss of Use / Transportation Replacement coverage by many insurers. Chat to your broker for more details about this coverage.' }) })] }), jsxRuntime.jsx("td", { children: jsxRuntime.jsx(SelectFormBox, { options: mychoiceSdkComponents.liabilityForDamageOptions, name: "liaiblity-for-damage", onChange: handleLiaiblityForDamageChange, defaultValue: getSelectedOption(mychoiceSdkComponents.liabilityForDamageOptions, liabilityfordamage.coverage ? liabilityfordamage.limit : 0), title: "", description: "", placeholder: "Select from the list", autoSelectIfValueIsOutOfOptions: false, size: mychoiceSdkComponents.SizeTypes.Small, className: "coverages-select-input" }) }), !doesCoverageExist('PAK6') && jsxRuntime.jsx("td", { children: getCoveragePremium('27') })] }), jsxRuntime.jsx("tr", { children: jsxRuntime.jsx("td", { colSpan: 3, children: jsxRuntime.jsx("div", { className: "divider" }) }) })] })), isNonStandardCoverageActive('aCCW') && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsxs("td", { children: ["Accident Waiver or Forgiveness (OPCF 39)", jsxRuntime.jsx("div", { style: { display: 'inline-block', marginLeft: '5px' }, children: jsxRuntime.jsx(mychoiceSdkComponents.TooltipForm, { id: "my-tooltip", description: "The OPCF39 Accident Waiver/Forgiveness endorsement responds by protecting your existing driving record from being negatively impacted by a single, partial at-fault or fully at-fault accident, and must be on the policy before the accident. The benefit of the coverage continues as long as you stay with the same insurer, as it's not transferable should you move to another insurance company. Subsequent at-fault or partial at-fault accidents will not have the protection and will be adversely rated accordingly. Eligibility, terms, conditions, and formulations used can vary significantly between insurers, so careful review and consideration are essential. While purchasing this endorsement is optional, it is highly recommended as the alternative of being accident-rated for several years will be significantly higher in premiums than the cost of the endorsement. Chat to your broker for more details about this coverage." }) })] }), jsxRuntime.jsx("td", { children: "Included" }), jsxRuntime.jsx("td", { children: getCoveragePremium('ACCW') })] }), jsxRuntime.jsx("tr", { children: jsxRuntime.jsx("td", { colSpan: 3, children: jsxRuntime.jsx("div", { className: "divider" }) }) })] })), isNonStandardCoverageActive(43) && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsxs("td", { children: ["Limited waiver of depreciation (OPCF ", isLeased ? '43A' : '43', ")", jsxRuntime.jsx("div", { style: { display: 'inline-block', marginLeft: '5px' }, children: jsxRuntime.jsx(mychoiceSdkComponents.TooltipForm, { id: "my-tooltip", description: 'The OPCF43/43A Removing Depreciation Deduction / Limited Waiver of Depreciation endorsement responds by protecting your original purchase/lease price of a "new" vehicle (as evidenced by a bill of sale or lease agreement) from depreciation should the vehicle be a total loss from an insured peril. Only new vehicles, and in some cases "demo\'s" with limited mileage are eligible, and the endorsement must be added immediately upon the vehicle delivery. Coverage durations available vary between insurers, generally ranging from 24 months to 60 months from the possession date of the vehicle. While an optional coverage, it is highly recommended as, without it, a total loss settlement based on actual cash value could leave you contractually owing money to a lienholder or lessor. Chat to your broker for more details about this coverage.' }) })] }), jsxRuntime.jsx("td", { children: jsxRuntime.jsx(SelectFormBox, { options: mychoiceSdkComponents.limitedWaiverOfDepreciationOptions, name: "liaiblity-for-damage", onChange: handleLimitedWaiverOfDepreciationChange, defaultValue: getSelectedOption(mychoiceSdkComponents.limitedWaiverOfDepreciationOptions, limitedwaiverofdepreciation.coverage ? limitedwaiverofdepreciation.limit : 0), title: "", description: "", placeholder: "Select from the list", autoSelectIfValueIsOutOfOptions: false, size: mychoiceSdkComponents.SizeTypes.Small, className: "coverages-select-input" }) }), jsxRuntime.jsx("td", { children: getCoveragePremium('43') })] }), jsxRuntime.jsx("tr", { children: jsxRuntime.jsx("td", { colSpan: 3, children: jsxRuntime.jsx("div", { className: "divider" }) }) })] })), jsxRuntime.jsxs("tr", { children: [jsxRuntime.jsxs("td", { children: ["Family Protection (OPCF 44)", jsxRuntime.jsx("div", { style: { display: 'inline-block', marginLeft: '5px' }, children: jsxRuntime.jsx(mychoiceSdkComponents.TooltipForm, { id: "my-tooltip", description: 'The OPCF44 Family Protection Endorsement responds when you are determined to be not at-fault in a vehicle accident, and your claim / civil suit against the offending vehicle owner is not adequately satisfied as they are unidentified, uninsured, or underinsured. This endorsement bridges their coverages (if any) up to the full limits of the OPCF44 coverage on your policy. While considered an optional coverage, it is highly recommended as a form of self protection, and is extremely low in cost. Chat to your broker for more details about this coverage.' }) })] }), jsxRuntime.jsx("td", { children: "Included" }), jsxRuntime.jsx("td", { children: getCoveragePremium('44') })] }), jsxRuntime.jsx("tr", { children: jsxRuntime.jsx("td", { colSpan: 3, children: jsxRuntime.jsx("div", { className: "divider" }) }) }), jsxRuntime.jsxs("tr", { className: "premium-total", children: [jsxRuntime.jsx("td", { children: "Annual Premium" }), jsxRuntime.jsx("td", {}), jsxRuntime.jsx("td", { children: getSumOfPremiums() })] })] }) }), jsxRuntime.jsx("div", { style: { display: 'flex', flexDirection: 'column' }, children: jsxRuntime.jsx(BlockSubmit$2, { className: "mychoice recalculate", label: "Recalculate Quote", buttonSize: mychoiceSdkComponents.SizeTypes.Medium, isRecalc: true }) })] }));
388
395
  };
389
396
 
390
397
  const OfferSection = ({ offerCompany, brokerCompany, offerPrice, phoneNumber, isBestOffer, isFirstOffer = true, operationHours = {}, redirectUrl, fulfillmentUrl, coverages, nonStandardCoverages, brokerIntegration, }) => {
@@ -743,8 +750,35 @@ const BlockCarInfo = () => {
743
750
  const BlockCarConditionInfo = () => {
744
751
  const { appConfigState: { appType } } = mychoiceSdkStore.useStoreAppConfig();
745
752
  const { vehicleState, dispatchVehicleState } = mychoiceSdkStore.useStoreFormCarVehicle();
753
+ const { discountState, dispatchDiscountState } = mychoiceSdkStore.useStoreFormCarDiscount();
746
754
  const { isAlbertaProvince } = mychoiceSdkStore.useProvince();
747
755
  const isTheBig = appType === mychoiceSdkComponents.AppTypes.TheBig;
756
+ const { policyStartYear, policyStartMonth, policyStartDay } = discountState;
757
+ const defaultPolicyStartDate = {
758
+ year: policyStartYear,
759
+ month: policyStartMonth,
760
+ day: policyStartDay,
761
+ };
762
+ const handlePolicyStartDateChange = (dateType) => ({ value }) => {
763
+ if (dateType === mychoiceSdkComponents.DateTypes.Day) {
764
+ dispatchDiscountState({
765
+ type: mychoiceSdkStore.StoreFormCarDiscountActionTypes.FormCarDiscountPolicyStartDaySelect,
766
+ payload: { policyStartDay: value },
767
+ });
768
+ }
769
+ if (dateType === mychoiceSdkComponents.DateTypes.Month) {
770
+ dispatchDiscountState({
771
+ type: mychoiceSdkStore.StoreFormCarDiscountActionTypes.FormCarDiscountPolicyStartMonthSelect,
772
+ payload: { policyStartMonth: value },
773
+ });
774
+ }
775
+ if (dateType === mychoiceSdkComponents.DateTypes.Year) {
776
+ dispatchDiscountState({
777
+ type: mychoiceSdkStore.StoreFormCarDiscountActionTypes.FormCarDiscountPolicyStartYearSelect,
778
+ payload: { policyStartYear: value },
779
+ });
780
+ }
781
+ };
748
782
  const { year, condition, leased, winterTires, parkingLocation, primaryUse, distanceDaily, distanceBusiness, distanceYearly, purchaseYear, purchaseMonth, purchaseDay, } = vehicleState.items[vehicleState.activeIndex];
749
783
  // eslint-disable-next-line max-len
750
784
  const primaryUseHintMessage = primaryUse === 'business' ? 'Please choose "Business" only if your vehicle is used primarily for work (sales representatives, realtors, consultants, etc.). If you drive back and forth to work or use your vehicle occasionally for work, please select "Personal".' : '';
@@ -834,7 +868,7 @@ const BlockCarConditionInfo = () => {
834
868
  purchaseMonth || '',
835
869
  purchaseYear || '',
836
870
  ], vehicleState.inValidation), error: vehicleState.inValidation, minDate: year ? `${Number(year) - 1}-01-01` : mychoiceSdkComponents.getFormattedDate('', 'yyyy-MM-dd'), maxDate: mychoiceSdkComponents.getFormattedDate('', 'yyyy-MM-dd') }), !(isAlbertaProvince && isTheBig) && (jsxRuntime.jsx(SwitchButtonBox, { items: mychoiceSdkComponents.carWinterTiresCheck, onChange: handleWinterTiresChange, name: "winterTires", defaultValue: getSelectedOption(mychoiceSdkComponents.carWinterTiresCheck, winterTires), description: "Snow. Ice. Freezing temperatures. Winter tires protect you from all these winter weather conditions, and more. It also protects your wallet. Investing in winter tires can save you $50 to $100 on your insurance.", title: "Does your car have winter tires?" })), jsxRuntime.jsx(SelectFormBox, { options: mychoiceSdkComponents.carKeepPlace, name: "parkingLocation", onChange: handleCarParkingLocationChange, defaultValue: getSelectedOption(mychoiceSdkComponents.carKeepPlace, parkingLocation), title: "Where do you keep your car overnight?", placeholder: "Select from the list", description: "For many of us, the answer is \u201Cat home.\u201D If you park your car in various locations throughout the year, then select the most frequently parking spot. Be honest\u2014some insurers will use your overnight parking location to calculate a quote, which could affect your claims in the future.", autoSelectIfValueIsOutOfOptions: false, error: !parkingLocation && vehicleState.inValidation, errorMessage: getErrorMessage(parkingLocation, vehicleState.inValidation) }), jsxRuntime.jsx(SwitchButtonBox, { items: mychoiceSdkComponents.carUsagePurpose, onChange: handleCarUsageChange, name: "primaryUse", defaultValue: getSelectedOption(mychoiceSdkComponents.carUsagePurpose, primaryUse) || mychoiceSdkComponents.carUsagePurpose[0].value, hintMessage: primaryUseHintMessage, description: "The way you use your vehicle is a primary factor that insurers use in your policy terms and fees, whether it be personal or business.\n \u2022 Personal is driving from work or school to home.\n \u2022 Business considers other uses like sales calls, pick-ups or deliveries, or other business errands.", title: "What do you mainly use your car for?" }), jsxRuntime.jsx(SelectFormBox, { options: mychoiceSdkComponents.firstDriveDistanceList, name: "distanceDaily", onChange: handleCarDailyDistanceChange, defaultValue: getSelectedOption(mychoiceSdkComponents.firstDriveDistanceList, distanceDaily), title: "How far is your 1-way commute to work or school?", placeholder: "Select", description: "The distance you drive to work or school would be an example of your daily commute. It is one of the most important factors when determining coverage options since it exposes you to traffic each day. The shorter your commute, the less risk you carry of an accident.", autoSelectIfValueIsOutOfOptions: false, error: !distanceDaily && vehicleState.inValidation, errorMessage: getErrorMessage(distanceDaily, vehicleState.inValidation) }), primaryUse === 'business' && (jsxRuntime.jsx(SelectFormBox, { options: mychoiceSdkComponents.dailyDriveBusinessDistanceList, name: "distanceBusiness", onChange: handleCarBusinessDailyDistanceChange, defaultValue: getSelectedOption(mychoiceSdkComponents.dailyDriveBusinessDistanceList, distanceBusiness), title: "How many kilometers are driven for business use each day?", placeholder: "Select", autoSelectIfValueIsOutOfOptions: false, error: !distanceBusiness && vehicleState.inValidation, errorMessage: getErrorMessage(distanceBusiness, vehicleState.inValidation) })), jsxRuntime.jsx(SelectFormBox, { options: mychoiceSdkComponents.yearlyDriveDistanceList, name: "distanceYearly", onChange: handleCarYearlyDistanceChange, defaultValue: getSelectedOption(mychoiceSdkComponents.yearlyDriveDistanceList, distanceYearly), title: "How many total kilometers are driven each year?", placeholder: "Select", hintMessage: distanceDaily ? `Based on your daily driven kilometers, we recommend
837
- ${mychoiceSdkComponents.numberWithCommas(getRecommendedRange(distanceDaily, primaryUse === mychoiceSdkComponents.VehiclePrimaryUseTypes.Business ? distanceBusiness : 1))} for your yearly driven kilometers` : '', autoSelectIfValueIsOutOfOptions: false, error: !distanceYearly && vehicleState.inValidation, errorMessage: getErrorMessage(distanceYearly, vehicleState.inValidation) })] }));
871
+ ${mychoiceSdkComponents.numberWithCommas(getRecommendedRange(distanceDaily, primaryUse === mychoiceSdkComponents.VehiclePrimaryUseTypes.Business ? distanceBusiness : 1))} for your yearly driven kilometers` : '', autoSelectIfValueIsOutOfOptions: false, error: !distanceYearly && vehicleState.inValidation, errorMessage: getErrorMessage(distanceYearly, vehicleState.inValidation) }), isTheBig && (jsxRuntime.jsx(DateSelectFormBox, { name: "policyStart", dateNames: ['policyStartYear', 'policyStartMonth', 'policyStartDay'], onDateChange: handlePolicyStartDateChange, defaultValue: defaultPolicyStartDate, title: "What is the ideal start date for your new insurance policy?", description: "Select your preferred date for the beginning of your new insurance policy. For instance, you may set the start date for the day that your current insurance expires to ensure that you're continuously covered. Alternatively, select today's date for a quote or new policy.", minDate: mychoiceSdkComponents.addDaysToDate('', 1), maxDate: mychoiceSdkComponents.addDaysToDate('', 90), isDay: true }))] }));
838
872
  };
839
873
 
840
874
  const VehicleSectionMain = () => {
@@ -843,6 +877,59 @@ const VehicleSectionMain = () => {
843
877
  return (jsxRuntime.jsxs("div", { className: `form-section top-section ${mychoiceCls}`, children: [mychoiceCls && jsxRuntime.jsx("h2", { className: "section-title", children: "Give us the scoop on your four-wheeled friend." }), jsxRuntime.jsx(BlockCarInfo, {}), jsxRuntime.jsx(BlockCarConditionInfo, {})] }));
844
878
  };
845
879
 
880
+ const AccidentBenefitsModal = ({ selectedCoverages, onApply, onCancel, }) => {
881
+ const [localSelected, setLocalSelected] = React.useState([...selectedCoverages]);
882
+ const allValues = mychoiceSdkComponents.accidentBenefitsOptionalOptions.map((o) => o.value);
883
+ const allSelected = allValues.every((v) => localSelected.includes(v));
884
+ const handleToggle = (value) => {
885
+ setLocalSelected((prev) => prev.includes(value) ? prev.filter((v) => v !== value) : [...prev, value]);
886
+ };
887
+ const handleSelectAll = () => {
888
+ if (allSelected) {
889
+ setLocalSelected([]);
890
+ }
891
+ else {
892
+ setLocalSelected([...allValues]);
893
+ }
894
+ };
895
+ return (jsxRuntime.jsx("div", { className: "ab-modal-overlay", onClick: onCancel, children: jsxRuntime.jsxs("div", { className: "ab-modal", onClick: (e) => e.stopPropagation(), children: [jsxRuntime.jsxs("div", { className: "ab-modal-header", children: [jsxRuntime.jsx("h3", { children: "Accident Benefits" }), jsxRuntime.jsx("p", { className: "ab-modal-subtitle", children: "Standard Coverage + Self-Selected Optional Enhancements" }), jsxRuntime.jsx("p", { className: "ab-modal-body-text", children: "Base coverage with flexibility to select additional benefits" })] }), jsxRuntime.jsxs("div", { className: "ab-modal-content", children: [jsxRuntime.jsxs("div", { className: "ab-modal-standard-block", children: [jsxRuntime.jsx("h4", { children: "Standard Benefits" }), jsxRuntime.jsx("p", { className: "ab-modal-standard-subtitle", children: "Medical, Rehabilitation, and Attendant Care" }), jsxRuntime.jsx("p", { className: "ab-modal-standard-description", children: "Covers medical expenses, therapy and personal care for injuries from an accident, including doctor visits and physiotherapy." })] }), jsxRuntime.jsxs("div", { className: "ab-modal-optional-block", children: [jsxRuntime.jsxs("div", { className: "ab-modal-minimum-notice", children: [jsxRuntime.jsx("strong", { children: "Minimum Limits Apply" }), jsxRuntime.jsx("p", { children: "All optional benefits selected below will be quoted at their minimum coverage limits. Please speak with your broker if you wish to discuss higher limits." })] }), jsxRuntime.jsxs("label", { className: "ab-modal-select-all", children: [jsxRuntime.jsx("input", { type: "checkbox", checked: allSelected, onChange: handleSelectAll }), jsxRuntime.jsx("span", { children: "Select All" })] }), jsxRuntime.jsx("div", { className: "ab-modal-options", children: mychoiceSdkComponents.accidentBenefitsOptionalOptions.map((option) => (jsxRuntime.jsxs("label", { className: "ab-modal-option", children: [jsxRuntime.jsx("input", { type: "checkbox", checked: localSelected.includes(option.value), onChange: () => handleToggle(option.value) }), jsxRuntime.jsxs("div", { className: "ab-modal-option-text", children: [jsxRuntime.jsx("strong", { children: option.name }), jsxRuntime.jsx("span", { children: option.description })] })] }, option.value))) })] })] }), jsxRuntime.jsxs("div", { className: "ab-modal-actions", children: [jsxRuntime.jsx("button", { type: "button", className: "ab-modal-btn ab-modal-btn-cancel", onClick: onCancel, children: "Cancel" }), jsxRuntime.jsx("button", { type: "button", className: "ab-modal-btn ab-modal-btn-apply", onClick: () => onApply(localSelected), children: "Apply" })] })] }) }));
896
+ };
897
+
898
+ const VehicleSectionAccidentBenefits = () => {
899
+ const { vehicleState, dispatchVehicleState } = mychoiceSdkStore.useStoreFormCarVehicle();
900
+ const { accidentbenefits } = vehicleState.items[vehicleState.activeIndex];
901
+ const { appConfigState: { appType }, } = mychoiceSdkStore.useStoreAppConfig();
902
+ const mychoiceCls = mychoiceSdkComponents.isMyChoiceLike(appType) ? 'mychoice' : '';
903
+ const { isAbReformActive } = mychoiceSdkStore.useAbReform();
904
+ const [modalOpen, setModalOpen] = React.useState(false);
905
+ if (!isAbReformActive || appType !== mychoiceSdkComponents.AppTypes.TheBig)
906
+ return null;
907
+ const handleApply = (selected) => {
908
+ dispatchVehicleState({
909
+ type: mychoiceSdkStore.StoreFormCarVehicleActionTypes.FormCarAccidentBenefitsAdditionalCoveragesSet,
910
+ payload: { additionalCoverages: selected },
911
+ });
912
+ if (selected.includes('med_rehab_cat_1m')) {
913
+ dispatchVehicleState({
914
+ type: mychoiceSdkStore.StoreFormCarVehicleActionTypes.FormCarAccidentBenefitsBaseCoverageSelect,
915
+ payload: { baseCoverage: 'med_rehab_cat_1m' },
916
+ });
917
+ }
918
+ else {
919
+ dispatchVehicleState({
920
+ type: mychoiceSdkStore.StoreFormCarVehicleActionTypes.FormCarAccidentBenefitsBaseCoverageSelect,
921
+ payload: { baseCoverage: 'minimum_required' },
922
+ });
923
+ }
924
+ dispatchVehicleState({
925
+ type: mychoiceSdkStore.StoreFormCarVehicleActionTypes.FormCarAccidentBenefitsAcknowledge,
926
+ });
927
+ setModalOpen(false);
928
+ };
929
+ const hasError = !accidentbenefits.abAcknowledged && vehicleState.inValidation;
930
+ return (jsxRuntime.jsxs("div", { id: "abAcknowledged", className: `form-section ab-section ${mychoiceCls}`, children: [jsxRuntime.jsxs("div", { className: "ab-notice-banner", children: [jsxRuntime.jsx("strong", { children: "Important Notice \u2013 Accident Benefits Changes (Effective July 1, 2026)" }), jsxRuntime.jsx("p", { children: "As of July 1, 2026, significant changes have been made to the Accident Benefits coverage in Ontario. Many benefits that were previously included are now optional and must be selected based on your individual needs." })] }), jsxRuntime.jsxs("div", { className: `ab-option-selector${hasError ? ' ab-option-selector--error' : ''}`, role: "button", tabIndex: 0, onClick: () => setModalOpen(true), onKeyDown: (e) => e.key === 'Enter' && setModalOpen(true), children: [jsxRuntime.jsxs("div", { className: "ab-option-selector-content", children: [jsxRuntime.jsx("strong", { children: "Standard Mandatory Accident Benefits + Self-Selected Optional Enhancements" }), jsxRuntime.jsx("p", { children: "Base coverage with flexibility to select additional benefits" }), jsxRuntime.jsx("p", { className: "ab-option-selector-hint", children: "Selecting this option will open a window displaying all available optional Accident Benefits, which you may individually select based on your needs. Each selected benefit will be quoted at its minimum limit." })] }), jsxRuntime.jsx("span", { className: "ab-option-selector-arrow", children: "\u203A" })] }), modalOpen && (jsxRuntime.jsx(AccidentBenefitsModal, { selectedCoverages: accidentbenefits.additionalCoverages, onApply: handleApply, onCancel: () => setModalOpen(false) }))] }));
931
+ };
932
+
846
933
  const VehicleSectionCoverage = () => {
847
934
  const { vehicleState, dispatchVehicleState } = mychoiceSdkStore.useStoreFormCarVehicle();
848
935
  const { collision, comprehensive } = vehicleState.items[vehicleState.activeIndex];
@@ -947,7 +1034,7 @@ const PageVehicle = () => {
947
1034
  behavior: 'smooth',
948
1035
  });
949
1036
  };
950
- return (jsxRuntime.jsxs("div", { className: "form-container", children: [jsxRuntime.jsx(TabVehicle, { createItem: createVehicle }), jsxRuntime.jsxs("div", { className: "form-section-container", children: [isRender && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(VehicleSectionMain, {}), jsxRuntime.jsx(VehicleSectionCoverage, {})] })), appType === mychoiceSdkComponents.AppTypes.TheBig ? (jsxRuntime.jsx(NavigationBottomTheBig, { createItem: createVehicle, formSteps: formSteps[mychoiceSdkComponents.InsuranceTypes.Car], itemCount: items.length, validateForm: validateForm, formIsValid: vehicleFormIsValid })) : (jsxRuntime.jsx(NavigationBottom, { className: "mychoice", createItem: createVehicle, formSteps: formSteps[mychoiceSdkComponents.InsuranceTypes.Car], itemCount: items.length, validateForm: validateForm, formIsValid: vehicleFormIsValid }))] }), localIndex !== mychoiceSdkComponents.defaultLocalIndex && (jsxRuntime.jsx("img", { className: "logo-for-partner", src: myChoicePartnerLogo, alt: "partner logo" }))] }));
1037
+ return (jsxRuntime.jsxs("div", { className: "form-container", children: [jsxRuntime.jsx(TabVehicle, { createItem: createVehicle }), jsxRuntime.jsxs("div", { className: "form-section-container", children: [isRender && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(VehicleSectionMain, {}), jsxRuntime.jsx(VehicleSectionAccidentBenefits, {}), jsxRuntime.jsx(VehicleSectionCoverage, {})] })), appType === mychoiceSdkComponents.AppTypes.TheBig ? (jsxRuntime.jsx(NavigationBottomTheBig, { createItem: createVehicle, formSteps: formSteps[mychoiceSdkComponents.InsuranceTypes.Car], itemCount: items.length, validateForm: validateForm, formIsValid: vehicleFormIsValid })) : (jsxRuntime.jsx(NavigationBottom, { className: "mychoice", createItem: createVehicle, formSteps: formSteps[mychoiceSdkComponents.InsuranceTypes.Car], itemCount: items.length, validateForm: validateForm, formIsValid: vehicleFormIsValid }))] }), localIndex !== mychoiceSdkComponents.defaultLocalIndex && (jsxRuntime.jsx("img", { className: "logo-for-partner", src: myChoicePartnerLogo, alt: "partner logo" }))] }));
951
1038
  };
952
1039
 
953
1040
  const TabDriver = ({ createItem, readOnly }) => {
@@ -1235,6 +1322,7 @@ const SectionDriverInsurancePolicy = () => {
1235
1322
  const birthDate = birthYear && birthMonth && birthDay ? `${birthYear}-${birthMonth}-${birthDay}` : '';
1236
1323
  const { appConfigState: { appType }, } = mychoiceSdkStore.useStoreAppConfig();
1237
1324
  const mychoiceCls = mychoiceSdkComponents.isMyChoiceLike(appType) ? 'mychoice' : '';
1325
+ const isTheBig = appType === mychoiceSdkComponents.AppTypes.TheBig;
1238
1326
  const getPeriodOptions = (year, month) => {
1239
1327
  const options = [{ value: '', name: 'Date Period', disabled: true }];
1240
1328
  if (year && month) {
@@ -1366,7 +1454,7 @@ you had insurance. If this is correct, please continue with the form.`);
1366
1454
  };
1367
1455
  return (jsxRuntime.jsxs("div", { className: `form-section ${mychoiceCls}`, children: [jsxRuntime.jsxs("div", { className: "box-container", children: [jsxRuntime.jsx(DateSelectFormBox, { name: "listedYear", dateNames: ['listedYear', 'listedMonth'], onDateChange: handleListedDateChange, defaultValue: defaultListedDate, disabled: !listed, title: `When was ${firstName || driverNameDefault} first listed as a driver on a Canadian or US insurance policy?`, description: "The selection indicates what year the main driver was first listed on a Canadian or US insurance policy. If you do not remember your age, it is acceptable to provide a best estimate for the purposes of the policy or quote.", errorMessage: listed
1368
1456
  ? getDateErrorMessage(['01', listedMonth, listedYear], driverState.inValidation)
1369
- : '', error: driverState.inValidation, hintMessage: hintMessage, minDate: mychoiceSdkComponents.getMinDate(birthDate, firstLicenceAge) }), jsxRuntime.jsx(mychoiceSdkComponents.CheckboxForm, { name: "listed", label: "Never listed on an insurance policy", onChange: handleListedChange, defaultValue: !listed })] }), listed && (jsxRuntime.jsxs("div", { className: "box-container", children: [jsxRuntime.jsx(SelectFormBox, { name: "insuredDate", onChange: handleInsuredPeriodChange, options: getPeriodOptions(listedYear, listedMonth), defaultValue: insuredDate, disabled: !insured, title: `How long has ${firstName || driverNameDefault} been with their current insurance provider?`, description: "It is common for insurers to provide loyalty rewards or discounts for valued customers. Loyalty is a positive trait in the industry, and most insurance companies will want to provide some incentive for continued customer relationships through tangible policy rewards.", errorMessage: insured ? getErrorMessage(insuredDate, driverState.inValidation) : '', error: !insuredDate && driverState.inValidation }), jsxRuntime.jsx(mychoiceSdkComponents.CheckboxForm, { name: "insured", label: "Not currently insured", onChange: handleInsuredChange, defaultValue: !insured })] })), jsxRuntime.jsx(DateSelectFormBox, { name: "policyStart", dateNames: ['policyStartYear', 'policyStartMonth', 'policyStartDay'], onDateChange: handlePolicyStartDateChange, defaultValue: defaultPolicyStartDate, title: "What is the ideal start date for your new insurance policy?", description: "Select your preferred date for the beginning of your new insurance policy.For instance, you may set the start date for the day that your current insurance expires to ensure that you\u2019re continuously covered. Alternatively, select today's date for a quote or new policy.", errorMessage: getDateErrorMessage([policyStartDay || '', policyStartMonth || '', policyStartYear || ''], driverState.inValidation), error: driverState.inValidation, minDate: mychoiceSdkComponents.addDaysToDate('', 1), maxDate: mychoiceSdkComponents.addDaysToDate('', 60), isDay: true })] }));
1457
+ : '', error: driverState.inValidation, hintMessage: hintMessage, minDate: mychoiceSdkComponents.getMinDate(birthDate, firstLicenceAge) }), jsxRuntime.jsx(mychoiceSdkComponents.CheckboxForm, { name: "listed", label: "Never listed on an insurance policy", onChange: handleListedChange, defaultValue: !listed })] }), listed && (jsxRuntime.jsxs("div", { className: "box-container", children: [jsxRuntime.jsx(SelectFormBox, { name: "insuredDate", onChange: handleInsuredPeriodChange, options: getPeriodOptions(listedYear, listedMonth), defaultValue: insuredDate, disabled: !insured, title: `How long has ${firstName || driverNameDefault} been with their current insurance provider?`, description: "It is common for insurers to provide loyalty rewards or discounts for valued customers. Loyalty is a positive trait in the industry, and most insurance companies will want to provide some incentive for continued customer relationships through tangible policy rewards.", errorMessage: insured ? getErrorMessage(insuredDate, driverState.inValidation) : '', error: !insuredDate && driverState.inValidation }), jsxRuntime.jsx(mychoiceSdkComponents.CheckboxForm, { name: "insured", label: "Not currently insured", onChange: handleInsuredChange, defaultValue: !insured })] })), !isTheBig && (jsxRuntime.jsx(DateSelectFormBox, { name: "policyStart", dateNames: ['policyStartYear', 'policyStartMonth', 'policyStartDay'], onDateChange: handlePolicyStartDateChange, defaultValue: defaultPolicyStartDate, title: "What is the ideal start date for your new insurance policy?", description: "Select your preferred date for the beginning of your new insurance policy. For instance, you may set the start date for the day that your current insurance expires to ensure that you\u2019re continuously covered. Alternatively, select today's date for a quote or new policy.", errorMessage: getDateErrorMessage([policyStartDay || '', policyStartMonth || '', policyStartYear || ''], driverState.inValidation), error: driverState.inValidation, minDate: mychoiceSdkComponents.addDaysToDate('', 1), maxDate: mychoiceSdkComponents.addDaysToDate('', 60), isDay: true }))] }));
1370
1458
  };
1371
1459
 
1372
1460
  const SectionDriverCancellation = () => {
@@ -1963,8 +2051,24 @@ const SectionQuoteRecalc$1 = () => {
1963
2051
  const { appConfigState: { appType }, } = mychoiceSdkStore.useStoreAppConfig();
1964
2052
  const isTheBig = appType === mychoiceSdkComponents.AppTypes.TheBig;
1965
2053
  const mychoiceCls = mychoiceSdkComponents.isMyChoiceLike(appType) ? 'mychoice' : '';
2054
+ const [isRecalcSubmitted, setIsRecalcSubmitted] = React.useState(false);
1966
2055
  const { vehicleState, dispatchVehicleState } = mychoiceSdkStore.useStoreFormCarVehicle();
1967
- const { comprehensive, collision, liability } = vehicleState.items[vehicleState.activeIndex];
2056
+ const { quoteState } = mychoiceSdkStore.useStoreFormCarQuote();
2057
+ const { comprehensive, collision, liability, accidentbenefits } = vehicleState.items[vehicleState.activeIndex];
2058
+ const { isAbReformActive } = mychoiceSdkStore.useAbReform();
2059
+ const recalcInitiatedRef = React.useRef(false);
2060
+ const prevRequestDateRef = React.useRef(quoteState.requestDate);
2061
+ React.useEffect(() => {
2062
+ if (recalcInitiatedRef.current
2063
+ && quoteState.requestDate
2064
+ && quoteState.requestDate !== prevRequestDateRef.current) {
2065
+ setIsRecalcSubmitted(true);
2066
+ recalcInitiatedRef.current = false;
2067
+ prevRequestDateRef.current = quoteState.requestDate;
2068
+ }
2069
+ }, [quoteState.requestDate]);
2070
+ const hasAbChanges = accidentbenefits.baseCoverage !== 'minimum_required'
2071
+ || accidentbenefits.additionalCoverages.length > 0;
1968
2072
  const handleComprehensiveChange = ({ value }) => {
1969
2073
  dispatchVehicleState({
1970
2074
  type: mychoiceSdkStore.StoreFormCarVehicleActionTypes.FormCarComprehensiveCoverageSelect,
@@ -1983,7 +2087,34 @@ const SectionQuoteRecalc$1 = () => {
1983
2087
  payload: { coverage: true, limit: value },
1984
2088
  });
1985
2089
  };
1986
- return (jsxRuntime.jsxs("div", { className: "form-container", children: [jsxRuntime.jsx(TabVehicle, { readOnly: true }), jsxRuntime.jsxs("div", { className: `form-section edit-recalc-container ${mychoiceCls}`, children: [jsxRuntime.jsx(SelectFormBox, { options: mychoiceSdkComponents.coverageOptions, name: "comprehensive-coverage", onChange: handleComprehensiveChange, defaultValue: getSelectedOption(mychoiceSdkComponents.coverageOptions, comprehensive.coverage ? comprehensive.deductible : 0), title: "Comprehensive coverage", description: "This deductible is the amount of money that you will pay out of your own pocket if your vehicle is damaged in events not covered by collision coverage. This includes events such as falling or flying objects, vandalism, and theft. Your insurance company covers the cost of repair minus the deductible chosen.", placeholder: "Select from the list", autoSelectIfValueIsOutOfOptions: false }), jsxRuntime.jsx(SelectFormBox, { options: mychoiceSdkComponents.coverageOptions, name: "collision-coverage", onChange: handleCollisionChange, defaultValue: getSelectedOption(mychoiceSdkComponents.coverageOptions, collision.coverage ? collision.deductible : 0), title: "Collision coverage", description: "This deductible is the specific dollar amount you will pay out of your own pocket if your vehicle is damaged in an accident. Your insurance company covers the remaining amount.", placeholder: "Select from the list", autoSelectIfValueIsOutOfOptions: false }), jsxRuntime.jsx(SelectFormBox, { options: mychoiceSdkComponents.liabilityOptions, name: "liability-limit", onChange: handleLiabilityChange, defaultValue: getSelectedOption(mychoiceSdkComponents.liabilityOptions, liability.coverage ? liability.limit : 1000000), title: "Third Party Liability", description: "This protects you from lawsuits resulting from accidents causing bodily injury or death to others or property damage.", placeholder: "Select from the list", autoSelectIfValueIsOutOfOptions: false }), jsxRuntime.jsx(BlockSubmit$2, { className: `${isTheBig ? 'thebig-bold' : 'mychoice'} recalculate`, label: "Recalculate Quote", buttonSize: mychoiceSdkComponents.SizeTypes.Medium, isRecalc: true }), isTheBig ? jsxRuntime.jsx(BlockEndorsements, {}) : jsxRuntime.jsx(BlockMCEndorsements, {})] })] }));
2090
+ const [modalOpen, setModalOpen] = React.useState(false);
2091
+ const handleModalApply = (selected) => {
2092
+ dispatchVehicleState({
2093
+ type: mychoiceSdkStore.StoreFormCarVehicleActionTypes.FormCarAccidentBenefitsAdditionalCoveragesSet,
2094
+ payload: { additionalCoverages: selected },
2095
+ });
2096
+ if (selected.includes('med_rehab_cat_1m')) {
2097
+ dispatchVehicleState({
2098
+ type: mychoiceSdkStore.StoreFormCarVehicleActionTypes.FormCarAccidentBenefitsBaseCoverageSelect,
2099
+ payload: { baseCoverage: 'med_rehab_cat_1m' },
2100
+ });
2101
+ }
2102
+ else {
2103
+ dispatchVehicleState({
2104
+ type: mychoiceSdkStore.StoreFormCarVehicleActionTypes.FormCarAccidentBenefitsBaseCoverageSelect,
2105
+ payload: { baseCoverage: 'minimum_required' },
2106
+ });
2107
+ }
2108
+ setModalOpen(false);
2109
+ };
2110
+ return (jsxRuntime.jsxs("div", { className: "form-container", children: [jsxRuntime.jsx(TabVehicle, { readOnly: true }), jsxRuntime.jsxs("div", { className: `form-section edit-recalc-container ${mychoiceCls}`, children: [jsxRuntime.jsx(SelectFormBox, { options: mychoiceSdkComponents.coverageOptions, name: "comprehensive-coverage", onChange: handleComprehensiveChange, defaultValue: getSelectedOption(mychoiceSdkComponents.coverageOptions, comprehensive.coverage ? comprehensive.deductible : 0), title: "Comprehensive coverage", description: "This deductible is the amount of money that you will pay out of your own pocket if your vehicle is damaged in events not covered by collision coverage. This includes events such as falling or flying objects, vandalism, and theft. Your insurance company covers the cost of repair minus the deductible chosen.", placeholder: "Select from the list", autoSelectIfValueIsOutOfOptions: false }), jsxRuntime.jsx(SelectFormBox, { options: mychoiceSdkComponents.coverageOptions, name: "collision-coverage", onChange: handleCollisionChange, defaultValue: getSelectedOption(mychoiceSdkComponents.coverageOptions, collision.coverage ? collision.deductible : 0), title: "Collision coverage", description: "This deductible is the specific dollar amount you will pay out of your own pocket if your vehicle is damaged in an accident. Your insurance company covers the remaining amount.", placeholder: "Select from the list", autoSelectIfValueIsOutOfOptions: false }), jsxRuntime.jsx(SelectFormBox, { options: mychoiceSdkComponents.liabilityOptions, name: "liability-limit", onChange: handleLiabilityChange, defaultValue: getSelectedOption(mychoiceSdkComponents.liabilityOptions, liability.coverage ? liability.limit : 1000000), title: "Third Party Liability", description: "This protects you from lawsuits resulting from accidents causing bodily injury or death to others or property damage.", placeholder: "Select from the list", autoSelectIfValueIsOutOfOptions: false }), isAbReformActive && isTheBig && (jsxRuntime.jsxs("div", { className: "accident-benefits-container", children: [jsxRuntime.jsxs("div", { className: "ab-notice-banner", children: [jsxRuntime.jsx("strong", { children: "Important Notice \u2013 Accident Benefits Changes (Effective July 1, 2026)" }), jsxRuntime.jsx("p", { children: "As of July 1, 2026, significant changes have been made to the Accident Benefits coverage in Ontario. Many benefits that were previously included are now optional and must be selected based on your individual needs." })] }), jsxRuntime.jsxs("div", { className: "ab-option-selector", onClick: () => setModalOpen(true), children: [jsxRuntime.jsxs("div", { className: "ab-option-selector-content", children: [jsxRuntime.jsx("strong", { children: "Standard Mandatory Accident Benefits + Self-Selected Optional Enhancements" }), jsxRuntime.jsx("p", { children: "Base coverage with flexibility to select additional benefits" })] }), jsxRuntime.jsx("span", { className: "ab-option-selector-arrow", children: "\u203A" })] }), modalOpen && (jsxRuntime.jsx(AccidentBenefitsModal, { selectedCoverages: accidentbenefits.additionalCoverages, onApply: handleModalApply, onCancel: () => setModalOpen(false) }))] })), jsxRuntime.jsx(BlockSubmit$2, { className: `${isTheBig ? 'thebig-bold' : 'mychoice'} recalculate`, label: "Recalculate Quote", buttonSize: mychoiceSdkComponents.SizeTypes.Medium, isRecalc: true, onSubmitClick: () => {
2111
+ recalcInitiatedRef.current = true;
2112
+ setIsRecalcSubmitted(false);
2113
+ } }), isAbReformActive && isTheBig && isRecalcSubmitted && (jsxRuntime.jsx("p", { className: "accident-benefits-recalc-message", children: quoteState.items?.length
2114
+ ? hasAbChanges
2115
+ ? 'Your premium has been recalculated. Your broker has been notified and will contact you to discuss your Accident Benefits selections.'
2116
+ : 'Your premium has been recalculated.'
2117
+ : 'We could not calculate a premium for the selected Accident Benefits options. Please speak to your broker to review the implications of these changes.' })), isTheBig ? jsxRuntime.jsx(BlockEndorsements, {}) : jsxRuntime.jsx(BlockMCEndorsements, {})] })] }));
1987
2118
  };
1988
2119
 
1989
2120
  const lockEmoji$1 = '\u{1F512}';
@@ -2062,12 +2193,36 @@ const PageCarQuote = () => {
2062
2193
  const { appLoaderState } = mychoiceSdkStore.useStoreAppLoader();
2063
2194
  const { appDeviceType } = mychoiceSdkStore.useStoreDeviceType();
2064
2195
  const { appConfigState: { localIndex, insuranceType }, } = mychoiceSdkStore.useStoreAppConfig();
2196
+ const { isAbReformActive } = mychoiceSdkStore.useAbReform();
2065
2197
  const { items, quoteConfirm } = quoteState;
2066
2198
  const isTheBig = appType === mychoiceSdkComponents.AppTypes.TheBig;
2067
2199
  const hasConfirmStep = !!(items?.length && !isTheBig && items[0]?.confirmQuote && quoteConfirm);
2068
2200
  const quoteItems = hasConfirmStep ? items?.slice(0, 2) : items;
2069
2201
  const showContentWhileLoading = hasConfirmStep ? true : !appLoaderState.isOpen;
2070
2202
  const navigate = reactRouterDom.useNavigate();
2203
+ const [recalcFailed, setRecalcFailed] = React.useState(false);
2204
+ const prevRequestDateRef = React.useRef(undefined);
2205
+ const lastSuccessfulItemsRef = React.useRef(undefined);
2206
+ if (items?.length) {
2207
+ lastSuccessfulItemsRef.current = items;
2208
+ }
2209
+ const displayBestItem = recalcFailed ? lastSuccessfulItemsRef.current?.[0] : items?.[0];
2210
+ const lastSuccessfulItems = lastSuccessfulItemsRef.current;
2211
+ const displayItems = recalcFailed
2212
+ ? (hasConfirmStep ? lastSuccessfulItems?.slice(0, 2) : lastSuccessfulItems)
2213
+ : quoteItems;
2214
+ React.useEffect(() => {
2215
+ if (!quoteState.requestDate)
2216
+ return;
2217
+ if (prevRequestDateRef.current === undefined) {
2218
+ prevRequestDateRef.current = quoteState.requestDate;
2219
+ return;
2220
+ }
2221
+ if (quoteState.requestDate !== prevRequestDateRef.current) {
2222
+ setRecalcFailed(!quoteState.items?.length);
2223
+ prevRequestDateRef.current = quoteState.requestDate;
2224
+ }
2225
+ }, [quoteState.requestDate]);
2071
2226
  mychoiceSdkComponents.useEffectOnce(() => {
2072
2227
  if (!vehicleFormIsValid) {
2073
2228
  vehicleFormValidate();
@@ -2089,14 +2244,14 @@ const PageCarQuote = () => {
2089
2244
  navigate(`/${localIndex || mychoiceSdkComponents.defaultLocalIndex}/${insuranceType}/offer`);
2090
2245
  }
2091
2246
  });
2092
- return (jsxRuntime.jsx("div", { className: `quote-page-content ${hasConfirmStep ? 'confirm-step' : ''}`, children: showContentWhileLoading && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [hasConfirmStep && jsxRuntime.jsx(BlockConfirmHeading, {}), jsxRuntime.jsxs("div", { className: "form-section-container", children: [appDeviceType === mychoiceSdkComponents.DeviceTypes.Mobile && !hasConfirmStep && (jsxRuntime.jsx(jsxRuntime.Fragment, { children: !!items?.length ? (jsxRuntime.jsx(jsxRuntime.Fragment, { children: !quoteState.showCallMessage ? (jsxRuntime.jsx("div", { className: "offer-container", children: jsxRuntime.jsx(OfferSection, { isBestOffer: true, offerCompany: items[0]?.company, brokerCompany: items[0]?.brokerProfile, offerPrice: {
2093
- monthly: items[0]?.priceMonthly,
2094
- yearly: items[0]?.priceYearly,
2247
+ return (jsxRuntime.jsx("div", { className: `quote-page-content ${hasConfirmStep ? 'confirm-step' : ''}`, children: showContentWhileLoading && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [hasConfirmStep && jsxRuntime.jsx(BlockConfirmHeading, {}), jsxRuntime.jsxs("div", { className: "form-section-container", children: [appDeviceType === mychoiceSdkComponents.DeviceTypes.Mobile && !hasConfirmStep && (jsxRuntime.jsx(jsxRuntime.Fragment, { children: !!(items?.length || recalcFailed) ? (jsxRuntime.jsx(jsxRuntime.Fragment, { children: !quoteState.showCallMessage ? (jsxRuntime.jsx("div", { className: `offer-container${recalcFailed ? ' greyed-out' : ''}`, children: jsxRuntime.jsx(OfferSection, { isBestOffer: true, offerCompany: displayBestItem?.company, brokerCompany: displayBestItem?.brokerProfile, offerPrice: {
2248
+ monthly: displayBestItem?.priceMonthly,
2249
+ yearly: displayBestItem?.priceYearly,
2095
2250
  }, operationHours: {
2096
- saturdayHours: items[0]?.brokerProfile.hoursSaturday,
2097
- sundayHours: items[0]?.brokerProfile.hoursSunday,
2098
- weekdayHours: items[0]?.brokerProfile.hoursWorkdays,
2099
- }, phoneNumber: formatPhoneObject(items[0]?.brokerProfile.phone), redirectUrl: items[0]?.brokerProfile.redirectUrl || '', coverages: items[0]?.coverages, nonStandardCoverages: items[0]?.nonStandardCoverages, brokerIntegration: items[0]?.brokerIntegration }) })) : (jsxRuntime.jsx(SplashScreen$2, {})) })) : (jsxRuntime.jsx(NoQuotesMessage, { type: "car" })) })), (!hasConfirmStep || appDeviceType !== mychoiceSdkComponents.DeviceTypes.Mobile) && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(SectionQuoteEdit$2, {}), (isTheBig || !items[0]?.coverages) && jsxRuntime.jsx(SectionQuoteRecalc$1, {})] }))] }), appDeviceType !== mychoiceSdkComponents.DeviceTypes.Mobile && quoteState.showCallMessage && jsxRuntime.jsx(SplashScreen$2, {}), !quoteState.showCallMessage && (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs("div", { style: { position: 'relative', width: '100%' }, children: [hasConfirmStep && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("div", { className: "offer-container", children: jsxRuntime.jsx(SectionConfirm, {}) }), appDeviceType === mychoiceSdkComponents.DeviceTypes.Mobile && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(SectionQuoteEdit$2, {}), (isTheBig || !items[0]?.coverages) && jsxRuntime.jsx(SectionQuoteRecalc$1, {})] }))] })), jsxRuntime.jsx("div", { className: `offer-container ${hasConfirmStep ? 'blur' : ''}`, children: !!items?.length ? (quoteItems.map(({ company, brokerProfile, priceMonthly, priceYearly, coverages, nonStandardCoverages, brokerIntegration, }, index) => (jsxRuntime.jsx("div", { children: (appDeviceType !== mychoiceSdkComponents.DeviceTypes.Mobile ||
2251
+ saturdayHours: displayBestItem?.brokerProfile.hoursSaturday,
2252
+ sundayHours: displayBestItem?.brokerProfile.hoursSunday,
2253
+ weekdayHours: displayBestItem?.brokerProfile.hoursWorkdays,
2254
+ }, phoneNumber: formatPhoneObject(displayBestItem?.brokerProfile.phone ?? ''), redirectUrl: displayBestItem?.brokerProfile.redirectUrl || '', coverages: displayBestItem?.coverages, nonStandardCoverages: displayBestItem?.nonStandardCoverages, brokerIntegration: displayBestItem?.brokerIntegration }) })) : (jsxRuntime.jsx(SplashScreen$2, {})) })) : (jsxRuntime.jsx(NoQuotesMessage, { type: "car" })) })), (!hasConfirmStep || appDeviceType !== mychoiceSdkComponents.DeviceTypes.Mobile) && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(SectionQuoteEdit$2, {}), (isTheBig || !items[0]?.coverages) && jsxRuntime.jsx(SectionQuoteRecalc$1, {})] }))] }), appDeviceType !== mychoiceSdkComponents.DeviceTypes.Mobile && quoteState.showCallMessage && jsxRuntime.jsx(SplashScreen$2, {}), !quoteState.showCallMessage && (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs("div", { style: { position: 'relative', width: '100%' }, children: [isAbReformActive && isTheBig && (jsxRuntime.jsxs("div", { className: "ab-disclaimer", children: [jsxRuntime.jsx("strong", { children: "Important Disclaimer" }), jsxRuntime.jsxs("p", { children: ["Due to the changes to the Statutory Accident Benefit Coverage, effective July 1, 2026", ' ', jsxRuntime.jsx("a", { href: "https://www.fsrao.ca/industry/auto-insurance/changes-statutory-accident-benefits-coverage-ontario-july-1-2026#:~:text=July%201%2C%202026-,Changes%20in%20Statutory%20Accident%20Benefits%20coverage%20in%20Ontario%20on%20July,fits%20their%20needs%20and%20budgets.", target: "_blank", rel: "noreferrer noopener", children: "(Government of Ontario website)" }), ", please consider the individual circumstances for all drivers quoted before making your selections. Speak with your insurance broker if you have questions or need help understanding your options. Your Accident Benefits coverage selections will impact both your quoted premium and the coverage available to drivers on the quote."] })] })), hasConfirmStep && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("div", { className: "offer-container", children: jsxRuntime.jsx(SectionConfirm, {}) }), appDeviceType === mychoiceSdkComponents.DeviceTypes.Mobile && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(SectionQuoteEdit$2, {}), (isTheBig || !items[0]?.coverages) && jsxRuntime.jsx(SectionQuoteRecalc$1, {})] }))] })), jsxRuntime.jsx("div", { className: `offer-container ${hasConfirmStep ? 'blur' : ''} ${recalcFailed ? 'greyed-out' : ''}`, children: !!(items?.length || recalcFailed) ? ((displayItems ?? []).map(({ company, brokerProfile, priceMonthly, priceYearly, coverages, nonStandardCoverages, brokerIntegration, }, index) => (jsxRuntime.jsx("div", { children: (appDeviceType !== mychoiceSdkComponents.DeviceTypes.Mobile ||
2100
2255
  (appDeviceType === mychoiceSdkComponents.DeviceTypes.Mobile && index !== 0)) && (jsxRuntime.jsx(OfferSection, { isBestOffer: index === 0, isFirstOffer: index === 0, offerCompany: company, brokerCompany: brokerProfile, offerPrice: {
2101
2256
  monthly: priceMonthly,
2102
2257
  yearly: priceYearly,
@@ -3976,8 +4131,6 @@ var SGICanada = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPoAAABkCAYAAACvg
3976
4131
 
3977
4132
  var Economical = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPoAAABkCAYAAACvgC0OAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDcuMi1jMDAwIDc5LjFiNjVhNzliNCwgMjAyMi8wNi8xMy0yMjowMTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIzLjUgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODgyOEU0QUM5QzExRUQ4OTBDQjlBMDhFODMyQkU4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjAxODgyOEU1QUM5QzExRUQ4OTBDQjlBMDhFODMyQkU4Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MDE4ODI4RTJBQzlDMTFFRDg5MENCOUEwOEU4MzJCRTgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MDE4ODI4RTNBQzlDMTFFRDg5MENCOUEwOEU4MzJCRTgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4wFq6wAAAR9klEQVR42uxd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";
3978
4133
 
3979
- var Caa = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPoAAABkCAYAAACvgC0OAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDcuMi1jMDAwIDc5LjFiNjVhNzliNCwgMjAyMi8wNi8xMy0yMjowMTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIzLjUgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkQwMzhGQTdEQUM5QjExRURCQUQ5QTk4RTc4RDc2RDkxIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkQwMzhGQTdFQUM5QjExRURCQUQ5QTk4RTc4RDc2RDkxIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RDAzOEZBN0JBQzlCMTFFREJBRDlBOThFNzhENzZEOTEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RDAzOEZBN0NBQzlCMTFFREJBRDlBOThFNzhENzZEOTEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4HY7nfAAAU30lEQVR42uxd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";
3980
-
3981
4134
  var Coachman = "data:image/png;base64,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";
3982
4135
 
3983
4136
  var Pembridge = "data:image/png;base64,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";
@@ -3999,7 +4152,7 @@ const ProviderImageFooter = () => {
3999
4152
  if (insuranceType === mychoiceSdkComponents.InsuranceTypes.Life) {
4000
4153
  return (jsxRuntime.jsxs("div", { className: "footer-image-section", children: [jsxRuntime.jsx("div", { className: "providers-title", children: "We compare rates from Canada's top providers, including:" }), jsxRuntime.jsxs("div", { className: "providers-carousel life", children: [jsxRuntime.jsx("img", { height: "60", src: SunLife, alt: "Sun Life" }), jsxRuntime.jsx("img", { height: "60", src: Manulife, alt: "Manulife" }), jsxRuntime.jsx("img", { height: "60", src: IAFinancialGroup, alt: "iA Financial Group" }), jsxRuntime.jsx("img", { height: "60", src: Desjardins, alt: "Desjardins" }), jsxRuntime.jsx("img", { height: "60", src: CanadaLife, alt: "Canada Life" })] })] }));
4001
4154
  }
4002
- return (jsxRuntime.jsxs("div", { className: "footer-image-section", children: [jsxRuntime.jsx("div", { className: "providers-title", children: "We compare rates from Canada's top providers, including:" }), jsxRuntime.jsxs("div", { className: "providers-carousel", children: [jsxRuntime.jsx("img", { height: "70", src: SGICanada, alt: "S.G.I. Canada" }), insuranceType === mychoiceSdkComponents.InsuranceTypes.Car && (jsxRuntime.jsx("img", { height: "50", src: Pembridge, alt: "Pembridge", style: { margin: '0 20px 15px 20px' } })), insuranceType === mychoiceSdkComponents.InsuranceTypes.Home && (jsxRuntime.jsx("img", { height: "50", src: SquareOne, alt: "Square One", style: { margin: '0 20px 15px 20px' } })), jsxRuntime.jsx("img", { height: "70", src: Economical, alt: "Economical insurance" }), jsxRuntime.jsx("img", { height: "70", src: Caa, alt: "CAA" }), jsxRuntime.jsx("img", { height: "70", src: Coachman, alt: "Coachman" })] })] }));
4155
+ return (jsxRuntime.jsxs("div", { className: "footer-image-section", children: [jsxRuntime.jsx("div", { className: "providers-title", children: "We compare rates from Canada's top providers, including:" }), jsxRuntime.jsxs("div", { className: "providers-carousel", children: [jsxRuntime.jsx("img", { height: "70", src: SGICanada, alt: "S.G.I. Canada" }), insuranceType === mychoiceSdkComponents.InsuranceTypes.Car && (jsxRuntime.jsx("img", { height: "50", src: Pembridge, alt: "Pembridge", style: { margin: '0 20px 15px 20px' } })), insuranceType === mychoiceSdkComponents.InsuranceTypes.Home && (jsxRuntime.jsx("img", { height: "50", src: SquareOne, alt: "Square One", style: { margin: '0 20px 15px 20px' } })), jsxRuntime.jsx("img", { height: "70", src: Economical, alt: "Economical insurance" }), jsxRuntime.jsx("img", { height: "70", src: Coachman, alt: "Coachman" })] })] }));
4003
4156
  };
4004
4157
 
4005
4158
  const AppModalWrapper = () => {