@bytebrand/fe-ui-core-autobahn 1.0.1 → 1.0.2
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/assets/autode-logo.svg +6 -6
- package/cards/CarCard.tsx +174 -174
- package/cards/CarRow.tsx +186 -182
- package/cards/cardParts.tsx +529 -489
- package/cards/index.ts +37 -35
- package/cards/types.ts +122 -114
- package/chrome/Footer.tsx +189 -189
- package/chrome/TopBar.tsx +405 -405
- package/chrome/index.ts +20 -20
- package/chrome/svg.d.ts +11 -11
- package/compat/AccardionSection/AccardionSection.styl +45 -45
- package/compat/AccardionSection/AccardionSection.tsx +56 -56
- package/compat/AccordionWidget/AccordionWidget.styl +220 -220
- package/compat/AccordionWidget/AccordionWidget.tsx +257 -257
- package/compat/AccordionWrapper/AccordionItem/AccordionItem.styl +34 -34
- package/compat/AccordionWrapper/AccordionItem/AccordionItem.tsx +64 -64
- package/compat/AccordionWrapper/AccordionWrapper.tsx +34 -34
- package/compat/AdvantageItem/AdvantageItem.styl +47 -47
- package/compat/AdvantageItem/AdvantageItem.tsx +26 -26
- package/compat/Alternative/DealerInfo.styl +116 -116
- package/compat/Alternative/DealerInfo.tsx +171 -171
- package/compat/Badge/Badge.styl +44 -44
- package/compat/Badge/Badge.tsx +25 -25
- package/compat/BodyTypeIcons/Audi.tsx +9 -9
- package/compat/BodyTypeIcons/Bmw.tsx +860 -860
- package/compat/BodyTypeIcons/Ford.tsx +31 -31
- package/compat/BodyTypeIcons/IconsConfig.tsx +44 -44
- package/compat/BodyTypeIcons/IconsConfigCompact.tsx +30 -30
- package/compat/BodyTypeIcons/Mazda.tsx +44 -44
- package/compat/BodyTypeIcons/MercedesBenz.tsx +38 -38
- package/compat/BodyTypeIcons/Opel.tsx +19 -19
- package/compat/BodyTypeIcons/Search.tsx +19 -19
- package/compat/BodyTypeIcons/SelectorCategoryCombi.tsx +68 -68
- package/compat/BodyTypeIcons/SelectorCategoryCompact.tsx +20 -20
- package/compat/BodyTypeIcons/SelectorCategoryConvertible.tsx +68 -68
- package/compat/BodyTypeIcons/SelectorCategoryCoupe.tsx +60 -60
- package/compat/BodyTypeIcons/SelectorCategoryMinibus.tsx +64 -64
- package/compat/BodyTypeIcons/SelectorCategorySedan.tsx +69 -69
- package/compat/BodyTypeIcons/SelectorCategorySuv.tsx +77 -77
- package/compat/BodyTypeIcons/SelectorCategoryTransporter.tsx +68 -68
- package/compat/BodyTypeIcons/SelectorCategoryVan.tsx +72 -72
- package/compat/BodyTypeIcons/Volkswagen.tsx +330 -330
- package/compat/BodyTypeIcons/index.ts +17 -17
- package/compat/Button/Button.tsx +65 -65
- package/compat/ButtonOld/Button.styl +65 -65
- package/compat/ButtonOld/Button.tsx +84 -84
- package/compat/Checkbox/Checkbox.styl +119 -119
- package/compat/Checkbox/Checkbox.tsx +151 -151
- package/compat/Checkbox/FormCheckbox.styl +22 -22
- package/compat/Checkbox/FormCheckbox.tsx +86 -86
- package/compat/Co2Widget/CO2Efficiency.styl +219 -219
- package/compat/Co2Widget/CO2Efficiency.tsx +93 -93
- package/compat/ContactInfo/ContactInfo.styl +22 -22
- package/compat/ContactInfo/ContactInfo.tsx +161 -161
- package/compat/ContactInfo/TemporaryTranslation.ts +11 -11
- package/compat/CookieModal/CookieModal.tsx +49 -49
- package/compat/CookieModal/Modal.tsx +43 -43
- package/compat/CookieModal/ModalsConfig.tsx +23 -23
- package/compat/CookieModal/modals/ManageCookieModal/ManageCookieModal.styl +86 -86
- package/compat/CookieModal/modals/ManageCookieModal/ManageCookieModal.tsx +184 -184
- package/compat/CookieModal/modals/PreviewCookieModal/PreviewCookieModal.styl +66 -66
- package/compat/CookieModal/modals/PreviewCookieModal/PreviewCookieModal.tsx +51 -51
- package/compat/CookieModal/modals/TestModal.tsx +7 -7
- package/compat/CookieModal/useModal.ts +13 -13
- package/compat/CustomerQuote/CustomerQuote.styl +79 -79
- package/compat/CustomerQuote/CustomerQuote.tsx +68 -68
- package/compat/CustomerQuotesSlider/CustomerQuotesSlider.styl +46 -46
- package/compat/CustomerQuotesSlider/CustomerQuotesSlider.tsx +79 -79
- package/compat/CustomerQuotesSlider/SliderArrow.tsx +20 -20
- package/compat/CustomerQuotesSlider/slider.global.styl +2 -2
- package/compat/ExpansionPanel/ExpansionPanel.tsx +68 -68
- package/compat/FirstInfoBlock/FirstInfoBlock.styl +33 -33
- package/compat/FirstInfoBlock/FirstInfoBlock.tsx +49 -49
- package/compat/FirstInfoBlock/FirstInfoBlockItem/FirstInfoBlockItem.styl +66 -66
- package/compat/FirstInfoBlock/FirstInfoBlockItem/FirstInfoBlockItem.tsx +21 -21
- package/compat/FormattedNumber/FormattedNumber.styl +1 -1
- package/compat/FormattedNumber/FormattedNumber.tsx +90 -90
- package/compat/IconContainer/IconContainer.styl +23 -23
- package/compat/IconContainer/IconContainer.tsx +34 -34
- package/compat/Image/Image.styl +109 -109
- package/compat/Image/Image.tsx +302 -302
- package/compat/ImageSettings/EditableOptionsTable/CustomCheckbox/CustomCheckbox.styl +7 -7
- package/compat/ImageSettings/EditableOptionsTable/CustomCheckbox/CustomCheckbox.tsx +30 -30
- package/compat/ImageSettings/EditableOptionsTable/EditableOptionsTable.styl +122 -122
- package/compat/ImageSettings/EditableOptionsTable/EditableOptionsTable.tsx +199 -199
- package/compat/ImageSettings/EditableOptionsTable/ImageIcon/ImageIcon.styl +3 -3
- package/compat/ImageSettings/EditableOptionsTable/ImageIcon/ImageIcon.tsx +15 -15
- package/compat/ImageSettings/OptionsTable/OptionsTable.styl +47 -47
- package/compat/ImageSettings/OptionsTable/OptionsTable.tsx +122 -122
- package/compat/ImageSettings/PricePlan/PricePlan.styl +63 -63
- package/compat/ImageSettings/PricePlan/PricePlan.tsx +32 -32
- package/compat/ImageSettings/index.ts +42 -42
- package/compat/ImagesSet/ImagesSet.styl +27 -27
- package/compat/ImagesSet/ImagesSet.tsx +76 -76
- package/compat/InfoBlockWrapper/InfoBlockWrapper.styl +41 -41
- package/compat/InfoBlockWrapper/InfoBlockWrapper.tsx +46 -46
- package/compat/Loader/Loader.styl +39 -39
- package/compat/Loader/Loader.tsx +32 -32
- package/compat/MagnifyGlass/MagnifyGlass.styl +33 -33
- package/compat/MagnifyGlass/MagnifyGlass.tsx +213 -213
- package/compat/MdAccordionGroup/MdAccordionGroup.tsx +53 -53
- package/compat/MdCheckbox/MdCheckbox.tsx +69 -69
- package/compat/MdField/MdField.tsx +100 -100
- package/compat/MdSelect/MdSelect.tsx +103 -103
- package/compat/MdSwitch/MdSwitch.tsx +29 -29
- package/compat/MdTabs/MdTabs.tsx +47 -47
- package/compat/MdTooltip/MdTooltip.tsx +31 -31
- package/compat/OfferDetailedSection/OfferDetailedSection.styl +31 -31
- package/compat/OfferDetailedSection/OfferDetailedSection.tsx +100 -100
- package/compat/OfferDetailedSection/partials/PanelConfig.styl +131 -131
- package/compat/OfferDetailedSection/partials/PanelConfig.tsx +121 -121
- package/compat/OfferPanel/AboAccordion/AboAccordion.styl +24 -24
- package/compat/OfferPanel/AboAccordion/AboAccordion.tsx +128 -128
- package/compat/OfferPanel/AboAccordion/AboColorOptions/AboColorOptions.styl +11 -11
- package/compat/OfferPanel/AboAccordion/AboColorOptions/AboColorOptions.tsx +35 -35
- package/compat/OfferPanel/AboAccordion/AboFaq/AboFaq.styl +20 -20
- package/compat/OfferPanel/AboAccordion/AboFaq/AboFaq.tsx +25 -25
- package/compat/OfferPanel/AboAccordion/AboIncludedServices/AboIncludedServices.styl +13 -13
- package/compat/OfferPanel/AboAccordion/AboIncludedServices/AboIncludedServices.tsx +39 -39
- package/compat/OfferPanel/MuiOfferPeriod/MuiOfferPeriod.tsx +42 -42
- package/compat/OfferPanel/OfferCheckboxGroup/CheckboxContainer.tsx +140 -140
- package/compat/OfferPanel/OfferCheckboxGroup/OfferCheckboxGroup.styl +144 -144
- package/compat/OfferPanel/OfferCheckboxGroup/OfferCheckboxGroup.tsx +23 -23
- package/compat/OfferPanel/OfferPanel.styl +193 -193
- package/compat/OfferPanel/OfferPanel.tsx +81 -81
- package/compat/OfferPanel/OfferPeriod/OfferPeriod.styl +24 -24
- package/compat/OfferPanel/OfferPeriod/OfferPeriod.tsx +45 -45
- package/compat/OfferPanel/RangeGroup/RangeGroup.tsx +39 -39
- package/compat/OfferRequestButtonWrapper/OfferRequestButtonWrapper.styl +119 -119
- package/compat/OfferRequestButtonWrapper/OfferRequestButtonWrapper.styled.tsx +33 -33
- package/compat/OfferRequestButtonWrapper/OfferRequestButtonWrapper.tsx +122 -122
- package/compat/PriceRating/PriceRating.styl +47 -47
- package/compat/PriceRating/PriceRating.tsx +64 -64
- package/compat/PriceRatingDetailed/PriceRatingDetailed.styl +120 -120
- package/compat/PriceRatingDetailed/PriceRatingDetailed.tsx +191 -191
- package/compat/PricingToolBlock/PricingTool.styl +6 -6
- package/compat/PricingToolBlock/PricingTool.tsx +29 -29
- package/compat/Radio/Radio.styl +115 -115
- package/compat/Radio/Radio.tsx +141 -141
- package/compat/Radio/RadioGroup.styl +5 -5
- package/compat/Radio/RadioGroup.tsx +65 -65
- package/compat/Range/Range.tsx +79 -79
- package/compat/RateSearchValue/RateSearchValue.styl +22 -22
- package/compat/RateSearchValue/RateSearchValue.tsx +55 -55
- package/compat/RateSearchWidget/RateSearchWidget.styl +106 -106
- package/compat/RateSearchWidget/RateSearchWidget.tsx +163 -163
- package/compat/ServiceBlockItem/ServiceBlockItem.styl +47 -47
- package/compat/ServiceBlockItem/ServiceBlockItem.tsx +25 -25
- package/compat/SkeletonItem/SkeletonItem.styl +80 -80
- package/compat/SkeletonItem/SkeletonItem.tsx +80 -80
- package/compat/StarButton/StarButton.styl +39 -39
- package/compat/StarButton/StarButton.tsx +31 -31
- package/compat/TabPanel/TabPanel.tsx +28 -28
- package/compat/TimePicker/TimePicker.styl +22 -22
- package/compat/TimePicker/TimePicker.tsx +156 -156
- package/compat/Tooltip/Tooltip.styl +117 -117
- package/compat/Tooltip/Tooltip.tsx +63 -63
- package/compat/Usp/Usp.styl +78 -78
- package/compat/Usp/Usp.tsx +30 -30
- package/compat/Usp/uspTranslate.ts +12 -12
- package/compat/VehicleDetailedSidebar/VehicleDetailedSidebar.styl +36 -36
- package/compat/VehicleDetailedSidebar/VehicleDetailedSidebar.tsx +178 -178
- package/compat/VehicleDetailedSidebar/partials/Price.styl +27 -27
- package/compat/VehicleDetailedSidebar/partials/Price.tsx +41 -41
- package/compat/VehicleDetailedSidebar/partials/PriceContent.styl +123 -123
- package/compat/VehicleDetailedSidebar/partials/PriceContent.tsx +128 -128
- package/compat/VehicleDetailedSidebar/partials/Properties.styl +58 -58
- package/compat/VehicleDetailedSidebar/partials/Properties.tsx +155 -155
- package/compat/VehicleDetailedSidebar/partials/Title.styl +35 -35
- package/compat/VehicleDetailedSidebar/partials/Title.tsx +33 -33
- package/compat/VehicleDetailedSlider/VehicleDetailedSlider.styl +146 -146
- package/compat/VehicleDetailedSlider/VehicleDetailedSlider.tsx +382 -382
- package/compat/VehicleDetailedSlider/partials/MobileStast.tsx +61 -61
- package/compat/VehicleDetailedSlider/partials/MobileStats.styl +71 -71
- package/compat/VehicleDetailedSlider/partials/PriceData.styl +50 -50
- package/compat/VehicleDetailedSlider/partials/PriceData.tsx +67 -67
- package/compat/VehicleDetailedSlider/partials/Stats.styl +80 -80
- package/compat/VehicleDetailedSlider/partials/Stats.tsx +62 -62
- package/compat/VehicleDetailedSlider/partials/Title.styl +44 -44
- package/compat/VehicleDetailedSlider/partials/Title.tsx +36 -36
- package/compat/VehicleFormattedPrice/VehicleFormattedPrice.styl +148 -148
- package/compat/VehicleFormattedPrice/VehicleFormattedPrice.tsx +163 -163
- package/compat/VehicleSlider/VehicleSlider.styl +62 -62
- package/compat/VehicleSlider/VehicleSlider.tsx +125 -125
- package/compat/VehicleSlider/VehicleSliderForSRL.tsx +175 -175
- package/compat/VehicleSmallCard/SeoText/SeoText.styl +8 -8
- package/compat/VehicleSmallCard/SeoText/SeoText.tsx +16 -16
- package/compat/VehicleSmallCard/VehicleData/VechiclePriceItem/VechiclePriceItem.styl +204 -204
- package/compat/VehicleSmallCard/VehicleData/VechiclePriceItem/VechiclePriceItem.tsx +199 -199
- package/compat/VehicleSmallCard/VehicleData/VehicleInfo/VehicleInfo.styl +273 -273
- package/compat/VehicleSmallCard/VehicleData/VehicleInfo/VehicleInfo.tsx +179 -179
- package/compat/VehicleSmallCard/VehicleData/VehiclePrice/VehiclePrice.styl +165 -165
- package/compat/VehicleSmallCard/VehicleData/VehiclePrice/VehiclePrice.tsx +299 -299
- package/compat/VehicleSmallCard/VehicleData/VehicleProperty/VehicleProperty.styl +32 -32
- package/compat/VehicleSmallCard/VehicleData/VehicleProperty/VehicleProperty.tsx +35 -35
- package/compat/VehicleSmallCard/VehicleData/VehicleTitle/VehicleTitle.styl +135 -135
- package/compat/VehicleSmallCard/VehicleData/VehicleTitle/VehicleTitle.tsx +91 -91
- package/compat/VehicleSmallCard/VehicleSmallCard.styl +309 -309
- package/compat/VehicleSmallCard/VehicleSmallCard.tsx +448 -448
- package/compat/index.ts +77 -77
- package/compat/legacy-theme/mixins.styl +93 -93
- package/compat/legacy-theme/priceReviewColors.styl +12 -12
- package/compat/legacy-theme/slider.global.styl +5 -5
- package/compat/legacy-theme/theme.styl +136 -136
- package/compat/withLabel/withLabel.styl +33 -33
- package/compat/withLabel/withLabel.tsx +44 -44
- package/compat/withStats/withStats.styl +174 -174
- package/compat/withStats/withStats.tsx +238 -238
- package/constants/RateSearchWidget.ts +15 -15
- package/constants/Search.ts +290 -290
- package/constants/SearchWidget.ts +108 -108
- package/constants/app.ts +223 -223
- package/constants/common.ts +127 -127
- package/constants/core.ts +131 -131
- package/constants/highlights.ts +165 -165
- package/constants/price.ts +9 -9
- package/constants/selectors.ts +38 -38
- package/constants.ts +91 -91
- package/data/DataTransformers.ts +88 -88
- package/data/fieldMapping.ts +364 -342
- package/data/toAutobahnCar.ts +455 -442
- package/iconsvg/IconSVG.tsx +30 -30
- package/iconsvg/IconSVGConfig.tsx +768 -768
- package/iconsvg/SVG/AboPartner.tsx +16 -16
- package/iconsvg/SVG/ArrowQuotes.tsx +22 -22
- package/iconsvg/SVG/CloseIcon.tsx +17 -17
- package/iconsvg/SVG/CloseIconSelect.tsx +18 -18
- package/iconsvg/SVG/ClosedLockIcon.tsx +18 -18
- package/iconsvg/SVG/DealerCheckIcon.tsx +18 -18
- package/iconsvg/SVG/DealerPopoverMail.tsx +21 -21
- package/iconsvg/SVG/DealerPopoverPhone.tsx +21 -21
- package/iconsvg/SVG/GrayPhoneIcon.tsx +22 -22
- package/iconsvg/SVG/InternetIcon.tsx +18 -18
- package/iconsvg/SVG/WhiteEnvelopeIcon.tsx +21 -21
- package/iconsvg/SVG/bodyType/Cabrio.tsx +23 -23
- package/iconsvg/SVG/bodyType/Coupe.tsx +22 -22
- package/iconsvg/SVG/bodyType/Minibus.tsx +22 -22
- package/iconsvg/SVG/bodyType/Other.tsx +25 -25
- package/iconsvg/SVG/bodyType/Sedan.tsx +22 -22
- package/iconsvg/SVG/bodyType/SelectorCategoryCombi.tsx +68 -68
- package/iconsvg/SVG/bodyType/SelectorCategoryCompact.tsx +20 -20
- package/iconsvg/SVG/bodyType/SelectorCategoryConvertible.tsx +68 -68
- package/iconsvg/SVG/bodyType/SelectorCategoryCoupe.tsx +60 -60
- package/iconsvg/SVG/bodyType/SelectorCategoryMinibus.tsx +64 -64
- package/iconsvg/SVG/bodyType/SelectorCategoryOther.tsx +60 -60
- package/iconsvg/SVG/bodyType/SelectorCategorySedan.tsx +69 -69
- package/iconsvg/SVG/bodyType/SelectorCategorySuv.tsx +77 -77
- package/iconsvg/SVG/bodyType/SelectorCategoryTransporter.tsx +68 -68
- package/iconsvg/SVG/bodyType/SelectorCategoryVan.tsx +72 -72
- package/iconsvg/SVG/bodyType/Small.tsx +23 -23
- package/iconsvg/SVG/bodyType/Suv.tsx +23 -23
- package/iconsvg/SVG/bodyType/Van.tsx +23 -23
- package/iconsvg/SVG/bodyType/Wagon.tsx +23 -23
- package/iconsvg/SVG/common/AddIcon.tsx +16 -16
- package/iconsvg/SVG/common/AddPlus.tsx +16 -16
- package/iconsvg/SVG/common/AddressDashboard.tsx +29 -29
- package/iconsvg/SVG/common/AddressIcon.tsx +20 -20
- package/iconsvg/SVG/common/ArrowDetailedAccordionBlue.tsx +26 -26
- package/iconsvg/SVG/common/ArrowDownBlue.tsx +21 -21
- package/iconsvg/SVG/common/ArrowSelect.tsx +23 -23
- package/iconsvg/SVG/common/ArrowStepDown.tsx +18 -18
- package/iconsvg/SVG/common/Autocheck.tsx +19 -19
- package/iconsvg/SVG/common/AutodeLogo.tsx +36 -36
- package/iconsvg/SVG/common/Avatar.tsx +17 -17
- package/iconsvg/SVG/common/BellGray.tsx +19 -19
- package/iconsvg/SVG/common/BigInfoTransparent.tsx +13 -13
- package/iconsvg/SVG/common/Browse.tsx +20 -20
- package/iconsvg/SVG/common/Calendar.tsx +24 -24
- package/iconsvg/SVG/common/CallbackDashboard.tsx +30 -30
- package/iconsvg/SVG/common/Camera.tsx +17 -17
- package/iconsvg/SVG/common/Car.tsx +16 -16
- package/iconsvg/SVG/common/CarBody.tsx +19 -19
- package/iconsvg/SVG/common/CarFront.tsx +43 -43
- package/iconsvg/SVG/common/CarInspectionCheck.tsx +21 -21
- package/iconsvg/SVG/common/CarInspectionScheme0.tsx +32 -32
- package/iconsvg/SVG/common/CarInspectionScheme1.tsx +53 -53
- package/iconsvg/SVG/common/CarInspectionScheme2.tsx +52 -52
- package/iconsvg/SVG/common/CarInspectionScheme3.tsx +32 -32
- package/iconsvg/SVG/common/CarInspectionScheme4.tsx +32 -32
- package/iconsvg/SVG/common/CarInspectionScheme5.tsx +32 -32
- package/iconsvg/SVG/common/CarInspectionScheme6.tsx +32 -32
- package/iconsvg/SVG/common/CarInspectionSchemeGeneral copy.tsx +24 -24
- package/iconsvg/SVG/common/CarInspectionSchemeGeneral.tsx +24 -24
- package/iconsvg/SVG/common/CheckBlue.tsx +18 -18
- package/iconsvg/SVG/common/CheckGreen.tsx +22 -22
- package/iconsvg/SVG/common/CheckMark.tsx +16 -16
- package/iconsvg/SVG/common/CheckWhite.tsx +19 -19
- package/iconsvg/SVG/common/Chevron.tsx +17 -17
- package/iconsvg/SVG/common/CircledCheckmark.tsx +25 -25
- package/iconsvg/SVG/common/Clock.tsx +18 -18
- package/iconsvg/SVG/common/Close.tsx +19 -19
- package/iconsvg/SVG/common/CloseGrey.tsx +22 -22
- package/iconsvg/SVG/common/ContactEmail.tsx +21 -21
- package/iconsvg/SVG/common/ContactPhone.tsx +28 -28
- package/iconsvg/SVG/common/CopyIcon copy.tsx +22 -22
- package/iconsvg/SVG/common/CopyIcon.tsx +22 -22
- package/iconsvg/SVG/common/CopyIconForDealer.tsx +21 -21
- package/iconsvg/SVG/common/DashboardIcon.tsx +20 -20
- package/iconsvg/SVG/common/DashboardQuestionMark.tsx +20 -20
- package/iconsvg/SVG/common/DealersIcon.tsx +20 -20
- package/iconsvg/SVG/common/DeleteCircle.tsx +31 -31
- package/iconsvg/SVG/common/DeleteV1Icon.tsx +18 -18
- package/iconsvg/SVG/common/DeliveryDashboard.tsx +25 -25
- package/iconsvg/SVG/common/DeliveryMail.tsx +24 -24
- package/iconsvg/SVG/common/Discount100De.tsx +18 -18
- package/iconsvg/SVG/common/Discount100En.tsx +19 -19
- package/iconsvg/SVG/common/Discount66De.tsx +28 -28
- package/iconsvg/SVG/common/Discount66En.tsx +20 -20
- package/iconsvg/SVG/common/DoneIcon.tsx +18 -18
- package/iconsvg/SVG/common/EditCircle.tsx +32 -32
- package/iconsvg/SVG/common/EditPriceIcon.tsx +20 -20
- package/iconsvg/SVG/common/EuroCurrency.tsx +18 -18
- package/iconsvg/SVG/common/Export.tsx +20 -20
- package/iconsvg/SVG/common/Eye.tsx +17 -17
- package/iconsvg/SVG/common/EyeCatch.tsx +19 -19
- package/iconsvg/SVG/common/FavoritesIcon.tsx +20 -20
- package/iconsvg/SVG/common/FilterRange.tsx +16 -16
- package/iconsvg/SVG/common/FilterToolBlack.tsx +23 -23
- package/iconsvg/SVG/common/FlagDe.tsx +21 -21
- package/iconsvg/SVG/common/FlagEn.tsx +43 -43
- package/iconsvg/SVG/common/GrayEnvelopeIcon.tsx +19 -19
- package/iconsvg/SVG/common/HamburgerMenuIcon.tsx +18 -18
- package/iconsvg/SVG/common/HandingOverDashboard.tsx +32 -32
- package/iconsvg/SVG/common/ImageSettingsIcon.tsx +20 -20
- package/iconsvg/SVG/common/Info.tsx +16 -16
- package/iconsvg/SVG/common/InfoIcon.tsx +17 -17
- package/iconsvg/SVG/common/InfoTransparent.tsx +18 -18
- package/iconsvg/SVG/common/LogoutIcon.tsx +20 -20
- package/iconsvg/SVG/common/MagnifyingGlass.tsx +31 -31
- package/iconsvg/SVG/common/MenuArrow.tsx +16 -16
- package/iconsvg/SVG/common/MenuGrey.tsx +22 -22
- package/iconsvg/SVG/common/MobileDeLogo.tsx +108 -108
- package/iconsvg/SVG/common/MyOrderIcon.tsx +20 -20
- package/iconsvg/SVG/common/MyVehiclesIcon.tsx +20 -20
- package/iconsvg/SVG/common/NewFlagDe.tsx +25 -25
- package/iconsvg/SVG/common/NewFlagEn.tsx +34 -34
- package/iconsvg/SVG/common/OrderReceivedDashboard.tsx +27 -27
- package/iconsvg/SVG/common/Package.tsx +30 -30
- package/iconsvg/SVG/common/Phone.tsx +18 -18
- package/iconsvg/SVG/common/PhoneGrey.tsx +22 -22
- package/iconsvg/SVG/common/PickupDashboard.tsx +30 -30
- package/iconsvg/SVG/common/Picture.tsx +24 -24
- package/iconsvg/SVG/common/Pictures.tsx +32 -32
- package/iconsvg/SVG/common/Plus.tsx +16 -16
- package/iconsvg/SVG/common/PlusNew.tsx +16 -16
- package/iconsvg/SVG/common/PreparationDashboard.tsx +29 -29
- package/iconsvg/SVG/common/ProfileDashboard.tsx +24 -24
- package/iconsvg/SVG/common/ProfileIcon.tsx +17 -17
- package/iconsvg/SVG/common/Question.tsx +19 -19
- package/iconsvg/SVG/common/QuestionBold.tsx +25 -25
- package/iconsvg/SVG/common/RegistrationDashboard.tsx +31 -31
- package/iconsvg/SVG/common/SavedSearchsIcon.tsx +20 -20
- package/iconsvg/SVG/common/Search.tsx +19 -19
- package/iconsvg/SVG/common/SearchGrey.tsx +22 -22
- package/iconsvg/SVG/common/SettingPenIcon.tsx +20 -20
- package/iconsvg/SVG/common/Share.tsx +16 -16
- package/iconsvg/SVG/common/ShoppingCart.tsx +18 -18
- package/iconsvg/SVG/common/SliderArrow.tsx +21 -21
- package/iconsvg/SVG/common/SliderEye.tsx +17 -17
- package/iconsvg/SVG/common/SortUpDownArrows.tsx +18 -18
- package/iconsvg/SVG/common/Speedometer.tsx +23 -23
- package/iconsvg/SVG/common/Star.tsx +20 -20
- package/iconsvg/SVG/common/StarNew.tsx +16 -16
- package/iconsvg/SVG/common/StarOutline.tsx +20 -20
- package/iconsvg/SVG/common/StarRoundedCorners.tsx +18 -18
- package/iconsvg/SVG/common/Stats.tsx +17 -17
- package/iconsvg/SVG/common/Step1.tsx +21 -21
- package/iconsvg/SVG/common/Step2.tsx +20 -20
- package/iconsvg/SVG/common/Step3.tsx +21 -21
- package/iconsvg/SVG/common/SupportCallbackIcon.tsx +20 -20
- package/iconsvg/SVG/common/Telephone.tsx +22 -22
- package/iconsvg/SVG/common/Time.tsx +17 -17
- package/iconsvg/SVG/common/Timetable.tsx +18 -18
- package/iconsvg/SVG/common/Trash.tsx +22 -22
- package/iconsvg/SVG/common/TrashRed.tsx +23 -23
- package/iconsvg/SVG/common/Upload.tsx +17 -17
- package/iconsvg/SVG/common/UserGrey.tsx +22 -22
- package/iconsvg/SVG/common/UserProfileIcon.tsx +20 -20
- package/iconsvg/SVG/common/ValidateFailure.tsx +21 -21
- package/iconsvg/SVG/common/ValidateSuccess.tsx +21 -21
- package/iconsvg/SVG/common/WarningTriangle.tsx +20 -20
- package/iconsvg/SVG/common/WhiteArrowUp.tsx +21 -21
- package/iconsvg/SVG/common/WhiteKey.tsx +21 -21
- package/iconsvg/SVG/common/WhitePeople.tsx +23 -23
- package/iconsvg/SVG/common/WhiteTick.tsx +19 -19
- package/iconsvg/SVG/flags/AT.tsx +19 -19
- package/iconsvg/SVG/flags/BE.tsx +20 -20
- package/iconsvg/SVG/flags/BG.tsx +20 -20
- package/iconsvg/SVG/flags/CH.tsx +22 -22
- package/iconsvg/SVG/flags/CZ.tsx +18 -18
- package/iconsvg/SVG/flags/DE.tsx +18 -18
- package/iconsvg/SVG/flags/DK.tsx +18 -18
- package/iconsvg/SVG/flags/ES.tsx +2585 -2585
- package/iconsvg/SVG/flags/FI.tsx +18 -18
- package/iconsvg/SVG/flags/FR.tsx +20 -20
- package/iconsvg/SVG/flags/GB.tsx +26 -26
- package/iconsvg/SVG/flags/HR.tsx +135 -135
- package/iconsvg/SVG/flags/HU.tsx +20 -20
- package/iconsvg/SVG/flags/IT.tsx +20 -20
- package/iconsvg/SVG/flags/LI.tsx +106 -106
- package/iconsvg/SVG/flags/LU.tsx +18 -18
- package/iconsvg/SVG/flags/NL.tsx +18 -18
- package/iconsvg/SVG/flags/NO.tsx +20 -20
- package/iconsvg/SVG/flags/PL.tsx +19 -19
- package/iconsvg/SVG/flags/RO.tsx +20 -20
- package/iconsvg/SVG/flags/RU.tsx +20 -20
- package/iconsvg/SVG/flags/SE.tsx +20 -20
- package/iconsvg/SVG/flags/SI.tsx +54 -54
- package/iconsvg/SVG/flags/SK.tsx +34 -34
- package/iconsvg/SVG/flags/UA.tsx +19 -19
- package/iconsvg/SVG/infoBlocks/14DaysReturnPolicy.tsx +18 -18
- package/iconsvg/SVG/infoBlocks/AlertInfo.tsx +19 -19
- package/iconsvg/SVG/infoBlocks/Autocheck.tsx +19 -19
- package/iconsvg/SVG/infoBlocks/CheckTheStory.tsx +22 -22
- package/iconsvg/SVG/infoBlocks/CustomerServiceWhite.tsx +16 -16
- package/iconsvg/SVG/infoBlocks/Guarantee.tsx +16 -16
- package/iconsvg/SVG/infoBlocks/OrderWhite.tsx +13 -13
- package/iconsvg/SVG/infoBlocks/PriceGuarantee.tsx +19 -19
- package/iconsvg/SVG/infoBlocks/PriceGuaranteeWhite.tsx +17 -17
- package/iconsvg/SVG/infoBlocks/TransportAndDelivery.tsx +21 -21
- package/iconsvg/SVG/infoBlocks/Warranty.tsx +23 -23
- package/iconsvg/SVG/popower/Mail.tsx +18 -18
- package/iconsvg/SVG/popower/Phone.tsx +19 -19
- package/iconsvg/SVG/popower/Schedule.tsx +18 -18
- package/iconsvg/SVG/searchWidgets/drive/AAllWheelDrive.tsx +26 -26
- package/iconsvg/SVG/searchWidgets/drive/AllWheelDrive.tsx +26 -26
- package/iconsvg/SVG/searchWidgets/drive/FrontWheelDrive.tsx +25 -25
- package/iconsvg/SVG/searchWidgets/drive/OtherWheelDrive.tsx +26 -26
- package/iconsvg/SVG/searchWidgets/drive/RearWheelDrive.tsx +25 -25
- package/iconsvg/SVG/searchWidgets/fuel/FuelDiesel.tsx +18 -18
- package/iconsvg/SVG/searchWidgets/fuel/FuelElectrical.tsx +19 -19
- package/iconsvg/SVG/searchWidgets/fuel/FuelElectricalDiesel.tsx +34 -34
- package/iconsvg/SVG/searchWidgets/fuel/FuelElectricalPetrol.tsx +20 -20
- package/iconsvg/SVG/searchWidgets/fuel/FuelEthanol.tsx +53 -53
- package/iconsvg/SVG/searchWidgets/fuel/FuelHydrogen.tsx +24 -24
- package/iconsvg/SVG/searchWidgets/fuel/FuelLpg.tsx +24 -24
- package/iconsvg/SVG/searchWidgets/fuel/FuelNaturalGas.tsx +23 -23
- package/iconsvg/SVG/searchWidgets/fuel/FuelOther.tsx +28 -28
- package/iconsvg/SVG/searchWidgets/fuel/FuelPetrol.tsx +18 -18
- package/iconsvg/SVG/settings/Account.tsx +17 -17
- package/iconsvg/SVG/settings/DataUsage.tsx +17 -17
- package/iconsvg/SVG/settings/MarketResearch.tsx +17 -17
- package/iconsvg/SVG/settings/Newsletter.tsx +17 -17
- package/iconsvg/SVG/settings/RemoveEye.tsx +17 -17
- package/iconsvg/SVG/settings/RemoveEyeOff.tsx +17 -17
- package/iconsvg/SVG/settings/Security.tsx +17 -17
- package/iconsvg/SVG/settings/Warning.tsx +17 -17
- package/iconsvg/SVG/slider/360.tsx +23 -23
- package/iconsvg/SVG/slider/360New.tsx +20 -20
- package/iconsvg/SVG/slider/Checked.tsx +19 -19
- package/iconsvg/SVG/slider/DiscountRibbon.tsx +51 -51
- package/iconsvg/SVG/slider/DiscountRibbonMobile.tsx +47 -47
- package/iconsvg/SVG/slider/DiscountRibbonNew.tsx +29 -29
- package/iconsvg/SVG/slider/Easy.tsx +19 -19
- package/iconsvg/SVG/slider/Fullscreen.tsx +16 -16
- package/iconsvg/SVG/slider/FullscreenWindow.tsx +23 -23
- package/iconsvg/SVG/slider/Safe.tsx +19 -19
- package/iconsvg/SVG/slider/ToBuy.tsx +19 -19
- package/iconsvg/SVG/slider/YoutubeButton.tsx +26 -26
- package/iconsvg/SVG/slider/ZoomIn.tsx +21 -21
- package/iconsvg/SVG/slider/ZoomOut.tsx +21 -21
- package/iconsvg/SVG/social/AndroidLogo.tsx +18 -18
- package/iconsvg/SVG/social/Apple.tsx +19 -19
- package/iconsvg/SVG/social/FacebookF.tsx +19 -19
- package/iconsvg/SVG/social/GooglePlusG.tsx +19 -19
- package/iconsvg/SVG/social/Instagram.tsx +17 -17
- package/iconsvg/SVG/social/Pinterest.tsx +19 -19
- package/iconsvg/SVG/social/SharingInterface.tsx +21 -21
- package/iconsvg/SVG/social/Twitter.tsx +19 -19
- package/iconsvg/SVG/social/Youtube.tsx +19 -19
- package/iconsvg/SVG/vehicle/AboIcon.tsx +11 -11
- package/iconsvg/SVG/vehicle/Abs.tsx +24 -24
- package/iconsvg/SVG/vehicle/AirCond.tsx +34 -34
- package/iconsvg/SVG/vehicle/Airbag.tsx +21 -21
- package/iconsvg/SVG/vehicle/AuxiliaryHeating.tsx +23 -23
- package/iconsvg/SVG/vehicle/Bluetooth.tsx +22 -22
- package/iconsvg/SVG/vehicle/BuyIcon.tsx +15 -15
- package/iconsvg/SVG/vehicle/CarAvailability.tsx +22 -22
- package/iconsvg/SVG/vehicle/CarInspectionCheck.tsx +21 -21
- package/iconsvg/SVG/vehicle/CarInspectionCross.tsx +21 -21
- package/iconsvg/SVG/vehicle/CheckoutChecked.tsx +15 -15
- package/iconsvg/SVG/vehicle/Co2.tsx +24 -24
- package/iconsvg/SVG/vehicle/CruiseControl.tsx +25 -25
- package/iconsvg/SVG/vehicle/Date.tsx +21 -21
- package/iconsvg/SVG/vehicle/Delivery.tsx +12 -12
- package/iconsvg/SVG/vehicle/Diesel.tsx +28 -28
- package/iconsvg/SVG/vehicle/Display.tsx +25 -25
- package/iconsvg/SVG/vehicle/Done.tsx +11 -11
- package/iconsvg/SVG/vehicle/Door.tsx +19 -19
- package/iconsvg/SVG/vehicle/DoubleDone.tsx +18 -18
- package/iconsvg/SVG/vehicle/EditIcon.tsx +11 -11
- package/iconsvg/SVG/vehicle/EmergencyBrakeAssistant.tsx +27 -27
- package/iconsvg/SVG/vehicle/Eps.tsx +24 -24
- package/iconsvg/SVG/vehicle/Esp.tsx +24 -24
- package/iconsvg/SVG/vehicle/FinancingIcon.tsx +20 -20
- package/iconsvg/SVG/vehicle/FuelConsumption.tsx +20 -20
- package/iconsvg/SVG/vehicle/Fueling.tsx +22 -22
- package/iconsvg/SVG/vehicle/FullDrive.tsx +24 -24
- package/iconsvg/SVG/vehicle/GasElectric.tsx +28 -28
- package/iconsvg/SVG/vehicle/HandsFreePhoneSystem.tsx +24 -24
- package/iconsvg/SVG/vehicle/Kw.tsx +23 -23
- package/iconsvg/SVG/vehicle/LastCrawledAt.tsx +22 -22
- package/iconsvg/SVG/vehicle/LeasingIcon.tsx +14 -14
- package/iconsvg/SVG/vehicle/Led.tsx +24 -24
- package/iconsvg/SVG/vehicle/LightSensor.tsx +22 -22
- package/iconsvg/SVG/vehicle/LinkAlternative.tsx +15 -15
- package/iconsvg/SVG/vehicle/Location.tsx +17 -17
- package/iconsvg/SVG/vehicle/MinusIcon.tsx +11 -11
- package/iconsvg/SVG/vehicle/Mirror.tsx +19 -19
- package/iconsvg/SVG/vehicle/Navigation.tsx +27 -27
- package/iconsvg/SVG/vehicle/NewCar.tsx +21 -21
- package/iconsvg/SVG/vehicle/NoImage.tsx +17 -17
- package/iconsvg/SVG/vehicle/Owner.tsx +18 -18
- package/iconsvg/SVG/vehicle/PanoramicRoof.tsx +23 -23
- package/iconsvg/SVG/vehicle/ParkingAssistants.tsx +24 -24
- package/iconsvg/SVG/vehicle/PickYourself.tsx +18 -18
- package/iconsvg/SVG/vehicle/PlusIcon.tsx +11 -11
- package/iconsvg/SVG/vehicle/Power.tsx +21 -21
- package/iconsvg/SVG/vehicle/Ps.tsx +19 -19
- package/iconsvg/SVG/vehicle/Question.tsx +24 -24
- package/iconsvg/SVG/vehicle/Seats.tsx +21 -21
- package/iconsvg/SVG/vehicle/SeatsHeating.tsx +26 -26
- package/iconsvg/SVG/vehicle/SelectorGearboxAutomatic.tsx +24 -24
- package/iconsvg/SVG/vehicle/SelectorGearboxManualShift.tsx +19 -19
- package/iconsvg/SVG/vehicle/SelectorGearboxOther.tsx +24 -24
- package/iconsvg/SVG/vehicle/SelectorGearboxSemiAutomatic.tsx +30 -30
- package/iconsvg/SVG/vehicle/SelectorInteriorTypeAlcantara.tsx +225 -225
- package/iconsvg/SVG/vehicle/SelectorInteriorTypeFabric.tsx +29 -29
- package/iconsvg/SVG/vehicle/SelectorInteriorTypeFullLeather.tsx +29 -29
- package/iconsvg/SVG/vehicle/SelectorInteriorTypeOther.tsx +26 -26
- package/iconsvg/SVG/vehicle/SelectorInteriorTypePartLeather.tsx +142 -142
- package/iconsvg/SVG/vehicle/SelectorInteriorTypeSyntheticLeather.tsx +27 -27
- package/iconsvg/SVG/vehicle/SelectorInteriorTypeVelours.tsx +39 -39
- package/iconsvg/SVG/vehicle/Shield.tsx +39 -39
- package/iconsvg/SVG/vehicle/Speedometer.tsx +17 -17
- package/iconsvg/SVG/vehicle/StartStopSystem.tsx +30 -30
- package/iconsvg/SVG/vehicle/Stop.tsx +25 -25
- package/iconsvg/SVG/vehicle/TickMark.tsx +21 -21
- package/iconsvg/SVG/vehicle/TrafficSignRecognition.tsx +29 -29
- package/iconsvg/SVG/vehicle/TrailerCoupling.tsx +24 -24
- package/iconsvg/SVG/vehicle/Transmission.tsx +27 -27
- package/iconsvg/SVG/vehicle/Wheel.tsx +43 -43
- package/iconsvg/SVG/vehicle/Wipers.tsx +22 -22
- package/iconsvg/SVG/vehicle/Wrench.tsx +17 -17
- package/iconsvg/index.ts +7 -7
- package/index.ts +18 -18
- package/locales/de/autobahn.json +676 -671
- package/locales/en/autobahn.json +676 -671
- package/locales/legacy/SearchDetailedPage.ts +205 -205
- package/locales/legacy/cbd.ts +719 -719
- package/locales/legacy/common.ts +109 -109
- package/locales/legacy/data.ts +1118 -1118
- package/locales/legacy/priceRating.ts +10 -10
- package/locales/legacy/sortingOptions.ts +21 -21
- package/media/images/raiting-stars-min.svg +7 -7
- package/media/images/refresh-button.svg +49 -49
- package/media/images/user-icon.svg +16 -16
- package/media/svg/infoBlocks/whyAutodeIconSet-F.svg +9 -9
- package/media/svg/infoBlocks/whyAutodeIconSet-G.svg +8 -8
- package/media/svg/infoBlocks/whyAutodeIconSet-Q.svg +6 -6
- package/media/svg/infoBlocks/whyAutodeIconSet-R.svg +9 -9
- package/media/svg/usp/icon1.svg +16 -16
- package/media/svg/usp/icon2.svg +13 -13
- package/media/svg/usp/icon3.svg +10 -10
- package/media/svg/usp/icon4.svg +14 -14
- package/package.json +30 -30
- package/schemes/AggregationScheme.ts +73 -73
- package/searchFilters/filterOptions.ts +119 -119
- package/searchFilters/filterProps.ts +35 -35
- package/searchFilters/index.ts +15 -15
- package/theme/autobahn.css +25 -25
- package/theme/colors_and_type.css +113 -113
- package/theme/md3.css +2045 -2034
- package/types/types.ts +373 -373
- package/types.ts +8 -8
- package/ui/Accordion.tsx +134 -134
- package/ui/Button.tsx +62 -62
- package/ui/CardCarousel.tsx +133 -133
- package/ui/Chip.tsx +29 -29
- package/ui/DatePicker.tsx +145 -145
- package/ui/Dropdown.tsx +205 -205
- package/ui/FileUpload.tsx +154 -154
- package/ui/FormCheckbox.tsx +79 -79
- package/ui/FormDropdown.tsx +327 -327
- package/ui/FormField.tsx +88 -88
- package/ui/FormRadio.tsx +93 -93
- package/ui/FormRadioGroup.tsx +106 -106
- package/ui/Icon.tsx +391 -391
- package/ui/IconButton.tsx +44 -44
- package/ui/Modal.tsx +187 -187
- package/ui/Pagination.tsx +140 -140
- package/ui/Price.tsx +25 -25
- package/ui/PriceEvalBar.tsx +48 -48
- package/ui/SaveChip.tsx +34 -34
- package/ui/Segmented.tsx +48 -48
- package/ui/Skeleton.tsx +75 -75
- package/ui/Spec.tsx +24 -24
- package/ui/Stars.tsx +29 -29
- package/ui/StatChip.tsx +21 -21
- package/ui/Stepper.tsx +106 -106
- package/ui/Switch.tsx +65 -65
- package/ui/Table.tsx +156 -156
- package/ui/Textarea.tsx +58 -58
- package/ui/index.ts +88 -88
- package/utils/CommonUtils.ts +648 -648
- package/utils/DateUtils.ts +101 -101
- package/utils/index.ts +74 -74
- package/utils/power.ts +11 -11
- package/utils/query.ts +21 -21
- package/vdp/FinanceCalculator.tsx +465 -465
- package/vdp/VdpModules.tsx +1490 -1490
- package/vdp/VdpViewer.tsx +209 -209
- package/vdp/index.ts +75 -75
- package/vdp/types.ts +197 -197
- package/vehiclesProps/cbdSelectors.ts +117 -117
- package/vehiclesProps/decoratedLightProps.tsx +572 -572
- package/vehiclesProps/decoratedProps.tsx +1746 -1746
- package/vehiclesProps/equipment.ts +129 -129
- package/vehiclesProps/vehicleDetails.ts +428 -428
- package/widgets/SearchBox.tsx +256 -256
- package/widgets/index.ts +5 -5
package/ui/FileUpload.tsx
CHANGED
|
@@ -1,154 +1,154 @@
|
|
|
1
|
-
// Autobahn (auto.de redesign) — md3 file-upload dropzone SHELL.
|
|
2
|
-
//
|
|
3
|
-
// This is the md3 *chrome* around a preserved upload engine — it does NOT upload anything
|
|
4
|
-
// itself. The legacy pages keep their existing engine and slot it into this shell:
|
|
5
|
-
// - ImageUploadPage → Uppy `<DragDrop uppy>` + `<ProgressBar uppy>` (Uppy owns its own
|
|
6
|
-
// input + drag/drop); pass those as `children`. The shell is then
|
|
7
|
-
// pure presentation; Uppy still wires every file/upload event.
|
|
8
|
-
// - ImageUploader (EXPORT settings, react-dropzone v4) → legacy `onDrop(files: File[])`.
|
|
9
|
-
// Pass that same handler as `onFiles` and forward `multiple`/`accept`;
|
|
10
|
-
// render the loader / preview as `children`.
|
|
11
|
-
//
|
|
12
|
-
// Standalone (no engine slotted in) it is still usable: clicking the zone or dropping files on
|
|
13
|
-
// it fires `onFiles(File[])` via a hidden native <input type=file> — the SAME `File[]` shape
|
|
14
|
-
// react-dropzone's `onDrop` uses, so it is a drop-in for that signature. When you slot a child
|
|
15
|
-
// engine that owns its own input (Uppy), simply omit `onFiles` and the shell stays inert.
|
|
16
|
-
//
|
|
17
|
-
// Pure/presentational: no store, no API, no window access. The only state is the local
|
|
18
|
-
// drag-over highlight. Renders correctly only inside a `<div className="md3">` subtree (scoped
|
|
19
|
-
// theme). Not observer-wrapped — it binds to no mobx field (unlike FormField/Dropdown consumers).
|
|
20
|
-
|
|
21
|
-
import React from 'react';
|
|
22
|
-
|
|
23
|
-
import Icon from './Icon';
|
|
24
|
-
|
|
25
|
-
export interface FileUploadProps {
|
|
26
|
-
/**
|
|
27
|
-
* Fired with the selected/dropped files — matches react-dropzone v4's `onDrop(files: File[])`.
|
|
28
|
-
* Omit when the slotted engine (e.g. Uppy `<DragDrop>`) owns its own input/drop handling; the
|
|
29
|
-
* shell then becomes inert chrome (no hidden input, no drop handler) so it never double-fires.
|
|
30
|
-
*/
|
|
31
|
-
onFiles?: (files: File[]) => void;
|
|
32
|
-
/** forwarded to the hidden native input's `accept` (e.g. 'image/*'). Ignored when `onFiles` is unset. */
|
|
33
|
-
accept?: string;
|
|
34
|
-
/** allow selecting/dropping more than one file (default true). Mirrors react-dropzone `multiple`. */
|
|
35
|
-
multiple?: boolean;
|
|
36
|
-
/** secondary hint line under the headline (e.g. allowed types / size). */
|
|
37
|
-
hint?: React.ReactNode;
|
|
38
|
-
/** non-interactive + dimmed (mirrors react-dropzone/Uppy `disabled` while uploading). */
|
|
39
|
-
disabled?: boolean;
|
|
40
|
-
/** extra class(es) appended after the `mfu` classes (layout hooks). */
|
|
41
|
-
className?: string;
|
|
42
|
-
/**
|
|
43
|
-
* Slot rendered BELOW the dropzone prompt: the file list / previews / progress bar, or the
|
|
44
|
-
* preserved engine element itself (Uppy `<DragDrop>` + `<ProgressBar>`).
|
|
45
|
-
*/
|
|
46
|
-
children?: React.ReactNode;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
const FileUpload: React.FunctionComponent<FileUploadProps> = ({
|
|
50
|
-
onFiles,
|
|
51
|
-
accept,
|
|
52
|
-
multiple = true,
|
|
53
|
-
hint,
|
|
54
|
-
disabled = false,
|
|
55
|
-
className,
|
|
56
|
-
children,
|
|
57
|
-
}) => {
|
|
58
|
-
const [dragOver, setDragOver] = React.useState(false);
|
|
59
|
-
const inputRef = React.useRef<HTMLInputElement | null>(null);
|
|
60
|
-
|
|
61
|
-
// Only the shell drives input/drop when it is NOT just wrapping a self-contained engine.
|
|
62
|
-
const interactive = !disabled && typeof onFiles === 'function';
|
|
63
|
-
|
|
64
|
-
const emit = (list: FileList | null) => {
|
|
65
|
-
if (!interactive || !list || list.length === 0) return;
|
|
66
|
-
onFiles!(Array.prototype.slice.call(list) as File[]);
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
const openPicker = () => {
|
|
70
|
-
if (!interactive || !inputRef.current) return;
|
|
71
|
-
inputRef.current.click();
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
const onInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
|
75
|
-
emit(e.target.files);
|
|
76
|
-
// reset so selecting the same file again still fires change.
|
|
77
|
-
e.target.value = '';
|
|
78
|
-
};
|
|
79
|
-
|
|
80
|
-
const onDragOver = (e: React.DragEvent) => {
|
|
81
|
-
if (!interactive) return;
|
|
82
|
-
e.preventDefault();
|
|
83
|
-
if (!dragOver) setDragOver(true);
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
const onDragLeave = (e: React.DragEvent) => {
|
|
87
|
-
if (!interactive) return;
|
|
88
|
-
// ignore leave events bubbling from children still inside the zone.
|
|
89
|
-
if (e.currentTarget.contains(e.relatedTarget as Node)) return;
|
|
90
|
-
setDragOver(false);
|
|
91
|
-
};
|
|
92
|
-
|
|
93
|
-
const onDrop = (e: React.DragEvent) => {
|
|
94
|
-
if (!interactive) return;
|
|
95
|
-
e.preventDefault();
|
|
96
|
-
setDragOver(false);
|
|
97
|
-
emit(e.dataTransfer ? e.dataTransfer.files : null);
|
|
98
|
-
};
|
|
99
|
-
|
|
100
|
-
const onKeyDown = (e: React.KeyboardEvent) => {
|
|
101
|
-
if (!interactive) return;
|
|
102
|
-
if (e.key === 'Enter' || e.key === ' ') {
|
|
103
|
-
e.preventDefault();
|
|
104
|
-
openPicker();
|
|
105
|
-
}
|
|
106
|
-
};
|
|
107
|
-
|
|
108
|
-
const cn = ['mfu', dragOver && 'mfu--over', disabled && 'mfu--disabled', className]
|
|
109
|
-
.filter(Boolean)
|
|
110
|
-
.join(' ');
|
|
111
|
-
|
|
112
|
-
return (
|
|
113
|
-
<div className={cn}>
|
|
114
|
-
<div
|
|
115
|
-
className="mfu-zone"
|
|
116
|
-
role={interactive ? 'button' : undefined}
|
|
117
|
-
tabIndex={interactive ? 0 : undefined}
|
|
118
|
-
aria-disabled={disabled || undefined}
|
|
119
|
-
onClick={openPicker}
|
|
120
|
-
onKeyDown={onKeyDown}
|
|
121
|
-
onDragOver={onDragOver}
|
|
122
|
-
onDragEnter={onDragOver}
|
|
123
|
-
onDragLeave={onDragLeave}
|
|
124
|
-
onDrop={onDrop}
|
|
125
|
-
>
|
|
126
|
-
<span className="mfu-icon">
|
|
127
|
-
<Icon name="upload-cloud" size={28} />
|
|
128
|
-
</span>
|
|
129
|
-
<span className="mfu-prompt">
|
|
130
|
-
<span className="mfu-link">Dateien auswählen</span>
|
|
131
|
-
<span className="mfu-or"> oder hierher ziehen</span>
|
|
132
|
-
</span>
|
|
133
|
-
{hint ? <span className="mfu-hint md-body-sm">{hint}</span> : null}
|
|
134
|
-
{interactive ? (
|
|
135
|
-
<input
|
|
136
|
-
ref={inputRef}
|
|
137
|
-
type="file"
|
|
138
|
-
className="mfu-input"
|
|
139
|
-
accept={accept}
|
|
140
|
-
multiple={multiple}
|
|
141
|
-
disabled={disabled}
|
|
142
|
-
onChange={onInputChange}
|
|
143
|
-
// hide visually but keep accessible; click is proxied from the zone.
|
|
144
|
-
tabIndex={-1}
|
|
145
|
-
aria-hidden="true"
|
|
146
|
-
/>
|
|
147
|
-
) : null}
|
|
148
|
-
</div>
|
|
149
|
-
{children ? <div className="mfu-slot">{children}</div> : null}
|
|
150
|
-
</div>
|
|
151
|
-
);
|
|
152
|
-
};
|
|
153
|
-
|
|
154
|
-
export default FileUpload;
|
|
1
|
+
// Autobahn (auto.de redesign) — md3 file-upload dropzone SHELL.
|
|
2
|
+
//
|
|
3
|
+
// This is the md3 *chrome* around a preserved upload engine — it does NOT upload anything
|
|
4
|
+
// itself. The legacy pages keep their existing engine and slot it into this shell:
|
|
5
|
+
// - ImageUploadPage → Uppy `<DragDrop uppy>` + `<ProgressBar uppy>` (Uppy owns its own
|
|
6
|
+
// input + drag/drop); pass those as `children`. The shell is then
|
|
7
|
+
// pure presentation; Uppy still wires every file/upload event.
|
|
8
|
+
// - ImageUploader (EXPORT settings, react-dropzone v4) → legacy `onDrop(files: File[])`.
|
|
9
|
+
// Pass that same handler as `onFiles` and forward `multiple`/`accept`;
|
|
10
|
+
// render the loader / preview as `children`.
|
|
11
|
+
//
|
|
12
|
+
// Standalone (no engine slotted in) it is still usable: clicking the zone or dropping files on
|
|
13
|
+
// it fires `onFiles(File[])` via a hidden native <input type=file> — the SAME `File[]` shape
|
|
14
|
+
// react-dropzone's `onDrop` uses, so it is a drop-in for that signature. When you slot a child
|
|
15
|
+
// engine that owns its own input (Uppy), simply omit `onFiles` and the shell stays inert.
|
|
16
|
+
//
|
|
17
|
+
// Pure/presentational: no store, no API, no window access. The only state is the local
|
|
18
|
+
// drag-over highlight. Renders correctly only inside a `<div className="md3">` subtree (scoped
|
|
19
|
+
// theme). Not observer-wrapped — it binds to no mobx field (unlike FormField/Dropdown consumers).
|
|
20
|
+
|
|
21
|
+
import React from 'react';
|
|
22
|
+
|
|
23
|
+
import Icon from './Icon';
|
|
24
|
+
|
|
25
|
+
export interface FileUploadProps {
|
|
26
|
+
/**
|
|
27
|
+
* Fired with the selected/dropped files — matches react-dropzone v4's `onDrop(files: File[])`.
|
|
28
|
+
* Omit when the slotted engine (e.g. Uppy `<DragDrop>`) owns its own input/drop handling; the
|
|
29
|
+
* shell then becomes inert chrome (no hidden input, no drop handler) so it never double-fires.
|
|
30
|
+
*/
|
|
31
|
+
onFiles?: (files: File[]) => void;
|
|
32
|
+
/** forwarded to the hidden native input's `accept` (e.g. 'image/*'). Ignored when `onFiles` is unset. */
|
|
33
|
+
accept?: string;
|
|
34
|
+
/** allow selecting/dropping more than one file (default true). Mirrors react-dropzone `multiple`. */
|
|
35
|
+
multiple?: boolean;
|
|
36
|
+
/** secondary hint line under the headline (e.g. allowed types / size). */
|
|
37
|
+
hint?: React.ReactNode;
|
|
38
|
+
/** non-interactive + dimmed (mirrors react-dropzone/Uppy `disabled` while uploading). */
|
|
39
|
+
disabled?: boolean;
|
|
40
|
+
/** extra class(es) appended after the `mfu` classes (layout hooks). */
|
|
41
|
+
className?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Slot rendered BELOW the dropzone prompt: the file list / previews / progress bar, or the
|
|
44
|
+
* preserved engine element itself (Uppy `<DragDrop>` + `<ProgressBar>`).
|
|
45
|
+
*/
|
|
46
|
+
children?: React.ReactNode;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const FileUpload: React.FunctionComponent<FileUploadProps> = ({
|
|
50
|
+
onFiles,
|
|
51
|
+
accept,
|
|
52
|
+
multiple = true,
|
|
53
|
+
hint,
|
|
54
|
+
disabled = false,
|
|
55
|
+
className,
|
|
56
|
+
children,
|
|
57
|
+
}) => {
|
|
58
|
+
const [dragOver, setDragOver] = React.useState(false);
|
|
59
|
+
const inputRef = React.useRef<HTMLInputElement | null>(null);
|
|
60
|
+
|
|
61
|
+
// Only the shell drives input/drop when it is NOT just wrapping a self-contained engine.
|
|
62
|
+
const interactive = !disabled && typeof onFiles === 'function';
|
|
63
|
+
|
|
64
|
+
const emit = (list: FileList | null) => {
|
|
65
|
+
if (!interactive || !list || list.length === 0) return;
|
|
66
|
+
onFiles!(Array.prototype.slice.call(list) as File[]);
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
const openPicker = () => {
|
|
70
|
+
if (!interactive || !inputRef.current) return;
|
|
71
|
+
inputRef.current.click();
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
const onInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
|
75
|
+
emit(e.target.files);
|
|
76
|
+
// reset so selecting the same file again still fires change.
|
|
77
|
+
e.target.value = '';
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
const onDragOver = (e: React.DragEvent) => {
|
|
81
|
+
if (!interactive) return;
|
|
82
|
+
e.preventDefault();
|
|
83
|
+
if (!dragOver) setDragOver(true);
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
const onDragLeave = (e: React.DragEvent) => {
|
|
87
|
+
if (!interactive) return;
|
|
88
|
+
// ignore leave events bubbling from children still inside the zone.
|
|
89
|
+
if (e.currentTarget.contains(e.relatedTarget as Node)) return;
|
|
90
|
+
setDragOver(false);
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
const onDrop = (e: React.DragEvent) => {
|
|
94
|
+
if (!interactive) return;
|
|
95
|
+
e.preventDefault();
|
|
96
|
+
setDragOver(false);
|
|
97
|
+
emit(e.dataTransfer ? e.dataTransfer.files : null);
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
const onKeyDown = (e: React.KeyboardEvent) => {
|
|
101
|
+
if (!interactive) return;
|
|
102
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
103
|
+
e.preventDefault();
|
|
104
|
+
openPicker();
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
const cn = ['mfu', dragOver && 'mfu--over', disabled && 'mfu--disabled', className]
|
|
109
|
+
.filter(Boolean)
|
|
110
|
+
.join(' ');
|
|
111
|
+
|
|
112
|
+
return (
|
|
113
|
+
<div className={cn}>
|
|
114
|
+
<div
|
|
115
|
+
className="mfu-zone"
|
|
116
|
+
role={interactive ? 'button' : undefined}
|
|
117
|
+
tabIndex={interactive ? 0 : undefined}
|
|
118
|
+
aria-disabled={disabled || undefined}
|
|
119
|
+
onClick={openPicker}
|
|
120
|
+
onKeyDown={onKeyDown}
|
|
121
|
+
onDragOver={onDragOver}
|
|
122
|
+
onDragEnter={onDragOver}
|
|
123
|
+
onDragLeave={onDragLeave}
|
|
124
|
+
onDrop={onDrop}
|
|
125
|
+
>
|
|
126
|
+
<span className="mfu-icon">
|
|
127
|
+
<Icon name="upload-cloud" size={28} />
|
|
128
|
+
</span>
|
|
129
|
+
<span className="mfu-prompt">
|
|
130
|
+
<span className="mfu-link">Dateien auswählen</span>
|
|
131
|
+
<span className="mfu-or"> oder hierher ziehen</span>
|
|
132
|
+
</span>
|
|
133
|
+
{hint ? <span className="mfu-hint md-body-sm">{hint}</span> : null}
|
|
134
|
+
{interactive ? (
|
|
135
|
+
<input
|
|
136
|
+
ref={inputRef}
|
|
137
|
+
type="file"
|
|
138
|
+
className="mfu-input"
|
|
139
|
+
accept={accept}
|
|
140
|
+
multiple={multiple}
|
|
141
|
+
disabled={disabled}
|
|
142
|
+
onChange={onInputChange}
|
|
143
|
+
// hide visually but keep accessible; click is proxied from the zone.
|
|
144
|
+
tabIndex={-1}
|
|
145
|
+
aria-hidden="true"
|
|
146
|
+
/>
|
|
147
|
+
) : null}
|
|
148
|
+
</div>
|
|
149
|
+
{children ? <div className="mfu-slot">{children}</div> : null}
|
|
150
|
+
</div>
|
|
151
|
+
);
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
export default FileUpload;
|
package/ui/FormCheckbox.tsx
CHANGED
|
@@ -1,79 +1,79 @@
|
|
|
1
|
-
// Autobahn (auto.de redesign) — md3 checkbox bound to a mobx-react-form field.
|
|
2
|
-
//
|
|
3
|
-
// Drop-in visual replacement for the legacy fe-ui-core `FormCheckbox` / `CheckboxMaterial`
|
|
4
|
-
// (DealerEmployeeSetPage AccessRights role flags, EmailPermissionBlock T&C/permission box with
|
|
5
|
-
// the 'boolean'/'accepted' rule, SettingsPage data-usage, etc.). Same data contract — only the
|
|
6
|
-
// markup is re-skinned to the `.mcheck` md3 box + check icon. Renders correctly only inside a
|
|
7
|
-
// `<div className="md3">` subtree (scoped theme).
|
|
8
|
-
//
|
|
9
|
-
// BINDING (must match the legacy signature EXACTLY or validation/submit breaks):
|
|
10
|
-
// mobx-react-form fields expose `field.checked` (boolean) and `field.onChange`, which is a
|
|
11
|
-
// NATIVE change-event handler — it reads `event.target.checked` itself and updates field.checked.
|
|
12
|
-
// So we bind `checked={!!field.checked}` and forward the raw native event straight to
|
|
13
|
-
// `field.onChange` — no wrapping, no boolean coercion, no `(event, checked, value)` re-call.
|
|
14
|
-
// This is the same contract the sibling Switch primitive uses, and the same one the legacy
|
|
15
|
-
// fe-ui-core Checkbox got via `field.bind()` (it forwarded the event onward and the field
|
|
16
|
-
// handler ignored the extra args). Validation rules ('required' / 'boolean' / 'accepted') then
|
|
17
|
-
// surface through field.hasError + field.error, shown inline — identical to the legacy FormCheckbox.
|
|
18
|
-
//
|
|
19
|
-
// observer-wrapped so it re-renders when field.checked / field.error change. Beyond the injected
|
|
20
|
-
// field it is pure/presentational.
|
|
21
|
-
|
|
22
|
-
import * as React from 'react';
|
|
23
|
-
import { observer } from 'mobx-react';
|
|
24
|
-
|
|
25
|
-
import Icon from './Icon';
|
|
26
|
-
|
|
27
|
-
export interface FormCheckboxProps {
|
|
28
|
-
/** mobx-react-form field (DealerProfileForm.$('emailPermission'), EmplDataForm.$('isDadmin'), …). Typed any — the lib ships no TS types. */
|
|
29
|
-
field: any;
|
|
30
|
-
/** i18n translate — used ONLY to resolve field.label when no `label`/`children` is supplied (mirrors the legacy CheckboxMaterial). Callers that already translate pass the result as `label`. */
|
|
31
|
-
t?: (key: string, options?: object) => string;
|
|
32
|
-
/** label as plain text OR pre-built JSX (e.g. a translated string, or a <Trans> with links). */
|
|
33
|
-
label?: React.ReactNode;
|
|
34
|
-
/** rich label content (T&C/permission text with links). Takes precedence over `label`. */
|
|
35
|
-
children?: React.ReactNode;
|
|
36
|
-
/** override the field's own disabled flag. */
|
|
37
|
-
disabled?: boolean;
|
|
38
|
-
id?: string;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
const FormCheckbox: React.FunctionComponent<FormCheckboxProps> = observer(
|
|
42
|
-
({ field, t, label, children, disabled, id }) => {
|
|
43
|
-
const isChecked = !!field.checked;
|
|
44
|
-
const isDisabled = disabled != null ? disabled : !!field.disabled;
|
|
45
|
-
const hasError = !!field.hasError && !!field.error;
|
|
46
|
-
|
|
47
|
-
// children (rich) > explicit label > translated field.label (legacy CheckboxMaterial behaviour).
|
|
48
|
-
// We do NOT re-translate a passed `label`: callers (AccessRights, EmailPermissionBlock) already
|
|
49
|
-
// pass an already-translated string or a <Trans> element, so re-running t() would risk a miss.
|
|
50
|
-
let content: React.ReactNode = null;
|
|
51
|
-
if (children != null) content = children;
|
|
52
|
-
else if (label != null) content = label;
|
|
53
|
-
else if (field.label) content = t ? t(field.label) : field.label;
|
|
54
|
-
|
|
55
|
-
return (
|
|
56
|
-
<div className={'mcheck-group' + (hasError ? ' mcheck-group--error' : '')}>
|
|
57
|
-
<label className={'mcheck' + (isDisabled ? ' mcheck--disabled' : '')}>
|
|
58
|
-
<input
|
|
59
|
-
id={id}
|
|
60
|
-
type="checkbox"
|
|
61
|
-
className="mcheck-input"
|
|
62
|
-
checked={isChecked}
|
|
63
|
-
disabled={isDisabled}
|
|
64
|
-
aria-checked={isChecked}
|
|
65
|
-
aria-invalid={hasError || undefined}
|
|
66
|
-
onChange={field.onChange}
|
|
67
|
-
/>
|
|
68
|
-
<span className="mcheck-box" aria-hidden="true">
|
|
69
|
-
{isChecked ? <Icon name="check" size={16} stroke={3} cls="mcheck-tick" /> : null}
|
|
70
|
-
</span>
|
|
71
|
-
{content != null ? <span className="mcheck-label">{content}</span> : null}
|
|
72
|
-
</label>
|
|
73
|
-
{hasError ? <span className="mcheck-error-text">{field.error}</span> : null}
|
|
74
|
-
</div>
|
|
75
|
-
);
|
|
76
|
-
},
|
|
77
|
-
);
|
|
78
|
-
|
|
79
|
-
export default FormCheckbox;
|
|
1
|
+
// Autobahn (auto.de redesign) — md3 checkbox bound to a mobx-react-form field.
|
|
2
|
+
//
|
|
3
|
+
// Drop-in visual replacement for the legacy fe-ui-core `FormCheckbox` / `CheckboxMaterial`
|
|
4
|
+
// (DealerEmployeeSetPage AccessRights role flags, EmailPermissionBlock T&C/permission box with
|
|
5
|
+
// the 'boolean'/'accepted' rule, SettingsPage data-usage, etc.). Same data contract — only the
|
|
6
|
+
// markup is re-skinned to the `.mcheck` md3 box + check icon. Renders correctly only inside a
|
|
7
|
+
// `<div className="md3">` subtree (scoped theme).
|
|
8
|
+
//
|
|
9
|
+
// BINDING (must match the legacy signature EXACTLY or validation/submit breaks):
|
|
10
|
+
// mobx-react-form fields expose `field.checked` (boolean) and `field.onChange`, which is a
|
|
11
|
+
// NATIVE change-event handler — it reads `event.target.checked` itself and updates field.checked.
|
|
12
|
+
// So we bind `checked={!!field.checked}` and forward the raw native event straight to
|
|
13
|
+
// `field.onChange` — no wrapping, no boolean coercion, no `(event, checked, value)` re-call.
|
|
14
|
+
// This is the same contract the sibling Switch primitive uses, and the same one the legacy
|
|
15
|
+
// fe-ui-core Checkbox got via `field.bind()` (it forwarded the event onward and the field
|
|
16
|
+
// handler ignored the extra args). Validation rules ('required' / 'boolean' / 'accepted') then
|
|
17
|
+
// surface through field.hasError + field.error, shown inline — identical to the legacy FormCheckbox.
|
|
18
|
+
//
|
|
19
|
+
// observer-wrapped so it re-renders when field.checked / field.error change. Beyond the injected
|
|
20
|
+
// field it is pure/presentational.
|
|
21
|
+
|
|
22
|
+
import * as React from 'react';
|
|
23
|
+
import { observer } from 'mobx-react';
|
|
24
|
+
|
|
25
|
+
import Icon from './Icon';
|
|
26
|
+
|
|
27
|
+
export interface FormCheckboxProps {
|
|
28
|
+
/** mobx-react-form field (DealerProfileForm.$('emailPermission'), EmplDataForm.$('isDadmin'), …). Typed any — the lib ships no TS types. */
|
|
29
|
+
field: any;
|
|
30
|
+
/** i18n translate — used ONLY to resolve field.label when no `label`/`children` is supplied (mirrors the legacy CheckboxMaterial). Callers that already translate pass the result as `label`. */
|
|
31
|
+
t?: (key: string, options?: object) => string;
|
|
32
|
+
/** label as plain text OR pre-built JSX (e.g. a translated string, or a <Trans> with links). */
|
|
33
|
+
label?: React.ReactNode;
|
|
34
|
+
/** rich label content (T&C/permission text with links). Takes precedence over `label`. */
|
|
35
|
+
children?: React.ReactNode;
|
|
36
|
+
/** override the field's own disabled flag. */
|
|
37
|
+
disabled?: boolean;
|
|
38
|
+
id?: string;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const FormCheckbox: React.FunctionComponent<FormCheckboxProps> = observer(
|
|
42
|
+
({ field, t, label, children, disabled, id }) => {
|
|
43
|
+
const isChecked = !!field.checked;
|
|
44
|
+
const isDisabled = disabled != null ? disabled : !!field.disabled;
|
|
45
|
+
const hasError = !!field.hasError && !!field.error;
|
|
46
|
+
|
|
47
|
+
// children (rich) > explicit label > translated field.label (legacy CheckboxMaterial behaviour).
|
|
48
|
+
// We do NOT re-translate a passed `label`: callers (AccessRights, EmailPermissionBlock) already
|
|
49
|
+
// pass an already-translated string or a <Trans> element, so re-running t() would risk a miss.
|
|
50
|
+
let content: React.ReactNode = null;
|
|
51
|
+
if (children != null) content = children;
|
|
52
|
+
else if (label != null) content = label;
|
|
53
|
+
else if (field.label) content = t ? t(field.label) : field.label;
|
|
54
|
+
|
|
55
|
+
return (
|
|
56
|
+
<div className={'mcheck-group' + (hasError ? ' mcheck-group--error' : '')}>
|
|
57
|
+
<label className={'mcheck' + (isDisabled ? ' mcheck--disabled' : '')}>
|
|
58
|
+
<input
|
|
59
|
+
id={id}
|
|
60
|
+
type="checkbox"
|
|
61
|
+
className="mcheck-input"
|
|
62
|
+
checked={isChecked}
|
|
63
|
+
disabled={isDisabled}
|
|
64
|
+
aria-checked={isChecked}
|
|
65
|
+
aria-invalid={hasError || undefined}
|
|
66
|
+
onChange={field.onChange}
|
|
67
|
+
/>
|
|
68
|
+
<span className="mcheck-box" aria-hidden="true">
|
|
69
|
+
{isChecked ? <Icon name="check" size={16} stroke={3} cls="mcheck-tick" /> : null}
|
|
70
|
+
</span>
|
|
71
|
+
{content != null ? <span className="mcheck-label">{content}</span> : null}
|
|
72
|
+
</label>
|
|
73
|
+
{hasError ? <span className="mcheck-error-text">{field.error}</span> : null}
|
|
74
|
+
</div>
|
|
75
|
+
);
|
|
76
|
+
},
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
export default FormCheckbox;
|