diff --git a/composer.json b/composer.json index 0989183d252007adb35efe6e030a9d8138825825..133fdb2851af7f54799ece5a05792e629d8e0a9f 100644 --- a/composer.json +++ b/composer.json @@ -21,6 +21,7 @@ "drupal/allowed_formats": "^3.0", "drupal/antibot": "^2.0", "drupal/autologout": "^2.0", + "drupal/better_exposed_filters": "^7.0", "drupal/block_field": "^1.0@RC", "drupal/cached_computed_field": "^1.0", "drupal/calendar_view": "^2.1", @@ -29,8 +30,8 @@ "drupal/changed_fields": "^3.2", "drupal/colorbox": "^2.0", "drupal/config_ignore": "^3.0", - "drupal/core-composer-scaffold": "~10.4.5", - "drupal/core-recommended": "~10.4.5", + "drupal/core-composer-scaffold": "~10.4.3", + "drupal/core-recommended": "~10.4.3", "drupal/custom_markup_block": "^1.2", "drupal/default_content": "^2.0", "drupal/diff": "^1.8", @@ -449,9 +450,6 @@ "The search_api_list:{index} cache tag is not added to the view display @see https://www.drupal.org/project/search_api/issues/3298295": "resources/patch/php/drupal/search_api/3298295.patch", "View recalculated with wrong data from cache @see https://drupal.org/i/3327645": "resources/patch/php/drupal/search_api/sapi-views_cache_metadata-3327645-9--fix-only.patch" }, - "drupal/search_api_autocomplete": { - "Clear timeout autosubmit used in views_autosubmit. @see https://www.drupal.org/i/3314418": "resources/patch/php/drupal/search_api_autocomplete/3314418.patch" - }, "drupal/search_api_spellcheck": { "URL don't include the base path @see https://www.drupal.org/project/search_api_spellcheck/issues/3280372": "resources/patch/php/drupal/search_api_spellcheck/3280372.patch" }, @@ -476,9 +474,6 @@ "Add support for Ckeditor 5. @see https://www.drupal.org/project/video_embed_field/issues/3311063": "resources/patch/php/drupal/video_embed_field/3311063_42.patch", "AssertionError: \"media\" must be defined in MODULE_NAME.field_type_categories.yml @see https://www.drupal.org/project/video_embed_field/issues/3469668": "resources/patch/php/drupal/video_embed_field/3469668.patch" }, - "drupal/views_autosubmit": { - "Stop auto submitting first character entered in an Autocomplete Filter field. @see https://www.drupal.org/project/views_autosubmit/issues/3160600": "resources/patch/php/drupal/views_autosubmit/10.diff" - }, "drupal/webform": { "Radios or Checkboxes inside Composite not saved @see https://www.drupal.org/project/webform/issues/3216923": "resources/patch/php/drupal/webform/368.diff", "Webform might create invalid link renderable arrays on submission list. @see https://www.drupal.org/project/webform/issues/3441600": "resources/patch/php/drupal/webform/3441600.patch", diff --git a/composer.lock b/composer.lock index 232afc648035039a776f2c465a952f354ffc4f55..26d19a85e29ce95bab7ab892bc57839ae320dbfc 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "b9407038a1308b107e4588abfdf4f44e", + "content-hash": "4d283028f48279026bc62df0e6f5f302", "packages": [ { "name": "asm89/stack-cors", @@ -2104,6 +2104,80 @@ "issues": "https://www.drupal.org/project/issues/autologout" } }, + { + "name": "drupal/better_exposed_filters", + "version": "7.0.5", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/better_exposed_filters.git", + "reference": "7.0.5" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/better_exposed_filters-7.0.5.zip", + "reference": "7.0.5", + "shasum": "a215444c39a6ae384710a6c707caf593f6dd1e2d" + }, + "require": { + "drupal/core": "^10 || ^11", + "drupal/nouislider_js": "^15.8" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "7.0.5", + "datestamp": "1738353781", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Mike Keran", + "homepage": "https://www.drupal.org/u/mikeker" + }, + { + "name": "Martin Keereman", + "homepage": "https://www.drupal.org/u/etroid" + }, + { + "name": "Neslee Canil Pinto", + "homepage": "https://www.drupal.org/u/neslee-canil-pinto" + }, + { + "name": "mikeker", + "homepage": "https://www.drupal.org/user/192273" + }, + { + "name": "neslee canil pinto", + "homepage": "https://www.drupal.org/user/3580850" + }, + { + "name": "podarok", + "homepage": "https://www.drupal.org/user/116002" + }, + { + "name": "rlhawk", + "homepage": "https://www.drupal.org/user/352283" + }, + { + "name": "smustgrave", + "homepage": "https://www.drupal.org/user/3252890" + } + ], + "description": "Replaces the Views default single- or multi-select boxes with more advanced options.", + "homepage": "https://www.drupal.org/project/better_exposed_filters", + "support": { + "source": "https://git.drupalcode.org/project/better_exposed_filters", + "issues": "https://www.drupal.org/project/issues/better_exposed_filters" + } + }, { "name": "drupal/blazy", "version": "2.27.0", @@ -2654,16 +2728,16 @@ }, { "name": "drupal/core", - "version": "10.4.5", + "version": "10.4.3", "source": { "type": "git", "url": "https://github.com/drupal/core.git", - "reference": "5247dbaa65b42b601058555f4a8b2bd541f5611f" + "reference": "b9ecec3637e19050a3ab5fe14f6d84e9e00c9abd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drupal/core/zipball/5247dbaa65b42b601058555f4a8b2bd541f5611f", - "reference": "5247dbaa65b42b601058555f4a8b2bd541f5611f", + "url": "https://api.github.com/repos/drupal/core/zipball/b9ecec3637e19050a3ab5fe14f6d84e9e00c9abd", + "reference": "b9ecec3637e19050a3ab5fe14f6d84e9e00c9abd", "shasum": "" }, "require": { @@ -2812,13 +2886,13 @@ ], "description": "Drupal is an open source content management platform powering millions of websites and applications.", "support": { - "source": "https://github.com/drupal/core/tree/10.4.5" + "source": "https://github.com/drupal/core/tree/10.4.3" }, - "time": "2025-03-19T15:53:40+00:00" + "time": "2025-02-18T22:41:05+00:00" }, { "name": "drupal/core-composer-scaffold", - "version": "10.4.5", + "version": "10.4.3", "source": { "type": "git", "url": "https://github.com/drupal/core-composer-scaffold.git", @@ -2862,22 +2936,22 @@ "drupal" ], "support": { - "source": "https://github.com/drupal/core-composer-scaffold/tree/10.4.5" + "source": "https://github.com/drupal/core-composer-scaffold/tree/10.4.3" }, "time": "2024-08-22T14:31:30+00:00" }, { "name": "drupal/core-recommended", - "version": "10.4.5", + "version": "10.4.3", "source": { "type": "git", "url": "https://github.com/drupal/core-recommended.git", - "reference": "4e5e7c47ec91012327a8a9e9bfcdbf51f6f115cc" + "reference": "0214d0d9e509985b9341f3a11ca7983e3900bc93" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drupal/core-recommended/zipball/4e5e7c47ec91012327a8a9e9bfcdbf51f6f115cc", - "reference": "4e5e7c47ec91012327a8a9e9bfcdbf51f6f115cc", + "url": "https://api.github.com/repos/drupal/core-recommended/zipball/0214d0d9e509985b9341f3a11ca7983e3900bc93", + "reference": "0214d0d9e509985b9341f3a11ca7983e3900bc93", "shasum": "" }, "require": { @@ -2886,7 +2960,7 @@ "doctrine/annotations": "~1.14.4", "doctrine/deprecations": "~1.1.3", "doctrine/lexer": "~2.1.1", - "drupal/core": "10.4.5", + "drupal/core": "10.4.3", "egulias/email-validator": "~4.0.2", "guzzlehttp/guzzle": "~7.9.2", "guzzlehttp/promises": "~2.0.4", @@ -2947,9 +3021,9 @@ ], "description": "Core and its dependencies with known-compatible minor versions. Require this project INSTEAD OF drupal/core.", "support": { - "source": "https://github.com/drupal/core-recommended/tree/10.4.5" + "source": "https://github.com/drupal/core-recommended/tree/10.4.3" }, - "time": "2025-03-19T15:53:40+00:00" + "time": "2025-02-18T22:41:05+00:00" }, { "name": "drupal/csv_serialization", @@ -6732,6 +6806,35 @@ "issues": "https://www.drupal.org/project/issues/node_revision_delete" } }, + { + "name": "drupal/nouislider_js", + "version": "15.8.1", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/nouislider_js.git", + "reference": "b5610d5842784581e4c766cd1c3852ca0b355ed5" + }, + "dist": { + "type": "zip", + "url": "https://git.drupalcode.org/api/v4/projects/project%2Fnouislider_js/repository/archive.zip?sha=b5610d5842784581e4c766cd1c3852ca0b355ed5", + "reference": "b5610d5842784581e4c766cd1c3852ca0b355ed5", + "shasum": "" + }, + "type": "drupal-library", + "extra": { + "installer-name": "nouislider" + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT License" + ], + "description": "Mirror of the noUiSlider javascript library tagged as a Drupal library.", + "homepage": "https://github.com/leongersen/noUiSlider", + "support": { + "source": "https://git.drupalcode.org/project/nouislider_js/-/tree/15.8.0" + }, + "time": "2025-01-03T10:53:20+00:00" + }, { "name": "drupal/og", "version": "1.0.0-alpha10", @@ -15543,16 +15646,16 @@ }, { "name": "symfony/dependency-injection", - "version": "v6.4.19", + "version": "v6.4.16", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "b343c3b2f1539fe41331657b37d5c96c1d1ea842" + "reference": "7a379d8871f6a36f01559c14e11141cc02eb8dc8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/b343c3b2f1539fe41331657b37d5c96c1d1ea842", - "reference": "b343c3b2f1539fe41331657b37d5c96c1d1ea842", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/7a379d8871f6a36f01559c14e11141cc02eb8dc8", + "reference": "7a379d8871f6a36f01559c14e11141cc02eb8dc8", "shasum": "" }, "require": { @@ -15604,7 +15707,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v6.4.19" + "source": "https://github.com/symfony/dependency-injection/tree/v6.4.16" }, "funding": [ { @@ -15620,7 +15723,7 @@ "type": "tidelift" } ], - "time": "2025-02-20T10:02:49+00:00" + "time": "2024-11-25T14:52:46+00:00" }, { "name": "symfony/deprecation-contracts", @@ -15691,16 +15794,16 @@ }, { "name": "symfony/error-handler", - "version": "v6.4.19", + "version": "v6.4.18", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "3d4e55cd2b8f1979a65eba9ab749d6466c316f71" + "reference": "e8d3b5b1975e67812a54388b1ba8e9ec28eb770e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/3d4e55cd2b8f1979a65eba9ab749d6466c316f71", - "reference": "3d4e55cd2b8f1979a65eba9ab749d6466c316f71", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/e8d3b5b1975e67812a54388b1ba8e9ec28eb770e", + "reference": "e8d3b5b1975e67812a54388b1ba8e9ec28eb770e", "shasum": "" }, "require": { @@ -15746,7 +15849,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.4.19" + "source": "https://github.com/symfony/error-handler/tree/v6.4.18" }, "funding": [ { @@ -15762,7 +15865,7 @@ "type": "tidelift" } ], - "time": "2025-02-02T20:16:33+00:00" + "time": "2025-01-06T09:38:16+00:00" }, { "name": "symfony/event-dispatcher", @@ -16052,16 +16155,16 @@ }, { "name": "symfony/http-client", - "version": "v6.4.19", + "version": "v6.4.18", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "3294a433fc9d12ae58128174896b5b1822c28dad" + "reference": "394b440934056b8d9d6ba250001458e9d7998b7f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/3294a433fc9d12ae58128174896b5b1822c28dad", - "reference": "3294a433fc9d12ae58128174896b5b1822c28dad", + "url": "https://api.github.com/repos/symfony/http-client/zipball/394b440934056b8d9d6ba250001458e9d7998b7f", + "reference": "394b440934056b8d9d6ba250001458e9d7998b7f", "shasum": "" }, "require": { @@ -16125,7 +16228,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v6.4.19" + "source": "https://github.com/symfony/http-client/tree/v6.4.18" }, "funding": [ { @@ -16141,7 +16244,7 @@ "type": "tidelift" } ], - "time": "2025-02-13T09:55:13+00:00" + "time": "2025-01-28T15:49:13+00:00" }, { "name": "symfony/http-client-contracts", @@ -16300,16 +16403,16 @@ }, { "name": "symfony/http-kernel", - "version": "v6.4.19", + "version": "v6.4.18", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "88f2c9f7feff86bb7b9105c5151bc2c1404cd64c" + "reference": "fca7197bfe9e99dfae7fb1ad3f7f5bd9ef80e1b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/88f2c9f7feff86bb7b9105c5151bc2c1404cd64c", - "reference": "88f2c9f7feff86bb7b9105c5151bc2c1404cd64c", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/fca7197bfe9e99dfae7fb1ad3f7f5bd9ef80e1b7", + "reference": "fca7197bfe9e99dfae7fb1ad3f7f5bd9ef80e1b7", "shasum": "" }, "require": { @@ -16394,7 +16497,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.4.19" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.18" }, "funding": [ { @@ -16410,7 +16513,7 @@ "type": "tidelift" } ], - "time": "2025-02-26T10:51:37+00:00" + "time": "2025-01-29T07:25:58+00:00" }, { "name": "symfony/mailer", @@ -16494,16 +16597,16 @@ }, { "name": "symfony/mime", - "version": "v6.4.19", + "version": "v6.4.18", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "ac537b6c55ccc2c749f3c979edfa9ec14aaed4f3" + "reference": "917d77981eb1ea963608d5cda4d9c0cf72eaa68e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/ac537b6c55ccc2c749f3c979edfa9ec14aaed4f3", - "reference": "ac537b6c55ccc2c749f3c979edfa9ec14aaed4f3", + "url": "https://api.github.com/repos/symfony/mime/zipball/917d77981eb1ea963608d5cda4d9c0cf72eaa68e", + "reference": "917d77981eb1ea963608d5cda4d9c0cf72eaa68e", "shasum": "" }, "require": { @@ -16559,7 +16662,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.4.19" + "source": "https://github.com/symfony/mime/tree/v6.4.18" }, "funding": [ { @@ -16575,7 +16678,7 @@ "type": "tidelift" } ], - "time": "2025-02-17T21:23:52+00:00" + "time": "2025-01-23T13:10:52+00:00" }, { "name": "symfony/options-resolver", @@ -17359,16 +17462,16 @@ }, { "name": "symfony/process", - "version": "v6.4.19", + "version": "v6.4.15", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "7a1c12e87b08ec9c97abdd188c9b3f5a40e37fc3" + "reference": "3cb242f059c14ae08591c5c4087d1fe443564392" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/7a1c12e87b08ec9c97abdd188c9b3f5a40e37fc3", - "reference": "7a1c12e87b08ec9c97abdd188c9b3f5a40e37fc3", + "url": "https://api.github.com/repos/symfony/process/zipball/3cb242f059c14ae08591c5c4087d1fe443564392", + "reference": "3cb242f059c14ae08591c5c4087d1fe443564392", "shasum": "" }, "require": { @@ -17400,7 +17503,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.4.19" + "source": "https://github.com/symfony/process/tree/v6.4.15" }, "funding": [ { @@ -17416,7 +17519,7 @@ "type": "tidelift" } ], - "time": "2025-02-04T13:35:48+00:00" + "time": "2024-11-06T14:19:14+00:00" }, { "name": "symfony/psr-http-message-bridge", @@ -17586,16 +17689,16 @@ }, { "name": "symfony/serializer", - "version": "v6.4.19", + "version": "v6.4.18", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "a221b2f6066af304d760cff7a26f201b4fab4aef" + "reference": "6ad986f62276da4c8c69754decfaa445a89cb6e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/a221b2f6066af304d760cff7a26f201b4fab4aef", - "reference": "a221b2f6066af304d760cff7a26f201b4fab4aef", + "url": "https://api.github.com/repos/symfony/serializer/zipball/6ad986f62276da4c8c69754decfaa445a89cb6e3", + "reference": "6ad986f62276da4c8c69754decfaa445a89cb6e3", "shasum": "" }, "require": { @@ -17664,7 +17767,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v6.4.19" + "source": "https://github.com/symfony/serializer/tree/v6.4.18" }, "funding": [ { @@ -17680,7 +17783,7 @@ "type": "tidelift" } ], - "time": "2025-02-24T08:42:36+00:00" + "time": "2025-01-28T18:47:02+00:00" }, { "name": "symfony/service-contracts", @@ -17931,16 +18034,16 @@ }, { "name": "symfony/validator", - "version": "v6.4.19", + "version": "v6.4.18", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "f3e853dffe7c5db675686b8216d6d890dad8c885" + "reference": "ce20367d07b2592202e9c266b16a93fa50145207" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/f3e853dffe7c5db675686b8216d6d890dad8c885", - "reference": "f3e853dffe7c5db675686b8216d6d890dad8c885", + "url": "https://api.github.com/repos/symfony/validator/zipball/ce20367d07b2592202e9c266b16a93fa50145207", + "reference": "ce20367d07b2592202e9c266b16a93fa50145207", "shasum": "" }, "require": { @@ -18008,7 +18111,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v6.4.19" + "source": "https://github.com/symfony/validator/tree/v6.4.18" }, "funding": [ { @@ -18024,7 +18127,7 @@ "type": "tidelift" } ], - "time": "2025-02-19T13:12:02+00:00" + "time": "2025-01-27T16:05:44+00:00" }, { "name": "symfony/var-dumper", @@ -18113,16 +18216,16 @@ }, { "name": "symfony/var-exporter", - "version": "v6.4.19", + "version": "v6.4.13", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "be6e71b0c257884c1107313de5d247741cfea172" + "reference": "0f605f72a363f8743001038a176eeb2a11223b51" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/be6e71b0c257884c1107313de5d247741cfea172", - "reference": "be6e71b0c257884c1107313de5d247741cfea172", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/0f605f72a363f8743001038a176eeb2a11223b51", + "reference": "0f605f72a363f8743001038a176eeb2a11223b51", "shasum": "" }, "require": { @@ -18170,7 +18273,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.4.19" + "source": "https://github.com/symfony/var-exporter/tree/v6.4.13" }, "funding": [ { @@ -18186,7 +18289,7 @@ "type": "tidelift" } ], - "time": "2025-02-13T09:33:32+00:00" + "time": "2024-09-25T14:18:03+00:00" }, { "name": "symfony/yaml", @@ -24971,16 +25074,16 @@ }, { "name": "symfony/browser-kit", - "version": "v7.2.4", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "8ce0ee23857d87d5be493abba2d52d1f9e49da61" + "reference": "8d64d17e198082f8f198d023a6b634e7b5fdda94" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/8ce0ee23857d87d5be493abba2d52d1f9e49da61", - "reference": "8ce0ee23857d87d5be493abba2d52d1f9e49da61", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/8d64d17e198082f8f198d023a6b634e7b5fdda94", + "reference": "8d64d17e198082f8f198d023a6b634e7b5fdda94", "shasum": "" }, "require": { @@ -25019,7 +25122,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v7.2.4" + "source": "https://github.com/symfony/browser-kit/tree/v7.2.0" }, "funding": [ { @@ -25035,7 +25138,7 @@ "type": "tidelift" } ], - "time": "2025-02-14T14:27:24+00:00" + "time": "2024-10-25T15:15:23+00:00" }, { "name": "symfony/config", @@ -25114,16 +25217,16 @@ }, { "name": "symfony/dom-crawler", - "version": "v7.2.4", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "19cc7b08efe9ad1ab1b56e0948e8d02e15ed3ef7" + "reference": "700a880e5089280c7cf3ca1ccf9d9de6630f5d25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/19cc7b08efe9ad1ab1b56e0948e8d02e15ed3ef7", - "reference": "19cc7b08efe9ad1ab1b56e0948e8d02e15ed3ef7", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/700a880e5089280c7cf3ca1ccf9d9de6630f5d25", + "reference": "700a880e5089280c7cf3ca1ccf9d9de6630f5d25", "shasum": "" }, "require": { @@ -25161,7 +25264,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v7.2.4" + "source": "https://github.com/symfony/dom-crawler/tree/v7.2.3" }, "funding": [ { @@ -25177,7 +25280,7 @@ "type": "tidelift" } ], - "time": "2025-02-17T15:53:07+00:00" + "time": "2025-01-27T11:08:17+00:00" }, { "name": "symfony/phpunit-bridge", @@ -25339,16 +25442,16 @@ }, { "name": "symfony/translation", - "version": "v7.2.4", + "version": "v7.2.2", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "283856e6981286cc0d800b53bd5703e8e363f05a" + "reference": "e2674a30132b7cc4d74540d6c2573aa363f05923" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/283856e6981286cc0d800b53bd5703e8e363f05a", - "reference": "283856e6981286cc0d800b53bd5703e8e363f05a", + "url": "https://api.github.com/repos/symfony/translation/zipball/e2674a30132b7cc4d74540d6c2573aa363f05923", + "reference": "e2674a30132b7cc4d74540d6c2573aa363f05923", "shasum": "" }, "require": { @@ -25414,7 +25517,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.2.4" + "source": "https://github.com/symfony/translation/tree/v7.2.2" }, "funding": [ { @@ -25430,7 +25533,7 @@ "type": "tidelift" } ], - "time": "2025-02-13T10:27:23+00:00" + "time": "2024-12-07T08:18:10+00:00" }, { "name": "theseer/tokenizer", diff --git a/config/sync/core.entity_view_display.node.event.explore_item.yml b/config/sync/core.entity_view_display.node.event.explore_item.yml new file mode 100644 index 0000000000000000000000000000000000000000..e4c1451416d027ef042d76f8080082760e1f24cb --- /dev/null +++ b/config/sync/core.entity_view_display.node.event.explore_item.yml @@ -0,0 +1,220 @@ +uuid: fbd4a53a-faa6-4035-bc12-8e2aea02ccee +langcode: en +status: true +dependencies: + config: + - core.entity_view_mode.node.explore_item + - field.field.node.event.abstract + - field.field.node.event.field_attachment + - field.field.node.event.field_comments + - field.field.node.event.field_event_agenda + - field.field.node.event.field_event_contact_email + - field.field.node.event.field_event_coordinates + - field.field.node.event.field_event_date + - field.field.node.event.field_event_logo + - field.field.node.event.field_event_online_location + - field.field.node.event.field_event_web_url + - field.field.node.event.field_keywords + - field.field.node.event.field_location + - field.field.node.event.field_organisation + - field.field.node.event.field_organisation_type + - field.field.node.event.field_paragraphs_body + - field.field.node.event.field_scope + - field.field.node.event.field_shared_in + - field.field.node.event.field_short_title + - field.field.node.event.field_site_featured + - field.field.node.event.field_state + - field.field.node.event.field_topic + - field.field.node.event.og_audience + - field.field.node.event.spatial_coverage + - node.type.event + module: + - layout_builder + - layout_discovery + - template_suggestion + - user +third_party_settings: + layout_builder: + enabled: true + allow_custom: false + sections: + - + layout_id: layout_onecol + layout_settings: + label: '' + context_mapping: { } + components: + 5bae9701-073f-4f80-93b0-736bf37b025a: + uuid: 5bae9701-073f-4f80-93b0-736bf37b025a + region: content + configuration: + id: 'extra_field_block:node:event:read_more' + label: 'Read more' + label_display: '0' + provider: layout_builder + context_mapping: + entity: layout_builder.entity + weight: -6 + additional: { } + c3a5c5bf-fe80-4a16-9e9d-e217d7f8c162: + uuid: c3a5c5bf-fe80-4a16-9e9d-e217d7f8c162 + region: content + configuration: + id: 'field_block:node:event:field_event_date' + label: Date + label_display: '0' + provider: layout_builder + context_mapping: + entity: layout_builder.entity + view_mode: view_mode + formatter: + type: daterange_default + label: hidden + settings: + timezone_override: '' + format_type: date_only + from_to: start_date + separator: '-' + third_party_settings: + template_suggestion: + template_suggestion: '' + weight: -7 + additional: + component_attributes: + block_attributes: + id: '' + class: date + style: '' + data: '' + block_title_attributes: + id: '' + class: '' + style: '' + data: '' + block_content_attributes: + id: '' + class: '' + style: '' + data: '' + 8b7254a6-314d-4b01-8ee1-ff315744af26: + uuid: 8b7254a6-314d-4b01-8ee1-ff315744af26 + region: content + configuration: + id: 'field_block:node:event:abstract' + label: Abstract + label_display: '0' + provider: layout_builder + context_mapping: + entity: layout_builder.entity + view_mode: view_mode + formatter: + type: field_fallback_formatter + label: hidden + settings: + main_field_formatter_id: string + main_field_formatter_settings: + link_to_entity: false + fallback_field_id: field_paragraphs_body + fallback_field_formatter_id: filtered_entity_reference_bundles + fallback_field_formatter_settings: + view_mode: tile + filtered_entity_bundles: + simple_paragraph: simple_paragraph + text: text + trim_length: 200 + trim_chars: ... + third_party_settings: + template_suggestion: + template_suggestion: bare + weight: -8 + additional: + component_attributes: + block_attributes: + id: '' + class: explore-item__description + style: '' + data: '' + block_title_attributes: + id: '' + class: '' + style: '' + data: '' + block_content_attributes: + id: '' + class: '' + style: '' + data: '' + third_party_settings: { } +id: node.event.explore_item +targetEntityType: node +bundle: event +mode: explore_item +content: + flag_like: + settings: { } + third_party_settings: { } + weight: 10 + region: content + links: + settings: { } + third_party_settings: { } + weight: 0 + region: content + published_at: + type: timestamp + label: hidden + settings: + date_format: custom + custom_date_format: m/d/y + timezone: '' + tooltip: + date_format: '' + custom_date_format: '' + time_diff: + enabled: false + future_format: '@interval hence' + past_format: '@interval ago' + granularity: 2 + refresh: 60 + third_party_settings: + template_suggestion: + template_suggestion: '' + weight: 2 + region: content + read_more: + settings: { } + third_party_settings: { } + weight: 2 + region: content +hidden: + abstract: true + featured: true + field_attachment: true + field_comments: true + field_event_agenda: true + field_event_contact_email: true + field_event_coordinates: true + field_event_date: true + field_event_logo: true + field_event_online_location: true + field_event_web_url: true + field_keywords: true + field_location: true + field_organisation: true + field_organisation_type: true + field_paragraphs_body: true + field_scope: true + field_shared_in: true + field_short_title: true + field_site_featured: true + field_state: true + field_topic: true + langcode: true + og_audience: true + pinned_in: true + private_message_link: true + report: true + search_api_excerpt: true + share_link: true + spatial_coverage: true + visit_count: true diff --git a/config/sync/core.entity_view_display.node.news.explore_item.yml b/config/sync/core.entity_view_display.node.news.explore_item.yml new file mode 100644 index 0000000000000000000000000000000000000000..a8bacc429de19215f27910f651961b82486f96b2 --- /dev/null +++ b/config/sync/core.entity_view_display.node.news.explore_item.yml @@ -0,0 +1,224 @@ +uuid: 157e0061-8b99-4691-b056-150a69ea8489 +langcode: en +status: true +dependencies: + config: + - core.entity_view_mode.node.explore_item + - field.field.node.news.abstract + - field.field.node.news.field_attachment + - field.field.node.news.field_comments + - field.field.node.news.field_keywords + - field.field.node.news.field_news_headline + - field.field.node.news.field_news_logo + - field.field.node.news.field_news_referenced_solution + - field.field.node.news.field_news_source_url + - field.field.node.news.field_paragraphs_body + - field.field.node.news.field_shared_in + - field.field.node.news.field_site_featured + - field.field.node.news.field_state + - field.field.node.news.field_topic + - field.field.node.news.og_audience + - field.field.node.news.spatial_coverage + - node.type.news + module: + - field_group + - layout_builder + - layout_discovery + - template_suggestion + - user +third_party_settings: + field_group: + group_references: + children: + - field_news_source_url + label: References + parent_name: '' + region: hidden + weight: 4 + format_type: html_element + format_settings: + classes: '' + id: '' + element: div + show_label: true + label_element: h3 + attributes: '' + effect: none + speed: fast + layout_builder: + enabled: true + allow_custom: false + sections: + - + layout_id: layout_onecol + layout_settings: + label: '' + context_mapping: { } + components: + 853719f6-62e6-4f7c-bbb0-88721c6ebba5: + uuid: 853719f6-62e6-4f7c-bbb0-88721c6ebba5 + region: content + configuration: + id: 'field_block:node:news:published_at' + label_display: '0' + context_mapping: + entity: layout_builder.entity + formatter: + type: timestamp + label: hidden + settings: + date_format: custom + custom_date_format: d/m/Y + timezone: '' + tooltip: + date_format: '' + custom_date_format: '' + time_diff: + enabled: false + future_format: '@interval hence' + past_format: '@interval ago' + granularity: 2 + refresh: 60 + third_party_settings: + template_suggestion: + template_suggestion: '' + weight: -7 + additional: + component_attributes: + block_attributes: + id: '' + class: date + style: '' + data: '' + block_title_attributes: + id: '' + class: '' + style: '' + data: '' + block_content_attributes: + id: '' + class: '' + style: '' + data: '' + 10c28c1a-03f9-4ac8-a5b8-ed68b2dd4c58: + uuid: 10c28c1a-03f9-4ac8-a5b8-ed68b2dd4c58 + region: content + configuration: + id: 'field_block:node:news:abstract' + label: Abstract + label_display: '0' + provider: layout_builder + context_mapping: + entity: layout_builder.entity + view_mode: view_mode + formatter: + type: field_fallback_formatter + label: hidden + settings: + main_field_formatter_id: string + main_field_formatter_settings: + link_to_entity: false + fallback_field_id: field_paragraphs_body + fallback_field_formatter_id: filtered_entity_reference_bundles + fallback_field_formatter_settings: + view_mode: tile + filtered_entity_bundles: + simple_paragraph: simple_paragraph + text: text + trim_length: 200 + trim_chars: ... + third_party_settings: + template_suggestion: + template_suggestion: '' + weight: -9 + additional: + component_attributes: + block_attributes: + id: '' + class: explore-item__description + style: '' + data: '' + block_title_attributes: + id: '' + class: '' + style: '' + data: '' + block_content_attributes: + id: '' + class: '' + style: '' + data: '' + e9a340ab-04be-4e59-9b31-6bc58f3b1473: + uuid: e9a340ab-04be-4e59-9b31-6bc58f3b1473 + region: content + configuration: + id: 'extra_field_block:node:news:read_more' + label: 'Read more' + label_display: '0' + provider: layout_builder + context_mapping: + entity: layout_builder.entity + weight: -6 + additional: { } + third_party_settings: { } +id: node.news.explore_item +targetEntityType: node +bundle: news +mode: explore_item +content: + flag_like: + settings: { } + third_party_settings: { } + weight: 10 + region: content + published_at: + type: timestamp + label: hidden + settings: + date_format: custom + custom_date_format: m/d/y + timezone: '' + tooltip: + date_format: '' + custom_date_format: '' + time_diff: + enabled: false + future_format: '@interval hence' + past_format: '@interval ago' + granularity: 2 + refresh: 60 + third_party_settings: + template_suggestion: + template_suggestion: '' + weight: 1 + region: content + read_more: + settings: { } + third_party_settings: { } + weight: 2 + region: content +hidden: + abstract: true + featured: true + field_attachment: true + field_comments: true + field_keywords: true + field_news_headline: true + field_news_logo: true + field_news_referenced_solution: true + field_news_source_url: true + field_paragraphs_body: true + field_shared_in: true + field_site_featured: true + field_state: true + field_topic: true + langcode: true + links: true + og_audience: true + pinned_in: true + private_message_link: true + report: true + search_api_excerpt: true + share_link: true + spatial_coverage: true + visit_count: true diff --git a/config/sync/core.extension.yml b/config/sync/core.extension.yml index a85db61169324b8b0b62325749dc03d24eadb6fe..d7201f71dd28e7e91439a7fd77e488a14c3f46ba 100644 --- a/config/sync/core.extension.yml +++ b/config/sync/core.extension.yml @@ -6,6 +6,7 @@ module: allowed_formats: 0 antibot: 0 autologout: 0 + better_exposed_filters: 0 blazy: 0 block: 0 block_field: 0 @@ -261,7 +262,6 @@ module: user: 0 ventuno_helper: 0 view_unpublished: 0 - views_autosubmit: 0 views_block_area: 0 views_bulk_operations: 0 views_data_export: 0 diff --git a/config/sync/field.field.node.collection.group_moderation.yml b/config/sync/field.field.node.collection.group_moderation.yml index 988a6fcb177b0a1b4e1b02d667e46cba0b645f8a..e4e7f4a8c50a78fdfcf9184e85678813c18fad00 100644 --- a/config/sync/field.field.node.collection.group_moderation.yml +++ b/config/sync/field.field.node.collection.group_moderation.yml @@ -5,11 +5,6 @@ dependencies: config: - field.storage.node.group_moderation - node.type.collection - module: - - tmgmt_content -third_party_settings: - tmgmt_content: - excluded: false id: node.collection.group_moderation field_name: group_moderation entity_type: node @@ -17,10 +12,8 @@ bundle: collection label: Moderation description: 'If checked, community content items (news, events, discussions and documents) are pre-moderated: they have to be validated by the moderators of the collection before they will be published.' required: false -translatable: false -default_value: - - - value: 1 +translatable: true +default_value: { } default_value_callback: '' settings: on_label: Moderated diff --git a/config/sync/field.field.node.solution.group_moderation.yml b/config/sync/field.field.node.solution.group_moderation.yml index 45832c7b5bb6f68934e1c46901a8c3e0bd3e7d41..c39f2fa37b82215ecf6b41f8501c4a884a8a1aa7 100644 --- a/config/sync/field.field.node.solution.group_moderation.yml +++ b/config/sync/field.field.node.solution.group_moderation.yml @@ -5,11 +5,6 @@ dependencies: config: - field.storage.node.group_moderation - node.type.solution - module: - - tmgmt_content -third_party_settings: - tmgmt_content: - excluded: false id: node.solution.group_moderation field_name: group_moderation entity_type: node @@ -17,10 +12,10 @@ bundle: solution label: Moderation description: 'If checked, community content items (news, events, discussions and documents) are pre-moderated: they have to be validated by the moderators of the solution before they will be published.' required: false -translatable: false +translatable: true default_value: - - value: 1 + value: 0 default_value_callback: '' settings: on_label: Moderated diff --git a/config/sync/field.storage.node.group_moderation.yml b/config/sync/field.storage.node.group_moderation.yml index 5547d02247cc2254d67e0f58107e48b23209838a..3e42852fc380930c95a4adab36241a7fa07d36f9 100644 --- a/config/sync/field.storage.node.group_moderation.yml +++ b/config/sync/field.storage.node.group_moderation.yml @@ -3,7 +3,11 @@ langcode: en status: true dependencies: module: + - field_permissions - node +third_party_settings: + field_permissions: + permission_type: public id: node.group_moderation field_name: group_moderation entity_type: node diff --git a/config/sync/views.view.search.yml b/config/sync/views.view.search.yml index a076d552d9a0e5ba1c815b9eecde692871267a7d..bb376a9e2122756bfeec66b5f14b6e10c102d0b8 100644 --- a/config/sync/views.view.search.yml +++ b/config/sync/views.view.search.yml @@ -5,9 +5,9 @@ dependencies: config: - search_api.index.published module: + - better_exposed_filters - search_api - search_api_spellcheck - - views_autosubmit - views_block_area _core: default_config_hash: IZ_1De9xX5-8975-JeHxZJ0f_58o9R3nM9pxnxboN_k @@ -119,7 +119,7 @@ display: offset_label: Offset quantity: 9 exposed_form: - type: autosubmit + type: bef options: submit_button: 'Search site-wide' reset_button: false @@ -128,8 +128,42 @@ display: expose_sort_order: false sort_asc_label: Asc sort_desc_label: Desc - autosubmit_hide: true - timeout: 500 + text_input_required: 'Select any filter and click on Apply to see results' + text_input_required_format: content_editor + bef: + general: + autosubmit: true + autosubmit_exclude_textfield: true + autosubmit_textfield_delay: 500 + autosubmit_textfield_minimum_length: 3 + autosubmit_hide: true + input_required: false + allow_secondary: false + secondary_label: 'Advanced options' + secondary_open: false + reset_button_always_show: false + sort: + plugin_id: default + advanced: + combine: false + combine_rewrite: '' + reset: false + reset_label: '' + collapsible: false + collapsible_label: 'Sort options' + is_secondary: false + filter: + search_api_fulltext: + plugin_id: default + advanced: + placeholder_text: '' + rewrite: + filter_rewrite_values: '' + filter_rewrite_values_key: false + collapsible: false + collapsible_disable_automatic_open: false + is_secondary: false + hide_label: false access: type: none options: { } diff --git a/config/sync/views.view.search_oss_catalogue.yml b/config/sync/views.view.search_oss_catalogue.yml index 4d04d897ae6cc52bd6ded4029c119a0cbb9ceb14..53b43deb8991e6ebc7567622a6734b238faec92b 100644 --- a/config/sync/views.view.search_oss_catalogue.yml +++ b/config/sync/views.view.search_oss_catalogue.yml @@ -5,9 +5,9 @@ dependencies: config: - search_api.index.oss_catalogue module: + - better_exposed_filters - search_api - search_api_spellcheck - - views_autosubmit - views_block_area id: search_oss_catalogue label: 'Search oss catalogue' @@ -103,7 +103,7 @@ display: offset_label: Offset quantity: 9 exposed_form: - type: autosubmit + type: bef options: submit_button: 'Search OSS catalogue' reset_button: false @@ -112,8 +112,42 @@ display: expose_sort_order: false sort_asc_label: Asc sort_desc_label: Desc - autosubmit_hide: true - timeout: 500 + text_input_required: 'Select any filter and click on Apply to see results' + text_input_required_format: content_editor + bef: + general: + autosubmit: true + autosubmit_exclude_textfield: true + autosubmit_textfield_delay: 500 + autosubmit_textfield_minimum_length: 3 + autosubmit_hide: true + input_required: false + allow_secondary: false + secondary_label: 'Advanced options' + secondary_open: false + reset_button_always_show: false + sort: + plugin_id: default + advanced: + combine: false + combine_rewrite: '' + reset: false + reset_label: '' + collapsible: false + collapsible_label: 'Sort options' + is_secondary: false + filter: + search_api_fulltext: + plugin_id: default + advanced: + placeholder_text: '' + rewrite: + filter_rewrite_values: '' + filter_rewrite_values_key: false + collapsible: false + collapsible_disable_automatic_open: false + is_secondary: false + hide_label: false access: type: none options: { } diff --git a/resources/patch/php/drupal/search_api_autocomplete/3314418.patch b/resources/patch/php/drupal/search_api_autocomplete/3314418.patch deleted file mode 100644 index ec4efbcb3b9c6be538144bfac0994fef631c0ead..0000000000000000000000000000000000000000 --- a/resources/patch/php/drupal/search_api_autocomplete/3314418.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff --git a/js/search_api_autocomplete.js b/js/search_api_autocomplete.js -index b7237e74ec5cbaf370671ba0863aed6dd88b9869..318a33be8d18b2a131dfbbd03605ebe17f5ea3a3 100644 ---- a/js/search_api_autocomplete.js -+++ b/js/search_api_autocomplete.js -@@ -58,6 +58,17 @@ - // Find all our fields with autocomplete settings. - const s = '.ui-autocomplete-input[data-search-api-autocomplete-search]'; - $(once('search-api-autocomplete', s, context)).each(function foreach() { -+ // In case the Views Autosubmit module is installed, clear the -+ // auto-submit timeout. -+ if (Drupal.behaviors.ViewsAutoSubmit -+ && Drupal.behaviors.ViewsAutoSubmit.alterTextInputTimeout) { -+ var old = Drupal.behaviors.ViewsAutoSubmit.alterTextInputTimeout; -+ Drupal.behaviors.ViewsAutoSubmit.alterTextInputTimeout = function(timeoutID) { -+ old(timeoutID); -+ clearTimeout(timeoutID); -+ } -+ } -+ - const uiAutocomplete = $(this).data('ui-autocomplete'); - if (!uiAutocomplete) { - return; diff --git a/resources/patch/php/drupal/views_autosubmit/10.diff b/resources/patch/php/drupal/views_autosubmit/10.diff deleted file mode 100644 index 93cce005c7d48b00b0e38ae8821d2b90ff546ab6..0000000000000000000000000000000000000000 --- a/resources/patch/php/drupal/views_autosubmit/10.diff +++ /dev/null @@ -1,25 +0,0 @@ -diff --git a/js/views_autosubmit.js b/js/views_autosubmit.js -index 266e3861b4c9229184a5ffd27bd7d9ba99952f12..dfe1674c07e79b78e06ff8023e876d5d2fffb24a 100644 ---- a/js/views_autosubmit.js -+++ b/js/views_autosubmit.js -@@ -5,6 +5,12 @@ - (function ($, drupalSettings) { - - Drupal.behaviors.ViewsAutoSubmit = { -+ /** -+ + * Allow to alter text input element timeout. -+ + * -+ + * @return void -+ + */ -+ alterTextInputTimeout: function(timeoutID) {}, - attach: function(context) { - // 'this' references the form element. - function triggerSubmit (e) { -@@ -58,6 +64,7 @@ Drupal.behaviors.ViewsAutoSubmit = { - .keyup(function(e) { - if ($.inArray(e.keyCode, discardKeyCode) === -1) { - timeoutID = setTimeout($.proxy(triggerSubmit, this.form), drupalSettings.views_autosubmit.timeout); -+ Drupal.behaviors.ViewsAutoSubmit.alterTextInputTimeout(timeoutID); - } - }); - }); diff --git a/tests/features/authentication.feature b/tests/features/authentication.feature index 3c6da3942f256b101ef06a4726a4bc67b40ed623..2344c581cd5e85d801605eead7473a382c077374 100644 --- a/tests/features/authentication.feature +++ b/tests/features/authentication.feature @@ -33,6 +33,12 @@ Feature: User authentication | admin/legal-notice | | admin/legal-notice/add | | admin/people | + | admin/reporting/distribution-downloads | + | admin/reporting/export-user-list | + | admin/reporting/group-administrators/export | + | admin/reporting/solutions-by-licences | + | admin/reporting/solutions-by-type | + | admin/reporting/subscribers-report | | admin/structure | | admin/structure/compatibility-document | | admin/structure/compatibility-document/display | @@ -75,6 +81,16 @@ Feature: User authentication | propose/solution | | user/subscriptions | + Scenario Outline: Anonymous user cannot access restricted non-HTML URLs. + Given I am not logged in + When I go to "<path>" + Then the response status code should be 403 + + Examples: + | path | + | admin/reporting/distribution-downloads/csv | + | admin/reporting/subscribers-report/download | + Scenario Outline: Authenticated user can access pages they are authorized to Given I am logged in as a user with the "authenticated" role Then I visit "<path>" @@ -106,6 +122,12 @@ Feature: User authentication | admin/legal-notice | | admin/legal-notice/add | | admin/people | + | admin/reporting/distribution-downloads | + | admin/reporting/export-user-list | + | admin/reporting/group-administrators/export | + | admin/reporting/solutions-by-licences | + | admin/reporting/solutions-by-type | + | admin/reporting/subscribers-report | | admin/structure | | admin/structure/compatibility-document | | admin/structure/compatibility-document/display | @@ -153,6 +175,8 @@ Feature: User authentication Examples: | path | + | admin/reporting/distribution-downloads/csv | + | admin/reporting/subscribers-report/download | | admin/structure/webform | | admin/structure/webform/submissions/manage | @@ -168,6 +192,14 @@ Feature: User authentication | admin/legal-notice | | admin/legal-notice/add | | admin/people | + | admin/reporting/distribution-downloads | + | admin/reporting/distribution-downloads/csv | + | admin/reporting/export-user-list | + | admin/reporting/group-administrators/export | + | admin/reporting/messages-overview | + | admin/reporting/solutions-by-licences | + | admin/reporting/solutions-by-type | + | admin/reporting/subscribers-report | | admin/structure/compatibility-document | | admin/structure/webform | | admin/structure/webform/manage/assessment/results/submissions | @@ -248,6 +280,8 @@ Feature: User authentication | admin/content/media | | admin/legal-notice | | admin/legal-notice/add | + | admin/reporting/distribution-downloads | + | admin/reporting/distribution-downloads/csv | | admin/structure | | node/add | | node/add/collection | diff --git a/tests/features/homepage.feature b/tests/features/homepage.feature index dc92b339fb78abaa0b83cb799244504b137393fb..21431e39e37dd18d85ea1c0a7208b61b7438d703 100644 --- a/tests/features/homepage.feature +++ b/tests/features/homepage.feature @@ -268,11 +268,28 @@ Feature: Homepage | solution | Proton Global | 2019-07-05 10:00 | An inlined image:Text after image. | | solution | Cities of France | 2018-12-14 17:36 | There are many variations | | solution | Cities of Bulgaria | 2018-11-14 17:36 | Supports fields | + | news | Current biodiversity adapt | 2021-04-30T19:09:00Z | Biodiversity adapt abstract | + | news | Super-Alfvenic plasma flow | 2021-04-29T10:18:00Z | Magnetic draping | + | news | H-rich Wolf-Rayet star | 2021-03-29T10:18:00Z | Polarimetric analysis Watch our video | + | news | Spatial construction | 2021-02-26T13:15:00Z | Global land use history confirms that empowering the environmental stewardship of Indigenous peoples and local communities will be critical to conserving biodiversity across the planet. | + | news | Environmental tests | 2021-01-27T16:12:00Z | With rare exceptions current biodiversity losses are caused not by human conversion or degradation of untouched ecosystems but rather by the appropriation colonization and intensification of use in... | + | news | Easier transformations | 2021-01-09T10:18:00Z | Archaeological evidence shows that by 10000 BCE all societies employed ecologically transformative land use practices including burning hunting species propagation domestication cultivation have left... | + | event | SXR plasma supply | 2021-05-30T10:18:00Z | | + | event | Dark material | 2021-04-30T10:18:00Z | The presence of a relatively large magnetic field is acting as a quenching agent. The authors say the observations confirm their hypothesis that there is a strong active magnetic field interacting... | + | event | Thick-target news | 2021-04-27T19:05:00Z | Abstract: Evaporation | + | event | Cooling losses | 2021-03-20T10:18:00Z | Single-loop | + | event | Source of SXR plasma supply | 2021-02-27T13:15:00Z | Fast electrons | + | event | Plasma supply | 2021-01-30T10:18:00Z | Fast electrons | + | event | Stars material | 2021-01-10T10:18:00Z | Colossal material! Read our greypaper. | And I should see the button "Solutions" in the "Explore block" And I should see the button "Collections" in the "Explore block" + And I should see the button "News" in the "Explore block" + And I should see the button "Events" in the "Explore block" And I should see the link "See more solutions" in the "Explore block" And I should see the link "See more collections" in the "Explore block" + And I should see the link "See more news" in the "Explore block" + And I should see the link "See more events" in the "Explore block" And the page should be cacheable And the page should not be cached @@ -288,6 +305,16 @@ Feature: Homepage Then I should be on the advanced search page And I should see the following facet summary "Collections" + When I am on the homepage + And I click "See more news" + Then I should be on the advanced search page + And I should see the following facet summary "News" + + When I am on the homepage + And I click "See more events" + Then I should be on the advanced search page + And I should see the following facet summary "Events" + # Check archived items. Given collection content: | title | state | description | creation date | diff --git a/tests/features/joinup_core/reporting.feature b/tests/features/joinup_core/reporting.feature new file mode 100644 index 0000000000000000000000000000000000000000..83943356586b7cf5033f53f9e3afcc108dfd1f83 --- /dev/null +++ b/tests/features/joinup_core/reporting.feature @@ -0,0 +1,112 @@ +@api @group-e +Feature: + As a site moderator/administrator + When I'm logged in + I want to be able to access the Interoperable Europe Portal reporting section. + + Scenario Outline: Test the general access to Reporting section. + Given I am logged in as a user with the <role> role + When I am on "<url>" + Then I should get a <code> HTTP response + + Examples: + | url | role | code | + | /admin/reporting | authenticated | 403 | + | /admin/reporting | moderator | 200 | + | /admin/reporting/actions-log | authenticated | 403 | + | /admin/reporting/actions-log | moderator | 200 | + | /admin/reporting/distribution-downloads | authenticated | 403 | + | /admin/reporting/distribution-downloads | moderator | 200 | + | /admin/reporting/distribution-downloads/csv | authenticated | 403 | + | /admin/reporting/distribution-downloads/csv | moderator | 200 | + | /admin/reporting/export-user-list | authenticated | 403 | + | /admin/reporting/export-user-list | moderator | 200 | + | /admin/reporting/group-administrators/export | authenticated | 403 | + | /admin/reporting/group-administrators/export | moderator | 200 | + | /admin/reporting/legal-notice-report | authenticated | 403 | + | /admin/reporting/legal-notice-report | moderator | 200 | + | /admin/reporting/messages-overview | authenticated | 403 | + | /admin/reporting/messages-overview | moderator | 200 | + | /admin/reporting/solutions-by-type | authenticated | 403 | + | /admin/reporting/solutions-by-type | moderator | 200 | + | /admin/reporting/solutions-by-licences | authenticated | 403 | + | /admin/reporting/solutions-by-licences | moderator | 200 | + | /admin/reporting/statistics-per-group | authenticated | 403 | + | /admin/reporting/statistics-per-group | moderator | 200 | + | /admin/reporting/subscribers-report | authenticated | 403 | + | /admin/reporting/subscribers-report | moderator | 200 | + | /admin/reporting/subscribers-report/download | authenticated | 403 | + | /admin/reporting/subscribers-report/download | moderator | 200 | + + Scenario: Links should be visible on the reporting page for a moderator. + Given I am logged in as a user with the moderator role + And I am on "/admin/reporting" + Then I should see the following links: + | Group administrators and facilitators | + | Export user list | + | Site-wide business log | + | Solutions by solution type | + | Solutions by licences | + | Statistics per group | + | Subscribers report | + | Legal notice report | + | Messages overview | + | Distribution downloads | + + # This scenario is a light test to avoid regressions. + Scenario: Moderators can access the list of published solutions and filter them by dates and type. + Given collection content: + | title | + | Monday's Artificial | + | Restless Burst | + Given solution content: + | title | collection | creation date | modification date | solution type | + | Worthy Puppet | Monday's Artificial | 2003-01-31T23:00 | 2015-12-07T13:57 | Interoperability Specification, Logging Service | + | Long Artificial | Restless Burst | 2012-09-14T00:00 | 2012-12-04T16:19 | Networking Infrastructure Enablers | + | Beta Frozen | Restless Burst | 2017-10-15T14:54 | 2017-11-24T12:43 | Data Owner | + + Given I am logged in as a moderator + And I click "Reporting" in the "Administration toolbar" region + And I click "Solutions by solution type" + Then I should see the heading "Moderator: Solutions by type" + And I should see the link "Worthy Puppet" + And I should see the link "Long Artificial" + And I should see the link "Beta Frozen" + # Verify that the dates are shown in a human readable format. + # @see: https://citnet.tech.ec.europa.eu/CITnet/jira/browse/ISAICP-4924 + And I should see the following lines of text: + | Fri, 31/01/2003 - 23:00 | + | Mon, 07/12/2015 - 13:57 | + | Fri, 14/09/2012 - 00:00 | + | Tue, 04/12/2012 - 16:19 | + | Sun, 15/10/2017 - 14:54 | + | Fri, 24/11/2017 - 12:43 | + # Verify that the "Authored on" facet is in place. + And I should see the link "January 2003" + And I should see the link "September 2012" + And I should see the link "October 2017" + # Same for the "Changed" facet. + And I should see the link "December 2012" + And I should see the link "December 2015" + And I should see the link "November 2017" + # Same for the "Solution type" facet. + And I should see the link "Interoperability Specification" in the "Content" region + And I should see the link "Logging Service" in the "Content" region + And I should see the link "Networking Infrastructure Enablers" in the "Content" region + And I should see the link "Data Owner" in the "Content" region + # Verify that only solutions are shown. + But I should not see the text "Monday's Artificial" + And I should not see the text "Restless Burst" + # Verify that the CSV link is present. + # Note: the link is rendered as icon in a real browser. + And I should see the link "Download CSV" + When I click "Download CSV" + Then I should get a valid web page + + # Verify that access to the CSV endpoint is forbidden for anonymous and normal users. + When I am an anonymous user + And I am on "/admin/reporting/solutions-by-type/csv?_format=csv" + Then I should get an access denied error + When I am logged in as an "authenticated user" + And I am on "/admin/reporting/solutions-by-type/csv?_format=csv" + Then I should get an access denied error diff --git a/tests/features/joinup_discussion/discussion.moderation.feature b/tests/features/joinup_discussion/discussion.moderation.feature index d38e4483bdbcd09cfc294bbf10bda49819f244b4..4411e787cc75ea4e0c5d299c02a78940056bb416 100644 --- a/tests/features/joinup_discussion/discussion.moderation.feature +++ b/tests/features/joinup_discussion/discussion.moderation.feature @@ -10,8 +10,8 @@ Feature: Discussion moderation | Gabe Rogers | | Brigham Salvage | And collection content: - | title | description | logo | content_creation | state | group_moderation | - | DIY collection | Collection of "Do it yourself" projects. | logo.png | members | published | no | + | title | description | logo | content_creation | state | + | DIY collection | Collection of "Do it yourself" projects. | logo.png | members | published | And the following collection user membership: | collection | user | roles | | DIY collection | Gabe Rogers | member | diff --git a/tests/features/joinup_discussion/discussion.subscribe.feature b/tests/features/joinup_discussion/discussion.subscribe.feature index c65da875ed5bf58aafbd2acc0f414daffb31e665..56d372df5e777bfb8634c3fae5a8d753aa606012 100644 --- a/tests/features/joinup_discussion/discussion.subscribe.feature +++ b/tests/features/joinup_discussion/discussion.subscribe.feature @@ -6,8 +6,8 @@ Feature: Following discussions Background: Given collection content: - | title | state | group_moderation | - | Dairy products | published | no | + | title | state | + | Dairy products | published | And user: | Username | Dr. Hans Zarkov | | E-mail | hans@example.com | @@ -79,18 +79,18 @@ Feature: Following discussions # Subscribers are receiving the notifications. And the following email should have been sent: | recipient_mail | dale@example.com | - | subject | Interoperable Europe Portal: User Flash Gordon posted a comment in discussion "Rare Butter" | + | subject | Interoperable Europe Portal: User Flash Gordon posted a comment in discussion "Rare Butter" | | body | Flash Gordon has posted a comment on discussion "Rare Butter" in "Dairy products" collection. | # The user 'debater' is also a discussion subscriber but because he's the # author of the comment, he will not receive the notification. And the following email should not have been sent: | recipient_mail | flash@example.com | - | subject | Interoperable Europe Portal: User Flash Gordon posted a comment in discussion "Rare Butter" | + | subject | Interoperable Europe Portal: User Flash Gordon posted a comment in discussion "Rare Butter" | | body | Flash Gordon has posted a comment on discussion "Rare Butter" in "Dairy products" collection. | # Discussion author is receiving the notifications too. And the following email should have been sent: | recipient_mail | hans@example.com | - | subject | Interoperable Europe Portal: User Flash Gordon posted a comment in discussion "Rare Butter" | + | subject | Interoperable Europe Portal: User Flash Gordon posted a comment in discussion "Rare Butter" | | body | Flash Gordon has posted a comment on discussion "Rare Butter" in "Dairy products" collection. | # No E-mail notification is sent when the discussion is updated but no @@ -107,18 +107,18 @@ Feature: Following discussions And I fill in "Content" with "The old content was wrong." And I press "Update" Then the following email should have been sent: - | recipient_mail | dale@example.com | + | recipient_mail | dale@example.com | | subject | Interoperable Europe Portal: The discussion "Rare Butter" was updated in the space of "Dairy products" | - | body | The discussion "Rare Butter" was updated in the "Dairy products" collection. | + | body | The discussion "Rare Butter" was updated in the "Dairy products" collection. | And the following email should have been sent: - | recipient_mail | flash@example.com | + | recipient_mail | flash@example.com | | subject | Interoperable Europe Portal: The discussion "Rare Butter" was updated in the space of "Dairy products" | - | body | The discussion "Rare Butter" was updated in the "Dairy products" collection. | + | body | The discussion "Rare Butter" was updated in the "Dairy products" collection. | # The author of the discussion update doesn't receive any notification. But the following email should not have been sent: - | recipient_mail | hans@example.com | + | recipient_mail | hans@example.com | | subject | Interoperable Europe Portal: The discussion "Rare Butter" was updated in the space of "Dairy products" | - | body | The discussion "Rare Butter" was updated in the "Dairy products" collection. | + | body | The discussion "Rare Butter" was updated in the "Dairy products" collection. | # Check that no other mails have been unexpectedly sent. Then 2 e-mails should have been sent @@ -145,7 +145,7 @@ Feature: Following discussions # sent to the content author. But the following email should have been sent: | recipient_mail | hans@example.com | - | subject | Interoperable Europe Portal: Content has been updated | + | subject | Interoperable Europe Portal: Content has been updated | | body | the Moderator, has requested you to modify the discussion - "Rare Butter" | And 1 e-mail should have been sent @@ -154,21 +154,21 @@ Feature: Following discussions And I press "Delete" Then the following email should have been sent: - | recipient_mail | dale@example.com | - | subject | Interoperable Europe Portal: The discussion "Rare Butter" was deleted in the space of "Dairy products" | - | body | for your information, the discussion "Rare Butter" was deleted from the "Dairy products" collection. | + | recipient_mail | dale@example.com | + | subject | Interoperable Europe Portal: The discussion "Rare Butter" was deleted in the space of "Dairy products" | + | body | for your information, the discussion "Rare Butter" was deleted from the "Dairy products" collection. | And the following email should have been sent: - | recipient_mail | flash@example.com | - | subject | Interoperable Europe Portal: The discussion "Rare Butter" was deleted in the space of "Dairy products" | - | body | for your information, the discussion "Rare Butter" was deleted from the "Dairy products" collection. | + | recipient_mail | flash@example.com | + | subject | Interoperable Europe Portal: The discussion "Rare Butter" was deleted in the space of "Dairy products" | + | body | for your information, the discussion "Rare Butter" was deleted from the "Dairy products" collection. | And the following email should have been sent: - | recipient_mail | hans@example.com | - | subject | Interoperable Europe Portal: The discussion "Rare Butter" was deleted in the space of "Dairy products" | - | body | for your information, the discussion "Rare Butter" was deleted from the "Dairy products" collection. | + | recipient_mail | hans@example.com | + | subject | Interoperable Europe Portal: The discussion "Rare Butter" was deleted in the space of "Dairy products" | + | body | for your information, the discussion "Rare Butter" was deleted from the "Dairy products" collection. | And the following email should not have been sent: - | recipient_mail | ming@example.com | - | subject | Interoperable Europe Portal: The discussion "Rare Butter" was deleted in the space of "Dairy products" | - | body | for your information, the discussion "Rare Butter" was deleted from the "Dairy products" collection. | + | recipient_mail | ming@example.com | + | subject | Interoperable Europe Portal: The discussion "Rare Butter" was deleted in the space of "Dairy products" | + | body | for your information, the discussion "Rare Butter" was deleted from the "Dairy products" collection. | # Now check the notifications sent for a published discussion. Given discussion content: @@ -185,23 +185,23 @@ Feature: Following discussions And I press "Delete" Then the following email should have been sent: - | recipient_mail | dale@example.com | - | subject | Interoperable Europe Portal: The discussion "Rare feta" was deleted in the space of "Dairy products" | - | body | for your information, the discussion "Rare feta" was deleted from the "Dairy products" collection. | + | recipient_mail | dale@example.com | + | subject | Interoperable Europe Portal: The discussion "Rare feta" was deleted in the space of "Dairy products" | + | body | for your information, the discussion "Rare feta" was deleted from the "Dairy products" collection. | # Discussion author is receiving the notifications too. And the following email should have been sent: - | recipient_mail | hans@example.com | - | subject | Interoperable Europe Portal: The discussion "Rare feta" was deleted in the space of "Dairy products" | - | body | for your information, the discussion "Rare feta" was deleted from the "Dairy products" collection. | + | recipient_mail | hans@example.com | + | subject | Interoperable Europe Portal: The discussion "Rare feta" was deleted in the space of "Dairy products" | + | body | for your information, the discussion "Rare feta" was deleted from the "Dairy products" collection. | # The user 'facilitator' is also a discussion subscriber but because she's # the person who has deleted the comment, she will not receive the # notification. But the following email should not have been sent: - | recipient_mail | ming@example.com | - | subject | Interoperable Europe Portal: The discussion "Rare feta" was deleted in the space of "Dairy products" | - | body | for your information, the discussion "Rare feta" was deleted from the "Dairy products" collection. | + | recipient_mail | ming@example.com | + | subject | Interoperable Europe Portal: The discussion "Rare feta" was deleted in the space of "Dairy products" | + | body | for your information, the discussion "Rare feta" was deleted from the "Dairy products" collection. | # Flash Gordon is not subscribed. He should not retrieve the message. And the following email should not have been sent: - | recipient_mail | flash@example.com | - | subject | Interoperable Europe Portal: The discussion "Rare feta" was deleted in the space of "Dairy products" | - | body | for your information, the discussion "Rare feta" was deleted from the "Dairy products" collection. | + | recipient_mail | flash@example.com | + | subject | Interoperable Europe Portal: The discussion "Rare feta" was deleted in the space of "Dairy products" | + | body | for your information, the discussion "Rare feta" was deleted from the "Dairy products" collection. | diff --git a/tests/features/joinup_reports/reporting.feature b/tests/features/joinup_reports/reporting.feature deleted file mode 100644 index eab5720f9ebde8fc33fd69a1d57acf2c0b25db0c..0000000000000000000000000000000000000000 --- a/tests/features/joinup_reports/reporting.feature +++ /dev/null @@ -1,82 +0,0 @@ -@api @group-e -Feature: - As a site moderator/administrator - When I'm logged in - I want to be able to access the Interoperable Europe Portal reporting section. - - Scenario Outline: Test the general access to Reporting section. - Given I am logged in as a user with the <role> role - When I am on "<url>" - Then I should get a <code> HTTP response - - Examples: - | url | role | code | - | /admin/reporting | authenticated | 403 | - | /admin/reporting | moderator | 200 | - | /admin/reporting/actions-log | authenticated | 403 | - | /admin/reporting/actions-log | moderator | 200 | - | /admin/reporting/distribution-downloads | authenticated | 403 | - | /admin/reporting/distribution-downloads | administrator | 403 | - | /admin/reporting/distribution-downloads | moderator | 200 | - | /admin/reporting/distribution-downloads | developer | 200 | - | /admin/reporting/distribution-downloads/csv | authenticated | 403 | - | /admin/reporting/distribution-downloads/csv | administrator | 403 | - | /admin/reporting/distribution-downloads/csv | moderator | 200 | - | /admin/reporting/distribution-downloads/csv | developer | 200 | - | /admin/reporting/export-user-list | authenticated | 403 | - | /admin/reporting/export-user-list | moderator | 200 | - | /admin/reporting/group-administrators | authenticated | 403 | - | /admin/reporting/group-administrators | moderator | 200 | - | /admin/reporting/legal-notice-report | authenticated | 403 | - | /admin/reporting/legal-notice-report | moderator | 200 | - | /admin/reporting/messages-overview | authenticated | 403 | - | /admin/reporting/messages-overview | moderator | 200 | - | /admin/reporting/solutions-by-type | authenticated | 403 | - | /admin/reporting/solutions-by-type | moderator | 200 | - | /admin/reporting/solutions-by-licences | authenticated | 403 | - | /admin/reporting/solutions-by-licences | moderator | 200 | - | /admin/reporting/statistics-per-group | authenticated | 403 | - | /admin/reporting/statistics-per-group | moderator | 200 | - | /admin/reporting/subscribers-report | authenticated | 403 | - | /admin/reporting/subscribers-report | moderator | 200 | - | /admin/reporting/subscribers-report/download | authenticated | 403 | - | /admin/reporting/subscribers-report/download | moderator | 200 | - - Scenario Outline: Anonymous user cannot access restricted pages - Given I am not logged in - When I go to "<path>" - Then I should see the heading "Sign in to continue" - - Examples: - | path | - | admin/reporting/distribution-downloads | - | admin/reporting/export-user-list | - | admin/reporting/group-administrators | - | admin/reporting/solutions-by-licences | - | admin/reporting/solutions-by-type | - | admin/reporting/subscribers-report | - - Scenario Outline: Anonymous user cannot access restricted non-HTML URLs. - Given I am not logged in - When I go to "<path>" - Then the response status code should be 403 - - Examples: - | path | - | admin/reporting/distribution-downloads/csv | - | admin/reporting/subscribers-report/download | - - Scenario: Links should be visible on the reporting page for a moderator. - Given I am logged in as a user with the moderator role - And I am on "/admin/reporting" - Then I should see the following links: - | Group administrators and facilitators | - | Export user list | - | Site-wide business log | - | Solutions by solution type | - | Solutions by licences | - | Statistics per group | - | Subscribers report | - | Legal notice report | - | Messages overview | - | Distribution downloads | diff --git a/tests/features/joinup_reports/solutions_by_type.feature b/tests/features/joinup_reports/solutions_by_type.feature deleted file mode 100644 index f9baad2e705de82eea7e30a92428bb213d2b4b37..0000000000000000000000000000000000000000 --- a/tests/features/joinup_reports/solutions_by_type.feature +++ /dev/null @@ -1,63 +0,0 @@ -@api @group-a -Feature: Solutions by type report - As a moderator of the site - In order to be able to manage the website - I need to be able to list the solutions by type. - - # This scenario is a light test to avoid regressions. - Scenario: Moderators can access the list of published solutions and filter them by dates and type. - Given collection content: - | title | - | Monday's Artificial | - | Restless Burst | - Given solution content: - | title | collection | creation date | modification date | solution type | - | Worthy Puppet | Monday's Artificial | 2003-01-31T23:00 | 2015-12-07T13:57 | Interoperability Specification, Logging Service | - | Long Artificial | Restless Burst | 2012-09-14T00:00 | 2012-12-04T16:19 | Networking Infrastructure Enablers | - | Beta Frozen | Restless Burst | 2017-10-15T14:54 | 2017-11-24T12:43 | Data Owner | - - Given I am logged in as a moderator - And I click "Reporting" in the "Administration toolbar" region - And I click "Solutions by solution type" - Then I should see the heading "Moderator: Solutions by type" - And I should see the link "Worthy Puppet" - And I should see the link "Long Artificial" - And I should see the link "Beta Frozen" - # Verify that the dates are shown in a human readable format. - # @see: https://citnet.tech.ec.europa.eu/CITnet/jira/browse/ISAICP-4924 - And I should see the following lines of text: - | Fri, 31/01/2003 - 23:00 | - | Mon, 07/12/2015 - 13:57 | - | Fri, 14/09/2012 - 00:00 | - | Tue, 04/12/2012 - 16:19 | - | Sun, 15/10/2017 - 14:54 | - | Fri, 24/11/2017 - 12:43 | - # Verify that the "Authored on" facet is in place. - And I should see the link "January 2003" - And I should see the link "September 2012" - And I should see the link "October 2017" - # Same for the "Changed" facet. - And I should see the link "December 2012" - And I should see the link "December 2015" - And I should see the link "November 2017" - # Same for the "Solution type" facet. - And I should see the link "Interoperability Specification" in the "Content" region - And I should see the link "Logging Service" in the "Content" region - And I should see the link "Networking Infrastructure Enablers" in the "Content" region - And I should see the link "Data Owner" in the "Content" region - # Verify that only solutions are shown. - But I should not see the text "Monday's Artificial" - And I should not see the text "Restless Burst" - # Verify that the CSV link is present. - # Note: the link is rendered as icon in a real browser. - And I should see the link "Download CSV" - When I click "Download CSV" - Then I should get a valid web page - - # Verify that access to the CSV endpoint is forbidden for anonymous and normal users. - When I am an anonymous user - And I am on "/admin/reporting/solutions-by-type/csv?_format=csv" - Then I should get an access denied error - When I am logged in as an "authenticated user" - And I am on "/admin/reporting/solutions-by-type/csv?_format=csv" - Then I should get an access denied error diff --git a/tests/features/joinup_reports/solutions_by_licence.feature b/tests/features/moderator/solutions_by_licence.feature similarity index 100% rename from tests/features/joinup_reports/solutions_by_licence.feature rename to tests/features/moderator/solutions_by_licence.feature diff --git a/tests/features/paragraphs/video.feature b/tests/features/paragraphs/video.feature index 706f89fd96b8df37f2e5fff5bab2f797da998caf..b586ade076eb4b3a8871afacc3f1c56c10116580 100644 --- a/tests/features/paragraphs/video.feature +++ b/tests/features/paragraphs/video.feature @@ -81,30 +81,3 @@ Feature: Video paragraph tests. When I press "Delete" And I go to the "Video discussion" discussion And I should see the "iframe" element with the "src" attribute set to "/media/oembed?url=https%3A//www.youtube.com/watch%3Fv%3DdQw4w9WgXcQ" in the "Content" region - - @javascript - Scenario: Regression test for "cannot use the video component in layout editor of dashboards custom landing pages". - Given I am logged in as a "moderator" - When I am on the homepage - Then I open the account menu - And I click "Dashboard" - Then I should see the heading "Dashboard" - - Then I click "Custom landing pages" - And I click "Add custom landing page" - And the following field should be present "URL alias" - And I fill in the following: - | Title | Twelve Video Tables | - | Abstract | Twelve video tables abstract | - And I select "Data gathering and processing" from "Topic" - And I add a layout paragraph in the "Custom page body" form field with the following properties: - | layout | one column | - | Background theme | light | - | Extra classes | test-class | - And I click "Choose component" - And a modal should open - And I click "Video" - And I fill in "Remote video URL" with "https://www.youtube.com/watch?v=dQw4w9WgXcQ" - And I press "Save" in the "Modal buttons" region - And the modal should be closed - And I press "Publish" diff --git a/tests/features/solution/homepage.feature b/tests/features/solution/homepage.feature index f0a98f3ebe70033a17a028e590a06075a57d4b6d..b4c6fae8590dce3a724af539033982f876a3548f 100644 --- a/tests/features/solution/homepage.feature +++ b/tests/features/solution/homepage.feature @@ -42,7 +42,7 @@ Feature: Solution homepage | Release date | | 21/12/2022 | | Only facilitators and authors can create content. | - | Moderated | + | Non moderated | Scenario: Custom pages should not be visible on the solution homepage Given solution content: diff --git a/tests/features/user/developer.feature b/tests/features/user/developer.feature index f4e47f222146684ebe672747efe9a03221a97112..74f9b7938411e4754942151ee09deba837df2507 100644 --- a/tests/features/user/developer.feature +++ b/tests/features/user/developer.feature @@ -19,6 +19,8 @@ Feature: Variety tests for the developer role. | /admin/content/media | | /admin/legal-notice | | /admin/config/system/symfony-mailer-lite/transport | + | /admin/reporting/distribution-downloads | + | /admin/reporting/distribution-downloads/csv | | /admin/config/user-interface/antibot | | /admin/config/people | | /admin/config/people/accounts | diff --git a/web/modules/custom/joinup_core/fixtures/bounce_username.csv b/web/modules/custom/joinup_core/fixtures/bounce_username.csv new file mode 100644 index 0000000000000000000000000000000000000000..add43a8690197fe6d64f85718953a9b625c6c099 --- /dev/null +++ b/web/modules/custom/joinup_core/fixtures/bounce_username.csv @@ -0,0 +1 @@ +n00c1c26,garcfer,n004pquy,garlore,n00543xx,scillsi,smeteka,n0098kr3,nunezra,n007vd09,n007xx4j,n00bu0kn,nkaevang,n0095sp7,n002xj8j,treguar,n008obxo,n00295u1,isurgelu,n0094nk7,n00buho1,n0093yiy,v0093feh,n008unjf,n009283u,n008llhl,n003856b,scaunga,idelaeve,dikmese,n005ow0r,n008yt6k,n008zgcp,n007yxdm,n008y0gg,n008xsof,ibuffifa,n008v6np,n008wqjv,n008w6vl,nmarabra,loranbe,bourdev,milenpa,n008tz46,n008trko,n008zl1x,n008tfxh,ipalsant,n008kej8,n008rwn8,n008q0ij,n0076tnw,skockma,n008oakp,n00ayerx,n008hrns,n007p3ei,n0028as6,n002swzs,ishuklsa,n008mi74,n00845hd,n008liai,n008lt6l,n007f491,n003tg17,n006d41c,n008iv0j,n00ao4e4,howlevi,ituerksi,gompabl,n008cp4f,n008h5dq,n006j0yq,n0029lux,n00862jm,n008enov,ngoniire,icarbofl,n007qx97,n008dujv,n008df76,n008bjzn,n003wvzz,n008as8b,n008ao5m,n00327yh,n0089ojd,nsorzmar,n008894x,scudope,pfeifha,n0086qy0,n00adubq,n006qa45,raziykh,n0084x7s,n0084d60,n00843pe,n008454x,n0084azm,nguijnra,n00ac3ir,n0037pfa,tsiriko,n0081gjl,aleknma,n006hetn,zavarva,n003cyb4,oanceda,bertchi,v00aavgz,n00318e1,seiseve,n006kvxc,n006nlgq,nagyesz,n004wr78,merkoma,n0079ili,swartlu,margmih,n00a8jdz,n007cpyu,loukama,karpama,ieecloji,n0070tx8,n007vxmu,n007vdee,iabrusro,n0058ksz,n007rh0r,n00a3w39,koelisa,n003xh5p,n007st0p,nagealm,n007t47n,n003bp1x,ncourace,n007qn2q,n0022tp3,n009yxvt,n007okgd,n007mift,ipsyllap,n007ltj2,inavaral,n007m2ia,n007lnle,n007kzon,n007kshv,n002ejgc,n002uuyi,n007jryc,irimiel,n002ou0f,n007hyrg,n007ct22,n007i060,n009yxgy,n006m56w,n007hla6,n005i0jv,n002rccu,n005my05,n007ghhn,n002if7n,n0072hj2,ilukaiau,n007onm7,n007edk5,n007dwuf,miscage,n007dopl,n0033e2j,irujangh,n007blij,n007bjcj,n007bold,n002ew3h,n00cp6uq,n009rj0t,n006yfgb,meottvi,n007b4as,idomandr,n00240dl,n0076p27,n00256lm,n0079e3z,n008sfu3,baerwsv,n0078gmn,n006ei0v,n0076jhf,ilepimar,ncombema,kasiean,balmart,n002hmuh,n009lwkx,bormifr,n006n6pz,istojkfr,n002sj3z,imagyais,n006xvya,safaral,idreuxve,nvainusa,imonpiet,npieraes,n006uzwj,abghoam,n006p0rp,n006v1w7,n0030i44,ghahrsa,ndegrarf,n006t4po,n003h01n,n006a4qu,gritsma,n001zo61,lebhafl,isalguis,n0064pp0,n006qthg,n006lyd0,ilucicsv,n0093hcv,n006p2qf,n0033w7u,igiannda,n006grfi,icomaniu,nfochtve,n002c3bk,rubiaan,nloonadl,n006gnxc,v005tc5n,sanduma,n006idxq,n00337to,n006g09f,cediena,n0032ivb,beyentr,dianegi,noguean,ciampja,aleksal,n005r5n7,n006c1hc,schelet,imanrodr,n003vqdy,cetlcvl,n0063yym,mascamo,nabrycsa,n005smvy,n005s66b,n005ria1,aliavet,n003cmvx,n005oism,naeadaio,n005n2d2,n005n0t2,nlegzell,graffsi,n005keqk,n005kf8x,n005d925,leftedi,n005jylb,n003sm1d,ndligkio,duarana,n002k2qy,gunduyi,n005ae70,n005ctdb,nkinotal,cotacta,n003e21k,n0057j12,v0057ok5,n004bwcj,n002ul6v,n0057jv3,n00406wj,n003kj7i,n00550mg,n0039q7s,n0053775,belfand,n00430pr,n004zj9z,n00502jf,cervale,gibboma,nkarydag,n004mo04,iroggigi,nsolbart,ntaskake,n004gcw9,udongil,n0036v9y,n004dxy5,n004crlp,corrdan,n004b4j1,nkaneioa,n002cw0n,n00487cr,n0037jjd,ibraccst,tsourky,n003xl6w,nkiriase,n0046x2f,n002cdzj,n002ailo,verscpe,nthomace,n0041eaz,n002yn67,n0042fq2,n0041cee,nstansfr,posadmo,n0041cwk,nsobkoek,n002gkx9,n003z6ys,n003tvus,lemaimn,pecarlo,n003qcwr,n003osnh,nmavriav,ipapneju,n003mhn2,ncircmha,n003i9ji,dussoad,n003hf3i,campomo,n003hhs3,ivimario,n003bcuy,n006gw6r,n00370vf,n003fqwa,n003fyge,n002eyw8,n0034kfv,stiebha,n003eyl2,n003ew5x,n003ersx,n0033z3l,n003dmwm,n002md82,nscannmo,n002qdgd,n003efw1,pacegia,devroth,bertosr,n003eb2z,n0036s2x,n0036vjk,n003e6ow,n003dxke,pasqufi,nmetluis,n003dsmo,n003dtv6,n003dt2m,n003dqan,n002x8k4,n003dbh6,bergedd,n003bvwh,npozivka,n003b3rf,n003b0dt,nvepiter,delcada,n0031eru,ebnerka,n003ajv4,n002mxlf,ialmerai,kuegeju,n002yue2,n002za6o,iradevma,leyrobe,n003983m,n002y6kx,n002xou3,stealex,nbndeijo,nbeedemi,nfelimas,ceobabo,n002z351,n0037d4c,n002cug9,n002ubap,terolen,n002w5pd,videnmi,n0038whc,nagiusre,itosicat,n00394cr,arsionu,n00394c3,nmelhezi,kuuseka,v00390mf,ikatsail,n002cl4x,iphilial,messced,n0038r6q,n0038pnx,n003880u,ceausal,n002goum,n002iwjq,n0035gkr,n0030run,n0024qpz,nvolkepi,n002xy1l,pavalpo,n0037525,imabilcl,scicmal,n0036wru,n0036rub,kelleda,n00cwqhz,n0036ndk,n0036n5u,saddefa,n0036g9y,n0035zd2,n00360d0,hovseed,n0035qut,n0035um7,n0034bf5,n0033k04,weisest,n00342so,n0035nf4,n002q8ty,n0035837,n003511p,ndonezux,gabelen,n00300s4,n0033gc7,nvlkoiva,n0033rlp,damerch,ipizzuse,adesake,n0033218,n0032y9f,n002cf17,n002zz8u,martbla,rodrlau,nwulffen,n002m4az,nkranjkr,irobugab,n0031v7f,n0031rjl,n0031jjp,n0031b6x,n0030xid,n0030txp,n0030r44,nmelisgu,n0030td8,npappkri,n0030gqf,vaccalo,carpipe,brehomi,n00324xx,n002zz5b,v00884ln,ndawsopa,n00364uh,n002w7yf,vandesy,gessede,ilindfre,palamka,n0035ypz,nigraman,n002euxa,n002zv0c,nbbermrt,n002k7lc,nmattger,nalvchri,n002qi84,vincfab,nelisso,n002h6hk,n002q43b,n002oqjp,ncerniva,n002divc,pageppi,n002depk,ibodesal,nshafanz,martgia,n0027yhz,batrian,nsoigera,webephi,losapfr,ncamiljo,riddeal,n002ap9s,ithierch,ifaedani,nciasuga,pellema,n007j0rw,nchaange,n002bt5n,n007tcz3,n001yquc,n002aemc,peyropi,naasaaku,v002u5a4,ntelecfe,n00374zc,n0036z9v,fernarf,n0020i0k,nnewrlpe,ngaunaiv,gattwdi,n007fyss,nklockla,n002bkoh,n005p7wf,ngenucpa,francdb,ncapganc,nhagdaan,epuread,ntattida,nnolfodo,n006ejmj,nhanstkj,nalvamrt,nbugejmi,fulleka,nambromk,n002ftrv,ncanlbah,nvallnuu,n0045qjs,n00coxud,n00cmuts,n00c4hf9,n00c70t7,n00cctel,vassiat,kosmidi,n00cnima,n00b7u7e,n009il0l,n006uofd,n00bfabc,n007rkt0,n00a6kkq,n00a0g13,n009tqyd,idelriir,nguenyil,ikustoma,n009j2z4,iballegr,n009rb3q,n00g4nyy,n00fymt9,n00fhxvx,n00efnsq,n00daqum,istoroan,vasiami,n00ezdyq,ngonnoe,ghisevi,n00eterk,n00eokfl,n00ennhq,gingapa,mekaosa,n00b3o2a,veresol,huigecl,nmargdor,n00e6um8,n00e6rh6,n00e5rnb,palyvio,n003pgdx,sadloja,n00e6e5q,n00e53vy,kordoda,isoinnar,n00e541b,n00e546b,n00e53xh,n00e5458,n00e5433,n00e53ue,n006s1oa,n0020csd,n00e4dqy,n00e4ba1,n00e4b61,n00e4awq,n00e4b3g,n00dpln9,n00e0yjb,n00e3c28,n00e3c51,n00e3bz1,n00e3c07,n00e3aow,n00e3aq3,n00e3an0,arvanai,n00e2kv8,ipergage,martist,n00e1xm3,matosfm,n00e1v8j,n00e1v96,n00e1uca,n00e1cfv,n00e1adm,luccial,grzegpa,n00e15ax,n009zpyn,n00e12m1,n00e0yta,n00df1tg,n00e0www,n00e0t9h,habsann,n00e0grg,n00dzthw,delbosa,stefior,n00dx7df,n00c0z23,ikaradip,n003cb4n,n00dsuib,n00drsh6,romaniu,n00dnepz,imeremih,n00dkrtb,n00dgnk0,n00db89w,permart,manojka,n00d86x8,buschbr,n008lrnh,n00d6g64,n008hmg5,fmariai,n00d2oxk,n00d1k2z,n00bz622,n00bmnhk,austtom,n00csm89,ngdebora,n00cuxlh,simeolg,n00c8dl3,n00ctkty,schraec,gawelan,n00cphh2,chatvas,maringm,n00c8w9e,n00c139n,n00cmzci,n00cm77t,n00cl33a,vasquca,idimitsl,n00bydfr,n0078g21,nblzekma,iskalida,n008osi7,isteenmi,daurelo,michaol,cerniag,sujatth,lupisam,sampapa,mantaja,kyprman,n00cb48i,nekvaad,sielmja,imilezla,wadstal,antorad,ieraluca,n005qmef,n00c22vg,n00c24fe,n00c0kqk,n00bjq12,ncarvadr,n007cen8,chronat,n00bid9n,heralex,krummma,n00bg5fo,n002n24p,n00aperp,sorokro,n00bdx7c,n00bcxh5,n008cl5n,n00bahck,n00bah0u,chriasg,benveel,npartrii,goncson,solinco,n00b8r9n,n00b87kc,sinnafr,groannk,miccigi,n00b7vwc,n00b81be,n00b7wed,cadicse,ipulchmi,n00b3pk9,n002zamg,n00b5ov1,seyfuay,nhanzac,sachega,n00b52tf,n00b43j4,nbramort,n00b3lk3,stragab,bohuspa,n0033jl9,bleyses,n008371l,n00b1m4b,cocrist,bourder,prochon,n00b1cc9,bessoem,rzepcpa,n00b0xvn,vasimri,n00b0czm,karayge,n00b07sy,callefr,kalogvi,n00aybet,n0076p2d,ndykdonn,n00ayd6r,n00av7hj,ipopotco,nmingrha,ihenegma,imajanja,n00auerj,nlaakmri,n001zqw0,n00atr89,n009j0r3,n0088uns,n00atm3j,n00atagg,n00atc0r,n006b6sn,n00arnyl,n00arhr8,n00arf46,n00ar0dt,stancra,n00apolh,ruehrma,n00aov5x,n005o7r8,n002cdo3,n00251ni,n00alzxw,n00alzaa,n00alv1p,n00akx6o,n00al76x,n00ae3h0,jorrogo,tsiloio,adalaas,n00ahf9o,n002cawo,n00adali,n00afocs,n002oc7h,n00afm68,n00a2roi,penmigu,n00af3l6,n00754zq,n00a33t0,n0086oew,jungdan,n00a8nid,n002jrk6,n00a2xda,n009v3yj,n00a364m,n008x93l,n00aaue9,n008hfys,n009e7xq,n00a88wy,n00a8442,n007knap,n00a7ifu,deegaan,idemerso,n00a06an,santand,n00a69qn,n0030uuh,broggmi,n00a5ps3,n002xwem,n00a5k3n,nkacmape,n00a1sje,cordest,n00a3t3j,n006hv50,n00a2lz9,n00a1ls2,n009uzaa,njantoan,n00a0pol,n00a0sc9,n008x118,n003bvry,n009fl07,iszabmag,n009u15v,n005p23p,n0030e7s,n007rt1p,vebromi,basilma,ikutasat,n009vdul,musmero,n009sda3,n009uhtn,eswarum,n009u3kr,n009u00l,itabonlu,n009tetv,n00962th,baskoda,courtfr,n009rji7,n009qo4m,iorbieja,n009qdhn,nceritas,n009pvjp,nathnit,hartoev,n009opyz,n009nsfd,n009i6pl,n009mvnb,n0069mdg,n009ezcq,n0098j5x,n009ir20,n009ij9k,n009h8wf,n002arz2,nmaraptr,n00913hj,n0097eog,n009fsl2,n007pnct,n009e6r8,n0090sjo,n009czqb,pealeja,n009c9kt,n008cmw8,hurkaka,loewsop,n009b1n0,n002pn9j,icuestgl,juanlvi,n0099j86,pioloti,n0021jrf \ No newline at end of file diff --git a/web/modules/custom/joinup_front_page/src/Plugin/Block/ExploreBlock.php b/web/modules/custom/joinup_front_page/src/Plugin/Block/ExploreBlock.php index fff2f80e4990a285dc01a83a8b793d251ef91efc..6fbe84653567df48da9e48dddb8c8ede3e4287dc 100644 --- a/web/modules/custom/joinup_front_page/src/Plugin/Block/ExploreBlock.php +++ b/web/modules/custom/joinup_front_page/src/Plugin/Block/ExploreBlock.php @@ -80,6 +80,18 @@ public function build(): array { 'data' => $this->getContent('solution'), 'url' => $get_url('solution'), ], + 'news' => [ + 'label' => $this->t('News'), + 'plural_type' => $this->t('news'), + 'data' => $this->getContent('news'), + 'url' => $get_url('news'), + ], + 'events' => [ + 'label' => $this->t('Events'), + 'plural_type' => $this->t('events'), + 'data' => $this->getContent('event'), + 'url' => $get_url('event'), + ], ]; return [ diff --git a/web/modules/custom/joinup_media/src/Plugin/Field/FieldWidget/MediaVideoUrlWidget.php b/web/modules/custom/joinup_media/src/Plugin/Field/FieldWidget/MediaVideoUrlWidget.php index 597670d994818691707a5d8e2166bc7f78161310..e6ddb2f6843e329a8af1521d55d9ebd7a1dcd004 100644 --- a/web/modules/custom/joinup_media/src/Plugin/Field/FieldWidget/MediaVideoUrlWidget.php +++ b/web/modules/custom/joinup_media/src/Plugin/Field/FieldWidget/MediaVideoUrlWidget.php @@ -124,15 +124,12 @@ public function massageFormValues(array $values, array $form, FormStateInterface * Lookup for an existing remote_video entity. */ protected function lookupEntity(string $url): ?MediaInterface { - $conditions = [ - 'bundle' => 'remote_video', - 'media_oembed_video' => $url, - ]; - if ($this->ogContext->getGroup()) { - $conditions['og_audience'] = $this->ogContext->getGroup()->id(); - } $existing_entity = $this->entityTypeManager->getStorage('media') - ->loadByProperties($conditions); + ->loadByProperties([ + 'bundle' => 'remote_video', + 'media_oembed_video' => $url, + 'og_audience' => $this->ogContext->getGroup()?->id(), + ]); return $existing_entity ? reset($existing_entity) : NULL; } diff --git a/web/modules/custom/joinup_reports/joinup_reports.links.menu.yml b/web/modules/custom/joinup_reports/joinup_reports.links.menu.yml index b4c17c8bdbe90371e1ec8d3cc51d694c3baafa62..d8067ebf541d058e5fef73e6c15c7319dddcb7e8 100644 --- a/web/modules/custom/joinup_reports/joinup_reports.links.menu.yml +++ b/web/modules/custom/joinup_reports/joinup_reports.links.menu.yml @@ -8,6 +8,9 @@ joinup_reports.admin_reporting: joinup_reports.group_administrators_report: title: 'Group administrators and facilitators' route_name: joinup_reports.group_administrators_report + route_parameters: + entity_type_id: 'node' + bundle_id: 'collection' description: 'Export group administrators and facilitators in a csv format.' parent: joinup_reports.admin_reporting weight: -1 diff --git a/web/modules/custom/joinup_reports/joinup_reports.routing.yml b/web/modules/custom/joinup_reports/joinup_reports.routing.yml index 2066ac0fbababf8ca5c448eddc00182539cde47c..cc063c0e18d81ccb70abbc538fe85decada71dc1 100644 --- a/web/modules/custom/joinup_reports/joinup_reports.routing.yml +++ b/web/modules/custom/joinup_reports/joinup_reports.routing.yml @@ -1,5 +1,5 @@ joinup_reports.group_administrators_report: - path: '/admin/reporting/group-administrators' + path: '/admin/reporting/group-administrators/export' defaults: _form: '\Drupal\joinup_reports\Form\ExportGroupAdministratorsForm' _title: 'Group administrators and facilitators' diff --git a/web/modules/custom/joinup_reports/src/ExportBatchedDataFormBase.php b/web/modules/custom/joinup_reports/src/ExportBatchedDataFormBase.php index ab952b9636215e6c1f2f7e83ebae6b0a8064bb70..4545c6a7e58ff224cd852aa8cd1acadb29ebff52 100644 --- a/web/modules/custom/joinup_reports/src/ExportBatchedDataFormBase.php +++ b/web/modules/custom/joinup_reports/src/ExportBatchedDataFormBase.php @@ -40,7 +40,7 @@ public function buildForm(array $form, FormStateInterface $form_state): array { '#type' => 'container', ]; - if ($data = $this->cacheStorage->get($this->getFormId())) { + if ($data = $this->cacheStorage->get($this->getCacheTagName())) { $form['help']['#markup'] = $this->t('Last dump was created at :date and will be removed by :expire', [ ':date' => $this->dateFormatter->format((int) $data->created), ':expire' => $this->dateFormatter->format((int) $data->expire), @@ -107,7 +107,7 @@ public function storeToCache(bool $success, array $results, array $operations): // and the decimal separator is the same symbol. $csv_encoder = new CsvEncoder(';'); $data = $csv_encoder->encode(array_values($results['data']), 'csv'); - $this->cacheStorage->set($this->getFormId(), $data, $expire); + $this->cacheStorage->set($this->getCacheTagName(), $data, $expire); $this->messenger()->addMessage('Data have been rebuilt.'); // Handle the file here. @@ -126,7 +126,15 @@ public function storeToCache(bool $success, array $results, array $operations): abstract protected function generateData(array &$form, FormStateInterface $form_state): void; /** - * Returns the route name for the report download. + * Returns the name of the cache tag that is used to store the data. + * + * @return string + * The cache tag name. + */ + abstract protected function getCacheTagName(): string; + + /** + * Returns the routename for the report download. * * @return string * The route name. diff --git a/web/modules/custom/joinup_reports/src/Form/ExportGroupAdministratorsForm.php b/web/modules/custom/joinup_reports/src/Form/ExportGroupAdministratorsForm.php index cdb6b1f3fbdd89268f59f9042f7a8a2a5ec1cfa1..31e4e85f69d83548f99bc3a9b7f4c51ad087f41a 100644 --- a/web/modules/custom/joinup_reports/src/Form/ExportGroupAdministratorsForm.php +++ b/web/modules/custom/joinup_reports/src/Form/ExportGroupAdministratorsForm.php @@ -30,6 +30,13 @@ public function __construct( parent::__construct($cache, $dateFormatter, $time); } + /** + * {@inheritdoc} + */ + protected function getCacheTagName(): string { + return 'group_administration_list'; + } + /** * {@inheritdoc} */ diff --git a/web/modules/custom/joinup_reports/src/Form/ExportStatisticsPerGroupForm.php b/web/modules/custom/joinup_reports/src/Form/ExportStatisticsPerGroupForm.php index 8d31f2ffb2f003206cee806b245d0f0ab1abd6c2..00eac0d864d447b4f45d4a8a02926100b6432bfa 100644 --- a/web/modules/custom/joinup_reports/src/Form/ExportStatisticsPerGroupForm.php +++ b/web/modules/custom/joinup_reports/src/Form/ExportStatisticsPerGroupForm.php @@ -38,6 +38,13 @@ public function __construct( parent::__construct($cache, $dateFormatter, $time); } + /** + * {@inheritdoc} + */ + protected function getCacheTagName(): string { + return 'group_administration_list'; + } + /** * {@inheritdoc} */ diff --git a/web/modules/custom/joinup_user/src/Plugin/QueueWorker/RemoverUsersQueueWorker.php b/web/modules/custom/joinup_user/src/Plugin/QueueWorker/RemoverUsersQueueWorker.php index 7c582653eda7749c0967ab95f3cbde97f58050da..4d5572c09884c46458f7807218cee7216e71d702 100644 --- a/web/modules/custom/joinup_user/src/Plugin/QueueWorker/RemoverUsersQueueWorker.php +++ b/web/modules/custom/joinup_user/src/Plugin/QueueWorker/RemoverUsersQueueWorker.php @@ -4,6 +4,7 @@ namespace Drupal\joinup_user\Plugin\QueueWorker; +use Drupal\Core\Entity\EntityStorageInterface; use Drupal\Core\Entity\EntityTypeManagerInterface; use Drupal\Core\Plugin\ContainerFactoryPluginInterface; use Drupal\Core\Queue\Attribute\QueueWorker; @@ -23,6 +24,20 @@ )] class RemoverUsersQueueWorker extends QueueWorkerBase implements ContainerFactoryPluginInterface { + /** + * The node storage class. + * + * @var \Drupal\Core\Entity\EntityStorageInterface + */ + protected EntityStorageInterface $nodeStorage; + + /** + * The comment storage class. + * + * @var \Drupal\Core\Entity\EntityStorageInterface + */ + protected EntityStorageInterface $commentStorage; + public function __construct( array $configuration, string $plugin_id, @@ -56,18 +71,14 @@ public function processItem($data): void { elseif (!empty($data['name'])) { $account = user_load_by_name($data['name']); } - else { - return; - } // Make sure account wasn't deleted in the meantime. if ($account instanceof UserInterface) { - _user_cancel(['user_cancel_notify' => TRUE], $account, 'user_cancel_delete'); - - // Commit changes. - $this->userDeleted->destruct(); + user_cancel(['user_cancel_notify' => TRUE], $account->id(), 'user_cancel_delete'); } + // Commit changes. + $this->userDeleted->destruct(); } } diff --git a/web/modules/custom/topic/src/VocabularyManager.php b/web/modules/custom/topic/src/VocabularyManager.php new file mode 100644 index 0000000000000000000000000000000000000000..734222ef69543a320febde4366da8d3f742efb1d --- /dev/null +++ b/web/modules/custom/topic/src/VocabularyManager.php @@ -0,0 +1,247 @@ +<?php + +declare(strict_types=1); + +namespace Drupal\topic; + +use Drupal\Core\Database\Connection; +use Drupal\Core\Entity\EntityTypeManagerInterface; +use Drupal\meta_entity\MetaEntityRepositoryInterface; +use Drupal\rdf_sync\RdfSyncConnectionInterface; +use Symfony\Component\DependencyInjection\Attribute\Autowire; + +/** + * Helper class for managing the topic vocabulary. + * + * This class is to be used for update purposes only. + */ +readonly class VocabularyManager { + + public function __construct( + protected EntityTypeManagerInterface $entityTypeManager, + protected Connection $database, + #[Autowire(service: 'rdf_sync.connection')] + protected RdfSyncConnectionInterface $sparqlEndpoint, + #[Autowire(service: 'meta_entity.repository')] + protected MetaEntityRepositoryInterface $metaEntityRepository, + ) { + } + + /** + * Retrieves the internal path of the taxonomy term. + */ + public function getPath(string $uri): string { + return $this->entityTypeManager + ->getStorage('taxonomy_term') + ->load($uri) + ->toUrl() + ->toString(); + } + + /** + * Creates a topic term. + * + * @param string $name + * The name of the term. + * @param string|null $parent + * (optional) The parent of the term. + */ + public function createTopicTerm(string $name, ?string $parent = NULL): void { + $term_storage = $this->entityTypeManager->getStorage('taxonomy_term'); + + if (!empty($parent)) { + $parent = $term_storage->load($parent); + } + + // The ID of the topic will be assigned automatically according to the name. + $term_storage->create([ + 'vid' => 'topic', + 'name' => $name, + 'parent' => $parent, + ])->save(); + } + + /** + * Renames a topic term. + * + * @param string $id + * The ID of the topic to rename. + * @param string $newName + * The new name of the term. + */ + public function renameTopic(string $id, string $newName): void { + $this->entityTypeManager + ->getStorage('taxonomy_term') + ->load($id) + ->setName($newName) + ->save(); + } + + /** + * Changes the topic ID of the term. + * + * @param string $oldId + * The old ID of the term. + * @param string $newId + * The new ID of the term. + */ + public function changeTopicId(string $oldId, string $newId): void { + $oldTerm = $this->entityTypeManager->getStorage('taxonomy_term')->load($oldId); + $meta_entity = $this->metaEntityRepository->getMetaEntityForEntity($oldTerm, 'topic'); + + $oldPath = $this->getPath($oldId); + $query = <<<QUERY + WITH <http://topic> + DELETE { <$oldId> ?p ?o } + INSERT { <$newId> ?p ?o } + WHERE { <$oldId> ?p ?o } + QUERY; + $this->sparqlEndpoint->query($query); + + $newPath = $this->getPath($newId); + $this->createRedirect($oldPath, $newPath); + $newTerm = $this->entityTypeManager->getStorage('taxonomy_term')->load($newId); + + // Also, set the meta entity relation ID. + /** @var \Drupal\meta_entity\Entity\MetaEntityInterface $meta_entity */ + $meta_entity->set('target', $newTerm); + $meta_entity->save(); + } + + /** + * Change the topic parent. + * + * @param string $id + * The ID of the term. + * @param string $newParentId + * The ID of the new parent. + */ + public function changeTopicParent(string $id, string $newParentId): void { + $query = <<<QUERY + WITH <http://topic> + DELETE { <$id> <http://www.w3.org/2004/02/skos/core#broaderTransitive> ?parent } + INSERT { <$id> <http://www.w3.org/2004/02/skos/core#broaderTransitive> <{$newParentId}> } + WHERE { <$id> <http://www.w3.org/2004/02/skos/core#broaderTransitive> ?parent } + QUERY; + $this->sparqlEndpoint->query($query); + } + + /** + * Creates a redirect between 2 taxonomy terms. + * + * @param string $oldPath + * The old path of the term. + * @param string $newPath + * The new path of the term. + */ + public function createRedirect(string $oldPath, string $newPath): void { + $redirect = $this->entityTypeManager + ->getStorage('redirect') + ->create([ + 'redirect_source' => ['path' => $oldPath], + 'redirect_redirect' => ['uri' => $newPath], + 'language' => 'und', + 'status_code' => 301, + ]); + $redirect->save(); + } + + /** + * Moves children of a topic category to a new parent. + * + * @param string $oldParentId + * The old parent ID. + * @param string $newParentId + * The new parent ID. + */ + public function moveTopicChildrenToNewParent(string $oldParentId, string $newParentId): void { + $query = <<<QUERY + WITH <http://topic> + DELETE { ?child <http://www.w3.org/2004/02/skos/core#broaderTransitive> <{$oldParentId}> } + INSERT { ?child <http://www.w3.org/2004/02/skos/core#broaderTransitive> <{$newParentId}> } + WHERE { ?child <http://www.w3.org/2004/02/skos/core#broaderTransitive> <{$oldParentId}> } + QUERY; + $this->sparqlEndpoint->query($query); + } + + /** + * Updates references to a topic in the databases to a new topic. + * + * @param string $oldId + * The old reference ID. + * @param string $newId + * The new reference ID. + */ + public function updateDbReference(string $oldId, string $newId): void { + $this->updateMysqlEntityReferences($oldId, $newId); + $this->updateSparqlEntityReferences($oldId, $newId); + } + + /** + * Updates references to a topic in the SPARQL database to a new topic. + * + * @param string $oldId + * The old reference ID. + * @param string $newId + * The new reference ID. + */ + public function updateSparqlEntityReferences(string $oldId, string $newId): void { + $graphs = [ + 'http://joinup.eu/collection/published', + 'http://joinup.eu/collection/draft', + 'http://joinup.eu/solution/published', + 'http://joinup.eu/solution/draft', + ]; + + foreach ($graphs as $graph) { + $query = <<<QUERY + WITH <{$graph}> + DELETE { ?entity <http://joinup.eu/vocabulary/topic> <{$oldId}> } + INSERT { ?entity <http://joinup.eu/vocabulary/topic> <{$newId}> } + WHERE { ?entity <http://joinup.eu/vocabulary/topic> <{$oldId}> } + QUERY; + $this->sparqlEndpoint->query($query); + } + } + + /** + * Updates references to a topic in the SQL database to a new topic. + * + * @param string $oldId + * The old reference ID. + * @param string $newId + * The new reference ID. + */ + protected function updateMysqlEntityReferences(string $oldId, string $newId): void { + $this->database->update('node__field_topic') + ->fields(['field_topic_target_id' => $newId]) + ->condition('field_topic_target_id', $oldId) + ->execute(); + + // Do the query also for the revisions table. + $this->database->update('node_revision__field_topic') + ->fields(['field_topic_target_id' => $newId]) + ->condition('field_topic_target_id', $oldId) + ->execute(); + + // The users also refer to the vocabulary via the + // field_user_professional_domain field. + $this->database->update('user__field_user_professional_domain') + ->fields(['field_user_professional_domain_target_id' => $newId]) + ->condition('field_user_professional_domain_target_id', $oldId) + ->execute(); + } + + /** + * Deletes a topic term. + * + * @param string $uri + * The term URI. + */ + public function deleteTopicTerm(string $uri): void { + $term_storage = $this->entityTypeManager->getStorage('taxonomy_term'); + $term = $term_storage->load($uri); + $term->delete(); + } + +} diff --git a/web/modules/custom/topic/topic.services.yml b/web/modules/custom/topic/topic.services.yml index a4d08921a19f9378cd3a07aeca012d98fcfe3801..9f8a5e2e87cc90f43606c0c7627c139120572501 100644 --- a/web/modules/custom/topic/topic.services.yml +++ b/web/modules/custom/topic/topic.services.yml @@ -8,6 +8,9 @@ services: tags: - { name: path_processor_outbound, priority: 1001 } + topic.vocabulary_manager: + class: Drupal\topic\VocabularyManager + Drupal\topic\EventSubscriber\HomepageTopicsSectionSubscriber: { } Drupal\topic\EventSubscriber\QueryPresetSubscriber: { } diff --git a/web/themes/ventuno/assets/css/searchpage.min.css b/web/themes/ventuno/assets/css/searchpage.min.css index 87650019aceb1dad14898c7b4abedb88e8980aad..6822d712041447a002edfc2901f72f29cb52c0ae 100644 --- a/web/themes/ventuno/assets/css/searchpage.min.css +++ b/web/themes/ventuno/assets/css/searchpage.min.css @@ -1,2 +1,2 @@ -.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:0.5rem;--bs-card-border-width:1px;--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:0.375rem;--bs-card-box-shadow: ;--bs-card-inner-border-radius:calc(0.375rem - 1px);--bs-card-cap-padding-y:0.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(0,0,0,.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:#fff;--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:0.75rem;display:flex;flex-direction:column;height:var(--bs-card-height);min-width:0;position:relative;word-wrap:break-word;background-clip:border-box;background-color:var(--bs-card-bg);border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius);box-shadow:var(--bs-card-box-shadow)}.card>hr{margin-left:0;margin-right:0}.card>.list-group{border-bottom:inherit;border-top:inherit}.card>.list-group:first-child{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius);border-top-width:0}.card>.list-group:last-child{border-bottom-left-radius:var(--bs-card-inner-border-radius);border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-width:0}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{color:var(--bs-card-color);flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x)}.card-title{margin-bottom:var(--bs-card-title-spacer-y)}.card-subtitle{margin-top:calc(var(--bs-card-title-spacer-y)*-.5)}.card-subtitle,.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color);color:var(--bs-card-cap-color);margin-bottom:0;padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color);color:var(--bs-card-cap-color);padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{border-bottom:0;margin-bottom:calc(var(--bs-card-cap-padding-y)*-1);margin-left:calc(var(--bs-card-cap-padding-x)*-.5);margin-right:calc(var(--bs-card-cap-padding-x)*-.5)}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-left:calc(var(--bs-card-cap-padding-x)*-.5);margin-right:calc(var(--bs-card-cap-padding-x)*-.5)}.card-img-overlay{border-radius:var(--bs-card-inner-border-radius);bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);position:absolute;right:0;top:0}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-left-radius:var(--bs-card-inner-border-radius);border-bottom-right-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{border-left:0;margin-left:0}.card-group>.card:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.btn-close{background:transparent url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414'/%3E%3C/svg%3E") 50%/1em auto no-repeat;border:0;border-radius:.5rem;box-sizing:content-box;color:#000;height:1em;opacity:.5;padding:.25em;width:1em}.btn-close:hover{color:#000;opacity:.75;text-decoration:none}.btn-close:focus{box-shadow:0 0 0 .25rem rgba(20,59,118,.25);opacity:1;outline:0}.btn-close.disabled,.btn-close:disabled{opacity:.25;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.badge{--bs-badge-padding-x:0.65em;--bs-badge-padding-y:0.35em;--bs-badge-font-size:1.125rem;--bs-badge-font-weight:400;--bs-badge-color:#fff;--bs-badge-border-radius:0.375rem;border-radius:var(--bs-badge-border-radius);color:var(--bs-badge-color);display:inline-block;font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);text-align:center;vertical-align:baseline;white-space:nowrap}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl,.offcanvas-xxl{--bs-offcanvas-zindex:70;--bs-offcanvas-width:400px;--bs-offcanvas-height:30vh;--bs-offcanvas-padding-x:1rem;--bs-offcanvas-padding-y:1rem;--bs-offcanvas-color: ;--bs-offcanvas-bg:#fff;--bs-offcanvas-border-width:1px;--bs-offcanvas-border-color:var(--bs-border-color-translucent);--bs-offcanvas-box-shadow:0 0.125rem 0.25rem rgba(0,0,0,.075)}@media (max-width:575.98px){.offcanvas-sm{background-clip:padding-box;background-color:var(--bs-offcanvas-bg);bottom:0;box-shadow:var(--bs-offcanvas-box-shadow);color:var(--bs-offcanvas-color);display:flex;flex-direction:column;max-width:100%;outline:0;position:fixed;transition:transform .3s ease-in-out;visibility:hidden;z-index:var(--bs-offcanvas-zindex)}}@media (max-width:575.98px) and (prefers-reduced-motion:reduce){.offcanvas-sm{transition:none}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-start{border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);left:0;top:0;transform:translateX(-100%);width:var(--bs-offcanvas-width)}.offcanvas-sm.offcanvas-end{border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);right:0;top:0;transform:translateX(100%);width:var(--bs-offcanvas-width)}.offcanvas-sm.offcanvas-top{border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);top:0;transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom,.offcanvas-sm.offcanvas-top{height:var(--bs-offcanvas-height);left:0;max-height:100%;right:0}.offcanvas-sm.offcanvas-bottom{border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.show:not(.hiding),.offcanvas-sm.showing{transform:none}.offcanvas-sm.hiding,.offcanvas-sm.show,.offcanvas-sm.showing{visibility:visible}}@media (min-width:576px){.offcanvas-sm{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{background-color:transparent!important;display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (max-width:767.98px){.offcanvas-md{background-clip:padding-box;background-color:var(--bs-offcanvas-bg);bottom:0;box-shadow:var(--bs-offcanvas-box-shadow);color:var(--bs-offcanvas-color);display:flex;flex-direction:column;max-width:100%;outline:0;position:fixed;transition:transform .3s ease-in-out;visibility:hidden;z-index:var(--bs-offcanvas-zindex)}}@media (max-width:767.98px) and (prefers-reduced-motion:reduce){.offcanvas-md{transition:none}}@media (max-width:767.98px){.offcanvas-md.offcanvas-start{border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);left:0;top:0;transform:translateX(-100%);width:var(--bs-offcanvas-width)}.offcanvas-md.offcanvas-end{border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);right:0;top:0;transform:translateX(100%);width:var(--bs-offcanvas-width)}.offcanvas-md.offcanvas-top{border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);top:0;transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom,.offcanvas-md.offcanvas-top{height:var(--bs-offcanvas-height);left:0;max-height:100%;right:0}.offcanvas-md.offcanvas-bottom{border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.show:not(.hiding),.offcanvas-md.showing{transform:none}.offcanvas-md.hiding,.offcanvas-md.show,.offcanvas-md.showing{visibility:visible}}@media (min-width:768px){.offcanvas-md{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{background-color:transparent!important;display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (max-width:991.98px){.offcanvas-lg{background-clip:padding-box;background-color:var(--bs-offcanvas-bg);bottom:0;box-shadow:var(--bs-offcanvas-box-shadow);color:var(--bs-offcanvas-color);display:flex;flex-direction:column;max-width:100%;outline:0;position:fixed;transition:transform .3s ease-in-out;visibility:hidden;z-index:var(--bs-offcanvas-zindex)}}@media (max-width:991.98px) and (prefers-reduced-motion:reduce){.offcanvas-lg{transition:none}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-start{border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);left:0;top:0;transform:translateX(-100%);width:var(--bs-offcanvas-width)}.offcanvas-lg.offcanvas-end{border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);right:0;top:0;transform:translateX(100%);width:var(--bs-offcanvas-width)}.offcanvas-lg.offcanvas-top{border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);top:0;transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom,.offcanvas-lg.offcanvas-top{height:var(--bs-offcanvas-height);left:0;max-height:100%;right:0}.offcanvas-lg.offcanvas-bottom{border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.show:not(.hiding),.offcanvas-lg.showing{transform:none}.offcanvas-lg.hiding,.offcanvas-lg.show,.offcanvas-lg.showing{visibility:visible}}@media (min-width:992px){.offcanvas-lg{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{background-color:transparent!important;display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (max-width:1199.98px){.offcanvas-xl{background-clip:padding-box;background-color:var(--bs-offcanvas-bg);bottom:0;box-shadow:var(--bs-offcanvas-box-shadow);color:var(--bs-offcanvas-color);display:flex;flex-direction:column;max-width:100%;outline:0;position:fixed;transition:transform .3s ease-in-out;visibility:hidden;z-index:var(--bs-offcanvas-zindex)}}@media (max-width:1199.98px) and (prefers-reduced-motion:reduce){.offcanvas-xl{transition:none}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-start{border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);left:0;top:0;transform:translateX(-100%);width:var(--bs-offcanvas-width)}.offcanvas-xl.offcanvas-end{border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);right:0;top:0;transform:translateX(100%);width:var(--bs-offcanvas-width)}.offcanvas-xl.offcanvas-top{border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);top:0;transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom,.offcanvas-xl.offcanvas-top{height:var(--bs-offcanvas-height);left:0;max-height:100%;right:0}.offcanvas-xl.offcanvas-bottom{border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.show:not(.hiding),.offcanvas-xl.showing{transform:none}.offcanvas-xl.hiding,.offcanvas-xl.show,.offcanvas-xl.showing{visibility:visible}}@media (min-width:1200px){.offcanvas-xl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{background-color:transparent!important;display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (max-width:1399.98px){.offcanvas-xxl{background-clip:padding-box;background-color:var(--bs-offcanvas-bg);bottom:0;box-shadow:var(--bs-offcanvas-box-shadow);color:var(--bs-offcanvas-color);display:flex;flex-direction:column;max-width:100%;outline:0;position:fixed;transition:transform .3s ease-in-out;visibility:hidden;z-index:var(--bs-offcanvas-zindex)}}@media (max-width:1399.98px) and (prefers-reduced-motion:reduce){.offcanvas-xxl{transition:none}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-start{border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);left:0;top:0;transform:translateX(-100%);width:var(--bs-offcanvas-width)}.offcanvas-xxl.offcanvas-end{border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);right:0;top:0;transform:translateX(100%);width:var(--bs-offcanvas-width)}.offcanvas-xxl.offcanvas-top{border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);top:0;transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom,.offcanvas-xxl.offcanvas-top{height:var(--bs-offcanvas-height);left:0;max-height:100%;right:0}.offcanvas-xxl.offcanvas-bottom{border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.show:not(.hiding),.offcanvas-xxl.showing{transform:none}.offcanvas-xxl.hiding,.offcanvas-xxl.show,.offcanvas-xxl.showing{visibility:visible}}@media (min-width:1400px){.offcanvas-xxl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{background-color:transparent!important;display:flex;flex-grow:0;overflow-y:visible;padding:0}}.offcanvas{background-clip:padding-box;background-color:var(--bs-offcanvas-bg);bottom:0;box-shadow:var(--bs-offcanvas-box-shadow);color:var(--bs-offcanvas-color);display:flex;flex-direction:column;max-width:100%;outline:0;position:fixed;transition:transform .3s ease-in-out;visibility:hidden;z-index:var(--bs-offcanvas-zindex)}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);left:0;top:0;transform:translateX(-100%);width:var(--bs-offcanvas-width)}.offcanvas.offcanvas-end{border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);right:0;top:0;transform:translateX(100%);width:var(--bs-offcanvas-width)}.offcanvas.offcanvas-top{border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);top:0;transform:translateY(-100%)}.offcanvas.offcanvas-bottom,.offcanvas.offcanvas-top{height:var(--bs-offcanvas-height);left:0;max-height:100%;right:0}.offcanvas.offcanvas-bottom{border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.show:not(.hiding),.offcanvas.showing{transform:none}.offcanvas.hiding,.offcanvas.show,.offcanvas.showing{visibility:visible}.offcanvas-backdrop{background-color:#000;height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:65}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{align-items:center;display:flex;justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{margin-bottom:calc(var(--bs-offcanvas-padding-y)*-.5);margin-right:calc(var(--bs-offcanvas-padding-x)*-.5);margin-top:calc(var(--bs-offcanvas-padding-y)*-.5);padding:calc(var(--bs-offcanvas-padding-y)*.5) calc(var(--bs-offcanvas-padding-x)*.5)}.offcanvas-title{line-height:1.5;margin-bottom:0}.offcanvas-body{flex-grow:1;overflow-y:auto;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.icon--2xs{height:.75rem;width:.75rem}.icon--xs{height:1rem;width:1rem}.icon--s{height:1.25rem;width:1.25rem}.icon--m{height:1.5rem;width:1.5rem}.icon--l{height:2rem;width:2rem}.icon--xl{height:2.5rem;width:2.5rem}.icon--2xl{height:3rem;width:3rem}.icon--fluid{height:1em;width:1em}.icon--rotate-90{transform:rotate(90deg)}.icon--rotate-180{transform:rotate(180deg)}.icon--rotate-270{transform:rotate(270deg)}.icon--flip-horizontal{transform:scaleX(-1)}.icon--flip-vertical{transform:scaleY(-1)}.icon--file{color:#6d7173}.bcl-search-form .bcl-search-form__input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none'%3E%3Cpath fill='%236C757D' d='M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.646a.5.5 0 0 0 .708.708L8 8.707l2.646 2.647a.5.5 0 0 0 .708-.708L8.707 8l2.647-2.646a.5.5 0 0 0-.708-.708L8 7.293z'/%3E%3C/svg%3E");cursor:pointer;height:1rem;width:1rem}.bcl-search-form .bcl-search-form__group{position:relative}.bcl-search-form.rounded .bcl-search-form__input,.bcl-search-form.rounded .bcl-search-form__submit{border-radius:2rem}.bcl-search-form.submittable .bcl-search-form__input{border-bottom-right-radius:0;border-top-right-radius:0}.bcl-search-form.submittable .bcl-search-form__submit{border-bottom-left-radius:0;border-top-left-radius:0;padding-right:1rem}.bcl-search-form.submittable .bcl-search-form__group{display:flex}.bcl-search-form .form-label{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border:0;visibility:visible;white-space:nowrap}.bcl-search-form .bcl-search-form__icon{left:1rem;position:absolute;top:1rem}@media (min-width:768px){.bcl-search-form .bcl-search-form__icon{top:.6875rem}}.form-select{font-size:1.25rem;padding-bottom:.5rem;padding-left:1rem;padding-top:.5rem}.form-control{border-radius:.3rem;font-size:1.25rem;min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem}.form-control::file-selector-button{margin:-.5rem 1rem -.5rem -1rem;padding:.5rem 1rem}.form-check:not(.form-switch){padding-left:1.8rem}.form-check:not(.form-switch) .form-check-input{height:1.3em;margin-left:-1.8rem;margin-top:.15rem;width:1.3em}@media (min-width:768px){.form-check:not(.form-switch){padding-left:1.5rem}.form-check:not(.form-switch) .form-check-input{height:1em;margin-left:-1.5rem;margin-top:.25rem;width:1em}.form-select{font-size:1rem;padding:.375rem 2.25rem .375rem .75rem}.form-control{border-radius:.25rem;font-size:1rem;min-height:0;padding:.375rem .75rem}.form-control::file-selector-button{margin:-.375rem .75rem -.375rem -.75rem;padding:.375rem .75rem}}.form-control.is-invalid,textarea.form-control.is-invalid{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none'%3E%3Cpath fill='%23D72E3D' d='M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8 4a.905.905 0 0 0-.9.995l.35 3.507a.552.552 0 0 0 1.1 0l.35-3.507A.905.905 0 0 0 8 4m.002 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2'/%3E%3C/svg%3E")}.form-control.is-valid,textarea.form-control.is-valid{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none'%3E%3Cpath fill='%2328A745' d='M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05'/%3E%3C/svg%3E")}.form-select:not([multiple]):not([size]).is-invalid{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3E%3C/svg%3E"),url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none'%3E%3Cpath fill='%23D72E3D' d='M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8 4a.905.905 0 0 0-.9.995l.35 3.507a.552.552 0 0 0 1.1 0l.35-3.507A.905.905 0 0 0 8 4m.002 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2'/%3E%3C/svg%3E")}.form-select:not([multiple]):not([size]).is-valid{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3E%3C/svg%3E"),url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none'%3E%3Cpath fill='%2328A745' d='M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05'/%3E%3C/svg%3E")}.badge{align-items:center;display:inline-flex;font-size:1.125rem;font-weight:400}@media (min-width:768px){.badge{font-size:1rem}}.badge .icon--close{display:inline-flex;margin-left:.5rem}a.badge{text-decoration:none}a.badge:focus-visible{outline:none}.badge.bg-primary,.badge.bg-primary a{color:#fff}.badge-outline-primary,.badge-outline-primary a{color:#143b76!important}.badge-outline-primary{background:transparent!important;border:1px solid #143b76}a.badge:active.badge-outline-primary,a.badge:focus-within.badge-outline-primary,a.badge:hover.badge-outline-primary{background-color:#e8ebf1!important;border-color:#113264!important}a.badge:active.text-bg-primary,a.badge:focus-within.text-bg-primary,a.badge:hover.text-bg-primary{background-color:#113264!important}a.badge.text-bg-primary:focus{box-shadow:inset 0 1px 0 hsla(0,0%,100%,.15),0 1px 1px rgba(0,0,0,.075),0 0 0 .25rem rgba(55,88,139,.5)}a.badge.badge-outline-primary:focus{box-shadow:0 0 0 .25rem rgba(20,59,118,.5)}.badge.bg-secondary,.badge.bg-secondary a{color:#fff}.badge-outline-secondary a{color:#e7f1fb!important}.badge-outline-secondary{background:transparent!important;border:1px solid #e7f1fb;color:#e7f1fb!important}a.badge:active.badge-outline-secondary,a.badge:focus-within.badge-outline-secondary,a.badge:hover.badge-outline-secondary{background-color:#fdfeff!important;border-color:#c4cdd5!important}a.badge:active.text-bg-secondary,a.badge:focus-within.text-bg-secondary,a.badge:hover.text-bg-secondary{background-color:#c4cdd5!important}a.badge.text-bg-secondary:focus{box-shadow:inset 0 1px 0 hsla(0,0%,100%,.15),0 1px 1px rgba(0,0,0,.075),0 0 0 .25rem rgba(196,205,213,.5)}a.badge.badge-outline-secondary:focus{box-shadow:0 0 0 .25rem rgba(231,241,251,.5)}.badge.bg-success,.badge.bg-success a{color:#fff}.badge-outline-success,.badge-outline-success a{color:#18bf80!important}.badge-outline-success{background:transparent!important;border:1px solid #18bf80}a.badge:active.badge-outline-success,a.badge:focus-within.badge-outline-success,a.badge:hover.badge-outline-success{background-color:#e8f9f2!important;border-color:#14a26d!important}a.badge:active.text-bg-success,a.badge:focus-within.text-bg-success,a.badge:hover.text-bg-success{background-color:#14a26d!important}a.badge.text-bg-success:focus{box-shadow:inset 0 1px 0 hsla(0,0%,100%,.15),0 1px 1px rgba(0,0,0,.075),0 0 0 .25rem rgba(20,162,109,.5)}a.badge.badge-outline-success:focus{box-shadow:0 0 0 .25rem rgba(24,191,128,.5)}.badge.bg-info,.badge.bg-info a{color:#fff}.badge-outline-info,.badge-outline-info a{color:#0d768b!important}.badge-outline-info{background:transparent!important;border:1px solid #0d768b}a.badge:active.badge-outline-info,a.badge:focus-within.badge-outline-info,a.badge:hover.badge-outline-info{background-color:#e7f1f3!important;border-color:#0b6476!important}a.badge:active.text-bg-info,a.badge:focus-within.text-bg-info,a.badge:hover.text-bg-info{background-color:#0b6476!important}a.badge.text-bg-info:focus{box-shadow:inset 0 1px 0 hsla(0,0%,100%,.15),0 1px 1px rgba(0,0,0,.075),0 0 0 .25rem rgba(49,139,156,.5)}a.badge.badge-outline-info:focus{box-shadow:0 0 0 .25rem rgba(13,118,139,.5)}.badge.bg-warning,.badge.bg-warning a{color:#000}.badge-outline-warning,.badge-outline-warning a{color:#eba843!important}.badge-outline-warning{background:transparent!important;border:1px solid #eba843}a.badge:active.badge-outline-warning,a.badge:focus-within.badge-outline-warning,a.badge:hover.badge-outline-warning{background-color:#fdf6ec!important;border-color:#c88f39!important}a.badge:active.text-bg-warning,a.badge:focus-within.text-bg-warning,a.badge:hover.text-bg-warning{background-color:#c88f39!important}a.badge.text-bg-warning:focus{box-shadow:inset 0 1px 0 hsla(0,0%,100%,.15),0 1px 1px rgba(0,0,0,.075),0 0 0 .25rem rgba(200,143,57,.5)}a.badge.badge-outline-warning:focus{box-shadow:0 0 0 .25rem rgba(235,168,67,.5)}.badge.bg-danger,.badge.bg-danger a{color:#fff}.badge-outline-danger,.badge-outline-danger a{color:#eb3434!important}.badge-outline-danger{background:transparent!important;border:1px solid #eb3434}a.badge:active.badge-outline-danger,a.badge:focus-within.badge-outline-danger,a.badge:hover.badge-outline-danger{background-color:#fdebeb!important;border-color:#c82c2c!important}a.badge:active.text-bg-danger,a.badge:focus-within.text-bg-danger,a.badge:hover.text-bg-danger{background-color:#c82c2c!important}a.badge.text-bg-danger:focus{box-shadow:inset 0 1px 0 hsla(0,0%,100%,.15),0 1px 1px rgba(0,0,0,.075),0 0 0 .25rem rgba(200,44,44,.5)}a.badge.badge-outline-danger:focus{box-shadow:0 0 0 .25rem rgba(235,52,52,.5)}.badge.bg-light,.badge.bg-light a{color:#000}.badge-outline-light,.badge-outline-light a{color:#f8f9fa!important}.badge-outline-light{background:transparent!important;border:1px solid #f8f9fa}a.badge:active.badge-outline-light,a.badge:focus-within.badge-outline-light,a.badge:hover.badge-outline-light{background:hsla(0,0%,100%,.3)!important;border-color:#fff;color:#fff}a.badge:active.text-bg-light,a.badge:focus-within.text-bg-light,a.badge:hover.text-bg-light{background-color:#d3d4d5!important}a.badge.text-bg-light:focus{box-shadow:inset 0 1px 0 hsla(0,0%,100%,.15),0 1px 1px rgba(0,0,0,.075),0 0 0 .25rem hsla(210,2%,83%,.5)}a.badge.badge-outline-light:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.badge.bg-dark,.badge.bg-dark a{color:#fff}.badge-outline-dark,.badge-outline-dark a{color:#212529!important}.badge-outline-dark{background:transparent!important;border:1px solid #212529}a.badge:active.badge-outline-dark,a.badge:focus-within.badge-outline-dark,a.badge:hover.badge-outline-dark{background-color:#f8f9fa!important;border-color:#000}a.badge:active.text-bg-dark,a.badge:focus-within.text-bg-dark,a.badge:hover.text-bg-dark{background-color:#1c1f23!important}a.badge.text-bg-dark:focus{box-shadow:inset 0 1px 0 hsla(0,0%,100%,.15),0 1px 1px rgba(0,0,0,.075),0 0 0 .25rem rgba(66,70,73,.5)}a.badge.badge-outline-dark:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.badge.bg-brand,.badge.bg-brand a{color:#fff}.badge-outline-brand,.badge-outline-brand a{color:#1073de!important}.badge-outline-brand{background:transparent!important;border:1px solid #1073de}a.badge:active.badge-outline-brand,a.badge:focus-within.badge-outline-brand,a.badge:hover.badge-outline-brand{background-color:#e7f1fc!important;border-color:#0e62bd!important}a.badge:active.text-bg-brand,a.badge:focus-within.text-bg-brand,a.badge:hover.text-bg-brand{background-color:#0e62bd!important}a.badge.text-bg-brand:focus{box-shadow:inset 0 1px 0 hsla(0,0%,100%,.15),0 1px 1px rgba(0,0,0,.075),0 0 0 .25rem rgba(52,136,227,.5)}a.badge.badge-outline-brand:focus{box-shadow:0 0 0 .25rem rgba(16,115,222,.5)}.ss-main{color:#666;display:inline-block;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%}.ss-main .ss-single-selected{background-color:#fff;border:1px solid #dcdee2;border-radius:4px;box-sizing:border-box;cursor:pointer;display:flex;height:30px;outline:0;padding:6px;transition:background-color .2s;width:100%}.ss-main .ss-single-selected.ss-disabled{background-color:#dcdee2;cursor:not-allowed}.ss-main .ss-single-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}.ss-main .ss-single-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}.ss-main .ss-single-selected .placeholder{flex:1 1 100%;line-height:1em;text-align:left;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:calc(100% - 30px)}.ss-main .ss-single-selected .placeholder,.ss-main .ss-single-selected .placeholder *{align-items:center;display:flex;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ss-main .ss-single-selected .placeholder *{width:auto}.ss-main .ss-single-selected .placeholder .ss-disabled{color:#dedede}.ss-main .ss-single-selected .ss-deselect{align-items:center;display:flex;flex:0 1 auto;font-weight:700;justify-content:flex-end;margin:0 6px}.ss-main .ss-single-selected .ss-deselect.ss-hide{display:none}.ss-main .ss-single-selected .ss-arrow{align-items:center;display:flex;flex:0 1 auto;justify-content:flex-end;margin:0 6px}.ss-main .ss-single-selected .ss-arrow span{border:solid #666;border-width:0 2px 2px 0;display:inline-block;padding:3px;transition:transform .2s,margin .2s}.ss-main .ss-single-selected .ss-arrow span.arrow-up{margin:3px 0 0;transform:rotate(-135deg)}.ss-main .ss-single-selected .ss-arrow span.arrow-down{margin:-3px 0 0;transform:rotate(45deg)}.ss-main .ss-multi-selected{background-color:#fff;border:1px solid #dcdee2;border-radius:4px;box-sizing:border-box;cursor:pointer;display:flex;flex-direction:row;min-height:30px;outline:0;padding:0 0 0 3px;transition:background-color .2s;width:100%}.ss-main .ss-multi-selected.ss-disabled{background-color:#dcdee2;cursor:not-allowed}.ss-main .ss-multi-selected.ss-disabled .ss-values .ss-disabled{color:#666}.ss-main .ss-multi-selected.ss-disabled .ss-values .ss-value .ss-value-delete{cursor:not-allowed}.ss-main .ss-multi-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}.ss-main .ss-multi-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}.ss-main .ss-multi-selected .ss-values{display:flex;flex:1 1 100%;flex-wrap:wrap;justify-content:flex-start;width:calc(100% - 30px)}.ss-main .ss-multi-selected .ss-values .ss-disabled{align-items:center;color:#dedede;display:flex;line-height:1em;margin:2px 0;overflow:hidden;padding:4px 5px;text-overflow:ellipsis;white-space:nowrap;width:100%}@keyframes scaleIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.ss-main .ss-multi-selected .ss-values .ss-value{align-items:center;animation-duration:.2s;animation-fill-mode:both;animation-name:scaleIn;animation-timing-function:ease-out;background-color:#143b76;border-radius:4px;color:#fff;display:flex;font-size:12px;margin:3px 5px 3px 0;padding:3px 5px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ss-main .ss-multi-selected .ss-values .ss-value.ss-out{animation-duration:.2s;animation-name:scaleOut;animation-timing-function:ease-out}.ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete{cursor:pointer;margin:0 0 0 5px}.ss-main .ss-multi-selected .ss-add{display:flex;flex:0 1 3px;margin:9px 12px 0 5px}.ss-main .ss-multi-selected .ss-add .ss-plus{align-items:center;background:#666;display:flex;height:10px;justify-content:center;position:relative;transition:transform .2s;width:2px}.ss-main .ss-multi-selected .ss-add .ss-plus:after{background:#666;content:"";height:2px;left:-4px;position:absolute;top:4px;width:10px}.ss-main .ss-multi-selected .ss-add .ss-plus.ss-cross{transform:rotate(45deg)}.ss-content{background-color:#fff;border:1px solid #dcdee2;box-sizing:border-box;margin:-1px 0 0;opacity:0;position:absolute;transform:scaleY(0);transform-origin:center top;transition:transform .2s,opacity .2s;width:100%;z-index:1010}.ss-content.ss-open{display:block;opacity:1;transform:scaleY(1)}.ss-content .ss-search{display:flex;flex-direction:row;padding:8px 8px 6px}.ss-content .ss-search.ss-hide,.ss-content .ss-search.ss-hide input{height:0;margin:0;opacity:0;padding:0}.ss-content .ss-search input{-webkit-appearance:textfield;background-color:#fff;border:1px solid #dcdee2;border-radius:4px;box-sizing:border-box;-webkit-box-sizing:border-box;display:inline-flex;flex:1 1 auto;font-size:inherit;height:30px;line-height:inherit;margin:0;min-width:0;outline:0;padding:6px 8px;text-align:left;width:100%}.ss-content .ss-search input::-moz-placeholder{color:#8a8a8a;vertical-align:middle}.ss-content .ss-search input::placeholder{color:#8a8a8a;vertical-align:middle}.ss-content .ss-search input:focus{box-shadow:0 0 5px #143b76}.ss-content .ss-search .ss-addable{align-items:center;border:1px solid #dcdee2;border-radius:4px;box-sizing:border-box;cursor:pointer;display:inline-flex;flex:0 0 30px;font-size:22px;font-weight:700;height:30px;justify-content:center;margin:0 0 0 8px}.ss-content .ss-addable{padding-top:0}.ss-content .ss-list{max-height:200px;overflow-x:hidden;overflow-y:auto;text-align:left}.ss-content .ss-list .ss-optgroup .ss-optgroup-label{font-weight:700;padding:6px 10px}.ss-content .ss-list .ss-optgroup .ss-option{padding:6px 6px 6px 25px}.ss-content .ss-list .ss-optgroup-label-selectable{cursor:pointer}.ss-content .ss-list .ss-optgroup-label-selectable:hover{background-color:#143b76;color:#fff}.ss-content .ss-list .ss-option{cursor:pointer;padding:6px 10px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ss-content .ss-list .ss-option *{display:inline-block}.ss-content .ss-list .ss-option.ss-highlighted,.ss-content .ss-list .ss-option:hover{background-color:#143b76;color:#fff}.ss-content .ss-list .ss-option.ss-disabled{background-color:#fff;color:#dedede;cursor:not-allowed}.ss-content .ss-list .ss-option:not(.ss-disabled).ss-option-selected{background-color:rgba(20,59,118,.1);color:#666}.ss-content .ss-list .ss-option.ss-hide{display:none}.ss-content .ss-list .ss-option .ss-search-highlight{background-color:#fffb8c}select.multi-select{display:inline-block!important;max-height:35px;max-width:0;opacity:0;pointer-events:none;position:absolute}.ss-main.multi-select{padding:0}.ss-main.multi-select.form-select.is-invalid,.ss-main.multi-select.form-select.is-valid{background:none;padding:0}.ss-main.multi-select .ss-values{font-size:1.125rem}.ss-main.multi-select .ss-values .ss-value{border-radius:.375rem;color:#fff;display:inline-block;font-size:1.125rem;font-weight:400;line-height:1;padding:.35em .65em;text-align:left;vertical-align:baseline;white-space:normal}.ss-main.multi-select .ss-values .ss-value .ss-value-delete{font-size:0}.ss-main.multi-select .ss-values .ss-value .ss-value-delete:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='17' fill='none'%3E%3Cpath fill='%23F8F9FA' fill-rule='evenodd' d='M16 8.5a8 8 0 1 1-16 0 8 8 0 0 1 16 0M5.354 5.146a.5.5 0 1 0-.708.708L7.293 8.5l-2.647 2.646a.5.5 0 0 0 .708.708L8 9.207l2.646 2.647a.5.5 0 0 0 .708-.708L8.707 8.5l2.647-2.646a.5.5 0 0 0-.708-.708L8 7.793z' clip-rule='evenodd'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;border-radius:50%;bottom:calc(50% - 3px);content:"";display:inline-block;height:1rem;padding:15px;position:absolute;right:0;transform:scale(.8) translateY(50%);width:1rem}.ss-main.multi-select .ss-values .ss-value .ss-value-delete:focus-visible:after{outline:2px solid #fff;outline-offset:-6px}.ss-main.multi-select .ss-values .ss-disabled{font-size:1rem;padding-bottom:calc(.5rem - 1px);padding-top:calc(.5rem - 1px)}.ss-main.multi-select .ss-multi-selected{border-color:#a2a8ab;padding:calc(.5rem - 2px) 0 calc(.5rem - 2px) .3rem}.ss-main.multi-select .ss-multi-selected.ss-disabled .ss-values .ss-value{background:#858a8c}.ss-main.multi-select .ss-multi-selected .ss-add{align-self:center;margin-top:0}.ss-main.multi-select .ss-multi-selected .ss-values .ss-disabled{color:#6c757d}.ss-main.multi-select.is-invalid .ss-multi-selected,.ss-main.multi-select.is-valid .ss-multi-selected,.was-validated .multi-select:invalid+.ss-main.multi-select .ss-multi-selected,.was-validated .multi-select:valid+.ss-main.multi-select .ss-multi-selected{background-position:right 1.5rem center;background-repeat:no-repeat;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.ss-main.multi-select.is-invalid .ss-multi-selected,.was-validated .multi-select:invalid+.ss-main.multi-select .ss-multi-selected{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none'%3E%3Cpath fill='%23D72E3D' d='M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8 4a.905.905 0 0 0-.9.995l.35 3.507a.552.552 0 0 0 1.1 0l.35-3.507A.905.905 0 0 0 8 4m.002 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2'/%3E%3C/svg%3E");border-color:#eb3434}.ss-main.multi-select.is-invalid .ss-values .ss-value,.was-validated .multi-select:invalid+.ss-main.multi-select .ss-values .ss-value{background:#eb3434}.ss-main.multi-select.is-valid .ss-multi-selected,.was-validated .multi-select:valid+.ss-main.multi-select .ss-multi-selected{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none'%3E%3Cpath fill='%2328A745' d='M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05'/%3E%3C/svg%3E");border-color:#18bf80}.ss-main.multi-select.is-valid .ss-values .ss-value,.was-validated .multi-select:valid+.ss-main.multi-select .ss-values .ss-value{background:#18bf80}@media (min-width:768px){.ss-main.multi-select .ss-multi-selected{padding:.075rem 0 .075rem .3rem}.ss-main.multi-select .ss-values,.ss-main.multi-select .ss-values .ss-value{font-size:1rem}.ss-main.multi-select .ss-values .ss-disabled{padding-bottom:calc(.5rem - 2px);padding-top:calc(.5rem - 1px)}.ss-main.multi-select.is-invalid .ss-multi-selected,.ss-main.multi-select.is-valid .ss-multi-selected,.was-validated .multi-select:invalid+.ss-main.multi-select .ss-multi-selected,.was-validated .multi-select:valid+.ss-main.multi-select .ss-multi-selected{background-position:right 1.6rem center}}input:hover{color:#1073de}.eu-oss-catalogue .btn-secondary{background-color:#e8f3f0;color:#19764f}.eu-oss-catalogue .btn-secondary:hover{background-color:#e8f3f0}.eu-oss-catalogue .bg-brand{background-color:#19764f!important}.eu-oss-catalogue .bg-secondary{background-color:#e8f3f0!important}.eu-oss-catalogue .btn-link,.eu-oss-catalogue .button--link,.eu-oss-catalogue .catalogue-link>a{color:#19764f!important}.eu-oss-catalogue .btn-brand,.eu-oss-catalogue .btn-primary{background-color:#249866!important;border:1px solid #1f8358}.eu-oss-catalogue .btn-outline-brand{border:1px solid #249866;color:#249866}.eu-oss-catalogue .btn-outline-brand:hover{background-color:#249866;color:#fff}.eu-oss-catalogue .text-bg-primary{background-color:#e8f3f0!important}.eu-oss-catalogue .text-bg-primary.badge{color:#249866!important}.eu-oss-catalogue .text-secondary{color:#19764f!important}.eu-oss-catalogue .oss__instructions .layout__region--first:before{background-color:#e8f3f0}.eu-oss-catalogue .oss__instructions .layout__region--first .paragraph h3:before{background-color:#19764f}.eu-oss-catalogue .oss__social .paragraph--call-to-action a{background-color:transparent!important}.eu-oss-catalogue .oss__social .paragraph--call-to-action a:before{background-color:#249866}.eu-oss-catalogue .joinup-search-filters .facets-checkbox{-webkit-appearance:none;-moz-appearance:none;appearance:none}.eu-oss-catalogue .joinup-search-filters .facets-checkbox:checked[type=checkbox]{background-color:#249866;border-color:#1f8358}.eu-oss-catalogue .joinup-search-filters .facets-soft-limit-link{color:#249866}.eu-oss-catalogue .joinup-search-filters .facets-soft-limit-link:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%23249866' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m2 5 6 6 6-6'/%3E%3C/svg%3E");display:inline-block}.eu-oss-catalogue .view-search-oss-catalogue .js-form-item .btn-search{background-color:#249866}.eu-oss-catalogue .pagination .page-item .page-link{color:#249866}.eu-oss-catalogue .pagination .page-item .page-link:hover{background-color:#e8f3f0}.eu-oss-catalogue .pagination .page-item .page-link .bi{color:#249866}.eu-oss-catalogue .pagination .page-item.active .page-link{background-color:#e8f3f0;color:#249866}.eu-oss-catalogue .catalogue-source ul{list-style-type:none;padding-left:0}.joinup-search-filters .bcl-offcanvas{box-shadow:none;z-index:503}.joinup-search-filters .bcl-offcanvas:before{content:"";height:100%;position:absolute;right:0;width:100vw;z-index:-10}@media (min-width:992px){.joinup-search-filters .bcl-offcanvas:before{background:#f5f6f7}}.joinup-search-filters .bcl-offcanvas .offcanvas-title{font-size:1.25rem;font-weight:400;margin-bottom:1rem}@media (min-width:992px){.joinup-search-filters .bcl-offcanvas .offcanvas-title{font-size:1.125rem;padding-top:1.5rem}.joinup-search-filters .bcl-offcanvas{border:none;position:relative;transform:none;visibility:visible;width:auto;z-index:49}}.joinup-search-filters .facets-widget-checkbox{border-bottom:1px solid #858a8c;margin-bottom:1.5rem;padding-bottom:1.5rem}.joinup-search-filters .facets-widget-checkbox h3{color:#000;font-size:1.125rem;font-weight:400;text-transform:uppercase}@media (min-width:992px){.joinup-search-filters .facets-widget-checkbox h3{font-size:1rem}}.joinup-search-filters .facets-soft-limit-link{display:inline-block;margin-top:.5rem;text-align:right;width:100%}.joinup-search-filters .facets-soft-limit-link:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%231073de' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m2 5 6 6 6-6'/%3E%3C/svg%3E");background-position:100%;background-repeat:no-repeat;background-size:1em 1em;color:#e7f1fb;content:"";display:inline-block;height:1em;margin-left:.25rem;transition:transform .5s;vertical-align:middle;width:1em}.joinup-search-filters .facets-soft-limit-link.open:after{transform:rotate(180deg)}.joinup-search-filters .item-list__checkbox,.joinup-search-filters .item-list__date_range{list-style:none;margin-bottom:0;max-height:410px;overflow-y:auto;padding:3px 0 0 3px}.joinup-search-filters .facets-widget- ul{list-style:none;padding-left:1rem}.joinup-search-filters .facets-checkbox{background-position:50%;background-repeat:no-repeat;background-size:contain;border:1px solid rgba(0,0,0,.25);border-radius:.25em;height:1rem;margin-right:.5rem;width:1rem}.joinup-search-filters .facets-checkbox:checked[type=checkbox]{background-color:#143b76;background-image:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path fill="none" stroke="%23fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="m6 10 3 3 6-6"/></svg>');border-color:#143b76}.joinup-search-filters .facet-item:not(:last-child){margin-bottom:.75rem}.joinup-search-filters .facet-item:not(:last-child) .facets-widget-{margin-top:.75rem}.joinup-search-filters .facet-item label{display:inline}.joinup-search-filters .facets-widget-date_range h3{font-size:1rem;font-weight:400;margin-bottom:1rem;text-transform:uppercase}.joinup-search-filters .facets-widget-date_range li{margin-bottom:1.5rem}.js-form-type-select.form-item-topic .form-select.ss-main{padding:0}.js-form-type-select.form-item-topic .form-select.ss-main .ss-multi-selected{background:none;border:none}.js-form-type-select.form-item-topic .form-select.ss-main .ss-multi-selected .ss-values{padding:.4rem}.js-form-type-select.form-item-topic .form-select.ss-main .ss-multi-selected .ss-values .ss-value{border-radius:50rem;font-size:.875rem;margin:2px 10px 2px 0;padding:2px 1rem}.js-form-type-select.form-item-topic .form-select.ss-main .ss-multi-selected .ss-values .ss-disabled{color:#a2a8ab;padding:2px 0}.js-form-type-select.form-item-topic .form-select.ss-main .ss-multi-selected .ss-add{display:none}.js-form-type-select.form-item-topic .form-select.ss-main .ss-content .ss-search input{border-color:#8a9dbb;height:auto}.js-form-type-select.form-item-topic .form-select.ss-main .ss-content .ss-search input:focus{box-shadow:none}.js-form-type-select.form-item-topic .form-select.ss-main .ss-content .ss-option:hover{background-color:#e7f1fb;color:#242626}.js-form-type-select.form-item-topic .form-select.ss-main .ss-content .ss-option.ss-disabled,.js-form-type-select.form-item-topic .form-select.ss-main .ss-content .ss-option.ss-disabled:hover{background:none;color:#a2a8ab}.js-form-type-select.form-item-topic .form-select.ss-main .ss-open{border-color:#8a9dbb}.js .js-form-item input.form-autocomplete{background-position:calc(100% - 10px)}.js .js-form-item .btn-search{background-color:#143b76;font-size:0;padding-left:1.2rem;padding-right:1.2rem}.js .js-form-item .btn-search:before{background-color:#fff;content:"";display:inline-block;font-size:1rem;height:1em;-webkit-mask-image:url(../icons/search.svg);mask-image:url(../icons/search.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:-.125em;width:1em}.ui-widget.search-api-autocomplete-search{background-color:#fafbfc;border:1px solid #1073de;border-radius:0 0 4px 4px;z-index:1046}.ui-widget.search-api-autocomplete-search .ui-menu-item .ui-menu-item-wrapper{display:block;padding:.2rem 1rem}.ui-widget.search-api-autocomplete-search .ui-menu-item .ui-menu-item-wrapper .search-api-autocomplete-suggestion{color:#6d7173}.ui-widget.search-api-autocomplete-search .ui-menu-item .ui-menu-item-wrapper.ui-state-active{background-color:#e7f1fb}.ui-widget.search-api-autocomplete-search .ui-menu-item .ui-menu-item-wrapper.ui-state-active .search-api-autocomplete-suggestion{background:none}.view-search .view-header .views-exposed-form{align-items:center;color:#143b76;display:flex;flex-wrap:wrap;justify-content:space-between}.view-search .view-header .views-exposed-form .form-item-keys{flex-basis:100%;margin-bottom:1rem!important}.view-search .view-header .views-exposed-form .form-item-keys label{overflow:hidden;position:absolute!important;clip:rect(1px,1px,1px,1px);height:1px;width:1px;word-wrap:normal}@media (min-width:768px){.view-search .view-header .views-exposed-form .form-item-keys{margin-bottom:3rem!important}}.view-search .view-header .views-exposed-form .form-item-results-count{color:#143b76;text-transform:uppercase}@media (min-width:768px){.view-search .view-header .views-exposed-form .form-item-results-count{flex-basis:60%}}.view-search .view-header .views-exposed-form .form-item-sort-by{align-items:baseline;display:flex}.view-search .view-header .views-exposed-form .form-item-sort-by .form-label{margin-right:8px}.view-search .view-header .views-exposed-form .form-item-sort-by .form-select{width:auto}@media (min-width:768px){.view-search .view-header .views-exposed-form .form-item-sort-by{flex-basis:40%;justify-content:end}}@media (min-width:992px){.view-search .view-header .views-exposed-form{margin-top:1rem}}.view-search .view-header .block-facets-summary{margin-top:2rem}.view-search .view-header .block-facets-summary ul{display:flex;flex-wrap:wrap;list-style:none;padding-left:0} +.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:0.5rem;--bs-card-border-width:1px;--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:0.375rem;--bs-card-box-shadow: ;--bs-card-inner-border-radius:calc(0.375rem - 1px);--bs-card-cap-padding-y:0.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(0,0,0,.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:#fff;--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:0.75rem;display:flex;flex-direction:column;height:var(--bs-card-height);min-width:0;position:relative;word-wrap:break-word;background-clip:border-box;background-color:var(--bs-card-bg);border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius);box-shadow:var(--bs-card-box-shadow)}.card>hr{margin-left:0;margin-right:0}.card>.list-group{border-bottom:inherit;border-top:inherit}.card>.list-group:first-child{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius);border-top-width:0}.card>.list-group:last-child{border-bottom-left-radius:var(--bs-card-inner-border-radius);border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-width:0}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{color:var(--bs-card-color);flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x)}.card-title{margin-bottom:var(--bs-card-title-spacer-y)}.card-subtitle{margin-top:calc(var(--bs-card-title-spacer-y)*-.5)}.card-subtitle,.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color);color:var(--bs-card-cap-color);margin-bottom:0;padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color);color:var(--bs-card-cap-color);padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{border-bottom:0;margin-bottom:calc(var(--bs-card-cap-padding-y)*-1);margin-left:calc(var(--bs-card-cap-padding-x)*-.5);margin-right:calc(var(--bs-card-cap-padding-x)*-.5)}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-left:calc(var(--bs-card-cap-padding-x)*-.5);margin-right:calc(var(--bs-card-cap-padding-x)*-.5)}.card-img-overlay{border-radius:var(--bs-card-inner-border-radius);bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);position:absolute;right:0;top:0}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-left-radius:var(--bs-card-inner-border-radius);border-bottom-right-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{border-left:0;margin-left:0}.card-group>.card:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.btn-close{background:transparent url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414'/%3E%3C/svg%3E") 50%/1em auto no-repeat;border:0;border-radius:.5rem;box-sizing:content-box;color:#000;height:1em;opacity:.5;padding:.25em;width:1em}.btn-close:hover{color:#000;opacity:.75;text-decoration:none}.btn-close:focus{box-shadow:0 0 0 .25rem rgba(20,59,118,.25);opacity:1;outline:0}.btn-close.disabled,.btn-close:disabled{opacity:.25;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.badge{--bs-badge-padding-x:0.65em;--bs-badge-padding-y:0.35em;--bs-badge-font-size:1.125rem;--bs-badge-font-weight:400;--bs-badge-color:#fff;--bs-badge-border-radius:0.375rem;border-radius:var(--bs-badge-border-radius);color:var(--bs-badge-color);display:inline-block;font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);text-align:center;vertical-align:baseline;white-space:nowrap}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl,.offcanvas-xxl{--bs-offcanvas-zindex:70;--bs-offcanvas-width:400px;--bs-offcanvas-height:30vh;--bs-offcanvas-padding-x:1rem;--bs-offcanvas-padding-y:1rem;--bs-offcanvas-color: ;--bs-offcanvas-bg:#fff;--bs-offcanvas-border-width:1px;--bs-offcanvas-border-color:var(--bs-border-color-translucent);--bs-offcanvas-box-shadow:0 0.125rem 0.25rem rgba(0,0,0,.075)}@media (max-width:575.98px){.offcanvas-sm{background-clip:padding-box;background-color:var(--bs-offcanvas-bg);bottom:0;box-shadow:var(--bs-offcanvas-box-shadow);color:var(--bs-offcanvas-color);display:flex;flex-direction:column;max-width:100%;outline:0;position:fixed;transition:transform .3s ease-in-out;visibility:hidden;z-index:var(--bs-offcanvas-zindex)}}@media (max-width:575.98px) and (prefers-reduced-motion:reduce){.offcanvas-sm{transition:none}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-start{border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);left:0;top:0;transform:translateX(-100%);width:var(--bs-offcanvas-width)}.offcanvas-sm.offcanvas-end{border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);right:0;top:0;transform:translateX(100%);width:var(--bs-offcanvas-width)}.offcanvas-sm.offcanvas-top{border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);top:0;transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom,.offcanvas-sm.offcanvas-top{height:var(--bs-offcanvas-height);left:0;max-height:100%;right:0}.offcanvas-sm.offcanvas-bottom{border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.show:not(.hiding),.offcanvas-sm.showing{transform:none}.offcanvas-sm.hiding,.offcanvas-sm.show,.offcanvas-sm.showing{visibility:visible}}@media (min-width:576px){.offcanvas-sm{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{background-color:transparent!important;display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (max-width:767.98px){.offcanvas-md{background-clip:padding-box;background-color:var(--bs-offcanvas-bg);bottom:0;box-shadow:var(--bs-offcanvas-box-shadow);color:var(--bs-offcanvas-color);display:flex;flex-direction:column;max-width:100%;outline:0;position:fixed;transition:transform .3s ease-in-out;visibility:hidden;z-index:var(--bs-offcanvas-zindex)}}@media (max-width:767.98px) and (prefers-reduced-motion:reduce){.offcanvas-md{transition:none}}@media (max-width:767.98px){.offcanvas-md.offcanvas-start{border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);left:0;top:0;transform:translateX(-100%);width:var(--bs-offcanvas-width)}.offcanvas-md.offcanvas-end{border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);right:0;top:0;transform:translateX(100%);width:var(--bs-offcanvas-width)}.offcanvas-md.offcanvas-top{border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);top:0;transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom,.offcanvas-md.offcanvas-top{height:var(--bs-offcanvas-height);left:0;max-height:100%;right:0}.offcanvas-md.offcanvas-bottom{border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.show:not(.hiding),.offcanvas-md.showing{transform:none}.offcanvas-md.hiding,.offcanvas-md.show,.offcanvas-md.showing{visibility:visible}}@media (min-width:768px){.offcanvas-md{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{background-color:transparent!important;display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (max-width:991.98px){.offcanvas-lg{background-clip:padding-box;background-color:var(--bs-offcanvas-bg);bottom:0;box-shadow:var(--bs-offcanvas-box-shadow);color:var(--bs-offcanvas-color);display:flex;flex-direction:column;max-width:100%;outline:0;position:fixed;transition:transform .3s ease-in-out;visibility:hidden;z-index:var(--bs-offcanvas-zindex)}}@media (max-width:991.98px) and (prefers-reduced-motion:reduce){.offcanvas-lg{transition:none}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-start{border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);left:0;top:0;transform:translateX(-100%);width:var(--bs-offcanvas-width)}.offcanvas-lg.offcanvas-end{border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);right:0;top:0;transform:translateX(100%);width:var(--bs-offcanvas-width)}.offcanvas-lg.offcanvas-top{border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);top:0;transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom,.offcanvas-lg.offcanvas-top{height:var(--bs-offcanvas-height);left:0;max-height:100%;right:0}.offcanvas-lg.offcanvas-bottom{border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.show:not(.hiding),.offcanvas-lg.showing{transform:none}.offcanvas-lg.hiding,.offcanvas-lg.show,.offcanvas-lg.showing{visibility:visible}}@media (min-width:992px){.offcanvas-lg{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{background-color:transparent!important;display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (max-width:1199.98px){.offcanvas-xl{background-clip:padding-box;background-color:var(--bs-offcanvas-bg);bottom:0;box-shadow:var(--bs-offcanvas-box-shadow);color:var(--bs-offcanvas-color);display:flex;flex-direction:column;max-width:100%;outline:0;position:fixed;transition:transform .3s ease-in-out;visibility:hidden;z-index:var(--bs-offcanvas-zindex)}}@media (max-width:1199.98px) and (prefers-reduced-motion:reduce){.offcanvas-xl{transition:none}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-start{border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);left:0;top:0;transform:translateX(-100%);width:var(--bs-offcanvas-width)}.offcanvas-xl.offcanvas-end{border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);right:0;top:0;transform:translateX(100%);width:var(--bs-offcanvas-width)}.offcanvas-xl.offcanvas-top{border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);top:0;transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom,.offcanvas-xl.offcanvas-top{height:var(--bs-offcanvas-height);left:0;max-height:100%;right:0}.offcanvas-xl.offcanvas-bottom{border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.show:not(.hiding),.offcanvas-xl.showing{transform:none}.offcanvas-xl.hiding,.offcanvas-xl.show,.offcanvas-xl.showing{visibility:visible}}@media (min-width:1200px){.offcanvas-xl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{background-color:transparent!important;display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (max-width:1399.98px){.offcanvas-xxl{background-clip:padding-box;background-color:var(--bs-offcanvas-bg);bottom:0;box-shadow:var(--bs-offcanvas-box-shadow);color:var(--bs-offcanvas-color);display:flex;flex-direction:column;max-width:100%;outline:0;position:fixed;transition:transform .3s ease-in-out;visibility:hidden;z-index:var(--bs-offcanvas-zindex)}}@media (max-width:1399.98px) and (prefers-reduced-motion:reduce){.offcanvas-xxl{transition:none}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-start{border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);left:0;top:0;transform:translateX(-100%);width:var(--bs-offcanvas-width)}.offcanvas-xxl.offcanvas-end{border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);right:0;top:0;transform:translateX(100%);width:var(--bs-offcanvas-width)}.offcanvas-xxl.offcanvas-top{border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);top:0;transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom,.offcanvas-xxl.offcanvas-top{height:var(--bs-offcanvas-height);left:0;max-height:100%;right:0}.offcanvas-xxl.offcanvas-bottom{border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.show:not(.hiding),.offcanvas-xxl.showing{transform:none}.offcanvas-xxl.hiding,.offcanvas-xxl.show,.offcanvas-xxl.showing{visibility:visible}}@media (min-width:1400px){.offcanvas-xxl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{background-color:transparent!important;display:flex;flex-grow:0;overflow-y:visible;padding:0}}.offcanvas{background-clip:padding-box;background-color:var(--bs-offcanvas-bg);bottom:0;box-shadow:var(--bs-offcanvas-box-shadow);color:var(--bs-offcanvas-color);display:flex;flex-direction:column;max-width:100%;outline:0;position:fixed;transition:transform .3s ease-in-out;visibility:hidden;z-index:var(--bs-offcanvas-zindex)}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);left:0;top:0;transform:translateX(-100%);width:var(--bs-offcanvas-width)}.offcanvas.offcanvas-end{border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);right:0;top:0;transform:translateX(100%);width:var(--bs-offcanvas-width)}.offcanvas.offcanvas-top{border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);top:0;transform:translateY(-100%)}.offcanvas.offcanvas-bottom,.offcanvas.offcanvas-top{height:var(--bs-offcanvas-height);left:0;max-height:100%;right:0}.offcanvas.offcanvas-bottom{border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.show:not(.hiding),.offcanvas.showing{transform:none}.offcanvas.hiding,.offcanvas.show,.offcanvas.showing{visibility:visible}.offcanvas-backdrop{background-color:#000;height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:65}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{align-items:center;display:flex;justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{margin-bottom:calc(var(--bs-offcanvas-padding-y)*-.5);margin-right:calc(var(--bs-offcanvas-padding-x)*-.5);margin-top:calc(var(--bs-offcanvas-padding-y)*-.5);padding:calc(var(--bs-offcanvas-padding-y)*.5) calc(var(--bs-offcanvas-padding-x)*.5)}.offcanvas-title{line-height:1.5;margin-bottom:0}.offcanvas-body{flex-grow:1;overflow-y:auto;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.icon--2xs{height:.75rem;width:.75rem}.icon--xs{height:1rem;width:1rem}.icon--s{height:1.25rem;width:1.25rem}.icon--m{height:1.5rem;width:1.5rem}.icon--l{height:2rem;width:2rem}.icon--xl{height:2.5rem;width:2.5rem}.icon--2xl{height:3rem;width:3rem}.icon--fluid{height:1em;width:1em}.icon--rotate-90{transform:rotate(90deg)}.icon--rotate-180{transform:rotate(180deg)}.icon--rotate-270{transform:rotate(270deg)}.icon--flip-horizontal{transform:scaleX(-1)}.icon--flip-vertical{transform:scaleY(-1)}.icon--file{color:#6d7173}.bcl-search-form .bcl-search-form__input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none'%3E%3Cpath fill='%236C757D' d='M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.646a.5.5 0 0 0 .708.708L8 8.707l2.646 2.647a.5.5 0 0 0 .708-.708L8.707 8l2.647-2.646a.5.5 0 0 0-.708-.708L8 7.293z'/%3E%3C/svg%3E");cursor:pointer;height:1rem;width:1rem}.bcl-search-form .bcl-search-form__group{position:relative}.bcl-search-form.rounded .bcl-search-form__input,.bcl-search-form.rounded .bcl-search-form__submit{border-radius:2rem}.bcl-search-form.submittable .bcl-search-form__input{border-bottom-right-radius:0;border-top-right-radius:0}.bcl-search-form.submittable .bcl-search-form__submit{border-bottom-left-radius:0;border-top-left-radius:0;padding-right:1rem}.bcl-search-form.submittable .bcl-search-form__group{display:flex}.bcl-search-form .form-label{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border:0;visibility:visible;white-space:nowrap}.bcl-search-form .bcl-search-form__icon{left:1rem;position:absolute;top:1rem}@media (min-width:768px){.bcl-search-form .bcl-search-form__icon{top:.6875rem}}.form-select{font-size:1.25rem;padding-bottom:.5rem;padding-left:1rem;padding-top:.5rem}.form-control{border-radius:.3rem;font-size:1.25rem;min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem}.form-control::file-selector-button{margin:-.5rem 1rem -.5rem -1rem;padding:.5rem 1rem}.form-check:not(.form-switch){padding-left:1.8rem}.form-check:not(.form-switch) .form-check-input{height:1.3em;margin-left:-1.8rem;margin-top:.15rem;width:1.3em}@media (min-width:768px){.form-check:not(.form-switch){padding-left:1.5rem}.form-check:not(.form-switch) .form-check-input{height:1em;margin-left:-1.5rem;margin-top:.25rem;width:1em}.form-select{font-size:1rem;padding:.375rem 2.25rem .375rem .75rem}.form-control{border-radius:.25rem;font-size:1rem;min-height:0;padding:.375rem .75rem}.form-control::file-selector-button{margin:-.375rem .75rem -.375rem -.75rem;padding:.375rem .75rem}}.form-control.is-invalid,textarea.form-control.is-invalid{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none'%3E%3Cpath fill='%23D72E3D' d='M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8 4a.905.905 0 0 0-.9.995l.35 3.507a.552.552 0 0 0 1.1 0l.35-3.507A.905.905 0 0 0 8 4m.002 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2'/%3E%3C/svg%3E")}.form-control.is-valid,textarea.form-control.is-valid{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none'%3E%3Cpath fill='%2328A745' d='M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05'/%3E%3C/svg%3E")}.form-select:not([multiple]):not([size]).is-invalid{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3E%3C/svg%3E"),url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none'%3E%3Cpath fill='%23D72E3D' d='M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8 4a.905.905 0 0 0-.9.995l.35 3.507a.552.552 0 0 0 1.1 0l.35-3.507A.905.905 0 0 0 8 4m.002 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2'/%3E%3C/svg%3E")}.form-select:not([multiple]):not([size]).is-valid{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3E%3C/svg%3E"),url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none'%3E%3Cpath fill='%2328A745' d='M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05'/%3E%3C/svg%3E")}.badge{align-items:center;display:inline-flex;font-size:1.125rem;font-weight:400}@media (min-width:768px){.badge{font-size:1rem}}.badge .icon--close{display:inline-flex;margin-left:.5rem}a.badge{text-decoration:none}a.badge:focus-visible{outline:none}.badge.bg-primary,.badge.bg-primary a{color:#fff}.badge-outline-primary,.badge-outline-primary a{color:#143b76!important}.badge-outline-primary{background:transparent!important;border:1px solid #143b76}a.badge:active.badge-outline-primary,a.badge:focus-within.badge-outline-primary,a.badge:hover.badge-outline-primary{background-color:#e8ebf1!important;border-color:#113264!important}a.badge:active.text-bg-primary,a.badge:focus-within.text-bg-primary,a.badge:hover.text-bg-primary{background-color:#113264!important}a.badge.text-bg-primary:focus{box-shadow:inset 0 1px 0 hsla(0,0%,100%,.15),0 1px 1px rgba(0,0,0,.075),0 0 0 .25rem rgba(55,88,139,.5)}a.badge.badge-outline-primary:focus{box-shadow:0 0 0 .25rem rgba(20,59,118,.5)}.badge.bg-secondary,.badge.bg-secondary a{color:#fff}.badge-outline-secondary a{color:#e7f1fb!important}.badge-outline-secondary{background:transparent!important;border:1px solid #e7f1fb;color:#e7f1fb!important}a.badge:active.badge-outline-secondary,a.badge:focus-within.badge-outline-secondary,a.badge:hover.badge-outline-secondary{background-color:#fdfeff!important;border-color:#c4cdd5!important}a.badge:active.text-bg-secondary,a.badge:focus-within.text-bg-secondary,a.badge:hover.text-bg-secondary{background-color:#c4cdd5!important}a.badge.text-bg-secondary:focus{box-shadow:inset 0 1px 0 hsla(0,0%,100%,.15),0 1px 1px rgba(0,0,0,.075),0 0 0 .25rem rgba(196,205,213,.5)}a.badge.badge-outline-secondary:focus{box-shadow:0 0 0 .25rem rgba(231,241,251,.5)}.badge.bg-success,.badge.bg-success a{color:#fff}.badge-outline-success,.badge-outline-success a{color:#18bf80!important}.badge-outline-success{background:transparent!important;border:1px solid #18bf80}a.badge:active.badge-outline-success,a.badge:focus-within.badge-outline-success,a.badge:hover.badge-outline-success{background-color:#e8f9f2!important;border-color:#14a26d!important}a.badge:active.text-bg-success,a.badge:focus-within.text-bg-success,a.badge:hover.text-bg-success{background-color:#14a26d!important}a.badge.text-bg-success:focus{box-shadow:inset 0 1px 0 hsla(0,0%,100%,.15),0 1px 1px rgba(0,0,0,.075),0 0 0 .25rem rgba(20,162,109,.5)}a.badge.badge-outline-success:focus{box-shadow:0 0 0 .25rem rgba(24,191,128,.5)}.badge.bg-info,.badge.bg-info a{color:#fff}.badge-outline-info,.badge-outline-info a{color:#0d768b!important}.badge-outline-info{background:transparent!important;border:1px solid #0d768b}a.badge:active.badge-outline-info,a.badge:focus-within.badge-outline-info,a.badge:hover.badge-outline-info{background-color:#e7f1f3!important;border-color:#0b6476!important}a.badge:active.text-bg-info,a.badge:focus-within.text-bg-info,a.badge:hover.text-bg-info{background-color:#0b6476!important}a.badge.text-bg-info:focus{box-shadow:inset 0 1px 0 hsla(0,0%,100%,.15),0 1px 1px rgba(0,0,0,.075),0 0 0 .25rem rgba(49,139,156,.5)}a.badge.badge-outline-info:focus{box-shadow:0 0 0 .25rem rgba(13,118,139,.5)}.badge.bg-warning,.badge.bg-warning a{color:#000}.badge-outline-warning,.badge-outline-warning a{color:#eba843!important}.badge-outline-warning{background:transparent!important;border:1px solid #eba843}a.badge:active.badge-outline-warning,a.badge:focus-within.badge-outline-warning,a.badge:hover.badge-outline-warning{background-color:#fdf6ec!important;border-color:#c88f39!important}a.badge:active.text-bg-warning,a.badge:focus-within.text-bg-warning,a.badge:hover.text-bg-warning{background-color:#c88f39!important}a.badge.text-bg-warning:focus{box-shadow:inset 0 1px 0 hsla(0,0%,100%,.15),0 1px 1px rgba(0,0,0,.075),0 0 0 .25rem rgba(200,143,57,.5)}a.badge.badge-outline-warning:focus{box-shadow:0 0 0 .25rem rgba(235,168,67,.5)}.badge.bg-danger,.badge.bg-danger a{color:#fff}.badge-outline-danger,.badge-outline-danger a{color:#eb3434!important}.badge-outline-danger{background:transparent!important;border:1px solid #eb3434}a.badge:active.badge-outline-danger,a.badge:focus-within.badge-outline-danger,a.badge:hover.badge-outline-danger{background-color:#fdebeb!important;border-color:#c82c2c!important}a.badge:active.text-bg-danger,a.badge:focus-within.text-bg-danger,a.badge:hover.text-bg-danger{background-color:#c82c2c!important}a.badge.text-bg-danger:focus{box-shadow:inset 0 1px 0 hsla(0,0%,100%,.15),0 1px 1px rgba(0,0,0,.075),0 0 0 .25rem rgba(200,44,44,.5)}a.badge.badge-outline-danger:focus{box-shadow:0 0 0 .25rem rgba(235,52,52,.5)}.badge.bg-light,.badge.bg-light a{color:#000}.badge-outline-light,.badge-outline-light a{color:#f8f9fa!important}.badge-outline-light{background:transparent!important;border:1px solid #f8f9fa}a.badge:active.badge-outline-light,a.badge:focus-within.badge-outline-light,a.badge:hover.badge-outline-light{background:hsla(0,0%,100%,.3)!important;border-color:#fff;color:#fff}a.badge:active.text-bg-light,a.badge:focus-within.text-bg-light,a.badge:hover.text-bg-light{background-color:#d3d4d5!important}a.badge.text-bg-light:focus{box-shadow:inset 0 1px 0 hsla(0,0%,100%,.15),0 1px 1px rgba(0,0,0,.075),0 0 0 .25rem hsla(210,2%,83%,.5)}a.badge.badge-outline-light:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.badge.bg-dark,.badge.bg-dark a{color:#fff}.badge-outline-dark,.badge-outline-dark a{color:#212529!important}.badge-outline-dark{background:transparent!important;border:1px solid #212529}a.badge:active.badge-outline-dark,a.badge:focus-within.badge-outline-dark,a.badge:hover.badge-outline-dark{background-color:#f8f9fa!important;border-color:#000}a.badge:active.text-bg-dark,a.badge:focus-within.text-bg-dark,a.badge:hover.text-bg-dark{background-color:#1c1f23!important}a.badge.text-bg-dark:focus{box-shadow:inset 0 1px 0 hsla(0,0%,100%,.15),0 1px 1px rgba(0,0,0,.075),0 0 0 .25rem rgba(66,70,73,.5)}a.badge.badge-outline-dark:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.badge.bg-brand,.badge.bg-brand a{color:#fff}.badge-outline-brand,.badge-outline-brand a{color:#1073de!important}.badge-outline-brand{background:transparent!important;border:1px solid #1073de}a.badge:active.badge-outline-brand,a.badge:focus-within.badge-outline-brand,a.badge:hover.badge-outline-brand{background-color:#e7f1fc!important;border-color:#0e62bd!important}a.badge:active.text-bg-brand,a.badge:focus-within.text-bg-brand,a.badge:hover.text-bg-brand{background-color:#0e62bd!important}a.badge.text-bg-brand:focus{box-shadow:inset 0 1px 0 hsla(0,0%,100%,.15),0 1px 1px rgba(0,0,0,.075),0 0 0 .25rem rgba(52,136,227,.5)}a.badge.badge-outline-brand:focus{box-shadow:0 0 0 .25rem rgba(16,115,222,.5)}.ss-main{color:#666;display:inline-block;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%}.ss-main .ss-single-selected{background-color:#fff;border:1px solid #dcdee2;border-radius:4px;box-sizing:border-box;cursor:pointer;display:flex;height:30px;outline:0;padding:6px;transition:background-color .2s;width:100%}.ss-main .ss-single-selected.ss-disabled{background-color:#dcdee2;cursor:not-allowed}.ss-main .ss-single-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}.ss-main .ss-single-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}.ss-main .ss-single-selected .placeholder{flex:1 1 100%;line-height:1em;text-align:left;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:calc(100% - 30px)}.ss-main .ss-single-selected .placeholder,.ss-main .ss-single-selected .placeholder *{align-items:center;display:flex;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ss-main .ss-single-selected .placeholder *{width:auto}.ss-main .ss-single-selected .placeholder .ss-disabled{color:#dedede}.ss-main .ss-single-selected .ss-deselect{align-items:center;display:flex;flex:0 1 auto;font-weight:700;justify-content:flex-end;margin:0 6px}.ss-main .ss-single-selected .ss-deselect.ss-hide{display:none}.ss-main .ss-single-selected .ss-arrow{align-items:center;display:flex;flex:0 1 auto;justify-content:flex-end;margin:0 6px}.ss-main .ss-single-selected .ss-arrow span{border:solid #666;border-width:0 2px 2px 0;display:inline-block;padding:3px;transition:transform .2s,margin .2s}.ss-main .ss-single-selected .ss-arrow span.arrow-up{margin:3px 0 0;transform:rotate(-135deg)}.ss-main .ss-single-selected .ss-arrow span.arrow-down{margin:-3px 0 0;transform:rotate(45deg)}.ss-main .ss-multi-selected{background-color:#fff;border:1px solid #dcdee2;border-radius:4px;box-sizing:border-box;cursor:pointer;display:flex;flex-direction:row;min-height:30px;outline:0;padding:0 0 0 3px;transition:background-color .2s;width:100%}.ss-main .ss-multi-selected.ss-disabled{background-color:#dcdee2;cursor:not-allowed}.ss-main .ss-multi-selected.ss-disabled .ss-values .ss-disabled{color:#666}.ss-main .ss-multi-selected.ss-disabled .ss-values .ss-value .ss-value-delete{cursor:not-allowed}.ss-main .ss-multi-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}.ss-main .ss-multi-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}.ss-main .ss-multi-selected .ss-values{display:flex;flex:1 1 100%;flex-wrap:wrap;justify-content:flex-start;width:calc(100% - 30px)}.ss-main .ss-multi-selected .ss-values .ss-disabled{align-items:center;color:#dedede;display:flex;line-height:1em;margin:2px 0;overflow:hidden;padding:4px 5px;text-overflow:ellipsis;white-space:nowrap;width:100%}@keyframes scaleIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.ss-main .ss-multi-selected .ss-values .ss-value{align-items:center;animation-duration:.2s;animation-fill-mode:both;animation-name:scaleIn;animation-timing-function:ease-out;background-color:#143b76;border-radius:4px;color:#fff;display:flex;font-size:12px;margin:3px 5px 3px 0;padding:3px 5px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ss-main .ss-multi-selected .ss-values .ss-value.ss-out{animation-duration:.2s;animation-name:scaleOut;animation-timing-function:ease-out}.ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete{cursor:pointer;margin:0 0 0 5px}.ss-main .ss-multi-selected .ss-add{display:flex;flex:0 1 3px;margin:9px 12px 0 5px}.ss-main .ss-multi-selected .ss-add .ss-plus{align-items:center;background:#666;display:flex;height:10px;justify-content:center;position:relative;transition:transform .2s;width:2px}.ss-main .ss-multi-selected .ss-add .ss-plus:after{background:#666;content:"";height:2px;left:-4px;position:absolute;top:4px;width:10px}.ss-main .ss-multi-selected .ss-add .ss-plus.ss-cross{transform:rotate(45deg)}.ss-content{background-color:#fff;border:1px solid #dcdee2;box-sizing:border-box;margin:-1px 0 0;opacity:0;position:absolute;transform:scaleY(0);transform-origin:center top;transition:transform .2s,opacity .2s;width:100%;z-index:1010}.ss-content.ss-open{display:block;opacity:1;transform:scaleY(1)}.ss-content .ss-search{display:flex;flex-direction:row;padding:8px 8px 6px}.ss-content .ss-search.ss-hide,.ss-content .ss-search.ss-hide input{height:0;margin:0;opacity:0;padding:0}.ss-content .ss-search input{-webkit-appearance:textfield;background-color:#fff;border:1px solid #dcdee2;border-radius:4px;box-sizing:border-box;-webkit-box-sizing:border-box;display:inline-flex;flex:1 1 auto;font-size:inherit;height:30px;line-height:inherit;margin:0;min-width:0;outline:0;padding:6px 8px;text-align:left;width:100%}.ss-content .ss-search input::-moz-placeholder{color:#8a8a8a;vertical-align:middle}.ss-content .ss-search input::placeholder{color:#8a8a8a;vertical-align:middle}.ss-content .ss-search input:focus{box-shadow:0 0 5px #143b76}.ss-content .ss-search .ss-addable{align-items:center;border:1px solid #dcdee2;border-radius:4px;box-sizing:border-box;cursor:pointer;display:inline-flex;flex:0 0 30px;font-size:22px;font-weight:700;height:30px;justify-content:center;margin:0 0 0 8px}.ss-content .ss-addable{padding-top:0}.ss-content .ss-list{max-height:200px;overflow-x:hidden;overflow-y:auto;text-align:left}.ss-content .ss-list .ss-optgroup .ss-optgroup-label{font-weight:700;padding:6px 10px}.ss-content .ss-list .ss-optgroup .ss-option{padding:6px 6px 6px 25px}.ss-content .ss-list .ss-optgroup-label-selectable{cursor:pointer}.ss-content .ss-list .ss-optgroup-label-selectable:hover{background-color:#143b76;color:#fff}.ss-content .ss-list .ss-option{cursor:pointer;padding:6px 10px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ss-content .ss-list .ss-option *{display:inline-block}.ss-content .ss-list .ss-option.ss-highlighted,.ss-content .ss-list .ss-option:hover{background-color:#143b76;color:#fff}.ss-content .ss-list .ss-option.ss-disabled{background-color:#fff;color:#dedede;cursor:not-allowed}.ss-content .ss-list .ss-option:not(.ss-disabled).ss-option-selected{background-color:rgba(20,59,118,.1);color:#666}.ss-content .ss-list .ss-option.ss-hide{display:none}.ss-content .ss-list .ss-option .ss-search-highlight{background-color:#fffb8c}select.multi-select{display:inline-block!important;max-height:35px;max-width:0;opacity:0;pointer-events:none;position:absolute}.ss-main.multi-select{padding:0}.ss-main.multi-select.form-select.is-invalid,.ss-main.multi-select.form-select.is-valid{background:none;padding:0}.ss-main.multi-select .ss-values{font-size:1.125rem}.ss-main.multi-select .ss-values .ss-value{border-radius:.375rem;color:#fff;display:inline-block;font-size:1.125rem;font-weight:400;line-height:1;padding:.35em .65em;text-align:left;vertical-align:baseline;white-space:normal}.ss-main.multi-select .ss-values .ss-value .ss-value-delete{font-size:0}.ss-main.multi-select .ss-values .ss-value .ss-value-delete:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='17' fill='none'%3E%3Cpath fill='%23F8F9FA' fill-rule='evenodd' d='M16 8.5a8 8 0 1 1-16 0 8 8 0 0 1 16 0M5.354 5.146a.5.5 0 1 0-.708.708L7.293 8.5l-2.647 2.646a.5.5 0 0 0 .708.708L8 9.207l2.646 2.647a.5.5 0 0 0 .708-.708L8.707 8.5l2.647-2.646a.5.5 0 0 0-.708-.708L8 7.793z' clip-rule='evenodd'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;border-radius:50%;bottom:calc(50% - 3px);content:"";display:inline-block;height:1rem;padding:15px;position:absolute;right:0;transform:scale(.8) translateY(50%);width:1rem}.ss-main.multi-select .ss-values .ss-value .ss-value-delete:focus-visible:after{outline:2px solid #fff;outline-offset:-6px}.ss-main.multi-select .ss-values .ss-disabled{font-size:1rem;padding-bottom:calc(.5rem - 1px);padding-top:calc(.5rem - 1px)}.ss-main.multi-select .ss-multi-selected{border-color:#a2a8ab;padding:calc(.5rem - 2px) 0 calc(.5rem - 2px) .3rem}.ss-main.multi-select .ss-multi-selected.ss-disabled .ss-values .ss-value{background:#858a8c}.ss-main.multi-select .ss-multi-selected .ss-add{align-self:center;margin-top:0}.ss-main.multi-select .ss-multi-selected .ss-values .ss-disabled{color:#6c757d}.ss-main.multi-select.is-invalid .ss-multi-selected,.ss-main.multi-select.is-valid .ss-multi-selected,.was-validated .multi-select:invalid+.ss-main.multi-select .ss-multi-selected,.was-validated .multi-select:valid+.ss-main.multi-select .ss-multi-selected{background-position:right 1.5rem center;background-repeat:no-repeat;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.ss-main.multi-select.is-invalid .ss-multi-selected,.was-validated .multi-select:invalid+.ss-main.multi-select .ss-multi-selected{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none'%3E%3Cpath fill='%23D72E3D' d='M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8 4a.905.905 0 0 0-.9.995l.35 3.507a.552.552 0 0 0 1.1 0l.35-3.507A.905.905 0 0 0 8 4m.002 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2'/%3E%3C/svg%3E");border-color:#eb3434}.ss-main.multi-select.is-invalid .ss-values .ss-value,.was-validated .multi-select:invalid+.ss-main.multi-select .ss-values .ss-value{background:#eb3434}.ss-main.multi-select.is-valid .ss-multi-selected,.was-validated .multi-select:valid+.ss-main.multi-select .ss-multi-selected{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none'%3E%3Cpath fill='%2328A745' d='M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05'/%3E%3C/svg%3E");border-color:#18bf80}.ss-main.multi-select.is-valid .ss-values .ss-value,.was-validated .multi-select:valid+.ss-main.multi-select .ss-values .ss-value{background:#18bf80}@media (min-width:768px){.ss-main.multi-select .ss-multi-selected{padding:.075rem 0 .075rem .3rem}.ss-main.multi-select .ss-values,.ss-main.multi-select .ss-values .ss-value{font-size:1rem}.ss-main.multi-select .ss-values .ss-disabled{padding-bottom:calc(.5rem - 2px);padding-top:calc(.5rem - 1px)}.ss-main.multi-select.is-invalid .ss-multi-selected,.ss-main.multi-select.is-valid .ss-multi-selected,.was-validated .multi-select:invalid+.ss-main.multi-select .ss-multi-selected,.was-validated .multi-select:valid+.ss-main.multi-select .ss-multi-selected{background-position:right 1.6rem center}}input:hover{color:#1073de}.eu-oss-catalogue .btn-secondary{background-color:#e8f3f0;color:#19764f}.eu-oss-catalogue .btn-secondary:hover{background-color:#e8f3f0}.eu-oss-catalogue .bg-brand{background-color:#19764f!important}.eu-oss-catalogue .bg-secondary{background-color:#e8f3f0!important}.eu-oss-catalogue .btn-link,.eu-oss-catalogue .button--link,.eu-oss-catalogue .catalogue-link>a{color:#19764f!important}.eu-oss-catalogue .btn-brand,.eu-oss-catalogue .btn-primary{background-color:#249866!important;border:1px solid #1f8358}.eu-oss-catalogue .btn-outline-brand{border:1px solid #249866;color:#249866}.eu-oss-catalogue .btn-outline-brand:hover{background-color:#249866;color:#fff}.eu-oss-catalogue .text-bg-primary{background-color:#e8f3f0!important}.eu-oss-catalogue .text-bg-primary.badge{color:#249866!important}.eu-oss-catalogue .text-secondary{color:#19764f!important}.eu-oss-catalogue .oss__instructions .layout__region--first:before{background-color:#e8f3f0}.eu-oss-catalogue .oss__instructions .layout__region--first .paragraph h3:before{background-color:#19764f}.eu-oss-catalogue .oss__social .paragraph--call-to-action a{background-color:transparent!important}.eu-oss-catalogue .oss__social .paragraph--call-to-action a:before{background-color:#249866}.eu-oss-catalogue .joinup-search-filters .facets-checkbox{-webkit-appearance:none;-moz-appearance:none;appearance:none}.eu-oss-catalogue .joinup-search-filters .facets-checkbox:checked[type=checkbox]{background-color:#249866;border-color:#1f8358}.eu-oss-catalogue .joinup-search-filters .facets-soft-limit-link{color:#249866}.eu-oss-catalogue .joinup-search-filters .facets-soft-limit-link:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%23249866' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m2 5 6 6 6-6'/%3E%3C/svg%3E");display:inline-block}.eu-oss-catalogue .view-search-oss-catalogue .js-form-item .btn-search{background-color:#249866}.eu-oss-catalogue .pagination .page-item .page-link{color:#249866}.eu-oss-catalogue .pagination .page-item .page-link:hover{background-color:#e8f3f0}.eu-oss-catalogue .pagination .page-item .page-link .bi{color:#249866}.eu-oss-catalogue .pagination .page-item.active .page-link{background-color:#e8f3f0;color:#249866}.eu-oss-catalogue .catalogue-source ul{list-style-type:none;padding-left:0}.joinup-search-filters .bcl-offcanvas{box-shadow:none;z-index:503}.joinup-search-filters .bcl-offcanvas:before{content:"";height:100%;position:absolute;right:0;width:100vw;z-index:-10}@media (min-width:992px){.joinup-search-filters .bcl-offcanvas:before{background:#f5f6f7}}.joinup-search-filters .bcl-offcanvas .offcanvas-title{font-size:1.25rem;font-weight:400;margin-bottom:1rem}@media (min-width:992px){.joinup-search-filters .bcl-offcanvas .offcanvas-title{font-size:1.125rem;padding-top:1.5rem}.joinup-search-filters .bcl-offcanvas{border:none;position:relative;transform:none;visibility:visible;width:auto;z-index:49}}.joinup-search-filters .facets-widget-checkbox{border-bottom:1px solid #858a8c;margin-bottom:1.5rem;padding-bottom:1.5rem}.joinup-search-filters .facets-widget-checkbox h3{color:#000;font-size:1.125rem;font-weight:400;text-transform:uppercase}@media (min-width:992px){.joinup-search-filters .facets-widget-checkbox h3{font-size:1rem}}.joinup-search-filters .facets-soft-limit-link{display:inline-block;margin-top:.5rem;text-align:right;width:100%}.joinup-search-filters .facets-soft-limit-link:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%231073de' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m2 5 6 6 6-6'/%3E%3C/svg%3E");background-position:100%;background-repeat:no-repeat;background-size:1em 1em;color:#e7f1fb;content:"";display:inline-block;height:1em;margin-left:.25rem;transition:transform .5s;vertical-align:middle;width:1em}.joinup-search-filters .facets-soft-limit-link.open:after{transform:rotate(180deg)}.joinup-search-filters .item-list__checkbox,.joinup-search-filters .item-list__date_range{list-style:none;margin-bottom:0;max-height:410px;overflow-y:auto;padding:3px 0 0 3px}.joinup-search-filters .facets-widget- ul{list-style:none;padding-left:1rem}.joinup-search-filters .facets-checkbox{background-position:50%;background-repeat:no-repeat;background-size:contain;border:1px solid rgba(0,0,0,.25);border-radius:.25em;height:1rem;margin-right:.5rem;width:1rem}.joinup-search-filters .facets-checkbox:checked[type=checkbox]{background-color:#143b76;background-image:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path fill="none" stroke="%23fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="m6 10 3 3 6-6"/></svg>');border-color:#143b76}.joinup-search-filters .facet-item:not(:last-child){margin-bottom:.75rem}.joinup-search-filters .facet-item:not(:last-child) .facets-widget-{margin-top:.75rem}.joinup-search-filters .facet-item label{display:inline}.joinup-search-filters .facets-widget-date_range h3{font-size:1rem;font-weight:400;margin-bottom:1rem;text-transform:uppercase}.joinup-search-filters .facets-widget-date_range li{margin-bottom:1.5rem}.js-form-type-select.form-item-topic .form-select.ss-main{padding:0}.js-form-type-select.form-item-topic .form-select.ss-main .ss-multi-selected{background:none;border:none}.js-form-type-select.form-item-topic .form-select.ss-main .ss-multi-selected .ss-values{padding:.4rem}.js-form-type-select.form-item-topic .form-select.ss-main .ss-multi-selected .ss-values .ss-value{border-radius:50rem;font-size:.875rem;margin:2px 10px 2px 0;padding:2px 1rem}.js-form-type-select.form-item-topic .form-select.ss-main .ss-multi-selected .ss-values .ss-disabled{color:#a2a8ab;padding:2px 0}.js-form-type-select.form-item-topic .form-select.ss-main .ss-multi-selected .ss-add{display:none}.js-form-type-select.form-item-topic .form-select.ss-main .ss-content .ss-search input{border-color:#8a9dbb;height:auto}.js-form-type-select.form-item-topic .form-select.ss-main .ss-content .ss-search input:focus{box-shadow:none}.js-form-type-select.form-item-topic .form-select.ss-main .ss-content .ss-option:hover{background-color:#e7f1fb;color:#242626}.js-form-type-select.form-item-topic .form-select.ss-main .ss-content .ss-option.ss-disabled,.js-form-type-select.form-item-topic .form-select.ss-main .ss-content .ss-option.ss-disabled:hover{background:none;color:#a2a8ab}.js-form-type-select.form-item-topic .form-select.ss-main .ss-open{border-color:#8a9dbb}.form-item input.form-autocomplete{background-position:calc(100% - 10px)}.form-item .btn-search{background-color:#143b76;font-size:0;padding-left:1.2rem;padding-right:1.2rem}.form-item .btn-search:before{background-color:#fff;content:"";display:inline-block;font-size:1rem;height:1em;-webkit-mask-image:url(../icons/search.svg);mask-image:url(../icons/search.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:-.125em;width:1em}.ui-widget.search-api-autocomplete-search{background-color:#fafbfc;border:1px solid #1073de;border-radius:0 0 4px 4px;z-index:1046}.ui-widget.search-api-autocomplete-search .ui-menu-item .ui-menu-item-wrapper{display:block;padding:.2rem 1rem}.ui-widget.search-api-autocomplete-search .ui-menu-item .ui-menu-item-wrapper .search-api-autocomplete-suggestion{color:#6d7173}.ui-widget.search-api-autocomplete-search .ui-menu-item .ui-menu-item-wrapper.ui-state-active{background-color:#e7f1fb}.ui-widget.search-api-autocomplete-search .ui-menu-item .ui-menu-item-wrapper.ui-state-active .search-api-autocomplete-suggestion{background:none}.view-search .view-header .views-exposed-form{align-items:center;color:#143b76;display:flex;flex-wrap:wrap;justify-content:space-between}.view-search .view-header .views-exposed-form .form-item-keys{flex-basis:100%;margin-bottom:1rem!important}.view-search .view-header .views-exposed-form .form-item-keys label{overflow:hidden;position:absolute!important;clip:rect(1px,1px,1px,1px);height:1px;width:1px;word-wrap:normal}@media (min-width:768px){.view-search .view-header .views-exposed-form .form-item-keys{margin-bottom:3rem!important}}.view-search .view-header .views-exposed-form .form-item-results-count{color:#143b76;text-transform:uppercase}@media (min-width:768px){.view-search .view-header .views-exposed-form .form-item-results-count{flex-basis:60%}}.view-search .view-header .views-exposed-form .form-item-sort-by{align-items:baseline;display:flex}.view-search .view-header .views-exposed-form .form-item-sort-by .form-label{margin-right:8px}.view-search .view-header .views-exposed-form .form-item-sort-by .form-select{width:auto}@media (min-width:768px){.view-search .view-header .views-exposed-form .form-item-sort-by{flex-basis:40%;justify-content:end}}@media (min-width:992px){.view-search .view-header .views-exposed-form{margin-top:1rem}}.view-search .view-header .block-facets-summary{margin-top:2rem}.view-search .view-header .block-facets-summary ul{display:flex;flex-wrap:wrap;list-style:none;padding-left:0} /*# sourceMappingURL=searchpage.min.css.map */ \ No newline at end of file diff --git a/web/themes/ventuno/includes/form.inc b/web/themes/ventuno/includes/form.inc index 7ec760b43aebbc99289b11f789eb1483446cd07c..c52ebb14c6c024d1ce2ae94642e6ff9df1f8d70e 100644 --- a/web/themes/ventuno/includes/form.inc +++ b/web/themes/ventuno/includes/form.inc @@ -76,6 +76,7 @@ function ventuno_form_views_exposed_form_alter(array &$form, FormStateInterface // Ensure the ID is unique, using "search-box" as base. $form['keys']['#id'] = Html::getUniqueId('search-box'); $form['#id'] = Html::getUniqueId($form['#id']); + $form['actions']['submit']['#attributes']['class'][] = 'visually-hidden'; } if ($view->id() === 'search_oss_catalogue') { @@ -88,6 +89,7 @@ function ventuno_form_views_exposed_form_alter(array &$form, FormStateInterface $form['oss_keys']['#title_display'] = 'invisible'; $form['oss_keys']['#attributes']['placeholder'] = t('Start typing to search…'); $form['oss_keys']['#joinup_parent'] = $form_id . '_' . $view->id(); + $form['actions']['submit']['#attributes']['class'][] = 'visually-hidden'; } if ($route_name != 'view.search.page_1' && $view->id() === 'search' || $route_name != 'view.search_oss_catalogue.search' && $view->id() === 'search_oss_catalogue') { diff --git a/web/themes/ventuno/src/scss/pages/searchpage.scss b/web/themes/ventuno/src/scss/pages/searchpage.scss index 0a2f05913acc0a597fc89355a956ad6383d4a8a2..839e853995037cc68336bcc06b70ce54d545b338 100644 --- a/web/themes/ventuno/src/scss/pages/searchpage.scss +++ b/web/themes/ventuno/src/scss/pages/searchpage.scss @@ -187,7 +187,7 @@ } // Autocomplete -.js .js-form-item { +.form-item { input.form-autocomplete { background-position: calc(100% - 10px) center; }