@blateral/b.kit 2.8.4 → 3.0.1
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/cjs/Actions-2590a7b9.js +2 -0
- package/cjs/{Actions-c52a14e4.js.map → Actions-2590a7b9.js.map} +1 -1
- package/cjs/Bdot-35350767.js +2 -0
- package/cjs/{Bdot-62c8e349.js.map → Bdot-35350767.js.map} +1 -1
- package/cjs/Button-ddcdefd5.js +2 -0
- package/cjs/Button-ddcdefd5.js.map +1 -0
- package/cjs/ButtonGhost-22501467.js +2 -0
- package/cjs/ButtonGhost-22501467.js.map +1 -0
- package/cjs/ButtonLeft-7e1f216a.js +2 -0
- package/cjs/ButtonLeft-7e1f216a.js.map +1 -0
- package/cjs/Callout-86a61040.js +2 -0
- package/cjs/Callout-86a61040.js.map +1 -0
- package/cjs/Checkbox-d27880f4.js +2 -0
- package/cjs/Checkbox-d27880f4.js.map +1 -0
- package/cjs/Control-40e6d4ed.js +2 -0
- package/cjs/Control-40e6d4ed.js.map +1 -0
- package/cjs/Copy-1b9e33ba.js +2 -0
- package/cjs/Copy-1b9e33ba.js.map +1 -0
- package/cjs/EventBlock-7dde179c.js +2 -0
- package/cjs/EventBlock-7dde179c.js.map +1 -0
- package/cjs/FilterBar-238c2290.js +2 -0
- package/cjs/FilterBar-238c2290.js.map +1 -0
- package/cjs/FilterField-c8dc9450.js +2 -0
- package/cjs/{FilterField-d204feb1.js.map → FilterField-c8dc9450.js.map} +1 -1
- package/cjs/Grid-dab3343f.js +2 -0
- package/cjs/Grid-dab3343f.js.map +1 -0
- package/cjs/Image-14b2cb93.js +2 -0
- package/cjs/Image-14b2cb93.js.map +1 -0
- package/cjs/InfoList-b4f39949.js +2 -0
- package/cjs/InfoList-b4f39949.js.map +1 -0
- package/cjs/LanguageSwitcher-3ee77117.js +2 -0
- package/cjs/{LanguageSwitcher-c6fd04df.js.map → LanguageSwitcher-3ee77117.js.map} +1 -1
- package/cjs/LibThemeProvider-878ed68c.js +2 -0
- package/cjs/{LibThemeProvider-69109901.js.map → LibThemeProvider-878ed68c.js.map} +1 -1
- package/cjs/Link-6e728957.js +2 -0
- package/cjs/Link-6e728957.js.map +1 -0
- package/cjs/MultiselectDropdown-54cd988f.js +2 -0
- package/cjs/MultiselectDropdown-54cd988f.js.map +1 -0
- package/cjs/Navigation-2d3590a0.js +2 -0
- package/cjs/{Navigation-6c5d9dee.js.map → Navigation-2d3590a0.js.map} +1 -1
- package/cjs/PickerAction-ed288096.js +2 -0
- package/cjs/PickerAction-ed288096.js.map +1 -0
- package/cjs/Pointer-b8875387.js +2 -0
- package/cjs/Pointer-b8875387.js.map +1 -0
- package/cjs/Section-89240e41.js +2 -0
- package/cjs/Section-89240e41.js.map +1 -0
- package/cjs/SocialList-f2aca9d8.js +2 -0
- package/cjs/{SocialList-73af56b5.js.map → SocialList-f2aca9d8.js.map} +1 -1
- package/cjs/TableBlock-8f87c278.js +2 -0
- package/cjs/TableBlock-8f87c278.js.map +1 -0
- package/cjs/Tag-430477d0.js +2 -0
- package/cjs/Tag-430477d0.js.map +1 -0
- package/cjs/Textarea-51bea7d0.js +2 -0
- package/cjs/Textarea-51bea7d0.js.map +1 -0
- package/cjs/Textfield-4ff93649.js +2 -0
- package/cjs/Textfield-4ff93649.js.map +1 -0
- package/cjs/VideoBlock-087d79b8.js +2 -0
- package/cjs/{VideoBlock-0cae22f0.js.map → VideoBlock-087d79b8.js.map} +1 -1
- package/cjs/VideoCard-6e2ae7c1.js +2 -0
- package/cjs/VideoCard-6e2ae7c1.js.map +1 -0
- package/cjs/Wrapper-c755d727.js +2 -0
- package/cjs/{Wrapper-bca9463e.js.map → Wrapper-c755d727.js.map} +1 -1
- package/cjs/base.js +1 -1
- package/cjs/blocks.js +1 -1
- package/cjs/buttons.js +1 -1
- package/cjs/concat-8bd71a50.js +2 -0
- package/cjs/{concat-f387d848.js.map → concat-8bd71a50.js.map} +1 -1
- package/cjs/cookies.js +1 -1
- package/cjs/cookies.js.map +1 -1
- package/cjs/fields.js +1 -1
- package/cjs/fields.js.map +1 -1
- package/cjs/footer.js +1 -1
- package/cjs/footer.js.map +1 -1
- package/cjs/formFieldText-fcf0452b.js +2 -0
- package/cjs/formFieldText-fcf0452b.js.map +1 -0
- package/cjs/headers.js +1 -1
- package/cjs/headers.js.map +1 -1
- package/cjs/hooks.js +1 -1
- package/cjs/hooks.js.map +1 -1
- package/cjs/icons.js +1 -1
- package/cjs/index.js +1 -1
- package/cjs/navigation-ec5cddfc.js +2 -0
- package/cjs/{navigation-3f9d4ac4.js.map → navigation-ec5cddfc.js.map} +1 -1
- package/cjs/navigation.js +1 -1
- package/cjs/navigation.js.map +1 -1
- package/cjs/sections.dynamicform.js +1 -1
- package/cjs/sections.dynamicform.js.map +1 -1
- package/cjs/sections.events.js +1 -1
- package/cjs/sections.events.js.map +1 -1
- package/cjs/sections.forms.js +1 -1
- package/cjs/sections.forms.js.map +1 -1
- package/cjs/sections.jobs.js +1 -1
- package/cjs/sections.jobs.js.map +1 -1
- package/cjs/sections.js +1 -1
- package/cjs/sections.js.map +1 -1
- package/cjs/sections.news.js +1 -1
- package/cjs/sections.news.js.map +1 -1
- package/cjs/sections.pois.js +1 -1
- package/cjs/sections.pois.js.map +1 -1
- package/cjs/structuredData-7c33a463.js +2 -0
- package/cjs/structuredData-7c33a463.js.map +1 -0
- package/cjs/styles-271afb02.js +2 -0
- package/cjs/styles-271afb02.js.map +1 -0
- package/cjs/typography.js +1 -1
- package/cjs/{urlParams-7525f638.js → urlParams-c412d937.js} +2 -2
- package/cjs/{urlParams-7525f638.js.map → urlParams-c412d937.js.map} +1 -1
- package/cjs/useCookieConsent-674d004d.js +2 -0
- package/cjs/{useCookieConsent-665d91cf.js.map → useCookieConsent-674d004d.js.map} +1 -1
- package/cjs/useEqualSheetHeight-7eb7f276.js +2 -0
- package/cjs/{useEqualSheetHeight-f1c10ec5.js.map → useEqualSheetHeight-7eb7f276.js.map} +1 -1
- package/cjs/useLazyInput-1481445a.js +2 -0
- package/cjs/{useLazyInput-911b8eda.js.map → useLazyInput-1481445a.js.map} +1 -1
- package/cjs/useLeafletMap-145217ee.js +2 -0
- package/cjs/{useLeafletMap-514304b6.js.map → useLeafletMap-145217ee.js.map} +1 -1
- package/cjs/useMediaQuery-dd367f98.js +2 -0
- package/cjs/{useMediaQuery-619d7203.js.map → useMediaQuery-dd367f98.js.map} +1 -1
- package/esm/{Actions-e29b5e75.js → Actions-6859c932.js} +3 -3
- package/esm/{Actions-e29b5e75.js.map → Actions-6859c932.js.map} +1 -1
- package/esm/{Bdot-5e798e7e.js → Bdot-9e215df7.js} +3 -3
- package/esm/{Bdot-5e798e7e.js.map → Bdot-9e215df7.js.map} +1 -1
- package/esm/Button-1f634865.js +146 -0
- package/esm/Button-1f634865.js.map +1 -0
- package/esm/ButtonGhost-476c3826.js +146 -0
- package/esm/ButtonGhost-476c3826.js.map +1 -0
- package/esm/{Filter-19220970.js → ButtonLeft-a9a132f5.js} +362 -246
- package/esm/ButtonLeft-a9a132f5.js.map +1 -0
- package/esm/{Callout-46f0bef0.js → Callout-6436d270.js} +8 -6
- package/esm/Callout-6436d270.js.map +1 -0
- package/esm/{Checkbox-962fea67.js → Checkbox-e7fc7d28.js} +21 -11
- package/esm/Checkbox-e7fc7d28.js.map +1 -0
- package/esm/Control-84268468.js +44 -0
- package/esm/Control-84268468.js.map +1 -0
- package/esm/{Copy-fd9e25c0.js → Copy-5a18e01f.js} +27 -9
- package/esm/Copy-5a18e01f.js.map +1 -0
- package/esm/{EventBlock-12361860.js → EventBlock-0d010725.js} +62 -27
- package/esm/EventBlock-0d010725.js.map +1 -0
- package/esm/{FilterBar-8c258534.js → FilterBar-d6c1ef40.js} +38 -24
- package/esm/FilterBar-d6c1ef40.js.map +1 -0
- package/esm/{FilterField-8e64b355.js → FilterField-251b4dad.js} +5 -5
- package/esm/{FilterField-8e64b355.js.map → FilterField-251b4dad.js.map} +1 -1
- package/esm/{Grid-7b33e271.js → Grid-cbd5e68c.js} +19 -12
- package/esm/Grid-cbd5e68c.js.map +1 -0
- package/esm/{Image-c67870d4.js → Image-e2018d39.js} +15 -10
- package/esm/Image-e2018d39.js.map +1 -0
- package/esm/{InfoList-d853db58.js → InfoList-1be2ff46.js} +14 -7
- package/esm/InfoList-1be2ff46.js.map +1 -0
- package/esm/{LanguageSwitcher-c9aa594a.js → LanguageSwitcher-19482399.js} +5 -5
- package/esm/{LanguageSwitcher-c9aa594a.js.map → LanguageSwitcher-19482399.js.map} +1 -1
- package/esm/{LibThemeProvider-fb1d35ac.js → LibThemeProvider-48cad3e8.js} +3 -3
- package/esm/{LibThemeProvider-fb1d35ac.js.map → LibThemeProvider-48cad3e8.js.map} +1 -1
- package/esm/{Link-6067a27f.js → Link-d4a291af.js} +15 -8
- package/esm/Link-d4a291af.js.map +1 -0
- package/esm/{MultiselectDropdown-61a5a1a6.js → MultiselectDropdown-20b33522.js} +33 -13
- package/esm/MultiselectDropdown-20b33522.js.map +1 -0
- package/esm/{Navigation-6581bcdf.js → Navigation-d7e14d09.js} +10 -10
- package/esm/{Navigation-6581bcdf.js.map → Navigation-d7e14d09.js.map} +1 -1
- package/esm/PickerAction-704f2992.js +65 -0
- package/esm/PickerAction-704f2992.js.map +1 -0
- package/esm/Pointer-41c10bba.js +144 -0
- package/esm/Pointer-41c10bba.js.map +1 -0
- package/esm/{Section-bd61eb2f.js → Section-ca6daed2.js} +9 -5
- package/esm/Section-ca6daed2.js.map +1 -0
- package/esm/{SocialList-abaf970d.js → SocialList-d5adb772.js} +5 -5
- package/esm/{SocialList-abaf970d.js.map → SocialList-d5adb772.js.map} +1 -1
- package/esm/{TableBlock-a65315ca.js → TableBlock-5aad5dd2.js} +63 -115
- package/esm/TableBlock-5aad5dd2.js.map +1 -0
- package/esm/{Tag-217cd89b.js → Tag-f3f23d9b.js} +9 -13
- package/esm/Tag-f3f23d9b.js.map +1 -0
- package/esm/{Textarea-60503eb7.js → Textarea-af789d6e.js} +341 -252
- package/esm/Textarea-af789d6e.js.map +1 -0
- package/esm/{Textfield-e8f48b5f.js → Textfield-1f1ae077.js} +18 -6
- package/esm/Textfield-1f1ae077.js.map +1 -0
- package/esm/{VideoBlock-3f150172.js → VideoBlock-3c99c5fc.js} +12 -8
- package/esm/VideoBlock-3c99c5fc.js.map +1 -0
- package/esm/{VideoCard-aa60fbe5.js → VideoCard-dc103fce.js} +29 -24
- package/esm/VideoCard-dc103fce.js.map +1 -0
- package/esm/{Wrapper-95108115.js → Wrapper-06db8e79.js} +3 -3
- package/esm/{Wrapper-95108115.js.map → Wrapper-06db8e79.js.map} +1 -1
- package/esm/base.js +6 -6
- package/esm/blocks.js +22 -22
- package/esm/buttons.js +7 -6
- package/esm/buttons.js.map +1 -1
- package/esm/{concat-ab3c66f2.js → concat-b6d6d978.js} +2 -2
- package/esm/concat-b6d6d978.js.map +1 -0
- package/esm/cookies.js +57 -46
- package/esm/cookies.js.map +1 -1
- package/esm/fields.js +56 -123
- package/esm/fields.js.map +1 -1
- package/esm/footer.js +15 -13
- package/esm/footer.js.map +1 -1
- package/esm/{formFieldText-c6fcd370.js → formFieldText-af2106f9.js} +14 -8
- package/esm/formFieldText-af2106f9.js.map +1 -0
- package/esm/headers.js +21 -17
- package/esm/headers.js.map +1 -1
- package/esm/hooks.js +12 -12
- package/esm/icons.js +5 -2
- package/esm/icons.js.map +1 -1
- package/esm/index.js +3 -3
- package/esm/{navigation-5216dbad.js → navigation-d3d2bf2e.js} +2 -2
- package/esm/{navigation-5216dbad.js.map → navigation-d3d2bf2e.js.map} +1 -1
- package/esm/navigation.js +12 -12
- package/esm/sections.dynamicform.js +29 -33
- package/esm/sections.dynamicform.js.map +1 -1
- package/esm/sections.events.js +48 -30
- package/esm/sections.events.js.map +1 -1
- package/esm/sections.forms.js +11 -11
- package/esm/sections.jobs.js +99 -45
- package/esm/sections.jobs.js.map +1 -1
- package/esm/sections.js +537 -259
- package/esm/sections.js.map +1 -1
- package/esm/sections.news.js +155 -81
- package/esm/sections.news.js.map +1 -1
- package/esm/sections.pois.js +39 -34
- package/esm/sections.pois.js.map +1 -1
- package/esm/{structuredData-abf610d8.js → structuredData-73bcbf07.js} +32 -2
- package/esm/structuredData-73bcbf07.js.map +1 -0
- package/esm/{styles-1f1841ef.js → styles-f3ba5bae.js} +3 -2
- package/esm/styles-f3ba5bae.js.map +1 -0
- package/esm/typography.js +6 -6
- package/esm/{urlParams-9cfdaf71.js → urlParams-e7114d3e.js} +2 -2
- package/esm/{urlParams-9cfdaf71.js.map → urlParams-e7114d3e.js.map} +1 -1
- package/esm/{useCookieConsent-6661d419.js → useCookieConsent-4b667d40.js} +2 -2
- package/esm/{useCookieConsent-6661d419.js.map → useCookieConsent-4b667d40.js.map} +1 -1
- package/esm/{useEqualSheetHeight-60ff9de7.js → useEqualSheetHeight-80704864.js} +4 -4
- package/esm/{useEqualSheetHeight-60ff9de7.js.map → useEqualSheetHeight-80704864.js.map} +1 -1
- package/esm/{useLazyInput-0b6932aa.js → useLazyInput-08ee63f4.js} +2 -2
- package/esm/{useLazyInput-0b6932aa.js.map → useLazyInput-08ee63f4.js.map} +1 -1
- package/esm/{useLeafletMap-fa0ab7d4.js → useLeafletMap-f9050715.js} +2 -2
- package/esm/{useLeafletMap-fa0ab7d4.js.map → useLeafletMap-f9050715.js.map} +1 -1
- package/esm/{useMediaQuery-4c1b1fa6.js → useMediaQuery-c9fa1339.js} +3 -3
- package/esm/{useMediaQuery-4c1b1fa6.js.map → useMediaQuery-c9fa1339.js.map} +1 -1
- package/package.json +1 -1
- package/types/buttons.d.ts +1 -0
- package/types/buttons.d.ts.map +1 -1
- package/types/components/base/Grid.d.ts +3 -0
- package/types/components/base/Grid.d.ts.map +1 -1
- package/types/components/base/Section.d.ts +3 -1
- package/types/components/base/Section.d.ts.map +1 -1
- package/types/components/base/icons/ButtonLeft.d.ts +1 -2
- package/types/components/base/icons/ButtonLeft.d.ts.map +1 -1
- package/types/components/base/icons/ButtonRight.d.ts +1 -2
- package/types/components/base/icons/ButtonRight.d.ts.map +1 -1
- package/types/components/base/icons/CircleX.d.ts +10 -0
- package/types/components/base/icons/CircleX.d.ts.map +1 -0
- package/types/components/base/icons/Icons.d.ts +3 -0
- package/types/components/base/icons/Icons.d.ts.map +1 -1
- package/types/components/blocks/Alert.d.ts.map +1 -1
- package/types/components/blocks/CookieConsent.d.ts.map +1 -1
- package/types/components/blocks/EventBlock.d.ts +18 -11
- package/types/components/blocks/EventBlock.d.ts.map +1 -1
- package/types/components/blocks/Feature.d.ts +6 -2
- package/types/components/blocks/Feature.d.ts.map +1 -1
- package/types/components/blocks/Image.d.ts +2 -0
- package/types/components/blocks/Image.d.ts.map +1 -1
- package/types/components/blocks/InfoList.d.ts +5 -1
- package/types/components/blocks/InfoList.d.ts.map +1 -1
- package/types/components/blocks/JobCard.d.ts +4 -0
- package/types/components/blocks/JobCard.d.ts.map +1 -1
- package/types/components/blocks/NavBlock.d.ts.map +1 -1
- package/types/components/blocks/NewsCard.d.ts +20 -9
- package/types/components/blocks/NewsCard.d.ts.map +1 -1
- package/types/components/blocks/POICard.d.ts +7 -1
- package/types/components/blocks/POICard.d.ts.map +1 -1
- package/types/components/blocks/POIFacts.d.ts +1 -0
- package/types/components/blocks/POIFacts.d.ts.map +1 -1
- package/types/components/blocks/PriceTag.d.ts +9 -4
- package/types/components/blocks/PriceTag.d.ts.map +1 -1
- package/types/components/blocks/PromotionCard.d.ts +2 -2
- package/types/components/blocks/PromotionCard.d.ts.map +1 -1
- package/types/components/blocks/TableBlock.d.ts +2 -0
- package/types/components/blocks/TableBlock.d.ts.map +1 -1
- package/types/components/blocks/Tag.d.ts +1 -0
- package/types/components/blocks/Tag.d.ts.map +1 -1
- package/types/components/blocks/Title.d.ts +5 -0
- package/types/components/blocks/Title.d.ts.map +1 -1
- package/types/components/blocks/VideoBlock.d.ts +2 -0
- package/types/components/blocks/VideoBlock.d.ts.map +1 -1
- package/types/components/blocks/VideoCard.d.ts +2 -0
- package/types/components/blocks/VideoCard.d.ts.map +1 -1
- package/types/components/buttons/Button.d.ts +6 -1
- package/types/components/buttons/Button.d.ts.map +1 -1
- package/types/components/buttons/ButtonGhost.d.ts +6 -1
- package/types/components/buttons/ButtonGhost.d.ts.map +1 -1
- package/types/components/buttons/Control.d.ts.map +1 -1
- package/types/components/buttons/PickerAction.d.ts +14 -0
- package/types/components/buttons/PickerAction.d.ts.map +1 -0
- package/types/components/buttons/Pointer.d.ts +6 -2
- package/types/components/buttons/Pointer.d.ts.map +1 -1
- package/types/components/fields/Checkbox.d.ts +0 -1
- package/types/components/fields/Checkbox.d.ts.map +1 -1
- package/types/components/fields/CompactForm.d.ts.map +1 -1
- package/types/components/fields/Datepicker.d.ts +31 -13
- package/types/components/fields/Datepicker.d.ts.map +1 -1
- package/types/components/fields/FileUpload.d.ts.map +1 -1
- package/types/components/fields/FormField.d.ts +4 -1
- package/types/components/fields/FormField.d.ts.map +1 -1
- package/types/components/fields/LocationField.d.ts +1 -0
- package/types/components/fields/LocationField.d.ts.map +1 -1
- package/types/components/fields/MultiselectDropdown.d.ts.map +1 -1
- package/types/components/fields/Radio.d.ts +0 -1
- package/types/components/fields/Radio.d.ts.map +1 -1
- package/types/components/fields/SelectDropdown.d.ts.map +1 -1
- package/types/components/fields/Textarea.d.ts.map +1 -1
- package/types/components/fields/Textfield.d.ts.map +1 -1
- package/types/components/sections/Accordion.d.ts +6 -6
- package/types/components/sections/Accordion.d.ts.map +1 -1
- package/types/components/sections/AlertList.d.ts +10 -6
- package/types/components/sections/AlertList.d.ts.map +1 -1
- package/types/components/sections/CallToAction.d.ts +14 -9
- package/types/components/sections/CallToAction.d.ts.map +1 -1
- package/types/components/sections/CardList.d.ts +19 -14
- package/types/components/sections/CardList.d.ts.map +1 -1
- package/types/components/sections/ComparisonSlider.d.ts.map +1 -1
- package/types/components/sections/CrossPromotion.d.ts +11 -12
- package/types/components/sections/CrossPromotion.d.ts.map +1 -1
- package/types/components/sections/FactGrid.d.ts +4 -0
- package/types/components/sections/FactGrid.d.ts.map +1 -1
- package/types/components/sections/FactList.d.ts +13 -0
- package/types/components/sections/FactList.d.ts.map +1 -1
- package/types/components/sections/FeatureList.d.ts +4 -0
- package/types/components/sections/FeatureList.d.ts.map +1 -1
- package/types/components/sections/Gallery.d.ts +2 -0
- package/types/components/sections/Gallery.d.ts.map +1 -1
- package/types/components/sections/IconList.d.ts +4 -0
- package/types/components/sections/IconList.d.ts.map +1 -1
- package/types/components/sections/IndexList.d.ts +2 -0
- package/types/components/sections/IndexList.d.ts.map +1 -1
- package/types/components/sections/Map.d.ts +11 -24
- package/types/components/sections/Map.d.ts.map +1 -1
- package/types/components/sections/NavList.d.ts +2 -0
- package/types/components/sections/NavList.d.ts.map +1 -1
- package/types/components/sections/NumberList.d.ts +4 -0
- package/types/components/sections/NumberList.d.ts.map +1 -1
- package/types/components/sections/ParallaxBackground.d.ts.map +1 -1
- package/types/components/sections/PriceList.d.ts +18 -0
- package/types/components/sections/PriceList.d.ts.map +1 -1
- package/types/components/sections/PriceTable.d.ts +6 -2
- package/types/components/sections/PriceTable.d.ts.map +1 -1
- package/types/components/sections/Quote.d.ts.map +1 -1
- package/types/components/sections/RawVideo.d.ts +4 -0
- package/types/components/sections/RawVideo.d.ts.map +1 -1
- package/types/components/sections/SocialWall.d.ts +13 -12
- package/types/components/sections/SocialWall.d.ts.map +1 -1
- package/types/components/sections/Table.d.ts +11 -2
- package/types/components/sections/Table.d.ts.map +1 -1
- package/types/components/sections/Teaser.d.ts.map +1 -1
- package/types/components/sections/TeaserWide.d.ts.map +1 -1
- package/types/components/sections/Video.d.ts +2 -0
- package/types/components/sections/Video.d.ts.map +1 -1
- package/types/components/sections/events/EventDetail.d.ts +14 -14
- package/types/components/sections/events/EventDetail.d.ts.map +1 -1
- package/types/components/sections/events/EventList.d.ts +3 -16
- package/types/components/sections/events/EventList.d.ts.map +1 -1
- package/types/components/sections/events/EventOverview.d.ts +3 -15
- package/types/components/sections/events/EventOverview.d.ts.map +1 -1
- package/types/components/sections/form/DynamicForm.d.ts +9 -9
- package/types/components/sections/form/DynamicForm.d.ts.map +1 -1
- package/types/components/sections/form/renderer/datepickerRenderer.d.ts.map +1 -1
- package/types/components/sections/header/HeaderKenBurns.d.ts.map +1 -1
- package/types/components/sections/header/HeaderPoster.d.ts.map +1 -1
- package/types/components/sections/header/HeaderVideo.d.ts.map +1 -1
- package/types/components/sections/jobs/JobArticle.d.ts +4 -0
- package/types/components/sections/jobs/JobArticle.d.ts.map +1 -1
- package/types/components/sections/jobs/JobList.d.ts +8 -0
- package/types/components/sections/jobs/JobList.d.ts.map +1 -1
- package/types/components/sections/news/NewsAuthorCard.d.ts.map +1 -1
- package/types/components/sections/news/NewsFooter.d.ts +3 -16
- package/types/components/sections/news/NewsFooter.d.ts.map +1 -1
- package/types/components/sections/news/NewsImages.d.ts.map +1 -1
- package/types/components/sections/news/NewsIntro.d.ts.map +1 -1
- package/types/components/sections/news/NewsList.d.ts +3 -16
- package/types/components/sections/news/NewsList.d.ts.map +1 -1
- package/types/components/sections/news/NewsOverview.d.ts +3 -15
- package/types/components/sections/news/NewsOverview.d.ts.map +1 -1
- package/types/components/sections/news/NewsTable.d.ts +8 -0
- package/types/components/sections/news/NewsTable.d.ts.map +1 -1
- package/types/components/sections/news/NewsVideo.d.ts +4 -0
- package/types/components/sections/news/NewsVideo.d.ts.map +1 -1
- package/types/components/sections/pois/PointOfInterestOverview.d.ts +13 -12
- package/types/components/sections/pois/PointOfInterestOverview.d.ts.map +1 -1
- package/types/components/typography/Callout.d.ts +1 -0
- package/types/components/typography/Callout.d.ts.map +1 -1
- package/types/components/typography/Copy.d.ts +7 -1
- package/types/components/typography/Copy.d.ts.map +1 -1
- package/types/components/typography/Heading.d.ts +1 -0
- package/types/components/typography/Heading.d.ts.map +1 -1
- package/types/components/typography/Link.d.ts +3 -0
- package/types/components/typography/Link.d.ts.map +1 -1
- package/types/fields.d.ts +0 -1
- package/types/fields.d.ts.map +1 -1
- package/types/utils/structuredData.d.ts +14 -0
- package/types/utils/structuredData.d.ts.map +1 -1
- package/types/utils/styles.d.ts +1 -0
- package/types/utils/styles.d.ts.map +1 -1
- package/cjs/Actions-c52a14e4.js +0 -2
- package/cjs/Bdot-62c8e349.js +0 -2
- package/cjs/Button-1adf99b8.js +0 -2
- package/cjs/Button-1adf99b8.js.map +0 -1
- package/cjs/ButtonGhost-fbab8769.js +0 -2
- package/cjs/ButtonGhost-fbab8769.js.map +0 -1
- package/cjs/Callout-d84ca60b.js +0 -2
- package/cjs/Callout-d84ca60b.js.map +0 -1
- package/cjs/Checkbox-ddc9a87d.js +0 -2
- package/cjs/Checkbox-ddc9a87d.js.map +0 -1
- package/cjs/Control-e15e1572.js +0 -2
- package/cjs/Control-e15e1572.js.map +0 -1
- package/cjs/Copy-2a9d4b5d.js +0 -2
- package/cjs/Copy-2a9d4b5d.js.map +0 -1
- package/cjs/EventBlock-0b0f0dd3.js +0 -2
- package/cjs/EventBlock-0b0f0dd3.js.map +0 -1
- package/cjs/Filter-89286db9.js +0 -2
- package/cjs/Filter-89286db9.js.map +0 -1
- package/cjs/FilterBar-bfd9db6e.js +0 -2
- package/cjs/FilterBar-bfd9db6e.js.map +0 -1
- package/cjs/FilterField-d204feb1.js +0 -2
- package/cjs/Grid-1acefee9.js +0 -2
- package/cjs/Grid-1acefee9.js.map +0 -1
- package/cjs/Image-69a9c116.js +0 -2
- package/cjs/Image-69a9c116.js.map +0 -1
- package/cjs/InfoList-f040b8fb.js +0 -2
- package/cjs/InfoList-f040b8fb.js.map +0 -1
- package/cjs/LanguageSwitcher-c6fd04df.js +0 -2
- package/cjs/LibThemeProvider-69109901.js +0 -2
- package/cjs/Link-8951180c.js +0 -2
- package/cjs/Link-8951180c.js.map +0 -1
- package/cjs/MultiselectDropdown-d46ae36f.js +0 -2
- package/cjs/MultiselectDropdown-d46ae36f.js.map +0 -1
- package/cjs/Navigation-6c5d9dee.js +0 -2
- package/cjs/Pointer-0f69256f.js +0 -2
- package/cjs/Pointer-0f69256f.js.map +0 -1
- package/cjs/Section-c9a16ccc.js +0 -2
- package/cjs/Section-c9a16ccc.js.map +0 -1
- package/cjs/SocialList-73af56b5.js +0 -2
- package/cjs/TableBlock-532c7e1e.js +0 -2
- package/cjs/TableBlock-532c7e1e.js.map +0 -1
- package/cjs/Tag-232f7aa9.js +0 -2
- package/cjs/Tag-232f7aa9.js.map +0 -1
- package/cjs/Textarea-d30682bd.js +0 -2
- package/cjs/Textarea-d30682bd.js.map +0 -1
- package/cjs/Textfield-b3769184.js +0 -2
- package/cjs/Textfield-b3769184.js.map +0 -1
- package/cjs/VideoBlock-0cae22f0.js +0 -2
- package/cjs/VideoCard-c9d4f46a.js +0 -2
- package/cjs/VideoCard-c9d4f46a.js.map +0 -1
- package/cjs/Wrapper-bca9463e.js +0 -2
- package/cjs/concat-f387d848.js +0 -2
- package/cjs/formFieldText-21f5f620.js +0 -2
- package/cjs/formFieldText-21f5f620.js.map +0 -1
- package/cjs/navigation-3f9d4ac4.js +0 -2
- package/cjs/structuredData-0b1278a9.js +0 -2
- package/cjs/structuredData-0b1278a9.js.map +0 -1
- package/cjs/styles-13e5d9ac.js +0 -2
- package/cjs/styles-13e5d9ac.js.map +0 -1
- package/cjs/useCookieConsent-665d91cf.js +0 -2
- package/cjs/useEqualSheetHeight-f1c10ec5.js +0 -2
- package/cjs/useLazyInput-911b8eda.js +0 -2
- package/cjs/useLeafletMap-514304b6.js +0 -2
- package/cjs/useMediaQuery-619d7203.js +0 -2
- package/esm/Button-9a0dd9aa.js +0 -115
- package/esm/Button-9a0dd9aa.js.map +0 -1
- package/esm/ButtonGhost-fc9e7a75.js +0 -112
- package/esm/ButtonGhost-fc9e7a75.js.map +0 -1
- package/esm/Callout-46f0bef0.js.map +0 -1
- package/esm/Checkbox-962fea67.js.map +0 -1
- package/esm/Control-56ec7872.js +0 -52
- package/esm/Control-56ec7872.js.map +0 -1
- package/esm/Copy-fd9e25c0.js.map +0 -1
- package/esm/EventBlock-12361860.js.map +0 -1
- package/esm/Filter-19220970.js.map +0 -1
- package/esm/FilterBar-8c258534.js.map +0 -1
- package/esm/Grid-7b33e271.js.map +0 -1
- package/esm/Image-c67870d4.js.map +0 -1
- package/esm/InfoList-d853db58.js.map +0 -1
- package/esm/Link-6067a27f.js.map +0 -1
- package/esm/MultiselectDropdown-61a5a1a6.js.map +0 -1
- package/esm/Pointer-3e965d7b.js +0 -111
- package/esm/Pointer-3e965d7b.js.map +0 -1
- package/esm/Section-bd61eb2f.js.map +0 -1
- package/esm/TableBlock-a65315ca.js.map +0 -1
- package/esm/Tag-217cd89b.js.map +0 -1
- package/esm/Textarea-60503eb7.js.map +0 -1
- package/esm/Textfield-e8f48b5f.js.map +0 -1
- package/esm/VideoBlock-3f150172.js.map +0 -1
- package/esm/VideoCard-aa60fbe5.js.map +0 -1
- package/esm/concat-ab3c66f2.js.map +0 -1
- package/esm/formFieldText-c6fcd370.js.map +0 -1
- package/esm/structuredData-abf610d8.js.map +0 -1
- package/esm/styles-1f1841ef.js.map +0 -1
- package/types/components/fields/SearchInput.d.ts +0 -16
- package/types/components/fields/SearchInput.d.ts.map +0 -1
package/cjs/sections.jobs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sections.jobs.js","sources":["../src/components/blocks/JobCard.tsx","../src/components/sections/jobs/JobList.tsx","../src/components/sections/jobs/JobArticle.tsx"],"sourcesContent":["import ClockFilled from 'components/base/icons/ClockFilled';\nimport LocationPin from 'components/base/icons/LocationPin';\nimport Copy from 'components/typography/Copy';\nimport Heading from 'components/typography/Heading';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport React from 'react';\nimport styled, { css } from 'styled-components';\nimport { isValidArray } from 'utils/arrays';\nimport { StructuredEmploymentType } from 'utils/structuredData';\nimport { getColors as color, getGlobals, mq, spacings } from 'utils/styles';\n\nconst View = styled.div<{\n isInverted?: boolean;\n hasBg?: boolean;\n clickable?: boolean;\n}>`\n position: relative;\n color: ${({ theme }) => color(theme).primary.default};\n background: ${({ theme, hasBg, isInverted }) =>\n isInverted\n ? color(theme).elementBg.medium\n : hasBg\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n\n padding: ${spacings.spacer}px;\n\n border-radius: ${({ theme }) => getGlobals(theme).sections.edgeRadius};\n\n ${({ clickable, isInverted }) =>\n clickable &&\n css`\n transition: all 0.2s ease-in-out;\n cursor: pointer;\n\n &:hover {\n box-shadow: 0px 2px 6px\n ${isInverted\n ? 'rgba(255, 255, 255, 0.7)'\n : 'rgba(0, 0, 0, 0.35)'};\n\n color: ${({ theme }) => color(theme).primary.hover};\n }\n\n &:focus {\n box-shadow: 0px 2px 6px\n ${isInverted\n ? 'rgba(255, 255, 255, 0.7)'\n : 'rgba(0, 0, 0, 0.3)'};\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n box-shadow: none;\n }\n\n &:active {\n box-shadow: 0px 2px 6px\n ${isInverted\n ? 'rgba(255, 255, 255, 0.7)'\n : 'rgba(0, 0, 0, 0.3)'};\n }\n `}\n\n @media ${mq.medium} {\n min-height: 440px;\n\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n align-items: flex-start;\n }\n`;\n\nconst JobInfos = styled(Copy)`\n &:not(:first-child) {\n margin-top: ${spacings.nudge * 4}px;\n }\n\n color: ${({ theme }) => color(theme).primary.default};\n\n ${View}:hover & {\n color: ${({ theme }) => color(theme).primary.hover};\n }\n`;\n\nconst Info = styled.div`\n display: -ms-grid;\n display: grid;\n\n -ms-grid-columns: min-content 1fr;\n grid-template-columns: min-content 1fr;\n -ms-grid-rows: min-content 1fr;\n grid-auto-rows: min-content 1fr;\n\n & + & {\n margin-top: ${spacings.nudge * 3}px;\n }\n\n & > * + * {\n margin-left: ${spacings.nudge * 2}px;\n }\n`;\n\nconst Icon = styled.div`\n display: flex;\n align-items: center;\n\n & > * {\n height: 32px;\n width: 32px;\n }\n`;\n\nconst MainLabel = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst ViewLink = styled(Link)`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n && {\n margin: 0;\n }\n`;\n\nexport interface JobLocation {\n name?: string;\n description?: string;\n streetAddress?: string;\n addressLocality?: string;\n addressRegion?: string;\n postalCode?: string;\n addressCountry?: string;\n}\n\nexport interface JobCardProps {\n /** Invert text and background color */\n isInverted?: boolean;\n\n /** For use on light backgrounds */\n hasBackground?: boolean;\n\n /** Job card title (richtext) */\n jobTitle: string;\n\n /** The employment type (important for structured data) */\n employmentTypes?: Array<{\n name: string;\n type: StructuredEmploymentType;\n }>;\n\n /** Injection function for job time model icon */\n modelIcon?: () => React.ReactNode;\n\n /** List of job locations */\n locations?: JobLocation[];\n\n /** Total amount all locations */\n totalLocations?: number;\n\n /** Label to show if all location selected */\n allLocationsLabel?: string;\n\n /** Injection function for job location icon */\n locationIcon?: () => React.ReactNode;\n\n /** Job card link */\n link?: LinkProps;\n}\n\nconst JobCard = React.forwardRef<\n HTMLDivElement,\n JobCardProps & {\n className?: string;\n }\n>(\n (\n {\n isInverted,\n hasBackground,\n jobTitle,\n employmentTypes,\n locations,\n totalLocations,\n allLocationsLabel,\n modelIcon,\n locationIcon,\n className,\n link,\n },\n ref\n ) => {\n const hasEmploymentType = isValidArray(employmentTypes, false);\n const validLocations = locations?.filter((loc) => loc.name);\n const hasLocations = isValidArray(validLocations, false);\n\n let locationText = '';\n\n if (hasLocations) {\n if (\n totalLocations !== undefined &&\n validLocations.length >= totalLocations &&\n allLocationsLabel\n ) {\n locationText = allLocationsLabel;\n } else {\n locationText = validLocations\n .map((loc) => loc.name)\n ?.join(', ');\n }\n }\n\n return (\n <View\n ref={ref}\n isInverted={isInverted}\n hasBg={hasBackground}\n className={className}\n clickable={!!link}\n >\n <Heading\n textColor=\"inherit\"\n size=\"heading-2\"\n data-sheet=\"title\"\n innerHTML={jobTitle}\n hyphens\n />\n {(hasEmploymentType || hasLocations) && (\n <JobInfos type=\"copy-b\" data-sheet=\"info\">\n {hasEmploymentType && (\n <Info>\n <Icon>\n {modelIcon ? modelIcon() : <ClockFilled />}\n </Icon>\n <MainLabel>\n {employmentTypes\n ?.filter((type) => type.name)\n .map((type) => type.name)\n ?.join(', ')}\n </MainLabel>\n </Info>\n )}\n {hasLocations && (\n <Info>\n <Icon>\n {locationIcon ? (\n locationIcon()\n ) : (\n <LocationPin />\n )}\n </Icon>\n <MainLabel>{locationText}</MainLabel>\n </Info>\n )}\n </JobInfos>\n )}\n {link && (\n <ViewLink\n {...link}\n ariaLabel={link?.href ? jobTitle : undefined}\n />\n )}\n </View>\n );\n }\n);\n\nJobCard.displayName = 'JobCard';\n\nexport default JobCard;\n","import React, { useCallback, useEffect } from 'react';\nimport styled from 'styled-components';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport JobCard, { JobCardProps } from 'components/blocks/JobCard';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { useEqualSheetHeight } from 'utils/useEqualSheetHeight';\nimport { mq, spacings } from 'utils/styles';\nimport FilterField from 'components/fields/FilterField';\nimport { isValidArray } from 'utils/arrays';\nimport useUpdateEffect from 'utils/useUpdateEffect';\nimport { escapeRegExp } from 'utils/escape';\nimport { deleteUrlParam, getUrlParams, setUrlParam } from 'utils/urlParams';\nimport useMounted from 'utils/useMounted';\n\nconst List = styled.ul`\n display: flex;\n flex-wrap: wrap;\n list-style: none;\n margin: 0;\n padding: 0;\n\n margin-top: -${spacings.nudge * 2}px;\n margin-left: -${spacings.nudge * 2}px;\n\n @media ${mq.medium} {\n margin-top: -${spacings.spacer}px;\n margin-left: -${spacings.spacer}px;\n }\n`;\n\nconst Item = styled.li`\n flex: 0 1 100%;\n max-width: 100%;\n margin: 0;\n\n padding-top: ${spacings.nudge * 2}px;\n padding-left: ${spacings.nudge * 2}px;\n\n @media ${mq.medium} {\n flex: 0 1 50%;\n max-width: 50%;\n\n padding-top: ${spacings.spacer}px;\n padding-left: ${spacings.spacer}px;\n }\n\n @media ${mq.large} {\n flex: 0 1 33.33%;\n max-width: 33.33%;\n }\n`;\n\nconst Filter = styled(FilterField)`\n margin-top: ${spacings.nudge}px;\n margin-bottom: ${spacings.nudge * 5}px;\n\n min-width: 50%;\n`;\n\nexport interface CardProps extends JobCardProps {\n id: string;\n}\n\nexport type JobItem = Omit<\n CardProps,\n | 'isInverted'\n | 'hasBackground'\n | 'modelIcon'\n | 'locationIcon'\n | 'totalLocations'\n | 'allLocationsLabel'\n>;\n\nconst jobExactTitleFilter = (filterQuery: string) => (value: JobItem) => {\n const regex = new RegExp(filterQuery);\n return regex.test(value.jobTitle);\n};\n\nconst jobSoftTitleFilter = (filterQuery: string) => (value: JobItem) => {\n const preparedQuery = filterQuery.toLowerCase().replace(/\\s/g, '');\n const perparedJobTitle = value.jobTitle.toLowerCase().replace(/\\s/g, '');\n\n const regex = new RegExp(preparedQuery);\n return regex.test(perparedJobTitle);\n};\n\nconst jobLocationNameFilter = (filterQuery: string) => (value: JobItem) => {\n if (!isValidArray(value.locations, false)) return false;\n\n const preparedQuery = filterQuery.toLowerCase().replace(/\\s/g, '');\n const regex = new RegExp(preparedQuery);\n\n const result = value.locations.find((location) => {\n const preparedName = location.name?.toLowerCase().replace(/\\s/g, '');\n\n return regex.test(preparedName || '');\n });\n\n return !!result;\n};\n\nconst jobTypesFilter = (filterQuery: string) => (value: JobItem) => {\n if (!isValidArray(value?.employmentTypes, false)) return false;\n\n const preparedQuery = filterQuery.toLowerCase().replace(/\\s/g, '');\n const regex = new RegExp(preparedQuery);\n\n return !!value.employmentTypes.find((type) => {\n if (!type.name) return false;\n const preparedText = type.name.toLowerCase().replace(/\\s/g, '');\n return regex.test(preparedText);\n });\n};\n\nconst removeMatchIntersections = (array: FilterMatch[], item?: JobItem[]) => {\n if (!item) return [];\n return item?.filter(\n (m) => !array.find((prioItem) => prioItem.item.id === m.id)\n );\n};\n\ninterface FilterMatch {\n item: JobItem;\n priority: number;\n}\n\nconst filterJobs = (filterQuery: string, jobs: JobItem[]) => {\n const prioList: FilterMatch[] = [];\n if (\n !isValidArray(\n jobs?.filter((job) => job.jobTitle !== undefined),\n false\n )\n ) {\n return prioList;\n }\n\n // PRIO 1 Filter: Exact name\n const exactNameMatches = jobs?.filter(jobExactTitleFilter(filterQuery));\n if (isValidArray(exactNameMatches, false)) {\n prioList.push(\n ...exactNameMatches.map((match) => ({\n item: match,\n priority: 1,\n }))\n );\n }\n\n // PRIO 2 Filter: Name\n const nameMatches = removeMatchIntersections(\n prioList,\n jobs?.filter(jobSoftTitleFilter(filterQuery))\n );\n if (isValidArray(nameMatches, false)) {\n prioList.push(\n ...nameMatches.map((match) => ({\n item: match,\n priority: 2,\n }))\n );\n }\n\n // PRIO 3 Filter: Location\n const locationNameMatches = removeMatchIntersections(\n prioList,\n jobs?.filter(jobLocationNameFilter(filterQuery))\n );\n if (isValidArray(locationNameMatches, false)) {\n prioList.push(\n ...locationNameMatches.map((match) => ({\n item: match,\n priority: 3,\n }))\n );\n }\n\n // PRIO 4 Filter: Job Type\n const typeMatches = removeMatchIntersections(\n prioList,\n jobs?.filter(jobTypesFilter(filterQuery))\n );\n\n if (isValidArray(typeMatches, false)) {\n prioList.push(\n ...typeMatches.map((match) => ({\n item: match,\n priority: 4,\n }))\n );\n }\n\n return prioList;\n};\n\nconst JobList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array of job item settings */\n jobs?: JobItem[];\n\n /** Total amount all locations */\n totalJobLocations?: number;\n\n /** Label to show if all location selected */\n allJobLocationsLabel?: string;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Injection function for job time model icon */\n modelIcon?: () => React.ReactNode;\n\n /** Injection function for job location icon */\n locationIcon?: () => React.ReactNode;\n\n /** Initial filter query on component render */\n initialFilterQuery?: string;\n\n /** Filter placeholder */\n filterPlaceholder?: string;\n\n /** Show filter input field */\n hasFilter?: boolean;\n\n /** Injection function for filter submit icon */\n filterSubmitIcon?: (isInverted?: boolean) => React.ReactNode;\n\n /** Injection function for filter reset icon */\n filterClearIcon?: (isInverted?: boolean) => React.ReactNode;\n}> = ({\n anchorId,\n jobs,\n bgMode,\n modelIcon,\n locationIcon,\n totalJobLocations,\n allJobLocationsLabel,\n initialFilterQuery,\n filterPlaceholder,\n hasFilter,\n filterSubmitIcon,\n filterClearIcon,\n}) => {\n const { colors, globals } = useLibTheme();\n const filterName = globals.sections.jobFilterName;\n\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n const jobCount = jobs?.length || 0;\n\n const { sheetRefs: cardRefs } = useEqualSheetHeight<HTMLDivElement>({\n listLength: jobCount,\n identifiers: ['[data-sheet=\"title\"]', '[data-sheet=\"info\"]'],\n responsive: {\n small: 1,\n semilarge: 2,\n large: 3,\n },\n });\n\n const [filterQuery, setFilterQuery] = React.useState<string>(\n initialFilterQuery || ''\n );\n const isMounted = useMounted();\n\n const jobMatches: FilterMatch[] = React.useMemo(() => {\n const queryParts =\n filterQuery !== undefined\n ? filterQuery.split(' ').map((part) => part.trim())\n : [''];\n const searchMatches: Array<{\n match: FilterMatch;\n intersections: number;\n }> = [];\n\n // tracking matches of each query part\n for (const part of queryParts) {\n const matches = filterJobs(escapeRegExp(part), jobs || []);\n\n for (const match of matches) {\n const intersectionIndex = searchMatches.findIndex(\n (sItem) => sItem.match.item.id === match.item.id\n );\n\n if (intersectionIndex !== -1) {\n searchMatches[intersectionIndex].intersections += 1;\n } else {\n searchMatches.push({\n match,\n intersections: 1,\n });\n }\n }\n }\n\n // filter search matches by intersections so only matches with results for all search parts are shown\n return searchMatches\n .filter((m) => m.intersections >= queryParts.length)\n .map<FilterMatch>((m) => ({\n ...m.match,\n }));\n }, [filterQuery, jobs]);\n\n const getFilter = useCallback(() => {\n return getUrlParams()[filterName];\n }, [filterName]);\n\n useEffect(() => {\n const urlFilter = getFilter();\n\n if (\n urlFilter !== undefined &&\n urlFilter !== null &&\n typeof urlFilter === 'string'\n ) {\n setFilterQuery(urlFilter);\n }\n }, [getFilter]);\n\n useEffect(() => {\n if (isMounted) return;\n\n // set inital data into URL\n if (filterQuery) {\n setUrlParam(filterName, filterQuery);\n } else {\n deleteUrlParam(filterName);\n }\n }, [filterName, filterQuery, isMounted]);\n\n useUpdateEffect(() => {\n // set filters to URL params\n if (filterQuery) {\n setUrlParam(filterName, filterQuery);\n } else {\n deleteUrlParam(filterName);\n }\n }, [filterQuery]);\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper addWhitespace>\n {hasFilter && (\n <Filter\n placeholder={filterPlaceholder || 'Suche'}\n value={filterQuery}\n initialValue={initialFilterQuery}\n onSubmit={setFilterQuery}\n isInverted={isInverted}\n submitIcon={filterSubmitIcon}\n clearIcon={filterClearIcon}\n />\n )}\n <List>\n {jobMatches\n ?.sort((a, b) => a.priority - b.priority)\n .map((match, i) => (\n <Item key={i}>\n <JobCard\n ref={cardRefs[i]}\n {...match.item}\n isInverted={isInverted}\n hasBackground={hasBg}\n modelIcon={modelIcon}\n locationIcon={locationIcon}\n totalLocations={totalJobLocations}\n allLocationsLabel={allJobLocationsLabel}\n />\n </Item>\n ))}\n </List>\n </Wrapper>\n </Section>\n );\n};\n\nexport const JobListComponent = JobList;\nexport default withLibTheme(JobList);\n","import ClockFilled from 'components/base/icons/ClockFilled';\nimport LocationPin from 'components/base/icons/LocationPin';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Actions from 'components/blocks/Actions';\nimport { JobCardProps } from 'components/blocks/JobCard';\nimport Copy from 'components/typography/Copy';\nimport Heading from 'components/typography/Heading';\nimport React from 'react';\nimport styled from 'styled-components';\nimport { isValidArray } from 'utils/arrays';\nimport { concat } from 'utils/concat';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { generateJob, StructuredEmploymentType } from 'utils/structuredData';\nimport { spacings } from 'utils/styles';\n\nconst ArticleHead = styled.div`\n & + * {\n margin-top: ${spacings.spacer}px;\n }\n`;\n\nconst JobInfos = styled(Copy)`\n &:not(:first-child) {\n margin-top: ${spacings.spacer}px;\n }\n`;\n\nconst Info = styled.div`\n display: -ms-grid;\n display: grid;\n\n -ms-grid-columns: min-content 1fr;\n grid-template-columns: min-content 1fr;\n -ms-grid-rows: min-content 1fr;\n grid-auto-rows: min-content 1fr;\n\n & + & {\n margin-top: ${spacings.nudge * 3}px;\n }\n\n & > * + * {\n margin-left: ${spacings.nudge * 2}px;\n }\n`;\n\nconst Icon = styled.span`\n display: flex;\n align-items: center;\n\n & > * {\n height: 32px;\n width: 32px;\n }\n`;\n\nconst MainLabel = styled.span`\n display: flex;\n align-items: center;\n`;\n\nconst Text = styled(Copy)`\n & + & {\n margin-top: ${spacings.nudge * 3}px;\n }\n`;\n\nconst StyledActions = styled(Actions)`\n margin-top: ${spacings.spacer}px;\n`;\n\nexport interface OrganizationData {\n name?: string;\n url?: string;\n logo?: string;\n telephone?: string;\n email?: string;\n address?: {\n streetAddress?: string;\n addressLocality?: string;\n postalCode?: string;\n addressCountry?: string;\n };\n}\n\nexport type JobArticleProps = Omit<\n JobCardProps,\n 'isInverted' | 'hasBackground' | 'link'\n> & {\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Abstract text which summarizes the job */\n abstract?: string;\n\n /** Text that describes the job (richtext) */\n description?: string;\n\n /** The hiring organization (important for structured data) */\n organization?: OrganizationData;\n\n /** The date of posting the job tender (important for structured data) */\n datePosted?: Date;\n\n /** Function to inject primary action */\n primaryAction?: (isInverted?: boolean) => React.ReactNode;\n\n /** Function to inject secondary action */\n secondaryAction?: (isInverted?: boolean) => React.ReactNode;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n};\n\nconst JobArticle: React.FC<JobArticleProps> = ({\n anchorId,\n bgMode,\n jobTitle,\n employmentTypes,\n locations,\n totalLocations,\n allLocationsLabel,\n modelIcon,\n locationIcon,\n abstract,\n description,\n organization,\n datePosted,\n primaryAction,\n secondaryAction,\n}) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const hasEmploymentType = isValidArray(employmentTypes, false);\n const validLocations = locations?.filter((loc) => loc.name);\n const hasLocations = isValidArray(validLocations, false);\n\n let locationText = '';\n\n if (hasLocations) {\n if (\n totalLocations !== undefined &&\n validLocations.length >= totalLocations\n ) {\n locationText = allLocationsLabel || '';\n } else {\n locationText = validLocations.map((loc) => loc.name)?.join(', ');\n }\n }\n\n const jsonLd = {\n jobTitle, // title\n locations, // jobLocation\n jobDesc: concat([abstract, description], ' - '), // description\n organization: organization, // hiringOrganization\n directApply: primaryAction || secondaryAction ? true : false, // directApply\n employmentTypes:\n (employmentTypes\n ?.filter((el) => el.type)\n .map((el) => el.type) as StructuredEmploymentType[]) || [],\n datePosted, // datePosted\n };\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n {generateJob(jsonLd)}\n <Wrapper clampWidth=\"small\" addWhitespace>\n <ArticleHead>\n <Heading\n size=\"heading-2\"\n innerHTML={jobTitle}\n isInverted={isInverted}\n />\n {(hasEmploymentType || hasLocations) && (\n <JobInfos\n type=\"copy-b\"\n data-sheet=\"info\"\n isInverted={isInverted}\n >\n {hasEmploymentType && (\n <Info>\n <Icon>\n {modelIcon ? (\n modelIcon()\n ) : (\n <ClockFilled />\n )}\n </Icon>\n <MainLabel>\n {employmentTypes\n ?.filter((type) => type.name)\n .map((type) => type.name)\n ?.join(', ')}\n </MainLabel>\n </Info>\n )}\n\n {hasLocations && (\n <Info>\n <Icon>\n {locationIcon ? (\n locationIcon()\n ) : (\n <LocationPin />\n )}\n </Icon>\n <MainLabel>{locationText}</MainLabel>\n </Info>\n )}\n </JobInfos>\n )}\n </ArticleHead>\n {abstract && (\n <Text type=\"copy-b\" isInverted={isInverted}>\n {abstract}\n </Text>\n )}\n {description && (\n <Text innerHTML={description} isInverted={isInverted} />\n )}\n {(primaryAction || secondaryAction) && (\n <StyledActions\n primary={primaryAction && primaryAction(isInverted)}\n secondary={\n secondaryAction && secondaryAction(isInverted)\n }\n />\n )}\n </Wrapper>\n </Section>\n );\n};\n\nexport const JobArticleComponent = JobArticle;\nexport default withLibTheme(JobArticle);\n"],"names":["View","styled","div","withConfig","displayName","componentId","templateObject_2","__makeTemplateObject","_a","theme","color","primary","default","hasBg","isInverted","elementBg","medium","light","spacings","spacer","getGlobals","sections","edgeRadius","clickable","css","templateObject_1","hover","mq","JobInfos","Copy","templateObject_3","nudge","Info","Icon","templateObject_5","MainLabel","templateObject_6","ViewLink","Link","templateObject_7","JobCard","React","forwardRef","ref","hasBackground","jobTitle","employmentTypes","locations","totalLocations","allLocationsLabel","modelIcon","locationIcon","className","link","hasEmploymentType","isValidArray","validLocations","filter","loc","name","hasLocations","locationText","undefined","length","map","_b","join","createElement","Heading","textColor","size","innerHTML","hyphens","type","ClockFilled","_c","LocationPin","__assign","ariaLabel","href","List","ul","Item","li","large","Filter","FilterField","removeMatchIntersections","array","item","m","find","prioItem","id","filterJobs","filterQuery","jobs","prioList","job","exactNameMatches","value","RegExp","test","jobExactTitleFilter","push","apply","match","priority","nameMatches","preparedQuery","toLowerCase","replace","perparedJobTitle","jobSoftTitleFilter","locationNameMatches","regex","location","preparedName","jobLocationNameFilter","typeMatches","preparedText","jobTypesFilter","JobList$1","withLibTheme","anchorId","bgMode","totalJobLocations","allJobLocationsLabel","initialFilterQuery","filterPlaceholder","hasFilter","filterSubmitIcon","filterClearIcon","useLibTheme","colors","filterName","globals","jobFilterName","jobCount","cardRefs","useEqualSheetHeight","listLength","identifiers","responsive","small","semilarge","useState","setFilterQuery","isMounted","useMounted","jobMatches","useMemo","queryParts","split","part","trim","searchMatches","queryParts_1","_i","intersectionIndex","findIndex","sItem","intersections","matches_1","escapeRegExp","getFilter","useCallback","getUrlParams","useEffect","urlFilter","setUrlParam","deleteUrlParam","useUpdateEffect","Section","addSeperation","bgColor","sectionBg","dark","mapToBgMode","Wrapper","addWhitespace","placeholder","initialValue","onSubmit","submitIcon","clearIcon","sort","a","b","i","key","ArticleHead","span","templateObject_4","Text","StyledActions","Actions","JobArticle$1","abstract","description","organization","datePosted","primaryAction","secondaryAction","jsonLd","jobDesc","concat","directApply","el","generateJob","clampWidth","secondary"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sections.jobs.js","sources":["../src/components/blocks/JobCard.tsx","../src/components/sections/jobs/JobList.tsx","../src/components/sections/jobs/JobArticle.tsx"],"sourcesContent":["import ClockFilled from 'components/base/icons/ClockFilled';\nimport LocationPin from 'components/base/icons/LocationPin';\nimport Copy from 'components/typography/Copy';\nimport Heading from 'components/typography/Heading';\nimport Link, { LinkProps } from 'components/typography/Link';\nimport React from 'react';\nimport styled, { css } from 'styled-components';\nimport { isValidArray } from 'utils/arrays';\nimport { StructuredEmploymentType } from 'utils/structuredData';\nimport { getColors as color, getGlobals, mq, spacings } from 'utils/styles';\n\nconst View = styled.div<{\n isInverted?: boolean;\n hasBg?: boolean;\n clickable?: boolean;\n}>`\n position: relative;\n color: ${({ theme }) => color(theme).primary.default};\n background: ${({ theme, hasBg, isInverted }) =>\n isInverted\n ? color(theme).elementBg.medium\n : hasBg\n ? color(theme).elementBg.light\n : color(theme).elementBg.medium};\n\n padding: ${spacings.spacer}px;\n\n border-radius: ${({ theme }) => getGlobals(theme).sections.edgeRadius};\n\n ${({ clickable, isInverted, theme }) =>\n clickable &&\n css`\n transition: box-shadow 0.2s ease-in-out, color 0.2s ease-in-out;\n cursor: pointer;\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n box-shadow: 0px 2px 6px\n ${isInverted\n ? 'rgba(255, 255, 255, 0.7)'\n : 'rgba(0, 0, 0, 0.35)'};\n\n color: ${({ theme }) => color(theme).primary.hover};\n }\n }\n\n &:has(:focus-visible) {\n outline: 2px solid\n ${isInverted\n ? color(theme).primary.inverted\n : color(theme).primary.default};\n outline-offset: 2px;\n }\n\n &:active {\n box-shadow: 0px 2px 6px\n ${isInverted\n ? 'rgba(255, 255, 255, 0.7)'\n : 'rgba(0, 0, 0, 0.3)'};\n }\n `}\n\n @media ${mq.medium} {\n min-height: 440px;\n\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n align-items: flex-start;\n }\n`;\n\nconst JobInfos = styled(Copy)`\n &:not(:first-child) {\n margin-top: ${spacings.nudge * 4}px;\n }\n\n color: ${({ theme }) => color(theme).primary.default};\n\n ${View}:hover & {\n color: ${({ theme }) => color(theme).primary.hover};\n }\n`;\n\nconst Info = styled.div`\n display: -ms-grid;\n display: grid;\n\n -ms-grid-columns: min-content 1fr;\n grid-template-columns: min-content 1fr;\n -ms-grid-rows: min-content 1fr;\n grid-auto-rows: min-content 1fr;\n\n & + & {\n margin-top: ${spacings.nudge * 3}px;\n }\n\n & > * + * {\n margin-left: ${spacings.nudge * 2}px;\n }\n`;\n\nconst Icon = styled.div`\n display: flex;\n align-items: center;\n\n & > * {\n height: 32px;\n width: 32px;\n }\n`;\n\nconst MainLabel = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst HeadingLink = styled(Link)`\n color: ${({ theme }) => color(theme).primary.default};\n text-decoration: none;\n\n ${View}:hover & {\n color: ${({ theme }) => color(theme).primary.hover};\n }\n\n &:focus-visible {\n outline: none;\n }\n\n &:before {\n content: '';\n position: absolute;\n inset: 0;\n }\n`;\n\nexport interface JobLocation {\n name?: string;\n description?: string;\n streetAddress?: string;\n addressLocality?: string;\n addressRegion?: string;\n postalCode?: string;\n addressCountry?: string;\n}\n\nexport interface JobCardProps {\n /** Invert text and background color */\n isInverted?: boolean;\n\n /** For use on light backgrounds */\n hasBackground?: boolean;\n\n /** Job card title (richtext) */\n jobTitle: string;\n\n /** The employment type (important for structured data) */\n employmentTypes?: Array<{\n name: string;\n type: StructuredEmploymentType;\n }>;\n\n /** Injection function for job time model icon */\n modelIcon?: () => React.ReactNode;\n\n /** List of job locations */\n locations?: JobLocation[];\n\n /** Total amount all locations */\n totalLocations?: number;\n\n /** Label to show if all location selected */\n allLocationsLabel?: string;\n\n /** Injection function for job location icon */\n locationIcon?: () => React.ReactNode;\n\n /** Job card link */\n link?: LinkProps;\n\n /** Employment type label for accessibility */\n employmentTypeAriaLabel?: string;\n\n /** Location label for accessibility */\n locationAriaLabel?: string;\n}\n\nconst JobCard = React.forwardRef<\n HTMLDivElement,\n JobCardProps & {\n className?: string;\n }\n>(\n (\n {\n isInverted,\n hasBackground,\n jobTitle,\n employmentTypes,\n locations,\n totalLocations,\n allLocationsLabel,\n modelIcon,\n locationIcon,\n employmentTypeAriaLabel,\n locationAriaLabel,\n className,\n link,\n },\n ref\n ) => {\n const hasEmploymentType = isValidArray(employmentTypes, false);\n const validLocations = locations?.filter((loc) => loc.name);\n const hasLocations = isValidArray(validLocations, false);\n\n let locationText = '';\n\n if (hasLocations) {\n if (\n totalLocations !== undefined &&\n validLocations.length >= totalLocations &&\n allLocationsLabel\n ) {\n locationText = allLocationsLabel;\n } else {\n locationText = validLocations\n .map((loc) => loc.name)\n ?.join(', ');\n }\n }\n\n const employmentType = employmentTypes\n ?.filter((type) => type.name)\n .map((type) => type.name)\n ?.join(', ');\n\n return (\n <View\n ref={ref}\n isInverted={isInverted}\n hasBg={hasBackground}\n className={className}\n clickable={!!link}\n >\n <HeadingLink\n {...link}\n ariaLabel={link?.href ? jobTitle : undefined}\n >\n <Heading\n renderAs=\"h3\"\n textColor=\"inherit\"\n size=\"heading-2\"\n data-sheet=\"title\"\n innerHTML={jobTitle}\n hyphens\n />\n </HeadingLink>\n {(hasEmploymentType || hasLocations) && (\n <JobInfos type=\"copy-b\" data-sheet=\"info\">\n {hasEmploymentType && (\n <Info>\n <Icon>\n {modelIcon ? modelIcon() : <ClockFilled />}\n </Icon>\n <MainLabel\n aria-label={\n employmentTypeAriaLabel ||\n `Employment Type: ${employmentType}`\n }\n >\n {employmentType}\n </MainLabel>\n </Info>\n )}\n {hasLocations && (\n <Info>\n <Icon>\n {locationIcon ? (\n locationIcon()\n ) : (\n <LocationPin />\n )}\n </Icon>\n <MainLabel\n aria-label={\n locationAriaLabel ||\n `Locations: ${locationText}`\n }\n >\n {locationText}\n </MainLabel>\n </Info>\n )}\n </JobInfos>\n )}\n </View>\n );\n }\n);\n\nJobCard.displayName = 'JobCard';\n\nexport default JobCard;\n","import React, { useCallback, useEffect } from 'react';\nimport styled from 'styled-components';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport JobCard, { JobCardProps } from 'components/blocks/JobCard';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { useEqualSheetHeight } from 'utils/useEqualSheetHeight';\nimport { mq, spacings } from 'utils/styles';\nimport FilterField from 'components/fields/FilterField';\nimport { isValidArray } from 'utils/arrays';\nimport useUpdateEffect from 'utils/useUpdateEffect';\nimport { escapeRegExp } from 'utils/escape';\nimport { deleteUrlParam, getUrlParams, setUrlParam } from 'utils/urlParams';\nimport useMounted from 'utils/useMounted';\nimport { concat as cn } from 'utils/concat';\n\nconst List = styled.ul`\n display: flex;\n flex-wrap: wrap;\n list-style: none;\n margin: 0;\n padding: 0;\n\n margin-top: -${spacings.nudge * 2}px;\n margin-left: -${spacings.nudge * 2}px;\n\n @media ${mq.medium} {\n margin-top: -${spacings.spacer}px;\n margin-left: -${spacings.spacer}px;\n }\n`;\n\nconst Item = styled.li`\n flex: 0 1 100%;\n max-width: 100%;\n margin: 0;\n\n padding-top: ${spacings.nudge * 2}px;\n padding-left: ${spacings.nudge * 2}px;\n\n @media ${mq.medium} {\n flex: 0 1 50%;\n max-width: 50%;\n\n padding-top: ${spacings.spacer}px;\n padding-left: ${spacings.spacer}px;\n }\n\n @media ${mq.large} {\n flex: 0 1 33.33%;\n max-width: 33.33%;\n }\n`;\n\nconst Filter = styled(FilterField)`\n margin-top: ${spacings.nudge}px;\n margin-bottom: ${spacings.nudge * 5}px;\n\n min-width: 50%;\n`;\n\nexport interface CardProps extends JobCardProps {\n id: string;\n}\n\nexport type JobItem = Omit<\n CardProps,\n | 'isInverted'\n | 'hasBackground'\n | 'modelIcon'\n | 'locationIcon'\n | 'totalLocations'\n | 'allLocationsLabel'\n>;\n\nconst jobExactTitleFilter = (filterQuery: string) => (value: JobItem) => {\n const regex = new RegExp(filterQuery);\n return regex.test(value.jobTitle);\n};\n\nconst jobSoftTitleFilter = (filterQuery: string) => (value: JobItem) => {\n const preparedQuery = filterQuery.toLowerCase().replace(/\\s/g, '');\n const perparedJobTitle = value.jobTitle.toLowerCase().replace(/\\s/g, '');\n\n const regex = new RegExp(preparedQuery);\n return regex.test(perparedJobTitle);\n};\n\nconst jobLocationNameFilter = (filterQuery: string) => (value: JobItem) => {\n if (!isValidArray(value.locations, false)) return false;\n\n const preparedQuery = filterQuery.toLowerCase().replace(/\\s/g, '');\n const regex = new RegExp(preparedQuery);\n\n const result = value.locations.find((location) => {\n const preparedName = location.name?.toLowerCase().replace(/\\s/g, '');\n\n return regex.test(preparedName || '');\n });\n\n return !!result;\n};\n\nconst jobTypesFilter = (filterQuery: string) => (value: JobItem) => {\n if (!isValidArray(value?.employmentTypes, false)) return false;\n\n const preparedQuery = filterQuery.toLowerCase().replace(/\\s/g, '');\n const regex = new RegExp(preparedQuery);\n\n return !!value.employmentTypes.find((type) => {\n if (!type.name) return false;\n const preparedText = type.name.toLowerCase().replace(/\\s/g, '');\n return regex.test(preparedText);\n });\n};\n\nconst removeMatchIntersections = (array: FilterMatch[], item?: JobItem[]) => {\n if (!item) return [];\n return item?.filter(\n (m) => !array.find((prioItem) => prioItem.item.id === m.id)\n );\n};\n\ninterface FilterMatch {\n item: JobItem;\n priority: number;\n}\n\nconst filterJobs = (filterQuery: string, jobs: JobItem[]) => {\n const prioList: FilterMatch[] = [];\n if (\n !isValidArray(\n jobs?.filter((job) => job.jobTitle !== undefined),\n false\n )\n ) {\n return prioList;\n }\n\n // PRIO 1 Filter: Exact name\n const exactNameMatches = jobs?.filter(jobExactTitleFilter(filterQuery));\n if (isValidArray(exactNameMatches, false)) {\n prioList.push(\n ...exactNameMatches.map((match) => ({\n item: match,\n priority: 1,\n }))\n );\n }\n\n // PRIO 2 Filter: Name\n const nameMatches = removeMatchIntersections(\n prioList,\n jobs?.filter(jobSoftTitleFilter(filterQuery))\n );\n if (isValidArray(nameMatches, false)) {\n prioList.push(\n ...nameMatches.map((match) => ({\n item: match,\n priority: 2,\n }))\n );\n }\n\n // PRIO 3 Filter: Location\n const locationNameMatches = removeMatchIntersections(\n prioList,\n jobs?.filter(jobLocationNameFilter(filterQuery))\n );\n if (isValidArray(locationNameMatches, false)) {\n prioList.push(\n ...locationNameMatches.map((match) => ({\n item: match,\n priority: 3,\n }))\n );\n }\n\n // PRIO 4 Filter: Job Type\n const typeMatches = removeMatchIntersections(\n prioList,\n jobs?.filter(jobTypesFilter(filterQuery))\n );\n\n if (isValidArray(typeMatches, false)) {\n prioList.push(\n ...typeMatches.map((match) => ({\n item: match,\n priority: 4,\n }))\n );\n }\n\n return prioList;\n};\n\nconst JobList: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array of job item settings */\n jobs?: JobItem[];\n\n /** Total amount all locations */\n totalJobLocations?: number;\n\n /** Label to show if all location selected */\n allJobLocationsLabel?: string;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Injection function for job time model icon */\n modelIcon?: () => React.ReactNode;\n\n /** Injection function for job location icon */\n locationIcon?: () => React.ReactNode;\n\n /** Initial filter query on component render */\n initialFilterQuery?: string;\n\n /** Filter placeholder */\n filterPlaceholder?: string;\n\n /** Show filter input field */\n hasFilter?: boolean;\n\n /** Injection function for filter submit icon */\n filterSubmitIcon?: (isInverted?: boolean) => React.ReactNode;\n\n /** Injection function for filter reset icon */\n filterClearIcon?: (isInverted?: boolean) => React.ReactNode;\n\n /** Additional aria-label for the list */\n listAriaLabel?: string;\n\n /** Function to generate aria-label for each job item */\n itemAriaLabel?: (title: string, type: string, location: string) => string;\n}> = ({\n anchorId,\n jobs,\n bgMode,\n modelIcon,\n locationIcon,\n totalJobLocations,\n allJobLocationsLabel,\n initialFilterQuery,\n filterPlaceholder,\n hasFilter,\n filterSubmitIcon,\n filterClearIcon,\n listAriaLabel = 'List of job offers',\n itemAriaLabel,\n}) => {\n const { colors, globals } = useLibTheme();\n const filterName = globals.sections.jobFilterName;\n\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n const jobCount = jobs?.length || 0;\n\n const { sheetRefs: cardRefs } = useEqualSheetHeight<HTMLDivElement>({\n listLength: jobCount,\n identifiers: ['[data-sheet=\"title\"]', '[data-sheet=\"info\"]'],\n responsive: {\n small: 1,\n semilarge: 2,\n large: 3,\n },\n });\n\n const [filterQuery, setFilterQuery] = React.useState<string>(\n initialFilterQuery || ''\n );\n const isMounted = useMounted();\n\n const jobMatches: FilterMatch[] = React.useMemo(() => {\n const queryParts =\n filterQuery !== undefined\n ? filterQuery.split(' ').map((part) => part.trim())\n : [''];\n const searchMatches: Array<{\n match: FilterMatch;\n intersections: number;\n }> = [];\n\n // tracking matches of each query part\n for (const part of queryParts) {\n const matches = filterJobs(escapeRegExp(part), jobs || []);\n\n for (const match of matches) {\n const intersectionIndex = searchMatches.findIndex(\n (sItem) => sItem.match.item.id === match.item.id\n );\n\n if (intersectionIndex !== -1) {\n searchMatches[intersectionIndex].intersections += 1;\n } else {\n searchMatches.push({\n match,\n intersections: 1,\n });\n }\n }\n }\n\n // filter search matches by intersections so only matches with results for all search parts are shown\n return searchMatches\n .filter((m) => m.intersections >= queryParts.length)\n .map<FilterMatch>((m) => ({\n ...m.match,\n }));\n }, [filterQuery, jobs]);\n\n const getFilter = useCallback(() => {\n return getUrlParams()[filterName];\n }, [filterName]);\n\n useEffect(() => {\n const urlFilter = getFilter();\n\n if (\n urlFilter !== undefined &&\n urlFilter !== null &&\n typeof urlFilter === 'string'\n ) {\n setFilterQuery(urlFilter);\n }\n }, [getFilter]);\n\n useEffect(() => {\n if (isMounted) return;\n\n // set inital data into URL\n if (filterQuery) {\n setUrlParam(filterName, filterQuery);\n } else {\n deleteUrlParam(filterName);\n }\n }, [filterName, filterQuery, isMounted]);\n\n useUpdateEffect(() => {\n // set filters to URL params\n if (filterQuery) {\n setUrlParam(filterName, filterQuery);\n } else {\n deleteUrlParam(filterName);\n }\n }, [filterQuery]);\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper addWhitespace>\n {hasFilter && (\n <Filter\n placeholder={filterPlaceholder || 'Suche'}\n value={filterQuery}\n initialValue={initialFilterQuery}\n onSubmit={setFilterQuery}\n isInverted={isInverted}\n submitIcon={filterSubmitIcon}\n clearIcon={filterClearIcon}\n />\n )}\n <List aria-label={listAriaLabel}>\n {jobMatches\n ?.sort((a, b) => a.priority - b.priority)\n .map((match, i) => {\n const employmentType = match.item.employmentTypes\n ?.filter((type) => type.name)\n .map((type) => type.name)\n ?.join(', ');\n\n const validLocations = match.item.locations?.filter(\n (loc) => loc.name\n );\n const hasLocations = isValidArray(\n validLocations,\n false\n );\n\n let locationText = '';\n\n if (hasLocations) {\n if (\n totalJobLocations !== undefined &&\n validLocations.length >=\n totalJobLocations &&\n allJobLocationsLabel\n ) {\n locationText = allJobLocationsLabel;\n } else {\n locationText = validLocations\n .map((loc) => loc.name)\n ?.join(', ');\n }\n }\n\n const itemLabel = itemAriaLabel\n ? itemAriaLabel(\n match.item.jobTitle,\n employmentType || '',\n locationText\n )\n : `Job offer: ${cn(\n [\n match.item.jobTitle,\n employmentType,\n locationText,\n ],\n ', '\n )}`;\n\n return (\n <Item key={i} aria-label={itemLabel}>\n <JobCard\n ref={cardRefs[i]}\n {...match.item}\n isInverted={isInverted}\n hasBackground={hasBg}\n modelIcon={modelIcon}\n locationIcon={locationIcon}\n totalLocations={totalJobLocations}\n allLocationsLabel={allJobLocationsLabel}\n />\n </Item>\n );\n })}\n </List>\n </Wrapper>\n </Section>\n );\n};\n\nexport const JobListComponent = JobList;\nexport default withLibTheme(JobList);\n","import ClockFilled from 'components/base/icons/ClockFilled';\nimport LocationPin from 'components/base/icons/LocationPin';\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Actions from 'components/blocks/Actions';\nimport { JobCardProps } from 'components/blocks/JobCard';\nimport Copy from 'components/typography/Copy';\nimport Heading from 'components/typography/Heading';\nimport React from 'react';\nimport styled from 'styled-components';\nimport { isValidArray } from 'utils/arrays';\nimport { concat } from 'utils/concat';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { generateJob, StructuredEmploymentType } from 'utils/structuredData';\nimport { spacings } from 'utils/styles';\n\nconst ArticleHead = styled.div`\n & + * {\n margin-top: ${spacings.spacer}px;\n }\n`;\n\nconst JobInfos = styled(Copy)`\n &:not(:first-child) {\n margin-top: ${spacings.spacer}px;\n }\n`;\n\nconst Info = styled.div`\n display: -ms-grid;\n display: grid;\n\n -ms-grid-columns: min-content 1fr;\n grid-template-columns: min-content 1fr;\n -ms-grid-rows: min-content 1fr;\n grid-auto-rows: min-content 1fr;\n\n & + & {\n margin-top: ${spacings.nudge * 3}px;\n }\n\n & > * + * {\n margin-left: ${spacings.nudge * 2}px;\n }\n`;\n\nconst Icon = styled.span`\n display: flex;\n align-items: center;\n\n & > * {\n height: 32px;\n width: 32px;\n }\n`;\n\nconst MainLabel = styled.span`\n display: flex;\n align-items: center;\n`;\n\nconst Text = styled(Copy)`\n & + & {\n margin-top: ${spacings.nudge * 3}px;\n }\n`;\n\nconst StyledActions = styled(Actions)`\n margin-top: ${spacings.spacer}px;\n`;\n\nexport interface OrganizationData {\n name?: string;\n url?: string;\n logo?: string;\n telephone?: string;\n email?: string;\n address?: {\n streetAddress?: string;\n addressLocality?: string;\n postalCode?: string;\n addressCountry?: string;\n };\n}\n\nexport type JobArticleProps = Omit<\n JobCardProps,\n 'isInverted' | 'hasBackground' | 'link'\n> & {\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Abstract text which summarizes the job */\n abstract?: string;\n\n /** Text that describes the job (richtext) */\n description?: string;\n\n /** The hiring organization (important for structured data) */\n organization?: OrganizationData;\n\n /** The date of posting the job tender (important for structured data) */\n datePosted?: Date;\n\n /** Function to inject primary action */\n primaryAction?: (isInverted?: boolean) => React.ReactNode;\n\n /** Function to inject secondary action */\n secondaryAction?: (isInverted?: boolean) => React.ReactNode;\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n ariaLabelEmploymentType?: (type: string) => string;\n ariaLabelLocation?: (location: string) => string;\n};\n\nconst JobArticle: React.FC<JobArticleProps> = ({\n anchorId,\n bgMode,\n jobTitle,\n employmentTypes,\n locations,\n totalLocations,\n allLocationsLabel,\n modelIcon,\n locationIcon,\n abstract,\n description,\n organization,\n datePosted,\n primaryAction,\n secondaryAction,\n ariaLabelEmploymentType,\n ariaLabelLocation,\n}) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const hasEmploymentType = isValidArray(employmentTypes, false);\n const validLocations = locations?.filter((loc) => loc.name);\n const hasLocations = isValidArray(validLocations, false);\n\n let locationText = '';\n\n if (hasLocations) {\n if (\n totalLocations !== undefined &&\n validLocations.length >= totalLocations\n ) {\n locationText = allLocationsLabel || '';\n } else {\n locationText = validLocations.map((loc) => loc.name)?.join(', ');\n }\n }\n\n const jsonLd = {\n jobTitle, // title\n locations, // jobLocation\n jobDesc: concat([abstract, description], ' - '), // description\n organization: organization, // hiringOrganization\n directApply: primaryAction || secondaryAction ? true : false, // directApply\n employmentTypes:\n (employmentTypes\n ?.filter((el) => el.type)\n .map((el) => el.type) as StructuredEmploymentType[]) || [],\n datePosted, // datePosted\n };\n\n const employmentType = employmentTypes\n ?.filter((type) => type.name)\n .map((type) => type.name)\n ?.join(', ');\n\n const employmentTypeAriaLabel = ariaLabelEmploymentType\n ? ariaLabelEmploymentType(employmentType || '')\n : `Employment type: ${employmentType || ''}`;\n\n const locationAriaLabel = ariaLabelLocation\n ? ariaLabelLocation(locationText || '')\n : `Location: ${locationText || ''}`;\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : bgMode\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n {generateJob(jsonLd)}\n <Wrapper clampWidth=\"small\" addWhitespace>\n <ArticleHead>\n <Heading\n size=\"heading-2\"\n innerHTML={jobTitle}\n isInverted={isInverted}\n />\n {(hasEmploymentType || hasLocations) && (\n <JobInfos\n type=\"copy-b\"\n data-sheet=\"info\"\n isInverted={isInverted}\n >\n {hasEmploymentType && (\n <Info>\n <Icon>\n {modelIcon ? (\n modelIcon()\n ) : (\n <ClockFilled />\n )}\n </Icon>\n <MainLabel\n aria-label={employmentTypeAriaLabel}\n >\n {employmentType}\n </MainLabel>\n </Info>\n )}\n\n {hasLocations && (\n <Info>\n <Icon>\n {locationIcon ? (\n locationIcon()\n ) : (\n <LocationPin />\n )}\n </Icon>\n <MainLabel aria-label={locationAriaLabel}>\n {locationText}\n </MainLabel>\n </Info>\n )}\n </JobInfos>\n )}\n </ArticleHead>\n {abstract && (\n <Text type=\"copy-b\" isInverted={isInverted}>\n {abstract}\n </Text>\n )}\n {description && (\n <Text innerHTML={description} isInverted={isInverted} />\n )}\n {(primaryAction || secondaryAction) && (\n <StyledActions\n primary={primaryAction && primaryAction(isInverted)}\n secondary={\n secondaryAction && secondaryAction(isInverted)\n }\n />\n )}\n </Wrapper>\n </Section>\n );\n};\n\nexport const JobArticleComponent = JobArticle;\nexport default withLibTheme(JobArticle);\n"],"names":["View","styled","div","withConfig","displayName","componentId","templateObject_2","__makeTemplateObject","_a","theme","color","primary","default","hasBg","isInverted","elementBg","medium","light","spacings","spacer","getGlobals","sections","edgeRadius","clickable","css","templateObject_1","hover","getColors","inverted","mq","JobInfos","Copy","templateObject_3","nudge","Info","Icon","templateObject_5","MainLabel","templateObject_6","HeadingLink","Link","templateObject_7","JobCard","React","forwardRef","ref","hasBackground","jobTitle","employmentTypes","locations","totalLocations","allLocationsLabel","modelIcon","locationIcon","employmentTypeAriaLabel","locationAriaLabel","className","link","hasEmploymentType","isValidArray","validLocations","filter","loc","name","hasLocations","locationText","undefined","length","map","_b","join","employmentType","_c","type","createElement","ariaLabel","href","Heading","renderAs","textColor","size","innerHTML","hyphens","ClockFilled","concat","LocationPin","List","ul","Item","li","large","Filter","FilterField","removeMatchIntersections","array","item","m","find","prioItem","id","filterJobs","filterQuery","jobs","prioList","job","exactNameMatches","value","RegExp","test","jobExactTitleFilter","push","apply","match","priority","nameMatches","preparedQuery","toLowerCase","replace","perparedJobTitle","jobSoftTitleFilter","locationNameMatches","regex","location","preparedName","jobLocationNameFilter","typeMatches","preparedText","jobTypesFilter","JobList$1","withLibTheme","anchorId","bgMode","totalJobLocations","allJobLocationsLabel","initialFilterQuery","filterPlaceholder","hasFilter","filterSubmitIcon","filterClearIcon","listAriaLabel","itemAriaLabel","useLibTheme","colors","filterName","globals","jobFilterName","jobCount","cardRefs","useEqualSheetHeight","listLength","identifiers","responsive","small","semilarge","_d","useState","setFilterQuery","isMounted","useMounted","jobMatches","useMemo","queryParts","split","part","trim","searchMatches","queryParts_1","_i","intersectionIndex","findIndex","sItem","intersections","matches_1","escapeRegExp","__assign","getFilter","useCallback","getUrlParams","useEffect","urlFilter","setUrlParam","deleteUrlParam","useUpdateEffect","Section","addSeperation","bgColor","sectionBg","dark","mapToBgMode","Wrapper","addWhitespace","placeholder","initialValue","onSubmit","submitIcon","clearIcon","sort","a","b","i","itemLabel","cn","key","ArticleHead","span","templateObject_4","Text","StyledActions","Actions","JobArticle$1","abstract","description","organization","datePosted","primaryAction","secondaryAction","ariaLabelEmploymentType","ariaLabelLocation","jsonLd","jobDesc","directApply","el","generateJob","clampWidth","secondary"],"mappings":"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"}
|