@blateral/b.kit 2.7.5 → 2.8.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.
Files changed (313) hide show
  1. package/cjs/Actions-c52a14e4.js +2 -0
  2. package/cjs/{Actions-c7b16449.js.map → Actions-c52a14e4.js.map} +1 -1
  3. package/cjs/Bdot-62c8e349.js +2 -0
  4. package/cjs/{Bdot-5f8e0450.js.map → Bdot-62c8e349.js.map} +1 -1
  5. package/cjs/Button-1adf99b8.js +2 -0
  6. package/cjs/{Button-51ea72b7.js.map → Button-1adf99b8.js.map} +1 -1
  7. package/cjs/ButtonGhost-fbab8769.js +2 -0
  8. package/cjs/{ButtonGhost-628bbd60.js.map → ButtonGhost-fbab8769.js.map} +1 -1
  9. package/cjs/Callout-d84ca60b.js +2 -0
  10. package/cjs/{Callout-5dd16679.js.map → Callout-d84ca60b.js.map} +1 -1
  11. package/cjs/Checkbox-8dccd42f.js +2 -0
  12. package/cjs/Checkbox-8dccd42f.js.map +1 -0
  13. package/cjs/Control-e15e1572.js +2 -0
  14. package/cjs/{Control-08d09950.js.map → Control-e15e1572.js.map} +1 -1
  15. package/cjs/Copy-a0bc570d.js +2 -0
  16. package/cjs/{Copy-ea6ab025.js.map → Copy-a0bc570d.js.map} +1 -1
  17. package/cjs/EventBlock-4e406696.js +2 -0
  18. package/cjs/{EventBlock-04e719a7.js.map → EventBlock-4e406696.js.map} +1 -1
  19. package/cjs/Filter-89286db9.js +2 -0
  20. package/cjs/Filter-89286db9.js.map +1 -0
  21. package/cjs/FilterBar-0781490f.js +2 -0
  22. package/cjs/FilterBar-0781490f.js.map +1 -0
  23. package/cjs/FilterField-7efcacb7.js +2 -0
  24. package/cjs/FilterField-7efcacb7.js.map +1 -0
  25. package/cjs/Grid-1acefee9.js +2 -0
  26. package/cjs/{Grid-6f4f99bc.js.map → Grid-1acefee9.js.map} +1 -1
  27. package/cjs/Image-94820dfd.js +2 -0
  28. package/cjs/{Image-c72f7a80.js.map → Image-94820dfd.js.map} +1 -1
  29. package/cjs/InfoList-e416058c.js +2 -0
  30. package/cjs/{InfoList-71d3388a.js.map → InfoList-e416058c.js.map} +1 -1
  31. package/cjs/LanguageSwitcher-aa96cc7d.js +2 -0
  32. package/cjs/{LanguageSwitcher-8fdd22ba.js.map → LanguageSwitcher-aa96cc7d.js.map} +1 -1
  33. package/cjs/LibThemeProvider-69109901.js +2 -0
  34. package/cjs/{LibThemeProvider-4823de57.js.map → LibThemeProvider-69109901.js.map} +1 -1
  35. package/cjs/Link-8951180c.js +2 -0
  36. package/cjs/{Link-5a6f1633.js.map → Link-8951180c.js.map} +1 -1
  37. package/cjs/MultiselectDropdown-a16ea1c9.js +2 -0
  38. package/cjs/MultiselectDropdown-a16ea1c9.js.map +1 -0
  39. package/cjs/Navigation-6abb6213.js +2 -0
  40. package/cjs/{Navigation-939e4d0e.js.map → Navigation-6abb6213.js.map} +1 -1
  41. package/cjs/Pointer-331140b6.js +2 -0
  42. package/cjs/{Pointer-fde7b548.js.map → Pointer-331140b6.js.map} +1 -1
  43. package/cjs/Section-c9a16ccc.js +2 -0
  44. package/cjs/{Section-e8e8cf81.js.map → Section-c9a16ccc.js.map} +1 -1
  45. package/cjs/SocialList-aec9a5c2.js +2 -0
  46. package/cjs/{SocialList-1d5f75a8.js.map → SocialList-aec9a5c2.js.map} +1 -1
  47. package/cjs/TableBlock-c545ca8d.js +2 -0
  48. package/cjs/{TableBlock-f2c59d9b.js.map → TableBlock-c545ca8d.js.map} +1 -1
  49. package/cjs/Tag-937849ad.js +2 -0
  50. package/cjs/{Tag-9238cf0c.js.map → Tag-937849ad.js.map} +1 -1
  51. package/cjs/Textarea-599e94a4.js +2 -0
  52. package/cjs/{Textarea-03bd2c34.js.map → Textarea-599e94a4.js.map} +1 -1
  53. package/cjs/Textfield-24f468be.js +2 -0
  54. package/cjs/Textfield-24f468be.js.map +1 -0
  55. package/cjs/VideoBlock-1fbf598b.js +2 -0
  56. package/cjs/{VideoBlock-dea7de8a.js.map → VideoBlock-1fbf598b.js.map} +1 -1
  57. package/cjs/VideoCard-905c08d2.js +2 -0
  58. package/cjs/{VideoCard-f6c436ca.js.map → VideoCard-905c08d2.js.map} +1 -1
  59. package/cjs/Wrapper-bca9463e.js +2 -0
  60. package/cjs/{Wrapper-ff6854d7.js.map → Wrapper-bca9463e.js.map} +1 -1
  61. package/cjs/base.js +1 -1
  62. package/cjs/blocks.js +1 -1
  63. package/cjs/buttons.js +1 -1
  64. package/cjs/cookies.js +1 -1
  65. package/cjs/cookies.js.map +1 -1
  66. package/cjs/fields.js +1 -1
  67. package/cjs/fields.js.map +1 -1
  68. package/cjs/footer.js +1 -1
  69. package/cjs/footer.js.map +1 -1
  70. package/cjs/formFieldText-046fcbf4.js +2 -0
  71. package/cjs/formFieldText-046fcbf4.js.map +1 -0
  72. package/cjs/headers.js +1 -1
  73. package/cjs/headers.js.map +1 -1
  74. package/cjs/hooks.js +1 -1
  75. package/cjs/hooks.js.map +1 -1
  76. package/cjs/icons.js +1 -1
  77. package/cjs/index.js +1 -1
  78. package/cjs/navigation-3f9d4ac4.js +2 -0
  79. package/cjs/{navigation-bf154e6e.js.map → navigation-3f9d4ac4.js.map} +1 -1
  80. package/cjs/navigation.js +1 -1
  81. package/cjs/navigation.js.map +1 -1
  82. package/cjs/sections.dynamicform.js +1 -1
  83. package/cjs/sections.dynamicform.js.map +1 -1
  84. package/cjs/sections.events.js +1 -1
  85. package/cjs/sections.events.js.map +1 -1
  86. package/cjs/sections.forms.js +1 -1
  87. package/cjs/sections.forms.js.map +1 -1
  88. package/cjs/sections.jobs.js +1 -1
  89. package/cjs/sections.jobs.js.map +1 -1
  90. package/cjs/sections.js +1 -1
  91. package/cjs/sections.js.map +1 -1
  92. package/cjs/sections.news.js +1 -1
  93. package/cjs/sections.news.js.map +1 -1
  94. package/cjs/sections.pois.js +1 -1
  95. package/cjs/sections.pois.js.map +1 -1
  96. package/cjs/styles-13e5d9ac.js +2 -0
  97. package/cjs/styles-13e5d9ac.js.map +1 -0
  98. package/cjs/typography.js +1 -1
  99. package/cjs/useCookieConsent-665d91cf.js +2 -0
  100. package/cjs/{useCookieConsent-aa9f1104.js.map → useCookieConsent-665d91cf.js.map} +1 -1
  101. package/cjs/useEqualSheetHeight-f1c10ec5.js +2 -0
  102. package/cjs/{useEqualSheetHeight-501f4c5f.js.map → useEqualSheetHeight-f1c10ec5.js.map} +1 -1
  103. package/cjs/useLazyInput-911b8eda.js +2 -0
  104. package/cjs/{useLazyInput-f71c221b.js.map → useLazyInput-911b8eda.js.map} +1 -1
  105. package/cjs/useLeafletMap-514304b6.js +2 -0
  106. package/cjs/{useLeafletMap-2e608b01.js.map → useLeafletMap-514304b6.js.map} +1 -1
  107. package/cjs/useMediaQuery-619d7203.js +2 -0
  108. package/cjs/{useMediaQuery-3d1054e5.js.map → useMediaQuery-619d7203.js.map} +1 -1
  109. package/cjs/useScroll-2f086e7f.js +2 -0
  110. package/cjs/useScroll-2f086e7f.js.map +1 -0
  111. package/esm/{Actions-21372b3a.js → Actions-e29b5e75.js} +3 -3
  112. package/esm/{Actions-21372b3a.js.map → Actions-e29b5e75.js.map} +1 -1
  113. package/esm/{Bdot-4db38753.js → Bdot-5e798e7e.js} +3 -3
  114. package/esm/{Bdot-4db38753.js.map → Bdot-5e798e7e.js.map} +1 -1
  115. package/esm/{Button-f9279013.js → Button-9a0dd9aa.js} +3 -3
  116. package/esm/{Button-f9279013.js.map → Button-9a0dd9aa.js.map} +1 -1
  117. package/esm/{ButtonGhost-ae2e97a2.js → ButtonGhost-fc9e7a75.js} +3 -3
  118. package/esm/{ButtonGhost-ae2e97a2.js.map → ButtonGhost-fc9e7a75.js.map} +1 -1
  119. package/esm/{Callout-a926194d.js → Callout-46f0bef0.js} +4 -4
  120. package/esm/{Callout-a926194d.js.map → Callout-46f0bef0.js.map} +1 -1
  121. package/esm/{Checkbox-dd12facd.js → Checkbox-1957067a.js} +11 -8
  122. package/esm/Checkbox-1957067a.js.map +1 -0
  123. package/esm/{Control-2d605e12.js → Control-56ec7872.js} +3 -3
  124. package/esm/{Control-2d605e12.js.map → Control-56ec7872.js.map} +1 -1
  125. package/esm/{Copy-a28aeb61.js → Copy-c6786949.js} +4 -4
  126. package/esm/{Copy-a28aeb61.js.map → Copy-c6786949.js.map} +1 -1
  127. package/esm/{EventBlock-b9204a0d.js → EventBlock-8e130f6b.js} +8 -8
  128. package/esm/{EventBlock-b9204a0d.js.map → EventBlock-8e130f6b.js.map} +1 -1
  129. package/esm/{ClockFilled-62515a8f.js → Filter-19220970.js} +321 -235
  130. package/esm/Filter-19220970.js.map +1 -0
  131. package/esm/FilterBar-2a2a09b7.js +460 -0
  132. package/esm/FilterBar-2a2a09b7.js.map +1 -0
  133. package/esm/FilterField-bec061bc.js +115 -0
  134. package/esm/FilterField-bec061bc.js.map +1 -0
  135. package/esm/{Grid-5eec127f.js → Grid-7b33e271.js} +3 -3
  136. package/esm/{Grid-5eec127f.js.map → Grid-7b33e271.js.map} +1 -1
  137. package/esm/{Image-dc2b33c1.js → Image-b26692a9.js} +5 -5
  138. package/esm/{Image-dc2b33c1.js.map → Image-b26692a9.js.map} +1 -1
  139. package/esm/{InfoList-5c4586ed.js → InfoList-b6980a42.js} +4 -4
  140. package/esm/{InfoList-5c4586ed.js.map → InfoList-b6980a42.js.map} +1 -1
  141. package/esm/{LanguageSwitcher-3fa20077.js → LanguageSwitcher-f9218fdc.js} +5 -5
  142. package/esm/{LanguageSwitcher-3fa20077.js.map → LanguageSwitcher-f9218fdc.js.map} +1 -1
  143. package/esm/{LibThemeProvider-52555ac9.js → LibThemeProvider-fb1d35ac.js} +3 -3
  144. package/esm/{LibThemeProvider-52555ac9.js.map → LibThemeProvider-fb1d35ac.js.map} +1 -1
  145. package/esm/{Link-3fd9c9b8.js → Link-6067a27f.js} +3 -3
  146. package/esm/{Link-3fd9c9b8.js.map → Link-6067a27f.js.map} +1 -1
  147. package/esm/MultiselectDropdown-a97be6bc.js +296 -0
  148. package/esm/MultiselectDropdown-a97be6bc.js.map +1 -0
  149. package/esm/{Navigation-99f6dc41.js → Navigation-bb79a1eb.js} +10 -10
  150. package/esm/{Navigation-99f6dc41.js.map → Navigation-bb79a1eb.js.map} +1 -1
  151. package/esm/{Pointer-5c77b1f1.js → Pointer-b4abee91.js} +3 -3
  152. package/esm/{Pointer-5c77b1f1.js.map → Pointer-b4abee91.js.map} +1 -1
  153. package/esm/{Section-b76e6909.js → Section-bd61eb2f.js} +3 -3
  154. package/esm/{Section-b76e6909.js.map → Section-bd61eb2f.js.map} +1 -1
  155. package/esm/{SocialList-402b8f20.js → SocialList-336b7f6d.js} +5 -5
  156. package/esm/{SocialList-402b8f20.js.map → SocialList-336b7f6d.js.map} +1 -1
  157. package/esm/{TableBlock-67fe2385.js → TableBlock-1ddfd539.js} +5 -5
  158. package/esm/{TableBlock-67fe2385.js.map → TableBlock-1ddfd539.js.map} +1 -1
  159. package/esm/{Tag-ac51e916.js → Tag-c3bd6b7f.js} +5 -5
  160. package/esm/{Tag-ac51e916.js.map → Tag-c3bd6b7f.js.map} +1 -1
  161. package/esm/{Textarea-266f1e45.js → Textarea-95352f50.js} +10 -10
  162. package/esm/{Textarea-266f1e45.js.map → Textarea-95352f50.js.map} +1 -1
  163. package/esm/{Textfield-d2f201a9.js → Textfield-99d91b4e.js} +10 -97
  164. package/esm/Textfield-99d91b4e.js.map +1 -0
  165. package/esm/{VideoBlock-b227ae6e.js → VideoBlock-474e0aa4.js} +7 -7
  166. package/esm/{VideoBlock-b227ae6e.js.map → VideoBlock-474e0aa4.js.map} +1 -1
  167. package/esm/{VideoCard-2c6e26d1.js → VideoCard-91438667.js} +7 -7
  168. package/esm/{VideoCard-2c6e26d1.js.map → VideoCard-91438667.js.map} +1 -1
  169. package/esm/{Wrapper-90dccc89.js → Wrapper-95108115.js} +3 -3
  170. package/esm/{Wrapper-90dccc89.js.map → Wrapper-95108115.js.map} +1 -1
  171. package/esm/base.js +5 -5
  172. package/esm/blocks.js +25 -16
  173. package/esm/blocks.js.map +1 -1
  174. package/esm/buttons.js +6 -6
  175. package/esm/cookies.js +7 -7
  176. package/esm/fields.js +14 -12
  177. package/esm/fields.js.map +1 -1
  178. package/esm/footer.js +11 -11
  179. package/esm/formFieldText-f4188e55.js +96 -0
  180. package/esm/formFieldText-f4188e55.js.map +1 -0
  181. package/esm/headers.js +12 -12
  182. package/esm/hooks.js +12 -83
  183. package/esm/hooks.js.map +1 -1
  184. package/esm/icons.js +5 -2
  185. package/esm/icons.js.map +1 -1
  186. package/esm/index.js +3 -3
  187. package/esm/{navigation-b89325f8.js → navigation-5216dbad.js} +2 -2
  188. package/esm/{navigation-b89325f8.js.map → navigation-5216dbad.js.map} +1 -1
  189. package/esm/navigation.js +12 -12
  190. package/esm/sections.dynamicform.js +15 -14
  191. package/esm/sections.dynamicform.js.map +1 -1
  192. package/esm/sections.events.js +13 -14
  193. package/esm/sections.events.js.map +1 -1
  194. package/esm/sections.forms.js +10 -9
  195. package/esm/sections.forms.js.map +1 -1
  196. package/esm/sections.jobs.js +12 -12
  197. package/esm/sections.js +28 -25
  198. package/esm/sections.js.map +1 -1
  199. package/esm/sections.news.js +17 -18
  200. package/esm/sections.news.js.map +1 -1
  201. package/esm/sections.pois.js +318 -143
  202. package/esm/sections.pois.js.map +1 -1
  203. package/esm/{styles-da982973.js → styles-1f1841ef.js} +4 -3
  204. package/esm/styles-1f1841ef.js.map +1 -0
  205. package/esm/typography.js +6 -6
  206. package/esm/{useCookieConsent-6b2d4d93.js → useCookieConsent-6661d419.js} +49 -49
  207. package/esm/useCookieConsent-6661d419.js.map +1 -0
  208. package/esm/{useEqualSheetHeight-97420d63.js → useEqualSheetHeight-60ff9de7.js} +4 -4
  209. package/esm/{useEqualSheetHeight-97420d63.js.map → useEqualSheetHeight-60ff9de7.js.map} +1 -1
  210. package/esm/{useLazyInput-54d1785c.js → useLazyInput-0b6932aa.js} +2 -2
  211. package/esm/{useLazyInput-54d1785c.js.map → useLazyInput-0b6932aa.js.map} +1 -1
  212. package/esm/{useLeafletMap-84170d32.js → useLeafletMap-fa0ab7d4.js} +10 -6
  213. package/esm/useLeafletMap-fa0ab7d4.js.map +1 -0
  214. package/esm/{useMediaQuery-b42fd64e.js → useMediaQuery-4c1b1fa6.js} +3 -3
  215. package/esm/{useMediaQuery-b42fd64e.js.map → useMediaQuery-4c1b1fa6.js.map} +1 -1
  216. package/esm/useScroll-881c7b04.js +76 -0
  217. package/esm/useScroll-881c7b04.js.map +1 -0
  218. package/package.json +2 -1
  219. package/types/blocks.d.ts +1 -0
  220. package/types/blocks.d.ts.map +1 -1
  221. package/types/components/base/icons/Cross.d.ts +2 -0
  222. package/types/components/base/icons/Cross.d.ts.map +1 -1
  223. package/types/components/base/icons/CrossBubble.d.ts +8 -0
  224. package/types/components/base/icons/CrossBubble.d.ts.map +1 -0
  225. package/types/components/base/icons/Icons.d.ts +3 -0
  226. package/types/components/base/icons/Icons.d.ts.map +1 -1
  227. package/types/components/base/icons/Magnifier.d.ts +2 -0
  228. package/types/components/base/icons/Magnifier.d.ts.map +1 -1
  229. package/types/components/blocks/FilterBar.d.ts +38 -0
  230. package/types/components/blocks/FilterBar.d.ts.map +1 -0
  231. package/types/components/blocks/POICard.d.ts.map +1 -1
  232. package/types/components/blocks/Portal.d.ts +8 -0
  233. package/types/components/blocks/Portal.d.ts.map +1 -0
  234. package/types/components/fields/Checkbox.d.ts +3 -1
  235. package/types/components/fields/Checkbox.d.ts.map +1 -1
  236. package/types/components/fields/FilterField.d.ts +1 -0
  237. package/types/components/fields/FilterField.d.ts.map +1 -1
  238. package/types/components/fields/MultiselectDropdown.d.ts +42 -0
  239. package/types/components/fields/MultiselectDropdown.d.ts.map +1 -0
  240. package/types/components/sections/Accordion.d.ts.map +1 -1
  241. package/types/components/sections/pois/PointOfInterestMap.d.ts +42 -1
  242. package/types/components/sections/pois/PointOfInterestMap.d.ts.map +1 -1
  243. package/types/components/sections/pois/PointOfInterestOverview.d.ts +41 -20
  244. package/types/components/sections/pois/PointOfInterestOverview.d.ts.map +1 -1
  245. package/types/components/sections/pois/filters.d.ts +10 -0
  246. package/types/components/sections/pois/filters.d.ts.map +1 -0
  247. package/types/components/sections/pois/partials/PoiFilterBar.d.ts +8 -0
  248. package/types/components/sections/pois/partials/PoiFilterBar.d.ts.map +1 -0
  249. package/types/components/sections/pois/partials/index.d.ts +3 -0
  250. package/types/components/sections/pois/partials/index.d.ts.map +1 -0
  251. package/types/fields.d.ts +1 -0
  252. package/types/fields.d.ts.map +1 -1
  253. package/types/sections.pois.d.ts +1 -0
  254. package/types/sections.pois.d.ts.map +1 -1
  255. package/types/utils/styles.d.ts +1 -0
  256. package/types/utils/styles.d.ts.map +1 -1
  257. package/types/utils/useLeafletMap.d.ts.map +1 -1
  258. package/cjs/Actions-c7b16449.js +0 -2
  259. package/cjs/Bdot-5f8e0450.js +0 -2
  260. package/cjs/Button-51ea72b7.js +0 -2
  261. package/cjs/ButtonGhost-628bbd60.js +0 -2
  262. package/cjs/Callout-5dd16679.js +0 -2
  263. package/cjs/Checkbox-1c34c7e6.js +0 -2
  264. package/cjs/Checkbox-1c34c7e6.js.map +0 -1
  265. package/cjs/ClockFilled-2483aa4a.js +0 -2
  266. package/cjs/ClockFilled-2483aa4a.js.map +0 -1
  267. package/cjs/Control-08d09950.js +0 -2
  268. package/cjs/Copy-ea6ab025.js +0 -2
  269. package/cjs/EventBlock-04e719a7.js +0 -2
  270. package/cjs/Filter-d6d90b8b.js +0 -2
  271. package/cjs/Filter-d6d90b8b.js.map +0 -1
  272. package/cjs/FilterField-cce38ffb.js +0 -2
  273. package/cjs/FilterField-cce38ffb.js.map +0 -1
  274. package/cjs/Grid-6f4f99bc.js +0 -2
  275. package/cjs/Image-c72f7a80.js +0 -2
  276. package/cjs/InfoList-71d3388a.js +0 -2
  277. package/cjs/LanguageSwitcher-8fdd22ba.js +0 -2
  278. package/cjs/LibThemeProvider-4823de57.js +0 -2
  279. package/cjs/Link-5a6f1633.js +0 -2
  280. package/cjs/Navigation-939e4d0e.js +0 -2
  281. package/cjs/POICard-e46f9041.js +0 -2
  282. package/cjs/POICard-e46f9041.js.map +0 -1
  283. package/cjs/Pointer-fde7b548.js +0 -2
  284. package/cjs/Section-e8e8cf81.js +0 -2
  285. package/cjs/SocialList-1d5f75a8.js +0 -2
  286. package/cjs/TableBlock-f2c59d9b.js +0 -2
  287. package/cjs/Tag-9238cf0c.js +0 -2
  288. package/cjs/Textarea-03bd2c34.js +0 -2
  289. package/cjs/Textfield-56996c98.js +0 -2
  290. package/cjs/Textfield-56996c98.js.map +0 -1
  291. package/cjs/VideoBlock-dea7de8a.js +0 -2
  292. package/cjs/VideoCard-f6c436ca.js +0 -2
  293. package/cjs/Wrapper-ff6854d7.js +0 -2
  294. package/cjs/navigation-bf154e6e.js +0 -2
  295. package/cjs/styles-3a495a2d.js +0 -2
  296. package/cjs/styles-3a495a2d.js.map +0 -1
  297. package/cjs/useCookieConsent-aa9f1104.js +0 -2
  298. package/cjs/useEqualSheetHeight-501f4c5f.js +0 -2
  299. package/cjs/useLazyInput-f71c221b.js +0 -2
  300. package/cjs/useLeafletMap-2e608b01.js +0 -2
  301. package/cjs/useMediaQuery-3d1054e5.js +0 -2
  302. package/esm/Checkbox-dd12facd.js.map +0 -1
  303. package/esm/ClockFilled-62515a8f.js.map +0 -1
  304. package/esm/Filter-2b5f5e53.js +0 -32
  305. package/esm/Filter-2b5f5e53.js.map +0 -1
  306. package/esm/FilterField-962ec61f.js +0 -129
  307. package/esm/FilterField-962ec61f.js.map +0 -1
  308. package/esm/POICard-96ec71d8.js +0 -116
  309. package/esm/POICard-96ec71d8.js.map +0 -1
  310. package/esm/Textfield-d2f201a9.js.map +0 -1
  311. package/esm/styles-da982973.js.map +0 -1
  312. package/esm/useCookieConsent-6b2d4d93.js.map +0 -1
  313. package/esm/useLeafletMap-84170d32.js.map +0 -1
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var n=require("./ClockFilled-2483aa4a.js"),e=require("react"),t=require("styled-components"),i=require("./Section-e8e8cf81.js"),a=require("./Wrapper-ff6854d7.js"),r=require("./Copy-ea6ab025.js"),o=require("./Link-5a6f1633.js"),l=require("./arrays-c272ed59.js"),s=require("./styles-3a495a2d.js"),d=require("./LibThemeProvider-4823de57.js"),c=require("./useEqualSheetHeight-501f4c5f.js"),p=require("./FilterField-cce38ffb.js"),u=require("./useUpdateEffect-4d233e2c.js"),m=require("./escape-1ef8dd83.js"),f=require("./urlParams-7525f638.js"),g=require("./useMounted-0bba9869.js"),h=require("./Actions-c7b16449.js"),b=require("./concat-f387d848.js"),x=require("./structuredData-0b1278a9.js");function y(n){return n&&"object"==typeof n&&"default"in n?n:{default:n}}require("./clamp-bd21d587.js"),require("react-dom/server"),require("./useMediaQuery-3d1054e5.js"),require("./useLazyInput-f71c221b.js"),require("react-schemaorg");var v,_,w,j,I,C,E,L=y(e),T=y(t),k=T.default.div.withConfig({displayName:"JobCard__View",componentId:"sc-rrpaxu-0"})(_||(_=n.__makeTemplateObject(["\n position: relative;\n color: ",";\n background: ",";\n\n padding: ","px;\n\n border-radius: ",";\n\n ","\n\n @media "," {\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 position: relative;\n color: ",";\n background: ",";\n\n padding: ","px;\n\n border-radius: ",";\n\n ","\n\n @media "," {\n min-height: 440px;\n\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n align-items: flex-start;\n }\n"])),(function(n){var e=n.theme;return s.getColors(e).primary.default}),(function(n){var e=n.theme,t=n.hasBg;return n.isInverted?s.getColors(e).elementBg.medium:t?s.getColors(e).elementBg.light:s.getColors(e).elementBg.medium}),s.spacings.spacer,(function(n){var e=n.theme;return s.getGlobals(e).sections.edgeRadius}),(function(e){var i=e.clickable,a=e.isInverted;return i&&t.css(v||(v=n.__makeTemplateObject(["\n transition: all 0.2s ease-in-out;\n cursor: pointer;\n\n &:hover {\n box-shadow: 0px 2px 6px\n ",";\n\n color: ",";\n }\n\n &:focus {\n box-shadow: 0px 2px 6px\n ",";\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 ",";\n }\n "],["\n transition: all 0.2s ease-in-out;\n cursor: pointer;\n\n &:hover {\n box-shadow: 0px 2px 6px\n ",";\n\n color: ",";\n }\n\n &:focus {\n box-shadow: 0px 2px 6px\n ",";\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 ",";\n }\n "])),a?"rgba(255, 255, 255, 0.7)":"rgba(0, 0, 0, 0.35)",(function(n){var e=n.theme;return s.getColors(e).primary.hover}),a?"rgba(255, 255, 255, 0.7)":"rgba(0, 0, 0, 0.3)",a?"rgba(255, 255, 255, 0.7)":"rgba(0, 0, 0, 0.3)")}),s.mq.medium),q=T.default(r.Copy).withConfig({displayName:"JobCard__JobInfos",componentId:"sc-rrpaxu-1"})(w||(w=n.__makeTemplateObject(["\n &:not(:first-child) {\n margin-top: ","px;\n }\n\n color: ",";\n\n ",":hover & {\n color: ",";\n }\n"],["\n &:not(:first-child) {\n margin-top: ","px;\n }\n\n color: ",";\n\n ",":hover & {\n color: ",";\n }\n"])),4*s.spacings.nudge,(function(n){var e=n.theme;return s.getColors(e).primary.default}),k,(function(n){var e=n.theme;return s.getColors(e).primary.hover})),A=T.default.div.withConfig({displayName:"JobCard__Info",componentId:"sc-rrpaxu-2"})(j||(j=n.__makeTemplateObject(["\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: ","px;\n }\n\n & > * + * {\n margin-left: ","px;\n }\n"],["\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: ","px;\n }\n\n & > * + * {\n margin-left: ","px;\n }\n"])),3*s.spacings.nudge,2*s.spacings.nudge),J=T.default.div.withConfig({displayName:"JobCard__Icon",componentId:"sc-rrpaxu-3"})(I||(I=n.__makeTemplateObject(["\n display: flex;\n align-items: center;\n\n & > * {\n height: 32px;\n width: 32px;\n }\n"],["\n display: flex;\n align-items: center;\n\n & > * {\n height: 32px;\n width: 32px;\n }\n"]))),N=T.default.div.withConfig({displayName:"JobCard__MainLabel",componentId:"sc-rrpaxu-4"})(C||(C=n.__makeTemplateObject(["\n display: flex;\n align-items: center;\n"],["\n display: flex;\n align-items: center;\n"]))),O=T.default(o.Link).withConfig({displayName:"JobCard__ViewLink",componentId:"sc-rrpaxu-5"})(E||(E=n.__makeTemplateObject(["\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n && {\n margin: 0;\n }\n"],["\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n && {\n margin: 0;\n }\n"]))),M=L.default.forwardRef((function(e,t){var i,a,o=e.isInverted,s=e.hasBackground,d=e.jobTitle,c=e.employmentTypes,p=e.locations,u=e.totalLocations,m=e.allLocationsLabel,f=e.modelIcon,g=e.locationIcon,h=e.className,b=e.link,x=l.isValidArray(c,!1),y=null==p?void 0:p.filter((function(n){return n.name})),v=l.isValidArray(y,!1),_="";return v&&(_=void 0!==u&&y.length>=u&&m?m:null===(i=y.map((function(n){return n.name})))||void 0===i?void 0:i.join(", ")),L.default.createElement(k,{ref:t,isInverted:o,hasBg:s,className:h,clickable:!!b},L.default.createElement(r.Heading,{textColor:"inherit",size:"heading-2","data-sheet":"title",innerHTML:d,hyphens:!0}),(x||v)&&L.default.createElement(q,{type:"copy-b","data-sheet":"info"},x&&L.default.createElement(A,null,L.default.createElement(J,null,f?f():L.default.createElement(n.ClockFilled,null)),L.default.createElement(N,null,null===(a=null==c?void 0:c.filter((function(n){return n.name})).map((function(n){return n.name})))||void 0===a?void 0:a.join(", "))),v&&L.default.createElement(A,null,L.default.createElement(J,null,g?g():L.default.createElement(n.LocationPin,null)),L.default.createElement(N,null,_))),b&&L.default.createElement(O,n.__assign({},b,{ariaLabel:(null==b?void 0:b.href)?d:void 0})))}));M.displayName="JobCard";var B,V,P,S,F,z,H,R,U,W,D=T.default.ul.withConfig({displayName:"JobList__List",componentId:"sc-1b9tzu5-0"})(B||(B=n.__makeTemplateObject(["\n display: flex;\n flex-wrap: wrap;\n list-style: none;\n margin: 0;\n padding: 0;\n\n margin-top: -","px;\n margin-left: -","px;\n\n @media "," {\n margin-top: -","px;\n margin-left: -","px;\n }\n"],["\n display: flex;\n flex-wrap: wrap;\n list-style: none;\n margin: 0;\n padding: 0;\n\n margin-top: -","px;\n margin-left: -","px;\n\n @media "," {\n margin-top: -","px;\n margin-left: -","px;\n }\n"])),2*s.spacings.nudge,2*s.spacings.nudge,s.mq.medium,s.spacings.spacer,s.spacings.spacer),Q=T.default.li.withConfig({displayName:"JobList__Item",componentId:"sc-1b9tzu5-1"})(V||(V=n.__makeTemplateObject(["\n flex: 0 1 100%;\n max-width: 100%;\n margin: 0;\n\n padding-top: ","px;\n padding-left: ","px;\n\n @media "," {\n flex: 0 1 50%;\n max-width: 50%;\n\n padding-top: ","px;\n padding-left: ","px;\n }\n\n @media "," {\n flex: 0 1 33.33%;\n max-width: 33.33%;\n }\n"],["\n flex: 0 1 100%;\n max-width: 100%;\n margin: 0;\n\n padding-top: ","px;\n padding-left: ","px;\n\n @media "," {\n flex: 0 1 50%;\n max-width: 50%;\n\n padding-top: ","px;\n padding-left: ","px;\n }\n\n @media "," {\n flex: 0 1 33.33%;\n max-width: 33.33%;\n }\n"])),2*s.spacings.nudge,2*s.spacings.nudge,s.mq.medium,s.spacings.spacer,s.spacings.spacer,s.mq.large),G=T.default(p.FilterField).withConfig({displayName:"JobList__Filter",componentId:"sc-1b9tzu5-2"})(P||(P=n.__makeTemplateObject(["\n margin-top: ","px;\n margin-bottom: ","px;\n\n min-width: 50%;\n"],["\n margin-top: ","px;\n margin-bottom: ","px;\n\n min-width: 50%;\n"])),s.spacings.nudge,5*s.spacings.nudge),K=function(n,e){return e?null==e?void 0:e.filter((function(e){return!n.find((function(n){return n.item.id===e.id}))})):[]},X=function(n,e){var t=[];if(!l.isValidArray(null==e?void 0:e.filter((function(n){return void 0!==n.jobTitle})),!1))return t;var i=null==e?void 0:e.filter(function(n){return function(e){return new RegExp(n).test(e.jobTitle)}}(n));l.isValidArray(i,!1)&&t.push.apply(t,i.map((function(n){return{item:n,priority:1}})));var a=K(t,null==e?void 0:e.filter(function(n){return function(e){var t=n.toLowerCase().replace(/\s/g,""),i=e.jobTitle.toLowerCase().replace(/\s/g,"");return new RegExp(t).test(i)}}(n)));l.isValidArray(a,!1)&&t.push.apply(t,a.map((function(n){return{item:n,priority:2}})));var r=K(t,null==e?void 0:e.filter(function(n){return function(e){if(!l.isValidArray(e.locations,!1))return!1;var t=n.toLowerCase().replace(/\s/g,""),i=new RegExp(t);return!!e.locations.find((function(n){var e,t=null===(e=n.name)||void 0===e?void 0:e.toLowerCase().replace(/\s/g,"");return i.test(t||"")}))}}(n)));l.isValidArray(r,!1)&&t.push.apply(t,r.map((function(n){return{item:n,priority:3}})));var o=K(t,null==e?void 0:e.filter(function(n){return function(e){if(!l.isValidArray(null==e?void 0:e.employmentTypes,!1))return!1;var t=n.toLowerCase().replace(/\s/g,""),i=new RegExp(t);return!!e.employmentTypes.find((function(n){if(!n.name)return!1;var e=n.name.toLowerCase().replace(/\s/g,"");return i.test(e)}))}}(n)));return l.isValidArray(o,!1)&&t.push.apply(t,o.map((function(n){return{item:n,priority:4}}))),t},Y=d.withLibTheme((function(t){var r=t.anchorId,o=t.jobs,l=t.bgMode,s=t.modelIcon,p=t.locationIcon,h=t.totalJobLocations,b=t.allJobLocationsLabel,x=t.initialFilterQuery,y=t.filterPlaceholder,v=t.hasFilter,_=t.filterSubmitIcon,w=t.filterClearIcon,j=d.useLibTheme(),I=j.colors,C=j.globals.sections.jobFilterName,E="inverted"===l,T="full"===l,k=(null==o?void 0:o.length)||0,q=c.useEqualSheetHeight({listLength:k,identifiers:['[data-sheet="title"]','[data-sheet="info"]'],responsive:{small:1,semilarge:2,large:3}}).sheetRefs,A=L.default.useState(x||""),J=A[0],N=A[1],O=g.useMounted(),B=L.default.useMemo((function(){for(var e=void 0!==J?J.split(" ").map((function(n){return n.trim()})):[""],t=[],i=0,a=e;i<a.length;i++)for(var r=a[i],l=function(n){var e=t.findIndex((function(e){return e.match.item.id===n.item.id}));-1!==e?t[e].intersections+=1:t.push({match:n,intersections:1})},s=0,d=X(m.escapeRegExp(r),o||[]);s<d.length;s++){l(d[s])}return t.filter((function(n){return n.intersections>=e.length})).map((function(e){return n.__assign({},e.match)}))}),[J,o]),V=e.useCallback((function(){return f.getUrlParams()[C]}),[C]);return e.useEffect((function(){var n=V();null!=n&&"string"==typeof n&&N(n)}),[V]),e.useEffect((function(){O||(J?f.setUrlParam(C,J):f.deleteUrlParam(C))}),[C,J,O]),u.useUpdateEffect((function(){J?f.setUrlParam(C,J):f.deleteUrlParam(C)}),[J]),L.default.createElement(i.Section,{addSeperation:!0,anchorId:r,bgColor:E?I.sectionBg.dark:l?I.sectionBg.medium:I.sectionBg.light,bgMode:i.mapToBgMode(l,!0)},L.default.createElement(a.Wrapper,{addWhitespace:!0},v&&L.default.createElement(G,{placeholder:y||"Suche",value:J,initialValue:x,onSubmit:N,isInverted:E,submitIcon:_,clearIcon:w}),L.default.createElement(D,null,null==B?void 0:B.sort((function(n,e){return n.priority-e.priority})).map((function(e,t){return L.default.createElement(Q,{key:t},L.default.createElement(M,n.__assign({ref:q[t]},e.item,{isInverted:E,hasBackground:T,modelIcon:s,locationIcon:p,totalLocations:h,allLocationsLabel:b})))})))))})),Z=T.default.div.withConfig({displayName:"JobArticle__ArticleHead",componentId:"sc-1bwhr8-0"})(S||(S=n.__makeTemplateObject(["\n & + * {\n margin-top: ","px;\n }\n"],["\n & + * {\n margin-top: ","px;\n }\n"])),s.spacings.spacer),$=T.default(r.Copy).withConfig({displayName:"JobArticle__JobInfos",componentId:"sc-1bwhr8-1"})(F||(F=n.__makeTemplateObject(["\n &:not(:first-child) {\n margin-top: ","px;\n }\n"],["\n &:not(:first-child) {\n margin-top: ","px;\n }\n"])),s.spacings.spacer),nn=T.default.div.withConfig({displayName:"JobArticle__Info",componentId:"sc-1bwhr8-2"})(z||(z=n.__makeTemplateObject(["\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: ","px;\n }\n\n & > * + * {\n margin-left: ","px;\n }\n"],["\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: ","px;\n }\n\n & > * + * {\n margin-left: ","px;\n }\n"])),3*s.spacings.nudge,2*s.spacings.nudge),en=T.default.span.withConfig({displayName:"JobArticle__Icon",componentId:"sc-1bwhr8-3"})(H||(H=n.__makeTemplateObject(["\n display: flex;\n align-items: center;\n\n & > * {\n height: 32px;\n width: 32px;\n }\n"],["\n display: flex;\n align-items: center;\n\n & > * {\n height: 32px;\n width: 32px;\n }\n"]))),tn=T.default.span.withConfig({displayName:"JobArticle__MainLabel",componentId:"sc-1bwhr8-4"})(R||(R=n.__makeTemplateObject(["\n display: flex;\n align-items: center;\n"],["\n display: flex;\n align-items: center;\n"]))),an=T.default(r.Copy).withConfig({displayName:"JobArticle__Text",componentId:"sc-1bwhr8-5"})(U||(U=n.__makeTemplateObject(["\n & + & {\n margin-top: ","px;\n }\n"],["\n & + & {\n margin-top: ","px;\n }\n"])),3*s.spacings.nudge),rn=T.default(h.Actions).withConfig({displayName:"JobArticle__StyledActions",componentId:"sc-1bwhr8-6"})(W||(W=n.__makeTemplateObject(["\n margin-top: ","px;\n"],["\n margin-top: ","px;\n"])),s.spacings.spacer),on=d.withLibTheme((function(e){var t,o,s=e.anchorId,c=e.bgMode,p=e.jobTitle,u=e.employmentTypes,m=e.locations,f=e.totalLocations,g=e.allLocationsLabel,h=e.modelIcon,y=e.locationIcon,v=e.abstract,_=e.description,w=e.organization,j=e.datePosted,I=e.primaryAction,C=e.secondaryAction,E=d.useLibTheme().colors,T="inverted"===c,k=l.isValidArray(u,!1),q=null==m?void 0:m.filter((function(n){return n.name})),A=l.isValidArray(q,!1),J="";A&&(J=void 0!==f&&q.length>=f?g||"":null===(t=q.map((function(n){return n.name})))||void 0===t?void 0:t.join(", "));var N={jobTitle:p,locations:m,jobDesc:b.concat([v,_]," - "),organization:w,directApply:!(!I&&!C),employmentTypes:(null==u?void 0:u.filter((function(n){return n.type})).map((function(n){return n.type})))||[],datePosted:j};return L.default.createElement(i.Section,{addSeperation:!0,anchorId:s,bgColor:T?E.sectionBg.dark:c?E.sectionBg.medium:E.sectionBg.light,bgMode:i.mapToBgMode(c,!0)},x.generateJob(N),L.default.createElement(a.Wrapper,{clampWidth:"small",addWhitespace:!0},L.default.createElement(Z,null,L.default.createElement(r.Heading,{size:"heading-2",innerHTML:p,isInverted:T}),(k||A)&&L.default.createElement($,{type:"copy-b","data-sheet":"info",isInverted:T},k&&L.default.createElement(nn,null,L.default.createElement(en,null,h?h():L.default.createElement(n.ClockFilled,null)),L.default.createElement(tn,null,null===(o=null==u?void 0:u.filter((function(n){return n.name})).map((function(n){return n.name})))||void 0===o?void 0:o.join(", "))),A&&L.default.createElement(nn,null,L.default.createElement(en,null,y?y():L.default.createElement(n.LocationPin,null)),L.default.createElement(tn,null,J)))),v&&L.default.createElement(an,{type:"copy-b",isInverted:T},v),_&&L.default.createElement(an,{innerHTML:_,isInverted:T}),(I||C)&&L.default.createElement(rn,{primary:I&&I(T),secondary:C&&C(T)})))}));exports.JobArticle=on,exports.JobList=Y;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var n=require("./Filter-89286db9.js"),e=require("react"),t=require("styled-components"),i=require("./Section-c9a16ccc.js"),a=require("./Wrapper-bca9463e.js"),r=require("./Copy-a0bc570d.js"),o=require("./Link-8951180c.js"),l=require("./arrays-c272ed59.js"),s=require("./styles-13e5d9ac.js"),d=require("./LibThemeProvider-69109901.js"),c=require("./useEqualSheetHeight-f1c10ec5.js"),p=require("./FilterField-7efcacb7.js"),u=require("./useUpdateEffect-4d233e2c.js"),m=require("./escape-1ef8dd83.js"),f=require("./urlParams-7525f638.js"),g=require("./useMounted-0bba9869.js"),h=require("./Actions-c52a14e4.js"),b=require("./concat-f387d848.js"),x=require("./structuredData-0b1278a9.js");function y(n){return n&&"object"==typeof n&&"default"in n?n:{default:n}}require("./clamp-bd21d587.js"),require("react-dom/server"),require("./useMediaQuery-619d7203.js"),require("./useLazyInput-911b8eda.js"),require("react-schemaorg");var v,_,w,j,I,C,E,L=y(e),T=y(t),k=T.default.div.withConfig({displayName:"JobCard__View",componentId:"sc-rrpaxu-0"})(_||(_=n.__makeTemplateObject(["\n position: relative;\n color: ",";\n background: ",";\n\n padding: ","px;\n\n border-radius: ",";\n\n ","\n\n @media "," {\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 position: relative;\n color: ",";\n background: ",";\n\n padding: ","px;\n\n border-radius: ",";\n\n ","\n\n @media "," {\n min-height: 440px;\n\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n align-items: flex-start;\n }\n"])),(function(n){var e=n.theme;return s.getColors(e).primary.default}),(function(n){var e=n.theme,t=n.hasBg;return n.isInverted?s.getColors(e).elementBg.medium:t?s.getColors(e).elementBg.light:s.getColors(e).elementBg.medium}),s.spacings.spacer,(function(n){var e=n.theme;return s.getGlobals(e).sections.edgeRadius}),(function(e){var i=e.clickable,a=e.isInverted;return i&&t.css(v||(v=n.__makeTemplateObject(["\n transition: all 0.2s ease-in-out;\n cursor: pointer;\n\n &:hover {\n box-shadow: 0px 2px 6px\n ",";\n\n color: ",";\n }\n\n &:focus {\n box-shadow: 0px 2px 6px\n ",";\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 ",";\n }\n "],["\n transition: all 0.2s ease-in-out;\n cursor: pointer;\n\n &:hover {\n box-shadow: 0px 2px 6px\n ",";\n\n color: ",";\n }\n\n &:focus {\n box-shadow: 0px 2px 6px\n ",";\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 ",";\n }\n "])),a?"rgba(255, 255, 255, 0.7)":"rgba(0, 0, 0, 0.35)",(function(n){var e=n.theme;return s.getColors(e).primary.hover}),a?"rgba(255, 255, 255, 0.7)":"rgba(0, 0, 0, 0.3)",a?"rgba(255, 255, 255, 0.7)":"rgba(0, 0, 0, 0.3)")}),s.mq.medium),q=T.default(r.Copy).withConfig({displayName:"JobCard__JobInfos",componentId:"sc-rrpaxu-1"})(w||(w=n.__makeTemplateObject(["\n &:not(:first-child) {\n margin-top: ","px;\n }\n\n color: ",";\n\n ",":hover & {\n color: ",";\n }\n"],["\n &:not(:first-child) {\n margin-top: ","px;\n }\n\n color: ",";\n\n ",":hover & {\n color: ",";\n }\n"])),4*s.spacings.nudge,(function(n){var e=n.theme;return s.getColors(e).primary.default}),k,(function(n){var e=n.theme;return s.getColors(e).primary.hover})),A=T.default.div.withConfig({displayName:"JobCard__Info",componentId:"sc-rrpaxu-2"})(j||(j=n.__makeTemplateObject(["\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: ","px;\n }\n\n & > * + * {\n margin-left: ","px;\n }\n"],["\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: ","px;\n }\n\n & > * + * {\n margin-left: ","px;\n }\n"])),3*s.spacings.nudge,2*s.spacings.nudge),J=T.default.div.withConfig({displayName:"JobCard__Icon",componentId:"sc-rrpaxu-3"})(I||(I=n.__makeTemplateObject(["\n display: flex;\n align-items: center;\n\n & > * {\n height: 32px;\n width: 32px;\n }\n"],["\n display: flex;\n align-items: center;\n\n & > * {\n height: 32px;\n width: 32px;\n }\n"]))),N=T.default.div.withConfig({displayName:"JobCard__MainLabel",componentId:"sc-rrpaxu-4"})(C||(C=n.__makeTemplateObject(["\n display: flex;\n align-items: center;\n"],["\n display: flex;\n align-items: center;\n"]))),O=T.default(o.Link).withConfig({displayName:"JobCard__ViewLink",componentId:"sc-rrpaxu-5"})(E||(E=n.__makeTemplateObject(["\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n && {\n margin: 0;\n }\n"],["\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n && {\n margin: 0;\n }\n"]))),M=L.default.forwardRef((function(e,t){var i,a,o=e.isInverted,s=e.hasBackground,d=e.jobTitle,c=e.employmentTypes,p=e.locations,u=e.totalLocations,m=e.allLocationsLabel,f=e.modelIcon,g=e.locationIcon,h=e.className,b=e.link,x=l.isValidArray(c,!1),y=null==p?void 0:p.filter((function(n){return n.name})),v=l.isValidArray(y,!1),_="";return v&&(_=void 0!==u&&y.length>=u&&m?m:null===(i=y.map((function(n){return n.name})))||void 0===i?void 0:i.join(", ")),L.default.createElement(k,{ref:t,isInverted:o,hasBg:s,className:h,clickable:!!b},L.default.createElement(r.Heading,{textColor:"inherit",size:"heading-2","data-sheet":"title",innerHTML:d,hyphens:!0}),(x||v)&&L.default.createElement(q,{type:"copy-b","data-sheet":"info"},x&&L.default.createElement(A,null,L.default.createElement(J,null,f?f():L.default.createElement(n.ClockFilled,null)),L.default.createElement(N,null,null===(a=null==c?void 0:c.filter((function(n){return n.name})).map((function(n){return n.name})))||void 0===a?void 0:a.join(", "))),v&&L.default.createElement(A,null,L.default.createElement(J,null,g?g():L.default.createElement(n.LocationPin,null)),L.default.createElement(N,null,_))),b&&L.default.createElement(O,n.__assign({},b,{ariaLabel:(null==b?void 0:b.href)?d:void 0})))}));M.displayName="JobCard";var B,V,P,S,F,z,H,R,U,W,D=T.default.ul.withConfig({displayName:"JobList__List",componentId:"sc-1b9tzu5-0"})(B||(B=n.__makeTemplateObject(["\n display: flex;\n flex-wrap: wrap;\n list-style: none;\n margin: 0;\n padding: 0;\n\n margin-top: -","px;\n margin-left: -","px;\n\n @media "," {\n margin-top: -","px;\n margin-left: -","px;\n }\n"],["\n display: flex;\n flex-wrap: wrap;\n list-style: none;\n margin: 0;\n padding: 0;\n\n margin-top: -","px;\n margin-left: -","px;\n\n @media "," {\n margin-top: -","px;\n margin-left: -","px;\n }\n"])),2*s.spacings.nudge,2*s.spacings.nudge,s.mq.medium,s.spacings.spacer,s.spacings.spacer),Q=T.default.li.withConfig({displayName:"JobList__Item",componentId:"sc-1b9tzu5-1"})(V||(V=n.__makeTemplateObject(["\n flex: 0 1 100%;\n max-width: 100%;\n margin: 0;\n\n padding-top: ","px;\n padding-left: ","px;\n\n @media "," {\n flex: 0 1 50%;\n max-width: 50%;\n\n padding-top: ","px;\n padding-left: ","px;\n }\n\n @media "," {\n flex: 0 1 33.33%;\n max-width: 33.33%;\n }\n"],["\n flex: 0 1 100%;\n max-width: 100%;\n margin: 0;\n\n padding-top: ","px;\n padding-left: ","px;\n\n @media "," {\n flex: 0 1 50%;\n max-width: 50%;\n\n padding-top: ","px;\n padding-left: ","px;\n }\n\n @media "," {\n flex: 0 1 33.33%;\n max-width: 33.33%;\n }\n"])),2*s.spacings.nudge,2*s.spacings.nudge,s.mq.medium,s.spacings.spacer,s.spacings.spacer,s.mq.large),G=T.default(p.FilterField).withConfig({displayName:"JobList__Filter",componentId:"sc-1b9tzu5-2"})(P||(P=n.__makeTemplateObject(["\n margin-top: ","px;\n margin-bottom: ","px;\n\n min-width: 50%;\n"],["\n margin-top: ","px;\n margin-bottom: ","px;\n\n min-width: 50%;\n"])),s.spacings.nudge,5*s.spacings.nudge),K=function(n,e){return e?null==e?void 0:e.filter((function(e){return!n.find((function(n){return n.item.id===e.id}))})):[]},X=function(n,e){var t=[];if(!l.isValidArray(null==e?void 0:e.filter((function(n){return void 0!==n.jobTitle})),!1))return t;var i=null==e?void 0:e.filter(function(n){return function(e){return new RegExp(n).test(e.jobTitle)}}(n));l.isValidArray(i,!1)&&t.push.apply(t,i.map((function(n){return{item:n,priority:1}})));var a=K(t,null==e?void 0:e.filter(function(n){return function(e){var t=n.toLowerCase().replace(/\s/g,""),i=e.jobTitle.toLowerCase().replace(/\s/g,"");return new RegExp(t).test(i)}}(n)));l.isValidArray(a,!1)&&t.push.apply(t,a.map((function(n){return{item:n,priority:2}})));var r=K(t,null==e?void 0:e.filter(function(n){return function(e){if(!l.isValidArray(e.locations,!1))return!1;var t=n.toLowerCase().replace(/\s/g,""),i=new RegExp(t);return!!e.locations.find((function(n){var e,t=null===(e=n.name)||void 0===e?void 0:e.toLowerCase().replace(/\s/g,"");return i.test(t||"")}))}}(n)));l.isValidArray(r,!1)&&t.push.apply(t,r.map((function(n){return{item:n,priority:3}})));var o=K(t,null==e?void 0:e.filter(function(n){return function(e){if(!l.isValidArray(null==e?void 0:e.employmentTypes,!1))return!1;var t=n.toLowerCase().replace(/\s/g,""),i=new RegExp(t);return!!e.employmentTypes.find((function(n){if(!n.name)return!1;var e=n.name.toLowerCase().replace(/\s/g,"");return i.test(e)}))}}(n)));return l.isValidArray(o,!1)&&t.push.apply(t,o.map((function(n){return{item:n,priority:4}}))),t},Y=d.withLibTheme((function(t){var r=t.anchorId,o=t.jobs,l=t.bgMode,s=t.modelIcon,p=t.locationIcon,h=t.totalJobLocations,b=t.allJobLocationsLabel,x=t.initialFilterQuery,y=t.filterPlaceholder,v=t.hasFilter,_=t.filterSubmitIcon,w=t.filterClearIcon,j=d.useLibTheme(),I=j.colors,C=j.globals.sections.jobFilterName,E="inverted"===l,T="full"===l,k=(null==o?void 0:o.length)||0,q=c.useEqualSheetHeight({listLength:k,identifiers:['[data-sheet="title"]','[data-sheet="info"]'],responsive:{small:1,semilarge:2,large:3}}).sheetRefs,A=L.default.useState(x||""),J=A[0],N=A[1],O=g.useMounted(),B=L.default.useMemo((function(){for(var e=void 0!==J?J.split(" ").map((function(n){return n.trim()})):[""],t=[],i=0,a=e;i<a.length;i++)for(var r=a[i],l=function(n){var e=t.findIndex((function(e){return e.match.item.id===n.item.id}));-1!==e?t[e].intersections+=1:t.push({match:n,intersections:1})},s=0,d=X(m.escapeRegExp(r),o||[]);s<d.length;s++){l(d[s])}return t.filter((function(n){return n.intersections>=e.length})).map((function(e){return n.__assign({},e.match)}))}),[J,o]),V=e.useCallback((function(){return f.getUrlParams()[C]}),[C]);return e.useEffect((function(){var n=V();null!=n&&"string"==typeof n&&N(n)}),[V]),e.useEffect((function(){O||(J?f.setUrlParam(C,J):f.deleteUrlParam(C))}),[C,J,O]),u.useUpdateEffect((function(){J?f.setUrlParam(C,J):f.deleteUrlParam(C)}),[J]),L.default.createElement(i.Section,{addSeperation:!0,anchorId:r,bgColor:E?I.sectionBg.dark:l?I.sectionBg.medium:I.sectionBg.light,bgMode:i.mapToBgMode(l,!0)},L.default.createElement(a.Wrapper,{addWhitespace:!0},v&&L.default.createElement(G,{placeholder:y||"Suche",value:J,initialValue:x,onSubmit:N,isInverted:E,submitIcon:_,clearIcon:w}),L.default.createElement(D,null,null==B?void 0:B.sort((function(n,e){return n.priority-e.priority})).map((function(e,t){return L.default.createElement(Q,{key:t},L.default.createElement(M,n.__assign({ref:q[t]},e.item,{isInverted:E,hasBackground:T,modelIcon:s,locationIcon:p,totalLocations:h,allLocationsLabel:b})))})))))})),Z=T.default.div.withConfig({displayName:"JobArticle__ArticleHead",componentId:"sc-1bwhr8-0"})(S||(S=n.__makeTemplateObject(["\n & + * {\n margin-top: ","px;\n }\n"],["\n & + * {\n margin-top: ","px;\n }\n"])),s.spacings.spacer),$=T.default(r.Copy).withConfig({displayName:"JobArticle__JobInfos",componentId:"sc-1bwhr8-1"})(F||(F=n.__makeTemplateObject(["\n &:not(:first-child) {\n margin-top: ","px;\n }\n"],["\n &:not(:first-child) {\n margin-top: ","px;\n }\n"])),s.spacings.spacer),nn=T.default.div.withConfig({displayName:"JobArticle__Info",componentId:"sc-1bwhr8-2"})(z||(z=n.__makeTemplateObject(["\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: ","px;\n }\n\n & > * + * {\n margin-left: ","px;\n }\n"],["\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: ","px;\n }\n\n & > * + * {\n margin-left: ","px;\n }\n"])),3*s.spacings.nudge,2*s.spacings.nudge),en=T.default.span.withConfig({displayName:"JobArticle__Icon",componentId:"sc-1bwhr8-3"})(H||(H=n.__makeTemplateObject(["\n display: flex;\n align-items: center;\n\n & > * {\n height: 32px;\n width: 32px;\n }\n"],["\n display: flex;\n align-items: center;\n\n & > * {\n height: 32px;\n width: 32px;\n }\n"]))),tn=T.default.span.withConfig({displayName:"JobArticle__MainLabel",componentId:"sc-1bwhr8-4"})(R||(R=n.__makeTemplateObject(["\n display: flex;\n align-items: center;\n"],["\n display: flex;\n align-items: center;\n"]))),an=T.default(r.Copy).withConfig({displayName:"JobArticle__Text",componentId:"sc-1bwhr8-5"})(U||(U=n.__makeTemplateObject(["\n & + & {\n margin-top: ","px;\n }\n"],["\n & + & {\n margin-top: ","px;\n }\n"])),3*s.spacings.nudge),rn=T.default(h.Actions).withConfig({displayName:"JobArticle__StyledActions",componentId:"sc-1bwhr8-6"})(W||(W=n.__makeTemplateObject(["\n margin-top: ","px;\n"],["\n margin-top: ","px;\n"])),s.spacings.spacer),on=d.withLibTheme((function(e){var t,o,s=e.anchorId,c=e.bgMode,p=e.jobTitle,u=e.employmentTypes,m=e.locations,f=e.totalLocations,g=e.allLocationsLabel,h=e.modelIcon,y=e.locationIcon,v=e.abstract,_=e.description,w=e.organization,j=e.datePosted,I=e.primaryAction,C=e.secondaryAction,E=d.useLibTheme().colors,T="inverted"===c,k=l.isValidArray(u,!1),q=null==m?void 0:m.filter((function(n){return n.name})),A=l.isValidArray(q,!1),J="";A&&(J=void 0!==f&&q.length>=f?g||"":null===(t=q.map((function(n){return n.name})))||void 0===t?void 0:t.join(", "));var N={jobTitle:p,locations:m,jobDesc:b.concat([v,_]," - "),organization:w,directApply:!(!I&&!C),employmentTypes:(null==u?void 0:u.filter((function(n){return n.type})).map((function(n){return n.type})))||[],datePosted:j};return L.default.createElement(i.Section,{addSeperation:!0,anchorId:s,bgColor:T?E.sectionBg.dark:c?E.sectionBg.medium:E.sectionBg.light,bgMode:i.mapToBgMode(c,!0)},x.generateJob(N),L.default.createElement(a.Wrapper,{clampWidth:"small",addWhitespace:!0},L.default.createElement(Z,null,L.default.createElement(r.Heading,{size:"heading-2",innerHTML:p,isInverted:T}),(k||A)&&L.default.createElement($,{type:"copy-b","data-sheet":"info",isInverted:T},k&&L.default.createElement(nn,null,L.default.createElement(en,null,h?h():L.default.createElement(n.ClockFilled,null)),L.default.createElement(tn,null,null===(o=null==u?void 0:u.filter((function(n){return n.name})).map((function(n){return n.name})))||void 0===o?void 0:o.join(", "))),A&&L.default.createElement(nn,null,L.default.createElement(en,null,y?y():L.default.createElement(n.LocationPin,null)),L.default.createElement(tn,null,J)))),v&&L.default.createElement(an,{type:"copy-b",isInverted:T},v),_&&L.default.createElement(an,{innerHTML:_,isInverted:T}),(I||C)&&L.default.createElement(rn,{primary:I&&I(T),secondary:C&&C(T)})))}));exports.JobArticle=on,exports.JobList=Y;
2
2
  //# sourceMappingURL=sections.jobs.js.map
@@ -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 }) =>\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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"}