adp-web-components 0.3.13 → 0.3.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/{add-icon-BaoMAIgg.js → add-icon-BklgM02f.js} +1 -1
- package/dist/cjs/{app-globals-DBRBLgev.js → app-globals-XGpRBTr6.js} +1 -1
- package/dist/cjs/{arrow-icon-CJX1aUJ8.js → arrow-icon-yMlETDbD.js} +1 -1
- package/dist/cjs/{arrow-up-icon-B3Z5Myqt.js → arrow-up-icon-BLo1aQC2.js} +1 -1
- package/dist/cjs/{form-dialog_13.cjs.entry.js → branch-slot-dropdown_15.cjs.entry.js} +578 -41
- package/dist/cjs/{calendar-days-icon-CsHz2cgV.js → calendar-days-icon-Cf14ROXV.js} +1 -1
- package/dist/cjs/{check-icon-CqTKjw2o.js → check-icon-DaQxP2EY.js} +1 -1
- package/dist/cjs/dead-stock-lookup_3.cjs.entry.js +11 -11
- package/dist/cjs/{decode-time-offset-DOSaziv5.js → decode-time-offset-DOUImlif.js} +1 -1
- package/dist/cjs/flexible-container.cjs.entry.js +4 -4
- package/dist/cjs/form-checkbox.cjs.entry.js +6 -6
- package/dist/cjs/form-date-picker.cjs.entry.js +8 -8
- package/dist/cjs/{form-error-message-K-KI154V.js → form-error-message-BtLdHgxO.js} +1 -1
- package/dist/cjs/{form-input-PYkIVe7J.js → form-input-BBY_3Qk7.js} +8 -6
- package/dist/cjs/{form-input-label-uhneFYXO.js → form-input-label-B4lkF89K.js} +1 -1
- package/dist/cjs/form-input_7.cjs.entry.js +26 -26
- package/dist/cjs/form-switch.cjs.entry.js +6 -6
- package/dist/cjs/form-time-picker.cjs.entry.js +9 -9
- package/dist/cjs/{functions-Bu1AQDD2.js → functions-BHYWCotp.js} +5 -11
- package/dist/cjs/general-form.cjs.entry.js +11 -11
- package/dist/cjs/general-inquiry-form.cjs.entry.js +11 -11
- package/dist/cjs/{get-language-from-url-p2OXldYh.js → get-language-from-url-DwOt9DVH.js} +5 -1
- package/dist/cjs/{get-local-language-BR0p0bBg.js → get-local-language-BSOLV9z2.js} +7 -3
- package/dist/cjs/{get-mock-files-Dljv5P4k.js → get-mock-files-Dv8XsTW8.js} +2 -2
- package/dist/cjs/{index-Bi6W8dMN.js → index-BdHAYIvO.js} +16 -0
- package/dist/cjs/information-table.cjs.entry.js +2 -2
- package/dist/cjs/{loader-icon-By94sKO7.js → loader-icon-aY56OHXW.js} +1 -1
- package/dist/cjs/loader.cjs.js +3 -3
- package/dist/cjs/loading-spinner.cjs.entry.js +2 -2
- package/dist/cjs/manufacturer-part-lookup.cjs.entry.js +4 -4
- package/dist/cjs/{mappers-DF2WCWpn.js → mappers-BlH-TAo7.js} +27 -5
- package/dist/cjs/{material-card-BqsZgRVE.js → material-card-D1UQcy6U.js} +1 -1
- package/dist/cjs/part-lookup.cjs.entry.js +3 -3
- package/dist/cjs/{qr-code-scan-B-8WHa22.js → qr-code-scan-CtKK6wLL.js} +1 -1
- package/dist/cjs/service-booking-form.cjs.entry.js +11 -11
- package/dist/cjs/shift-accordion.cjs.entry.js +2 -2
- package/dist/cjs/shift-checkbox.cjs.entry.js +4 -4
- package/dist/cjs/shift-components.cjs.js +3 -3
- package/dist/cjs/shift-slider.cjs.entry.js +2 -2
- package/dist/cjs/shift-switch.cjs.entry.js +3 -3
- package/dist/cjs/shift-tab-content.cjs.entry.js +2 -2
- package/dist/cjs/shift-tabs_2.cjs.entry.js +13 -13
- package/dist/cjs/ssc-lookup-form.cjs.entry.js +11 -11
- package/dist/cjs/test-drive-form.cjs.entry.js +11 -11
- package/dist/cjs/{triangle-alert-CN15U99s.js → triangle-alert-BjQBwsRv.js} +1 -1
- package/dist/cjs/{validation-jJwLyk27.js → validation-5ZUxalyW.js} +3 -1
- package/dist/cjs/{vehicle-accessories_7.cjs.entry.js → vehicle-accessories_8.cjs.entry.js} +418 -19
- package/dist/cjs/{vehicle-info-layout-sV6altzn.js → vehicle-info-layout-CRpL8UMY.js} +1 -1
- package/dist/cjs/vehicle-lookup.cjs.entry.js +9 -5
- package/dist/cjs/vehicle-quotation-form.cjs.entry.js +7 -7
- package/dist/cjs/{get-custom-classes-for-portal-NNOxAU3P.js → white-loader-CveXuRsH.js} +15 -15
- package/dist/collection/collection-manifest.json +3 -0
- package/dist/collection/components/components/empty.css +1 -1
- package/dist/collection/components/components/flexible-container.css +1 -1
- package/dist/collection/components/components/flexible-container.js +2 -2
- package/dist/collection/components/components/loading-spinner.js +1 -1
- package/dist/collection/components/components/shift-accordion.js +1 -1
- package/dist/collection/components/components/shift-checkbox.js +1 -1
- package/dist/collection/components/components/shift-portal.css +1 -1
- package/dist/collection/components/components/shift-select-dropdown.css +1 -1
- package/dist/collection/components/components/shift-select-dropdown.js +2 -2
- package/dist/collection/components/components/shift-select.css +1 -1
- package/dist/collection/components/components/shift-select.js +3 -3
- package/dist/collection/components/components/shift-slider.js +1 -1
- package/dist/collection/components/components/shift-switch.js +1 -1
- package/dist/collection/components/components/shift-tab-content.js +1 -1
- package/dist/collection/components/components/shift-tabs.js +2 -2
- package/dist/collection/components/form-elements/branch-slot-dropdown.css +1 -0
- package/dist/collection/components/form-elements/branch-slot-dropdown.js +405 -0
- package/dist/collection/components/form-elements/branch-slot-picker.css +1 -0
- package/dist/collection/components/form-elements/branch-slot-picker.js +921 -0
- package/dist/collection/components/form-elements/form-checkbox.js +1 -1
- package/dist/collection/components/form-elements/form-date-picker-legacy.js +4 -4
- package/dist/collection/components/form-elements/form-dialog.js +1 -1
- package/dist/collection/components/form-elements/form-file.js +22 -4
- package/dist/collection/components/form-elements/form-input.js +2 -2
- package/dist/collection/components/form-elements/form-inputs.css +1 -1
- package/dist/collection/components/form-elements/form-picker-input.js +2 -2
- package/dist/collection/components/form-elements/form-shadow-input.js +1 -1
- package/dist/collection/components/form-elements/form-stepper-control.js +2 -2
- package/dist/collection/components/form-elements/form-stepper-submit.js +2 -2
- package/dist/collection/components/form-elements/form-stepper.js +1 -1
- package/dist/collection/components/form-elements/form-structure-error.js +1 -1
- package/dist/collection/components/form-elements/form-submit.js +2 -2
- package/dist/collection/components/form-elements/form-switch.js +1 -1
- package/dist/collection/components/form-elements/form-text-area.js +2 -2
- package/dist/collection/components/form-elements/form-time-picker-legacy.js +5 -5
- package/dist/collection/components/form-elements/form-vin-input.js +2 -2
- package/dist/collection/components/forms/defaults/mappers.js +23 -1
- package/dist/collection/components/forms/defaults/validation.js +2 -1
- package/dist/collection/components/forms/general-form.js +2 -2
- package/dist/collection/components/forms/general-inquiry.js +2 -2
- package/dist/collection/components/forms/service-booking.js +2 -2
- package/dist/collection/components/forms/ssc-lookup.js +2 -2
- package/dist/collection/components/forms/test-drive.js +2 -2
- package/dist/collection/components/forms/vehicle-quotation.js +2 -2
- package/dist/collection/components/part-lookup/dead-stock-lookup.css +1 -1
- package/dist/collection/components/part-lookup/dead-stock-lookup.js +2 -2
- package/dist/collection/components/part-lookup/distributor-lookup.js +2 -2
- package/dist/collection/components/part-lookup/manufacturer-part-lookup.js +1 -1
- package/dist/collection/components/vehicle-lookup/components/CoverageTimeline.js +317 -0
- package/dist/collection/components/vehicle-lookup/vehicle-accessories.js +2 -2
- package/dist/collection/components/vehicle-lookup/vehicle-claimable-items.js +5 -5
- package/dist/collection/components/vehicle-lookup/vehicle-item-claim-form.js +7 -7
- package/dist/collection/components/vehicle-lookup/vehicle-lookup.js +6 -2
- package/dist/collection/components/vehicle-lookup/vehicle-sale-information.js +2 -2
- package/dist/collection/components/vehicle-lookup/vehicle-service-history.js +1 -1
- package/dist/collection/components/vehicle-lookup/vehicle-specification.js +1 -1
- package/dist/collection/components/vehicle-lookup/vehicle-warranty-timeline.css +1 -0
- package/dist/collection/components/vehicle-lookup/vehicle-warranty-timeline.js +467 -0
- package/dist/collection/components/vin-extractor/vin-extractor.js +1 -1
- package/dist/collection/features/form-hook/form-hook.js +4 -0
- package/dist/collection/features/form-hook/functions.js +2 -8
- package/dist/collection/features/form-hook/inputs/form-input.js +7 -5
- package/dist/collection/global/types/generated/vehicle-lookup/vehicle-extended-warranty-dto.js +1 -0
- package/dist/collection/locale-mapper.js +5 -1
- package/dist/collection/locales/vehicleLookup/warrantyTimeline/type.js +31 -0
- package/dist/collection/templates/vehicle-lookup/prototype-assets/extended-warranty/adp-logo.svg +11 -0
- package/dist/collection/templates/vehicle-lookup/warranty-mock-data.js +96 -1
- package/dist/components/branch-slot-dropdown.d.ts +11 -0
- package/dist/components/branch-slot-dropdown.js +5 -0
- package/dist/components/branch-slot-picker.d.ts +11 -0
- package/dist/components/branch-slot-picker.js +5 -0
- package/dist/components/dead-stock-lookup.js +1 -1
- package/dist/components/distributor-lookup.js +1 -1
- package/dist/components/flexible-container.js +1 -1
- package/dist/components/form-checkbox.js +1 -1
- package/dist/components/form-date-picker.js +1 -1
- package/dist/components/form-dialog.js +1 -1
- package/dist/components/form-file.js +1 -1
- package/dist/components/form-input-preview.js +1 -1
- package/dist/components/form-input.js +1 -1
- package/dist/components/form-phone-number.js +1 -1
- package/dist/components/form-picker-input.js +1 -1
- package/dist/components/form-select.js +1 -1
- package/dist/components/form-shadow-input.js +1 -1
- package/dist/components/form-stepper-control.js +1 -1
- package/dist/components/form-stepper-submit.js +1 -1
- package/dist/components/form-stepper.js +1 -1
- package/dist/components/form-structure-error.js +1 -1
- package/dist/components/form-structure.js +1 -1
- package/dist/components/form-submit.js +1 -1
- package/dist/components/form-switch.js +1 -1
- package/dist/components/form-text-area.js +1 -1
- package/dist/components/form-time-picker.js +1 -1
- package/dist/components/form-vin-input.js +1 -1
- package/dist/components/general-form.js +1 -1
- package/dist/components/general-inquiry-form.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/information-table.js +1 -1
- package/dist/components/loading-spinner.js +1 -1
- package/dist/components/manufacturer-lookup.js +1 -1
- package/dist/components/manufacturer-part-lookup.js +1 -1
- package/dist/components/{p-CKrwCtec.js → p--qz4ecXR.js} +1 -1
- package/dist/components/{p-BMxw31OW.js → p-3xgnJUhD.js} +1 -1
- package/dist/components/{p-DJ0awYVE.js → p-87NLGlyb.js} +1 -1
- package/dist/components/{p-dRP9cgZF.js → p-B2FtamaW.js} +1 -1
- package/dist/components/{p-Cl-rntc3.js → p-B47kSZHb.js} +1 -1
- package/dist/components/p-B7gfOpxv.js +5 -0
- package/dist/components/{p-CjByjVT0.js → p-B83lw3YO.js} +1 -1
- package/dist/components/p-B9ClwHPb.js +5 -0
- package/dist/components/p-B9_-Tb0H.js +5 -0
- package/dist/components/{p-CtyIp56a.js → p-BAtXT_Mt.js} +1 -1
- package/dist/components/p-BGX0qdUG.js +5 -0
- package/dist/components/{p-Hlqj6HsH.js → p-BPnD6Cqq.js} +1 -1
- package/dist/components/{p-BNs9PHd8.js → p-BQC1g-wS.js} +1 -1
- package/dist/components/p-B__72-PA.js +5 -0
- package/dist/components/{p-Wv20cFTm.js → p-BaKmifzr.js} +1 -1
- package/dist/components/{p-CRJSM0nN.js → p-BcDVkdxZ.js} +1 -1
- package/dist/components/{p-D-0CfzDk.js → p-ByA_B82T.js} +1 -1
- package/dist/components/p-C0JoH_yH.js +5 -0
- package/dist/components/{p-BjLQXN9e.js → p-C2RnTSH-.js} +1 -1
- package/dist/components/{p-B3Vlmu9F.js → p-C4ud82ie.js} +1 -1
- package/dist/components/p-CCuYl9VQ.js +5 -0
- package/dist/components/{p-BIeJEFM6.js → p-CDQ5F3Oe.js} +1 -1
- package/dist/components/{p-ubqjXh5U.js → p-CGJ8ndBw.js} +1 -1
- package/dist/components/p-CNcA_RyS.js +5 -0
- package/dist/components/{p-BcRom3sV.js → p-C_ZtLgwx.js} +1 -1
- package/dist/components/{p-BHYsBcpG.js → p-Cq13CFua.js} +1 -1
- package/dist/components/p-CzVOOo8C.js +5 -0
- package/dist/components/{p-B42vuL_p.js → p-D-6PSzhd.js} +1 -1
- package/dist/components/{p-DBErZTaY.js → p-D2H3RzIC.js} +1 -1
- package/dist/components/{p-CMgPnaDZ.js → p-DHaTQ9vT.js} +1 -1
- package/dist/components/{p-8EOK_QhL.js → p-DQGcS-zL.js} +1 -1
- package/dist/components/p-DQopO8HS.js +5 -0
- package/dist/components/p-DTk3bhGl.js +5 -0
- package/dist/components/p-Dal_X4-W.js +5 -0
- package/dist/components/{p-CoAe_PpX.js → p-DdB_zKQz.js} +1 -1
- package/dist/components/{p-BP6R1nYk.js → p-Dhi7g1w3.js} +1 -1
- package/dist/components/p-Dr_ggnvT.js +5 -0
- package/dist/components/{p-C55Gk63d.js → p-Dx0NcxCM.js} +1 -1
- package/dist/components/{p-50EIzP4j.js → p-HT-TmIJD.js} +1 -1
- package/dist/components/{p-BFAzCUQY.js → p-ZTI11kto.js} +1 -1
- package/dist/components/{p-DbAAihIH.js → p-a5fTeexp.js} +1 -1
- package/dist/components/{p-BDlZ35Dv.js → p-bOkg1-34.js} +1 -1
- package/dist/components/{p-DWGSY0dp.js → p-gzdpekMI.js} +1 -1
- package/dist/components/{p-DNZ31iYw.js → p-pIanEonc.js} +1 -1
- package/dist/components/{p-BDHTK4yJ.js → p-qGX3WTkQ.js} +1 -1
- package/dist/components/{p-CnZZ3ASF.js → p-qs0MTheD.js} +1 -1
- package/dist/components/{p-CD1XArUc.js → p-txgHrQYx.js} +1 -1
- package/dist/components/{p-BsgLxjfx.js → p-v_TjAHaO.js} +1 -1
- package/dist/components/part-lookup.js +1 -1
- package/dist/components/service-booking-form.js +1 -1
- package/dist/components/shift-accordion.js +1 -1
- package/dist/components/shift-checkbox.js +1 -1
- package/dist/components/shift-portal.js +1 -1
- package/dist/components/shift-select-dropdown.js +1 -1
- package/dist/components/shift-select.js +1 -1
- package/dist/components/shift-slider.js +1 -1
- package/dist/components/shift-switch.js +1 -1
- package/dist/components/shift-tab-content.js +1 -1
- package/dist/components/shift-tabs.js +1 -1
- package/dist/components/ssc-lookup-form.js +1 -1
- package/dist/components/test-drive-form.js +1 -1
- package/dist/components/vehicle-accessories.js +1 -1
- package/dist/components/vehicle-claimable-items.js +1 -1
- package/dist/components/vehicle-item-claim-form.js +1 -1
- package/dist/components/vehicle-lookup.js +1 -1
- package/dist/components/vehicle-paint-thickness.js +1 -1
- package/dist/components/vehicle-quotation-form.js +1 -1
- package/dist/components/vehicle-sale-information.js +1 -1
- package/dist/components/vehicle-service-history.js +1 -1
- package/dist/components/vehicle-specification.js +1 -1
- package/dist/components/vehicle-warranty-details.js +1 -1
- package/dist/components/vehicle-warranty-timeline.d.ts +11 -0
- package/dist/components/vehicle-warranty-timeline.js +5 -0
- package/dist/components/vin-extractor.js +1 -1
- package/dist/esm/{add-icon-DxQVyX6U.js → add-icon-DHh6DJXR.js} +1 -1
- package/dist/esm/{app-globals-ci3rJxmu.js → app-globals-CusTGK9D.js} +1 -1
- package/dist/esm/{arrow-icon-DRTeN2D5.js → arrow-icon-DziuNOTp.js} +1 -1
- package/dist/esm/{arrow-up-icon-FAYFxG6c.js → arrow-up-icon-Dw_d-rG9.js} +1 -1
- package/dist/esm/{form-dialog_13.entry.js → branch-slot-dropdown_15.entry.js} +575 -40
- package/dist/esm/{calendar-days-icon-BOy0a_W-.js → calendar-days-icon-CnASOv7M.js} +1 -1
- package/dist/esm/{check-icon-BYK1ESZG.js → check-icon-BZQF4tzH.js} +1 -1
- package/dist/esm/dead-stock-lookup_3.entry.js +11 -11
- package/dist/esm/{decode-time-offset-ChO_PV6l.js → decode-time-offset-Cib1aJfV.js} +1 -1
- package/dist/esm/flexible-container.entry.js +4 -4
- package/dist/esm/form-checkbox.entry.js +6 -6
- package/dist/esm/form-date-picker.entry.js +8 -8
- package/dist/esm/{form-error-message-YvMHko71.js → form-error-message-DWl6p6Dz.js} +1 -1
- package/dist/esm/{form-input-DAgayhNz.js → form-input-B8SwfkAd.js} +8 -6
- package/dist/esm/{form-input-label-cuvgzRcH.js → form-input-label-6blOw1BN.js} +1 -1
- package/dist/esm/form-input_7.entry.js +25 -25
- package/dist/esm/form-switch.entry.js +6 -6
- package/dist/esm/form-time-picker.entry.js +9 -9
- package/dist/esm/{functions-DHzedl_R.js → functions-BObezuTv.js} +5 -11
- package/dist/esm/general-form.entry.js +11 -11
- package/dist/esm/general-inquiry-form.entry.js +11 -11
- package/dist/esm/{get-language-from-url-U4hZ4dwn.js → get-language-from-url-fV-K15uy.js} +5 -1
- package/dist/esm/{get-local-language-TRD6vPH7.js → get-local-language-DcxL5hdi.js} +7 -3
- package/dist/esm/{get-mock-files-K2mWecRb.js → get-mock-files-IEjS5G9N.js} +2 -2
- package/dist/esm/{index-Cg4V9l26.js → index-CteZTPhq.js} +16 -1
- package/dist/esm/information-table.entry.js +2 -2
- package/dist/esm/{loader-icon-B2ls1yXl.js → loader-icon-BvAmA41s.js} +1 -1
- package/dist/esm/loader.js +4 -4
- package/dist/esm/loading-spinner.entry.js +2 -2
- package/dist/esm/manufacturer-part-lookup.entry.js +4 -4
- package/dist/esm/{mappers-CeTQZn37.js → mappers-9IKbvPiR.js} +27 -5
- package/dist/esm/{material-card-BMtefyp-.js → material-card-jbQd-0as.js} +1 -1
- package/dist/esm/part-lookup.entry.js +3 -3
- package/dist/esm/{qr-code-scan-CktgNBSD.js → qr-code-scan-B1nViqZl.js} +1 -1
- package/dist/esm/service-booking-form.entry.js +11 -11
- package/dist/esm/shift-accordion.entry.js +2 -2
- package/dist/esm/shift-checkbox.entry.js +4 -4
- package/dist/esm/shift-components.js +4 -4
- package/dist/esm/shift-slider.entry.js +2 -2
- package/dist/esm/shift-switch.entry.js +3 -3
- package/dist/esm/shift-tab-content.entry.js +2 -2
- package/dist/esm/shift-tabs_2.entry.js +13 -13
- package/dist/esm/ssc-lookup-form.entry.js +11 -11
- package/dist/esm/test-drive-form.entry.js +11 -11
- package/dist/esm/{triangle-alert-D4H9aWiT.js → triangle-alert-Brtqhx2d.js} +1 -1
- package/dist/esm/{validation-oieVWBn1.js → validation-lB1iHxfZ.js} +3 -2
- package/dist/esm/{vehicle-accessories_7.entry.js → vehicle-accessories_8.entry.js} +418 -20
- package/dist/esm/{vehicle-info-layout-DQ12Civq.js → vehicle-info-layout-Dmx94GLp.js} +1 -1
- package/dist/esm/vehicle-lookup.entry.js +9 -5
- package/dist/esm/vehicle-quotation-form.entry.js +7 -7
- package/dist/esm/{get-custom-classes-for-portal-C4LvwyrX.js → white-loader-B3tJFuNO.js} +15 -15
- package/dist/integration-manifest.json +66 -2
- package/dist/locales/vehicleLookup/warrantyTimeline/ar.json +25 -0
- package/dist/locales/vehicleLookup/warrantyTimeline/en.json +25 -0
- package/dist/locales/vehicleLookup/warrantyTimeline/ku.json +25 -0
- package/dist/locales/vehicleLookup/warrantyTimeline/ru.json +25 -0
- package/dist/locales/vehicleLookup/warrantyTimeline/type.ts +29 -0
- package/dist/mocks/generated/broker-dealer/vehicle-lookup.json +19 -1
- package/dist/mocks/generated/edge-cases/vehicle-lookup.json +57 -0
- package/dist/mocks/generated/standard-dealer/vehicle-lookup.json +27 -2
- package/dist/shift-components/{p-960fedbb.entry.js → p-088c8e4c.entry.js} +1 -1
- package/dist/shift-components/{p-3fcb1657.entry.js → p-12f36d97.entry.js} +1 -1
- package/dist/shift-components/p-17862b0b.entry.js +5 -0
- package/dist/shift-components/p-187cbdf5.entry.js +5 -0
- package/dist/shift-components/{p-fa39d151.entry.js → p-1c7c9c13.entry.js} +1 -1
- package/dist/shift-components/{p-7a41a739.entry.js → p-28e29ce7.entry.js} +1 -1
- package/dist/shift-components/p-383342be.entry.js +5 -0
- package/dist/shift-components/{p-fe7ece41.entry.js → p-3dcba301.entry.js} +1 -1
- package/dist/shift-components/{p-6b82a9b3.entry.js → p-5ba85e5c.entry.js} +1 -1
- package/dist/shift-components/{p-031f2ae6.entry.js → p-65beafcc.entry.js} +1 -1
- package/dist/shift-components/{p-22648595.entry.js → p-7cc6806c.entry.js} +1 -1
- package/dist/shift-components/{p-332ebda4.entry.js → p-7f44f655.entry.js} +1 -1
- package/dist/shift-components/{p-61ecc144.entry.js → p-868d554f.entry.js} +1 -1
- package/dist/shift-components/{p-a4086c90.entry.js → p-880c103a.entry.js} +1 -1
- package/dist/shift-components/{p-0dd7911f.entry.js → p-902a40c4.entry.js} +1 -1
- package/dist/shift-components/{p-10511716.entry.js → p-99886c58.entry.js} +1 -1
- package/dist/shift-components/{p-B8RCucpl.js → p-B9kqtQjS.js} +1 -1
- package/dist/shift-components/p-BTNA9XsD.js +5 -0
- package/dist/shift-components/{p-CiA8HlYO.js → p-C4NpWwNE.js} +1 -1
- package/dist/shift-components/p-C582V9TT.js +5 -0
- package/dist/shift-components/{p-BaC5C1YJ.js → p-C8PvXL-3.js} +1 -1
- package/dist/shift-components/{p-BLdwm9KB.js → p-CMMsmKvs.js} +1 -1
- package/dist/shift-components/p-C_QDvFTV.js +5 -0
- package/dist/shift-components/{p-BpCf2ue6.js → p-Ccwtsrgg.js} +1 -1
- package/dist/shift-components/p-CteZTPhq.js +6 -0
- package/dist/shift-components/{p-BG5y01yj.js → p-D1ioFMhR.js} +1 -1
- package/dist/shift-components/{p-FFH7sR1n.js → p-D7cqTTll.js} +1 -1
- package/dist/shift-components/p-D9Xf90VX.js +5 -0
- package/dist/shift-components/p-DWoutohJ.js +5 -0
- package/dist/shift-components/{p-BtLpOQVM.js → p-DtD7FZCG.js} +1 -1
- package/dist/shift-components/{p-CC1CaPP4.js → p-Dyo77aS3.js} +1 -1
- package/dist/shift-components/p-DzV_ls5o.js +5 -0
- package/dist/shift-components/p-HI9vdFQP.js +5 -0
- package/dist/shift-components/{p-08Pl1Pmo.js → p-MzYTUgsB.js} +1 -1
- package/dist/shift-components/{p-DwFWMVcD.js → p-OlAbjfKx.js} +1 -1
- package/dist/shift-components/{p-981d1f44.entry.js → p-b675fb6b.entry.js} +1 -1
- package/dist/shift-components/p-b8084ca2.entry.js +5 -0
- package/dist/shift-components/p-bad65a42.entry.js +5 -0
- package/dist/shift-components/{p-2f904561.entry.js → p-bb13232d.entry.js} +1 -1
- package/dist/shift-components/{p-CtUQMviL.js → p-bfwabdVa.js} +1 -1
- package/dist/shift-components/p-c4cf0a18.entry.js +5 -0
- package/dist/shift-components/{p-46e5146f.entry.js → p-e2868220.entry.js} +1 -1
- package/dist/shift-components/p-e7a99998.entry.js +5 -0
- package/dist/shift-components/{p-e979caa9.entry.js → p-ec3e0cce.entry.js} +1 -1
- package/dist/shift-components/{p-23df4ed2.entry.js → p-ee623097.entry.js} +1 -1
- package/dist/shift-components/{p-d33c83ac.entry.js → p-f9b8d43c.entry.js} +1 -1
- package/dist/shift-components/p-hABirfUj.js +5 -0
- package/dist/shift-components/{p-CRd5RAng.js → p-oFzLYYzz.js} +1 -1
- package/dist/shift-components/{p-Dvl1mJ6N.js → p-oQAUbfw7.js} +1 -1
- package/dist/shift-components/shift-components.esm.js +1 -1
- package/dist/stencil-docs.json +8462 -6793
- package/dist/types/components/form-elements/branch-slot-dropdown.d.ts +48 -0
- package/dist/types/components/form-elements/branch-slot-picker.d.ts +128 -0
- package/dist/types/components/form-elements/form-file.d.ts +1 -0
- package/dist/types/components/forms/defaults/mappers.d.ts +16 -0
- package/dist/types/components/forms/defaults/validation.d.ts +2 -0
- package/dist/types/components/vehicle-lookup/components/CoverageTimeline.d.ts +13 -0
- package/dist/types/components/vehicle-lookup/vehicle-lookup.d.ts +3 -0
- package/dist/types/components/vehicle-lookup/vehicle-warranty-timeline.d.ts +46 -0
- package/dist/types/components.d.ts +452 -4
- package/dist/types/features/multi-lingual/types.d.ts +4 -4
- package/dist/types/global/types/generated/vehicle-lookup/vehicle-extended-warranty-dto.d.ts +9 -0
- package/dist/types/global/types/generated/vehicle-lookup/vehicle-warranty-dto.d.ts +4 -0
- package/dist/types/locale-mapper.d.ts +2 -1
- package/dist/types/locales/type.d.ts +2 -2
- package/dist/types/locales/vehicleLookup/paintThickness/type.d.ts +6 -6
- package/dist/types/locales/vehicleLookup/warranty/type.d.ts +4 -4
- package/dist/types/locales/vehicleLookup/warrantyTimeline/type.d.ts +50 -0
- package/dist/types/locales/vehicleLookup/wrapper-type.d.ts +10 -10
- package/package.json +1 -1
- package/dist/components/p-B8g3fLoh.js +0 -5
- package/dist/components/p-BshR1DsJ.js +0 -5
- package/dist/components/p-C24AOawm.js +0 -5
- package/dist/components/p-CK6WFXQF.js +0 -5
- package/dist/components/p-CLkGfAsm.js +0 -5
- package/dist/components/p-ClDpIRF9.js +0 -5
- package/dist/components/p-CvcaE6Ss.js +0 -5
- package/dist/components/p-DlG98nFs.js +0 -5
- package/dist/components/p-Dv_BQG7D.js +0 -5
- package/dist/components/p-G9UmKW9m.js +0 -5
- package/dist/shift-components/p-0578b913.entry.js +0 -5
- package/dist/shift-components/p-1500556f.entry.js +0 -5
- package/dist/shift-components/p-214259ae.entry.js +0 -5
- package/dist/shift-components/p-9c950549.entry.js +0 -5
- package/dist/shift-components/p-BBmr0kTe.js +0 -5
- package/dist/shift-components/p-BVDXHvth.js +0 -5
- package/dist/shift-components/p-BY1wHcOT.js +0 -5
- package/dist/shift-components/p-BuurMgGN.js +0 -5
- package/dist/shift-components/p-Cg4V9l26.js +0 -6
- package/dist/shift-components/p-D2XgNV12.js +0 -5
- package/dist/shift-components/p-DlBduQTw.js +0 -5
- package/dist/shift-components/p-a55ceb19.entry.js +0 -5
- package/dist/shift-components/p-b611f72e.entry.js +0 -5
- package/dist/shift-components/p-bc966aa0.entry.js +0 -5
- package/dist/shift-components/p-rsylYLbj.js +0 -5
- package/dist/shift-components/p-yhCrSkom.js +0 -5
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Built by ShiftSoftware
|
|
3
|
+
* Copyright (c)
|
|
4
|
+
*/
|
|
5
|
+
import { h } from "@stencil/core";
|
|
6
|
+
const TONE_STANDARD = {
|
|
7
|
+
base: 'var(--green)',
|
|
8
|
+
dark: 'var(--green-dark)',
|
|
9
|
+
tint: 'rgba(232, 244, 237, 0.9)',
|
|
10
|
+
border: 'rgba(44, 138, 88, 0.55)',
|
|
11
|
+
};
|
|
12
|
+
// Extended coverages cycle through these. The prototype hard-coded one class per
|
|
13
|
+
// provider; a vehicle can hold more than two, so the tone repeats and the segment's
|
|
14
|
+
// alternating border style keeps neighbouring bands apart.
|
|
15
|
+
const TONES_EXTENDED = [
|
|
16
|
+
{ base: 'var(--blue)', dark: 'var(--blue-dark)', tint: 'rgba(232, 241, 248, 0.88)', border: 'rgba(48, 113, 169, 0.64)' },
|
|
17
|
+
{ base: 'var(--violet)', dark: 'var(--violet-dark)', tint: 'rgba(240, 236, 247, 0.9)', border: 'rgba(117, 90, 165, 0.65)' },
|
|
18
|
+
];
|
|
19
|
+
const toTimestamp = (isoDate) => Date.parse(`${isoDate}T00:00:00Z`);
|
|
20
|
+
/** DTO dates are serialized as yyyy-MM-dd, but tolerate a full timestamp. */
|
|
21
|
+
const asDate = (value) => (value || '').slice(0, 10);
|
|
22
|
+
const todayInUtc = () => new Date().toISOString().slice(0, 10);
|
|
23
|
+
const clampPercentage = (value) => Math.min(100, Math.max(0, value));
|
|
24
|
+
const asPercentage = (value) => `${value.toFixed(6)}%`;
|
|
25
|
+
const monthsBetween = (start, end) => {
|
|
26
|
+
const [startYear, startMonth, startDay] = start.split('-').map(Number);
|
|
27
|
+
const [endYear, endMonth, endDay] = end.split('-').map(Number);
|
|
28
|
+
const months = (endYear - startYear) * 12 + (endMonth - startMonth) - (endDay < startDay ? 1 : 0);
|
|
29
|
+
return Math.max(0, months);
|
|
30
|
+
};
|
|
31
|
+
const formatDuration = (months, locale) => {
|
|
32
|
+
const years = Math.floor(months / 12);
|
|
33
|
+
const remainingMonths = months % 12;
|
|
34
|
+
const parts = [];
|
|
35
|
+
if (years)
|
|
36
|
+
parts.push(`${years} ${years === 1 ? locale.year : locale.years}`);
|
|
37
|
+
if (remainingMonths || !years)
|
|
38
|
+
parts.push(`${remainingMonths} ${remainingMonths === 1 ? locale.month : locale.months}`);
|
|
39
|
+
return parts.join(' ');
|
|
40
|
+
};
|
|
41
|
+
const buildCoverages = (vehicleInformation, locale) => {
|
|
42
|
+
const warranty = vehicleInformation === null || vehicleInformation === void 0 ? void 0 : vehicleInformation.warranty;
|
|
43
|
+
const coverages = [];
|
|
44
|
+
const standardStart = asDate(warranty === null || warranty === void 0 ? void 0 : warranty.warrantyStartDate);
|
|
45
|
+
const standardEnd = asDate(warranty === null || warranty === void 0 ? void 0 : warranty.warrantyEndDate);
|
|
46
|
+
if (standardStart && standardEnd && toTimestamp(standardEnd) > toTimestamp(standardStart))
|
|
47
|
+
coverages.push({
|
|
48
|
+
id: 'standard',
|
|
49
|
+
kind: 'standard',
|
|
50
|
+
label: locale.standardWarranty,
|
|
51
|
+
start: standardStart,
|
|
52
|
+
end: standardEnd,
|
|
53
|
+
tone: TONE_STANDARD,
|
|
54
|
+
alt: false,
|
|
55
|
+
});
|
|
56
|
+
((warranty === null || warranty === void 0 ? void 0 : warranty.extendedWarranties) || [])
|
|
57
|
+
.map(coverage => ({
|
|
58
|
+
id: (coverage === null || coverage === void 0 ? void 0 : coverage.id) || '',
|
|
59
|
+
name: (coverage === null || coverage === void 0 ? void 0 : coverage.name) || '',
|
|
60
|
+
providerName: (coverage === null || coverage === void 0 ? void 0 : coverage.providerCompanyName) || '',
|
|
61
|
+
logo: (coverage === null || coverage === void 0 ? void 0 : coverage.providerCompanyLogo) || '',
|
|
62
|
+
start: asDate(coverage === null || coverage === void 0 ? void 0 : coverage.startDate),
|
|
63
|
+
end: asDate(coverage === null || coverage === void 0 ? void 0 : coverage.endDate),
|
|
64
|
+
}))
|
|
65
|
+
.filter(coverage => coverage.start && coverage.end && toTimestamp(coverage.end) > toTimestamp(coverage.start))
|
|
66
|
+
.sort((a, b) => toTimestamp(a.start) - toTimestamp(b.start))
|
|
67
|
+
.forEach((coverage, index) => {
|
|
68
|
+
coverages.push({
|
|
69
|
+
id: coverage.id || `extended-${index}`,
|
|
70
|
+
kind: 'extended',
|
|
71
|
+
// The identifier is not a display string. A configured definition supplies a name;
|
|
72
|
+
// a persisted entry has none, so those fall back to the generic label.
|
|
73
|
+
label: coverage.name || locale.extendedWarranty,
|
|
74
|
+
start: coverage.start,
|
|
75
|
+
end: coverage.end,
|
|
76
|
+
tone: TONES_EXTENDED[index % TONES_EXTENDED.length],
|
|
77
|
+
alt: index % 2 === 1,
|
|
78
|
+
logo: coverage.logo || undefined,
|
|
79
|
+
providerName: coverage.providerName || undefined,
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
return coverages;
|
|
83
|
+
};
|
|
84
|
+
/** Coverage name, qualified by the provider when one resolved. Used for the accessible text only. */
|
|
85
|
+
const describe = (coverage) => (coverage.providerName ? `${coverage.label} · ${coverage.providerName}` : coverage.label);
|
|
86
|
+
const coverageStatus = (coverage, today) => {
|
|
87
|
+
const snapshot = toTimestamp(today);
|
|
88
|
+
if (snapshot < toTimestamp(coverage.start))
|
|
89
|
+
return 'upcoming';
|
|
90
|
+
if (snapshot >= toTimestamp(coverage.end))
|
|
91
|
+
return 'expired';
|
|
92
|
+
return 'active';
|
|
93
|
+
};
|
|
94
|
+
/** Track drawn past the snapshot so the marker sits in the rail rather than on its edge. */
|
|
95
|
+
const RAIL_HEADROOM = 0.04;
|
|
96
|
+
/**
|
|
97
|
+
* The span the rail draws. Coverage fixes one end; today is always inside it.
|
|
98
|
+
*
|
|
99
|
+
* A rail that stopped at the last expiry date would put "today" hard against its edge and lose the
|
|
100
|
+
* one thing a lapsed warranty most needs to show — how long ago cover ran out. Drawing through to
|
|
101
|
+
* today instead turns that into what it is: empty track, as wide as the time that has passed.
|
|
102
|
+
*/
|
|
103
|
+
const railRange = (coverages, today) => {
|
|
104
|
+
const first = toTimestamp(coverages[0].start);
|
|
105
|
+
const last = coverages.reduce((latest, coverage) => Math.max(latest, toTimestamp(coverage.end)), toTimestamp(coverages[0].end));
|
|
106
|
+
const snapshot = toTimestamp(today);
|
|
107
|
+
const headroom = Math.round((Math.max(last, snapshot) - Math.min(first, snapshot)) * RAIL_HEADROOM);
|
|
108
|
+
return {
|
|
109
|
+
from: first <= snapshot ? first : snapshot - headroom,
|
|
110
|
+
to: last >= snapshot ? last : snapshot + headroom,
|
|
111
|
+
};
|
|
112
|
+
};
|
|
113
|
+
const toneVariables = (tone) => ({
|
|
114
|
+
'--tone': tone.base,
|
|
115
|
+
'--tone-dark': tone.dark,
|
|
116
|
+
'--tone-tint': tone.tint,
|
|
117
|
+
'--tone-border': tone.border,
|
|
118
|
+
});
|
|
119
|
+
/** Clearance between two axis dates before they read as one smudge. */
|
|
120
|
+
const AXIS_GAP = 10;
|
|
121
|
+
/**
|
|
122
|
+
* Hides the axis dates that would collide, always keeping the closing one.
|
|
123
|
+
*
|
|
124
|
+
* Crowding is not only a narrow-screen problem: consecutive coverages routinely hand over within a
|
|
125
|
+
* week of each other on a rail spanning years, and those two labels overlap at any width. The
|
|
126
|
+
* decision needs the measured width of rendered text, which the render pass cannot know, so it is
|
|
127
|
+
* applied to the DOM afterwards and re-applied whenever the rail is resized.
|
|
128
|
+
*/
|
|
129
|
+
const thinAxis = (axis) => {
|
|
130
|
+
if (!axis)
|
|
131
|
+
return;
|
|
132
|
+
const apply = () => {
|
|
133
|
+
const dates = Array.from(axis.children);
|
|
134
|
+
const railWidth = axis.clientWidth;
|
|
135
|
+
// jsdom reports no layout, so specs leave every date alone rather than hiding all of them.
|
|
136
|
+
if (dates.length < 2 || !railWidth)
|
|
137
|
+
return;
|
|
138
|
+
dates.forEach(date => date.classList.remove('is-crowded'));
|
|
139
|
+
const last = dates.length - 1;
|
|
140
|
+
const boxOf = (date) => {
|
|
141
|
+
const at = (parseFloat(date.style.getPropertyValue('--at')) / 100) * railWidth;
|
|
142
|
+
const width = date.offsetWidth;
|
|
143
|
+
// Mirrors the stylesheet: a date at the rail's start runs rightwards from its tick, one at
|
|
144
|
+
// its end leftwards from its own, and everything between is centred on its tick.
|
|
145
|
+
if (date.dataset.align === 'start')
|
|
146
|
+
return [at, at + width];
|
|
147
|
+
if (date.dataset.align === 'end')
|
|
148
|
+
return [at - width, at];
|
|
149
|
+
return [at - width / 2, at + width / 2];
|
|
150
|
+
};
|
|
151
|
+
const boxes = dates.map(boxOf);
|
|
152
|
+
const survives = new Set([0, last]);
|
|
153
|
+
let occupiedTo = boxes[0][1];
|
|
154
|
+
for (let index = 1; index < last; index++) {
|
|
155
|
+
const [left, right] = boxes[index];
|
|
156
|
+
if (left < occupiedTo + AXIS_GAP)
|
|
157
|
+
continue;
|
|
158
|
+
if (right + AXIS_GAP > boxes[last][0])
|
|
159
|
+
continue;
|
|
160
|
+
survives.add(index);
|
|
161
|
+
occupiedTo = right;
|
|
162
|
+
}
|
|
163
|
+
// A rail too narrow to hold even the two bounds keeps the closing date: when the cover runs out
|
|
164
|
+
// is the question the panel is answering.
|
|
165
|
+
if (boxes[0][1] + AXIS_GAP > boxes[last][0])
|
|
166
|
+
survives.delete(0);
|
|
167
|
+
dates.forEach((date, index) => date.classList.toggle('is-crowded', !survives.has(index)));
|
|
168
|
+
};
|
|
169
|
+
const schedule = () => (typeof requestAnimationFrame === 'function' ? requestAnimationFrame(apply) : apply());
|
|
170
|
+
schedule();
|
|
171
|
+
// Both triggers are needed and neither is enough on its own: the rail resizes without the dates
|
|
172
|
+
// changing, and switching vehicle replaces the dates without the rail resizing.
|
|
173
|
+
if (axis.__axisWatched)
|
|
174
|
+
return;
|
|
175
|
+
axis.__axisWatched = true;
|
|
176
|
+
if (typeof ResizeObserver !== 'undefined')
|
|
177
|
+
new ResizeObserver(schedule).observe(axis);
|
|
178
|
+
if (typeof MutationObserver !== 'undefined')
|
|
179
|
+
new MutationObserver(schedule).observe(axis, { childList: true });
|
|
180
|
+
};
|
|
181
|
+
/** Pulls the snapshot pill back onto the rail when centring it would overhang either edge. */
|
|
182
|
+
const positionTodayPill = (head, todayPosition) => {
|
|
183
|
+
if (!head)
|
|
184
|
+
return;
|
|
185
|
+
const apply = () => {
|
|
186
|
+
const pill = head.firstElementChild;
|
|
187
|
+
if (!pill || !head.clientWidth)
|
|
188
|
+
return;
|
|
189
|
+
const pillCentre = (head.clientWidth * clampPercentage(todayPosition)) / 100;
|
|
190
|
+
head.classList.toggle('is-near-end', pillCentre + pill.offsetWidth / 2 > head.clientWidth);
|
|
191
|
+
head.classList.toggle('is-near-start', pillCentre - pill.offsetWidth / 2 < 0);
|
|
192
|
+
};
|
|
193
|
+
if (typeof requestAnimationFrame === 'function')
|
|
194
|
+
requestAnimationFrame(apply);
|
|
195
|
+
else
|
|
196
|
+
apply();
|
|
197
|
+
};
|
|
198
|
+
// Inline rather than an ~assets import: the glyph takes its colour from the badge
|
|
199
|
+
// state via currentColor, which an <img src> cannot do.
|
|
200
|
+
const BADGE_GLYPHS = {
|
|
201
|
+
positive: 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z',
|
|
202
|
+
negative: 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z',
|
|
203
|
+
};
|
|
204
|
+
/**
|
|
205
|
+
* Why the warranty has not started. Possession is not a sale: while the distributor, an intermediary
|
|
206
|
+
* or an un-invoiced broker still holds the vehicle, coverage deliberately has not begun and the
|
|
207
|
+
* holder's invoice date is not used — the customer would lose that period off the front. The panel
|
|
208
|
+
* says so rather than showing an unexplained empty rail.
|
|
209
|
+
*
|
|
210
|
+
* Only the broker case is derivable from the response; the supply-chain cases depend on the host's
|
|
211
|
+
* own company classification, so the reason is read from the DTO. An older API that does not send
|
|
212
|
+
* `startState` reads as started and shows nothing, exactly as before.
|
|
213
|
+
*/
|
|
214
|
+
const notStartedMessage = (vehicleInformation, locale) => {
|
|
215
|
+
var _a, _b, _c;
|
|
216
|
+
const startState = (_a = vehicleInformation === null || vehicleInformation === void 0 ? void 0 : vehicleInformation.warranty) === null || _a === void 0 ? void 0 : _a.startState;
|
|
217
|
+
if (!vehicleInformation || !startState || startState === 'Started')
|
|
218
|
+
return '';
|
|
219
|
+
if (startState === 'AwaitingBrokerInvoice')
|
|
220
|
+
return locale.awaitingBrokerInvoice + (((_c = (_b = vehicleInformation === null || vehicleInformation === void 0 ? void 0 : vehicleInformation.saleInformation) === null || _b === void 0 ? void 0 : _b.broker) === null || _c === void 0 ? void 0 : _c.brokerName) || '');
|
|
221
|
+
if (startState === 'AwaitingEndCustomerSale')
|
|
222
|
+
return locale.awaitingEndCustomerSale;
|
|
223
|
+
return locale.awaitingActivation;
|
|
224
|
+
};
|
|
225
|
+
/**
|
|
226
|
+
* The one row the card is allowed to gain and lose. The grid track animates the height rather than
|
|
227
|
+
* the content, so the row still slides shut on the frame its message is cleared. Everything else
|
|
228
|
+
* keeps its place and fades, which is what holds the card to a single height across vehicles.
|
|
229
|
+
*/
|
|
230
|
+
const Collapsible = ({ open }, children) => (h("div", { class: "collapsible", "data-open": open ? 'true' : 'false', "aria-hidden": open ? null : 'true' }, h("div", { class: "collapsible-body" }, children)));
|
|
231
|
+
const NoticeStrip = ({ text }) => (h("div", { class: "warranty-notice", role: "status" }, h("svg", { class: "notice-icon", viewBox: "0 0 512 512", "aria-hidden": "true", focusable: "false" }, h("path", { fill: "currentColor", d: BADGE_GLYPHS.negative })), h("span", null, text)));
|
|
232
|
+
/**
|
|
233
|
+
* A verdict, or the absence of one. Before a lookup there is no vehicle to judge, and an absent
|
|
234
|
+
* `isAuthorized` reading as `false` opened the panel accusing every vehicle of being unauthorized
|
|
235
|
+
* and out of cover. The idle chip keeps its box and its split cap so nothing shifts when the
|
|
236
|
+
* verdict lands, and asserts nothing until it does — the treatment the older warranty panel
|
|
237
|
+
* already gives its own cards.
|
|
238
|
+
*/
|
|
239
|
+
const StatusBadge = ({ state, text }) => {
|
|
240
|
+
const idle = state === 'idle';
|
|
241
|
+
return (h("span", { class: `status-badge is-${state}`, "aria-label": idle ? null : text, "aria-hidden": idle ? 'true' : null }, h("svg", { class: "badge-icon", viewBox: "0 0 512 512", "aria-hidden": "true", focusable: "false" }, !idle && h("path", { fill: "currentColor", d: state === 'positive' ? BADGE_GLYPHS.positive : BADGE_GLYPHS.negative })), h("span", null, idle ? '' : text)));
|
|
242
|
+
};
|
|
243
|
+
export default function CoverageTimeline({ vehicleInformation, locale, isAuthorized, today }) {
|
|
244
|
+
var _a, _b;
|
|
245
|
+
const snapshot = today || todayInUtc();
|
|
246
|
+
const coverages = buildCoverages(vehicleInformation, locale);
|
|
247
|
+
const hasCoverage = coverages.length > 0;
|
|
248
|
+
const dealerName = ((_a = vehicleInformation === null || vehicleInformation === void 0 ? void 0 : vehicleInformation.saleInformation) === null || _a === void 0 ? void 0 : _a.companyName) || '';
|
|
249
|
+
const notice = notStartedMessage(vehicleInformation, locale);
|
|
250
|
+
// The broker that actually anchored the warranty — a warranty fact, not a sale fact, so it is read
|
|
251
|
+
// from the warranty DTO rather than inferred from the presence of a broker on the sale.
|
|
252
|
+
const activatingBroker = ((_b = vehicleInformation === null || vehicleInformation === void 0 ? void 0 : vehicleInformation.warranty) === null || _b === void 0 ? void 0 : _b.activatedByBrokerName) || '';
|
|
253
|
+
// "Activated by" is only truthful once something started the coverage. Before that the company is
|
|
254
|
+
// just the dealer holding it, and when a broker started it both parties matter.
|
|
255
|
+
const dealerLabel = activatingBroker || notice ? locale.dealer : locale.activatedBy;
|
|
256
|
+
const hasActiveWarranty = coverages.some(coverage => coverageStatus(coverage, snapshot) === 'active');
|
|
257
|
+
// Both chips are verdicts about a vehicle, so neither can be given before there is one to judge.
|
|
258
|
+
const verdict = (isPositive) => (!vehicleInformation ? 'idle' : isPositive ? 'positive' : 'negative');
|
|
259
|
+
const range = hasCoverage ? railRange(coverages, snapshot) : { from: 0, to: 1 };
|
|
260
|
+
const positionInRange = (isoDate) => ((toTimestamp(isoDate) - range.from) / (range.to - range.from)) * 100;
|
|
261
|
+
// The stripe is proportioned across the cover itself, not the rail. The rail stretches to reach
|
|
262
|
+
// today, so sharing its scale would leave the stripe part-drawn, with the last band's colour
|
|
263
|
+
// running out to the edge on any vehicle whose warranty has lapsed.
|
|
264
|
+
const planFrom = hasCoverage ? toTimestamp(coverages[0].start) : 0;
|
|
265
|
+
const planTo = hasCoverage ? coverages.reduce((latest, coverage) => Math.max(latest, toTimestamp(coverage.end)), planFrom + 1) : 1;
|
|
266
|
+
const positionInPlan = (isoDate) => ((toTimestamp(isoDate) - planFrom) / (planTo - planFrom)) * 100;
|
|
267
|
+
const ticks = hasCoverage ? Array.from(new Set(coverages.flatMap(coverage => [coverage.start, coverage.end]))).sort((a, b) => toTimestamp(a) - toTimestamp(b)) : [];
|
|
268
|
+
// Inside the rail by construction; clamped anyway so malformed dates can never put an element at
|
|
269
|
+
// `left: 190%`, which widens the rail to match and makes the card scroll sideways to reach it.
|
|
270
|
+
const todayPosition = hasCoverage ? clampPercentage(positionInRange(snapshot)) : 0;
|
|
271
|
+
const cardAccent = !hasCoverage
|
|
272
|
+
? // No bands means no coverage to describe, so the accent must not fall through to a
|
|
273
|
+
// green/blue/violet gradient — that reads as a three-stage plan on a vehicle that has none.
|
|
274
|
+
// Red when we are saying why coverage has not started, otherwise inert.
|
|
275
|
+
notice
|
|
276
|
+
? 'var(--red)'
|
|
277
|
+
: 'var(--line)'
|
|
278
|
+
: coverages.length === 1
|
|
279
|
+
? TONE_STANDARD.base
|
|
280
|
+
: `linear-gradient(90deg, ${coverages
|
|
281
|
+
.map(coverage => `${coverage.tone.base} ${asPercentage(positionInPlan(coverage.start))} ${asPercentage(positionInPlan(coverage.end))}`)
|
|
282
|
+
.join(', ')})`;
|
|
283
|
+
const summary = coverages.map(coverage => `${describe(coverage)}: ${coverage.start} — ${coverage.end} (${coverageStatus(coverage, snapshot)})`).join('. ');
|
|
284
|
+
// One structure for every vehicle. Blocks a vehicle has nothing to put in fade out in place
|
|
285
|
+
// instead of being dropped, so moving between vehicles does not resize the card under the reader.
|
|
286
|
+
return (h("article", { class: "coverage-timeline warranty-card", "data-empty": hasCoverage ? 'false' : 'true', style: { '--card-accent': cardAccent } }, h("header", { class: "activation-header" }, h("div", { class: "activation-main" }, h("p", { class: "activation-title" }, h("span", null, dealerLabel, ":"), " ", h("strong", null, dealerName || '—')), h("div", { class: "broker-slot", "data-empty": activatingBroker ? 'false' : 'true', "aria-hidden": activatingBroker ? null : 'true' }, h("p", { class: "activation-broker" }, h("span", null, locale.broker, ":"), " ", h("strong", null, activatingBroker)))), h("div", { class: "total-slot", "data-empty": hasCoverage ? 'false' : 'true', "aria-hidden": hasCoverage ? null : 'true' }, h(TotalCoverage, { coverages: coverages, locale: locale }))), h(Collapsible, { open: !!notice }, h(NoticeStrip, { text: notice })), h("section", { class: "journey", "aria-label": locale.warrantyCoverage }, h("div", { class: "journey-head" }, h(StatusBadge, { state: verdict(isAuthorized), text: isAuthorized ? locale.authorized : locale.unauthorized }), h(StatusBadge, { state: verdict(hasActiveWarranty), text: hasActiveWarranty ? locale.activeWarranty : locale.notActiveWarranty })), h("div", { class: "timeline-shell", "data-empty": hasCoverage ? 'false' : 'true', "aria-hidden": hasCoverage ? null : 'true' }, h("div", { class: "timeline shift-skeleton", role: "group", "aria-label": locale.warrantyCoverage }, h("div", { class: "today-head", "aria-hidden": "true", style: { '--at': asPercentage(todayPosition) }, ref: element => positionTodayPill(element, todayPosition) }, hasCoverage && h("span", { class: "today-pill" }, `${locale.today} · ${snapshot}`)), h("div", { class: "axis", "aria-hidden": "true", ref: thinAxis }, ticks.map(tick => {
|
|
287
|
+
const at = positionInRange(tick);
|
|
288
|
+
// Ticks no longer necessarily reach the rail's ends — a lapsed warranty's dates all
|
|
289
|
+
// sit left of today — so which way a date is set follows its position rather than
|
|
290
|
+
// its place in the list.
|
|
291
|
+
return (h("span", { class: "axis-date", key: tick, "data-align": at <= 0.5 ? 'start' : at >= 99.5 ? 'end' : 'mid', style: { '--at': asPercentage(at) } }, tick));
|
|
292
|
+
})), h("div", { class: "lane" }, hasCoverage && h("span", { class: "today-tail", "aria-hidden": "true", style: { '--at': asPercentage(todayPosition) } }), h("div", { class: "coverage-list", role: "list" }, coverages.map(coverage => {
|
|
293
|
+
const status = coverageStatus(coverage, snapshot);
|
|
294
|
+
const start = positionInRange(coverage.start);
|
|
295
|
+
const span = positionInRange(coverage.end) - start;
|
|
296
|
+
return (h("div", { key: coverage.id, role: "listitem", class: "coverage-entry", "data-kind": coverage.kind, "data-status": status, "aria-label": `${describe(coverage)}, ${coverage.start} — ${coverage.end}`, style: Object.assign({ '--start': asPercentage(start), '--span': asPercentage(span) }, toneVariables(coverage.tone)) }, h("div", { class: `segment ${coverage.kind === 'standard' ? 'is-standard' : 'is-extended'}${coverage.alt ? ' tone-alt' : ''}` }, coverage.kind === 'standard' ? (h("strong", null, locale.standardWarrantyMark)) : coverage.logo ? (
|
|
297
|
+
// Decorative: the provider is already named in the entry's aria-label,
|
|
298
|
+
// so alt text here would announce it twice.
|
|
299
|
+
h("img", { class: "provider-logo", src: coverage.logo, alt: "", loading: "lazy" })) : null), h("span", { class: "coverage-label" }, coverage.label)));
|
|
300
|
+
})), hasCoverage && h("span", { class: "past-wash", "aria-hidden": "true", style: { '--to': asPercentage(todayPosition) } }), h("div", { class: "boundary-layer", "aria-hidden": "true" }, coverages.slice(1).map(coverage => (h("span", { key: coverage.id, class: "boundary", style: Object.assign({ '--at': asPercentage(positionInRange(coverage.start)) }, toneVariables(coverage.tone)) })))), hasCoverage && h("span", { class: "today-marker", "aria-hidden": "true", style: { '--at': asPercentage(todayPosition) } })), hasCoverage && h("p", { class: "sr-only" }, summary))))));
|
|
301
|
+
}
|
|
302
|
+
function TotalCoverage({ coverages, locale }) {
|
|
303
|
+
const monthsFor = (kind) => coverages.filter(coverage => coverage.kind === kind).reduce((total, coverage) => total + monthsBetween(coverage.start, coverage.end), 0);
|
|
304
|
+
const standardMonths = monthsFor('standard');
|
|
305
|
+
const extendedMonths = monthsFor('extended');
|
|
306
|
+
const mix = [
|
|
307
|
+
standardMonths ? `${formatDuration(standardMonths, locale)} ${locale.standard}` : '',
|
|
308
|
+
extendedMonths ? `${formatDuration(extendedMonths, locale)} ${locale.extended}` : '',
|
|
309
|
+
]
|
|
310
|
+
.filter(Boolean)
|
|
311
|
+
.join(' + ');
|
|
312
|
+
// The block keeps its box on a vehicle with no coverage so the header does not resize, but it
|
|
313
|
+
// reports no total rather than a total of zero — and a dash is narrow enough that it does not
|
|
314
|
+
// reflow the label beside it, which is what made the invisible block taller than a real one.
|
|
315
|
+
const total = mix ? formatDuration(standardMonths + extendedMonths, locale) : '—';
|
|
316
|
+
return (h("aside", { class: "total-coverage", "aria-label": `${locale.totalPlannedProtection}: ${mix || total}` }, h("span", null, locale.totalPlannedProtection), h("strong", null, total), h("span", { class: "coverage-mix" }, mix)));
|
|
317
|
+
}
|
|
@@ -77,9 +77,9 @@ export class VehicleAccessories {
|
|
|
77
77
|
image: () => (h("div", { class: "size-[100px] flex mx-auto items-center justify-center" }, h("button", { onClick: ({ target }) => openImageViewer.bind(this)(target, accessory === null || accessory === void 0 ? void 0 : accessory.image), class: "shrink-0 relative ring-0 outline-none w-fit mx-auto [&_img]:hover:shadow-lg [&_div]:hover:!opacity-100 cursor-pointer" }, h("div", { class: "absolute flex-col justify-center gap-[4px] size-full flex items-center pointer-events-none hover:opacity-100 rounded-lg opacity-0 bg-black/40 transition-all duration-300" }, h("img", { src: Eye }), h("span", { class: "text-white" }, texts.expand)), h("img", { class: "w-auto h-auto max-w-[100px] max-h-[100px] cursor-pointer shadow-sm rounded-lg transition-all duration-300", src: accessory === null || accessory === void 0 ? void 0 : accessory.image })))),
|
|
78
78
|
}));
|
|
79
79
|
const templateRow = {
|
|
80
|
-
image: () => h("div", { key: '
|
|
80
|
+
image: () => h("div", { key: 'e9d29ca002cbdff7ba6861a76b667292d8776764', class: "size-[100px] flex mx-auto items-center justify-center" }, "\u00A0"),
|
|
81
81
|
};
|
|
82
|
-
return (h(Host, { key: '
|
|
82
|
+
return (h(Host, { key: '5754d83d9a87285824e896a8bb7531a2b68a5f01', translate: "no" }, h(ImageViewer, { key: 'a7102dba9d94d368c84f62bd40892105596014da', closeImageViewer: () => closeImageViewer.bind(this)(), expandedImage: this.expandedImage }), h(VehicleInfoLayout, { key: '370101d7d7223328381e5b48f3b9cd5b33f3b4cc', isError: this.isError, isLoading: this.isLoading, coreOnly: this.coreOnly, header: (_c = this.vehicleLookup) === null || _c === void 0 ? void 0 : _c.vin, direction: this.locale.sharedLocales.direction, errorMessage: this.locale.sharedLocales.errors[this.errorMessage] || this.locale.sharedLocales.errors.wildCard }, h("div", { key: '416ef484b9c8f892512d8b72cbab3bcd22c022ea', class: "overflow-x-auto" }, h("information-table", { key: 'ba80b210fdf468ceea7661237ae4d548c4fd8205', templateRow: templateRow, rows: rows, headers: tableHeaders, isLoading: this.isLoading })))));
|
|
83
83
|
}
|
|
84
84
|
static get is() { return "vehicle-accessories"; }
|
|
85
85
|
static get encapsulation() { return "shadow"; }
|
|
@@ -504,19 +504,19 @@ export class VehicleClaimableItems {
|
|
|
504
504
|
const showActivationBox = showActivationRequired || showActivationBlocked || this.showPrintBox;
|
|
505
505
|
const isBlockedBox = showActivationBlocked && !this.showPrintBox;
|
|
506
506
|
const showActionButton = this.showPrintBox || showActivationRequired;
|
|
507
|
-
return (h(Host, { key: '
|
|
507
|
+
return (h(Host, { key: '68bae301ffc05d11cf272f7dec997c72c26aba6e', translate: "no" }, h("vehicle-item-claim-form", { key: '04f23d58066e76923378ff71a81c3573b5d131ce', class: "vehicle-item-claim-form", maximumDocumentFileSizeInMb: this.maximumDocumentFileSizeInMb, uploadMultipleDocuments: this.uploadMultipleDocumentsAtTheForm, locale: Object.assign({ sharedLocales: this.locale.sharedLocales }, this.locale.claimForm) }), h(ClaimableItemPopover, { key: '1d9d5dd185f8aeac647535fe60b25c4457e9ad63', locale: this.locale, claim: this.claim.bind(this), item: this.selectedClaimItem, showPopover: this.showClaimableItemPopover, target: this.popoverTarget, popoverHeight: this.popoverHeight, fadingOut: this.popoverFadingOut, contentFading: this.popoverContentFading, bodyContentHeight: this.popoverBodyContentHeight, onMouseEnter: this.onPopoverMouseEnter, onMouseLeave: this.onPopoverMouseLeave }), h(ClaimableTraceModal, { key: 'afd799719789eef78f606383d9961fc68f8ac918', isOpen: this.showTraceModal, fadingOut: this.traceModalFadingOut, isLoading: this.isLoadingTrace, errorMessage: this.traceError, vin: (_d = this.vehicleLookup) === null || _d === void 0 ? void 0 : _d.vin, traceHtml: this.traceHtml, locale: this.locale, onClose: this.closeTraceModal }), h(VehicleInfoLayout, { key: '25882202afee3c7da4dd80475784d4cdb53de406', isError: this.isError, coreOnly: this.coreOnly, header: (_e = this.vehicleLookup) === null || _e === void 0 ? void 0 : _e.vin, direction: this.locale.sharedLocales.direction, isLoading: this.isLoading || this.tabAnimationLoading, errorMessage: this.locale.sharedLocales.errors[this.errorMessage] || this.locale.sharedLocales.errors.wildCard, headerRight: this.showTrace && this.vehicleLookup && !this.isLoading && !this.tabAnimationLoading && !this.isError ? (h("button", { type: "button", class: "trace-trigger-button", title: this.locale.viewTrace, "aria-label": this.locale.viewTrace, onClick: this.openTraceModal }, h("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("circle", { cx: "6", cy: "19", r: "3" }), h("path", { d: "M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15" }), h("circle", { cx: "18", cy: "5", r: "3" })))) : null }, h("div", { key: 'e6db5f9381c858f90942a0ebe69950fa72ab2dbb', dir: "ltr", class: cn('relative flex items-center h-[320px] transition-all duration-300', { loading: this.isLoading || this.tabAnimationLoading }) }, h("div", { key: '364b107f12160895213a1c12c2ecda8a3d4fcc9c', dir: this.locale.sharedLocales.direction, class: "absolute top-0 z-10 w-full pt-[16px]" }, h("div", { key: '3bfe16b7177cd4601d3cb512736afbdface2baee', class: cn('duration-300', { 'translate-y-[-50%] opacity-0': hideTabs }) }, h("shift-tabs", { key: '2bcda9871bb627060a31996397ef9f34167d9245', activeTabLabel: this.activeTab, changeActiveTab: this.onActiveTabChange, tabs: tabs }))), h("div", { key: 'd8b7439570750e8ab05f7cf367c6f662d005d291', class: cn('absolute w-[calc(100%-60px)] left-[30px] progress-container-style opacity-0', { 'opacity-100': this.isLoading || this.tabAnimationLoading }) }, h("div", { key: '1e52fc280b2387c1325edfe5039359c71d9f20dc', class: "w-full h-full rounded-[4px] overflow-x-hidden absolute left-0 top-0" }, h("div", { key: 'b8ceab588402eaa72cb3e8da8d3ebafb69a2c392', class: "absolute opacity-0 bg-[#1a1a1a] w-[150%] h-full" }), h("div", { key: 'bdc2ddcc9de7c9a7fae5641b845934bda31a31c6', class: "absolute h-full bg-[linear-gradient(to_bottom,_#428bca_0%,_#3071a9_100%)] lane-inc" }), h("div", { key: '7244762ba3628f89fcc155e1ff0f5ab8ae9f4b8d', class: "absolute h-full bg-[linear-gradient(to_bottom,_#428bca_0%,_#3071a9_100%)] lane-dec" }))), h("div", { key: 'f9d7efabd0f7ebaedc9ff62ac918f7c693693d7d', dir: this.locale.sharedLocales.direction, class: cn('absolute w-[90%] z-10 pointer-events-none border opacity-0 translate-y-[-5px] scale-[70%] p-[25px] text-[16px] rounded-[6px] flex items-center justify-between left-1/2 -translate-x-1/2 h-10 bottom-[40px] transition duration-500', {
|
|
508
508
|
'text-[#8a6d3b] bg-[#fcf8e3] border-[#faebcc]': !isBlockedBox,
|
|
509
509
|
'text-[#58151c] bg-[#f7d7d8] border-[#f2aeb5]': isBlockedBox,
|
|
510
510
|
'opacity-100 pointer-events-auto translate-y-0 scale-100': !this.isLoading && this.vehicleLookup && !this.tabAnimationLoading && showActivationBox,
|
|
511
|
-
}) }, h("span", { key: '
|
|
511
|
+
}) }, h("span", { key: '99bcca2ae1af8cf8011b09b8f9095471d849f1c0', class: "font-semibold" }, this.showPrintBox
|
|
512
512
|
? this.locale.successFulClaimMessage
|
|
513
513
|
: showActivationBlocked
|
|
514
514
|
? this.locale.activationBlockedNotAllocated
|
|
515
|
-
: this.locale.warrantyAndServicesNotActivated), showActionButton && (h("button", { key: '
|
|
515
|
+
: this.locale.warrantyAndServicesNotActivated), showActionButton && (h("button", { key: '11e5a0ba57ea6a87314d1805a339464e27db5340', class: "claim-button", onClick: this.showPrintBox ? this.printLastClaimResponse : this.activateClaimItem }, this.showPrintBox ? h(PrintIcon, { class: "size-[30px] duration-200" }) : h(ActivationIcon, { class: "size-[30px] duration-200" }), h("span", { key: '8c6d367d50296dcfabe5c0fde4baa4517fc47d6a' }, this.showPrintBox ? this.locale.print : this.locale.activateNow)))), h("div", { key: 'c0e7808bac5ce9c07ca8be88d0e03b1c0766bbf6', class: "claimable-items-box px-[30px] min-w-full relative overflow-x-scroll h-full overflow-y-hidden" }, h("div", { key: '82cbe7ef5d767f5ba9d2962e112921a8d4b8895b', class: "flex relative w-fit min-w-full items-center h-full [&_*]:shrink-0 gap-[250px] justify-between" }, h("div", { key: '8042a3f857f7034c33db5b81f6b5339386a5dd61', class: cn('progress-container-style progress-lane absolute overflow-hidden w-[calc(100%-0px)] translate-y-0 opacity-100', {
|
|
516
516
|
'opacity-0': this.isLoading || this.tabAnimationLoading || isNoServicesAvailable || !this.vehicleLookup,
|
|
517
|
-
}) }, h("div", { key: '
|
|
517
|
+
}) }, h("div", { key: 'c622a8a612849f8ab57b2c09bcd45cf1087dc07d', part: "progress-bar", class: "progress-bar transition-all w-1/2 h-full bg-[linear-gradient(to_bottom,_#428bca_0%,_#3071a9_100%)]" })), h("div", { key: '60ee69cc976626263ea85a413e0b0cae59f20c2f', class: "ml-[-125px]" }), serviceItems.map((item, idx) => (h(ClaimableItem, { item: item, locale: this.locale, setClaimableItemPopover: this.setClaimableItemPopover, addStatusClass: item.status !== 'pending' || serviceItems.findIndex(i => i.status === 'pending') === idx }))), h("div", { key: '8712c4482963e722fda2bae3fcd6d705c8c88967', class: "ml-[-125px]" })), h("div", { key: '4625d3e324199a0341e99c9d86d9d84ecf753eb6', dir: this.locale.sharedLocales.direction, class: cn('absolute top-0 left-0 pointer-events-none size-full box-content flex flex-col justify-center opacity-0 transition duration-500 items-center text-slate-700', {
|
|
518
518
|
'opacity-100 scale-100': isNoServicesAvailable,
|
|
519
|
-
}) }, h(EmptyTableIcon, { key: '
|
|
519
|
+
}) }, h(EmptyTableIcon, { key: 'a27ff22d00a9eaa4838d81eb9b89c6f49301736f', class: "size-[90px]" }), h("div", { key: '5c64b22e1433391a015dccab10c0ec37d2f92004', class: "text-[22px]" }, this.locale.sharedLocales.errors.noServiceAvailable)))))));
|
|
520
520
|
}
|
|
521
521
|
static get is() { return "vehicle-claimable-items"; }
|
|
522
522
|
static get encapsulation() { return "shadow"; }
|
|
@@ -335,22 +335,22 @@ export class VehicleItemClaimForm {
|
|
|
335
335
|
const isFormValid = this.getIsFormValid();
|
|
336
336
|
const hasDocuments = !!((_d = (_c = this.inputs) === null || _c === void 0 ? void 0 : _c.documents) === null || _d === void 0 ? void 0 : _d.length);
|
|
337
337
|
const showUploadProgress = this.isLoading && ((_e = this.item) === null || _e === void 0 ? void 0 : _e.showDocumentUploader) && hasDocuments;
|
|
338
|
-
return (h(Host, { key: '
|
|
338
|
+
return (h(Host, { key: 'dfa721300fb98c893f247372f2de9fddbba07e5e', translate: "no" }, h(ImageViewer, { key: '71707b85fdc518b0c9e377c5d5fe50fdeb8f6fd3', style: { 'z-index': '99999999' }, expandedImage: this.expandedImage, imageStyle: { 'z-index': '999999999' }, closeImageViewer: () => closeImageViewer.bind(this)() }), h("div", { key: '5528511e812402fc426a356d72d076f998d85b75', dir: this.locale.sharedLocales.direction, class: cn('claim-scrim fixed top-0 left-0 z-[999] w-[100dvw] h-[100dvh] overflow-y-auto overscroll-contain pointer-events-none transition duration-500 scale-[110%] opacity-0', {
|
|
339
339
|
'opacity-1 scale-100 pointer-events-auto': this.isOpened,
|
|
340
340
|
'compact': this.compact,
|
|
341
|
-
}) }, h("div", { key: '
|
|
342
|
-
warning.confirmationText))))))))), h("aside", { key: '
|
|
341
|
+
}) }, h("div", { key: 'a0bafc489eab356888b93d2e65a18c577238e3cc', class: "stage" }, h("div", { key: '6d3442bb216b475329923901e994232acce93ff9', class: cn('voucher', { side: !isBottomStub, bottom: isBottomStub, qr: isQRScannerForm }) }, h("button", { key: 'e8488f1141179eaca2bbd69e8fd2ae410369a9db', disabled: this.isLoading, onClick: this.close.bind(this), class: "btn-close", "aria-label": "Close" }, h(AddIcon, { key: 'eb58c2e25f30ab700ad14e723b5dac526381300a', class: "stroke-[1.5px]" })), h("section", { key: '2bbf81e8a0fe142b5cc14fcf6b36185bc76983e2', class: "v-body" }, h("div", { key: 'e6ba957329613aa3967fcc0da9850f6ad1aeb4e7', class: "item-row" }, h("div", { key: '9a99d5a5a7ee64c2990cd6ac781d01668c7b1747' }, !!((_f = this.item) === null || _f === void 0 ? void 0 : _f.type) && h("span", { key: 'c4bb8f384daf072cf5584edae06447ab96ff7df3', class: "item-type" }, this.item.type), h("div", { key: 'ac53358728ac2b01caa8b4276ed1d564a96e6ea3', class: "item-name" }, (_g = this.item) === null || _g === void 0 ? void 0 : _g.name)), h("div", { key: '7297983b82c0a926f0cece27b9e94b3ffac4fe85', class: "vin-stamp" }, h("div", { key: '48e80c5bda5961f2072930b452cc1864688d0af7', class: "lab" }, this.locale.vin), h("div", { key: '54c4c9b3f49bb1145beb49ffc6c5473d29332b48', class: "vin", dir: "ltr" }, this.vin), !!((_h = this.item) === null || _h === void 0 ? void 0 : _h.printUrl) && (h("button", { key: 'c7923872e635cd05e50cb6d1b588111610ae2d6f', class: "btn-print", onClick: () => { var _a; return (_a = window.open(this.item.printUrl, '_blank')) === null || _a === void 0 ? void 0 : _a.focus(); } }, h(PrinterIcon, { key: 'c661306cb71d96957361aaf57fdc67e1ceecb1c6' }), this.locale.print)))), h("div", { key: 'ba247787efb4de44f9625c4203054f0924dfeef6', class: "specs" }, h("div", { key: '22b0a8cde864ecf870b2f71ec1c039ac12086125', class: "spec" }, h("div", { key: '068447dbe1cfb5336995837eee2e3c049db1a763', class: "lab" }, this.locale.activationDate), h("div", { key: '4cd6dc0be3df47c701fa9ae5b732eb771befb2ad', class: "val", dir: "ltr" }, ((_j = this.item) === null || _j === void 0 ? void 0 : _j.activatedAt) || '—')), h("div", { key: '91fb411ade3a634375873d4fa466c9d0a1704549', class: "spec" }, h("div", { key: 'e4329555926da264de20b915408fc8fdf3a6726b', class: "lab" }, this.locale.expireDate), h("div", { key: '357e23015eabdcfbac0fb984a21964b96d51c229', class: "val", dir: "ltr" }, ((_k = this.item) === null || _k === void 0 ? void 0 : _k.expiresAt) || '—')), h("div", { key: '76e1136f4086c8f0887ae1376186077590b63671', class: "spec pkg" }, h("div", { key: '22e0e053939cfaeac44966126d50e8c3384a55b4', class: "lab" }, this.locale.packageCode), h("div", { key: '18dba510d560f639901e3f28aea5393ce33b4fcc', class: "val", dir: "ltr" }, ((_l = this.item) === null || _l === void 0 ? void 0 : _l.packageCode) || '—'))), Array.isArray((_m = this.item) === null || _m === void 0 ? void 0 : _m.warnings) && !!this.item.warnings.length && (h("div", { key: '84ff1f044b099055e77efa6e7e6dff8c15d343a8', class: "notices" }, this.item.warnings.map(warning => (h("div", { key: warning.key, class: cn('notice', { info: !(warning === null || warning === void 0 ? void 0 : warning.confirmationText) }) }, h("div", { class: "doc-row" }, h("div", { class: "ntc-body", innerHTML: warning.bodyContent }), (warning === null || warning === void 0 ? void 0 : warning.imageUrl) && (h("button", { class: "doc-thumb-btn", title: this.locale.expand, onClick: event => this.openWarningImage(event, warning === null || warning === void 0 ? void 0 : warning.imageUrl) }, h("span", { class: "thumb-overlay" }, h("img", { src: Eye }), this.locale.expand), h("img", { class: "doc-thumb", src: warning === null || warning === void 0 ? void 0 : warning.imageUrl })))), (warning === null || warning === void 0 ? void 0 : warning.confirmationText) && (h("div", { class: "confirm" }, h("label", { class: cn({ disabled: this.isLoading }) }, h("input", { type: "checkbox", class: "sr-only", disabled: this.isLoading, checked: !!this.confirmationStates[warning.key], onChange: this.onConfirmCheckboxChange(warning.key) }), h("span", { class: "cbx-face" }, h(CheckIcon, null)), warning === null || warning === void 0 ? void 0 :
|
|
342
|
+
warning.confirmationText))))))))), h("aside", { key: '3b704a2d1ebc36d028c5bd53027e60b223297c50', class: "stub" }, h("div", { key: '38c395c2c11beab0f9f0b779f4ccaea7f0500903', class: "perf" }), h("span", { key: 'ffdab5220aa5751b1a4457dfd405c8af6b8c3093', class: "punch p1" }), h("span", { key: '7a21360c2a6febd33259b315bf9e72bb38b87f5b', class: "punch p2" }), isQRScannerForm && h("div", { key: 'd5becfa26b6222ec84ed8885ddb55f5e2f045459', class: "field-label" }, this.locale.qrCode), h("div", { key: '3706f527a430972913fe6955b2f891ce5c62c6f5', class: "claim-area" }, isQRScannerForm ? (h("div", { class: cn('scanzone', { disabled: disableInputs }) }, h("div", { class: "sz-row" }, h("span", { class: "qr-ic" }, h(QrCodeScanIcon, null)), h("input", { dir: "ltr", autofocus: true, type: "text", spellcheck: "false", autocomplete: "off", disabled: disableInputs, onBlur: () => {
|
|
343
343
|
if (!this.claimError)
|
|
344
344
|
this.focusInputs();
|
|
345
345
|
}, onKeyDown: this.onKeyDown, value: (_o = this.inputs) === null || _o === void 0 ? void 0 : _o.qrCode, placeholder: this.locale.scanTheVoucher, onInput: event => this.setInputValue('qrCode', event.target.value) })), h("div", { class: "scan-hint" }, h("span", { class: "dot" }), this.locale.scanHint))) : ([
|
|
346
346
|
h("div", { class: "field", key: "invoice" }, h("label", null, this.locale.invoice), h("input", { dir: "ltr", autofocus: true, type: "text", spellcheck: "false", autocomplete: "off", disabled: disableInputs, onKeyDown: this.onKeyDown, value: (_p = this.inputs) === null || _p === void 0 ? void 0 : _p.invoice, placeholder: this.locale.invoice, onInput: event => this.setInputValue('invoice', event.target.value) })),
|
|
347
347
|
h("div", { class: "field", key: "jobNumber" }, h("label", null, this.locale.jobNumber), h("input", { dir: "ltr", type: "text", spellcheck: "false", autocomplete: "off", disabled: disableInputs, onKeyDown: this.onKeyDown, value: (_q = this.inputs) === null || _q === void 0 ? void 0 : _q.jobNumber, placeholder: this.locale.jobNumber, onInput: event => this.setInputValue('jobNumber', event.target.value) })),
|
|
348
|
-
]), ((_r = this.item) === null || _r === void 0 ? void 0 : _r.showDocumentUploader) && (h("div", { key: '
|
|
348
|
+
]), ((_r = this.item) === null || _r === void 0 ? void 0 : _r.showDocumentUploader) && (h("div", { key: 'e55801cca5a24088b2da068a0857ebe21b00356c', class: "upload-wrap" }, h("input", { key: 'c3a9262a34b3a06698ca23eadf1cd511d64c3b78', hidden: true, type: "file", class: "document-uploader", disabled: this.isLoading, accept: "image/*,application/pdf", onChange: this.onFileUploaderChange, multiple: this.uploadMultipleDocuments, "data-max-size": this.maximumDocumentFileSizeInMb * 1024 * 1024 }), h("div", { key: '2c2a7bb687fcdc1e08bcd46d55d01991157a35a1', class: cn('upload', { disabled: disableInputs }), onClick: this.onDocumentButtonClicked }, h("span", { key: 'f56558763a578d2711f25c6516781a9f4bfd4437', class: "ic" }, h(AttachIcon, { key: '2ebd3293be2c35f3058f5f28c8e047305a6d1e5e' })), h("span", { key: '42980687115cdc8aebea4627301011fa57b636b8', class: "upload-text" }, h("span", { key: '1f2d94bec57f5a2fd80a50a0ff3abfc6fa574f7c', class: "ut", title: this.uploadMultipleDocuments ? this.locale.uploadMultipleDocument : this.locale.uploadSingleDocument }, this.uploadMultipleDocuments ? this.locale.uploadMultipleDocument : this.locale.uploadSingleDocument, ((_s = this === null || this === void 0 ? void 0 : this.item) === null || _s === void 0 ? void 0 : _s.documentUploaderIsRequired) && !hasDocuments && h("span", { key: 'cb9a2a4b24a7abbce8723129f9e8e139b4a68dca', class: "req" }, "*")), h("span", { key: '88f2a50a9a61fda99c4428ac0a08be29fd08c420', class: "us" }, this.locale.uploadHint)), hasDocuments && (h("button", { key: 'b02e0cde0240af8ae98523d6382dd48fd8fa27b0', class: "upload-clear", onClick: this.clearFile, "aria-label": "Clear" }, h(AddIcon, { key: '640c53b9a8f705d195778a22f04a5bac92016946' })))), h("flexible-container", { key: '4d8d03d740177dc0167062d589113e0a05a84536', isOpened: !!((_u = (_t = this.errors) === null || _t === void 0 ? void 0 : _t.documents) === null || _u === void 0 ? void 0 : _u.show) }, h("div", { key: 'be97a54285f4f9f2331fdb8022a054297407ad02', class: "upload-error" }, ((_w = (_v = this.errors) === null || _v === void 0 ? void 0 : _v.documents) === null || _w === void 0 ? void 0 : _w.text) === 'documentLimitError'
|
|
349
349
|
? this.locale.documentLimitError + `${this.maximumDocumentFileSizeInMb}Mb`
|
|
350
|
-
: this.locale.documentRequiredError || this.locale.sharedLocales.errors.wildCard)), h("flexible-container", { key: '
|
|
350
|
+
: this.locale.documentRequiredError || this.locale.sharedLocales.errors.wildCard)), h("flexible-container", { key: '86a275dc553a892a5abfdcc3680a4fc57bbda6df', isOpened: hasDocuments, containerClasses: "" }, h("div", { key: '46c5ce3684baddb2598ef49d715f1d7e1e84ec6e', class: "chips" }, (_y = (_x = this.inputs) === null || _x === void 0 ? void 0 : _x.documents) === null || _y === void 0 ? void 0 : _y.map((doc, idx) => (h("div", { class: cn('chip', { disabled: disableInputs }) }, h("span", { title: doc.name }, doc.name), h("button", { disabled: disableInputs, onClick: () => this.clearFile(idx), "aria-label": "Remove" }, h(AddIcon, null))))))))), h("div", { key: 'd6f8c4f335fccc507cf182c9b262e86d0c09896a', class: "stub-spacer" }), h("button", { key: '34fe61c1d65a26726f44832cc656dfed27c65cc1', class: cn('btn-claim', { loading: this.isLoading }), onClick: this.submit, disabled: !isFormValid || disableInputs }, this.isLoading && h("span", { key: '91789e237e1e7ae69fd57fa72d14e8eab1c6550f', class: "claim-progress", style: { width: `${showUploadProgress ? this.uploadProgress : 100}%` } }), h("span", { key: 'ae904877057a7b0d7cec840534676b90c682d700', class: "claim-label" }, !this.isLoading && h(CheckIcon, { key: '00a4eb17e9a39e95534eb6f938de345ab2d6916c' }), h("span", { key: '364060dbf8aceddccf97050fbcbd21b4f60cc944' }, this.isLoading ? `${this.locale.processing}${showUploadProgress ? ` ${this.uploadProgress}%` : ''}` : this.locale.claim))))))), !!this.claimError && (h("div", { key: '5dc91e936df9890620a77e78665fd4cc1040559f', class: "err-scrim", onClick: event => {
|
|
351
351
|
if (event.target === event.currentTarget)
|
|
352
352
|
this.dismissError();
|
|
353
|
-
} }, h("div", { key: '
|
|
353
|
+
} }, h("div", { key: '042222287cefdee8be5a351cebd06cc729679aee', class: "err-card", role: "alertdialog", "aria-modal": "true" }, h("button", { key: 'ec05fb9e5bca5622b4d48a11df066caaff2d8aa7', class: "btn-close", onClick: this.dismissError, "aria-label": "Close" }, h(AddIcon, { key: '0ac641a87095ea4f0321dff554db2d955938b156', class: "stroke-[1.5px]" })), h("div", { key: '6db7a47a0ed3e650cdad19af9f90bb077304568f', class: "err-head" }, h("span", { key: 'f5acd69a8c6a9e83c8f7d0d1a55167101e29f747', class: "err-ic" }, h(TriangleAlertIcon, { key: '94476ccbbf12988c4c481b81202a7eeefc632644' })), h("span", { key: '13d43261be7df1fb9acfe5bea3838c7956b137fb', class: "err-title" }, this.locale.claimFailed)), h("div", { key: 'd095d495bebef6137b04a1973dc88fcc63229675', class: "err-msg" }, this.claimError), h("div", { key: 'd9a77b8ed7fdab0bae9ca8bfe978bc1bfc661782', class: "err-foot" }, h("button", { key: '94b2d72e59a6297218b6c39210bec74653f1a54a', class: "btn-err-ok", onClick: this.dismissError }, this.locale.ok))))))));
|
|
354
354
|
}
|
|
355
355
|
static get is() { return "vehicle-item-claim-form"; }
|
|
356
356
|
static get encapsulation() { return "shadow"; }
|
|
@@ -470,7 +470,7 @@ export class VehicleItemClaimForm {
|
|
|
470
470
|
"mutable": false,
|
|
471
471
|
"complexType": {
|
|
472
472
|
"original": "{ sharedLocales: SharedLocales } & ClaimFormType",
|
|
473
|
-
"resolved": "{ sharedLocales: {
|
|
473
|
+
"resolved": "{ sharedLocales: { direction?: string; lang?: string; language?: string; noData?: string; errors?: { noBaseUrl?: string; invalidVin?: string; vinNumberRequired?: string; partNumberRequired?: string; wrongResponseFormat?: string; noPartsFound?: string; noServiceAvailable?: string; wrongFormStructure?: string; wildCard?: string; requestFailedPleaseTryAgainLater?: string; }; }; } & { name?: string; vin?: string; uploadSingleDocument?: string; uploadMultipleDocument?: string; uploadHint?: string; serviceType?: string; print?: string; expand?: string; documentLimitError?: string; documentRequiredError?: string; activationDate?: string; expireDate?: string; packageCode?: string; scanTheVoucher?: string; scanHint?: string; qrCode?: string; processing?: string; enterServiceInfo?: string; invoice?: string; jobNumber?: string; claim?: string; claimFailed?: string; ok?: string; }",
|
|
474
474
|
"references": {
|
|
475
475
|
"SharedLocales": {
|
|
476
476
|
"location": "import",
|
|
@@ -15,6 +15,7 @@ const componentTags = {
|
|
|
15
15
|
vehicleClaimableItems: 'vehicle-claimable-items',
|
|
16
16
|
vehicleSaleInformation: 'vehicle-sale-information',
|
|
17
17
|
vehicleWarrantyDetails: 'vehicle-warranty-details',
|
|
18
|
+
vehicleWarrantyTimeline: 'vehicle-warranty-timeline',
|
|
18
19
|
vehicleSsc: 'vehicle-ssc',
|
|
19
20
|
};
|
|
20
21
|
export class VehicleLookup {
|
|
@@ -70,6 +71,7 @@ export class VehicleLookup {
|
|
|
70
71
|
const vehicleClaim = this.el.shadowRoot.getElementById('vehicle-claimable-items');
|
|
71
72
|
const vehicleHistory = this.el.shadowRoot.getElementById('vehicle-service-history');
|
|
72
73
|
const vehicleDetails = this.el.shadowRoot.getElementById('vehicle-warranty-details');
|
|
74
|
+
const vehicleTimeline = this.el.shadowRoot.getElementById('vehicle-warranty-timeline');
|
|
73
75
|
const vehicleThickness = this.el.shadowRoot.getElementById('vehicle-paint-thickness');
|
|
74
76
|
const vehicleSpecification = this.el.shadowRoot.getElementById('vehicle-specification');
|
|
75
77
|
const vehicleSaleInformation = this.el.shadowRoot.getElementById('vehicle-sale-information');
|
|
@@ -78,6 +80,7 @@ export class VehicleLookup {
|
|
|
78
80
|
[componentTags.vehicleClaimableItems]: vehicleClaim,
|
|
79
81
|
[componentTags.vehicleServiceHistory]: vehicleHistory,
|
|
80
82
|
[componentTags.vehicleWarrantyDetails]: vehicleDetails,
|
|
83
|
+
[componentTags.vehicleWarrantyTimeline]: vehicleTimeline,
|
|
81
84
|
[componentTags.vehicleAccessories]: vehicleAccessories,
|
|
82
85
|
[componentTags.vehiclePaintThickness]: vehicleThickness,
|
|
83
86
|
[componentTags.vehicleSpecification]: vehicleSpecification,
|
|
@@ -182,6 +185,7 @@ export class VehicleLookup {
|
|
|
182
185
|
[componentTags.vehiclePaintThickness]: {},
|
|
183
186
|
[componentTags.vehicleServiceHistory]: {},
|
|
184
187
|
[componentTags.vehicleWarrantyDetails]: {},
|
|
188
|
+
[componentTags.vehicleWarrantyTimeline]: {},
|
|
185
189
|
[componentTags.vehicleSaleInformation]: {},
|
|
186
190
|
[componentTags.vehicleSsc]: {},
|
|
187
191
|
};
|
|
@@ -207,7 +211,7 @@ export class VehicleLookup {
|
|
|
207
211
|
.filter(Boolean));
|
|
208
212
|
if (!Object.values(componentTags).includes(this.activeElement) || hiddenSet.has(this.activeElement))
|
|
209
213
|
return h("div", { class: "w-full h-[200px] text-[26px] text-red-600 flex items-center justify-center" }, "Invalid tag");
|
|
210
|
-
const allComponents = Object.assign(Object.assign({ 'vehicle-specification': (h("vehicle-specification", Object.assign({ coreOnly: true, isDev: this.isDev, disableVinValidation: this.disableVinValidation, "base-url": this.baseUrl, language: this.language, "query-string": this.queryString, id: componentTags.vehicleSpecification }, props[componentTags.vehicleSpecification]))), 'vehicle-accessories': (h("vehicle-accessories", Object.assign({ coreOnly: true, isDev: this.isDev, disableVinValidation: this.disableVinValidation, "base-url": this.baseUrl, language: this.language, "query-string": this.queryString, id: componentTags.vehicleAccessories }, props[componentTags.vehicleAccessories]))), 'vehicle-sale-information': (h("vehicle-sale-information", Object.assign({ coreOnly: true, isDev: this.isDev, disableVinValidation: this.disableVinValidation, "base-url": this.baseUrl, language: this.language, "query-string": this.queryString, id: componentTags.vehicleSaleInformation }, props[componentTags.vehicleSaleInformation]))), 'vehicle-warranty-details': (h("vehicle-warranty-details", Object.assign({ coreOnly: true, "show-ssc": !this.separateSsc, isDev: this.isDev, mockRecaptcha: this.mockRecaptcha, disableVinValidation: this.disableVinValidation, "show-warranty": "true", "base-url": this.baseUrl, language: this.language, "query-string": !this.separateSsc && this.sscQueryString ? [this.queryString, this.sscQueryString].filter(Boolean).join('&') : this.queryString, id: componentTags.vehicleWarrantyDetails }, props[componentTags.vehicleWarrantyDetails]))) }, (this.separateSsc
|
|
214
|
+
const allComponents = Object.assign(Object.assign({ 'vehicle-specification': (h("vehicle-specification", Object.assign({ coreOnly: true, isDev: this.isDev, disableVinValidation: this.disableVinValidation, "base-url": this.baseUrl, language: this.language, "query-string": this.queryString, id: componentTags.vehicleSpecification }, props[componentTags.vehicleSpecification]))), 'vehicle-accessories': (h("vehicle-accessories", Object.assign({ coreOnly: true, isDev: this.isDev, disableVinValidation: this.disableVinValidation, "base-url": this.baseUrl, language: this.language, "query-string": this.queryString, id: componentTags.vehicleAccessories }, props[componentTags.vehicleAccessories]))), 'vehicle-sale-information': (h("vehicle-sale-information", Object.assign({ coreOnly: true, isDev: this.isDev, disableVinValidation: this.disableVinValidation, "base-url": this.baseUrl, language: this.language, "query-string": this.queryString, id: componentTags.vehicleSaleInformation }, props[componentTags.vehicleSaleInformation]))), 'vehicle-warranty-details': (h("vehicle-warranty-details", Object.assign({ coreOnly: true, "show-ssc": !this.separateSsc, isDev: this.isDev, mockRecaptcha: this.mockRecaptcha, disableVinValidation: this.disableVinValidation, "show-warranty": "true", "base-url": this.baseUrl, language: this.language, "query-string": !this.separateSsc && this.sscQueryString ? [this.queryString, this.sscQueryString].filter(Boolean).join('&') : this.queryString, id: componentTags.vehicleWarrantyDetails }, props[componentTags.vehicleWarrantyDetails]))), 'vehicle-warranty-timeline': (h("vehicle-warranty-timeline", Object.assign({ coreOnly: true, isDev: this.isDev, disableVinValidation: this.disableVinValidation, "base-url": this.baseUrl, language: this.language, "query-string": this.queryString, id: componentTags.vehicleWarrantyTimeline }, props[componentTags.vehicleWarrantyTimeline]))) }, (this.separateSsc
|
|
211
215
|
? {
|
|
212
216
|
'vehicle-ssc': (h("vehicle-warranty-details", Object.assign({ coreOnly: true, "show-ssc": "true", isDev: this.isDev, mockRecaptcha: this.mockRecaptcha, disableVinValidation: this.disableVinValidation, "show-warranty": "false", "base-url": this.baseUrl, language: this.language, "query-string": [this.queryString, this.sscQueryString].filter(Boolean).join('&'), id: componentTags.vehicleSsc }, props[componentTags.vehicleSsc]))),
|
|
213
217
|
}
|
|
@@ -267,7 +271,7 @@ export class VehicleLookup {
|
|
|
267
271
|
"mutable": false,
|
|
268
272
|
"complexType": {
|
|
269
273
|
"original": "ActiveElement",
|
|
270
|
-
"resolved": "\"\" | \"vehicle-accessories\" | \"vehicle-claimable-items\" | \"vehicle-paint-thickness\" | \"vehicle-sale-information\" | \"vehicle-service-history\" | \"vehicle-specification\" | \"vehicle-ssc\" | \"vehicle-warranty-details\"",
|
|
274
|
+
"resolved": "\"\" | \"vehicle-accessories\" | \"vehicle-claimable-items\" | \"vehicle-paint-thickness\" | \"vehicle-sale-information\" | \"vehicle-service-history\" | \"vehicle-specification\" | \"vehicle-ssc\" | \"vehicle-warranty-details\" | \"vehicle-warranty-timeline\"",
|
|
271
275
|
"references": {
|
|
272
276
|
"ActiveElement": {
|
|
273
277
|
"location": "local",
|
|
@@ -165,11 +165,11 @@ export class VehicleSaleInformation {
|
|
|
165
165
|
];
|
|
166
166
|
const filteredFields = FIELDS.filter(field => !hiddenFields.includes(field.fieldName));
|
|
167
167
|
const filteredEndCustomerFields = END_CUSTOMER_FIELDS.filter(field => !hiddenFields.includes(field.fieldName));
|
|
168
|
-
return (h(Host, { key: '
|
|
168
|
+
return (h(Host, { key: '83d8b7666eb93b40fbc0fbb963603cc74d2acde8', translate: "no" }, h(VehicleInfoLayout, { key: '7247ffd68231ff88d931346551e74203ad05f857', isError: this.isError, coreOnly: this.coreOnly, isLoading: this.isLoading, header: (_q = this.vehicleLookup) === null || _q === void 0 ? void 0 : _q.vin, direction: this.locale.sharedLocales.direction, errorMessage: this.locale.sharedLocales.errors[this.errorMessage] || this.locale.sharedLocales.errors.wildCard }, h("flexible-container", { key: '8a8da84882eb2c9a522a5e2c0ef64b6f923e79fc' }, h("flexible-container", { key: 'fdc5d3ed4d057a6d5f1e3fcbe82b498936323cb4', classes: cn({ loading: this.isLoading || this.isError || !this.vehicleLookup }), isOpened: !!this.vehicleLookup && !this.isError }, h("div", { key: '7e49581a4b83c9c075fa250b487f07e8daf4ee10', class: "p-[16px] mx-auto !pb-0 max-w-[520px]" }, h("div", { key: '7dd4ae69f32fdbf15bbe9fdddab5c1c460c00f1d', class: cn('relative shift-skeleton !rounded-[12px] shift-card', { 'shift-card-warning': !hasEndCustomer }) }, h("div", { key: '3fbb61d18adac8b428f49477bfd8ccb4e80d571e', class: cn('absolute flex size-full left-0 top-0 px-[12px] items-center justify-center p-[12px] transition-opacity', !hasEndCustomer ? 'opacity-100' : 'opacity-0 pointer-events-none select-none') }, h("div", { key: '5b6a10a401655c098ea2d3a761f7dc47c82182b3', class: "w-full max-w-[460px] rounded-[14px] px-[14px] py-[12px]" }, h("div", { key: '0778642e8703e64b297b5671e9c87704ef4fe113', class: "size-full flex flex-col justify-start gap-[12px] items-center" }, h("span", { key: '124a1e092988e291f9461ba2cf0361a3961ed99b', class: "shift-card-icon", "aria-hidden": "true" }, h(TriangleAlertIcon, { key: '4eaafd886053f7f9089d64664418baa150a63919' })), h("p", { key: '67b701a8af6d48422f46a373e23d316c023b5941', class: "mt-[4px] text-[13.5px] text-center text-amber-900/90 leading-[1.35]" }, texts['Vehicle has no end customer.'] || '')))), h("div", { key: 'f34bfb5518ae68dd8c003e38349525039cabf7ad', class: cn('transition-opacity', !hasEndCustomer ? 'opacity-0 pointer-events-none select-none' : 'opacity-100') }, h("h2", { key: 'e879d3e6575d7534c6891ad67ac75866a094d31b', class: "shift-card-header" }, texts.customerInformation), h("div", { key: '880bc54b1a2334190e5fbc4f0d3aea004dd0c091', class: "flex flex-col gap-[2px]" }, filteredEndCustomerFields.map(field => {
|
|
169
169
|
const value = field.value || '';
|
|
170
170
|
const Icon = field.Icon;
|
|
171
171
|
return (h("div", { class: "flex gap-[12px] items-start" }, h("span", { class: "shift-card-icon", "aria-hidden": "true" }, h(Icon, null)), h("div", { class: "flex flex-col translate-y-[-4px]" }, h("div", { class: "shift-card-seconary-text" }, field.title, ":"), h("div", { class: cn('shift-card-primary-text translate-y-[-4px]', { 'shift-card-empty-text': !value }) }, value || '—'))));
|
|
172
|
-
})))))), h("div", { key: '
|
|
172
|
+
})))))), h("div", { key: '61c5b56c2a7cebbf21f7159102c75e3bc3048176', class: "flex p-[16px] [&>div]:grow overflow-auto gap-[16px] items-stretch justify-center md:justify-between flex-wrap" }, filteredFields.map(field => (h(MaterialCard, { title: field.title, desc: field.value, minWidth: "250px" }))), !hiddenFields.includes('intermediaries') &&
|
|
173
173
|
((sale === null || sale === void 0 ? void 0 : sale.intermediaries) || []).map(intermediary => h(MaterialCard, { title: texts.intermediaryName, desc: getText(intermediary === null || intermediary === void 0 ? void 0 : intermediary.companyName), minWidth: "250px" })))))));
|
|
174
174
|
}
|
|
175
175
|
static get is() { return "vehicle-sale-information"; }
|
|
@@ -56,7 +56,7 @@ export class VehicleServiceHistory {
|
|
|
56
56
|
{ key: 'serviceType', label: this.locale.serviceType, maxWidth: 420 },
|
|
57
57
|
{ key: 'mileage', label: this.locale.odometer, nowrap: true },
|
|
58
58
|
];
|
|
59
|
-
return (h(Host, { key: '
|
|
59
|
+
return (h(Host, { key: '214ea7f9322f4ded5dfe88ed30ec4b5e6e596205', translate: "no" }, h(VehicleInfoLayout, { key: '2ab295e79de66098a037002316eaf9d25eb86ca6', isError: this.isError, coreOnly: this.coreOnly, isLoading: this.isLoading, header: (_a = this.vehicleLookup) === null || _a === void 0 ? void 0 : _a.vin, direction: this.locale.sharedLocales.direction, errorMessage: this.locale.sharedLocales.errors[this.errorMessage] || this.locale.sharedLocales.errors.wildCard }, h("div", { key: 'ceebe28112ce490245ebb6f4d37638138f74163a', class: "overflow-x-auto" }, h("information-table", { key: '38bfb22243c4c209794a3d1297be43cf5bd43f20', size: "small", allowAutoWidth: true, scrollExpandedIntoView: true, expandUsingEntireRow: true, headers: tableHeaders, isLoading: this.isLoading, rows: ((_b = this.vehicleLookup) === null || _b === void 0 ? void 0 : _b.serviceHistory) || [], subRowRenderer: (row) => h(ServiceHistorySubRow, { row: row, locale: this.locale }) })))));
|
|
60
60
|
}
|
|
61
61
|
static get is() { return "vehicle-service-history"; }
|
|
62
62
|
static get encapsulation() { return "shadow"; }
|