diff --git a/.opts.yml b/.opts.yml index 49c03d3df2dc109a82b0b9dc9c9796b0e9c604e8..b8395b7e56e600e14e92d96c4faa45ec4f2b6614 100644 --- a/.opts.yml +++ b/.opts.yml @@ -24,9 +24,9 @@ upgrade_commands: - ./vendor/bin/drush cache:rebuild - rm disable-config-readonly -php_version: 8.1 +php_version: 8.2 extra_pkgs: - - php8.1-apcu + - php8.2-apcu mysql_version: "8.0" diff --git a/bcl-builder.config.js b/bcl-builder.config.js index 09499a4133b91e3c3a7ddd2a8723e8e8e6e36a29..6cfa718b8baee47a976a59c15912e591f83a5faa 100644 --- a/bcl-builder.config.js +++ b/bcl-builder.config.js @@ -646,7 +646,52 @@ module.exports = { { entry: path.resolve( outputFolder, - `${ventuno}src/scss/components/paragraph--carousel.scss` + `${ventuno}src/scss/components/page-title.scss` + ), + dest: path.resolve( + outputFolder, + `${ventuno}assets/css/page-title.min.css` + ), + options: { + includePaths, + minify: true, + sourceMap: "file", + }, + }, + { + entry: path.resolve( + outputFolder, + `${ventuno}src/scss/components/pagination.scss` + ), + dest: path.resolve( + outputFolder, + `${ventuno}assets/css/pagination.min.css` + ), + options: { + includePaths, + minify: true, + sourceMap: "file", + }, + }, + { + entry: path.resolve( + outputFolder, + `${ventuno}src/scss/components/paragraphs/paragraph.scss` + ), + dest: path.resolve( + outputFolder, + `${ventuno}assets/css/paragraph.min.css` + ), + options: { + includePaths, + minify: true, + sourceMap: "file", + }, + }, + { + entry: path.resolve( + outputFolder, + `${ventuno}src/scss/components/paragraphs/paragraph--carousel.scss` ), dest: path.resolve( outputFolder, @@ -661,11 +706,11 @@ module.exports = { { entry: path.resolve( outputFolder, - `${ventuno}src/scss/components/page-title.scss` + `${ventuno}src/scss/components/paragraphs/paragraph--heading.scss` ), dest: path.resolve( outputFolder, - `${ventuno}assets/css/page-title.min.css` + `${ventuno}assets/css/paragraph--heading.min.css` ), options: { includePaths, @@ -676,11 +721,11 @@ module.exports = { { entry: path.resolve( outputFolder, - `${ventuno}src/scss/components/pagination.scss` + `${ventuno}src/scss/components/paragraphs/paragraph--layout.scss` ), dest: path.resolve( outputFolder, - `${ventuno}assets/css/pagination.min.css` + `${ventuno}assets/css/paragraph--layout.min.css` ), options: { includePaths, @@ -691,11 +736,41 @@ module.exports = { { entry: path.resolve( outputFolder, - `${ventuno}src/scss/components/paragraph.scss` + `${ventuno}src/scss/components/paragraphs/paragraph--poll.scss` ), dest: path.resolve( outputFolder, - `${ventuno}assets/css/paragraph.min.css` + `${ventuno}assets/css/paragraph--poll.min.css` + ), + options: { + includePaths, + minify: true, + sourceMap: "file", + }, + }, + { + entry: path.resolve( + outputFolder, + `${ventuno}src/scss/components/paragraphs/paragraph--testimony.scss` + ), + dest: path.resolve( + outputFolder, + `${ventuno}assets/css/paragraph--testimony.min.css` + ), + options: { + includePaths, + minify: true, + sourceMap: "file", + }, + }, + { + entry: path.resolve( + outputFolder, + `${ventuno}src/scss/components/paragraphs/paragraph--video.scss` + ), + dest: path.resolve( + outputFolder, + `${ventuno}assets/css/paragraph--video.min.css` ), options: { includePaths, @@ -859,6 +934,22 @@ module.exports = { sourceMap: "file", }, }, + // Layout Paragraphs - buidler UI. + { + entry: path.resolve( + outputFolder, + `${ventuno}src/scss/components/layout-paragraphs--builder.scss` + ), + dest: path.resolve( + outputFolder, + `${ventuno}assets/css/layout-paragraphs--builder.min.css` + ), + options: { + includePaths, + minify: true, + sourceMap: "file", + }, + }, // IOP // Components (SMACSS) { @@ -881,6 +972,15 @@ module.exports = { }, }, // Pages + { + entry: path.resolve(outputFolder, `${iop}src/scss/pages/landing.scss`), + dest: path.resolve(outputFolder, `${iop}assets/css/landing.min.css`), + options: { + minify: true, + includePaths, + sourceMap: "file", + }, + }, { entry: path.resolve(outputFolder, `${iop}src/scss/pages/listing.scss`), dest: path.resolve(outputFolder, `${iop}assets/css/listing.min.css`), @@ -906,33 +1006,15 @@ module.exports = { sourceMap: "file", }, }, - { - entry: path.resolve(outputFolder, `${iop}src/scss/components/join.scss`), - dest: path.resolve(outputFolder, `${iop}assets/css/join.min.css`), - options: { - minify: true, - includePaths, - sourceMap: "file", - }, - }, { entry: path.resolve( outputFolder, - `${iop}src/scss/components/navbar.scss` + `${iop}src/scss/components/call-to-action.scss` ), - dest: path.resolve(outputFolder, `${iop}assets/css/navbar.min.css`), - options: { - minify: true, - includePaths, - sourceMap: "file", - }, - }, - { - entry: path.resolve( + dest: path.resolve( outputFolder, - `${iop}src/scss/components/page-header.scss` + `${iop}assets/css/call-to-action.min.css` ), - dest: path.resolve(outputFolder, `${iop}assets/css/page-header.min.css`), options: { minify: true, includePaths, @@ -940,11 +1022,8 @@ module.exports = { }, }, { - entry: path.resolve( - outputFolder, - `${iop}src/scss/components/paragraphs/paragraph.scss` - ), - dest: path.resolve(outputFolder, `${iop}assets/css/paragraph.min.css`), + entry: path.resolve(outputFolder, `${iop}src/scss/components/join.scss`), + dest: path.resolve(outputFolder, `${iop}assets/css/join.min.css`), options: { minify: true, includePaths, @@ -954,12 +1033,9 @@ module.exports = { { entry: path.resolve( outputFolder, - `${iop}src/scss/components/paragraphs/paragraph--2-column-featured-left.scss` - ), - dest: path.resolve( - outputFolder, - `${iop}assets/css/paragraph--2-column-featured-left.min.css` + `${iop}src/scss/components/navbar.scss` ), + dest: path.resolve(outputFolder, `${iop}assets/css/navbar.min.css`), options: { minify: true, includePaths, @@ -969,12 +1045,9 @@ module.exports = { { entry: path.resolve( outputFolder, - `${iop}src/scss/components/paragraphs/paragraph--2-column-featured-right.scss` - ), - dest: path.resolve( - outputFolder, - `${iop}assets/css/paragraph--2-column-featured-right.min.css` + `${iop}src/scss/components/page-header.scss` ), + dest: path.resolve(outputFolder, `${iop}assets/css/page-header.min.css`), options: { minify: true, includePaths, @@ -1029,11 +1102,11 @@ module.exports = { { entry: path.resolve( outputFolder, - `${iop}src/scss/components/paragraphs/paragraph--row.scss` + `${iop}src/scss/components/paragraphs/paragraph--layout.scss` ), dest: path.resolve( outputFolder, - `${iop}assets/css/paragraph--row.min.css` + `${iop}assets/css/paragraph--layout.min.css` ), options: { minify: true, @@ -1056,21 +1129,6 @@ module.exports = { sourceMap: "file", }, }, - { - entry: path.resolve( - outputFolder, - `${iop}src/scss/components/paragraphs/paragraph--video.scss` - ), - dest: path.resolve( - outputFolder, - `${iop}assets/css/paragraph--video.min.css` - ), - options: { - minify: true, - includePaths, - sourceMap: "file", - }, - }, { entry: path.resolve(outputFolder, `${iop}src/scss/components/tile.scss`), dest: path.resolve(outputFolder, `${iop}assets/css/tile.min.css`), diff --git a/behat.yml.dist b/behat.yml.dist index 536afb948dab0e33ee4ef5e4cf491a8850930de4..8000fb5d723ce73f61aa26d35ae23ad5cd19ac43 100644 --- a/behat.yml.dist +++ b/behat.yml.dist @@ -41,6 +41,7 @@ - Drupal\joinup\Context\JoinupFeaturedContext - Drupal\joinup\Context\JoinupGroupContext - Drupal\joinup\Context\JoinupInviteContext + - Drupal\joinup\Context\JoinupLayoutParagraphsContext - Drupal\joinup\Context\JoinupLegalContext - Drupal\joinup\Context\JoinupLicenceContext - Drupal\joinup\Context\JoinupNewsContext @@ -56,6 +57,7 @@ - Drupal\joinup\Context\ModerationContext - Drupal\joinup\Context\OeNewsroomNewsletterContext - Drupal\joinup\Context\OwnerContext + - Drupal\joinup\Context\PollContext - Drupal\joinup\Context\RdfEntityProvenanceContext - Drupal\joinup\Context\RdfGraphContext - Drupal\joinup\Context\RssContext @@ -145,6 +147,7 @@ default: Content listing field filter form: '.field--name-content-listing' Content: '.section--content-middle, main .layout-content' Cookie consent banner: '#cookie-consent-banner' + Choose component: '.lp-builder lpb-btn--add' Entity actions: '.block-joinup-local-tasks-block,#block-ventuno-three-dots-menu' Explore block: '.block-joinup-front-page-explore-block' Featured: '.region-featured' @@ -157,6 +160,7 @@ default: In the spotlight: '.block-views-blockin-the-spotlight-block' IOPE Menu: '#block-iope-navigation' Header bottom: '.region-header-bottom' + Layout paragraphs dialog buttons: '.ui-dialog-buttonpane' Left sidebar: 'aside.layout-sidebar' Like block: '.block-joinup-like-block' Main fields accordion: '#main-fields,.accordion .accordion-item #main' @@ -164,9 +168,9 @@ default: Management solution vertical tab: '#edit-group-management' Members admin form actions: '#edit-action' Members admin form header: '#edit-header' - Modal buttons: '.modal-footer' - Modal content: '.modal-body' - Modal title: '.modal-header' + Modal buttons: '.ui-dialog-buttonpane' + Modal content: '.ui-dialog-content' + Modal title: '.ui-dialog-titlebar' My unpublished content area: '.block-user-unpublished' Navigation bar: '.joinup-navbar' Navigation menu: '#block-ventuno-navigation' diff --git a/composer.json b/composer.json index df716a2d69fb644874167370828275a4494e62a8..8491c291adc364ad01bfdc96b94c78d8c346007f 100644 --- a/composer.json +++ b/composer.json @@ -4,7 +4,7 @@ "type": "project", "license": "EUPL-1.2", "require": { - "php": ">=8.1.3", + "php": ">=8.2", "ext-dom": "*", "ext-json": "*", "ext-memcached": "*", @@ -13,8 +13,8 @@ "composer/installers": "^2", "cweagans/composer-patches": "^1.7", "drupal/addtocal": "^3.0", - "drupal/allowed_formats": "^2.0", - "drupal/antibot": "^1.5@stable", + "drupal/allowed_formats": "^3.0", + "drupal/antibot": "^2.0", "drupal/bootstrap4_modal": "^2.1", "drupal/cached_computed_field": "^1.0", "drupal/cas": "^2.0", @@ -23,8 +23,8 @@ "drupal/ckeditor": "^1.0", "drupal/config_ignore": "^3.0", "drupal/config_readonly": "^1.0", - "drupal/core-composer-scaffold": "~10.0", - "drupal/core-recommended": "~10.0", + "drupal/core": "~10.1", + "drupal/core-composer-scaffold": "~10.1", "drupal/custom_markup_block": "^1.2", "drupal/default_content": "^2.0", "drupal/diff": "~1.0", @@ -55,7 +55,8 @@ "drupal/inline_entity_form": "^1.0", "drupal/json_field": "^1.0", "drupal/layout_builder_component_attributes": "^2.1", - "drupal/linkit": "^6.0", + "drupal/layout_paragraphs": "^2.0", + "drupal/linkit": "^6.1", "drupal/memcache": "^2.5", "drupal/menu_admin_per_menu": "^1.3", "drupal/menu_link_destination": "^1.0", @@ -70,6 +71,7 @@ "drupal/paragraphs": "^1.12", "drupal/pathauto": "~1.8", "drupal/pipeline": "^1.0", + "drupal/poll": "^1.6", "drupal/publication_date": "^2.0", "drupal/rdf_entity": "^2.0", "drupal/rdf_meta_entity": "^1.0", @@ -83,9 +85,8 @@ "drupal/search_api_spellcheck": "^4.0", "drupal/simple_block": "^1.3", "drupal/simple_sitemap": "^4.0", - "drupal/site_alert": "~1.2", "drupal/sitewide_alert": "^2.1", - "drupal/smart_trim": "~1.3", + "drupal/smart_trim": "^2.1", "drupal/social_media_links": "^2.7", "drupal/state_machine": "^1.0", "drupal/subpathauto": "^1.2", @@ -128,6 +129,7 @@ "drupal/drupal-extension": "^5.0", "drupal/filecache": "^1.1", "drupal/http_request_mock": "^1.1", + "drupal/masquerade": "^2.0@RC", "drupal/renderviz": "^1.0", "drupal/upgrade_status": "^4.0", "drupaltest/behat-one-time-login": "^1.0", @@ -157,7 +159,7 @@ "config": { "sort-packages": true, "platform": { - "php": "8.1.3" + "php": "8.2" }, "allow-plugins": { "dealerdirect/phpcodesniffer-composer-installer": true, @@ -166,7 +168,7 @@ "drupal/core-composer-scaffold": true, "openeuropa/composer-artifacts": true, "phpstan/extension-installer": true, - "php-http/discovery": false, + "php-http/discovery": true, "mglaman/composer-drupal-lenient": true } }, @@ -242,9 +244,6 @@ "drupal/core": "-p2" }, "patches": { - "drupal/antibot": { - "D10 compatibility @see https://www.drupal.org/project/antibot/issues/3258107": "https://git.drupalcode.org/project/antibot/-/commit/05427aa.diff" - }, "drupal/bootstrap4_modal": { "Expected a scalar value as a 2nd argument to InputBag::get(), array given. @see https://www.drupal.org/i/3350657": "https://git.drupalcode.org/project/bootstrap4_modal/-/merge_requests/7.patch" }, @@ -253,29 +252,27 @@ "More details when registration is denied by a subscriber @see https://www.drupal.org/project/cas/issues/3325353": "https://git.drupalcode.org/project/cas/-/merge_requests/20.diff" }, "drupal/core": { - "Allow image style to be selected in text editor @see https://www.drupal.org/node/2061377": "https://www.drupal.org/files/issues/2023-07-18/2061377-441.patch", - "Allow making the file description a required field @see https://www.drupal.org/node/2320877": "https://git.drupalcode.org/project/drupal/-/merge_requests/4255.diff", - "Delete should not be the default action on /admin/content @see https://www.drupal.org/project/drupal/issues/2381293": "https://git.drupalcode.org/project/drupal/-/merge_requests/4251.diff", + "Allow image style to be selected in text editor @see https://www.drupal.org/node/2061377": "https://www.drupal.org/files/issues/2023-07-25/2061377-442.patch", + "Allow making the file description a required field @see https://www.drupal.org/node/2320877": "https://git.drupalcode.org/project/drupal/-/merge_requests/3915.diff", + "Delete should not be the default action on /admin/content @see https://www.drupal.org/project/drupal/issues/2381293": "https://git.drupalcode.org/project/drupal/-/merge_requests/2931.diff", "Regression: Do not bypass route access with 'link to any page' permissions for menu links @see https://www.drupal.org/project/drupal/issues/2463753": "https://git.drupalcode.org/project/drupal/-/merge_requests/3118.diff", "Upcast named arguments/named parameters in views @see https://www.drupal.org/project/drupal/issues/2528166": "https://git.drupalcode.org/project/drupal/-/merge_requests/1323.diff", "Confirmation cancel links are incorrect if installed in a subdirectory @see https://www.drupal.org/project/drupal/issues/2582295": "https://www.drupal.org/files/issues/2021-08-23/2582295-52.patch", "Allow plurals on bundle labels @see https://www.drupal.org/node/2765065": "https://git.drupalcode.org/project/drupal/-/merge_requests/4252.diff", "Enlarge file_usage entity ID length. @see https://www.drupal.org/node/2675600": "resources/patch/php/drupal/core/2675600.diff", "Menu link plugins should provide a way for the link to be conditionally hidden @see https://www.drupal.org/project/drupal/issues/2719609": "https://www.drupal.org/files/issues/2719609-2.patch", - "New option for Views page displays to use the admin theme @see https://www.drupal.org/node/2719797": "https://www.drupal.org/files/issues/2022-09-20/2719797-144.patch", - "Add thread depth configuration to comments. Includes patch for parent issue #2879087. @see https://www.drupal.org/project/drupal/issues/2786587 @see https://www.drupal.org/project/drupal/issues/2879087": "https://git.drupalcode.org/project/drupal/-/merge_requests/3124.diff", + "Add thread depth configuration to comments. Includes patch for parent issue #2879087. @see https://www.drupal.org/project/drupal/issues/2786587 @see https://www.drupal.org/project/drupal/issues/2879087": "https://git.drupalcode.org/project/drupal/-/merge_requests/4584.diff", "Set fixed depth for comment threads.": "resources/patch/php/drupal/core/2786587-thread-depth-fixed-limit.patch", "Add option to show only start or end date in the DateTime Range custom formatter @see https://www.drupal.org/project/drupal/issues/2827055": "https://www.drupal.org/files/issues/2022-06-16/2827055-69.patch", "Views with a different query plugin created via the UI do not have the correct query plugin ID in the view config @see https://www.drupal.org/project/drupal/issues/2836237": "https://www.drupal.org/files/issues/2022-01-17/2836237-49-9.3.x.patch", - "Pass current route parameters to the confirmation form route @see https://www.drupal.org/project/drupal/issues/2901412": "resources/patch/php/drupal/core/2901412-25.diff", + "Pass current route parameters to the confirmation form route @see https://www.drupal.org/project/drupal/issues/2901412": "https://git.drupalcode.org/project/drupal/-/merge_requests/4586.diff", "Cache tags are not invalidated on revision delete @see https://www.drupal.org/project/drupal/issues/2945928": "https://www.drupal.org/files/issues/entity-cache_revision_deletion-2945928-2.patch", - "There is no way to delete file entities of other users @see https://www.drupal.org/project/drupal/issues/2949017": "https://www.drupal.org/files/issues/2023-02-01/2949017-9.5.x-153.patch", "Have responsive image module ignore svg @see https://www.drupal.org/project/drupal/issues/2957924": "https://www.drupal.org/files/issues/2022-06-23/drupal-responsive_image_svg_support-2957924-11.patch", "Restrict images to this site\" restricts images that, by definition, *are* on this site @see https://www.drupal.org/project/drupal/issues/2998318": "https://git.drupalcode.org/project/drupal/-/merge_requests/3810.diff", "Make it easier to trigger a tour @see https://www.drupal.org/project/drupal/issues/3012027": "https://www.drupal.org/files/issues/2023-02-08/3012027-63.patch", - "EntityConstraintValidationList::findByCode is inconsistent @see https://www.drupal.org/project/drupal/issues/3126654": "https://www.drupal.org/files/issues/2023-03-14/3126654-17.patch", "Cannot implement a custom user cancellation method @see https://www.drupal.org/project/drupal/issues/3135592": "https://git.drupalcode.org/project/drupal/-/merge_requests/1675.diff", - "If you don't set the \"version\" of a profile, the report/status displays an empty dash @see https://www.drupal.org/project/drupal/issues/3270892": "https://git.drupalcode.org/project/drupal/-/merge_requests/2003.diff" + "If you don't set the \"version\" of a profile, the report/status displays an empty dash @see https://www.drupal.org/project/drupal/issues/3270892": "https://git.drupalcode.org/project/drupal/-/merge_requests/2003.diff", + "hook_requirements_alter() is not invoked on update @see https://www.drupal.org/project/drupal/issues/3324995": "resources/patch/php/drupal/core/3324995.diff" }, "drupal/default_content": { "Allow manual imports @see https://www.drupal.org/i/2640734": "https://git.drupalcode.org/project/default_content/-/merge_requests/20.diff" @@ -288,7 +285,8 @@ }, "drupal/email_confirmer": { "Support for HTML mails @see https://www.drupal.org/i/3047124": "https://git.drupalcode.org/project/email_confirmer/-/merge_requests/3.diff", - "D10 compatibility @see https://www.drupal.org/project/email_confirmer/issues/3322626": "resources/patch/php/drupal/email_confirmer/3322626.diff" + "D10 compatibility @see https://www.drupal.org/project/email_confirmer/issues/3322626": "resources/patch/php/drupal/email_confirmer/3322626.diff", + "The email_confirmer_requests queue worker plugin is not constructed correctly @see https://www.drupal.org/project/email_confirmer/issues/3381039": "resources/patch/php/drupal/email_confirmer/3381039.diff" }, "drupal/email_contact": { "Move form creation in a protected method from ContactController::content() to ContactController::getForm() @see https://www.drupal.org/project/email_contact/issues/3346470": "https://git.drupalcode.org/project/email_contact/-/merge_requests/12.diff" @@ -298,14 +296,15 @@ }, "drupal/facets": { "Facet Summary for Facet Items with a set dependency. @see https://www.drupal.org/i/2873480": "https://git.drupalcode.org/project/facets/-/merge_requests/128.diff", - "Add 0 option in 'Soft limit' and apply soft limit to facet root li tags and add. @see https://www.drupal.org/i/3208580 and https://www.drupal.org/i/3307082": "resources/patch/php/drupal/facets/3208580-and-3307082.patch" + "Add 0 option in 'Soft limit' and apply soft limit to facet root li tags and add. @see https://www.drupal.org/i/3208580 and https://www.drupal.org/i/3307082": "resources/patch/php/drupal/facets/3208580-and-3307082.patch", + "Creation of dynamic property is deprecated @see https://www.drupal.org/project/facets/issues/3336646": "resources/patch/php/drupal/facets/3336646.diff" }, "drupal/field_delimiter": { "Doesn't work in layout builder. @see https://www.drupal.org/i/3099580": "https://www.drupal.org/files/issues/2020-04-08/field_delimiter-3099580-7.patch", "str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated in Drupal\\Component\\Utility\\Xss::filter(). @see https://www.drupal.org/i/3301169": "https://www.drupal.org/files/issues/2022-10-13/field_delimiter-3301169-fix-php-8.1-warning-9.patch" }, "drupal/file_url": { - "Handle deleted files": "resources/patch/php/drupal/file_url/file_url.diff", + "Handle deleted files @see https://www.drupal.org/project/file_url/issues/3326758": "resources/patch/php/drupal/file_url/3326758.diff", "No link template 'canonical' found @see https://www.drupal.org/project/file_url/issues/3346487": "resources/patch/php/drupal/file_url/3346487.diff" }, "drupal/flag": { @@ -314,6 +313,7 @@ "Disclose flagging view mode in flag theming @see https://www.drupal.org/project/flag/issues/3049155": "resources/patch/php/drupal/flag/3049155-16.patch" }, "drupal/honeypot": { + "Missing primary key in table `honeypot_user` @see https://www.drupal.org/project/honeypot/issues/2943526": "resources/patch/php/drupal/honeypot/2943526.diff", "Behat integration. @see https://www.drupal.org/project/honeypot/issues/3059040": "https://www.drupal.org/files/issues/2020-09-09/3059040-31.patch", "Provide ways to clean up old honeypot_time_restriction values @see https://www.drupal.org/project/honeypot/issues/2997609": "https://git.drupalcode.org/project/honeypot/-/merge_requests/2.diff" }, @@ -326,6 +326,15 @@ "drupal/message_notify": { "Allow 3rd-party to act before delivery @see https://www.drupal.org/project/message_notify/issues/3314370": "resources/patch/php/drupal/message_notify/3314370.diff" }, + "drupal/pathauto": { + "PHP 8.2 compatibility @see https://www.drupal.org/project/pathauto/issues/3328670": "https://www.drupal.org/files/issues/2022-12-21/php8.2notice-pathauto-3328670.patch" + }, + "drupal/poll": { + "Add permissions to edit all polls @see https://www.drupal.org/project/poll/issues/3274724": "resources/patch/php/drupal/poll/3274724-4.patch" + }, + "drupal/publication_date": { + "Fix PHP 8.2 deprecation issue with PublishedAtOrNowComputed class @see https://www.drupal.org/project/publication_date/issues/3328575": "https://www.drupal.org/files/issues/2023-05-31/3328575-5-fix-bux-publicate-date.patch" + }, "drupal/rdf_entity": { "Allow bundle label plural variants @see https://github.com/ec-europa/rdf_entity/pull/12": "https://github.com/ec-europa/rdf_entity/compare/8.x-1.x...ea8f6af001fca732e89a4be0e29643953f49a88f.diff" }, @@ -342,8 +351,8 @@ "URL don't include the base path @see https://www.drupal.org/project/search_api_spellcheck/issues/3280372" : "https://git.drupalcode.org/project/search_api_spellcheck/-/merge_requests/2.diff" }, "drupal/smart_trim": { - "D10 compatibility": "resources/patch/php/drupal/smart_trim/d10.diff", - "Avoid max nesting level during development @see https://www.drupal.org/project/smart_trim/issues/3013628": "https://www.drupal.org/files/issues/2020-05-28/maximum_function_nesting-3013628-D8-7.patch" + "Avoid max nesting level during development @see https://www.drupal.org/project/smart_trim/issues/3013628": "https://www.drupal.org/files/issues/2022-10-26/max_function_nesting-3013628-13.patch", + "Space inserted before full stop, comma, etc @see https://www.drupal.org/project/smart_trim/issues/3369954": "resources/patch/php/drupal/smart_trim/3369954.diff" }, "drupal/social_media_links": { "Missing config schema for field, widget and formatter @see https://www.drupal.org/node/2898680": "https://git.drupalcode.org/project/social_media_links/-/merge_requests/4.diff", @@ -370,9 +379,7 @@ }, "drupal-lenient": { "allowed-list": [ - "drupal/antibot", - "drupal/email_confirmer", - "drupal/smart_trim" + "drupal/email_confirmer" ] }, "artifacts": { diff --git a/composer.lock b/composer.lock index 4cc0241f613627c4064b524ba7e23178390290c7..c9ee287285b4fad8d00fbc258d4debfaef6e0498 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": "19f7bc68018dc7a647c89ab8e24d9bf4", + "content-hash": "9a47e01ec98ee0a9304a7b41d0b33a67", "packages": [ { "name": "asm89/stack-cors", @@ -125,16 +125,16 @@ }, { "name": "chi-teck/drupal-code-generator", - "version": "3.0.0", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/Chi-teck/drupal-code-generator.git", - "reference": "ccaca62c878e2857635cf8571125fb6f90a9b556" + "reference": "6883a423f21446b16f8b9a2d90cc5abd4bc3e5d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Chi-teck/drupal-code-generator/zipball/ccaca62c878e2857635cf8571125fb6f90a9b556", - "reference": "ccaca62c878e2857635cf8571125fb6f90a9b556", + "url": "https://api.github.com/repos/Chi-teck/drupal-code-generator/zipball/6883a423f21446b16f8b9a2d90cc5abd4bc3e5d6", + "reference": "6883a423f21446b16f8b9a2d90cc5abd4bc3e5d6", "shasum": "" }, "require": { @@ -142,27 +142,26 @@ "php": ">=8.1.0", "psr/event-dispatcher": "^1.0", "psr/log": "^3.0", - "symfony/console": "^6.2", - "symfony/dependency-injection": "^6.2", - "symfony/filesystem": "^6.2", - "symfony/string": "^6.2", + "symfony/console": "^6.3", + "symfony/dependency-injection": "^6.3.2", + "symfony/filesystem": "^6.3", + "symfony/string": "^6.3", "twig/twig": "^3.4" }, "conflict": { - "slevomat/coding-standard": "<8.6.4", "squizlabs/php_codesniffer": "<3.6" }, "require-dev": { - "chi-teck/drupal-coder-extension": "^2.0.0-alpha2", - "drupal/coder": "8.3.17", + "chi-teck/drupal-coder-extension": "^2.0.0-alpha4", + "drupal/coder": "8.3.20", "drupal/core": "10.1.x-dev", "ext-simplexml": "*", "phpspec/prophecy-phpunit": "^2.0", "phpunit/phpunit": "^9.5", "squizlabs/php_codesniffer": "^3.7", - "symfony/var-dumper": "^6.2", - "symfony/yaml": "^6.2", - "vimeo/psalm": "^5.4" + "symfony/var-dumper": "^6.3", + "symfony/yaml": "^6.3", + "vimeo/psalm": "^5.14.0" }, "bin": [ "bin/dcg" @@ -180,9 +179,9 @@ "description": "Drupal code generator", "support": { "issues": "https://github.com/Chi-teck/drupal-code-generator/issues", - "source": "https://github.com/Chi-teck/drupal-code-generator/tree/3.0.0" + "source": "https://github.com/Chi-teck/drupal-code-generator/tree/3.2.0" }, - "time": "2023-03-26T07:06:55+00:00" + "time": "2023-08-06T11:19:01+00:00" }, { "name": "clue/stream-filter", @@ -1176,32 +1175,35 @@ }, { "name": "doctrine/annotations", - "version": "1.13.3", + "version": "1.14.3", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "648b0343343565c4a056bfc8392201385e8d89f0" + "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/648b0343343565c4a056bfc8392201385e8d89f0", - "reference": "648b0343343565c4a056bfc8392201385e8d89f0", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", + "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", "shasum": "" }, "require": { - "doctrine/lexer": "1.*", + "doctrine/lexer": "^1 || ^2", "ext-tokenizer": "*", "php": "^7.1 || ^8.0", "psr/cache": "^1 || ^2 || ^3" }, "require-dev": { "doctrine/cache": "^1.11 || ^2.0", - "doctrine/coding-standard": "^6.0 || ^8.1", - "phpstan/phpstan": "^1.4.10 || ^1.8.0", - "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5", - "symfony/cache": "^4.4 || ^5.2", + "doctrine/coding-standard": "^9 || ^10", + "phpstan/phpstan": "~1.4.10 || ^1.8.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "symfony/cache": "^4.4 || ^5.4 || ^6", "vimeo/psalm": "^4.10" }, + "suggest": { + "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" + }, "type": "library", "autoload": { "psr-4": { @@ -1243,9 +1245,9 @@ ], "support": { "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.13.3" + "source": "https://github.com/doctrine/annotations/tree/1.14.3" }, - "time": "2022-07-02T10:48:51+00:00" + "time": "2023-02-01T09:20:38+00:00" }, { "name": "doctrine/lexer", @@ -1402,29 +1404,32 @@ }, { "name": "drupal/allowed_formats", - "version": "2.0.0", + "version": "3.0.0-alpha1", "source": { "type": "git", "url": "https://git.drupalcode.org/project/allowed_formats.git", - "reference": "2.0.0" + "reference": "3.0.0-alpha1" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/allowed_formats-2.0.0.zip", - "reference": "2.0.0", - "shasum": "ac6c6d398f303608ced7e9cd9d4556a728dc41f0" + "url": "https://ftp.drupal.org/files/projects/allowed_formats-3.0.0-alpha1.zip", + "reference": "3.0.0-alpha1", + "shasum": "ee5de80367d7c500cce7d2047be9377b0fab3550" }, "require": { - "drupal/core": "^9.2 || ^10" + "drupal/core": "^10.1" + }, + "conflict": { + "drupal/core": "<10.1.0" }, "type": "drupal-module", "extra": { "drupal": { - "version": "2.0.0", - "datestamp": "1669170410", + "version": "3.0.0-alpha1", + "datestamp": "1691125386", "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" + "status": "not-covered", + "message": "Alpha releases are not covered by Drupal security advisories." } } }, @@ -1454,7 +1459,7 @@ "role": "Maintainer" } ], - "description": "Limit which text formats are available for each field instance.", + "description": "Hides info about the selected text format. The 'allowed formats' functionality has been moved to core since Drupal 10.1.0.", "homepage": "https://www.drupal.org/project/allowed_formats", "support": { "source": "http://cgit.drupalcode.org/allowed_formats", @@ -1463,26 +1468,26 @@ }, { "name": "drupal/antibot", - "version": "1.5.0", + "version": "2.0.2", "source": { "type": "git", "url": "https://git.drupalcode.org/project/antibot.git", - "reference": "8.x-1.5" + "reference": "2.0.2" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/antibot-8.x-1.5.zip", - "reference": "8.x-1.5", - "shasum": "f3597cde2903c979042bf8c1b25a9d3694159e43" + "url": "https://ftp.drupal.org/files/projects/antibot-2.0.2.zip", + "reference": "2.0.2", + "shasum": "e5866fbe1d8e5ff2811ff77efee754d26c313efb" }, "require": { - "drupal/core": "^8 || ^9 || ^10" + "drupal/core": "^8.8 || ^9 || ^10" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.5", - "datestamp": "1637670654", + "version": "2.0.2", + "datestamp": "1666001671", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -2020,24 +2025,24 @@ }, { "name": "drupal/core", - "version": "10.0.10", + "version": "10.1.2", "source": { "type": "git", "url": "https://github.com/drupal/core.git", - "reference": "f387645873271267b498e428774d1d5dd40147b0" + "reference": "949779f2244b955bdd6946c8af5dee8054501fe6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drupal/core/zipball/f387645873271267b498e428774d1d5dd40147b0", - "reference": "f387645873271267b498e428774d1d5dd40147b0", + "url": "https://api.github.com/repos/drupal/core/zipball/949779f2244b955bdd6946c8af5dee8054501fe6", + "reference": "949779f2244b955bdd6946c8af5dee8054501fe6", "shasum": "" }, "require": { "asm89/stack-cors": "^2.1", "composer-runtime-api": "^2.1", "composer/semver": "^3.3", - "doctrine/annotations": "^1.13", - "egulias/email-validator": "^3.2.1", + "doctrine/annotations": "^1.14", + "egulias/email-validator": "^3.2.1|^4.0", "ext-date": "*", "ext-dom": "*", "ext-filter": "*", @@ -2054,23 +2059,25 @@ "guzzlehttp/guzzle": "^7.5", "guzzlehttp/psr7": "^2.4.5", "masterminds/html5": "^2.7", + "mck89/peast": "^1.14", "pear/archive_tar": "^1.4.14", "php": ">=8.1.0", "psr/log": "^3.0", - "symfony/console": "^6.2", - "symfony/dependency-injection": "^6.2", - "symfony/event-dispatcher": "^6.2", - "symfony/http-foundation": "^6.2", - "symfony/http-kernel": "^6.2", - "symfony/mime": "^6.2", + "sebastian/diff": "^4", + "symfony/console": "^6.3", + "symfony/dependency-injection": "^6.3", + "symfony/event-dispatcher": "^6.3", + "symfony/http-foundation": "^6.3", + "symfony/http-kernel": "^6.3", + "symfony/mime": "^6.3", "symfony/polyfill-iconv": "^1.26", - "symfony/process": "^6.2", + "symfony/process": "^6.3", "symfony/psr-http-message-bridge": "^2.1", - "symfony/routing": "^6.2", - "symfony/serializer": "~6.2.0", - "symfony/validator": "~6.2.0", - "symfony/yaml": "^6.2", - "twig/twig": "^3.4.3" + "symfony/routing": "^6.3", + "symfony/serializer": "^6.3", + "symfony/validator": "^6.3", + "symfony/yaml": "^6.3", + "twig/twig": "^3.5.0" }, "conflict": { "drush/drush": "<8.1.10" @@ -2172,13 +2179,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.0.10" + "source": "https://github.com/drupal/core/tree/10.1.2" }, - "time": "2023-07-05T09:11:29+00:00" + "time": "2023-08-02T10:10:11+00:00" }, { "name": "drupal/core-composer-scaffold", - "version": "10.1.1", + "version": "10.1.2", "source": { "type": "git", "url": "https://github.com/drupal/core-composer-scaffold.git", @@ -2222,89 +2229,10 @@ "drupal" ], "support": { - "source": "https://github.com/drupal/core-composer-scaffold/tree/10.1.1" + "source": "https://github.com/drupal/core-composer-scaffold/tree/10.1.2" }, "time": "2023-04-30T16:15:32+00:00" }, - { - "name": "drupal/core-recommended", - "version": "10.0.10", - "source": { - "type": "git", - "url": "https://github.com/drupal/core-recommended.git", - "reference": "52761f7f6b2816089e4310c4f700c5a6c4b340e1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/drupal/core-recommended/zipball/52761f7f6b2816089e4310c4f700c5a6c4b340e1", - "reference": "52761f7f6b2816089e4310c4f700c5a6c4b340e1", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "~v2.1.1", - "composer/semver": "~3.3.2", - "doctrine/annotations": "~1.13.3", - "doctrine/lexer": "~1.2.3", - "drupal/core": "10.0.10", - "egulias/email-validator": "~3.2.1", - "guzzlehttp/guzzle": "~7.5.0", - "guzzlehttp/promises": "~1.5.2", - "guzzlehttp/psr7": "~2.4.5", - "masterminds/html5": "~2.7.6", - "pear/archive_tar": "~1.4.14", - "pear/console_getopt": "~v1.4.3", - "pear/pear-core-minimal": "~v1.10.11", - "pear/pear_exception": "~v1.0.2", - "psr/cache": "~3.0.0", - "psr/container": "~2.0.2", - "psr/event-dispatcher": "~1.0.0", - "psr/http-client": "~1.0.1", - "psr/http-factory": "~1.0.1", - "psr/http-message": "~1.0.1", - "psr/log": "~3.0.0", - "ralouphie/getallheaders": "~3.0.3", - "symfony/console": "~v6.2.5", - "symfony/dependency-injection": "~v6.2.6", - "symfony/deprecation-contracts": "~v3.2.0", - "symfony/error-handler": "~v6.2.5", - "symfony/event-dispatcher": "~v6.2.5", - "symfony/event-dispatcher-contracts": "~v3.2.0", - "symfony/http-foundation": "~v6.2.6", - "symfony/http-kernel": "~v6.2.6", - "symfony/mime": "~v6.2.5", - "symfony/polyfill-ctype": "~v1.27.0", - "symfony/polyfill-iconv": "~v1.27.0", - "symfony/polyfill-intl-grapheme": "~v1.27.0", - "symfony/polyfill-intl-idn": "~v1.27.0", - "symfony/polyfill-intl-normalizer": "~v1.27.0", - "symfony/polyfill-mbstring": "~v1.27.0", - "symfony/process": "~v6.2.5", - "symfony/psr-http-message-bridge": "~v2.1.4", - "symfony/routing": "~v6.2.5", - "symfony/serializer": "~v6.2.5", - "symfony/service-contracts": "~v3.2.0", - "symfony/string": "~v6.2.5", - "symfony/translation-contracts": "~v3.2.0", - "symfony/validator": "~v6.2.5", - "symfony/var-dumper": "~v6.2.5", - "symfony/var-exporter": "~v6.2.5", - "symfony/yaml": "~v6.2.5", - "twig/twig": "~v3.5.0" - }, - "conflict": { - "webflo/drupal-core-strict": "*" - }, - "type": "metapackage", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "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.0.10" - }, - "time": "2023-07-05T09:11:29+00:00" - }, { "name": "drupal/csv_serialization", "version": "3.0.0", @@ -3225,17 +3153,17 @@ }, { "name": "drupal/entityqueue", - "version": "1.6.0", + "version": "1.7.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/entityqueue.git", - "reference": "8.x-1.6" + "reference": "8.x-1.7" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/entityqueue-8.x-1.6.zip", - "reference": "8.x-1.6", - "shasum": "8ae967916d48df995a959cc2725832f327379487" + "url": "https://ftp.drupal.org/files/projects/entityqueue-8.x-1.7.zip", + "reference": "8.x-1.7", + "shasum": "94311ac7909f58ecc267c490b89ab3c13ebdbf8e" }, "require": { "drupal/core": "^8.7.7 || ^9 || ^10" @@ -3243,8 +3171,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.6", - "datestamp": "1674474067", + "version": "8.x-1.7", + "datestamp": "1692176074", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -4042,17 +3970,17 @@ }, { "name": "drupal/geofield", - "version": "1.53.0", + "version": "1.54.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/geofield.git", - "reference": "8.x-1.53" + "reference": "8.x-1.54" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/geofield-8.x-1.53.zip", - "reference": "8.x-1.53", - "shasum": "b915c1374731f1f8c4ccfd81ea1c0ad0b1466c99" + "url": "https://ftp.drupal.org/files/projects/geofield-8.x-1.54.zip", + "reference": "8.x-1.54", + "shasum": "a9fd5434d50cfc50d0fdce716159728855bd36c9" }, "require": { "drupal/core": "^8.8 || ^9 || ^10", @@ -4061,8 +3989,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.53", - "datestamp": "1682551435", + "version": "8.x-1.54", + "datestamp": "1690796214", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -4224,17 +4152,17 @@ }, { "name": "drupal/image_library_widget", - "version": "2.0.0-alpha1", + "version": "2.0.0-alpha2", "source": { "type": "git", "url": "https://git.drupalcode.org/project/image_library_widget.git", - "reference": "2.0.0-alpha1" + "reference": "2.0.0-alpha2" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/image_library_widget-2.0.0-alpha1.zip", - "reference": "2.0.0-alpha1", - "shasum": "45e7aa95d00981d2844dd08f437596344c2cf90a" + "url": "https://ftp.drupal.org/files/projects/image_library_widget-2.0.0-alpha2.zip", + "reference": "2.0.0-alpha2", + "shasum": "f1c059a9ed11e6281e815042b335869707b6debe" }, "require": { "drupal/core": "^9 || ^10" @@ -4242,8 +4170,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "2.0.0-alpha1", - "datestamp": "1669825947", + "version": "2.0.0-alpha2", + "datestamp": "1692089588", "security-coverage": { "status": "not-covered", "message": "Alpha releases are not covered by Drupal security advisories." @@ -4367,17 +4295,17 @@ }, { "name": "drupal/json_field", - "version": "1.2.0", + "version": "1.3.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/json_field.git", - "reference": "8.x-1.2" + "reference": "8.x-1.3" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/json_field-8.x-1.2.zip", - "reference": "8.x-1.2", - "shasum": "9d1233be45736afcaa29336d7d09410a6b342c46" + "url": "https://ftp.drupal.org/files/projects/json_field-8.x-1.3.zip", + "reference": "8.x-1.3", + "shasum": "81336a7d37a5b7ffa8cf0c8a4efa0e54d7cb5028" }, "require": { "drupal/core": "^9.2 || ^10", @@ -4393,8 +4321,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.2", - "datestamp": "1673020757", + "version": "8.x-1.3", + "datestamp": "1691597985", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -4476,25 +4404,80 @@ "issues": "https://drupal.org/project/issues/layout_builder_component_attributes" } }, + { + "name": "drupal/layout_paragraphs", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/layout_paragraphs.git", + "reference": "2.0.3" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/layout_paragraphs-2.0.3.zip", + "reference": "2.0.3", + "shasum": "e0703d8b7c93931c4840167883d3993846485f44" + }, + "require": { + "drupal/core": "^9.2 || ^10", + "drupal/paragraphs": "^1.6" + }, + "require-dev": { + "drupal/block_field": "~1.0", + "drupal/entity_usage": "2.x-dev", + "drupal/paragraphs-paragraphs_library": "*" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "2.0.3", + "datestamp": "1683938207", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "itamair", + "homepage": "https://www.drupal.org/user/1179076" + }, + { + "name": "justin2pin", + "homepage": "https://www.drupal.org/user/278450" + } + ], + "description": "Layout Paragraphs", + "homepage": "https://www.drupal.org/project/layout_paragraphs", + "keywords": [ + "Drupal" + ], + "support": { + "source": "http://cgit.drupalcode.org/layout_paragraphs", + "issues": "https://www.drupal.org/project/issues/layout_paragraphs" + } + }, { "name": "drupal/linkit", - "version": "6.0.0", + "version": "6.1.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/linkit.git", - "reference": "6.0.0" + "reference": "6.1.0" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/linkit-6.0.0.zip", - "reference": "6.0.0", - "shasum": "3c4143eb797abee04e5af47eb1885a65e6321b51" + "url": "https://ftp.drupal.org/files/projects/linkit-6.1.0.zip", + "reference": "6.1.0", + "shasum": "0b4c111651ef478091fc0d38360cee168ca17eee" }, "require": { - "drupal/core": "^9.4 || ^10.0.0" - }, - "conflict": { - "drupal/core": ">=10.1" + "drupal/core": "^10.1" }, "require-dev": { "drupal/ckeditor": "*", @@ -4503,8 +4486,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "6.0.0", - "datestamp": "1688748025", + "version": "6.1.0", + "datestamp": "1688747800", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -5132,7 +5115,7 @@ "extra": { "drupal": { "version": "2.0.0", - "datestamp": "1690247240", + "datestamp": "1692368265", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -5671,6 +5654,62 @@ "issues": "https://www.drupal.org/project/issues/pipeline" } }, + { + "name": "drupal/poll", + "version": "1.6.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/poll.git", + "reference": "8.x-1.6" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/poll-8.x-1.6.zip", + "reference": "8.x-1.6", + "shasum": "e7ae83ed214a03e6ecf26a8ac7b500ba61d4dde5" + }, + "require": { + "drupal/core": "^9 || ^10" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.6", + "datestamp": "1680209860", + "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": "adammalone", + "homepage": "https://www.drupal.org/user/1295980" + }, + { + "name": "Berdir", + "homepage": "https://www.drupal.org/user/214652" + }, + { + "name": "BramDriesen", + "homepage": "https://www.drupal.org/user/3383264" + }, + { + "name": "mqanneh", + "homepage": "https://www.drupal.org/user/2833163" + } + ], + "description": "Allows your site to capture votes on different topics in the form of multiple choice questions.", + "homepage": "https://www.drupal.org/project/poll", + "support": { + "source": "https://git.drupalcode.org/project/poll" + } + }, { "name": "drupal/publication_date", "version": "2.0.0-beta7", @@ -5956,8 +5995,8 @@ ], "authors": [ { - "name": "Niels van Mourik", - "homepage": "http://www.nielsvm.org" + "name": "djbobbydrake", + "homepage": "https://www.drupal.org/user/336378" }, { "name": "japerry", @@ -6143,6 +6182,10 @@ "name": "Dave Reid", "homepage": "https://www.drupal.org/user/53892" }, + { + "name": "Kristen Pol", + "homepage": "https://www.drupal.org/user/8389" + }, { "name": "pifagor", "homepage": "https://www.drupal.org/user/2375692" @@ -6767,71 +6810,6 @@ "issues": "https://drupal.org/project/issues/simple_sitemap" } }, - { - "name": "drupal/site_alert", - "version": "1.3.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/site_alert.git", - "reference": "8.x-1.3" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/site_alert-8.x-1.3.zip", - "reference": "8.x-1.3", - "shasum": "e7c2991597f20e4556b7a70e85c9229b55acc236" - }, - "require": { - "drupal/core": "^8 || ^9 || ^10" - }, - "require-dev": { - "drush/drush": "^9 || ^10 || ^11" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-1.3", - "datestamp": "1676493382", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - }, - "drush": { - "services": { - "drush.services.yml": "^9 || ^10 || ^11" - } - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0+" - ], - "authors": [ - { - "name": "Cecily Borzillo", - "homepage": "https://www.drupal.org/u/cecrs", - "role": "Maintainer" - }, - { - "name": "nicola85", - "homepage": "https://www.drupal.org/user/1746956" - }, - { - "name": "pfrenssen", - "homepage": "https://www.drupal.org/user/382067" - } - ], - "description": "Allows site admins to display a site-wide alert to all users.", - "homepage": "https://www.drupal.org/project/site_alert", - "keywords": [ - "Drupal" - ], - "support": { - "source": "http://cgit.drupalcode.org/site_alert", - "issues": "https://www.drupal.org/project/issues/site_alert" - } - }, { "name": "drupal/sitewide_alert", "version": "2.1.1", @@ -6885,26 +6863,31 @@ }, { "name": "drupal/smart_trim", - "version": "1.3.0", + "version": "2.1.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/smart_trim.git", - "reference": "8.x-1.3" + "reference": "2.1.0" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/smart_trim-8.x-1.3.zip", - "reference": "8.x-1.3", - "shasum": "5894aa067fba19a3452ed8ce749f33bd9ae91907" + "url": "https://ftp.drupal.org/files/projects/smart_trim-2.1.0.zip", + "reference": "2.1.0", + "shasum": "874b4cbddc4833f1b9adc76a8398377903fd73ee" }, "require": { - "drupal/core": "^8 || ^9 || ^10" + "drupal/core": "^8 || ^9 || ^10", + "drupal/token": "^1.0", + "php": ">=7.4.0" + }, + "require-dev": { + "drupal/token_filter": "^2.0" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.3", - "datestamp": "1589766531", + "version": "2.1.0", + "datestamp": "1686152417", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -6922,18 +6905,20 @@ "role": "Maintainer" }, { - "name": "ultimike", - "homepage": "https://www.drupal.org/user/51132" + "name": "AmyJune Hineline (volkswagenchick)", + "homepage": "https://www.drupal.org/u/volkswagenchick", + "role": "Maintainer" }, { - "name": "volkswagenchick", - "homepage": "https://www.drupal.org/user/3332522" + "name": "Michael Anello (ultimike)", + "homepage": "https://www.drupal.org/u/ultimike", + "role": "Maintainer" } ], "description": "Provides a more robust alternative to 'summary or trimmed' textfield format.", "homepage": "https://drupal.org/project/smart_trim", "support": { - "source": "https://cgit.drupalcode.org/smart_trim", + "source": "https://git.drupalcode.org/project/smart_trim", "issues": "https://drupal.org/project/issues/smart_trim" } }, @@ -7483,6 +7468,14 @@ "name": "bircher", "homepage": "https://www.drupal.org/user/1344166" }, + { + "name": "Christian.wiedemann", + "homepage": "https://www.drupal.org/user/861002" + }, + { + "name": "DuaelFr", + "homepage": "https://www.drupal.org/user/931394" + }, { "name": "G4MBINI", "homepage": "https://www.drupal.org/user/2533498" @@ -7849,17 +7842,17 @@ }, { "name": "drupal/views_bulk_operations", - "version": "4.2.4", + "version": "4.2.5", "source": { "type": "git", "url": "https://git.drupalcode.org/project/views_bulk_operations.git", - "reference": "4.2.4" + "reference": "4.2.5" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/views_bulk_operations-4.2.4.zip", - "reference": "4.2.4", - "shasum": "26f1dea73780fab2e338380ae803feca989172e1" + "url": "https://ftp.drupal.org/files/projects/views_bulk_operations-4.2.5.zip", + "reference": "4.2.5", + "shasum": "220479c5187b1619d5703f64c6f8c272afecf897" }, "require": { "drupal/core": "^9.4 || ^10", @@ -7874,8 +7867,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "4.2.4", - "datestamp": "1685368786", + "version": "4.2.5", + "datestamp": "1691066184", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -8035,16 +8028,16 @@ }, { "name": "drush/drush", - "version": "12.1.1", + "version": "12.1.3", "source": { "type": "git", "url": "https://github.com/drush-ops/drush.git", - "reference": "586496f191c93d3ca5dc498fe6d1ecbdd7204330" + "reference": "30627b55c20f11d5e8db5c2bd6bd582383404620" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drush-ops/drush/zipball/586496f191c93d3ca5dc498fe6d1ecbdd7204330", - "reference": "586496f191c93d3ca5dc498fe6d1ecbdd7204330", + "url": "https://api.github.com/repos/drush-ops/drush/zipball/30627b55c20f11d5e8db5c2bd6bd582383404620", + "reference": "30627b55c20f11d5e8db5c2bd6bd582383404620", "shasum": "" }, "require": { @@ -8054,6 +8047,7 @@ "consolidation/annotated-command": "^4.9.1", "consolidation/config": "^2.1.2", "consolidation/filter-via-dot-access-data": "^2.0.2", + "consolidation/output-formatters": "^4.3.2", "consolidation/robo": "^4.0.6", "consolidation/site-alias": "^4", "consolidation/site-process": "^5.2.0", @@ -8166,7 +8160,7 @@ "issues": "https://github.com/drush-ops/drush/issues", "security": "https://github.com/drush-ops/drush/security/advisories", "slack": "https://drupal.slack.com/messages/C62H9CWQM", - "source": "https://github.com/drush-ops/drush/tree/12.1.1" + "source": "https://github.com/drush-ops/drush/tree/12.1.3" }, "funding": [ { @@ -8174,7 +8168,7 @@ "type": "github" } ], - "time": "2023-06-28T13:56:27+00:00" + "time": "2023-08-09T17:44:58+00:00" }, { "name": "ec-europa/joinup-tallinn-dashboard", @@ -8616,21 +8610,21 @@ }, { "name": "guzzlehttp/guzzle", - "version": "7.5.3", + "version": "7.7.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "584d1f06b5caa07b0587f5054d551ed65460ce5d" + "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/584d1f06b5caa07b0587f5054d551ed65460ce5d", - "reference": "584d1f06b5caa07b0587f5054d551ed65460ce5d", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/fb7566caccf22d74d1ab270de3551f72a58399f5", + "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5", + "guzzlehttp/promises": "^1.5.3 || ^2.0", "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", @@ -8642,7 +8636,8 @@ "require-dev": { "bamarni/composer-bin-plugin": "^1.8.1", "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", + "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "php-http/message-factory": "^1.1", "phpunit/phpunit": "^8.5.29 || ^9.5.23", "psr/log": "^1.1 || ^2.0 || ^3.0" }, @@ -8721,7 +8716,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.5.3" + "source": "https://github.com/guzzle/guzzle/tree/7.7.0" }, "funding": [ { @@ -8737,33 +8732,37 @@ "type": "tidelift" } ], - "time": "2023-05-15T20:42:18+00:00" + "time": "2023-05-21T14:04:53+00:00" }, { "name": "guzzlehttp/promises", - "version": "1.5.3", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e" + "reference": "111166291a0f8130081195ac4556a5587d7f1b5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/67ab6e18aaa14d753cc148911d273f6e6cb6721e", - "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e", + "url": "https://api.github.com/repos/guzzle/promises/zipball/111166291a0f8130081195ac4556a5587d7f1b5d", + "reference": "111166291a0f8130081195ac4556a5587d7f1b5d", "shasum": "" }, "require": { - "php": ">=5.5" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" + "bamarni/composer-bin-plugin": "^1.8.1", + "phpunit/phpunit": "^8.5.29 || ^9.5.23" }, "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { "GuzzleHttp\\Promise\\": "src/" } @@ -8800,7 +8799,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.5.3" + "source": "https://github.com/guzzle/promises/tree/2.0.1" }, "funding": [ { @@ -8816,26 +8815,26 @@ "type": "tidelift" } ], - "time": "2023-05-21T12:31:43+00:00" + "time": "2023-08-03T15:11:55+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.4.5", + "version": "2.6.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "0454e12ef0cd597ccd2adb036f7bda4e7fface66" + "reference": "8bd7c33a0734ae1c5d074360512beb716bef3f77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/0454e12ef0cd597ccd2adb036f7bda4e7fface66", - "reference": "0454e12ef0cd597ccd2adb036f7bda4e7fface66", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/8bd7c33a0734ae1c5d074360512beb716bef3f77", + "reference": "8bd7c33a0734ae1c5d074360512beb716bef3f77", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0", "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", + "psr/http-message": "^1.1 || ^2.0", "ralouphie/getallheaders": "^3.0" }, "provide": { @@ -8916,7 +8915,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.4.5" + "source": "https://github.com/guzzle/psr7/tree/2.6.0" }, "funding": [ { @@ -8932,7 +8931,7 @@ "type": "tidelift" } ], - "time": "2023-04-17T16:00:45+00:00" + "time": "2023-08-03T15:06:02+00:00" }, { "name": "halaxa/json-machine", @@ -9222,16 +9221,16 @@ }, { "name": "league/csv", - "version": "9.9.0", + "version": "9.10.0", "source": { "type": "git", "url": "https://github.com/thephpleague/csv.git", - "reference": "b4418ede47fbd88facc34e40a16c8ce9153b961b" + "reference": "d24b0d484812313b07ab74b0fe4db9661606df6c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/csv/zipball/b4418ede47fbd88facc34e40a16c8ce9153b961b", - "reference": "b4418ede47fbd88facc34e40a16c8ce9153b961b", + "url": "https://api.github.com/repos/thephpleague/csv/zipball/d24b0d484812313b07ab74b0fe4db9661606df6c", + "reference": "d24b0d484812313b07ab74b0fe4db9661606df6c", "shasum": "" }, "require": { @@ -9240,16 +9239,17 @@ "php": "^8.1.2" }, "require-dev": { - "doctrine/collections": "^2.1.2", + "doctrine/collections": "^2.1.3", "ext-dom": "*", "ext-xdebug": "*", - "friendsofphp/php-cs-fixer": "^v3.14.3", - "phpbench/phpbench": "^1.2.8", - "phpstan/phpstan": "^1.10.4", - "phpstan/phpstan-deprecation-rules": "^1.1.2", - "phpstan/phpstan-phpunit": "^1.3.10", - "phpstan/phpstan-strict-rules": "^1.5.0", - "phpunit/phpunit": "^10.0.14" + "friendsofphp/php-cs-fixer": "^v3.22.0", + "phpbench/phpbench": "^1.2.14", + "phpstan/phpstan": "^1.10.26", + "phpstan/phpstan-deprecation-rules": "^1.1.3", + "phpstan/phpstan-phpunit": "^1.3.13", + "phpstan/phpstan-strict-rules": "^1.5.1", + "phpunit/phpunit": "^10.3.1", + "symfony/var-dumper": "^6.3.3" }, "suggest": { "ext-dom": "Required to use the XMLConverter and the HTMLConverter classes", @@ -9305,7 +9305,7 @@ "type": "github" } ], - "time": "2023-03-11T15:57:12+00:00" + "time": "2023-08-04T15:12:48+00:00" }, { "name": "maennchen/zipstream-php", @@ -9390,26 +9390,24 @@ }, { "name": "masterminds/html5", - "version": "2.7.6", + "version": "2.8.1", "source": { "type": "git", "url": "https://github.com/Masterminds/html5-php.git", - "reference": "897eb517a343a2281f11bc5556d6548db7d93947" + "reference": "f47dcf3c70c584de14f21143c55d9939631bc6cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/897eb517a343a2281f11bc5556d6548db7d93947", - "reference": "897eb517a343a2281f11bc5556d6548db7d93947", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f47dcf3c70c584de14f21143c55d9939631bc6cf", + "reference": "f47dcf3c70c584de14f21143c55d9939631bc6cf", "shasum": "" }, "require": { - "ext-ctype": "*", "ext-dom": "*", - "ext-libxml": "*", "php": ">=5.3.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7" + "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8" }, "type": "library", "extra": { @@ -9453,22 +9451,71 @@ ], "support": { "issues": "https://github.com/Masterminds/html5-php/issues", - "source": "https://github.com/Masterminds/html5-php/tree/2.7.6" + "source": "https://github.com/Masterminds/html5-php/tree/2.8.1" }, - "time": "2022-08-18T16:18:26+00:00" + "time": "2023-05-10T11:58:31+00:00" }, { - "name": "mglaman/composer-drupal-lenient", - "version": "1.0.3", + "name": "mck89/peast", + "version": "v1.15.4", "source": { "type": "git", - "url": "https://github.com/mglaman/composer-drupal-lenient.git", - "reference": "9d9271499d86ceb1431de80f876800fadf10a9e1" + "url": "https://github.com/mck89/peast.git", + "reference": "1df4dc28a6b5bb7ab117ab073c1712256e954e18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mglaman/composer-drupal-lenient/zipball/9d9271499d86ceb1431de80f876800fadf10a9e1", - "reference": "9d9271499d86ceb1431de80f876800fadf10a9e1", + "url": "https://api.github.com/repos/mck89/peast/zipball/1df4dc28a6b5bb7ab117ab073c1712256e954e18", + "reference": "1df4dc28a6b5bb7ab117ab073c1712256e954e18", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.15.4-dev" + } + }, + "autoload": { + "psr-4": { + "Peast\\": "lib/Peast/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Marco Marchiò", + "email": "marco.mm89@gmail.com" + } + ], + "description": "Peast is PHP library that generates AST for JavaScript code", + "support": { + "issues": "https://github.com/mck89/peast/issues", + "source": "https://github.com/mck89/peast/tree/v1.15.4" + }, + "time": "2023-08-12T08:29:29+00:00" + }, + { + "name": "mglaman/composer-drupal-lenient", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/mglaman/composer-drupal-lenient.git", + "reference": "9d9271499d86ceb1431de80f876800fadf10a9e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mglaman/composer-drupal-lenient/zipball/9d9271499d86ceb1431de80f876800fadf10a9e1", + "reference": "9d9271499d86ceb1431de80f876800fadf10a9e1", "shasum": "" }, "require": { @@ -9838,16 +9885,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.16.0", + "version": "v4.17.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "19526a33fb561ef417e822e85f08a00db4059c17" + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/19526a33fb561ef417e822e85f08a00db4059c17", - "reference": "19526a33fb561ef417e822e85f08a00db4059c17", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", "shasum": "" }, "require": { @@ -9888,9 +9935,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.16.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" }, - "time": "2023-06-25T14:52:30+00:00" + "time": "2023-08-13T19:53:39+00:00" }, { "name": "openeuropa/composer-artifacts", @@ -10037,16 +10084,16 @@ }, { "name": "openeuropa/oe_bootstrap_theme", - "version": "1.4.0", + "version": "1.5.1", "source": { "type": "git", "url": "https://github.com/openeuropa/oe_bootstrap_theme.git", - "reference": "f8e8b2d9a7f7e128bce8b3c22564f3516a3313be" + "reference": "a82b425f6b89b258295a764e45882741d35285e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/openeuropa/oe_bootstrap_theme/zipball/f8e8b2d9a7f7e128bce8b3c22564f3516a3313be", - "reference": "f8e8b2d9a7f7e128bce8b3c22564f3516a3313be", + "url": "https://api.github.com/repos/openeuropa/oe_bootstrap_theme/zipball/a82b425f6b89b258295a764e45882741d35285e0", + "reference": "a82b425f6b89b258295a764e45882741d35285e0", "shasum": "" }, "require": { @@ -10108,9 +10155,9 @@ "description": "OpenEuropa Bootstrap base theme.", "support": { "issues": "https://github.com/openeuropa/oe_bootstrap_theme/issues", - "source": "https://github.com/openeuropa/oe_bootstrap_theme/tree/1.4.0" + "source": "https://github.com/openeuropa/oe_bootstrap_theme/tree/1.5.1" }, - "time": "2023-06-15T09:08:27+00:00" + "time": "2023-08-01T10:03:18+00:00" }, { "name": "openeuropa/oe_dashboard_agent", @@ -10624,16 +10671,16 @@ }, { "name": "php-http/discovery", - "version": "1.19.0", + "version": "1.19.1", "source": { "type": "git", "url": "https://github.com/php-http/discovery.git", - "reference": "1856a119a0b0ba8da8b5c33c080aa7af8fac25b4" + "reference": "57f3de01d32085fea20865f9b16fb0e69347c39e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/discovery/zipball/1856a119a0b0ba8da8b5c33c080aa7af8fac25b4", - "reference": "1856a119a0b0ba8da8b5c33c080aa7af8fac25b4", + "url": "https://api.github.com/repos/php-http/discovery/zipball/57f3de01d32085fea20865f9b16fb0e69347c39e", + "reference": "57f3de01d32085fea20865f9b16fb0e69347c39e", "shasum": "" }, "require": { @@ -10696,9 +10743,9 @@ ], "support": { "issues": "https://github.com/php-http/discovery/issues", - "source": "https://github.com/php-http/discovery/tree/1.19.0" + "source": "https://github.com/php-http/discovery/tree/1.19.1" }, - "time": "2023-06-19T08:45:36+00:00" + "time": "2023-07-11T07:02:26+00:00" }, { "name": "php-http/guzzle7-adapter", @@ -10821,23 +10868,22 @@ }, { "name": "php-http/message", - "version": "1.14.0", + "version": "1.16.0", "source": { "type": "git", "url": "https://github.com/php-http/message.git", - "reference": "2ccee04a28c3d98eb3f2b85ce1e2fcff70c0e63b" + "reference": "47a14338bf4ebd67d317bf1144253d7db4ab55fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/message/zipball/2ccee04a28c3d98eb3f2b85ce1e2fcff70c0e63b", - "reference": "2ccee04a28c3d98eb3f2b85ce1e2fcff70c0e63b", + "url": "https://api.github.com/repos/php-http/message/zipball/47a14338bf4ebd67d317bf1144253d7db4ab55fd", + "reference": "47a14338bf4ebd67d317bf1144253d7db4ab55fd", "shasum": "" }, "require": { "clue/stream-filter": "^1.5", - "php": "^7.1 || ^8.0", - "php-http/message-factory": "^1.0.2", - "psr/http-message": "^1.0 || ^2.0" + "php": "^7.2 || ^8.0", + "psr/http-message": "^1.1 || ^2.0" }, "provide": { "php-http/message-factory-implementation": "1.0" @@ -10845,8 +10891,9 @@ "require-dev": { "ergebnis/composer-normalize": "^2.6", "ext-zlib": "*", - "guzzlehttp/psr7": "^1.0", - "laminas/laminas-diactoros": "^2.0", + "guzzlehttp/psr7": "^1.0 || ^2.0", + "laminas/laminas-diactoros": "^2.0 || ^3.0", + "php-http/message-factory": "^1.0.2", "phpspec/phpspec": "^5.1 || ^6.3 || ^7.1", "slim/slim": "^3.0" }, @@ -10884,9 +10931,9 @@ ], "support": { "issues": "https://github.com/php-http/message/issues", - "source": "https://github.com/php-http/message/tree/1.14.0" + "source": "https://github.com/php-http/message/tree/1.16.0" }, - "time": "2023-04-14T14:26:18+00:00" + "time": "2023-05-17T06:43:38+00:00" }, { "name": "php-http/message-factory", @@ -11103,27 +11150,22 @@ }, { "name": "psr/container", - "version": "2.0.2", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", "shasum": "" }, "require": { "php": ">=7.4.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, "autoload": { "psr-4": { "Psr\\Container\\": "src/" @@ -11150,9 +11192,9 @@ ], "support": { "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/2.0.2" + "source": "https://github.com/php-fig/container/tree/1.1.2" }, - "time": "2021-11-05T16:47:00+00:00" + "time": "2021-11-05T16:50:12+00:00" }, { "name": "psr/event-dispatcher", @@ -11313,25 +11355,25 @@ }, { "name": "psr/http-message", - "version": "1.0.1", + "version": "1.1", "source": { "type": "git", "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba", + "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.1.x-dev" } }, "autoload": { @@ -11360,9 +11402,9 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-message/tree/master" + "source": "https://github.com/php-fig/http-message/tree/1.1" }, - "time": "2016-08-06T14:39:51+00:00" + "time": "2023-04-04T09:50:52+00:00" }, { "name": "psr/log", @@ -11416,16 +11458,16 @@ }, { "name": "psy/psysh", - "version": "v0.11.18", + "version": "v0.11.20", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "4f00ee9e236fa6a48f4560d1300b9c961a70a7ec" + "reference": "0fa27040553d1d280a67a4393194df5228afea5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/4f00ee9e236fa6a48f4560d1300b9c961a70a7ec", - "reference": "4f00ee9e236fa6a48f4560d1300b9c961a70a7ec", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/0fa27040553d1d280a67a4393194df5228afea5b", + "reference": "0fa27040553d1d280a67a4393194df5228afea5b", "shasum": "" }, "require": { @@ -11486,9 +11528,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.11.18" + "source": "https://github.com/bobthecow/psysh/tree/v0.11.20" }, - "time": "2023-05-23T02:31:11+00:00" + "time": "2023-07-31T14:32:22+00:00" }, { "name": "ralouphie/getallheaders", @@ -11534,6 +11576,72 @@ }, "time": "2019-03-08T08:55:37+00:00" }, + { + "name": "sebastian/diff", + "version": "4.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-05-07T05:35:17+00:00" + }, { "name": "semiceu/adms-ap_validator", "version": "1.0.0-alpha1", @@ -11937,23 +12045,23 @@ }, { "name": "symfony/console", - "version": "v6.2.12", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "dad41ae62bacb7fd96c463278ad583f81ccdffb5" + "reference": "aa5d64ad3f63f2e48964fc81ee45cb318a723898" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/dad41ae62bacb7fd96c463278ad583f81ccdffb5", - "reference": "dad41ae62bacb7fd96c463278ad583f81ccdffb5", + "url": "https://api.github.com/repos/symfony/console/zipball/aa5d64ad3f63f2e48964fc81ee45cb318a723898", + "reference": "aa5d64ad3f63f2e48964fc81ee45cb318a723898", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", + "symfony/service-contracts": "^2.5|^3", "symfony/string": "^5.4|^6.0" }, "conflict": { @@ -11975,12 +12083,6 @@ "symfony/process": "^5.4|^6.0", "symfony/var-dumper": "^5.4|^6.0" }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, "type": "library", "autoload": { "psr-4": { @@ -12013,7 +12115,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.2.12" + "source": "https://github.com/symfony/console/tree/v6.3.2" }, "funding": [ { @@ -12029,20 +12131,20 @@ "type": "tidelift" } ], - "time": "2023-05-29T12:46:33+00:00" + "time": "2023-07-19T20:17:28+00:00" }, { "name": "symfony/css-selector", - "version": "v6.3.0", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "88453e64cd86c5b60e8d2fb2c6f953bbc353ffbf" + "reference": "883d961421ab1709877c10ac99451632a3d6fa57" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/88453e64cd86c5b60e8d2fb2c6f953bbc353ffbf", - "reference": "88453e64cd86c5b60e8d2fb2c6f953bbc353ffbf", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/883d961421ab1709877c10ac99451632a3d6fa57", + "reference": "883d961421ab1709877c10ac99451632a3d6fa57", "shasum": "" }, "require": { @@ -12078,7 +12180,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.3.0" + "source": "https://github.com/symfony/css-selector/tree/v6.3.2" }, "funding": [ { @@ -12094,34 +12196,34 @@ "type": "tidelift" } ], - "time": "2023-03-20T16:43:42+00:00" + "time": "2023-07-12T16:00:22+00:00" }, { "name": "symfony/dependency-injection", - "version": "v6.2.12", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "c0a0c04f304a5b7d40d4d4102bc482b5da618e54" + "reference": "474cfbc46aba85a1ca11a27db684480d0db64ba7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/c0a0c04f304a5b7d40d4d4102bc482b5da618e54", - "reference": "c0a0c04f304a5b7d40d4d4102bc482b5da618e54", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/474cfbc46aba85a1ca11a27db684480d0db64ba7", + "reference": "474cfbc46aba85a1ca11a27db684480d0db64ba7", "shasum": "" }, "require": { "php": ">=8.1", "psr/container": "^1.1|^2.0", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/service-contracts": "^1.1.6|^2.0|^3.0", - "symfony/var-exporter": "^6.2.7" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/service-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.2.10" }, "conflict": { "ext-psr": "<1.1|>=2", "symfony/config": "<6.1", "symfony/finder": "<5.4", - "symfony/proxy-manager-bridge": "<6.2", + "symfony/proxy-manager-bridge": "<6.3", "symfony/yaml": "<5.4" }, "provide": { @@ -12133,12 +12235,6 @@ "symfony/expression-language": "^5.4|^6.0", "symfony/yaml": "^5.4|^6.0" }, - "suggest": { - "symfony/config": "", - "symfony/expression-language": "For using expressions in service container configuration", - "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", - "symfony/yaml": "" - }, "type": "library", "autoload": { "psr-4": { @@ -12165,7 +12261,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.2.12" + "source": "https://github.com/symfony/dependency-injection/tree/v6.3.2" }, "funding": [ { @@ -12181,20 +12277,20 @@ "type": "tidelift" } ], - "time": "2023-06-24T11:48:11+00:00" + "time": "2023-07-19T20:17:28+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.2.1", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e" + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", - "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", "shasum": "" }, "require": { @@ -12203,7 +12299,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -12232,7 +12328,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" }, "funding": [ { @@ -12248,20 +12344,20 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:25:55+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/error-handler", - "version": "v6.2.11", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "e847ba47e7a8f9708082990cb40ab4ff0440a11e" + "reference": "85fd65ed295c4078367c784e8a5a6cee30348b7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/e847ba47e7a8f9708082990cb40ab4ff0440a11e", - "reference": "e847ba47e7a8f9708082990cb40ab4ff0440a11e", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/85fd65ed295c4078367c784e8a5a6cee30348b7a", + "reference": "85fd65ed295c4078367c784e8a5a6cee30348b7a", "shasum": "" }, "require": { @@ -12269,8 +12365,11 @@ "psr/log": "^1|^2|^3", "symfony/var-dumper": "^5.4|^6.0" }, + "conflict": { + "symfony/deprecation-contracts": "<2.5" + }, "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/http-kernel": "^5.4|^6.0", "symfony/serializer": "^5.4|^6.0" }, @@ -12303,7 +12402,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.2.11" + "source": "https://github.com/symfony/error-handler/tree/v6.3.2" }, "funding": [ { @@ -12319,28 +12418,29 @@ "type": "tidelift" } ], - "time": "2023-05-05T11:55:01+00:00" + "time": "2023-07-16T17:05:46+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.2.8", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "04046f35fd7d72f9646e721fc2ecb8f9c67d3339" + "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/04046f35fd7d72f9646e721fc2ecb8f9c67d3339", - "reference": "04046f35fd7d72f9646e721fc2ecb8f9c67d3339", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/adb01fe097a4ee930db9258a3cc906b5beb5cf2e", + "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/event-dispatcher-contracts": "^2|^3" + "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "symfony/dependency-injection": "<5.4" + "symfony/dependency-injection": "<5.4", + "symfony/service-contracts": "<2.5" }, "provide": { "psr/event-dispatcher-implementation": "1.0", @@ -12353,13 +12453,9 @@ "symfony/error-handler": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", + "symfony/service-contracts": "^2.5|^3", "symfony/stopwatch": "^5.4|^6.0" }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, "type": "library", "autoload": { "psr-4": { @@ -12386,7 +12482,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.2.8" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.3.2" }, "funding": [ { @@ -12402,33 +12498,30 @@ "type": "tidelift" } ], - "time": "2023-03-20T16:06:02+00:00" + "time": "2023-07-06T06:56:43+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.2.1", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd" + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ad3b6f1e4e2da5690fefe075cd53a238646d8dd", - "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", "shasum": "" }, "require": { "php": ">=8.1", "psr/event-dispatcher": "^1" }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -12465,7 +12558,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0" }, "funding": [ { @@ -12481,7 +12574,7 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:32:47+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/filesystem", @@ -12548,16 +12641,16 @@ }, { "name": "symfony/finder", - "version": "v6.3.0", + "version": "v6.3.3", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "d9b01ba073c44cef617c7907ce2419f8d00d75e2" + "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/d9b01ba073c44cef617c7907ce2419f8d00d75e2", - "reference": "d9b01ba073c44cef617c7907ce2419f8d00d75e2", + "url": "https://api.github.com/repos/symfony/finder/zipball/9915db259f67d21eefee768c1abcf1cc61b1fc9e", + "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e", "shasum": "" }, "require": { @@ -12592,7 +12685,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.3.0" + "source": "https://github.com/symfony/finder/tree/v6.3.3" }, "funding": [ { @@ -12608,28 +12701,32 @@ "type": "tidelift" } ], - "time": "2023-04-02T01:25:41+00:00" + "time": "2023-07-31T08:31:44+00:00" }, { "name": "symfony/http-client", - "version": "v6.2.12", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "7ef37b91629937843e8f52a2da5587ff16d75d25" + "reference": "15f9f4bad62bfcbe48b5dedd866f04a08fc7ff00" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/7ef37b91629937843e8f52a2da5587ff16d75d25", - "reference": "7ef37b91629937843e8f52a2da5587ff16d75d25", + "url": "https://api.github.com/repos/symfony/http-client/zipball/15f9f4bad62bfcbe48b5dedd866f04a08fc7ff00", + "reference": "15f9f4bad62bfcbe48b5dedd866f04a08fc7ff00", "shasum": "" }, "require": { "php": ">=8.1", "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/http-client-contracts": "^3", - "symfony/service-contracts": "^1.0|^2|^3" + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "php-http/discovery": "<1.15", + "symfony/http-foundation": "<6.3" }, "provide": { "php-http/async-client-implementation": "*", @@ -12645,7 +12742,6 @@ "guzzlehttp/promises": "^1.4", "nyholm/psr7": "^1.0", "php-http/httplug": "^1.0|^2.0", - "php-http/message-factory": "^1.0", "psr/http-client": "^1.0", "symfony/dependency-injection": "^5.4|^6.0", "symfony/http-kernel": "^5.4|^6.0", @@ -12681,7 +12777,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v6.2.12" + "source": "https://github.com/symfony/http-client/tree/v6.3.2" }, "funding": [ { @@ -12697,7 +12793,7 @@ "type": "tidelift" } ], - "time": "2023-06-24T11:48:11+00:00" + "time": "2023-07-05T08:41:27+00:00" }, { "name": "symfony/http-client-contracts", @@ -12779,28 +12875,30 @@ }, { "name": "symfony/http-foundation", - "version": "v6.2.12", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "94e3bc563fb92444588b3e2480fc47bb251ef295" + "reference": "43ed99d30f5f466ffa00bdac3f5f7aa9cd7617c3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/94e3bc563fb92444588b3e2480fc47bb251ef295", - "reference": "94e3bc563fb92444588b3e2480fc47bb251ef295", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/43ed99d30f5f466ffa00bdac3f5f7aa9cd7617c3", + "reference": "43ed99d30f5f466ffa00bdac3f5f7aa9cd7617c3", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php83": "^1.27" }, "conflict": { "symfony/cache": "<6.2" }, "require-dev": { - "predis/predis": "~1.0", + "doctrine/dbal": "^2.13.1|^3.0", + "predis/predis": "^1.1|^2.0", "symfony/cache": "^5.4|^6.0", "symfony/dependency-injection": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", @@ -12808,9 +12906,6 @@ "symfony/mime": "^5.4|^6.0", "symfony/rate-limiter": "^5.2|^6.0" }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, "type": "library", "autoload": { "psr-4": { @@ -12837,7 +12932,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.2.12" + "source": "https://github.com/symfony/http-foundation/tree/v6.3.2" }, "funding": [ { @@ -12853,29 +12948,29 @@ "type": "tidelift" } ], - "time": "2023-06-24T11:48:11+00:00" + "time": "2023-07-23T21:58:39+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.2.12", + "version": "v6.3.3", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "fb02830a72c82759e4bc7eaf4c16e0b81303df38" + "reference": "d3b567f0addf695e10b0c6d57564a9bea2e058ee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/fb02830a72c82759e4bc7eaf4c16e0b81303df38", - "reference": "fb02830a72c82759e4bc7eaf4c16e0b81303df38", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/d3b567f0addf695e10b0c6d57564a9bea2e058ee", + "reference": "d3b567f0addf695e10b0c6d57564a9bea2e058ee", "shasum": "" }, "require": { "php": ">=8.1", "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/error-handler": "^6.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.3", "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4.21|^6.2.7", + "symfony/http-foundation": "^6.2.7", "symfony/polyfill-ctype": "^1.8" }, "conflict": { @@ -12883,15 +12978,18 @@ "symfony/cache": "<5.4", "symfony/config": "<6.1", "symfony/console": "<5.4", - "symfony/dependency-injection": "<6.2", + "symfony/dependency-injection": "<6.3", "symfony/doctrine-bridge": "<5.4", "symfony/form": "<5.4", "symfony/http-client": "<5.4", + "symfony/http-client-contracts": "<2.5", "symfony/mailer": "<5.4", "symfony/messenger": "<5.4", "symfony/translation": "<5.4", + "symfony/translation-contracts": "<2.5", "symfony/twig-bridge": "<5.4", "symfony/validator": "<5.4", + "symfony/var-dumper": "<6.3", "twig/twig": "<2.13" }, "provide": { @@ -12900,29 +12998,27 @@ "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", "symfony/browser-kit": "^5.4|^6.0", + "symfony/clock": "^6.2", "symfony/config": "^6.1", "symfony/console": "^5.4|^6.0", "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^6.2", + "symfony/dependency-injection": "^6.3", "symfony/dom-crawler": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", + "symfony/http-client-contracts": "^2.5|^3", "symfony/process": "^5.4|^6.0", + "symfony/property-access": "^5.4.5|^6.0.5", "symfony/routing": "^5.4|^6.0", + "symfony/serializer": "^6.3", "symfony/stopwatch": "^5.4|^6.0", "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", + "symfony/translation-contracts": "^2.5|^3", "symfony/uid": "^5.4|^6.0", + "symfony/validator": "^6.3", "symfony/var-exporter": "^6.2", "twig/twig": "^2.13|^3.0.4" }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, "type": "library", "autoload": { "psr-4": { @@ -12949,7 +13045,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.2.12" + "source": "https://github.com/symfony/http-kernel/tree/v6.3.3" }, "funding": [ { @@ -12965,24 +13061,25 @@ "type": "tidelift" } ], - "time": "2023-06-26T06:02:47+00:00" + "time": "2023-07-31T10:33:00+00:00" }, { "name": "symfony/mime", - "version": "v6.2.10", + "version": "v6.3.3", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "b6c137fc53a9f7c4c951cd3f362b3734c7a97723" + "reference": "9a0cbd52baa5ba5a5b1f0cacc59466f194730f98" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/b6c137fc53a9f7c4c951cd3f362b3734c7a97723", - "reference": "b6c137fc53a9f7c4c951cd3f362b3734c7a97723", + "url": "https://api.github.com/repos/symfony/mime/zipball/9a0cbd52baa5ba5a5b1f0cacc59466f194730f98", + "reference": "9a0cbd52baa5ba5a5b1f0cacc59466f194730f98", "shasum": "" }, "require": { "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0" }, @@ -12991,7 +13088,7 @@ "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", "symfony/mailer": "<5.4", - "symfony/serializer": "<6.2" + "symfony/serializer": "<6.2.13|>=6.3,<6.3.2" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3.1|^4", @@ -13000,7 +13097,7 @@ "symfony/dependency-injection": "^5.4|^6.0", "symfony/property-access": "^5.4|^6.0", "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^6.2" + "symfony/serializer": "~6.2.13|^6.3.2" }, "type": "library", "autoload": { @@ -13032,7 +13129,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.2.10" + "source": "https://github.com/symfony/mime/tree/v6.3.3" }, "funding": [ { @@ -13048,7 +13145,7 @@ "type": "tidelift" } ], - "time": "2023-04-19T09:54:16+00:00" + "time": "2023-07-31T07:08:24+00:00" }, { "name": "symfony/polyfill-ctype", @@ -13626,6 +13723,89 @@ ], "time": "2022-11-03T14:55:06+00:00" }, + { + "name": "symfony/polyfill-php80", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" + }, { "name": "symfony/polyfill-php81", "version": "v1.27.0", @@ -13705,18 +13885,95 @@ ], "time": "2022-11-03T14:55:06+00:00" }, + { + "name": "symfony/polyfill-php83", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "508c652ba3ccf69f8c97f251534f229791b52a57" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/508c652ba3ccf69f8c97f251534f229791b52a57", + "reference": "508c652ba3ccf69f8c97f251534f229791b52a57", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "symfony/polyfill-php80": "^1.14" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php83\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php83/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" + }, { "name": "symfony/process", - "version": "v6.2.11", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "97ae9721bead9d1a39b5650e2f4b7834b93b539c" + "reference": "c5ce962db0d9b6e80247ca5eb9af6472bd4d7b5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/97ae9721bead9d1a39b5650e2f4b7834b93b539c", - "reference": "97ae9721bead9d1a39b5650e2f4b7834b93b539c", + "url": "https://api.github.com/repos/symfony/process/zipball/c5ce962db0d9b6e80247ca5eb9af6472bd4d7b5d", + "reference": "c5ce962db0d9b6e80247ca5eb9af6472bd4d7b5d", "shasum": "" }, "require": { @@ -13748,7 +14005,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.2.11" + "source": "https://github.com/symfony/process/tree/v6.3.2" }, "funding": [ { @@ -13764,36 +14021,37 @@ "type": "tidelift" } ], - "time": "2023-05-19T07:42:48+00:00" + "time": "2023-07-12T16:00:22+00:00" }, { "name": "symfony/psr-http-message-bridge", - "version": "v2.1.4", + "version": "v2.3.1", "source": { "type": "git", "url": "https://github.com/symfony/psr-http-message-bridge.git", - "reference": "a125b93ef378c492e274f217874906fb9babdebb" + "reference": "581ca6067eb62640de5ff08ee1ba6850a0ee472e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/a125b93ef378c492e274f217874906fb9babdebb", - "reference": "a125b93ef378c492e274f217874906fb9babdebb", + "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/581ca6067eb62640de5ff08ee1ba6850a0ee472e", + "reference": "581ca6067eb62640de5ff08ee1ba6850a0ee472e", "shasum": "" }, "require": { - "php": ">=7.1", - "psr/http-message": "^1.0", - "symfony/http-foundation": "^4.4 || ^5.0 || ^6.0" + "php": ">=7.2.5", + "psr/http-message": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.5 || ^3.0", + "symfony/http-foundation": "^5.4 || ^6.0" }, - "require-dev": { - "nyholm/psr7": "^1.1", - "psr/log": "^1.1 || ^2 || ^3", - "symfony/browser-kit": "^4.4 || ^5.0 || ^6.0", - "symfony/config": "^4.4 || ^5.0 || ^6.0", - "symfony/event-dispatcher": "^4.4 || ^5.0 || ^6.0", - "symfony/framework-bundle": "^4.4 || ^5.0 || ^6.0", - "symfony/http-kernel": "^4.4 || ^5.0 || ^6.0", - "symfony/phpunit-bridge": "^5.4@dev || ^6.0" + "require-dev": { + "nyholm/psr7": "^1.1", + "psr/log": "^1.1 || ^2 || ^3", + "symfony/browser-kit": "^5.4 || ^6.0", + "symfony/config": "^5.4 || ^6.0", + "symfony/event-dispatcher": "^5.4 || ^6.0", + "symfony/framework-bundle": "^5.4 || ^6.0", + "symfony/http-kernel": "^5.4 || ^6.0", + "symfony/phpunit-bridge": "^6.2" }, "suggest": { "nyholm/psr7": "For a super lightweight PSR-7/17 implementation" @@ -13801,7 +14059,7 @@ "type": "symfony-bridge", "extra": { "branch-alias": { - "dev-main": "2.1-dev" + "dev-main": "2.3-dev" } }, "autoload": { @@ -13836,7 +14094,7 @@ ], "support": { "issues": "https://github.com/symfony/psr-http-message-bridge/issues", - "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.1.4" + "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.3.1" }, "funding": [ { @@ -13852,24 +14110,25 @@ "type": "tidelift" } ], - "time": "2022-11-28T22:46:34+00:00" + "time": "2023-07-26T11:53:26+00:00" }, { "name": "symfony/routing", - "version": "v6.2.12", + "version": "v6.3.3", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "d59dc6a43191985bc9c27c746ce7986f01540e94" + "reference": "e7243039ab663822ff134fbc46099b5fdfa16f6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/d59dc6a43191985bc9c27c746ce7986f01540e94", - "reference": "d59dc6a43191985bc9c27c746ce7986f01540e94", + "url": "https://api.github.com/repos/symfony/routing/zipball/e7243039ab663822ff134fbc46099b5fdfa16f6a", + "reference": "e7243039ab663822ff134fbc46099b5fdfa16f6a", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { "doctrine/annotations": "<1.12", @@ -13886,12 +14145,6 @@ "symfony/http-foundation": "^5.4|^6.0", "symfony/yaml": "^5.4|^6.0" }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, "type": "library", "autoload": { "psr-4": { @@ -13924,7 +14177,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.2.12" + "source": "https://github.com/symfony/routing/tree/v6.3.3" }, "funding": [ { @@ -13940,24 +14193,25 @@ "type": "tidelift" } ], - "time": "2023-06-05T15:29:05+00:00" + "time": "2023-07-31T07:08:24+00:00" }, { "name": "symfony/serializer", - "version": "v6.2.12", + "version": "v6.3.3", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "7be4b2fd8f385904887aa09ee08a4e4adee4c0d2" + "reference": "33deb86d212893042d7758d452aa39d19ca0efe3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/7be4b2fd8f385904887aa09ee08a4e4adee4c0d2", - "reference": "7be4b2fd8f385904887aa09ee08a4e4adee4c0d2", + "url": "https://api.github.com/repos/symfony/serializer/zipball/33deb86d212893042d7758d452aa39d19ca0efe3", + "reference": "33deb86d212893042d7758d452aa39d19ca0efe3", "shasum": "" }, "require": { "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "~1.8" }, "conflict": { @@ -13966,7 +14220,7 @@ "phpdocumentor/type-resolver": "<1.4.0", "symfony/dependency-injection": "<5.4", "symfony/property-access": "<5.4", - "symfony/property-info": "<5.4", + "symfony/property-info": "<5.4.24|>=6,<6.2.11", "symfony/uid": "<5.4", "symfony/yaml": "<5.4" }, @@ -13975,6 +14229,7 @@ "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", "symfony/cache": "^5.4|^6.0", "symfony/config": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0", "symfony/dependency-injection": "^5.4|^6.0", "symfony/error-handler": "^5.4|^6.0", "symfony/filesystem": "^5.4|^6.0", @@ -13983,22 +14238,13 @@ "symfony/http-kernel": "^5.4|^6.0", "symfony/mime": "^5.4|^6.0", "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", + "symfony/property-info": "^5.4.24|^6.2.11", "symfony/uid": "^5.4|^6.0", "symfony/validator": "^5.4|^6.0", "symfony/var-dumper": "^5.4|^6.0", "symfony/var-exporter": "^5.4|^6.0", "symfony/yaml": "^5.4|^6.0" }, - "suggest": { - "psr/cache-implementation": "For using the metadata cache.", - "symfony/config": "For using the XML mapping loader.", - "symfony/mime": "For using a MIME type guesser within the DataUriNormalizer.", - "symfony/property-access": "For using the ObjectNormalizer.", - "symfony/property-info": "To deserialize relations.", - "symfony/var-exporter": "For using the metadata compiler.", - "symfony/yaml": "For using the default YAML mapping loader." - }, "type": "library", "autoload": { "psr-4": { @@ -14025,7 +14271,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.2.12" + "source": "https://github.com/symfony/serializer/tree/v6.3.3" }, "funding": [ { @@ -14041,25 +14287,26 @@ "type": "tidelift" } ], - "time": "2023-05-30T17:07:47+00:00" + "time": "2023-07-31T07:08:24+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.2.1", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "a8c9cedf55f314f3a186041d19537303766df09a" + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/a8c9cedf55f314f3a186041d19537303766df09a", - "reference": "a8c9cedf55f314f3a186041d19537303766df09a", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", "shasum": "" }, "require": { - "php": ">=8.1", - "psr/container": "^2.0" + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" }, "conflict": { "ext-psr": "<1.1|>=2" @@ -14070,7 +14317,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -14080,10 +14327,7 @@ "autoload": { "psr-4": { "Symfony\\Contracts\\Service\\": "" - }, - "exclude-from-classmap": [ - "/Test/" - ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -14110,7 +14354,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" }, "funding": [ { @@ -14126,20 +14370,20 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:32:47+00:00" + "time": "2022-05-30T19:17:29+00:00" }, { "name": "symfony/string", - "version": "v6.2.8", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "193e83bbd6617d6b2151c37fff10fa7168ebddef" + "reference": "53d1a83225002635bca3482fcbf963001313fb68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/193e83bbd6617d6b2151c37fff10fa7168ebddef", - "reference": "193e83bbd6617d6b2151c37fff10fa7168ebddef", + "url": "https://api.github.com/repos/symfony/string/zipball/53d1a83225002635bca3482fcbf963001313fb68", + "reference": "53d1a83225002635bca3482fcbf963001313fb68", "shasum": "" }, "require": { @@ -14150,13 +14394,13 @@ "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/translation-contracts": "<2.0" + "symfony/translation-contracts": "<2.5" }, "require-dev": { "symfony/error-handler": "^5.4|^6.0", "symfony/http-client": "^5.4|^6.0", "symfony/intl": "^6.2", - "symfony/translation-contracts": "^2.0|^3.0", + "symfony/translation-contracts": "^2.5|^3.0", "symfony/var-exporter": "^5.4|^6.0" }, "type": "library", @@ -14196,7 +14440,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.2.8" + "source": "https://github.com/symfony/string/tree/v6.3.2" }, "funding": [ { @@ -14212,32 +14456,29 @@ "type": "tidelift" } ], - "time": "2023-03-20T16:06:02+00:00" + "time": "2023-07-05T08:41:27+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.2.1", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "dfec258b9dd17a6b24420d464c43bffe347441c8" + "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/dfec258b9dd17a6b24420d464c43bffe347441c8", - "reference": "dfec258b9dd17a6b24420d464c43bffe347441c8", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/02c24deb352fb0d79db5486c0c79905a85e37e86", + "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86", "shasum": "" }, "require": { "php": ">=8.1" }, - "suggest": { - "symfony/translation-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -14277,7 +14518,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/translation-contracts/tree/v3.3.0" }, "funding": [ { @@ -14293,28 +14534,29 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:32:47+00:00" + "time": "2023-05-30T17:17:10+00:00" }, { "name": "symfony/validator", - "version": "v6.2.12", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "1c22c832e9415c381a7186618f0319cda6fd5618" + "reference": "b0c4ecf17d39eee1edfecc92299a03b9f5d5220b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/1c22c832e9415c381a7186618f0319cda6fd5618", - "reference": "1c22c832e9415c381a7186618f0319cda6fd5618", + "url": "https://api.github.com/repos/symfony/validator/zipball/b0c4ecf17d39eee1edfecc92299a03b9f5d5220b", + "reference": "b0c4ecf17d39eee1edfecc92299a03b9f5d5220b", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^1.1|^2|^3" + "symfony/polyfill-php83": "^1.27", + "symfony/translation-contracts": "^2.5|^3" }, "conflict": { "doctrine/annotations": "<1.13", @@ -14346,18 +14588,6 @@ "symfony/translation": "^5.4|^6.0", "symfony/yaml": "^5.4|^6.0" }, - "suggest": { - "egulias/email-validator": "Strict (RFC compliant) email validation", - "psr/cache-implementation": "For using the mapping cache.", - "symfony/config": "", - "symfony/expression-language": "For using the Expression validator and the ExpressionLanguageSyntax constraints", - "symfony/http-foundation": "", - "symfony/intl": "", - "symfony/property-access": "For accessing properties within comparison constraints", - "symfony/property-info": "To automatically add NotNull and Type constraints", - "symfony/translation": "For translating validation errors.", - "symfony/yaml": "" - }, "type": "library", "autoload": { "psr-4": { @@ -14384,7 +14614,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v6.2.12" + "source": "https://github.com/symfony/validator/tree/v6.3.2" }, "funding": [ { @@ -14400,24 +14630,25 @@ "type": "tidelift" } ], - "time": "2023-06-21T12:07:00+00:00" + "time": "2023-07-26T17:39:03+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.2.12", + "version": "v6.3.3", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "facbf30fe37f62e0ea50972467c08b7e80d22ed0" + "reference": "77fb4f2927f6991a9843633925d111147449ee7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/facbf30fe37f62e0ea50972467c08b7e80d22ed0", - "reference": "facbf30fe37f62e0ea50972467c08b7e80d22ed0", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/77fb4f2927f6991a9843633925d111147449ee7a", + "reference": "77fb4f2927f6991a9843633925d111147449ee7a", "shasum": "" }, "require": { "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { @@ -14426,15 +14657,11 @@ "require-dev": { "ext-iconv": "*", "symfony/console": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0", "symfony/process": "^5.4|^6.0", "symfony/uid": "^5.4|^6.0", "twig/twig": "^2.13|^3.0.4" }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, "bin": [ "Resources/bin/var-dump-server" ], @@ -14471,7 +14698,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.2.12" + "source": "https://github.com/symfony/var-dumper/tree/v6.3.3" }, "funding": [ { @@ -14487,20 +14714,20 @@ "type": "tidelift" } ], - "time": "2023-06-20T21:12:34+00:00" + "time": "2023-07-31T07:08:24+00:00" }, { "name": "symfony/var-exporter", - "version": "v6.2.10", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "9a07920c2058bafee921ce4d90aeef2193837d63" + "reference": "3400949782c0cb5b3e73aa64cfd71dde000beccc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/9a07920c2058bafee921ce4d90aeef2193837d63", - "reference": "9a07920c2058bafee921ce4d90aeef2193837d63", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/3400949782c0cb5b3e73aa64cfd71dde000beccc", + "reference": "3400949782c0cb5b3e73aa64cfd71dde000beccc", "shasum": "" }, "require": { @@ -14545,7 +14772,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.2.10" + "source": "https://github.com/symfony/var-exporter/tree/v6.3.2" }, "funding": [ { @@ -14561,24 +14788,25 @@ "type": "tidelift" } ], - "time": "2023-04-21T08:33:05+00:00" + "time": "2023-07-26T17:39:03+00:00" }, { "name": "symfony/yaml", - "version": "v6.2.10", + "version": "v6.3.3", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "61916f3861b1e9705b18cfde723921a71dd1559d" + "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/61916f3861b1e9705b18cfde723921a71dd1559d", - "reference": "61916f3861b1e9705b18cfde723921a71dd1559d", + "url": "https://api.github.com/repos/symfony/yaml/zipball/e23292e8c07c85b971b44c1c4b87af52133e2add", + "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add", "shasum": "" }, "require": { "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "^1.8" }, "conflict": { @@ -14587,9 +14815,6 @@ "require-dev": { "symfony/console": "^5.4|^6.0" }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" - }, "bin": [ "Resources/bin/yaml-lint" ], @@ -14619,7 +14844,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.2.10" + "source": "https://github.com/symfony/yaml/tree/v6.3.3" }, "funding": [ { @@ -14635,7 +14860,7 @@ "type": "tidelift" } ], - "time": "2023-04-28T13:25:36+00:00" + "time": "2023-07-31T07:08:24+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -14692,16 +14917,16 @@ }, { "name": "twig/twig", - "version": "v3.5.1", + "version": "v3.7.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "a6e0510cc793912b451fd40ab983a1d28f611c15" + "reference": "5cf942bbab3df42afa918caeba947f1b690af64b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/a6e0510cc793912b451fd40ab983a1d28f611c15", - "reference": "a6e0510cc793912b451fd40ab983a1d28f611c15", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/5cf942bbab3df42afa918caeba947f1b690af64b", + "reference": "5cf942bbab3df42afa918caeba947f1b690af64b", "shasum": "" }, "require": { @@ -14710,15 +14935,10 @@ "symfony/polyfill-mbstring": "^1.3" }, "require-dev": { - "psr/container": "^1.0", + "psr/container": "^1.0|^2.0", "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.5-dev" - } - }, "autoload": { "psr-4": { "Twig\\": "src/" @@ -14752,7 +14972,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.5.1" + "source": "https://github.com/twigphp/Twig/tree/v3.7.0" }, "funding": [ { @@ -14764,7 +14984,7 @@ "type": "tidelift" } ], - "time": "2023-02-08T07:49:20+00:00" + "time": "2023-07-26T07:16:09+00:00" }, { "name": "webflo/drupal-finder", @@ -16202,20 +16422,20 @@ }, { "name": "doctrine/reflection", - "version": "1.2.3", + "version": "1.2.4", "source": { "type": "git", "url": "https://github.com/doctrine/reflection.git", - "reference": "1034e5e71f89978b80f9c1570e7226f6c3b9b6fb" + "reference": "6bcea3e81ab8b3d0abe5fde5300bbc8a968960c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/reflection/zipball/1034e5e71f89978b80f9c1570e7226f6c3b9b6fb", - "reference": "1034e5e71f89978b80f9c1570e7226f6c3b9b6fb", + "url": "https://api.github.com/repos/doctrine/reflection/zipball/6bcea3e81ab8b3d0abe5fde5300bbc8a968960c7", + "reference": "6bcea3e81ab8b3d0abe5fde5300bbc8a968960c7", "shasum": "" }, "require": { - "doctrine/annotations": "^1.0", + "doctrine/annotations": "^1.0 || ^2.0", "ext-tokenizer": "*", "php": "^7.1 || ^8.0" }, @@ -16273,10 +16493,10 @@ ], "support": { "issues": "https://github.com/doctrine/reflection/issues", - "source": "https://github.com/doctrine/reflection/tree/1.2.3" + "source": "https://github.com/doctrine/reflection/tree/1.2.4" }, "abandoned": "roave/better-reflection", - "time": "2022-05-31T18:46:25+00:00" + "time": "2023-07-27T18:11:59+00:00" }, { "name": "drupal/admin_toolbar", @@ -16421,16 +16641,16 @@ }, { "name": "drupal/coder", - "version": "8.3.20", + "version": "8.3.21", "source": { "type": "git", "url": "https://github.com/pfrenssen/coder.git", - "reference": "88055e40931a56074b6510a631d3403794c91625" + "reference": "a0b76c6c8ea277b07d58fa75dcacf102a203ad51" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pfrenssen/coder/zipball/88055e40931a56074b6510a631d3403794c91625", - "reference": "88055e40931a56074b6510a631d3403794c91625", + "url": "https://api.github.com/repos/pfrenssen/coder/zipball/a0b76c6c8ea277b07d58fa75dcacf102a203ad51", + "reference": "a0b76c6c8ea277b07d58fa75dcacf102a203ad51", "shasum": "" }, "require": { @@ -16468,7 +16688,7 @@ "issues": "https://www.drupal.org/project/issues/coder", "source": "https://www.drupal.org/project/coder" }, - "time": "2023-06-15T07:16:09+00:00" + "time": "2023-07-17T15:36:49+00:00" }, { "name": "drupal/composer_deploy", @@ -16930,6 +17150,77 @@ "source": "https://git.drupalcode.org/project/http_request_mock" } }, + { + "name": "drupal/masquerade", + "version": "2.0.0-rc1", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/masquerade.git", + "reference": "8.x-2.0-rc1" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/masquerade-8.x-2.0-rc1.zip", + "reference": "8.x-2.0-rc1", + "shasum": "9a800f80cdc4535019dab2d093286c7262a846bf" + }, + "require": { + "drupal/core": "^8.8 || ^9 || ^10" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-2.0-rc1", + "datestamp": "1661364139", + "security-coverage": { + "status": "not-covered", + "message": "Project has not opted into security advisory coverage!" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Andrey Postnikov (andypost)", + "homepage": "https://www.drupal.org/u/andypost", + "role": "Maintainer" + }, + { + "name": "David Norman (deekayen)", + "homepage": "https://www.drupal.org/u/deekayen", + "role": "Maintainer" + }, + { + "name": "Mark Shropshire (shrop)", + "homepage": "https://www.drupal.org/u/shrop", + "role": "Maintainer" + }, + { + "name": "Daniel Kudwien (sun)", + "homepage": "https://www.drupal.org/u/sun", + "role": "Maintainer" + }, + { + "name": "Andrew Berry (deviantintegral)", + "homepage": "https://www.drupal.org/u/deviantintegral", + "role": "Maintainer" + }, + { + "name": "sun", + "homepage": "https://www.drupal.org/user/54136" + } + ], + "description": "Allows privileged users to masquerade as another user.", + "homepage": "https://www.drupal.org/project/masquerade", + "support": { + "source": "https://git.drupal.org/project/masquerade.git", + "issues": "https://www.drupal.org/project/issues/masquerade", + "irc": "irc://irc.freenode.org/drupal-contribute" + } + }, { "name": "drupal/renderviz", "version": "1.0.0-alpha4", @@ -17189,16 +17480,16 @@ }, { "name": "ec-europa/toolkit", - "version": "9.11.0", + "version": "9.12.0", "source": { "type": "git", "url": "https://github.com/ec-europa/toolkit.git", - "reference": "da579e84f8333250590f93225db6dc5f794fae05" + "reference": "449988e7c65fab25c3486b866d137cb9eb89dd65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ec-europa/toolkit/zipball/da579e84f8333250590f93225db6dc5f794fae05", - "reference": "da579e84f8333250590f93225db6dc5f794fae05", + "url": "https://api.github.com/repos/ec-europa/toolkit/zipball/449988e7c65fab25c3486b866d137cb9eb89dd65", + "reference": "449988e7c65fab25c3486b866d137cb9eb89dd65", "shasum": "" }, "require": { @@ -17216,6 +17507,7 @@ "jakeasmith/http_build_url": "^1.0", "league/container": "^4.1.1", "mglaman/phpstan-drupal": "^1.1", + "pear/archive_tar": "^1.4", "php": ">=8.1", "php-parallel-lint/php-parallel-lint": "^1.3", "phpmd/phpmd": "^2.12", @@ -17250,7 +17542,7 @@ "email": "DIGIT-NEXTEUROPA-QA@ec.europa.eu", "source": "https://github.com/ec-europa/toolkit" }, - "time": "2023-06-30T10:03:47+00:00" + "time": "2023-07-31T13:18:00+00:00" }, { "name": "enlightn/security-checker", @@ -17668,49 +17960,50 @@ }, { "name": "laminas/laminas-servicemanager", - "version": "3.15.0", + "version": "3.21.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-servicemanager.git", - "reference": "65910ef6a8066b0369fab77fbec9e030be59c866" + "reference": "625f2aa3bc6dd02688b2da5155b3a69870812bda" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/65910ef6a8066b0369fab77fbec9e030be59c866", - "reference": "65910ef6a8066b0369fab77fbec9e030be59c866", + "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/625f2aa3bc6dd02688b2da5155b3a69870812bda", + "reference": "625f2aa3bc6dd02688b2da5155b3a69870812bda", "shasum": "" }, "require": { - "composer-plugin-api": "^2.0", - "laminas/laminas-stdlib": "^3.2.1", - "php": "~7.4.0 || ~8.0.0 || ~8.1.0", - "psr/container": "^1.1 || ^2.0.2" + "laminas/laminas-stdlib": "^3.17", + "php": "~8.1.0 || ~8.2.0", + "psr/container": "^1.0" }, "conflict": { "ext-psr": "*", - "laminas/laminas-code": "<3.3.1", + "laminas/laminas-code": "<4.10.0", "zendframework/zend-code": "<3.3.1", "zendframework/zend-servicemanager": "*" }, "provide": { - "psr/container-implementation": "^1.1 || ^2.0" + "psr/container-implementation": "^1.0" }, "replace": { "container-interop/container-interop": "^1.2.0" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.3.0", - "laminas/laminas-container-config-test": "^0.6", - "mikey179/vfsstream": "^1.6.10@alpha", - "ocramius/proxy-manager": "^2.11", - "phpbench/phpbench": "^1.1", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5.5", - "psalm/plugin-phpunit": "^0.17.0", - "vimeo/psalm": "^4.8" + "composer/package-versions-deprecated": "^1.11.99.5", + "friendsofphp/proxy-manager-lts": "^1.0.14", + "laminas/laminas-code": "^4.10.0", + "laminas/laminas-coding-standard": "~2.5.0", + "laminas/laminas-container-config-test": "^0.8", + "laminas/laminas-dependency-plugin": "^2.2", + "mikey179/vfsstream": "^1.6.11", + "phpbench/phpbench": "^1.2.9", + "phpunit/phpunit": "^10.0.17", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.8.0" }, "suggest": { - "ocramius/proxy-manager": "ProxyManager ^2.1.1 to handle lazy initialization of services" + "friendsofphp/proxy-manager-lts": "ProxyManager ^2.1.1 to handle lazy initialization of services" }, "bin": [ "bin/generate-deps-for-config-factory", @@ -17754,33 +18047,35 @@ "type": "community_bridge" } ], - "time": "2022-07-18T21:18:56+00:00" + "time": "2023-05-14T12:24:54+00:00" }, { "name": "laminas/laminas-text", - "version": "2.9.0", + "version": "2.10.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-text.git", - "reference": "8879e75d03e09b0d6787e6680cfa255afd4645a7" + "reference": "40f7acdb284d41553d32db811e704d6e15e415b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-text/zipball/8879e75d03e09b0d6787e6680cfa255afd4645a7", - "reference": "8879e75d03e09b0d6787e6680cfa255afd4645a7", + "url": "https://api.github.com/repos/laminas/laminas-text/zipball/40f7acdb284d41553d32db811e704d6e15e415b4", + "reference": "40f7acdb284d41553d32db811e704d6e15e415b4", "shasum": "" }, "require": { - "laminas/laminas-servicemanager": "^3.4", - "laminas/laminas-stdlib": "^3.6", - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "laminas/laminas-servicemanager": "^3.19.0", + "laminas/laminas-stdlib": "^3.7.1", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "zendframework/zend-text": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~1.0.0", - "phpunit/phpunit": "^9.3" + "laminas/laminas-coding-standard": "~2.4.0", + "phpunit/phpunit": "^9.5", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.1" }, "type": "library", "autoload": { @@ -17812,7 +18107,7 @@ "type": "community_bridge" } ], - "time": "2021-09-02T16:50:53+00:00" + "time": "2022-12-11T15:36:27+00:00" }, { "name": "lovers-of-behat/table-extension", @@ -17917,16 +18212,16 @@ }, { "name": "mglaman/phpstan-drupal", - "version": "1.1.36", + "version": "1.1.37", "source": { "type": "git", "url": "https://github.com/mglaman/phpstan-drupal.git", - "reference": "345f7babd0cfd1ef73bb856673a1cee5a0dbd6e5" + "reference": "a40fb539b55d47aeabc308d99b3088a40abcff30" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mglaman/phpstan-drupal/zipball/345f7babd0cfd1ef73bb856673a1cee5a0dbd6e5", - "reference": "345f7babd0cfd1ef73bb856673a1cee5a0dbd6e5", + "url": "https://api.github.com/repos/mglaman/phpstan-drupal/zipball/a40fb539b55d47aeabc308d99b3088a40abcff30", + "reference": "a40fb539b55d47aeabc308d99b3088a40abcff30", "shasum": "" }, "require": { @@ -18001,7 +18296,7 @@ "description": "Drupal extension and rules for PHPStan", "support": { "issues": "https://github.com/mglaman/phpstan-drupal/issues", - "source": "https://github.com/mglaman/phpstan-drupal/tree/1.1.36" + "source": "https://github.com/mglaman/phpstan-drupal/tree/1.1.37" }, "funding": [ { @@ -18017,7 +18312,7 @@ "type": "tidelift" } ], - "time": "2023-06-28T20:24:39+00:00" + "time": "2023-07-25T14:24:06+00:00" }, { "name": "mikey179/vfsstream", @@ -19003,16 +19298,16 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.7.2", + "version": "1.7.3", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "b2fe4d22a5426f38e014855322200b97b5362c0d" + "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/b2fe4d22a5426f38e014855322200b97b5362c0d", - "reference": "b2fe4d22a5426f38e014855322200b97b5362c0d", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", + "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", "shasum": "" }, "require": { @@ -19055,9 +19350,9 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.2" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.3" }, - "time": "2023-05-30T18:13:47+00:00" + "time": "2023-08-12T11:01:26+00:00" }, { "name": "phpmd/phpmd", @@ -19383,16 +19678,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.22.1", + "version": "1.23.1", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "65c39594fbd8c67abfc68bb323f86447bab79cc0" + "reference": "846ae76eef31c6d7790fac9bc399ecee45160b26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/65c39594fbd8c67abfc68bb323f86447bab79cc0", - "reference": "65c39594fbd8c67abfc68bb323f86447bab79cc0", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/846ae76eef31c6d7790fac9bc399ecee45160b26", + "reference": "846ae76eef31c6d7790fac9bc399ecee45160b26", "shasum": "" }, "require": { @@ -19424,22 +19719,22 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.22.1" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.23.1" }, - "time": "2023-06-29T20:46:06+00:00" + "time": "2023-08-03T16:32:59+00:00" }, { "name": "phpstan/phpstan", - "version": "1.10.25", + "version": "1.10.29", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "578f4e70d117f9a90699324c555922800ac38d8c" + "reference": "ee5d8f2d3977fb09e55603eee6fb53bdd76ee9c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/578f4e70d117f9a90699324c555922800ac38d8c", - "reference": "578f4e70d117f9a90699324c555922800ac38d8c", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/ee5d8f2d3977fb09e55603eee6fb53bdd76ee9c1", + "reference": "ee5d8f2d3977fb09e55603eee6fb53bdd76ee9c1", "shasum": "" }, "require": { @@ -19488,25 +19783,25 @@ "type": "tidelift" } ], - "time": "2023-07-06T12:11:37+00:00" + "time": "2023-08-14T13:24:11+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", - "version": "1.1.3", + "version": "1.1.4", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-deprecation-rules.git", - "reference": "a22b36b955a2e9a3d39fe533b6c1bb5359f9c319" + "reference": "089d8a8258ed0aeefdc7b68b6c3d25572ebfdbaa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/a22b36b955a2e9a3d39fe533b6c1bb5359f9c319", - "reference": "a22b36b955a2e9a3d39fe533b6c1bb5359f9c319", + "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/089d8a8258ed0aeefdc7b68b6c3d25572ebfdbaa", + "reference": "089d8a8258ed0aeefdc7b68b6c3d25572ebfdbaa", "shasum": "" }, "require": { "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.10" + "phpstan/phpstan": "^1.10.3" }, "require-dev": { "php-parallel-lint/php-parallel-lint": "^1.2", @@ -19534,22 +19829,22 @@ "description": "PHPStan rules for detecting usage of deprecated classes, methods, properties, constants and traits.", "support": { "issues": "https://github.com/phpstan/phpstan-deprecation-rules/issues", - "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/1.1.3" + "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/1.1.4" }, - "time": "2023-03-17T07:50:08+00:00" + "time": "2023-08-05T09:02:04+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.26", + "version": "9.2.27", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "443bc6912c9bd5b409254a40f4b0f4ced7c80ea1" + "reference": "b0a88255cb70d52653d80c890bd7f38740ea50d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/443bc6912c9bd5b409254a40f4b0f4ced7c80ea1", - "reference": "443bc6912c9bd5b409254a40f4b0f4ced7c80ea1", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/b0a88255cb70d52653d80c890bd7f38740ea50d1", + "reference": "b0a88255cb70d52653d80c890bd7f38740ea50d1", "shasum": "" }, "require": { @@ -19605,7 +19900,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.26" + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.27" }, "funding": [ { @@ -19613,7 +19909,7 @@ "type": "github" } ], - "time": "2023-03-06T12:58:08+00:00" + "time": "2023-07-26T13:44:30+00:00" }, { "name": "phpunit/php-file-iterator", @@ -20317,72 +20613,6 @@ ], "time": "2020-10-26T15:52:27+00:00" }, - { - "name": "sebastian/diff", - "version": "4.0.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131", - "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-05-07T05:35:17+00:00" - }, { "name": "sebastian/environment", "version": "5.1.5", @@ -20525,16 +20755,16 @@ }, { "name": "sebastian/global-state", - "version": "5.0.5", + "version": "5.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" + "reference": "bde739e7565280bda77be70044ac1047bc007e34" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bde739e7565280bda77be70044ac1047bc007e34", + "reference": "bde739e7565280bda77be70044ac1047bc007e34", "shasum": "" }, "require": { @@ -20577,7 +20807,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.6" }, "funding": [ { @@ -20585,7 +20815,7 @@ "type": "github" } ], - "time": "2022-02-14T08:28:10+00:00" + "time": "2023-08-02T09:26:13+00:00" }, { "name": "sebastian/lines-of-code", @@ -20985,16 +21215,16 @@ }, { "name": "sirbrillig/phpcs-variable-analysis", - "version": "v2.11.16", + "version": "v2.11.17", "source": { "type": "git", "url": "https://github.com/sirbrillig/phpcs-variable-analysis.git", - "reference": "dc5582dc5a93a235557af73e523c389aac9a8e88" + "reference": "3b71162a6bf0cde2bff1752e40a1788d8273d049" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sirbrillig/phpcs-variable-analysis/zipball/dc5582dc5a93a235557af73e523c389aac9a8e88", - "reference": "dc5582dc5a93a235557af73e523c389aac9a8e88", + "url": "https://api.github.com/repos/sirbrillig/phpcs-variable-analysis/zipball/3b71162a6bf0cde2bff1752e40a1788d8273d049", + "reference": "3b71162a6bf0cde2bff1752e40a1788d8273d049", "shasum": "" }, "require": { @@ -21039,36 +21269,36 @@ "source": "https://github.com/sirbrillig/phpcs-variable-analysis", "wiki": "https://github.com/sirbrillig/phpcs-variable-analysis/wiki" }, - "time": "2023-03-31T16:46:32+00:00" + "time": "2023-08-05T23:46:11+00:00" }, { "name": "slevomat/coding-standard", - "version": "8.13.1", + "version": "8.13.4", "source": { "type": "git", "url": "https://github.com/slevomat/coding-standard.git", - "reference": "a13c15e20f2d307a1ca8dec5313ec462a4466470" + "reference": "4b2af2fb17773656d02fbfb5d18024ebd19fe322" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/a13c15e20f2d307a1ca8dec5313ec462a4466470", - "reference": "a13c15e20f2d307a1ca8dec5313ec462a4466470", + "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/4b2af2fb17773656d02fbfb5d18024ebd19fe322", + "reference": "4b2af2fb17773656d02fbfb5d18024ebd19fe322", "shasum": "" }, "require": { "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7 || ^1.0", "php": "^7.2 || ^8.0", - "phpstan/phpdoc-parser": "^1.22.0", + "phpstan/phpdoc-parser": "^1.23.0", "squizlabs/php_codesniffer": "^3.7.1" }, "require-dev": { "phing/phing": "2.17.4", "php-parallel-lint/php-parallel-lint": "1.3.2", - "phpstan/phpstan": "1.10.21", + "phpstan/phpstan": "1.10.26", "phpstan/phpstan-deprecation-rules": "1.1.3", "phpstan/phpstan-phpunit": "1.3.13", "phpstan/phpstan-strict-rules": "1.5.1", - "phpunit/phpunit": "7.5.20|8.5.21|9.6.8|10.2.2" + "phpunit/phpunit": "7.5.20|8.5.21|9.6.8|10.2.6" }, "type": "phpcodesniffer-standard", "extra": { @@ -21092,7 +21322,7 @@ ], "support": { "issues": "https://github.com/slevomat/coding-standard/issues", - "source": "https://github.com/slevomat/coding-standard/tree/8.13.1" + "source": "https://github.com/slevomat/coding-standard/tree/8.13.4" }, "funding": [ { @@ -21104,7 +21334,7 @@ "type": "tidelift" } ], - "time": "2023-06-25T12:52:34+00:00" + "time": "2023-07-25T10:28:55+00:00" }, { "name": "squizlabs/php_codesniffer", @@ -21165,16 +21395,16 @@ }, { "name": "symfony/browser-kit", - "version": "v6.3.0", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "0eb7228e7c435169e65c911ba8d107d56d850049" + "reference": "ca4a988488f61ac18f8f845445eabdd36f89aa8d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/0eb7228e7c435169e65c911ba8d107d56d850049", - "reference": "0eb7228e7c435169e65c911ba8d107d56d850049", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/ca4a988488f61ac18f8f845445eabdd36f89aa8d", + "reference": "ca4a988488f61ac18f8f845445eabdd36f89aa8d", "shasum": "" }, "require": { @@ -21213,7 +21443,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/v6.3.0" + "source": "https://github.com/symfony/browser-kit/tree/v6.3.2" }, "funding": [ { @@ -21229,20 +21459,20 @@ "type": "tidelift" } ], - "time": "2023-04-25T10:46:17+00:00" + "time": "2023-07-06T06:56:43+00:00" }, { "name": "symfony/config", - "version": "v6.3.0", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "a5e00dec161b08c946a2c16eed02adbeedf827ae" + "reference": "b47ca238b03e7b0d7880ffd1cf06e8d637ca1467" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/a5e00dec161b08c946a2c16eed02adbeedf827ae", - "reference": "a5e00dec161b08c946a2c16eed02adbeedf827ae", + "url": "https://api.github.com/repos/symfony/config/zipball/b47ca238b03e7b0d7880ffd1cf06e8d637ca1467", + "reference": "b47ca238b03e7b0d7880ffd1cf06e8d637ca1467", "shasum": "" }, "require": { @@ -21288,7 +21518,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v6.3.0" + "source": "https://github.com/symfony/config/tree/v6.3.2" }, "funding": [ { @@ -21304,7 +21534,7 @@ "type": "tidelift" } ], - "time": "2023-04-25T10:46:17+00:00" + "time": "2023-07-19T20:22:16+00:00" }, { "name": "symfony/dom-crawler", @@ -21375,16 +21605,16 @@ }, { "name": "symfony/phpunit-bridge", - "version": "v6.3.1", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "0b0bf59b0d9bd1422145a123a67fb12af546ef0d" + "reference": "e020e1efbd1b42cb670fcd7d19a25abbddba035d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/0b0bf59b0d9bd1422145a123a67fb12af546ef0d", - "reference": "0b0bf59b0d9bd1422145a123a67fb12af546ef0d", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/e020e1efbd1b42cb670fcd7d19a25abbddba035d", + "reference": "e020e1efbd1b42cb670fcd7d19a25abbddba035d", "shasum": "" }, "require": { @@ -21436,90 +21666,7 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v6.3.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-06-23T13:25:16+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" + "source": "https://github.com/symfony/phpunit-bridge/tree/v6.3.2" }, "funding": [ { @@ -21535,24 +21682,25 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-07-12T16:00:22+00:00" }, { "name": "symfony/translation", - "version": "v6.3.0", + "version": "v6.3.3", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "f72b2cba8f79dd9d536f534f76874b58ad37876f" + "reference": "3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/f72b2cba8f79dd9d536f534f76874b58ad37876f", - "reference": "f72b2cba8f79dd9d536f534f76874b58ad37876f", + "url": "https://api.github.com/repos/symfony/translation/zipball/3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd", + "reference": "3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd", "shasum": "" }, "require": { "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/translation-contracts": "^2.5|^3.0" }, @@ -21613,7 +21761,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.3.0" + "source": "https://github.com/symfony/translation/tree/v6.3.3" }, "funding": [ { @@ -21629,7 +21777,7 @@ "type": "tidelift" } ], - "time": "2023-05-19T12:46:45+00:00" + "time": "2023-07-31T07:08:24+00:00" }, { "name": "theseer/tokenizer", @@ -21921,12 +22069,12 @@ "aliases": [], "minimum-stability": "dev", "stability-flags": { - "drupal/antibot": 0, "drupal/dropsolid_purge": 10, "drupal/facets_block": 10, "drupal/facets_date_range": 10, "drupal/page_manager": 10, "drupal/views_block_area": 10, + "drupal/masquerade": 5, "php-task-runner/composer": 20, "php-task-runner/sparql": 20, "weitzman/drupal-test-traits": 20 @@ -21934,7 +22082,7 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": ">=8.1.3", + "php": ">=8.2", "ext-dom": "*", "ext-json": "*", "ext-memcached": "*", @@ -21947,7 +22095,7 @@ "ext-libxml": "*" }, "platform-overrides": { - "php": "8.1.3" + "php": "8.2" }, "plugin-api-version": "2.3.0" } diff --git a/config/sync/core.entity_form_display.media.collection_banner.default.yml b/config/sync/core.entity_form_display.media.collection_banner.default.yml deleted file mode 100644 index a7d551cf8855e81c92a90275e1233671186cde36..0000000000000000000000000000000000000000 --- a/config/sync/core.entity_form_display.media.collection_banner.default.yml +++ /dev/null @@ -1,37 +0,0 @@ -uuid: b6d8b55e-5ad0-4909-9592-31d7d6de7f43 -langcode: en -status: true -dependencies: - config: - - field.field.media.collection_banner.image_library_widget_image - - image.style.thumbnail - - media.type.collection_banner - module: - - image -id: media.collection_banner.default -targetEntityType: media -bundle: collection_banner -mode: default -content: - image_library_widget_image: - type: image_image - weight: 1 - region: content - settings: - progress_indicator: throbber - preview_image_style: thumbnail - third_party_settings: { } - name: - type: string_textfield - weight: 0 - region: content - settings: - size: 60 - placeholder: '' - third_party_settings: { } -hidden: - created: true - langcode: true - path: true - status: true - uid: true diff --git a/config/sync/core.entity_form_display.media.solution_banner.default.yml b/config/sync/core.entity_form_display.media.solution_banner.default.yml deleted file mode 100644 index c8429f2f173f28a68e350aafde568213d06b0cf5..0000000000000000000000000000000000000000 --- a/config/sync/core.entity_form_display.media.solution_banner.default.yml +++ /dev/null @@ -1,37 +0,0 @@ -uuid: 82e01efb-e926-4df8-afed-efcfca24d799 -langcode: en -status: true -dependencies: - config: - - field.field.media.solution_banner.image_library_widget_image - - image.style.thumbnail - - media.type.solution_banner - module: - - image -id: media.solution_banner.default -targetEntityType: media -bundle: solution_banner -mode: default -content: - image_library_widget_image: - type: image_image - weight: 1 - region: content - settings: - progress_indicator: throbber - preview_image_style: thumbnail - third_party_settings: { } - name: - type: string_textfield - weight: 0 - region: content - settings: - size: 60 - placeholder: '' - third_party_settings: { } -hidden: - created: true - langcode: true - path: true - status: true - uid: true diff --git a/config/sync/core.entity_form_display.meta_entity.topic.default.yml b/config/sync/core.entity_form_display.meta_entity.topic.default.yml index c8bd46c177d44f6d36bd596b76bcec8ec339be85..99a64401d86cb793c1e6a85ed89435253506ebdd 100644 --- a/config/sync/core.entity_form_display.meta_entity.topic.default.yml +++ b/config/sync/core.entity_form_display.meta_entity.topic.default.yml @@ -10,8 +10,8 @@ dependencies: - image.style.thumbnail - meta_entity.type.topic module: - - image - - paragraphs + - layout_paragraphs + - svg_image - text id: meta_entity.topic.default targetEntityType: meta_entity @@ -44,22 +44,14 @@ content: display_label: true third_party_settings: { } topics_paragraph: - type: paragraphs + type: layout_paragraphs weight: 2 region: content settings: - title: Paragraph - title_plural: Paragraphs - edit_mode: open - closed_mode: summary - autocollapse: none - closed_mode_threshold: 0 - add_mode: dropdown - form_display_mode: default - default_paragraph_type: '' - features: - collapse_edit_all: collapse_edit_all - duplicate: duplicate + preview_view_mode: default + nesting_depth: 0 + require_layouts: 1 + empty_message: '' third_party_settings: { } hidden: label: true diff --git a/config/sync/core.entity_form_display.node.custom_page.default.yml b/config/sync/core.entity_form_display.node.custom_page.default.yml index e66591dc5d747ff38df01d8bc42466cbf2984779..55a822888dfb7b98f38ff7c8aa436f00e0c57685 100644 --- a/config/sync/core.entity_form_display.node.custom_page.default.yml +++ b/config/sync/core.entity_form_display.node.custom_page.default.yml @@ -7,13 +7,14 @@ dependencies: - field.field.node.custom_page.field_custom_page_logo - field.field.node.custom_page.field_paragraphs_body - field.field.node.custom_page.field_state + - field.field.node.custom_page.field_topic - field.field.node.custom_page.og_audience - image.style.thumbnail - node.type.custom_page module: - file - joinup_workflow - - paragraphs + - layout_paragraphs - path - svg_image id: node.custom_page.default @@ -37,23 +38,14 @@ content: preview_image_style: thumbnail third_party_settings: { } field_paragraphs_body: - type: paragraphs + type: layout_paragraphs weight: 2 region: content settings: - title: Paragraph - title_plural: Paragraphs - edit_mode: open - closed_mode: summary - autocollapse: none - closed_mode_threshold: 0 - add_mode: dropdown - form_display_mode: default - default_paragraph_type: simple_paragraph - features: - add_above: '0' - collapse_edit_all: collapse_edit_all - duplicate: '0' + preview_view_mode: preview + nesting_depth: 0 + require_layouts: 1 + empty_message: '' third_party_settings: { } field_state: type: state_machine_buttons @@ -62,6 +54,12 @@ content: settings: use_transition_label: 1 third_party_settings: { } + field_topic: + type: options_select + weight: 2 + region: content + settings: { } + third_party_settings: { } langcode: type: language_select weight: 1 diff --git a/config/sync/core.entity_form_display.paragraph.heading.default.yml b/config/sync/core.entity_form_display.paragraph.heading.default.yml new file mode 100644 index 0000000000000000000000000000000000000000..7c7ea075d141aadc1db36f49e6841afc48fdbcaf --- /dev/null +++ b/config/sync/core.entity_form_display.paragraph.heading.default.yml @@ -0,0 +1,23 @@ +uuid: cedc21b8-16eb-4eef-bef4-8a9ef544cdbc +langcode: en +status: true +dependencies: + config: + - field.field.paragraph.heading.paragraph_heading + - paragraphs.paragraphs_type.heading +id: paragraph.heading.default +targetEntityType: paragraph +bundle: heading +mode: default +content: + paragraph_heading: + type: string_textfield + weight: 0 + region: content + settings: + size: 60 + placeholder: '' + third_party_settings: { } +hidden: + created: true + status: true diff --git a/config/sync/core.entity_form_display.paragraph.layout.default.yml b/config/sync/core.entity_form_display.paragraph.layout.default.yml new file mode 100644 index 0000000000000000000000000000000000000000..c76434a4613a6c89fbaaae662a1d932845ded06a --- /dev/null +++ b/config/sync/core.entity_form_display.paragraph.layout.default.yml @@ -0,0 +1,19 @@ +uuid: a04b50de-bd35-4326-b1ab-9edc872f12d5 +langcode: en +status: true +dependencies: + config: + - paragraphs.paragraphs_type.layout +id: paragraph.layout.default +targetEntityType: paragraph +bundle: layout +mode: default +content: + layout_paragraphs_fields: + weight: -200 + region: content + settings: { } + third_party_settings: { } +hidden: + created: true + status: true diff --git a/config/sync/core.entity_form_display.paragraph.poll.default.yml b/config/sync/core.entity_form_display.paragraph.poll.default.yml new file mode 100644 index 0000000000000000000000000000000000000000..70458dfb18c249c65f2f5dccc8f2820dced105c6 --- /dev/null +++ b/config/sync/core.entity_form_display.paragraph.poll.default.yml @@ -0,0 +1,30 @@ +uuid: 24d67137-bf2f-4cee-9081-71ce8eb775fe +langcode: en +status: true +dependencies: + config: + - field.field.paragraph.poll.field_paragraphs_poll + - paragraphs.paragraphs_type.poll + module: + - inline_entity_form +id: paragraph.poll.default +targetEntityType: paragraph +bundle: poll +mode: default +content: + field_paragraphs_poll: + type: inline_entity_form_simple + weight: 0 + region: content + settings: + form_mode: default + override_labels: false + label_singular: '' + label_plural: '' + collapsible: false + collapsed: false + revision: true + third_party_settings: { } +hidden: + created: true + status: true diff --git a/config/sync/core.entity_form_display.paragraph.quote.default.yml b/config/sync/core.entity_form_display.paragraph.quote.default.yml new file mode 100644 index 0000000000000000000000000000000000000000..13c516ddebe1d3df7cbd47e60c71618f22ac5566 --- /dev/null +++ b/config/sync/core.entity_form_display.paragraph.quote.default.yml @@ -0,0 +1,23 @@ +uuid: a6f6339b-77c8-4ee7-83de-99f1f1db4360 +langcode: en +status: true +dependencies: + config: + - field.field.paragraph.quote.paragraph_quote + - paragraphs.paragraphs_type.quote +id: paragraph.quote.default +targetEntityType: paragraph +bundle: quote +mode: default +content: + paragraph_quote: + type: string_textarea + weight: 0 + region: content + settings: + rows: 3 + placeholder: '' + third_party_settings: { } +hidden: + created: true + status: true diff --git a/config/sync/core.entity_form_display.paragraph.text.default.yml b/config/sync/core.entity_form_display.paragraph.text.default.yml new file mode 100644 index 0000000000000000000000000000000000000000..d30c1065314f2570d4251479d5652c427419aec7 --- /dev/null +++ b/config/sync/core.entity_form_display.paragraph.text.default.yml @@ -0,0 +1,25 @@ +uuid: ddff0422-2c87-4ae2-921a-13a06ea4969e +langcode: en +status: true +dependencies: + config: + - field.field.paragraph.text.field_body + - paragraphs.paragraphs_type.text + module: + - text +id: paragraph.text.default +targetEntityType: paragraph +bundle: text +mode: default +content: + field_body: + type: text_textarea + weight: 0 + region: content + settings: + rows: 5 + placeholder: '' + third_party_settings: { } +hidden: + created: true + status: true diff --git a/config/sync/core.entity_form_display.poll.poll.default.yml b/config/sync/core.entity_form_display.poll.poll.default.yml new file mode 100644 index 0000000000000000000000000000000000000000..824f20c1d90b3b66dbe23043f126e8a64ec38b38 --- /dev/null +++ b/config/sync/core.entity_form_display.poll.poll.default.yml @@ -0,0 +1,64 @@ +uuid: 9c6c1e03-e40d-426a-93a4-896d74f56738 +langcode: en +status: true +dependencies: + config: + - field.field.poll.poll.show_number_of_results + module: + - poll +id: poll.poll.default +targetEntityType: poll +bundle: poll +mode: default +content: + cancel_vote_allow: + type: boolean_checkbox + weight: 3 + region: content + settings: + display_label: true + third_party_settings: { } + choice: + type: poll_choice_default + weight: 1 + region: content + settings: { } + third_party_settings: { } + question: + type: string_textfield + weight: 0 + region: content + settings: + size: 60 + placeholder: '' + third_party_settings: { } + result_vote_allow: + type: boolean_checkbox + weight: 5 + region: content + settings: + display_label: true + third_party_settings: { } + runtime: + type: options_select + weight: 2 + region: content + settings: { } + third_party_settings: { } + show_number_of_results: + type: boolean_checkbox + weight: 4 + region: content + settings: + display_label: true + third_party_settings: { } + status: + type: boolean_checkbox + weight: 6 + region: content + settings: + display_label: true + third_party_settings: { } +hidden: + anonymous_vote_allow: true + uid: true diff --git a/config/sync/core.entity_form_display.rdf_entity.asset_release.default.yml b/config/sync/core.entity_form_display.rdf_entity.asset_release.default.yml index e3e8b09702f8f8afca1fc945e8e95186d46df4ef..02a5e9ebf52c0cfc9cd9d69ef6512d340fccff23 100644 --- a/config/sync/core.entity_form_display.rdf_entity.asset_release.default.yml +++ b/config/sync/core.entity_form_display.rdf_entity.asset_release.default.yml @@ -3,7 +3,6 @@ langcode: en status: true dependencies: config: - - field.field.rdf_entity.asset_release.field_isr_banner - field.field.rdf_entity.asset_release.field_isr_contact_information - field.field.rdf_entity.asset_release.field_isr_description - field.field.rdf_entity.asset_release.field_isr_distribution @@ -20,9 +19,9 @@ dependencies: - field.field.rdf_entity.asset_release.field_isr_state - field.field.rdf_entity.asset_release.field_isr_translation - field.field.rdf_entity.asset_release.field_keywords - - field.field.rdf_entity.asset_release.field_topic - field.field.rdf_entity.asset_release.field_spatial_coverage - field.field.rdf_entity.asset_release.field_status + - field.field.rdf_entity.asset_release.field_topic - rdf_entity.rdfentity.asset_release module: - allowed_formats @@ -127,6 +126,11 @@ content: size: 60 placeholder: '' third_party_settings: { } + simple_sitemap: + weight: 10 + region: content + settings: { } + third_party_settings: { } transition_motivation: weight: 10 region: content @@ -134,7 +138,6 @@ content: third_party_settings: { } hidden: changed: true - field_isr_banner: true field_isr_contact_information: true field_isr_description: true field_isr_distribution: true diff --git a/config/sync/core.entity_form_display.rdf_entity.collection.default.yml b/config/sync/core.entity_form_display.rdf_entity.collection.default.yml index 159bec3d56d9f7792c4d32b6f0a92dc2afd443bb..559b480c425ea27d23f13d681c92217f8bfcb7af 100644 --- a/config/sync/core.entity_form_display.rdf_entity.collection.default.yml +++ b/config/sync/core.entity_form_display.rdf_entity.collection.default.yml @@ -7,7 +7,6 @@ dependencies: - field.field.rdf_entity.collection.field_ar_abstract - field.field.rdf_entity.collection.field_ar_access_url - field.field.rdf_entity.collection.field_ar_affiliates - - field.field.rdf_entity.collection.field_ar_banner - field.field.rdf_entity.collection.field_ar_closed - field.field.rdf_entity.collection.field_ar_contact_information - field.field.rdf_entity.collection.field_ar_content_creation @@ -29,8 +28,8 @@ dependencies: module: - allowed_formats - field_group - - image_library_widget - inline_entity_form + - joinup_core - joinup_workflow - link - oe_newsroom_newsletter @@ -78,7 +77,6 @@ third_party_settings: - field_ar_abstract - field_ar_access_url - field_ar_logo - - field_ar_banner - field_spatial_coverage - field_keywords - field_ar_moderation @@ -130,16 +128,6 @@ content: placeholder_url: '' placeholder_title: '' third_party_settings: { } - field_ar_banner: - type: image_library_widget - weight: 13 - region: content - settings: - progress_indicator: throbber - preview_image_style: thumbnail - media_type_id: collection_banner - library_label: 'Alternatively, choose a pre-uploaded image' - third_party_settings: { } field_ar_closed: type: boolean_checkbox weight: 17 @@ -163,6 +151,7 @@ content: collapsible: false collapsed: false revision: false + removed_reference: optional third_party_settings: { } field_ar_content_creation: type: options_buttons @@ -214,6 +203,7 @@ content: collapsible: false collapsed: false revision: false + removed_reference: optional third_party_settings: { } field_ar_state: type: state_machine_buttons @@ -275,6 +265,11 @@ content: size: 60 placeholder: '' third_party_settings: { } + simple_sitemap: + weight: 10 + region: content + settings: { } + third_party_settings: { } transition_motivation: weight: 8 region: content diff --git a/config/sync/core.entity_form_display.rdf_entity.collection.propose.yml b/config/sync/core.entity_form_display.rdf_entity.collection.propose.yml index d7b86593f2fa91587bc959449b65819cc81c5994..404113942862ccacbf22d1bf5bf1d8bb5871a8e6 100644 --- a/config/sync/core.entity_form_display.rdf_entity.collection.propose.yml +++ b/config/sync/core.entity_form_display.rdf_entity.collection.propose.yml @@ -8,7 +8,6 @@ dependencies: - field.field.rdf_entity.collection.field_ar_abstract - field.field.rdf_entity.collection.field_ar_access_url - field.field.rdf_entity.collection.field_ar_affiliates - - field.field.rdf_entity.collection.field_ar_banner - field.field.rdf_entity.collection.field_ar_closed - field.field.rdf_entity.collection.field_ar_contact_information - field.field.rdf_entity.collection.field_ar_content_creation @@ -30,8 +29,8 @@ dependencies: module: - allowed_formats - field_group - - image_library_widget - inline_entity_form + - joinup_core - joinup_workflow - link - text @@ -76,7 +75,6 @@ third_party_settings: - field_ar_abstract - field_ar_access_url - field_ar_logo - - field_ar_banner - field_keywords - field_spatial_coverage - field_ar_moderation @@ -119,16 +117,6 @@ content: placeholder_url: '' placeholder_title: '' third_party_settings: { } - field_ar_banner: - type: image_library_widget - weight: 12 - region: content - settings: - progress_indicator: throbber - preview_image_style: thumbnail - media_type_id: collection_banner - library_label: 'Alternatively, choose a pre-uploaded image' - third_party_settings: { } field_ar_closed: type: boolean_checkbox weight: 17 @@ -152,6 +140,7 @@ content: collapsible: false collapsed: false revision: false + removed_reference: optional third_party_settings: { } field_ar_content_creation: type: options_buttons @@ -203,6 +192,7 @@ content: collapsible: false collapsed: false revision: false + removed_reference: optional third_party_settings: { } field_ar_state: type: state_machine_buttons @@ -258,6 +248,11 @@ content: settings: include_locked: true third_party_settings: { } + simple_sitemap: + weight: 10 + region: content + settings: { } + third_party_settings: { } transition_motivation: weight: 6 region: content diff --git a/config/sync/core.entity_form_display.rdf_entity.solution.default.yml b/config/sync/core.entity_form_display.rdf_entity.solution.default.yml index f3671e5ac7a9dd9ceed641fd47fa767ede18a15d..36a6fe91814e0f22f01f8f0b1725476a43823849 100644 --- a/config/sync/core.entity_form_display.rdf_entity.solution.default.yml +++ b/config/sync/core.entity_form_display.rdf_entity.solution.default.yml @@ -6,7 +6,6 @@ dependencies: - core.entity_form_mode.rdf_entity.inline - field.field.rdf_entity.solution.field_is_actor - field.field.rdf_entity.solution.field_is_affiliations_requests - - field.field.rdf_entity.solution.field_is_banner - field.field.rdf_entity.solution.field_is_business_process - field.field.rdf_entity.solution.field_is_contact_information - field.field.rdf_entity.solution.field_is_content @@ -107,7 +106,6 @@ third_party_settings: group_management: children: - field_is_logo - - field_is_banner - field_is_documentation - field_spatial_coverage - field_keywords @@ -151,16 +149,6 @@ content: region: content settings: { } third_party_settings: { } - field_is_banner: - type: image_library_widget - weight: 5 - region: content - settings: - progress_indicator: throbber - preview_image_style: thumbnail - media_type_id: solution_banner - library_label: 'Alternatively, choose a pre-uploaded image' - third_party_settings: { } field_is_business_process: type: entity_reference_autocomplete weight: 12 diff --git a/config/sync/core.entity_view_display.media.collection_banner.default.yml b/config/sync/core.entity_view_display.media.collection_banner.default.yml deleted file mode 100644 index 6fd21b9f402c3065f33dc81bf94f3ea27a3831d1..0000000000000000000000000000000000000000 --- a/config/sync/core.entity_view_display.media.collection_banner.default.yml +++ /dev/null @@ -1,33 +0,0 @@ -uuid: b25bf413-664f-42a0-a95a-421efd61da5b -langcode: en -status: true -dependencies: - config: - - field.field.media.collection_banner.image_library_widget_image - - image.style.large - - media.type.collection_banner - module: - - image -id: media.collection_banner.default -targetEntityType: media -bundle: collection_banner -mode: default -content: - image_library_widget_image: - type: image - label: visually_hidden - settings: - image_link: '' - image_style: large - image_loading: - attribute: lazy - third_party_settings: { } - weight: 0 - region: content -hidden: - created: true - langcode: true - name: true - search_api_excerpt: true - thumbnail: true - uid: true diff --git a/config/sync/core.entity_view_display.media.solution_banner.default.yml b/config/sync/core.entity_view_display.media.solution_banner.default.yml deleted file mode 100644 index ffa12b4ed05878027223c11ab34218ad1430dca7..0000000000000000000000000000000000000000 --- a/config/sync/core.entity_view_display.media.solution_banner.default.yml +++ /dev/null @@ -1,33 +0,0 @@ -uuid: 8eea072c-7fad-4968-a14d-e2d64e4bcf2a -langcode: en -status: true -dependencies: - config: - - field.field.media.solution_banner.image_library_widget_image - - image.style.large - - media.type.solution_banner - module: - - image -id: media.solution_banner.default -targetEntityType: media -bundle: solution_banner -mode: default -content: - image_library_widget_image: - type: image - label: visually_hidden - settings: - image_link: '' - image_style: large - image_loading: - attribute: lazy - third_party_settings: { } - weight: 0 - region: content -hidden: - created: true - langcode: true - name: true - search_api_excerpt: true - thumbnail: true - uid: true diff --git a/config/sync/core.entity_view_display.meta_entity.collection_settings.default.yml b/config/sync/core.entity_view_display.meta_entity.collection_settings.default.yml index b8f509f622428261bfa7c9daedea62ee3491c856..37cf2ae919ecfa90c7d68d423b237fc6ce4f7578 100644 --- a/config/sync/core.entity_view_display.meta_entity.collection_settings.default.yml +++ b/config/sync/core.entity_view_display.meta_entity.collection_settings.default.yml @@ -30,6 +30,15 @@ content: date_format: medium custom_date_format: '' 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: { } weight: 22 region: content @@ -40,6 +49,15 @@ content: date_format: medium custom_date_format: '' 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: { } weight: 20 region: content diff --git a/config/sync/core.entity_view_display.meta_entity.solution_settings.default.yml b/config/sync/core.entity_view_display.meta_entity.solution_settings.default.yml index 46108fc1bdb4a1e71639c706933773ec116fe9d3..ba9aa6164a74d82aabed455daeeb5a04fdce9c82 100644 --- a/config/sync/core.entity_view_display.meta_entity.solution_settings.default.yml +++ b/config/sync/core.entity_view_display.meta_entity.solution_settings.default.yml @@ -20,6 +20,15 @@ content: date_format: medium custom_date_format: '' 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: { } weight: 22 region: content @@ -30,6 +39,15 @@ content: date_format: medium custom_date_format: '' 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: { } weight: 20 region: content diff --git a/config/sync/core.entity_view_display.meta_entity.topic.default.yml b/config/sync/core.entity_view_display.meta_entity.topic.default.yml index 13b0715f759c6c05b8adfe84d51fe1a6efc3cf81..4a393514bb3621169db95cc9cb88bde9a33e43a4 100644 --- a/config/sync/core.entity_view_display.meta_entity.topic.default.yml +++ b/config/sync/core.entity_view_display.meta_entity.topic.default.yml @@ -9,7 +9,7 @@ dependencies: - field.field.meta_entity.topic.topics_paragraph - meta_entity.type.topic module: - - entity_reference_revisions + - layout_paragraphs - text id: meta_entity.topic.default targetEntityType: meta_entity @@ -32,7 +32,7 @@ content: weight: 0 region: content topics_paragraph: - type: entity_reference_revisions_entity_view + type: layout_paragraphs label: hidden settings: view_mode: default diff --git a/config/sync/core.entity_view_display.node.custom_page.carousel.yml b/config/sync/core.entity_view_display.node.custom_page.carousel.yml index 153037170b040b746c433e7e37805f47e343ffd4..85323fd979160db2f9449dbd701dca0f64b43e7c 100644 --- a/config/sync/core.entity_view_display.node.custom_page.carousel.yml +++ b/config/sync/core.entity_view_display.node.custom_page.carousel.yml @@ -8,15 +8,16 @@ dependencies: - field.field.node.custom_page.field_custom_page_logo - field.field.node.custom_page.field_paragraphs_body - field.field.node.custom_page.field_state + - field.field.node.custom_page.field_topic - field.field.node.custom_page.og_audience - node.type.custom_page - - responsive_image.styles.iop_carousel + - responsive_image.styles.tile module: - - entity_reference_revisions - field_delimiter - field_formatter_range - field_group - layout_builder + - layout_paragraphs - link - responsive_image - template_suggestion @@ -56,16 +57,18 @@ content: settings: responsive_image_style: tile image_link: '' + image_loading: + attribute: eager third_party_settings: template_suggestion: template_suggestion: '' weight: 0 region: content field_paragraphs_body: - type: entity_reference_revisions_entity_view + type: layout_paragraphs label: hidden settings: - view_mode: default + view_mode: tile link: '' third_party_settings: field_delimiter: @@ -98,6 +101,7 @@ content: hidden: field_attachment: true field_state: true + field_topic: true langcode: true links: true og_audience: true diff --git a/config/sync/core.entity_view_display.node.custom_page.default.yml b/config/sync/core.entity_view_display.node.custom_page.default.yml index 6a3dfc4b53b34042269688a88aebba88a8f75847..2a3bc3c24603465c559407f888176b0ab918e177 100644 --- a/config/sync/core.entity_view_display.node.custom_page.default.yml +++ b/config/sync/core.entity_view_display.node.custom_page.default.yml @@ -7,12 +7,13 @@ dependencies: - field.field.node.custom_page.field_custom_page_logo - field.field.node.custom_page.field_paragraphs_body - field.field.node.custom_page.field_state + - field.field.node.custom_page.field_topic - field.field.node.custom_page.og_audience - node.type.custom_page module: - - entity_reference_revisions - field_group - file + - layout_paragraphs - link - template_suggestion - user @@ -53,7 +54,7 @@ content: weight: 51 region: content field_paragraphs_body: - type: entity_reference_revisions_entity_view + type: layout_paragraphs label: hidden settings: view_mode: default @@ -81,6 +82,7 @@ content: hidden: field_custom_page_logo: true field_state: true + field_topic: true flag_like_node: true langcode: true og_audience: true diff --git a/config/sync/core.entity_view_display.node.custom_page.view_mode_featured.yml b/config/sync/core.entity_view_display.node.custom_page.view_mode_featured.yml index 20956813161a491c6a01f2a1ed8184ed0a7fefe6..2fa2d4b9b35f94ee3af409a5b5ff3a8acad532c9 100644 --- a/config/sync/core.entity_view_display.node.custom_page.view_mode_featured.yml +++ b/config/sync/core.entity_view_display.node.custom_page.view_mode_featured.yml @@ -8,10 +8,11 @@ dependencies: - field.field.node.custom_page.field_custom_page_logo - field.field.node.custom_page.field_paragraphs_body - field.field.node.custom_page.field_state + - field.field.node.custom_page.field_topic - field.field.node.custom_page.og_audience - node.type.custom_page module: - - entity_reference_revisions + - layout_paragraphs - template_suggestion - user _core: @@ -22,7 +23,7 @@ bundle: custom_page mode: view_mode_featured content: field_paragraphs_body: - type: entity_reference_revisions_entity_view + type: layout_paragraphs label: hidden settings: view_mode: preview @@ -36,6 +37,7 @@ hidden: field_attachment: true field_custom_page_logo: true field_state: true + field_topic: true flag_like_node: true langcode: true links: true diff --git a/config/sync/core.entity_view_display.node.custom_page.view_mode_tile.yml b/config/sync/core.entity_view_display.node.custom_page.view_mode_tile.yml index efac6f138e66f74aa2bb08c51d89fd6acdc80db0..04da0fddb406c34782c12b9ed9896d0318ce1e92 100644 --- a/config/sync/core.entity_view_display.node.custom_page.view_mode_tile.yml +++ b/config/sync/core.entity_view_display.node.custom_page.view_mode_tile.yml @@ -8,13 +8,14 @@ dependencies: - field.field.node.custom_page.field_custom_page_logo - field.field.node.custom_page.field_paragraphs_body - field.field.node.custom_page.field_state + - field.field.node.custom_page.field_topic - field.field.node.custom_page.og_audience - node.type.custom_page - responsive_image.styles.tile module: - - entity_reference_revisions - field_delimiter - field_formatter_range + - joinup_core - responsive_image - template_suggestion - user @@ -31,17 +32,22 @@ content: settings: responsive_image_style: tile image_link: '' + image_loading: + attribute: eager third_party_settings: template_suggestion: template_suggestion: bare weight: 0 region: content field_paragraphs_body: - type: entity_reference_revisions_entity_view + type: filtered_entity_reference_bundles label: hidden settings: - view_mode: default + view_mode: tile link: '' + filtered_entity_bundles: + - simple_paragraph + - text third_party_settings: field_delimiter: delimiter: '' @@ -61,6 +67,7 @@ content: hidden: field_attachment: true field_state: true + field_topic: true langcode: true links: true og_audience: true diff --git a/config/sync/core.entity_view_display.node.custom_page.view_mode_tile_horizontal.yml b/config/sync/core.entity_view_display.node.custom_page.view_mode_tile_horizontal.yml index 0d7dfcca86c97a743559e9d28224aa1a108bc72c..20962bbcbe543b558687fa7cd1b2bcf63304fbd6 100644 --- a/config/sync/core.entity_view_display.node.custom_page.view_mode_tile_horizontal.yml +++ b/config/sync/core.entity_view_display.node.custom_page.view_mode_tile_horizontal.yml @@ -8,12 +8,13 @@ dependencies: - field.field.node.custom_page.field_custom_page_logo - field.field.node.custom_page.field_paragraphs_body - field.field.node.custom_page.field_state + - field.field.node.custom_page.field_topic - field.field.node.custom_page.og_audience - node.type.custom_page - responsive_image.styles.tile module: - - entity_reference_revisions - field_group + - joinup_core - layout_builder - responsive_image - template_suggestion @@ -53,18 +54,31 @@ content: settings: responsive_image_style: tile image_link: '' + image_loading: + attribute: eager third_party_settings: template_suggestion: template_suggestion: bare weight: 0 region: content field_paragraphs_body: - type: entity_reference_revisions_entity_view + type: filtered_entity_reference_bundles label: hidden settings: - view_mode: default + view_mode: tile link: '' - third_party_settings: { } + filtered_entity_bundles: + - simple_paragraph + - text + third_party_settings: + field_delimiter: + delimiter: '' + field_formatter_range: + order: 0 + limit: 0 + offset: 0 + template_suggestion: + template_suggestion: '' weight: 1 region: content flag_like_node: @@ -75,6 +89,7 @@ content: hidden: field_attachment: true field_state: true + field_topic: true langcode: true links: true og_audience: true diff --git a/config/sync/core.entity_view_display.node.discussion.digest_message.yml b/config/sync/core.entity_view_display.node.discussion.digest_message.yml index c7a34316d858bea7fc6c41ad9346d62bbaa16ff1..87570a6d5e91302f7c22a4955c3ddef4d5c3c8f3 100644 --- a/config/sync/core.entity_view_display.node.discussion.digest_message.yml +++ b/config/sync/core.entity_view_display.node.discussion.digest_message.yml @@ -36,9 +36,13 @@ content: trim_suffix: '' wrap_output: false wrap_class: trimmed - more_link: false - more_class: more-link - more_text: More + more: + display_link: false + target_blank: false + link_trim_only: false + class: more-link + text: More + aria_label: 'Read more about [node:title]' summary_handler: full trim_options: text: true diff --git a/config/sync/core.entity_view_display.node.discussion.moderation.yml b/config/sync/core.entity_view_display.node.discussion.moderation.yml index 99887801466957ed2fa4628b501b592cdbdae506..2bf3af777d68f307a006a7dbe16cddb3019f1409 100644 --- a/config/sync/core.entity_view_display.node.discussion.moderation.yml +++ b/config/sync/core.entity_view_display.node.discussion.moderation.yml @@ -36,9 +36,13 @@ content: trim_suffix: … wrap_output: false wrap_class: trimmed - more_link: false - more_class: more-link - more_text: More + more: + display_link: false + target_blank: false + link_trim_only: false + class: more-link + text: More + aria_label: 'Read more about [node:title]' summary_handler: trim trim_options: text: false diff --git a/config/sync/core.entity_view_display.node.discussion.view_mode_featured.yml b/config/sync/core.entity_view_display.node.discussion.view_mode_featured.yml index c6f845cf5146ac618a513d7d7454486fe7b45fc0..336cee94acc774c4db6eac1515dd8d0f4ec9b5b8 100644 --- a/config/sync/core.entity_view_display.node.discussion.view_mode_featured.yml +++ b/config/sync/core.entity_view_display.node.discussion.view_mode_featured.yml @@ -37,9 +37,13 @@ content: trim_suffix: … wrap_output: false wrap_class: trimmed - more_link: false - more_class: more-link - more_text: More + more: + display_link: false + target_blank: false + link_trim_only: false + class: more-link + text: More + aria_label: 'Read more about [node:title]' summary_handler: trim trim_options: text: false diff --git a/config/sync/core.entity_view_display.node.discussion.view_mode_tile.yml b/config/sync/core.entity_view_display.node.discussion.view_mode_tile.yml index 43d1c969eee73ef755d99bd601dae09f203f54f2..16aa5430f0bd69d9334a7f7b1dc0dd195212bb15 100644 --- a/config/sync/core.entity_view_display.node.discussion.view_mode_tile.yml +++ b/config/sync/core.entity_view_display.node.discussion.view_mode_tile.yml @@ -17,9 +17,9 @@ dependencies: - node.type.discussion - responsive_image.styles.tile module: + - joinup_html_stripper - responsive_image - template_suggestion - - text - user _core: default_config_hash: SmfpRbn-HQzP1J11ggSWaNej9LobsgmxhSWXz2MODxU @@ -29,9 +29,10 @@ bundle: discussion mode: view_mode_tile content: body: - type: text_default + type: joinup_html_stripper_stripped label: hidden - settings: { } + settings: + trim_length: 600 third_party_settings: template_suggestion: template_suggestion: bare @@ -43,6 +44,8 @@ content: settings: responsive_image_style: tile image_link: '' + image_loading: + attribute: eager third_party_settings: template_suggestion: template_suggestion: bare diff --git a/config/sync/core.entity_view_display.node.discussion.view_mode_tile_horizontal.yml b/config/sync/core.entity_view_display.node.discussion.view_mode_tile_horizontal.yml index bd6245b37d608af58509e5cf60a779ecb2ff7ea7..69e3ec799eec90bb2a90feeb02b274c672a61568 100644 --- a/config/sync/core.entity_view_display.node.discussion.view_mode_tile_horizontal.yml +++ b/config/sync/core.entity_view_display.node.discussion.view_mode_tile_horizontal.yml @@ -17,10 +17,10 @@ dependencies: - node.type.discussion - responsive_image.styles.tile module: + - joinup_html_stripper - layout_builder - responsive_image - template_suggestion - - text - user third_party_settings: layout_builder: @@ -34,9 +34,10 @@ bundle: discussion mode: view_mode_tile_horizontal content: body: - type: text_default + type: joinup_html_stripper_stripped label: hidden - settings: { } + settings: + trim_length: 600 third_party_settings: template_suggestion: template_suggestion: bare @@ -48,6 +49,8 @@ content: settings: responsive_image_style: tile image_link: '' + image_loading: + attribute: eager third_party_settings: template_suggestion: template_suggestion: bare diff --git a/config/sync/core.entity_view_display.node.document.carousel.yml b/config/sync/core.entity_view_display.node.document.carousel.yml index 92b5bf6cd5e16129c8e57e52539bcf2a610badb5..e40004497a2170c7d211b04a53f5bba22c72630f 100644 --- a/config/sync/core.entity_view_display.node.document.carousel.yml +++ b/config/sync/core.entity_view_display.node.document.carousel.yml @@ -20,7 +20,7 @@ dependencies: - field.field.node.document.field_type - field.field.node.document.og_audience - node.type.document - - responsive_image.styles.iop_carousel + - responsive_image.styles.tile module: - field_group - layout_builder @@ -88,6 +88,8 @@ content: settings: responsive_image_style: tile image_link: '' + image_loading: + attribute: eager third_party_settings: template_suggestion: template_suggestion: bare diff --git a/config/sync/core.entity_view_display.node.document.digest_message.yml b/config/sync/core.entity_view_display.node.document.digest_message.yml index 71973dd7ebca95f926ac57f333c17685c86e1dc7..f136f2a95ca6fa223765c05506f348517c700802 100644 --- a/config/sync/core.entity_view_display.node.document.digest_message.yml +++ b/config/sync/core.entity_view_display.node.document.digest_message.yml @@ -42,9 +42,13 @@ content: trim_suffix: … wrap_output: false wrap_class: trimmed - more_link: false - more_class: more-link - more_text: More + more: + display_link: false + target_blank: false + link_trim_only: false + class: more-link + text: More + aria_label: 'Read more about [node:title]' summary_handler: full trim_options: text: true diff --git a/config/sync/core.entity_view_display.node.document.highlighted.yml b/config/sync/core.entity_view_display.node.document.highlighted.yml index dcfe61b73c90d6cc1691807c4ef7a6d07dca24d4..d05a031e88d3c5cedaadc7410b74337e35a16232 100644 --- a/config/sync/core.entity_view_display.node.document.highlighted.yml +++ b/config/sync/core.entity_view_display.node.document.highlighted.yml @@ -93,6 +93,8 @@ content: settings: responsive_image_style: highlighted_content image_link: '' + image_loading: + attribute: eager third_party_settings: template_suggestion: template_suggestion: '' diff --git a/config/sync/core.entity_view_display.node.document.moderation.yml b/config/sync/core.entity_view_display.node.document.moderation.yml index a3ed7efe704399d164beae1b25804a902a27302b..fea9289f49979b64722f6005898a31610b5917c9 100644 --- a/config/sync/core.entity_view_display.node.document.moderation.yml +++ b/config/sync/core.entity_view_display.node.document.moderation.yml @@ -41,9 +41,13 @@ content: trim_suffix: … wrap_output: false wrap_class: trimmed - more_link: false - more_class: more-link - more_text: More + more: + display_link: false + target_blank: false + link_trim_only: false + class: more-link + text: More + aria_label: 'Read more about [node:title]' summary_handler: trim trim_options: text: false diff --git a/config/sync/core.entity_view_display.node.document.view_mode_featured.yml b/config/sync/core.entity_view_display.node.document.view_mode_featured.yml index f177b5faffcb84eb544ecd5ec7b335cd5fc4859c..101d46e6fd40a34c6863f0aab1c282c21d85b9c2 100644 --- a/config/sync/core.entity_view_display.node.document.view_mode_featured.yml +++ b/config/sync/core.entity_view_display.node.document.view_mode_featured.yml @@ -42,9 +42,13 @@ content: trim_suffix: … wrap_output: false wrap_class: trimmed - more_link: false - more_class: more-link - more_text: More + more: + display_link: false + target_blank: false + link_trim_only: false + class: more-link + text: More + aria_label: 'Read more about [node:title]' summary_handler: trim trim_options: text: false diff --git a/config/sync/core.entity_view_display.node.document.view_mode_tile.yml b/config/sync/core.entity_view_display.node.document.view_mode_tile.yml index 5de631a8c0f02b15865f18aa44a25078cfcd8a12..2fd74c1154712af75835ae11fd0dbe9eae23be43 100644 --- a/config/sync/core.entity_view_display.node.document.view_mode_tile.yml +++ b/config/sync/core.entity_view_display.node.document.view_mode_tile.yml @@ -22,9 +22,9 @@ dependencies: - node.type.document - responsive_image.styles.tile module: + - joinup_html_stripper - responsive_image - template_suggestion - - text - user _core: default_config_hash: W1EgrmzJHwU_f1cWpd48tTcGdhOt4gLbqLOmi0XtqfU @@ -34,9 +34,10 @@ bundle: document mode: view_mode_tile content: body: - type: text_default + type: joinup_html_stripper_stripped label: hidden - settings: { } + settings: + trim_length: 600 third_party_settings: template_suggestion: template_suggestion: bare @@ -48,6 +49,8 @@ content: settings: responsive_image_style: tile image_link: '' + image_loading: + attribute: eager third_party_settings: template_suggestion: template_suggestion: '' diff --git a/config/sync/core.entity_view_display.node.document.view_mode_tile_horizontal.yml b/config/sync/core.entity_view_display.node.document.view_mode_tile_horizontal.yml index 30e6d1530669ef583a03c90fafcfdfbc9fbe2b7f..2cf7b01095f9de548a1a1e404f27dabe65046668 100644 --- a/config/sync/core.entity_view_display.node.document.view_mode_tile_horizontal.yml +++ b/config/sync/core.entity_view_display.node.document.view_mode_tile_horizontal.yml @@ -23,10 +23,10 @@ dependencies: - responsive_image.styles.tile module: - field_group + - joinup_html_stripper - layout_builder - responsive_image - template_suggestion - - text - user third_party_settings: field_group: @@ -76,9 +76,10 @@ bundle: document mode: view_mode_tile_horizontal content: body: - type: text_default + type: joinup_html_stripper_stripped label: hidden - settings: { } + settings: + trim_length: 600 third_party_settings: template_suggestion: template_suggestion: bare @@ -90,6 +91,8 @@ content: settings: responsive_image_style: tile image_link: '' + image_loading: + attribute: eager third_party_settings: template_suggestion: template_suggestion: bare diff --git a/config/sync/core.entity_view_display.node.event.carousel.yml b/config/sync/core.entity_view_display.node.event.carousel.yml index 88c035ab59bca124da8506e8266bce5b935b5178..53b4f48eb2b0fd51d94c64124426096952e2518a 100644 --- a/config/sync/core.entity_view_display.node.event.carousel.yml +++ b/config/sync/core.entity_view_display.node.event.carousel.yml @@ -27,7 +27,7 @@ dependencies: - field.field.node.event.field_topic - field.field.node.event.og_audience - node.type.event - - responsive_image.styles.iop_carousel + - responsive_image.styles.tile module: - datetime_range - layout_builder @@ -70,6 +70,8 @@ content: settings: responsive_image_style: tile image_link: '' + image_loading: + attribute: eager third_party_settings: template_suggestion: template_suggestion: '' diff --git a/config/sync/core.entity_view_display.node.event.digest_message.yml b/config/sync/core.entity_view_display.node.event.digest_message.yml index 425abba92906c5d4c591ecc36b61121c562a7dd9..be6c9212c431624e7bacb3ca4166ad061aba312f 100644 --- a/config/sync/core.entity_view_display.node.event.digest_message.yml +++ b/config/sync/core.entity_view_display.node.event.digest_message.yml @@ -47,9 +47,13 @@ content: trim_suffix: '' wrap_output: false wrap_class: trimmed - more_link: false - more_class: more-link - more_text: More + more: + display_link: false + target_blank: false + link_trim_only: false + class: more-link + text: More + aria_label: 'Read more about [node:title]' summary_handler: full trim_options: text: true 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 index 78693294969e211f35388552575b9096cdc6452c..14d9f010a9c55fad18eebc55551a4507f88af4df 100644 --- a/config/sync/core.entity_view_display.node.event.explore_item.yml +++ b/config/sync/core.entity_view_display.node.event.explore_item.yml @@ -163,6 +163,15 @@ content: 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: '' diff --git a/config/sync/core.entity_view_display.node.event.highlighted.yml b/config/sync/core.entity_view_display.node.event.highlighted.yml index c02153f76bcc2e57cb6bccc0b94a93fb68e8c154..f283c21894abdcef6988af1ef4f8ad8ea38db3b2 100644 --- a/config/sync/core.entity_view_display.node.event.highlighted.yml +++ b/config/sync/core.entity_view_display.node.event.highlighted.yml @@ -75,6 +75,8 @@ content: settings: responsive_image_style: highlighted_content image_link: '' + image_loading: + attribute: eager third_party_settings: template_suggestion: template_suggestion: '' diff --git a/config/sync/core.entity_view_display.node.event.moderation.yml b/config/sync/core.entity_view_display.node.event.moderation.yml index e72c52e1c10e3c38332ee8daacc993feb085632b..2c62c469db48fae82437d5dc98843ef0422a2dd4 100644 --- a/config/sync/core.entity_view_display.node.event.moderation.yml +++ b/config/sync/core.entity_view_display.node.event.moderation.yml @@ -46,9 +46,13 @@ content: trim_suffix: … wrap_output: false wrap_class: trimmed - more_link: false - more_class: more-link - more_text: More + more: + display_link: false + target_blank: false + link_trim_only: false + class: more-link + text: More + aria_label: 'Read more about [node:title]' summary_handler: trim trim_options: text: false diff --git a/config/sync/core.entity_view_display.node.event.view_mode_featured.yml b/config/sync/core.entity_view_display.node.event.view_mode_featured.yml index 02115d73d230364778948ab62b670d3e5906b4aa..e70f258ccf57464c8e88083267386f3376982c47 100644 --- a/config/sync/core.entity_view_display.node.event.view_mode_featured.yml +++ b/config/sync/core.entity_view_display.node.event.view_mode_featured.yml @@ -48,9 +48,13 @@ content: trim_suffix: … wrap_output: false wrap_class: trimmed - more_link: false - more_class: more-link - more_text: More + more: + display_link: false + target_blank: false + link_trim_only: false + class: more-link + text: More + aria_label: 'Read more about [node:title]' summary_handler: trim trim_options: text: false diff --git a/config/sync/core.entity_view_display.node.event.view_mode_tile.yml b/config/sync/core.entity_view_display.node.event.view_mode_tile.yml index 046e19c1bbfa64c6893d4843df14c82b6fa7fd90..3a0ade5121ab9d9aab5cf78aa86b0f9afd6489b7 100644 --- a/config/sync/core.entity_view_display.node.event.view_mode_tile.yml +++ b/config/sync/core.entity_view_display.node.event.view_mode_tile.yml @@ -30,9 +30,9 @@ dependencies: - responsive_image.styles.tile module: - datetime_range + - joinup_html_stripper - responsive_image - template_suggestion - - text - user id: node.event.view_mode_tile targetEntityType: node @@ -40,9 +40,10 @@ bundle: event mode: view_mode_tile content: body: - type: text_default + type: joinup_html_stripper_stripped label: hidden - settings: { } + settings: + trim_length: 600 third_party_settings: template_suggestion: template_suggestion: bare @@ -67,6 +68,8 @@ content: settings: responsive_image_style: tile image_link: '' + image_loading: + attribute: eager third_party_settings: template_suggestion: template_suggestion: bare diff --git a/config/sync/core.entity_view_display.node.event.view_mode_tile_horizontal.yml b/config/sync/core.entity_view_display.node.event.view_mode_tile_horizontal.yml index bdac87508ec75d45b5e565a04a74ff7ae4f08684..be8e9c670200f67244a83a28dc6b05a7faa881dd 100644 --- a/config/sync/core.entity_view_display.node.event.view_mode_tile_horizontal.yml +++ b/config/sync/core.entity_view_display.node.event.view_mode_tile_horizontal.yml @@ -30,10 +30,10 @@ dependencies: - responsive_image.styles.tile module: - datetime_range + - joinup_html_stripper - layout_builder - responsive_image - template_suggestion - - text - user third_party_settings: layout_builder: @@ -45,9 +45,10 @@ bundle: event mode: view_mode_tile_horizontal content: body: - type: text_default + type: joinup_html_stripper_stripped label: hidden - settings: { } + settings: + trim_length: 600 third_party_settings: template_suggestion: template_suggestion: bare @@ -72,6 +73,8 @@ content: settings: responsive_image_style: tile image_link: '' + image_loading: + attribute: eager third_party_settings: template_suggestion: template_suggestion: bare diff --git a/config/sync/core.entity_view_display.node.news.carousel.yml b/config/sync/core.entity_view_display.node.news.carousel.yml index 78d02443bd39da1af52dd40f3d1b813439814762..65d3888b0ce7f7dd10b191c424cdab04e025b15d 100644 --- a/config/sync/core.entity_view_display.node.news.carousel.yml +++ b/config/sync/core.entity_view_display.node.news.carousel.yml @@ -20,7 +20,7 @@ dependencies: - field.field.node.news.field_topic - field.field.node.news.og_audience - node.type.news - - responsive_image.styles.iop_carousel + - responsive_image.styles.tile module: - comment - field_group @@ -100,6 +100,8 @@ content: settings: responsive_image_style: tile image_link: '' + image_loading: + attribute: eager third_party_settings: template_suggestion: template_suggestion: '' diff --git a/config/sync/core.entity_view_display.node.news.digest_message.yml b/config/sync/core.entity_view_display.node.news.digest_message.yml index 74b1af184e85c48501d81ddc66d792f6a0666533..ec3c1a345191ef90b6375a8b0e704fd77f41743f 100644 --- a/config/sync/core.entity_view_display.node.news.digest_message.yml +++ b/config/sync/core.entity_view_display.node.news.digest_message.yml @@ -38,9 +38,13 @@ content: trim_suffix: '' wrap_output: false wrap_class: trimmed - more_link: false - more_class: more-link - more_text: More + more: + display_link: false + target_blank: false + link_trim_only: false + class: more-link + text: More + aria_label: 'Read more about [node:title]' summary_handler: full trim_options: text: 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 index 8d439dbae264ff35db3ed15e8cae721d7be13bae..1907fb48ade3632ff528586bbce349fbed103462 100644 --- a/config/sync/core.entity_view_display.node.news.explore_item.yml +++ b/config/sync/core.entity_view_display.node.news.explore_item.yml @@ -70,6 +70,15 @@ third_party_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: '' @@ -165,6 +174,15 @@ content: 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: '' diff --git a/config/sync/core.entity_view_display.node.news.highlighted.yml b/config/sync/core.entity_view_display.node.news.highlighted.yml index d752039f98d80f9853db3d1b61a35f1c56658e63..937985df7ab3ec39f93f4a26195d8069f918188f 100644 --- a/config/sync/core.entity_view_display.node.news.highlighted.yml +++ b/config/sync/core.entity_view_display.node.news.highlighted.yml @@ -72,6 +72,8 @@ content: settings: responsive_image_style: highlighted_content image_link: content + image_loading: + attribute: eager third_party_settings: template_suggestion: template_suggestion: '' diff --git a/config/sync/core.entity_view_display.node.news.moderation.yml b/config/sync/core.entity_view_display.node.news.moderation.yml index 4892b4114d911062d2cc8a14aeb449b3f32dd8a5..458d764b346d383281c9847f138f663e27a9f398 100644 --- a/config/sync/core.entity_view_display.node.news.moderation.yml +++ b/config/sync/core.entity_view_display.node.news.moderation.yml @@ -40,9 +40,13 @@ content: trim_suffix: … wrap_output: false wrap_class: trimmed - more_link: false - more_class: more-link - more_text: More + more: + display_link: false + target_blank: false + link_trim_only: false + class: more-link + text: More + aria_label: 'Read more about [node:title]' summary_handler: trim trim_options: text: false diff --git a/config/sync/core.entity_view_display.node.news.view_mode_featured.yml b/config/sync/core.entity_view_display.node.news.view_mode_featured.yml index c6cefe26a1541467d67cb93be2ff6368a82623f2..b2defabeb6b2e2e80c9601aae649c50c241563d7 100644 --- a/config/sync/core.entity_view_display.node.news.view_mode_featured.yml +++ b/config/sync/core.entity_view_display.node.news.view_mode_featured.yml @@ -39,9 +39,13 @@ content: trim_suffix: … wrap_output: false wrap_class: trimmed - more_link: false - more_class: more-link - more_text: More + more: + display_link: false + target_blank: false + link_trim_only: false + class: more-link + text: More + aria_label: 'Read more about [node:title]' summary_handler: trim trim_options: text: false diff --git a/config/sync/core.entity_view_display.node.news.view_mode_tile.yml b/config/sync/core.entity_view_display.node.news.view_mode_tile.yml index d341ac7647f3966dbc802cff5bcfbcb54b0df077..926a2b6efabc87839ad7a67299de8a9b5492df48 100644 --- a/config/sync/core.entity_view_display.node.news.view_mode_tile.yml +++ b/config/sync/core.entity_view_display.node.news.view_mode_tile.yml @@ -21,9 +21,9 @@ dependencies: - node.type.news - responsive_image.styles.tile module: + - joinup_html_stripper - responsive_image - template_suggestion - - text - user id: node.news.view_mode_tile targetEntityType: node @@ -31,9 +31,10 @@ bundle: news mode: view_mode_tile content: body: - type: text_default + type: joinup_html_stripper_stripped label: hidden - settings: { } + settings: + trim_length: 600 third_party_settings: template_suggestion: template_suggestion: bare @@ -45,6 +46,8 @@ content: settings: responsive_image_style: tile image_link: '' + image_loading: + attribute: eager third_party_settings: template_suggestion: template_suggestion: bare diff --git a/config/sync/core.entity_view_display.node.news.view_mode_tile_horizontal.yml b/config/sync/core.entity_view_display.node.news.view_mode_tile_horizontal.yml index ceee05f7df8875eb720ac335fbab9b52771768c2..aa4de94442deae2f501c1629be415c0e2eaf3a54 100644 --- a/config/sync/core.entity_view_display.node.news.view_mode_tile_horizontal.yml +++ b/config/sync/core.entity_view_display.node.news.view_mode_tile_horizontal.yml @@ -22,10 +22,10 @@ dependencies: - responsive_image.styles.tile module: - field_group + - joinup_html_stripper - layout_builder - responsive_image - template_suggestion - - text - user third_party_settings: field_group: @@ -55,9 +55,10 @@ bundle: news mode: view_mode_tile_horizontal content: body: - type: text_default + type: joinup_html_stripper_stripped label: hidden - settings: { } + settings: + trim_length: 600 third_party_settings: template_suggestion: template_suggestion: bare @@ -69,6 +70,8 @@ content: settings: responsive_image_style: tile image_link: '' + image_loading: + attribute: eager third_party_settings: template_suggestion: template_suggestion: bare diff --git a/config/sync/core.entity_view_display.node.video.view_mode_featured.yml b/config/sync/core.entity_view_display.node.video.view_mode_featured.yml index b35f7b44aa75085345d9a30c1a4b9cb499f7b8c9..f98016c3d51b272384883d321bb9c39f4fa5b2bf 100644 --- a/config/sync/core.entity_view_display.node.video.view_mode_featured.yml +++ b/config/sync/core.entity_view_display.node.video.view_mode_featured.yml @@ -31,9 +31,13 @@ content: trim_suffix: … wrap_output: false wrap_class: trimmed - more_link: false - more_class: more-link - more_text: More + more: + display_link: false + target_blank: false + link_trim_only: false + class: more-link + text: More + aria_label: 'Read more about [node:title]' summary_handler: trim trim_options: text: false diff --git a/config/sync/core.entity_view_display.paragraph.accordion_item.preview.yml b/config/sync/core.entity_view_display.paragraph.accordion_item.preview.yml deleted file mode 100644 index 7e83079156ac62add06aaead619079ec5daa8f38..0000000000000000000000000000000000000000 --- a/config/sync/core.entity_view_display.paragraph.accordion_item.preview.yml +++ /dev/null @@ -1,31 +0,0 @@ -uuid: 6564a8eb-39bb-4ff3-8022-23024e8ab53c -langcode: en -status: false -dependencies: - config: - - core.entity_view_mode.paragraph.preview - - field.field.paragraph.accordion_item.field_paragraphs_item_content - - field.field.paragraph.accordion_item.field_paragraphs_item_label - - paragraphs.paragraphs_type.accordion_item - module: - - layout_builder -third_party_settings: - layout_builder: - enabled: false - allow_custom: false -id: paragraph.accordion_item.preview -targetEntityType: paragraph -bundle: accordion_item -mode: preview -content: - field_paragraphs_item_label: - type: string - label: hidden - settings: - link_to_entity: false - third_party_settings: { } - weight: 0 - region: content -hidden: - field_paragraphs_item_content: true - search_api_excerpt: true diff --git a/config/sync/core.entity_view_display.paragraph.call_to_action.default.yml b/config/sync/core.entity_view_display.paragraph.call_to_action.default.yml index 1aaf0361e17c40723d74ab5d17dd4919dc55b19e..c4a3cc4a3943ed1496e6ee2388d0da1bb3caa6fe 100644 --- a/config/sync/core.entity_view_display.paragraph.call_to_action.default.yml +++ b/config/sync/core.entity_view_display.paragraph.call_to_action.default.yml @@ -14,7 +14,7 @@ mode: default content: paragraph_action_link: type: link - label: above + label: hidden settings: trim_length: 80 url_only: false diff --git a/config/sync/core.entity_view_display.paragraph.carousel.preview.yml b/config/sync/core.entity_view_display.paragraph.carousel.preview.yml deleted file mode 100644 index 278cc0d05ad652273f951b20fa7cb6747db793e3..0000000000000000000000000000000000000000 --- a/config/sync/core.entity_view_display.paragraph.carousel.preview.yml +++ /dev/null @@ -1,26 +0,0 @@ -uuid: 5b05f63e-55e5-429c-8ee5-a38566f3c86a -langcode: en -status: true -dependencies: - config: - - core.entity_view_mode.paragraph.preview - - field.field.paragraph.carousel.content_listing - - field.field.paragraph.carousel.paragraph_carousel_action - - field.field.paragraph.carousel.paragraph_heading - - paragraphs.paragraphs_type.carousel - module: - - layout_builder -third_party_settings: - layout_builder: - enabled: false - allow_custom: false -id: paragraph.carousel.preview -targetEntityType: paragraph -bundle: carousel -mode: preview -content: { } -hidden: - content_listing: true - paragraph_carousel_action: true - paragraph_heading: true - search_api_excerpt: true diff --git a/config/sync/core.entity_view_display.paragraph.content_listing.preview.yml b/config/sync/core.entity_view_display.paragraph.content_listing.preview.yml deleted file mode 100644 index 271cd24fb8ac6d06c91c6bb4f7dd64443137671d..0000000000000000000000000000000000000000 --- a/config/sync/core.entity_view_display.paragraph.content_listing.preview.yml +++ /dev/null @@ -1,23 +0,0 @@ -uuid: 3e5e8d6f-8ada-4113-bb8b-cf909ab4e9a6 -langcode: en -status: true -dependencies: - config: - - core.entity_view_mode.paragraph.preview - - field.field.paragraph.content_listing.content_listing - - paragraphs.paragraphs_type.content_listing - module: - - layout_builder -third_party_settings: - layout_builder: - enabled: false - allow_custom: false -id: paragraph.content_listing.preview -targetEntityType: paragraph -bundle: content_listing -mode: preview -content: { } -hidden: - content_listing: true - paragraph_content_listing_content_listing_top: true - search_api_excerpt: true diff --git a/config/sync/core.entity_view_display.paragraph.heading.default.yml b/config/sync/core.entity_view_display.paragraph.heading.default.yml new file mode 100644 index 0000000000000000000000000000000000000000..7d5f60f447633be8612ad929351d41b5aac74137 --- /dev/null +++ b/config/sync/core.entity_view_display.paragraph.heading.default.yml @@ -0,0 +1,26 @@ +uuid: 47e37d07-dea8-4bce-87e2-4b35e488ad71 +langcode: en +status: true +dependencies: + config: + - field.field.paragraph.heading.paragraph_heading + - paragraphs.paragraphs_type.heading + module: + - template_suggestion +id: paragraph.heading.default +targetEntityType: paragraph +bundle: heading +mode: default +content: + paragraph_heading: + type: string + label: hidden + settings: + link_to_entity: false + third_party_settings: + template_suggestion: + template_suggestion: '' + weight: 0 + region: content +hidden: + search_api_excerpt: true diff --git a/config/sync/core.entity_view_display.paragraph.iframe.preview.yml b/config/sync/core.entity_view_display.paragraph.iframe.preview.yml deleted file mode 100644 index ed30332aad0235faa0d5b392a119ad5f4d36359d..0000000000000000000000000000000000000000 --- a/config/sync/core.entity_view_display.paragraph.iframe.preview.yml +++ /dev/null @@ -1,22 +0,0 @@ -uuid: 086b1e47-61b2-4321-8f80-30d9b2ca9f72 -langcode: en -status: true -dependencies: - config: - - core.entity_view_mode.paragraph.preview - - field.field.paragraph.iframe.field_iframe - - paragraphs.paragraphs_type.iframe - module: - - layout_builder -third_party_settings: - layout_builder: - enabled: false - allow_custom: false -id: paragraph.iframe.preview -targetEntityType: paragraph -bundle: iframe -mode: preview -content: { } -hidden: - field_iframe: true - search_api_excerpt: true diff --git a/config/sync/core.entity_view_display.paragraph.json_map.preview.yml b/config/sync/core.entity_view_display.paragraph.json_map.preview.yml deleted file mode 100644 index 27058702216d97805dc320f8d1748cdd7848b96d..0000000000000000000000000000000000000000 --- a/config/sync/core.entity_view_display.paragraph.json_map.preview.yml +++ /dev/null @@ -1,22 +0,0 @@ -uuid: d54814da-8ff0-4982-8878-1e7b066a747d -langcode: en -status: true -dependencies: - config: - - core.entity_view_mode.paragraph.preview - - field.field.paragraph.json_map.field_json - - paragraphs.paragraphs_type.json_map - module: - - layout_builder -third_party_settings: - layout_builder: - enabled: false - allow_custom: false -id: paragraph.json_map.preview -targetEntityType: paragraph -bundle: json_map -mode: preview -content: { } -hidden: - field_json: true - search_api_excerpt: true diff --git a/config/sync/core.entity_view_display.paragraph.layout.default.yml b/config/sync/core.entity_view_display.paragraph.layout.default.yml new file mode 100644 index 0000000000000000000000000000000000000000..3a9ac7850796d7a8fb66109dd53ba8ad2c4bf551 --- /dev/null +++ b/config/sync/core.entity_view_display.paragraph.layout.default.yml @@ -0,0 +1,13 @@ +uuid: f8fa91ea-91a4-43fa-a39d-ca540a21fa9e +langcode: en +status: true +dependencies: + config: + - paragraphs.paragraphs_type.layout +id: paragraph.layout.default +targetEntityType: paragraph +bundle: layout +mode: default +content: { } +hidden: + search_api_excerpt: true diff --git a/config/sync/core.entity_view_display.paragraph.poll.default.yml b/config/sync/core.entity_view_display.paragraph.poll.default.yml new file mode 100644 index 0000000000000000000000000000000000000000..8e875099aa02097492f206b3d0fa245cf515ffed --- /dev/null +++ b/config/sync/core.entity_view_display.paragraph.poll.default.yml @@ -0,0 +1,27 @@ +uuid: 6c99edb2-df71-47c1-b691-ae44a365fafd +langcode: en +status: true +dependencies: + config: + - field.field.paragraph.poll.field_paragraphs_poll + - paragraphs.paragraphs_type.poll + module: + - template_suggestion +id: paragraph.poll.default +targetEntityType: paragraph +bundle: poll +mode: default +content: + field_paragraphs_poll: + type: entity_reference_entity_view + label: hidden + settings: + view_mode: default + link: false + third_party_settings: + template_suggestion: + template_suggestion: '' + weight: 0 + region: content +hidden: + search_api_excerpt: true diff --git a/config/sync/core.entity_view_display.paragraph.accordion.preview.yml b/config/sync/core.entity_view_display.paragraph.poll.preview.yml similarity index 50% rename from config/sync/core.entity_view_display.paragraph.accordion.preview.yml rename to config/sync/core.entity_view_display.paragraph.poll.preview.yml index 4dbe228cda215fa6c0fe58291c142edea2d9f9c1..34a80797d0265c2e733d20c030b02ea3ddc79239 100644 --- a/config/sync/core.entity_view_display.paragraph.accordion.preview.yml +++ b/config/sync/core.entity_view_display.paragraph.poll.preview.yml @@ -1,37 +1,29 @@ -uuid: 44e36701-c54e-4731-a8bb-fd94bcda0785 +uuid: 58313396-5aa0-4c7a-b525-7658bb13cd1e langcode: en status: true dependencies: config: - core.entity_view_mode.paragraph.preview - - field.field.paragraph.accordion.field_accordion_item - - paragraphs.paragraphs_type.accordion + - field.field.paragraph.poll.field_paragraphs_poll + - paragraphs.paragraphs_type.poll module: - - field_delimiter - - field_formatter_range - layout_builder - - paragraphs - template_suggestion third_party_settings: layout_builder: enabled: false allow_custom: false -id: paragraph.accordion.preview +id: paragraph.poll.preview targetEntityType: paragraph -bundle: accordion +bundle: poll mode: preview content: - field_accordion_item: - type: paragraph_summary + field_paragraphs_poll: + type: entity_reference_label label: hidden - settings: { } + settings: + link: false third_party_settings: - field_delimiter: - delimiter: '' - field_formatter_range: - order: 0 - limit: 3 - offset: 0 template_suggestion: template_suggestion: '' weight: 0 diff --git a/config/sync/core.entity_view_display.paragraph.quote.default.yml b/config/sync/core.entity_view_display.paragraph.quote.default.yml new file mode 100644 index 0000000000000000000000000000000000000000..ec43f02bcfff1baa2d4913dd5a8daf2287ec1bde --- /dev/null +++ b/config/sync/core.entity_view_display.paragraph.quote.default.yml @@ -0,0 +1,21 @@ +uuid: fcceb7e5-0019-4bc5-9d42-6d33c2b05091 +langcode: en +status: true +dependencies: + config: + - field.field.paragraph.quote.paragraph_quote + - paragraphs.paragraphs_type.quote +id: paragraph.quote.default +targetEntityType: paragraph +bundle: quote +mode: default +content: + paragraph_quote: + type: basic_string + label: hidden + settings: { } + third_party_settings: { } + weight: 0 + region: content +hidden: + search_api_excerpt: true diff --git a/config/sync/core.entity_view_display.paragraph.simple_paragraph.preview.yml b/config/sync/core.entity_view_display.paragraph.simple_paragraph.preview.yml deleted file mode 100644 index 12f32e9806fbd8db6a9a7d0c6803315b6484a3a8..0000000000000000000000000000000000000000 --- a/config/sync/core.entity_view_display.paragraph.simple_paragraph.preview.yml +++ /dev/null @@ -1,39 +0,0 @@ -uuid: 224a5907-111b-4302-95b6-35da0f77efa5 -langcode: en -status: true -dependencies: - config: - - core.entity_view_mode.paragraph.preview - - field.field.paragraph.simple_paragraph.field_body - - paragraphs.paragraphs_type.simple_paragraph - module: - - smart_trim - - template_suggestion -id: paragraph.simple_paragraph.preview -targetEntityType: paragraph -bundle: simple_paragraph -mode: preview -content: - field_body: - type: smart_trim - label: above - settings: - trim_length: 200 - trim_type: chars - trim_suffix: … - wrap_output: false - wrap_class: trimmed - more_link: false - more_class: more-link - more_text: More - summary_handler: full - trim_options: - text: true - trim_zero: false - third_party_settings: - template_suggestion: - template_suggestion: '' - weight: 0 - region: content -hidden: - search_api_excerpt: true diff --git a/config/sync/core.entity_view_display.paragraph.simple_paragraph.tile.yml b/config/sync/core.entity_view_display.paragraph.simple_paragraph.tile.yml new file mode 100644 index 0000000000000000000000000000000000000000..00657a4f960a0cd984c6f5084689fd33077795b1 --- /dev/null +++ b/config/sync/core.entity_view_display.paragraph.simple_paragraph.tile.yml @@ -0,0 +1,30 @@ +uuid: 692433ea-6174-4d1a-b6c9-74c75b086fa6 +langcode: en +status: true +dependencies: + config: + - core.entity_view_mode.paragraph.tile + - field.field.paragraph.simple_paragraph.field_body + - paragraphs.paragraphs_type.simple_paragraph + module: + - joinup_html_stripper + - layout_builder +third_party_settings: + layout_builder: + enabled: false + allow_custom: false +id: paragraph.simple_paragraph.tile +targetEntityType: paragraph +bundle: simple_paragraph +mode: tile +content: + field_body: + type: joinup_html_stripper_stripped + label: hidden + settings: + trim_length: 600 + third_party_settings: { } + weight: 0 + region: content +hidden: + search_api_excerpt: true diff --git a/config/sync/core.entity_view_display.paragraph.text.default.yml b/config/sync/core.entity_view_display.paragraph.text.default.yml new file mode 100644 index 0000000000000000000000000000000000000000..11a08722349511fc139142afd3253aaa1478f21a --- /dev/null +++ b/config/sync/core.entity_view_display.paragraph.text.default.yml @@ -0,0 +1,23 @@ +uuid: 4af476e9-1ea4-4119-ad3a-bd756f8e4dcb +langcode: en +status: true +dependencies: + config: + - field.field.paragraph.text.field_body + - paragraphs.paragraphs_type.text + module: + - text +id: paragraph.text.default +targetEntityType: paragraph +bundle: text +mode: default +content: + field_body: + type: text_default + label: hidden + settings: { } + third_party_settings: { } + weight: 0 + region: content +hidden: + search_api_excerpt: true diff --git a/config/sync/core.entity_view_display.poll.poll.default.yml b/config/sync/core.entity_view_display.poll.poll.default.yml new file mode 100644 index 0000000000000000000000000000000000000000..c968b5ea72debac6ea5c5a7d38393622c69063cb --- /dev/null +++ b/config/sync/core.entity_view_display.poll.poll.default.yml @@ -0,0 +1,21 @@ +uuid: 8c029837-332b-4076-89de-0261668746ab +langcode: en +status: true +dependencies: + config: + - field.field.poll.poll.show_number_of_results + module: + - poll +id: poll.poll.default +targetEntityType: poll +bundle: poll +mode: default +content: + poll_votes: + settings: { } + third_party_settings: { } + weight: 0 + region: content +hidden: + search_api_excerpt: true + show_number_of_results: true diff --git a/config/sync/core.entity_view_display.rdf_entity.asset_distribution.digest_message.yml b/config/sync/core.entity_view_display.rdf_entity.asset_distribution.digest_message.yml index b1ef2460eb6427f08e9155786357049316f7f6d8..8de2d962a61dcb01ef453c94cbf5ec85ca9ca6be 100644 --- a/config/sync/core.entity_view_display.rdf_entity.asset_distribution.digest_message.yml +++ b/config/sync/core.entity_view_display.rdf_entity.asset_distribution.digest_message.yml @@ -54,6 +54,15 @@ content: date_format: date_only custom_date_format: '' 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: '' @@ -68,9 +77,13 @@ content: trim_suffix: … wrap_output: false wrap_class: trimmed - more_link: false - more_class: more-link - more_text: More + more: + display_link: false + target_blank: false + link_trim_only: false + class: more-link + text: More + aria_label: 'Read more about [node:title]' summary_handler: full trim_options: text: true diff --git a/config/sync/core.entity_view_display.rdf_entity.asset_release.compact.yml b/config/sync/core.entity_view_display.rdf_entity.asset_release.compact.yml index 79b537568d88b8602aaa92068ad863f88fb66af1..5d55f4e5354d9d4c54c576960cdf28bcf39f78b0 100644 --- a/config/sync/core.entity_view_display.rdf_entity.asset_release.compact.yml +++ b/config/sync/core.entity_view_display.rdf_entity.asset_release.compact.yml @@ -4,7 +4,6 @@ status: true dependencies: config: - core.entity_view_mode.rdf_entity.compact - - field.field.rdf_entity.asset_release.field_isr_banner - field.field.rdf_entity.asset_release.field_isr_contact_information - field.field.rdf_entity.asset_release.field_isr_description - field.field.rdf_entity.asset_release.field_isr_distribution @@ -21,9 +20,9 @@ dependencies: - field.field.rdf_entity.asset_release.field_isr_state - field.field.rdf_entity.asset_release.field_isr_translation - field.field.rdf_entity.asset_release.field_keywords - - field.field.rdf_entity.asset_release.field_topic - field.field.rdf_entity.asset_release.field_spatial_coverage - field.field.rdf_entity.asset_release.field_status + - field.field.rdf_entity.asset_release.field_topic - rdf_entity.rdfentity.asset_release module: - text @@ -194,7 +193,6 @@ content: hidden: changed: true created: true - field_isr_banner: true field_isr_contact_information: true field_isr_description: true field_isr_documentation: true diff --git a/config/sync/core.entity_view_display.rdf_entity.asset_release.default.yml b/config/sync/core.entity_view_display.rdf_entity.asset_release.default.yml index 4c3c83781fce1ad29ca82353257fcf098c6f3200..f5496e0864e50ed51ea1eba181ae9bf84a8d0de8 100644 --- a/config/sync/core.entity_view_display.rdf_entity.asset_release.default.yml +++ b/config/sync/core.entity_view_display.rdf_entity.asset_release.default.yml @@ -3,7 +3,6 @@ langcode: en status: true dependencies: config: - - field.field.rdf_entity.asset_release.field_isr_banner - field.field.rdf_entity.asset_release.field_isr_contact_information - field.field.rdf_entity.asset_release.field_isr_description - field.field.rdf_entity.asset_release.field_isr_distribution @@ -224,7 +223,6 @@ content: region: content hidden: changed: true - field_isr_banner: true field_isr_contact_information: true field_isr_description: true field_isr_included_asset: true diff --git a/config/sync/core.entity_view_display.rdf_entity.asset_release.digest_message.yml b/config/sync/core.entity_view_display.rdf_entity.asset_release.digest_message.yml index 28ad08d73ebf7dd4e53b84811cedf2ca63eeecf4..b679065a5950a842ab684d762433dc89bb5c8057 100644 --- a/config/sync/core.entity_view_display.rdf_entity.asset_release.digest_message.yml +++ b/config/sync/core.entity_view_display.rdf_entity.asset_release.digest_message.yml @@ -4,7 +4,6 @@ status: true dependencies: config: - core.entity_view_mode.rdf_entity.digest_message - - field.field.rdf_entity.asset_release.field_isr_banner - field.field.rdf_entity.asset_release.field_isr_contact_information - field.field.rdf_entity.asset_release.field_isr_description - field.field.rdf_entity.asset_release.field_isr_distribution @@ -43,6 +42,15 @@ content: date_format: date_only custom_date_format: '' 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: no_wrappers @@ -135,9 +143,13 @@ content: trim_suffix: … wrap_output: false wrap_class: trimmed - more_link: false - more_class: more-link - more_text: More + more: + display_link: false + target_blank: false + link_trim_only: false + class: more-link + text: More + aria_label: 'Read more about [node:title]' summary_handler: full trim_options: text: true @@ -213,7 +225,6 @@ content: region: content hidden: changed: true - field_isr_banner: true field_isr_contact_information: true field_isr_description: true field_isr_distribution: true diff --git a/config/sync/core.entity_view_display.rdf_entity.asset_release.view_mode_featured.yml b/config/sync/core.entity_view_display.rdf_entity.asset_release.view_mode_featured.yml index cea1d1fdb29bb09caf2b0f00795169825ce21ff5..613cd6942a2de95e19bf2bd85a33ed6dc23c804a 100644 --- a/config/sync/core.entity_view_display.rdf_entity.asset_release.view_mode_featured.yml +++ b/config/sync/core.entity_view_display.rdf_entity.asset_release.view_mode_featured.yml @@ -4,7 +4,6 @@ status: true dependencies: config: - core.entity_view_mode.rdf_entity.view_mode_featured - - field.field.rdf_entity.asset_release.field_isr_banner - field.field.rdf_entity.asset_release.field_isr_contact_information - field.field.rdf_entity.asset_release.field_isr_description - field.field.rdf_entity.asset_release.field_isr_distribution @@ -21,9 +20,9 @@ dependencies: - field.field.rdf_entity.asset_release.field_isr_state - field.field.rdf_entity.asset_release.field_isr_translation - field.field.rdf_entity.asset_release.field_keywords - - field.field.rdf_entity.asset_release.field_topic - field.field.rdf_entity.asset_release.field_spatial_coverage - field.field.rdf_entity.asset_release.field_status + - field.field.rdf_entity.asset_release.field_topic - rdf_entity.rdfentity.asset_release module: - template_suggestion @@ -42,6 +41,15 @@ content: date_format: date_only custom_date_format: '' 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: '' @@ -203,7 +211,6 @@ content: region: content hidden: changed: true - field_isr_banner: true field_isr_contact_information: true field_isr_description: true field_isr_distribution: true diff --git a/config/sync/core.entity_view_display.rdf_entity.asset_release.view_mode_tile.yml b/config/sync/core.entity_view_display.rdf_entity.asset_release.view_mode_tile.yml index b5907ef7b34b57bca2e5e3635993a293b85d4d40..b60fb2c48ae58000c03c282985ef7588da6eb232 100644 --- a/config/sync/core.entity_view_display.rdf_entity.asset_release.view_mode_tile.yml +++ b/config/sync/core.entity_view_display.rdf_entity.asset_release.view_mode_tile.yml @@ -4,7 +4,6 @@ status: true dependencies: config: - core.entity_view_mode.rdf_entity.view_mode_tile - - field.field.rdf_entity.asset_release.field_isr_banner - field.field.rdf_entity.asset_release.field_isr_contact_information - field.field.rdf_entity.asset_release.field_isr_description - field.field.rdf_entity.asset_release.field_isr_distribution @@ -26,8 +25,8 @@ dependencies: - field.field.rdf_entity.asset_release.field_topic - rdf_entity.rdfentity.asset_release module: + - joinup_html_stripper - template_suggestion - - text - user _core: default_config_hash: woWqefcHqVQ29NS3Vdac5roSq8uEXNbtNmgY9FJij_s @@ -115,9 +114,10 @@ content: weight: 2 region: content field_isr_release_notes: - type: text_default + type: joinup_html_stripper_stripped label: hidden - settings: { } + settings: + trim_length: 600 third_party_settings: template_suggestion: template_suggestion: bare @@ -190,7 +190,6 @@ content: hidden: changed: true created: true - field_isr_banner: true field_isr_contact_information: true field_isr_description: true field_isr_distribution: true diff --git a/config/sync/core.entity_view_display.rdf_entity.asset_release.view_mode_tile_horizontal.yml b/config/sync/core.entity_view_display.rdf_entity.asset_release.view_mode_tile_horizontal.yml index a5ffc3011c85bfbe5adb3f800e77806390c954d1..f8c06c6094b595789d0a565ac44c002f352e8e1f 100644 --- a/config/sync/core.entity_view_display.rdf_entity.asset_release.view_mode_tile_horizontal.yml +++ b/config/sync/core.entity_view_display.rdf_entity.asset_release.view_mode_tile_horizontal.yml @@ -4,7 +4,6 @@ status: true dependencies: config: - core.entity_view_mode.rdf_entity.view_mode_tile_horizontal - - field.field.rdf_entity.asset_release.field_isr_banner - field.field.rdf_entity.asset_release.field_isr_contact_information - field.field.rdf_entity.asset_release.field_isr_description - field.field.rdf_entity.asset_release.field_isr_distribution @@ -26,9 +25,9 @@ dependencies: - field.field.rdf_entity.asset_release.field_topic - rdf_entity.rdfentity.asset_release module: + - joinup_html_stripper - layout_builder - template_suggestion - - text - user third_party_settings: layout_builder: @@ -120,9 +119,10 @@ content: weight: 2 region: content field_isr_release_notes: - type: text_default + type: joinup_html_stripper_stripped label: hidden - settings: { } + settings: + trim_length: 600 third_party_settings: template_suggestion: template_suggestion: bare @@ -197,7 +197,6 @@ content: hidden: changed: true created: true - field_isr_banner: true field_isr_contact_information: true field_isr_description: true field_isr_distribution: true diff --git a/config/sync/core.entity_view_display.rdf_entity.collection.about.yml b/config/sync/core.entity_view_display.rdf_entity.collection.about.yml index 312741aa71156baa7d230ddfaf408f6553c39e21..7b6ffeaaef2d4e098592b4697daf493501e62820 100644 --- a/config/sync/core.entity_view_display.rdf_entity.collection.about.yml +++ b/config/sync/core.entity_view_display.rdf_entity.collection.about.yml @@ -7,7 +7,6 @@ dependencies: - field.field.rdf_entity.collection.field_ar_abstract - field.field.rdf_entity.collection.field_ar_access_url - field.field.rdf_entity.collection.field_ar_affiliates - - field.field.rdf_entity.collection.field_ar_banner - field.field.rdf_entity.collection.field_ar_closed - field.field.rdf_entity.collection.field_ar_contact_information - field.field.rdf_entity.collection.field_ar_content_creation @@ -189,7 +188,6 @@ hidden: created: true featured: true field_ar_affiliates: true - field_ar_banner: true field_ar_logo: true field_ar_state: true field_collection_content: true diff --git a/config/sync/core.entity_view_display.rdf_entity.collection.carousel.yml b/config/sync/core.entity_view_display.rdf_entity.collection.carousel.yml index 23b0c216df27f284a9aba38df7300b189fb7c22e..2e0fe1128d64fc50342d35a101367c78f0d9f232 100644 --- a/config/sync/core.entity_view_display.rdf_entity.collection.carousel.yml +++ b/config/sync/core.entity_view_display.rdf_entity.collection.carousel.yml @@ -7,7 +7,6 @@ dependencies: - field.field.rdf_entity.collection.field_ar_abstract - field.field.rdf_entity.collection.field_ar_access_url - field.field.rdf_entity.collection.field_ar_affiliates - - field.field.rdf_entity.collection.field_ar_banner - field.field.rdf_entity.collection.field_ar_closed - field.field.rdf_entity.collection.field_ar_contact_information - field.field.rdf_entity.collection.field_ar_content_creation @@ -76,6 +75,8 @@ content: settings: responsive_image_style: tile image_link: '' + image_loading: + attribute: eager third_party_settings: template_suggestion: template_suggestion: '' @@ -92,7 +93,6 @@ hidden: featured: true field_ar_access_url: true field_ar_affiliates: true - field_ar_banner: true field_ar_closed: true field_ar_contact_information: true field_ar_content_creation: true diff --git a/config/sync/core.entity_view_display.rdf_entity.collection.compact.yml b/config/sync/core.entity_view_display.rdf_entity.collection.compact.yml index 3db002c2303c202db02182268f207a104ab2349c..b1aed9465df0bc86844cee8599600d933e032b8e 100644 --- a/config/sync/core.entity_view_display.rdf_entity.collection.compact.yml +++ b/config/sync/core.entity_view_display.rdf_entity.collection.compact.yml @@ -7,7 +7,6 @@ dependencies: - field.field.rdf_entity.collection.field_ar_abstract - field.field.rdf_entity.collection.field_ar_access_url - field.field.rdf_entity.collection.field_ar_affiliates - - field.field.rdf_entity.collection.field_ar_banner - field.field.rdf_entity.collection.field_ar_closed - field.field.rdf_entity.collection.field_ar_contact_information - field.field.rdf_entity.collection.field_ar_content_creation @@ -26,7 +25,7 @@ dependencies: - image.style.logo - rdf_entity.rdfentity.collection module: - - image + - svg_image - template_suggestion - user id: rdf_entity.collection.compact @@ -64,7 +63,6 @@ hidden: field_ar_abstract: true field_ar_access_url: true field_ar_affiliates: true - field_ar_banner: true field_ar_closed: true field_ar_contact_information: true field_ar_content_creation: true diff --git a/config/sync/core.entity_view_display.rdf_entity.collection.default.yml b/config/sync/core.entity_view_display.rdf_entity.collection.default.yml index 156bec264efd4d98d2e81392037ba6a352328b99..94d005d9fcf5a192bd1265d0171238796cf84b95 100644 --- a/config/sync/core.entity_view_display.rdf_entity.collection.default.yml +++ b/config/sync/core.entity_view_display.rdf_entity.collection.default.yml @@ -6,7 +6,6 @@ dependencies: - field.field.rdf_entity.collection.field_ar_abstract - field.field.rdf_entity.collection.field_ar_access_url - field.field.rdf_entity.collection.field_ar_affiliates - - field.field.rdf_entity.collection.field_ar_banner - field.field.rdf_entity.collection.field_ar_closed - field.field.rdf_entity.collection.field_ar_contact_information - field.field.rdf_entity.collection.field_ar_content_creation @@ -64,9 +63,13 @@ content: trim_suffix: … wrap_output: false wrap_class: trimmed - more_link: false - more_class: more-link - more_text: More + more: + display_link: false + target_blank: false + link_trim_only: false + class: more-link + text: More + aria_label: 'Read more about [node:title]' summary_handler: full trim_options: text: false @@ -85,9 +88,13 @@ content: trim_suffix: … wrap_output: false wrap_class: trimmed - more_link: false - more_class: more-link - more_text: More + more: + display_link: false + target_blank: false + link_trim_only: false + class: more-link + text: More + aria_label: 'Read more about [node:title]' summary_handler: full trim_options: text: true @@ -135,7 +142,6 @@ hidden: featured: true field_ar_access_url: true field_ar_affiliates: true - field_ar_banner: true field_ar_closed: true field_ar_contact_information: true field_ar_content_creation: true diff --git a/config/sync/core.entity_view_display.rdf_entity.collection.digest_message_header.yml b/config/sync/core.entity_view_display.rdf_entity.collection.digest_message_header.yml index d8bdb4fee6ba32b93f3d7c077c3652a4db1c6d72..e553ed9001576243f50d6e89dfc2ba305875ffa2 100644 --- a/config/sync/core.entity_view_display.rdf_entity.collection.digest_message_header.yml +++ b/config/sync/core.entity_view_display.rdf_entity.collection.digest_message_header.yml @@ -7,7 +7,6 @@ dependencies: - field.field.rdf_entity.collection.field_ar_abstract - field.field.rdf_entity.collection.field_ar_access_url - field.field.rdf_entity.collection.field_ar_affiliates - - field.field.rdf_entity.collection.field_ar_banner - field.field.rdf_entity.collection.field_ar_closed - field.field.rdf_entity.collection.field_ar_contact_information - field.field.rdf_entity.collection.field_ar_content_creation @@ -19,10 +18,10 @@ dependencies: - field.field.rdf_entity.collection.field_collection_content - field.field.rdf_entity.collection.field_keywords - field.field.rdf_entity.collection.field_newsletter - - field.field.rdf_entity.collection.field_topic - field.field.rdf_entity.collection.field_short_id - field.field.rdf_entity.collection.field_site_featured - field.field.rdf_entity.collection.field_spatial_coverage + - field.field.rdf_entity.collection.field_topic - rdf_entity.rdfentity.collection module: - template_suggestion @@ -49,7 +48,6 @@ hidden: field_ar_abstract: true field_ar_access_url: true field_ar_affiliates: true - field_ar_banner: true field_ar_closed: true field_ar_contact_information: true field_ar_content_creation: true diff --git a/config/sync/core.entity_view_display.rdf_entity.collection.explore_item.yml b/config/sync/core.entity_view_display.rdf_entity.collection.explore_item.yml index 4a4c4f64dbf05f5e9001e59c4c91baef4de08203..26287ba967e1163cd134e86534abc851d3ae5c15 100644 --- a/config/sync/core.entity_view_display.rdf_entity.collection.explore_item.yml +++ b/config/sync/core.entity_view_display.rdf_entity.collection.explore_item.yml @@ -7,7 +7,6 @@ dependencies: - field.field.rdf_entity.collection.field_ar_abstract - field.field.rdf_entity.collection.field_ar_access_url - field.field.rdf_entity.collection.field_ar_affiliates - - field.field.rdf_entity.collection.field_ar_banner - field.field.rdf_entity.collection.field_ar_closed - field.field.rdf_entity.collection.field_ar_contact_information - field.field.rdf_entity.collection.field_ar_content_creation @@ -116,6 +115,15 @@ third_party_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: '' @@ -160,6 +168,15 @@ content: date_format: medium custom_date_format: '' 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: { } weight: 2 region: content @@ -172,9 +189,13 @@ content: trim_suffix: … wrap_output: false wrap_class: trimmed - more_link: false - more_class: more-link - more_text: More + more: + display_link: false + target_blank: false + link_trim_only: false + class: more-link + text: More + aria_label: 'Read more about [node:title]' summary_handler: full trim_options: text: true @@ -203,7 +224,6 @@ hidden: field_ar_abstract: true field_ar_access_url: true field_ar_affiliates: true - field_ar_banner: true field_ar_closed: true field_ar_contact_information: true field_ar_content_creation: true diff --git a/config/sync/core.entity_view_display.rdf_entity.collection.group_header.yml b/config/sync/core.entity_view_display.rdf_entity.collection.group_header.yml index 470c4254b44b7bd70e9066a52e944b67dd0d3b26..5189319c5292eafc189b384ecef9aa4f0df8da37 100644 --- a/config/sync/core.entity_view_display.rdf_entity.collection.group_header.yml +++ b/config/sync/core.entity_view_display.rdf_entity.collection.group_header.yml @@ -7,7 +7,6 @@ dependencies: - field.field.rdf_entity.collection.field_ar_abstract - field.field.rdf_entity.collection.field_ar_access_url - field.field.rdf_entity.collection.field_ar_affiliates - - field.field.rdf_entity.collection.field_ar_banner - field.field.rdf_entity.collection.field_ar_closed - field.field.rdf_entity.collection.field_ar_contact_information - field.field.rdf_entity.collection.field_ar_content_creation @@ -68,17 +67,21 @@ content: weight: 1 region: content last_update: - type: joinup_timestamp_timeago + type: timestamp label: hidden settings: date_format: medium custom_date_format: '' timezone: '' - tooltip_format: long - tooltip_format_custom: '' - timeago_settings: - strings: - seconds: 'few seconds' + tooltip: + date_format: long + custom_date_format: '' + time_diff: + enabled: true + future_format: '@interval hence' + past_format: '@interval ago' + granularity: 1 + refresh: 60 third_party_settings: { } weight: 3 region: content @@ -99,7 +102,6 @@ hidden: field_ar_abstract: true field_ar_access_url: true field_ar_affiliates: true - field_ar_banner: true field_ar_closed: true field_ar_contact_information: true field_ar_content_creation: true diff --git a/config/sync/core.entity_view_display.rdf_entity.collection.rdf_draft.yml b/config/sync/core.entity_view_display.rdf_entity.collection.rdf_draft.yml index 2483109aab3f91df88c4e595c913ca18c3973c24..0c1ef38b9e427f747c84a3e576f8bc787c2acab0 100644 --- a/config/sync/core.entity_view_display.rdf_entity.collection.rdf_draft.yml +++ b/config/sync/core.entity_view_display.rdf_entity.collection.rdf_draft.yml @@ -7,7 +7,6 @@ dependencies: - field.field.rdf_entity.collection.field_ar_abstract - field.field.rdf_entity.collection.field_ar_access_url - field.field.rdf_entity.collection.field_ar_affiliates - - field.field.rdf_entity.collection.field_ar_banner - field.field.rdf_entity.collection.field_ar_closed - field.field.rdf_entity.collection.field_ar_contact_information - field.field.rdf_entity.collection.field_ar_content_creation @@ -19,10 +18,10 @@ dependencies: - field.field.rdf_entity.collection.field_collection_content - field.field.rdf_entity.collection.field_keywords - field.field.rdf_entity.collection.field_newsletter - - field.field.rdf_entity.collection.field_topic - field.field.rdf_entity.collection.field_short_id - field.field.rdf_entity.collection.field_site_featured - field.field.rdf_entity.collection.field_spatial_coverage + - field.field.rdf_entity.collection.field_topic - rdf_entity.rdfentity.collection module: - link @@ -140,7 +139,6 @@ hidden: created: true featured: true field_ar_affiliates: true - field_ar_banner: true field_ar_logo: true field_ar_state: true field_collection_content: true diff --git a/config/sync/core.entity_view_display.rdf_entity.collection.view_mode_featured.yml b/config/sync/core.entity_view_display.rdf_entity.collection.view_mode_featured.yml index e12419c1b7f60d89801ad53c9506aa1445c230da..f535980c9511fdb833b3edbb4f7ad5cb24416276 100644 --- a/config/sync/core.entity_view_display.rdf_entity.collection.view_mode_featured.yml +++ b/config/sync/core.entity_view_display.rdf_entity.collection.view_mode_featured.yml @@ -7,7 +7,6 @@ dependencies: - field.field.rdf_entity.collection.field_ar_abstract - field.field.rdf_entity.collection.field_ar_access_url - field.field.rdf_entity.collection.field_ar_affiliates - - field.field.rdf_entity.collection.field_ar_banner - field.field.rdf_entity.collection.field_ar_closed - field.field.rdf_entity.collection.field_ar_contact_information - field.field.rdf_entity.collection.field_ar_content_creation @@ -26,8 +25,8 @@ dependencies: - image.style.vertical_medium_image - rdf_entity.rdfentity.collection module: - - image - smart_trim + - svg_image - template_suggestion - user id: rdf_entity.collection.view_mode_featured @@ -44,9 +43,13 @@ content: trim_suffix: … wrap_output: false wrap_class: trimmed - more_link: false - more_class: more-link - more_text: More + more: + display_link: false + target_blank: false + link_trim_only: false + class: more-link + text: More + aria_label: 'Read more about [node:title]' summary_handler: full trim_options: text: false @@ -85,7 +88,6 @@ hidden: featured: true field_ar_access_url: true field_ar_affiliates: true - field_ar_banner: true field_ar_closed: true field_ar_contact_information: true field_ar_content_creation: true diff --git a/config/sync/core.entity_view_display.rdf_entity.collection.view_mode_tile.yml b/config/sync/core.entity_view_display.rdf_entity.collection.view_mode_tile.yml index 9667dc491bc6105c661e7b39ee04bea3b6ae0b2d..6fbdf2719559e22aebff0fbdd63f367ede3e6dbe 100644 --- a/config/sync/core.entity_view_display.rdf_entity.collection.view_mode_tile.yml +++ b/config/sync/core.entity_view_display.rdf_entity.collection.view_mode_tile.yml @@ -7,7 +7,6 @@ dependencies: - field.field.rdf_entity.collection.field_ar_abstract - field.field.rdf_entity.collection.field_ar_access_url - field.field.rdf_entity.collection.field_ar_affiliates - - field.field.rdf_entity.collection.field_ar_banner - field.field.rdf_entity.collection.field_ar_closed - field.field.rdf_entity.collection.field_ar_contact_information - field.field.rdf_entity.collection.field_ar_content_creation @@ -50,6 +49,8 @@ content: settings: responsive_image_style: tile image_link: '' + image_loading: + attribute: eager third_party_settings: template_suggestion: template_suggestion: bare @@ -66,7 +67,6 @@ hidden: featured: true field_ar_access_url: true field_ar_affiliates: true - field_ar_banner: true field_ar_closed: true field_ar_contact_information: true field_ar_content_creation: true diff --git a/config/sync/core.entity_view_display.rdf_entity.collection.view_mode_tile_horizontal.yml b/config/sync/core.entity_view_display.rdf_entity.collection.view_mode_tile_horizontal.yml index ebb18c2152ea104a9eae22ce6d2268e8018a720a..a4479ccd7474d701ae7d83a64675079ffc332323 100644 --- a/config/sync/core.entity_view_display.rdf_entity.collection.view_mode_tile_horizontal.yml +++ b/config/sync/core.entity_view_display.rdf_entity.collection.view_mode_tile_horizontal.yml @@ -7,7 +7,6 @@ dependencies: - field.field.rdf_entity.collection.field_ar_abstract - field.field.rdf_entity.collection.field_ar_access_url - field.field.rdf_entity.collection.field_ar_affiliates - - field.field.rdf_entity.collection.field_ar_banner - field.field.rdf_entity.collection.field_ar_closed - field.field.rdf_entity.collection.field_ar_contact_information - field.field.rdf_entity.collection.field_ar_content_creation @@ -27,10 +26,10 @@ dependencies: - responsive_image.styles.tile module: - field_group + - joinup_html_stripper - layout_builder - responsive_image - template_suggestion - - text - user third_party_settings: field_group: @@ -61,9 +60,10 @@ bundle: collection mode: view_mode_tile_horizontal content: field_ar_description: - type: text_default + type: joinup_html_stripper_stripped label: hidden - settings: { } + settings: + trim_length: 600 third_party_settings: template_suggestion: template_suggestion: bare @@ -75,6 +75,8 @@ content: settings: responsive_image_style: tile image_link: '' + image_loading: + attribute: eager third_party_settings: template_suggestion: template_suggestion: bare @@ -92,7 +94,6 @@ hidden: field_ar_abstract: true field_ar_access_url: true field_ar_affiliates: true - field_ar_banner: true field_ar_closed: true field_ar_contact_information: true field_ar_content_creation: true diff --git a/config/sync/core.entity_view_display.rdf_entity.licence.view_mode_tile.yml b/config/sync/core.entity_view_display.rdf_entity.licence.view_mode_tile.yml index e3a746e43a16f8f542beb4add53d2da0ac387e10..83a2fcc4ceab67c68ba0b6b4ce9c5428a90ccdbe 100644 --- a/config/sync/core.entity_view_display.rdf_entity.licence.view_mode_tile.yml +++ b/config/sync/core.entity_view_display.rdf_entity.licence.view_mode_tile.yml @@ -11,8 +11,8 @@ dependencies: - field.field.rdf_entity.licence.field_licence_type - rdf_entity.rdfentity.licence module: + - joinup_html_stripper - template_suggestion - - text - user _core: default_config_hash: dUUds8JuHKNe_Ty02jUEcyT-VjmQGe9ddodFFQ2wp0Q @@ -22,9 +22,10 @@ bundle: licence mode: view_mode_tile content: field_licence_description: - type: text_default + type: joinup_html_stripper_stripped label: hidden - settings: { } + settings: + trim_length: 600 third_party_settings: template_suggestion: template_suggestion: bare diff --git a/config/sync/core.entity_view_display.rdf_entity.licence.view_mode_tile_horizontal.yml b/config/sync/core.entity_view_display.rdf_entity.licence.view_mode_tile_horizontal.yml index af26aa206c51739b3e0e60d403fdc1c0f73e3478..41a13ff8524e9f1d9503c88575943bc8cea8e4c7 100644 --- a/config/sync/core.entity_view_display.rdf_entity.licence.view_mode_tile_horizontal.yml +++ b/config/sync/core.entity_view_display.rdf_entity.licence.view_mode_tile_horizontal.yml @@ -12,9 +12,9 @@ dependencies: - rdf_entity.rdfentity.licence module: - field_group + - joinup_html_stripper - layout_builder - template_suggestion - - text - user third_party_settings: field_group: @@ -47,9 +47,10 @@ bundle: licence mode: view_mode_tile_horizontal content: field_licence_description: - type: text_default + type: joinup_html_stripper_stripped label: hidden - settings: { } + settings: + trim_length: 600 third_party_settings: template_suggestion: template_suggestion: bare diff --git a/config/sync/core.entity_view_display.rdf_entity.solution.about.yml b/config/sync/core.entity_view_display.rdf_entity.solution.about.yml index 91587d92b318cde2dfbdf09e80903af090ad824d..c45f03a607c952632074dedca8ed1f7b756a79e4 100644 --- a/config/sync/core.entity_view_display.rdf_entity.solution.about.yml +++ b/config/sync/core.entity_view_display.rdf_entity.solution.about.yml @@ -6,7 +6,6 @@ dependencies: - core.entity_view_mode.rdf_entity.about - field.field.rdf_entity.solution.field_is_actor - field.field.rdf_entity.solution.field_is_affiliations_requests - - field.field.rdf_entity.solution.field_is_banner - field.field.rdf_entity.solution.field_is_business_process - field.field.rdf_entity.solution.field_is_contact_information - field.field.rdf_entity.solution.field_is_content @@ -373,7 +372,6 @@ hidden: eif_perspective: true featured: true field_is_affiliations_requests: true - field_is_banner: true field_is_content: true field_is_distribution: true field_is_eif_category: true diff --git a/config/sync/core.entity_view_display.rdf_entity.solution.carousel.yml b/config/sync/core.entity_view_display.rdf_entity.solution.carousel.yml index 6ea7e6fc2a1620b8ec338c20b4343efded6f6d1a..4916d160f515307c93292fc18b3d84cd997ecf78 100644 --- a/config/sync/core.entity_view_display.rdf_entity.solution.carousel.yml +++ b/config/sync/core.entity_view_display.rdf_entity.solution.carousel.yml @@ -6,7 +6,6 @@ dependencies: - core.entity_view_mode.rdf_entity.carousel - field.field.rdf_entity.solution.field_is_actor - field.field.rdf_entity.solution.field_is_affiliations_requests - - field.field.rdf_entity.solution.field_is_banner - field.field.rdf_entity.solution.field_is_business_process - field.field.rdf_entity.solution.field_is_contact_information - field.field.rdf_entity.solution.field_is_content @@ -46,7 +45,7 @@ dependencies: - field.field.rdf_entity.solution.field_status - field.field.rdf_entity.solution.field_topic - rdf_entity.rdfentity.solution - - responsive_image.styles.iop_carousel + - responsive_image.styles.tile module: - field_group - layout_builder @@ -89,9 +88,13 @@ content: trim_suffix: … wrap_output: false wrap_class: trimmed - more_link: false - more_class: more-link - more_text: More + more: + display_link: false + target_blank: false + link_trim_only: false + class: more-link + text: More + aria_label: 'Read more about [node:title]' summary_handler: full trim_options: text: true @@ -107,6 +110,8 @@ content: settings: responsive_image_style: tile image_link: '' + image_loading: + attribute: eager third_party_settings: template_suggestion: template_suggestion: '' @@ -139,7 +144,6 @@ hidden: featured: true field_is_actor: true field_is_affiliations_requests: true - field_is_banner: true field_is_business_process: true field_is_contact_information: true field_is_content: true diff --git a/config/sync/core.entity_view_display.rdf_entity.solution.compact.yml b/config/sync/core.entity_view_display.rdf_entity.solution.compact.yml index 3d6bbc21684cf089f2bae30bdc926177dfda57fd..75c663b06bc0fe75a97427c1f20ba8839f3543aa 100644 --- a/config/sync/core.entity_view_display.rdf_entity.solution.compact.yml +++ b/config/sync/core.entity_view_display.rdf_entity.solution.compact.yml @@ -6,7 +6,6 @@ dependencies: - core.entity_view_mode.rdf_entity.compact - field.field.rdf_entity.solution.field_is_actor - field.field.rdf_entity.solution.field_is_affiliations_requests - - field.field.rdf_entity.solution.field_is_banner - field.field.rdf_entity.solution.field_is_business_process - field.field.rdf_entity.solution.field_is_contact_information - field.field.rdf_entity.solution.field_is_content @@ -109,7 +108,6 @@ hidden: featured: true field_is_actor: true field_is_affiliations_requests: true - field_is_banner: true field_is_business_process: true field_is_contact_information: true field_is_content: true diff --git a/config/sync/core.entity_view_display.rdf_entity.solution.default.yml b/config/sync/core.entity_view_display.rdf_entity.solution.default.yml index 4d8fd391fd3ef23844445aad72cee1dfaf57f0e1..4e7beeb6efeb51c6bcd327102c2326dcc5183bd4 100644 --- a/config/sync/core.entity_view_display.rdf_entity.solution.default.yml +++ b/config/sync/core.entity_view_display.rdf_entity.solution.default.yml @@ -5,7 +5,6 @@ dependencies: config: - field.field.rdf_entity.solution.field_is_actor - field.field.rdf_entity.solution.field_is_affiliations_requests - - field.field.rdf_entity.solution.field_is_banner - field.field.rdf_entity.solution.field_is_business_process - field.field.rdf_entity.solution.field_is_contact_information - field.field.rdf_entity.solution.field_is_content @@ -92,9 +91,13 @@ content: trim_suffix: … wrap_output: false wrap_class: trimmed - more_link: false - more_class: more-link - more_text: More + more: + display_link: false + target_blank: false + link_trim_only: false + class: more-link + text: More + aria_label: 'Read more about [node:title]' summary_handler: full trim_options: text: true @@ -144,7 +147,6 @@ hidden: featured: true field_is_actor: true field_is_affiliations_requests: true - field_is_banner: true field_is_business_process: true field_is_contact_information: true field_is_content_creation: true diff --git a/config/sync/core.entity_view_display.rdf_entity.solution.digest_message.yml b/config/sync/core.entity_view_display.rdf_entity.solution.digest_message.yml index d8f7c3c359be14cfffbee56b4929845f5757b688..4db7a017e0a8ade836d76ceff0a2acc561814b2d 100644 --- a/config/sync/core.entity_view_display.rdf_entity.solution.digest_message.yml +++ b/config/sync/core.entity_view_display.rdf_entity.solution.digest_message.yml @@ -6,7 +6,6 @@ dependencies: - core.entity_view_mode.rdf_entity.digest_message - field.field.rdf_entity.solution.field_is_actor - field.field.rdf_entity.solution.field_is_affiliations_requests - - field.field.rdf_entity.solution.field_is_banner - field.field.rdf_entity.solution.field_is_business_process - field.field.rdf_entity.solution.field_is_contact_information - field.field.rdf_entity.solution.field_is_content @@ -64,9 +63,13 @@ content: trim_suffix: … wrap_output: false wrap_class: trimmed - more_link: false - more_class: more-link - more_text: More + more: + display_link: false + target_blank: false + link_trim_only: false + class: more-link + text: More + aria_label: 'Read more about [node:title]' summary_handler: full trim_options: text: true @@ -95,7 +98,6 @@ hidden: featured: true field_is_actor: true field_is_affiliations_requests: true - field_is_banner: true field_is_business_process: true field_is_contact_information: true field_is_content: true diff --git a/config/sync/core.entity_view_display.rdf_entity.solution.digest_message_header.yml b/config/sync/core.entity_view_display.rdf_entity.solution.digest_message_header.yml index 4bccb4d80cae1891065830a029bafc3e47029c9b..288390f07803600722110568b61e2e966e293e80 100644 --- a/config/sync/core.entity_view_display.rdf_entity.solution.digest_message_header.yml +++ b/config/sync/core.entity_view_display.rdf_entity.solution.digest_message_header.yml @@ -6,7 +6,6 @@ dependencies: - core.entity_view_mode.rdf_entity.digest_message_header - field.field.rdf_entity.solution.field_is_actor - field.field.rdf_entity.solution.field_is_affiliations_requests - - field.field.rdf_entity.solution.field_is_banner - field.field.rdf_entity.solution.field_is_business_process - field.field.rdf_entity.solution.field_is_contact_information - field.field.rdf_entity.solution.field_is_content @@ -70,7 +69,6 @@ hidden: featured: true field_is_actor: true field_is_affiliations_requests: true - field_is_banner: true field_is_business_process: true field_is_contact_information: true field_is_content: true diff --git a/config/sync/core.entity_view_display.rdf_entity.solution.eif_perspective.yml b/config/sync/core.entity_view_display.rdf_entity.solution.eif_perspective.yml index 89200f82efab3cfe659771a7f187fdbb98891998..573f68c25da099ae2f04f0ea96894d397959ae6e 100644 --- a/config/sync/core.entity_view_display.rdf_entity.solution.eif_perspective.yml +++ b/config/sync/core.entity_view_display.rdf_entity.solution.eif_perspective.yml @@ -6,7 +6,6 @@ dependencies: - core.entity_view_mode.rdf_entity.eif_perspective - field.field.rdf_entity.solution.field_is_actor - field.field.rdf_entity.solution.field_is_affiliations_requests - - field.field.rdf_entity.solution.field_is_banner - field.field.rdf_entity.solution.field_is_business_process - field.field.rdf_entity.solution.field_is_contact_information - field.field.rdf_entity.solution.field_is_content @@ -102,9 +101,13 @@ content: trim_suffix: … wrap_output: false wrap_class: trimmed - more_link: false - more_class: more-link - more_text: More + more: + display_link: false + target_blank: false + link_trim_only: false + class: more-link + text: More + aria_label: 'Read more about [node:title]' summary_handler: full trim_options: text: true @@ -120,6 +123,8 @@ content: settings: responsive_image_style: highlighted_content image_link: '' + image_loading: + attribute: eager third_party_settings: template_suggestion: template_suggestion: '' @@ -178,7 +183,6 @@ hidden: featured: true field_is_actor: true field_is_affiliations_requests: true - field_is_banner: true field_is_business_process: true field_is_contact_information: true field_is_content: true diff --git a/config/sync/core.entity_view_display.rdf_entity.solution.explore_item.yml b/config/sync/core.entity_view_display.rdf_entity.solution.explore_item.yml index 8c95eada0f06adc374027e902c229dba549ad188..30736fc55985d86fd36011f79cacc644e12e95e6 100644 --- a/config/sync/core.entity_view_display.rdf_entity.solution.explore_item.yml +++ b/config/sync/core.entity_view_display.rdf_entity.solution.explore_item.yml @@ -6,7 +6,6 @@ dependencies: - core.entity_view_mode.rdf_entity.explore_item - field.field.rdf_entity.solution.field_is_actor - field.field.rdf_entity.solution.field_is_affiliations_requests - - field.field.rdf_entity.solution.field_is_banner - field.field.rdf_entity.solution.field_is_business_process - field.field.rdf_entity.solution.field_is_contact_information - field.field.rdf_entity.solution.field_is_content @@ -136,6 +135,15 @@ third_party_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: '' @@ -180,6 +188,15 @@ content: 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: '' @@ -194,9 +211,13 @@ content: trim_suffix: … wrap_output: false wrap_class: trimmed - more_link: false - more_class: more-link - more_text: More + more: + display_link: false + target_blank: false + link_trim_only: false + class: more-link + text: More + aria_label: 'Read more about [node:title]' summary_handler: full trim_options: text: true @@ -227,13 +248,11 @@ content: hidden: changed: true collections: true - created: true download_total: true eif_perspective: true featured: true field_is_actor: true field_is_affiliations_requests: true - field_is_banner: true field_is_business_process: true field_is_contact_information: true field_is_content: true diff --git a/config/sync/core.entity_view_display.rdf_entity.solution.group_header.yml b/config/sync/core.entity_view_display.rdf_entity.solution.group_header.yml index 273928569b5f96743a16559b11218d17a8547401..73b42124aebc37f33db6d161df87dee45c627ce9 100644 --- a/config/sync/core.entity_view_display.rdf_entity.solution.group_header.yml +++ b/config/sync/core.entity_view_display.rdf_entity.solution.group_header.yml @@ -6,7 +6,6 @@ dependencies: - core.entity_view_mode.rdf_entity.group_header - field.field.rdf_entity.solution.field_is_actor - field.field.rdf_entity.solution.field_is_affiliations_requests - - field.field.rdf_entity.solution.field_is_banner - field.field.rdf_entity.solution.field_is_business_process - field.field.rdf_entity.solution.field_is_contact_information - field.field.rdf_entity.solution.field_is_content @@ -124,7 +123,6 @@ hidden: featured: true field_is_actor: true field_is_affiliations_requests: true - field_is_banner: true field_is_business_process: true field_is_contact_information: true field_is_content: true diff --git a/config/sync/core.entity_view_display.rdf_entity.solution.highlighted.yml b/config/sync/core.entity_view_display.rdf_entity.solution.highlighted.yml index ea21e342ab30d489d63f1b98b486ae4066b95e97..f07a9ddb96be32dc95085ab75a39cee15e0596d4 100644 --- a/config/sync/core.entity_view_display.rdf_entity.solution.highlighted.yml +++ b/config/sync/core.entity_view_display.rdf_entity.solution.highlighted.yml @@ -6,7 +6,6 @@ dependencies: - core.entity_view_mode.rdf_entity.highlighted - field.field.rdf_entity.solution.field_is_actor - field.field.rdf_entity.solution.field_is_affiliations_requests - - field.field.rdf_entity.solution.field_is_banner - field.field.rdf_entity.solution.field_is_business_process - field.field.rdf_entity.solution.field_is_contact_information - field.field.rdf_entity.solution.field_is_content @@ -98,6 +97,8 @@ content: settings: responsive_image_style: highlighted_content image_link: content + image_loading: + attribute: eager third_party_settings: template_suggestion: template_suggestion: '' @@ -152,7 +153,6 @@ hidden: featured: true field_is_actor: true field_is_affiliations_requests: true - field_is_banner: true field_is_business_process: true field_is_contact_information: true field_is_content: true diff --git a/config/sync/core.entity_view_display.rdf_entity.solution.rdf_draft.yml b/config/sync/core.entity_view_display.rdf_entity.solution.rdf_draft.yml index 68d94946782dc9215e0cb437a37c08c70eaad5e9..d9998776a5bdb7422dae6d8ae0f496160c30e4cd 100644 --- a/config/sync/core.entity_view_display.rdf_entity.solution.rdf_draft.yml +++ b/config/sync/core.entity_view_display.rdf_entity.solution.rdf_draft.yml @@ -6,7 +6,6 @@ dependencies: - core.entity_view_mode.rdf_entity.rdf_draft - field.field.rdf_entity.solution.field_is_actor - field.field.rdf_entity.solution.field_is_affiliations_requests - - field.field.rdf_entity.solution.field_is_banner - field.field.rdf_entity.solution.field_is_business_process - field.field.rdf_entity.solution.field_is_contact_information - field.field.rdf_entity.solution.field_is_content @@ -315,7 +314,6 @@ hidden: eif_perspective: true featured: true field_is_affiliations_requests: true - field_is_banner: true field_is_content: true field_is_distribution: true field_is_eif_category: true diff --git a/config/sync/core.entity_view_display.rdf_entity.solution.view_mode_featured.yml b/config/sync/core.entity_view_display.rdf_entity.solution.view_mode_featured.yml index 60742ca7bbf9bcedcc363dcfbb6b14600d63bf9e..75c3e57ffb8908ae6a3b7c0c73081e950922092d 100644 --- a/config/sync/core.entity_view_display.rdf_entity.solution.view_mode_featured.yml +++ b/config/sync/core.entity_view_display.rdf_entity.solution.view_mode_featured.yml @@ -6,7 +6,6 @@ dependencies: - core.entity_view_mode.rdf_entity.view_mode_featured - field.field.rdf_entity.solution.field_is_actor - field.field.rdf_entity.solution.field_is_affiliations_requests - - field.field.rdf_entity.solution.field_is_banner - field.field.rdf_entity.solution.field_is_business_process - field.field.rdf_entity.solution.field_is_contact_information - field.field.rdf_entity.solution.field_is_content @@ -71,9 +70,13 @@ content: trim_suffix: … wrap_output: false wrap_class: trimmed - more_link: false - more_class: more-link - more_text: More + more: + display_link: false + target_blank: false + link_trim_only: false + class: more-link + text: More + aria_label: 'Read more about [node:title]' summary_handler: full trim_options: text: false @@ -113,7 +116,6 @@ hidden: featured: true field_is_actor: true field_is_affiliations_requests: true - field_is_banner: true field_is_business_process: true field_is_contact_information: true field_is_content: true diff --git a/config/sync/core.entity_view_display.rdf_entity.solution.view_mode_search_list_item.yml b/config/sync/core.entity_view_display.rdf_entity.solution.view_mode_search_list_item.yml index a0c9759a48c3e014463c68adb53873c95e825b70..b2eaa3bc1020a83490c460c941d58a381c19521c 100644 --- a/config/sync/core.entity_view_display.rdf_entity.solution.view_mode_search_list_item.yml +++ b/config/sync/core.entity_view_display.rdf_entity.solution.view_mode_search_list_item.yml @@ -6,7 +6,6 @@ dependencies: - core.entity_view_mode.rdf_entity.view_mode_search_list_item - field.field.rdf_entity.solution.field_is_actor - field.field.rdf_entity.solution.field_is_affiliations_requests - - field.field.rdf_entity.solution.field_is_banner - field.field.rdf_entity.solution.field_is_business_process - field.field.rdf_entity.solution.field_is_contact_information - field.field.rdf_entity.solution.field_is_content @@ -105,6 +104,8 @@ content: settings: responsive_image_style: teaser image_link: '' + image_loading: + attribute: eager third_party_settings: template_suggestion: template_suggestion: '' @@ -143,7 +144,6 @@ hidden: featured: true field_is_actor: true field_is_affiliations_requests: true - field_is_banner: true field_is_business_process: true field_is_contact_information: true field_is_content: true diff --git a/config/sync/core.entity_view_display.rdf_entity.solution.view_mode_tile.yml b/config/sync/core.entity_view_display.rdf_entity.solution.view_mode_tile.yml index c1aa0724830a0d60f70c3ae6ecbae625bad7931f..3349273221139f1581919860ed88e0a1dcdd7683 100644 --- a/config/sync/core.entity_view_display.rdf_entity.solution.view_mode_tile.yml +++ b/config/sync/core.entity_view_display.rdf_entity.solution.view_mode_tile.yml @@ -6,7 +6,6 @@ dependencies: - core.entity_view_mode.rdf_entity.view_mode_tile - field.field.rdf_entity.solution.field_is_actor - field.field.rdf_entity.solution.field_is_affiliations_requests - - field.field.rdf_entity.solution.field_is_banner - field.field.rdf_entity.solution.field_is_business_process - field.field.rdf_entity.solution.field_is_contact_information - field.field.rdf_entity.solution.field_is_content @@ -48,9 +47,9 @@ dependencies: - rdf_entity.rdfentity.solution - responsive_image.styles.tile module: + - joinup_html_stripper - responsive_image - template_suggestion - - text - user id: rdf_entity.solution.view_mode_tile targetEntityType: rdf_entity @@ -63,9 +62,10 @@ content: weight: 2 region: content field_is_description: - type: text_default + type: joinup_html_stripper_stripped label: hidden - settings: { } + settings: + trim_length: 600 third_party_settings: template_suggestion: template_suggestion: bare @@ -77,6 +77,8 @@ content: settings: responsive_image_style: tile image_link: '' + image_loading: + attribute: eager third_party_settings: template_suggestion: template_suggestion: bare @@ -95,7 +97,6 @@ hidden: featured: true field_is_actor: true field_is_affiliations_requests: true - field_is_banner: true field_is_business_process: true field_is_contact_information: true field_is_content: true diff --git a/config/sync/core.entity_view_display.rdf_entity.solution.view_mode_tile_horizontal.yml b/config/sync/core.entity_view_display.rdf_entity.solution.view_mode_tile_horizontal.yml index bf1358602a203e004c61f527759fd7abaa976939..b18fc4494137647bed468cf5aabbf1953377234e 100644 --- a/config/sync/core.entity_view_display.rdf_entity.solution.view_mode_tile_horizontal.yml +++ b/config/sync/core.entity_view_display.rdf_entity.solution.view_mode_tile_horizontal.yml @@ -6,7 +6,6 @@ dependencies: - core.entity_view_mode.rdf_entity.view_mode_tile_horizontal - field.field.rdf_entity.solution.field_is_actor - field.field.rdf_entity.solution.field_is_affiliations_requests - - field.field.rdf_entity.solution.field_is_banner - field.field.rdf_entity.solution.field_is_business_process - field.field.rdf_entity.solution.field_is_contact_information - field.field.rdf_entity.solution.field_is_content @@ -49,10 +48,10 @@ dependencies: - responsive_image.styles.tile module: - field_group + - joinup_html_stripper - layout_builder - responsive_image - template_suggestion - - text - user third_party_settings: field_group: @@ -82,9 +81,10 @@ bundle: solution mode: view_mode_tile_horizontal content: field_is_description: - type: text_default + type: joinup_html_stripper_stripped label: hidden - settings: { } + settings: + trim_length: 600 third_party_settings: template_suggestion: template_suggestion: bare @@ -96,6 +96,8 @@ content: settings: responsive_image_style: tile image_link: '' + image_loading: + attribute: eager third_party_settings: template_suggestion: template_suggestion: bare @@ -123,7 +125,6 @@ hidden: featured: true field_is_actor: true field_is_affiliations_requests: true - field_is_banner: true field_is_business_process: true field_is_contact_information: true field_is_content: true @@ -137,7 +138,6 @@ hidden: field_is_issue_tracker: true field_is_landing_page: true field_is_language: true - field_is_logo: true field_is_metrics_page: true field_is_moderation: true field_is_owner: true diff --git a/config/sync/core.entity_view_display.user.user.view_mode_tile.yml b/config/sync/core.entity_view_display.user.user.view_mode_tile.yml index 9731ede24b37f0b8baf18da288cf232ec8247c87..231544127dbfa6b9786169ec3c45df16b72997c2 100644 --- a/config/sync/core.entity_view_display.user.user.view_mode_tile.yml +++ b/config/sync/core.entity_view_display.user.user.view_mode_tile.yml @@ -34,9 +34,13 @@ content: trim_suffix: '' wrap_output: false wrap_class: trimmed - more_link: false - more_class: more-link - more_text: More + more: + display_link: false + target_blank: false + link_trim_only: false + class: more-link + text: More + aria_label: 'Read more about [node:title]' summary_handler: full trim_options: text: false @@ -76,6 +80,8 @@ content: settings: responsive_image_style: tile image_link: '' + image_loading: + attribute: eager third_party_settings: template_suggestion: template_suggestion: '' diff --git a/config/sync/core.entity_view_display.user.user.view_mode_tile_horizontal.yml b/config/sync/core.entity_view_display.user.user.view_mode_tile_horizontal.yml index de86abc744a60572fae100fce14e1384b24d901e..e3d53ddc65578b0614060af3bfe8c0b82e4af1a4 100644 --- a/config/sync/core.entity_view_display.user.user.view_mode_tile_horizontal.yml +++ b/config/sync/core.entity_view_display.user.user.view_mode_tile_horizontal.yml @@ -75,6 +75,8 @@ content: settings: responsive_image_style: tile image_link: '' + image_loading: + attribute: eager third_party_settings: template_suggestion: template_suggestion: bare diff --git a/config/sync/core.entity_view_mode.paragraph.tile.yml b/config/sync/core.entity_view_mode.paragraph.tile.yml new file mode 100644 index 0000000000000000000000000000000000000000..ab9bcfcbb11494218f2ac938e46797209e37c5c5 --- /dev/null +++ b/config/sync/core.entity_view_mode.paragraph.tile.yml @@ -0,0 +1,10 @@ +uuid: ce73801c-7220-4017-8743-dbd15576c4ab +langcode: en +status: true +dependencies: + module: + - paragraphs +id: paragraph.tile +label: Tile +targetEntityType: paragraph +cache: true diff --git a/config/sync/core.entity_view_mode.poll.teaser.yml b/config/sync/core.entity_view_mode.poll.teaser.yml new file mode 100644 index 0000000000000000000000000000000000000000..38019462b6ee1005ea38adca27b60a70fea60f7f --- /dev/null +++ b/config/sync/core.entity_view_mode.poll.teaser.yml @@ -0,0 +1,12 @@ +uuid: 25db4e7d-5809-4738-aa5e-6d9cf1cbeebe +langcode: en +status: true +dependencies: + module: + - poll +_core: + default_config_hash: KBJ_x1GRUQhqBleLQhbHwJ2zA2uVjhL9m6TO17_Knmg +id: poll.teaser +label: Teaser +targetEntityType: poll +cache: true diff --git a/config/sync/core.extension.yml b/config/sync/core.extension.yml index 9dba16a4d5a6a06740ca6a463704647296a7fe27..f224297b8328f23c74dae8885741fe3e29c9baaa 100644 --- a/config/sync/core.extension.yml +++ b/config/sync/core.extension.yml @@ -8,7 +8,6 @@ module: asset_distribution: 0 asset_release: 0 block: 0 - bootstrap4_modal: 0 breakpoint: 0 cached_computed_field: 0 cas: 0 @@ -101,11 +100,13 @@ module: joinup_like: 0 joinup_material_design: 0 joinup_menu: 0 + joinup_modal: 0 joinup_news: 0 joinup_newsletter: 0 joinup_notification: 0 joinup_paragraphs: 0 joinup_pipeline_log: 0 + joinup_poll: 0 joinup_publication_date: 0 joinup_rdf: 0 joinup_rdf_graph: 0 @@ -126,6 +127,7 @@ module: layout_builder: 0 layout_builder_component_attributes: 0 layout_discovery: 0 + layout_paragraphs: 0 link: 0 linkit: 0 mailsystem: 0 @@ -165,6 +167,7 @@ module: path: 0 path_alias: 0 pipeline: 0 + poll: 0 purge: 0 purge_drush: 0 purge_processor_cron: 0 diff --git a/config/sync/editor.editor.text_html.yml b/config/sync/editor.editor.text_html.yml new file mode 100644 index 0000000000000000000000000000000000000000..23235cbc9d36dc4ed137570db7422c59d1c23852 --- /dev/null +++ b/config/sync/editor.editor.text_html.yml @@ -0,0 +1,57 @@ +uuid: dbeb6efd-ec2b-46b7-a8d0-64b7580c5049 +langcode: en +status: true +dependencies: + config: + - filter.format.text_html + module: + - ckeditor + - editor_file +third_party_settings: + editor_file: + status: true + scheme: public + directory: inline-files + extensions: txt + max_size: '' +format: text_html +editor: ckeditor +settings: + toolbar: + rows: + - + - + name: Formatting + items: + - Bold + - Italic + - + name: Links + items: + - DrupalLink + - DrupalUnlink + - + name: Lists + items: + - BulletedList + - NumberedList + - + name: Media + items: + - contactus + - + name: Source + items: + - Source + plugins: + drupallink: + linkit_enabled: true + linkit_profile: default +image_upload: + status: false + scheme: public + directory: inline-images + max_size: '' + max_dimensions: + width: null + height: null diff --git a/config/sync/field.field.comment.comment.field_body.yml b/config/sync/field.field.comment.comment.field_body.yml index d0f83ced23a44b5adebc2a3710cf4866df07abde..9936d36978d3796d20bd49b48c796ab499f8e1a3 100644 --- a/config/sync/field.field.comment.comment.field_body.yml +++ b/config/sync/field.field.comment.comment.field_body.yml @@ -5,17 +5,10 @@ dependencies: config: - comment.type.comment - field.storage.comment.field_body + - filter.format.simple_html + - filter.format.simple_text module: - - allowed_formats - text -third_party_settings: - allowed_formats: - allowed_formats: - simple_html: simple_html - simple_text: simple_text - content_editor: '0' - basic_html: '0' - plain_text: '0' _core: default_config_hash: XjinYVUnMIshdBycAetpscFS2ON6_ggwnH1m-FyU6oc id: comment.comment.field_body @@ -28,5 +21,8 @@ required: true translatable: false default_value: { } default_value_callback: '' -settings: { } +settings: + allowed_formats: + - simple_html + - simple_text field_type: text_long diff --git a/config/sync/field.field.comment.reply.field_body.yml b/config/sync/field.field.comment.reply.field_body.yml index 6694301fa3a0024c0c371a7efe34363a16142660..f3abc197ad6f3331eb4b12acbaeefca12dd308ba 100644 --- a/config/sync/field.field.comment.reply.field_body.yml +++ b/config/sync/field.field.comment.reply.field_body.yml @@ -5,17 +5,10 @@ dependencies: config: - comment.type.reply - field.storage.comment.field_body + - filter.format.simple_html + - filter.format.simple_text module: - - allowed_formats - text -third_party_settings: - allowed_formats: - allowed_formats: - simple_html: simple_html - simple_text: simple_text - content_editor: '0' - basic_html: '0' - plain_text: '0' _core: default_config_hash: CJfKHjD2vnR0R6a0XJEncvSH13myxwawoObLy2j8QTM id: comment.reply.field_body @@ -28,5 +21,8 @@ required: true translatable: false default_value: { } default_value_callback: '' -settings: { } +settings: + allowed_formats: + - simple_html + - simple_text field_type: text_long diff --git a/config/sync/field.field.entity_legal_document_version.legal_notice.entity_legal_document_text.yml b/config/sync/field.field.entity_legal_document_version.legal_notice.entity_legal_document_text.yml index cb8752e199298e2e5c5b0702fc8d5b19d0264677..9fa855bf72bc9f5b641f5d5d3af0c89298d33804 100644 --- a/config/sync/field.field.entity_legal_document_version.legal_notice.entity_legal_document_text.yml +++ b/config/sync/field.field.entity_legal_document_version.legal_notice.entity_legal_document_text.yml @@ -20,4 +20,5 @@ default_value_callback: '' settings: display_summary: false required_summary: false + allowed_formats: { } field_type: text_with_summary diff --git a/config/sync/field.field.media.collection_banner.image_library_widget_image.yml b/config/sync/field.field.media.collection_banner.image_library_widget_image.yml deleted file mode 100644 index 8986a05f5ae1bb6bb87d78b4c88fd22f0f4a3ac1..0000000000000000000000000000000000000000 --- a/config/sync/field.field.media.collection_banner.image_library_widget_image.yml +++ /dev/null @@ -1,45 +0,0 @@ -uuid: 2189b359-4f8f-4525-b579-90d51db34d8b -langcode: en -status: true -dependencies: - config: - - field.storage.media.image_library_widget_image - - media.type.collection_banner - module: - - content_translation - - image -third_party_settings: - content_translation: - translation_sync: - file: '0' - alt: '0' - title: '0' -id: media.collection_banner.image_library_widget_image -field_name: image_library_widget_image -entity_type: media -bundle: collection_banner -label: Image -description: '' -required: true -translatable: true -default_value: { } -default_value_callback: '' -settings: - handler: 'default:file' - handler_settings: { } - file_directory: library/collection/banner - file_extensions: 'png jpg jpeg svg' - max_filesize: '' - max_resolution: '' - min_resolution: '' - alt_field: false - alt_field_required: true - title_field: false - title_field_required: false - default_image: - uuid: '' - alt: '' - title: '' - width: null - height: null -field_type: image diff --git a/config/sync/field.field.media.solution_banner.image_library_widget_image.yml b/config/sync/field.field.media.solution_banner.image_library_widget_image.yml deleted file mode 100644 index 25cbcae755091c394556c37ce46d685341d1bd26..0000000000000000000000000000000000000000 --- a/config/sync/field.field.media.solution_banner.image_library_widget_image.yml +++ /dev/null @@ -1,45 +0,0 @@ -uuid: 4dcd74a3-e218-442e-a30a-8282c708ccf2 -langcode: en -status: true -dependencies: - config: - - field.storage.media.image_library_widget_image - - media.type.solution_banner - module: - - content_translation - - image -third_party_settings: - content_translation: - translation_sync: - file: '0' - alt: '0' - title: '0' -id: media.solution_banner.image_library_widget_image -field_name: image_library_widget_image -entity_type: media -bundle: solution_banner -label: Image -description: '' -required: true -translatable: true -default_value: { } -default_value_callback: '' -settings: - handler: 'default:file' - handler_settings: { } - file_directory: library/solution/banner - file_extensions: 'png jpg jpeg svg' - max_filesize: '' - max_resolution: '' - min_resolution: '' - alt_field: false - alt_field_required: true - title_field: false - title_field_required: false - default_image: - uuid: '' - alt: '' - title: '' - width: null - height: null -field_type: image diff --git a/config/sync/field.field.message.contact_form_submission.field_contact_message.yml b/config/sync/field.field.message.contact_form_submission.field_contact_message.yml index 00296e0019dfaffcc07b3f3604a36d929501d449..3d46d0458a4b28c2510856a6f6cd5797932b77b0 100644 --- a/config/sync/field.field.message.contact_form_submission.field_contact_message.yml +++ b/config/sync/field.field.message.contact_form_submission.field_contact_message.yml @@ -4,18 +4,10 @@ status: true dependencies: config: - field.storage.message.field_contact_message + - filter.format.basic_html - message.template.contact_form_submission module: - - allowed_formats - text -third_party_settings: - allowed_formats: - allowed_formats: - content_editor: basic_html - basic_html: '0' - simple_html: '0' - simple_text: '0' - plain_text: '0' _core: default_config_hash: jZ3D6MOXKmMUj9hS0x2XDafaI1jOgo2b_FVndhlwl48 id: message.contact_form_submission.field_contact_message @@ -28,5 +20,7 @@ required: true translatable: false default_value: { } default_value_callback: '' -settings: { } +settings: + allowed_formats: + - basic_html field_type: text_long diff --git a/config/sync/field.field.message.group_content_subscription.field_group_content.yml b/config/sync/field.field.message.group_content_subscription.field_group_content.yml index 88a4eb3379ade739881132202c6c6993a476761d..ff00da3c4dd70df649dab442964243bb8d46156b 100644 --- a/config/sync/field.field.message.group_content_subscription.field_group_content.yml +++ b/config/sync/field.field.message.group_content_subscription.field_group_content.yml @@ -33,6 +33,7 @@ settings: news: news sort: field: _none + direction: ASC auto_create: false auto_create_bundle: discussion rdf_entity: @@ -42,6 +43,7 @@ settings: solution: solution sort: field: _none + direction: ASC auto_create: false auto_create_bundle: '' download_event: @@ -155,6 +157,12 @@ settings: path_alias: handler: 'default:path_alias' handler_settings: { } + poll: + handler: 'default:poll' + handler_settings: { } + poll_choice: + handler: 'default:poll_choice' + handler_settings: { } rdf_type: handler: 'default:rdf_type' handler_settings: { } diff --git a/config/sync/field.field.meta_entity.topic.description.yml b/config/sync/field.field.meta_entity.topic.description.yml index 804d958c1a30517fb919c5d4328812cf58abae6a..ad5a46b6bbad073f5b15ee0a8268c250b276d15b 100644 --- a/config/sync/field.field.meta_entity.topic.description.yml +++ b/config/sync/field.field.meta_entity.topic.description.yml @@ -4,14 +4,10 @@ status: true dependencies: config: - field.storage.meta_entity.description + - filter.format.basic_html - meta_entity.type.topic module: - - allowed_formats - text -third_party_settings: - allowed_formats: - allowed_formats: - - basic_html id: meta_entity.topic.description field_name: description entity_type: meta_entity @@ -25,4 +21,6 @@ default_value_callback: '' settings: display_summary: true required_summary: false + allowed_formats: + - basic_html field_type: text_with_summary diff --git a/config/sync/field.field.meta_entity.topic.topics_paragraph.yml b/config/sync/field.field.meta_entity.topic.topics_paragraph.yml index 21ec07243cb06aa705d6d7f47e313e3179a500d3..8e0285968de11a3fc0ce6815806a277bf7946684 100644 --- a/config/sync/field.field.meta_entity.topic.topics_paragraph.yml +++ b/config/sync/field.field.meta_entity.topic.topics_paragraph.yml @@ -5,7 +5,15 @@ dependencies: config: - field.storage.meta_entity.topics_paragraph - meta_entity.type.topic - - paragraphs.paragraphs_type.row + - paragraphs.paragraphs_type.call_to_action + - paragraphs.paragraphs_type.configurable_listing + - paragraphs.paragraphs_type.image + - paragraphs.paragraphs_type.json_map + - paragraphs.paragraphs_type.layout + - paragraphs.paragraphs_type.simple_paragraph + - paragraphs.paragraphs_type.testimony + - paragraphs.paragraphs_type.text + - paragraphs.paragraphs_type.video module: - entity_reference_revisions id: meta_entity.topic.topics_paragraph @@ -22,7 +30,15 @@ settings: handler: 'default:paragraph' handler_settings: target_bundles: - row: row + call_to_action: call_to_action + configurable_listing: configurable_listing + image: image + json_map: json_map + simple_paragraph: simple_paragraph + testimony: testimony + video: video + layout: layout + text: text negate: 0 target_bundles_drag_drop: 1_column_layout: @@ -48,38 +64,53 @@ settings: enabled: false call_to_action: weight: 27 - enabled: false + enabled: true carousel: weight: 28 enabled: false configurable_listing: weight: 29 - enabled: false + enabled: true content_listing: weight: 30 enabled: false entity_reference: weight: 31 enabled: false + github_feed: + weight: 35 + enabled: false + heading: + weight: 38 + enabled: false iframe: weight: 32 enabled: false image: weight: 33 - enabled: false + enabled: true json_map: weight: 34 + enabled: true + layout: + weight: 39 + enabled: true + quote: + weight: 43 enabled: false row: weight: 35 - enabled: true + enabled: false simple_paragraph: weight: 36 - enabled: false + enabled: true testimony: weight: 37 - enabled: false + enabled: true + text: + weight: 43 + enabled: true video: weight: 38 - enabled: false + enabled: true field_type: entity_reference_revisions diff --git a/config/sync/field.field.node.custom_page.field_paragraphs_body.yml b/config/sync/field.field.node.custom_page.field_paragraphs_body.yml index 9fffc1d53d7d3c2227774a02f1c48dcc4cbb2319..1c14d117f16ebb987647e45629adb31b8e4345f9 100644 --- a/config/sync/field.field.node.custom_page.field_paragraphs_body.yml +++ b/config/sync/field.field.node.custom_page.field_paragraphs_body.yml @@ -6,13 +6,23 @@ dependencies: - field.storage.node.field_paragraphs_body - node.type.custom_page - paragraphs.paragraphs_type.accordion + - paragraphs.paragraphs_type.call_to_action - paragraphs.paragraphs_type.carousel + - paragraphs.paragraphs_type.configurable_listing - paragraphs.paragraphs_type.content_listing + - paragraphs.paragraphs_type.entity_reference - paragraphs.paragraphs_type.github_feed + - paragraphs.paragraphs_type.heading - paragraphs.paragraphs_type.iframe + - paragraphs.paragraphs_type.image - paragraphs.paragraphs_type.json_map - - paragraphs.paragraphs_type.row + - paragraphs.paragraphs_type.layout + - paragraphs.paragraphs_type.quote + - paragraphs.paragraphs_type.poll - paragraphs.paragraphs_type.simple_paragraph + - paragraphs.paragraphs_type.testimony + - paragraphs.paragraphs_type.text + - paragraphs.paragraphs_type.video module: - entity_reference_revisions id: node.custom_page.field_paragraphs_body @@ -29,74 +39,99 @@ settings: handler: 'default:paragraph' handler_settings: target_bundles: - simple_paragraph: simple_paragraph - json_map: json_map accordion: accordion - content_listing: content_listing - iframe: iframe - row: row + call_to_action: call_to_action carousel: carousel + configurable_listing: configurable_listing + content_listing: content_listing + entity_reference: entity_reference github_feed: github_feed + heading: heading + iframe: iframe + image: image + layout: layout + json_map: json_map + quote: quote + poll: poll + simple_paragraph: simple_paragraph + testimony: testimony + text: text + video: video negate: 0 target_bundles_drag_drop: 1_column_layout: - weight: 14 + weight: -30 enabled: false 2_column_featured_left: - weight: 21 + weight: -27 enabled: false 2_column_featured_right: - weight: 22 + weight: -26 enabled: false 2_column_layout: - weight: 15 + weight: -29 enabled: false 3_column_layout: - weight: 16 + weight: -28 enabled: false accordion: - weight: 5 + weight: -49 enabled: true accordion_item: - weight: 7 + weight: -48 enabled: false call_to_action: - weight: 27 - enabled: false + weight: -47 + enabled: true carousel: - weight: 28 + weight: -46 enabled: true configurable_listing: - weight: 29 - enabled: false + weight: -45 + enabled: true content_listing: - weight: 8 + weight: -44 enabled: true entity_reference: - weight: 21 - enabled: false + weight: -43 + enabled: true github_feed: - weight: 33 + weight: -42 + enabled: true + heading: + weight: -41 enabled: true iframe: - weight: 8 + weight: -40 enabled: true image: - weight: 33 - enabled: false + weight: -39 + enabled: true json_map: - weight: 4 + weight: -37 enabled: true - row: - weight: 24 + layout: + weight: -38 enabled: true + poll: + weight: -37 + enabled: true + quote: + weight: -36 + enabled: true + row: + weight: 44 + enabled: false simple_paragraph: - weight: 2 + weight: -34 enabled: true testimony: - weight: 26 - enabled: false + weight: -33 + enabled: true + text: + weight: -32 + enabled: true video: - weight: 38 - enabled: false + weight: -31 + enabled: true field_type: entity_reference_revisions diff --git a/config/sync/field.field.node.custom_page.field_topic.yml b/config/sync/field.field.node.custom_page.field_topic.yml new file mode 100644 index 0000000000000000000000000000000000000000..de625668872e508ebeb19cd7b0de4d2fb69701c2 --- /dev/null +++ b/config/sync/field.field.node.custom_page.field_topic.yml @@ -0,0 +1,28 @@ +uuid: 2155ed5c-65d1-41c3-9a9f-64116ecb1c1e +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_topic + - node.type.custom_page + - taxonomy.vocabulary.topic +id: node.custom_page.field_topic +field_name: field_topic +entity_type: node +bundle: custom_page +label: Topic +description: 'You can select multiple topics using the "ctrl" key on your keyboard.' +required: true +translatable: false +default_value: { } +default_value_callback: '' +settings: + handler: 'grouped_rdf_taxonomy_term_selection:default' + handler_settings: + target_bundles: + topic: topic + sort: + field: _none + auto_create: false + auto_create_bundle: '' +field_type: entity_reference diff --git a/config/sync/field.field.node.discussion.body.yml b/config/sync/field.field.node.discussion.body.yml index 8f0be852ac4dc808846940b0e863cca349f60391..16c48ab8880d419d86595fdac6788a5eeef97bdf 100644 --- a/config/sync/field.field.node.discussion.body.yml +++ b/config/sync/field.field.node.discussion.body.yml @@ -4,18 +4,10 @@ status: true dependencies: config: - field.storage.node.body + - filter.format.content_editor - node.type.discussion module: - - allowed_formats - text -third_party_settings: - allowed_formats: - allowed_formats: - content_editor: content_editor - basic_html: '0' - simple_html: '0' - simple_text: '0' - plain_text: '0' _core: default_config_hash: HKEbvPv_WwMJJucpr0BLkIKxJD4l7faYhAJNuwQOsUA id: node.discussion.body @@ -31,4 +23,6 @@ default_value_callback: '' settings: display_summary: false required_summary: false + allowed_formats: + - content_editor field_type: text_with_summary diff --git a/config/sync/field.field.node.discussion.field_topic.yml b/config/sync/field.field.node.discussion.field_topic.yml index 11b9f51c9b5ef6bf07f3014013ec98542843ff5f..6ad38517ef9e568709810897bd1ad7e00b4b6c6d 100644 --- a/config/sync/field.field.node.discussion.field_topic.yml +++ b/config/sync/field.field.node.discussion.field_topic.yml @@ -11,7 +11,7 @@ field_name: field_topic entity_type: node bundle: discussion label: Topic -description: '' +description: 'You can select multiple topics using the "ctrl" key on your keyboard.' required: true translatable: false default_value: { } diff --git a/config/sync/field.field.node.document.body.yml b/config/sync/field.field.node.document.body.yml index 223d9257a5e4a32b4df88943b793d8a5a7bd8f77..1b2544f85df60275a318b4af1871bf60c10c51d5 100644 --- a/config/sync/field.field.node.document.body.yml +++ b/config/sync/field.field.node.document.body.yml @@ -4,18 +4,10 @@ status: true dependencies: config: - field.storage.node.body + - filter.format.content_editor - node.type.document module: - - allowed_formats - text -third_party_settings: - allowed_formats: - allowed_formats: - content_editor: content_editor - basic_html: '0' - simple_html: '0' - simple_text: '0' - plain_text: '0' _core: default_config_hash: Iluq9dLZJVwhHk-AN6pjYoApX9RtBwNZzM3VONnobrs id: node.document.body @@ -31,4 +23,6 @@ default_value_callback: '' settings: display_summary: false required_summary: false + allowed_formats: + - content_editor field_type: text_with_summary diff --git a/config/sync/field.field.node.document.field_topic.yml b/config/sync/field.field.node.document.field_topic.yml index 32e10c85eca63d89e03bab80ec61900f1b7149a3..592637e973f7e9fa1079695cacf11165e6dfdcc3 100644 --- a/config/sync/field.field.node.document.field_topic.yml +++ b/config/sync/field.field.node.document.field_topic.yml @@ -11,7 +11,7 @@ field_name: field_topic entity_type: node bundle: document label: Topic -description: '' +description: 'You can select multiple topics using the "ctrl" key on your keyboard.' required: true translatable: false default_value: { } diff --git a/config/sync/field.field.node.event.body.yml b/config/sync/field.field.node.event.body.yml index 7e827034b8b8ed622be980bcea5a66935a2fb001..339b8cf88fbc73e3c8ebc86bef595167cacc7659 100644 --- a/config/sync/field.field.node.event.body.yml +++ b/config/sync/field.field.node.event.body.yml @@ -4,18 +4,10 @@ status: true dependencies: config: - field.storage.node.body + - filter.format.content_editor - node.type.event module: - - allowed_formats - text -third_party_settings: - allowed_formats: - allowed_formats: - content_editor: content_editor - basic_html: '0' - simple_html: '0' - simple_text: '0' - plain_text: '0' _core: default_config_hash: jYn8hvzl6R2WZtRYlFgwoDIGwKLu959GHiQRLXQ3LzQ id: node.event.body @@ -31,4 +23,6 @@ default_value_callback: '' settings: display_summary: false required_summary: false + allowed_formats: + - content_editor field_type: text_with_summary diff --git a/config/sync/field.field.node.event.field_event_agenda.yml b/config/sync/field.field.node.event.field_event_agenda.yml index 9c94ed7d302f33544d15ad11e414049d83b5ee53..f1b4d7f17b020afed482b16b1adb7e75432726ef 100644 --- a/config/sync/field.field.node.event.field_event_agenda.yml +++ b/config/sync/field.field.node.event.field_event_agenda.yml @@ -19,5 +19,6 @@ required: false translatable: false default_value: { } default_value_callback: '' -settings: { } +settings: + allowed_formats: { } field_type: text_long diff --git a/config/sync/field.field.node.event.field_topic.yml b/config/sync/field.field.node.event.field_topic.yml index 78d45b7c580a58a38fe11685358585c4a34e8b9a..384f832f960a7867a99fd885abd8a7b7e5add1f6 100644 --- a/config/sync/field.field.node.event.field_topic.yml +++ b/config/sync/field.field.node.event.field_topic.yml @@ -11,7 +11,7 @@ field_name: field_topic entity_type: node bundle: event label: Topic -description: '' +description: 'You can select multiple topics using the "ctrl" key on your keyboard.' required: true translatable: false default_value: { } diff --git a/config/sync/field.field.node.glossary.field_glossary_definition.yml b/config/sync/field.field.node.glossary.field_glossary_definition.yml index 82b1dd190bcd7a7d023a508bb0f0ef20e5e20650..157ab36b9995d282a757029c6017be1b237b0071 100644 --- a/config/sync/field.field.node.glossary.field_glossary_definition.yml +++ b/config/sync/field.field.node.glossary.field_glossary_definition.yml @@ -4,23 +4,10 @@ status: true dependencies: config: - field.storage.node.field_glossary_definition + - filter.format.glossary_html - node.type.glossary module: - - allowed_formats - text -third_party_settings: - allowed_formats: - allowed_formats: - glossary_html: glossary_html - content_editor: '0' - basic_html: '0' - eira_format: '0' - licence: '0' - restricted_html: '0' - simple_html: '0' - simple_text: '0' - full_html: '0' - plain_text: '0' id: node.glossary.field_glossary_definition field_name: field_glossary_definition entity_type: node @@ -34,4 +21,6 @@ default_value_callback: '' settings: display_summary: true required_summary: false + allowed_formats: + - glossary_html field_type: text_with_summary diff --git a/config/sync/field.field.node.news.body.yml b/config/sync/field.field.node.news.body.yml index 9b64a2405404130e598f42edfb62ec136f86989b..33ba3144910a94686b6ee99492051c6bb570d308 100644 --- a/config/sync/field.field.node.news.body.yml +++ b/config/sync/field.field.node.news.body.yml @@ -4,18 +4,10 @@ status: true dependencies: config: - field.storage.node.body + - filter.format.content_editor - node.type.news module: - - allowed_formats - text -third_party_settings: - allowed_formats: - allowed_formats: - content_editor: content_editor - basic_html: '0' - simple_html: '0' - simple_text: '0' - plain_text: '0' _core: default_config_hash: cW_Qf-63rpY1K5IDOhy9uOMtE6BUV4kmcXnaNW3oS2k id: node.news.body @@ -31,4 +23,6 @@ default_value_callback: '' settings: display_summary: false required_summary: false + allowed_formats: + - content_editor field_type: text_with_summary diff --git a/config/sync/field.field.node.news.field_topic.yml b/config/sync/field.field.node.news.field_topic.yml index 24ea8ab191da9e1476e817fef079dfecdaadfb38..84f8ea5881571db2cd828f97ee2fd00baedf43ee 100644 --- a/config/sync/field.field.node.news.field_topic.yml +++ b/config/sync/field.field.node.news.field_topic.yml @@ -11,7 +11,7 @@ field_name: field_topic entity_type: node bundle: news label: Topic -description: '' +description: 'You can select multiple topics using the "ctrl" key on your keyboard.' required: true translatable: false default_value: { } diff --git a/config/sync/field.field.node.video.body.yml b/config/sync/field.field.node.video.body.yml index b4da1fe474b05015dd7616b4ba1a34f644c810c8..ef6effefc1f41349843730d326572cd7ef4f1a1f 100644 --- a/config/sync/field.field.node.video.body.yml +++ b/config/sync/field.field.node.video.body.yml @@ -4,18 +4,10 @@ status: true dependencies: config: - field.storage.node.body + - filter.format.content_editor - node.type.video module: - - allowed_formats - text -third_party_settings: - allowed_formats: - allowed_formats: - content_editor: content_editor - basic_html: '0' - simple_html: '0' - simple_text: '0' - plain_text: '0' _core: default_config_hash: _Dk4JGjPpVF-1mynH38ioQz0nYGQboP0Z81b81T_JqA id: node.video.body @@ -31,4 +23,6 @@ default_value_callback: '' settings: display_summary: true required_summary: false + allowed_formats: + - content_editor field_type: text_with_summary diff --git a/config/sync/field.field.paragraph.heading.paragraph_heading.yml b/config/sync/field.field.paragraph.heading.paragraph_heading.yml new file mode 100644 index 0000000000000000000000000000000000000000..0d66265c030c70476e0bc50b46baafefb05df91d --- /dev/null +++ b/config/sync/field.field.paragraph.heading.paragraph_heading.yml @@ -0,0 +1,19 @@ +uuid: bbbdaa25-2f93-47c3-ba42-0d63973e2092 +langcode: en +status: true +dependencies: + config: + - field.storage.paragraph.paragraph_heading + - paragraphs.paragraphs_type.heading +id: paragraph.heading.paragraph_heading +field_name: paragraph_heading +entity_type: paragraph +bundle: heading +label: 'Heading text' +description: '' +required: true +translatable: true +default_value: { } +default_value_callback: '' +settings: { } +field_type: string diff --git a/config/sync/field.field.paragraph.poll.field_paragraphs_poll.yml b/config/sync/field.field.paragraph.poll.field_paragraphs_poll.yml new file mode 100644 index 0000000000000000000000000000000000000000..a2ce8d6f2622f32d1143c5db823401a5ad2ae17b --- /dev/null +++ b/config/sync/field.field.paragraph.poll.field_paragraphs_poll.yml @@ -0,0 +1,26 @@ +uuid: 3ead2fb7-ff46-46b2-afd8-600d209ba947 +langcode: en +status: true +dependencies: + config: + - field.storage.paragraph.field_paragraphs_poll + - paragraphs.paragraphs_type.poll +id: paragraph.poll.field_paragraphs_poll +field_name: field_paragraphs_poll +entity_type: paragraph +bundle: poll +label: Poll +description: '' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: + handler: 'default:poll' + handler_settings: + target_bundles: null + sort: + field: _none + direction: ASC + auto_create: false +field_type: entity_reference diff --git a/config/sync/field.field.paragraph.quote.paragraph_quote.yml b/config/sync/field.field.paragraph.quote.paragraph_quote.yml new file mode 100644 index 0000000000000000000000000000000000000000..281b494294087a93be9f5069209c4a225b2a8dbd --- /dev/null +++ b/config/sync/field.field.paragraph.quote.paragraph_quote.yml @@ -0,0 +1,19 @@ +uuid: 18a62210-87cb-4b06-961f-fb929bf6dc66 +langcode: en +status: true +dependencies: + config: + - field.storage.paragraph.paragraph_quote + - paragraphs.paragraphs_type.quote +id: paragraph.quote.paragraph_quote +field_name: paragraph_quote +entity_type: paragraph +bundle: quote +label: Quote +description: '' +required: true +translatable: true +default_value: { } +default_value_callback: '' +settings: { } +field_type: string_long diff --git a/config/sync/field.field.paragraph.simple_paragraph.field_body.yml b/config/sync/field.field.paragraph.simple_paragraph.field_body.yml index 402ba9545797f12abdf2798b48091d09416078c8..680cb2daa0e0c3e5e8ae5b3cf2eaf6700a1562c6 100644 --- a/config/sync/field.field.paragraph.simple_paragraph.field_body.yml +++ b/config/sync/field.field.paragraph.simple_paragraph.field_body.yml @@ -4,22 +4,10 @@ status: true dependencies: config: - field.storage.paragraph.field_body + - filter.format.content_editor - paragraphs.paragraphs_type.simple_paragraph module: - - allowed_formats - text -third_party_settings: - allowed_formats: - allowed_formats: - content_editor: content_editor - basic_html: '0' - eira_format: '0' - licence: '0' - restricted_html: '0' - simple_html: '0' - simple_text: '0' - full_html: '0' - plain_text: '0' id: paragraph.simple_paragraph.field_body field_name: field_body entity_type: paragraph @@ -30,5 +18,7 @@ required: false translatable: false default_value: { } default_value_callback: '' -settings: { } +settings: + allowed_formats: + - content_editor field_type: text_long diff --git a/config/sync/field.field.paragraph.text.field_body.yml b/config/sync/field.field.paragraph.text.field_body.yml new file mode 100644 index 0000000000000000000000000000000000000000..230ad2f941efe9b2d60b9819711f8b51c1a10ed2 --- /dev/null +++ b/config/sync/field.field.paragraph.text.field_body.yml @@ -0,0 +1,24 @@ +uuid: 6908fb34-3f63-48ce-8c6e-e6113b3960d3 +langcode: en +status: true +dependencies: + config: + - field.storage.paragraph.field_body + - paragraphs.paragraphs_type.text + module: + - allowed_formats + - text +id: paragraph.text.field_body +field_name: field_body +entity_type: paragraph +bundle: text +label: Body +description: '' +required: false +translatable: true +default_value: { } +default_value_callback: '' +settings: + allowed_formats: + - text_html +field_type: text_long diff --git a/config/sync/field.field.poll.poll.show_number_of_results.yml b/config/sync/field.field.poll.poll.show_number_of_results.yml new file mode 100644 index 0000000000000000000000000000000000000000..ff084842a9bf24a671c68c3c6728e23981e55678 --- /dev/null +++ b/config/sync/field.field.poll.poll.show_number_of_results.yml @@ -0,0 +1,24 @@ +uuid: ba9ce673-4cac-46c8-bfb9-bec69fe511e4 +langcode: en +status: true +dependencies: + config: + - field.storage.poll.show_number_of_results + module: + - poll +id: poll.poll.show_number_of_results +field_name: show_number_of_results +entity_type: poll +bundle: poll +label: 'Show number of results' +description: '' +required: false +translatable: false +default_value: + - + value: 0 +default_value_callback: '' +settings: + on_label: 'On' + off_label: 'Off' +field_type: boolean diff --git a/config/sync/field.field.rdf_entity.asset_distribution.field_ad_description.yml b/config/sync/field.field.rdf_entity.asset_distribution.field_ad_description.yml index 0eec5d259d4cdbfb925baaa040fb372644014a9c..1377f2d695fb396e1c1a24f56fddcbb763bbfe04 100644 --- a/config/sync/field.field.rdf_entity.asset_distribution.field_ad_description.yml +++ b/config/sync/field.field.rdf_entity.asset_distribution.field_ad_description.yml @@ -4,18 +4,10 @@ status: true dependencies: config: - field.storage.rdf_entity.field_ad_description + - filter.format.content_editor - rdf_entity.rdfentity.asset_distribution module: - - allowed_formats - text -third_party_settings: - allowed_formats: - allowed_formats: - content_editor: content_editor - basic_html: '0' - simple_html: '0' - simple_text: '0' - plain_text: '0' _core: default_config_hash: T6qs0hr-3TjEDYDWEalU2xGftu3yZL8sd9i1hOCHNrk id: rdf_entity.asset_distribution.field_ad_description @@ -28,5 +20,7 @@ required: false translatable: true default_value: { } default_value_callback: '' -settings: { } +settings: + allowed_formats: + - content_editor field_type: text_long diff --git a/config/sync/field.field.rdf_entity.asset_release.field_isr_banner.yml b/config/sync/field.field.rdf_entity.asset_release.field_isr_banner.yml deleted file mode 100644 index c4e5a319d09bd9e939d66f49f04566b01f38f195..0000000000000000000000000000000000000000 --- a/config/sync/field.field.rdf_entity.asset_release.field_isr_banner.yml +++ /dev/null @@ -1,40 +0,0 @@ -uuid: f76aad39-8fd4-4396-8150-3da22025c880 -langcode: en -status: true -dependencies: - config: - - field.storage.rdf_entity.field_isr_banner - - rdf_entity.rdfentity.asset_release - module: - - image -_core: - default_config_hash: 2gELOdMbVzKGci1T8Rquz8S27N_wlJCKQyE_vrd8NN4 -id: rdf_entity.asset_release.field_isr_banner -field_name: field_isr_banner -entity_type: rdf_entity -bundle: asset_release -label: Banner -description: '' -required: true -translatable: false -default_value: { } -default_value_callback: '' -settings: - handler: 'default:file' - handler_settings: { } - file_directory: 'release/banner/[date:custom:Y]-[date:custom:m]' - file_extensions: 'png jpg jpeg svg' - max_filesize: '3 MB' - max_resolution: '' - min_resolution: 2400x770 - alt_field: false - alt_field_required: true - title_field: false - title_field_required: false - default_image: - uuid: '' - alt: '' - title: '' - width: null - height: null -field_type: image diff --git a/config/sync/field.field.rdf_entity.asset_release.field_isr_description.yml b/config/sync/field.field.rdf_entity.asset_release.field_isr_description.yml index a546533823b3c3353646a88f0bc00cb23c5527b8..f0cd5ba2cf2f2307614113571d8e60a1cbd8b577 100644 --- a/config/sync/field.field.rdf_entity.asset_release.field_isr_description.yml +++ b/config/sync/field.field.rdf_entity.asset_release.field_isr_description.yml @@ -4,18 +4,10 @@ status: true dependencies: config: - field.storage.rdf_entity.field_isr_description + - filter.format.content_editor - rdf_entity.rdfentity.asset_release module: - - allowed_formats - text -third_party_settings: - allowed_formats: - allowed_formats: - content_editor: content_editor - basic_html: '0' - simple_html: '0' - simple_text: '0' - plain_text: '0' _core: default_config_hash: LYjA_d5rh_7SOFsC1M3HCIDwLb11TGcgd-EgsniFEXg id: rdf_entity.asset_release.field_isr_description @@ -28,5 +20,7 @@ required: true translatable: true default_value: { } default_value_callback: '' -settings: { } +settings: + allowed_formats: + - content_editor field_type: text_long diff --git a/config/sync/field.field.rdf_entity.asset_release.field_isr_release_notes.yml b/config/sync/field.field.rdf_entity.asset_release.field_isr_release_notes.yml index d9d2034ce3d44e5bec768c86aecab698c97682bd..12a5fb6c92a98476821550f3199a9d741a0ef5ac 100644 --- a/config/sync/field.field.rdf_entity.asset_release.field_isr_release_notes.yml +++ b/config/sync/field.field.rdf_entity.asset_release.field_isr_release_notes.yml @@ -4,18 +4,10 @@ status: true dependencies: config: - field.storage.rdf_entity.field_isr_release_notes + - filter.format.content_editor - rdf_entity.rdfentity.asset_release module: - - allowed_formats - text -third_party_settings: - allowed_formats: - allowed_formats: - content_editor: content_editor - basic_html: '0' - simple_html: '0' - simple_text: '0' - plain_text: '0' _core: default_config_hash: ew3aofQ9ZPzOI7p01SNO4yQLkyuGpYc2ZN5f_DWXaI4 id: rdf_entity.asset_release.field_isr_release_notes @@ -28,5 +20,7 @@ required: false translatable: true default_value: { } default_value_callback: '' -settings: { } +settings: + allowed_formats: + - content_editor field_type: text_long diff --git a/config/sync/field.field.rdf_entity.collection.field_ar_abstract.yml b/config/sync/field.field.rdf_entity.collection.field_ar_abstract.yml index c653f1c3dda8c23fc2f90e10ee6c72bf98ff3e33..51db5a5b33fcbabe21100c30d74e27f46794108d 100644 --- a/config/sync/field.field.rdf_entity.collection.field_ar_abstract.yml +++ b/config/sync/field.field.rdf_entity.collection.field_ar_abstract.yml @@ -4,24 +4,10 @@ status: true dependencies: config: - field.storage.rdf_entity.field_ar_abstract + - filter.format.essential_html - rdf_entity.rdfentity.collection module: - - allowed_formats - text -third_party_settings: - allowed_formats: - allowed_formats: - basic_html: '0' - content_editor: '0' - eira_format: '0' - essential_html: essential_html - full_html: '0' - glossary_html: '0' - licence: '0' - plain_text: '0' - restricted_html: '0' - simple_html: '0' - simple_text: '0' _core: default_config_hash: 1VOX4tmugcY6Vy3QcRmHxAkjRp7JR3DWZznLsDjPFRM id: rdf_entity.collection.field_ar_abstract @@ -34,5 +20,7 @@ required: false translatable: false default_value: { } default_value_callback: '' -settings: { } +settings: + allowed_formats: + - essential_html field_type: text_long diff --git a/config/sync/field.field.rdf_entity.collection.field_ar_banner.yml b/config/sync/field.field.rdf_entity.collection.field_ar_banner.yml deleted file mode 100644 index 1576ef001043c0d4a4d7fb89d9f829e0174b9228..0000000000000000000000000000000000000000 --- a/config/sync/field.field.rdf_entity.collection.field_ar_banner.yml +++ /dev/null @@ -1,40 +0,0 @@ -uuid: dec7af1a-aff4-45cf-ab8c-f20aa58a7444 -langcode: en -status: true -dependencies: - config: - - field.storage.rdf_entity.field_ar_banner - - rdf_entity.rdfentity.collection - module: - - image -_core: - default_config_hash: o7nq58BiOD9v9IsGb7sULob7hMaIL2AUmn49Ws-JUMQ -id: rdf_entity.collection.field_ar_banner -field_name: field_ar_banner -entity_type: rdf_entity -bundle: collection -label: Banner -description: 'For best result the image must be larger than 2400x345 pixels.' -required: false -translatable: false -default_value: { } -default_value_callback: '' -settings: - handler: 'default:file' - handler_settings: { } - file_directory: 'collection/banner/[date:custom:Y]-[date:custom:m]' - file_extensions: 'png jpg jpeg svg' - max_filesize: '10 MB' - max_resolution: '' - min_resolution: '' - alt_field: false - alt_field_required: true - title_field: false - title_field_required: false - default_image: - uuid: '' - alt: '' - title: '' - width: null - height: null -field_type: image diff --git a/config/sync/field.field.rdf_entity.collection.field_ar_description.yml b/config/sync/field.field.rdf_entity.collection.field_ar_description.yml index 75bd353e0be863a60e68a64c4d8f48075be46441..e9920ffdef53d8de9e4c1534e92102bc1828185c 100644 --- a/config/sync/field.field.rdf_entity.collection.field_ar_description.yml +++ b/config/sync/field.field.rdf_entity.collection.field_ar_description.yml @@ -4,18 +4,10 @@ status: true dependencies: config: - field.storage.rdf_entity.field_ar_description + - filter.format.content_editor - rdf_entity.rdfentity.collection module: - - allowed_formats - text -third_party_settings: - allowed_formats: - allowed_formats: - content_editor: content_editor - basic_html: '0' - simple_html: '0' - simple_text: '0' - plain_text: '0' _core: default_config_hash: _Uas7wdvfIb9mVHi4EaSOB6rVDHuuRguoIJuX2A0JsU id: rdf_entity.collection.field_ar_description @@ -28,5 +20,7 @@ required: true translatable: true default_value: { } default_value_callback: '' -settings: { } +settings: + allowed_formats: + - content_editor field_type: text_long diff --git a/config/sync/field.field.rdf_entity.collection.field_topic.yml b/config/sync/field.field.rdf_entity.collection.field_topic.yml index 9fe821889ad3a27f903153d8a55324be5ebe4572..6361db22493884daef5200e3d22665b2af312411 100644 --- a/config/sync/field.field.rdf_entity.collection.field_topic.yml +++ b/config/sync/field.field.rdf_entity.collection.field_topic.yml @@ -11,7 +11,7 @@ field_name: field_topic entity_type: rdf_entity bundle: collection label: Topic -description: '' +description: 'You can select multiple topics using the "ctrl" key on your keyboard.' required: true translatable: false default_value: { } diff --git a/config/sync/field.field.rdf_entity.licence.field_licence_description.yml b/config/sync/field.field.rdf_entity.licence.field_licence_description.yml index c3250d512b460546509b1aa9587743da932dc08c..51cefd74299373144fcf033d563a56350a7d2698 100644 --- a/config/sync/field.field.rdf_entity.licence.field_licence_description.yml +++ b/config/sync/field.field.rdf_entity.licence.field_licence_description.yml @@ -4,18 +4,10 @@ status: true dependencies: config: - field.storage.rdf_entity.field_licence_description + - filter.format.content_editor - rdf_entity.rdfentity.licence module: - - allowed_formats - text -third_party_settings: - allowed_formats: - allowed_formats: - content_editor: content_editor - basic_html: '0' - simple_html: '0' - simple_text: '0' - plain_text: '0' _core: default_config_hash: 7aXfvjSSXzh9QMjbEB6EljZGsPYaRY_cgQ_a2KtE2oA id: rdf_entity.licence.field_licence_description @@ -28,5 +20,7 @@ required: true translatable: false default_value: { } default_value_callback: '' -settings: { } +settings: + allowed_formats: + - content_editor field_type: text_long diff --git a/config/sync/field.field.rdf_entity.solution.field_is_banner.yml b/config/sync/field.field.rdf_entity.solution.field_is_banner.yml deleted file mode 100644 index c34c84e73df9795aab5ebba2e12f714c9510a631..0000000000000000000000000000000000000000 --- a/config/sync/field.field.rdf_entity.solution.field_is_banner.yml +++ /dev/null @@ -1,40 +0,0 @@ -uuid: ec1acbba-c466-4669-99cd-9e6cbe6353fa -langcode: en -status: true -dependencies: - config: - - field.storage.rdf_entity.field_is_banner - - rdf_entity.rdfentity.solution - module: - - image -_core: - default_config_hash: 8vvoQjrgN11lebxARzjWDmKCEc9UE3YQvTfQysg9Rg0 -id: rdf_entity.solution.field_is_banner -field_name: field_is_banner -entity_type: rdf_entity -bundle: solution -label: Banner -description: 'For best result the image must be larger than 2400x345 pixels.' -required: false -translatable: false -default_value: { } -default_value_callback: '' -settings: - handler: 'default:file' - handler_settings: { } - file_directory: 'solution/banner/[date:custom:Y]-[date:custom:m]' - file_extensions: 'png jpg jpeg svg' - max_filesize: '10 MB' - max_resolution: '' - min_resolution: '' - alt_field: false - alt_field_required: true - title_field: false - title_field_required: false - default_image: - uuid: '' - alt: '' - title: '' - width: null - height: null -field_type: image diff --git a/config/sync/field.field.rdf_entity.solution.field_is_description.yml b/config/sync/field.field.rdf_entity.solution.field_is_description.yml index d18a3f99b5f5723614badd9a7ba4db572be736e9..a84dd6f923274716199613b968d31cdcfeedac29 100644 --- a/config/sync/field.field.rdf_entity.solution.field_is_description.yml +++ b/config/sync/field.field.rdf_entity.solution.field_is_description.yml @@ -4,18 +4,10 @@ status: true dependencies: config: - field.storage.rdf_entity.field_is_description + - filter.format.content_editor - rdf_entity.rdfentity.solution module: - - allowed_formats - text -third_party_settings: - allowed_formats: - allowed_formats: - content_editor: content_editor - basic_html: '0' - simple_html: '0' - simple_text: '0' - plain_text: '0' _core: default_config_hash: BsXqm8Mtcj5-Lgv0dKCRdWsNz0mjUbtu2BnOgA1NYfo id: rdf_entity.solution.field_is_description @@ -28,5 +20,7 @@ required: true translatable: true default_value: { } default_value_callback: '' -settings: { } +settings: + allowed_formats: + - content_editor field_type: text_long diff --git a/config/sync/field.field.rdf_entity.solution.field_topic.yml b/config/sync/field.field.rdf_entity.solution.field_topic.yml index 673b47efa4cbc84808539eaeac66fe383ee9a35c..61c58d8230b68963132955c298e4c81d21e2ed16 100644 --- a/config/sync/field.field.rdf_entity.solution.field_topic.yml +++ b/config/sync/field.field.rdf_entity.solution.field_topic.yml @@ -11,7 +11,7 @@ field_name: field_topic entity_type: rdf_entity bundle: solution label: Topic -description: '' +description: 'You can select multiple topics using the "ctrl" key on your keyboard.' required: true translatable: false default_value: { } diff --git a/config/sync/field.field.rdf_entity.spdx_licence.field_spdx_licence_text.yml b/config/sync/field.field.rdf_entity.spdx_licence.field_spdx_licence_text.yml index 7289a1adb630ff7641bc83b69810bf7509d026d1..7b91ae2fbc02dbf1c89c96a677432463c768778f 100644 --- a/config/sync/field.field.rdf_entity.spdx_licence.field_spdx_licence_text.yml +++ b/config/sync/field.field.rdf_entity.spdx_licence.field_spdx_licence_text.yml @@ -19,5 +19,6 @@ required: false translatable: false default_value: { } default_value_callback: '' -settings: { } +settings: + allowed_formats: { } field_type: text_long diff --git a/config/sync/field.field.rdf_meta_entity.eif_perspective.field_eif_description.yml b/config/sync/field.field.rdf_meta_entity.eif_perspective.field_eif_description.yml index 9f742b8098bee6f248ede64dac3384fad5b8c3e9..2ae6b71964b56b17f09383ecdae3e2ea0eb22dce 100644 --- a/config/sync/field.field.rdf_meta_entity.eif_perspective.field_eif_description.yml +++ b/config/sync/field.field.rdf_meta_entity.eif_perspective.field_eif_description.yml @@ -4,14 +4,10 @@ status: true dependencies: config: - field.storage.rdf_meta_entity.field_eif_description + - filter.format.content_editor - rdf_meta_entity.type.eif_perspective module: - - allowed_formats - text -third_party_settings: - allowed_formats: - allowed_formats: - - content_editor id: rdf_meta_entity.eif_perspective.field_eif_description field_name: field_eif_description entity_type: rdf_meta_entity @@ -22,5 +18,7 @@ required: false translatable: false default_value: { } default_value_callback: '' -settings: { } +settings: + allowed_formats: + - content_editor field_type: text_long diff --git a/config/sync/field.storage.message.field_group_content.yml b/config/sync/field.storage.message.field_group_content.yml index c6baccae54866a0f0e44a3f6563047d8f8bb700d..cae8e31e3ea11525777a73d9411b4bd35eca62ab 100644 --- a/config/sync/field.storage.message.field_group_content.yml +++ b/config/sync/field.storage.message.field_group_content.yml @@ -4,9 +4,13 @@ status: true dependencies: module: - dynamic_entity_reference + - field_permissions - message - node - rdf_entity +third_party_settings: + field_permissions: + permission_type: public id: message.field_group_content field_name: field_group_content entity_type: message diff --git a/config/sync/field.storage.paragraph.field_body.yml b/config/sync/field.storage.paragraph.field_body.yml index a99612b9a6518dd92f0dd2500713ad11e2525c28..0480f2457cfc4cf5fe9fe386586e910d8a9e0261 100644 --- a/config/sync/field.storage.paragraph.field_body.yml +++ b/config/sync/field.storage.paragraph.field_body.yml @@ -3,8 +3,12 @@ langcode: en status: true dependencies: module: + - field_permissions - paragraphs - text +third_party_settings: + field_permissions: + permission_type: public id: paragraph.field_body field_name: field_body entity_type: paragraph diff --git a/config/sync/field.storage.paragraph.field_paragraphs_poll.yml b/config/sync/field.storage.paragraph.field_paragraphs_poll.yml new file mode 100644 index 0000000000000000000000000000000000000000..f2f44d3e187273aae7dd94ba60c367037d0c503a --- /dev/null +++ b/config/sync/field.storage.paragraph.field_paragraphs_poll.yml @@ -0,0 +1,24 @@ +uuid: 7ecdbdcc-c7ec-468f-b515-a4c29a88cd5f +langcode: en +status: true +dependencies: + module: + - field_permissions + - paragraphs + - poll +third_party_settings: + field_permissions: + permission_type: public +id: paragraph.field_paragraphs_poll +field_name: field_paragraphs_poll +entity_type: paragraph +type: entity_reference +settings: + target_type: poll +module: core +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/sync/field.storage.paragraph.paragraph_quote.yml b/config/sync/field.storage.paragraph.paragraph_quote.yml new file mode 100644 index 0000000000000000000000000000000000000000..e190b689a2cae670781cf1ffaab6427088d64b2c --- /dev/null +++ b/config/sync/field.storage.paragraph.paragraph_quote.yml @@ -0,0 +1,23 @@ +uuid: ec9b13f2-dfdd-4ebf-940e-8e8430a7880b +langcode: en +status: true +dependencies: + module: + - field_permissions + - paragraphs +third_party_settings: + field_permissions: + permission_type: public +id: paragraph.paragraph_quote +field_name: paragraph_quote +entity_type: paragraph +type: string_long +settings: + case_sensitive: false +module: core +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/sync/field.storage.poll.show_number_of_results.yml b/config/sync/field.storage.poll.show_number_of_results.yml new file mode 100644 index 0000000000000000000000000000000000000000..8c4aa3fb54c6f20c321a8ea04d910395aa5e25cf --- /dev/null +++ b/config/sync/field.storage.poll.show_number_of_results.yml @@ -0,0 +1,22 @@ +uuid: 78b19ef1-3caa-49b6-8e15-1ba40adbd859 +langcode: en +status: true +dependencies: + module: + - field_permissions + - poll +third_party_settings: + field_permissions: + permission_type: public +id: poll.show_number_of_results +field_name: show_number_of_results +entity_type: poll +type: boolean +settings: { } +module: core +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/sync/field.storage.rdf_entity.field_ar_banner.yml b/config/sync/field.storage.rdf_entity.field_ar_banner.yml deleted file mode 100644 index 653f78387cde5a3fe83d6805434de99b3ac0d7ca..0000000000000000000000000000000000000000 --- a/config/sync/field.storage.rdf_entity.field_ar_banner.yml +++ /dev/null @@ -1,52 +0,0 @@ -uuid: a11ab261-a36b-49fe-be2a-623a6867f37b -langcode: en -status: true -dependencies: - module: - - field_permissions - - file - - image - - rdf_entity - - sparql_entity_storage -third_party_settings: - sparql_entity_storage: - mapping: - target_id: - predicate: 'http://xmlns.com/foaf/0.1/Image' - format: 'xsd:string' - alt: - predicate: '' - format: '' - title: - predicate: '' - format: '' - width: - predicate: '' - format: '' - height: - predicate: '' - format: '' - field_permissions: - permission_type: public -id: rdf_entity.field_ar_banner -field_name: field_ar_banner -entity_type: rdf_entity -type: image -settings: - target_type: file - display_field: false - display_default: false - uri_scheme: public - default_image: - uuid: '' - alt: '' - title: '' - width: null - height: null -module: image -locked: false -cardinality: 1 -translatable: false -indexes: { } -persist_with_no_fields: false -custom_storage: false diff --git a/config/sync/field.storage.rdf_entity.field_is_banner.yml b/config/sync/field.storage.rdf_entity.field_is_banner.yml deleted file mode 100644 index 9df9e9df1377abbec204f751b3d071610673f156..0000000000000000000000000000000000000000 --- a/config/sync/field.storage.rdf_entity.field_is_banner.yml +++ /dev/null @@ -1,52 +0,0 @@ -uuid: f48f3e30-acbd-4818-863a-8d08c9d0e7ab -langcode: en -status: true -dependencies: - module: - - field_permissions - - file - - image - - rdf_entity - - sparql_entity_storage -third_party_settings: - sparql_entity_storage: - mapping: - target_id: - predicate: 'http://xmlns.com/foaf/0.1/Image' - format: 'xsd:string' - alt: - predicate: '' - format: '' - title: - predicate: '' - format: '' - width: - predicate: '' - format: '' - height: - predicate: '' - format: '' - field_permissions: - permission_type: public -id: rdf_entity.field_is_banner -field_name: field_is_banner -entity_type: rdf_entity -type: image -settings: - target_type: file - display_field: false - display_default: false - uri_scheme: public - default_image: - uuid: '' - alt: '' - title: '' - width: null - height: null -module: image -locked: false -cardinality: 1 -translatable: false -indexes: { } -persist_with_no_fields: false -custom_storage: false diff --git a/config/sync/field.storage.rdf_entity.field_isr_banner.yml b/config/sync/field.storage.rdf_entity.field_isr_banner.yml deleted file mode 100644 index 6225860be712ac68d82b5f1d5322b808812966fb..0000000000000000000000000000000000000000 --- a/config/sync/field.storage.rdf_entity.field_isr_banner.yml +++ /dev/null @@ -1,52 +0,0 @@ -uuid: d6230c65-28c6-47bd-8dcc-a2457fc7e989 -langcode: en -status: true -dependencies: - module: - - field_permissions - - file - - image - - rdf_entity - - sparql_entity_storage -third_party_settings: - sparql_entity_storage: - mapping: - target_id: - predicate: 'http://xmlns.com/foaf/0.1/Image' - format: 'xsd:integer' - alt: - predicate: '' - format: '' - title: - predicate: '' - format: '' - width: - predicate: '' - format: '' - height: - predicate: '' - format: '' - field_permissions: - permission_type: public -id: rdf_entity.field_isr_banner -field_name: field_isr_banner -entity_type: rdf_entity -type: image -settings: - target_type: file - display_field: false - display_default: false - uri_scheme: public - default_image: - uuid: '' - alt: '' - title: '' - width: null - height: null -module: image -locked: false -cardinality: 1 -translatable: false -indexes: { } -persist_with_no_fields: false -custom_storage: false diff --git a/config/sync/filter.format.content_editor.yml b/config/sync/filter.format.content_editor.yml index 600f13bd0f3a0069057d316411c40a3cb7249471..c087f46dc19e38d9b90b1a4d6381ce6ef430a69f 100644 --- a/config/sync/filter.format.content_editor.yml +++ b/config/sync/filter.format.content_editor.yml @@ -136,3 +136,9 @@ filters: status: true weight: 9 settings: { } + filter_image_lazy_load: + id: filter_image_lazy_load + provider: filter + status: true + weight: -41 + settings: { } diff --git a/config/sync/filter.format.full_html.yml b/config/sync/filter.format.full_html.yml index 74827dbda4e795c738ff7d7edda32bc1b5924597..e02cb32e2142a0aad81edd73d6e7861b1f3a3e3e 100644 --- a/config/sync/filter.format.full_html.yml +++ b/config/sync/filter.format.full_html.yml @@ -34,3 +34,9 @@ filters: status: true weight: 11 settings: { } + filter_image_lazy_load: + id: filter_image_lazy_load + provider: filter + status: true + weight: 12 + settings: { } diff --git a/config/sync/filter.format.glossary_html.yml b/config/sync/filter.format.glossary_html.yml index bf8087a7762cc01947567b3fe2fe2c87b08f8cae..514c9f53f2c74c90cfd68f497fb12b3ed2a0d9ef 100644 --- a/config/sync/filter.format.glossary_html.yml +++ b/config/sync/filter.format.glossary_html.yml @@ -115,3 +115,9 @@ filters: status: false weight: -39 settings: { } + filter_image_lazy_load: + id: filter_image_lazy_load + provider: filter + status: true + weight: -46 + settings: { } diff --git a/config/sync/filter.format.simple_html.yml b/config/sync/filter.format.simple_html.yml index 70aa57b7d20c0e4782db957de9ac5ce8d52958cb..04ac8b89c3d6f9977d94b31f70eb85c6d976619c 100644 --- a/config/sync/filter.format.simple_html.yml +++ b/config/sync/filter.format.simple_html.yml @@ -145,3 +145,9 @@ filters: status: true weight: 9 settings: { } + filter_image_lazy_load: + id: filter_image_lazy_load + provider: filter + status: true + weight: -45 + settings: { } diff --git a/config/sync/filter.format.stripped_html.yml b/config/sync/filter.format.stripped_html.yml index d916ffdf09610158ebddd4687f813ab698462918..f6507651b6cecdc111edfff209fff702d1c511fe 100644 --- a/config/sync/filter.format.stripped_html.yml +++ b/config/sync/filter.format.stripped_html.yml @@ -131,3 +131,9 @@ filters: status: true weight: -37 settings: { } + filter_image_lazy_load: + id: filter_image_lazy_load + provider: filter + status: true + weight: -44 + settings: { } diff --git a/config/sync/filter.format.text_html.yml b/config/sync/filter.format.text_html.yml new file mode 100644 index 0000000000000000000000000000000000000000..e4b772c7ec32d84d6bcef83e4ec4c3cbefde37aa --- /dev/null +++ b/config/sync/filter.format.text_html.yml @@ -0,0 +1,49 @@ +uuid: 5820b94b-a7a7-42b1-ad20-c67c62ad7db6 +langcode: en +status: true +dependencies: + module: + - joinup_video +name: 'Text HTML' +format: text_html +weight: 0 +filters: + filter_html: + id: filter_html + provider: filter + status: true + weight: -10 + settings: + allowed_html: '<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol type start> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id> <p> <br>' + filter_html_help: true + filter_html_nofollow: false + filter_htmlcorrector: + id: filter_htmlcorrector + provider: filter + status: true + weight: 10 + settings: { } + joinup_video: + id: joinup_video + provider: joinup_video + status: false + weight: 0 + settings: + allowed_providers: + joinup_ec_video: 0 + internal_path: 0 + google_docs: 0 + joinup_ec_webcast_video: 0 + prezi: 0 + slideshare: 0 + vimeo: 0 + youtube: 0 + youtube_playlist: 0 + autoplay: false + responsive: true + filter_autop: + id: filter_autop + provider: filter + status: true + weight: 0 + settings: { } diff --git a/config/sync/language.content_settings.media.collection_banner.yml b/config/sync/language.content_settings.media.collection_banner.yml deleted file mode 100644 index 55681d477d2b18a90100ed577860c9ab86d409d1..0000000000000000000000000000000000000000 --- a/config/sync/language.content_settings.media.collection_banner.yml +++ /dev/null @@ -1,11 +0,0 @@ -uuid: 52128fe5-c7f8-4826-96c6-5a9c71aca43d -langcode: en -status: true -dependencies: - config: - - media.type.collection_banner -id: media.collection_banner -target_entity_type_id: media -target_bundle: collection_banner -default_langcode: site_default -language_alterable: false diff --git a/config/sync/language.content_settings.media.solution_banner.yml b/config/sync/language.content_settings.media.solution_banner.yml deleted file mode 100644 index 772fe715a52113cbfcea7f47829d57d988a0d988..0000000000000000000000000000000000000000 --- a/config/sync/language.content_settings.media.solution_banner.yml +++ /dev/null @@ -1,11 +0,0 @@ -uuid: 1e94d571-4ff4-4c4d-a348-afed2fc86a45 -langcode: en -status: true -dependencies: - config: - - media.type.solution_banner -id: media.solution_banner -target_entity_type_id: media -target_bundle: solution_banner -default_langcode: site_default -language_alterable: false diff --git a/config/sync/layout_paragraphs.modal_settings.yml b/config/sync/layout_paragraphs.modal_settings.yml new file mode 100644 index 0000000000000000000000000000000000000000..a249e02acca03771784c0fe88d43bb257f65198f --- /dev/null +++ b/config/sync/layout_paragraphs.modal_settings.yml @@ -0,0 +1,5 @@ +_core: + default_config_hash: z9zmTNfo1bY0sbqYp1OAvqSynu_DXDRdJoZhi7oiS0I +width: 90% +height: auto +autoresize: true diff --git a/config/sync/layout_paragraphs.settings.yml b/config/sync/layout_paragraphs.settings.yml new file mode 100644 index 0000000000000000000000000000000000000000..8c8b9c8fa155c77b8cfc3e595a31785288bed1f6 --- /dev/null +++ b/config/sync/layout_paragraphs.settings.yml @@ -0,0 +1,7 @@ +_core: + default_config_hash: HBy2Jf-2HHsgvIjldhAl07r9vuy879dsx6Cm_LpbPrw +show_paragraph_labels: 0 +show_layout_labels: 0 +paragraph_behaviors_label: Settings +paragraph_behaviors_position: 99 +empty_message: 'No components to add.' diff --git a/config/sync/media.type.collection_banner.yml b/config/sync/media.type.collection_banner.yml deleted file mode 100644 index 706a949a84ef015f7b7d12d84f3cefbd70282b41..0000000000000000000000000000000000000000 --- a/config/sync/media.type.collection_banner.yml +++ /dev/null @@ -1,13 +0,0 @@ -uuid: 144e4010-2c7c-48b5-88ab-d64ce707e3fe -langcode: en -status: true -dependencies: { } -id: collection_banner -label: 'Collection banner' -description: 'Pre-uploaded images to be used as banner for collections.' -source: image -queue_thumbnail_downloads: false -new_revision: false -source_configuration: - source_field: image_library_widget_image -field_map: { } diff --git a/config/sync/media.type.solution_banner.yml b/config/sync/media.type.solution_banner.yml deleted file mode 100644 index 31cee6baa2174bd86b4c700349dd5a13e4771779..0000000000000000000000000000000000000000 --- a/config/sync/media.type.solution_banner.yml +++ /dev/null @@ -1,13 +0,0 @@ -uuid: aec30381-155c-40cf-9cca-07f3c0d9dd7f -langcode: en -status: true -dependencies: { } -id: solution_banner -label: 'Solution banner' -description: 'Pre-uploaded images to be used as banner for solutions.' -source: image -queue_thumbnail_downloads: false -new_revision: false -source_configuration: - source_field: image_library_widget_image -field_map: { } diff --git a/config/sync/og.og_role.rdf_entity-solution-facilitator.yml b/config/sync/og.og_role.rdf_entity-solution-facilitator.yml index 197c2b2ff0304517a51e2ec8edb368fb82b9245f..e972e056e1182eb7de81b5cd1adff005da10635e 100644 --- a/config/sync/og.og_role.rdf_entity-solution-facilitator.yml +++ b/config/sync/og.og_role.rdf_entity-solution-facilitator.yml @@ -25,6 +25,7 @@ permissions: - 'create glossary content' - 'create news content' - 'create paragraph content github_feed' + - 'create paragraph content json_map' - 'delete any asset_distribution rdf_entity' - 'delete any custom_page content' - 'delete any discussion content' @@ -35,6 +36,7 @@ permissions: - 'delete asset_distribution rdf entity' - 'delete contact_information rdf entity' - 'delete paragraph content github_feed' + - 'delete paragraph content json_map' - 'edit any custom_page content' - 'edit any discussion content' - 'edit any document content' @@ -204,6 +206,7 @@ permissions: - 'update own asset_distribution rdf_entity' - 'update own asset_release rdf_entity' - 'update paragraph content github_feed' + - 'update paragraph content json_map' - 'view all revisions' - 'view any unpublished content' - 'view rdf entity' diff --git a/config/sync/og.settings.yml b/config/sync/og.settings.yml index 2796cb07cb7a82b770876c349affc63d62b0ff62..67bbc2704f4fd24ed862bc1b9cadb372f6479966 100644 --- a/config/sync/og.settings.yml +++ b/config/sync/og.settings.yml @@ -15,4 +15,5 @@ group_resolvers: - joinup_subscription_routes - route_group - route_group_content + - group_from_layout_paragraphs auto_add_group_owner_membership: true diff --git a/config/sync/paragraphs.paragraphs_type.accordion.yml b/config/sync/paragraphs.paragraphs_type.accordion.yml index 0104b35e3c1a55e451dee624b176d7a37eb20d13..29c12e71fa8b069fe6e42df064dcb9d0bbf5efa6 100644 --- a/config/sync/paragraphs.paragraphs_type.accordion.yml +++ b/config/sync/paragraphs.paragraphs_type.accordion.yml @@ -1,10 +1,12 @@ uuid: 03451f91-1bc0-4f05-b0a6-95fe6ad5558d langcode: en status: true -dependencies: { } +dependencies: + content: + - 'file:file:78166ebf-203d-4d4b-890b-bb149f659a79' id: accordion label: Accordion -icon_uuid: null -icon_default: null +icon_uuid: 78166ebf-203d-4d4b-890b-bb149f659a79 +icon_default: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktYXJyb3dzLWV4cGFuZCIgdmlld0JveD0iMCAwIDE2IDE2Ij4KICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDhhLjUuNSAwIDAgMSAuNS0uNWgxM2EuNS41IDAgMCAxIDAgMWgtMTNBLjUuNSAwIDAgMSAxIDhaTTcuNjQ2LjE0NmEuNS41IDAgMCAxIC43MDggMGwyIDJhLjUuNSAwIDAgMS0uNzA4LjcwOEw4LjUgMS43MDdWNS41YS41LjUgMCAwIDEtMSAwVjEuNzA3TDYuMzU0IDIuODU0YS41LjUgMCAxIDEtLjcwOC0uNzA4bDItMlpNOCAxMGEuNS41IDAgMCAxIC41LjV2My43OTNsMS4xNDYtMS4xNDdhLjUuNSAwIDAgMSAuNzA4LjcwOGwtMiAyYS41LjUgMCAwIDEtLjcwOCAwbC0yLTJhLjUuNSAwIDAgMSAuNzA4LS43MDhMNy41IDE0LjI5M1YxMC41QS41LjUgMCAwIDEgOCAxMFoiLz4KPC9zdmc+' description: '' behavior_plugins: { } diff --git a/config/sync/paragraphs.paragraphs_type.call_to_action.yml b/config/sync/paragraphs.paragraphs_type.call_to_action.yml index c682b8949e648b10aae5a99c16549b87869c1f24..6b4d2709b991e7b50bd1583802fc247d202d2b1d 100644 --- a/config/sync/paragraphs.paragraphs_type.call_to_action.yml +++ b/config/sync/paragraphs.paragraphs_type.call_to_action.yml @@ -3,10 +3,16 @@ langcode: en status: true dependencies: content: - - 'file:file:3d777bc8-45fb-44bc-b748-8b1fbaf6cca3' + - 'file:file:7f8c979f-de20-4671-aacd-77ee33653645' + module: + - joinup_paragraphs id: call_to_action label: 'Call to action' -icon_uuid: 3d777bc8-45fb-44bc-b748-8b1fbaf6cca3 -icon_default: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktYm94LWFycm93LWluLXVwLXJpZ2h0IiB2aWV3Qm94PSIwIDAgMTYgMTYiPgogIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTYuMzY0IDEzLjVhLjUuNSAwIDAgMCAuNS41SDEzLjVhMS41IDEuNSAwIDAgMCAxLjUtMS41di0xMEExLjUgMS41IDAgMCAwIDEzLjUgMWgtMTBBMS41IDEuNSAwIDAgMCAyIDIuNXY2LjYzNmEuNS41IDAgMSAwIDEgMFYyLjVhLjUuNSAwIDAgMSAuNS0uNWgxMGEuNS41IDAgMCAxIC41LjV2MTBhLjUuNSAwIDAgMS0uNS41SDYuODY0YS41LjUgMCAwIDAtLjUuNXoiLz4KICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMSA1LjVhLjUuNSAwIDAgMC0uNS0uNWgtNWEuNS41IDAgMCAwIDAgMWgzLjc5M2wtOC4xNDcgOC4xNDZhLjUuNSAwIDAgMCAuNzA4LjcwOEwxMCA2LjcwN1YxMC41YS41LjUgMCAwIDAgMSAwdi01eiIvPgo8L3N2Zz4=' +icon_uuid: 7f8c979f-de20-4671-aacd-77ee33653645 +icon_default: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktaGFuZC1pbmRleCIgdmlld0JveD0iMCAwIDE2IDE2Ij4KICA8cGF0aCBkPSJNNi43NSAxYS43NS43NSAwIDAgMSAuNzUuNzVWOGEuNS41IDAgMCAwIDEgMFY1LjQ2N2wuMDg2LS4wMDRjLjMxNy0uMDEyLjYzNy0uMDA4LjgxNi4wMjcuMTM0LjAyNy4yOTQuMDk2LjQ0OC4xODIuMDc3LjA0Mi4xNS4xNDcuMTUuMzE0VjhhLjUuNSAwIDEgMCAxIDBWNi40MzVhNC45IDQuOSAwIDAgMSAuMTA2LS4wMWMuMzE2LS4wMjQuNTg0LS4wMS43MDguMDQuMTE4LjA0Ni4zLjIwNy40ODYuNDMuMDgxLjA5Ni4xNS4xOS4yLjI1OVY4LjVhLjUuNSAwIDAgMCAxIDB2LTFoLjM0MmExIDEgMCAwIDEgLjk5NSAxLjFsLS4yNzEgMi43MTVhMi41IDIuNSAwIDAgMS0uMzE3Ljk5MWwtMS4zOTUgMi40NDJhLjUuNSAwIDAgMS0uNDM0LjI1Mkg2LjAzNWEuNS41IDAgMCAxLS40MTYtLjIyM2wtMS40MzMtMi4xNWExLjUgMS41IDAgMCAxLS4yNDMtLjY2NmwtLjM0NS0zLjEwNWEuNS41IDAgMCAxIC4zOTktLjU0Nkw1IDguMTFWOWEuNS41IDAgMCAwIDEgMFYxLjc1QS43NS43NSAwIDAgMSA2Ljc1IDF6TTguNSA0LjQ2NlYxLjc1YTEuNzUgMS43NSAwIDEgMC0zLjUgMHY1LjM0bC0xLjIuMjRhMS41IDEuNSAwIDAgMC0xLjE5NiAxLjYzNmwuMzQ1IDMuMTA2YTIuNSAyLjUgMCAwIDAgLjQwNSAxLjExbDEuNDMzIDIuMTVBMS41IDEuNSAwIDAgMCA2LjAzNSAxNmg2LjM4NWExLjUgMS41IDAgMCAwIDEuMzAyLS43NTZsMS4zOTUtMi40NDFhMy41IDMuNSAwIDAgMCAuNDQ0LTEuMzg5bC4yNzEtMi43MTVhMiAyIDAgMCAwLTEuOTktMi4xOTloLS41ODFhNS4xMTQgNS4xMTQgMCAwIDAtLjE5NS0uMjQ4Yy0uMTkxLS4yMjktLjUxLS41NjgtLjg4LS43MTYtLjM2NC0uMTQ2LS44NDYtLjEzMi0xLjE1OC0uMTA4bC0uMTMyLjAxMmExLjI2IDEuMjYgMCAwIDAtLjU2LS42NDIgMi42MzIgMi42MzIgMCAwIDAtLjczOC0uMjg4Yy0uMzEtLjA2Mi0uNzM5LS4wNTgtMS4wNS0uMDQ2bC0uMDQ4LjAwMnptMi4wOTQgMi4wMjV6Ii8+Cjwvc3ZnPg==' description: 'Contains a link with custom text.' -behavior_plugins: { } +behavior_plugins: + alignment: + enabled: true + color: + enabled: true diff --git a/config/sync/paragraphs.paragraphs_type.carousel.yml b/config/sync/paragraphs.paragraphs_type.carousel.yml index 5e84b04abebe4a34b0a1e528500ee5c1276b4fb8..edf3e7e3d9c876423111f288942b9d2889e5eeb5 100644 --- a/config/sync/paragraphs.paragraphs_type.carousel.yml +++ b/config/sync/paragraphs.paragraphs_type.carousel.yml @@ -3,10 +3,10 @@ langcode: en status: true dependencies: content: - - 'file:file:e5355076-e27c-4c82-b142-c9d46957cc86' + - 'file:file:721c276e-a38d-47d2-81a9-17e6ccba9d00' id: carousel label: Carousel -icon_uuid: e5355076-e27c-4c82-b142-c9d46957cc86 -icon_default: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktY29sbGVjdGlvbiIgdmlld0JveD0iMCAwIDE2IDE2Ij4KICA8cGF0aCBkPSJNMi41IDMuNWEuNS41IDAgMCAxIDAtMWgxMWEuNS41IDAgMCAxIDAgMWgtMTF6bTItMmEuNS41IDAgMCAxIDAtMWg3YS41LjUgMCAwIDEgMCAxaC03ek0wIDEzYTEuNSAxLjUgMCAwIDAgMS41IDEuNWgxM0ExLjUgMS41IDAgMCAwIDE2IDEzVjZhMS41IDEuNSAwIDAgMC0xLjUtMS41aC0xM0ExLjUgMS41IDAgMCAwIDAgNnY3em0xLjUuNUEuNS41IDAgMCAxIDEgMTNWNmEuNS41IDAgMCAxIC41LS41aDEzYS41LjUgMCAwIDEgLjUuNXY3YS41LjUgMCAwIDEtLjUuNWgtMTN6Ii8+Cjwvc3ZnPg==' +icon_uuid: 721c276e-a38d-47d2-81a9-17e6ccba9d00 +icon_default: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktdmlldy1saXN0IiB2aWV3Qm94PSIwIDAgMTYgMTYiPgogIDxwYXRoIGQ9Ik0zIDQuNWgxMGEyIDIgMCAwIDEgMiAydjNhMiAyIDAgMCAxLTIgMkgzYTIgMiAwIDAgMS0yLTJ2LTNhMiAyIDAgMCAxIDItMnptMCAxYTEgMSAwIDAgMC0xIDF2M2ExIDEgMCAwIDAgMSAxaDEwYTEgMSAwIDAgMCAxLTF2LTNhMSAxIDAgMCAwLTEtMUgzek0xIDJhLjUuNSAwIDAgMSAuNS0uNWgxM2EuNS41IDAgMCAxIDAgMWgtMTNBLjUuNSAwIDAgMSAxIDJ6bTAgMTJhLjUuNSAwIDAgMSAuNS0uNWgxM2EuNS41IDAgMCAxIDAgMWgtMTNBLjUuNSAwIDAgMSAxIDE0eiIvPgo8L3N2Zz4=' description: '' behavior_plugins: { } diff --git a/config/sync/paragraphs.paragraphs_type.configurable_listing.yml b/config/sync/paragraphs.paragraphs_type.configurable_listing.yml index ca2f2f4719738f3cb75c8f339d7ff084b7b53df9..19ccc151bb32253f56036ce9c9e6639e10bad5a5 100644 --- a/config/sync/paragraphs.paragraphs_type.configurable_listing.yml +++ b/config/sync/paragraphs.paragraphs_type.configurable_listing.yml @@ -3,10 +3,10 @@ langcode: en status: true dependencies: content: - - 'file:file:62a127c4-93b9-4b9a-ae41-a631135dc8be' + - 'file:file:18fd415e-b86f-43b9-bf15-3323e07154d9' id: configurable_listing label: 'Configurable listing' -icon_uuid: 62a127c4-93b9-4b9a-ae41-a631135dc8be -icon_default: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktZ3JpZC0xeDItZmlsbCIgdmlld0JveD0iMCAwIDE2IDE2Ij4KICA8cGF0aCBkPSJNMCAxYTEgMSAwIDAgMSAxLTFoNWExIDEgMCAwIDEgMSAxdjE0YTEgMSAwIDAgMS0xIDFIMWExIDEgMCAwIDEtMS0xVjF6bTkgMGExIDEgMCAwIDEgMS0xaDVhMSAxIDAgMCAxIDEgMXY1YTEgMSAwIDAgMS0xIDFoLTVhMSAxIDAgMCAxLTEtMVYxem0wIDlhMSAxIDAgMCAxIDEtMWg1YTEgMSAwIDAgMSAxIDF2NWExIDEgMCAwIDEtMSAxaC01YTEgMSAwIDAgMS0xLTF2LTV6Ii8+Cjwvc3ZnPg==' +icon_uuid: 18fd415e-b86f-43b9-bf15-3323e07154d9 +icon_default: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktZ3JpZC0zeDItZ2FwIiB2aWV3Qm94PSIwIDAgMTYgMTYiPgogIDxwYXRoIGQ9Ik00IDR2MkgyVjRoMnptMSA3VjlhMSAxIDAgMCAwLTEtMUgyYTEgMSAwIDAgMC0xIDF2MmExIDEgMCAwIDAgMSAxaDJhMSAxIDAgMCAwIDEtMXptMC01VjRhMSAxIDAgMCAwLTEtMUgyYTEgMSAwIDAgMC0xIDF2MmExIDEgMCAwIDAgMSAxaDJhMSAxIDAgMCAwIDEtMXptNSA1VjlhMSAxIDAgMCAwLTEtMUg3YTEgMSAwIDAgMC0xIDF2MmExIDEgMCAwIDAgMSAxaDJhMSAxIDAgMCAwIDEtMXptMC01VjRhMSAxIDAgMCAwLTEtMUg3YTEgMSAwIDAgMC0xIDF2MmExIDEgMCAwIDAgMSAxaDJhMSAxIDAgMCAwIDEtMXpNOSA0djJIN1Y0aDJ6bTUgMGgtMnYyaDJWNHpNNCA5djJIMlY5aDJ6bTUgMHYySDdWOWgyem01IDB2MmgtMlY5aDJ6bS0zLTVhMSAxIDAgMCAxIDEtMWgyYTEgMSAwIDAgMSAxIDF2MmExIDEgMCAwIDEtMSAxaC0yYTEgMSAwIDAgMS0xLTFWNHptMSA0YTEgMSAwIDAgMC0xIDF2MmExIDEgMCAwIDAgMSAxaDJhMSAxIDAgMCAwIDEtMVY5YTEgMSAwIDAgMC0xLTFoLTJ6Ii8+Cjwvc3ZnPg==' description: '' behavior_plugins: { } diff --git a/config/sync/paragraphs.paragraphs_type.content_listing.yml b/config/sync/paragraphs.paragraphs_type.content_listing.yml index 4c2b362cfea7047c91117cc86c10b310e1e47da8..9ed9f1d2bb6b9fdc56aa848ee6d70435c9a18ef0 100644 --- a/config/sync/paragraphs.paragraphs_type.content_listing.yml +++ b/config/sync/paragraphs.paragraphs_type.content_listing.yml @@ -1,10 +1,12 @@ uuid: fabc15a3-d09c-4f1a-bbc0-bb0894efeb29 langcode: en status: true -dependencies: { } +dependencies: + content: + - 'file:file:69c5b29b-bace-4240-87c1-8e0b293d2f29' id: content_listing label: 'Content listing' -icon_uuid: null -icon_default: null +icon_uuid: 69c5b29b-bace-4240-87c1-8e0b293d2f29 +icon_default: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktZ3JpZC0zeDItZ2FwIiB2aWV3Qm94PSIwIDAgMTYgMTYiPgogIDxwYXRoIGQ9Ik00IDR2MkgyVjRoMnptMSA3VjlhMSAxIDAgMCAwLTEtMUgyYTEgMSAwIDAgMC0xIDF2MmExIDEgMCAwIDAgMSAxaDJhMSAxIDAgMCAwIDEtMXptMC01VjRhMSAxIDAgMCAwLTEtMUgyYTEgMSAwIDAgMC0xIDF2MmExIDEgMCAwIDAgMSAxaDJhMSAxIDAgMCAwIDEtMXptNSA1VjlhMSAxIDAgMCAwLTEtMUg3YTEgMSAwIDAgMC0xIDF2MmExIDEgMCAwIDAgMSAxaDJhMSAxIDAgMCAwIDEtMXptMC01VjRhMSAxIDAgMCAwLTEtMUg3YTEgMSAwIDAgMC0xIDF2MmExIDEgMCAwIDAgMSAxaDJhMSAxIDAgMCAwIDEtMXpNOSA0djJIN1Y0aDJ6bTUgMGgtMnYyaDJWNHpNNCA5djJIMlY5aDJ6bTUgMHYySDdWOWgyem01IDB2MmgtMlY5aDJ6bS0zLTVhMSAxIDAgMCAxIDEtMWgyYTEgMSAwIDAgMSAxIDF2MmExIDEgMCAwIDEtMSAxaC0yYTEgMSAwIDAgMS0xLTFWNHptMSA0YTEgMSAwIDAgMC0xIDF2MmExIDEgMCAwIDAgMSAxaDJhMSAxIDAgMCAwIDEtMVY5YTEgMSAwIDAgMC0xLTFoLTJ6Ii8+Cjwvc3ZnPg==' description: '' behavior_plugins: { } diff --git a/config/sync/paragraphs.paragraphs_type.heading.yml b/config/sync/paragraphs.paragraphs_type.heading.yml new file mode 100644 index 0000000000000000000000000000000000000000..4b3afa57d1f63480a474d8309b646f956a0e2e5c --- /dev/null +++ b/config/sync/paragraphs.paragraphs_type.heading.yml @@ -0,0 +1,16 @@ +uuid: cd8b9a89-ac40-4c0d-bd70-211c62fee399 +langcode: en +status: true +dependencies: + content: + - 'file:file:220fc8ec-d4ee-430e-8c43-dd9567849753' + module: + - joinup_paragraphs +id: heading +label: Heading +icon_uuid: 220fc8ec-d4ee-430e-8c43-dd9567849753 +icon_default: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktdHlwZS1oMiIgdmlld0JveD0iMCAwIDE2IDE2Ij4KICA8cGF0aCBkPSJNNy42MzggMTNWMy42NjlINi4zOFY3LjYySDEuNzU5VjMuNjdILjVWMTNoMS4yNThWOC43MjhoNC42MlYxM2gxLjI1OXptMy4wMjItNi43MzN2LS4wNDhjMC0uODg5LjYzLTEuNjY4IDEuNzE2LTEuNjY4Ljk1NyAwIDEuNjc1LjYwOCAxLjY3NSAxLjU3MiAwIC44NTUtLjU1NCAxLjUwNC0xLjA2NyAyLjA4NWwtMy41MTMgMy45OTlWMTNIMTUuNXYtMS4wOTRoLTQuMjQ1di0uMDc1bDIuNDgxLTIuODQ0Yy44NzUtLjk5OCAxLjU4Ni0xLjc4NCAxLjU4Ni0yLjk1MyAwLTEuNDYzLTEuMTU1LTIuNTU2LTIuOTE5LTIuNTU2LTEuOTQxIDAtMi45NjYgMS4zMjYtMi45NjYgMi43NHYuMDQ5aDEuMjIzeiIvPgo8L3N2Zz4=' +description: '' +behavior_plugins: + heading_behavior: + enabled: true diff --git a/config/sync/paragraphs.paragraphs_type.iframe.yml b/config/sync/paragraphs.paragraphs_type.iframe.yml index d48c4dd733b1991be73cf536a5ab4ef690f2e6a1..bef37972bf4f815e0e84e4fd2ef17e71a612893b 100644 --- a/config/sync/paragraphs.paragraphs_type.iframe.yml +++ b/config/sync/paragraphs.paragraphs_type.iframe.yml @@ -1,10 +1,12 @@ uuid: 80a0ae9e-1d57-46d9-a848-ea6d99405c25 langcode: en status: true -dependencies: { } +dependencies: + content: + - 'file:file:3b91284c-5467-45ce-b65c-6f102edecba1' id: iframe label: IFrame -icon_uuid: null -icon_default: null +icon_uuid: 3b91284c-5467-45ce-b65c-6f102edecba1 +icon_default: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktbGF5b3V0LXRleHQtd2luZG93LXJldmVyc2UiIHZpZXdCb3g9IjAgMCAxNiAxNiI+CiAgPHBhdGggZD0iTTEzIDYuNWEuNS41IDAgMCAwLS41LS41aC01YS41LjUgMCAwIDAgMCAxaDVhLjUuNSAwIDAgMCAuNS0uNXptMCAzYS41LjUgMCAwIDAtLjUtLjVoLTVhLjUuNSAwIDAgMCAwIDFoNWEuNS41IDAgMCAwIC41LS41em0tLjUgMi41YS41LjUgMCAwIDEgMCAxaC01YS41LjUgMCAwIDEgMC0xaDV6Ii8+CiAgPHBhdGggZD0iTTE0IDBhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlYyYTIgMiAwIDAgMSAyLTJoMTJ6TTIgMWExIDEgMCAwIDAtMSAxdjFoMTRWMmExIDEgMCAwIDAtMS0xSDJ6TTEgNHYxMGExIDEgMCAwIDAgMSAxaDJWNEgxem00IDB2MTFoOWExIDEgMCAwIDAgMS0xVjRINXoiLz4KPC9zdmc+' description: 'Provides an iframe field.' behavior_plugins: { } diff --git a/config/sync/paragraphs.paragraphs_type.image.yml b/config/sync/paragraphs.paragraphs_type.image.yml index 53f3be6c11102ddcf8a679b30154f3c768df0ae7..0665f6f2c6dd2e256e2196ec47b40694ca596cf8 100644 --- a/config/sync/paragraphs.paragraphs_type.image.yml +++ b/config/sync/paragraphs.paragraphs_type.image.yml @@ -3,10 +3,10 @@ langcode: en status: true dependencies: content: - - 'file:file:6a8bbedc-4129-4ece-9dca-2c5d4b7bc149' + - 'file:file:99e28dd8-a779-43ae-b3eb-23333dcf50b5' id: image label: Image -icon_uuid: 6a8bbedc-4129-4ece-9dca-2c5d4b7bc149 -icon_default: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktY2FyZC1pbWFnZSIgdmlld0JveD0iMCAwIDE2IDE2Ij4KICA8cGF0aCBkPSJNNi4wMDIgNS41YTEuNSAxLjUgMCAxIDEtMyAwIDEuNSAxLjUgMCAwIDEgMyAweiIvPgogIDxwYXRoIGQ9Ik0xLjUgMkExLjUgMS41IDAgMCAwIDAgMy41djlBMS41IDEuNSAwIDAgMCAxLjUgMTRoMTNhMS41IDEuNSAwIDAgMCAxLjUtMS41di05QTEuNSAxLjUgMCAwIDAgMTQuNSAyaC0xM3ptMTMgMWEuNS41IDAgMCAxIC41LjV2NmwtMy43NzUtMS45NDdhLjUuNSAwIDAgMC0uNTc3LjA5M2wtMy43MSAzLjcxLTIuNjYtMS43NzJhLjUuNSAwIDAgMC0uNjMuMDYyTDEuMDAyIDEydi41NEEuNTA1LjUwNSAwIDAgMSAxIDEyLjV2LTlhLjUuNSAwIDAgMSAuNS0uNWgxM3oiLz4KPC9zdmc+' +icon_uuid: 99e28dd8-a779-43ae-b3eb-23333dcf50b5 +icon_default: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktaW1hZ2UiIHZpZXdCb3g9IjAgMCAxNiAxNiI+CiAgPHBhdGggZD0iTTYuMDAyIDUuNWExLjUgMS41IDAgMSAxLTMgMCAxLjUgMS41IDAgMCAxIDMgMHoiLz4KICA8cGF0aCBkPSJNMi4wMDIgMWEyIDIgMCAwIDAtMiAydjEwYTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlYzYTIgMiAwIDAgMC0yLTJoLTEyem0xMiAxYTEgMSAwIDAgMSAxIDF2Ni41bC0zLjc3Ny0xLjk0N2EuNS41IDAgMCAwLS41NzcuMDkzbC0zLjcxIDMuNzEtMi42Ni0xLjc3MmEuNS41IDAgMCAwLS42My4wNjJMMS4wMDIgMTJWM2ExIDEgMCAwIDEgMS0xaDEyeiIvPgo8L3N2Zz4=' description: '' behavior_plugins: { } diff --git a/config/sync/paragraphs.paragraphs_type.json_map.yml b/config/sync/paragraphs.paragraphs_type.json_map.yml index f45e22e2f47733f833fbbf95b3efeb5e577d3e32..e66b25af13fcf3a554fec669b70349149e8612af 100644 --- a/config/sync/paragraphs.paragraphs_type.json_map.yml +++ b/config/sync/paragraphs.paragraphs_type.json_map.yml @@ -1,10 +1,12 @@ uuid: 5bc8a16f-e415-436f-873e-ab3569e946e3 langcode: en status: true -dependencies: { } +dependencies: + content: + - 'file:file:a79e2844-0401-4502-b720-45a7450ca9c1' id: json_map label: Map -icon_uuid: null -icon_default: null +icon_uuid: a79e2844-0401-4502-b720-45a7450ca9c1 +icon_default: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktZ2VvLWFsdCIgdmlld0JveD0iMCAwIDE2IDE2Ij4KICA8cGF0aCBkPSJNMTIuMTY2IDguOTRjLS41MjQgMS4wNjItMS4yMzQgMi4xMi0xLjk2IDMuMDdBMzEuNDkzIDMxLjQ5MyAwIDAgMSA4IDE0LjU4YTMxLjQ4MSAzMS40ODEgMCAwIDEtMi4yMDYtMi41N2MtLjcyNi0uOTUtMS40MzYtMi4wMDgtMS45Ni0zLjA3QzMuMzA0IDcuODY3IDMgNi44NjIgMyA2YTUgNSAwIDAgMSAxMCAwYzAgLjg2Mi0uMzA1IDEuODY3LS44MzQgMi45NHpNOCAxNnM2LTUuNjg2IDYtMTBBNiA2IDAgMCAwIDIgNmMwIDQuMzE0IDYgMTAgNiAxMHoiLz4KICA8cGF0aCBkPSJNOCA4YTIgMiAwIDEgMSAwLTQgMiAyIDAgMCAxIDAgNHptMCAxYTMgMyAwIDEgMCAwLTYgMyAzIDAgMCAwIDAgNnoiLz4KPC9zdmc+' description: 'Displays a Webtools map widget. See https://webgate.ec.europa.eu/fpfis/wikis/display/webtools/Map' behavior_plugins: { } diff --git a/config/sync/paragraphs.paragraphs_type.layout.yml b/config/sync/paragraphs.paragraphs_type.layout.yml new file mode 100644 index 0000000000000000000000000000000000000000..6543026a9efb2c865e512f14540deae4aa321368 --- /dev/null +++ b/config/sync/paragraphs.paragraphs_type.layout.yml @@ -0,0 +1,26 @@ +uuid: 5ec8d789-7599-4bdf-a9d7-95f131df0e69 +langcode: en +status: true +dependencies: + content: + - 'file:file:22cccfb4-74ad-45aa-a7d4-a9571f5a2a9f' + module: + - joinup_paragraphs + - layout_paragraphs +id: layout +label: Layout +icon_uuid: 22cccfb4-74ad-45aa-a7d4-a9571f5a2a9f +icon_default: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktZ3JpZC0xeDIiIHZpZXdCb3g9IjAgMCAxNiAxNiI+CiAgPHBhdGggZD0iTTYgMUgxdjE0aDVWMXptOSAwaC01djVoNVYxem0wIDl2NWgtNXYtNWg1ek0wIDFhMSAxIDAgMCAxIDEtMWg1YTEgMSAwIDAgMSAxIDF2MTRhMSAxIDAgMCAxLTEgMUgxYTEgMSAwIDAgMS0xLTFWMXptOSAwYTEgMSAwIDAgMSAxLTFoNWExIDEgMCAwIDEgMSAxdjVhMSAxIDAgMCAxLTEgMWgtNWExIDEgMCAwIDEtMS0xVjF6bTEgOGExIDEgMCAwIDAtMSAxdjVhMSAxIDAgMCAwIDEgMWg1YTEgMSAwIDAgMCAxLTF2LTVhMSAxIDAgMCAwLTEtMWgtNXoiLz4KPC9zdmc+' +description: 'This paragraph type allows to choose between different layouts in which you can then place your paragraphs with simple drag&drop.' +behavior_plugins: + background_theme: + enabled: true + extra_class: + enabled: true + layout_paragraphs: + enabled: true + available_layouts: + layout_onecol: 'One column' + layout_twocol_section: 'Two column' + layout_threecol_section: 'Three column' + layout_fourcol_section: 'Four column' diff --git a/config/sync/paragraphs.paragraphs_type.poll.yml b/config/sync/paragraphs.paragraphs_type.poll.yml new file mode 100644 index 0000000000000000000000000000000000000000..0031ec94e82aee15f6bc64fdb93abbcac225dd97 --- /dev/null +++ b/config/sync/paragraphs.paragraphs_type.poll.yml @@ -0,0 +1,12 @@ +uuid: ac5dd4ed-8c51-47a9-a49a-6b053a0057d6 +langcode: en +status: true +dependencies: + content: + - 'file:file:85a9c01e-d315-4322-9515-eb6fa61dce17' +id: poll +label: Poll +icon_uuid: 85a9c01e-d315-4322-9515-eb6fa61dce17 +icon_default: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktYmFyLWNoYXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiPgogIDxwYXRoIGQ9Ik00IDExSDJ2M2gydi0zem01LTRIN3Y3aDJWN3ptNS01djEyaC0yVjJoMnptLTItMWExIDEgMCAwIDAtMSAxdjEyYTEgMSAwIDAgMCAxIDFoMmExIDEgMCAwIDAgMS0xVjJhMSAxIDAgMCAwLTEtMWgtMnpNNiA3YTEgMSAwIDAgMSAxLTFoMmExIDEgMCAwIDEgMSAxdjdhMSAxIDAgMCAxLTEgMUg3YTEgMSAwIDAgMS0xLTFWN3ptLTUgNGExIDEgMCAwIDEgMS0xaDJhMSAxIDAgMCAxIDEgMXYzYTEgMSAwIDAgMS0xIDFIMmExIDEgMCAwIDEtMS0xdi0zeiIvPgo8L3N2Zz4=' +description: 'It allows capture votes on different topics in the form of multiple choice questions.' +behavior_plugins: { } diff --git a/config/sync/paragraphs.paragraphs_type.quote.yml b/config/sync/paragraphs.paragraphs_type.quote.yml new file mode 100644 index 0000000000000000000000000000000000000000..36e832e2c32b1118addca0ceb8ffe8eb53afa2a6 --- /dev/null +++ b/config/sync/paragraphs.paragraphs_type.quote.yml @@ -0,0 +1,12 @@ +uuid: b7610649-c194-48f2-9897-da2de600ea3c +langcode: en +status: true +dependencies: + content: + - 'file:file:10c2591f-feb9-4954-b775-059f2476669e' +id: quote +label: Quote +icon_uuid: 10c2591f-feb9-4954-b775-059f2476669e +icon_default: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktcXVvdGUiIHZpZXdCb3g9IjAgMCAxNiAxNiI+CiAgPHBhdGggZD0iTTEyIDEyYTEgMSAwIDAgMCAxLTFWOC41NThhMSAxIDAgMCAwLTEtMWgtMS4zODhjMC0uMzUxLjAyMS0uNzAzLjA2Mi0xLjA1NC4wNjItLjM3Mi4xNjYtLjcwMy4zMS0uOTkyLjE0NS0uMjkuMzMxLS41MTcuNTU5LS42ODMuMjI3LS4xODYuNTE2LS4yNzkuODY4LS4yNzlWM2MtLjU3OSAwLTEuMDg1LjEyNC0xLjUyLjM3MmEzLjMyMiAzLjMyMiAwIDAgMC0xLjA4NS45OTIgNC45MiA0LjkyIDAgMCAwLS42MiAxLjQ1OEE3LjcxMiA3LjcxMiAwIDAgMCA5IDcuNTU4VjExYTEgMSAwIDAgMCAxIDFoMlptLTYgMGExIDEgMCAwIDAgMS0xVjguNTU4YTEgMSAwIDAgMC0xLTFINC42MTJjMC0uMzUxLjAyMS0uNzAzLjA2Mi0xLjA1NC4wNjItLjM3Mi4xNjYtLjcwMy4zMS0uOTkyLjE0NS0uMjkuMzMxLS41MTcuNTU5LS42ODMuMjI3LS4xODYuNTE2LS4yNzkuODY4LS4yNzlWM2MtLjU3OSAwLTEuMDg1LjEyNC0xLjUyLjM3MmEzLjMyMiAzLjMyMiAwIDAgMC0xLjA4NS45OTIgNC45MiA0LjkyIDAgMCAwLS42MiAxLjQ1OEE3LjcxMiA3LjcxMiAwIDAgMCAzIDcuNTU4VjExYTEgMSAwIDAgMCAxIDFoMloiLz4KPC9zdmc+' +description: '' +behavior_plugins: { } diff --git a/config/sync/paragraphs.paragraphs_type.testimony.yml b/config/sync/paragraphs.paragraphs_type.testimony.yml index 72af4d9b8d9086f4fe9140c8e9a0286caaae6ee5..1afe7a2d206a8076a2a3367b7d32e506ddea4646 100644 --- a/config/sync/paragraphs.paragraphs_type.testimony.yml +++ b/config/sync/paragraphs.paragraphs_type.testimony.yml @@ -3,10 +3,10 @@ langcode: en status: true dependencies: content: - - 'file:file:7d16eeb4-4c0a-40be-a074-932603e225c2' + - 'file:file:8164c872-cdaf-486c-8740-9797a9d74e9a' id: testimony label: Testimony -icon_uuid: 7d16eeb4-4c0a-40be-a074-932603e225c2 +icon_uuid: 8164c872-cdaf-486c-8740-9797a9d74e9a icon_default: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktYmxvY2txdW90ZS1sZWZ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiPgogIDxwYXRoIGQ9Ik0yLjUgM2EuNS41IDAgMCAwIDAgMWgxMWEuNS41IDAgMCAwIDAtMWgtMTF6bTUgM2EuNS41IDAgMCAwIDAgMWg2YS41LjUgMCAwIDAgMC0xaC02em0wIDNhLjUuNSAwIDAgMCAwIDFoNmEuNS41IDAgMCAwIDAtMWgtNnptLTUgM2EuNS41IDAgMCAwIDAgMWgxMWEuNS41IDAgMCAwIDAtMWgtMTF6bS43OS01LjM3M2MuMTEyLS4wNzguMjYtLjE3LjQ0NC0uMjc1TDMuNTI0IDZjLS4xMjIuMDc0LS4yNzIuMTctLjQ1Mi4yODctLjE4LjExNy0uMzUuMjYtLjUxLjQyOGEyLjQyNSAyLjQyNSAwIDAgMC0uMzk4LjU2MmMtLjExLjIwNy0uMTY0LjQzOC0uMTY0LjY5MiAwIC4zNi4wNzIuNjUuMjE3Ljg3My4xNDQuMjE5LjM4NS4zMjguNzIuMzI4LjIxNSAwIC4zODMtLjA3LjUwNC0uMjExYS42OTcuNjk3IDAgMCAwIC4xODgtLjQ2M2MwLS4yMy0uMDctLjQwNC0uMjExLS41MjEtLjEzNy0uMTIxLS4zMjYtLjE4Mi0uNTY4LS4xODJoLS4yODJjLjAyNC0uMjAzLjA2NS0uMzcuMTIzLS40OThhMS4zOCAxLjM4IDAgMCAxIC4yNTItLjM3IDEuOTQgMS45NCAwIDAgMSAuMzQ2LS4yOTh6bTIuMTY3IDBjLjExMy0uMDc4LjI2Mi0uMTcuNDQ1LS4yNzVMNS42OTIgNmMtLjEyMi4wNzQtLjI3Mi4xNy0uNDUyLjI4Ny0uMTguMTE3LS4zNS4yNi0uNTEuNDI4YTIuNDI1IDIuNDI1IDAgMCAwLS4zOTguNTYyYy0uMTEuMjA3LS4xNjQuNDM4LS4xNjQuNjkyIDAgLjM2LjA3Mi42NS4yMTcuODczLjE0NC4yMTkuMzg1LjMyOC43Mi4zMjguMjE1IDAgLjM4My0uMDcuNTA0LS4yMTFhLjY5Ny42OTcgMCAwIDAgLjE4OC0uNDYzYzAtLjIzLS4wNy0uNDA0LS4yMTEtLjUyMS0uMTM3LS4xMjEtLjMyNi0uMTgyLS41NjgtLjE4MmgtLjI4MmExLjc1IDEuNzUgMCAwIDEgLjExOC0uNDkyYy4wNTgtLjEzLjE0NC0uMjU0LjI1Ny0uMzc1YTEuOTQgMS45NCAwIDAgMSAuMzQ2LS4zeiIvPgo8L3N2Zz4=' description: '' behavior_plugins: { } diff --git a/config/sync/paragraphs.paragraphs_type.text.yml b/config/sync/paragraphs.paragraphs_type.text.yml new file mode 100644 index 0000000000000000000000000000000000000000..671eae3a7f21152d2cbeb09c60540590844cf5a4 --- /dev/null +++ b/config/sync/paragraphs.paragraphs_type.text.yml @@ -0,0 +1,12 @@ +uuid: a336c502-908d-478b-ac58-dad324792ccd +langcode: en +status: true +dependencies: + content: + - 'file:file:a8987c00-6222-4c54-8467-b6ed9f433452' +id: text +label: Text +icon_uuid: a8987c00-6222-4c54-8467-b6ed9f433452 +icon_default: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAON0lEQVR4Xu3df8iddRnH8Zk4dM61fii0tDCVlH5QtIqcCGZBW1mg2NKaDP8YhQVKslljIhKrHEZFWRAyzLGB6B+1oCWYmENiUURRTDIbmph/+AM23RqYfa6H5/yxni2e+7qfc1/XfX3fN3zh+eN8z/W9Xt97n53zPPc590mLOBBAoFmBk5rtnMYRQGARAcBJgEDDAgRAw5tP6wgQAJwDCDQsQAA0vPm0jgABwDmAQMMCBEDDm0/rCBAAnAMINCxAADS8+bSOAAHAOYBAwwIEQMObT+sIEACcAwg0LEAANLz5tI4AAcA5gEDDAgRAw5tP6wgQAJwDCDQsQAA0vPm0jgABwDmAQMMCBEDDm0/rCBAAnAMINCxAADS8+bSOAAHAOYBAwwIEQMObT+sIEACcAwg0LEAANLz5tI4AAcA5gEDDAgRAw5tP6wgQAJwDCDQsQAA0vPm0jgABwDmAQMMCBEDDm0/rCBAAnAMINCxAADS8+bSOAAHAOYBAwwIEQMObT+sIEACcAwg0LEAANLz5tI4AAcA5gEDDAgRAw5tP6wgQAJwDCDQsQAA0vPm0jgABwDmAQMMCBEDDm0/rCBAAnAMINCxAADS8+bSOAAHAOYBAwwIEQMObT+sIEACcAwg0LEAANLz5tI4AAcA5gEDDAgRAw5tP6wgQAJwDCDQskD0ALtXerNK4QONsjcUN7xWtj0fgqJb6tMYTGns1Hs269IwBcLKwNmjcpnFWVjjWhUAHgef02Fs17tZ4tcO8qT80WwCcro53a1w29c4pgMDwAg+r5BUaLw9f+vgVMwXAEi3xEY2VWXBYBwJTENg3+x/cK1N47s5PmSkAHtDqr+zcARMQGJ/A/Vry1RmWnSUA1gtjewYQ1oDAQALrVGfHQLVOWCZDANhL/wMaZ0ZjUB+BAQWeUa3zNY4MWHNOqQwBcJ1WdU8kArURCBIIfxWQIQDuy/J+KOgkoGy7ArvU+rWR7WcIALtY4rxIBGojECTwuOpeGFR7pmyGALCrpk6JRKA2AkECB1V3WVDtNAFwSCuxC4A4EGhNwM79MyKbzvAK4EkBnBuJQG0EggTs7a99ziXsyBAAdlHEVWECFEYgTsB+Ab42rnyO3wGsFwAXAUWeBdSOErA/gd8bVdzqZngFsFTrsI9OLo+EoDYCAwu8pHorNA4PXPeYchkCwBa0ReP2SAhqIzCwwGbV2zpwzTnlsgSAfdHHQxqXRINQH4EBBOxLQi7XsD+Bhx5ZAsAQ7M8hezQuDhWhOALTFbB//Gs07BqA8CNTAEwwtumHm8NlWAACCy9wh55y08I/rf8ZMwaAdXORxp0aq/2tMROBNAL2LVcbNfanWdHsQrIGwMTpHP1wjYZdL82XgmY7e1jPiQQmXwpq/+B3athHf1Me2QMgJRqLQqCKAAFQZSfpAwGHAAHgQGMKAlUECIAqO0kfCDgECAAHGlMQqCJAAFTZSfpAwCFAADjQmIJAFQECoMpO0gcCDgECwIHGFASqCBAAVXaSPhBwCBAADjSmIFBFgACospP0gYBDgABwoDEFgSoCBECVnaQPBBwCBIADjSkIVBEgAKrsJH0g4BAgABxoTEGgigABUGUn6QMBhwAB4EBjCgJVBAiAKjtJHwg4BAgABxpTEKgikDkA3ifkT2us0rBbKHML8SpnXRt92G3v7fbfdiOQn2n8KWPbGQPgrYL6jsZnM4KxJgScAnYr8Bs1nnXOn8q0bAFg3///a423TKVbnhSBWAG7C/ZHZ18ZxK5ktnqmAHiH1vQ7jTemkGERCExH4Hk97Qc1/jGdp+/2rFkCYImW/VuN93RbPo9GYJQC9vuAD2n8O3r1WQLA7pP+tWgM6iMwoMA3VGvLgPWOWypDAKzQyv6ucWo0BvURGFDgiGrZX7b+NWDNOaUyBMBNWpX91p8DgdYE7K8C34tsOkMAPCiAj0ciUBuBIIFfqu6aoNozZTMEwFNah90GnAOB1gQOzL4NCOs7QwC8FtY9hRGIFTis8vYXsLAjQwC8qO6XhwlQGIE4gRdU+k1x5XO8BdgvgHdGIlAbgSCBv6ruu4Jqz5TN8Argp1rHukgEaiMQJLBdda8Pqp0mAD6lleyORKA2AkECq1V3T1DtNAHwOq3E3gbYR345EGhF4G9q1N76hv4SPMNbANvwz2vsaGXn6RMBCazVsI8Ihx5ZAsAQfqBxQ6gGxREYRsCu/rOrAMOPTAFgGN/UuCVchQUgMD0BO8e/Pr2n7/bM2QLAVv9JjR9rnN2tFR6NQGqBf2p1GzTs8t80R8YAmOBs1A9f1OC7ANOcLizEIWCfdL1LI+UH3jIHwMR6pX5Y6oBnCgLRAge1gN9HL+L/1R9DAGT2Y20IjFqAABj19rF4BPoJEAD9/JiNwKgFCIBRbx+LR6CfAAHQz4/ZCIxagAAY9faxeAT6CRAA/fyYjcCoBQiAUW8fi0egnwAB0M+P2QiMWoAAGPX2sXgE+gkQAP38mI3AqAUIgFFvH4tHoJ8AAdDPj9kIjFqAABj19rF4BPoJEAD9/JiNwKgFCIBRbx+LR6CfAAHQz4/ZCIxagAAY9faxeAT6CRAA/fyYjcCoBQiAUW8fi0egn8BYAuBtatO+Jnxxv3aZjcAgAkdV5enZMUhBb5HMAfBVNWX3CPiIxqneBpmHQKDAEdV+TMNufvvdwHWcsHTGAODGIBnPFNbUV4Abg8xD8Ft6zKZ5PI6HIDBWga1a+OYsi8/0CsDuBPTtLDCsA4EpCti5vm2Kzz/vp84SAKu04r3zXjUPRGD8Ah9WC/ui28gSAH8QxPujMaiPwIACds5/YMB6xy2VIQA+oZWlumNq9KZQvxkBO/d/FdlthgD4kQDsLsAcCLQm8EM1/OXIpjMEwJ8F8O5IBGojECTwx+i3vhkC4AUhvCFoAyiLQKTA8yr+5sgFZAiA1yIBqI1AoIBdKXhaYP1FGQLArpm26/w5EGhN4Ck1/PbIpjMEwC8EYJf/ciDQmsDP1fBnIpvOEABfEcD3IxGojUCQwA2qe1dQ7ZmyGQLAXv7b2wAOBFoTWKGGn41sOkMAWP93a1wfCUFtBAYW+InqbRi45pxyWQLAXgX8RWNZNAj1ERhA4EXVeK+GfUQ49MgSAIbwMY0HNTKtKXRzKF5S4D/q6jKN32ToLts/ttVC2aXx+gw4rAGBBRawi96+oJHmsy/ZAsC87e2AfVb6cwuMz9MhECmwQ8Vv0XgmchH/WztjAEzWaB+V/NJsEJyeCY21IDBPgUN63E4N+8CbXfef7sgcAOmwWBAC1QQIgGo7Sj8IdBAgADpg8VAEqgkQANV2lH4Q6CBAAHTA4qEIVBMgAKrtKP0g0EGAAOiAxUMRqCZAAFTbUfpBoIMAAdABi4ciUE2AAKi2o/SDQAcBAqADFg9FoJoAAVBtR+kHgQ4CBEAHLB6KQDUBAqDajtIPAh0ECIAOWDwUgWoCBEC1HaUfBDoIEAAdsHgoAtUECIBqO0o/CHQQIAA6YPFQBKoJEADVdpR+EOggQAB0wOKhCFQTyB4Alwp8lcYFGvZ14YurbQD9lBQ4qq7sfpdPaOzVeDRrlxkD4GRh2T3TbtM4Kysc60Kgg8BzeuytGnYPzFc7zJv6Q7MFgH3//24Nu3USBwLVBB5WQ1dovJylsUwBsEQoj2iszILDOhCYgsC+2f/gXpnCc3d+ykwB8IBWf2XnDpiAwPgE7teSr86w7CwBsF4Y2zOAsAYEBhJYpzp2v8DQI0MA2Ev/AxpnhkpQHIFhBewmoedrHBm27LHVMgTAdVrSPZEI1EYgSCD8VUCGALgvy/uhoJOAsu0K7FLr10a2nyEA7GKJ8yIRqI1AkMDjqnthUO2ZshkCwK6aOiUSgdoIBAkcVN1lQbXTBMAhrcQuAOJAoDUBO/fPiGw6wyuAJwVwbiQCtREIErC3v/Y5l7AjQwDYRRFXhQlQGIE4AfsF+Nq48jl+B7BeAFwEFHkWUDtKwP4Efm9Ucaub4RXAUq3DPjq5PBKC2ggMLPCS6q3QODxw3WPKZQgAW9AWjdsjIaiNwMACm1Vv68A155TLEgD2RR8PaVwSDUJ9BAYQsC8JuVzD/gQeemQJAEOwP4fs0bg4VITiCExXwP7xr9GwawDCj0wBMMHYph9uDpdhAQgsvMAdespNC/+0/mfMGADWzUUad2qs9rfGTATSCNi3XG3U2J9mRbMLyRoAE6dz9MM1Gna9NF8Kmu3sYT0nEph8Kaj9g9+pYR/9TXlkD4CUaCwKgSoCBECVnaQPBBwCBIADjSkIVBEgAKrsJH0g4BAgABxoTEGgigABUGUn6QMBhwAB4EBjCgJVBAiAKjtJHwg4BAgABxpTEKgiQABU2Un6QMAhQAA40JiCQBUBAqDKTtIHAg4BAsCBxhQEqggQAFV2kj4QcAgQAA40piBQRYAAqLKT9IGAQ4AAcKAxBYEqAgRAlZ2kDwQcAgSAA40pCFQRIACq7CR9IOAQIAAcaExBoIoAAVBlJ+kDAYcAAeBAYwoCVQQIgCo7SR8IOAQIAAcaUxCoIkAAVNlJ+kDAIUAAONCYgkAVAQKgyk7SBwIOAQLAgcYUBKoIEABVdpI+EHAIEAAONKYgUEWAAKiyk/SBgEOAAHCgMQWBKgIEQJWdpA8EHAIEgAONKQhUESAAquwkfSDgECAAHGhMQaCKAAFQZSfpAwGHAAHgQGMKAlUECIAqO0kfCDgECAAHGlMQqCJAAFTZSfpAwCFAADjQmIJAFQECoMpO0gcCDgECwIHGFASqCBAAVXaSPhBwCBAADjSmIFBFgACospP0gYBDgABwoDEFgSoCBECVnaQPBBwCBIADjSkIVBEgAKrsJH0g4BAgABxoTEGgisB/AWoW5AFMsTLYAAAAAElFTkSuQmCC' +description: '' +behavior_plugins: { } diff --git a/config/sync/paragraphs.paragraphs_type.video.yml b/config/sync/paragraphs.paragraphs_type.video.yml index 6b82745be6d6206cac4b601d1c5c46837e2dfa03..bfc257379127adbf4ffd409c6f123fdb65910418 100644 --- a/config/sync/paragraphs.paragraphs_type.video.yml +++ b/config/sync/paragraphs.paragraphs_type.video.yml @@ -3,10 +3,10 @@ langcode: en status: true dependencies: content: - - 'file:file:078a6913-223c-402e-923d-0ec2de210a66' + - 'file:file:5e715496-9ab7-4f41-997c-d5f20408928c' id: video label: Video -icon_uuid: 078a6913-223c-402e-923d-0ec2de210a66 -icon_default: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktZmlsbSIgdmlld0JveD0iMCAwIDE2IDE2Ij4KICA8cGF0aCBkPSJNMCAxYTEgMSAwIDAgMSAxLTFoMTRhMSAxIDAgMCAxIDEgMXYxNGExIDEgMCAwIDEtMSAxSDFhMSAxIDAgMCAxLTEtMVYxem00IDB2Nmg4VjFINHptOCA4SDR2Nmg4Vjl6TTEgMXYyaDJWMUgxem0yIDNIMXYyaDJWNHpNMSA3djJoMlY3SDF6bTIgM0gxdjJoMnYtMnptLTIgM3YyaDJ2LTJIMXpNMTUgMWgtMnYyaDJWMXptLTIgM3YyaDJWNGgtMnptMiAzaC0ydjJoMlY3em0tMiAzdjJoMnYtMmgtMnptMiAzaC0ydjJoMnYtMnoiLz4KPC9zdmc+' +icon_uuid: 5e715496-9ab7-4f41-997c-d5f20408928c +icon_default: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktY2FtZXJhLXZpZGVvIiB2aWV3Qm94PSIwIDAgMTYgMTYiPgogIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTAgNWEyIDIgMCAwIDEgMi0yaDcuNWEyIDIgMCAwIDEgMS45ODMgMS43MzhsMy4xMS0xLjM4MkExIDEgMCAwIDEgMTYgNC4yNjl2Ny40NjJhMSAxIDAgMCAxLTEuNDA2LjkxM2wtMy4xMTEtMS4zODJBMiAyIDAgMCAxIDkuNSAxM0gyYTIgMiAwIDAgMS0yLTJWNXptMTEuNSA1LjE3NSAzLjUgMS41NTZWNC4yNjlsLTMuNSAxLjU1NnY0LjM1ek0yIDRhMSAxIDAgMCAwLTEgMXY2YTEgMSAwIDAgMCAxIDFoNy41YTEgMSAwIDAgMCAxLTFWNWExIDEgMCAwIDAtMS0xSDJ6Ii8+Cjwvc3ZnPg==' description: '' behavior_plugins: { } diff --git a/config/sync/responsive_image.styles.highlighted_content.yml b/config/sync/responsive_image.styles.highlighted_content.yml index 92251209de7902763f8afb03a18d0caec734090c..99411f6e810657ee929f2901c6c1f866a3bc2836 100644 --- a/config/sync/responsive_image.styles.highlighted_content.yml +++ b/config/sync/responsive_image.styles.highlighted_content.yml @@ -25,14 +25,14 @@ label: 'Highlighted content' image_style_mappings: - image_mapping_type: image_style - image_mapping: xxl_col_5_1_5x + image_mapping: xxl_col_5_1x breakpoint_id: ventuno.xl - multiplier: 1.5x + multiplier: 1x - image_mapping_type: image_style - image_mapping: xxl_col_5_1x + image_mapping: xxl_col_5_1_5x breakpoint_id: ventuno.xl - multiplier: 1x + multiplier: 1.5x - image_mapping_type: image_style image_mapping: xxl_col_5_2x @@ -40,14 +40,14 @@ image_style_mappings: multiplier: 2x - image_mapping_type: image_style - image_mapping: lg_col_5_1_5x + image_mapping: lg_col_5_1x breakpoint_id: ventuno.lg - multiplier: 1.5x + multiplier: 1x - image_mapping_type: image_style - image_mapping: lg_col_5_1x + image_mapping: lg_col_5_1_5x breakpoint_id: ventuno.lg - multiplier: 1x + multiplier: 1.5x - image_mapping_type: image_style image_mapping: lg_col_5_2x @@ -55,14 +55,14 @@ image_style_mappings: multiplier: 2x - image_mapping_type: image_style - image_mapping: md_col_12_1_5x + image_mapping: md_col_12_1x breakpoint_id: ventuno.md - multiplier: 1.5x + multiplier: 1x - image_mapping_type: image_style - image_mapping: md_col_12_1x + image_mapping: md_col_12_1_5x breakpoint_id: ventuno.md - multiplier: 1x + multiplier: 1.5x - image_mapping_type: image_style image_mapping: md_col_12_2x @@ -70,14 +70,14 @@ image_style_mappings: multiplier: 2x - image_mapping_type: image_style - image_mapping: sm_col_12_1_5x + image_mapping: sm_col_12_1x breakpoint_id: ventuno.sm - multiplier: 1.5x + multiplier: 1x - image_mapping_type: image_style - image_mapping: sm_col_12_1x + image_mapping: sm_col_12_1_5x breakpoint_id: ventuno.sm - multiplier: 1x + multiplier: 1.5x - image_mapping_type: image_style image_mapping: sm_col_12_2x @@ -85,14 +85,14 @@ image_style_mappings: multiplier: 2x - image_mapping_type: image_style - image_mapping: xs_col_12_1_5x + image_mapping: xs_col_12_1x breakpoint_id: ventuno.xs - multiplier: 1.5x + multiplier: 1x - image_mapping_type: image_style - image_mapping: xs_col_12_1x + image_mapping: xs_col_12_1_5x breakpoint_id: ventuno.xs - multiplier: 1x + multiplier: 1.5x - image_mapping_type: image_style image_mapping: xs_col_12_2x diff --git a/config/sync/responsive_image.styles.iop_carousel.yml b/config/sync/responsive_image.styles.iop_carousel.yml index 2f47586010ccc6e1d23968aec7674a21120f90cb..b4a2278f65560ef2caefa242e578a1b2f8f4a6b0 100644 --- a/config/sync/responsive_image.styles.iop_carousel.yml +++ b/config/sync/responsive_image.styles.iop_carousel.yml @@ -28,14 +28,14 @@ label: 'IOP carousel' image_style_mappings: - image_mapping_type: image_style - image_mapping: iop_carousel_xxl_1_5x + image_mapping: iop_carousel_xxl_1x breakpoint_id: ventuno.xxl - multiplier: 1.5x + multiplier: 1x - image_mapping_type: image_style - image_mapping: iop_carousel_xxl_1x + image_mapping: iop_carousel_xxl_1_5x breakpoint_id: ventuno.xxl - multiplier: 1x + multiplier: 1.5x - image_mapping_type: image_style image_mapping: iop_carousel_xxl_2x @@ -43,14 +43,14 @@ image_style_mappings: multiplier: 2x - image_mapping_type: image_style - image_mapping: iop_carousel_xl1_5x + image_mapping: iop_carousel_xl_1x breakpoint_id: ventuno.xl - multiplier: 1.5x + multiplier: 1x - image_mapping_type: image_style - image_mapping: iop_carousel_xl_1x + image_mapping: iop_carousel_xl1_5x breakpoint_id: ventuno.xl - multiplier: 1x + multiplier: 1.5x - image_mapping_type: image_style image_mapping: iop_carousel_xl_2x @@ -58,14 +58,14 @@ image_style_mappings: multiplier: 2x - image_mapping_type: image_style - image_mapping: iop_carousel_lg_1_5x + image_mapping: iop_carousel_lg_1x breakpoint_id: ventuno.lg - multiplier: 1.5x + multiplier: 1x - image_mapping_type: image_style - image_mapping: iop_carousel_lg_1x + image_mapping: iop_carousel_lg_1_5x breakpoint_id: ventuno.lg - multiplier: 1x + multiplier: 1.5x - image_mapping_type: image_style image_mapping: iop_carousel_lg_2x @@ -73,14 +73,14 @@ image_style_mappings: multiplier: 2x - image_mapping_type: image_style - image_mapping: iop_carousel_md_1_5x + image_mapping: iop_carousel_md_1x breakpoint_id: ventuno.md - multiplier: 1.5x + multiplier: 1x - image_mapping_type: image_style - image_mapping: iop_carousel_md_1x + image_mapping: iop_carousel_md_1_5x breakpoint_id: ventuno.md - multiplier: 1x + multiplier: 1.5x - image_mapping_type: image_style image_mapping: iop_carousel_md_2x @@ -88,14 +88,14 @@ image_style_mappings: multiplier: 2x - image_mapping_type: image_style - image_mapping: iop_carousel_sm_1_5x + image_mapping: iop_carousel_sm_1x breakpoint_id: ventuno.sm - multiplier: 1.5x + multiplier: 1x - image_mapping_type: image_style - image_mapping: iop_carousel_sm_1x + image_mapping: iop_carousel_sm_1_5x breakpoint_id: ventuno.sm - multiplier: 1x + multiplier: 1.5x - image_mapping_type: image_style image_mapping: iop_carousel_sm_2x @@ -103,14 +103,14 @@ image_style_mappings: multiplier: 2x - image_mapping_type: image_style - image_mapping: iop_carousel_xs_1_5x + image_mapping: iop_carousel_xs_1x breakpoint_id: ventuno.xs - multiplier: 1.5x + multiplier: 1x - image_mapping_type: image_style - image_mapping: iop_carousel_xs_1x + image_mapping: iop_carousel_xs_1_5x breakpoint_id: ventuno.xs - multiplier: 1x + multiplier: 1.5x - image_mapping_type: image_style image_mapping: iop_carousel_xs_2x diff --git a/config/sync/responsive_image.styles.teaser.yml b/config/sync/responsive_image.styles.teaser.yml index 0d2be90b39c0b2b636eca7df377ad30bf1b27e07..e5f657ded02c3cef6227ca3fa8f0a6641f28c8f3 100644 --- a/config/sync/responsive_image.styles.teaser.yml +++ b/config/sync/responsive_image.styles.teaser.yml @@ -25,14 +25,14 @@ label: Teaser image_style_mappings: - image_mapping_type: image_style - image_mapping: teaser_xxl_1_5x + image_mapping: teaser_xxl_1x breakpoint_id: ventuno.xxl - multiplier: 1.5x + multiplier: 1x - image_mapping_type: image_style - image_mapping: teaser_xxl_1x + image_mapping: teaser_xxl_1_5x breakpoint_id: ventuno.xxl - multiplier: 1x + multiplier: 1.5x - image_mapping_type: image_style image_mapping: teaser_xxl_2x @@ -40,14 +40,14 @@ image_style_mappings: multiplier: 2x - image_mapping_type: image_style - image_mapping: teaser_xl_1_5x + image_mapping: teaser_xl_1x breakpoint_id: ventuno.xl - multiplier: 1.5x + multiplier: 1x - image_mapping_type: image_style - image_mapping: teaser_xl_1x + image_mapping: teaser_xl_1_5x breakpoint_id: ventuno.xl - multiplier: 1x + multiplier: 1.5x - image_mapping_type: image_style image_mapping: teaser_xl_2x @@ -55,14 +55,14 @@ image_style_mappings: multiplier: 2x - image_mapping_type: image_style - image_mapping: teaser_lg_1_5x + image_mapping: teaser_lg_1x breakpoint_id: ventuno.lg - multiplier: 1.5x + multiplier: 1x - image_mapping_type: image_style - image_mapping: teaser_lg_1x + image_mapping: teaser_lg_1_5x breakpoint_id: ventuno.lg - multiplier: 1x + multiplier: 1.5x - image_mapping_type: image_style image_mapping: teaser_lg_2x @@ -70,14 +70,14 @@ image_style_mappings: multiplier: 2x - image_mapping_type: image_style - image_mapping: teaser_md_1_5x + image_mapping: teaser_md_1x breakpoint_id: ventuno.md - multiplier: 1.5x + multiplier: 1x - image_mapping_type: image_style - image_mapping: teaser_md_1x + image_mapping: teaser_md_1_5x breakpoint_id: ventuno.md - multiplier: 1x + multiplier: 1.5x - image_mapping_type: image_style image_mapping: teaser_md_2x @@ -85,14 +85,14 @@ image_style_mappings: multiplier: 2x - image_mapping_type: image_style - image_mapping: teaser_sm_1_5x + image_mapping: teaser_sm_1x breakpoint_id: ventuno.sm - multiplier: 1.5x + multiplier: 1x - image_mapping_type: image_style - image_mapping: teaser_sm_1x + image_mapping: teaser_sm_1_5x breakpoint_id: ventuno.sm - multiplier: 1x + multiplier: 1.5x - image_mapping_type: image_style image_mapping: teaser_sm_2x @@ -100,14 +100,14 @@ image_style_mappings: multiplier: 2x - image_mapping_type: image_style - image_mapping: teaser_sm_1_5x + image_mapping: teaser_sm_1x breakpoint_id: ventuno.xs - multiplier: 1.5x + multiplier: 1x - image_mapping_type: image_style - image_mapping: teaser_sm_1x + image_mapping: teaser_sm_1_5x breakpoint_id: ventuno.xs - multiplier: 1x + multiplier: 1.5x - image_mapping_type: image_style image_mapping: teaser_sm_2x diff --git a/config/sync/responsive_image.styles.tile.yml b/config/sync/responsive_image.styles.tile.yml index b59cc504d8c49990f2ec62781ddb02936b5b8e89..d51d7d71f46a552609cc0ec8a46c42fcb4bc4a1b 100644 --- a/config/sync/responsive_image.styles.tile.yml +++ b/config/sync/responsive_image.styles.tile.yml @@ -28,14 +28,14 @@ label: Tile image_style_mappings: - image_mapping_type: image_style - image_mapping: tile_xxl_1_5 + image_mapping: tile_xxl_1x breakpoint_id: ventuno.xxl - multiplier: 1.5x + multiplier: 1x - image_mapping_type: image_style - image_mapping: tile_xxl_1x + image_mapping: tile_xxl_1_5 breakpoint_id: ventuno.xxl - multiplier: 1x + multiplier: 1.5x - image_mapping_type: image_style image_mapping: tile_xxl_2x @@ -43,14 +43,14 @@ image_style_mappings: multiplier: 2x - image_mapping_type: image_style - image_mapping: tile_xl_1_5x + image_mapping: tile_xl_1x breakpoint_id: ventuno.xl - multiplier: 1.5x + multiplier: 1x - image_mapping_type: image_style - image_mapping: tile_xl_1x + image_mapping: tile_xl_1_5x breakpoint_id: ventuno.xl - multiplier: 1x + multiplier: 1.5x - image_mapping_type: image_style image_mapping: tile_xl_2x @@ -58,14 +58,14 @@ image_style_mappings: multiplier: 2x - image_mapping_type: image_style - image_mapping: tile_lg_1_5x + image_mapping: tile_lg_1x breakpoint_id: ventuno.lg - multiplier: 1.5x + multiplier: 1x - image_mapping_type: image_style - image_mapping: tile_lg_1x + image_mapping: tile_lg_1_5x breakpoint_id: ventuno.lg - multiplier: 1x + multiplier: 1.5x - image_mapping_type: image_style image_mapping: tile_lg_2x @@ -73,14 +73,14 @@ image_style_mappings: multiplier: 2x - image_mapping_type: image_style - image_mapping: tile_md_1_5x + image_mapping: tile_md_1x breakpoint_id: ventuno.md - multiplier: 1.5x + multiplier: 1x - image_mapping_type: image_style - image_mapping: tile_md_1x + image_mapping: tile_md_1_5x breakpoint_id: ventuno.md - multiplier: 1x + multiplier: 1.5x - image_mapping_type: image_style image_mapping: tile_md_x @@ -88,14 +88,14 @@ image_style_mappings: multiplier: 2x - image_mapping_type: image_style - image_mapping: tile_sm_1_5x + image_mapping: tile_sm_1x breakpoint_id: ventuno.sm - multiplier: 1.5x + multiplier: 1x - image_mapping_type: image_style - image_mapping: tile_sm_1x + image_mapping: tile_sm_1_5x breakpoint_id: ventuno.sm - multiplier: 1x + multiplier: 1.5x - image_mapping_type: image_style image_mapping: tile_sm_2x @@ -103,14 +103,14 @@ image_style_mappings: multiplier: 2x - image_mapping_type: image_style - image_mapping: tile_xs_1_5x + image_mapping: tile_xs_1x breakpoint_id: ventuno.xs - multiplier: 1.5x + multiplier: 1x - image_mapping_type: image_style - image_mapping: tile_xs_1x + image_mapping: tile_xs_1_5x breakpoint_id: ventuno.xs - multiplier: 1x + multiplier: 1.5x - image_mapping_type: image_style image_mapping: tile_xs_2x diff --git a/config/sync/system.feature_flags.yml b/config/sync/system.feature_flags.yml new file mode 100644 index 0000000000000000000000000000000000000000..7169df08b7758aafc3c1755075263cce1a065abc --- /dev/null +++ b/config/sync/system.feature_flags.yml @@ -0,0 +1 @@ +linkset_endpoint: false diff --git a/config/sync/user.role.anonymous.yml b/config/sync/user.role.anonymous.yml index 9f3e021201a4572fafd30eb49882e08f0f1d8d7d..49fe9d5a1fe01c078f678aa3c175b79245ff9b83 100644 --- a/config/sync/user.role.anonymous.yml +++ b/config/sync/user.role.anonymous.yml @@ -16,6 +16,7 @@ dependencies: - media - meta_entity - paragraphs_type_permissions + - poll - rdf_entity - rdf_export - rdf_meta_entity @@ -32,6 +33,7 @@ permissions: - 'access comments' - 'access content' - 'access email confirmation' + - 'access polls' - 'access tour' - 'access user profiles' - 'export rdf metadata' @@ -56,14 +58,21 @@ permissions: - 'view paragraph content accordion_item' - 'view paragraph content call_to_action' - 'view paragraph content carousel' + - 'view paragraph content configurable_listing' - 'view paragraph content content_listing' + - 'view paragraph content entity_reference' - 'view paragraph content github_feed' + - 'view paragraph content heading' - 'view paragraph content iframe' - 'view paragraph content image' - 'view paragraph content json_map' + - 'view paragraph content layout' + - 'view paragraph content poll' + - 'view paragraph content quote' - 'view paragraph content row' - 'view paragraph content simple_paragraph' - 'view paragraph content testimony' + - 'view paragraph content text' - 'view paragraph content video' - 'view published sitewide alert entities' - 'view rdf entity' diff --git a/config/sync/user.role.authenticated.yml b/config/sync/user.role.authenticated.yml index 382b48badd0047e93348d7b5255d7a376d8e7757..12e10bfce7036c46057e177c36a980cb1dea2bba 100644 --- a/config/sync/user.role.authenticated.yml +++ b/config/sync/user.role.authenticated.yml @@ -9,6 +9,7 @@ dependencies: - filter.format.glossary_html - filter.format.minimal - filter.format.simple_html + - filter.format.text_html - node.type.document - node.type.tallinn_report module: @@ -21,11 +22,14 @@ dependencies: - flag - joinup - joinup_community_content + - joinup_core - joinup_licence - media - meta_entity - node + - paragraphs - paragraphs_type_permissions + - poll - rdf_entity - rdf_export - rdf_meta_entity @@ -44,27 +48,52 @@ permissions: - 'access content' - 'access contextual links' - 'access email confirmation' + - 'access polls' - 'access tour' - 'access user profiles' - 'cancel account' + - 'cancel own vote' - 'create contact_information rdf entity' - 'create document content' - 'create owner rdf entity' - 'create paragraph content accordion' - 'create paragraph content accordion_item' + - 'create paragraph content call_to_action' - 'create paragraph content carousel' - 'create paragraph content content_listing' - - 'create paragraph content simple_paragraph' + - 'create paragraph content heading' + - 'create paragraph content image' + - 'create paragraph content layout' + - 'create paragraph content poll' + - 'create paragraph content quote' + - 'create paragraph content testimony' + - 'create paragraph content text' + - 'create paragraph content video' + - 'create polls' - 'delete own comments' - 'delete own document content' - 'delete paragraph content accordion' - 'delete paragraph content accordion_item' + - 'delete paragraph content call_to_action' - 'delete paragraph content carousel' - 'delete paragraph content content_listing' + - 'delete paragraph content heading' + - 'delete paragraph content iframe' + - 'delete paragraph content image' + - 'delete paragraph content layout' + - 'delete paragraph content poll' + - 'delete paragraph content quote' + - 'delete paragraph content row' - 'delete paragraph content simple_paragraph' + - 'delete paragraph content testimony' + - 'delete paragraph content text' + - 'delete paragraph content video' + - 'edit any pools' + - 'edit behavior plugin settings' - 'edit own comments' - 'edit own contact_information rdf entity' - 'edit own owner rdf entity' + - 'edit own polls' - 'edit own tallinn_report content' - 'export rdf metadata' - 'flag like_node' @@ -142,9 +171,19 @@ permissions: - 'unflag subscribe_discussions' - 'update paragraph content accordion' - 'update paragraph content accordion_item' + - 'update paragraph content call_to_action' - 'update paragraph content carousel' - 'update paragraph content content_listing' + - 'update paragraph content heading' + - 'update paragraph content image' + - 'update paragraph content layout' + - 'update paragraph content poll' + - 'update paragraph content quote' + - 'update paragraph content row' - 'update paragraph content simple_paragraph' + - 'update paragraph content testimony' + - 'update paragraph content text' + - 'update paragraph content video' - 'use search_api_autocomplete for search' - 'use text format basic_html' - 'use text format content_editor' @@ -152,6 +191,7 @@ permissions: - 'use text format glossary_html' - 'use text format minimal' - 'use text format simple_html' + - 'use text format text_html' - 'view compatibility documents' - 'view eif wrapper entity' - 'view eif_perspective rdf-meta-entity' @@ -167,14 +207,21 @@ permissions: - 'view paragraph content accordion_item' - 'view paragraph content call_to_action' - 'view paragraph content carousel' + - 'view paragraph content configurable_listing' - 'view paragraph content content_listing' + - 'view paragraph content entity_reference' - 'view paragraph content github_feed' + - 'view paragraph content heading' - 'view paragraph content iframe' - 'view paragraph content image' - 'view paragraph content json_map' + - 'view paragraph content layout' + - 'view paragraph content poll' + - 'view paragraph content quote' - 'view paragraph content row' - 'view paragraph content simple_paragraph' - 'view paragraph content testimony' + - 'view paragraph content text' - 'view paragraph content video' - 'view published sitewide alert entities' - 'view rdf entity' diff --git a/config/sync/user.role.moderator.yml b/config/sync/user.role.moderator.yml index ad1b93c27068c92e1a0ebe1e250b8c6448ecc64b..2e1bb3b77829849bf70c647c81cf199d57857796 100644 --- a/config/sync/user.role.moderator.yml +++ b/config/sync/user.role.moderator.yml @@ -3,12 +3,10 @@ langcode: en status: true dependencies: config: - - media.type.collection_banner - media.type.collection_logo - media.type.discussion_logo - media.type.event_logo - media.type.news_logo - - media.type.solution_banner - media.type.solution_logo - node.type.custom_page - node.type.discussion @@ -96,7 +94,6 @@ permissions: - 'change tallinn report author' - 'create asset_distribution rdf entity' - 'create asset_release rdf entity' - - 'create collection_banner media' - 'create collection_logo media' - 'create discussion content' - 'create discussion_logo media' @@ -116,26 +113,26 @@ permissions: - 'create paragraph content call_to_action' - 'create paragraph content carousel' - 'create paragraph content content_listing' + - 'create paragraph content entity_reference' - 'create paragraph content github_feed' + - 'create paragraph content heading' - 'create paragraph content iframe' - 'create paragraph content image' - 'create paragraph content json_map' - - 'create paragraph content row' - - 'create paragraph content simple_paragraph' + - 'create paragraph content layout' + - 'create paragraph content poll' + - 'create paragraph content quote' - 'create paragraph content testimony' - 'create paragraph content video' - 'create rdf entity news' - - 'create solution_banner media' - 'create solution_logo media' - 'delete all sitewide alert revisions' - - 'delete any collection_banner media' - 'delete any collection_logo media' - 'delete any discussion_logo media' - 'delete any document content' - 'delete any event_logo media' - 'delete any file' - 'delete any news_logo media' - - 'delete any solution_banner media' - 'delete any solution_logo media' - 'delete asset_release rdf entity' - 'delete contact_information rdf entity' @@ -149,16 +146,20 @@ permissions: - 'delete paragraph content 3_column_layout' - 'delete paragraph content call_to_action' - 'delete paragraph content carousel' + - 'delete paragraph content entity_reference' - 'delete paragraph content github_feed' + - 'delete paragraph content heading' - 'delete paragraph content iframe' - 'delete paragraph content image' - 'delete paragraph content json_map' + - 'delete paragraph content layout' + - 'delete paragraph content poll' + - 'delete paragraph content quote' - 'delete paragraph content row' - 'delete paragraph content testimony' - 'delete paragraph content video' - 'delete sitewide alert entities' - 'download subscribers report' - - 'edit any collection_banner media' - 'edit any collection_logo media' - 'edit any custom_page content' - 'edit any discussion content' @@ -166,7 +167,6 @@ permissions: - 'edit any event_logo media' - 'edit any glossary content' - 'edit any news_logo media' - - 'edit any solution_banner media' - 'edit any solution_logo media' - 'edit contact_information rdf entity' - 'edit field_is_eif_category' @@ -388,10 +388,15 @@ permissions: - 'update paragraph content 3_column_layout' - 'update paragraph content call_to_action' - 'update paragraph content carousel' + - 'update paragraph content entity_reference' - 'update paragraph content github_feed' + - 'update paragraph content heading' - 'update paragraph content iframe' - 'update paragraph content image' - 'update paragraph content json_map' + - 'update paragraph content layout' + - 'update paragraph content poll' + - 'update paragraph content quote' - 'update paragraph content row' - 'update paragraph content testimony' - 'update paragraph content video' diff --git a/config/sync/views.view.announcements.yml b/config/sync/views.view.announcements.yml index 92c256131e4818fa4704f714f20cbb375273a6c8..ffe52d9d08ef10fef769418b52322f2a79171de8 100644 --- a/config/sync/views.view.announcements.yml +++ b/config/sync/views.view.announcements.yml @@ -275,6 +275,15 @@ display: date_format: date_only custom_date_format: '' timezone: '' + tooltip: + date_format: '' + custom_date_format: '' + time_diff: + enabled: false + future_format: '@interval hence' + past_format: '@interval ago' + granularity: 2 + refresh: 60 group_column: value group_columns: { } group_rows: true @@ -1007,6 +1016,15 @@ display: date_format: date_only custom_date_format: '' timezone: '' + tooltip: + date_format: '' + custom_date_format: '' + time_diff: + enabled: false + future_format: '@interval hence' + past_format: '@interval ago' + granularity: 2 + refresh: 60 group_column: value group_columns: { } group_rows: true diff --git a/config/sync/views.view.asset_distribution_downloads.yml b/config/sync/views.view.asset_distribution_downloads.yml index b82f079d6130fe75b81bf812150b7161e667f593..1454db6b3067c57c86f220ecfdd2c8ff63349a5c 100644 --- a/config/sync/views.view.asset_distribution_downloads.yml +++ b/config/sync/views.view.asset_distribution_downloads.yml @@ -526,6 +526,15 @@ display: date_format: fallback custom_date_format: '' timezone: '' + tooltip: + date_format: '' + custom_date_format: '' + time_diff: + enabled: false + future_format: '@interval hence' + past_format: '@interval ago' + granularity: 2 + refresh: 60 group_column: value group_columns: { } group_rows: true diff --git a/config/sync/views.view.comment.yml b/config/sync/views.view.comment.yml index 7dc36051ad1f8ab2b06d89d10661869f0b6972ff..b64f0a2cc3bc1011b6c0ebdd772ee60a7375e459 100644 --- a/config/sync/views.view.comment.yml +++ b/config/sync/views.view.comment.yml @@ -397,6 +397,15 @@ display: date_format: short custom_date_format: '' timezone: '' + tooltip: + date_format: '' + custom_date_format: '' + time_diff: + enabled: false + future_format: '@interval hence' + past_format: '@interval ago' + granularity: 2 + refresh: 60 group_column: value group_columns: { } group_rows: true @@ -1281,6 +1290,15 @@ display: date_format: short custom_date_format: '' timezone: '' + tooltip: + date_format: '' + custom_date_format: '' + time_diff: + enabled: false + future_format: '@interval hence' + past_format: '@interval ago' + granularity: 2 + refresh: 60 group_column: value group_columns: { } group_rows: true diff --git a/config/sync/views.view.content.yml b/config/sync/views.view.content.yml index 598ec2c764a7515355892b138c791c3ef59676e6..8620054f882899a3608cca3cd9c1016ef0b7e421 100644 --- a/config/sync/views.view.content.yml +++ b/config/sync/views.view.content.yml @@ -5,7 +5,6 @@ dependencies: module: - node - user - - view_unpublished _core: default_config_hash: tS8PbpJX90aRFC3-UTgXzdqkq7_2frk2pz4TMijEebM id: content @@ -189,6 +188,15 @@ display: date_format: short custom_date_format: '' timezone: '' + tooltip: + date_format: '' + custom_date_format: '' + time_diff: + enabled: false + future_format: '@interval hence' + past_format: '@interval ago' + granularity: 2 + refresh: 60 operations: id: operations table: node diff --git a/config/sync/views.view.eif_recommendation.yml b/config/sync/views.view.eif_recommendation.yml index ef21e24534049570a9aa6680fb79c90aff514799..8c96c5b36b13f6a50bc565dd0f7ac6ff36891c8a 100644 --- a/config/sync/views.view.eif_recommendation.yml +++ b/config/sync/views.view.eif_recommendation.yml @@ -324,7 +324,7 @@ display: format: default_summary specify_validation: true validate: - type: eif_toolbox + type: joinup_group_entity_id fail: 'not found' validate_options: bundles: @@ -332,6 +332,7 @@ display: access: true operation: view multiple: 0 + rdf_entity_id: 'http://data.europa.eu/w21/405d8980-3f06-4494-b34a-46c388a38651' break_phrase: false not: false filters: diff --git a/config/sync/views.view.files.yml b/config/sync/views.view.files.yml index 034baff4d3a23f5fe81953921cf19c43c63db207..4e6472f864b44e8401669d51e831be0cd91d2d3b 100644 --- a/config/sync/views.view.files.yml +++ b/config/sync/views.view.files.yml @@ -336,6 +336,15 @@ display: date_format: medium custom_date_format: '' timezone: '' + tooltip: + date_format: '' + custom_date_format: '' + time_diff: + enabled: false + future_format: '@interval hence' + past_format: '@interval ago' + granularity: 2 + refresh: 60 changed: id: changed table: file_managed @@ -392,6 +401,15 @@ display: date_format: medium custom_date_format: '' timezone: '' + tooltip: + date_format: '' + custom_date_format: '' + time_diff: + enabled: false + future_format: '@interval hence' + past_format: '@interval ago' + granularity: 2 + refresh: 60 count: id: count table: file_usage @@ -853,6 +871,7 @@ display: batch: false batch_size: 10 form_step: true + ajax_loader: false buttons: true action_title: Action clear_on_exposed: true @@ -1136,6 +1155,15 @@ display: date_format: custom custom_date_format: 'j/n/Y H:i' timezone: '' + tooltip: + date_format: '' + custom_date_format: '' + time_diff: + enabled: false + future_format: '@interval hence' + past_format: '@interval ago' + granularity: 2 + refresh: 60 group_column: value group_columns: { } group_rows: true @@ -1203,6 +1231,15 @@ display: date_format: custom custom_date_format: 'j/n/Y H:i' timezone: '' + tooltip: + date_format: '' + custom_date_format: '' + time_diff: + enabled: false + future_format: '@interval hence' + past_format: '@interval ago' + granularity: 2 + refresh: 60 group_column: value group_columns: { } group_rows: true diff --git a/config/sync/views.view.group_content_management.yml b/config/sync/views.view.group_content_management.yml index f481960474caa5d408d9d47666b9b8ba9e16ca9c..5f7425a5d7a2a1117bc43554c861d6a26981284d 100644 --- a/config/sync/views.view.group_content_management.yml +++ b/config/sync/views.view.group_content_management.yml @@ -17,7 +17,6 @@ dependencies: module: - csv_serialization - joinup_group - - joinup_group_content_management - node - rest - serialization @@ -93,6 +92,7 @@ display: batch: false batch_size: 10 form_step: true + ajax_loader: false action_title: Action selected_actions: - @@ -268,6 +268,15 @@ display: date_format: short custom_date_format: '' timezone: '' + tooltip: + date_format: '' + custom_date_format: '' + time_diff: + enabled: false + future_format: '@interval hence' + past_format: '@interval ago' + granularity: 2 + refresh: 60 group_column: value group_columns: { } group_rows: true @@ -335,6 +344,15 @@ display: date_format: short custom_date_format: '' timezone: '' + tooltip: + date_format: '' + custom_date_format: '' + time_diff: + enabled: false + future_format: '@interval hence' + past_format: '@interval ago' + granularity: 2 + refresh: 60 group_column: value group_columns: { } group_rows: true @@ -973,6 +991,15 @@ display: date_format: html_datetime custom_date_format: '' timezone: '' + tooltip: + date_format: '' + custom_date_format: '' + time_diff: + enabled: false + future_format: '@interval hence' + past_format: '@interval ago' + granularity: 2 + refresh: 60 group_column: value group_columns: { } group_rows: true @@ -1040,6 +1067,15 @@ display: date_format: html_datetime custom_date_format: '' timezone: '' + tooltip: + date_format: '' + custom_date_format: '' + time_diff: + enabled: false + future_format: '@interval hence' + past_format: '@interval ago' + granularity: 2 + refresh: 60 group_column: value group_columns: { } group_rows: true @@ -1341,6 +1377,7 @@ display: batch: false batch_size: 10 form_step: true + ajax_loader: false action_title: Action selected_actions: - @@ -1524,6 +1561,15 @@ display: date_format: short custom_date_format: '' timezone: '' + tooltip: + date_format: '' + custom_date_format: '' + time_diff: + enabled: false + future_format: '@interval hence' + past_format: '@interval ago' + granularity: 2 + refresh: 60 group_column: value group_columns: { } group_rows: true @@ -1591,6 +1637,15 @@ display: date_format: short custom_date_format: '' timezone: '' + tooltip: + date_format: '' + custom_date_format: '' + time_diff: + enabled: false + future_format: '@interval hence' + past_format: '@interval ago' + granularity: 2 + refresh: 60 group_column: value group_columns: { } group_rows: true diff --git a/config/sync/views.view.group_feed.yml b/config/sync/views.view.group_feed.yml index 4a2901a5b8df3bedd473720f1b11556d424f406d..f135633550f441627e8a76fd231dcffb955c6145 100644 --- a/config/sync/views.view.group_feed.yml +++ b/config/sync/views.view.group_feed.yml @@ -352,12 +352,17 @@ display: trim_suffix: '' wrap_output: false wrap_class: trimmed - more_link: false - more_class: more-link - more_text: More + more: + display_link: false + target_blank: false + link_trim_only: false + class: more-link + text: More + aria_label: 'Read more about [node:title]' trim_options: text: true trim_zero: false + replace_tokens: false group_column: value group_columns: { } group_rows: true @@ -486,13 +491,18 @@ display: trim_suffix: '' wrap_output: false wrap_class: trimmed - more_link: false - more_class: more-link - more_text: More + more: + display_link: false + target_blank: false + link_trim_only: false + class: more-link + text: More + aria_label: 'Read more about [node:title]' summary_handler: trim trim_options: text: true trim_zero: false + replace_tokens: false group_column: value group_columns: { } group_rows: true @@ -814,6 +824,15 @@ display: date_format: custom custom_date_format: r timezone: '' + tooltip: + date_format: '' + custom_date_format: '' + time_diff: + enabled: false + future_format: '@interval hence' + past_format: '@interval ago' + granularity: 2 + refresh: 60 group_column: value group_columns: { } group_rows: true @@ -890,6 +909,15 @@ display: date_format: custom custom_date_format: r timezone: '' + tooltip: + date_format: '' + custom_date_format: '' + time_diff: + enabled: false + future_format: '@interval hence' + past_format: '@interval ago' + granularity: 2 + refresh: 60 group_column: value group_columns: { } group_rows: true @@ -929,7 +957,7 @@ display: external: false replace_spaces: false path_case: none - trim_whitespace: false + trim_whitespace: true alt: '' rel: '' link_class: '' @@ -943,7 +971,7 @@ display: more_link: false more_link_text: '' more_link_path: '' - strip_tags: false + strip_tags: true trim: false preserve_tags: '' html: false diff --git a/config/sync/views.view.legal_document_acceptances.yml b/config/sync/views.view.legal_document_acceptances.yml index 329324b90a502963b51fcd6fd7650234d003f15c..e6e5c8847f96c1140be52fea9ffcc242b05a42e3 100644 --- a/config/sync/views.view.legal_document_acceptances.yml +++ b/config/sync/views.view.legal_document_acceptances.yml @@ -210,6 +210,15 @@ display: date_format: medium custom_date_format: '' timezone: '' + tooltip: + date_format: '' + custom_date_format: '' + time_diff: + enabled: false + future_format: '@interval hence' + past_format: '@interval ago' + granularity: 2 + refresh: 60 group_column: value group_columns: { } group_rows: true diff --git a/config/sync/views.view.legal_notice_report.yml b/config/sync/views.view.legal_notice_report.yml index f6162a3e40359450cad99cf1c0163248573086ab..c9472086743d49a13fee1c34dbfc657cac6c54de 100644 --- a/config/sync/views.view.legal_notice_report.yml +++ b/config/sync/views.view.legal_notice_report.yml @@ -344,6 +344,15 @@ display: date_format: short custom_date_format: '' timezone: '' + tooltip: + date_format: '' + custom_date_format: '' + time_diff: + enabled: false + future_format: '@interval hence' + past_format: '@interval ago' + granularity: 2 + refresh: 60 group_column: value group_columns: { } group_rows: true diff --git a/config/sync/views.view.manage_collection_solutions.yml b/config/sync/views.view.manage_collection_solutions.yml index 8190279c83635ca2ecacec49d9443c1435cfb9e0..b7098ef2b49983c266f6a6984e206c4fce56346c 100644 --- a/config/sync/views.view.manage_collection_solutions.yml +++ b/config/sync/views.view.manage_collection_solutions.yml @@ -207,6 +207,15 @@ display: date_format: medium custom_date_format: '' timezone: '' + tooltip: + date_format: '' + custom_date_format: '' + time_diff: + enabled: false + future_format: '@interval hence' + past_format: '@interval ago' + granularity: 2 + refresh: 60 group_column: value group_columns: { } group_rows: true @@ -282,6 +291,15 @@ display: date_format: medium custom_date_format: '' timezone: '' + tooltip: + date_format: '' + custom_date_format: '' + time_diff: + enabled: false + future_format: '@interval hence' + past_format: '@interval ago' + granularity: 2 + refresh: 60 group_column: value group_columns: { } group_rows: true diff --git a/config/sync/views.view.media.yml b/config/sync/views.view.media.yml index d7db2f2a637320183b99fa54f531c1f8f6b32ac7..a558f4a4f5deb819abd18e2243c7f42504036cf3 100644 --- a/config/sync/views.view.media.yml +++ b/config/sync/views.view.media.yml @@ -5,8 +5,8 @@ dependencies: config: - image.style.thumbnail module: - - image - media + - svg_image - user _core: default_config_hash: UZP23LgBdE1XbvscbLCdd9uTk5t4qqA1Z56koqbvYP0 @@ -457,6 +457,15 @@ display: date_format: short custom_date_format: '' timezone: '' + tooltip: + date_format: '' + custom_date_format: '' + time_diff: + enabled: false + future_format: '@interval hence' + past_format: '@interval ago' + granularity: 2 + refresh: 60 group_column: value group_columns: { } group_rows: true diff --git a/config/sync/views.view.messages_overview.yml b/config/sync/views.view.messages_overview.yml index e87220eb328c886ebbd740b24d7c0fc2add3073d..09114a96bd1fa7b6bf65b710800aef90c859d266 100644 --- a/config/sync/views.view.messages_overview.yml +++ b/config/sync/views.view.messages_overview.yml @@ -147,6 +147,15 @@ display: date_format: short custom_date_format: '' timezone: '' + tooltip: + date_format: '' + custom_date_format: '' + time_diff: + enabled: false + future_format: '@interval hence' + past_format: '@interval ago' + granularity: 2 + refresh: 60 group_column: value group_columns: { } group_rows: true diff --git a/config/sync/views.view.moderator_solutions_by_type.yml b/config/sync/views.view.moderator_solutions_by_type.yml index 700eb483d069b082cbe29f6b2cd9a57dcc90f769..fa97e695e12e03a41e1827427a4e5081b075212c 100644 --- a/config/sync/views.view.moderator_solutions_by_type.yml +++ b/config/sync/views.view.moderator_solutions_by_type.yml @@ -260,6 +260,15 @@ display: date_format: medium custom_date_format: '' timezone: '' + tooltip: + date_format: '' + custom_date_format: '' + time_diff: + enabled: false + future_format: '@interval hence' + past_format: '@interval ago' + granularity: 2 + refresh: 60 group_column: value group_columns: { } group_rows: true @@ -335,6 +344,15 @@ display: date_format: medium custom_date_format: '' timezone: '' + tooltip: + date_format: '' + custom_date_format: '' + time_diff: + enabled: false + future_format: '@interval hence' + past_format: '@interval ago' + granularity: 2 + refresh: 60 group_column: value group_columns: { } group_rows: true diff --git a/config/sync/views.view.og_members_overview.yml b/config/sync/views.view.og_members_overview.yml index 7c25256cae0a48be48a89d018a9466624c5108d6..6ae1d21691dc1a721f7b25ba950ba528d1171b3d 100644 --- a/config/sync/views.view.og_members_overview.yml +++ b/config/sync/views.view.og_members_overview.yml @@ -223,6 +223,15 @@ display: date_format: medium custom_date_format: '' timezone: '' + tooltip: + date_format: '' + custom_date_format: '' + time_diff: + enabled: false + future_format: '@interval hence' + past_format: '@interval ago' + granularity: 2 + refresh: 60 group_column: value group_columns: { } group_rows: true diff --git a/config/sync/views.view.poll_admin.yml b/config/sync/views.view.poll_admin.yml new file mode 100644 index 0000000000000000000000000000000000000000..32d7d3e1593460218c044d09943ee1f57beb1b7f --- /dev/null +++ b/config/sync/views.view.poll_admin.yml @@ -0,0 +1,610 @@ +uuid: f829430b-6224-4f1c-b77a-e10b5758f35e +langcode: en +status: true +dependencies: + module: + - poll + - user +_core: + default_config_hash: 3kEzzukQtiq3RNSFBn-gP5Y_zDB-SA8JHZOG82Sc9V4 +id: poll_admin +label: 'Poll admin' +module: views +description: '' +tag: '' +base_table: poll_field_data +base_field: id +display: + default: + id: default + display_title: Master + display_plugin: default + position: 0 + display_options: + title: Poll + fields: + question: + id: question + table: poll_field_data + field: question + relationship: none + group_type: group + admin_label: '' + entity_type: null + entity_field: question + plugin_id: field + label: Question + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: string + settings: + link_to_entity: true + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + status_with_runtime: + id: status_with_runtime + table: poll_field_data + field: status_with_runtime + relationship: none + group_type: group + admin_label: '' + entity_type: poll + plugin_id: poll_status + label: Active + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + anonymous_vote_allow: + id: anonymous_vote_allow + table: poll_field_data + field: anonymous_vote_allow + relationship: none + group_type: group + admin_label: '' + entity_type: poll + entity_field: anonymous_vote_allow + plugin_id: field + label: 'Allow anonymous votes' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: boolean + settings: + format: on-off + format_custom_false: '' + format_custom_true: '' + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + created: + id: created + table: poll_field_data + field: created + relationship: none + group_type: group + admin_label: '' + entity_type: poll + entity_field: created + plugin_id: date + label: Created + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + date_format: fallback + custom_date_format: '' + timezone: '' + votes: + id: votes + table: poll_field_data + field: votes + relationship: none + group_type: group + admin_label: '' + entity_type: poll + plugin_id: poll_totalvotes + label: 'Total votes' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + operations: + id: operations + table: poll + field: operations + relationship: none + group_type: group + admin_label: '' + entity_type: poll + plugin_id: entity_operations + label: 'Operations links' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + destination: true + pager: + type: full + options: + offset: 0 + items_per_page: 50 + total_pages: null + id: 0 + tags: + next: 'next ›' + previous: '‹ previous' + first: '« first' + last: 'last »' + expose: + items_per_page: false + items_per_page_label: 'Items per page' + items_per_page_options: '5, 10, 25, 50' + items_per_page_options_all: false + items_per_page_options_all_label: '- All -' + offset: false + offset_label: Offset + quantity: 9 + exposed_form: + type: basic + options: + submit_button: Apply + reset_button: false + reset_button_label: Reset + exposed_sorts_label: 'Sort by' + expose_sort_order: true + sort_asc_label: Asc + sort_desc_label: Desc + access: + type: perm + options: + perm: 'access poll overview' + cache: + type: none + options: { } + empty: + area_text_custom: + id: area_text_custom + table: views + field: area_text_custom + relationship: none + group_type: group + admin_label: '' + plugin_id: text_custom + empty: true + content: 'No polls are available.' + tokenize: false + sorts: { } + arguments: { } + filters: + question: + id: question + table: poll_field_data + field: question + relationship: none + group_type: group + admin_label: '' + entity_type: poll + entity_field: question + plugin_id: string + operator: contains + value: '' + group: 1 + exposed: true + expose: + operator_id: question_op + label: Question + description: '' + use_operator: false + operator: question_op + identifier: question + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + anonymous: '0' + administrator: '0' + is_grouped: false + group_info: + label: '' + description: '' + identifier: '' + optional: true + widget: select + multiple: false + remember: false + default_group: All + default_group_multiple: { } + group_items: { } + status: + id: status + table: poll_field_data + field: status + relationship: none + group_type: group + admin_label: '' + entity_type: poll + entity_field: status + plugin_id: boolean + operator: '=' + value: '1' + group: 1 + exposed: true + expose: + operator_id: '' + label: 'True' + description: null + use_operator: false + operator: status_op + identifier: status + required: true + remember: false + multiple: false + remember_roles: + authenticated: authenticated + is_grouped: true + group_info: + label: Active + description: '' + identifier: status + optional: true + widget: select + multiple: false + remember: false + default_group: '1' + default_group_multiple: { } + group_items: + 1: + title: 'Yes' + operator: '=' + value: '1' + 2: + title: 'No' + operator: '=' + value: '0' + style: + type: table + options: + grouping: { } + row_class: '' + default_row_class: true + columns: + question: question + status: status + anonymous_vote_allow: anonymous_vote_allow + created: created + votes: votes + operations: operations + default: question + info: + question: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + status: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + anonymous_vote_allow: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + created: + sortable: true + default_sort_order: desc + align: '' + separator: '' + empty_column: false + responsive: '' + votes: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + operations: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + override: true + sticky: false + summary: '' + empty_table: true + caption: '' + description: '' + row: + type: fields + options: + default_field_elements: true + inline: + question: question + separator: '' + hide_empty: false + query: + type: views_query + options: + query_comment: '' + disable_sql_rewrite: false + distinct: false + replica: false + query_tags: { } + relationships: { } + header: { } + footer: { } + display_extenders: { } + cache_metadata: + max-age: 0 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - url + - url.query_args + - user.permissions + tags: { } + page_1: + id: page_1 + display_title: Page + display_plugin: page + position: 1 + display_options: + display_extenders: { } + path: admin/content/poll + cache_metadata: + max-age: 0 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - url + - url.query_args + - user.permissions + tags: { } diff --git a/phpcs-ruleset.xml.dist b/phpcs-ruleset.xml.dist index 85c899f4debe7ba4f8cee7392cc581651d0b496d..95c44bca3729671528e3fbf980df07774562b89d 100644 --- a/phpcs-ruleset.xml.dist +++ b/phpcs-ruleset.xml.dist @@ -60,15 +60,10 @@ <rule ref="./src/CodingStandards"/> <!-- Require the strict types declaration in every PHP file. --> - <rule ref="SlevomatCodingStandard.TypeHints.DeclareStrictTypes"> - <properties> - <property name="newlinesCountBetweenOpenTagAndDeclare" value="2"/> - </properties> - </rule> + <rule ref="SlevomatCodingStandard.TypeHints.DeclareStrictTypes" /> <!-- Require nullable types to be declared as such. --> - <rule ref="SlevomatCodingStandard.TypeHints.NullableTypeForNullDefaultValue"> - </rule> + <rule ref="SlevomatCodingStandard.TypeHints.NullableTypeForNullDefaultValue" /> <!-- Forbid annotations which are not included in the Drupal coding standard but are often added by IDEs. --> <rule ref="SlevomatCodingStandard.Commenting.ForbiddenAnnotations"> diff --git a/phpstan.neon b/phpstan.neon index 5e1f37dc53ecdf5c2b51312f7b87691a10a1c204..733669ac4218f93543e919f0f08f8139dcce1af1 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -10,12 +10,21 @@ parameters: rdf_entity: class: Drupal\rdf_entity\Entity\Rdf storage: Drupal\sparql_entity_storage\SparqlEntityStorage + paths: + - src + - tests/src + - web/modules/custom + - web/profiles + - web/themes/ventuno + - web/themes/iop ignoreErrors: # We're not prepared yet for this. - '#\Drupal calls should be avoided in classes, use dependency injection instead#' # As an exception, we allow extending these two classes. - '#Class Drupal\\joinup_group\\Form\\UserCancelForm extends @internal class Drupal\\user\\Form\\UserCancelForm.#' - '#Class Drupal\\joinup_group\\Form\\UserMultipleCancelConfirm extends @internal class Drupal\\user\\Form\\UserMultipleCancelConfirm.#' + # See https://github.com/mglaman/phpstan-drupal/issues/586. + - '#Call to deprecated method loadRevision\(\) of class Drupal\\Core\\Entity\\(ContentEntityStorageBase|EntityStorageInterface)\:\nin drupal\:10\.1\.0 and is removed from drupal\:11\.0\.0\. Use\n\\Drupal\\Core\\Entity\\RevisionableStorageInterface\:\:loadRevision instead\.#' excludePaths: - src/CodingStandards/Sniffs/NamingConventions/ValidUpdateNameSniff.php scanFiles: diff --git a/resources/docker/web/Dockerfile b/resources/docker/web/Dockerfile index 5536d3ff83681c4591f0bbfba88a7a3d80211624..6ae20953012e3031f3271a86c4b197af5b0e5fe4 100644 --- a/resources/docker/web/Dockerfile +++ b/resources/docker/web/Dockerfile @@ -1,4 +1,4 @@ -FROM fpfis/httpd-php-dev:8.1 as web +FROM fpfis/httpd-php-dev:8.2 as web # USER_ID and GROUP_ID should not be used at the same time with DAEMON_USER and DAEMON_GROUP respectively. ARG USER_ID diff --git a/resources/mac/README.md b/resources/mac/README.md index 47ffcc4e1672cf175e68d191a0705ac90043a555..6ce3e56f39b9a78563c3fd36319055e2dedcd55a 100644 --- a/resources/mac/README.md +++ b/resources/mac/README.md @@ -7,9 +7,31 @@ Docker. - Brew, Composer, Drush, Apache and PHP: [Install Apache & Multiple php versions](https://getgrav.org/blog/macos-catalina-apache-multiple-php-versions) -- MySql & Apache Virtual Hosts & DnsMasq: [Install mysql & Apache Virtual Hosts + +- Percona & Apache Virtual Hosts & DnsMasq: [Install mysql & Apache Virtual Hosts & Dnsmasq](https://getgrav.org/blog/macos-catalina-apache-mysql-vhost-apc) -- Memcache: [Install with Brew](https://formulae.brew.sh/formula/memcached) + + If you want to modify Percona's data-dir: + - Edit the `datadir` option in + `/opt/homebrew/opt/percona-server/homebrew.mxcl.percona-server.plist` and in + `/opt/homebrew/opt/percona-server/homebrew.percona-server.service` + - Inititalize the new data directory: + `mysqld --initialize-insecure --datadir <yourcustom-data-dir>` + +- Memcached: [Install with Brew](https://formulae.brew.sh/formula/memcached) + + To install memcached extension for the current PHP version execute + `pecl install memcached`. + + To get `libmemcached` and `zlib` paths: + `brew --prefix [libmemcached|zlib]` (installer will ask these paths). + +- Virtuoso: Use [version 7.2.6](https://github.com/openlink/virtuoso-opensource/releases/tag/v7.2.6.1). The macOS binary works + well both on Intel/Silicon + Ventura. + +- [Wget](https://formulae.brew.sh/formula/wget) + +- [GNU Patch](https://formulae.brew.sh/formula/gpatch) ## Installation @@ -77,12 +99,53 @@ there any default runner configuration, or any other declared in `./resources/runner` files or in `runner.yml.dist`. Note that the `runner.yml` file is not under VCS control. +Override path to Virtuoso and ISQL binaries. Note: whitespaces and special chars +must be escaped! +```yaml +virtuoso: + bin: /Applications/Virtuoso\ Open\ Source\ Edition\ v7.2.app/Contents/virtuoso-opensource/bin/virtuoso-t + +isql: + bin: /Applications/Virtuoso\ Open\ Source\ Edition\ v7.2.app/Contents/virtuoso-opensource/bin/isql +``` + ### Environment variables Sensitive data will be stored in [environment variables]( https://en.wikipedia.org/wiki/Environment_variable). See `.env.dist` for details. +Copy `.env.dist` to `.env` and add the necessary overrides. Example: +``` +DRUPAL_BASE_URL=http://joinup.test + +# Database connection. +DRUPAL_DATABASE_HOST=localhost +DRUPAL_DATABASE_PORT=3306 +DRUPAL_DATABASE_USERNAME=devuser +DRUPAL_DATABASE_PASSWORD=devpassword +DRUPAL_DATABASE_NAME=joinup + +# SPARQL connection. +DRUPAL_SPARQL_HOSTNAME=localhost +DRUPAL_SPARQL_PUBLIC_ENDPOINT=http://joinup.test/sparql/ + +DRUPAL_MEMCACHE_HOSTS=localhost:11211 + +SEARCH_API_SERVER_SS_SOLR_HOST=localhost + +SIMPLETEST_BASE_URL=http://joinup.test +SIMPLETEST_DB=mysql://devuser:devpassword@localhost:3306/joinup +SIMPLETEST_SPARQL_DB=sparql://localhost:8890?module=sparql_entity_storage +MINK_DRIVER_ARGS_WEBDRIVER="['chrome', null, 'http://localhost:4444/wd/hub']" + +DTT_BASE_URL=http://joinup.test +DTT_API_URL=http://localhost:4444/wd/hub +DTT_MINK_DRIVER_ARGS="['chrome', null, 'http://localhost:4444/wd/hub']" + +WEBDRIVER_URL=http://localhost:4444/wd/hub +``` + **Important!** For the NEXTCLOUD settings please contact your local developer ## Build the codebase @@ -110,20 +173,54 @@ $ ./vendor/bin/run virtuoso:start [Check Virtuoso](http://localhost:8890/sparql) -### Run `toolkit:install-clean` - -```bash -$ ./vendor/bin/run toolkit:install-clean -``` ### Setup Solr and check if it's running +Ensure Java SDK is available and whether the right JAVA_HOME env var is set up +properly. + ```bash -$ ./vendor/bin/run solr:setup +./vendor/bin/run solr:download-bin +./vendor/bin/run solr:config ``` +(Latter command will also start the Solr server.) + [Check Solr](http://localhost:8983/solr/#/) + +### Selenium server (for Javascript tests) + +1. Assuming that Java is already available (because of Solr), download the most + recent Selenium Server 4.5.x release at + https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.5.0. + (I tried 4.5.10 and 4.5.11 too, but they didn't work for me.) +2. Make sure your local chromedriver binary matches the actual Google Chrome + version. If you don't have Google Chrome, install it too. +3. Start the Selenium server: + ``` + java -Dwebdriver.chrome.driver=`which chromedriver` \ + -jar <path-to-selenium-server-4.5.*.jar> \ + standalone + ``` + +The recommended Selenium setup ("using Docker") in +[the root README file](./README.md#initial-setup) only works on Linux. On other +systems like macOS or Windows, Docker uses a virtual network inside its virtual +machine, which makes the Selenium container unable to access the web server on +your local environment. + +[Check Selenium](http://localhost:4444/ui#/sessions) + + +## Basic commands + +### Run `toolkit:install-clean` + +```bash +$ ./vendor/bin/run toolkit:install-clean +``` + ### Download production databases ```bash diff --git a/resources/patch/php/drupal/core/3324995.diff b/resources/patch/php/drupal/core/3324995.diff new file mode 100644 index 0000000000000000000000000000000000000000..a054f410a866e527b849160c6fc5ee6909391e90 --- /dev/null +++ b/resources/patch/php/drupal/core/3324995.diff @@ -0,0 +1,41 @@ +diff --git a/core/includes/update.inc b/core/includes/update.inc +index 2549249253f11a24315810df26be13408669152c..ae13309396aaf0e16a269894d9b564d65e11f462 100644 +--- a/core/includes/update.inc ++++ b/core/includes/update.inc +@@ -52,6 +52,7 @@ function update_check_requirements() { + + // Check requirements of all loaded modules. + $requirements = \Drupal::moduleHandler()->invokeAll('requirements', ['update']); ++ \Drupal::moduleHandler()->alter('requirements', $requirements); + $requirements += update_system_schema_requirements(); + return $requirements; + } +diff --git a/core/modules/system/tests/modules/update_script_test/update_script_test.install b/core/modules/system/tests/modules/update_script_test/update_script_test.install +index b49e7cf978dac5c4fa9f53f1b1bc5db816de4fdb..e78a75de0d2275c1d00563870d22ad6749916704 100644 +--- a/core/modules/system/tests/modules/update_script_test/update_script_test.install ++++ b/core/modules/system/tests/modules/update_script_test/update_script_test.install +@@ -28,7 +28,7 @@ function update_script_test_requirements($phase) { + $requirements['update_script_test'] = [ + 'title' => 'Update script test', + 'value' => 'Error', +- 'description' => 'This is a requirements error provided by the update_script_test module.', ++ 'description' => 'This is a (buggy description fixed in update_script_test_requirements_alter()) requirements error provided by the update_script_test module.', + 'severity' => REQUIREMENT_ERROR, + ]; + break; +@@ -38,6 +38,15 @@ function update_script_test_requirements($phase) { + return $requirements; + } + ++/** ++ * Implements hook_requirements_alter(). ++ */ ++function update_script_test_requirements_alter(array &$requirements): void { ++ if (isset($requirements['update_script_test']) && $requirements['update_script_test']['severity'] === REQUIREMENT_ERROR) { ++ $requirements['update_script_test']['description'] = 'This is a requirements error provided by the update_script_test module.'; ++ } ++} ++ + /** + * Implements hook_update_last_removed(). + */ diff --git a/resources/patch/php/drupal/email_confirmer/3381039.diff b/resources/patch/php/drupal/email_confirmer/3381039.diff new file mode 100644 index 0000000000000000000000000000000000000000..be80951b7f175eddeb3aeb716d59be49fe2ae48f --- /dev/null +++ b/resources/patch/php/drupal/email_confirmer/3381039.diff @@ -0,0 +1,39 @@ +Index: src/Plugin/QueueWorker/DelayedRequestDispatcher.php +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/src/Plugin/QueueWorker/DelayedRequestDispatcher.php b/src/Plugin/QueueWorker/DelayedRequestDispatcher.php +--- a/src/Plugin/QueueWorker/DelayedRequestDispatcher.php ++++ b/src/Plugin/QueueWorker/DelayedRequestDispatcher.php (date 1692028862825) +@@ -37,10 +37,17 @@ + /** + * Creates a new DelayedRequestDispatcher object. + * ++ * @param array $configuration ++ * A configuration array containing information about the plugin instance. ++ * @param string $plugin_id ++ * The plugin_id for the plugin instance. ++ * @param mixed $plugin_definition ++ * The plugin implementation definition. + * @param EntityTypeManagerInterface $entity_type_manager + * The entity type manager. + */ +- public function __construct(EntityTypeManagerInterface $entity_type_manager) { ++ public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager) { ++ parent::__construct($configuration, $plugin_id, $plugin_definition); + $this->already = []; + $this->entityTypeManager = $entity_type_manager; + } +@@ -50,7 +57,10 @@ + */ + public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { + return new static( +- $container->get('entity_type.manager') ++ $configuration, ++ $plugin_id, ++ $plugin_definition, ++ $container->get('entity_type.manager'), + ); + } + diff --git a/resources/patch/php/drupal/facets/3336646.diff b/resources/patch/php/drupal/facets/3336646.diff new file mode 100644 index 0000000000000000000000000000000000000000..52527eb055710fc7374da7984f263a35bf8c056c --- /dev/null +++ b/resources/patch/php/drupal/facets/3336646.diff @@ -0,0 +1,25 @@ +diff --git a/src/Result/Result.php b/src/Result/Result.php +index 334dc68559ba310b8743a188a66a2f1075e059b1..6ae88d99d980745766da700f8e2eb5eef779ebfa 100644 +--- a/src/Result/Result.php ++++ b/src/Result/Result.php +@@ -73,6 +73,20 @@ class Result implements ResultInterface { + */ + protected $children = []; + ++ /** ++ * The facet transliterate display value. ++ * ++ * @var string ++ */ ++ public $transliterateDisplayValue; ++ ++ /** ++ * The term weight. ++ * ++ * @var int ++ */ ++ public $termWeight; ++ + /** + * Constructs a new result value object. + * diff --git a/resources/patch/php/drupal/file_url/3326758.diff b/resources/patch/php/drupal/file_url/3326758.diff new file mode 100644 index 0000000000000000000000000000000000000000..c608c2de35e2dda77c3ae40169d57153597df81f --- /dev/null +++ b/resources/patch/php/drupal/file_url/3326758.diff @@ -0,0 +1,76 @@ +diff --git a/src/FileUrlHandler.php b/src/FileUrlHandler.php +index 6c62e9dd426c0cca72269cc8d195eff22ea62e2a..329eedb861e5ef1f21a43a453da59d45625afbb7 100644 +--- a/src/FileUrlHandler.php ++++ b/src/FileUrlHandler.php +@@ -69,7 +69,7 @@ class FileUrlHandler { + * @return bool + * TRUE if it's a remote file. + */ +- public static function isRemote(FileInterface $file) { ++ public static function isRemote(?FileInterface $file) { + return $file instanceof RemoteFile; + } + +diff --git a/src/Plugin/Field/FieldType/FileUrlFieldItemList.php b/src/Plugin/Field/FieldType/FileUrlFieldItemList.php +index 3fe18f07273bff443c11cdc6906af901a9a76928..3e7c1d07e1971e22408c3d4ed4cb6b855b1e20fc 100644 +--- a/src/Plugin/Field/FieldType/FileUrlFieldItemList.php ++++ b/src/Plugin/Field/FieldType/FileUrlFieldItemList.php +@@ -5,6 +5,7 @@ namespace Drupal\file_url\Plugin\Field\FieldType; + use Drupal\Core\Field\EntityReferenceFieldItemList; + use Drupal\Core\Field\FieldStorageDefinitionInterface; + use Drupal\Core\Form\FormStateInterface; ++use Drupal\file\FileInterface; + use Drupal\file_url\FileUrlHandler; + + /** +@@ -49,7 +50,7 @@ class FileUrlFieldItemList extends EntityReferenceFieldItemList { + if (!$update) { + // Add a new usage for newly uploaded files. + foreach ($this->referencedEntities() as $file) { +- if (!$file_handler->isRemote($file)) { ++ if ($file && !$file_handler->isRemote($file)) { + \Drupal::service('file.usage')->add($file, 'file', $entity->getEntityTypeId(), $entity->id()); + } + } +@@ -61,14 +62,16 @@ class FileUrlFieldItemList extends EntityReferenceFieldItemList { + + /** @var \Drupal\file\FileInterface $file */ + foreach ($files as $file) { +- $ids[] = $file->id(); ++ if ($file instanceof FileInterface) { ++ $ids[] = $file->id(); ++ } + } + + // On new revisions, all files are considered to be a new usage and no + // deletion of previous file usages are necessary. + if (!empty($entity->original) && $entity->getRevisionId() != $entity->original->getRevisionId()) { + foreach ($files as $file) { +- if (!$file_handler->isRemote($file)) { ++ if ($file && !$file_handler->isRemote($file)) { + \Drupal::service('file.usage')->add($file, 'file', $entity->getEntityTypeId(), $entity->id()); + } + } +diff --git a/src/Plugin/Field/FieldWidget/FileUrlWidget.php b/src/Plugin/Field/FieldWidget/FileUrlWidget.php +index 2f906c7f6c0186935d05c61a1fc80e00b9a46a7e..a7397749a5c0ffcf540150fba80faae5fc35c054 100644 +--- a/src/Plugin/Field/FieldWidget/FileUrlWidget.php ++++ b/src/Plugin/Field/FieldWidget/FileUrlWidget.php +@@ -9,6 +9,7 @@ use Drupal\Core\Form\FormStateInterface; + use Drupal\Core\Url; + use Drupal\file\Element\ManagedFile; + use Drupal\file\Entity\File; ++use Drupal\file\FileInterface; + use Drupal\file\Plugin\Field\FieldWidget\FileWidget; + use Drupal\file_url\Entity\RemoteFile; + use Drupal\file_url\FileUrlHandler; +@@ -225,7 +226,9 @@ class FileUrlWidget extends FileWidget { + if (!FileUrlHandler::isRemote($file)) { + // Normalise managed file IDs from URLs to numeric IDs before calling + // the parent method. +- $element['#default_value']['fids'] = [$file->id()]; ++ if ($file instanceof FileInterface) { ++ $element['#default_value']['fids'] = [$file->id()]; ++ } + $file_url_type = 'upload'; + } + else { diff --git a/resources/patch/php/drupal/file_url/file_url.diff b/resources/patch/php/drupal/file_url/file_url.diff deleted file mode 100644 index 450802c82bcaf553c086d94e9e7d618d1f63696e..0000000000000000000000000000000000000000 --- a/resources/patch/php/drupal/file_url/file_url.diff +++ /dev/null @@ -1,41 +0,0 @@ -Index: src/Plugin/Field/FieldType/FileUrlFieldItemList.php -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== -diff --git a/src/Plugin/Field/FieldType/FileUrlFieldItemList.php b/src/Plugin/Field/FieldType/FileUrlFieldItemList.php ---- a/src/Plugin/Field/FieldType/FileUrlFieldItemList.php -+++ b/src/Plugin/Field/FieldType/FileUrlFieldItemList.php (date 1671629583516) -@@ -145,7 +145,7 @@ - // default translation is deleted remove all file usages within this entity. - $count = $entity->isDefaultTranslation() ? 0 : 1; - foreach ($this->referencedEntities() as $file) { -- if (!FileUrlHandler::isRemote($file)) { -+ if ($file && !FileUrlHandler::isRemote($file)) { - \Drupal::service('file.usage')->delete($file, 'file', $entity->getEntityTypeId(), $entity->id(), $count); - } - } -Index: src/FileUrlHandler.php -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== -diff --git a/src/FileUrlHandler.php b/src/FileUrlHandler.php ---- a/src/FileUrlHandler.php -+++ b/src/FileUrlHandler.php (date 1671629327082) -@@ -63,13 +63,13 @@ - /** - * Checks if a file entity is s remote file. - * -- * @param \Drupal\file\FileInterface $file -+ * @param \Drupal\file\FileInterface|null $file - * The file being checked. - * - * @return bool - * TRUE if it's a remote file. - */ -- public static function isRemote(FileInterface $file) { -+ public static function isRemote(?FileInterface $file) { - return $file instanceof RemoteFile; - } - diff --git a/resources/patch/php/drupal/honeypot/2943526.diff b/resources/patch/php/drupal/honeypot/2943526.diff new file mode 100644 index 0000000000000000000000000000000000000000..e8ead033097ecf37c53a884e0a8eaa895e1dee0c --- /dev/null +++ b/resources/patch/php/drupal/honeypot/2943526.diff @@ -0,0 +1,47 @@ +Index: honeypot.install +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/honeypot.install b/honeypot.install +--- a/honeypot.install ++++ b/honeypot.install (date 1692019069792) +@@ -38,6 +38,11 @@ + $schema['honeypot_user'] = [ + 'description' => 'Table that stores failed attempts to submit a form.', + 'fields' => [ ++ 'id' => [ ++ 'type' => 'serial', ++ 'not null' => TRUE, ++ 'description' => 'Unique record ID.', ++ ], + 'uid' => [ + 'description' => 'Foreign key to {users}.uid; uniquely identifies a Drupal user to whom this ACL data applies.', + 'type' => 'int', +@@ -57,6 +62,7 @@ + 'not null' => TRUE, + ], + ], ++ 'primary key' => ['id'], + 'indexes' => [ + 'uid' => ['uid'], + 'timestamp' => ['timestamp'], +@@ -97,3 +103,18 @@ + $spec['initial'] = ''; + \Drupal::database()->schema()->addField('honeypot_user', 'hostname', $spec); + } ++ ++/** ++ * Creates an 'id' column for the {honeypot_user} table to act as a primary key. ++ */ ++function honeypot_update_8102() { ++ $schema = \Drupal::database()->schema(); ++ $schema->addField('honeypot_user', 'id', [ ++ 'type' => 'serial', ++ 'not null' => TRUE, ++ 'description' => 'Unique record ID.', ++ ], ++ [ ++ 'primary key' => ['id'], ++ ]); ++} diff --git a/resources/patch/php/drupal/poll/3274724-4.patch b/resources/patch/php/drupal/poll/3274724-4.patch new file mode 100644 index 0000000000000000000000000000000000000000..ff3750b09569e9614ad49023450ff659e74e4f65 --- /dev/null +++ b/resources/patch/php/drupal/poll/3274724-4.patch @@ -0,0 +1,119 @@ +From 834a307dddae858b1876daffc266353208dbe760 Mon Sep 17 00:00:00 2001 +From: Adrian Lorenc <adrian.lorenc@gmail.com> +Date: Tue, 25 Jul 2023 16:28:13 +0200 +Subject: [PATCH 1/2] Add "edit any pools" permission. + +--- + poll.permissions.yml | 2 ++ + src/PollAccessControlHandler.php | 18 ++++++++++++------ + tests/src/Functional/PollCreateTest.php | 24 ++++++++++++++++++++++++ + 3 files changed, 38 insertions(+), 6 deletions(-) + +diff --git a/poll.permissions.yml b/poll.permissions.yml +index 3b8cbec78..6ae4079bf 100644 +--- a/poll.permissions.yml ++++ b/poll.permissions.yml +@@ -2,6 +2,8 @@ create polls: + title: 'Create polls' + edit own polls: + title: 'Edit own polls' ++edit any pools: ++ title: 'Edit any polls' + administer polls: + title: 'Administer polls' + restrict access: true +diff --git a/src/PollAccessControlHandler.php b/src/PollAccessControlHandler.php +index b714af94e..dde97995f 100644 +--- a/src/PollAccessControlHandler.php ++++ b/src/PollAccessControlHandler.php +@@ -31,14 +31,20 @@ class PollAccessControlHandler extends EntityAccessControlHandler { + if ($operation == 'view') { + return AccessResult::allowedIfHasPermission($account, 'access polls'); + } +- elseif ($operation == 'update' && !$account->isAnonymous() && $account->id() == $entity->get('uid')->target_id) { +- return AccessResult::allowedIfHasPermissions($account, [ +- 'edit own polls', ++ elseif ($operation == 'update') { ++ $ownEntityAccess = AccessResult::allowedIf(!$account->isAnonymous() && $account->id() == $entity->get('uid')->target_id); ++ $ownPollAccess = AccessResult::allowedIfHasPermission($account, 'edit own polls') ++ ->andIf($ownEntityAccess); ++ ++ $adminPermissions = [ + 'administer polls', +- ], 'OR'); ++ 'edit any pools', ++ ]; ++ return AccessResult::allowedIfHasPermissions($account, $adminPermissions, 'OR') ++ ->orIf($ownPollAccess); + } +- // Otherwise fall back to the parent which checks the administer polls +- // permission. ++ ++ // Otherwise fall back to the parent permission. + return parent::checkAccess($entity, $operation, $account); + } + +diff --git a/tests/src/Functional/PollCreateTest.php b/tests/src/Functional/PollCreateTest.php +index 021894281..da86c42af 100644 +--- a/tests/src/Functional/PollCreateTest.php ++++ b/tests/src/Functional/PollCreateTest.php +@@ -54,6 +54,30 @@ class PollCreateTest extends PollTestBase { + + } + ++ /** ++ * Tests edit permissions. ++ */ ++ function testEditAnyPoolsPermission() { ++ $this->site_builder = $this->drupalCreateUser(array_merge([ ++ 'edit any pools', ++ ], $this->webUserPermissions)); ++ ++ // User has "edit any pools" permission. ++ $this->drupalLogin($this->site_builder); ++ $this->drupalGet('poll/' . $this->poll->id() . '/edit'); ++ $this->assertSession()->statusCodeEquals(200); ++ ++ // User has "administer polls" permission. ++ $this->drupalLogin($this->admin_user); ++ $this->drupalGet('poll/' . $this->poll->id() . '/edit'); ++ $this->assertSession()->statusCodeEquals(200); ++ ++ // User does not have edit permission. ++ $this->drupalLogin($this->web_user); ++ $this->drupalGet('poll/' . $this->poll->id() . '/edit'); ++ $this->assertSession()->statusCodeEquals(404); ++ } ++ + /** + * Tests creating, editing, and closing a poll. + */ +-- +GitLab + + +From 7004b1d93b6220c7bf11847db763df4b257c3ef9 Mon Sep 17 00:00:00 2001 +From: Adrian Lorenc <adrian.lorenc@gmail.com> +Date: Tue, 25 Jul 2023 16:36:31 +0200 +Subject: [PATCH 2/2] Update to 403 - Forbidden + +--- + tests/src/Functional/PollCreateTest.php | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/src/Functional/PollCreateTest.php b/tests/src/Functional/PollCreateTest.php +index da86c42af..0fe7e930c 100644 +--- a/tests/src/Functional/PollCreateTest.php ++++ b/tests/src/Functional/PollCreateTest.php +@@ -75,7 +75,7 @@ class PollCreateTest extends PollTestBase { + // User does not have edit permission. + $this->drupalLogin($this->web_user); + $this->drupalGet('poll/' . $this->poll->id() . '/edit'); +- $this->assertSession()->statusCodeEquals(404); ++ $this->assertSession()->statusCodeEquals(403); + } + + /** +-- +GitLab + diff --git a/resources/patch/php/drupal/smart_trim/3369954.diff b/resources/patch/php/drupal/smart_trim/3369954.diff new file mode 100644 index 0000000000000000000000000000000000000000..0214d9696c30119af64f258a5d866b8b9d069073 --- /dev/null +++ b/resources/patch/php/drupal/smart_trim/3369954.diff @@ -0,0 +1,18 @@ +diff --git a/src/Plugin/Field/FieldFormatter/SmartTrimFormatter.php b/src/Plugin/Field/FieldFormatter/SmartTrimFormatter.php +index 1fcf189765b2361d4469466edf3bc61b7a921e24..01ed52f1372f4516b957580edb71cd11e06ad838 100644 +--- a/src/Plugin/Field/FieldFormatter/SmartTrimFormatter.php ++++ b/src/Plugin/Field/FieldFormatter/SmartTrimFormatter.php +@@ -403,9 +403,10 @@ class SmartTrimFormatter extends FormatterBase implements ContainerFactoryPlugin + $output = preg_replace('/<style[^>]*>.*?<\/style>/is', ' ', $output); + + // Strip tags. +- // Add space before each tag to ensure words don't run together. +- // Logic via https://stackoverflow.com/questions/12824899/strip-tags-replace-tags-by-space-rather-than-deleting-them +- $output = str_replace('<', ' <', $output); ++ // Add space before each opening tag to ensure words don't run ++ // together. Used logic from: ++ // https://stackoverflow.com/questions/12824899/strip-tags-replace-tags-by-space-rather-than-deleting-them ++ $output = preg_replace('/<(\w+)(?![^>]*\/>)[^>]*>/', ' <\1>', $output); + $output = strip_tags($output); + $output = str_replace(' ', ' ', $output); + $output = trim($output); diff --git a/resources/patch/php/drupal/smart_trim/d10.diff b/resources/patch/php/drupal/smart_trim/d10.diff deleted file mode 100644 index b5e5390b98ea3b14a9d59fa8e44527a23453c823..0000000000000000000000000000000000000000 --- a/resources/patch/php/drupal/smart_trim/d10.diff +++ /dev/null @@ -1,17 +0,0 @@ -Index: smart_trim.info.yml -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== -diff --git a/smart_trim.info.yml b/smart_trim.info.yml ---- a/smart_trim.info.yml -+++ b/smart_trim.info.yml (date 1589766533000) -@@ -6,7 +6,7 @@ - - drupal:field - - drupal:filter - - drupal:text --core_version_requirement: ^8 || ^9 -+core_version_requirement: ^8 || ^9 || ^10 - - # Information added by Drupal.org packaging script on 2020-05-18 - version: '8.x-1.3' diff --git a/resources/runner/dev.yml b/resources/runner/dev.yml index 8e15cac9ff04377ad48cd6c5988315ccc0dbd4bb..79a6218a471ae63ce8b5129bd14e6027adacc4ed 100644 --- a/resources/runner/dev.yml +++ b/resources/runner/dev.yml @@ -8,6 +8,7 @@ dev: - admin_toolbar - config_update - field_ui + - masquerade - memcache_admin - page_manager_ui - views_ui diff --git a/resources/runner/drupal.yml b/resources/runner/drupal.yml index d2088ea487f5a8e54fdc2651f232b47b6ce8d01d..ee8cfe4a2ef3ba83a52db6a34abbb704f3768e81 100644 --- a/resources/runner/drupal.yml +++ b/resources/runner/drupal.yml @@ -217,6 +217,7 @@ drupal: 'http_request_mock', 'joinup_cas_mock_server', 'joinup_test', + 'masquerade', 'memcache_admin', 'og_ui', 'page_manager_ui', diff --git a/resources/runner/testing.yml b/resources/runner/testing.yml index 7f8a1ae795ddeb64cac566488286c4bf0948f033..680a7a2f1cd0bddf9ae0e8f509ea838364118161 100644 --- a/resources/runner/testing.yml +++ b/resources/runner/testing.yml @@ -75,16 +75,6 @@ commands: - task: exec command: (test "${phpcs.run_on_push}" = "1" && ln -s ../../scripts/git/pre_push ${joinup.dir}/.git/hooks/pre-push) || true - # Scans the code base for deprecated code. - testing:check-deprecated-code: - - task: exec - command: ${phpstan.bin} --memory-limit=1G --debug -vvv --no-progress analyse src tests/src web/modules/custom web/profiles web/themes/ventuno web/themes/iop - - testing:check-deprecated-code-contrib: - - task: exec - # Mute the returning error code as is used only for reporting. - command: ${phpstan.bin} --memory-limit=2G --no-progress analyse web/modules/contrib web/themes/contrib || true - testing:install-modules: - task: run command: drush:module-install diff --git a/resources/runner/toolkit.yml b/resources/runner/toolkit.yml index 0368ec272f17360fee9fbc95738fab3fbac55970..e08e51bd78331caa67d5cde77e5b78ec0d4ede41 100644 --- a/resources/runner/toolkit.yml +++ b/resources/runner/toolkit.yml @@ -35,6 +35,11 @@ toolkit: - task: remove file: ${toolkit.build.dist.root}/node_modules + test: + phpstan: + memory_limit: '1G' + options: 'debug -vvv no-progress' + commands: # Overrides the toolkit:build-dev command. @@ -176,15 +181,6 @@ commands: command: testing:phpcs-setup - task: exec command: ${phpcs.file.bin} - # This is a temporary solution as the Digit QA pipeline doesn't run JS lint. - # Todo: Remove this task in DROPSEC-2040. - # See: https://citnet.tech.ec.europa.eu/CITnet/jira/browse/DROPSEC-2040. - - task: run - command: toolkit:lint-js - - task: run - command: testing:check-deprecated-code - # - task: run - # command: testing:check-deprecated-code-contrib # Lints JS files using ESLint. toolkit:lint-js: diff --git a/scripts/check_status_report.php b/scripts/check_status_report.php index 26d532362d78854fd27e7c4ffc7d6612ad176efc..7936b3bab288426d3a7906f72f1cc840d0f20260 100755 --- a/scripts/check_status_report.php +++ b/scripts/check_status_report.php @@ -15,13 +15,9 @@ $autoloader = require __DIR__ . '/../vendor/autoload.php'; -$ignored_requirements = getenv('DRUPAL_STATUS_REPORT_IGNORE') ?: 'update status,joinup_core_root_user_blocked,search_api_solr_schema_joinup_modifications,deprecated_modules,deprecated_themes,metatag_maintenance_mode,search_api_pending_tasks'; -$ignored_option = "--ignore='$ignored_requirements'"; - function run_status_report(bool $title_only, bool $display_command = FALSE): ?string { - global $ignored_option; - $command = __DIR__ . "/../vendor/bin/drush core:requirements --severity=1 $ignored_option "; - $command .= $title_only ? '--field=title' : '--fields=title,severity,value,description --format=sections'; + $command = __DIR__ . '/../vendor/bin/drush core:requirements --severity=1'; + $command .= $title_only ? ' --field=title' : '--fields=title,severity,value,description --format=sections'; if ($display_command) { print $command . "\n"; } diff --git a/scripts/composer/post_install b/scripts/composer/post_install index 4862ba5dddece9fc9af30c300f6481136d6e28d4..13c1782253fe9e75ff5c64db7595026b4db809e9 100755 --- a/scripts/composer/post_install +++ b/scripts/composer/post_install @@ -1,5 +1,7 @@ #!/usr/bin/env bash +set -e + # Check that composer.lock hash is in sync. composer validate --no-check-all --no-check-publish diff --git a/tests/features/adms_ap_compliance.feature b/tests/features/adms_ap_compliance.feature index 28e0f14fb2b0e121fce3a2c5f9d6d6500943ca4a..f43f8eb99c3c02602902a91c04e019720574c9ac 100644 --- a/tests/features/adms_ap_compliance.feature +++ b/tests/features/adms_ap_compliance.feature @@ -24,7 +24,6 @@ Feature: Joinup should be ADMS-AP compliant. | description | Description of the collection. | | access url | http://www.example.com/msm/ | | logo | logo.png | - | banner | banner.jpg | | contact information | Jocelyn Bass | | owner | Teddy Bass | | creation date | 2016-07-13T13:00 | @@ -37,9 +36,9 @@ Feature: Joinup should be ADMS-AP compliant. | state | validated | | featured | no | And the following solutions: - | title | collection | author | description | logo | banner | owner | contact information | creation date | modification date | documentation | content creation | keywords | landing page | language | metrics page | moderation | topic | related solutions | solution type | source code repository | spatial coverage | status | translation | webdav creation | webdav url | wiki | state | featured | pinned in | - | Early Omega | Morbid Scattered Microphone | Andre Munson | <p>content</p> | logo.png | banner.jpg | Teddy Bass | Jocelyn Bass | 2017-11-01T8:00 | 2017-12-01T8:43 | text.pdf | registered users | ADMS, validation | http://www.example.com/landing1 | Interlingua | http://www.example.org/metrics1 | no | EU and European Policies | | Networking Infrastructure Enablers | http://www.example.org/source | Canada | Completed | | no | http://www.example.org/webdav | http://www.example.org/wiki | validated | no | | - | Snake Timely | Morbid Scattered Microphone | Branson Winthrop | <p>content</p> | logo.png | banner.jpg | Teddy Bass | Jocelyn Bass | 2015-03-03T8:00 | 2018-02-14T18:43 | text.pdf | registered users | | http://www.example.com/landing2 | English | http://www.example.org/metrics2 | yes | Demography | Early Omega | Gateway | http://www.example.org/source | Canada | Completed | | yes | http://www.example.org/webdav | http://www.example.org/wiki | validated | no | | + | title | collection | author | description | logo | owner | contact information | creation date | modification date | documentation | content creation | keywords | landing page | language | metrics page | moderation | topic | related solutions | solution type | source code repository | spatial coverage | status | translation | webdav creation | webdav url | wiki | state | featured | pinned in | + | Early Omega | Morbid Scattered Microphone | Andre Munson | <p>content</p> | logo.png | Teddy Bass | Jocelyn Bass | 2017-11-01T8:00 | 2017-12-01T8:43 | text.pdf | registered users | ADMS, validation | http://www.example.com/landing1 | Interlingua | http://www.example.org/metrics1 | no | EU and European Policies | | Networking Infrastructure Enablers | http://www.example.org/source | Canada | Completed | | no | http://www.example.org/webdav | http://www.example.org/wiki | validated | no | | + | Snake Timely | Morbid Scattered Microphone | Branson Winthrop | <p>content</p> | logo.png | Teddy Bass | Jocelyn Bass | 2015-03-03T8:00 | 2018-02-14T18:43 | text.pdf | registered users | | http://www.example.com/landing2 | English | http://www.example.org/metrics2 | yes | Demography | Early Omega | Gateway | http://www.example.org/source | Canada | Completed | | yes | http://www.example.org/webdav | http://www.example.org/wiki | validated | no | | And the following releases: | title | documentation | release number | release notes | creation date | is version of | state | status | spatial coverage | keywords | language | | Omega3 | text.pdf | 3.0.0 | New 3.0 | 2017-11-11T11:11 | Early Omega | validated | Completed | Andorra | food | Athapascan languages | diff --git a/tests/features/asset_release/add_asset_release.feature b/tests/features/asset_release/add_asset_release.feature index 3a699fb6e36e672d0c4ff89ae84b30520d5330a9..5e9385578ac0c4f7f9c6e8b5fc902dc1924045da 100644 --- a/tests/features/asset_release/add_asset_release.feature +++ b/tests/features/asset_release/add_asset_release.feature @@ -56,7 +56,7 @@ Feature: "Add release" visibility options. Then I should see the heading "Add Release" And the following fields should be present "Name, Release number, Release notes, Upload a new file or enter a URL, Geographical coverage, Keyword, Status, Language, Date, Time" # The entity is new, so the current workflow state should not be shown. - And the following fields should not be present "Description, Logo, Banner, Solution type, Contact information, Included asset, Translation, Distribution, Current workflow state, Langcode, Motivation" + And the following fields should not be present "Description, Logo, Solution type, Contact information, Included asset, Translation, Distribution, Current workflow state, Langcode, Motivation" When I press "Publish" Then I should see the following error messages: diff --git a/tests/features/asset_release/asset_release.moderation.feature b/tests/features/asset_release/asset_release.moderation.feature index 1066be4962e43746cfbc121005b5c9d41f2cb7c6..a715b86d0aba2c8f21eb379d7f9db519ee58a6b8 100644 --- a/tests/features/asset_release/asset_release.moderation.feature +++ b/tests/features/asset_release/asset_release.moderation.feature @@ -21,7 +21,6 @@ Feature: Asset release moderation | title | Dark Ship | | description | Dark ship | | logo | logo.png | - | banner | banner.jpg | | owner | Kenny Logan | | contact information | SheriMoore | | state | validated | diff --git a/tests/features/authentication.feature b/tests/features/authentication.feature index 92e780f153774a8a2e8ca1ca064cb21dbf1147fe..217d5ebd539c6bc021b05f0c0e383072abff6365 100644 --- a/tests/features/authentication.feature +++ b/tests/features/authentication.feature @@ -48,11 +48,9 @@ Feature: User authentication | licence | | licence/add | | media/add | - | media/add/collection_banner | | media/add/collection_logo | | media/add/event_logo | | media/add/news_logo | - | media/add/solution_banner | | media/add/solution_logo | | node/add | | node/add/custom_page | @@ -132,11 +130,9 @@ Feature: User authentication | licence | | licence/add | | media/add | - | media/add/collection_banner | | media/add/collection_logo | | media/add/event_logo | | media/add/news_logo | - | media/add/solution_banner | | media/add/solution_logo | | node/add | | node/add/custom_page | @@ -196,11 +192,9 @@ Feature: User authentication | licence | | licence/add | | media/add | - | media/add/collection_banner | | media/add/collection_logo | | media/add/event_logo | | media/add/news_logo | - | media/add/solution_banner | | media/add/solution_logo | | outdated-content-threshold | | propose/collection | diff --git a/tests/features/collection/api.feature b/tests/features/collection/api.feature index 8eaf93a62f7d128f61a1551cd57779353b7322fe..f96174f328f59c14d3ee9421a8386c069c0ee9ae 100644 --- a/tests/features/collection/api.feature +++ b/tests/features/collection/api.feature @@ -8,7 +8,6 @@ Feature: Collection API Given the following collection: | title | Open Data Initiative | | logo | logo.png | - | banner | banner.jpg | | moderation | no | | closed | no | | content creation | facilitators and authors | @@ -22,7 +21,7 @@ Feature: Collection API | state | validated | Then I should have 1 collection - @uploadFiles:logo.png,banner.jpg + @uploadFiles:logo.png Scenario: Assign ownership when a collection is created through UI. Given the following owner: | name | type | @@ -38,7 +37,6 @@ Feature: Collection API | E-mail | basic.collection.api@example.com | When I select "Data gathering, data processing" from "Topic" And I attach the file "logo.png" to "Logo" - And I attach the file "banner.jpg" to "Banner" And I press "Add existing" at the "Owner" field And I fill in "Owner" with "Prayfish" And I press "Add owner" diff --git a/tests/features/collection/collection.about.feature b/tests/features/collection/collection.about.feature index 5efb35023102ce081df20ca8c6c1c1e2923adaa8..2e575243b9f2d43f953cab99bd312432c2dfe526 100644 --- a/tests/features/collection/collection.about.feature +++ b/tests/features/collection/collection.about.feature @@ -62,7 +62,7 @@ Feature: About page And I press "Publish" Then I should see the heading "Fitness at work" And the page should contain the html text "This collection is intended to show ways of being <strong>fit while working</strong>" - And I should see the text "In consequat sapien risus a malesuada…" in the Content region + And I should see the text "In consequat sapien risus a…" in the Content region But I should not see the text "Vivamus libero leo blandit a ornare non sollicitudin iaculis" in the Content region And I should not see the text "malesuada eros auctor eget. Curabitur at" in the Content region When I click "Read more" in the "Content" region diff --git a/tests/features/collection/collection.archived.feature b/tests/features/collection/collection.archived.feature index 12b0c0bfdba8c4227ae31df22f8560ce71a7df26..375e8311584ff5e427ebfc1d685a877c286de674 100644 --- a/tests/features/collection/collection.archived.feature +++ b/tests/features/collection/collection.archived.feature @@ -17,8 +17,8 @@ Feature: Creating content and commenting on archived collection | name | | April Hawkins | And the following collections: - | title | description | logo | banner | owner | contact information | state | topic | - | The Willing Consort | The Willing Consort | logo.png | banner.jpg | April Hawkins | Jody Rodriquez | validated | Statistics and Analysis | + | title | description | logo | owner | contact information | state | topic | + | The Willing Consort | The Willing Consort | logo.png | April Hawkins | Jody Rodriquez | validated | Statistics and Analysis | And the following collection user memberships: | collection | user | roles | | The Willing Consort | Karl Fields | owner, facilitator | diff --git a/tests/features/collection/collection.edit.feature b/tests/features/collection/collection.edit.feature index 5fdfdc63da2ccebbec8b12e26e83bb7901209c7d..f30d4860c5ecfdc8cfd0e5cddd6a00ec24836e84 100644 --- a/tests/features/collection/collection.edit.feature +++ b/tests/features/collection/collection.edit.feature @@ -13,8 +13,8 @@ Feature: Editing collections | name | Collection editorial | | email | collection.editorial@example.com | And collections: - | title | logo | banner | abstract | access url | closed | creation date | description | content creation | moderation | topic | owner | contact information | state | - | Überwaldean Land Eels | logo.png | banner.jpg | Read up on all about <strong>dogs</strong> | http://dogtime.com/dog-breeds/profiles | yes | 28-01-1995 12:05 | The Afghan Hound is elegance personified. | facilitators and authors | yes | Supplier exchange | Organisation example | Collection editorial | draft | + | title | logo | abstract | access url | closed | creation date | description | content creation | moderation | topic | owner | contact information | state | + | Überwaldean Land Eels | logo.png | Read up on all about <strong>dogs</strong> | http://dogtime.com/dog-breeds/profiles | yes | 28-01-1995 12:05 | The Afghan Hound is elegance personified. | facilitators and authors | yes | Supplier exchange | Organisation example | Collection editorial | draft | When I am logged in as a facilitator of the "Überwaldean Land Eels" collection And I go to the homepage of the "Überwaldean Land Eels" collection And I click "Edit" in the "Entity actions" region @@ -45,8 +45,8 @@ Feature: Editing collections | name | wysiwyg editorial | | email | wysiwyg.editorial@example.com | And collections: - | title | logo | banner | abstract | access url | closed | creation date | description | content creation | moderation | topic | owner | contact information | state | - | Rhyme Land Eels | logo.png | banner.jpg | Read up on all about <strong>dogs</strong> | http://dogtime.com/dog-breeds/profiles | yes | 28-01-1995 12:05 | Hound is elegance personified. | facilitators and authors | yes | Supplier exchange | wysiwyg example | wysiwyg editorial | draft | + | title | logo | abstract | access url | closed | creation date | description | content creation | moderation | topic | owner | contact information | state | + | Rhyme Land Eels | logo.png | Read up on all about <strong>dogs</strong> | http://dogtime.com/dog-breeds/profiles | yes | 28-01-1995 12:05 | Hound is elegance personified. | facilitators and authors | yes | Supplier exchange | wysiwyg example | wysiwyg editorial | draft | When I am logged in as a facilitator of the "Rhyme Land Eels" collection And I go to the homepage of the "Rhyme Land Eels" collection @@ -68,8 +68,8 @@ Feature: Editing collections | name | bytes editorial | | email | bytes.editorial@example.com | And collections: - | title | logo | banner | abstract | access url | closed | creation date | description | content creation | moderation | topic | owner | contact information | state | - | Rhyme Land wysiwyg Eels | logo.png | banner.jpg | Read up on all about <strong>dogs</strong> | http://dogtime.com/dog-breeds/profiles | yes | 28-01-1995 12:05 | Hound is elegance personified. | facilitators and authors | yes | Supplier exchange | Regression wysiwyg example | bytes editorial | draft | + | title | logo | abstract | access url | closed | creation date | description | content creation | moderation | topic | owner | contact information | state | + | Rhyme Land wysiwyg Eels | logo.png | Read up on all about <strong>dogs</strong> | http://dogtime.com/dog-breeds/profiles | yes | 28-01-1995 12:05 | Hound is elegance personified. | facilitators and authors | yes | Supplier exchange | Regression wysiwyg example | bytes editorial | draft | When I am logged in as a facilitator of the "Rhyme Land wysiwyg Eels" collection And I go to the homepage of the "Rhyme Land wysiwyg Eels" collection diff --git a/tests/features/collection/collection.member_administration.feature b/tests/features/collection/collection.member_administration.feature index 50e36aefbaad387dc1b3dbf3da13de7a0eb942ef..865d78ff6db85722c172a986a2390803ad8cd627 100644 --- a/tests/features/collection/collection.member_administration.feature +++ b/tests/features/collection/collection.member_administration.feature @@ -21,8 +21,8 @@ Feature: Collection membership administration | Turkey Ham | | turkey_ham@example.com | Turkey | Ham | | Cam Bridge | | cambridge@example.com | Cam | Bridge | And the following collections: - | title | description | logo | banner | owner | contact information | closed | state | - | Medical diagnosis | 10 patients in 10 minutes | logo.png | banner.jpg | James Wilson | Princeton-Plainsboro Teaching Hospital | yes | validated | + | title | description | logo | owner | contact information | closed | state | + | Medical diagnosis | 10 patients in 10 minutes | logo.png | James Wilson | Princeton-Plainsboro Teaching Hospital | yes | validated | And the following collection user memberships: | collection | user | roles | state | | Medical diagnosis | Lisa Cuddy | administrator, facilitator | active | diff --git a/tests/features/collection/collection.member_overview.feature b/tests/features/collection/collection.member_overview.feature index 996cd697294cac9ae040ec79280385b8bae06f32..7ac0be74f1028a78ed7b0f8dce6176e45b7e3162 100644 --- a/tests/features/collection/collection.member_overview.feature +++ b/tests/features/collection/collection.member_overview.feature @@ -32,9 +32,9 @@ Feature: Collection membership overview | Aniruddha Kováts | Aniruddha | Kováts | blaise.jpg | Chief Communications Officer | | Aali Dalton | Aali | Dalton | richard.jpg | Founder | And the following collections: - | title | description | logo | banner | owner | contact information | state | - | Jubilant Robots | Fresh oil harvest! | logo.png | banner.jpg | Ayodele Sommer | Nita Yang | validated | - | Jubilant Rabits | Fresh oil harvest! | logo.png | banner.jpg | Ayodele Sommer | Nita Yang | draft | + | title | description | logo | owner | contact information | state | + | Jubilant Robots | Fresh oil harvest! | logo.png | Ayodele Sommer | Nita Yang | validated | + | Jubilant Rabits | Fresh oil harvest! | logo.png | Ayodele Sommer | Nita Yang | draft | And the following collection user memberships: | collection | user | roles | state | | Jubilant Robots | Ruby Valenta | owner | | diff --git a/tests/features/collection/collection.moderation.feature b/tests/features/collection/collection.moderation.feature index 06a0af50a88fff0fea451459dbababe6c3228ec5..acda251143f3e43f1a93329a38158ff516f6e15f 100644 --- a/tests/features/collection/collection.moderation.feature +++ b/tests/features/collection/collection.moderation.feature @@ -36,12 +36,12 @@ Feature: Collection moderation # Facilitator of all the collections. | Carole James | | And the following collections: - | title | description | logo | banner | owner | contact information | state | - | Deep Past | Azure ship | logo.png | banner.jpg | Simon Sandoval | Francis | draft | - | The Licking Silence | The Licking Silence | logo.png | banner.jpg | Simon Sandoval | Francis | proposed | - | Person of Wizards | Person of Wizards | logo.png | banner.jpg | Simon Sandoval | Francis | validated | - | The Shard's Hunter | The Shard's Hunter | logo.png | banner.jpg | Simon Sandoval | Francis | archival request | - | Luck in the Abyss | Luck in the Abyss | logo.png | banner.jpg | Simon Sandoval | Francis | archived | + | title | description | logo | owner | contact information | state | + | Deep Past | Azure ship | logo.png | Simon Sandoval | Francis | draft | + | The Licking Silence | The Licking Silence | logo.png | Simon Sandoval | Francis | proposed | + | Person of Wizards | Person of Wizards | logo.png | Simon Sandoval | Francis | validated | + | The Shard's Hunter | The Shard's Hunter | logo.png | Simon Sandoval | Francis | archival request | + | Luck in the Abyss | Luck in the Abyss | logo.png | Simon Sandoval | Francis | archived | And the following collection user memberships: | collection | user | roles | | Deep Past | Erika Reid | owner | @@ -179,7 +179,6 @@ Feature: Collection moderation | title | Some berry pie | | description | Berries are tasty. | | logo | logo.png | - | banner | banner.jpg | | owner | Carpet Sandation | | contact information | Partyanimal | | topic | Supplier exchange | @@ -202,7 +201,7 @@ Feature: Collection moderation Then I should see the text "No berry pie" And I should not see the text "Some berry pie" - @javascript @terms @uploadFiles:logo.png,banner.jpg + @javascript @terms @uploadFiles:logo.png Scenario: Moderate an open collection # Regression test for a bug that caused the slider that controls the # content creation setting to revert to default state when the form is @@ -229,8 +228,6 @@ Feature: Collection moderation Then the "Additional fields" accordion section should be active And I attach the file "logo.png" to "Logo" And I wait for AJAX to finish - And I attach the file "banner.jpg" to "Banner" - And I wait for AJAX to finish And I select the radio button "Any user can create content." # Regression test for a bug that caused the content creation setting to be @@ -265,7 +262,7 @@ Feature: Collection moderation And I delete the "Katsumoto" owner And I delete the "A secretary in the fog" contact information - @javascript @terms @uploadFiles:logo.png,banner.jpg + @javascript @terms @uploadFiles:logo.png Scenario: Changing Content creation value - regression #1 # Regression test for a bug that happens when a change on the content # creation setting happens after an ajax callback. @@ -289,8 +286,6 @@ Feature: Collection moderation And I expand the "Additional fields" accordion section And I attach the file "logo.png" to "Logo" And I wait for AJAX to finish - And I attach the file "banner.jpg" to "Banner" - And I wait for AJAX to finish And I select the radio button "Any user can create content." # Save the collection. @@ -307,7 +302,7 @@ Feature: Collection moderation And I delete the "Garnett Clifton" owner And I delete the "Domestic secretary" contact information - @javascript @terms @uploadFiles:logo.png,banner.jpg + @javascript @terms @uploadFiles:logo.png Scenario: Changing Content creation value - regression #2 # Regression test for a bug that causes the wrong content creation value # to be saved after the "Closed collection" checkbox is checked. @@ -331,8 +326,6 @@ Feature: Collection moderation And I expand the "Additional fields" accordion section And I attach the file "logo.png" to "Logo" And I wait for AJAX to finish - And I attach the file "banner.jpg" to "Banner" - And I wait for AJAX to finish And I select the radio button "Only facilitators and authors can create content." # Save the collection. @@ -349,7 +342,7 @@ Feature: Collection moderation And I delete the "Coretta Simonson" owner And I delete the "Secretary of thieves" contact information - @javascript @terms @uploadFiles:logo.png,banner.jpg + @javascript @terms @uploadFiles:logo.png Scenario: Changing Content creation value - regression #3 # Regression test for a bug that happens when an "Add more" button on a # multi-value widget is clicked and then the "Closed collection" checkbox @@ -374,8 +367,6 @@ Feature: Collection moderation And I expand the "Additional fields" accordion section And I attach the file "logo.png" to "Logo" And I wait for AJAX to finish - And I attach the file "banner.jpg" to "Banner" - And I wait for AJAX to finish When I press "Add another item" at the "Geographical coverage" field And I wait for AJAX to finish And I select the radio button "Only facilitators and authors can create content." @@ -394,7 +385,7 @@ Feature: Collection moderation And I delete the "Terrance Nash" owner And I delete the "Secretary of Silk" contact information - @javascript @terms @uploadFiles:logo.png,banner.jpg + @javascript @terms @uploadFiles:logo.png Scenario: Changing Content creation value - regression #4 # Regression test for a bug that happens when the "Closed collection" checkbox # is checked and then an "Add more" button on a multi-value widget is clicked. @@ -418,8 +409,6 @@ Feature: Collection moderation And I expand the "Additional fields" accordion section And I attach the file "logo.png" to "Logo" And I wait for AJAX to finish - And I attach the file "banner.jpg" to "Banner" - And I wait for AJAX to finish And I select the radio button "Only facilitators and authors can create content." When I press "Add another item" at the "Geographical coverage" field diff --git a/tests/features/collection/collection.moderation.integration.feature b/tests/features/collection/collection.moderation.integration.feature index d5148b170c95f8fd6e2c258bdc763220eb3287a1..75d8035e3261dea793077db5f8928e02d32103cc 100644 --- a/tests/features/collection/collection.moderation.integration.feature +++ b/tests/features/collection/collection.moderation.integration.feature @@ -15,12 +15,12 @@ Feature: As a user of the website | name | | Martin Gonzalez | And the following collections: - | title | description | logo | banner | owner | contact information | state | topic | - | Willing Fairy | Willing Fairy | logo.png | banner.jpg | Martin Gonzalez | Marty Kelley | draft | Statistics and Analysis | - | The Fallen Thoughts | The Fallen Thoughts | logo.png | banner.jpg | Martin Gonzalez | Marty Kelley | proposed | Finance in EU | - | Destruction of Scent | Destruction of Scent | logo.png | banner.jpg | Martin Gonzalez | Marty Kelley | validated | Supplier exchange | - | The School's Stars | The School's Stars | logo.png | banner.jpg | Martin Gonzalez | Marty Kelley | archival request | E-justice | - | Boy in the Dreams | Boy in the Dreams | logo.png | banner.jpg | Martin Gonzalez | Marty Kelley | archived | E-health | + | title | description | logo | owner | contact information | state | topic | + | Willing Fairy | Willing Fairy | logo.png | Martin Gonzalez | Marty Kelley | draft | Statistics and Analysis | + | The Fallen Thoughts | The Fallen Thoughts | logo.png | Martin Gonzalez | Marty Kelley | proposed | Finance in EU | + | Destruction of Scent | Destruction of Scent | logo.png | Martin Gonzalez | Marty Kelley | validated | Supplier exchange | + | The School's Stars | The School's Stars | logo.png | Martin Gonzalez | Marty Kelley | archival request | E-justice | + | Boy in the Dreams | Boy in the Dreams | logo.png | Martin Gonzalez | Marty Kelley | archived | E-health | And the following collection user memberships: | collection | user | roles | | Destruction of Scent | Cornelius | owner, facilitator | diff --git a/tests/features/collection/collection_overview.feature b/tests/features/collection/collection_overview.feature index ae6467c16a88f432c16fa937ac61b875d2035997..24aff14157cb3e1f5f93517d764854c13fd5b296 100644 --- a/tests/features/collection/collection_overview.feature +++ b/tests/features/collection/collection_overview.feature @@ -1,7 +1,7 @@ @api @group-d Feature: Collections Overview - @terms @uploadFiles:logo.png,banner.jpg + @terms @uploadFiles:logo.png Scenario: View collection overview as an anonymous user Given users: | Username | E-mail | @@ -57,7 +57,6 @@ Feature: Collections Overview | E-mail | overviewer@example.com | And I select "Employment and Support Allowance" from "Topic" And I attach the file "logo.png" to "Logo" - And I attach the file "banner.jpg" to "Banner" # Click the button to select an existing owner. And I press "Add existing" at the "Owner" field And I fill in "Owner" with "Organisation example" @@ -100,6 +99,19 @@ Feature: Collections Overview Then I should see the "Jira will be down for maintenance" tile And I should not see the "Maintenance page" tile + @javascript + Scenario: Feature icon should be visible for collection's content. + Given the following collection: + | title | Service Management apps | + | state | validated | + And news content: + | title | collection | state | featured | + | Jira | Service Management apps | validated | yes | + | Trello | Service Management apps | validated | no | + When I go to the homepage of the "Service Management apps" collection + Then the "Jira" tile should be marked as featured + But the "Trello" "news" tile should not be marked as featured + Scenario: Users are able to filter collections they have created or that are featured site-wide. Given users: | Username | diff --git a/tests/features/collection/last_update_time.feature b/tests/features/collection/last_update_time.feature index 38bfbb09a4f48965ca8eaaa105f1b571db27489e..32cb9b9797d04af9c344470af73b9364be7e1a72 100644 --- a/tests/features/collection/last_update_time.feature +++ b/tests/features/collection/last_update_time.feature @@ -1,4 +1,4 @@ -@api @javascript @terms @group-c +@api @terms @group-c Feature: Tests the collection last update time. Scenario: As a user visiting a collection, I want to see the collection last @@ -74,48 +74,23 @@ Feature: Tests the collection last update time. # The custom page is the newest thus will give the collection updated time. Then the response should contain "2016-05-06T05:29" - When I go to the edit form of the "Get Rid of Rats" document - And I press "Update" - # The updated time has changed to the current time but we cannot catch the - # time we ran the update. + When I update the "Get Rid of Rats" document at "2016-08-28T15:01" + And I reload the page Then the response should not contain "2016-05-06T05:29" - And I should see "few seconds ago" - - # Let's see how the timeago jquery widget changes. - # Note for QA: If the reviewer decide that we cannot afford to sleep 1 min - # while running the tests, we can remove this part. - Given I wait until the page contains the text "about a minute ago" - Then I should see "about a minute ago" - - # Delete a community content node. - Given I go to the content page of the type document with the title "Get Rid of Rats" - # Open the contextual menu that contains the local primary tasks. - And I open the header local tasks menu - Given I click "Delete" - When I press "Delete" - And I go to the homepage of the "Household Wizard" collection - # The deletion of community content node changes the last updated time. - Then I should see "few seconds ago" - - Given I wait until the page contains the text "about a minute ago" - Then I should see "about a minute ago" + But the response should contain "2016-08-28T15:01" # Editing the solution changes the last updated time. - Given I go to the edit form of the "Roof Hole Cover" solution - And I select "Networking Infrastructure Enablers" from "Solution type" - And I select "Demography" from "Topic" - And I press "Publish" - - When I go to the homepage of the "Household Wizard" collection - Then I should see "few seconds ago" + When I update the "Roof Hole Cover" solution at "2023-07-14T00:03" + And I reload the page + Then the response should not contain "2016-08-28T15:01" + But the response should contain "2023-07-14T00:03" - Given I wait until the page contains the text "about a minute ago" - Then I should see "about a minute ago" + # Delete a community content node. + Given I go to the delete form of the "Get Rid of Rats" document + And I click "Delete" + And I press "Delete" + Then the "Household Wizard" collection "Last updated" time has just been updated # Deleting the solution changes the last updated time. - Given I go to the edit form of the "Roof Hole Cover" solution - And I click "Delete" - When I press "Delete" - And I go to the homepage of the "Household Wizard" collection - # The deletion of community content node refreshes the last updated time. - Then I should see "few seconds ago" + Given I delete the "Roof Hole Cover" solution + Then the "Household Wizard" collection "Last updated" time has just been updated diff --git a/tests/features/collection/newsletter_subscription.feature b/tests/features/collection/newsletter_subscription.feature index 2034dcad19bf2ec090301a75d991174e9c39c5c6..ce0552b492f2bd4274b5e79d1d3f767611a4b669 100644 --- a/tests/features/collection/newsletter_subscription.feature +++ b/tests/features/collection/newsletter_subscription.feature @@ -17,8 +17,8 @@ Feature: Subscribing to collection newsletters | name | | Antonios Katsaros | And the following collections: - | title | description | logo | banner | owner | contact information | state | topic | - | Volkor X | We do not come in peace | logo.png | banner.jpg | Antonios Katsaros | Charalambos Demetriou | validated | Statistics and Analysis | + | title | description | logo | owner | contact information | state | topic | + | Volkor X | We do not come in peace | logo.png | Antonios Katsaros | Charalambos Demetriou | validated | Statistics and Analysis | And "news" content: | title | collection | state | author | | Hypersleep | Volkor X | validated | Tatiana Andreas | diff --git a/tests/features/collection/notification.collection.feature b/tests/features/collection/notification.collection.feature index d37ff557d6bffbefd0e1b84cb29dd230ebe91685..1328b89b755729c09de33d441419f98aab85fdfb 100644 --- a/tests/features/collection/notification.collection.feature +++ b/tests/features/collection/notification.collection.feature @@ -33,11 +33,11 @@ Feature: Notification test for the collection transitions. | NC to delete | validated | No one cares | No one cares. | Supplier exchange | NC for all | Notificationous absolutous | | NC to delete by mod | validated | No one cares | No one cares. | Supplier exchange | NC for all | Notificationous absolutous | And the following solutions: - | title | collections | logo | banner | state | + | title | collections | logo | state | # Has only one affiliate. - | NC Solution1 | NC to archive | logo.png | banner.jpg | validated | + | NC Solution1 | NC to archive | logo.png | validated | # Has more than one affiliate. - | NC Solution2 | NC to request archival,NC to archive | logo.png | banner.jpg | validated | + | NC Solution2 | NC to request archival,NC to archive | logo.png | validated | And the following solution user memberships: | solution | user | roles | | NC Solution1 | NCS owner | owner | diff --git a/tests/features/collection/propose.feature b/tests/features/collection/propose.feature index 0eeaa829ec9b6f19d5bdb94c34836f9c4b48a616..fcb8167d53d9c391a2eb9731dba13d8b32ada40e 100644 --- a/tests/features/collection/propose.feature +++ b/tests/features/collection/propose.feature @@ -37,7 +37,6 @@ Feature: Proposing a collection # @see: https://citnet.tech.ec.europa.eu/CITnet/jira/browse/ISAICP-3196 And I should see the description "Web page for the external Repository." for the "Access URL" field And I should see the description "This must be an external URL such as http://example.com." for the "Access URL" field - And I should see the description "For best result the image must be larger than 2400x345 pixels." for the "Banner" field # Check that validations errors are shown for required fields. When I press "Propose" @@ -67,18 +66,14 @@ Feature: Proposing a collection And I press "Add existing" at the "Owner" field And I fill in "Owner" with "Organisation example" And I press "Propose" - # Regression test for setting the Logo and Banner fields as optional. - # @see: https://citnet.tech.ec.europa.eu/CITnet/jira/browse/ISAICP-3215 Then I should not see the following error messages: | error messages | | Field Logo is required | - | Field Banner is required | And I should see the heading "Ancient and Classical Mythology" # Regression test for the keywords field in the about page. And I should not see the text "Keywords" in the "Content" region And I should not see the text "Some keyword" in the "Content" region And I should see a logo on the header - And I should see a banner on the header And I should see "Thank you for proposing a collection. Your request is currently pending approval by the site administrator." # The user that proposed the collection should be auto-subscribed. @@ -93,10 +88,9 @@ Feature: Proposing a collection Then I should see the heading "Add custom page" When I fill in the following: | Title | About this group | - | Body | <p>Some more<em>information</em><br />about the collection.<p> | + And I select "HR" from "Topic" And I press "Publish" Then I should see the success message "Custom page About this group has been created." - And the page should contain the html text "<p>Some more<em>information</em><br>about the collection.</p>" # Clean up the collection that was created. Then I delete the "Ancient and Classical Mythology" collection @@ -117,7 +111,7 @@ Feature: Proposing a collection And I press "Save as draft" Then I should see the error message "Content with title The Ratcatcher's Guild already exists. Please choose a different title." - @javascript @uploadFiles:banner.jpg + @javascript # This is a regression test for a bug in which the label texts of the options # vanished after performing an AJAX request in a different element on the # page. @@ -126,13 +120,10 @@ Feature: Proposing a collection Given I am logged in as a user with the "authenticated" role When I go to the propose collection form And I expand the "Additional fields" accordion section - And I attach the file "banner.jpg" to "Banner" - And I wait for AJAX to finish - Then I should see the link "banner.jpg" And I should see the text "Only members can create content." And I should see the text "Any user can create content." - @javascript @generateMedia @generateMediaTypes:collection_banner,collection_logo @terms @uploadFiles:logo.png + @javascript @generateMedia @generateMediaTypes:collection_logo @terms @uploadFiles:logo.png Scenario: Propose collection form fields should be organized in tabs. Given the following owner: | name | type | @@ -168,16 +159,13 @@ Feature: Proposing a collection And the following field widgets should not be visible "Contact information" # As a user, editing a collection, solution, event or news item, I want to - # be able to pick-up a pre-uploaded image when editing the logo or the - # banner, as an alternative to the image upload. + # be able to pick-up a pre-uploaded image when editing the logo as an + # alternative to the image upload. And I select image #3 as collection logo And I wait for AJAX to finish - And I select image #8 as collection banner - And I wait for AJAX to finish And I press "Propose" Then I should see the success message "Thank you for proposing a collection. Your request is currently pending approval by the site administrator." And the "Just a proposal" collection logo is image #3 - And the "Just a proposal" collection banner is image #8 Given I go to the edit form of the "Just a proposal" collection And I expand the "Additional fields" accordion section @@ -334,9 +322,6 @@ Feature: Proposing a collection And I attach the file "simple.svg" to "Logo" And I wait for AJAX to finish Then I should not see the error message "Invalid or unsafe SVG file." - And I attach the file "simple.svg" to "Banner" - And I wait for AJAX to finish - Then I should not see the error message "Invalid or unsafe SVG file." And I check "Moderated" And I press "Propose" Then I should see the heading "SVG API example" diff --git a/tests/features/communities/interoperable_europe/interoperable_europe.feature b/tests/features/communities/interoperable_europe/interoperable_europe.feature index b6ed709cf7236b16984a37145b90117620e59a72..7b57e7d34098191ef3d6031f799e02f47953d1f0 100644 --- a/tests/features/communities/interoperable_europe/interoperable_europe.feature +++ b/tests/features/communities/interoperable_europe/interoperable_europe.feature @@ -86,6 +86,18 @@ Feature: | Follow us on Youtube | | Subscribe to the interoperable europe newsletter | + @javascript + Scenario: User should see error message if he does not fill out all required fields. + Given custom_page content: + | title | collection | state | + | IOP validation page | Interoperable Europe | published | + + Then I am logged in as a moderator + And I go to the edit form of the "IOP validation page" "custom page" + And I fill in "Title" with "" + And I press "Update" + Then I should see the error message "Title field is required." + @javascript Scenario: Report link and eTranslate button are not available in IOP custom pages. Given custom_page content: diff --git a/tests/features/communities/interoperable_europe/iop_paragraphs.feature b/tests/features/communities/interoperable_europe/iop_paragraphs.feature index 52d6b43a7d40c4cf42fc904b404360ced3df408b..a807742fb0312d696129a0343cd2d8d5a89bbdc3 100644 --- a/tests/features/communities/interoperable_europe/iop_paragraphs.feature +++ b/tests/features/communities/interoperable_europe/iop_paragraphs.feature @@ -1,4 +1,4 @@ -@api +@api @terms Feature: Access and functionality checks for the IOP related paragraphs. @@ -8,69 +8,7 @@ Feature: | uri | http://data.europa.eu/w21/8e30f798-ff2b-478b-9c09-5ed5a63b4c8c | | title | Interoperable Europe | | state | validated | - - Scenario: Moderators can access the special paragraphs. - Given collection: - | title | Joinup | - | state | validated | - - Given I am logged in as a moderator - And I go to the "Joinup" collection - And I click "Add custom page" - Then I should not see the button "Add Row" - - When I am on the homepage - And I click "Interoperable Europe" in the "Navigation bar" - And I click "Add custom page" - # Fill in the title to avoid the CSS validation kicking in when clicking - # buttons. - And I fill in "Title" with "Hello world" - Then I should see the button "Add Carousel" - And I should see the button "Add Row" - But I should not see the button "Add 1 column layout" - And I should not see the button "Add 2 column layout" - And I should not see the button "Add 2 column with featured media on the left" - And I should not see the button "Add 2 column with featured media on the right" - And I should not see the button "Add 3 column layout" - And I should not see the button "Add Image" - And I should not see the button "Add Call to action" - And I should not see the button "Add Configurable listing" - - When I press "Add Row" - Then I should see the button "Add 1 column layout" - And I should see the button "Add 2 column layout" - And I should see the button "Add 2 column with featured media on the left" - And I should see the button "Add 2 column with featured media on the right" - And I should see the button "Add 3 column layout" - But I should not see the button "Add Image" - And I should not see the button "Add Call to action" - And the following fields should not be present "URL, Link text" - And I should not see the button "Add Configurable listing" - - When I press "Add 1 column layout" - Then I should not see the button "Add Configurable listing" - But I should see the button "Add Image" - And I should see the button "Add Call to action" - And I should see the button "Add Carousel" - When I press "Add Carousel" - Then the following fields should be present "URL, Link text, Available filters" - - Given I am logged in as a facilitator of the "Joinup" collection - And I go to the "Joinup" collection - And I click "Add custom page" - Then I should not see the button "Add Row" - - Given I am logged in as a facilitator of the "Interoperable Europe" collection - And I am on the homepage - And I click "Interoperable Europe" in the "Navigation bar" - And I click "Add custom page" - Then I should see the button "Add Row" - When I press "Add Row" - Then I should see the button "Add 1 column layout" - And I should see the button "Add 2 column layout" - And I should see the button "Add 2 column with featured media on the left" - And I should see the button "Add 2 column with featured media on the right" - And I should see the button "Add 3 column layout" + | topic | Demography | Scenario: Test that carousels content listing options are working correctly. Given the following collections: @@ -80,28 +18,18 @@ Feature: | title | collection | content | state | | Some news 1 | Interoperable Europe | Some content. | validated | | Some news 2 | Carousel c1 | Come content. | validated | + And custom_page content: + | title | collection | state | + | News carousel | Interoperable Europe | published | + And I append "carousel" to "field_paragraphs_body" field in "node" entity with following "News carousel" title: + | content_listing:value | a:6:{s:6:"fields";a:1:{s:20:"content_listing_type";a:2:{s:6:"weight";i:0;s:6:"region";s:3:"top";}}s:7:"enabled";i:1;s:13:"query_presets";s:18:"entity_bundle\|news";s:5:"limit";s:2:"12";s:11:"show_shared";i:0;s:13:"global_search";i:0;} | - When I am logged in as a moderator - And I go to the homepage - And I click "Interoperable Europe" in the "Navigation bar" - And I click "Add custom page" - - When I fill in the following: - | Title | News carousel | - | Body | A carousel with news | - And I press "Add Row" - And I press "Add 1 column layout" - And I press "Add Carousel" - And I fill in "Query presets" with: - """ - entity_bundle|news - """ - When I press "Publish" - + When I go to the "News carousel" custom page # Ensure that listings are restricted only for group content by default. Then I should see the "Some news 1" tile But I should not see the "Some news 2" tile + @javascript Scenario: Test that carousels with specific content is working correctly. Given the following collections: | title | state | @@ -113,38 +41,47 @@ Feature: | Some page 3 | Carousel c1 | Some content. | published | When I am logged in as a moderator - And I go to the homepage - And I click "Interoperable Europe" in the "Navigation bar" - And I click "Add custom page" + And I go to the "Interoperable Europe" collection + And I click "Add custom page" in the plus button menu When I fill in the following: - | Title | Pages carousel | - | Body | A carousel with custom pages | - And I press "Add Row" - And I press "Add 1 column layout" - And I press "Add Carousel" - + | Title | Pages carousel | + And I select "Demography" 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 I click "Carousel" And I select "Custom page" from "Available filters" And I press "Add and configure filter" And I fill in "Custom page" with "Some page 1" - When I press "Publish" + And I press "Save" in the "Modal buttons" region + And I press "Save" Then I should see the "Some page 1" tile But I should not see the "Some page 2" tile And I should not see the "Some page 3" tile - When I go to the edit form of the "Pages carousel" "custom page" + When I open the header local tasks menu + And I click "Edit" in the "Entity actions" region + And I "edit" from the "Custom page body" field the child 1 paragraph of 1 layout And I fill in "Custom page" with "Some page 3" - And I press "Update" + And I press "Save" in the "Modal buttons" region + And I press "Save" # Global search is not checked. No tiles should be shown. Then I should not see the "Some page 1" tile And I should not see the "Some page 2" tile And I should not see the "Some page 3" tile - When I go to the edit form of the "Pages carousel" "custom page" + When I open the header local tasks menu + And I click "Edit" in the "Entity actions" region + And I "edit" from the "Custom page body" field the child 1 paragraph of 1 layout And I check "Global search" - And I press "Update" + And I press "Save" in the "Modal buttons" region + And I press "Save" + Then I should see the "Some page 3" tile But I should not see the "Some page 1" tile And I should not see the "Some page 2" tile @@ -155,23 +92,13 @@ Feature: | Some news 1 | Interoperable Europe | Some content. | validated | 2 day ago | | Some news 2 | Interoperable Europe | Some content. | validated | 3 days ago | | Some news 3 | Interoperable Europe | Some content. | validated | 1 days ago | + And custom_page content: + | title | collection | state | + | A carousel with news | Interoperable Europe | published | + And I append "carousel" to "field_paragraphs_body" field in "node" entity with following "A carousel with news" title: + | content_listing:value | a:6:{s:6:"fields";a:1:{s:20:"content_listing_type";a:2:{s:6:"weight";i:0;s:6:"region";s:3:"top";}}s:7:"enabled";i:1;s:13:"query_presets";s:18:"entity_bundle\|news";s:5:"limit";s:2:"12";s:11:"show_shared";i:0;s:13:"global_search";i:0;} | - When I am logged in as a moderator - And I go to the homepage - And I click "Interoperable Europe" in the "Navigation bar" - And I click "Add custom page" - - When I fill in the following: - | Title | News carousel | - | Body | A carousel with news | - And I press "Add Row" - And I press "Add 1 column layout" - And I press "Add Carousel" - And I fill in "Query presets" with: - """ - entity_bundle|news - """ - When I press "Publish" + When I go to the "A carousel with news" custom page Then I should see the following tiles in the correct order: | Some news 3 | | Some news 1 | @@ -179,27 +106,17 @@ Feature: Scenario: Test also that events, when listed alone, are sorted by event date. Given event content: - | title | collection | content | state | created | start date | end date | - | Some event 1 | Interoperable Europe | Some content. | validated | 2 day ago | 5 day ago | 4 day ago | + | title | collection | content | state | created | start date | end date | + | Some event 1 | Interoperable Europe | Some content. | validated | 2 day ago | 5 day ago | 4 day ago | | Some event 2 | Interoperable Europe | Some content. | validated | 3 days ago | 6 days ago | 5 days ago | | Some event 3 | Interoperable Europe | Some content. | validated | 1 days ago | 7 days ago | 6 days ago | + And custom_page content: + | title | collection | state | + | Events carousel | Interoperable Europe | published | + And I append "carousel" to "field_paragraphs_body" field in "node" entity with following "Events carousel" title: + | content_listing:value | a:6:{s:6:"fields";a:1:{s:20:"content_listing_type";a:2:{s:6:"weight";i:0;s:6:"region";s:3:"top";}}s:7:"enabled";i:1;s:13:"query_presets";s:19:"entity_bundle\|event";s:5:"limit";s:2:"12";s:11:"show_shared";i:0;s:13:"global_search";i:0;} | - When I am logged in as a moderator - And I go to the homepage - And I click "Interoperable Europe" in the "Navigation bar" - And I click "Add custom page" - - When I fill in the following: - | Title | Events carousel | - | Body | A carousel with events | - And I press "Add Row" - And I press "Add 1 column layout" - And I press "Add Carousel" - And I fill in "Query presets" with: - """ - entity_bundle|event - """ - When I press "Publish" + When I go to the "Events carousel" custom page Then I should see the following tiles in the correct order: | Some event 1 | | Some event 2 | diff --git a/tests/features/community_content/add_community_content.feature b/tests/features/community_content/add_community_content.feature index 1d7ffc52eaafe40a29b94b43e552a4cccac070c5..66fdb1c1a90b751946ad035ab8ccacf904507ea0 100644 --- a/tests/features/community_content/add_community_content.feature +++ b/tests/features/community_content/add_community_content.feature @@ -112,8 +112,8 @@ Feature: Add community content @terms Scenario: Directly publishing community content sets the correct publication date. Given the following collections: - | title | description | logo | banner | state | - | CC container | Community content container. | logo.png | banner.jpg | validated | + | title | description | logo | state | + | CC container | Community content container. | logo.png | validated | And I am logged in as a "facilitator" of the "CC container" collection # Create a published discussion. diff --git a/tests/features/community_content/archive.listings.feature b/tests/features/community_content/archive.listings.feature index 5c447b9c060cc9b1929ed2671ba371d58588a9d3..6b843842380b8fca0d1330bed7f70adc6fe76c9c 100644 --- a/tests/features/community_content/archive.listings.feature +++ b/tests/features/community_content/archive.listings.feature @@ -49,83 +49,89 @@ Feature: Archived content on content listings - groups and paragraphs. # By default, the toggle to show archived content is disabled. But I should not see the "Archived news" tile + @javascript Scenario: Content listing paragraph can control visibility of archived items. + And custom_page content: + | title | collection | state | + | Some page | Some collection | published | + | Poly page | Some collection | published | + And I append "layout" to "field_paragraphs_body" field in "node" entity with following "Some page" title: + | behavior_settings | a:3:{s:17:"layout_paragraphs";a:4:{s:6:"layout";s:13:"layout_onecol";s:6:"config";a:1:{s:5:"label";s:0:"";}s:11:"parent_uuid";N;s:6:"region";N;}s:16:"background_theme";a:0:{}s:11:"extra_class";a:0:{}} | + And I append "layout" to "field_paragraphs_body" field in "node" entity with following "Poly page" title: + | behavior_settings | a:3:{s:17:"layout_paragraphs";a:4:{s:6:"layout";s:13:"layout_onecol";s:6:"config";a:1:{s:5:"label";s:0:"";}s:11:"parent_uuid";N;s:6:"region";N;}s:16:"background_theme";a:0:{}s:11:"extra_class";a:0:{}} | + When I am logged in as a moderator - And I go to the "Some collection" collection - And I click "Add custom page" - And I fill in "Title" with "Some page" - And I press "Add Content listing" + And I go to the edit form of the "Some page" "custom page" + And I select "HR" from "Topic" + And I additionally select "Supplier exchange" from "Topic" + And I click "Choose component" + And I click "Content listing" And I fill in "Query presets" with "entity_bundle|news" - And I press "Save" + And I press "Save" in the "Modal buttons" region + And I press "Update" Then I should see the heading "Some page" # By default, 'Show archived content' is set to 'unarchived'. And I should see the "Published news" tile But I should not see the "Archived news" tile - And I go to the "Poly screens" collection - And I click "Add custom page" - And I fill in "Title" with "Poly page" - And I press "Add Content listing" - And I select "All" from "Show archived content" + When I go to the edit form of the "Poly page" "custom page" + And I select "Supplier exchange" from "Topic" + And I click "Choose component" + And I click "Content listing" + And I select "All" from "Show archived content" in the "Modal content" region And I fill in "Query presets" with "entity_bundle|news" - And I press "Save" + And I press "Save" in the "Modal buttons" region + And I press "Update" + + When I go to the "Poly page" custom page + Then I should see the heading "Poly page" + And I should see the text "Show archived" When I go to the "Some page" custom page - And I click "Edit" - And I select "Archived" from "Show archived content" - And I press "Save" + Then I open the header local tasks menu + And I click "Edit" in the "Entity actions" region + Then I "edit" from the "Custom page body" field the child 1 paragraph of 1 layout + And I select "Archived" from "Show archived content" in the "Modal content" region + And I press "Save" in the "Modal buttons" region + And I press "Update" Then I should see the heading "Some page" And I should see the "Archived news" tile But I should not see the "Published news" tile - - When I go to the "Poly page" custom page - Then I should see the heading "Poly page" + Then I should see the heading "Some page" And I should not see the text "Show archived" + And I should see the "Archived news" tile + And I should not see the "Published news" tile When I go to the "Some page" custom page - And I click "Edit" - And I select "All" from "Show archived content" - And I press "Save" + Then I open the header local tasks menu + And I click "Edit" in the "Entity actions" region + Then I "edit" from the "Custom page body" field the child 1 paragraph of 1 layout + And I select "All" from "Show archived content" in the "Modal content" region + And I press "Save" in the "Modal buttons" region + And I press "Update" Then I should see the heading "Some page" - Then I should see the following facet items "News, Show archived" in this order + #Then I should see the following facet items "News, Show archived" in this order And I should see the text "Show archived" And I should not see the "Archived news" tile And I should see the "Published news" tile - When I click "Show archived" + When I go to "/collection/some-collection/some-page?f[0]=status%3Aarchived" And I should see the "Archived news" tile And I should not see the "Published news" tile - When I go to the "Poly page" custom page - Then I should see the heading "Poly page" - And I should not see the text "Show archived" - When I go to the "Some page" custom page - And I click "Edit" - And I select "Archived" from "Show archived content" - And I press "Save" - Then I should see the heading "Some page" - And I should not see the text "Show archived" - And I should see the "Archived news" tile - And I should not see the "Published news" tile - - When I go to the "Poly page" custom page - Then I should see the heading "Poly page" - And I should not see the text "Show archived" - - When I go to the "Some page" custom page - And I click "Edit" - And I select "Unarchived" from "Show archived content" - And I press "Save" + Then I open the header local tasks menu + And I click "Edit" in the "Entity actions" region + Then I "edit" from the "Custom page body" field the child 1 paragraph of 1 layout + And I select "Unarchived" from "Show archived content" in the "Modal content" region + And I press "Save" in the "Modal buttons" region + And I press "Update" Then I should see the heading "Some page" And I should not see the text "Show archived" And I should not see the "Archived news" tile And I should see the "Published news" tile - When I go to the "Poly page" custom page - Then I should see the heading "Poly page" - And I should not see the text "Show archived" - + @javascript Scenario: Carousel listings can also control archived items visibility. Given collection: | uri | http://data.europa.eu/w21/8e30f798-ff2b-478b-9c09-5ed5a63b4c8c | @@ -135,33 +141,43 @@ Feature: Archived content on content listings - groups and paragraphs. | title | headline | state | collection | body | content | | IOP archived news | IOP archived news | archived | Interoperable Europe | Test | Test | | IOP published news | IOP published news | validated | Interoperable Europe | Test | Test | + And custom_page content: + | title | collection | state | + | IOP page | Interoperable Europe | published | + And I append "layout" to "field_paragraphs_body" field in "node" entity with following "IOP page" title: + | behavior_settings | a:3:{s:17:"layout_paragraphs";a:4:{s:6:"layout";s:13:"layout_onecol";s:6:"config";a:1:{s:5:"label";s:0:"";}s:11:"parent_uuid";N;s:6:"region";N;}s:16:"background_theme";a:0:{}s:11:"extra_class";a:0:{}} | When I am logged in as a moderator - And I go to the "Interoperable Europe" collection - And I click "Add custom page" - And I fill in "Title" with "IOP page" - And I press "Add Row" - And I press "Add 1 column layout" - And I press "Add Carousel" - And I fill in "Query presets" with "entity_bundle|news" - And I press "Save" + And I go to the edit form of the "IOP page" "custom page" + And I select "HR" from "Topic" + And I click "Choose component" + And I click "Carousel" + And I fill in "Query presets" with "entity_bundle|news" in the "Modal content" region + And I press "Save" in the "Modal buttons" region + And I press "Update" Then I should see the heading "IOP page" # By default, 'Show archived content' is set to 'unarchived'. And I should see the "IOP published news" tile But I should not see the "IOP archived news" tile When I go to the "IOP page" custom page - And I click "Edit" - And I select "Archived" from "Show archived content" - And I press "Save" + And I open the header local tasks menu + And I click "Edit" in the "Entity actions" region + Then I "edit" from the "Custom page body" field the child 1 paragraph of 1 layout + And I select "Archived" from "Show archived content" in the "Modal content" region + And I press "Save" in the "Modal buttons" region + And I press "Update" Then I should see the heading "IOP page" And I should see the "IOP archived news" tile But I should not see the "IOP published news" tile When I go to the "IOP page" custom page - And I click "Edit" - And I select "All" from "Show archived content" - And I press "Save" + And I open the header local tasks menu + And I click "Edit" in the "Entity actions" region + Then I "edit" from the "Custom page body" field the child 1 paragraph of 1 layout + And I select "All" from "Show archived content" in the "Modal content" region + And I press "Save" in the "Modal buttons" region + And I press "Update" Then I should see the heading "IOP page" And I should see the "IOP archived news" tile And I should see the "IOP published news" tile diff --git a/tests/features/contact_form/prefill.feature b/tests/features/contact_form/prefill.feature index 51006e2028a8de136ef8f7cce44460b0e09f2a93..5d0b148865e9a5c0f19cce7a5a5212e60b5a420f 100644 --- a/tests/features/contact_form/prefill.feature +++ b/tests/features/contact_form/prefill.feature @@ -4,24 +4,19 @@ Feature: Prefill contact form fields As a moderator I want to be able to prefill some fields of the contact form + @terms Scenario: The subject field can be prefilled through links. Given collection: | title | CAMSS test community | | state | validated | - - When I am logged in as a facilitator of the "CAMSS test community" collection - When I go to the homepage of the "CAMSS test community" collection - And I open the plus button menu - And I click "Add custom page" - Then I should see the heading "Add custom page" - - # Create a page with a link that points to the contact form with the "subject" parameter containing some text. - When I fill in the following: - | Title | Change management | - | Body | <p>Follow this <a href="../../contact?subject=CAMSS%20Change%20Request">link</a></p> | - And I press "Publish" - Then I should see the heading "Change management" - - When I click "link" + | topic | HR | + And custom_page content: + | title | collection | state | + | IOP page custom page | CAMSS test community | published | + And I append "simple_paragraph" to "field_paragraphs_body" field in "node" entity with following "IOP page custom page" title: + | field_body:value | <p>Follow this <a href="../../contact?subject=CAMSS%20Change%20Request">link</a></p> | + | field_body:format | content_editor | + When I go to the "IOP page custom page" custom page + And I click "link" Then I should see the heading "Contact" And the "Subject" field should contain "CAMSS Change Request" diff --git a/tests/features/contact_information/access.feature b/tests/features/contact_information/access.feature index 1f9bacbc4c178968201a836b1f2c6bf1007665d2..6ee20134b6707aa169a3713b4fc9e444a6f2f434 100644 --- a/tests/features/contact_information/access.feature +++ b/tests/features/contact_information/access.feature @@ -28,7 +28,6 @@ Feature: Contact information access | title | Ausy software solutions | | description | A software company | | logo | logo.png | - | banner | banner.jpg | | owner | Ausy BENELUX | | contact information | info | | state | validated | diff --git a/tests/features/contact_information/contact_information.moderation.feature b/tests/features/contact_information/contact_information.moderation.feature index 8bd7d26c8702adfd01483d342bdaeb1064ec3d39..55129f8da3b2f3cd1cc5f7ee4e2ca4ca1e7f6c42 100644 --- a/tests/features/contact_information/contact_information.moderation.feature +++ b/tests/features/contact_information/contact_information.moderation.feature @@ -16,7 +16,6 @@ Feature: Contact Information moderation | title | Games of the Anglo-Saxon age | | description | There were many different board games played. | | logo | logo.png | - | banner | banner.jpg | | owner | Anglo-Saxon Museum | | topic | E-inclusion | | state | draft | @@ -126,7 +125,6 @@ Feature: Contact Information moderation | title | Saint Louis solutions | | description | A software company | | logo | logo.png | - | banner | banner.jpg | | owner | Saint Louis | | contact information | Secreteriat | | state | validated | diff --git a/tests/features/custom_page/add_custom_page.feature b/tests/features/custom_page/add_custom_page.feature index 7687eb6fb0310df9f84612becc93eeb936cf1170..7fe950c8e4784645442519ff2f7e20cb259cda5b 100644 --- a/tests/features/custom_page/add_custom_page.feature +++ b/tests/features/custom_page/add_custom_page.feature @@ -56,7 +56,7 @@ Feature: "Add custom page" visibility options. | Code Camp | collection | | Parachute | solution | - @uploadFiles:test.zip,alan.jpg + @uploadFiles:test.zip,alan.jpg @terms Scenario Outline: Add custom page as a facilitator. And I am logged in as a facilitator of the "<second title>" <group> @@ -75,7 +75,6 @@ Feature: "Add custom page" visibility options. When I fill in the following: | Title | About us | - And I enter "We are open about everything!" in the "Body" wysiwyg editor And I attach the file "test.zip" to "Add a new file" And I press "Upload" # The "Description" field is the description of the file. @@ -87,6 +86,12 @@ Feature: "Add custom page" visibility options. Then I should not see the button "Archive" And I should not see the button "Delete" + And I press "Save as draft" + Then I should see the error message "Topic field is required." + + When I select "E-health" from "Topic" + And I additionally select "EU and European Policies" from "Topic" + And I additionally select "HR" from "Topic" And I press "Save as draft" Then I should see the heading "About us" And I should see the success message "Custom page About us has been created." @@ -94,6 +99,9 @@ Feature: "Add custom page" visibility options. # The description of the file is set as the text to display. And I should see the link "Test file" But I should not see the link "Alan" + And I should not see the link "E-health" + And I should not see the link "EU and European Policies" + And I should not see the link "HR" And the "<second title>" <group> should have a custom page titled "About us" # Check that the link to the custom page is visible on the group page. When I go to the homepage of the "<second title>" <group> @@ -183,8 +191,7 @@ Feature: "Add custom page" visibility options. When I fill in the following: | Title | Rubber boots | - And I enter "We love mud!" in the "Body" wysiwyg editor - And I press "Publish" + And I press "Save" Then I should see the error message "The Custom page title value (Rubber boots) is already taken by Rubber boots." # It should still be possible to create a custom page with the existing @@ -196,8 +203,7 @@ Feature: "Add custom page" visibility options. When I fill in the following: | Title | Rubber boots | - And I enter "We love mud!" in the "Body" wysiwyg editor - And I press "Publish" + And I press "Save" Then I should see the heading "Rubber boots" And I should see the success message "Custom page Rubber boots has been created." diff --git a/tests/features/custom_page/carousel_paragraphs.feature b/tests/features/custom_page/carousel_paragraphs.feature index e75ee002b073ec06cbd5e8d136f24bc05f914658..acc90a74340c8c0dc16e2880e2c75a71c5ce0da5 100644 --- a/tests/features/custom_page/carousel_paragraphs.feature +++ b/tests/features/custom_page/carousel_paragraphs.feature @@ -1,4 +1,4 @@ -@api +@api @terms Feature: Access and functionality checks for carousel paragraphs in custom pages. @@ -6,26 +6,39 @@ Feature: Given collection: | title | Roman ruins | | state | validated | + | topic | HR | + @javascript Scenario: Moderators can access paragraph. Given collection: | title | Ronup | | state | validated | + | topic | HR | Given I am logged in as a moderator - Then I am on the homepage And I go to the "Roman ruins" collection - And I click "Add custom page" + And I click "Add custom page" in the plus button menu And I fill in "Title" with "Hello life" - Then I should see the button "Add Carousel" - - When I press "Add Carousel" + Then I should see the link "Add layout" + 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" + + When I click "Carousel" Then the following fields should be present "URL, Link text, Available filters" Given I am logged in as a facilitator of the "Ronup" collection And I go to the "Ronup" collection - And I click "Add custom page" - Then I should see the button "Add Carousel" + And I click "Add custom page" in the plus button menu + Then I should see the link "Add layout" + 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" + Then I should see the link "Carousel" Scenario: Test that carousels content listing options are working correctly. Given the following collections: @@ -36,25 +49,19 @@ Feature: | Some news 1 | Some news 1 | Roman ruins | Some content. | validated | | Some news 2 | Some news 2 | Sparta | Come content. | validated | - When I am logged in as a moderator - And I go to the homepage - And I go to the "Roman ruins" collection - And I click "Add custom page" + And custom_page content: + | title | collection | state | + | News carousel | Roman ruins | published | + And I append "content_listing" to "field_paragraphs_body" field in "node" entity with following "News carousel" title: + | content_listing:value | a:6:{s:6:"fields";a:1:{s:20:"content_listing_type";a:2:{s:6:"weight";i:0;s:6:"region";s:3:"top";}}s:7:"enabled";i:1;s:13:"query_presets";s:18:"entity_bundle\|news";s:5:"limit";s:2:"12";s:11:"show_shared";i:0;s:13:"global_search";i:0;} | - When I fill in the following: - | Title | News carousel | - | Body | A carousel with news | - And I press "Add Carousel" - And I fill in "Query presets" with: - """ - entity_bundle|news - """ - When I press "Save" + When I go to the "News carousel" custom page # Ensure that listings are restricted only for group content by default. Then I should see the "Some news 1" tile But I should not see the "Some news 2" tile + @javascript Scenario: Test that carousels with specific content is working correctly. Given the following collections: | title | state | @@ -68,24 +75,32 @@ Feature: When I am logged in as a moderator And I go to the homepage And I go to the "Roman ruins" collection - And I click "Add custom page" + And I click "Add custom page" in the plus button menu When I fill in the following: - | Title | Pages carousel | - | Body | A carousel with custom pages | - And I press "Add Carousel" - + | Title | Pages carousel | + And I select "HR" 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 I click "Carousel" And I select "Custom page" from "Available filters" And I press "Add and configure filter" And I fill in "Custom page" with "Some page 1" - When I press "Save" + And I press "Save" in the "Modal buttons" region + And I press "Save" Then I should see the "Some page 1" tile But I should not see the "Some page 2" tile And I should not see the "Some page 3" tile - When I go to the edit form of the "Pages carousel" "custom page" + When I open the header local tasks menu + And I click "Edit" in the "Entity actions" region + And I "edit" from the "Custom page body" field the child 1 paragraph of 1 layout And I fill in "Custom page" with "Some page 3" + And I press "Save" in the "Modal buttons" region And I press "Save" # Global search is not checked. No tiles should be shown. @@ -93,34 +108,30 @@ Feature: And I should not see the "Some page 2" tile And I should not see the "Some page 3" tile - When I go to the edit form of the "Pages carousel" "custom page" + When I open the header local tasks menu + And I click "Edit" in the "Entity actions" region + And I "edit" from the "Custom page body" field the child 1 paragraph of 1 layout And I check "Global search" + And I press "Save" in the "Modal buttons" region And I press "Save" + Then I should see the "Some page 3" tile But I should not see the "Some page 1" tile And I should not see the "Some page 2" tile Scenario: Carousels should be ordered by creation date by default. Given news content: - | title | headline | collection | content | state | created | - | Some news 1 | Some news 1 | Roman ruins | Some content. | validated | 2 day ago | - | Some news 2 | Some news 2 | Roman ruins | Some content. | validated | 3 days ago | - | Some news 3 | Some news 3 | Roman ruins | Some content. | validated | 1 days ago | - - When I am logged in as a moderator - And I go to the homepage - And I go to the "Roman ruins" collection - And I click "Add custom page" + | title | headline | collection | content | state | created | + | Some news 1 | Some news 1 | Roman ruins | Some content. | validated | 2 day ago | + | Some news 2 | Some news 2 | Roman ruins | Some content. | validated | 3 days ago | + | Some news 3 | Some news 3 | Roman ruins | Some content. | validated | 1 days ago | + And custom_page content: + | title | collection | state | + | News carousel | Roman ruins | published | + And I append "content_listing" to "field_paragraphs_body" field in "node" entity with following "News carousel" title: + | content_listing:value | a:6:{s:6:"fields";a:1:{s:20:"content_listing_type";a:2:{s:6:"weight";i:0;s:6:"region";s:3:"top";}}s:7:"enabled";i:1;s:13:"query_presets";s:18:"entity_bundle\|news";s:5:"limit";s:2:"12";s:11:"show_shared";i:0;s:13:"global_search";i:0;} | - When I fill in the following: - | Title | News carousel | - | Body | A carousel with news | - And I press "Add Carousel" - And I fill in "Query presets" with: - """ - entity_bundle|news - """ - When I press "Save" + When I go to the "News carousel" custom page Then I should see the following tiles in the correct order: | Some news 3 | | Some news 1 | @@ -132,21 +143,13 @@ Feature: | Some event 1 | Some event 1 | Roman ruins | Some content. | validated | 2 day ago | 5 day ago | 4 day ago | | Some event 2 | Some event 2 | Roman ruins | Some content. | validated | 3 days ago | 6 days ago | 5 days ago | | Some event 3 | Some event 3 | Roman ruins | Some content. | validated | 1 days ago | 7 days ago | 6 days ago | + And custom_page content: + | title | collection | state | + | Events carousel | Roman ruins | published | + And I append "content_listing" to "field_paragraphs_body" field in "node" entity with following "Events carousel" title: + | content_listing:value | a:6:{s:6:"fields";a:1:{s:20:"content_listing_type";a:2:{s:6:"weight";i:0;s:6:"region";s:3:"top";}}s:7:"enabled";i:1;s:13:"query_presets";s:19:"entity_bundle\|event";s:5:"limit";s:2:"12";s:11:"show_shared";i:0;s:13:"global_search";i:0;} | - When I am logged in as a moderator - And I go to the homepage - And I go to the "Roman ruins" collection - And I click "Add custom page" - - When I fill in the following: - | Title | Events carousel | - | Body | A carousel with events | - And I press "Add Carousel" - And I fill in "Query presets" with: - """ - entity_bundle|event - """ - When I press "Save" + When I go to the "Events carousel" custom page Then I should see the following tiles in the correct order: | Some event 1 | | Some event 2 | diff --git a/tests/features/custom_page/community_content.view_mode.feature b/tests/features/custom_page/community_content.view_mode.feature index 4495a1307122a5e1421a9fa34a2a94a384a3f731..103e3bd8ce3a61b309d14ba06f2a46af3584f7e7 100644 --- a/tests/features/custom_page/community_content.view_mode.feature +++ b/tests/features/custom_page/community_content.view_mode.feature @@ -35,20 +35,14 @@ Feature: And discussion content: | title | body | solution | state | | Tile discussion | Meh... | Tile solution | validated | + And custom_page content: + | title | solution | state | + | Tile custom page | Tile solution | validated | + And I append "content_listing" to "field_paragraphs_body" field in "node" entity with following "Tile custom page" title: + | content_listing:value | a:3:{s:7:"enabled";i:1;s:13:"query_presets";s:80:"entity_bundle\|asset_distribution,asset_release,discussion,document,event,news\|IN";s:5:"limit";s:2:"10";} | When I am logged in as a moderator - And I go to the homepage of the "Tile solution" solution - And I click "Add custom page" - - When I fill in the following: - | Title | Tile custom page | - | Body | Meh... | - And I press "Add Content listing" - And I fill in "Query presets" with: - """ - entity_bundle|asset_distribution,asset_release,discussion,document,event,news|IN - """ - When I press "Publish" + And I go to the "Tile custom page" custom page Then I should see the "Tile release" tile And I should see the text "v0.1" in the "Tile release" tile @@ -81,20 +75,14 @@ Feature: And discussion content: | title | body | collection | state | | Tile discussion | Meh... | Tile collection | validated | + And custom_page content: + | title | collection | state | + | Tile custom page | Tile collection | validated | + And I append "content_listing" to "field_paragraphs_body" field in "node" entity with following "Tile custom page" title: + | content_listing:value | a:3:{s:7:"enabled";i:1;s:13:"query_presets";s:47:"entity_bundle\|discussion,document,event,news\|IN";s:5:"limit";s:2:"10";} | When I am logged in as a moderator - And I go to the homepage of the "Tile collection" collection - And I click "Add custom page" - - When I fill in the following: - | Title | Tile custom page | - | Body | Meh... | - And I press "Add Content listing" - And I fill in "Query presets" with: - """ - entity_bundle|discussion,document,event,news|IN - """ - When I press "Publish" + And I go to the "Tile custom page" custom page And I should see the "Tile news" tile And I should see the "Tile event" tile diff --git a/tests/features/custom_page/community_content_listing.feature b/tests/features/custom_page/community_content_listing.feature index b0e176635010b0d570d8be5c88a3eaa84c944d80..bbfdbba7f07b1ff81d53a4bbba8a027f2f85333c 100644 --- a/tests/features/custom_page/community_content_listing.feature +++ b/tests/features/custom_page/community_content_listing.feature @@ -5,13 +5,20 @@ Feature: I need to be able to configure community content listing Background: + Given user: + | Username | jimmy7892 | + | First name | Jimmy | + | Family name | Nine | + | E-mail | jimmy.nine@ec-europa.example.eu | Given the following collections: - | title | logo | banner | state | - | Nintendo64 | logo.png | banner.jpg | validated | - | Emulators | logo.png | banner.jpg | validated | + | title | logo | state | + | Nintendo64 | logo.png | validated | + | Emulators | logo.png | validated | And custom_page content: | title | collection | created | body | state | pinned | | Latest news listing | Nintendo64 | 2019-10-01 4:26am | You can find the latest news here. | published | no | + And I append "layout" to "field_paragraphs_body" field in "node" entity with following "Latest news listing" title: + | behavior_settings | a:3:{s:17:"layout_paragraphs";a:4:{s:6:"layout";s:13:"layout_onecol";s:6:"config";a:1:{s:5:"label";s:0:"";}s:11:"parent_uuid";N;s:6:"region";N;}s:16:"background_theme";a:0:{}s:11:"extra_class";a:0:{}} | And news content: | title | collection | created | content | state | pinned | | Rare Nintendo64 disk drive discovered | Nintendo64 | 2018-10-01 4:26am | Magnetic drive called 64DD. | validated | no | @@ -24,45 +31,54 @@ Feature: | title | collection | content | created | state | pinned | | What's your favourite N64 game? | Nintendo64 | Post title and reasons. | 2018-11-17 10:17 | validated | no | | Searching for green pad. | Nintendo64 | Looking for a used one. | 2018-11-17 10:18 | validated | no | + And the following collection user membership: + | collection | user | roles | + | Nintendo64 | jimmy7892 | facilitator | + @javascript Scenario: Community content listing widget should be shown to facilitators and moderators. Given I am logged in as a facilitator of the "Nintendo64" collection When I go to the homepage of the "Nintendo64" collection - And I click "Add custom page" + And I click "Add custom page" in the plus button menu Then I should see the heading "Add custom page" And the following fields should not be present "Show related content, Allow shared content" - # The button appears in a non-javascript environment. The dropdown needs to be pressed in a javascript - # enabled browser. - And I should see the button "Add Content listing" - # Fill in title so that CSS will not complain about empty field when pressing a button. - When I fill in "Title" with "Hello world" - And I press "Add Content listing" - And the following fields should be present "Show related content, Allow shared content" + When 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 I click "Content listing" + Then the following fields should be present "Show related content, Allow shared content" And the following fields should not be present "Query presets, Limit" Given I am logged in as a moderator When I go to the homepage of the "Nintendo64" collection - And I click "Add custom page" + And I click "Add custom page" in the plus button menu Then I should see the heading "Add custom page" And the following fields should not be present "Show related content, Allow shared content" - # The button appears in a non-javascript environment. The dropdown needs to be pressed in a javascript - # enabled browser. - And I should see the button "Add Content listing" - # Fill in title so that CSS will not complain about empty field when pressing a button. - When I fill in "Title" with "Hello world" - And I press "Add Content listing" + When 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 | + When I click "Choose component" + And I click "Content listing" And the following fields should be present "Show related content, Allow shared content, Query presets, Limit" And I should see the button "Add and configure filter" + @javascript Scenario: Configure a custom page to show a community content listing. Given I am logged in as a facilitator of the "Nintendo64" collection When I go to the homepage of the "Nintendo64" collection - And I click "Add custom page" + And I click "Add custom page" in the plus button menu Then I should see the heading "Add custom page" When I fill in the following: - | Title | Latest content | - | Body | Shows all content for this collection | - And I press "Add Content listing" + | Title | Latest content | + 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 | + When I click "Choose component" + And I click "Content listing" And I select "News" from "Available filters" And I press "Add and configure filter" And I fill in "News" with "Rare Nintendo64 disk drive discovered" @@ -77,7 +93,8 @@ Feature: And I should see the text "Display content shared from other communities." And I should see the text "Note: the content shown is dynamic, filtered live each time users will visualise the page. As a result, new content might be shown and old content can be altered or deleted." - When I press "Publish" + When I press "Save" in the "Modal buttons" region + And I press "Publish" Then I should see the heading "Latest content" And I should see the "Rare Nintendo64 disk drive discovered" tile And I should see the "20 year anniversary" tile @@ -87,12 +104,12 @@ Feature: # Change the page to list only news. Given I am logged in as a moderator - When I go to the "Latest content" custom page - And I click "Edit" in the "Entity actions" region + And I go to the edit form of the "Latest content" "custom page" And I fill in the following: - | Title | Latest news | - | Body | Shows all news for this collection | + | Title | Latest news | + And I "edit" from the "Custom page body" field the child 1 paragraph of 1 layout And I fill in "Query presets" with "entity_bundle|news" + When I press "Save" in the "Modal buttons" region And I press "Update" Then I should see the heading "Latest news" And I should see the "Rare Nintendo64 disk drive discovered" tile @@ -100,9 +117,10 @@ Feature: And I should not see the "NEC VR4300 CPU" tile Given I am logged in as a facilitator of the "Nintendo64" collection - And I go to the "Latest news" custom page - When I click "Edit" in the "Entity actions" region + And I go to the edit form of the "Latest news" "custom page" + And I "edit" from the "Custom page body" field the child 1 paragraph of 1 layout And I check "Allow shared content" + And I press "Save" in the "Modal buttons" region And I press "Update" # Only news are displayed. Then I should see the "Rare Nintendo64 disk drive discovered" tile @@ -113,7 +131,7 @@ Feature: When I go to the "NEC VR4300 CPU" news And I click "Share" And I check "Nintendo64" - And I press "Share" + And I press "Share" in the "Modal buttons" region Then I should see the success message "Item was shared on the following groups: Nintendo64" When I go to the "Latest news" custom page @@ -125,7 +143,7 @@ Feature: When I go to the homepage of the "Nintendo64" collection And I click the contextual link "Unshare" in the "NEC VR4300 CPU" tile And I check "Nintendo64" - And I press "Submit" + And I press "Submit" in the "Modal buttons" region Then I should see the success message "Item was unshared from the following groups: Nintendo64" When I go to the "Latest news" custom page @@ -133,8 +151,10 @@ Feature: But I should not see the "20 year anniversary" tile And I should not see the "NEC VR4300 CPU" tile - When I click "Edit" in the "Entity actions" region + When I go to the edit form of the "Latest news" "custom page" + And I "edit" from the "Custom page body" field the child 1 paragraph of 1 layout And I uncheck "Show related content" + And I press "Save" in the "Modal buttons" region And I press "Update" Then I should not see the "Rare Nintendo64 disk drive discovered" tile And I should not see the "20 year anniversary" tile @@ -147,11 +167,12 @@ Feature: And I click "Add custom page" in the plus button menu Then I should see the heading "Add custom page" When I fill in "Title" with "Chosen content" - And I enter "Shows a specific set of tiles." in the "Body" wysiwyg editor - - # The "List additional actions" is the button arrow that shows the full list of paragraphs to add. - Given I press "List additional actions" - Then I click "Add Content listing" in the "Custom page body" paragraphs field + 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 I click "Content listing" And I uncheck "Show related content" When the following fields should not be visible "Global search, Allow shared content" And I check "Show related content" @@ -173,7 +194,8 @@ Feature: And I press "Add and configure filter" And I fill in "Collection" with "Emulators" Then I drag the table row in the "Content listing field filter form" region at position 4 up - And I press "Publish" + And I press "Save" in the "Modal buttons" region + And I press "Save" Then I should see the heading "Chosen content" And I should see the following tiles in the correct order: | Searching for green pad. | @@ -184,11 +206,13 @@ Feature: When I open the header local tasks menu And I click "Edit" in the "Entity actions" region + And I "edit" from the "Custom page body" field the child 1 paragraph of 1 layout And I drag the table row in the "Content listing field filter form" region at position 3 up And I drag the table row in the "Content listing field filter form" region at position 2 up And I click "Remove filter" at 5th filter of the 1st content listing paragraph And I uncheck "Global search" - And I press "Update" + And I press "Save" in the "Modal buttons" region + And I press "Save" And I should see the following tiles in the correct order: | 20 year anniversary | | Searching for green pad. | @@ -198,11 +222,13 @@ Feature: # Content that doesn't belong to the collection won't show up, even when selected. When I open the header local tasks menu And I click "Edit" in the "Entity actions" region + And I "edit" from the "Custom page body" field the child 1 paragraph of 1 layout And I select "News" from "Available filters" And I press "Add and configure filter" And I fill in the 2nd "News" with "NEC VR4300 CPU" in the "Custom content listing" field And I check "Allow shared content" - And I press "Update" + And I press "Save" in the "Modal buttons" region + And I press "Save" Then I should see the following tiles in the correct order: | 20 year anniversary | | Searching for green pad. | @@ -226,8 +252,10 @@ Feature: # Disabling inclusion of shared content will remove it from the list, even if still referenced. When I open the header local tasks menu And I click "Edit" in the "Entity actions" region + And I "edit" from the "Custom page body" field the child 1 paragraph of 1 layout And I uncheck "Allow shared content" - And I press "Update" + And I press "Save" in the "Modal buttons" region + And I press "Save" Then I should see the following tiles in the correct order: | 20 year anniversary | | Searching for green pad. | @@ -241,6 +269,7 @@ Feature: | collection | Nintendo64 | When I open the header local tasks menu And I click "Edit" in the "Entity actions" region + And I "edit" from the "Custom page body" field the child 1 paragraph of 1 layout # Simulate reordering and removal of rows. And I drag the table row in the "Content listing field filter form" region at position 4 up And I drag the table row in the "Content listing field filter form" region at position 3 up @@ -253,21 +282,22 @@ Feature: And I select "Solution" from "Available filters" And I press "Add and configure filter" And I fill in "Solution" with "N64 cartridge cleaner" - And I drag the table row in the "Content listing field filter form" region at position 4 up - And I drag the table row in the "Content listing field filter form" region at position 3 up - And I press "Update" + And I press "Save" in the "Modal buttons" region + And I press "Save" Then I should see the following tiles in the correct order: | Searching for green pad. | - | N64 cartridge cleaner | | What's your favourite N64 game? | + | N64 cartridge cleaner | # Query presets should still apply when available. When I am logged in as a moderator And I go to the "Chosen content" custom page And I open the header local tasks menu And I click "Edit" in the "Entity actions" region + And I "edit" from the "Custom page body" field the child 1 paragraph of 1 layout And I fill in "Query presets" with "entity_bundle|solution" - And I press "Update" + And I press "Save" in the "Modal buttons" region + And I press "Save" Then I should see the following tiles in the correct order: | N64 cartridge cleaner | @@ -277,6 +307,7 @@ Feature: And I go to the "Chosen content" custom page And I open the header local tasks menu And I click "Edit" in the "Entity actions" region + And I "edit" from the "Custom page body" field the child 1 paragraph of 1 layout Then the following field should not be present "Available filters" # Moderators should still have access to the query builder. @@ -284,17 +315,24 @@ Feature: And I go to the "Chosen content" custom page And I open the header local tasks menu And I click "Edit" in the "Entity actions" region + And I "edit" from the "Custom page body" field the child 1 paragraph of 1 layout Then the following field should be present "Available filters" + @javascript Scenario: Content type tabs should be mutually exclusive and show only items with results. Given I am logged in as a facilitator of the "Nintendo64" collection When I go to the homepage of the "Nintendo64" collection - And I click "Add custom page" + And I click "Add custom page" in the plus button menu + Then I should see the heading "Add custom page" When I fill in the following: - | Title | Collection content | - | Body | Shows all the content for this collection | - And I press "Add Content listing" + | Title | Collection content | + 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 I click "Content listing" And I select "Discussion" from "Available filters" And I press "Add and configure filter" And I fill in "Discussion" with "Searching for green pad." @@ -307,7 +345,8 @@ Feature: And I select "News" from "Available filters" And I press "Add and configure filter" And I fill in "News" with "Rare Nintendo64 disk drive discovered" - And I press "Publish" + And I press "Save" in the "Modal buttons" region + And I press "Save" Then I should see the heading "Collection content" # Verify that unwanted facets are not shown in the page. And I should see the following facet items "Discussion, Event, News" in this order @@ -332,57 +371,53 @@ Feature: | title | keywords | content | collection | state | | User's Guide | nintendo64 manuals | User manual | Nintendo64 | validated | | Licence | nintendo64 licences | Licence | Nintendo64 | validated | + And custom_page content: + | title | collection | state | + | Manuals | Nintendo64 | published | + And I append content listing to "field_paragraphs_body" field in "node" entity with following "Manuals" title with: + """ + a:3:{s:7:"enabled";i:1;s:13:"query_presets";s:60:"entity_bundle|document + keywords|"nintendo64 manuals"";s:5:"limit";s:2:"10";} + """ + And custom_page content: + | title | collection | state | + | Licences | Nintendo64 | published | + And I append content listing to "field_paragraphs_body" field in "node" entity with following "Licences" title with: + """ + a:3:{s:7:"enabled";i:1;s:13:"query_presets";s:61:"entity_bundle|document + keywords|"nintendo64 licences"";s:5:"limit";s:2:"10";} + """ And I am logged in as a moderator - When I go to the homepage of the "Nintendo64" collection - And I click "Add custom page" - - When I fill in the following: - | Title | Manuals | - | Body | Product guides | - And I press "Add Content listing" - And I fill in "Query presets" with: - """ - entity_bundle|document - keywords|"nintendo64 manuals" - """ - When I press "Publish" - + When I go to the "Manuals" custom page Then I should see the "User's Guide" tile But I should not see the "Licence" tile - When I go to the homepage of the "Nintendo64" collection - And I click "Add custom page" - - When I fill in the following: - | Title | Licences | - | Body | Product licensing | - And I press "Add Content listing" - And I fill in "Query presets" with: - """ - entity_bundle|document - keywords|"nintendo64 licences" - """ - When I press "Publish" - + When I go to the "Licences" custom page Then I should see the "Licence" tile But I should not see the "User's Guide" tile + @javascript Scenario: Invalid entries in the query presets field show a validation error. Given I am logged in as a moderator When I go to the homepage of the "Nintendo64" collection - And I click "Add custom page" + And I click "Add custom page" in the plus button menu Then I should see the heading "Add custom page" When I fill in "Title" with "Query presets validation" - And I press "Add Content listing" + 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 I click "Content listing" And I fill in "Query presets" with "wrongvalue" - And I press "Publish" + And I press "Save" in the "Modal buttons" region Then I should see the error message "Invalid query preset line added: wrongvalue." When I fill in "Query presets" with "unknown_field|news" - And I press "Publish" + And I press "Save" in the "Modal buttons" region Then I should see the error message "Invalid search field specified: unknown_field." When I fill in "Query presets" with "entity_bundle|news|equal" - And I press "Publish" + And I press "Save" in the "Modal buttons" region Then I should see the error message "Invalid operator specified: equal. Allowed operators are '=', '<>', 'IN', 'NOT IN'." # Verify that errors are reported when multiline values are added. When I fill in "Query presets" with: @@ -390,35 +425,35 @@ Feature: entity_bundle|news unknown_field|test """ - And I press "Publish" + And I press "Save" in the "Modal buttons" region Then I should see the error message "Invalid search field specified: unknown_field." + @javascript Scenario: Empty query presets and query builder field show a validation error. Given I am logged in as a moderator When I go to the homepage of the "Nintendo64" collection - And I click "Add custom page" + And I click "Add custom page" in the plus button menu Then I should see the heading "Add custom page" When I fill in "Title" with "Empty queries" - And I press "Add Content listing" - And I press "Publish" + 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 | + When I click "Choose component" + And I click "Content listing" + And I press "Save" in the "Modal buttons" region Then I should see the error message "You need to add a filter in the Content listing block" @terms Scenario: Global search setting allows for site-wide content in the content listing. Given I am logged in as a moderator - When I go to the homepage of the "Nintendo64" collection - And I click "Add custom page" - Then I should see the heading "Add custom page" - When I fill in the following: - | Title | All content | - | Body | Show EVERYTHING | - And I press "Add Content listing" - And I fill in "Query presets" with: - """ - entity_bundle|discussion,event,news|IN - """ - And I check "Global search" - And I press "Publish" + And custom_page content: + | title | collection | state | + | All content | Nintendo64 | published | + And I append "content_listing" to "field_paragraphs_body" field in "node" entity with following "All content" title: + | content_listing:value | a:6:{s:6:"fields";a:1:{s:20:"content_listing_type";a:2:{s:6:"weight";i:0;s:6:"region";s:3:"top";}}s:7:"enabled";i:1;s:13:"query_presets";s:38:"entity_bundle\|discussion,event,news\|IN";s:5:"limit";s:2:"12";s:11:"show_shared";i:0;s:13:"global_search";i:1;} | + + When I go to the "All content" custom page Then I should see the heading "All content" # All tiles are available. And I should see the following tiles in the correct order: @@ -470,12 +505,9 @@ Feature: @javascript Scenario: Regression test for ISAICP-7040 - See https://citnet.tech.ec.europa.eu/CITnet/jira/browse/ISAICP-7040 + See https://citnet.tech.ec.europa.eu/CITnet/jira/browse/ISAICP-7040 - Given collections: - | title | state | - | Nintendo64 | validated | - And solutions: + Given solutions: | title | collection | state | | Save the Planet | Nintendo64 | validated | | Fight Global Warming | Nintendo64 | validated | @@ -485,20 +517,25 @@ Feature: | title | collection | state | | Forests | Nintendo64 | published | - Given I am logged in as a facilitator of the "Nintendo64" collection + Given I am logged in as jimmy7892 And I go to the edit form of the "Forests" "custom page" # Paragraph #1. - When I press "List additional actions" - And I click "Add Content listing" in the "Custom page body" paragraphs field + 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 | + When I click "Choose component" + And I click "Content listing" And I select "Solution" from "Available filters" And I press "Add and configure filter" And I fill in "Solution" with "Save the Planet" + And I press "Save" in the "Modal buttons" region # Paragraph #2. - When I press "List additional actions" - And I click "Add Content listing" in the "Custom page body" paragraphs field + When I click "Choose component" + And I click "Content listing" And I select "Solution" from latest "Available filters" And I press latest "Add and configure filter" @@ -507,11 +544,14 @@ Feature: And I select "Solution" from latest "Available filters" And I press latest "Add and configure filter" And I fill in the latest "Solution" field with "The Green Alliance" + And I press "Save" in the "Modal buttons" region # Back to paragraph #1. - And I press "Add and configure filter" + And I "edit" from the "Custom page body" field the child 2 paragraph of 1 layout Then the 1st filter of the 1st content listing paragraph value is "Save the Planet" - And the 2nd filter of the 1st content listing paragraph is empty + And I press "Save" in the "Modal buttons" region + And I press "Update" + Then I should see the text "Forests" @javascript Scenario: Regression test for ISAICP-7183 @@ -527,12 +567,16 @@ Feature: | title | collection | state | | Bikes | Nintendo64 | published | - Given I am logged in as a facilitator of the "Nintendo64" collection + And I am logged in as jimmy7892 And I go to the edit form of the "Bikes" "custom page" # Paragraph #1. - When I press "List additional actions" - And I click "Add Content listing" in the "Custom page body" paragraphs field + When 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 I click "Content listing" And I select "Solution" from "Available filters" And I press "Add and configure filter" @@ -545,10 +589,11 @@ Feature: And I select "Solution" from latest "Available filters" And I press latest "Add and configure filter" And I fill in the latest "Solution" field with "Black Noise" + And I press "Save" in the "Modal buttons" region # Paragraph #2. - When I press "List additional actions" - And I click "Add Content listing" in the "Custom page body" paragraphs field + When I click "Choose component" + And I click "Content listing" And I select "Solution" from latest "Available filters" And I press latest "Add and configure filter" @@ -557,49 +602,52 @@ Feature: And I select "Solution" from latest "Available filters" And I press latest "Add and configure filter" And I fill in the latest "Solution" field with "Fight battery mode" + And I press "Save" in the "Modal buttons" region + Then I press "Update" And I should see the heading "Bikes" When I go to the edit form of the "Bikes" "custom page" + And I "edit" from the "Custom page body" field the child 2 paragraph of 1 layout And I click "Remove filter" at 1st filter of the 1st content listing paragraph - And I wait for AJAX to finish + Then the 1st filter of the 1st content listing paragraph value is "Fight battery mode" And the 2nd filter of the 1st content listing paragraph value is "Black Noise" - And the 1st filter of the 2nd content listing paragraph value is "Black Noise" - And the 2nd filter of the 2nd content listing paragraph value is "Fight battery mode" + And I press "Add and configure filter" And the 3nd filter of the 1st content listing paragraph is empty + And I click "Remove filter" at 1st filter of the 1st content listing paragraph + And I press "Cancel" in the "Modal buttons" region - And I click "Remove filter" at 2nd filter of the 2nd content listing paragraph - And I wait for AJAX to finish - Then the 1st filter of the 2nd content listing paragraph value is "Black Noise" + When I "edit" from the "Custom page body" field the child 1 paragraph of 1 layout + And the 1st filter of the 1st content listing paragraph value is "Black Noise" + And the 2nd filter of the 1st content listing paragraph value is "Fight battery mode" - @javascript Scenario: Regression test for ISAICP-7819 See https://citnet.tech.ec.europa.eu/CITnet/jira/browse/ISAICP-7819 Given event content: - | title | collection | state | created | start date | end date | - | Event pagination 1 | Nintendo64 | validated | 2016-10-09 4:29am | now +8 day | now +9 day | - | Event pagination 2 | Nintendo64 | validated | 2016-10-08 4:29am | now +7 day | now +8 day | - | Event pagination 3 | Nintendo64 | validated | 2015-10-07 4:29am | now +6 day | now +7 day | - | Event pagination 4 | Nintendo64 | validated | 2014-10-06 4:29am | now +5 day | now +6 day | - | Event pagination 5 | Nintendo64 | validated | 2014-10-05 4:29am | now +4 day | now +5 day | - | Event pagination 6 | Nintendo64 | validated | 2013-10-04 4:29am | now +3 day | now +4 day | - | Event pagination 7 | Nintendo64 | validated | 2012-10-03 4:29am | now +2 day | now +3 day | - | Event pagination 8 | Nintendo64 | validated | 2011-10-02 4:29am | now +1 day | now +2 day | - | Event pagination 9 | Nintendo64 | validated | 2010-10-01 4:29am | now | now +1 day | + | title | collection | state | created | start date | end date | + | Event pagination 1 | Nintendo64 | validated | 2016-10-09 4:29am | now +8 day | now +9 day | + | Event pagination 2 | Nintendo64 | validated | 2016-10-08 4:29am | now +7 day | now +8 day | + | Event pagination 3 | Nintendo64 | validated | 2015-10-07 4:29am | now +6 day | now +7 day | + | Event pagination 4 | Nintendo64 | validated | 2014-10-06 4:29am | now +5 day | now +6 day | + | Event pagination 5 | Nintendo64 | validated | 2014-10-05 4:29am | now +4 day | now +5 day | + | Event pagination 6 | Nintendo64 | validated | 2013-10-04 4:29am | now +3 day | now +4 day | + | Event pagination 7 | Nintendo64 | validated | 2012-10-03 4:29am | now +2 day | now +3 day | + | Event pagination 8 | Nintendo64 | validated | 2011-10-02 4:29am | now +1 day | now +2 day | + | Event pagination 9 | Nintendo64 | validated | 2010-10-01 4:29am | now | now +1 day | And news content: - | title | collection | state | - | News pagination 1 | Nintendo64 | validated | - | News pagination 2 | Nintendo64 | validated | - | News pagination 3 | Nintendo64 | validated | - | News pagination 4 | Nintendo64 | validated | - | News pagination 5 | Nintendo64 | validated | - | News pagination 6 | Nintendo64 | validated | - | News pagination 7 | Nintendo64 | validated | - | News pagination 8 | Nintendo64 | validated | - | News pagination 9 | Nintendo64 | validated | + | title | collection | state | + | News pagination 1 | Nintendo64 | validated | + | News pagination 2 | Nintendo64 | validated | + | News pagination 3 | Nintendo64 | validated | + | News pagination 4 | Nintendo64 | validated | + | News pagination 5 | Nintendo64 | validated | + | News pagination 6 | Nintendo64 | validated | + | News pagination 7 | Nintendo64 | validated | + | News pagination 8 | Nintendo64 | validated | + | News pagination 9 | Nintendo64 | validated | | News pagination 10 | Nintendo64 | validated | | News pagination 11 | Nintendo64 | validated | | News pagination 12 | Nintendo64 | validated | @@ -614,34 +662,16 @@ Feature: | News pagination 21 | Nintendo64 | validated | | News pagination 22 | Nintendo64 | validated | | News pagination 23 | Nintendo64 | validated | - And custom_page content: | title | collection | state | | Pagination bug | Nintendo64 | published | + And I append "content_listing" to "field_paragraphs_body" field in "node" entity with following "Pagination bug" title: + | content_listing:value | a:7:{s:6:"fields";a:2:{s:20:"content_listing_type";a:2:{s:6:"weight";i:-1;s:6:"region";s:3:"top";}s:22:"content_listing_status";a:2:{s:6:"weight";i:0;s:6:"region";s:3:"top";}}s:7:"enabled";i:1;s:13:"query_presets";s:18:"entity_bundle\|news";s:13:"show_archived";s:10:"unarchived";s:5:"limit";s:1:"2";s:11:"show_shared";i:0;s:13:"global_search";i:0;} | + And I append "content_listing" to "field_paragraphs_body" field in "node" entity with following "Pagination bug" title: + | content_listing:value | a:7:{s:6:"fields";a:2:{s:20:"content_listing_type";a:2:{s:6:"weight";i:-1;s:6:"region";s:3:"top";}s:22:"content_listing_status";a:2:{s:6:"weight";i:0;s:6:"region";s:3:"top";}}s:7:"enabled";i:1;s:13:"query_presets";s:19:"entity_bundle\|event";s:13:"show_archived";s:10:"unarchived";s:5:"limit";s:1:"2";s:11:"show_shared";i:0;s:13:"global_search";i:0;} | - Given I am logged in as a moderator - And I go to the edit form of the "Pagination bug" "custom page" - - # Paragraph #1. - Given I press "List additional actions" - Then I click "Add Content listing" in the "Custom page body" paragraphs field - And I fill in the 1st "Query presets" with "entity_bundle|news" in the "Custom page body" field - And I fill in the 1st "Limit" with "2" in the "Custom page body" field - - # Paragraph #2. - Then I press "List additional actions" - Then I click "Add Content listing" in the "Custom page body" paragraphs field - And I fill in the 2nd "Query presets" with "entity_bundle|event" in the "Custom page body" field - And I fill in the 2nd "Limit" with "2" in the "Custom page body" field - Then I press "Update" - And I should see the heading "Pagination bug" - Then I should see the tiles in the correct order: - | News pagination 1 | - | News pagination 2 | - | 30 year anniversary | - | Event pagination 1 | - - When I click "Go to page 2" + When I go to the "Pagination bug" custom page + And I click "Go to page 2" Then I should see the tiles in the correct order: | News pagination 3 | | News pagination 4 | diff --git a/tests/features/custom_page/custom_page.edit.feature b/tests/features/custom_page/custom_page.edit.feature index c3e0fd2d4d1726882098e8e6b1de3ad0132c9c4b..eb36a9fbbfd573439f9ac5d03094a01416ede202 100644 --- a/tests/features/custom_page/custom_page.edit.feature +++ b/tests/features/custom_page/custom_page.edit.feature @@ -34,7 +34,7 @@ Feature: "Custom page" editing. Then I should see the link "Edit" When I click "Edit" Then I should see the heading "Edit Custom page Buena Vista Distribution Company" - And the following fields should be present "Title, Body" + And the following fields should be present "Title, Body, Topic" And the following fields should not be present "Groups audience, Other groups, Generate automatic URL alias, URL alias, Published" And I should not see the following lines of text: | Authored on | @@ -64,7 +64,7 @@ Feature: "Custom page" editing. And I go to the "Buena Vista Distribution Company" custom page And I click "Edit" Then I should see the heading "Edit Custom page Buena Vista Distribution Company" - And the following fields should be present "Title, Body" + And the following fields should be present "Title, Body, Topic" And the following fields should not be present "Groups audience, Other groups, URL alias, Published" And the following fields should not be present "Groups audience, Other groups, Generate automatic URL alias, URL alias" And I should not see the following lines of text: diff --git a/tests/features/custom_page/navigation_menu.feature b/tests/features/custom_page/navigation_menu.feature index b203732550ec1be4c66a7a750ecc0b9713e9ec96..8c58e344be623309f57b102b416243ec5af6ff8a 100644 --- a/tests/features/custom_page/navigation_menu.feature +++ b/tests/features/custom_page/navigation_menu.feature @@ -1,4 +1,4 @@ -@api @group-a +@api @terms @group-a Feature: Navigation menu for custom pages In order to determine the order and visibility of custom pages in the navigation menu As a facilitator @@ -31,8 +31,8 @@ Feature: Navigation menu for custom pages When I click the contextual link "Add new page" in the "Header bottom" region Then I should see the heading "Add custom page" When I fill in the following: - | Title | About us | - And I enter "A short introduction." in the "Body" wysiwyg editor + | Title | About us | + And I select "HR" from "Topic" And I press "Publish" Then I should see the success message "Custom page About us has been created." And the navigation menu of the "Rainbow tables" <group> should have <visible items 2> visible items @@ -71,9 +71,9 @@ Feature: Navigation menu for custom pages # Create a few custom pages in the second collection so we can check if the # right menu shows up in each collection. Given custom_page content: - | title | body | <group> | state | - | Eights are wild | You cannot Cripple Mr Onion if your running flush contains more wild eights than the Lesser or Great Onion you are trying to cripple. | Cripple Mr Onion | published | - | Eights are null | They can be included in an existing Onion in order to improve its size by one card. | Cripple Mr Onion | published | + | title | body | <group> | state | topic | + | Eights are wild | You cannot Cripple Mr Onion if your running flush contains more wild eights than the Lesser or Great Onion you are trying to cripple. | Cripple Mr Onion | published | HR | + | Eights are null | They can be included in an existing Onion in order to improve its size by one card. | Cripple Mr Onion | published | HR | # Test as a normal member of the group. Given I am logged in as a member of the "Rainbow tables" <group> @@ -137,10 +137,10 @@ Feature: Navigation menu for custom pages | title | Plaster molds | | state | validated | And custom_page content: - | title | body | collection | state | - | Molds for walls | This is a sample body. | Plaster molds | published | - | Molds for crafts | This is a sample body. | Plaster molds | published | - | Molds for pottery | This is a sample body. | Plaster molds | published | + | title | body | collection | state | topic | + | Molds for walls | This is a sample body. | Plaster molds | published | HR | + | Molds for crafts | This is a sample body. | Plaster molds | published | HR | + | Molds for pottery | This is a sample body. | Plaster molds | published | HR | # A menu with 6 items is displayed normally When I go to the "Plaster molds" collection Then I should see the link "Molds for pottery" in the "Navigation menu" @@ -148,9 +148,9 @@ Feature: Navigation menu for custom pages # A menu with more than 6 items has the first 5 displayed normally # Then the rest of items is wrapped in a dropdown Given custom_page content: - | title | body | collection | state | - | Vintage molds | This is a sample body. | Plaster molds | published | - | Plaster casting | This is a sample body. | Plaster molds | published | + | title | body | collection | state | topic | + | Vintage molds | This is a sample body. | Plaster molds | published | HR | + | Plaster casting | This is a sample body. | Plaster molds | published | HR | When I go to the "Plaster molds" collection Then I should see the text "See more" in the "Navigation menu" But I should not see the text "Molds for walls" in the "Navigation menu" @@ -169,8 +169,8 @@ Feature: Navigation menu for custom pages | logo | logo.png | | state | validated | And custom_page content: - | title | body | <group> | state | - | Mists of dreams | This is a sample body. | Prism Gazers | published | + | title | body | <group> | state | topic | + | Mists of dreams | This is a sample body. | Prism Gazers | published | HR | When I am logged in as a facilitator of the "Prism Gazers" <group> And I go to the homepage of the "Prism Gazers" <group> Then I should see the contextual links button in the "Navigation menu" @@ -196,8 +196,8 @@ Feature: Navigation menu for custom pages | title | Ravenous wood-munching alphabeavers | | state | validated | And custom_page content: - | title | body | <group> | state | - | Tree eaters | Given time, they will most likely strip the entire region of trees. | Ravenous wood-munching alphabeavers | published | + | title | body | <group> | topic | state | + | Tree eaters | Given time, they will most likely strip the entire region of trees. | Ravenous wood-munching alphabeavers | HR | published | When I am logged in as a facilitator of the "Ravenous wood-munching alphabeavers" "<group>" And I go to the homepage of the "Ravenous wood-munching alphabeavers" <group> Then I should see the link "Tree eaters" in the "Navigation menu" @@ -221,16 +221,16 @@ Feature: Navigation menu for custom pages | title | state | | Table of contents group | validated | And custom_page content: - | title | <group> | state | - | Page 1 | Table of contents group | published | - | Page 2 | Table of contents group | published | - | Page 3 | Table of contents group | published | - | Subpage 1-1 | Table of contents group | published | - | Subpage 1-1-1 | Table of contents group | published | - | Subpage 1-2 | Table of contents group | published | - | Subpage 1-2-1 | Table of contents group | published | - | Subpage 1-2-2 | Table of contents group | published | - | Subpage 2-1 | Table of contents group | published | + | title | <group> | state | topic | + | Page 1 | Table of contents group | published | HR | + | Page 2 | Table of contents group | published | HR | + | Page 3 | Table of contents group | published | HR | + | Subpage 1-1 | Table of contents group | published | HR | + | Subpage 1-1-1 | Table of contents group | published | HR | + | Subpage 1-2 | Table of contents group | published | HR | + | Subpage 1-2-1 | Table of contents group | published | HR | + | Subpage 1-2-2 | Table of contents group | published | HR | + | Subpage 2-1 | Table of contents group | published | HR | And the following custom page menu structure: | title | parent | weight | | Page 1 | | 1 | @@ -320,12 +320,12 @@ Feature: Navigation menu for custom pages | title | Ergonomic backpacks | | state | validated | And custom_page content: - | title | <group> | state | - | Types of backpacks | Ergonomic backpacks | published | - | Frameless | Ergonomic backpacks | published | - | External frame | Ergonomic backpacks | published | - | Internal frame | Ergonomic backpacks | published | - | Bodypack | Ergonomic backpacks | published | + | title | <group> | state | topic | + | Types of backpacks | Ergonomic backpacks | published | HR | + | Frameless | Ergonomic backpacks | published | HR | + | External frame | Ergonomic backpacks | published | HR | + | Internal frame | Ergonomic backpacks | published | HR | + | Bodypack | Ergonomic backpacks | published | HR | And the following custom pages menu structure: | title | parent | weight | | Types of backpacks | | 3 | @@ -466,16 +466,16 @@ Feature: Navigation menu for custom pages | title | state | | Table of contents outline | validated | And custom_page content: - | title | <group> | state | - | TOCO 1 | Table of contents outline | published | - | TOCO 2 | Table of contents outline | published | - | TOCO 1-1 | Table of contents outline | published | - | TOCO 1-1-1 | Table of contents outline | published | - | TOCO 2-1 | Table of contents outline | published | - | TOCO 1-1-2 | Table of contents outline | published | - | TOCO 1-2 | Table of contents outline | published | - | TOCO 2-1-2 | Table of contents outline | unpublished | - | TOCO 2-1-1 | Table of contents outline | published | + | title | <group> | state | topic | + | TOCO 1 | Table of contents outline | published | HR | + | TOCO 2 | Table of contents outline | published | HR | + | TOCO 1-1 | Table of contents outline | published | HR | + | TOCO 1-1-1 | Table of contents outline | published | HR | + | TOCO 2-1 | Table of contents outline | published | HR | + | TOCO 1-1-2 | Table of contents outline | published | HR | + | TOCO 1-2 | Table of contents outline | published | HR | + | TOCO 2-1-2 | Table of contents outline | unpublished | HR | + | TOCO 2-1-1 | Table of contents outline | published | HR | And the following custom page menu structure: | title | parent | weight | | TOCO 1-2 | TOCO 1 | 2 | @@ -553,9 +553,9 @@ Feature: Navigation menu for custom pages | title | state | | Table of contents outline cached | validated | And custom_page content: - | title | <group> | state | - | TOCO cached 1 | Table of contents outline cached | published | - | TOCO cached 1-1 | Table of contents outline cached | published | + | title | <group> | state | topic | + | TOCO cached 1 | Table of contents outline cached | published | HR | + | TOCO cached 1-1 | Table of contents outline cached | published | HR | And the following custom page menu structure: | title | parent | weight | | TOCO cached 1 | | 1 | diff --git a/tests/features/file_url/widget-ui.feature b/tests/features/file_url/widget-ui.feature index 3ddfaffc3cba8c202d325226597b6f5f5464c44a..79f30eacc7ad5be041a8c2ef9261be2d1c8a2dc4 100644 --- a/tests/features/file_url/widget-ui.feature +++ b/tests/features/file_url/widget-ui.feature @@ -37,3 +37,19 @@ Feature: User interface for the File URL field And I should see the description "This must be an external URL such as http://example.com." for "Upload a new file or enter a URL" But the following field should not be visible "Choose a file" And I should not see the text "Allowed types: txt doc docx pdf." + + Scenario: User should be able to remove entity even document's entities do not exist + Given the following collections: + | title | state | + | Regression tests | validated | + And the following solutions: + | title | documentation | state | collection | + | Solution without documents | text.pdf | validated | Regression tests | + And I delete documents from "Solution without documents" solution + + Given I am logged in as a moderator + When I go to the edit form of the "Solution without documents" solution + Then the response status code should be 200 + When I click "Delete" + And I press "Delete" + Then the response status code should be 200 diff --git a/tests/features/homepage.feature b/tests/features/homepage.feature index cfd666a326a1c370cb4c37708b93c8ae4a792782..decfd8bb3478ecf8941558b98b160bdb2326de03 100644 --- a/tests/features/homepage.feature +++ b/tests/features/homepage.feature @@ -131,7 +131,7 @@ Feature: Homepage When I am on the homepage Then I should see "Light and height" as the Highlighted content And I should see the text "04-06-2021" in the "Light and height" tile - And I should see the link "Login or register to like this content" in the "Light and height" tile + And I should see the link "Sign in or register to like this content" in the "Light and height" tile Given I am logged in as a moderator When I am on the homepage @@ -362,4 +362,4 @@ Feature: Homepage Given I am on the homepage Then I should see search bar in navbar And I should see the search bar in homepage's header - And the two search inputs should have different ids + And page elements must have unique id attributes diff --git a/tests/features/image_library.feature b/tests/features/image_library.feature index b59cf086a35bd25bbfa9103c1ce3290a7ddd0f83..eb017a2e244adb858429b536e7a3f7fa91d697c3 100644 --- a/tests/features/image_library.feature +++ b/tests/features/image_library.feature @@ -1,6 +1,6 @@ @api Feature: - - As a moderator, I am able to pre-upload images for logos & banners. + - As a moderator, I am able to pre-upload images for logos. Scenario Outline: Test moderator tasks. @@ -15,12 +15,12 @@ Feature: Then I should see the heading "Add <media type label>" When I fill in "Name" with "Name of <media type label>" - And I attach the file "library/<entity bundle>-<type>.<extension>" to "Image" + And I attach the file "library/<entity bundle>-logo.<extension>" to "Image" And I press "Save" Then I should see the success message "<media type label> Name of <media type label> has been created." And I should see the link "Name of <media type label>" # Check if the paths were correctly configured. - And the response should contain "/sites/default/files/styles/thumbnail/public/library/<entity bundle>/<type>/<entity bundle>-<type>.<extension>" + And the response should contain "/sites/default/files/styles/thumbnail/public/library/<entity bundle>/logo/<entity bundle>-logo.<extension>" # Can edit. When I click "Edit" in the "Name of <media type label>" row @@ -34,10 +34,8 @@ Feature: Then I should see the success message "The media item Name of <media type label> has been deleted." Examples: - | media type label | entity bundle | type | extension | - | Collection banner | collection | banner | jpg | - | Collection logo | collection | logo | png | - | Solution banner | solution | banner | jpg | - | Solution logo | solution | logo | png | - | News logo | news | logo | png | - | Event logo | event | logo | png | + | media type label | entity bundle | extension | + | Collection logo | collection | png | + | Solution logo | solution | png | + | News logo | news | png | + | Event logo | event | png | diff --git a/tests/features/joinup_discussion/add_discussion.collection.feature b/tests/features/joinup_discussion/add_discussion.collection.feature index 4d0298d6cadce1ca789bfc2f82eeae15aaac514e..679585d0d8f19c69bbab361c5082368079b7e8e8 100644 --- a/tests/features/joinup_discussion/add_discussion.collection.feature +++ b/tests/features/joinup_discussion/add_discussion.collection.feature @@ -6,9 +6,9 @@ Feature: Discussions added to collections Scenario: "Add discussion" button should not be shown to normal members, authenticated users and anonymous users. Given the following collections: - | title | logo | banner | state | - | The Fallen History | logo.png | banner.jpg | validated | - | White Sons | logo.png | banner.jpg | validated | + | title | logo | state | + | The Fallen History | logo.png | validated | + | White Sons | logo.png | validated | When I am logged in as an "authenticated user" And I go to the homepage of the "The Fallen History" collection @@ -41,8 +41,8 @@ Feature: Discussions added to collections | Family name | Pontecorvo | | E-mail | kesha.pontecorvo@ec-europa.example.eu | And collections: - | title | logo | banner | state | - | The World of the Waves | logo.png | banner.jpg | validated | + | title | logo | state | + | The World of the Waves | logo.png | validated | And the following collection user membership: | collection | user | roles | | The World of the Waves | kesha1988 | facilitator | diff --git a/tests/features/joinup_discussion/add_discussion.solution.feature b/tests/features/joinup_discussion/add_discussion.solution.feature index de4bc282abfb4ca4c28ac94875cc10c04725d4e1..7a5e40071ff40179f997075f2e5ec05ab325eb99 100644 --- a/tests/features/joinup_discussion/add_discussion.solution.feature +++ b/tests/features/joinup_discussion/add_discussion.solution.feature @@ -8,12 +8,11 @@ Feature: "Add discussion" visibility options. Given the following collection: | title | Collective Eager Sliver | | logo | logo.png | - | banner | banner.jpg | | state | validated | And the following solutions: - | title | collection | logo | banner | state | - | Eager Sliver | Collective Eager Sliver | logo.png | banner.jpg | validated | - | The Silent Bridges | Collective Eager Sliver | logo.png | banner.jpg | validated | + | title | collection | logo | state | + | Eager Sliver | Collective Eager Sliver | logo.png | validated | + | The Silent Bridges | Collective Eager Sliver | logo.png | validated | When I am logged in as an "authenticated user" And I go to the homepage of the "Eager Sliver" solution @@ -39,11 +38,10 @@ Feature: "Add discussion" visibility options. Given the following collection: | title | Collective Emerald in the Luck | | logo | logo.png | - | banner | banner.jpg | | state | validated | And the following solutions: - | title | collection | logo | banner | state | - | Emerald in the Luck | Collective Emerald in the Luck | logo.png | banner.jpg | validated | + | title | collection | logo | state | + | Emerald in the Luck | Collective Emerald in the Luck | logo.png | validated | And I am logged in as a facilitator of the "Emerald in the Luck" solution When I go to the homepage of the "Emerald in the Luck" solution diff --git a/tests/features/joinup_document/add_document.collection.feature b/tests/features/joinup_document/add_document.collection.feature index d72074e72446ec1bc5cb6c4fec4a70b909b6f5ef..06d277d7a182c417d31c0f640a55251fd547b3bf 100644 --- a/tests/features/joinup_document/add_document.collection.feature +++ b/tests/features/joinup_document/add_document.collection.feature @@ -6,9 +6,9 @@ Feature: "Add document" visibility options. Scenario: "Add document" button should not be shown to normal members, authenticated users and anonymous users. Given the following collections: - | title | logo | banner | state | - | Ring of Truth | logo.png | banner.jpg | validated | - | The Storms of the Waves | logo.png | banner.jpg | validated | + | title | logo | state | + | Ring of Truth | logo.png | validated | + | The Storms of the Waves | logo.png | validated | When I am logged in as an "authenticated user" And I go to the homepage of the "Ring of Truth" collection @@ -41,8 +41,8 @@ Feature: "Add document" visibility options. | Family name | Andries | | E-mail | eandr@example.com | And collections: - | title | logo | banner | state | - | Hunter in the Swords | logo.png | banner.jpg | validated | + | title | logo | state | + | Hunter in the Swords | logo.png | validated | And the following collection user membership: | collection | user | roles | | Hunter in the Swords | napcheese | facilitator | diff --git a/tests/features/joinup_document/add_document.solution.feature b/tests/features/joinup_document/add_document.solution.feature index 30700f60a8ee0045a61ddc0425040e3b30bf79da..fa62e88dd3fdd9f53a62bf8aa58c2e556928d3b8 100644 --- a/tests/features/joinup_document/add_document.solution.feature +++ b/tests/features/joinup_document/add_document.solution.feature @@ -8,12 +8,11 @@ Feature: "Add document" visibility options. Given the following collection: | title | Collective Seventh Name | | logo | logo.png | - | banner | banner.jpg | | state | validated | And the following solutions: - | title | collection | logo | banner | state | - | Seventh Name | Collective Seventh Name | logo.png | banner.jpg | validated | - | The Obsessed Stream | Collective Seventh Name | logo.png | banner.jpg | validated | + | title | collection | logo | state | + | Seventh Name | Collective Seventh Name | logo.png | validated | + | The Obsessed Stream | Collective Seventh Name | logo.png | validated | When I am logged in as an "authenticated user" And I go to the homepage of the "Seventh Name" solution @@ -39,11 +38,10 @@ Feature: "Add document" visibility options. Given the following collection: | title | Collective Winter of Beginning | | logo | logo.png | - | banner | banner.jpg | | state | validated | And the following solutions: - | title | collection | logo | banner | state | - | Winter of Beginning | Collective Winter of Beginning | logo.png | banner.jpg | validated | + | title | collection | logo | state | + | Winter of Beginning | Collective Winter of Beginning | logo.png | validated | And I am logged in as a facilitator of the "Winter of Beginning" solution When I go to the homepage of the "Winter of Beginning" solution diff --git a/tests/features/joinup_document/document.moderation.feature b/tests/features/joinup_document/document.moderation.feature index 3dce276912ac304d824f6b3155d907a28584c579..8da7cc5557f320086642a439445579829bd4f010 100644 --- a/tests/features/joinup_document/document.moderation.feature +++ b/tests/features/joinup_document/document.moderation.feature @@ -20,7 +20,6 @@ Feature: Document moderation | title | The Naked Ashes | | description | The wolverine is a Marvel hero. | | logo | logo.png | - | banner | banner.jpg | | content creation | registered users | | moderation | no | | state | validated | diff --git a/tests/features/joinup_event/add_event.collection.feature b/tests/features/joinup_event/add_event.collection.feature index 5e14310eefd46a79e36a549bbb88dd66a8888d6b..a5047269714f12453be3ced4a2bdf56ee229d8b0 100644 --- a/tests/features/joinup_event/add_event.collection.feature +++ b/tests/features/joinup_event/add_event.collection.feature @@ -6,9 +6,9 @@ Feature: "Add event" visibility options. Scenario: "Add event" button should not be shown to normal members, authenticated users and anonymous users. Given the following collections: - | title | logo | banner | state | - | The Stripped Stream | logo.png | banner.jpg | validated | - | Years in the Nobody | logo.png | banner.jpg | validated | + | title | logo | state | + | The Stripped Stream | logo.png | validated | + | Years in the Nobody | logo.png | validated | When I am logged in as an "authenticated user" And I go to the homepage of the "The Stripped Stream" collection @@ -36,8 +36,8 @@ Feature: "Add event" visibility options. @terms @uploadFiles:test.zip Scenario: Add event as a facilitator. Given collections: - | title | logo | banner | state | - | Stream of Dreams | logo.png | banner.jpg | validated | + | title | logo | state | + | Stream of Dreams | logo.png | validated | And I am logged in as a facilitator of the "Stream of Dreams" collection When I go to the homepage of the "Stream of Dreams" collection diff --git a/tests/features/joinup_event/add_event.solution.feature b/tests/features/joinup_event/add_event.solution.feature index 3c9686c993368e8a40a335895c66b55ab3a8c176..facad4414093719548df3878a5034c4430d60406 100644 --- a/tests/features/joinup_event/add_event.solution.feature +++ b/tests/features/joinup_event/add_event.solution.feature @@ -8,12 +8,11 @@ Feature: "Add event" visibility options. Given the following collection: | title | Collective Ragged tower | | logo | logo.png | - | banner | banner.jpg | | state | validated | And the following solutions: - | title | collection | logo | banner | state | - | Ragged Tower | Collective Ragged tower | logo.png | banner.jpg | validated | - | Prince of Magic | Collective Ragged tower | logo.png | banner.jpg | validated | + | title | collection | logo | state | + | Ragged Tower | Collective Ragged tower | logo.png | validated | + | Prince of Magic | Collective Ragged tower | logo.png | validated | When I am logged in as an "authenticated user" And I go to the homepage of the "Ragged Tower" solution @@ -39,11 +38,10 @@ Feature: "Add event" visibility options. Given the following collection: | title | Collective The Luscious Bridges | | logo | logo.png | - | banner | banner.jpg | | state | validated | And the following solutions: - | title | collection | logo | banner | state | - | The Luscious Bridges | Collective The Luscious Bridges | logo.png | banner.jpg | validated | + | title | collection | logo | state | + | The Luscious Bridges | Collective The Luscious Bridges | logo.png | validated | And I am logged in as a facilitator of the "The Luscious Bridges" solution When I go to the homepage of the "The Luscious Bridges" solution And I click "Add event" in the plus button menu diff --git a/tests/features/joinup_event/event.edit.feature b/tests/features/joinup_event/event.edit.feature index 50b19b0844282bc146226c7378001f50ffdcefc5..9fe2d5f26866f62e83943c4d1e4abc8d1b27c9ad 100644 --- a/tests/features/joinup_event/event.edit.feature +++ b/tests/features/joinup_event/event.edit.feature @@ -7,8 +7,8 @@ Feature: "Event page" editing. @terms Scenario: Add and remove map Given collections: - | title | logo | banner | state | - | Heroes | logo.png | banner.jpg | validated | + | title | logo | state | + | Heroes | logo.png | validated | And I am logged in as a facilitator of the "Heroes" collection When I go to the homepage of the "Heroes" collection And I click "Add event" in the plus button menu diff --git a/tests/features/joinup_event/event.moderation.feature b/tests/features/joinup_event/event.moderation.feature index bed28b8f98dde66b1be7f13584f683427ce06bf7..c15d3f35fe3ecf7cb2e291e15dc9821e5f10ee58 100644 --- a/tests/features/joinup_event/event.moderation.feature +++ b/tests/features/joinup_event/event.moderation.feature @@ -20,7 +20,6 @@ Feature: Event moderation | title | Wet Lords | | description | The Forgotten Female. | | logo | logo.png | - | banner | banner.jpg | | content creation | registered users | | moderation | no | | state | validated | diff --git a/tests/features/joinup_group/settings.feature b/tests/features/joinup_group/settings.feature index 5d0ae39de6735df9a97dc79b732cda583730d555..6fac8b4b25ddd25a6b5911e6c1d65adcc0ab07be 100644 --- a/tests/features/joinup_group/settings.feature +++ b/tests/features/joinup_group/settings.feature @@ -9,7 +9,7 @@ Feature: Collections/Solutions settings | name | type | | Jonny inc. | Company | - @terms @uploadFiles:logo.png,banner.jpg + @terms @uploadFiles:logo.png Scenario: Edit settings in a collection Given the following owner: | name | type | @@ -18,8 +18,8 @@ Feature: Collections/Solutions settings | name | Chico editorial | | email | chico.editorial@example.com | And collections: - | title | logo | banner | abstract | access url | closed | creation date | description | content creation | moderation | topic | owner | contact information | state | - | Jillian Land Eels | logo.png | banner.jpg | Read up on all about <strong>spice</strong> | http://spice.com/ | yes | 28-01-1995 12:05 | The spice elegance personified. | facilitators and authors | yes | Supplier exchange | Chico example | Chico editorial | validated | + | title | logo | abstract | access url | closed | creation date | description | content creation | moderation | topic | owner | contact information | state | + | Jillian Land Eels | logo.png | Read up on all about <strong>spice</strong> | http://spice.com/ | yes | 28-01-1995 12:05 | The spice elegance personified. | facilitators and authors | yes | Supplier exchange | Chico example | Chico editorial | validated | When I am logged in as a owner of the "Jillian Land Eels" collection And I go to the homepage of the "Jillian Land Eels" collection And I should not see the link "Settings" in the "Entity actions" region @@ -53,7 +53,6 @@ Feature: Collections/Solutions settings | Name | Jony Burton | | E-mail address | jonb@example.com | And I attach the file "logo.png" to "Logo" - And I attach the file "banner.jpg" to "Banner" And I fill in "Language" with "http://publications.europa.eu/resource/authority/language/VLS" And I select "EU and European Policies" from "Topic" And I select "Citizen" from "Solution type" diff --git a/tests/features/joinup_like/like.feature b/tests/features/joinup_like/like.feature index a65125e34711649641a7504f2764fa3af529878b..2747b71ed63d31545d422916634c31266ac0983f 100644 --- a/tests/features/joinup_like/like.feature +++ b/tests/features/joinup_like/like.feature @@ -45,18 +45,18 @@ Feature: Like/unlike feature. When I click the "Remove like from this content" in the "Very liked solution" tile Then I should see the statistics "1" in the "Very liked solution" tile - Scenario: Anonymous user is asked to log in if they attempt to Like + Scenario: Anonymous user is asked to sign in if they attempt to Like Given I am an anonymous user When I go to the homepage of the "Very liked solution" solution Then I should see the link "Like" in the "Like block" And I should see the text "Like (0)" in the "Like block" region When I click "Like" in the "Like block" region Then a modal should open - And I should see the heading "You are not logged in" - And I should see the text "You are not logged in" in the "Modal title" - And I should see the heading "Login or register to like this content" in the "Modal content" - And I should see the text "Like this content will help other people find reliable information about what they search!" in the "Modal content" - When I click "Log in" in the "Modal content" + And I should see the text "You are not signed in" + And I should see the text "You are not signed in" in the "Modal title" + And I should see the heading "Sign in or register to like this content" in the "Modal content" + And I should see the text "Liking content shows your appreciation to content creators and helps other users find good content" in the "Modal content" + When I click "Sign in" in the "Modal content" Then I should see the heading "Sign in to continue" Scenario Outline: User can like/unlike solution's content @@ -198,9 +198,13 @@ Feature: Like/unlike feature. And I click "Add custom page" And I fill in "Title" with "Carousel of likes" + 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 press "List additional actions" - And I press "Add Carousel" + And I click "Choose component" + And I click "Carousel" Then I select "Solution" from "Available filters" And I press "Add and configure filter" @@ -226,6 +230,8 @@ Feature: Like/unlike feature. And I press "Add and configure filter" And I fill in "News" with "Likeable news" + # Save the paragraph through the dialog. + And I press "Save" in the "Layout paragraphs dialog buttons" region When I press "Publish" And I should see the "Very liked solution" tile diff --git a/tests/features/joinup_news/add_news.feature b/tests/features/joinup_news/add_news.feature index e26be030b35ed93c87bef3697d28ecaa291a86ec..5b0a5f132a792a98105f882df24b2375ebb337e4 100644 --- a/tests/features/joinup_news/add_news.feature +++ b/tests/features/joinup_news/add_news.feature @@ -12,15 +12,15 @@ Feature: Creation of news through the UI. | Family name | Laninga | | E-mail | milana@example.com | And the following collections: - | title | description | logo | banner | state | - | Metal fans | "Share the love for nickel, tungsten & co." | logo.png | banner.jpg | validated | - | Hardcore diggers | We dig up stuff hidden beneath the earth. | logo.png | banner.jpg | validated | - | Cool blacksmiths | Keeping it cool while working on hot stuff. | logo.png | banner.jpg | validated | + | title | description | logo | state | + | Metal fans | "Share the love for nickel, tungsten & co." | logo.png | validated | + | Hardcore diggers | We dig up stuff hidden beneath the earth. | logo.png | validated | + | Cool blacksmiths | Keeping it cool while working on hot stuff. | logo.png | validated | And solutions: - | title | description | logo | banner | state | - | Density catalogue project | Catalog density on metals with ease. | logo.png | banner.jpg | validated | - | Dig do's and don'ts | How to dig up stuff with style. | logo.png | banner.jpg | validated | - | Anvil test routines | How to determine reliability of the tool. | logo.png | banner.jpg | validated | + | title | description | logo | state | + | Density catalogue project | Catalog density on metals with ease. | logo.png | validated | + | Dig do's and don'ts | How to dig up stuff with style. | logo.png | validated | + | Anvil test routines | How to determine reliability of the tool. | logo.png | validated | And the following solution user membership: | solution | user | roles | | Density catalogue project | isotopedancer | facilitator | diff --git a/tests/features/joinup_search/group_search.feature b/tests/features/joinup_search/group_search.feature index df48a2709cac8292ade4c35c4527daf35fc30670..5c84451a81d6cf818b502f3f229be8155931715c 100644 --- a/tests/features/joinup_search/group_search.feature +++ b/tests/features/joinup_search/group_search.feature @@ -24,7 +24,6 @@ Feature: Search inside groups And solution: | title | Inclined foundations | | description | Ways to construct foundations on hills and mountains. | - | banner | banner.jpg | | logo | logo.png | | collection | Chalet construction | | state | validated | diff --git a/tests/features/moderator/curated_content_listings.feature b/tests/features/moderator/curated_content_listings.feature index aa7e81601a8fa4f21a07fa2b1a2ed8bb004721e7..c80fa306018a7e66283469b2fc71ba19dcb1b9bb 100644 --- a/tests/features/moderator/curated_content_listings.feature +++ b/tests/features/moderator/curated_content_listings.feature @@ -108,3 +108,10 @@ Feature: Curated content listings And I press "Save" Then I should see the message "The entity subqueue In the spotlight has been updated." Then I should see the heading "Curated content listings" + + When I am on the homepage + And I click the contextual link "Feature" in the "Licrogravity" tile + Then the "Licrogravity" tile should be marked as featured + + Then I visit the search page + And the "Licrogravity" tile should be marked as featured diff --git a/tests/features/moderator/image_library_widget.feature b/tests/features/moderator/image_library_widget.feature index f4541034162a5f664d3ff60a3e1eb896ea04c33a..bd671dc3abb0812157df34ad6b9eade8a311a6f1 100644 --- a/tests/features/moderator/image_library_widget.feature +++ b/tests/features/moderator/image_library_widget.feature @@ -1,6 +1,6 @@ @api @group-g @uploadFiles:logo.png Feature: As a moderator I want to be able to maintain sets of images to be - reused as logo or banner images for collections, solutions, events and news. + reused as logo images for collections, solutions, events and news. Scenario Outline: Moderator tasks. @@ -32,9 +32,7 @@ Feature: As a moderator I want to be able to maintain sets of images to be Examples: | media type | - | Collection banner | | Collection logo | - | Solution banner | | Solution logo | | Event logo | | News logo | diff --git a/tests/features/moderator/site_alerts.feature b/tests/features/moderator/site_alerts.feature index 7d541cb3803f239694650a9e99e2c12f6a29e156..1b9f9626ed859e0a0d349702b1a958754b95f60a 100644 --- a/tests/features/moderator/site_alerts.feature +++ b/tests/features/moderator/site_alerts.feature @@ -21,10 +21,10 @@ Feature: Site alerts # Anonymous users should see the alert. Given I am not logged in And I am on the homepage - Then I should see the text "Between 18:00 and 20:00 the site will be temporarily unavailable due to scheduled maintenance" + Then I wait until the page contains the text "Between 18:00 and 20:00 the site will be temporarily unavailable due to scheduled maintenance" Then I click "advanced search" Then I should be on the advanced search page - Then I should see the text "Between 18:00 and 20:00 the site will be temporarily unavailable due to scheduled maintenance" + And I wait until the page contains the text "Between 18:00 and 20:00 the site will be temporarily unavailable due to scheduled maintenance" # Deactivate the alert without deleting it, so it can be used again later. Given I am logged in as a moderator @@ -47,17 +47,21 @@ Feature: Site alerts Given I am not logged in And I am on the homepage - Then I should see the text "Between 18:00 and 20:00 the site will be temporarily unavailable due to scheduled maintenance" + And I wait until the page contains the text "Between 18:00 and 20:00 the site will be temporarily unavailable due to scheduled maintenance" And I go to "/interoperable-europe" - And I should see the text "Between 18:00 and 20:00 the site will be temporarily unavailable due to scheduled maintenance" + And I wait until the page contains the text "Between 18:00 and 20:00 the site will be temporarily unavailable due to scheduled maintenance" # An alert can also be removed entirely, if it does not need to be reused. Given I am logged in as a moderator When I click "Site alerts" in the "Administration toolbar" region And I click "Edit" - And I click "edit-delete" - And I press "Delete" - Then I should see the message " The Sitewide Alert Site maintenance 18:00-20:00 has been deleted." + + When I click "edit-delete" + And a modal should open + Then I press "Delete" in the "Modal buttons" region + And the modal should be closed + + Then I should see the message "The Sitewide Alert Site maintenance 18:00-20:00 has been deleted." Given I am not logged in And I am on the homepage diff --git a/tests/features/owner/collection_with_owner.feature b/tests/features/owner/collection_with_owner.feature index eec204e035d0b7cc5a8ad9aecb77ffedddcf377f..7cefc579880c395faec2e28ea5feca6ba184c1bf 100644 --- a/tests/features/owner/collection_with_owner.feature +++ b/tests/features/owner/collection_with_owner.feature @@ -4,7 +4,7 @@ Feature: Creation of owners through UI As a user I need to be able to create owners, or add existing, through the UI when proposing a collection. - @terms @uploadFiles:logo.png,banner.jpg + @terms @uploadFiles:logo.png Scenario: Propose a collection Given the following owner: | name | type | @@ -20,7 +20,6 @@ Feature: Creation of owners through UI | E-mail | larry.joe@example.com | When I select "EU and European Policies" from "Topic" And I attach the file "logo.png" to "Logo" - And I attach the file "banner.jpg" to "Banner" # Click the button to create an organisation owner. And I press "Add new" at the "Owner" field diff --git a/tests/features/owner/owner.moderation.feature b/tests/features/owner/owner.moderation.feature index 7efe46defa11d05e17e0045d3b77567c05afea1e..a776b259c96d20f7bf83d6b3a53a6c13c158e087 100644 --- a/tests/features/owner/owner.moderation.feature +++ b/tests/features/owner/owner.moderation.feature @@ -4,7 +4,7 @@ Feature: Owner moderation As a user of the website I need to be able to transit the owners from one state to another. - @terms @uploadFiles:logo.png,banner.jpg + @terms @uploadFiles:logo.png Scenario: Publish, update, request changes, publish again and ask to delete an owner. Given users: | Username | @@ -22,7 +22,6 @@ Feature: Owner moderation | E-mail | duche.baggins@example.com | And I enter "Keep Europe healthy through healthy eating." in the "Description" wysiwyg editor And I attach the file "logo.png" to "Logo" - And I attach the file "banner.jpg" to "Banner" And I click the 'Categorisation' tab And I select "EU and European Policies" from "Topic" diff --git a/tests/features/paragraphs/call_to_action.feature b/tests/features/paragraphs/call_to_action.feature new file mode 100644 index 0000000000000000000000000000000000000000..8334ef09a8ccbd947f083a630c0f086ab0f9bfbc --- /dev/null +++ b/tests/features/paragraphs/call_to_action.feature @@ -0,0 +1,31 @@ +@api @group-a +Feature: + As a site builder of the site + I need to be able to use "Call to action" paragraphs for content. + + Background: + Given the following collection: + | title | Paragraphs collection | + | state | validated | + + @javascript + Scenario: Call to action has alignment setting. + Given custom_page content: + | title | collection | state | + | Call to action page | Paragraphs collection | published | + And I append "layout" to "field_paragraphs_body" field in "node" entity with following "Call to action page" title: + | behavior_settings | a:3:{s:17:"layout_paragraphs";a:4:{s:6:"layout";s:13:"layout_onecol";s:6:"config";a:1:{s:5:"label";s:0:"";}s:11:"parent_uuid";N;s:6:"region";N;}s:16:"background_theme";a:0:{}s:11:"extra_class";a:0:{}} | + + Then I am logged in as a moderator + And I go to the edit form of the "Call to action page" "custom page" + And I click "Choose component" + And I click "Call to action" + And I fill in "URL" with "https://european-union.europa.eu" in the "Modal content" region + And I fill in "Link text" with "european-union.europa.eu" in the "Modal content" region + And I press "Settings" in the "Modal content" region + And I select "Right" from "Alignment" in the "Modal content" region + And I select "Light blue" from "Color" in the "Modal content" region + And I press "Save" in the "Modal buttons" region + And I press "Update" + When the page should contain the html text '<div class="paragraph--call-to-action d-flex justify-content-end paragraph">' + When the page should contain the html text '<a href="https://european-union.europa.eu" class="btn btn-secondary">european-union.europa.eu</a>' diff --git a/tests/features/paragraphs/custom_page.paragraphs.feature b/tests/features/paragraphs/custom_page.paragraphs.feature index e2511ff92b70386921c188def853fed04ee3c2f6..cb5112023588e7d177eb898f40c34a7d1527a4b4 100644 --- a/tests/features/paragraphs/custom_page.paragraphs.feature +++ b/tests/features/paragraphs/custom_page.paragraphs.feature @@ -1,4 +1,4 @@ -@api @group-d +@api @terms @group-d Feature: As a site builder of the site In order to be able to better control the structure of my content @@ -8,90 +8,207 @@ Feature: Given the following collection: | title | Paragraphs collection | | state | validated | + | topic | HR | + + Scenario: Heading paragraph is displayed as heading element. + Given custom_page content: + | title | collection | state | + | Heading example page | Paragraphs collection | published | + And I append "heading" to "field_paragraphs_body" field in "node" entity with following "Heading example page" title: + | paragraph_heading | H2 heading paragraph | + | behavior_settings | a:1:{s:16:"heading_behavior";a:1:{s:5:"level";s:2:"h2";}} | + And I append "heading" to "field_paragraphs_body" field in "node" entity with following "Heading example page" title: + | paragraph_heading | H3 heading paragraph | + | behavior_settings | a:1:{s:16:"heading_behavior";a:1:{s:5:"level";s:2:"h3";}} | + And I append "heading" to "field_paragraphs_body" field in "node" entity with following "Heading example page" title: + | paragraph_heading | H4 heading paragraph | + | behavior_settings | a:1:{s:16:"heading_behavior";a:1:{s:5:"level";s:2:"h4";}} | + And I append "heading" to "field_paragraphs_body" field in "node" entity with following "Heading example page" title: + | paragraph_heading | H5 heading paragraph | + | behavior_settings | a:1:{s:16:"heading_behavior";a:1:{s:5:"level";s:2:"h5";}} | + + When I go to the "Heading example page" custom page + Then I should see an "h2" element with the text "H2 heading paragraph" in the "Content" region + And I should see an "h3" element with the text "H3 heading paragraph" in the "Content" region + And I should see an "h4" element with the text "H4 heading paragraph" in the "Content" region + And I should see an "h5" element with the text "H5 heading paragraph" in the "Content" region @javascript - Scenario: Paragraph sections are multivalue and sort-able. - Given I am logged in as a facilitator of the "Paragraphs collection" collection - And I go to the "Paragraphs collection" collection - And I open the plus button menu - And I click "Add custom page" - And I fill in "Title" with "Paragraphs page" - And I press "Publish" - Then I should see the heading "Paragraphs page" + Scenario: User should be able to edit behaviour settings. + Given custom_page content: + | title | collection | state | + | Behaviour example page | Paragraphs collection | published | + And I append "layout" to "field_paragraphs_body" field in "node" entity with following "Behaviour example page" title: + | behavior_settings | a:3:{s:17:"layout_paragraphs";a:4:{s:6:"layout";s:13:"layout_onecol";s:6:"config";a:1:{s:5:"label";s:0:"";}s:11:"parent_uuid";N;s:6:"region";N;}s:16:"background_theme";a:0:{}s:11:"extra_class";a:0:{}} | - When I open the header local tasks menu - And I click "Edit" - # The first paragraphs item is open by default. - Then there should be 1 paragraph in the "Custom page body" field - Then I should see the "Remove" button in the "Custom page body" field for paragraph 1 - Given I click "Remove" in the "Custom page body" field for paragraph 1 + When I am logged in as a moderator + And I go to the edit form of the "Behaviour example page" "custom page" + And I click "Choose component" + And I click "Heading" + And I should see the text "Settings" in the "Modal content" region - Then the page should contain no paragraphs + Then I am logged in as a facilitator of the "Paragraphs collection" collection + And I go to the edit form of the "Behaviour example page" "custom page" + And I click "Choose component" + And I click "Heading" + And I should see the text "Settings" in the "Modal content" region - Given I click "Add Simple paragraph" in the "Custom page body" paragraphs field - Then there should be 1 paragraph in the "Custom page body" field + @javascript + Scenario: Paragraph sections are multivalue and sort-able. + Given custom_page content: + | title | collection | state | topic | + | Paragraphs page | Paragraphs collection | published | HR | + And I append "layout" to "field_paragraphs_body" field in "node" entity with following "Paragraphs page" title: + | behavior_settings | a:3:{s:17:"layout_paragraphs";a:4:{s:6:"layout";s:13:"layout_onecol";s:6:"config";a:1:{s:5:"label";s:0:"";}s:11:"parent_uuid";N;s:6:"region";N;}s:16:"background_theme";a:0:{}s:11:"extra_class";a:0:{}} | - Given I click "Add Simple paragraph" in the "Custom page body" paragraphs field - Then there should be 2 paragraphs in the "Custom page body" field + Then I am logged in as a facilitator of the "Paragraphs collection" collection + And I go to the edit form of the "Paragraphs page" "custom page" + When I add a "Text" paragraph in the "Custom page body" form field: + | Body | type: ckeditor - value: AAAAAAAAAA | + When I add a "Text" paragraph in the "Custom page body" form field: + | Body | type: ckeditor - value: BBBBBBBBBB | + And I press "Update" - When I enter "AAAAAAAAAA" in the "Body" wysiwyg editor in the "Custom page body" field for paragraph 1 - And I enter "BBBBBBBBBB" in the "Body" wysiwyg editor in the "Custom page body" field for paragraph 2 + And I go to the "Paragraphs page" custom page + And I should see the following paragraphs in the given order: + | AAAAAAAAAA | + | BBBBBBBBBB | - And I drag the table row at position 2 up + Then I open the header local tasks menu + And I click "Edit" + Then I "move down" from the "Custom page body" field the child 1 paragraph of 1 layout And I press "Update" Then there should be 2 paragraphs in the page And I should see the following paragraphs in the given order: | BBBBBBBBBB | | AAAAAAAAAA | - Scenario: Privileged users can add a map and/or an iframe and map paragraph. - Given users: + Then I open the header local tasks menu + And I click "Edit" + And I click "Choose component" + Then I should not see the link "Simple paragraph" + + @javascript + Scenario Outline: Privileged users can add paragraphs. + Given the following <group type>: + | title | Paragraphs group type | + | state | validated | + And users: | Username | | Zohan | - And the following collection user membership: - | collection | user | - | Paragraphs collection | Zohan | + | Gilfoyle | + And the following <group type> user membership: + | <group type> | user | roles | + | Paragraphs group type | Zohan | author | + | Paragraphs group type | Gilfoyle | facilitator | And custom_page content: - | title | body | collection | author | state | - | Don't Mess with the Zohan | Wanna mess? | Paragraphs collection | Zohan | published | + | title | body | <group type> | author | state | + | Don't Mess with the Zohan | Wanna mess? | Paragraphs group type | Zohan | published | + And I append "layout" to "field_paragraphs_body" field in "node" entity with following "Don't Mess with the Zohan" title: + | behavior_settings | a:3:{s:17:"layout_paragraphs";a:4:{s:6:"layout";s:13:"layout_onecol";s:6:"config";a:1:{s:5:"label";s:0:"";}s:11:"parent_uuid";N;s:6:"region";N;}s:16:"background_theme";a:0:{}s:11:"extra_class";a:0:{}} | - # Normal members cannot add maps. + # Author. When I am logged in as "Zohan" And I go to the edit form of the "Don't Mess with the Zohan" "custom page" - Then I should see the button "Add Simple paragraph" - And I should not see the button "Add Map" - But I should not see the button "Add IFrame" + And I click "Choose component" + Then I should not see the link "Layout" + And I should see the link "Accordion" + And I should see the link "Call to action" + And I should see the link "Carousel" + And I should see the link "Content listing" + But I should not see the link "Entity reference" + And I should not see the link "Github feed" + And I should see the link "Heading" + But I should not see the link "IFrame" + And I should see the link "Image" + And I should see the link "Poll" + And I should not see the link "Map" + And I should see the link "Quote" + But I should not see the link "Row" + But I should not see the link "Simple paragraph" + And I should see the link "Testimony" + And I should see the link "Text" + And I should see the link "Video" - # Facilitators can add maps. - When I am logged in as a facilitator of the "Paragraphs collection" collection + # Facilitator. + When I am logged in as "Gilfoyle" And I go to the edit form of the "Don't Mess with the Zohan" "custom page" - Then I should see the button "Add Simple paragraph" - And I should see the button "Add Map" - But I should not see the button "Add IFrame" + And I click "Choose component" + Then I should not see the link "Layout" + And I should see the link "Accordion" + And I should see the link "Call to action" + And I should see the link "Carousel" + And I should see the link "Content listing" + But I should not see the link "Entity reference" + And I should see the link "Github feed" + And I should see the link "Heading" + But I should not see the link "IFrame" + And I should see the link "Image" + And I should see the link "Poll" + And I should see the link "Map" + And I should see the link "Quote" + But I should not see the link "Row" + But I should not see the link "Simple paragraph" + And I should see the link "Testimony" + And I should see the link "Text" + And I should see the link "Video" - When I fill in "Body" with "I'm half Australian, half Mt. Everest" - And I press "Update" - Then I should see the success message "Custom page Don't Mess with the Zohan has been updated." - And I should see "I'm half Australian, half Mt. Everest" - - # Moderators can add maps. + # Moderator. Given I am logged in as a moderator And I go to the edit form of the "Don't Mess with the Zohan" "custom page" - Then I should see the button "Add Simple paragraph" - And I should see the button "Add Map" - And I should see the button "Add IFrame" + And I click "Choose component" + Then I should not see the link "Layout" + And I should see the link "Accordion" + And I should see the link "Call to action" + And I should see the link "Carousel" + And I should see the link "Content listing" + And I should see the link "Entity reference" + And I should see the link "Github feed" + And I should see the link "Heading" + And I should see the link "IFrame" + And I should see the link "Image" + And I should see the link "Poll" + And I should see the link "Map" + And I should see the link "Quote" + But I should not see the link "Row" + But I should not see the link "Simple paragraph" + And I should see the link "Testimony" + And I should see the link "Text" + And I should see the link "Video" - When I press "Add Map" - # As the Webtools Map a webservice, we only test a fake JSON. - And I fill in "JSON" with "{\"foo\":\"bar\"}" - And I press "Update" - Then I should see the success message "Custom page Don't Mess with the Zohan has been updated." - And I should see "I'm half Australian, half Mt. Everest" - And the response should contain "{\"foo\":\"bar\"}" + But I should not see the link "Row" + And I should not see the link "1 column layout" + And I should not see the link "2 column layout" + And I should not see the link "2 column with featured media on the left" + And I should not see the link "2 column with featured media on the right" + And I should not see the link "3 column layout" + And I should not see the link "Configurable listing" + + Examples: + | group type | + | collection | + | solution | + + @javascript + Scenario: Moderator can manage map and iframe paragraph. + Given users: + | Username | + | Zohan | + And the following collection user membership: + | collection | user | + | Paragraphs collection | Zohan | + And custom_page content: + | title | body | collection | author | state | topic | + | Don't Mess with the Zohan | Wanna mess? | Paragraphs collection | Zohan | published | HR | + And I append "layout" to "field_paragraphs_body" field in "node" entity with following "Don't Mess with the Zohan" title: + | behavior_settings | a:3:{s:17:"layout_paragraphs";a:4:{s:6:"layout";s:13:"layout_onecol";s:6:"config";a:1:{s:5:"label";s:0:"";}s:11:"parent_uuid";N;s:6:"region";N;}s:16:"background_theme";a:0:{}s:11:"extra_class";a:0:{}} | - When I go to the edit form of the "Don't Mess with the Zohan" "custom page" - And I press "Add IFrame" + Given I am logged in as a moderator + And I go to the edit form of the "Don't Mess with the Zohan" "custom page" + And I click the last "Choose component" link + And I click "IFrame" And I fill in "Iframe URL" with "http://example.com" + And I press "Save" in the "Modal buttons" region And I press "Update" # We only test that the <iframe .../> element is in page. Unfortunately, we # cannot do precision RegExp search in page source, so we only check for the @@ -99,6 +216,16 @@ Feature: Then I should see 1 "iframe" elements And the response should contain "src=\"http://example.com\"" + And I go to the edit form of the "Don't Mess with the Zohan" "custom page" + And I click "Choose component" + And I click "Map" + # As the Webtools Map a webservice, we only test a fake JSON. + And I fill in "JSON" with "{\"foo\":\"bar\"}" + And I press "Save" in the "Modal buttons" region + And I press "Update" + Then I should see the success message "Custom page Don't Mess with the Zohan has been updated." + And the response should contain "{\"foo\":\"bar\"}" + @javascript Scenario Outline: Add an accordion to the custom page. Given I am logged in as a <role> @@ -106,25 +233,22 @@ Feature: And I open the plus button menu And I click "Add custom page" And I fill in "Title" with "Paragraphs accordion page" - Given I click "Remove" in the "Custom page body" field for paragraph 1 - Then the page should contain no paragraphs - - # The "List additional actions" is the button arrow that shows the full list of paragraphs to add. - Given I press "List additional actions" - Then I click "Add Accordion" in the "Custom page body" paragraphs field + And I select "HR" from "Topic" - # 3 paragraphs are the default number when adding an accordion. - # 1. the accordion wrapper, 2. accordion item and 3. the simple paragraph contained in the item. - And there should be 3 paragraph in the "Custom page body" field - When I press "Add Accordion item" - # An accordion item and a simple paragraph have been added. - Then there should be 5 paragraphs in the "Custom page body" field - - Given I fill in the 1st "Item label" with "Super" in the "Custom page body" field - And I enter "Clumsy text" in the 1st "Body" wysiwyg editor in the "Custom page body" field - And I fill in the 2nd "Item label" with "Duper" in the "Custom page body" field - And I enter "Crunchy text" in the 2nd "Body" wysiwyg editor in the "Custom page body" field + Given 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" + Then I click "Accordion" + And press "Add Accordion item" + And I wait for AJAX to finish + Given I fill in the 1st "Item label" with "Super" in the "Accordion item" field + And I enter "Clumsy text" in the 1st "Body" wysiwyg editor in the "Accordion item" field + And I fill in the 2nd "Item label" with "Duper" in the "Accordion item" field + And I enter "Crunchy text" in the 2nd "Body" wysiwyg editor in the "Accordion item" field + And I press "Save" in the "Modal buttons" region And I press "Publish" Then I should see the heading "Paragraphs accordion page" And I should see the text "Super" @@ -151,3 +275,14 @@ Feature: | role | | moderator | | facilitator of the "Paragraphs collection" collection | + + Scenario: View quote paragraph in the custom page. + Given custom_page content: + | title | collection | state | + | Popular quotes | Paragraphs collection | published | + And I append "quote" to "field_paragraphs_body" field in "node" entity with following "Popular Quotes" title: + | paragraph_quote | That's one small step for a man, a giant leap for mankind. | + + When I am an anonymous user + And I visit the "Popular quotes" custom page + Then the page should contain the html text "That's one small step for a man, a giant leap for mankind." diff --git a/tests/features/paragraphs/github_feed.feature b/tests/features/paragraphs/github_feed.feature index 8c27f66ef93e185efc2d0954f099d9aaa0927748..1ee9a34f2e85227dbad44fa800addc6be047f84b 100644 --- a/tests/features/paragraphs/github_feed.feature +++ b/tests/features/paragraphs/github_feed.feature @@ -1,65 +1,69 @@ -@api @group-f +@api @terms @group-f Feature: Github feed paragraph tests. The scenarios are split into 4 tests because re-saving the entity would invalidate the file cache and the tests would require connecting to Github. + @javascript Scenario Outline: Test the Github feed paragraph. Given the following <group>: | title | Paragraphs <group> | | state | validated | And custom_page content: - | title | <group> | state | - | Catalogue of paragraphs | Paragraphs <group> | published | + | title | <group> | state | topic | + | Catalogue of paragraphs | Paragraphs <group> | published | Statistics and Analysis | + And I append "layout" to "field_paragraphs_body" field in "node" entity with following "Catalogue of paragraphs" title: + | behavior_settings | a:3:{s:17:"layout_paragraphs";a:4:{s:6:"layout";s:13:"layout_onecol";s:6:"config";a:1:{s:5:"label";s:0:"";}s:11:"parent_uuid";N;s:6:"region";N;}s:16:"background_theme";a:0:{}s:11:"extra_class";a:0:{}} | + When I am logged in as a moderator And I go to the edit form of the "Catalogue of paragraphs" "custom page" - And I click "Add Github feed" in the "Custom page body" paragraphs field - And I fill in the following: - | Repository | https://github.com/openeuropa/oe_bootstrap_theme.git | - - When I fill in the following: - | Type | pull_request | - | Number of items | 5 | + Then I click "Choose component" + And I click "Github feed" + And I fill in "Repository" with "https://github.com/openeuropa/oe_bootstrap_theme.git" in the "Modal content" region + And I fill in "Type" with "pull_request" in the "Modal content" region + And I fill in "Number of items" with "5" in the "Modal content" region + And I press "Save" in the "Modal buttons" region And I press "Update" And I should see the heading "Pull requests (5)" And I should not see the heading "Comments" - When I click "Edit" - And I fill in the following: - | Type | events | - | Number of items | 5 | + When I go to the edit form of the "Catalogue of paragraphs" "custom page" + Then I "edit" from the "Custom page body" field the child 1 paragraph of 1 layout + And I fill in "Type" with "events" in the "Modal content" region + And I fill in "Number of items" with "5" in the "Modal content" region + And I press "Save" in the "Modal buttons" region And I press "Update" And I should see the heading "Activity feed (5)" - When I click "Edit" - And I fill in the following: - | Type | issue | - | Number of items | 5 | + When I go to the edit form of the "Catalogue of paragraphs" "custom page" + Then I "edit" from the "Custom page body" field the child 1 paragraph of 1 layout + And I fill in "Type" with "issue" in the "Modal content" region + And I fill in "Number of items" with "5" in the "Modal content" region + And I press "Save" in the "Modal buttons" region And I press "Update" Then I should see the heading "Catalogue of paragraphs" And I should see the heading "Issues (5)" And I should not see the heading "Comments (5)" - And I go to the edit form of the "Catalogue of paragraphs" "custom page" - And I fill in the following: - | Type | issue | - | Number of items | 5 | - | Number of comments | 5 | + When I go to the edit form of the "Catalogue of paragraphs" "custom page" + Then I "edit" from the "Custom page body" field the child 1 paragraph of 1 layout + And I fill in "Number of items" with "5" in the "Modal content" region + And I fill in "Number of comments" with "5" in the "Modal content" region + And I press "Save" in the "Modal buttons" region And I press "Update" And I should see the heading "Issues (5)" # Only one comment is available. And I should see the heading "Comments (1)" # Test the error message when the repository is invalid. - And I go to the edit form of the "Catalogue of paragraphs" "custom page" - And I fill in the following: - | Repository | https://some_invalid_repository.com/nothing | - And I press "Update" + When I go to the edit form of the "Catalogue of paragraphs" "custom page" + Then I "edit" from the "Custom page body" field the child 1 paragraph of 1 layout + And I fill in "Repository" with "https://some_invalid_repository.com/nothing" in the "Modal content" region + And I press "Save" in the "Modal buttons" region Then I should see the text "The repository must be a valid GitHub repository." # Test a repository that is not found and ensure that the page does not break. - And I go to the edit form of the "Catalogue of paragraphs" "custom page" - And I fill in the following: - | Repository | https://github.com/some/repository | + And I fill in "Repository" with "https://github.com/some/repository" in the "Modal content" region + And I press "Save" in the "Modal buttons" region And I press "Update" Then I should see the heading "Catalogue of paragraphs" @@ -74,27 +78,26 @@ Feature: Github feed paragraph tests. | title | Paragraphs <group> | | state | validated | And custom_page content: - | title | <group> | state | - | Catalogue of paragraphs | Paragraphs <group> | published | + | title | <group> | state | topic | + | Catalogue of paragraphs | Paragraphs <group> | published | Statistics and Analysis | + And I append "layout" to "field_paragraphs_body" field in "node" entity with following "Catalogue of paragraphs" title: + | behavior_settings | a:3:{s:17:"layout_paragraphs";a:4:{s:6:"layout";s:13:"layout_onecol";s:6:"config";a:1:{s:5:"label";s:0:"";}s:11:"parent_uuid";N;s:6:"region";N;}s:16:"background_theme";a:0:{}s:11:"extra_class";a:0:{}} | + When I am logged in as a facilitator of the "Paragraphs <group>" <group> And I go to the edit form of the "Catalogue of paragraphs" "custom page" - And I click "Add Github feed" in the "Custom page body" paragraphs field + And I click "Choose component" + And I click "Github feed" And I fill in the following: | Repository | https://github.com/openeuropa/oe_bootstrap_theme.git | When I fill in the following: | Type | pull_request | | Number of items | 5 | + And I press "Save" in the "Modal buttons" region And I press "Update" And I should see the heading "Pull requests (5)" And I go to the edit form of the "Catalogue of paragraphs" "custom page" - # There should be a single paragraph with the Collapse button available. - And I press "Collapse" - # The only edit button in the main region is the one for the paragraph. - And I should see the button "Edit" in the "Content" region - And I should see the button "Remove" in the "Content" region - Examples: | group | | collection | diff --git a/tests/features/paragraphs/layout_paragraphs.feature b/tests/features/paragraphs/layout_paragraphs.feature new file mode 100644 index 0000000000000000000000000000000000000000..c132bce4c91a5c572803501389c90017049049e4 --- /dev/null +++ b/tests/features/paragraphs/layout_paragraphs.feature @@ -0,0 +1,122 @@ +@api @javascript +Feature: + Tests related to layout paragraphs. Anything that is related to the UI, MUST + include javascript enabled. However, tests about paragraphs in non JS + environment will be included. + + Background: + Given custom_page content: + | title | + | Layout paragraphs test | + And I am logged in as a moderator + And I go to the edit form of the "Layout paragraphs test" "custom page" + + Scenario: Test layout actions. + When 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 | + Then the "Custom page body" form field should have the following layout paragraphs: + | one column | + + When I add a layout paragraph in the "Custom page body" form field with the following properties: + | layout | two columns | + | Column widths | 50-50 | + | Background theme | light | + | Extra classes | test-class | + Then the "Custom page body" form field should have the following layout paragraphs: + | one column | + | two columns | + + When I add a layout paragraph in the "Custom page body" form field with the following properties: + | layout | three columns | + | Background theme | light | + | Extra classes | test-class | + Then the "Custom page body" form field should have the following layout paragraphs: + | one column | + | two columns | + | three columns | + + When I delete from the "Custom page body" form field the layout paragraph in position 2 + Then the "Custom page body" form field should have the following layout paragraphs: + | one column | + | three columns | + + When I "move down" from the "Custom page body" form field the layout paragraph in position 1 + Then the "Custom page body" form field should have the following layout paragraphs: + | three columns | + | one column | + + When I "move up" from the "Custom page body" form field the layout paragraph in position 2 + Then the "Custom page body" form field should have the following layout paragraphs: + | one column | + | three columns | + + When I "duplicate" from the "Custom page body" form field the layout paragraph in position 2 + Then the "Custom page body" form field should have the following layout paragraphs: + | one column | + | three columns | + | three columns | + # Layout paragraphs store that changes have been performed in the UI, so + # if we simply try to navigate elsewhere, an alert is raised about unsaved + # changes and the next test fails. We need to save the changes. + And I press "Publish" + + Scenario: Add paragraphs to layouts. + When 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 | + When I add a layout paragraph in the "Custom page body" form field with the following properties: + | layout | two columns | + | Column widths | 50-50 | + | Background theme | light | + | Extra classes | test-class | + When I add a layout paragraph in the "Custom page body" form field with the following properties: + | layout | three columns | + | Background theme | light | + | Extra classes | test-class | + Then the "Custom page body" form field should have the following layout paragraphs: + | one column | + | two columns | + | three columns | + + And I add a "Text" paragraph in the "Custom page body" form field: + | layout position | 1 | + | region | content | + | Body | type: ckeditor - value: This is a text paragraph | + Then the layout in position "1" from the "Custom page body" form field should have the following structure: + | content | text | + And I add a "Heading" paragraph in the "Custom page body" form field: + | layout position | 2 | + | region | first | + | Heading text | type: text - value: Heading for 2column | + And I add a "Text" paragraph in the "Custom page body" form field: + | layout position | 2 | + | region | first | + | Body | type: ckeditor - value: This should go under the heading | + And I add a "Heading" paragraph in the "Custom page body" form field: + | layout position | 2 | + | region | second | + | Heading text | type: text - value: This is a heading paragraph | + Then the layout in position "2" from the "Custom page body" form field should have the following structure: + | first | heading | + | first | text | + | second | heading | + And I add a "Text" paragraph in the "Custom page body" form field: + | layout position | 3 | + | region | second | + | Body | type: ckeditor - value: This is another text paragraph | + And I add a "Heading" paragraph in the "Custom page body" form field: + | layout position | 3 | + | region | first | + | Heading text | type: text - value: This is a heading paragraph | + And I add a "Heading" paragraph in the "Custom page body" form field: + | layout position | 3 | + | region | third | + | Heading text | type: text - value: This is another heading paragraph | + Then the layout in position "3" from the "Custom page body" form field should have the following structure: + | first | heading | + | second | text | + | third | heading | + And I press "Publish" diff --git a/tests/features/paragraphs/poll.feature b/tests/features/paragraphs/poll.feature new file mode 100644 index 0000000000000000000000000000000000000000..0f89dbd7de0aaba4de465df1aa6690b871c0ea4f --- /dev/null +++ b/tests/features/paragraphs/poll.feature @@ -0,0 +1,101 @@ +@api @group_b @javascript +Feature: Pool paragraph tests. + + Background: + Given the following collections: + | title | state | + | Poll collection | validated | + + Scenario: Anonymous user is asked to log in if they attempt to vote + Given the following polls: + | question | runtime | cancel_vote_allow | show_number_of_results | choice | state | + | What was the best series? | 1209600 | 0 | 1 | Game of Thrones,Breaking Bad,The Wire,The Sopranos,Mad Men | published | + And custom_page content: + | title | body | collection | state | + | TV series | We've rounded up our picks for the best shows to binge-watch | Poll collection | published | + And I append poll "What was the best series?" to "field_paragraphs_body" field in "node" entity with following "TV series" title + + Then I am an anonymous user + And I go to the "TV series" custom page + When I should see the link "Game of Thrones" + + Then I click "Game of Thrones" + When a modal should open + And I should see the text "You are not signed in" in the "Modal title" + And I should see the heading "Only signed in users can vote." in the "Modal content" + And I should see the text "Please sign in if you already have an account or register a new account on EU Login to proceed voting!" in the "Modal content" + + Then I click "Sign in" in the "Modal content" + When I should see the heading "Sign in to continue" + + Scenario: Authenticated user can vote + Given the following polls: + | question | runtime | cancel_vote_allow | show_number_of_results | choice | state | + | What was the best series? | 1209600 | 0 | 1 | Game of Thrones,Breaking Bad,The Wire,The Sopranos,Mad Men | published | + And custom_page content: + | title | body | collection | state | + | TV series | We've rounded up our picks for the best shows to binge-watch | Poll collection | published | + And I append poll "What was the best series?" to "field_paragraphs_body" field in "node" entity with following "TV series" title + + Then I am logged in as a user with the "authenticated" role + And I go to the "TV series" custom page + When I should see the heading "What was the best series?" + And I should not see the button "View results" + And the following fields should be present "Game of Thrones,Breaking Bad,The Wire,The Sopranos,Mad Men" + And I should see "0 votes" + And I should see "1 week 6 days left to vote" + + Then I click on label "Game of Thrones" + And I wait for AJAX to finish + When I should see "1 vote" + + Scenario: Use who voted can cancel own vote + Given the following polls: + | question | runtime | cancel_vote_allow | show_number_of_results | choice | state | + | Whats the best pizza topping? | 432000 | 1 | 0 | Pepperoni,Pineapple,Just cheese,Mushrooms | published | + And custom_page content: + | title | body | collection | state | + | Pizza types | 10 Most Popular Types of Pizza Around the Country | Poll collection | published | + And I append poll "Whats the best pizza topping?" to "field_paragraphs_body" field in "node" entity with following "Pizza types" title + + Then I am logged in as a user with the "authenticated" role + And I go to the "Pizza types" custom page + When I should see the heading "Whats the best pizza topping?" + And the following fields should be present "Pepperoni,Pineapple,Just cheese,Mushrooms" + And I should not see "0 votes" + And I should see "4 days 23 hours left to vote" + + Then I click on label "Just cheese" + And I wait for AJAX to finish + When the following fields should not be present "Pepperoni,Pineapple,Just cheese,Mushrooms" + And I press "Cancel vote" + And the following fields should be present "Pepperoni,Pineapple,Just cheese,Mushrooms" + + Scenario: Poll paragraph can be added + Given custom_page content: + | title | collection | state | + | Scariest things | Poll collection | published | + And I append "layout" to "field_paragraphs_body" field in "node" entity with following "Scariest things" title: + | behavior_settings | a:3:{s:17:"layout_paragraphs";a:4:{s:6:"layout";s:13:"layout_onecol";s:6:"config";a:1:{s:5:"label";s:0:"";}s:11:"parent_uuid";N;s:6:"region";N;}s:16:"background_theme";a:0:{}s:11:"extra_class";a:0:{}} | + + Then I am logged in as a moderator + And I go to the edit form of the "Scariest things" "custom page" + And I click "Choose component" + And I click "Poll" + When the following fields should be present "Question,Choice,Poll Duration,Allow cancel votes,Show number of results,Active" + + Then I press "Save" in the "Modal buttons" region + When I should see the error message "Question field is required." + And I should see the error message "This value should not be null." + + Then I fill in "Question" with "What do you find scariest?" + And I fill in "Choice" with "Heights" + And I press "Add another item" at the "Choice" field + And I fill in the latest "Choice" field with "Flying" + And I press "Add another item" at the "Choice" field + And I fill in the latest "Choice" field with "Small spaces" + And I press "Add another item" at the "Choice" field + And I fill in the latest "Choice" field with "Work" + And I press "Save" in the "Modal buttons" region + And I press "Update" + When the following fields should be present "Heights,Flying,Small spaces,Work" diff --git a/tests/features/pin_in_collection.feature b/tests/features/pin_in_collection.feature index 5c0444da3f73c0f35fe56c2c7c029ba020c47301..d607e80e5cc9088ac023a798e6dd84e1894ac7eb 100644 --- a/tests/features/pin_in_collection.feature +++ b/tests/features/pin_in_collection.feature @@ -276,53 +276,61 @@ Feature: Pinning entities inside collections @javascript Scenario: Last update time of a solution is not affected by (un)pinning. + Given the following collections: + | title | state | creation date | modification date | + | Orange Screwdriver | validated | 2018-10-15 | 2019-10-15T23:03 | + | Green Screwdriver | validated | 2018-11-05 | 2019-11-05T23:03 | Given discussion content: - | title | collection | state | pinned | created | - | What kind of wrench is this? | Orange Wrench | validated | no | 2017-11-20 | - And solutions: - | title | collection | state | pinned in | creation date | - | Drop forged wrenches | Orange Wrench | validated | Orange Wrench | 2017-10-12 | - And I am logged in as "Rozanne Minett" + | title | collection | state | pinned | created | changed | + | What kind of screwdriver is this? | Orange Screwdriver | validated | no | 2017-11-20 | 2018-11-20 | + Given solutions: + | title | collection | state | pinned in | creation date | modification date | + | Drop forged screwdrivers | Orange Screwdriver | validated | Orange Screwdriver | 2017-10-12 | 2018-10-12T23:03 | + And the following collection user memberships: + | collection | user | roles | + | Orange Screwdriver | Rozanne Minett | facilitator | + | Green Screwdriver | Rozanne Minett | facilitator | + Given I am logged in as "Rozanne Minett" # Pinning and unpinning items should not affect the "last update" timestamp. # Before changing the pinned status, let's check that the solution is in the # expected position when searching for content ordered by last updated time. When I visit the search page And I select "Last Updated Date" from "Sort by" - And I enter "wrench" in the search bar and press enter + And I enter "screwdriver" in the search bar and press enter Then I should see the following tiles in the correct order: - | Green Wrench | - | Orange Wrench | - | What kind of wrench is this? | - | Drop forged wrenches | + | Green Screwdriver | + | Orange Screwdriver | + | What kind of screwdriver is this? | + | Drop forged screwdrivers | - When I go to the homepage of the "Orange Wrench" collection - When I click the contextual link "Unpin" in the "Drop forged wrenches" tile - Then I should see the success message "Solution Drop forged wrenches has been unpinned in the collection Orange Wrench." + When I go to the homepage of the "Orange Screwdriver" collection + When I click the contextual link "Unpin" in the "Drop forged screwdrivers" tile + Then I should see the success message "Solution Drop forged screwdrivers has been unpinned in the collection Orange Screwdriver." When I visit the search page And I select "Last Updated Date" from "Sort by" - And I enter "wrench" in the search bar and press enter + And I enter "screwdriver" in the search bar and press enter Then I should see the following tiles in the correct order: - | Green Wrench | - | Orange Wrench | - | What kind of wrench is this? | - | Drop forged wrenches | + | Green Screwdriver | + | Orange Screwdriver | + | What kind of screwdriver is this? | + | Drop forged screwdrivers | - When I go to the homepage of the "Orange Wrench" collection - When I click the contextual link "Pin" in the "Drop forged wrenches" tile - Then I should see the success message "Solution Drop forged wrenches has been pinned in the collection Orange Wrench." + When I go to the homepage of the "Orange Screwdriver" collection + When I click the contextual link "Pin" in the "Drop forged screwdrivers" tile + Then I should see the success message "Solution Drop forged screwdrivers has been pinned in the collection Orange Screwdriver." # Check that the "last update" timestamp has not been affected. We can check # this in the search page. When I visit the search page And I select "Last Updated Date" from "Sort by" - And I enter "wrench" in the search bar and press enter + And I enter "screwdriver" in the search bar and press enter Then I should see the following tiles in the correct order: - | Green Wrench | - | Orange Wrench | - | What kind of wrench is this? | - | Drop forged wrenches | + | Green Screwdriver | + | Orange Screwdriver | + | What kind of screwdriver is this? | + | Drop forged screwdrivers | @javascript Scenario Outline: Pinned content tiles should show a visual cue only in their collection homepage. diff --git a/tests/features/rdf_entity_provenance/federated_entities.feature b/tests/features/rdf_entity_provenance/federated_entities.feature index 2f77797f516651cda99e77ee5e3ca88b0bc1f711..3837907d3c87fa55c5e611aa88af9d8df398c894 100644 --- a/tests/features/rdf_entity_provenance/federated_entities.feature +++ b/tests/features/rdf_entity_provenance/federated_entities.feature @@ -77,8 +77,8 @@ Feature: In order to avoid users changing federated values Examples: | label | type | fields disabled | fields not disabled | - | A federated collection | collection | Title, Description, Contact information, Owner | Abstract, Access URL, Topic, Moderated, Content creation, Motivation, Logo, Banner, Closed collection | - | A federated solution | solution | Title, Description, Contact information, Owner, Keywords, Related solutions, Status, Languages, Landing page | Topic, Moderated, Content creation, Motivation, Logo, Banner, Metrics pager | + | A federated collection | collection | Title, Description, Contact information, Owner | Abstract, Access URL, Topic, Moderated, Content creation, Motivation, Logo, Closed collection | + | A federated solution | solution | Title, Description, Contact information, Owner, Keywords, Related solutions, Status, Languages, Landing page | Topic, Moderated, Content creation, Motivation, Logo, Metrics pager | | A federated release | release | Name, Release number, Keywords, Status, Language | Motivation | | A federated distribution | distribution | Title, Description, Access URL, Format, Status, Licence | | | John Federator | owner | Name | | diff --git a/tests/features/solution/about.feature b/tests/features/solution/about.feature index 0370a668bdba18eecf3e456392839f7030656e36..6eb7ab00b51a5b9fab4a7c76113435b949fa135e 100644 --- a/tests/features/solution/about.feature +++ b/tests/features/solution/about.feature @@ -26,7 +26,6 @@ Feature: About this solution | title | Size exclusion chromatography | | description | Separating molecules by size. | | logo | logo.png | - | banner | banner.jpg | | contact information | Ariel Lucile, "Maiken Bine, Peer Milla" | | owner | Nova Pharmaceuticals, Senatier | | state | validated | @@ -371,14 +370,23 @@ Feature: About this solution # Testing add contact us in existing content. Given I am logged in as a moderator When I go to the about page of "Six exclusion advantages" - Then I open the plus button menu - And I click "Add custom page" + And I click "Add custom page" in the plus button menu And I fill in "Title" with "Some custom contact test" + And I select "Supplier exchange" 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 I click "Text" + And the "Body" wysiwyg editor should have the buttons "Bold, Italic, Link, Unlink, Insert/Remove Bulleted List, Insert/Remove Numbered List, Contact us, Source" And I press the button "Contact us" in the "Body" wysiwyg editor - And I press "Publish" + And I press "Save" in the "Modal buttons" region + And I press "Save" And I should see the heading "Some custom contact test" When I go to the edit form of the "Some custom contact test" "custom page" + And I "edit" from the "Custom page body" field the child 1 paragraph of 1 layout Then I should see the button "Contact us" Then I go to the about page of "Six exclusion advantages" @@ -393,6 +401,31 @@ Feature: About this solution When I go to the edit form of the "Some discussion contact test" discussion Then I should see the button "Contact us" + # HTML tags to be tested. + + Given custom_page content: + | title | solution | state | + | Some custom HTML test | Six exclusion advantages | published | + And I append "text" to "field_paragraphs_body" field in "node" entity with following "Some custom HTML test" title: + | field_body:value | <p><strong>Lorem Ipsum</strong> is simply dummy text of the printing and typesetting industry.<br />Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.</p><p>It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p> | + | field_body:format | text_html | + + Then I am logged in as a moderator + When I go to the "Six exclusion advantages" solution + And I should see the link "Some custom HTML test" + Then I click "Some custom HTML test" + And I should see the heading "Some custom HTML test" + And the page should contain the html text "<p><strong>Lorem Ipsum</strong> is simply dummy text of the printing and typesetting industry.<br>Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.</p>" + And the page should contain the html text "<p>It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p>" + + Given I am an anonymous user + When I go to the "Six exclusion advantages" solution + And I should see the link "Some custom HTML test" + Then I click "Some custom HTML test" + And I should see the heading "Some custom HTML test" + And the page should contain the html text "<p><strong>Lorem Ipsum</strong> is simply dummy text of the printing and typesetting industry.<br>Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.</p>" + And the page should contain the html text "<p>It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p>" + # These contact information have been created via UI. But I delete the "Invisible Cat" contact information And I delete the "Elise Anna Lucile" contact information diff --git a/tests/features/solution/add_solution.feature b/tests/features/solution/add_solution.feature index 96f080025e01854b5fc39d480fee43fbd9baf7bc..7572ead64d615381c414d93b93382a953d0ecf6e 100644 --- a/tests/features/solution/add_solution.feature +++ b/tests/features/solution/add_solution.feature @@ -52,7 +52,7 @@ Feature: "Add solution" visibility options. And I go to the homepage of the "Collection solution test" collection Then I should not see the link "Add solution" - @terms @uploadFiles:logo.png,banner.jpg + @terms @uploadFiles:logo.png Scenario: Add solution as a collection facilitator. Given the following collection: | title | Belgian barista's | @@ -75,7 +75,7 @@ Feature: "Add solution" visibility options. And I check "I have read and accept the legal notice and I commit to manage my solution on a regular basis." And I press "Yes" Then I should see the heading "Add Solution" - And the following fields should be present "Title, Description, Upload a new file or enter a URL, Logo, Banner, Name, E-mail address, Website URL" + And the following fields should be present "Title, Description, Upload a new file or enter a URL, Logo, Name, E-mail address, Website URL" And the following fields should not be present "Groups audience, Other groups, Current workflow state, Langcode, Translation, Motivation" # Regression test for ensuring that obsolete content creation value is removed. # @see: https://citnet.tech.ec.europa.eu/CITnet/jira/browse/ISAICP-3567 @@ -83,7 +83,6 @@ Feature: "Add solution" visibility options. And I should see the text "Only facilitators and authors can create content" # Regression test to endure that the language terms "Multilingual Code" are not present. And the available options in the "Language" select should not include the "Multilingual Code" - And I should see the description "For best result the image must be larger than 2400x345 pixels." for the "Banner" field And the "Solution type" field should contain the "EIRA Ontology Viewpoint, Legal View, Deprecated" option groups When I fill in the following: | Title | Espresso is the solution | @@ -111,14 +110,12 @@ Feature: "Add solution" visibility options. | If you think this action is not clear or not due, please contact Joinup Support at | And I should see "Thank you for proposing a solution. Your request is currently pending approval by the site administrator." - # Regression test for non required fields 'Banner' and 'Logo'. + # Regression test for the non required field, 'Logo'. # @see: https://citnet.tech.ec.europa.eu/CITnet/jira/browse/ISAICP-3328 And I should not see the following error messages: | error messages | - | Banner field is required. | | Logo field is required. | But I should see a logo on the header - And I should see a banner on the header And I should see the heading "Espresso is the solution" When I am logged in as "Ruth Lee" And I go to the edit form of the "Espresso is the solution" solution @@ -155,7 +152,6 @@ Feature: "Add solution" visibility options. # Attach a PDF to the documentation. And I upload the file "text.pdf" to "Upload a new file or enter a URL" And I attach the file "logo.png" to "Logo" - And I attach the file "banner.jpg" to "Banner" # Click the button to select an existing owner. And I press "Add existing" at the "Owner" field And I fill in "Owner" with "Organisation example" @@ -279,7 +275,7 @@ Feature: "Add solution" visibility options. And I delete the "Climate change tracker" solution And I delete the "Angela Crespi" contact information - @javascript @terms @generateMedia @generateMediaTypes:solution_banner,solution_logo + @javascript @terms @generateMedia @generateMediaTypes:solution_logo Scenario: Tests the image library widget. Given the following owner: | name | type | @@ -301,13 +297,8 @@ Feature: "Add solution" visibility options. When I expand the "Additional fields" accordion section And I remove the first file from "Logo" And I wait for AJAX to finish - Then I remove the first file from "Banner" - And I wait for AJAX to finish When I select image #2 as solution logo And I wait for AJAX to finish - And I select image #9 as solution banner - And I wait for AJAX to finish And I press "Publish" And the "Cleaning solution" solution logo is image #2 - And the "Cleaning solution" solution banner is image #9 diff --git a/tests/features/solution/api.feature b/tests/features/solution/api.feature index 1b5d8944c7ebd72490df18a6f9a3c3abca227705..d5ba707e985f5ce374ed8be526eb550329bad83f 100644 --- a/tests/features/solution/api.feature +++ b/tests/features/solution/api.feature @@ -16,7 +16,6 @@ Feature: Solution API | collection | Solution API foo | | description | A sample solution | | logo | logo.png | - | banner | banner.jpg | | documentation | text.pdf | | content creation | registered users | | landing page | http://foo-example.com/landing | @@ -53,7 +52,7 @@ Feature: Solution API Then I should have 1 solution And the "Inflatable rooster" solution should be affiliated with the "Inflatable mascots" collection - @terms @uploadFiles:logo.png,banner.jpg + @terms @uploadFiles:logo.png Scenario: Assign ownership during creation of solutions through UI Given the following owner: | name | type | @@ -64,7 +63,6 @@ Feature: Solution API And the following collection: | title | This is a klm collection | | logo | logo.png | - | banner | banner.jpg | | moderation | no | | closed | no | | content creation | facilitators and authors | @@ -85,7 +83,6 @@ Feature: Solution API | Name | Gopheadow | | E-mail address | solutionAPI@example.com | And I attach the file "logo.png" to "Logo" - And I attach the file "banner.jpg" to "Banner" And I press "Add existing" at the "Owner" field # Then I wait for AJAX to finish And I fill in "Owner" with "Leechidna" diff --git a/tests/features/solution/homepage.feature b/tests/features/solution/homepage.feature index 69110306f97ba279db3bba3ecf8116d350ae715a..c8a2ab16e426fe3ee6bce677bf449bc4dfcf78d9 100644 --- a/tests/features/solution/homepage.feature +++ b/tests/features/solution/homepage.feature @@ -9,7 +9,6 @@ Feature: Solution homepage | title | Petri net | | description | "<p>A <b>Petri net</b>, also known as a <b>place/transition (PT) net</b>, is one of several <a href=\"#mathematical\">mathematical</a> modeling languages for the description of distributed systems. It is a class of discrete event dynamic system. A Petri net is a directed bipartite graph, in which the nodes represent transitions (i.e. events that may occur, represented by bars) and places (i.e. conditions, represented by circles). The directed arcs describe which places are pre- and/or postconditions for which transitions (signified by arrows). Some sources state that Petri nets were invented in August 1939 by Carl Adam Petri — at the age of 13 — for the purpose of describing chemical processes.</p>" | | logo | logo.png | - | banner | banner.jpg | | state | validated | When I go to the homepage of the "Petri net" solution # Checking for HTML text ensures that any HTML elements in the abstract are correctly stripped. @@ -34,7 +33,6 @@ Feature: Solution homepage | title | Information sharing protocols | | description | Handling information sharing securely | | logo | logo.png | - | banner | banner.jpg | | state | validated | When I go to the homepage of the "Information sharing protocols" solution Then I should see the heading "Information sharing protocols" @@ -89,8 +87,8 @@ Feature: Solution homepage | name | Geronimo | | email | geronimo@example.com | And the following solutions: - | title | description | logo | banner | state | owner | contact information | solution type | topic | - | Chiricahua Server | Serving the web | logo.png | banner.jpg | validated | Chiricahua Foundation | Geronimo | Business | E-inclusion | + | title | description | logo | state | owner | contact information | solution type | topic | + | Chiricahua Server | Serving the web | logo.png | validated | Chiricahua Foundation | Geronimo | Business | E-inclusion | # There should not be a pager when the solution is empty. When I go to the homepage of the "Chiricahua Server" solution Then I should not see the "Pager" region @@ -221,8 +219,8 @@ Feature: Solution homepage @terms @javascript Scenario: Test that up to 7 topic terms are visible in the solution overview header. Given the following solutions: - | title | description | logo | banner | state | topic | - | All topics | Bring in EVERYONE! | logo.png | banner.jpg | validated | Finance in EU, Supplier exchange, E-health, HR, Employment and Support Allowance, Statistics and Analysis, E-inclusion, Demography | + | title | description | logo | state | topic | + | All topics | Bring in EVERYONE! | logo.png | validated | Finance in EU, Supplier exchange, E-health, HR, Employment and Support Allowance, Statistics and Analysis, E-inclusion, Demography | When I go to the "All topics" solution Then I should see the text "Topic" in the "Header" diff --git a/tests/features/solution/homepage_related_content.feature b/tests/features/solution/homepage_related_content.feature index 5ecfcb6c770e5cfae77e4406c745f3fe4b8511de..f1dec576d5d59c30d6c6c923e5dc52774c48d1cb 100644 --- a/tests/features/solution/homepage_related_content.feature +++ b/tests/features/solution/homepage_related_content.feature @@ -12,9 +12,9 @@ Feature: Solution homepage | name | Placebo | | email | Placebo@example.com | And the following solutions: - | title | description | logo | banner | state | owner | contact information | solution type | topic | - | Information sharing protocol | Handling information sharing securely | logo.png | banner.jpg | validated | Kostas Agathe | Placebo | Business | E-inclusion | - | Security audit tools | Automated test of security | logo.png | banner.jpg | validated | Kostas Agathe | Placebo | Business | E-inclusion | + | title | description | logo | state | owner | contact information | solution type | topic | + | Information sharing protocol | Handling information sharing securely | logo.png | validated | Kostas Agathe | Placebo | Business | E-inclusion | + | Security audit tools | Automated test of security | logo.png | validated | Kostas Agathe | Placebo | Business | E-inclusion | And the following releases: | title | release number | creation date | release notes | is version of | state | spatial coverage | | IS protocol paper | 1 | 2018-10-04 8:01am | First stable version. | Information sharing protocol | validated | Belgium | diff --git a/tests/features/solution/id_with_spaces.feature b/tests/features/solution/id_with_spaces.feature index c6f8eb063bca6151e26281f66b0af80cff3dc879..2a6f5aea7ae3b8245204ec6988ea2125ec1902cc 100644 --- a/tests/features/solution/id_with_spaces.feature +++ b/tests/features/solution/id_with_spaces.feature @@ -10,7 +10,6 @@ Feature: Solution API | title | Solution with spaces | | description | A sample solution | | logo | logo.png | - | banner | banner.jpg | | documentation | text.pdf | | content creation | registered users | | landing page | http://foo-example.com/landing | @@ -23,7 +22,6 @@ Feature: Solution API | title | Solution with unicode | | description | A sample solution | | logo | logo.png | - | banner | banner.jpg | | documentation | text.pdf | | content creation | registered users | | landing page | http://foo-example.com/landing | diff --git a/tests/features/solution/related_solution.feature b/tests/features/solution/related_solution.feature index 1bae56a4c60984fc49db935eb0860b2a6ec303cc..f4f4529f2ee8065f8de37a50b2871304a87cefe3 100644 --- a/tests/features/solution/related_solution.feature +++ b/tests/features/solution/related_solution.feature @@ -11,13 +11,13 @@ Feature: Related solution | name | type | | Kalikatoures | Company, Industry consortium | And solutions: - | title | related solutions | description | documentation | related by type | moderation | logo | banner | topic | state | solution type | owner | contact information | - | C | | Blazing fast segmentation faults. | text.pdf | yes | no | logo.png | banner.jpg | Demography | validated | | Kalikatoures | Kalikatoura | - | Java | C | Because inheritance is cool. | text.pdf | yes | no | logo.png | banner.jpg | Demography | validated | Citizen | Kalikatoures | Kalikatoura | - | PHP | | Make a site. | text.pdf | yes | yes | logo.png | banner.jpg | Demography | validated | Citizen | Kalikatoures | Kalikatoura | - | Golang | | Concurrency for the masses | text.pdf | yes | yes | logo.png | banner.jpg | Demography | proposed | Citizen | Kalikatoures | Kalikatoura | - | Python | | Get stuff done. | text.pdf | yes | no | logo.png | banner.jpg | Demography | validated | | Kalikatoures | Kalikatoura | - | Javascript | Java, PHP | Java is related to javascript. Huh? | text.pdf | no | no | logo.png | banner.jpg | Demography | validated | Citizen | Kalikatoures | Kalikatoura | + | title | related solutions | description | documentation | related by type | moderation | logo | topic | state | solution type | owner | contact information | + | C | | Blazing fast segmentation faults. | text.pdf | yes | no | logo.png | Demography | validated | | Kalikatoures | Kalikatoura | + | Java | C | Because inheritance is cool. | text.pdf | yes | no | logo.png | Demography | validated | Citizen | Kalikatoures | Kalikatoura | + | PHP | | Make a site. | text.pdf | yes | yes | logo.png | Demography | validated | Citizen | Kalikatoures | Kalikatoura | + | Golang | | Concurrency for the masses | text.pdf | yes | yes | logo.png | Demography | proposed | Citizen | Kalikatoures | Kalikatoura | + | Python | | Get stuff done. | text.pdf | yes | no | logo.png | Demography | validated | | Kalikatoures | Kalikatoura | + | Javascript | Java, PHP | Java is related to javascript. Huh? | text.pdf | no | no | logo.png | Demography | validated | Citizen | Kalikatoures | Kalikatoura | Scenario: Related solutions # Scenario A. A collection owner manages his own collection. diff --git a/tests/features/solution/solution.edit.feature b/tests/features/solution/solution.edit.feature index 5f6bd289c53fa9c5afb4acece6d76fa98d14001d..ccddfafc471fc6b71cbefc5a064a82dd8cd6e6c5 100644 --- a/tests/features/solution/solution.edit.feature +++ b/tests/features/solution/solution.edit.feature @@ -27,12 +27,11 @@ Feature: Solution editing. | title | Another solution | | description | Just another one. | | logo | logo.png | - | banner | banner.jpg | | contact information | Seward Shawn | | owner | Acme inc. | | state | validated | - @terms @uploadFiles:logo.png,banner.jpg + @terms @uploadFiles:logo.png Scenario: A solution owner can edit only its own solutions. When I am logged in as "Yancy Burton" And I go to the homepage of the "Collection example" collection @@ -46,7 +45,6 @@ Feature: Solution editing. | Name | Yancy Burton | | E-mail address | yancyb@example.com | And I attach the file "logo.png" to "Logo" - And I attach the file "banner.jpg" to "Banner" And I fill in "Language" with "http://publications.europa.eu/resource/authority/language/VLS" And I select "EU and European Policies" from "Topic" And I select "Citizen" from "Solution type" @@ -63,16 +61,14 @@ Feature: Solution editing. When I go to the edit form of the "Solution A" solution Then I should see the heading "Edit Solution Solution A" Then the fields "Title, Description, Contact information, Topic, Owner, Solution type, Moderated, Content creation" should be correctly ordered in the region "Main fields accordion" - Then the fields "Logo, Banner, Upload a new file or enter a URL, Geographical coverage, Keywords, Related solutions, Status, Languages, Landing page, Metrics page" should be correctly ordered in the region "Additional fields accordion" + Then the fields "Logo, Upload a new file or enter a URL, Geographical coverage, Keywords, Related solutions, Status, Languages, Landing page, Metrics page" should be correctly ordered in the region "Additional fields accordion" And the following fields should not be present "Issue tracker, Wiki, Langcode, Translation" And the following fieldsets should be present "Contact information, Owner, Content creation" - # Logo and banner fields are required, so they are filled up during - # the creation of the solution. Unfortunately, file fields with a file - # already attached cannot be found by named xpath, so we look for the - # related labels. + # Logo is required, so it is filled up during the creation of the solution. + # Unfortunately, file fields with a file already attached cannot be found by + # named xpath, so we look for the related labels. And I should see the text "Logo" - And I should see the text "Banner" When I fill in "Title" with "Solution A revised" And I press "Propose" @@ -92,7 +88,6 @@ Feature: Solution editing. | title | Solution B | | description | Second letter | | logo | logo.png | - | banner | banner.jpg | | contact information | Seward Shawn | | owner | Acme inc. | | state | validated | diff --git a/tests/features/solution/solution.member_administration.feature b/tests/features/solution/solution.member_administration.feature index 723a55aa4c3c77ed6df48f84aaf4fab3fa546a5e..a5ee6cd9bad3ba4faf0c12e9b73bb8678f03d9f9 100644 --- a/tests/features/solution/solution.member_administration.feature +++ b/tests/features/solution/solution.member_administration.feature @@ -17,8 +17,8 @@ Feature: Solution membership administration | Guadalupe Norman | | guadalupe_norman@example.com | Guadalupe | Norman | | Marcia Garcia | | marcia_garcia@example.com | Marcia | Garcia | And the following solutions: - | title | related solutions | description | documentation | moderation | logo | banner | topic | state | solution type | owner | contact information | - | The Missing Sons | | Blazing fast segmentation faults. | text.pdf | no | logo.png | banner.jpg | Demography | validated | | James Wilson the 2nd | Princeton-Plainsboro Teaching University | + | title | related solutions | description | documentation | moderation | logo | topic | state | solution type | owner | contact information | + | The Missing Sons | | Blazing fast segmentation faults. | text.pdf | no | logo.png | Demography | validated | | James Wilson the 2nd | Princeton-Plainsboro Teaching University | And the following solution user memberships: | solution | user | roles | | The Missing Sons | Guadalupe Norman | facilitator | diff --git a/tests/features/solution/solution.notifications.feature b/tests/features/solution/solution.notifications.feature index 8136eb5c4960035e69d3aba2182fdc1be3640358..13ec9ae8f534a6b4df93c953fe62ec2e295b3ae2 100644 --- a/tests/features/solution/solution.notifications.feature +++ b/tests/features/solution/solution.notifications.feature @@ -23,14 +23,14 @@ Feature: Solution notifications | Ramiro Myers | | Ramiro | Myers | ramiro.myers@example.com | | Edith Poole | | Edith | Poole | edith.poole@example.com | And the following solutions: - | title | author | description | logo | banner | owner | contact information | state | topic | solution type | collection | - | Solution notification to propose changes | Ramiro Myers | Sample text | logo.png | banner.jpg | Karanikolas Kitsos | Information Desk | validated | E-inclusion | Business | Collection of random solutions | - | Solution notification to blacklist | Ramiro Myers | Sample text | logo.png | banner.jpg | Karanikolas Kitsos | Information Desk | validated | E-inclusion | Business | Collection of random solutions | - | Solution notification to publish from blacklisted | Ramiro Myers | Sample text | logo.png | banner.jpg | Karanikolas Kitsos | Information Desk | blacklisted | E-inclusion | Business | Collection of random solutions | - | Solution notification to request changes | Ramiro Myers | Sample text | logo.png | banner.jpg | Karanikolas Kitsos | Information Desk | validated | E-inclusion | Business | Collection of random solutions | - | Solution notification to propose from request changes | Ramiro Myers | Sample text | logo.png | banner.jpg | Karanikolas Kitsos | Information Desk | needs update | E-inclusion | Business | Collection of random solutions | - | Solution notification to delete by moderator team | Ramiro Myers | Sample text | logo.png | banner.jpg | Karanikolas Kitsos | Information Desk | validated | E-inclusion | Business | Collection of random solutions | - | Solution notification to delete by owner | Ramiro Myers | Sample text | logo.png | banner.jpg | Karanikolas Kitsos | Information Desk | validated | E-inclusion | Business | Collection of random solutions | + | title | author | description | logo | owner | contact information | state | topic | solution type | collection | + | Solution notification to propose changes | Ramiro Myers | Sample text | logo.png | Karanikolas Kitsos | Information Desk | validated | E-inclusion | Business | Collection of random solutions | + | Solution notification to blacklist | Ramiro Myers | Sample text | logo.png | Karanikolas Kitsos | Information Desk | validated | E-inclusion | Business | Collection of random solutions | + | Solution notification to publish from blacklisted | Ramiro Myers | Sample text | logo.png | Karanikolas Kitsos | Information Desk | blacklisted | E-inclusion | Business | Collection of random solutions | + | Solution notification to request changes | Ramiro Myers | Sample text | logo.png | Karanikolas Kitsos | Information Desk | validated | E-inclusion | Business | Collection of random solutions | + | Solution notification to propose from request changes | Ramiro Myers | Sample text | logo.png | Karanikolas Kitsos | Information Desk | needs update | E-inclusion | Business | Collection of random solutions | + | Solution notification to delete by moderator team | Ramiro Myers | Sample text | logo.png | Karanikolas Kitsos | Information Desk | validated | E-inclusion | Business | Collection of random solutions | + | Solution notification to delete by owner | Ramiro Myers | Sample text | logo.png | Karanikolas Kitsos | Information Desk | validated | E-inclusion | Business | Collection of random solutions | When I am logged in as "Pat Harper" diff --git a/tests/features/solution/solution_moderation.feature b/tests/features/solution/solution_moderation.feature index 3b1b15341ffa364cea76fca46e89d2170af0016f..9646391411e7dac5732d46f61e415adc020eb76e 100644 --- a/tests/features/solution/solution_moderation.feature +++ b/tests/features/solution/solution_moderation.feature @@ -50,12 +50,12 @@ Feature: Solution moderation # Facilitator of all the solutions. | William Curtis | | And the following solutions: - | title | description | logo | banner | owner | contact information | state | - | Azure Ship | Azure ship | logo.png | banner.jpg | Angelos Agathe | Placide | draft | - | The Last Illusion | The Last Illusion | logo.png | banner.jpg | Angelos Agathe | Placide | proposed | - | Rose of Doors | Rose of Doors | logo.png | banner.jpg | Angelos Agathe | Placide | validated | - | The Guardian of the Stream | The Guardian of the Stream | logo.png | banner.jpg | Angelos Agathe | Placide | needs update | - | Flames in the Swords | Flames in the Swords | logo.png | banner.jpg | Angelos Agathe | Placide | blacklisted | + | title | description | logo | owner | contact information | state | + | Azure Ship | Azure ship | logo.png | Angelos Agathe | Placide | draft | + | The Last Illusion | The Last Illusion | logo.png | Angelos Agathe | Placide | proposed | + | Rose of Doors | Rose of Doors | logo.png | Angelos Agathe | Placide | validated | + | The Guardian of the Stream | The Guardian of the Stream | logo.png | Angelos Agathe | Placide | needs update | + | Flames in the Swords | Flames in the Swords | logo.png | Angelos Agathe | Placide | blacklisted | And the following solution user memberships: | solution | user | roles | | Azure Ship | Franklin Walker | owner | diff --git a/tests/features/solution/solution_moderation_integration.feature b/tests/features/solution/solution_moderation_integration.feature index dc9de71569801f20f4b900218fa95cad90feb3b8..9fb7356e2ac1df20ee7646c91926c8cb4c4216f1 100644 --- a/tests/features/solution/solution_moderation_integration.feature +++ b/tests/features/solution/solution_moderation_integration.feature @@ -16,12 +16,12 @@ Feature: As a user of the website | name | type | | Mr Crab | Private Individual(s) | And the following solutions: - | title | description | logo | banner | owner | contact information | solution type | state | topic | - | Professional Dreams | Azure ship | logo.png | banner.jpg | Mr Crab | Crusty crab | Business | draft | E-inclusion | - | The Falling Swords | The Falling Swords | logo.png | banner.jpg | Mr Crab | Crusty crab | Business | proposed | E-inclusion | - | Flight of Night | Rose of Doors | logo.png | banner.jpg | Mr Crab | Crusty crab | Business | validated | E-inclusion | - | Teacher in the Twins | The Guardian of the Stream | logo.png | banner.jpg | Mr Crab | Crusty crab | Business | needs update | E-inclusion | - | Missing Fire | Flames in the Swords | logo.png | banner.jpg | Mr Crab | Crusty crab | Business | blacklisted | E-inclusion | + | title | description | logo | owner | contact information | solution type | state | topic | + | Professional Dreams | Azure ship | logo.png | Mr Crab | Crusty crab | Business | draft | E-inclusion | + | The Falling Swords | The Falling Swords | logo.png | Mr Crab | Crusty crab | Business | proposed | E-inclusion | + | Flight of Night | Rose of Doors | logo.png | Mr Crab | Crusty crab | Business | validated | E-inclusion | + | Teacher in the Twins | The Guardian of the Stream | logo.png | Mr Crab | Crusty crab | Business | needs update | E-inclusion | + | Missing Fire | Flames in the Swords | logo.png | Mr Crab | Crusty crab | Business | blacklisted | E-inclusion | And the following solution user memberships: | solution | user | roles | | Flight of Night | Hulk | owner | diff --git a/tests/features/solution/solution_overview.feature b/tests/features/solution/solution_overview.feature index d136da035016f79b5e058704a03aba7b5f7a43c4..56f92708486b943208cf56b134dfa3a75f88b8e3 100644 --- a/tests/features/solution/solution_overview.feature +++ b/tests/features/solution/solution_overview.feature @@ -53,7 +53,7 @@ Feature: Solutions Overview But I should not see the link "Next page" And I should not see the link "Last page" - @terms @uploadFiles:logo.png,banner.jpg + @terms @uploadFiles:logo.png Scenario: View solution overview as an anonymous user Given users: | Username | E-mail | @@ -132,7 +132,6 @@ Feature: Solutions Overview Then I select "Data Owner" from "Solution type" And I select "Demography" from "Topic" And I attach the file "logo.png" to "Logo" - And I attach the file "banner.jpg" to "Banner" And I upload the file "text.pdf" to "Upload a new file or enter a URL" # Click the button to select an existing owner. And I press "Add existing" at the "Owner" field diff --git a/tests/features/solution/solution_pager_regression.feature b/tests/features/solution/solution_pager_regression.feature index 762c9ec403955e2c4f5b8f0635368fb6b5c39895..b252f508e946e8ffd5c546c9a89b6541d8bc650b 100644 --- a/tests/features/solution/solution_pager_regression.feature +++ b/tests/features/solution/solution_pager_regression.feature @@ -9,22 +9,22 @@ Feature: Test for a 'facets' regression on the solution overview page. | name | Pierre Plezant | | email | pierre.plezant@example.com | And the following solutions: - | title | description | logo | banner | state | owner | contact information | solution type | topic | - | Apache | Serving the web | logo.png | banner.jpg | validated | Apache Foundation | Pierre Plezant | Business | E-inclusion | - | Security audit tools | Automated test of security | logo.png | banner.jpg | validated | Apache Foundation | Pierre Plezant | Business | E-inclusion | - | Drupal | Content management | logo.png | banner.jpg | validated | Apache Foundation | Pierre Plezant | Business | E-inclusion | - | MongoDB | Free for all in box | logo.png | banner.jpg | validated | Apache Foundation | Pierre Plezant | Business | E-inclusion | - | NodeJS | Download all the packages | logo.png | banner.jpg | validated | Apache Foundation | Pierre Plezant | Business | E-inclusion | - | Solution 1 | More solution | logo.png | banner.jpg | validated | Apache Foundation | Pierre Plezant | Business | E-inclusion | - | Solution 2 | More solution | logo.png | banner.jpg | validated | Apache Foundation | Pierre Plezant | Business | E-inclusion | - | Solution 3 | More solution | logo.png | banner.jpg | validated | Apache Foundation | Pierre Plezant | Business | E-inclusion | - | Solution 4 | More solution | logo.png | banner.jpg | validated | Apache Foundation | Pierre Plezant | Business | E-inclusion | - | Solution 5 | More solution | logo.png | banner.jpg | validated | Apache Foundation | Pierre Plezant | Business | E-inclusion | - | Solution 6 | More solution | logo.png | banner.jpg | validated | Apache Foundation | Pierre Plezant | Business | E-inclusion | - | Solution 7 | More solution | logo.png | banner.jpg | validated | Apache Foundation | Pierre Plezant | Business | E-inclusion | - | Solution 8 | More solution | logo.png | banner.jpg | validated | Apache Foundation | Pierre Plezant | Business | E-inclusion | - | Solution 9 | More solution | logo.png | banner.jpg | validated | Apache Foundation | Pierre Plezant | Business | E-inclusion | - | Solution 10 | More solution | logo.png | banner.jpg | validated | Apache Foundation | Pierre Plezant | Business | E-inclusion | + | title | description | logo | state | owner | contact information | solution type | topic | + | Apache | Serving the web | logo.png | validated | Apache Foundation | Pierre Plezant | Business | E-inclusion | + | Security audit tools | Automated test of security | logo.png | validated | Apache Foundation | Pierre Plezant | Business | E-inclusion | + | Drupal | Content management | logo.png | validated | Apache Foundation | Pierre Plezant | Business | E-inclusion | + | MongoDB | Free for all in box | logo.png | validated | Apache Foundation | Pierre Plezant | Business | E-inclusion | + | NodeJS | Download all the packages | logo.png | validated | Apache Foundation | Pierre Plezant | Business | E-inclusion | + | Solution 1 | More solution | logo.png | validated | Apache Foundation | Pierre Plezant | Business | E-inclusion | + | Solution 2 | More solution | logo.png | validated | Apache Foundation | Pierre Plezant | Business | E-inclusion | + | Solution 3 | More solution | logo.png | validated | Apache Foundation | Pierre Plezant | Business | E-inclusion | + | Solution 4 | More solution | logo.png | validated | Apache Foundation | Pierre Plezant | Business | E-inclusion | + | Solution 5 | More solution | logo.png | validated | Apache Foundation | Pierre Plezant | Business | E-inclusion | + | Solution 6 | More solution | logo.png | validated | Apache Foundation | Pierre Plezant | Business | E-inclusion | + | Solution 7 | More solution | logo.png | validated | Apache Foundation | Pierre Plezant | Business | E-inclusion | + | Solution 8 | More solution | logo.png | validated | Apache Foundation | Pierre Plezant | Business | E-inclusion | + | Solution 9 | More solution | logo.png | validated | Apache Foundation | Pierre Plezant | Business | E-inclusion | + | Solution 10 | More solution | logo.png | validated | Apache Foundation | Pierre Plezant | Business | E-inclusion | And the following distribution: | title | Apache for MacOS | | description | Apache distribution | diff --git a/tests/features/solution/solution_sharing.feature b/tests/features/solution/solution_sharing.feature index 55b2ef17f602f45712e214979c7cab7b7fea1a4f..4fc6348ea96f8896bd43202e6afffb9b1e23c82d 100644 --- a/tests/features/solution/solution_sharing.feature +++ b/tests/features/solution/solution_sharing.feature @@ -16,8 +16,8 @@ Feature: As a privileged user | Collection share candidate 1 | logo.png | validated | | Collection share candidate 2 | logo.png | validated | And the following solutions: - | title | description | logo | banner | state | collection | - | Solution to be shared | Doesn't affect test | logo.png | banner.jpg | validated | Collection share original | + | title | description | logo | state | collection | + | Solution to be shared | Doesn't affect test | logo.png | validated | Collection share original | And the following solution user memberships: | solution | user | roles | | Solution to be shared | joe_dare | owner | diff --git a/tests/features/svg.feature b/tests/features/svg.feature index 8a0c3931db32086d70763bc1ee4263dede567174..d7a2ee7af56b92d92b172f1540fb04787d1240ac 100644 --- a/tests/features/svg.feature +++ b/tests/features/svg.feature @@ -9,8 +9,8 @@ Feature: Test SVG attachments. | name | SVG | | email | svg@example.com | And collections: - | title | logo | banner | abstract | description | content creation | moderation | topic | owner | contact information | state | - | SVG | logo.png | banner.jpg | Test | Test | facilitators and authors | yes | Supplier exchange | SVG | SVG | validated | + | title | logo | abstract | description | content creation | moderation | topic | owner | contact information | state | + | SVG | logo.png | Test | Test | facilitators and authors | yes | Supplier exchange | SVG | SVG | validated | @terms @javascript @uploadFiles:error.svg,simple.svg Scenario: Edit a collection wysiwyg modal should close. diff --git a/tests/features/taxonomy/curated_homepage_topics.feature b/tests/features/taxonomy/curated_homepage_topics.feature index c1a5e6ed7921ce8f76a23eb3b325effa5f31d3a6..e72ce588ae6170ff8aa6fb15c42e5ef311cc077c 100644 --- a/tests/features/taxonomy/curated_homepage_topics.feature +++ b/tests/features/taxonomy/curated_homepage_topics.feature @@ -168,34 +168,7 @@ Feature: Then I should see the heading "Main topics" And I should not see the heading "Hello world" - Scenario: Configurable listings are available for the topic meta entities. - Given the following topics are enabled in the homepage: - | E-justice | - And I am logged in as a moderator - And I go to the "topic" meta entity of the "E-justice" topic "taxonomy term" - And I click "Edit" - Then I should see the heading "Edit E-justice" - And I should not see the button "Add configurable listing" - When I press "Add Row" - Then I should not see the button "Add 2 column with featured media on the left" - Then I should not see the button "Add 2 column with featured media on the right" - Then I should not see the button "Add 3 columns" - And I press "Add 1 column layout" - Then I should see the button "Add Configurable listing" - And I should not see the button "Add Accordion" - And I should not see the button "Add Iframe" - And I should not see the button "Add Carousel" - And I should not see the button "Add Content listing" - And I should not see the button "Add Image" - And I should not see the button "Add Map" - And I should not see the button "Add Testimony" - - Given I reload the page - And I press "Add Row" - And I press "Add 2 column layout" - Then I should see the button "Add Configurable listing" - - Scenario: Lists of configurable content can be added in the page of the topic meta entity. + Scenario: Description and summary are displayed accordingly. Given news content: | title | headline | state | | News 1 | News 1 | validated | @@ -228,41 +201,57 @@ Feature: When I go to the homepage Then I should see the text "This will be shown in the homepage." - When I click "E-justice" - And I click "Edit" - When I press "Add Row" - And I press "Add 2 column layout" - And I press "Add Configurable listing" - - When I reload the page - And I press "Add Row" - And I press "Add 1 column layout" - And I press "Add Configurable listing" - Then the following fields should be present "Heading, Action link, List style, Query presets" - - When I fill in "Heading" with "E-justice heading" - And I fill in "URL" with "http://example.com" - And I fill in "Link text" with "E-justice link text" - And I select "List" from "List style" - And I fill in "Query presets" with "entity_bundle|news" + @javascript + Scenario: Lists of configurable content can be added in the page of the topic meta entity. + Given news content: + | title | headline | state | + | News 1 | News 1 | validated | + And the following topics are enabled in the homepage: + | Economy and Welfare | + | Info | + | Statistics and Analysis | + | E-justice | + When I am logged in as a moderator + And I go to the edit form of the topic meta entity of the "E-justice" topic "taxonomy term" + And I add a layout paragraph in the "Topic meta entity body" form field with the following properties: + | layout | one column | + | Background theme | light | + | Extra classes | test-class | + And I add a "Configurable listing" paragraph in the "Topic meta entity body" form field: + | layout position | 1 | + | region | content | + | Heading | type: text - value: E-justice heading | + | URL | type: text - value: http://example.com | + | Link text | type: text - value: E-justice link text | + | List style | type: select - value: List | + | Query presets | type: text - value: entity_bundle\|news | And I press "Save" Then I should see the "News 1" tile And the url should match "/topic/law-and-justice/e-justice" - When I click "Edit" - And I select "Grid" from "List style" + When I go to the edit form of the topic meta entity of the "E-justice" topic "taxonomy term" + And I "delete" from the "Topic meta entity body" field the child 1 paragraph of 1 layout + And I add a "Configurable listing" paragraph in the "Topic meta entity body" form field: + | layout position | 1 | + | region | content | + | Heading | type: text - value: E-justice heading | + | URL | type: text - value: http://example.com | + | Link text | type: text - value: E-justice link text | + | List style | type: select - value: Grid | + | Query presets | type: text - value: entity_bundle\|news | + And I press "Save" And I should see the "News 1" tile And the url should match "/topic/law-and-justice/e-justice" - When I go to the "topic" meta entity of the "Economy and Welfare" topic "taxonomy term" + When I go to the canonical path of the "topic" meta entity of the "Economy and Welfare" topic "taxonomy term" And the url should match "/topic/economy-and-welfare" - When I go to the "topic" meta entity of the "Info" topic "taxonomy term" + When I go to the canonical path of the "topic" meta entity of the "Info" topic "taxonomy term" And the url should match "/topic/info" - When I go to the "topic" meta entity of the "Statistics and Analysis" topic "taxonomy term" + When I go to the canonical path of the "topic" meta entity of the "Statistics and Analysis" topic "taxonomy term" And the url should match "/topic/info/statistics-and-analysis" # Regression test: 3-dots is hidden for anonymous as only contains 'View'. @@ -314,6 +303,7 @@ Feature: And I should not see the text "See less" Then the "See more" collapse is collapsed + @javascript Scenario: Regression test to ensure order of entities. Given news content: | title | headline | body | state | created | changed | topic | @@ -331,17 +321,20 @@ Feature: | E-justice | When I am logged in as a moderator - And I go to the homepage - And I click "E-justice" in the "Homepage topics" region - And I click "Edit" - When I press "Add Row" - And I press "Add 1 column layout" - And I press "Add Configurable listing" - When I fill in "Heading" with "E-justice heading" - And I fill in "URL" with "http://example.com" - And I fill in "Link text" with "E-justice link text" - And I select "List" from "List style" - And I fill in "Query presets" with "entity_bundle|news" + + And I go to the edit form of the topic meta entity of the "E-justice" topic "taxonomy term" + And I add a layout paragraph in the "Topic meta entity body" form field with the following properties: + | layout | one column | + | Background theme | light | + | Extra classes | test-class | + And I add a "Configurable listing" paragraph in the "Topic meta entity body" form field: + | layout position | 1 | + | region | content | + | Heading | type: text - value: E-justice heading | + | URL | type: text - value: http://example.com | + | Link text | type: text - value: E-justice link text | + | List style | type: select - value: List | + | Query presets | type: text - value: entity_bundle\|news | And I press "Save" Then I should see the following tiles in the correct order: | News 4 | @@ -349,14 +342,20 @@ Feature: | News 2 | | News 1 | - When I click "Edit" - - # Test having 2 topics in the query preset with an 'IN' operator. - And I fill in "Query presets" with: - """ - entity_bundle|news - topic|http://joinup.eu/ontology/topic#e-justice, http://joinup.eu/ontology/topic#e-health|IN - """ + When I go to the edit form of the topic meta entity of the "E-justice" topic "taxonomy term" + When I delete from the "Topic meta entity body" form field the layout paragraph in position 1 + And I add a layout paragraph in the "Topic meta entity body" form field with the following properties: + | layout | one column | + | Background theme | light | + | Extra classes | test-class | + And I add a "Configurable listing" paragraph in the "Topic meta entity body" form field: + | layout position | 1 | + | region | content | + | Heading | type: text - value: E-justice heading | + | URL | type: text - value: http://example.com | + | Link text | type: text - value: E-justice link text | + | List style | type: select - value: List | + | Query presets | type: text - value: entity_bundle\|news\ntopic\|http://joinup.eu/ontology/topic#e-justice, http://joinup.eu/ontology/topic#e-health\|IN | And I press "Save" Then I should see the following tiles in the correct order: | News 4 | @@ -364,12 +363,20 @@ Feature: | News 2 | | News 1 | - When I click "Edit" - And I fill in "Query presets" with: - """ - entity_bundle|news - topic|http://joinup.eu/ontology/topic#e-justice - """ + When I go to the edit form of the topic meta entity of the "E-justice" topic "taxonomy term" + When I delete from the "Topic meta entity body" form field the layout paragraph in position 1 + And I add a layout paragraph in the "Topic meta entity body" form field with the following properties: + | layout | one column | + | Background theme | light | + | Extra classes | test-class | + And I add a "Configurable listing" paragraph in the "Topic meta entity body" form field: + | layout position | 1 | + | region | content | + | Heading | type: text - value: E-justice heading | + | URL | type: text - value: http://example.com | + | Link text | type: text - value: E-justice link text | + | List style | type: select - value: List | + | Query presets | type: text - value: entity_bundle\|news\ntopic\|http://joinup.eu/ontology/topic#e-justice | And I press "Save" Then I should see the following tiles in the correct order: | News 3 | @@ -386,8 +393,20 @@ Feature: | News 2 | | News 1 | - When I click "Edit" - And I fill in "Query presets" with "entity_bundle|event" + When I go to the edit form of the topic meta entity of the "E-justice" topic "taxonomy term" + When I delete from the "Topic meta entity body" form field the layout paragraph in position 1 + And I add a layout paragraph in the "Topic meta entity body" form field with the following properties: + | layout | one column | + | Background theme | light | + | Extra classes | test-class | + And I add a "Configurable listing" paragraph in the "Topic meta entity body" form field: + | layout position | 1 | + | region | content | + | Heading | type: text - value: E-justice heading | + | URL | type: text - value: http://example.com | + | Link text | type: text - value: E-justice link text | + | List style | type: select - value: List | + | Query presets | type: text - value: entity_bundle\|event | And I press "Save" # Events are shown by the event date sorted by the most recent first. @@ -406,24 +425,27 @@ Feature: | Event 2 | | Event 3 | - Scenario Outline: Images should be shown for tile view modes. + @javascript + Scenario Outline: Images should be shown for tile-two view modes. Given <type> content: | title | headline | short title | state | logo | published | | Custom tile | Custom tile | Custom tile | <state> | linus.jpeg | yes | And the following topics are enabled in the homepage: | E-justice | And I am logged in as a moderator - And I go to the homepage - And I click "E-justice" - And I click "Edit" - When I press "Add Row" - And I press "Add 1 column layout" - And I press "Add Configurable listing" - And I select "<list style>" from "List style" - When I fill in "Heading" with "E-justice heading" - And I fill in "URL" with "http://example.com" - And I fill in "Link text" with "E-justice link text" - And I fill in "Query presets" with "entity_bundle|<type>" + And I go to the edit form of the topic meta entity of the "E-justice" topic "taxonomy term" + And I add a layout paragraph in the "Topic meta entity body" form field with the following properties: + | layout | one column | + | Background theme | light | + | Extra classes | test-class | + And I add a "Configurable listing" paragraph in the "Topic meta entity body" form field: + | layout position | 1 | + | region | content | + | Heading | type: text - value: E-justice heading | + | URL | type: text - value: http://example.com | + | Link text | type: text - value: E-justice link text | + | List style | type: select - value: <list style> | + | Query presets | type: text - value: entity_bundle\|<type> | And I press "Save" Then I <should> see the image "linus.jpeg" in the "Custom tile" tile @@ -441,26 +463,29 @@ Feature: | discussion | should not | list | validated | | discussion | should not | grid | validated | - Scenario: Up to 4 topics should be shown for tile view modes. + @javascript + Scenario: Up to 4 topics should be shown for tile-two view modes. Given news content: - | title | headline | body | state | created | changed | topic | + | title | headline | body | state | created | changed | topic | | News 1 | News 1 | Test | validated | 01-01-2023 | 03-02-2023 | E-justice, Finance in EU, Supplier exchange, HR, Statistics and Analysis | - | News 2 | News 2 | Test longer body | validated | 02-01-2023 | 03-02-2023 | E-justice, Finance in EU, Supplier exchange, Statistics and Analysis | + | News 2 | News 2 | Test longer body | validated | 02-01-2023 | 03-02-2023 | E-justice, Finance in EU, Supplier exchange, Statistics and Analysis | And the following topics are enabled in the homepage: | E-justice | When I am logged in as a moderator - And I go to the homepage - And I click "E-justice" in the "Homepage topics" region - And I click "Edit" - When I press "Add Row" - And I press "Add 1 column layout" - And I press "Add Configurable listing" - When I fill in "Heading" with "E-justice heading" - And I fill in "URL" with "http://example.com" - And I fill in "Link text" with "E-justice link text" - And I select "List" from "List style" - And I fill in "Query presets" with "entity_bundle|news" + And I go to the edit form of the topic meta entity of the "E-justice" topic "taxonomy term" + And I add a layout paragraph in the "Topic meta entity body" form field with the following properties: + | layout | one column | + | Background theme | light | + | Extra classes | test-class | + And I add a "Configurable listing" paragraph in the "Topic meta entity body" form field: + | layout position | 1 | + | region | content | + | Heading | type: text - value: E-justice heading | + | URL | type: text - value: http://example.com | + | Link text | type: text - value: E-justice link text | + | List style | type: select - value: List | + | Query presets | type: text - value: entity_bundle\|news | And I press "Save" When I go to the homepage @@ -480,49 +505,53 @@ Feature: And I should not see the text "Statistics and Analysis" in the "News 2" tile And I should see the text "+2 topics" in the "News 2" tile + @javascript Scenario: A configurable listing with no results should not print its title. Given news content: | title | headline | state | | News 1 | News 1 | validated | And the following topics are enabled in the homepage: - | E-justice | + | E-justice | And I am logged in as a moderator - And I go to the homepage - - When I click "E-justice" - And I click "Edit" - And I press "Add Row" - And I press "Add 1 column layout" - And I press "Add Configurable listing" - - When I fill in "Heading" with "E-justice heading" - And I select "List" from "List style" - # Use a nonsense query preset to make sure we have 0 results - And I fill in "Query presets" with "entity_bundle|Nebuchadnezzar" - + And I go to the edit form of the topic meta entity of the "E-justice" topic "taxonomy term" + And I add a layout paragraph in the "Topic meta entity body" form field with the following properties: + | layout | one column | + | Background theme | light | + | Extra classes | test-class | + And I add a "Configurable listing" paragraph in the "Topic meta entity body" form field: + | layout position | 1 | + | region | content | + | Heading | type: text - value: E-justice heading | + | URL | type: text - value: http://example.com | + | Link text | type: text - value: E-justice link text | + | List style | type: select - value: List | + | Query presets | type: text - value: entity_bundle\|Nebuchadnezzar | And I press "Save" And the url should match "/topic/law-and-justice/e-justice" Then I should not see the "News 1" tile And I should not see the heading "E-justice heading" + @javascript Scenario: Ampersand character is not decoded properly under a topic page. Given custom_page content: - | title | body | state | - | Legislation & Technology | What do we mean by Legislation & Technology? | published | + | title | body | state | + | Legislation & Technology | What do we mean by Legislation & Technology? | published | And the following topics are enabled in the homepage: - | E-justice | + | E-justice | And I am logged in as a moderator - And I go to the homepage - When I click "E-justice" - And I click "Edit" - And I press "Add Row" - And I press "Add 1 column layout" - And I press "Add Configurable listing" - And I select "Custom page" from "Available filters" - And I press "Add and configure filter" - And I fill in "Custom page" with "Legislation & Technology" - When I fill in "Heading" with "E-justice heading" - And I select "Grid" from "List style" + And I go to the edit form of the topic meta entity of the "E-justice" topic "taxonomy term" + And I add a layout paragraph in the "Topic meta entity body" form field with the following properties: + | layout | one column | + | Background theme | light | + | Extra classes | test-class | + And I add a "Configurable listing" paragraph in the "Topic meta entity body" form field: + | layout position | 1 | + | region | content | + | Heading | type: text - value: E-justice heading | + | URL | type: text - value: http://example.com | + | Link text | type: text - value: E-justice link text | + | List style | type: select - value: List | + | Query presets | type: text - value: entity_bundle\|custom_page | And I press "Save" And the url should match "/topic/law-and-justice/e-justice" And I should see the text "What do we mean by Legislation & Technology?" in the "Legislation & Technology" tile diff --git a/tests/features/update/7939.feature b/tests/features/update/7939.feature new file mode 100644 index 0000000000000000000000000000000000000000..d7303bc1c50104442d00670197690cee0417e20b --- /dev/null +++ b/tests/features/update/7939.feature @@ -0,0 +1,8 @@ +@api @group-clone +Feature: Test ISAICP-7939. + + Scenario: Regression test that the meta entity is also OK. + When I am logged in as a moderator + And I go to "/admin/homepage-topics" + And I click "Digital innovation" + Then I should see the heading "Digital innovation" diff --git a/tests/features/user/profile.feature b/tests/features/user/profile.feature index 1729c651684bdb90fca2b570cc61e6fd7a69c232..6f3a44c14d6714232f2f950c2541655792074e8a 100644 --- a/tests/features/user/profile.feature +++ b/tests/features/user/profile.feature @@ -106,13 +106,13 @@ Feature: User profile | Jayson Granger | jayson.granger@example.com | | | | Clarette Fairburn | clarette.fairburn@example.com | Clarette | Fairburn | And the following collections: - | title | description | logo | banner | state | creation date | - | Botanic E.D.E.N. | European Deep Earth Nurturing project | logo.png | banner.jpg | validated | 2017-02-23 10:00 | - | Ethic flower handling | Because even flowers have feelings. | logo.png | banner.jpg | validated | 2017-02-23 12:00 | + | title | description | logo | state | creation date | + | Botanic E.D.E.N. | European Deep Earth Nurturing project | logo.png | validated | 2017-02-23 10:00 | + | Ethic flower handling | Because even flowers have feelings. | logo.png | validated | 2017-02-23 12:00 | And the following solutions: - | title | collection | description | logo | banner | state | creation date | - | E.C.O. fertilizers | Botanic E.D.E.N. | Ecologic cool organic fertilizers production. | logo.png | banner.jpg | validated | 2017-02-23 13:00 | - | SOUND project | Ethic flower handling | Music playlist for growing flowers with rhythm. | logo.png | banner.jpg | validated | 2017-02-23 14:01 | + | title | collection | description | logo | state | creation date | + | E.C.O. fertilizers | Botanic E.D.E.N. | Ecologic cool organic fertilizers production. | logo.png | validated | 2017-02-23 13:00 | + | SOUND project | Ethic flower handling | Music playlist for growing flowers with rhythm. | logo.png | validated | 2017-02-23 14:01 | And discussion content: | title | author | collection | state | created | | Repopulating blue iris | Corwin Robert | Botanic E.D.E.N. | validated | 2018-06-15 16:00 | @@ -252,10 +252,10 @@ Feature: User profile | Janny Robert | janny.robert@example.com | | Clarise Edwardson | clarise.edwardson@example.com | And the following collections: - | title | description | logo | banner | state | creation date | author | - | Lake E.D.E.N. | European Deep Earth Nurturing project | logo.png | banner.jpg | validated | 2017-02-23 10:00 | Janny Robert | - | Rose is red | Better descriptions ever | logo.png | banner.jpg | validated | 2017-02-23 10:00 | Clarise Edwardson | - | Lone handling | Because even flowers have feelings. | logo.png | banner.jpg | archived | 2017-02-23 12:00 | Janny Robert | + | title | description | logo | state | creation date | author | + | Lake E.D.E.N. | European Deep Earth Nurturing project | logo.png | validated | 2017-02-23 10:00 | Janny Robert | + | Rose is red | Better descriptions ever | logo.png | validated | 2017-02-23 10:00 | Clarise Edwardson | + | Lone handling | Because even flowers have feelings. | logo.png | archived | 2017-02-23 12:00 | Janny Robert | And discussion content: | title | author | collection | state | created | | Repopulating green iris | Janny Robert | Lake E.D.E.N. | validated | 2018-06-15 16:00 | diff --git a/tests/fixtures/files/single_solution_valid_adms.rdf b/tests/fixtures/files/single_solution_valid_adms.rdf index 4301dc7190c149837ec4b2b243d892f168a42a28..5ce7f0c1afbccebcbbda2dd6b22436f997bfedd3 100644 --- a/tests/fixtures/files/single_solution_valid_adms.rdf +++ b/tests/fixtures/files/single_solution_valid_adms.rdf @@ -6,7 +6,6 @@ - Title. This is a federated property but there have been cases that it is missing. - Content creation - Logo - - Banner - Moderation - hasVersion (for releases that refer to the solution through isVersionOf) - Collection (Computed field) diff --git a/tests/fixtures/files/valid_adms.rdf b/tests/fixtures/files/valid_adms.rdf index 470feafc0bd70d2100c299dfe3892e7a4e50ea22..34c5e5d5dda92440fa638c61eaf43d3a6ed8741a 100644 --- a/tests/fixtures/files/valid_adms.rdf +++ b/tests/fixtures/files/valid_adms.rdf @@ -6,7 +6,6 @@ - Title. This is a federated property but there have been cases that it is missing. - Content creation - Logo - - Banner - Moderation - hasVersion (for releases that refer to the solution through isVersionOf) - Collection (Computed field) diff --git a/tests/src/Context/CollectionContext.php b/tests/src/Context/CollectionContext.php index 6bd7bf244081947f4220a6017ad78a94165cb877..7c586773e91bbb48e31b3565e5b7f9587eeb4f58 100644 --- a/tests/src/Context/CollectionContext.php +++ b/tests/src/Context/CollectionContext.php @@ -56,7 +56,6 @@ class CollectionContext extends RawDrupalContext { 'short ID' => 'field_short_id', 'abstract' => 'field_ar_abstract', 'access url' => 'field_ar_access_url', - 'banner' => 'field_ar_banner', 'closed' => 'field_ar_closed', 'contact information' => 'field_ar_contact_information', 'content creation' => 'field_ar_content_creation', @@ -257,13 +256,10 @@ protected function convertValueAliases(array $fields): array { * Thrown when a given image is not found. */ protected function createCollection(array $values): CollectionInterface { - // Add images. - $image_fields = ['field_ar_banner', 'field_ar_logo']; - foreach ($image_fields as $field_name) { - if (!empty($values[$field_name])) { - foreach ($values[$field_name] as &$filename) { - $filename = [$this->createFile($filename)->id()]; - } + // Add logo image. + if (!empty($values['field_ar_logo'])) { + foreach ($values['field_ar_logo'] as &$filename) { + $filename = [$this->createFile($filename)->id()]; } } diff --git a/tests/src/Context/EuplContext.php b/tests/src/Context/EuplContext.php index 11538442088902d3d11fce28047baef9bd30b575..284cd7f9f2daab1d5fdc2afeaced63b122b67070 100644 --- a/tests/src/Context/EuplContext.php +++ b/tests/src/Context/EuplContext.php @@ -108,7 +108,7 @@ public function clickLicenceInfoIcon(string $spdx): void { // Wait for modal dialog to be ready. $page->waitFor(5, function (DocumentElement $page): ?NodeElement { // Open modal dialog has `style="display:block"`. - return $page->find('xpath', '//div[@style and contains(concat(" ", normalize-space(@class), " "), " modal-content ")]//button[@aria-label="Close"]'); + return $page->find('xpath', '//div[@style and contains(concat(" ", normalize-space(@class), " "), " modal-dialog ")]//button[@aria-label="Close"]'); }); } @@ -121,7 +121,7 @@ public function clickLicenceInfoIcon(string $spdx): void { * @Given I close the licence modal dialog */ public function closeLicenceModalDialog(): void { - $xpath = '//div[@class and contains(concat(" ", normalize-space(@class), " "), " modal-content ")]//button[@aria-label="Close"]'; + $xpath = '//div[@class and contains(concat(" ", normalize-space(@class), " "), " modal-dialog ")]//button[@aria-label="Close"]'; $button = $this->getSession()->getPage()->find('xpath', $xpath); if (empty($button)) { throw new \Exception("Either the dialog is not available or the 'Close' button could not be located."); diff --git a/tests/src/Context/FeatureContext.php b/tests/src/Context/FeatureContext.php index b50b2b3a116a8fb0de3b8532e611e6bca5ced058..fb15582425df306f5969102ffa254e34fba5ccdb 100644 --- a/tests/src/Context/FeatureContext.php +++ b/tests/src/Context/FeatureContext.php @@ -17,6 +17,8 @@ use Drupal\Component\Serialization\Json; use Drupal\Component\Serialization\Yaml; use Drupal\Core\Cache\Cache; +use Drupal\Core\Datetime\DrupalDateTime; +use Drupal\Core\Entity\EntityChangedInterface; use Drupal\Core\Site\Settings; use Drupal\DrupalExtension\Context\RawDrupalContext; use Drupal\DrupalExtension\TagTrait; @@ -689,6 +691,26 @@ public function iClickOn(string $element): void { $findName->click(); } + /** + * Clicks on label by text. + * + * @param string $element + * The label to click. + * + * @Then I click on label :element + * + * @throws \Exception + */ + public function iClickOnLabel(string $element): void { + $page = $this->getSession()->getPage(); + $labelElement = $page->find('xpath', "//label[text()='$element']"); + if (!$labelElement) { + throw new \Exception($element . " could not be found"); + } + + $labelElement->click(); + } + /** * Clicks a contextual link directly, without the need for javascript. * @@ -1876,7 +1898,7 @@ public function assertDownloadedFileContainsStrings(string $link_label, TableNod throw new ElementNotFoundException($this->getSession()->getDriver(), 'Link', NULL, $link_label); } if (!$url = $link->getAttribute('href')) { - throw new \Exception("The link '${link_label}' misses an 'href' attribute."); + throw new \Exception("The link '{$link_label}' misses an 'href' attribute."); } // Get the path part from the URL. @@ -1996,7 +2018,7 @@ public static function staleFilesCleanup(): void { * @code * @uploadFiles:<filename1.ext>,<filename2.ext>,... * @endcode - * For instance, a scenario tagged with @uploadFiles:logo.png,banner.jpg will + * For instance, a scenario tagged with @uploadFiles:logo.png will * clear the 2 file entities (together with the files from files system) after * the scenario completes. * @@ -2062,21 +2084,19 @@ public static function restoreDrupalSettings(): void { * An "1 based" offset of the image. * @param string $content_type * The type of content: collection, solution, event, news. - * @param string $image_type - * The field label. * * @throws \InvalidArgumentException * When the offset is invalid or the field doesn't exist. * - * @When I select image #:offset as :content_type :image_type + * @When I select image #:offset as :content_type logo */ - public function selectImageFromTheFieldImageLibraryBrowser(string $offset, string $content_type, string $image_type): void { - $this->validateImageLibraryBrowserStepDefinitionParams($content_type, $image_type, $offset); + public function selectImageFromTheFieldImageLibraryBrowser(string $offset, string $content_type): void { + $this->validateImageLibraryBrowserStepDefinitionParams($content_type, $offset); $map = $this->getImageLibraryBrowserMapping(); $page = $this->getSession()->getPage(); - if (!$field = $page->findField("files[{$map[$content_type]['fields'][$image_type]}_0]")) { - throw new \InvalidArgumentException("Invalid field ($image_type)."); + if (!$field = $page->findField("files[{$map[$content_type]['fields']['logo']}_0]")) { + throw new \InvalidArgumentException("Invalid field (logo)."); } // Get the field wrapper. @@ -2086,7 +2106,7 @@ public function selectImageFromTheFieldImageLibraryBrowser(string $offset, strin // Convert to zero-based index. $delta = $offset - 1; if (!isset($images[$delta])) { - throw new \InvalidArgumentException("No image at position #$offset in $image_type field."); + throw new \InvalidArgumentException("No image at position #$offset in logo field."); } $this->scrollElementIntoView($images[$delta]); @@ -2105,7 +2125,7 @@ public function selectImageFromTheFieldImageLibraryBrowser(string $offset, strin $state = \Drupal::state(); // Save the clicked image file ID for this field for later checks. $clicks = $state->get('image_library_widget.clicks', []); - $clicks[$content_type][$image_type][$offset] = $image_fid; + $clicks[$content_type]['logo'][$offset] = $image_fid; $state->set('image_library_widget.clicks', $clicks); } @@ -2116,8 +2136,6 @@ public function selectImageFromTheFieldImageLibraryBrowser(string $offset, strin * The type of content: collection, solution, event, news. * @param string $title * The content title. - * @param string $image_type - * The type of image; logo, banner. * @param string $offset * The "1 based" position of the image from the image library broeser. * @@ -2126,29 +2144,29 @@ public function selectImageFromTheFieldImageLibraryBrowser(string $offset, strin * @throws \Exception * When no image of type $type has been clicked. * - * @Then the :title :content_type :image_type is image #:offset + * @Then the :title :content_type logo is image #:offset */ - public function assertImageFromTheFieldImageLibraryBrowser(string $content_type, string $title, string $image_type, string $offset): void { - $this->validateImageLibraryBrowserStepDefinitionParams($content_type, $image_type, $offset); + public function assertLogoFromTheFieldImageLibraryBrowser(string $content_type, string $title, string $offset): void { + $this->validateImageLibraryBrowserStepDefinitionParams($content_type, $offset); $map = $this->getImageLibraryBrowserMapping(); $entity = $this->getEntityByLabel($map[$content_type]['type'], $title, $content_type); - $image_field = $entity->get($map[$content_type]['fields'][$image_type]); + $image_field = $entity->get($map[$content_type]['fields']['logo']); if ($image_field->isEmpty()) { - throw new ExpectationFailedException("The {$title} {$image_type} field is empty but it should point to the image at position #{$offset}."); + throw new ExpectationFailedException("The {$title} logo field is empty but it should point to the image at position #{$offset}."); } $state = \Drupal::state(); $clicks = $state->get('image_library_widget.clicks', []); - if (!isset($clicks[$content_type][$image_type][$offset])) { - throw new \Exception("The {$image_type} images should have been clicked but it was not."); + if (!isset($clicks[$content_type]['logo'][$offset])) { + throw new \Exception("The logo images should have been clicked but it was not."); } - if ($clicks[$content_type][$image_type][$offset] !== $image_field->target_id) { - throw new ExpectationFailedException("The {$title} {$image_type} should contain the image #{$offset} but it doesn't."); + if ($clicks[$content_type]['logo'][$offset] !== $image_field->target_id) { + throw new ExpectationFailedException("The $title logo should contain the image #$offset but it doesn't."); } } /** - * Returns the mapping of logo and banner fields to their content type. + * Returns the mapping of logo field to their content type. * * @return array * Mapping. @@ -2159,14 +2177,12 @@ protected function getImageLibraryBrowserMapping(): array { 'type' => 'rdf_entity', 'fields' => [ 'logo' => 'field_ar_logo', - 'banner' => 'field_ar_banner', ], ], 'solution' => [ 'type' => 'rdf_entity', 'fields' => [ 'logo' => 'field_is_logo', - 'banner' => 'field_is_banner', ], ], 'event' => [ @@ -2195,15 +2211,13 @@ protected function getImageLibraryBrowserMapping(): array { * * @param string $content_type * The type of content: collection, solution, event, news. - * @param string $image_type - * The type of image; logo, banner. * @param string $offset * The "1 based" position of the image from the image library browser. * * @throws \InvalidArgumentException * When a passed parameters is invalid. */ - protected function validateImageLibraryBrowserStepDefinitionParams(string $content_type, string $image_type, string $offset): void { + protected function validateImageLibraryBrowserStepDefinitionParams(string $content_type, string $offset): void { if (!ctype_digit($offset) || $offset < 1) { throw new \InvalidArgumentException("Invalid image position ($offset)."); } @@ -2211,9 +2225,6 @@ protected function validateImageLibraryBrowserStepDefinitionParams(string $conte if (!isset($map[$content_type])) { throw new \InvalidArgumentException("Invalid content type '{$content_type}'. Allowed: " . implode(', ', array_keys($map)) . '.'); } - if (!isset($map[$content_type]['fields'][$image_type])) { - throw new \InvalidArgumentException("Invalid image type '{$image_type}' for content type '{$content_type}'. Allowed: " . implode(', ', array_keys($map[$content_type]['fields'][$image_type])) . '.'); - } } /** @@ -2390,4 +2401,62 @@ protected static function toggleModule(string $method, array $module_name): void static::restoreReadOnlyConfig(); } + /** + * Updates an entity changed time. + * + * @param string $label + * The entity label. + * @param string $bundle + * The entity bundle. + * @param string $time + * The time as string. + * + * @When I update the :label :bundle at :time + */ + public function updateEntityAtDateTime(string $label, string $bundle, string $time): void { + $entity_type_id = static::entityTypeAliases()[$bundle]; + $entity = $this->getEntityByLabel($entity_type_id, $label); + if (!$entity instanceof EntityChangedInterface) { + throw new \InvalidArgumentException("The $entity_type_id entity type is doesn't have a changed time"); + } + + $date_time = new DrupalDateTime($time); + $entity->setChangedTime($date_time->getTimestamp())->save(); + } + + /** + * Asserts that an entity timestamp field was just updated to current time. + * + * @param string $label + * The entity label. + * @param string $bundle + * The entity bundle. + * @param string $field_label + * The field label. + * + * @Then the :label :bundle :field_label time has just been updated + */ + public function assertTimestampFieldUpdatedToNow(string $label, string $bundle, string $field_label): void { + $entity_type_id = static::entityTypeAliases()[$bundle]; + $entity = $this->getEntityByLabel($entity_type_id, $label); + $found = FALSE; + foreach (\Drupal::service('entity_field.manager')->getFieldDefinitions($entity_type_id, $entity->bundle()) as $field_name => $definition) { + if ($definition->getLabel() == $field_label && $definition->getType() === 'timestamp') { + $found = TRUE; + break; + } + } + if (!$found) { + throw new \InvalidArgumentException("Entity type $entity_type_id doesn't have a '$field_label' field or field is not a timestamp."); + } + $value = (int) $entity->get($field_name)->value; + + // We accept a fuzziness of 3 seconds because of the latency of tests. It's + // the test responsibility to set other fixed timestamps with values not + // very close to NOW, in order to avoid collision. + if (\Drupal::time()->getRequestTime() - $value > 3) { + throw new ExpectationFailedException("The entity wasn't updated recently"); + } + } + } diff --git a/tests/src/Context/JoinupCommunityContentContext.php b/tests/src/Context/JoinupCommunityContentContext.php index b55ca8da5a5ac006f4e5a752d32945085ecaaa00..0c53b19f2e153b76687d9d1fefe48b55028ab123 100644 --- a/tests/src/Context/JoinupCommunityContentContext.php +++ b/tests/src/Context/JoinupCommunityContentContext.php @@ -407,8 +407,14 @@ protected function getNumberedComment(int $index): NodeElement { public function provideTopic(BeforeNodeCreateScope $scope) { $node = $scope->getEntity(); - // Only deal with community content. - if (!in_array($node->type, CommunityContentHelper::BUNDLES, TRUE)) { + $bundles_with_topics = array_merge( + CommunityContentHelper::BUNDLES, + ['custom_page'] + ); + + // Only deal with community content + custom pages (which have topic field + // set as required). + if (!in_array($node->type, $bundles_with_topics, TRUE)) { return; } diff --git a/tests/src/Context/JoinupContext.php b/tests/src/Context/JoinupContext.php index de3d940c0ba376829be3f9ee2f21adabce834385..5ee32d0aebc2c225fa86f8da95029a0fd585a034 100644 --- a/tests/src/Context/JoinupContext.php +++ b/tests/src/Context/JoinupContext.php @@ -10,6 +10,7 @@ use Behat\Mink\Exception\ElementNotFoundException; use Drupal\Component\Utility\UrlHelper; use Drupal\Core\StringTranslation\StringTranslationTrait; +use Drupal\Core\Utility\Error; use Drupal\DrupalExtension\Context\RawDrupalContext; use Drupal\DrupalExtension\Hook\Scope\BeforeNodeCreateScope; use Drupal\User\Entity\User; @@ -2043,19 +2044,10 @@ public function waitForDrupalModalToOpen(): void { $result = $this->getSession()->getPage()->waitFor(5, function (): bool { // Retrieve again a fresh copy of the page element at each cycle. - $modal = $this->getSession()->getPage()->find('css', '.modal-body'); + $modal = $this->getSession()->getPage()->find('css', '.ui-dialog-content'); return $modal && $modal->isVisible(); }); - if (!$result) { - $result = $this->getSession()->getPage()->waitFor(5, function () { - // Retrieve again a fresh copy of the page element at each cycle. - $modal = $this->getSession()->getPage()->find('css', '#drupal-bootstrap4-modal'); - - return $modal && $modal->isVisible(); - }); - } - if (!$result) { throw new \Exception('The modal did not open.'); } @@ -2078,7 +2070,7 @@ public function waitForDrupalModalToClose() { // Normally the modal should be completely removed from the DOM, // but sometimes the markup is kept in the DOM as hidden. // @see Drupal.AjaxCommands.prototype.closeDialog() - return !$this->getSession()->getDriver()->isVisible('//*[@id = "drupal-modal"] | //*[@id = "drupal-bootstrap4-modal"]'); + return !$this->getSession()->getDriver()->isVisible('//*[@id = "drupal-modal"]'); } catch (NoSuchElement $e) { // The modal has been completely removed from the DOM. @@ -2179,7 +2171,7 @@ public function ogCleanup(AfterScenarioScope $event) { $queue->deleteItem($item); } catch (\Exception $e) { - watchdog_exception('cron', $e); + Error::logException(\Drupal::logger('cron'), $e); } } } @@ -3153,7 +3145,7 @@ public function assertLinkIsInActiveTrail(string $link_label): void { // Remove the leading '#'. $navigation_menu_selector = substr($this->getRegionSelector('Navigation menu'), 1); - $xpath = "//*[@id='$navigation_menu_selector']//nav//a[text()='$link_label' and contains(concat(' ', normalize-space(@class), ' '), ' is-active ')]"; + $xpath = "//*[@id='$navigation_menu_selector']//ul[contains(concat(' ', normalize-space(@class), ' '), ' nav ')]//a[text()='$link_label' and contains(concat(' ', normalize-space(@class), ' '), ' is-active ')]"; if (!$page->find('xpath', $xpath)) { throw new ExpectationFailedException("The '$link_label' link is not in the active trail but it should."); } diff --git a/tests/src/Context/JoinupCoreContext.php b/tests/src/Context/JoinupCoreContext.php index 3edeba0308ed0e97227fced3aecf969e6b2a0b3e..68943345e64fca624c63f97f267ab14a97f2dfcb 100644 --- a/tests/src/Context/JoinupCoreContext.php +++ b/tests/src/Context/JoinupCoreContext.php @@ -270,7 +270,7 @@ public function assertResponseHeaderMatches(string $header, string $value): void */ public function assertRepeatedElementContainsText(TableNode $table): void { $navigation_menu_selector = $this->getRegionSelector('Navigation menu'); - $parent = $this->getSession()->getPage()->findAll('css', "$navigation_menu_selector nav a"); + $parent = $this->getSession()->getPage()->findAll('css', "$navigation_menu_selector .nav a"); $table_hash = $table->getHash(); Assert::assertSameSize($table_hash, $parent); $i = 0; @@ -395,6 +395,31 @@ public function changeEntityWorkflowState(string $label, string $entity_type_id, $entity->save(); } + /** + * Checks if page elements have unique id elements. + * + * @throws \Exception + * Thrown when element's id is not unique. + * + * @Then page elements must have unique id attributes + */ + public function pageElementsMustHaveUniqueIdAttributes(): void { + $elementIds = []; + + $elementsWithIdAttribute = $this->getSession() + ->getPage() + ->findAll('css', '[id]'); + foreach ($elementsWithIdAttribute as $elementWithIdAttribute) { + $elementId = $elementWithIdAttribute->getAttribute('id'); + + if (in_array($elementId, $elementIds)) { + throw new \Exception("'$elementId' id attribute is used by more than one element"); + } + + $elementIds[] = $elementId; + } + } + /** * Asserts that the given HTML list of rows exists in the page. * diff --git a/tests/src/Context/JoinupInviteContext.php b/tests/src/Context/JoinupInviteContext.php index 71134b42ba934c72b30f3796e5f4b642ae3c3a51..b7f6d67eb364468590129c21d76c0359b143e99e 100644 --- a/tests/src/Context/JoinupInviteContext.php +++ b/tests/src/Context/JoinupInviteContext.php @@ -55,7 +55,7 @@ public function acceptInvitation(string $action, string $title, string $bundle, $invitation = Invitation::loadByEntityAndUser($entity, $user, $invitation_info['invitation_bundle']); $arguments = $this->getInvitationMessageHelper()->getMessage($invitation, $invitation_info['message_template'])->getArguments(); - $this->visitPath($arguments["@invitation:${action}_url"]); + $this->visitPath($arguments["@invitation:{$action}_url"]); } /** diff --git a/tests/src/Context/JoinupLayoutParagraphsContext.php b/tests/src/Context/JoinupLayoutParagraphsContext.php new file mode 100644 index 0000000000000000000000000000000000000000..699b93f41549ace94c2f3beba276a5703b412512 --- /dev/null +++ b/tests/src/Context/JoinupLayoutParagraphsContext.php @@ -0,0 +1,524 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\joinup\Context; + +use Behat\Gherkin\Node\TableNode; +use Behat\Mink\Element\TraversableElement; +use Behat\Mink\Exception\ElementNotFoundException; +use Drupal\DrupalExtension\Context\RawDrupalContext; +use Drupal\joinup\Traits\JavascriptTrait; +use PHPUnit\Framework\Assert; +use function PHPUnit\Framework\assertSame; +use function PHPUnit\Framework\assertTrue; + +/** + * Behat step definitions for layout paragraphs. + */ +class JoinupLayoutParagraphsContext extends RawDrupalContext { + + use JavascriptTrait; + + /** + * Field mapping. It is the selector without the 'field--name-' prefix. + * + * @var array + */ + const FIELD_MAP = [ + 'Custom page body' => 'field-paragraphs-body', + 'Topic meta entity body' => 'topics-paragraph', + ]; + + /** + * A mapping of layouts to their machine names. + * + * @var array + */ + const LAYOUTS_MAP = [ + 'one column' => 'layout_onecol', + 'two columns' => 'layout_twocol_section', + 'three columns' => 'layout_threecol_section', + 'four columns' => 'layout_fourcol_section', + ]; + + /** + * A mapping of layout properties to their machine names. + * + * @var array + */ + const LAYOUT_PROPERTIES_MAP = [ + 'layout' => 'layout', + 'column widths' => 'select', + 'administration label' => 'textfield', + 'background theme' => 'select', + 'extra classes' => 'textfield', + ]; + + /** + * Reusable xpath pattern. + * + * @var string + */ + const PARAGRAPH_ITEM_XPATH = "//div[contains(concat(' ', @class, ' '), ' layout ')]//div[contains(concat(' ', @class, ' '), ' paragraph ')]"; + + /** + * Adds a layout paragraph in the last position in the given field. + * + * @param string $field_alias + * The field alias as defined in + * \Drupal\joinup\Context\JoinupLayoutParagraphsContext::FIELD_MAP. + * @param \Behat\Gherkin\Node\TableNode $layout_properties + * The layout properties. An example is below. + * @codingStandardsIgnoreStart + * | layout | two columns | + * | columns | 50%-50% | + * | behavior settings | background theme: dark - extra classes: test-class | + * @codingStandardsIgnoreEnd + * + * @When I add a layout paragraph in the :field_alias form field with the following properties: + */ + public function addLayoutParagraphInFormFieldOnTopLevel(string $field_alias, TableNode $layout_properties): void { + $this->assertJavaScriptEnabledBrowser(); + + $field = $this->getParagraphsElement($field_alias); + $links = $field->findAll('named', ['link', 'Add layout']); + end($links)->click(); + + // Get the 'layout' property from the table. + $layout = $layout_properties->getRowsHash()['layout']; + assertTrue(isset(self::LAYOUTS_MAP[$layout]), "The layout '$layout' is not defined in the context."); + $layout = self::LAYOUTS_MAP[$layout]; + + // Select the layout. + $xpath = "//div[contains(concat(' ', @class, ' '), ' layout-select__item ')]/input[@value='$layout']"; + $this->getSession()->wait(5000, "document.querySelector('div.layout-select__item input[value=\"$layout\"]') !== null"); + $this->getSession()->getPage()->find('xpath', $xpath)->getParent()->click(); + // Wait until AJAX is done. + $this->getSession()->wait(5000, "jQuery.active === 0"); + + // Expand both the "Layout options" and "Settings" fieldsets. The classes + // are details[id="layout-paragraphs-layout-options"] and + // details[data-drupal-selector="edit-behavior-plugins"]. They both have a + // summary of role="button" to click. + $xpath = '//details[@data-drupal-selector="layout-paragraphs-layout-options"]//summary[@role="button"]'; + $this->getSession()->getPage()->find('xpath', $xpath)->click(); + $xpath = '//details[@data-drupal-selector="edit-behavior-plugins"]//summary[@role="button"]'; + $this->getSession()->getPage()->find('xpath', $xpath)->click(); + + // Fill in the available fields. + foreach ($layout_properties->getRowsHash() as $property => $value) { + if ($property == 'layout') { + continue; + } + + assertTrue(isset(self::LAYOUT_PROPERTIES_MAP[strtolower($property)]), "The layout property '$property' is not defined in the context."); + $type = self::LAYOUT_PROPERTIES_MAP[strtolower($property)]; + if ($type == 'select') { + $this->getSession()->getPage()->selectFieldOption($property, $value); + } + else { + $this->getSession()->getPage()->fillField($property, $value); + } + } + + // Finally, click the "Save" button to add the paragraph. + $this->getSession()->getPage()->find('css', '.ui-dialog-buttonpane')->pressButton('Save'); + // Wait until the button pane is gone. + $this->getSession()->wait(5000, "document.querySelector('.ui-dialog-buttonpane') === null"); + } + + /** + * Adds a paragraph in the last position in the given field or layout. + * + * @param string $paragraph_type + * The label of the paragraph type. + * @param string $field_alias + * The field alias as defined in + * \Drupal\joinup\Context\JoinupLayoutParagraphsContext::FIELD_MAP. + * @param \Behat\Gherkin\Node\TableNode $layout_properties + * The layout properties. Optionally include a layout position and region. + * If a layout position is not provided, the last position is used and the + * paragraph will be added without a parent layout paragraph. An example is + * below. In the field value, you have to use the format "type: <field type> + * - value: <field value>", where <field type> is the field type e.g. text, + * select, etc. and <field value> is the value of the field. + * @codingStandardsIgnoreStart + * | layout position | 2 | + * | region | left | + * | Some text field | type: text - value: This is the field value | + * @codingStandardsIgnoreEnd + * + * @When I add a :paragraph_type paragraph in the :field_alias form field: + */ + public function addParagraphInFormField(string $paragraph_type, string $field_alias, TableNode $layout_properties): void { + $this->assertJavaScriptEnabledBrowser(); + // Get the layout position and the region, if available. + $layout_position = NULL; + $region = NULL; + $paragraph_fields = []; + foreach ($layout_properties->getRowsHash() as $property => $value) { + if ($property == 'layout position') { + $layout_position = $value; + } + elseif ($property == 'region') { + $region = $value; + } + else { + $paragraph_fields[$property] = $value; + } + } + + $this->getChooseComponentLink($field_alias, $layout_position, $region)->click(); + + // An overlay has opened, and we need to select "Layout". + $xpath = '//div[contains(concat(" ", @class, " "), " lpb-component-list__group--content ")]'; + $this->getSession()->wait(5000, "document.querySelector('div.lpb-component-list__group--content') !== null"); + $layouts_container = $this->getSession()->getPage()->find('xpath', $xpath); + $layouts_container->clickLink($paragraph_type); + $this->getSession()->wait(5000, "jQuery.active === 0"); + + foreach ($paragraph_fields as $property => $value) { + // Split the field value into the field type and the field value. + $field_type = NULL; + $field_value = NULL; + preg_match('/type: ([a-z0-9_]+) - value: (.*)/', $value, $matches); + if (isset($matches[1])) { + $field_type = $matches[1]; + } + if (isset($matches[2])) { + $field_value = $matches[2]; + $field_value = str_replace('\n', "\n", $field_value); + } + + if ($field_type === 'select') { + // Wait for the select field to load. + $this->getSession()->getPage()->selectFieldOption($property, $field_value); + } + elseif ($field_type === 'ckeditor') { + // Wait for the CKEditor to load. + $this->getSession()->wait(5000, "document.querySelector('.lpb-dialog .cke_wysiwyg_frame') !== null"); + $this->getSession()->executeScript("document.querySelector(\".lpb-dialog .cke_wysiwyg_frame\").contentWindow.document.body.innerHTML = '{$field_value}';"); + } + else { + $this->getSession()->getPage()->fillField($property, $field_value); + } + } + + // Finally, click the "Save" button to add the paragraph. + $this->getSession()->getPage()->find('css', '.ui-dialog-buttonpane')->pressButton('Save'); + // Wait until the button pane is gone. + $this->getSession()->wait(5000, "document.querySelector('.ui-dialog-buttonpane') === null"); + } + + /** + * Performs an action on a layout paragraph in the given field. + * + * @param string $action + * The action to perform. Available actions are 'delete', 'edit', 'move up', + * 'move down', 'duplicate'. + * @param string $field_alias + * The field alias as defined in + * \Drupal\joinup\Context\JoinupLayoutParagraphsContext::FIELD_MAP. + * @param string $position + * The position of the layout paragraph to remove. + * + * @When I :action from the :field_alias form field the layout paragraph in position :position + */ + public function actionOnTopLevelLayoutParagraph(string $action, string $field_alias, string $position): void { + $this->assertJavaScriptEnabledBrowser(); + // The ".is-layout" class is the difference between the actions for layouts + // and the actions for paragraphs. + $link = $this->getFormFieldLayoutParagraphs($field_alias)[$position - 1]->find('css', '.lpb-controls.is-layout'); + + $this->performAction($link, $action); + } + + /** + * Performs an action on the child paragraph in the given layout. + * + * @param string $action + * The action to perform. + * @param string $fieldAlias + * The field alias as defined in + * \Drupal\joinup\Context\JoinupLayoutParagraphsContext::FIELD_MAP. + * @param string $pPosition + * The position of the child paragraph. + * @param string $lPosition + * The position of the layout paragraph. + * + * @When I :action from the :fieldAlias field the child :pPosition paragraph of :lPosition layout + */ + public function actionOnChildLayoutParagraph(string $action, string $fieldAlias, string $pPosition, string $lPosition): void { + $this->assertJavaScriptEnabledBrowser(); + $layoutParagraph = $this->getFormFieldLayoutParagraphs($fieldAlias)[$lPosition - 1]; + $link = $this->getAllSubParagraphsForLayout($layoutParagraph)[$pPosition - 1]->find('css', '.lpb-controls'); + + $this->performAction($link, $action); + } + + /** + * Perform an action on link. + * + * @param \Behat\Mink\Element\TraversableElement $link + * Link element. + * @param string $action + * Action name. + */ + protected function performAction(TraversableElement $link, string $action): void { + $actions = ['delete', 'edit', 'move up', 'move down', 'duplicate']; + assertTrue(in_array($action, $actions), "The action '$action' is not defined in the context. Available actions are ", implode(', ', $actions)); + + $this->scrollElementIntoView($link); + $link->clickLink(ucfirst($action)); + if ($action === 'delete') { + $this->getSession() + ->wait(5000, "document.querySelector('.lpb-dialog') !== null"); + $this->getSession() + ->getPage() + ->find('css', '.ui-dialog-buttonpane') + ->pressButton('Delete'); + $this->getSession() + ->wait(5000, "document.querySelector('.lpb-dialog') === null"); + } + + if (in_array($action, ['move up', 'move down'])) { + // Move buttons initiate a specific animation that both move the paragraph + // and reposition the screen. We need to wait for the animation to be + // done. 2 seconds is a bit long, but it's the only way to be sure. + $this->getSession()->wait(2000); + } + + // Wait until AJAX is done. + $this->getSession()->wait(5000, "jQuery.active === 0"); + } + + /** + * Asserts the list of top level layout paragraphs. + * + * @param string $field_alias + * The field alias as defined in + * \Drupal\joinup\Context\JoinupLayoutParagraphsContext::FIELD_MAP. + * @param \Behat\Gherkin\Node\TableNode $layout_list + * The table of layout paragraphs. An example is below. + * + * @Given the :field_alias form field should have the following layout paragraphs: + */ + public function theFormFieldShouldHaveTheFollowingLayoutParagraphs(string $field_alias, TableNode $layout_list): void { + $layout_paragraphs = $this->getFormFieldLayoutParagraphs($field_alias); + $actual = []; + /** @var \Behat\Mink\Element\NodeElement $layout_paragraph */ + foreach ($layout_paragraphs as $layout_paragraph) { + $actual[] = $layout_paragraph->getAttribute('data-layout'); + } + $expected = array_map(function (string $layout_alias): string { + assertTrue(isset(self::LAYOUTS_MAP[$layout_alias]), "The layout '$layout_alias' is not defined in the context."); + return self::LAYOUTS_MAP[$layout_alias]; + }, $layout_list->getColumn(0)); + + assertSame($expected, $actual); + } + + /** + * Asserts the number of paragraphs in the page. + * + * @param int $expected_rows + * (optional) The expected number of paragraphs. Defaults to 0. + * + * @Then there should be :expected_rows paragraph(s) in the page + * @Then the page should contain no paragraphs + */ + public function assertParagraphsCountInPage(int $expected_rows = 0): void { + Assert::assertCount($expected_rows, $this->getSession()->getPage()->findAll('xpath', static::PARAGRAPH_ITEM_XPATH)); + } + + /** + * Asserts the exact text content of the paragraphs in the page. + * + * @param \Behat\Gherkin\Node\TableNode $table + * The table of expected paragraph texts. + * + * @Given I should see the following paragraphs in the given order: + */ + public function assertExactParagraphsContentInPage(TableNode $table): void { + $expected = $table->getColumn(0); + $paragraphs = $this->getSession()->getPage()->findAll('xpath', static::PARAGRAPH_ITEM_XPATH); + $actual = array_map(function (TraversableElement $paragraph): string { + return $paragraph->getText(); + }, $paragraphs); + Assert::assertSame($expected, $actual); + } + + /** + * Asserts the structure of a layout paragraph. + * + * @param string $position + * The position of the layout paragraph to check. + * @param string $field_alias + * The field alias as defined in + * \Drupal\joinup\Context\JoinupLayoutParagraphsContext::FIELD_MAP. + * @param \Behat\Gherkin\Node\TableNode $structure + * The table of layout paragraphs. An example is below. + * @codingStandardsIgnoreStart + * | first | heading | + * | first | text | + * | second | heading | + * @codingStandardsIgnoreEnd + * The first column is the region of the layout paragraph. The second column + * is the machine name of the paragraph. + * + * @When the layout in position :position from the :field_alias form field should have the following structure: + */ + public function assertLayoutParagraphStructure(string $position, string $field_alias, TableNode $structure): void { + $layout_paragraphs = $this->getFormFieldLayoutParagraphs($field_alias); + $layout_paragraph = $layout_paragraphs[$position - 1]; + $actual = []; + /** @var \Behat\Mink\Element\NodeElement $layout_paragraph */ + foreach ($layout_paragraph->findAll('css', '.layout__region') as $region) { + $data_region = $region->getAttribute('data-region'); + $actual[$data_region] = []; + foreach ($region->findAll('css', 'div.paragraph') as $paragraph) { + $actual[$data_region][] = $paragraph->getAttribute('data-type'); + } + } + + $expected = []; + foreach ($structure->getRows() as $row) { + $expected[$row[0]][] = $row[1]; + } + + assertSame($expected, $actual); + } + + /** + * Returns the paragraph field element item. + * + * @param string $field + * The field designator. + * @param int $position + * Paragraph field position. + * + * @return \Behat\Mink\Element\TraversableElement + * The field element. + * + * @throws \Behat\Mink\Exception\ElementNotFoundException + */ + protected function getParagraphsElementItem(string $field, int $position): TraversableElement { + assert(isset(self::FIELD_MAP[$field])); + + $element = $this->getParagraphsElement($field); + $xpath = "(//div[contains(concat(' ', @class, ' '), ' paragraph ')])[$position]"; + + $paragraph = $element->find('xpath', $xpath); + if (empty($paragraph)) { + throw new \Exception("The $field field does not have an item at row $position."); + } + + return $paragraph; + } + + /** + * Returns the paragraph field element. + * + * @param string $field + * The field designator. + * + * @return \Behat\Mink\Element\TraversableElement + * The field element. + * + * @throws \Behat\Mink\Exception\ElementNotFoundException + * When content listing paragraph is not found in the page. + */ + protected function getParagraphsElement(string $field): TraversableElement { + assert(isset(self::FIELD_MAP[$field])); + $mapping = self::FIELD_MAP[$field]; + + $xpath = "(//div[contains(concat(' ', @class, ' '), ' field--name-$mapping ')])[1]"; + $element = $this->getSession()->getPage()->find('xpath', $xpath); + if (empty($element)) { + throw new ElementNotFoundException($this->getSession() + ->getDriver(), 'paragraph field', $field); + } + + return $element; + } + + /** + * Returns a list of layout paragraphs elements. + * + * @param string $field_alias + * The field designator as defined in + * \Drupal\joinup\Context\JoinupLayoutParagraphsContext::FIELD_MAP. + * + * @return \Behat\Mink\Element\TraversableElement[] + * The layout paragraphs elements. + */ + protected function getFormFieldLayoutParagraphs(string $field_alias): array { + $field = $this->getParagraphsElement($field_alias); + $xpath = '//div[contains(concat(" ", @class, " "), " lpb-layout ") and contains(concat(" ", @class, " "), " paragraph--layout ")]'; + $elements = $field->findAll('xpath', $xpath); + return $elements ?? []; + } + + /** + * Returns a list of paragraphs elements inside provided layout. + * + * @param \Behat\Mink\Element\TraversableElement $layout + * Layout paragraph. + * + * @return \Behat\Mink\Element\TraversableElement[] + * The layout paragraphs elements. + */ + protected function getAllSubParagraphsForLayout(TraversableElement $layout): array { + $xpath = '//div[contains(concat(" ", @class, " "), " js-lpb-component ") and not (contains(concat(" ", @class, " "), " lpb-layout "))]'; + return $layout->findAll('xpath', $xpath) ?? []; + } + + /** + * Returns the add component button. + * + * @param string $field_alias + * The field designator as defined in + * \Drupal\joinup\Context\JoinupLayoutParagraphsContext::FIELD_MAP. + * @param string|null $parent_layout_position + * (optional) The position of the parent layout. Defaults to NULL, which + * means the that the button that adds a layout into root will be fetched. + * @param string|null $parent_layout_region + * (optional) The region of the parent layout. If a layout position is + * passed, then a region must be passed as well. + * + * @return \Behat\Mink\Element\TraversableElement + * The add component button. + */ + protected function getChooseComponentLink(string $field_alias, ?string $parent_layout_position = NULL, ?string $parent_layout_region = NULL): TraversableElement { + if ($parent_layout_position === NULL) { + $field = $this->getParagraphsElement($field_alias); + } + else { + $field = $this->getFormFieldLayoutParagraphs($field_alias)[$parent_layout_position - 1]; + $field = $field->find('css', '.layout__region--' . $parent_layout_region); + } + + $this->scrollElementIntoView($field); + + $links = $field->findAll('named', [ + 'link', + 'Choose component', + ]); + if (empty($links)) { + throw new \Exception('No choose component links found.'); + } + + // Filter out invisible links (that have the style 'display: none'). This is + // because, when the layout region has at least one paragraph, then the + // central button that adds to the region is still in the HTML but hidden. + // The buttons available at that point, are the ones before and after each + // paragraph. + $links = array_filter($links, function (TraversableElement $link) { + return $link->getAttribute('style') !== 'display: none;'; + }); + + return end($links); + } + +} diff --git a/tests/src/Context/JoinupParagraphsContext.php b/tests/src/Context/JoinupParagraphsContext.php index 661072a0a59416b719d521364ee938dfb350a6b8..c7d312c63e12f5e1cba6717a4d3c2fabb10a6a5c 100644 --- a/tests/src/Context/JoinupParagraphsContext.php +++ b/tests/src/Context/JoinupParagraphsContext.php @@ -4,15 +4,21 @@ namespace Drupal\joinup\Context; +use Behat\Gherkin\Node\PyStringNode; use Behat\Gherkin\Node\TableNode; use Behat\Mink\Driver\Selenium2Driver; use Behat\Mink\Element\TraversableElement; use Behat\Mink\Exception\ElementNotFoundException; +use Drupal\Core\Entity\ContentEntityInterface; use Drupal\DrupalExtension\Context\RawDrupalContext; use Drupal\joinup\Exception\WysiwygEditorNotFoundException; +use Drupal\joinup\Traits\EntityTrait; use Drupal\joinup\Traits\JavascriptTrait; +use Drupal\joinup\Traits\TestingEntitiesTrait; use Drupal\joinup\Traits\UtilityTrait; use Drupal\joinup\Traits\WysiwygTrait; +use Drupal\paragraphs\Entity\Paragraph; +use Drupal\paragraphs\ParagraphInterface; use PHPUnit\Framework\Assert; /** @@ -23,6 +29,8 @@ class JoinupParagraphsContext extends RawDrupalContext { use JavascriptTrait; use WysiwygTrait; use UtilityTrait; + use EntityTrait; + use TestingEntitiesTrait; /** * A copycat of Behat's internal region mapping. @@ -37,15 +45,9 @@ class JoinupParagraphsContext extends RawDrupalContext { const FIELD_MAP = [ 'Custom page body' => 'field-paragraphs-body', 'Custom content listing' => 'content-listing', + 'Accordion item' => 'field-accordion-item', ]; - /** - * Reusable xpath pattern. - * - * @var string - */ - const PARAGRAPH_ITEM_XPATH = "//div[contains(concat(' ', @class, ' '), ' paragraph ')]"; - /** * Enters the given text in the given WYSIWYG editor. * @@ -227,36 +229,6 @@ public function assertRowsInParagraphsField(int $expected_rows, string $field): Assert::assertCount($expected_rows, $field->findAll('xpath', "//tr[contains(concat(' ', @class, ' '), 'draggable')]")); } - /** - * Asserts the number of paragraphs in the page. - * - * @param int $expected_rows - * (optional) The expected number of paragraphs. Defaults to 0. - * - * @Then there should be :expected_rows paragraph(s) in the page - * @Then the page should contain no paragraphs - */ - public function assertParagraphsCountInPage(int $expected_rows = 0): void { - Assert::assertCount($expected_rows, $this->getSession()->getPage()->findAll('xpath', static::PARAGRAPH_ITEM_XPATH)); - } - - /** - * Asserts the exact text content of the paragraphs in the page. - * - * @param \Behat\Gherkin\Node\TableNode $table - * The table of expected paragraph texts. - * - * @Given I should see the following paragraphs in the given order: - */ - public function assertExactParagraphsContentInPage(TableNode $table): void { - $expected = $table->getColumn(0); - $paragraphs = $this->getSession()->getPage()->findAll('xpath', static::PARAGRAPH_ITEM_XPATH); - $actual = array_map(function (TraversableElement $paragraph): string { - return $paragraph->getText(); - }, $paragraphs); - Assert::assertSame($expected, $actual); - } - /** * Asserts the value of a filter from a given content listing paragraph. * @@ -427,4 +399,182 @@ public function iShouldResultsInTheCarousel(string $heading): void { } } + /** + * Appends paragraph to entity. + * + * @param string $paragraph_type + * Paragraph type. + * @param string $parent_field + * Parent field name. + * @param string $parent_type_id + * Parent type id. + * @param string $parent_name + * Parent name. + * @param \Behat\Gherkin\Node\TableNode $table + * Paragraph's fields. + * + * @Given I append :paragraph_type to :parent_field field in :parent_type_id entity with following :parent_name title: + * + * @throws \Drupal\Core\Entity\EntityStorageException + */ + public function iAppendParagraphToFieldInEntityWithFollowingTitle( + string $paragraph_type, + string $parent_field, + string $parent_type_id, + string $parent_name, + TableNode $table + ): void { + $entity = $this->getEntityByLabel($parent_type_id, $parent_name); + + $values = [ + 'type' => $paragraph_type, + ]; + foreach ($table->getRowsHash() as $field => $value) { + $values = array_replace_recursive($values, $this->transformParagraphField($field, $value)); + } + + $paragraph = Paragraph::create($values); + $paragraph->save(); + + $this->entities['paragraph'][$paragraph->id()] = $paragraph; + $this->appendParagraphToEntity($entity, $paragraph, $parent_field); + } + + /** + * Appends a poll paragraph. + * + * @param string $poll + * Poll name. + * @param string $parent_field + * Parent field name. + * @param string $parent_type_id + * Parent type id. + * @param string $parent_name + * Parent name. + * + * @Given I append poll :poll to :parent_field field in :parent_type_id entity with following :parent_name title + * + * @throws \Drupal\Core\Entity\EntityStorageException + */ + public function iAppendPollToFieldInEntityWithFollowingTitle( + string $poll, + string $parent_field, + string $parent_type_id, + string $parent_name): void { + $poll = $this->getEntityByLabel('poll', $poll); + $parentEntity = $this->getEntityByLabel($parent_type_id, $parent_name); + + $values = [ + 'type' => 'poll', + 'field_paragraphs_poll' => [$poll->id()], + ]; + $paragraph = Paragraph::create($values); + $paragraph->save(); + + $this->entities['paragraph'][$paragraph->id()] = $paragraph; + $this->appendParagraphToEntity($parentEntity, $paragraph, $parent_field); + } + + /** + * Appends a content listing paragraph. + * + * @param string $parent_field + * Parent field name. + * @param string $parent_type_id + * Parent type id. + * @param string $parent_name + * Parent name. + * @param \Behat\Gherkin\Node\PyStringNode $value + * Serialized value. + * + * @Given I append content listing to :parent_field field in :parent_type_id entity with following :parent_name title with: + * + * @throws \Drupal\Core\Entity\EntityStorageException + */ + public function iAppendContentListingToFieldInEntityWithFollowingTitleWith( + string $parent_field, + string $parent_type_id, + string $parent_name, + PyStringNode $value): void { + $entity = $this->getEntityByLabel($parent_type_id, $parent_name); + + $values = [ + 'type' => 'content_listing', + 'content_listing' => [ + 'value' => unserialize($value->getRaw(), ['allowed_classes' => FALSE]), + ], + ]; + $paragraph = Paragraph::create($values); + $paragraph->save(); + + $this->entities['paragraph'][$paragraph->id()] = $paragraph; + $this->appendParagraphToEntity($entity, $paragraph, $parent_field); + } + + /** + * Helper method to transform table data into the correct field array. + * + * @param string $field + * Field name. + * @param string $value + * Field value. + * + * @return array + * Transformed data. + */ + protected function transformParagraphField(string $field, string $value): array { + $data = $this->transformParagraphValue($field, $value); + + $keys = explode(':', $field); + foreach (array_reverse($keys) as $key) { + $data = [$key => $data]; + } + + return $data; + } + + /** + * Helper method to transform table field values. + * + * @param string $field + * Field name. + * @param string $value + * Field value. + * + * @return array + * Transformed value. + */ + protected function transformParagraphValue(string $field, string $value): mixed { + return match ($field) { + 'content_listing:value' => unserialize($value, ['allowed_classes' => FALSE]), + default => $value, + }; + } + + /** + * Append paragraph to entity. + * + * @param \Drupal\Core\Entity\ContentEntityInterface $entity + * Content entity. + * @param \Drupal\paragraphs\ParagraphInterface $paragraph + * Paragraph entity. + * @param string $field_name + * Field name. + * + * @throws \Drupal\Core\Entity\EntityStorageException + */ + public function appendParagraphToEntity(ContentEntityInterface $entity, ParagraphInterface $paragraph, string $field_name): void { + if (!$entity->hasField($field_name)) { + throw new \Exception(sprintf("Field not found: %s", $field_name)); + } + + $entity->get($field_name)->appendItem( + [ + 'target_id' => $paragraph->id(), + 'target_revision_id' => $paragraph->getRevisionId(), + ] + ); + $entity->save(); + } + } diff --git a/tests/src/Context/JoinupSearchContext.php b/tests/src/Context/JoinupSearchContext.php index 812f93586b595430e2eafd2486ff1f73c41c9429..44c3d82a2a227d0c8172130a332ba507fb86e1b4 100644 --- a/tests/src/Context/JoinupSearchContext.php +++ b/tests/src/Context/JoinupSearchContext.php @@ -30,6 +30,11 @@ class JoinupSearchContext extends RawDrupalContext { use TraversingTrait; use UtilityTrait; + /** + * Path to the search box dropdown element. + */ + protected const SEARCH_BOX_DROPDOWN = '.joinup-navbar button#search-box-dropdown.dropdown-toggle'; + /** * Navigates to the search page. * @@ -939,7 +944,7 @@ public function failSearchExposedFilterNavbar(): void { * @Then I should see search bar icon in navbar */ public function assertSearchIconNavbar(): void { - $getAllInput = $this->getSession()->getPage()->findAll('css', '.joinup-navbar button#search-box.dropdown-toggle'); + $getAllInput = $this->getSession()->getPage()->findAll('css', self::SEARCH_BOX_DROPDOWN); if (count($getAllInput) < 1) { throw new \Exception('Search bar icon not found in navbar.'); } @@ -954,7 +959,7 @@ public function assertSearchIconNavbar(): void { * @Then I should not see search bar icon in navbar */ public function failSearchIconNavbar(): void { - $getAllInput = $this->getSession()->getPage()->findAll('css', 'nav.joinup-navbar button#search-box.dropdown-toggle'); + $getAllInput = $this->getSession()->getPage()->findAll('css', self::SEARCH_BOX_DROPDOWN); if (count($getAllInput) > 0) { throw new \Exception('Search bar icon found in navbar.'); @@ -1026,26 +1031,6 @@ public function showMoreFacet(string $facet_type): void { $link->click(); } - /** - * Checks if search inputs have different ids. - * - * @throws \Exception - * Thrown when search inputs have the same id. - * - * @Then the two search inputs should have different ids - */ - public function assertDifferentIdsInSearchInputs(): void { - $navigation = $this->getRegion('Navigation bar'); - $featured = $this->getRegion('Featured'); - - $getNavbarInputId = $navigation->find('css', '.search-bar__input') - ->getAttribute('id'); - $getHeaderInputId = $featured->find('css', '.search-bar__input') - ->getAttribute('id'); - - Assert::assertNotEquals($getNavbarInputId, $getHeaderInputId, 'The two search inputs have the same id.'); - } - /** * Sets the group content listing archived option. * diff --git a/tests/src/Context/MetaEntityContext.php b/tests/src/Context/MetaEntityContext.php index 7f55e10d45e8ae5e78df9c36aafcdaec4d015f2e..4c45990710c361eab95881d7a3f5c1ab478fad3b 100644 --- a/tests/src/Context/MetaEntityContext.php +++ b/tests/src/Context/MetaEntityContext.php @@ -8,6 +8,7 @@ use Drupal\DrupalExtension\Context\RawDrupalContext; use Drupal\joinup\Traits\EntityTrait; use Drupal\meta_entity\Entity\MetaEntityInterface; +use function PHPUnit\Framework\assertArrayHasKey; /** * Behat step definitions for testing meta entities. @@ -39,6 +40,8 @@ public function theFollowingTopicsAreEnabledInTheHomepage(TableNode $table): voi /** * Navigates to the canonical page display of a meta entity. * + * @param string $type + * The type of the path to visit. One of 'canonical' or 'edit'. * @param string $bundle * The bundle of the meta entity. * @param string $related_entity @@ -46,9 +49,16 @@ public function theFollowingTopicsAreEnabledInTheHomepage(TableNode $table): voi * @param string $related_entity_type * The type of the related entity. * - * @When I go to the :bundle meta entity of the :related_entity :related_bundle :related_entity_type + * @When I go to the :type form of the :bundle meta entity of the :related_entity :related_bundle :related_entity_type + * @When I go to the :type path of the :bundle meta entity of the :related_entity :related_bundle :related_entity_type */ - public function visitMetaEntityCanonicalPath(string $bundle, string $related_entity, string $related_entity_type): void { + public function visitMetaEntityCanonicalPath(string $type, string $bundle, string $related_entity, string $related_entity_type): void { + $path_types = [ + 'canonical' => 'canonical', + 'edit' => 'edit-form', + ]; + assertArrayHasKey($type, $path_types, "The path type '$type' is not supported. One of 'canonical' or 'edit' is expected."); + $entity_type_mapping = [ 'content' => 'node', 'RDF entity' => 'rdf_entity', @@ -59,7 +69,7 @@ public function visitMetaEntityCanonicalPath(string $bundle, string $related_ent } $meta_entity = $this->getMetaEntityForEntity($entity_type_mapping[$related_entity_type], $related_entity, $bundle); - $this->visitPath($meta_entity->toUrl()->toString()); + $this->visitPath($meta_entity->toUrl($path_types[$type])->toString()); } /** diff --git a/tests/src/Context/MinkContext.php b/tests/src/Context/MinkContext.php index ac41608965dacd1a2ab97b4e74f252f1d700da5b..e75a131787b5cd67d94513994d1f7cd671b3bd73 100644 --- a/tests/src/Context/MinkContext.php +++ b/tests/src/Context/MinkContext.php @@ -192,4 +192,19 @@ public function assertRegionLinkFollow($link, $region): void { $link_obj->click(); } + /** + * Change the option of a select in the specified region. + * + * @Given I select :value from :field in the :region( region) + * + * @throws \Exception + * If region cannot be found. + */ + public function selectRegionFillField(string $field, string $value, string $region): void { + $select = $this->fixStepArgument($field); + $option = $this->fixStepArgument($value); + $regionObj = $this->getRegion($region); + $regionObj->selectFieldOption($select, $option); + } + } diff --git a/tests/src/Context/PollContext.php b/tests/src/Context/PollContext.php new file mode 100644 index 0000000000000000000000000000000000000000..c04d5689b2bcb8de3375d9812829a0d9b70e4639 --- /dev/null +++ b/tests/src/Context/PollContext.php @@ -0,0 +1,85 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\joinup\Context; + +use Behat\Gherkin\Node\TableNode; +use Drupal\DrupalExtension\Context\RawDrupalContext; +use Drupal\joinup\Traits\TestingEntitiesTrait; +use Drupal\joinup\Traits\UtilityTrait; +use Drupal\poll\PollChoiceInterface; + +/** + * Behat step definitions for testing polls. + */ +class PollContext extends RawDrupalContext { + + use UtilityTrait; + use TestingEntitiesTrait; + + /** + * Creates a set of polls. + * + * @param \Behat\Gherkin\Node\TableNode $table + * The poll data. + * + * @Given the following polls: + */ + public function createPolls(TableNode $table): void { + $storage = \Drupal::entityTypeManager()->getStorage('poll'); + foreach ($table->getColumnsHash() as $values) { + if (isset($values['choice'])) { + $values['choice'] = $this->convertChoices($values['choice']); + } + + /** @var \Drupal\poll\PollInterface $poll */ + $poll = $storage->create($values); + $poll->save(); + + $this->entities['poll'][$poll->id()] = $poll; + } + } + + /** + * Converts string into list of choices. + * + * @param string $choiceValues + * Choices, split choice by comma. + * + * @return array + * List of poll id choices. + */ + protected function convertChoices(string $choiceValues): array { + $pollChoiceIds = []; + + $choices = $this->explodeCommaSeparatedStepArgument($choiceValues); + foreach ($choices as $choice) { + $pollChoiceIds[] = $this->createPollChoice($choice)->id(); + } + + return $pollChoiceIds; + } + + /** + * Creates poll choice entity. + * + * @param string $choice + * Choice text. + * + * @return \Drupal\poll\PollChoiceInterface + * Poll choice entity. + */ + protected function createPollChoice(string $choice): PollChoiceInterface { + $storage = \Drupal::entityTypeManager()->getStorage('poll_choice'); + + /** @var \Drupal\poll\PollChoiceInterface $pollChoice */ + $pollChoice = $storage->create(['choice' => $choice]); + $pollChoice->save(); + + $this->entities['poll_choice'][$pollChoice->id()] = $pollChoice; + + return $pollChoice; + } + +} diff --git a/tests/src/Context/SolutionContext.php b/tests/src/Context/SolutionContext.php index 47e78b7144957e61272bd7d865e03f34c6ca05e3..2f24b2e678c7f7500c801db950f12b6cc6c8dc69 100644 --- a/tests/src/Context/SolutionContext.php +++ b/tests/src/Context/SolutionContext.php @@ -28,6 +28,7 @@ use Drupal\og\OgGroupAudienceHelperInterface; use Drupal\og\OgRoleInterface; use Drupal\rdf_entity\Entity\Rdf; +use Drupal\rdf_entity\RdfInterface; use PHPUnit\Framework\Assert; /** @@ -53,7 +54,7 @@ class SolutionContext extends RawDrupalContext { * * @var \Drupal\rdf_entity\RdfInterface[] */ - protected $rdfEntities = []; + protected array $rdfEntities = []; /** * Checks that the user is on the solutions overview page. @@ -76,7 +77,7 @@ public function assertSolutionsOverviewPage(): void { * @When I go to the add solution form of the :collection collection * @When I visit the add solution form of the :collection collection */ - public function visitAddSolutionForm($collection) { + public function visitAddSolutionForm(string $collection): void { $collection = $this->getEntityByLabel('rdf_entity', $collection); $solution_url = Url::fromRoute('solution.collection_solution.add', [ 'rdf_entity' => $collection->id(), @@ -97,7 +98,7 @@ public function visitAddSolutionForm($collection) { * * @throws \Drupal\Core\Entity\EntityMalformedException */ - public function visitSolution($solution) { + public function visitSolution(string $solution): void { /** @var \Drupal\rdf_entity\Entity\Rdf $entity */ $entity = $this->getEntityByLabel('rdf_entity', $solution); $this->visitPath($entity->toUrl()->toString()); @@ -114,7 +115,7 @@ public function visitSolution($solution) { * * @When I visit the solution overview( page) */ - public function visitSolutionOverviewPage() { + public function visitSolutionOverviewPage(): void { $this->visitPath('/solutions'); } @@ -138,7 +139,7 @@ public function visitSolutionOverviewPage() { * * @Given (the following )solutions: */ - public function givenSolutions(TableNode $solution_table) { + public function givenSolutions(TableNode $solution_table): void { $aliases = self::solutionFieldAliases(); foreach ($solution_table->getColumnsHash() as $solution) { @@ -167,7 +168,6 @@ public function givenSolutions(TableNode $solution_table) { * Table format: * | title | Sample solution | * | description | A sample solution | - * | banner | banner.png | * | logo | logo.jpg | * | moderation | no|yes | * | closed | no|yes | @@ -201,7 +201,7 @@ public function givenSolutions(TableNode $solution_table) { * * @Given (the following )solution: */ - public function givenSolution(TableNode $solution_table) { + public function givenSolution(TableNode $solution_table): void { $aliases = self::solutionFieldAliases(); $values = []; @@ -278,7 +278,7 @@ protected function ensureParentCollection(array &$values): void { * * @Given (the following ):bundle content belong to the corresponding solutions: */ - public function givenContentMemberships($bundle, TableNode $membership_table) { + public function givenContentMemberships(string $bundle, TableNode $membership_table): void { // As each given step is executed in the same request // we need to reset the mapping. foreach ($membership_table->getColumnsHash() as $values) { @@ -306,10 +306,10 @@ public function givenContentMemberships($bundle, TableNode $membership_table) { * * @Given (the user ):username should be the owner of the :solution solution */ - public function assertSolutionOwnership($username, $solution) { + public function assertSolutionOwnership(string $username, string $solution): void { $user = user_load_by_name($username); if (empty($user)) { - throw new \Exception("User {$username} could not be found."); + throw new \Exception("User $username could not be found."); } $solution = $this->getEntityByLabel('rdf_entity', $solution, 'solution'); @@ -334,17 +334,27 @@ public function assertSolutionOwnership($username, $solution) { * Thrown when a given image is not found, or when a solution is being * pinned in a non-existing group. */ - protected function createSolution(array $values) { + protected function createSolution(array $values): RdfInterface { + /** @var \Drupal\file_url\FileUrlHandler $fileHandler */ + $fileHandler = \Drupal::service('file_url.handler'); + $file_fields = [ 'field_is_documentation', - 'field_is_banner', 'field_is_logo', ]; foreach ($file_fields as $field_name) { if (!empty($values[$field_name])) { foreach ($values[$field_name] as &$filename) { - $filename = [$this->createFile($filename)->id()]; + $file = $this->createFile($filename); + if ($field_name === 'field_is_documentation') { + $filename = [ + 'target_id' => $fileHandler::fileToUrl($file), + ]; + } + else { + $filename = [$file->id()]; + } } } } @@ -386,12 +396,37 @@ protected function createSolution(array $values) { * * @When I delete the :solution solution */ - public function deleteSolution($solution) { + public function deleteSolution(string $solution): void { $solution = $this->getEntityByLabel('rdf_entity', $solution); $solution->skip_notification = TRUE; $solution->delete(); } + /** + * Deletes a solution document's files. + * + * @param string $solution + * The name of the solution. + * + * @When I delete documents from :solution solution + */ + public function deleteDocumentsFromSolution(string $solution): void { + $solution = $this->getEntityByLabel('rdf_entity', $solution); + + /** @var \Drupal\file_url\FileUrlHandler $fileHandler */ + $fileHandler = \Drupal::service('file_url.handler'); + + $values = $solution->get('field_is_documentation')->getValue(); + foreach ($values as $value) { + $file = $fileHandler::urlToFile($value['target_id']); + if (!$file || $fileHandler::isRemote($file)) { + continue; + } + + $file->delete(); + } + } + /** * Returns the release with the given name. * @@ -400,13 +435,13 @@ public function deleteSolution($solution) { * @param string $title * The release name. * - * @return \Drupal\rdf_entity\Entity\Rdf + * @return \Drupal\rdf_entity\RdfInterface * The release. * * @throws \InvalidArgumentException * Thrown when a release with the given name does not exist. */ - public static function getReleaseByName($title) { + public static function getReleaseByName(string $title): RdfInterface { $query = \Drupal::entityQuery('rdf_entity')->accessCheck(FALSE) ->condition('rid', 'solution') ->exists('field_is_is_version_of') @@ -463,7 +498,7 @@ public function assertSolutionCount(int $number): void { * * @Given (the following )solution user membership(s): */ - public function givenSolutionUserMemberships(TableNode $membership_table) { + public function givenSolutionUserMemberships(TableNode $membership_table): void { foreach ($membership_table->getColumnsHash() as $values) { $group = $this->getEntityByLabel('rdf_entity', $values['solution']); $this->givenUserMembership($group, $values); @@ -475,7 +510,7 @@ public function givenSolutionUserMemberships(TableNode $membership_table) { * * @AfterScenario */ - public function clearEntities(AfterScenarioScope $event) { + public function clearEntities(AfterScenarioScope $event): void { if (empty($this->rdfEntities)) { return; } @@ -501,7 +536,7 @@ public function clearEntities(AfterScenarioScope $event) { * @return array * Mapping. */ - protected static function solutionFieldAliases() { + protected static function solutionFieldAliases(): array { // Mapping alias - field name. return [ 'author' => 'uid', @@ -509,7 +544,6 @@ protected static function solutionFieldAliases() { 'title' => 'label', 'short ID' => 'field_short_id', 'affiliations requests' => 'field_is_affiliations_requests', - 'banner' => 'field_is_banner', 'contact information' => 'field_is_contact_information', 'content creation' => 'field_is_content_creation', 'creation date' => 'created', @@ -533,7 +567,6 @@ protected static function solutionFieldAliases() { 'source code repository' => 'field_is_source_code_repository', 'spatial coverage' => 'field_spatial_coverage', 'status' => 'field_status', - 'topic' => 'field_topic', 'translation' => 'field_is_translation', 'webdav creation' => 'field_is_webdav_creation', 'webdav url' => 'field_is_webdav_url', @@ -548,18 +581,18 @@ protected static function solutionFieldAliases() { } /** - * Converts values from user friendly to normal machine values. + * Converts values from user-friendly to normal machine values. * * @param array $fields * An array of fields keyed by field name. * - * @return mixed + * @return array * The array with the values converted. * * @throws \Exception * Throws an exception when a mapped value is not found. */ - protected function convertValueAliases(array $fields) { + protected function convertValueAliases(array $fields): array { $mapped_values = [ 'field_is_moderation' => ['no' => 0, 'yes' => 1], 'field_is_content_creation' => [ @@ -603,8 +636,7 @@ protected function convertValueAliases(array $fields) { } // Convert any entity reference field label value with the entity ID. - $fields = $this->convertEntityReferencesValues('rdf_entity', 'solution', $this->parseRdfEntityFields($fields)); - return $fields; + return $this->convertEntityReferencesValues('rdf_entity', 'solution', $this->parseRdfEntityFields($fields)); } /** @@ -613,7 +645,7 @@ protected function convertValueAliases(array $fields) { * The method also checks that these options are the only options available. * * This method will log in as each user in sequence, so take care to only use - * it when the currently logged in user can be discarded. + * it when the currently logged-in user can be discarded. * * Table format: * | solution | user | buttons | @@ -628,7 +660,7 @@ protected function convertValueAliases(array $fields) { * * @todo Maybe there is a better definition available here like 'The * following state buttons should be available for the user on the - * solution'. + * solution. * * @Then for the following solution, the corresponding user should have the corresponding (available )state buttons: */ @@ -678,9 +710,12 @@ public function verifyDeleteLinkVisibility(TableNode $check_table): void { /** * Enable a given language. * + * @param string $langcode + * Language code. + * * @Given the language :langcode is enabled */ - public function languageEnabled($langcode) { + public function languageEnabled(string $langcode): void { // Create the needed language. $language_manager = \Drupal::languageManager(); if (!$language_manager->getLanguage($langcode)) { @@ -734,7 +769,7 @@ public function theMultilingualSolution(string $title, string $collection): void * * @Then the :solution_label solution should be affiliated with the :collection_label collection */ - public function assertCollectionAffiliation($collection_label, $solution_label) { + public function assertCollectionAffiliation(string $collection_label, string $solution_label): void { $solution = $this->getEntityByLabel('rdf_entity', $solution_label, 'solution'); $ids = \Drupal::entityQuery('rdf_entity')->accessCheck(FALSE) ->condition('rid', 'collection') @@ -795,14 +830,14 @@ public function assertTileNotContainsDownloadIcon(string $heading): void { * @throws \Exception * When: * - An invalid $type was specified. - * - The entity with $target_entity_label doesn't exists. + * - The entity with $target_entity_label doesn't exist. * - A related meta entity doesn't exist. * * @Given the :type count of :target_entity_label is :count */ public function setDownloadCountForEntity(string $type, string $target_entity_label, string $count): void { if (!in_array($type, ['download', 'visit'])) { - throw new \Exception("Type should be 'download' or 'visit' but '{$type}' was given."); + throw new \Exception("Type should be 'download' or 'visit' but '$type' was given."); } $target_entity_type_id = $type === 'visit' ? 'node' : 'rdf_entity'; @@ -813,7 +848,7 @@ public function setDownloadCountForEntity(string $type, string $target_entity_la /** @var \Drupal\meta_entity\Entity\MetaEntityInterface $meta_entity */ $meta_entity = $target_entity->{$field_name}->entity; if (!$meta_entity) { - throw new \Exception("The '{$target_entity_label}' doesn't have a related meta entity."); + throw new \Exception("The '$target_entity_label' doesn't have a related meta entity."); } $meta_entity->set('count', (int) $count)->save(); diff --git a/tests/src/Traits/TraversingTrait.php b/tests/src/Traits/TraversingTrait.php index 9bf5e69901cbf67f7aeb9b93c29c0466e021e317..2ed0812e37bf96ddebc080b07d6cab97dea05811 100644 --- a/tests/src/Traits/TraversingTrait.php +++ b/tests/src/Traits/TraversingTrait.php @@ -689,7 +689,7 @@ public function assertCurrentUrl(string $expected_url): void { * The array representation of the query string. */ protected function normalizeQueryString(string $url): array { - $query_string = utf8_decode((string) parse_url(urldecode($url), PHP_URL_QUERY)); + $query_string = mb_convert_encoding((string) parse_url(urldecode($url), PHP_URL_QUERY), 'ISO-8859-1', 'UTF-8'); parse_str($query_string, $query_array); return $query_array; } diff --git a/web/.ht.router.php b/web/.ht.router.php index 2c8a6f6ac35821ab3c09c17bfdbf31f3c7613b9e..b5884ef4a9d0fce4ea29e06c4e8e057af68bb230 100644 --- a/web/.ht.router.php +++ b/web/.ht.router.php @@ -39,7 +39,7 @@ // Work around the PHP bug. $path = $url['path']; $script = 'index.php'; -if (strpos($path, '.php') !== FALSE) { +if (str_contains($path, '.php')) { // Work backwards through the path to check if a script exists. Otherwise // fallback to index.php. do { diff --git a/web/.htaccess b/web/.htaccess index 0e0618a54feca3be10facfcf94ed70755b775088..4031da475cfb1c94f070ff81037f8bdcd1dd4c00 100644 --- a/web/.htaccess +++ b/web/.htaccess @@ -35,8 +35,8 @@ AddEncoding gzip svgz # Enable expirations. ExpiresActive On - # Cache all files and redirects for 2 weeks after access (A). - ExpiresDefault A1209600 + # Cache all files for 1 year after access. + ExpiresDefault "access plus 1 year" <FilesMatch \.php$> # Do not allow PHP scripts to be cached unless they explicitly send cache @@ -173,7 +173,13 @@ AddEncoding gzip svgz # Various header fixes. <IfModule mod_headers.c> - # Disable content sniffing, since it's an attack vector. + # Disable content sniffing for all responses, since it's an attack vector. + # This header is also set in FinishResponseSubscriber, which depending on + # Apache configuration might get placed in the 'onsuccess' table. To prevent + # header duplication, unset that one prior to setting in the 'always' table. + # See "To circumvent this limitation..." in + # https://httpd.apache.org/docs/current/mod/mod_headers.html. + Header onsuccess unset X-Content-Type-Options Header always set X-Content-Type-Options nosniff # Disable Proxy header, since it's an attack vector. RequestHeader unset Proxy diff --git a/web/autoload.php b/web/autoload.php index 4722f6c9e063c14ee68340a6dc0680c68b93794f..2c470f3395949e35c17b8ddd80bb9078e8c676bb 100644 --- a/web/autoload.php +++ b/web/autoload.php @@ -4,8 +4,7 @@ * @file * Includes the autoloader created by Composer. * - * This file was generated by drupal-composer/drupal-scaffold. - * https://github.com/drupal-composer/drupal-scaffold + * This file was generated by drupal-scaffold. * * @see composer.json * @see index.php diff --git a/web/modules/custom/acceptance/src/Form/AcceptanceTasksForm.php b/web/modules/custom/acceptance/src/Form/AcceptanceTasksForm.php index c5d04705ecb933f66e92e798af4ca82ab4189c01..5f84ea7f1c83df501873264af4634242f5327df4 100644 --- a/web/modules/custom/acceptance/src/Form/AcceptanceTasksForm.php +++ b/web/modules/custom/acceptance/src/Form/AcceptanceTasksForm.php @@ -10,6 +10,7 @@ use Drupal\Core\Queue\QueueWorkerManagerInterface; use Drupal\Core\Queue\RequeueException; use Drupal\Core\Queue\SuspendQueueException; +use Drupal\Core\Utility\Error; use Drupal\message_digest\Traits\MessageDigestTrait; use Drupal\swiftmailer\Commands\SwiftMailerCommands; use Symfony\Component\DependencyInjection\ContainerInterface; @@ -154,14 +155,14 @@ protected function processQueue(): bool { catch (SuspendQueueException $e) { // The worker indicates there is a problem with the whole queue. Exit. $queue->releaseItem($item); - watchdog_exception('message_digest', $e); + Error::logException($this->logger('message_digest'), $e); $this->messenger()->addError($error_status_message); return FALSE; } catch (\Exception $e) { // In case of any other kind of exception, log it and leave the item // in the queue to be processed again later. - watchdog_exception('message_digest', $e); + Error::logException($this->logger('message_digest'), $e); $this->messenger()->addError($error_status_message); return FALSE; } diff --git a/web/modules/custom/custom_page/custom_page.info.yml b/web/modules/custom/custom_page/custom_page.info.yml index 65453e14a12a1b846657c4728d4427fa4add82ab..9b08f3a64cf289b5cbf4c59d78cd2163ac1dbf5a 100644 --- a/web/modules/custom/custom_page/custom_page.info.yml +++ b/web/modules/custom/custom_page/custom_page.info.yml @@ -12,6 +12,7 @@ dependencies: - 'joinup:joinup_group' - 'joinup:joinup_validation' - 'joinup:search_api_field' + - 'joinup:topic' - 'og:og' - 'search_api:search_api' - 'smart_trim:smart_trim' diff --git a/web/modules/custom/custom_page/custom_page.module b/web/modules/custom/custom_page/custom_page.module index 95963557c212ad49850729f05cbeb6e18eb2bbb1..cc5c8c70eb9628f3015a3c94e459e92d59d74218 100644 --- a/web/modules/custom/custom_page/custom_page.module +++ b/web/modules/custom/custom_page/custom_page.module @@ -65,11 +65,13 @@ function custom_page_entity_bundle_field_info_alter(&$fields, EntityTypeInterfac * - Reindexes the parent collection/solution so that they are searchable using * the content of the new custom page. */ -function custom_page_node_insert(EntityInterface $entity) { - if ($entity instanceof CustomPageInterface) { - \Drupal::service('custom_page.og_menu_links_manager')->addLink($entity); +function custom_page_node_insert(EntityInterface $entity): void { + if (!$entity instanceof CustomPageInterface) { + return; } + \Drupal::service('custom_page.og_menu_links_manager')->addLink($entity); + // The content of custom pages is included in the search index of their // collections and solutions, so that the parent group can be found when // searching for keywords contained in their custom pages. Make sure to diff --git a/web/modules/custom/custom_page/src/Entity/CustomPage.php b/web/modules/custom/custom_page/src/Entity/CustomPage.php index ca45b77810bce31a6b8c652b5533dcd233be19ef..23ad8b92eff64bedac0250b82f2d80d72f4bb2f9 100644 --- a/web/modules/custom/custom_page/src/Entity/CustomPage.php +++ b/web/modules/custom/custom_page/src/Entity/CustomPage.php @@ -12,6 +12,7 @@ use Drupal\joinup_workflow\ArchivableEntityTrait; use Drupal\joinup_workflow\EntityWorkflowStateTrait; use Drupal\node\Entity\Node; +use Drupal\topic\Entity\TopicReferencingEntityTrait; /** * Entity class for custom page node entities. @@ -25,6 +26,7 @@ class CustomPage extends Node implements CustomPageInterface { use EntityWorkflowStateTrait; use LogoTrait; use NodeCollectionContentTrait; + use TopicReferencingEntityTrait; /** * {@inheritdoc} diff --git a/web/modules/custom/custom_page/src/Entity/CustomPageInterface.php b/web/modules/custom/custom_page/src/Entity/CustomPageInterface.php index 8aeceef073d94ca1beb1ebe4ec863818904202f9..b9664268f15a222ecc3c130dee8b49aaffb0854c 100644 --- a/web/modules/custom/custom_page/src/Entity/CustomPageInterface.php +++ b/web/modules/custom/custom_page/src/Entity/CustomPageInterface.php @@ -12,11 +12,12 @@ use Drupal\joinup_workflow\ArchivableEntityInterface; use Drupal\joinup_workflow\EntityWorkflowStateInterface; use Drupal\node\NodeInterface; +use Drupal\topic\Entity\TopicReferencingEntityInterface; /** * Interface for content page node entities. */ -interface CustomPageInterface extends NodeInterface, GroupContentInterface, CollectionContentInterface, EntityPublicationTimeInterface, LogoInterface, DescriptionInterface, EntityWorkflowStateInterface, ArchivableEntityInterface { +interface CustomPageInterface extends NodeInterface, GroupContentInterface, CollectionContentInterface, EntityPublicationTimeInterface, LogoInterface, DescriptionInterface, EntityWorkflowStateInterface, ArchivableEntityInterface, TopicReferencingEntityInterface { /** * Checks if this custom page is set as a landing page of the group. diff --git a/web/modules/custom/joinup_communities/interoperable_europe/interoperable_europe.module b/web/modules/custom/joinup_communities/interoperable_europe/interoperable_europe.module index f681abeb18fde513cea907a3a161426e875588b0..908713fd411c48e7174e8b638eff1b0cf56cd7d9 100644 --- a/web/modules/custom/joinup_communities/interoperable_europe/interoperable_europe.module +++ b/web/modules/custom/joinup_communities/interoperable_europe/interoperable_europe.module @@ -7,10 +7,7 @@ declare(strict_types = 1); -use Drupal\Core\Access\AccessResult; -use Drupal\Core\Access\AccessResultInterface; use Drupal\Core\Form\FormStateInterface; -use Drupal\Core\Session\AccountInterface; use Drupal\interoperable_europe\InteroperableEuropeCollectionInterface; use Drupal\joinup_group\Form\JoinGroupFormInterface; @@ -34,23 +31,3 @@ function interoperable_europe_form_join_group_form_alter(&$form, FormStateInterf } } } - -/** - * Implements hook_ENTITY_TYPE_create_access(). - */ -function interoperable_europe_paragraph_create_access(AccountInterface $account, array $context, string $entity_bundle): AccessResultInterface { - if ($entity_bundle !== 'row') { - return AccessResult::neutral(); - } - - // Only allow rows for interoperable europe for now. - $group = \Drupal::getContainer()->get('og.context')->getGroup(); - // Only allow to add rows for the Interoperable Europe group. Allow though, - // to create the paragraph when the context does not exist, ie. outside of a - // group. - if (empty($group) || !empty($group) && $group->id() === InteroperableEuropeCollectionInterface::COLLECTION_ENTITY_ID) { - return AccessResult::allowed(); - } - - return AccessResult::forbidden(); -} diff --git a/web/modules/custom/joinup_communities/interoperable_europe/src/Plugin/Block/IopFooterBlock.php b/web/modules/custom/joinup_communities/interoperable_europe/src/Plugin/Block/IopFooterBlock.php index e7159adcfbd490d8b6f6e2a049ce1489e6ecacc6..36ab7055b8c5d4a566f19fd6eb8e59d389d0237c 100644 --- a/web/modules/custom/joinup_communities/interoperable_europe/src/Plugin/Block/IopFooterBlock.php +++ b/web/modules/custom/joinup_communities/interoperable_europe/src/Plugin/Block/IopFooterBlock.php @@ -80,13 +80,10 @@ public function build(): array { ], ]; - $icon_uri = base_path() . $this->themeExtensionList->getPath('ventuno') . '/assets/icons/icons.svg#'; - $svg_gradient = '<linearGradient id="join-gradient"><stop offset="0%" stop-color="#0047ba" /><stop offset="100%" stop-color="#19d3c5" /></linearGradient>'; - foreach ($icons as $class => $data) { $build[$class] = [ '#type' => 'inline_template', - '#template' => '<a class="btn btn-sm rounded-circle join__btn" href="{{ url }}" target="_blank" rel="noopener" title="{{ title }}"><svg class="icon--m">' . $svg_gradient . '<use xlink:href="' . $icon_uri . '{{ icon }}"></use></svg></a>', + '#template' => '<a class="btn btn-sm rounded-circle join__btn join__btn--' . $class . '" href="{{ url }}" target="_blank" rel="noopener" title="{{ title }}"></a>', '#context' => [ 'icon' => $class, 'title' => $this->t('Follow us on @media', ['@media' => $data['title']]), @@ -97,7 +94,7 @@ public function build(): array { $build['newsletter'] = [ '#type' => 'inline_template', - '#template' => '<a class="btn btn-sm rounded-circle join__btn" href="{{ url }}" target="_blank" rel="noopener" title="{{ title }}"><svg class="icon--m">' . $svg_gradient . '<use xlink:href="' . $icon_uri . 'envelope-fill"></use></svg></a>', + '#template' => '<a class="btn btn-sm rounded-circle join__btn join__btn--newsletter" href="{{ url }}" target="_blank" rel="noopener" title="{{ title }}"></a>', '#context' => [ 'title' => $this->t('Subscribe to the interoperable europe newsletter'), 'url' => Url::fromUri('https://ec.europa.eu/newsroom/informatics/user-subscriptions/1115/create'), diff --git a/web/modules/custom/joinup_core/config/schema/joinup_core.schema.yml b/web/modules/custom/joinup_core/config/schema/joinup_core.schema.yml index 49f09dae6646a558e5f0bd2516dda212bcf752cc..16cf9bfbd663e8d8b62e81fbe560f7550f8887e6 100644 --- a/web/modules/custom/joinup_core/config/schema/joinup_core.schema.yml +++ b/web/modules/custom/joinup_core/config/schema/joinup_core.schema.yml @@ -66,6 +66,18 @@ field.formatter.settings.addtocall_daterange_condensed: type: date_format label: 'Different years format' +field.formatter.settings.filtered_entity_reference_bundles: + type: field.formatter.settings.entity_reference_revisions_entity_view + label: 'Add filtered entity reference types formatter settings' + mapping: + filtered_entity_bundles: + type: sequence + label: 'Bundles' + nullable: true + sequence: + type: string + label: 'Bundle' + field.widget.settings.email_legacy_multicardinality: type: field.widget.settings.email_default @@ -95,21 +107,6 @@ condition.plugin.joinup_content: sequence: type: string -# Schema for 'joinup_timestamp_timeago' formatter settings. -field.formatter.settings.joinup_timestamp_timeago: - type: field.formatter.settings.timestamp - label: 'Joinup Timestamp Timeago display format settings' - mapping: - tooltip_format: - type: string - label: 'Tooltip date format' - tooltip_format_custom: - type: string - label: 'Tooltip custom date format' - timeago_settings: - type: ignore - label: 'Timeago plugin settings' - field.formatter.settings.entity_reference_custom_link: type: mapping label: 'Entity reference custom link display format settings' diff --git a/web/modules/custom/joinup_core/joinup_core.deploy.php b/web/modules/custom/joinup_core/joinup_core.deploy.php index adb043942d52b2a0100f848906d1ed2e7d6fba29..ac82cf0923203ad12dc129f49c059d376646e6d8 100644 --- a/web/modules/custom/joinup_core/joinup_core.deploy.php +++ b/web/modules/custom/joinup_core/joinup_core.deploy.php @@ -14,38 +14,523 @@ declare(strict_types = 1); -use Drupal\Core\File\Exception\FileException; +use Drupal\Core\Entity\ContentEntityInterface; +use Drupal\Core\Entity\EntityInterface; +use Drupal\interoperable_europe\InteroperableEuropeCollectionInterface; +use Drupal\meta_entity\Entity\MetaEntity; +use Drupal\node\Entity\Node; +use Drupal\paragraphs\Entity\Paragraph; +use Drupal\paragraphs\ParagraphInterface; +use Drupal\rdf_entity\Entity\Rdf; +use Drupal\search_api\Entity\Index; /** - * Removal of spam content files. + * Clean up banner files. */ -function joinup_core_deploy_109500(): void { - /** @var \Drupal\Core\File\FileSystemInterface $fileSystem */ - $fileSystem = \Drupal::service('file_system'); +function joinup_core_deploy_109600(array &$sandbox): string { + if (empty($sandbox['fids'])) { + $query = <<<SPARQL +select ?o +from <http://joinup.eu/collection/published> +from <http://joinup.eu/collection/draft> +from <http://joinup.eu/solution/published> +from <http://joinup.eu/solution/draft> +from <http://joinup.eu/asset_release/published> +from <http://joinup.eu/asset_release/draft> +where { ?s <http://xmlns.com/foaf/0.1/Image> ?o } +SPARQL; - $files = [ - 'public://document/2022-12/black-panther-2-wakanda-forever-free-w2tk.pdf', - 'public://document/2022-12/fury-vs-chisora-live-wise.pdf', - 'public://document/2022-12/2021-Crack-Adobe-Illustrator-CC-2018-2521-64Bit-2021-Crack.pdf', + $sparql = \Drupal::getContainer()->get('sparql.endpoint'); + $results = $sparql->query($query); + foreach ($results as $result) { + $sandbox['fids'][] = $result->o->getValue(); + } + $sandbox['total'] = count($sandbox['fids']); + $sandbox['current'] = 0; + } + + $fids = array_splice($sandbox['fids'], 0, 100); + $file_storage = \Drupal::entityTypeManager()->getStorage('file'); + $file_storage->delete($file_storage->loadMultiple($fids)); + + $sandbox['current'] += count($fids); + $sandbox['#finished'] = $sandbox['current'] / $sandbox['total']; + return 'Processed ' . $sandbox['current'] . ' of ' . $sandbox['total'] . ' files.'; +} + +/** + * Clean up banner database entries. + */ +function joinup_core_deploy_109601(): void { + $sparql_endpoint = \Drupal::getContainer()->get('sparql.endpoint'); + $query = <<<SPARQL +DELETE { GRAPH ?g { ?s <http://xmlns.com/foaf/0.1/Image> ?o } } +WHERE { + GRAPH ?g { ?s <http://xmlns.com/foaf/0.1/Image> ?o } . + VALUES ?g { <http://joinup.eu/collection/published> <http://joinup.eu/collection/draft> <http://joinup.eu/solution/published> <http://joinup.eu/solution/draft> <http://joinup.eu/asset_release/published> <http://joinup.eu/asset_release/draft> } +} +SPARQL; + + $sparql_endpoint->update($query); +} + +/** + * Update the topics list. + */ +function joinup_core_deploy_109602(): string { + $vocabulary_manager = \Drupal::getContainer()->get('topic.vocabulary_manager'); + $messages = []; + + // The former Innovation must be renamed to 'Digital Innovation' and keep the + // linked content items. + $vocabulary_manager->renameTopic('http://joinup.eu/ontology/topic#innovation', 'Digital innovation'); + $messages[] = 'Topic "Innovation" renamed to "Digital innovation".'; + $vocabulary_manager->changeTopicId('http://joinup.eu/ontology/topic#innovation', 'http://joinup.eu/ontology/topic#digital-innovation'); + $vocabulary_manager->updateDbReference('http://joinup.eu/ontology/topic#innovation', 'http://joinup.eu/ontology/topic#digital-innovation'); + $messages[] = 'Topic ID "http://joinup.eu/ontology/topic#innovation" changed to "http://joinup.eu/ontology/topic#digital-innovation".'; + + // A new parent category must be created, named 'Innovation'. + $vocabulary_manager->createTopicTerm('Innovation'); + $messages[] = 'Topic category "Innovation" created.'; + + // Under the new parent category, the following topics must be moved: + // * Artificial Intelligence (move it by ICT parent topic). + // * Blockchain (move it by ICT parent topic). + // * 'Digital Innovation' (former Innovation). + $vocabulary_manager->changeTopicParent('http://joinup.eu/ontology/topic#artificial-intelligence', 'http://joinup.eu/ontology/topic/category#innovation'); + $vocabulary_manager->changeTopicParent('http://joinup.eu/ontology/topic#blockchain', 'http://joinup.eu/ontology/topic/category#innovation'); + $vocabulary_manager->changeTopicParent('http://joinup.eu/ontology/topic#digital-innovation', 'http://joinup.eu/ontology/topic/category#innovation'); + $messages[] = 'Topics "Artificial Intelligence", "Blockchain" and "Digital Innovation" moved to "Innovation" category.'; + + // Under the new parent category, the following topics must be added: + // * Advanced data analytics + // * AI Chatbot + // * AI Facial recognition + // * AI Image generation + // * AI Machine translation + // * AI Named entity recognition + // * AI Speech recognition + // * AI Video analytics + // * Extended reality + // * High performance computing + // * Indoor position systems + // * Internet of Things + // * Optical Character Recognition + // * Robotic Process Automation. + $labels = [ + 'Advanced data analytics', + 'AI Chatbot', + 'AI Facial recognition', + 'AI Image generation', + 'AI Machine translation', + 'AI Named entity recognition', + 'AI Speech recognition', + 'AI Video analytics', + 'Extended reality', + 'High performance computing', + 'Indoor position systems', + 'Internet of Things', + 'Optical Character Recognition', + 'Robotic Process Automation', ]; - foreach ($files as $file) { - try { - $fileSystem->delete($file); + foreach ($labels as $label) { + $vocabulary_manager->createTopicTerm($label, 'http://joinup.eu/ontology/topic/category#innovation'); + $messages[] = "Topic \"$label\" created."; + } + + return implode(PHP_EOL, $messages); +} + +/** + * Re-indexes items related to the affected changed terms. + */ +function joinup_core_deploy_109603(): string { + $affected_terms = [ + 'http://joinup.eu/ontology/topic/category#innovation', + 'http://joinup.eu/ontology/topic#innovation', + 'http://joinup.eu/ontology/topic#artificial-intelligence', + 'http://joinup.eu/ontology/topic#blockchain', + 'http://joinup.eu/ontology/topic#digital-innovation', + ]; + + $topic_ids = \Drupal::entityQuery('taxonomy_term') + ->condition('vid', 'topic') + ->accessCheck(FALSE) + ->execute(); + $search_ids = array_map(function (string $id): string { + return "entity:taxonomy_term/$id:en"; + }, $topic_ids); + + $node_ids = \Drupal::entityQuery('node') + ->condition('field_topic', $affected_terms, 'IN') + ->accessCheck(FALSE) + ->execute(); + $search_ids = array_merge($search_ids, array_map(function (string $id): string { + return "entity:node/$id:en"; + }, $node_ids)); + + $rdf_entity_ids = \Drupal::entityQuery('rdf_entity') + ->condition('field_topic', $affected_terms, 'IN') + ->accessCheck(FALSE) + ->execute(); + $search_ids = array_merge($search_ids, array_map(function (string $id): string { + return "entity:rdf_entity/$id:en"; + }, $rdf_entity_ids)); + + $index = Index::load('published'); + $items = $index->loadItemsMultiple($search_ids); + $index->indexSpecificItems($items); + + return 'Items re-indexed.'; +} + +/** + * Migrate IOP custom pages row paragraphs to layout paragraphs. + */ +function joinup_core_deploy_109604(): string { + $collection = Rdf::load(InteroperableEuropeCollectionInterface::COLLECTION_ENTITY_ID); + $group_helper = \Drupal::getContainer()->get('og.membership_manager'); + $node_ids = $group_helper->getGroupContentIds($collection, ['node']); + + foreach (Node::loadMultiple($node_ids['node']) as $node) { + if ($node->bundle() !== 'custom_page') { + continue; + } + + $new_paragraphs = []; + foreach ($node->get('field_paragraphs_body') as $paragraph_row_item) { + // The $paragraph_row_item is a field item that holds a row. If it is not + // a row paragraph, ignore it. + $paragraph_row_item = $paragraph_row_item->entity; + if ($paragraph_row_item->bundle() !== 'row') { + continue; + } + + $new_paragraphs += _joinup_core_row_to_layout($paragraph_row_item, $node, 'field_paragraphs_body'); + } + + if (empty($new_paragraphs)) { + continue; + } + + $node->set('field_paragraphs_body', array_values($new_paragraphs)); + $node->save(); + } + return "Migrated all custom pages row paragraphs of IOP collection to layout paragraphs."; +} + +/** + * Migrate Topic meta entity row paragraphs to layout paragraphs. + */ +function joinup_core_deploy_109605(array &$sandbox): string { + if (empty($sandbox['meta_ids'])) { + $sandbox['meta_ids'] = \Drupal::entityQuery('meta_entity') + ->accessCheck(FALSE) + ->condition('type', 'topic') + ->execute(); + } + // Only update 1 entity per batch. + $meta_entities = MetaEntity::loadMultiple(array_splice($sandbox['meta_ids'], 0, 1)); + $meta_entity = reset($meta_entities); + + $field = 'topics_paragraph'; + $new_paragraphs = []; + foreach ($meta_entity->{$field} as $paragraph_row_item) { + // The $paragraph_row_item is a field item that holds a row. If it is not + // a row paragraph, ignore it. + $paragraph_row_item = $paragraph_row_item->entity; + if ($paragraph_row_item->bundle() !== 'row') { + continue; } - catch (FileException $e) { + + $new_paragraphs += _joinup_core_row_to_layout($paragraph_row_item, $meta_entity, $field); + } + + if (!empty($new_paragraphs)) { + $meta_entity->get($field)->setValue(array_values($new_paragraphs)); + $meta_entity->save(); + } + + $sandbox['#finished'] = empty($sandbox['meta_ids']) ? 1 : 0; + return "Migrated meta entity '{$meta_entity->label()}' row paragraphs to layout paragraphs."; +} + +/** + * Migrate a row to the new layout. + * + * @param \Drupal\paragraphs\ParagraphInterface $paragraph_row_item + * The row paragraph. + * @param \Drupal\Core\Entity\ContentEntityInterface $parent_entity + * The entity to use as parent. + * @param string $parent_entity_field + * The field name of the parent entity. + * + * @return \Drupal\paragraphs\ParagraphInterface[] + * A list of created paragraphs. + */ +function _joinup_core_row_to_layout(ParagraphInterface $paragraph_row_item, ContentEntityInterface $parent_entity, string $parent_entity_field): array { + // The returned paragraphs will be assigned to the entity. + $return = []; + $heading = $paragraph_row_item->paragraph_heading->value ?? ''; + $subheading = $paragraph_row_item->paragraph_row_subheading->value ?? ''; + + // Exclude the "Did you know?" paragraph because it needs some special care. + if ($heading !== 'Did you know?' && (!empty($heading) || !empty($subheading))) { + $new_layout_paragraph = _joinup_core_get_new_layout_paragraph($parent_entity, $parent_entity_field, 'layout_onecol', NULL, $paragraph_row_item->get('row_theme')->value); + $return[$new_layout_paragraph->id()] = $new_layout_paragraph; + if ($heading) { + $child_paragraph = _joinup_core_create_heading_paragraph($new_layout_paragraph, $heading, 'h2'); + $return[$child_paragraph->id()] = $child_paragraph; + } + if ($subheading) { + $child_paragraph = _joinup_core_create_heading_paragraph($new_layout_paragraph, $subheading, 'h3'); + $return[$child_paragraph->id()] = $child_paragraph; } } + + // Start migrating paragraphs to a new list. Keep the deepest levels of + // paragraphs that can be reused and recreate the layout and the columns. + // Iterate through the paragraphs within the row. For each sub-paragraph, + // that is of type `1_column_layout`, `2_column_layout`, + // `3_column_layout`, `2_column_featured_right` or + // `2_column_featured_left`, create a new layout paragraph and add it to + // the list of new paragraphs. The field in the row paragraph that holds + // the sub-paragraphs is `paragraph_column_layout`. + foreach ($paragraph_row_item->paragraph_column_layout as $paragraph_column_item) { + // The $paragraph_column_item is a field item that holds a column. If it + // is not a column paragraph, ignore it. + $column_paragraph = $paragraph_column_item->entity; + if (!in_array($column_paragraph->bundle(), [ + '1_column_layout', + '2_column_layout', + '3_column_layout', + '2_column_featured_right', + '2_column_featured_left', + ])) { + continue; + } + + // The way hierarchy works in layouts is that the layout paragraph has + // the 'behavior_settings' base field where the 'layout_paragraphs' + // setting is an array of settings in it. The 'layout_paragraphs' + // setting has the following structure for the layout: + // - 'layout' = 'layout_onecol', 'layout_twocol_section', + // 'layout_threecol_section' or 'layout_fourcol_section'. + // - 'config' => ['column_widths' => '50-50' for twocol, '33-33-33' for + // threecol, '25-25-25-25' for fourcol or empty for onecol] + // - 'parent_uuid' = NULL + // - 'region' = NULL + // - background_theme = whatever the paragraph we copy from has. + // The 'layout_paragraphs' setting has the following structure for the + // column (any paragraph belonging to it): + // - 'parent_uuid' = UUID of the layout paragraph. + // - 'region' = 'first', 'second', 'third' or 'fourth'. + switch ($column_paragraph->bundle()) { + case '1_column_layout': + $new_layout_paragraph = _joinup_core_get_new_layout_paragraph($parent_entity, $parent_entity_field, 'layout_onecol', NULL, $paragraph_row_item->row_theme->value); + $return[$new_layout_paragraph->id()] = $new_layout_paragraph; + if ($heading === 'Did you know?') { + // Handle the special case of the 'Did you know?' row. + $child_paragraph = _joinup_core_create_heading_paragraph($new_layout_paragraph, $heading, 'h2'); + $return[$child_paragraph->id()] = $child_paragraph; + $child_paragraph = _joinup_core_create_heading_paragraph($new_layout_paragraph, $subheading, 'h3'); + $return[$child_paragraph->id()] = $child_paragraph; + $new_layout_paragraph->setBehaviorSettings('extra_class', ['extra_class' => 'facts']); + $new_layout_paragraph->save(); + } + $return += _joinup_core_column_to_layout($column_paragraph, $new_layout_paragraph, $parent_entity, $parent_entity_field, 'paragraph_column_center', 'content'); + break; + + case '2_column_layout': + $new_layout_paragraph = _joinup_core_get_new_layout_paragraph($parent_entity, $parent_entity_field, 'layout_twocol_section', '50-50', $paragraph_row_item->row_theme->value); + $return[$new_layout_paragraph->id()] = $new_layout_paragraph; + $return += _joinup_core_column_to_layout($column_paragraph, $new_layout_paragraph, $parent_entity, $parent_entity_field, 'paragraph_column_left', 'first'); + $return += _joinup_core_column_to_layout($column_paragraph, $new_layout_paragraph, $parent_entity, $parent_entity_field, 'paragraph_column_right', 'second'); + break; + + case '3_column_layout': + $new_layout_paragraph = _joinup_core_get_new_layout_paragraph($parent_entity, $parent_entity_field, 'layout_threecol_section', '33-33-33', $paragraph_row_item->row_theme->value); + $return[$new_layout_paragraph->id()] = $new_layout_paragraph; + $return += _joinup_core_column_to_layout($column_paragraph, $new_layout_paragraph, $parent_entity, $parent_entity_field, 'paragraph_column_left', 'first'); + $return += _joinup_core_column_to_layout($column_paragraph, $new_layout_paragraph, $parent_entity, $parent_entity_field, 'paragraph_column_center', 'second'); + $return += _joinup_core_column_to_layout($column_paragraph, $new_layout_paragraph, $parent_entity, $parent_entity_field, 'paragraph_column_right', 'third'); + break; + + // The 2 column featured paragraphs are a special case. They are + // converted to a layout with 2 columns, but the left column is + // configured to be a featured column. To make a column featured, we + // need to add a nested layout to it. + case '2_column_featured_right': + case '2_column_featured_left': + $new_layout_paragraph = _joinup_core_get_new_layout_paragraph($parent_entity, $parent_entity_field, 'layout_twocol_section', '50-50', $paragraph_row_item->row_theme->value, 'featured-' . $column_paragraph->bundle()); + $non_featured_region = $column_paragraph->bundle() === '2_column_featured_right' ? 'first' : 'second'; + $return[$new_layout_paragraph->id()] = $new_layout_paragraph; + // Featured paragraphs had an explicit heading field for the + // non-featured column. We need to convert that to a paragraph. + if ($heading = $column_paragraph->paragraph_heading->value) { + $child_paragraph = _joinup_core_create_heading_paragraph($new_layout_paragraph, $heading, 'h2', $non_featured_region); + $return[$child_paragraph->id()] = $child_paragraph; + } + $return += _joinup_core_column_to_layout($column_paragraph, $new_layout_paragraph, $parent_entity, $parent_entity_field, 'field_paragraphs_item_content', $non_featured_region); + + // The featured column has a single paragraph to it. Get the first + // paragraph and add it to the new layout on the second column. + $featured_paragraph = $column_paragraph->get('paragraph_2cf_media')->first()->entity; + $featured_paragraph->set('parent_field_name', $parent_entity_field); + $featured_paragraph->setParentEntity($parent_entity, $parent_entity_field); + $featured_paragraph->setBehaviorSettings('layout_paragraphs', [ + 'parent_uuid' => $new_layout_paragraph->uuid(), + // Place it in the featured region. + 'region' => $non_featured_region === 'first' ? 'second' : 'first', + ]); + $featured_paragraph->save(); + $return[$featured_paragraph->id()] = $featured_paragraph; + break; + + default: + break; + } + $column_paragraph->delete(); + $paragraph_row_item->delete(); + } + + return $return; } /** - * Import the new version of EIRA. + * Returns a serialized version of the behavior settings for a paragraph. + * + * @param \Drupal\Core\Entity\EntityInterface $parent_entity + * The node to use as parent. + * @param string $parent_entity_field + * The field name on the parent entity. + * @param string $layout + * The layout to use. One of 'layout_onecol', 'layout_twocol', + * 'layout_threecol'. + * @param string|null $column_widths + * The column widths to use. E.g. '33-33-33' or '50-50'. + * @param string|null $background_theme + * (optional) The background theme to use. Defaults to NULL. NULL means no + * background theme or behavior not available. + * @param string|null $extra_classes + * (optional) Extra classes to use. Defaults to NULL. NULL means no extra + * classes or behavior not available. + * + * @return \Drupal\paragraphs\ParagraphInterface + * The generated paragraph. + */ +function _joinup_core_get_new_layout_paragraph(EntityInterface $parent_entity, string $parent_entity_field, string $layout, ?string $column_widths = NULL, ?string $background_theme = NULL, ?string $extra_classes = NULL): ParagraphInterface { + $behavior = [ + 'layout_paragraphs' => [ + 'layout' => $layout, + 'config' => [ + 'label' => '', + ], + 'parent_uuid' => NULL, + 'region' => NULL, + ], + ]; + + if ($column_widths) { + $behavior['config']['column_widths'] = $column_widths; + } + + if ($background_theme === 'light') { + $behavior['background_theme'] = [ + 'background_theme' => '', + ]; + } + + elseif ($background_theme === 'light-wave') { + $behavior['background_theme'] = [ + 'background_theme' => 'light', + ]; + } + + if ($extra_classes === 'featured-2_column_featured_right') { + $behavior['extra_class'] = [ + 'extra_class' => 'banner', + ]; + } + elseif ($extra_classes === 'featured-2_column_featured_left') { + $behavior['extra_class'] = [ + 'extra_class' => 'why', + ]; + } + + $behavior = serialize($behavior); + $new_layout_paragraph = Paragraph::create([ + 'type' => 'layout', + 'parent_type' => 'paragraph', + 'behavior_settings' => $behavior, + ]); + $new_layout_paragraph->setParentEntity($parent_entity, $parent_entity_field); + $new_layout_paragraph->save(); + return $new_layout_paragraph; +} + +/** + * Migrate a list of column paragraphs to the new layout. + * + * @param \Drupal\paragraphs\ParagraphInterface $old_parent_column + * The old parent column paragraph. + * @param \Drupal\paragraphs\ParagraphInterface $new_parent_layout + * The new parent layout paragraph. + * @param \Drupal\Core\Entity\EntityInterface $parent_entity + * The entity to use as parent. + * @param string $parent_entity_field + * The field name of the parent entity. + * @param string $paragraphs_reference_field_name + * The field name of the column paragraphs. + * @param string $new_region + * The region to use for the new paragraphs. + * + * @return \Drupal\paragraphs\ParagraphInterface[] + * A list of created paragraphs. */ -function joinup_core_deploy_109501(): string { - $fixtures_helper = \Drupal::getContainer()->get( - 'joinup_rdf.vocabulary_fixtures.helper' - ); - $fixtures_helper->importFixtures('eira_skos'); +function _joinup_core_column_to_layout(ParagraphInterface $old_parent_column, ParagraphInterface $new_parent_layout, EntityInterface $parent_entity, string $parent_entity_field, string $paragraphs_reference_field_name, string $new_region): array { + $return = []; + foreach ($old_parent_column->get($paragraphs_reference_field_name) as $child_paragraph_item) { + $child_paragraph = $child_paragraph_item->entity; + $child_paragraph->setParentEntity($parent_entity, $parent_entity_field); + $child_paragraph->setBehaviorSettings('layout_paragraphs', [ + 'parent_uuid' => $new_parent_layout->uuid(), + 'region' => $new_region, + ]); + $child_paragraph->save(); + $return[$child_paragraph->id()] = $child_paragraph; + } + + return $return; +} - return 'Imported eira_skos and ran after import queries.'; +/** + * Creates a heading paragraph as a simple paragraph. + * + * @param \Drupal\paragraphs\ParagraphInterface $new_layout_paragraph + * The layout paragraph to add the heading to. + * @param string $heading + * The heading text. + * @param string $heading_type + * The heading type, e.g. h2, h3, etc. + * @param string $region + * (optional) The region to add the heading to. Defaults to 'content'. + */ +function _joinup_core_create_heading_paragraph(ParagraphInterface $new_layout_paragraph, string $heading, string $heading_type, string $region = 'content'): ParagraphInterface { + $child_paragraph = Paragraph::create([ + 'type' => 'heading', + 'paragraph_heading' => [ + 'value' => "$heading", + ], + ]); + $child_paragraph->setBehaviorSettings('layout_paragraphs', [ + 'parent_uuid' => $new_layout_paragraph->uuid(), + 'region' => $region, + ]); + $child_paragraph->setBehaviorSettings('paragraph_heading', [ + 'heading_type' => $heading_type, + ]); + $child_paragraph->save(); + return $child_paragraph; } diff --git a/web/modules/custom/joinup_core/joinup_core.install b/web/modules/custom/joinup_core/joinup_core.install index f851fb879d77827215d86b5a9eee0bc52956f404..3b6ea26f2bbcc0edce7a26bbd563a2689a1a033a 100644 --- a/web/modules/custom/joinup_core/joinup_core.install +++ b/web/modules/custom/joinup_core/joinup_core.install @@ -7,7 +7,6 @@ declare(strict_types = 1); -use Drupal\Core\Database\Database; use Drupal\Core\Site\Settings; use Drupal\user\Entity\User; @@ -93,39 +92,3 @@ function joinup_core_requirements($phase): array { return $requirements; } - -/** - * Update length and set back primary key in search_api_item. - */ -function joinup_core_update_109500(): void { - $schema = Database::getConnection()->schema(); - - $schema->changeField('search_api_item', 'item_id', 'item_id', [ - 'description' => 'The unique identifier of this item', - 'type' => 'varchar', - 'length' => 718, - 'not null' => TRUE, - ]); - - if (!$schema->indexExists('search_api_item', 'PRIMARY')) { - $schema->addPrimaryKey('search_api_item', ['index_id', 'item_id']); - } -} - -/** - * Remove all site alert entities. - */ -function joinup_core_update_109501(): void { - $ids = \Drupal::entityQuery('site_alert') - ->accessCheck(FALSE) - ->execute(); - if (empty($ids)) { - return; - } - - $items = \Drupal::entityTypeManager()->getStorage('site_alert') - ->loadMultiple($ids); - foreach ($items as $item) { - $item->delete(); - } -} diff --git a/web/modules/custom/joinup_core/joinup_core.libraries.yml b/web/modules/custom/joinup_core/joinup_core.libraries.yml index 9b1321a27ebde56a041b435f9e0c8b0bea506c1d..8ecc4c8d5f9258a90c53e311de0ee2b441a271c1 100644 --- a/web/modules/custom/joinup_core/joinup_core.libraries.yml +++ b/web/modules/custom/joinup_core/joinup_core.libraries.yml @@ -1,18 +1,3 @@ -timeago: - remote: http://timeago.yarp.com - version: v1.6.1 - license: - name: MIT - url: https://github.com/rmm5t/jquery-timeago/blob/master/LICENSE.txt - js: - js/jquery.timeago.min.js: - minified: true -timestamp_timeago: - js: - js/timestamp_timeago.js: { } - dependencies: - - core/jquery - - core/drupalSettings outdated_content: js: js/outdated_content.js: { } diff --git a/web/modules/custom/joinup_core/joinup_core.module b/web/modules/custom/joinup_core/joinup_core.module index 1924c3d22e46f2162db92464f07ce5ff2714d9f6..6e11d06ea9366bd4dadd382c75df70f216707e2b 100644 --- a/web/modules/custom/joinup_core/joinup_core.module +++ b/web/modules/custom/joinup_core/joinup_core.module @@ -55,6 +55,18 @@ function joinup_core_theme(array $existing, string $type, string $theme, string ]; } +/** + * Implements hook_requirements_alter(). + */ +function joinup_core_requirements_alter(array &$requirements): void { + $ignored = getenv('DRUPAL_STATUS_REPORT_IGNORE') ?: 'update status,joinup_core_root_user_blocked,search_api_solr_schema_joinup_modifications,deprecated_modules,deprecated_themes,metatag_maintenance_mode,search_api_pending_tasks'; + $ignored = array_map('trim', explode(',', $ignored)); + + $requirements = array_filter($requirements, function (string $requirement) use ($ignored): bool { + return !in_array($requirement, $ignored, TRUE); + }, ARRAY_FILTER_USE_KEY); +} + /** * Implements hook_cron(). */ diff --git a/web/modules/custom/joinup_core/js/jquery.timeago.min.js b/web/modules/custom/joinup_core/js/jquery.timeago.min.js deleted file mode 100644 index 9a5b2f5ee8a61af6369d47a2055090fbfe14ec9d..0000000000000000000000000000000000000000 --- a/web/modules/custom/joinup_core/js/jquery.timeago.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t("object"==typeof module&&"object"==typeof module.exports?require("jquery"):jQuery)}(function(t){function e(){var e=r.settings;if(e.autoDispose&&!t.contains(document.documentElement,this))return t(this).timeago("dispose"),this;var o=i(this);return isNaN(o.datetime)||(0===e.cutoff||Math.abs(n(o.datetime))<e.cutoff?t(this).text(a(o.datetime)):t(this).attr("title").length>0&&t(this).text(t(this).attr("title"))),this}function i(e){if(!(e=t(e)).data("timeago")){e.data("timeago",{datetime:r.datetime(e)});var i=t.trim(e.text());r.settings.localeTitle?e.attr("title",e.data("timeago").datetime.toLocaleString()):!(i.length>0)||r.isTime(e)&&e.attr("title")||e.attr("title",i)}return e.data("timeago")}function a(t){return r.inWords(n(t))}function n(t){return(new Date).getTime()-t.getTime()}t.timeago=function(e){return a(e instanceof Date?e:"string"==typeof e?t.timeago.parse(e):"number"==typeof e?new Date(e):t.timeago.datetime(e))};var r=t.timeago;t.extend(t.timeago,{settings:{refreshMillis:6e4,allowPast:!0,allowFuture:!1,localeTitle:!1,cutoff:0,autoDispose:!0,strings:{prefixAgo:null,prefixFromNow:null,suffixAgo:"ago",suffixFromNow:"from now",inPast:"any moment now",seconds:"less than a minute",minute:"about a minute",minutes:"%d minutes",hour:"about an hour",hours:"about %d hours",day:"a day",days:"%d days",month:"about a month",months:"%d months",year:"about a year",years:"%d years",wordSeparator:" ",numbers:[]}},inWords:function(e){function i(i,n){var r=t.isFunction(i)?i(n,e):i,o=a.numbers&&a.numbers[n]||n;return r.replace(/%d/i,o)}if(!this.settings.allowPast&&!this.settings.allowFuture)throw"timeago allowPast and allowFuture settings can not both be set to false.";var a=this.settings.strings,n=a.prefixAgo,r=a.suffixAgo;if(this.settings.allowFuture&&e<0&&(n=a.prefixFromNow,r=a.suffixFromNow),!this.settings.allowPast&&e>=0)return this.settings.strings.inPast;var o=Math.abs(e)/1e3,s=o/60,u=s/60,m=u/24,l=m/365,d=o<45&&i(a.seconds,Math.round(o))||o<90&&i(a.minute,1)||s<45&&i(a.minutes,Math.round(s))||s<90&&i(a.hour,1)||u<24&&i(a.hours,Math.round(u))||u<42&&i(a.day,1)||m<30&&i(a.days,Math.round(m))||m<45&&i(a.month,1)||m<365&&i(a.months,Math.round(m/30))||l<1.5&&i(a.year,1)||i(a.years,Math.round(l)),h=a.wordSeparator||"";return void 0===a.wordSeparator&&(h=" "),t.trim([n,d,r].join(h))},parse:function(e){var i=t.trim(e);return i=i.replace(/\.\d+/,""),i=i.replace(/-/,"/").replace(/-/,"/"),i=i.replace(/T/," ").replace(/Z/," UTC"),i=i.replace(/([\+\-]\d\d)\:?(\d\d)/," $1$2"),i=i.replace(/([\+\-]\d\d)$/," $100"),new Date(i)},datetime:function(e){var i=r.isTime(e)?t(e).attr("datetime"):t(e).attr("title");return r.parse(i)},isTime:function(e){return"time"===t(e).get(0).tagName.toLowerCase()}});var o={init:function(){o.dispose.call(this);var i=t.proxy(e,this);i();var a=r.settings;a.refreshMillis>0&&(this._timeagoInterval=setInterval(i,a.refreshMillis))},update:function(i){var a=i instanceof Date?i:r.parse(i);t(this).data("timeago",{datetime:a}),r.settings.localeTitle&&t(this).attr("title",a.toLocaleString()),e.apply(this)},updateFromDOM:function(){t(this).data("timeago",{datetime:r.parse(r.isTime(this)?t(this).attr("datetime"):t(this).attr("title"))}),e.apply(this)},dispose:function(){this._timeagoInterval&&(window.clearInterval(this._timeagoInterval),this._timeagoInterval=null)}};t.fn.timeago=function(t,e){var i=t?o[t]:o.init;if(!i)throw new Error("Unknown function name '"+t+"' for timeago");return this.each(function(){i.call(this,e)}),this},document.createElement("abbr"),document.createElement("time")}); \ No newline at end of file diff --git a/web/modules/custom/joinup_core/js/timestamp_timeago.js b/web/modules/custom/joinup_core/js/timestamp_timeago.js deleted file mode 100644 index 2b98193f970f2d04de0434440a732cc9745f44ac..0000000000000000000000000000000000000000 --- a/web/modules/custom/joinup_core/js/timestamp_timeago.js +++ /dev/null @@ -1,37 +0,0 @@ -/** - * @file - * Dynamically shows a date/time as a cacheable "time ago" string. - */ - -(($, Drupal, drupalSettings) => { - /** - * Shows a date/time as a cacheable "time ago" string. - * - * We use the timeago jquery plugin (http://timeago.yarp.com) to replace the - * formatted date with a "time ago" string. We don't return a "time ago" from - * server because that value is changing very often (every second), meaning - * that we cannot cache the value and, as an effect, the whole page will - * become uncacheable. Instead we display the formatted date/time and then, in - * javascript enabled browsers, we replace the formatted date/time with a - * "time ago" expression that is generated by plugin. The value rendered by - * the plugin is refreshed each minute. - * - * @type {Drupal~behavior} - * - * @prop {Drupal~behaviorAttach} attach - * Uses timeago jquery plugin for 'joinup_timestamp_timeago' formatter. - * - * @see http://timeago.yarp.com - */ - Drupal.behaviors.timestampTimeago = { - attach() { - // Merge the custom settings. - $.extend( - true, - $.timeago.settings, - drupalSettings.joinupCore.timeagoSettings - ); - $("time.js-joinup-timestamp-timeago").timeago(); - }, - }; -})(jQuery, Drupal, drupalSettings); diff --git a/web/modules/custom/joinup_core/src/Form/RdfEntityUriWebConverterForm.php b/web/modules/custom/joinup_core/src/Form/RdfEntityUriWebConverterForm.php index a234c896f9c093f638b6bf647f1a97a53e5f2423..337e456abfbce878dcf8aa5696003bd43e96d253 100644 --- a/web/modules/custom/joinup_core/src/Form/RdfEntityUriWebConverterForm.php +++ b/web/modules/custom/joinup_core/src/Form/RdfEntityUriWebConverterForm.php @@ -94,7 +94,7 @@ public function submitForm(array &$form, FormStateInterface $form_state) { $id = trim($form_state->getValue('entity_id'), " "); $entity_type = $form_state->get('entity_type'); if ($passed_as === 'id') { - $form_state->setRedirect("entity.${entity_type}.canonical", [$entity_type => $id]); + $form_state->setRedirect("entity.{$entity_type}.canonical", [$entity_type => $id]); } elseif ($passed_as === 'url') { // We display only the ID, so it can be easily selected with a mouse diff --git a/web/modules/custom/joinup_core/src/Plugin/Field/FieldFormatter/FilteredEntityReferenceBundlesFormatter.php b/web/modules/custom/joinup_core/src/Plugin/Field/FieldFormatter/FilteredEntityReferenceBundlesFormatter.php new file mode 100644 index 0000000000000000000000000000000000000000..8188de55e98f06fc02522c0ff8e777465b373dfd --- /dev/null +++ b/web/modules/custom/joinup_core/src/Plugin/Field/FieldFormatter/FilteredEntityReferenceBundlesFormatter.php @@ -0,0 +1,95 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\joinup_core\Plugin\Field\FieldFormatter; + +use Drupal\Core\Entity\ContentEntityInterface; +use Drupal\Core\Entity\EntityTypeBundleInfoInterface; +use Drupal\Core\Field\EntityReferenceFieldItemListInterface; +use Drupal\Core\Form\FormStateInterface; +use Drupal\entity_reference_revisions\Plugin\Field\FieldFormatter\EntityReferenceRevisionsEntityFormatter; +use Symfony\Component\DependencyInjection\ContainerInterface; + +/** + * Plugin implementation of the 'filtered entity reference bundles' formatter. + * + * @FieldFormatter( + * id = "filtered_entity_reference_bundles", + * label = @Translation("Filtered rendered entity bundles"), + * description = @Translation("Filtered referenced entities bundles."), + * field_types = { + * "entity_reference_revisions" + * } + * ) + */ +class FilteredEntityReferenceBundlesFormatter extends EntityReferenceRevisionsEntityFormatter { + + /** + * Entity type bundle info. + * + * @var \Drupal\Core\Entity\EntityTypeBundleInfoInterface + */ + protected EntityTypeBundleInfoInterface $entityTypeBundleInfo; + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { + $formatter = parent::create($container, $configuration, $plugin_id, $plugin_definition); + $formatter->setEntityTypeBundleInfo($container->get('entity_type.bundle.info')); + + return $formatter; + } + + /** + * Sets entity type bundle info. + * + * @param \Drupal\Core\Entity\EntityTypeBundleInfoInterface $bundleInfo + * Entity type bundle info. + */ + public function setEntityTypeBundleInfo(EntityTypeBundleInfoInterface $bundleInfo): void { + $this->entityTypeBundleInfo = $bundleInfo; + } + + /** + * {@inheritdoc} + */ + public static function defaultSettings(): array { + return [ + 'filtered_entity_bundles' => [], + ] + parent::defaultSettings(); + } + + /** + * {@inheritdoc} + */ + public function settingsForm(array $form, FormStateInterface $form_state): array { + $entityTypeId = $this->getFieldSetting('target_type'); + $bundles = $this->entityTypeBundleInfo->getBundleInfo($entityTypeId); + + $elements['filtered_entity_bundles'] = [ + '#type' => 'select', + '#title' => $this->t('Select bundles which are allowed'), + '#options' => array_combine(array_keys($bundles), array_column($bundles, 'label')), + '#default_value' => $this->getSetting('filtered_entity_bundles'), + '#required' => TRUE, + '#multiple' => TRUE, + ]; + + return $elements; + } + + /** + * {@inheritdoc} + */ + protected function getEntitiesToView(EntityReferenceFieldItemListInterface $items, $langcode): array { + $entities = parent::getEntitiesToView($items, $langcode); + $allowed = $this->getSetting('filtered_entity_bundles'); + + return array_filter($entities, function (ContentEntityInterface $entity) use ($allowed) { + return in_array($entity->bundle(), $allowed); + }); + } + +} diff --git a/web/modules/custom/joinup_core/src/Plugin/Field/FieldFormatter/JoinupTimestampTimeagoFormatter.php b/web/modules/custom/joinup_core/src/Plugin/Field/FieldFormatter/JoinupTimestampTimeagoFormatter.php deleted file mode 100644 index d364fb13aa6a2954075c890796c4821b023e862d..0000000000000000000000000000000000000000 --- a/web/modules/custom/joinup_core/src/Plugin/Field/FieldFormatter/JoinupTimestampTimeagoFormatter.php +++ /dev/null @@ -1,256 +0,0 @@ -<?php - -declare(strict_types = 1); - -namespace Drupal\joinup_core\Plugin\Field\FieldFormatter; - -use Drupal\Component\Datetime\TimeInterface; -use Drupal\Core\Cache\Cache; -use Drupal\Core\Datetime\DateFormatterInterface; -use Drupal\Core\Entity\EntityStorageInterface; -use Drupal\Core\Field\FieldDefinitionInterface; -use Drupal\Core\Field\FieldItemListInterface; -use Drupal\Core\Field\Plugin\Field\FieldFormatter\TimestampFormatter; -use Drupal\Core\Form\FormStateInterface; -use Drupal\Core\Serialization\Yaml; -use Drupal\joinup_group\Entity\GroupInterface; -use Symfony\Component\DependencyInjection\ContainerInterface; - -/** - * Provides a formatter displaying a timestamp as a dynamic "time ago" string. - * - * The requirement is to render a "time ago" as output of this formatter but - * because the value would change very often (every second), we will not be able - * to cache it and, as an effect, the whole page will become uncacheable. For - * this reason, we'll not return a "time ago" value from server. Instead we - * display a formatted date/time. Then, in JS enabled browsers, we replace the - * formatted date/time with a "time ago" string expression generated by the - * timeago jquery plugin (http://timeago.yarp.com). The value rendered by the JS - * plugin is refreshed each minute. This is degrading nice in browsers with JS - * disabled where users will be able to see a nice formatted date/time. - * - * @see http://timeago.yarp.com - * - * @FieldFormatter( - * id = "joinup_timestamp_timeago", - * label = @Translation("Joinup Timestamp Timeago"), - * field_types = { - * "timestamp", - * } - * ) - */ -class JoinupTimestampTimeagoFormatter extends TimestampFormatter { - - /** - * The time service. - * - * @var \Drupal\Component\Datetime\TimeInterface - */ - protected $time; - - /** - * Constructs a new JoinupTimestampTimeagoFormatter. - * - * @param string $plugin_id - * The plugin_id for the formatter. - * @param mixed $plugin_definition - * The plugin implementation definition. - * @param \Drupal\Core\Field\FieldDefinitionInterface $field_definition - * The definition of the field to which the formatter is associated. - * @param array $settings - * The formatter settings. - * @param string $label - * The formatter label display setting. - * @param string $view_mode - * The view mode. - * @param array $third_party_settings - * Third party settings. - * @param \Drupal\Core\Datetime\DateFormatterInterface $date_formatter - * The date formatter service. - * @param \Drupal\Core\Entity\EntityStorageInterface $date_format_storage - * The date format storage. - * @param \Drupal\Component\Datetime\TimeInterface $time - * The time service. - */ - public function __construct($plugin_id, $plugin_definition, FieldDefinitionInterface $field_definition, array $settings, $label, $view_mode, array $third_party_settings, DateFormatterInterface $date_formatter, EntityStorageInterface $date_format_storage, TimeInterface $time) { - parent::__construct($plugin_id, $plugin_definition, $field_definition, $settings, $label, $view_mode, $third_party_settings, $date_formatter, $date_format_storage); - $this->time = $time; - } - - /** - * {@inheritdoc} - */ - public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { - return new static( - $plugin_id, - $plugin_definition, - $configuration['field_definition'], - $configuration['settings'], - $configuration['label'], - $configuration['view_mode'], - $configuration['third_party_settings'], - $container->get('date.formatter'), - $container->get('entity_type.manager')->getStorage('date_format'), - $container->get('datetime.time') - ); - } - - /** - * {@inheritdoc} - */ - public static function defaultSettings() { - return [ - 'tooltip_format' => 'long', - 'tooltip_format_custom' => '', - 'timeago_settings' => [ - 'strings' => [ - 'seconds' => 'few seconds', - ], - ], - ] + parent::defaultSettings(); - } - - /** - * {@inheritdoc} - */ - public function settingsForm(array $form, FormStateInterface $form_state) { - $form = parent::settingsForm($form, $form_state); - - $date_formats = []; - foreach ($this->dateFormatStorage->loadMultiple() as $machine_name => $value) { - $date_formats[$machine_name] = $this->t('@name format: @date', [ - '@name' => $value->label(), - '@date' => $this->dateFormatter->format($this->time->getRequestTime(), $machine_name), - ]); - } - $date_formats['custom'] = $this->t('Custom'); - - $form['tooltip_format'] = [ - '#type' => 'select', - '#title' => $this->t('Tooltip format'), - '#description' => $this->t('Select the date/time format to be used for the tooltip.'), - '#options' => $date_formats, - '#default_value' => $this->getSetting('tooltip_format'), - ]; - $form['tooltip_format_custom'] = [ - '#type' => 'textfield', - '#title' => $this->t('Tooltip custom format'), - '#description' => $this->t('See <a href="http://php.net/manual/function.date.php" target="_blank">the documentation for PHP date formats</a>.'), - '#default_value' => $this->getSetting('tooltip_format_custom'), - '#states' => [ - 'visible' => [ - [ - ':input[name="fields[' . $this->fieldDefinition->getName() . '][settings_edit_form][settings][tooltip_format]"]' => [ - 'value' => 'custom', - ], - ], - ], - ], - ]; - $form['timeago_settings'] = [ - '#type' => 'textarea', - '#title' => $this->t('A Yaml representation of settings to be passed to the timeago plugin'), - '#desciption' => $this->t('Values passed here will be merged into the timeago plugin defaults. See <a href="http://timeago.yarp.com">timeago.yarp.com</a> for the settings structure.'), - '#default_value' => Yaml::encode($this->getSetting('timeago_settings')), - '#element_validate' => [[static::class, 'decodeTimeagoSettings']], - ]; - - return $form; - } - - /** - * {@inheritdoc} - */ - public function viewElements(FieldItemListInterface $items, $langcode) { - $date_format = $this->getSetting('date_format'); - $tooltip_format = $this->getSetting('tooltip_format'); - $custom_date_format = $tooltip_format_custom = ''; - $timezone = $this->getSetting('timezone') ?: NULL; - $langcode = $tooltip_langcode = NULL; - - // If an RFC2822 date format is requested, then the month and day have to - // be in English. @see http://www.faqs.org/rfcs/rfc2822.html - if ($date_format === 'custom' && ($custom_date_format = $this->getSetting('custom_date_format')) === 'r') { - $langcode = 'en'; - } - if ($tooltip_format === 'custom' && ($tooltip_format_custom = $this->getSetting('tooltip_format_custom')) === 'r') { - $tooltip_langcode = 'en'; - } - - /** @var \Drupal\rdf_entity\RdfInterface $entity */ - $entity = $items->getEntity(); - - $tags = []; - // If the entity is a OG group, add the cache tag of its group content. - if ($entity instanceof GroupInterface) { - // Add all the node group content once. - $tags = Cache::mergeTags($tags, Cache::buildTags('og-group-content', $entity->getCacheTagsToInvalidate())); - } - - return [ - [ - '#theme' => 'time', - '#attributes' => [ - // This attribute is used by the jquery plugin to get the time. - 'datetime' => $this->dateFormatter->format($items[0]->value, 'html_datetime', $timezone, $langcode), - 'class' => [ - 'js-joinup-timestamp-timeago', - ], - // Show a tooltip on mouse hover so the user can read the exact date. - 'title' => $this->dateFormatter->format($items[0]->value, $tooltip_format, $tooltip_format_custom, $timezone, $tooltip_langcode), - ], - // Non-JS browsers will display this formatted date/time but most of the - // browsers will replace this inner text with a "time ago" string - // generated by the timeago jquery plugin (http://timeago.yarp.com). - // @see web/modules/custom/joinup_core/js/timestamp_timeago.js - // @see http://timeago.yarp.com. - '#text' => $this->dateFormatter->format($items[0]->value, $date_format, $custom_date_format, $timezone, $langcode), - ], - '#attached' => [ - 'library' => [ - 'joinup_core/timeago', - 'joinup_core/timestamp_timeago', - ], - 'drupalSettings' => [ - 'joinupCore' => [ - // Site builders are able to configure the plugin settings. - 'timeagoSettings' => $this->getSetting('timeago_settings'), - ], - ], - ], - '#cache' => [ - 'tags' => $tags, - 'contexts' => [ - 'timezone', - ], - ], - ]; - } - - /** - * Provides an element validation callback for 'timeago_settings'. - * - * We use this element validation callback to decode the timeago settings Yaml - * in order to store it as an array. - * - * @param array $element - * The element render array. - * @param \Drupal\Core\Form\FormStateInterface $form_state - * The form state object. - * @param array $complete_form - * The full form render array. - */ - public static function decodeTimeagoSettings(array &$element, FormStateInterface $form_state, array &$complete_form) { - $timeago_settings = []; - if ($yaml = trim($form_state->getValue($element['#parents']))) { - try { - $timeago_settings = Yaml::decode($yaml) ?: []; - } - catch (\Exception $exception) { - // Nothing to do. - } - } - $form_state->setValue($element['#parents'], $timeago_settings); - } - -} diff --git a/web/modules/custom/joinup_core/tests/src/ExistingSite/FileUrlFieldTest.php b/web/modules/custom/joinup_core/tests/src/ExistingSite/FileUrlFieldTest.php index 604a99c8a61927737cdcb2c4c73fe74a5b3241b3..3365a19ff28a913c7e67c62d3ddbfde9ccce3b09 100644 --- a/web/modules/custom/joinup_core/tests/src/ExistingSite/FileUrlFieldTest.php +++ b/web/modules/custom/joinup_core/tests/src/ExistingSite/FileUrlFieldTest.php @@ -20,10 +20,6 @@ * Provides methods specifically for testing File module's field handling. * * @group joinup_core - * @group wip - * This test is temporarily disabled until ISAICP-7485 is fixed. - * - * @see https://citnet.tech.ec.europa.eu/CITnet/jira/browse/ISAICP-7485 */ class FileUrlFieldTest extends JoinupExistingSiteTestBase { diff --git a/web/modules/custom/joinup_debug/joinup_debug.permissions.yml b/web/modules/custom/joinup_debug/joinup_debug.permissions.yml new file mode 100644 index 0000000000000000000000000000000000000000..e9e826ce7dec875f01441d4b5d47d1e672fbc87a --- /dev/null +++ b/web/modules/custom/joinup_debug/joinup_debug.permissions.yml @@ -0,0 +1,14 @@ +joinup debug - access vocabulary importer: + title: 'Import RDF vocabularies' + description: 'Allows access to "/joinup-debug/vocabulary-importer".' + restrict access: true + +joinup debug - access sparql console: + title: 'Run direct SPARQL queries' + description: 'Allows access to "/joinup-debug/sparql-console".' + restrict access: true + +joinup debug - access vocabulary index: + title: 'Reindex topics' + description: 'Allows access to "/joinup-debug/vocabulary-index".' + restrict access: true diff --git a/web/modules/custom/joinup_debug/joinup_debug.routing.yml b/web/modules/custom/joinup_debug/joinup_debug.routing.yml new file mode 100644 index 0000000000000000000000000000000000000000..50040dbc0b68f6471009751026f50cc19c1623f2 --- /dev/null +++ b/web/modules/custom/joinup_debug/joinup_debug.routing.yml @@ -0,0 +1,23 @@ +joinup_rdf.vocabulary_importer: + path: '/joinup-debug/vocabulary-importer' + defaults: + _title: 'Vocabulary Importer' + _form: 'Drupal\joinup_debug\Form\VocabularyImporterForm' + requirements: + _permission: 'joinup debug - access vocabulary importer' + +joinup_rdf.sparql_console: + path: '/joinup-debug/sparql-console' + defaults: + _title: 'Sparql Console' + _form: 'Drupal\joinup_debug\Form\SparqlConsoleForm' + requirements: + _permission: 'joinup debug - access sparql console' + +joinup_debug.vocabulary_index: + path: '/joinup-debug/vocabulary-index' + defaults: + _title: 'Vocabulary Index' + _form: 'Drupal\joinup_debug\Form\VocabularyIndexForm' + requirements: + _permission: 'joinup debug - access vocabulary index' diff --git a/web/modules/custom/joinup_rdf/src/Form/SparqlQueryForm.php b/web/modules/custom/joinup_debug/src/Form/SparqlConsoleForm.php similarity index 98% rename from web/modules/custom/joinup_rdf/src/Form/SparqlQueryForm.php rename to web/modules/custom/joinup_debug/src/Form/SparqlConsoleForm.php index fcb29395890eb6129c0280665e81852c962235cb..9e07d20ccedcc6528fc7cb9a151786275cf49734 100644 --- a/web/modules/custom/joinup_rdf/src/Form/SparqlQueryForm.php +++ b/web/modules/custom/joinup_debug/src/Form/SparqlConsoleForm.php @@ -2,7 +2,7 @@ declare(strict_types = 1); -namespace Drupal\joinup_rdf\Form; +namespace Drupal\joinup_debug\Form; use Drupal\Component\Utility\Random; use Drupal\Core\Form\FormBase; @@ -13,7 +13,7 @@ /** * Provides a Joinup RDF form. */ -final class SparqlQueryForm extends FormBase { +final class SparqlConsoleForm extends FormBase { /** * The SPARQL endpoint. diff --git a/web/modules/custom/joinup_rdf/src/Form/VocabularyImporterForm.php b/web/modules/custom/joinup_debug/src/Form/VocabularyImporterForm.php similarity index 98% rename from web/modules/custom/joinup_rdf/src/Form/VocabularyImporterForm.php rename to web/modules/custom/joinup_debug/src/Form/VocabularyImporterForm.php index 237a51aa07d11e00572cb9fae73b248c657c127b..a6778b34ede011136a1d9320c88a1737fe2dc8b3 100644 --- a/web/modules/custom/joinup_rdf/src/Form/VocabularyImporterForm.php +++ b/web/modules/custom/joinup_debug/src/Form/VocabularyImporterForm.php @@ -2,7 +2,7 @@ declare(strict_types = 1); -namespace Drupal\joinup_rdf\Form; +namespace Drupal\joinup_debug\Form; use Drupal\Core\Form\FormBase; use Drupal\Core\Form\FormStateInterface; diff --git a/web/modules/custom/joinup_debug/src/Form/VocabularyIndexForm.php b/web/modules/custom/joinup_debug/src/Form/VocabularyIndexForm.php new file mode 100644 index 0000000000000000000000000000000000000000..8740961eaddd5baa9fb7fb4459e2ee5caf99ddc3 --- /dev/null +++ b/web/modules/custom/joinup_debug/src/Form/VocabularyIndexForm.php @@ -0,0 +1,240 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\joinup_debug\Form; + +use Drupal\Core\Entity\EntityTypeBundleInfoInterface; +use Drupal\Core\Entity\EntityTypeManagerInterface; +use Drupal\Core\Form\FormBase; +use Drupal\Core\Form\FormStateInterface; +use Drupal\Core\StringTranslation\TranslatableMarkup; +use Drupal\search_api\Task\IndexTaskManagerInterface; +use Symfony\Component\DependencyInjection\ContainerInterface; + +/** + * Provides a Joinup debug form. + */ +final class VocabularyIndexForm extends FormBase { + + /** + * Constructs a new VocabularyIndexForm object. + * + * @param \Drupal\Core\Entity\EntityTypeBundleInfoInterface $bundleInfo + * The entity type bundle info. + * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entityTypeManager + * The entity type manager. + * @param \Drupal\search_api\Task\IndexTaskManagerInterface $indexTaskManager + * The index task manager. + */ + public function __construct(protected EntityTypeBundleInfoInterface $bundleInfo, protected EntityTypeManagerInterface $entityTypeManager, protected IndexTaskManagerInterface $indexTaskManager) {} + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container): self { + return new static( + $container->get('entity_type.bundle.info'), + $container->get('entity_type.manager'), + $container->get('search_api.index_task_manager') + ); + } + + /** + * {@inheritdoc} + */ + public function getFormId(): string { + return 'joinup_debug_topic_reindex'; + } + + /** + * {@inheritdoc} + */ + public function buildForm(array $form, FormStateInterface $form_state): array { + $vocabularies = $this->bundleInfo->getBundleInfo('taxonomy_term'); + foreach ($vocabularies as $vocabulary => $info) { + $vocabularies[$vocabulary] = ucfirst(str_replace(['_', '-'], ' ', $vocabulary)); + } + + $form['vocabulary'] = [ + '#type' => 'select', + '#title' => $this->t('Vocabulary'), + '#description' => $this->t('Select a vocabulary to view the index status and reindex.'), + '#options' => $vocabularies, + '#ajax' => [ + 'callback' => '::loadIndexStatus', + 'wrapper' => 'joinup-debug-topic-reindex-wrapper', + ], + '#required' => TRUE, + ]; + + $form['index_status'] = [ + '#type' => 'container', + '#attributes' => [ + 'id' => 'joinup-debug-topic-reindex-wrapper', + ], + ]; + + if ($form_state->hasValue('vocabulary')) { + $form['index_status']['details']['#markup'] = $this->t('Index status for vocabulary %vocabulary: %indexed/%total', [ + '%vocabulary' => $form_state->getValue('vocabulary'), + '%indexed' => $form_state->get('indexed_items'), + '%total' => $form_state->get('total_items'), + ]); + + // Optionally, filter by specific terms - textarea with term IDs. + $form['index_status']['filter'] = [ + '#type' => 'textarea', + '#title' => $this->t('Filter by term IDs'), + '#description' => $this->t('Enter a list of term IDs to filter the index by. One term ID per line.'), + ]; + } + + $form['actions'] = [ + '#type' => 'submit', + '#value' => $this->t('Reindex'), + '#submit' => ['::reindex'], + ]; + + return $form; + } + + /** + * Ajax callback to load the index status. + * + * @param array $form + * The form. + * @param \Drupal\Core\Form\FormStateInterface $form_state + * The form state. + * + * @return array + * The response form part. + */ + public function loadIndexStatus(array $form, FormStateInterface $form_state): array { + $vocabulary = $form_state->getValue('vocabulary'); + /** @var \Drupal\search_api\IndexInterface $index */ + $index = $this->entityTypeManager->getStorage('search_api_index')->load('published'); + $datasourceId = 'entity:taxonomy_term'; + $indexedItems = $index->getTrackerInstance()->getIndexedItemsCount($datasourceId); + $remainingItems = $index->getTrackerInstance()->getRemainingItemsCount($datasourceId); + $totalItems = $index->getTrackerInstance()->getTotalItemsCount($datasourceId); + $form['index_status']['details']['#markup'] = $this->t('Index status for vocabulary %vocabulary: %indexed indexed, %remaining remaining, %total total', [ + '%vocabulary' => $vocabulary, + '%indexed' => $indexedItems, + '%remaining' => $remainingItems, + '%total' => $totalItems, + ]); + + return $form['index_status']; + } + + /** + * Reindex the selected vocabulary. + * + * @param array $form + * The form. + * @param \Drupal\Core\Form\FormStateInterface $form_state + * The form state. + */ + public function reindex(array $form, FormStateInterface $form_state): void { + $vocabulary = $form_state->getValue('vocabulary'); + $filter = array_filter(array_map('trim', explode("\n", $form_state->getValue('filter')))); + + /** @var \Drupal\search_api\IndexInterface $index */ + $index = $this->entityTypeManager->getStorage('search_api_index')->load('published'); + $remainingItemIds = $index->getTrackerInstance()->getRemainingItems(-1, 'entity:taxonomy_term'); + $items = $index->loadItemsMultiple($remainingItemIds); + $items = array_keys($items); + + $items = array_merge($items, $this->getSearchApiItemIds('node', 'field_topic', $filter)); + $items = array_merge($items, $this->getSearchApiItemIds('rdf_entity', 'field_topic', $filter)); + + $batch = [ + 'title' => new TranslatableMarkup('Reindexing vocabulary %vocabulary', ['%vocabulary' => $vocabulary]), + 'finished' => [self::class, 'batchFinished'], + ]; + + foreach ($items as $item) { + // Add items in a batch operation to not stress the server. + $batch['operations'][] = [ + [self::class, 'indexItems'], + [$item], + ]; + } + + batch_set($batch); + } + + /** + * Index items in a batch operation. + * + * @param string $item + * The datasource ID. + * @param array $context + * The batch context. + */ + public static function indexItems(string $item, array &$context): void { + /** @var \Drupal\search_api\IndexInterface $index */ + $index = \Drupal::entityTypeManager()->getStorage('search_api_index')->load('published'); + $loadedItems = $index->loadItemsMultiple([$item]); + $index->indexSpecificItems($loadedItems); + } + + /** + * Batch finished callback. + * + * @param bool $success + * Whether the batch was successful. + * @param array $results + * The batch results. + * @param array $operations + * The batch operations. + */ + public static function batchFinished(bool $success, array $results, array $operations): void { + if ($success) { + \Drupal::messenger()->addStatus('The batch has been processed successfully.'); + } + else { + \Drupal::messenger()->addError('An error occurred. Please check the logs for more information.'); + } + } + + /** + * Returns a list of search API item IDs for a given entity type and field. + * + * @param string $entityTypeId + * The entity type ID. + * @param string $fieldName + * The field name that refers to the term. + * @param array|null $termIds + * (optional) The term IDs to filter by. + * + * @return array + * The list of search API item IDs. + */ + protected function getSearchApiItemIds(string $entityTypeId, string $fieldName, ?array $termIds): array { + $query = $this->entityTypeManager->getStorage($entityTypeId)->getQuery(); + if ($termIds) { + $query->condition($fieldName, $termIds, 'IN'); + } + else { + $query->exists($fieldName); + } + $query->accessCheck(FALSE); + + return array_map(function (mixed $id) use ($entityTypeId): string { + return "entity:$entityTypeId/$id:en"; + }, $query->execute()); + } + + /** + * {@inheritdoc} + */ + public function validateForm(array &$form, FormStateInterface $form_state): void {} + + /** + * {@inheritdoc} + */ + public function submitForm(array &$form, FormStateInterface $form_state): void {} + +} diff --git a/web/modules/custom/joinup_federation/src/Plugin/pipeline/Step/JoinupValidation.php b/web/modules/custom/joinup_federation/src/Plugin/pipeline/Step/JoinupValidation.php index 91a7689d080ec3abcecd72885277a04d10220543..5d7912fbefa0660eaaf9fb9ab66233217a1353aa 100644 --- a/web/modules/custom/joinup_federation/src/Plugin/pipeline/Step/JoinupValidation.php +++ b/web/modules/custom/joinup_federation/src/Plugin/pipeline/Step/JoinupValidation.php @@ -49,13 +49,11 @@ class JoinupValidation extends JoinupFederationStepPluginBase implements Pipelin protected static $nonCriticalViolationWhitelist = [ 'NotNull' => [ 'solution' => [ - 'field_is_banner', 'field_is_logo', 'field_is_solution_type', 'field_topic', ], 'asset_release' => [ - 'field_isr_banner', 'field_isr_logo', 'field_topic', ], diff --git a/web/modules/custom/joinup_group/config/schema/joinup_group.views.schema.yml b/web/modules/custom/joinup_group/config/schema/joinup_group.views.schema.yml new file mode 100644 index 0000000000000000000000000000000000000000..0a7469c33331b7e6e4ac2bbc8f7995d77813fb6e --- /dev/null +++ b/web/modules/custom/joinup_group/config/schema/joinup_group.views.schema.yml @@ -0,0 +1,9 @@ +# Schema for the views plugins of the Joinup group module. + +views.argument_validator.joinup_group_entity_id: + type: views.argument_validator_entity + label: 'Joinup group entity ID' + mapping: + rdf_entity_id: + type: string + label: 'RDF entity ID' diff --git a/web/modules/custom/joinup_group/joinup_group.module b/web/modules/custom/joinup_group/joinup_group.module index 5434541a9a49debe2b78cb4a09111687bf95f384..cd06f0d92bf55d56263f1099a511318ea4337d08 100644 --- a/web/modules/custom/joinup_group/joinup_group.module +++ b/web/modules/custom/joinup_group/joinup_group.module @@ -328,7 +328,6 @@ function joinup_group_rdf_entity_presave(EntityInterface $entity) { $field_data = [ 'logo' => ['field_ar_logo', 'field_is_logo'], - 'banner' => ['field_ar_banner', 'field_is_banner'], ]; $file_system = \Drupal::service('file_system'); diff --git a/web/modules/custom/joinup_group/src/Plugin/views/argument_validator/JoinupGroupEntityIdValidator.php b/web/modules/custom/joinup_group/src/Plugin/views/argument_validator/JoinupGroupEntityIdValidator.php new file mode 100644 index 0000000000000000000000000000000000000000..8b83ee2728d12f731210f268f83decc3b29c301f --- /dev/null +++ b/web/modules/custom/joinup_group/src/Plugin/views/argument_validator/JoinupGroupEntityIdValidator.php @@ -0,0 +1,52 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\joinup_group\Plugin\views\argument_validator; + +use Drupal\Core\Entity\EntityInterface; +use Drupal\Core\Form\FormStateInterface; +use Drupal\views\Plugin\views\argument_validator\Entity; + +/** + * Defines argument validator plugin for the Joinup group entity ID. + * + * @ViewsArgumentValidator( + * id = "joinup_group_entity_id", + * title = @Translation("Joinup group entity ID"), + * entity_type = "rdf_entity", + * ) + */ +class JoinupGroupEntityIdValidator extends Entity { + + /** + * {@inheritdoc} + */ + public function buildOptionsForm(&$form, FormStateInterface $form_state): void { + parent::buildOptionsForm($form, $form_state); + + $form['rdf_entity_id'] = [ + '#type' => 'textfield', + '#title' => $this->t('Entity ID'), + '#default_value' => $this->options['rdf_entity_id'], + ]; + } + + /** + * {@inheritdoc} + */ + protected function validateEntity(EntityInterface $entity): bool { + return ($entity->id() === $this->options['rdf_entity_id']) && parent::validateEntity($entity); + } + + /** + * {@inheritdoc} + */ + protected function defineOptions(): array { + $options = parent::defineOptions(); + $options['rdf_entity_id'] = ['default' => FALSE]; + + return $options; + } + +} diff --git a/web/modules/custom/joinup_group/tests/src/ExistingSite/GroupContentUpdateUrlAliasTest.php b/web/modules/custom/joinup_group/tests/src/ExistingSite/GroupContentUpdateUrlAliasTest.php index da762dad6a6517b96c4c1dc5f008f05db6a18d77..6e0ca1793876d9fe8dd91e3b2fa4176ede8a87b4 100644 --- a/web/modules/custom/joinup_group/tests/src/ExistingSite/GroupContentUpdateUrlAliasTest.php +++ b/web/modules/custom/joinup_group/tests/src/ExistingSite/GroupContentUpdateUrlAliasTest.php @@ -411,7 +411,7 @@ protected function createContent(): void { // Collection nodes. for ($i = 1; $i <= 2; $i++) { foreach ($collection_node_bundles as $bundle) { - $this->entity['node'][$bundle]["${i}"] = $this->createNode([ + $this->entity['node'][$bundle]["{$i}"] = $this->createNode([ 'type' => $bundle, 'title' => "{$bundle} {$i}", 'og_audience' => 'http://collection', diff --git a/web/modules/custom/joinup_html_stripper/src/Plugin/Field/FieldFormatter/StrippedHTMLFormatter.php b/web/modules/custom/joinup_html_stripper/src/Plugin/Field/FieldFormatter/StrippedHTMLFormatter.php index 9e90d093cb2576a1835070caa02d32623aa3a32f..bd482d26db560d2df975d5ee00a18b0a6e2d7dd4 100644 --- a/web/modules/custom/joinup_html_stripper/src/Plugin/Field/FieldFormatter/StrippedHTMLFormatter.php +++ b/web/modules/custom/joinup_html_stripper/src/Plugin/Field/FieldFormatter/StrippedHTMLFormatter.php @@ -7,7 +7,7 @@ use Drupal\Core\Field\FieldItemListInterface; use Drupal\Core\Field\FormatterBase; use Drupal\Core\Form\FormStateInterface; -use Drupal\smart_trim\Truncate\TruncateHTML; +use Drupal\smart_trim\TruncateHTML; /** * Field formatter which strips all HTML. diff --git a/web/modules/custom/joinup_invite/src/InvitationMessageHelper.php b/web/modules/custom/joinup_invite/src/InvitationMessageHelper.php index 5c3e27a62d8d872ffb9227f739ead495785749e1..9072ddbf437c7637253a68110b1c9348f362dce9 100644 --- a/web/modules/custom/joinup_invite/src/InvitationMessageHelper.php +++ b/web/modules/custom/joinup_invite/src/InvitationMessageHelper.php @@ -90,7 +90,7 @@ protected function getDefaultArguments(InvitationInterface $invitation): array { 'hash' => InvitationController::generateHash($invitation, $action), ]; $url_options = ['absolute' => TRUE]; - $arguments["@invitation:${action}_url"] = Url::fromRoute('joinup_invite.update_invitation', $url_arguments, $url_options)->toString(); + $arguments["@invitation:{$action}_url"] = Url::fromRoute('joinup_invite.update_invitation', $url_arguments, $url_options)->toString(); } $arguments['@invitation:role'] = ''; diff --git a/web/modules/custom/joinup_like/joinup_like.info.yml b/web/modules/custom/joinup_like/joinup_like.info.yml index 2ae9ba5ac6527a358a87eb3e145398527698b591..0d203fc97edc7d752ba8ee7ba0f598f8c3852bd3 100644 --- a/web/modules/custom/joinup_like/joinup_like.info.yml +++ b/web/modules/custom/joinup_like/joinup_like.info.yml @@ -6,3 +6,4 @@ core_version_requirement: ">= 9.4" dependencies: - flag:flag + - joinup_modal:joinup_modal diff --git a/web/modules/custom/joinup_like/joinup_like.module b/web/modules/custom/joinup_like/joinup_like.module index 5b7086ab3bb95f0aeb6b0d3baa78a2e1f8e943d8..9cafb603835e35f17cdcca993d5f6140211c586e 100644 --- a/web/modules/custom/joinup_like/joinup_like.module +++ b/web/modules/custom/joinup_like/joinup_like.module @@ -12,9 +12,6 @@ */ function joinup_like_theme(array $existing, string $type, string $theme, string $path): array { return [ - 'joinup_like_anonymous' => [ - 'variables' => [], - ], 'flag_count_archived' => [ 'variables' => [ 'flag' => NULL, @@ -25,6 +22,14 @@ function joinup_like_theme(array $existing, string $type, string $theme, string ]; } +/** + * Implements hook_preprocess_HOOK(). + */ +function joinup_like_preprocess_joinup_modal_anonymous__like(&$variables): void { + $variables['title'] = t('Sign in or register to like this content'); + $variables['description'] = t('Liking content shows your appreciation to content creators and helps other users find good content'); +} + /** * Implements hook_theme_suggestions_alter(). */ diff --git a/web/modules/custom/joinup_like/joinup_like.routing.yml b/web/modules/custom/joinup_like/joinup_like.routing.yml index 1aacd011ef5c1dbbf566bf64d8093e4eefb259b1..431a1c93d91e0885476a6e7ceee1d538f9d39216 100644 --- a/web/modules/custom/joinup_like/joinup_like.routing.yml +++ b/web/modules/custom/joinup_like/joinup_like.routing.yml @@ -1,11 +1,3 @@ -joinup_like.anonymous_dialog: - path: '/like/not-logged-in' - defaults: - _controller: '\Drupal\joinup_like\Controller\JoinupLikeAnonymousController::render' - _title: 'You are not logged in' - requirements: - _access: 'TRUE' - joinup_like.rdf.action_link_flag: path: '/joinup-like/flag/{flag}/{entity_id}/{view_mode}' defaults: diff --git a/web/modules/custom/joinup_like/src/Controller/JoinupLikeAnonymousController.php b/web/modules/custom/joinup_like/src/Controller/JoinupLikeAnonymousController.php deleted file mode 100644 index 9dbdb4e93063edfedc7ba5e7d88ad4c7b8e8b01e..0000000000000000000000000000000000000000 --- a/web/modules/custom/joinup_like/src/Controller/JoinupLikeAnonymousController.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php - -declare(strict_types = 1); - -namespace Drupal\joinup_like\Controller; - -use Drupal\Core\Controller\ControllerBase; - -/** - * Controller for displaying a joinup like anonymous page. - */ -class JoinupLikeAnonymousController extends ControllerBase { - - /** - * Returns a render-able array for a joinup like anonymous page. - * - * @return array - * The "joinup_like_anonymous" render array. - */ - public function render(): array { - return [ - '#theme' => 'joinup_like_anonymous', - ]; - } - -} diff --git a/web/modules/custom/joinup_like/templates/joinup-like-anonymous.html.twig b/web/modules/custom/joinup_like/templates/joinup-like-anonymous.html.twig index 41d65bff3167b75519f4eafd63cb8dc12c844106..9976cb62fffb31ef3a1a877db4b1fe2874b82591 100644 --- a/web/modules/custom/joinup_like/templates/joinup-like-anonymous.html.twig +++ b/web/modules/custom/joinup_like/templates/joinup-like-anonymous.html.twig @@ -13,11 +13,11 @@ */ #} <div> - <h2>{{ 'Login or register to like this content'|t }}</h2> - <p>{{ 'Like this content will help other people find reliable information about what they search!'|t }}</p> + <h2>{{ 'Sign in or register to like this content'|t }}</h2> + <p>{{ 'Liking content shows your appreciation to content creators and helps other users find good content'|t }}</p> <div> <p>{{ 'Already have an account?'|t }}</p> - <div><a href="{{ path('user.login') }}">{{ 'Log in'|t }}</a></div> + <div><a href="{{ path('user.login') }}">{{ 'Sign in'|t }}</a></div> <p>{{ 'New member?'|t }}</p> <div><a href="{{ path('user.register') }}">{{ 'Register'|t }}</a></div> </div> diff --git a/web/modules/custom/joinup_modal/joinup_modal.info.yml b/web/modules/custom/joinup_modal/joinup_modal.info.yml new file mode 100644 index 0000000000000000000000000000000000000000..46a281d33b0d2aa6f110b017ea115fdef3b9bb01 --- /dev/null +++ b/web/modules/custom/joinup_modal/joinup_modal.info.yml @@ -0,0 +1,7 @@ +name: 'Joinup modal' +description: 'Reusable modal for Joinup.' +type: module +package: Joinup +core_version_requirement: ">= 9.4" +dependencies: + - user:user diff --git a/web/modules/custom/joinup_modal/joinup_modal.module b/web/modules/custom/joinup_modal/joinup_modal.module new file mode 100644 index 0000000000000000000000000000000000000000..30121ce7779538c6e9bedf74350e76d12436fb59 --- /dev/null +++ b/web/modules/custom/joinup_modal/joinup_modal.module @@ -0,0 +1,34 @@ +<?php + +/** + * @file + * Main functions and hook implementations of the joinup_modal module. + */ + +declare(strict_types = 1); + +/** + * Implements hook_theme(). + */ +function joinup_modal_theme(): array { + return [ + 'joinup_modal_anonymous' => [ + 'variables' => [ + 'type' => NULL, + 'title' => NULL, + 'description' => NULL, + 'login' => NULL, + 'register' => NULL, + ], + ], + ]; +} + +/** + * Implements hook_theme_suggestions_HOOK(). + */ +function joinup_modal_theme_suggestions_joinup_modal_anonymous(array $variables): array { + return [ + 'joinup_modal_anonymous__' . $variables['type'], + ]; +} diff --git a/web/modules/custom/joinup_modal/joinup_modal.routing.yml b/web/modules/custom/joinup_modal/joinup_modal.routing.yml new file mode 100644 index 0000000000000000000000000000000000000000..0894a74fca88d1afda07e4f8c9bab1d0e841ea2e --- /dev/null +++ b/web/modules/custom/joinup_modal/joinup_modal.routing.yml @@ -0,0 +1,8 @@ +joinup_modal.anonymous: + path: '/modal/anonymous/{type}' + defaults: + _controller: '\Drupal\joinup_modal\Controller\JoinupModalAnonymousController::render' + _title: 'You are not signed in' + requirements: + _access: 'TRUE' + type: '[a-z]+' diff --git a/web/modules/custom/joinup_modal/src/Controller/JoinupModalAnonymousController.php b/web/modules/custom/joinup_modal/src/Controller/JoinupModalAnonymousController.php new file mode 100644 index 0000000000000000000000000000000000000000..641ed216c89530fcca73eb079b606dd9e8119edd --- /dev/null +++ b/web/modules/custom/joinup_modal/src/Controller/JoinupModalAnonymousController.php @@ -0,0 +1,38 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\joinup_modal\Controller; + +use Drupal\Core\Controller\ControllerBase; +use Drupal\Core\Link; +use Drupal\Core\Url; + +/** + * Controller for displaying a joinup modal anonymous page. + */ +class JoinupModalAnonymousController extends ControllerBase { + + /** + * Returns a render-able array for a joinup modal anonymous page. + * + * @param string $type + * Modal type. + * + * @return array + * The "joinup_modal_anonymous" render array. + */ + public function render(string $type): array { + $login = Url::fromRoute('user.login'); + $register = Url::fromRoute('user.register'); + + return [ + '#theme' => 'joinup_modal_anonymous', + '#type' => $type, + '#title' => $this->t('You are not signed in'), + '#login' => new Link('Sign in', $login), + '#register' => new Link('Register', $register), + ]; + } + +} diff --git a/web/modules/custom/joinup_modal/templates/joinup-modal-anonymous.html.twig b/web/modules/custom/joinup_modal/templates/joinup-modal-anonymous.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..487e206bdf29be33cb56ad4eb1538c478f91b8bc --- /dev/null +++ b/web/modules/custom/joinup_modal/templates/joinup-modal-anonymous.html.twig @@ -0,0 +1,30 @@ +{# +/** + * @file + * Default theme implementation to display a not signed in modal dialog. + */ + +/** + * Template implementation to display the content of the modal dialog for users who are not signed in. + * + * Available variables: + * - title: Modal title. + * - description: Modal description. + * - login: Login link. + * - register: Register link. + * + * @see \Drupal\joinup_modal\Controller\JoinupModalAnonymousController::render() + * + * @ingroup themeable + */ +#} +<div> + <h2>{{ title }}</h2> + <p>{{ description }}</p> + <div> + <p>{{ 'Already have an account?'|t }}</p> + <div>{{ login }}</div> + <p>{{ 'New member?'|t }}</p> + <div>{{ register }}</div> + </div> +</div> diff --git a/web/modules/custom/joinup_paragraphs/joinup_paragraphs.info.yml b/web/modules/custom/joinup_paragraphs/joinup_paragraphs.info.yml index 59edcb3e6fdf80b15bab9f3b7ca5a1cd6c6eb96e..f0bd320d91c14377b80e4a15f3d3811854a2ceb2 100644 --- a/web/modules/custom/joinup_paragraphs/joinup_paragraphs.info.yml +++ b/web/modules/custom/joinup_paragraphs/joinup_paragraphs.info.yml @@ -7,3 +7,4 @@ core_version_requirement: ">= 9.4" dependencies: - json_field:json_field - paragraphs:paragraphs_type_permissions + - layout_paragraphs:layout_paragraphs diff --git a/web/modules/custom/joinup_paragraphs/joinup_paragraphs.module b/web/modules/custom/joinup_paragraphs/joinup_paragraphs.module index 486e494c53203e6b5fae9a011769874431a31969..b42890b47225046498077c817d493d71447a19a0 100644 --- a/web/modules/custom/joinup_paragraphs/joinup_paragraphs.module +++ b/web/modules/custom/joinup_paragraphs/joinup_paragraphs.module @@ -10,6 +10,7 @@ use Drupal\Core\Access\AccessResult; use Drupal\Core\Access\AccessResultInterface; use Drupal\Core\Session\AccountInterface; +use Drupal\Core\StringTranslation\TranslatableMarkup; use Drupal\joinup_group\Entity\GroupContentInterface; use Drupal\paragraphs\ParagraphInterface; @@ -109,3 +110,28 @@ function joinup_paragraphs_get_access(AccessResultInterface $access_result, stri return $access_result; } + +/** + * Implements hook_preprocess_HOOK(). + */ +function joinup_paragraphs_preprocess_layout_paragraphs_insert_component_btn(&$variables) { + if (isset($variables['title']) && + $variables['title'] instanceof TranslatableMarkup && + $variables['title']->getUntranslatedString() === 'Add section') { + $variables['title'] = t('Add layout'); + } +} + +/** + * Implements hook_theme(). + */ +function joinup_paragraphs_theme(): array { + return [ + 'joinup_paragraphs_heading' => [ + 'variables' => [ + 'level' => NULL, + 'text' => NULL, + ], + ], + ]; +} diff --git a/web/modules/custom/joinup_paragraphs/src/Access/LayoutParagraphsBuilderAccessOverrider.php b/web/modules/custom/joinup_paragraphs/src/Access/LayoutParagraphsBuilderAccessOverrider.php new file mode 100644 index 0000000000000000000000000000000000000000..476fbaaee006b24221eee7cc15eea7b77a16397e --- /dev/null +++ b/web/modules/custom/joinup_paragraphs/src/Access/LayoutParagraphsBuilderAccessOverrider.php @@ -0,0 +1,87 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\joinup_paragraphs\Access; + +use Drupal\Core\Access\AccessResultInterface; +use Drupal\Core\Entity\EntityTypeManagerInterface; +use Drupal\Core\Session\AccountInterface; +use Drupal\joinup_group\Entity\GroupContentInterface; +use Drupal\layout_paragraphs\Access\LayoutParagraphsBuilderAccess; +use Drupal\layout_paragraphs\LayoutParagraphsLayout; +use Drupal\og\OgAccessInterface; +use Drupal\paragraphs\ParagraphsTypeInterface; + +/** + * Layout paragraphs builder access overrider. + * + * Layout paragraph is not aware about our custom permissions for + * RDF/organic group. This decorator resolves that by calling + * userAccessGroupContentEntityOperation function on group entity. + */ +class LayoutParagraphsBuilderAccessOverrider extends LayoutParagraphsBuilderAccess { + + /** + * Constructs overrider. + * + * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entityTypeManager + * The entity type manager service. + * @param \Drupal\og\OgAccessInterface $ogAccess + * Organic access service. + */ + public function __construct( + EntityTypeManagerInterface $entityTypeManager, + protected OgAccessInterface $ogAccess + ) { + parent::__construct($entityTypeManager); + } + + /** + * It checks access. + * + * @param \Drupal\Core\Session\AccountInterface $account + * The account to check access for. + * @param \Drupal\layout_paragraphs\LayoutParagraphsLayout $layout_paragraphs_layout + * The layout paragraphs layout object. + * @param string|null $operation + * The operation being performed (i.e. 'create' or 'delete'). + * @param string|null $component_uuid + * The specific component being acted on. + * @param \Drupal\paragraphs\ParagraphsTypeInterface|null $paragraph_type + * The paragraph type. + * + * @return \Drupal\Core\Access\AccessResultInterface + * The access result. + * + * @throws \Drupal\joinup_group\Exception\MissingGroupException + */ + public function access( + AccountInterface $account, + LayoutParagraphsLayout $layout_paragraphs_layout, + ?string $operation = NULL, + ?string $component_uuid = NULL, + ?ParagraphsTypeInterface $paragraph_type = NULL + ): AccessResultInterface { + $entity = $layout_paragraphs_layout->getEntity(); + + // Use default approach in case it is not a group entity. + if (!$entity instanceof GroupContentInterface || !$entity->hasGroup()) { + return parent::access($account, $layout_paragraphs_layout, $operation, $component_uuid, $paragraph_type); + } + + $entityGroup = $entity->getGroup(); + + $access = $layout_paragraphs_layout->getParagraphsReferenceField() + ->access('edit', $account, TRUE); + + // It checks permission on the group entity instead of on content entity. + $lp_operation = $entity->isNew() ? 'create' : 'update'; + $access = $access->andIf($this->ogAccess->userAccessGroupContentEntityOperation($lp_operation, $entityGroup, $entity, $account)); + + $access->andIf(parent::access($account, $layout_paragraphs_layout, $operation, $component_uuid, $paragraph_type)); + + return $access; + } + +} diff --git a/web/modules/custom/joinup_paragraphs/src/JoinupParagraphsServiceProvider.php b/web/modules/custom/joinup_paragraphs/src/JoinupParagraphsServiceProvider.php new file mode 100644 index 0000000000000000000000000000000000000000..750f9c355efe3c05e879904b61a6625cf6bc3759 --- /dev/null +++ b/web/modules/custom/joinup_paragraphs/src/JoinupParagraphsServiceProvider.php @@ -0,0 +1,29 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\joinup_paragraphs; + +use Drupal\Core\DependencyInjection\ContainerBuilder; +use Drupal\Core\DependencyInjection\ServiceModifierInterface; +use Drupal\joinup_paragraphs\Access\LayoutParagraphsBuilderAccessOverrider; +use Symfony\Component\DependencyInjection\Reference; + +/** + * Overwrites services. + */ +class JoinupParagraphsServiceProvider implements ServiceModifierInterface { + + /** + * {@inheritdoc} + */ + public function alter(ContainerBuilder $container): void { + // Overrides layout_paragraphs.builder_access service. + if ($container->hasDefinition('layout_paragraphs.builder_access')) { + $definition = $container->getDefinition('layout_paragraphs.builder_access'); + $definition->setClass(LayoutParagraphsBuilderAccessOverrider::class) + ->addArgument(new Reference('og.access')); + } + } + +} diff --git a/web/modules/custom/joinup_paragraphs/src/Plugin/OgGroupResolver/LayoutParagraphsRouteGroupResolver.php b/web/modules/custom/joinup_paragraphs/src/Plugin/OgGroupResolver/LayoutParagraphsRouteGroupResolver.php new file mode 100644 index 0000000000000000000000000000000000000000..c38d13ea5eec95f1469c62be4bba13fd1737ed88 --- /dev/null +++ b/web/modules/custom/joinup_paragraphs/src/Plugin/OgGroupResolver/LayoutParagraphsRouteGroupResolver.php @@ -0,0 +1,48 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\joinup_paragraphs\Plugin\OgGroupResolver; + +use Drupal\joinup_group\Entity\GroupContentInterface; +use Drupal\layout_paragraphs\LayoutParagraphsLayout; +use Drupal\og\OgResolvedGroupCollectionInterface; +use Drupal\og\Plugin\OgGroupResolver\RouteGroupResolver; + +/** + * Resolves group from the layout paragraphs. + * + * @OgGroupResolver( + * id = "group_from_layout_paragraphs", + * label = "Group from Layout Paragraphs", + * description = @Translation("Resolves group from the layout paragraphs."), + * ) + */ +class LayoutParagraphsRouteGroupResolver extends RouteGroupResolver { + + /** + * {@inheritdoc} + */ + protected function getContentEntityPaths(): array { + return [ + '/layout-paragraphs-builder/{layout_paragraphs_layout}/choose-component' => 'layout_paragraphs_layout', + '/layout-paragraphs-builder/{layout_paragraphs_layout}/insert/{paragraph_type}' => 'layout_paragraphs_layout', + '/layout-paragraphs-builder/{layout_paragraphs_layout}/edit/{component_uuid}' => 'layout_paragraphs_layout', + ]; + } + + /** + * {@inheritdoc} + */ + public function resolve(OgResolvedGroupCollectionInterface $collection): void { + if (($layout_paragraph_layout = $this->getContentEntity()) && $layout_paragraph_layout instanceof LayoutParagraphsLayout) { + $entity = $layout_paragraph_layout->getEntity(); + + if ($entity instanceof GroupContentInterface && $entity->hasGroup()) { + $collection->addGroup($entity->getGroup(), ['route']); + $this->stopPropagation(); + } + } + } + +} diff --git a/web/modules/custom/joinup_paragraphs/src/Plugin/paragraphs/Behavior/AlignmentBehavior.php b/web/modules/custom/joinup_paragraphs/src/Plugin/paragraphs/Behavior/AlignmentBehavior.php new file mode 100644 index 0000000000000000000000000000000000000000..866af2ae7bb433f23e861d8297031cd93ced706d --- /dev/null +++ b/web/modules/custom/joinup_paragraphs/src/Plugin/paragraphs/Behavior/AlignmentBehavior.php @@ -0,0 +1,52 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\joinup_paragraphs\Plugin\paragraphs\Behavior; + +use Drupal\Core\Entity\Display\EntityViewDisplayInterface; +use Drupal\Core\Form\FormStateInterface; +use Drupal\paragraphs\Entity\Paragraph; +use Drupal\paragraphs\ParagraphInterface; +use Drupal\paragraphs\ParagraphsBehaviorBase; + +/** + * Provides a behavior for paragraphs alignment. + * + * @ParagraphsBehavior( + * id = "alignment", + * label = @Translation("Content alignment"), + * description = @Translation("Provides a behavior for content alignment."), + * ) + */ +class AlignmentBehavior extends ParagraphsBehaviorBase { + + /** + * Default alignment. + */ + const DEFAULT_ALIGNMENT = 'left'; + + /** + * {@inheritdoc} + */ + public function view(array &$build, Paragraph $paragraph, EntityViewDisplayInterface $display, $view_mode): void { + $build['#joinup_paragraph_alignment'] = $paragraph->getBehaviorSetting($this->getPluginId(), 'alignment', self::DEFAULT_ALIGNMENT); + } + + /** + * {@inheritdoc} + */ + public function buildBehaviorForm(ParagraphInterface $paragraph, array &$form, FormStateInterface $form_state): void { + $form['alignment'] = [ + '#type' => 'select', + '#title' => $this->t('Alignment'), + '#options' => [ + 'left' => $this->t('Left'), + 'center' => $this->t('Center'), + 'right' => $this->t('Right'), + ], + '#default_value' => $paragraph->getBehaviorSetting($this->getPluginId(), 'alignment', self::DEFAULT_ALIGNMENT), + ]; + } + +} diff --git a/web/modules/custom/joinup_paragraphs/src/Plugin/paragraphs/Behavior/BackgroundThemeBehavior.php b/web/modules/custom/joinup_paragraphs/src/Plugin/paragraphs/Behavior/BackgroundThemeBehavior.php new file mode 100644 index 0000000000000000000000000000000000000000..ce4a4dbcbd5cef04c953ac3ccf75a71ce5aa0d1f --- /dev/null +++ b/web/modules/custom/joinup_paragraphs/src/Plugin/paragraphs/Behavior/BackgroundThemeBehavior.php @@ -0,0 +1,48 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\joinup_paragraphs\Plugin\paragraphs\Behavior; + +use Drupal\Core\Entity\Display\EntityViewDisplayInterface; +use Drupal\Core\Form\FormStateInterface; +use Drupal\paragraphs\Entity\Paragraph; +use Drupal\paragraphs\ParagraphInterface; +use Drupal\paragraphs\ParagraphsBehaviorBase; + +/** + * Provides a behavior for paragraphs to set a background theme. + * + * @ParagraphsBehavior( + * id = "background_theme", + * label = @Translation("Background theme"), + * description = @Translation("Provides a behavior for paragraphs to set a background theme."), + * ) + */ +class BackgroundThemeBehavior extends ParagraphsBehaviorBase { + + /** + * {@inheritdoc} + */ + public function view(array &$build, Paragraph $paragraph, EntityViewDisplayInterface $display, $view_mode): void { + $theme = $paragraph->getBehaviorSetting($this->getPluginId(), 'background_theme'); + $theme ? $build['#attributes']['class'][] = 'paragraph--layout--' . $theme : NULL; + } + + /** + * {@inheritdoc} + */ + public function buildBehaviorForm(ParagraphInterface $paragraph, array &$form, FormStateInterface $form_state): void { + $form['background_theme'] = [ + '#type' => 'select', + '#title' => $this->t('Background theme'), + '#options' => [ + '' => $this->t('None'), + 'light' => $this->t('Light grey'), + 'secondary' => $this->t('Light blue'), + ], + '#default_value' => $paragraph->getBehaviorSetting($this->getPluginId(), 'background_theme'), + ]; + } + +} diff --git a/web/modules/custom/joinup_paragraphs/src/Plugin/paragraphs/Behavior/ColorBehavior.php b/web/modules/custom/joinup_paragraphs/src/Plugin/paragraphs/Behavior/ColorBehavior.php new file mode 100644 index 0000000000000000000000000000000000000000..47a8a529ff47ee982c9336dd8a03451674743432 --- /dev/null +++ b/web/modules/custom/joinup_paragraphs/src/Plugin/paragraphs/Behavior/ColorBehavior.php @@ -0,0 +1,96 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\joinup_paragraphs\Plugin\paragraphs\Behavior; + +use Drupal\Core\Entity\Display\EntityViewDisplayInterface; +use Drupal\Core\Entity\EntityFieldManagerInterface; +use Drupal\Core\Form\FormStateInterface; +use Drupal\Core\Theme\ThemeManagerInterface; +use Drupal\paragraphs\Entity\Paragraph; +use Drupal\paragraphs\ParagraphInterface; +use Drupal\paragraphs\ParagraphsBehaviorBase; +use Symfony\Component\DependencyInjection\ContainerInterface; + +/** + * Provides a behavior for paragraphs color. + * + * @ParagraphsBehavior( + * id = "color", + * label = @Translation("Content color"), + * description = @Translation("Provides a behavior for content color."), + * ) + */ +class ColorBehavior extends ParagraphsBehaviorBase { + + /** + * Default alignment. + */ + private const DEFAULT_COLOR = 'primary'; + + /** + * Constructs a new behaviour plugin instance. + * + * @param array $configuration + * A configuration array containing information about the plugin instance. + * @param string $pluginId + * The plugin_id for the plugin instance. + * @param mixed $pluginDefinition + * The plugin implementation definition. + * @param \Drupal\Core\Entity\EntityFieldManagerInterface $entityFieldManager + * The entity field manager. + * @param \Drupal\Core\Theme\ThemeManagerInterface $themeManager + * The theme manager service. + */ + public function __construct( + array $configuration, + $pluginId, + $pluginDefinition, + EntityFieldManagerInterface $entityFieldManager, + protected ThemeManagerInterface $themeManager, + ) { + parent::__construct($configuration, $pluginId, $pluginDefinition, $entityFieldManager); + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container, array $configuration, $pluginId, $pluginDefinition): self { + return new static( + $configuration, + $pluginId, + $pluginDefinition, + $container->get('entity_field.manager'), + $container->get('theme.manager'), + ); + } + + /** + * {@inheritdoc} + */ + public function view(array &$build, Paragraph $paragraph, EntityViewDisplayInterface $display, $view_mode): void { + $build['#joinup_paragraph_color'] = $paragraph->getBehaviorSetting($this->getPluginId(), 'color', self::DEFAULT_COLOR); + } + + /** + * {@inheritdoc} + */ + public function buildBehaviorForm(ParagraphInterface $paragraph, array &$form, FormStateInterface $form_state): void { + $options = [ + 'primary' => $this->t('Primary'), + 'brand' => $this->t('Brand'), + 'secondary' => $this->t('Secondary'), + ]; + + $this->themeManager->alter('paragraphs_behavior_color_options', $options); + + $form['color'] = [ + '#type' => 'select', + '#title' => $this->t('Color'), + '#options' => $options, + '#default_value' => $paragraph->getBehaviorSetting($this->getPluginId(), 'color', self::DEFAULT_COLOR), + ]; + } + +} diff --git a/web/modules/custom/joinup_paragraphs/src/Plugin/paragraphs/Behavior/ExtraClassBehavior.php b/web/modules/custom/joinup_paragraphs/src/Plugin/paragraphs/Behavior/ExtraClassBehavior.php new file mode 100644 index 0000000000000000000000000000000000000000..c5429957888b5798895e7629988cf86d76a2bf4c --- /dev/null +++ b/web/modules/custom/joinup_paragraphs/src/Plugin/paragraphs/Behavior/ExtraClassBehavior.php @@ -0,0 +1,49 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\joinup_paragraphs\Plugin\paragraphs\Behavior; + +use Drupal\Component\Utility\Html; +use Drupal\Core\Entity\Display\EntityViewDisplayInterface; +use Drupal\Core\Form\FormStateInterface; +use Drupal\paragraphs\Entity\Paragraph; +use Drupal\paragraphs\ParagraphInterface; +use Drupal\paragraphs\ParagraphsBehaviorBase; + +/** + * Provides a behavior for paragraphs to set custom classes. + * + * @ParagraphsBehavior( + * id = "extra_class", + * label = @Translation("Extra classes"), + * description = @Translation("Extra classes to be passed on the layout level."), + * ) + */ +class ExtraClassBehavior extends ParagraphsBehaviorBase { + + /** + * {@inheritdoc} + */ + public function view(array &$build, Paragraph $paragraph, EntityViewDisplayInterface $display, $view_mode): void { + $extraClasses = $paragraph->getBehaviorSetting($this->getPluginId(), 'extra_class'); + if ($extraClasses === NULL || empty(trim($extraClasses))) { + return; + } + + $build['#attributes']['class'] = array_merge($build['#attributes']['class'] ?? [], explode(' ', Html::getClass($extraClasses))); + } + + /** + * {@inheritdoc} + */ + public function buildBehaviorForm(ParagraphInterface $paragraph, array &$form, FormStateInterface $form_state): void { + $form['extra_class'] = [ + '#type' => 'textfield', + '#title' => $this->t('Extra classes'), + '#description' => $this->t('Extra classes to be passed on the layout level. You can input multiple classes separated by space.'), + '#default_value' => $paragraph->getBehaviorSetting($this->getPluginId(), 'extra_class'), + ]; + } + +} diff --git a/web/modules/custom/joinup_paragraphs/src/Plugin/paragraphs/Behavior/HeadingBehavior.php b/web/modules/custom/joinup_paragraphs/src/Plugin/paragraphs/Behavior/HeadingBehavior.php new file mode 100644 index 0000000000000000000000000000000000000000..3c19df6bc07ccc65303d4131a5c38ec2d82b9c5a --- /dev/null +++ b/web/modules/custom/joinup_paragraphs/src/Plugin/paragraphs/Behavior/HeadingBehavior.php @@ -0,0 +1,78 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\joinup_paragraphs\Plugin\paragraphs\Behavior; + +use Drupal\Core\Entity\Display\EntityViewDisplayInterface; +use Drupal\Core\Form\FormStateInterface; +use Drupal\paragraphs\Entity\Paragraph; +use Drupal\paragraphs\Entity\ParagraphsType; +use Drupal\paragraphs\ParagraphInterface; +use Drupal\paragraphs\ParagraphsBehaviorBase; + +/** + * Provides a paragraphs behaviour plugin for heading. + * + * @ParagraphsBehavior( + * id = "heading_behavior", + * label = @Translation("Heading"), + * description = @Translation("Configurable heading"), + * ) + */ +class HeadingBehavior extends ParagraphsBehaviorBase { + + /** + * Default heading level. + */ + const DEFAULT_LEVEL = 'h2'; + + /** + * {@inheritdoc} + */ + public static function isApplicable(ParagraphsType $paragraphsType): bool { + return $paragraphsType->id() === 'heading'; + } + + /** + * {@inheritdoc} + */ + public function view(array &$build, Paragraph $paragraph, EntityViewDisplayInterface $display, $view_mode): void { + $level = $paragraph->getBehaviorSetting($this->getPluginId(), 'level', self::DEFAULT_LEVEL); + + $build['paragraph_heading'][0] = [ + '#theme' => 'joinup_paragraphs_heading', + '#level' => $level, + '#text' => $paragraph->get('paragraph_heading')->getString(), + ]; + } + + /** + * {@inheritdoc} + */ + public function buildBehaviorForm(ParagraphInterface $paragraph, array &$form, FormStateInterface $form_state): array { + $form['level'] = [ + '#type' => 'select', + '#title' => $this->t('Heading level'), + '#default_value' => $paragraph->getBehaviorSetting($this->getPluginId(), 'level', self::DEFAULT_LEVEL), + '#options' => [ + 'h2' => $this->t('H2 heading'), + 'h3' => $this->t('H3 heading'), + 'h4' => $this->t('H4 heading'), + 'h5' => $this->t('H5 heading'), + ], + ]; + + return $form; + } + + /** + * {@inheritdoc} + */ + public function settingsSummary(Paragraph $paragraph): array { + $level = $paragraph->getBehaviorSetting($this->getPluginId(), 'level', self::DEFAULT_LEVEL); + + return [$this->t('Heading level : @level', ['@level' => $level])]; + } + +} diff --git a/web/modules/custom/joinup_paragraphs/templates/joinup-paragraphs-heading.html.twig b/web/modules/custom/joinup_paragraphs/templates/joinup-paragraphs-heading.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..6717e61673d8377af1a09a00ab05aa882769e9af --- /dev/null +++ b/web/modules/custom/joinup_paragraphs/templates/joinup-paragraphs-heading.html.twig @@ -0,0 +1,15 @@ +{# +/** +* @file +* Default theme implementation to present a heading paragraph. +* +* Available variables: +* - level : The heading level (h1 - h6). +* - text : The text for within the heading. +* +* @see template_preprocess_heading() +* +* @ingroup themeable +*/ +#} +<{{ level }}>{{ text }}</{{ level }}> diff --git a/web/modules/custom/joinup_poll/joinup_poll.info.yml b/web/modules/custom/joinup_poll/joinup_poll.info.yml new file mode 100644 index 0000000000000000000000000000000000000000..cf947a6c2afa8bd5b7f3b957fa1c0291ec9ffd24 --- /dev/null +++ b/web/modules/custom/joinup_poll/joinup_poll.info.yml @@ -0,0 +1,9 @@ +name: 'Joinup Poll' +description: 'Poll customisation.' +type: module +package: Joinup +core_version_requirement: ">= 9.4" + +dependencies: + - joinup_modal:joinup_modal + - poll:poll diff --git a/web/modules/custom/joinup_poll/joinup_poll.module b/web/modules/custom/joinup_poll/joinup_poll.module new file mode 100644 index 0000000000000000000000000000000000000000..9511560e52c28b5ab1f3b7bd5da123d380f57874 --- /dev/null +++ b/web/modules/custom/joinup_poll/joinup_poll.module @@ -0,0 +1,129 @@ +<?php + +/** + * @file + * Main functions and hook implementations of the Joinup Poll module. + */ + +declare(strict_types = 1); + +use Drupal\Core\Form\FormStateInterface; +use Drupal\poll\PollInterface; + +/** + * Implements hook_preprocess_HOOK(). + */ +function joinup_poll_preprocess_poll_vote(array &$variables): void { + /** @var \Drupal\poll\PollInterface $poll */ + $poll = $variables['form']['#entity']; + + _joinup_poll_add_summary($poll, $variables); +} + +/** + * Implements hook_form_BASE_FORM_ID_alter(). + */ +function joinup_poll_form_poll_view_form_alter(array &$form, FormStateInterface $form_state, string $form_id): void { + if (isset($form['actions']['vote'])) { + // Add auto submission on radio button too. + $form['choice']['#ajax'] = $form['actions']['vote']['#ajax']; + $form['choice']['#ajax']['trigger_as'] = ['name' => 'vote']; + } +} + +/** + * Implements hook_preprocess_HOOK(). + */ +function joinup_poll_preprocess_poll_results(array &$variables): void { + _joinup_poll_add_summary($variables['poll'], $variables); +} + +/** + * Implements hook_preprocess_HOOK(). + */ +function joinup_poll_preprocess_poll_meter(array &$variables): void { + /** @var \Drupal\poll\PollInterface $poll */ + $poll = $variables['poll']; + + // Don't display number of votes. + if ($poll->get('show_number_of_results')->getString() === '0') { + $variables['display_value'] = explode(' ', $variables['display_value'])[0]; + } +} + +/** + * Implements hook_theme_suggestions_HOOK(). + */ +function joinup_poll_theme_suggestions_poll_meter(array $variables): array { + $user = \Drupal::currentUser(); + $userType = $user->isAnonymous() ? 'anonymous' : 'authenticated'; + + return [ + 'poll_meter__' . $userType, + ]; +} + +/** + * Implements hook_preprocess_HOOK(). + */ +function joinup_poll_preprocess_joinup_modal_anonymous__vote(&$variables): void { + $variables['title'] = t('Only signed in users can vote.'); + $variables['description'] = t('Please sign in if you already have an account or register a new account on EU Login to proceed voting!'); +} + +/** + * It adds the summary element. + * + * @param \Drupal\poll\PollInterface $poll + * Poll entity. + * @param array $variables + * Render array. + */ +function _joinup_poll_add_summary(PollInterface $poll, array &$variables): void { + $variables['summary'] = [ + '#theme' => 'joinup_poll_summary', + '#poll' => $poll, + ]; +} + +/** + * Implements hook_theme(). + */ +function joinup_poll_theme(): array { + return [ + 'joinup_poll_summary' => [ + 'variables' => [ + 'poll' => NULL, + ], + ], + ]; +} + +/** + * Prepares variables for joinup_poll_summary templates. + * + * Default template: joinup-poll-summary.html.twig. + * + * @param array $variables + * Template variables. + */ +function template_preprocess_joinup_poll_summary(array &$variables): void { + /** @var \Drupal\poll\PollInterface $poll */ + $poll = $variables['poll']; + + /** @var \Drupal\poll\PollVoteStorageInterface $pollVoteStorage */ + $pollVoteStorage = \Drupal::service('poll_vote.storage'); + + /** @var \Drupal\Core\Datetime\DateFormatterInterface $dateFormatter */ + $dateFormatter = \Drupal::service('date.formatter'); + + $variables['number_of_votes'] = $pollVoteStorage->getTotalVotes($poll); + $variables['show_number_of_votes'] = (bool) $poll->get('show_number_of_results') + ->getString(); + $variables['is_closed'] = $poll->isClosed(); + if ($poll->getRuntime() != 0) { + $variables['time_left'] = $dateFormatter->formatTimeDiffUntil( + $poll->getCreated() + $poll->getRuntime() + ); + } +} diff --git a/web/modules/custom/joinup_poll/joinup_poll.services.yml b/web/modules/custom/joinup_poll/joinup_poll.services.yml new file mode 100644 index 0000000000000000000000000000000000000000..fb80af33d9403b31023faa323ac64a0d05a432ba --- /dev/null +++ b/web/modules/custom/joinup_poll/joinup_poll.services.yml @@ -0,0 +1,9 @@ +services: + joinup_poll.route_subscriber: + class: Drupal\joinup_poll\Routing\PollRouteSubscriber + tags: + - { name: event_subscriber } + access_check.joinup_poll.ajax_request: + class: Drupal\joinup_poll\Access\AjaxRequestAccessCheck + tags: + - { name: access_check, applies_to: _ajax_request, needs_incoming_request: TRUE } diff --git a/web/modules/custom/joinup_poll/src/Access/AjaxRequestAccessCheck.php b/web/modules/custom/joinup_poll/src/Access/AjaxRequestAccessCheck.php new file mode 100644 index 0000000000000000000000000000000000000000..78f6aa0f6feece8aa58edeeaa99f7af4686d300c --- /dev/null +++ b/web/modules/custom/joinup_poll/src/Access/AjaxRequestAccessCheck.php @@ -0,0 +1,39 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\joinup_poll\Access; + +use Drupal\Core\Access\AccessResult; +use Drupal\Core\Routing\Access\AccessInterface; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\Routing\Route; + +/** + * Ajax request access check. + */ +class AjaxRequestAccessCheck implements AccessInterface { + + /** + * Performs access check. + * + * @param \Symfony\Component\Routing\Route $route + * Route . + * @param \Symfony\Component\HttpFoundation\Request $request + * Request. + * + * @return \Drupal\Core\Access\AccessResult + * Access result + */ + public function access(Route $route, Request $request): AccessResult { + $ajaxRequirement = filter_var($route->getRequirement('_ajax_request'), FILTER_VALIDATE_BOOLEAN); + $isAjax = $request->isXmlHttpRequest(); + + if ($ajaxRequirement === $isAjax) { + return AccessResult::allowed(); + } + + return AccessResult::forbidden(); + } + +} diff --git a/web/modules/custom/joinup_poll/src/Routing/PollRouteSubscriber.php b/web/modules/custom/joinup_poll/src/Routing/PollRouteSubscriber.php new file mode 100644 index 0000000000000000000000000000000000000000..3d0d7c65aa79a0ee518e283543905bc643894d36 --- /dev/null +++ b/web/modules/custom/joinup_poll/src/Routing/PollRouteSubscriber.php @@ -0,0 +1,38 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\joinup_poll\Routing; + +use Drupal\Core\Routing\RouteSubscriberBase; +use Symfony\Component\Routing\RouteCollection; + +/** + * Poll route subscriber. + */ +class PollRouteSubscriber extends RouteSubscriberBase { + + /** + * {@inheritdoc} + */ + protected function alterRoutes(RouteCollection $collection): void { + $pollRoutes = [ + 'poll.poll_add', + 'entity.poll.edit_form', + 'entity.poll.delete_form', + ]; + + // Disable all canonical poll's routes. + foreach ($pollRoutes as $pollRoute) { + if ($route = $collection->get($pollRoute)) { + $route->setRequirement('_permission', 'administer polls'); + } + } + + // Allow only ajax request. + if ($route = $collection->get('entity.poll.canonical')) { + $route->setRequirement('_ajax_request', 'TRUE'); + } + } + +} diff --git a/web/modules/custom/joinup_poll/templates/joinup-poll-summary.html.twig b/web/modules/custom/joinup_poll/templates/joinup-poll-summary.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..44e4d424eb978ec407362fa2c99434b14c991c2d --- /dev/null +++ b/web/modules/custom/joinup_poll/templates/joinup-poll-summary.html.twig @@ -0,0 +1,29 @@ +{# +/** + * @file + * Default theme implementation to display the poll summary. + * + * Variables available: + * - show_number_of_votes: True is we want to show the number of votes. + * - number_of_votes: Number of votes. + * - is_closed: True if the poll is closed. + * - time_left: Time left to vote. + * + * @see template_preprocess_joinup_poll_summary() + * + * @ingroup themeable + */ +#} + +{% if show_number_of_votes %} + {% trans %} + Currently {{ number_of_votes }} vote + {% plural number_of_votes %} + Currently {{ number_of_votes }} votes + {% endtrans %} + <br/> +{% endif %} + +{% if time_left %} + {{ '@left left to vote'|t({'@left': time_left}) }} +{% endif %} diff --git a/web/modules/custom/joinup_publication_date/src/PublishedAtOrCreatedComputed.php b/web/modules/custom/joinup_publication_date/src/PublishedAtOrCreatedComputed.php index 9631d7a93460a3852229e620e5c4876d5afdfa14..eb45b0194e471bfb07abd22b15635a437bdc881a 100644 --- a/web/modules/custom/joinup_publication_date/src/PublishedAtOrCreatedComputed.php +++ b/web/modules/custom/joinup_publication_date/src/PublishedAtOrCreatedComputed.php @@ -12,6 +12,13 @@ */ class PublishedAtOrCreatedComputed extends TypedData { + /** + * The data value. + * + * @var mixed + */ + protected $value; + /** * {@inheritdoc} */ diff --git a/web/modules/custom/joinup_publication_date/src/PublishedAtOrUpdatedComputed.php b/web/modules/custom/joinup_publication_date/src/PublishedAtOrUpdatedComputed.php index 99e29ec6d38482833abf5d17531845040fd6c924..373d767c6fc6b00e6fd9461ff86e2e3fe763f8f0 100644 --- a/web/modules/custom/joinup_publication_date/src/PublishedAtOrUpdatedComputed.php +++ b/web/modules/custom/joinup_publication_date/src/PublishedAtOrUpdatedComputed.php @@ -12,6 +12,13 @@ */ class PublishedAtOrUpdatedComputed extends TypedData { + /** + * The data value. + * + * @var mixed + */ + protected $value; + /** * {@inheritdoc} */ diff --git a/web/modules/custom/joinup_rdf/joinup_rdf.permissions.yml b/web/modules/custom/joinup_rdf/joinup_rdf.permissions.yml deleted file mode 100644 index 10a0ad1bbc1ed3d1ddaee9e9e331ae8befacccda..0000000000000000000000000000000000000000 --- a/web/modules/custom/joinup_rdf/joinup_rdf.permissions.yml +++ /dev/null @@ -1,9 +0,0 @@ -import RDF vocabularies: - title: 'Import RDF vocabularies' - description: 'Allows access to /joinup-rdf/vocabulary-importer.' - restrict access: true - -run direct SPARQL queries: - title: 'Run direct SPARQL queries' - description: 'Allows access to /joinup-rdf/sparql-query.' - restrict access: true diff --git a/web/modules/custom/joinup_rdf/joinup_rdf.routing.yml b/web/modules/custom/joinup_rdf/joinup_rdf.routing.yml deleted file mode 100644 index d733cdf7a56b4ad0462277782534a47029d73bb3..0000000000000000000000000000000000000000 --- a/web/modules/custom/joinup_rdf/joinup_rdf.routing.yml +++ /dev/null @@ -1,15 +0,0 @@ -joinup_rdf.vocabulary_importer: - path: '/joinup-rdf/vocabulary-importer' - defaults: - _title: 'Vocabulary Importer' - _form: 'Drupal\joinup_rdf\Form\VocabularyImporterForm' - requirements: - _permission: 'import RDF vocabularies' - -joinup_rdf.sparql_query: - path: '/joinup-rdf/sparql-query' - defaults: - _title: 'Sparql Query' - _form: 'Drupal\joinup_rdf\Form\SparqlQueryForm' - requirements: - _permission: 'run direct SPARQL queries' diff --git a/web/modules/custom/joinup_search/src/EventSubscriber/SearchApiExcludeCurrentCustomPage.php b/web/modules/custom/joinup_search/src/EventSubscriber/SearchApiExcludeCurrentCustomPage.php index a72718519cf79294353528ecfc1176a6ee8d3861..e1c6e341ca1337f473d90d47d4992c6e2c8c315c 100644 --- a/web/modules/custom/joinup_search/src/EventSubscriber/SearchApiExcludeCurrentCustomPage.php +++ b/web/modules/custom/joinup_search/src/EventSubscriber/SearchApiExcludeCurrentCustomPage.php @@ -39,8 +39,15 @@ public function queryAlter(QueryPreExecuteEvent $event): void { $parent_entity = $query->getOption('search_api_field entity'); while (!$parent_entity instanceof CustomPageInterface) { $parent_entity = $parent_entity->getParentEntity(); + + if (is_null($parent_entity)) { + break; + } + } + + if ($parent_entity) { + $query->addCondition('id', $parent_entity->id(), '<>'); } - $query->addCondition('id', $parent_entity->id(), '<>'); } } diff --git a/web/modules/custom/joinup_search/src/Plugin/facets/widget/TypeWidget.php b/web/modules/custom/joinup_search/src/Plugin/facets/widget/TypeWidget.php index 4a9812b1e978933b386385251f2e485627b6960b..950f8bcfa16f2d6748d30aa20f1fd02ec5333e2c 100644 --- a/web/modules/custom/joinup_search/src/Plugin/facets/widget/TypeWidget.php +++ b/web/modules/custom/joinup_search/src/Plugin/facets/widget/TypeWidget.php @@ -10,7 +10,7 @@ use Drupal\facets\Widget\WidgetPluginBase; /** - * The links widget. + * The type widget. * * @FacetsWidget( * id = "type", @@ -20,6 +20,13 @@ */ class TypeWidget extends WidgetPluginBase { + /** + * List of result which are displayed as tab. + * + * @var \Drupal\facets\Result\ResultInterface[] + */ + protected array $resultTabs = []; + /** * {@inheritdoc} */ @@ -57,9 +64,7 @@ public function build(FacetInterface $facet): array { $results = array_values($facet->getResults()); $big_icons = []; foreach (array_splice($results, 0, $config['tabs'] ?: NULL) as $result) { - // The first N elements need to be rendered as tab. Adding an object - // property is easier than overriding all the methods of the class. - $result->asTab = TRUE; + $this->resultTabs[] = $result; $big_icons[] = $this->buildSingleResult($result); } @@ -113,7 +118,7 @@ protected function buildSingleResult(ResultInterface $result): array { */ protected function buildResultItem(ResultInterface $result): array { $count = $result->getCount(); - $theme = isset($result->asTab) ? 'facets_type_result_item' : 'facets_result_item'; + $theme = in_array($result, $this->resultTabs) ? 'facets_type_result_item' : 'facets_result_item'; if ($result->isActive()) { $theme .= '__active'; } @@ -159,7 +164,7 @@ protected function buildListItems(FacetInterface $facet, ResultInterface $result $items['#wrapper_attributes'] = ['class' => $classes]; $items['#attributes']['data-drupal-facet-item-id'] = $this->facet->getUrlAlias() . '-' . $result->getRawValue(); - if (isset($result->asTab)) { + if (in_array($result, $this->resultTabs)) { $items['#attributes']['class'][] = 'tab'; $items['#attributes']['class'][] = 'tab--content-type'; $items['#attributes']['role'][] = 'tab'; diff --git a/web/modules/custom/topic/src/VocabularyManager.php b/web/modules/custom/topic/src/VocabularyManager.php index 616c48db7cd50f1fef6b6b2880cbb2d5c071a2b7..18c8ae8d45d15dea8622a37acc3d9b82629d4991 100644 --- a/web/modules/custom/topic/src/VocabularyManager.php +++ b/web/modules/custom/topic/src/VocabularyManager.php @@ -6,6 +6,7 @@ use Drupal\Core\Database\Connection; use Drupal\Core\Entity\EntityTypeManagerInterface; +use Drupal\meta_entity\MetaEntityRepositoryInterface; use Drupal\sparql_entity_storage\Driver\Database\sparql\ConnectionInterface; /** @@ -24,11 +25,14 @@ class VocabularyManager { * The database connection. * @param \Drupal\sparql_entity_storage\Driver\Database\sparql\ConnectionInterface $sparqlEndpoint * The sparql.endpoint service. + * @param \Drupal\meta_entity\MetaEntityRepositoryInterface $metaEntityRepository + * The meta_entity.repository service. */ public function __construct( protected EntityTypeManagerInterface $entityTypeManager, protected Connection $database, protected ConnectionInterface $sparqlEndpoint, + protected MetaEntityRepositoryInterface $metaEntityRepository ) { } @@ -92,6 +96,9 @@ public function renameTopic(string $id, string $newName): void { * 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> @@ -103,6 +110,12 @@ public function changeTopicId(string $oldId, string $newId): void { $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(); } /** diff --git a/web/modules/custom/topic/topic.services.yml b/web/modules/custom/topic/topic.services.yml index acb553cd697221d188d69fc9f6b5a9469f604560..9ec01fcfbea8d09f7f068533cfa9f468f4dcd7ed 100644 --- a/web/modules/custom/topic/topic.services.yml +++ b/web/modules/custom/topic/topic.services.yml @@ -10,7 +10,7 @@ services: topic.vocabulary_manager: class: Drupal\topic\VocabularyManager - arguments: ['@entity_type.manager', '@database', '@sparql.endpoint'] + arguments: ['@entity_type.manager', '@database', '@sparql.endpoint', '@meta_entity.repository'] topic.event_subscriber: class: Drupal\topic\EventSubscriber\HomepageTopicsSectionSubscriber diff --git a/web/profiles/joinup/joinup.profile b/web/profiles/joinup/joinup.profile index 3526d91e3c69192644c37dc599c445d0fb0fddf6..13ee99e3f56cd79ac53f78322d995ebdf275b627 100644 --- a/web/profiles/joinup/joinup.profile +++ b/web/profiles/joinup/joinup.profile @@ -16,6 +16,7 @@ use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Installer\InstallerKernel; use Drupal\Core\Session\AccountInterface; +use Drupal\Core\Site\SettingsEditor; use Drupal\collection\Entity\CollectionInterface; use Drupal\joinup_community_content\Entity\CommunityContentInterface; use Drupal\joinup_featured\FeaturedContentInterface; @@ -97,7 +98,7 @@ function joinup_form_install_settings_form_save($form, FormStateInterface $form_ 'value' => $database, 'required' => TRUE, ]; - drupal_rewrite_settings($settings); + SettingsEditor::rewrite(\Drupal::getContainer()->getParameter('site.path') . '/settings.php', $settings); // Load the database connection to make it available in the current request. Database::addConnectionInfo($key, $target, $database); } @@ -339,7 +340,14 @@ function joinup_preprocess_node(&$variables) { * The variables array. */ function _joinup_preprocess_entity_tiles(array &$variables) { - if ($variables['view_mode'] !== 'view_mode_tile') { + // View modes where tiles are expected. + $tile_view_modes = [ + 'highlighted', + 'view_mode_tile', + 'view_mode_tile_horizontal', + 'carousel', + ]; + if (!in_array($variables['view_mode'], $tile_view_modes)) { return; } diff --git a/web/profiles/joinup/js/site_wide_featured.js b/web/profiles/joinup/js/site_wide_featured.js index eb28e05952b1fb7b8e0e8304ffa29c501f6c9927..adf25706f5baf0141aecbb160f73100af085d9e9 100644 --- a/web/profiles/joinup/js/site_wide_featured.js +++ b/web/profiles/joinup/js/site_wide_featured.js @@ -17,18 +17,10 @@ const star = document.createElement("div"); star.classList.add("mark"); star.classList.add("star"); - // Check for global collection context. - const group = context.querySelector("[data-joinup-group-context]"); - // If there is a global group context, bail out. We mark tiles as - // globally featured only when we have no context, meaning we are in a - // "global" page (search, collections, solutions, content). - if (group === null || group === undefined) { - once("featured", "[data-joinup-featured]", context).forEach( - (element) => { - element.prepend(star.cloneNode(true)); - } - ); - } + + once("featured", "[data-joinup-featured]", context).forEach((element) => { + element.prepend(star.cloneNode(true)); + }); }, }; })(Drupal, once); diff --git a/web/sites/default/default.services.yml b/web/sites/default/default.services.yml old mode 100755 new mode 100644 index b4d27e05a56f101ca0204d2553e0e5c7f643260f..8a6cdf2f77fa62d35be0be175039c0ec10b08333 --- a/web/sites/default/default.services.yml +++ b/web/sites/default/default.services.yml @@ -37,6 +37,13 @@ parameters: # @default none # cookie_domain: '.example.com' # + # Set the SameSite cookie attribute: 'None', 'Lax', or 'Strict'. If set, + # this value will override the server value. See + # https://www.php.net/manual/en/session.security.ini.php for more + # information. + # @default no value + cookie_samesite: Lax + # # Set the session ID string length. The length can be between 22 to 256. The # PHP recommended value is 48. See # https://www.php.net/manual/session.security.ini.php for more information. @@ -213,3 +220,9 @@ parameters: maxAge: false # Sets the Access-Control-Allow-Credentials header. supportsCredentials: false + + queue.config: + # The maximum number of seconds to wait if a queue is temporarily suspended. + # This is not applicable when a queue is suspended but does not specify + # how long to wait before attempting to resume. + suspendMaximumWait: 30 diff --git a/web/sites/default/default.settings.php b/web/sites/default/default.settings.php index 20d7893698ea4c1fdb546252c68e20732556ba5f..c0b18427ae9418c88f3ff48ee8ab5418d9d9637d 100644 --- a/web/sites/default/default.settings.php +++ b/web/sites/default/default.settings.php @@ -256,7 +256,8 @@ * variable has the same value on each server. * * For enhanced security, you may set this variable to the contents of a file - * outside your document root; you should also ensure that this file is not + * outside your document root, and vary the value across environments (like + * production and development); you should also ensure that this file is not * stored with backups of your database. * * Example: @@ -486,6 +487,15 @@ # $settings['file_chmod_directory'] = 0775; # $settings['file_chmod_file'] = 0664; +/** + * Optimized assets path: + * + * A local file system path where optimized assets will be stored. This directory + * must exist and be writable by Drupal. This directory must be relative to + * the Drupal installation directory and be accessible over the web. + */ +# $settings['file_assets_path'] = 'sites/default/files'; + /** * Public file base URL: * @@ -550,6 +560,23 @@ */ # $settings['file_sa_core_2023_005_schemes'] = ['porcelain']; +/** + * Configuration for phpinfo() admin status report. + * + * Drupal's admin UI includes a report at admin/reports/status/php which shows + * the output of phpinfo(). The full output can contain sensitive information + * so by default Drupal removes some sections. + * + * This behaviour can be configured by setting this variable to a different + * value corresponding to the flags parameter of phpinfo(). + * + * If you need to expose more information in the report - for example to debug a + * problem - consider doing so temporarily. + * + * @see https://www.php.net/manual/function.phpinfo.php + */ +# $settings['sa_core_2023_004_phpinfo_flags'] = ~ (INFO_VARIABLES | INFO_ENVIRONMENT); + /** * Private file path: * @@ -599,7 +626,7 @@ * any added language. (eg locale_custom_strings_de for german). */ # $settings['locale_custom_strings_en'][''] = [ -# 'forum' => 'Discussion board', +# 'Home' => 'Front page', # '@count min' => '@count minutes', # ]; @@ -724,6 +751,7 @@ * * @see https://www.drupal.org/docs/installing-drupal/trusted-host-settings */ +# $settings['trusted_host_patterns'] = []; /** * The default list of directories that will be ignored by Drupal's file API. diff --git a/web/themes/iop/assets/css/call-to-action.min.css b/web/themes/iop/assets/css/call-to-action.min.css new file mode 100644 index 0000000000000000000000000000000000000000..4321459e9d809ed297598921d41c67cc55a599d4 --- /dev/null +++ b/web/themes/iop/assets/css/call-to-action.min.css @@ -0,0 +1,2 @@ +.paragraph--call-to-action:not([class^=lpb])>a,a.call-to-action{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg preserveAspectRatio='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 30' style='enable-background:new 0 0 100 30' xml:space='preserve'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='0' y1='15.5' x2='100' y2='15.5'%3E%3Cstop offset='.106' style='stop-color:%23268dc2'/%3E%3Cstop offset='.129' style='stop-color:%232c94c1'/%3E%3Cstop offset='.216' style='stop-color:%233ea9bc'/%3E%3Cstop offset='.302' style='stop-color:%2348b6ba'/%3E%3Cstop offset='.382' style='stop-color:%234cbab9'/%3E%3Cstop offset='.682' style='stop-color:%23ced955'/%3E%3Cstop offset='.734' style='stop-color:%23d1d44f'/%3E%3Cstop offset='.805' style='stop-color:%23d9c43d'/%3E%3Cstop offset='.887' style='stop-color:%23e6ac20'/%3E%3Cstop offset='.956' style='stop-color:%23f39202'/%3E%3C/linearGradient%3E%3Cpath d='M1 17.6s11.27-6.1 24.01-6.1 34.3 8 49 8 24.99-4 24.99-4' style='fill:none;stroke:url(%23a);stroke-width:4;stroke-linecap:round;stroke-miterlimit:10'/%3E%3C/svg%3E");background-position:center 1.125em;background-repeat:no-repeat;background-size:100% 16px;color:#082330;display:inline-block;height:2em}.paragraph--call-to-action:not([class^=lpb])>a:hover,a.call-to-action:hover{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg preserveAspectRatio='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 30' style='enable-background:new 0 0 100 30' xml:space='preserve'%3E%3Cpath d='M1 17.6s11.27-6.1 24.01-6.1 34.3 8 49 8 24.99-4 24.99-4' style='fill:none;stroke:%233d3f40;stroke-width:4;stroke-linecap:round;stroke-miterlimit:10'/%3E%3C/svg%3E");color:#000;text-decoration:none} +/*# sourceMappingURL=call-to-action.min.css.map */ \ No newline at end of file diff --git a/web/themes/iop/assets/css/components.min.css b/web/themes/iop/assets/css/components.min.css index fdb7b463f38424cadffff2c073fa8634148aeba7..6f89bc1555312c7a5c181d37c7f51fe71d056e42 100644 --- a/web/themes/iop/assets/css/components.min.css +++ b/web/themes/iop/assets/css/components.min.css @@ -1,2 +1,2 @@ -.btn{--bs-btn-padding-x:1.6rem;--bs-btn-padding-y:0.4rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:#242626;--bs-btn-bg:transparent;--bs-btn-border-width:1px;--bs-btn-border-color:transparent;--bs-btn-border-radius:0.4rem;--bs-btn-hover-border-color:transparent;--bs-btn-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.15),0 1px 1px rgba(0,0,0,.075);--bs-btn-disabled-opacity:0.5;--bs-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb),.5);background-color:var(--bs-btn-bg);border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);box-shadow:var(--bs-btn-box-shadow);color:var(--bs-btn-color);cursor:pointer;display:inline-block;font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);text-align:center;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);color:var(--bs-btn-hover-color);text-decoration:none}.btn-check+.btn:hover{background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);color:var(--bs-btn-color)}.btn:focus-visible{background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);box-shadow:var(--bs-btn-box-shadow),var(--bs-btn-focus-box-shadow);color:var(--bs-btn-hover-color);outline:0}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);box-shadow:var(--bs-btn-box-shadow),var(--bs-btn-focus-box-shadow);outline:0}.btn-check:checked+.btn,.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color);box-shadow:var(--bs-btn-active-shadow);color:var(--bs-btn-active-color)}.btn-check:checked+.btn:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-active-shadow),var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);box-shadow:none;color:var(--bs-btn-disabled-color);opacity:var(--bs-btn-disabled-opacity);pointer-events:none}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#082330;--bs-btn-border-color:#082330;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#07202b;--bs-btn-hover-border-color:#061c26;--bs-btn-focus-shadow-rgb:45,68,79;--bs-btn-active-color:#fff;--bs-btn-active-bg:#061c26;--bs-btn-active-border-color:#061a24;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#082330;--bs-btn-disabled-border-color:#082330}.btn-secondary{--bs-btn-color:#000;--bs-btn-bg:#19d3c5;--bs-btn-border-color:#19d3c5;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#30d7cb;--bs-btn-hover-border-color:#30d7cb;--bs-btn-focus-shadow-rgb:21,179,167;--bs-btn-active-color:#000;--bs-btn-active-bg:#47dcd1;--bs-btn-active-border-color:#30d7cb;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#19d3c5;--bs-btn-disabled-border-color:#19d3c5}.btn-success{--bs-btn-color:#000;--bs-btn-bg:#18bf80;--bs-btn-border-color:#18bf80;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#2fc58d;--bs-btn-hover-border-color:#2fc58d;--bs-btn-focus-shadow-rgb:20,162,109;--bs-btn-active-color:#000;--bs-btn-active-bg:#46cc99;--bs-btn-active-border-color:#2fc58d;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#18bf80;--bs-btn-disabled-border-color:#18bf80}.btn-info{--bs-btn-color:#fff;--bs-btn-bg:#0d768b;--bs-btn-border-color:#0d768b;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0c6a7d;--bs-btn-hover-border-color:#0a5e6f;--bs-btn-focus-shadow-rgb:49,139,156;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a5e6f;--bs-btn-active-border-color:#0a5968;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d768b;--bs-btn-disabled-border-color:#0d768b}.btn-warning{--bs-btn-color:#000;--bs-btn-bg:#eba843;--bs-btn-border-color:#eba843;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#edb156;--bs-btn-hover-border-color:#edb156;--bs-btn-focus-shadow-rgb:200,143,57;--bs-btn-active-color:#000;--bs-btn-active-bg:#efb969;--bs-btn-active-border-color:#edb156;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#eba843;--bs-btn-disabled-border-color:#eba843}.btn-danger{--bs-btn-color:#000;--bs-btn-bg:#eb3434;--bs-btn-border-color:#eb3434;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ed4848;--bs-btn-hover-border-color:#ed4848;--bs-btn-focus-shadow-rgb:200,44,44;--bs-btn-active-color:#000;--bs-btn-active-bg:#ef5d5d;--bs-btn-active-border-color:#ed4848;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#eb3434;--bs-btn-disabled-border-color:#eb3434}.btn-light{--bs-btn-color:#000;--bs-btn-bg:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#dfe0e1;--bs-btn-hover-border-color:#c6c7c8;--bs-btn-focus-shadow-rgb:211,212,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#c6c7c8;--bs-btn-active-border-color:#babbbc;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#f8f9fa;--bs-btn-disabled-border-color:#f8f9fa}.btn-dark{--bs-btn-color:#fff;--bs-btn-bg:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#373b3e;--bs-btn-hover-border-color:#373b3e;--bs-btn-focus-shadow-rgb:66,70,73;--bs-btn-active-color:#fff;--bs-btn-active-bg:#4d5154;--bs-btn-active-border-color:#373b3e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#212529;--bs-btn-disabled-border-color:#212529}.btn-brand{--bs-btn-color:#000;--bs-btn-bg:#238dc1;--bs-btn-border-color:#238dc1;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#3998c7;--bs-btn-hover-border-color:#3998c7;--bs-btn-focus-shadow-rgb:30,120,164;--bs-btn-active-color:#000;--bs-btn-active-bg:#4fa4cd;--bs-btn-active-border-color:#3998c7;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#238dc1;--bs-btn-disabled-border-color:#238dc1}.btn-outline-primary{--bs-btn-color:#082330;--bs-btn-border-color:#082330;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#082330;--bs-btn-hover-border-color:#082330;--bs-btn-focus-shadow-rgb:8,35,48;--bs-btn-active-color:#fff;--bs-btn-active-bg:#082330;--bs-btn-active-border-color:#082330;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#082330;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#082330;--bs-gradient:none}.btn-outline-secondary{--bs-btn-color:#19d3c5;--bs-btn-border-color:#19d3c5;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#19d3c5;--bs-btn-hover-border-color:#19d3c5;--bs-btn-focus-shadow-rgb:25,211,197;--bs-btn-active-color:#000;--bs-btn-active-bg:#19d3c5;--bs-btn-active-border-color:#19d3c5;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#19d3c5;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#19d3c5;--bs-gradient:none}.btn-outline-success{--bs-btn-color:#18bf80;--bs-btn-border-color:#18bf80;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#18bf80;--bs-btn-hover-border-color:#18bf80;--bs-btn-focus-shadow-rgb:24,191,128;--bs-btn-active-color:#000;--bs-btn-active-bg:#18bf80;--bs-btn-active-border-color:#18bf80;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#18bf80;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#18bf80;--bs-gradient:none}.btn-outline-info{--bs-btn-color:#0d768b;--bs-btn-border-color:#0d768b;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d768b;--bs-btn-hover-border-color:#0d768b;--bs-btn-focus-shadow-rgb:13,118,139;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d768b;--bs-btn-active-border-color:#0d768b;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#0d768b;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d768b;--bs-gradient:none}.btn-outline-warning{--bs-btn-color:#eba843;--bs-btn-border-color:#eba843;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#eba843;--bs-btn-hover-border-color:#eba843;--bs-btn-focus-shadow-rgb:235,168,67;--bs-btn-active-color:#000;--bs-btn-active-bg:#eba843;--bs-btn-active-border-color:#eba843;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#eba843;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#eba843;--bs-gradient:none}.btn-outline-danger{--bs-btn-color:#eb3434;--bs-btn-border-color:#eb3434;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#eb3434;--bs-btn-hover-border-color:#eb3434;--bs-btn-focus-shadow-rgb:235,52,52;--bs-btn-active-color:#000;--bs-btn-active-bg:#eb3434;--bs-btn-active-border-color:#eb3434;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#eb3434;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#eb3434;--bs-gradient:none}.btn-outline-light{--bs-btn-color:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#f8f9fa;--bs-btn-hover-border-color:#f8f9fa;--bs-btn-focus-shadow-rgb:248,249,250;--bs-btn-active-color:#000;--bs-btn-active-bg:#f8f9fa;--bs-btn-active-border-color:#f8f9fa;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#f8f9fa;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#f8f9fa;--bs-gradient:none}.btn-outline-dark{--bs-btn-color:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#212529;--bs-btn-hover-border-color:#212529;--bs-btn-focus-shadow-rgb:33,37,41;--bs-btn-active-color:#fff;--bs-btn-active-bg:#212529;--bs-btn-active-border-color:#212529;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#212529;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#212529;--bs-gradient:none}.btn-outline-brand{--bs-btn-color:#238dc1;--bs-btn-border-color:#238dc1;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#238dc1;--bs-btn-hover-border-color:#238dc1;--bs-btn-focus-shadow-rgb:35,141,193;--bs-btn-active-color:#000;--bs-btn-active-bg:#238dc1;--bs-btn-active-border-color:#238dc1;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#238dc1;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#238dc1;--bs-gradient:none}.btn-link{--bs-btn-font-weight:400;--bs-btn-color:#238dc1;--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6d7173;--bs-btn-disabled-border-color:transparent;--bs-btn-box-shadow:none;--bs-btn-focus-shadow-rgb:45,68,79;text-decoration:none}.btn-link:focus-visible,.btn-link:hover{text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg{--bs-btn-padding-y:0.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:0.5rem}.btn-sm{--bs-btn-padding-y:0.25rem;--bs-btn-padding-x:0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius:0.25rem}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-menu{--bs-dropdown-zindex:40;--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:0.5rem;--bs-dropdown-spacer:0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:#242626;--bs-dropdown-bg:#fff;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:0.375rem;--bs-dropdown-border-width:1px;--bs-dropdown-inner-border-radius:calc(0.375rem - 1px);--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:0.5rem;--bs-dropdown-box-shadow:0 0.5rem 1rem rgba(0,0,0,.15);--bs-dropdown-link-color:#242626;--bs-dropdown-link-hover-color:#202222;--bs-dropdown-link-hover-bg:#f5f6f7;--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#082330;--bs-dropdown-link-disabled-color:#858a8c;--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:0.25rem;--bs-dropdown-header-color:#6d7173;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:0.5rem;background-clip:padding-box;background-color:var(--bs-dropdown-bg);border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius);box-shadow:var(--bs-dropdown-box-shadow);color:var(--bs-dropdown-color);display:none;font-size:var(--bs-dropdown-font-size);list-style:none;margin:0;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);position:absolute;text-align:left;z-index:var(--bs-dropdown-zindex)}.dropdown-menu[data-bs-popper]{left:0;margin-top:var(--bs-dropdown-spacer);top:100%}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{left:auto;right:0}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{left:auto;right:0}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{left:auto;right:0}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{left:auto;right:0}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{left:auto;right:0}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{left:auto;right:0}}.dropup .dropdown-menu[data-bs-popper]{bottom:100%;margin-bottom:var(--bs-dropdown-spacer);margin-top:0;top:auto}.dropend .dropdown-menu[data-bs-popper]{left:100%;margin-left:var(--bs-dropdown-spacer);margin-top:0;right:auto;top:0}.dropend .dropdown-toggle:after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{left:auto;margin-right:var(--bs-dropdown-spacer);margin-top:0;right:100%;top:0}.dropstart .dropdown-toggle:before{vertical-align:0}.dropdown-divider{border-top:1px solid var(--bs-dropdown-divider-bg);height:0;margin:var(--bs-dropdown-divider-margin-y) 0;opacity:1;overflow:hidden}.dropdown-item{background-color:transparent;border:0;clear:both;color:var(--bs-dropdown-link-color);display:block;font-weight:400;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);text-align:inherit;white-space:nowrap;width:100%}.dropdown-item:focus,.dropdown-item:hover{background-color:var(--bs-dropdown-link-hover-bg);color:var(--bs-dropdown-link-hover-color);text-decoration:none}.dropdown-item.active,.dropdown-item:active{background-color:var(--bs-dropdown-link-active-bg);color:var(--bs-dropdown-link-active-color);text-decoration:none}.dropdown-item.disabled,.dropdown-item:disabled{background-color:transparent;color:var(--bs-dropdown-link-disabled-color);pointer-events:none}.dropdown-menu.show{display:block}.dropdown-header{color:var(--bs-dropdown-header-color);display:block;font-size:.875rem;margin-bottom:0;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);white-space:nowrap}.dropdown-item-text{color:var(--bs-dropdown-link-color);display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x)}.dropdown-menu-dark{--bs-dropdown-color:#dadee0;--bs-dropdown-bg:#3d3f40;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color:#dadee0;--bs-dropdown-link-hover-color:#fff;--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg:hsla(0,0%,100%,.15);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#082330;--bs-dropdown-link-disabled-color:#858a8c;--bs-dropdown-header-color:#858a8c}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:#6d7173;display:flex;flex-wrap:wrap;list-style:none;margin-bottom:0;padding-left:0}.nav-link{color:var(--bs-nav-link-color);display:block;font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color);text-decoration:none}.nav-link.disabled{color:var(--bs-nav-link-disabled-color);cursor:default;pointer-events:none}.nav-tabs{--bs-nav-tabs-border-width:1px;--bs-nav-tabs-border-color:#dadee0;--bs-nav-tabs-border-radius:0.375rem;--bs-nav-tabs-link-hover-border-color:#f5f6f7 #f5f6f7 #dadee0;--bs-nav-tabs-link-active-color:#555859;--bs-nav-tabs-link-active-bg:#fff;--bs-nav-tabs-link-active-border-color:#dadee0 #dadee0 #fff;border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{background:none;border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius);margin-bottom:calc(var(--bs-nav-tabs-border-width)*-1)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:var(--bs-nav-tabs-link-hover-border-color);isolation:isolate}.nav-tabs .nav-link.disabled,.nav-tabs .nav-link:disabled{background-color:transparent;border-color:transparent;color:var(--bs-nav-link-disabled-color)}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color);color:var(--bs-nav-tabs-link-active-color)}.nav-tabs .dropdown-menu{border-top-left-radius:0;border-top-right-radius:0;margin-top:calc(var(--bs-nav-tabs-border-width)*-1)}.nav-pills{--bs-nav-pills-border-radius:0.375rem;--bs-nav-pills-link-active-color:#fff;--bs-nav-pills-link-active-bg:#082330}.nav-pills .nav-link{background:none;border:0;border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link:disabled{background-color:transparent;border-color:transparent;color:var(--bs-nav-link-disabled-color)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{background-color:var(--bs-nav-pills-link-active-bg);color:var(--bs-nav-pills-link-active-color)}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:0.5rem;--bs-navbar-color:rgba(0,0,0,.55);--bs-navbar-hover-color:rgba(0,0,0,.7);--bs-navbar-disabled-color:rgba(0,0,0,.3);--bs-navbar-active-color:rgba(0,0,0,.9);--bs-navbar-brand-padding-y:0.3125rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(0,0,0,.9);--bs-navbar-brand-hover-color:rgba(0,0,0,.9);--bs-navbar-nav-link-padding-x:0.75rem;--bs-navbar-toggler-padding-y:0.25rem;--bs-navbar-toggler-padding-x:0.75rem;--bs-navbar-toggler-font-size:1.25rem;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath stroke='rgba(0, 0, 0, 0.55)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E");--bs-navbar-toggler-border-color:rgba(0,0,0,.1);--bs-navbar-toggler-border-radius:0.375rem;--bs-navbar-toggler-focus-width:0.25rem;--bs-navbar-toggler-transition:box-shadow 0.15s ease-in-out;align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x);position:relative}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{align-items:center;display:flex;flex-wrap:inherit;justify-content:space-between}.navbar-brand{color:var(--bs-navbar-brand-color);font-size:var(--bs-navbar-brand-font-size);margin-right:var(--bs-navbar-brand-margin-end);padding-bottom:var(--bs-navbar-brand-padding-y);padding-top:var(--bs-navbar-brand-padding-y);white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--bs-navbar-brand-hover-color);text-decoration:none}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:flex;flex-direction:column;list-style:none;margin-bottom:0;padding-left:0}.navbar-nav .nav-link.active,.navbar-nav .show>.nav-link{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{color:var(--bs-navbar-color);padding-bottom:.5rem;padding-top:.5rem}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--bs-navbar-active-color)}.navbar-collapse{align-items:center;flex-basis:100%;flex-grow:1}.navbar-toggler{background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);color:var(--bs-navbar-color);font-size:var(--bs-navbar-toggler-font-size);line-height:1;padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width);outline:0;text-decoration:none}.navbar-toggler-icon{background-image:var(--bs-navbar-toggler-icon-bg);background-position:50%;background-repeat:no-repeat;background-size:100%;display:inline-block;height:1.5em;vertical-align:middle;width:1.5em}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{background-color:transparent!important;border:0!important;box-shadow:none;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{background-color:transparent!important;border:0!important;box-shadow:none;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{background-color:transparent!important;border:0!important;box-shadow:none;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{background-color:transparent!important;border:0!important;box-shadow:none;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{background-color:transparent!important;border:0!important;box-shadow:none;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{background-color:transparent!important;border:0!important;box-shadow:none;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}.navbar-dark{--bs-navbar-color:hsla(0,0%,100%,.55);--bs-navbar-hover-color:hsla(0,0%,100%,.75);--bs-navbar-disabled-color:hsla(0,0%,100%,.25);--bs-navbar-active-color:#fff;--bs-navbar-brand-color:#fff;--bs-navbar-brand-hover-color:#fff;--bs-navbar-toggler-border-color:hsla(0,0%,100%,.1);--bs-navbar-toggler-icon-bg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath stroke='rgba(255, 255, 255, 0.55)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.bcl-header .container{position:relative}.bcl-header__navbar,.bcl-header__project{background:linear-gradient(90deg,#039,#1b4ac3)}.bcl-header__top-navbar .navbar-collapse{justify-content:end}.bcl-header__top-navbar .navbar-toggler{border:none;color:#f8f9fa}.bcl-header__top-navbar .navbar-toggler-icon{background:url("data:image/svg+xml;utf8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2Ij48cmVjdCB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiIgZmlsbD0ibm9uZSIvPjxjaXJjbGUgY3g9IjEyOCIgY3k9IjY0IiByPSIxNiIvPjxjaXJjbGUgY3g9IjEyOCIgY3k9IjEyOCIgcj0iMTYiLz48Y2lyY2xlIGN4PSIxMjgiIGN5PSIxOTIiIHI9IjE2Ii8+PC9zdmc+")}.bcl-header .nav-link{align-items:center;color:#1b4ac3;display:flex;padding:.5rem}.bcl-header__navbar .navbar-collapse{padding-bottom:1rem}.bcl-header__navbar .navbar-nav .nav-link{color:#fafbfc}.bcl-header__navbar .navbar-nav .nav-link.active,.bcl-header__navbar .navbar-nav .nav-link:focus,.bcl-header__navbar .navbar-nav .nav-link:hover{color:#fff}.bcl-header__navbar .navbar-nav .nav-link:first-child{padding-left:0}.bcl-header__navbar .navbar-toggler{border-color:#fff;left:.75rem;position:absolute;top:-43px}.bcl-header__navbar .navbar-toggler-icon{background:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 1)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E")}.bcl-header__navbar input:active,.bcl-header__navbar input:focus{box-shadow:0 0 0 .25rem hsla(210,2%,83%,.5)}.bcl-header--ec .bcl-header__navbar,.bcl-header--ec .bcl-header__project,.ec__header .bcl-header__navbar,.ec__header .bcl-header__project{background:#004494}.bcl-header--ec .nav-link,.ec__header .nav-link{color:#17458f}.bcl-navbar-header{align-items:flex-end}.bcl-header--neutral .bcl-header__navbar,.bcl-header--neutral .bcl-header__project{background:#555859}.bcl-header:not(.bcl-header--neutral) .bcl-header__project{padding-top:1rem}.bcl-header .navbar-brand img{width:100px}.bcl-header .notification{padding-right:0;position:relative}.bcl-header .notification span{border-radius:10px;height:18px;line-height:.6rem;padding-left:5px;padding-right:5px;transform:translate(-11px,5px);z-index:1}.bcl-header__project .bcl-header__site-name{color:#fff;display:inline-block;font-size:1.3rem;font-weight:300;margin-bottom:0;max-width:80%;vertical-align:middle}@media only screen and (max-width:400px){.bcl-header--neutral .bcl-header__project-logo{display:none}}@media (max-width:575.98px){.bcl-header .navbar:first-child .nav-link{padding:.5rem .4rem}}@media (min-width:768px){.bcl-header--ec .navbar-brand img,.ec__header .navbar-brand img{width:180px}}@media (max-width:991.98px){.bcl-header__site-name{margin-left:5rem}.bcl-header__top-navbar .navbar-collapse{background:#fff;border:1px solid #dadee0;border-radius:4px;position:absolute;right:.75rem;top:100%;z-index:1050}.bcl-header__top-navbar .navbar-collapse .nav{align-items:flex-start;flex-direction:column;min-width:16rem;padding:1rem}.bcl-header__top-navbar .navbar-collapse .nav li{width:100%}.bcl-header__project{min-height:3rem;padding-top:1rem}.bcl-header nav+nav{min-height:3.5rem}.bcl-header nav+nav .navbar-toggler{position:static}.bcl-header__navbar .navbar-collapse,.bcl-header__navbar .navbar-collapse .nav-item.dropdown{max-width:100%}.bcl-header__navbar .navbar-collapse .nav-item.dropdown a{white-space:normal}.bcl-header__navbar .navbar-collapse .nav-item.dropdown .dropdown-menu{max-width:100%}}@media (min-width:992px){.bcl-header--ec .bcl-header__project.light,.bcl-header__project.light,.ec__header .bcl-header__project.light{background:#fff}.bcl-header__site-name{font-weight:500;margin-left:1.5rem}.bcl-header__project.light .bcl-header__site-name{color:#000}.bcl-header .navbar-toggler{bottom:0;position:relative;right:0}.bcl-header .navbar-brand img{width:auto}.bcl-header__navbar .navbar-collapse{padding-bottom:0}.bcl-header__navbar .nav-link.active{margin-bottom:-.5rem;margin-top:-.5rem;padding-bottom:1rem;padding-top:1rem}.bcl-header__navbar .dropdown-menu{z-index:1050}.bcl-header:not(.bcl-header--neutral) .bcl-header__project{padding-bottom:1rem}.bcl-header--ec .navbar-brand img,.ec__header .navbar-brand img{width:285px}}.bcl-language-list-modal .btn-close{opacity:1}.bcl-language-list-modal.bcl-language-list-modal--ec .modal-body,.bcl-language-list-modal.bcl-language-list-modal--eu .modal-body{overflow:visible;padding-top:.5rem}.bcl-language-list-modal.bcl-language-list-modal--ec .modal-header,.bcl-language-list-modal.bcl-language-list-modal--eu .modal-header{border:0;padding:0}.bcl-language-list-modal.bcl-language-list-modal--eu .modal-body,.bcl-language-list-modal.bcl-language-list-modal--eu .modal-dialog{background:#fff}.bcl-language-list-modal.bcl-language-list-modal--eu h5,.bcl-language-list-modal.bcl-language-list-modal--eu svg{color:#0e47cb}.bcl-language-list-modal.bcl-language-list-modal--eu .btn-close{filter:invert(20%) sepia(70%) saturate(2876%) hue-rotate(216deg) brightness(94%) contrast(105%)}.bcl-language-list-modal.bcl-language-list-modal--ec,.bcl-language-list-modal.bcl-language-list-modal--ec .modal-content{background:#034da1}.bcl-language-list-modal.bcl-language-list-modal--ec h5,.bcl-language-list-modal.bcl-language-list-modal--ec svg{color:#fff}.bcl-language-list-modal.bcl-language-list-modal--ec .btn-close{filter:invert(1) grayscale(100%) brightness(200%)}.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}.btn{font-weight:500}.btn:not(.btn-link):hover{box-shadow:0 .1rem .4rem .1rem rgba(0,0,0,.1)}.btn-primary:hover{background-color:#1a3a4a}.btn-primary.active,.btn-primary:active,.btn-primary:focus{background-color:#05161e}.btn-secondary,.btn-secondary:hover{color:#175e80}.btn-light,.btn-light:hover{color:#082330} +.btn{--bs-btn-padding-x:1.6rem;--bs-btn-padding-y:0.4rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:#242626;--bs-btn-bg:transparent;--bs-btn-border-width:1px;--bs-btn-border-color:transparent;--bs-btn-border-radius:0.4rem;--bs-btn-hover-border-color:transparent;--bs-btn-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.15),0 1px 1px rgba(0,0,0,.075);--bs-btn-disabled-opacity:0.5;--bs-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb),.5);background-color:var(--bs-btn-bg);border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);box-shadow:var(--bs-btn-box-shadow);color:var(--bs-btn-color);cursor:pointer;display:inline-block;font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);text-align:center;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);color:var(--bs-btn-hover-color);text-decoration:none}.btn-check+.btn:hover{background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);color:var(--bs-btn-color)}.btn:focus-visible{background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);box-shadow:var(--bs-btn-box-shadow),var(--bs-btn-focus-box-shadow);color:var(--bs-btn-hover-color);outline:0}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);box-shadow:var(--bs-btn-box-shadow),var(--bs-btn-focus-box-shadow);outline:0}.btn-check:checked+.btn,.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color);box-shadow:var(--bs-btn-active-shadow);color:var(--bs-btn-active-color)}.btn-check:checked+.btn:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-active-shadow),var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);box-shadow:none;color:var(--bs-btn-disabled-color);opacity:var(--bs-btn-disabled-opacity);pointer-events:none}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#082330;--bs-btn-border-color:#082330;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#07202b;--bs-btn-hover-border-color:#061c26;--bs-btn-focus-shadow-rgb:45,68,79;--bs-btn-active-color:#fff;--bs-btn-active-bg:#061c26;--bs-btn-active-border-color:#061a24;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#082330;--bs-btn-disabled-border-color:#082330}.btn-secondary{--bs-btn-color:#000;--bs-btn-bg:#e8f5fb;--bs-btn-border-color:#e8f5fb;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#eaf6fb;--bs-btn-hover-border-color:#eaf6fb;--bs-btn-focus-shadow-rgb:197,208,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#edf7fc;--bs-btn-active-border-color:#eaf6fb;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#e8f5fb;--bs-btn-disabled-border-color:#e8f5fb}.btn-success{--bs-btn-color:#000;--bs-btn-bg:#18bf80;--bs-btn-border-color:#18bf80;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#2fc58d;--bs-btn-hover-border-color:#2fc58d;--bs-btn-focus-shadow-rgb:20,162,109;--bs-btn-active-color:#000;--bs-btn-active-bg:#46cc99;--bs-btn-active-border-color:#2fc58d;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#18bf80;--bs-btn-disabled-border-color:#18bf80}.btn-info{--bs-btn-color:#fff;--bs-btn-bg:#0d768b;--bs-btn-border-color:#0d768b;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0c6a7d;--bs-btn-hover-border-color:#0a5e6f;--bs-btn-focus-shadow-rgb:49,139,156;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a5e6f;--bs-btn-active-border-color:#0a5968;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d768b;--bs-btn-disabled-border-color:#0d768b}.btn-warning{--bs-btn-color:#000;--bs-btn-bg:#eba843;--bs-btn-border-color:#eba843;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#edb156;--bs-btn-hover-border-color:#edb156;--bs-btn-focus-shadow-rgb:200,143,57;--bs-btn-active-color:#000;--bs-btn-active-bg:#efb969;--bs-btn-active-border-color:#edb156;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#eba843;--bs-btn-disabled-border-color:#eba843}.btn-danger{--bs-btn-color:#000;--bs-btn-bg:#eb3434;--bs-btn-border-color:#eb3434;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ed4848;--bs-btn-hover-border-color:#ed4848;--bs-btn-focus-shadow-rgb:200,44,44;--bs-btn-active-color:#000;--bs-btn-active-bg:#ef5d5d;--bs-btn-active-border-color:#ed4848;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#eb3434;--bs-btn-disabled-border-color:#eb3434}.btn-light{--bs-btn-color:#000;--bs-btn-bg:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#dfe0e1;--bs-btn-hover-border-color:#c6c7c8;--bs-btn-focus-shadow-rgb:211,212,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#c6c7c8;--bs-btn-active-border-color:#babbbc;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#f8f9fa;--bs-btn-disabled-border-color:#f8f9fa}.btn-dark{--bs-btn-color:#fff;--bs-btn-bg:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#373b3e;--bs-btn-hover-border-color:#373b3e;--bs-btn-focus-shadow-rgb:66,70,73;--bs-btn-active-color:#fff;--bs-btn-active-bg:#4d5154;--bs-btn-active-border-color:#373b3e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#212529;--bs-btn-disabled-border-color:#212529}.btn-brand{--bs-btn-color:#000;--bs-btn-bg:#238dc1;--bs-btn-border-color:#238dc1;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#3998c7;--bs-btn-hover-border-color:#3998c7;--bs-btn-focus-shadow-rgb:30,120,164;--bs-btn-active-color:#000;--bs-btn-active-bg:#4fa4cd;--bs-btn-active-border-color:#3998c7;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#238dc1;--bs-btn-disabled-border-color:#238dc1}.btn-outline-primary{--bs-btn-color:#082330;--bs-btn-border-color:#082330;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#082330;--bs-btn-hover-border-color:#082330;--bs-btn-focus-shadow-rgb:8,35,48;--bs-btn-active-color:#fff;--bs-btn-active-bg:#082330;--bs-btn-active-border-color:#082330;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#082330;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#082330;--bs-gradient:none}.btn-outline-secondary{--bs-btn-color:#e8f5fb;--bs-btn-border-color:#e8f5fb;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#e8f5fb;--bs-btn-hover-border-color:#e8f5fb;--bs-btn-focus-shadow-rgb:232,245,251;--bs-btn-active-color:#000;--bs-btn-active-bg:#e8f5fb;--bs-btn-active-border-color:#e8f5fb;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#e8f5fb;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#e8f5fb;--bs-gradient:none}.btn-outline-success{--bs-btn-color:#18bf80;--bs-btn-border-color:#18bf80;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#18bf80;--bs-btn-hover-border-color:#18bf80;--bs-btn-focus-shadow-rgb:24,191,128;--bs-btn-active-color:#000;--bs-btn-active-bg:#18bf80;--bs-btn-active-border-color:#18bf80;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#18bf80;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#18bf80;--bs-gradient:none}.btn-outline-info{--bs-btn-color:#0d768b;--bs-btn-border-color:#0d768b;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d768b;--bs-btn-hover-border-color:#0d768b;--bs-btn-focus-shadow-rgb:13,118,139;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d768b;--bs-btn-active-border-color:#0d768b;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#0d768b;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d768b;--bs-gradient:none}.btn-outline-warning{--bs-btn-color:#eba843;--bs-btn-border-color:#eba843;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#eba843;--bs-btn-hover-border-color:#eba843;--bs-btn-focus-shadow-rgb:235,168,67;--bs-btn-active-color:#000;--bs-btn-active-bg:#eba843;--bs-btn-active-border-color:#eba843;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#eba843;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#eba843;--bs-gradient:none}.btn-outline-danger{--bs-btn-color:#eb3434;--bs-btn-border-color:#eb3434;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#eb3434;--bs-btn-hover-border-color:#eb3434;--bs-btn-focus-shadow-rgb:235,52,52;--bs-btn-active-color:#000;--bs-btn-active-bg:#eb3434;--bs-btn-active-border-color:#eb3434;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#eb3434;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#eb3434;--bs-gradient:none}.btn-outline-light{--bs-btn-color:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#f8f9fa;--bs-btn-hover-border-color:#f8f9fa;--bs-btn-focus-shadow-rgb:248,249,250;--bs-btn-active-color:#000;--bs-btn-active-bg:#f8f9fa;--bs-btn-active-border-color:#f8f9fa;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#f8f9fa;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#f8f9fa;--bs-gradient:none}.btn-outline-dark{--bs-btn-color:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#212529;--bs-btn-hover-border-color:#212529;--bs-btn-focus-shadow-rgb:33,37,41;--bs-btn-active-color:#fff;--bs-btn-active-bg:#212529;--bs-btn-active-border-color:#212529;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#212529;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#212529;--bs-gradient:none}.btn-outline-brand{--bs-btn-color:#238dc1;--bs-btn-border-color:#238dc1;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#238dc1;--bs-btn-hover-border-color:#238dc1;--bs-btn-focus-shadow-rgb:35,141,193;--bs-btn-active-color:#000;--bs-btn-active-bg:#238dc1;--bs-btn-active-border-color:#238dc1;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#238dc1;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#238dc1;--bs-gradient:none}.btn-link{--bs-btn-font-weight:400;--bs-btn-color:#238dc1;--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6d7173;--bs-btn-disabled-border-color:transparent;--bs-btn-box-shadow:none;--bs-btn-focus-shadow-rgb:45,68,79;text-decoration:none}.btn-link:focus-visible,.btn-link:hover{text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg{--bs-btn-padding-y:0.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:0.5rem}.btn-sm{--bs-btn-padding-y:0.25rem;--bs-btn-padding-x:0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius:0.25rem}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-menu{--bs-dropdown-zindex:40;--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:0.5rem;--bs-dropdown-spacer:0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:#242626;--bs-dropdown-bg:#fff;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:0.375rem;--bs-dropdown-border-width:1px;--bs-dropdown-inner-border-radius:calc(0.375rem - 1px);--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:0.5rem;--bs-dropdown-box-shadow:0 0.5rem 1rem rgba(0,0,0,.15);--bs-dropdown-link-color:#242626;--bs-dropdown-link-hover-color:#202222;--bs-dropdown-link-hover-bg:#f5f6f7;--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#082330;--bs-dropdown-link-disabled-color:#858a8c;--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:0.25rem;--bs-dropdown-header-color:#6d7173;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:0.5rem;background-clip:padding-box;background-color:var(--bs-dropdown-bg);border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius);box-shadow:var(--bs-dropdown-box-shadow);color:var(--bs-dropdown-color);display:none;font-size:var(--bs-dropdown-font-size);list-style:none;margin:0;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);position:absolute;text-align:left;z-index:var(--bs-dropdown-zindex)}.dropdown-menu[data-bs-popper]{left:0;margin-top:var(--bs-dropdown-spacer);top:100%}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{left:auto;right:0}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{left:auto;right:0}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{left:auto;right:0}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{left:auto;right:0}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{left:auto;right:0}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{left:auto;right:0}}.dropup .dropdown-menu[data-bs-popper]{bottom:100%;margin-bottom:var(--bs-dropdown-spacer);margin-top:0;top:auto}.dropend .dropdown-menu[data-bs-popper]{left:100%;margin-left:var(--bs-dropdown-spacer);margin-top:0;right:auto;top:0}.dropend .dropdown-toggle:after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{left:auto;margin-right:var(--bs-dropdown-spacer);margin-top:0;right:100%;top:0}.dropstart .dropdown-toggle:before{vertical-align:0}.dropdown-divider{border-top:1px solid var(--bs-dropdown-divider-bg);height:0;margin:var(--bs-dropdown-divider-margin-y) 0;opacity:1;overflow:hidden}.dropdown-item{background-color:transparent;border:0;clear:both;color:var(--bs-dropdown-link-color);display:block;font-weight:400;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);text-align:inherit;white-space:nowrap;width:100%}.dropdown-item:focus,.dropdown-item:hover{background-color:var(--bs-dropdown-link-hover-bg);color:var(--bs-dropdown-link-hover-color);text-decoration:none}.dropdown-item.active,.dropdown-item:active{background-color:var(--bs-dropdown-link-active-bg);color:var(--bs-dropdown-link-active-color);text-decoration:none}.dropdown-item.disabled,.dropdown-item:disabled{background-color:transparent;color:var(--bs-dropdown-link-disabled-color);pointer-events:none}.dropdown-menu.show{display:block}.dropdown-header{color:var(--bs-dropdown-header-color);display:block;font-size:.875rem;margin-bottom:0;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);white-space:nowrap}.dropdown-item-text{color:var(--bs-dropdown-link-color);display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x)}.dropdown-menu-dark{--bs-dropdown-color:#dadee0;--bs-dropdown-bg:#3d3f40;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color:#dadee0;--bs-dropdown-link-hover-color:#fff;--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg:hsla(0,0%,100%,.15);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#082330;--bs-dropdown-link-disabled-color:#858a8c;--bs-dropdown-header-color:#858a8c}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:#6d7173;display:flex;flex-wrap:wrap;list-style:none;margin-bottom:0;padding-left:0}.nav-link{color:var(--bs-nav-link-color);display:block;font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color);text-decoration:none}.nav-link.disabled{color:var(--bs-nav-link-disabled-color);cursor:default;pointer-events:none}.nav-tabs{--bs-nav-tabs-border-width:1px;--bs-nav-tabs-border-color:#dadee0;--bs-nav-tabs-border-radius:0.375rem;--bs-nav-tabs-link-hover-border-color:#f5f6f7 #f5f6f7 #dadee0;--bs-nav-tabs-link-active-color:#555859;--bs-nav-tabs-link-active-bg:#fff;--bs-nav-tabs-link-active-border-color:#dadee0 #dadee0 #fff;border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{background:none;border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius);margin-bottom:calc(var(--bs-nav-tabs-border-width)*-1)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:var(--bs-nav-tabs-link-hover-border-color);isolation:isolate}.nav-tabs .nav-link.disabled,.nav-tabs .nav-link:disabled{background-color:transparent;border-color:transparent;color:var(--bs-nav-link-disabled-color)}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color);color:var(--bs-nav-tabs-link-active-color)}.nav-tabs .dropdown-menu{border-top-left-radius:0;border-top-right-radius:0;margin-top:calc(var(--bs-nav-tabs-border-width)*-1)}.nav-pills{--bs-nav-pills-border-radius:0.375rem;--bs-nav-pills-link-active-color:#fff;--bs-nav-pills-link-active-bg:#082330}.nav-pills .nav-link{background:none;border:0;border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link:disabled{background-color:transparent;border-color:transparent;color:var(--bs-nav-link-disabled-color)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{background-color:var(--bs-nav-pills-link-active-bg);color:var(--bs-nav-pills-link-active-color)}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:0.5rem;--bs-navbar-color:rgba(0,0,0,.55);--bs-navbar-hover-color:rgba(0,0,0,.7);--bs-navbar-disabled-color:rgba(0,0,0,.3);--bs-navbar-active-color:rgba(0,0,0,.9);--bs-navbar-brand-padding-y:0.3125rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(0,0,0,.9);--bs-navbar-brand-hover-color:rgba(0,0,0,.9);--bs-navbar-nav-link-padding-x:0.75rem;--bs-navbar-toggler-padding-y:0.25rem;--bs-navbar-toggler-padding-x:0.75rem;--bs-navbar-toggler-font-size:1.25rem;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath stroke='rgba(0, 0, 0, 0.55)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E");--bs-navbar-toggler-border-color:rgba(0,0,0,.1);--bs-navbar-toggler-border-radius:0.375rem;--bs-navbar-toggler-focus-width:0.25rem;--bs-navbar-toggler-transition:box-shadow 0.15s ease-in-out;align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x);position:relative}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{align-items:center;display:flex;flex-wrap:inherit;justify-content:space-between}.navbar-brand{color:var(--bs-navbar-brand-color);font-size:var(--bs-navbar-brand-font-size);margin-right:var(--bs-navbar-brand-margin-end);padding-bottom:var(--bs-navbar-brand-padding-y);padding-top:var(--bs-navbar-brand-padding-y);white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--bs-navbar-brand-hover-color);text-decoration:none}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:flex;flex-direction:column;list-style:none;margin-bottom:0;padding-left:0}.navbar-nav .nav-link.active,.navbar-nav .show>.nav-link{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{color:var(--bs-navbar-color);padding-bottom:.5rem;padding-top:.5rem}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--bs-navbar-active-color)}.navbar-collapse{align-items:center;flex-basis:100%;flex-grow:1}.navbar-toggler{background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);color:var(--bs-navbar-color);font-size:var(--bs-navbar-toggler-font-size);line-height:1;padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width);outline:0;text-decoration:none}.navbar-toggler-icon{background-image:var(--bs-navbar-toggler-icon-bg);background-position:50%;background-repeat:no-repeat;background-size:100%;display:inline-block;height:1.5em;vertical-align:middle;width:1.5em}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{background-color:transparent!important;border:0!important;box-shadow:none;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{background-color:transparent!important;border:0!important;box-shadow:none;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{background-color:transparent!important;border:0!important;box-shadow:none;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{background-color:transparent!important;border:0!important;box-shadow:none;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{background-color:transparent!important;border:0!important;box-shadow:none;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{background-color:transparent!important;border:0!important;box-shadow:none;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}.navbar-dark{--bs-navbar-color:hsla(0,0%,100%,.55);--bs-navbar-hover-color:hsla(0,0%,100%,.75);--bs-navbar-disabled-color:hsla(0,0%,100%,.25);--bs-navbar-active-color:#fff;--bs-navbar-brand-color:#fff;--bs-navbar-brand-hover-color:#fff;--bs-navbar-toggler-border-color:hsla(0,0%,100%,.1);--bs-navbar-toggler-icon-bg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath stroke='rgba(255, 255, 255, 0.55)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.bcl-header .container{position:relative}.bcl-header__navbar,.bcl-header__project{background:linear-gradient(90deg,#039,#1b4ac3)}.bcl-header__top-navbar .navbar-collapse{justify-content:end}.bcl-header__top-navbar .navbar-toggler{border:none;color:#f8f9fa}.bcl-header__top-navbar .navbar-toggler-icon{background:url("data:image/svg+xml;utf8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2Ij48cmVjdCB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiIgZmlsbD0ibm9uZSIvPjxjaXJjbGUgY3g9IjEyOCIgY3k9IjY0IiByPSIxNiIvPjxjaXJjbGUgY3g9IjEyOCIgY3k9IjEyOCIgcj0iMTYiLz48Y2lyY2xlIGN4PSIxMjgiIGN5PSIxOTIiIHI9IjE2Ii8+PC9zdmc+")}.bcl-header .nav-link{align-items:center;color:#1b4ac3;display:flex;padding:.5rem}.bcl-header__navbar .navbar-collapse{padding-bottom:1rem}.bcl-header__navbar .navbar-nav .nav-link{color:#fafbfc}.bcl-header__navbar .navbar-nav .nav-link.active,.bcl-header__navbar .navbar-nav .nav-link:focus,.bcl-header__navbar .navbar-nav .nav-link:hover{color:#fff}.bcl-header__navbar .navbar-nav .nav-link:first-child{padding-left:0}.bcl-header__navbar .navbar-toggler{border-color:#fff;left:.75rem;position:absolute;top:-43px}.bcl-header__navbar .navbar-toggler-icon{background:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 1)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E")}.bcl-header__navbar input:active,.bcl-header__navbar input:focus{box-shadow:0 0 0 .25rem hsla(210,2%,83%,.5)}.bcl-header--ec .bcl-header__navbar,.bcl-header--ec .bcl-header__project,.ec__header .bcl-header__navbar,.ec__header .bcl-header__project{background:#004494}.bcl-header--ec .nav-link,.ec__header .nav-link{color:#17458f}.bcl-navbar-header{align-items:flex-end}.bcl-header--neutral .bcl-header__navbar,.bcl-header--neutral .bcl-header__project{background:#555859}.bcl-header:not(.bcl-header--neutral) .bcl-header__project{padding-top:1rem}.bcl-header .navbar-brand img{width:100px}.bcl-header .notification{padding-right:0;position:relative}.bcl-header .notification span{border-radius:10px;height:18px;line-height:.6rem;padding-left:5px;padding-right:5px;transform:translate(-11px,5px);z-index:1}.bcl-header__project .bcl-header__site-name{color:#fff;display:inline-block;font-size:1.3rem;font-weight:300;margin-bottom:0;max-width:80%;vertical-align:middle}@media only screen and (max-width:400px){.bcl-header--neutral .bcl-header__project-logo{display:none}}@media (max-width:575.98px){.bcl-header .navbar:first-child .nav-link{padding:.5rem .4rem}}@media (min-width:768px){.bcl-header--ec .navbar-brand img,.ec__header .navbar-brand img{width:180px}}@media (max-width:991.98px){.bcl-header__site-name{margin-left:5rem}.bcl-header__top-navbar .navbar-collapse{background:#fff;border:1px solid #dadee0;border-radius:4px;position:absolute;right:.75rem;top:100%;z-index:1050}.bcl-header__top-navbar .navbar-collapse .nav{align-items:flex-start;flex-direction:column;min-width:16rem;padding:1rem}.bcl-header__top-navbar .navbar-collapse .nav li{width:100%}.bcl-header__project{min-height:3rem;padding-top:1rem}.bcl-header nav+nav{min-height:3.5rem}.bcl-header nav+nav .navbar-toggler{position:static}.bcl-header__navbar .navbar-collapse,.bcl-header__navbar .navbar-collapse .nav-item.dropdown{max-width:100%}.bcl-header__navbar .navbar-collapse .nav-item.dropdown a{white-space:normal}.bcl-header__navbar .navbar-collapse .nav-item.dropdown .dropdown-menu{max-width:100%}}@media (min-width:992px){.bcl-header--ec .bcl-header__project.light,.bcl-header__project.light,.ec__header .bcl-header__project.light{background:#fff}.bcl-header__site-name{font-weight:500;margin-left:1.5rem}.bcl-header__project.light .bcl-header__site-name{color:#000}.bcl-header .navbar-toggler{bottom:0;position:relative;right:0}.bcl-header .navbar-brand img{width:auto}.bcl-header__navbar .navbar-collapse{padding-bottom:0}.bcl-header__navbar .nav-link.active{margin-bottom:-.5rem;margin-top:-.5rem;padding-bottom:1rem;padding-top:1rem}.bcl-header__navbar .dropdown-menu{z-index:1050}.bcl-header:not(.bcl-header--neutral) .bcl-header__project{padding-bottom:1rem}.bcl-header--ec .navbar-brand img,.ec__header .navbar-brand img{width:285px}}.bcl-language-list-modal .btn-close{opacity:1}.bcl-language-list-modal.bcl-language-list-modal--ec .modal-body,.bcl-language-list-modal.bcl-language-list-modal--eu .modal-body{overflow:visible;padding-top:.5rem}.bcl-language-list-modal.bcl-language-list-modal--ec .modal-header,.bcl-language-list-modal.bcl-language-list-modal--eu .modal-header{border:0;padding:0}.bcl-language-list-modal.bcl-language-list-modal--eu .modal-body,.bcl-language-list-modal.bcl-language-list-modal--eu .modal-dialog{background:#fff}.bcl-language-list-modal.bcl-language-list-modal--eu h5,.bcl-language-list-modal.bcl-language-list-modal--eu svg{color:#0e47cb}.bcl-language-list-modal.bcl-language-list-modal--eu .btn-close{filter:invert(20%) sepia(70%) saturate(2876%) hue-rotate(216deg) brightness(94%) contrast(105%)}.bcl-language-list-modal.bcl-language-list-modal--ec,.bcl-language-list-modal.bcl-language-list-modal--ec .modal-content{background:#034da1}.bcl-language-list-modal.bcl-language-list-modal--ec h5,.bcl-language-list-modal.bcl-language-list-modal--ec svg{color:#fff}.bcl-language-list-modal.bcl-language-list-modal--ec .btn-close{filter:invert(1) grayscale(100%) brightness(200%)}.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}.ui-widget,.ui-widget button{font-family:Roboto,sans-serif}.ui-widget-overlay{z-index:502}.ui-widget-content a.btn-brand{color:#fff}.ui-dialog{border:1px solid #f5f6f7;border-radius:.5rem;box-shadow:0 .5rem 1rem rgba(0,0,0,.15);overflow:hidden;overflow-wrap:break-word;padding:0;z-index:512}.ui-dialog .ui-dialog-titlebar{background-color:transparent;border:0;border-bottom:1px solid var(--bs-border-color);padding:1rem}.ui-dialog .ui-dialog-title{color:#082330;font-size:1rem;font-weight:400}.ui-dialog .ui-dialog-titlebar-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.414z'/%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;right:1rem;top:1.75rem;width:1em}.ui-dialog .ui-dialog-content{padding:1rem}.ui-dialog .ui-button.ui-dialog-titlebar-close,.ui-dialog .ui-button.ui-dialog-titlebar-close:hover{background-color:transparent}.ui-dialog .ui-button.ui-dialog-titlebar-close .ui-icon-closethick,.ui-dialog .ui-button.ui-dialog-titlebar-close:hover .ui-icon-closethick{background-image:none}.btn{font-weight:500}.btn:not(.btn-link):hover{box-shadow:0 .1rem .4rem .1rem rgba(0,0,0,.1)}.btn-primary:hover{background-color:#1a3a4a}.btn-primary.active,.btn-primary:active,.btn-primary:focus{background-color:#05161e}.btn-secondary,.btn-secondary:hover{color:#175e80}.btn-light,.btn-light:hover{color:#082330} /*# sourceMappingURL=components.min.css.map */ \ No newline at end of file diff --git a/web/themes/iop/assets/css/join.min.css b/web/themes/iop/assets/css/join.min.css index 4496e2e32ca0deafbd183cf1ea2ac0ab0ffb9ae2..e8028f87566c0ebb3f3a90921cffa9fa2fdf2f36 100644 --- a/web/themes/iop/assets/css/join.min.css +++ b/web/themes/iop/assets/css/join.min.css @@ -1,2 +1,2 @@ -.join{background-image:url(../images/join-bg.webp);background-position:50%;background-repeat:no-repeat;background-size:100% 100%;padding:1.5rem 0;text-align:center}@media (min-width:576px){.join{padding:3rem 0}}@media (min-width:768px){.join{padding:4rem 0}}@media (min-width:992px){.join{background-position:top;padding:7rem 0}}@media (min-width:1200px){.join{padding:10rem 0}}.join__title{font-size:2rem;margin-top:2rem}.join__btn{align-items:center;background:linear-gradient(#fff,#fff) padding-box,linear-gradient(90deg,#0047ba,#19d3c5) border-box;border:2px solid transparent;border-radius:50rem;color:#238dc1;display:inline-flex;height:2.5rem;justify-content:center;margin:1rem .5rem;padding:.25rem;width:2.5rem}@media (min-width:576px){.join__btn{height:3rem;margin:1rem;width:3rem}}.join__btn svg{fill:url(#join-gradient)}.join__btn:hover{background:linear-gradient(#fff,#fff) padding-box,#082330 border-box!important;color:#082330}.join__btn:hover svg{fill:#082330} +.join{background-image:url(../images/join-bg.webp);background-position:50%;background-repeat:no-repeat;background-size:100% 100%;padding:1.5rem 0;text-align:center}@media (min-width:576px){.join{padding:3rem 0}}@media (min-width:768px){.join{padding:4rem 0}}@media (min-width:992px){.join{background-position:top;padding:7rem 0}}@media (min-width:1200px){.join{padding:10rem 0}}.join__title{font-size:2rem;margin-top:2rem}.join__btn{align-items:center;background-repeat:no-repeat;background-size:cover;display:inline-flex;height:2.5rem;justify-content:center;margin:1rem .5rem;width:2.5rem}@media (min-width:576px){.join__btn{height:3rem;margin:1rem;width:3rem}}.join__btn--linkedin{background-image:url(../images/icons/icon-linkedin.png)}.join__btn--linkedin:hover{background-image:url(../images/icons/icon-linkedin-hover.png)}.join__btn--twitter{background-image:url(../images/icons/icon-twitter.png)}.join__btn--twitter:hover{background-image:url(../images/icons/icon-twitter-hover.png)}.join__btn--youtube{background-image:url(../images/icons/icon-youtube.png)}.join__btn--youtube:hover{background-image:url(../images/icons/icon-youtube-hover.png)}.join__btn--newsletter{background-image:url(../images/icons/icon-newsletter.png)}.join__btn--newsletter:hover{background-image:url(../images/icons/icon-newsletter-hover.png)} /*# sourceMappingURL=join.min.css.map */ \ No newline at end of file diff --git a/web/themes/iop/assets/css/landing.min.css b/web/themes/iop/assets/css/landing.min.css new file mode 100644 index 0000000000000000000000000000000000000000..f7b5197291599361e4344b03fbbd664ee2970bf2 --- /dev/null +++ b/web/themes/iop/assets/css/landing.min.css @@ -0,0 +1,2 @@ +.paragraph--layout.banner{padding-top:2.5rem}@media (min-width:992px){.paragraph--layout.banner{padding-top:4.5rem}}@media (min-width:768px){.paragraph--layout.banner .row .col-md-6:first-of-type{padding-right:5rem}}.paragraph--layout.banner .row .col-md-6:nth-of-type(2){margin-bottom:2rem;order:-1}@media (min-width:768px){.paragraph--layout.banner .row .col-md-6:nth-of-type(2){margin-bottom:0;order:0}}.paragraph--layout.banner img{display:none}@media (min-width:768px){.paragraph--layout.banner img{display:block}}.paragraph--layout.banner .paragraph--video{border-radius:1rem}.paragraph--layout.banner .paragraph--video:not(.js-lpb-component){overflow:hidden}.paragraph--layout.banner .paragraph--video:not(:last-child){margin-bottom:1rem}@media (min-width:768px){.paragraph--layout.why{margin-top:50px}}.paragraph--layout.why h2{font-size:2.5rem;font-weight:400;text-align:center}@media (min-width:768px){.paragraph--layout.why h2{font-size:3rem;text-align:left}}.paragraph--layout.why .row .col-md-6:first-of-type{margin-left:-5rem;position:relative}@media (min-width:576px){.paragraph--layout.why .row .col-md-6:first-of-type{margin-left:0}}@media (min-width:768px){.paragraph--layout.why .row .col-md-6:first-of-type{margin-bottom:0}}.paragraph--layout.why .row .col-md-6:first-of-type:before{content:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' style='enable-background:new 0 0 100 100' xml:space='preserve'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='0' y1='50' x2='100' y2='50'%3E%3Cstop offset='.106' style='stop-color:%23268dc2'/%3E%3Cstop offset='.129' style='stop-color:%232c94c1'/%3E%3Cstop offset='.216' style='stop-color:%233ea9bc'/%3E%3Cstop offset='.302' style='stop-color:%2348b6ba'/%3E%3Cstop offset='.382' style='stop-color:%234cbab9'/%3E%3Cstop offset='.682' style='stop-color:%23ced955'/%3E%3Cstop offset='.734' style='stop-color:%23d1d44f'/%3E%3Cstop offset='.805' style='stop-color:%23d9c43d'/%3E%3Cstop offset='.887' style='stop-color:%23e6ac20'/%3E%3Cstop offset='.956' style='stop-color:%23f39202'/%3E%3C/linearGradient%3E%3Ccircle cx='50' cy='50' r='48' style='opacity:.7;fill:none;stroke:url(%23a);stroke-width:4;stroke-miterlimit:10'/%3E%3C/svg%3E");position:absolute;right:-20px;top:-20px;width:80px;z-index:-1}@media (min-width:768px){.paragraph--layout.why .row .col-md-6:first-of-type:before{right:-35px;top:-50px;width:100px}}.paragraph--layout.why .row .col-md-6:first-of-type img{background:linear-gradient(#082330,#082330) padding-box,linear-gradient(90deg,#238dc1 0,#0047ba 25%,#19d3c5 55%,#cdd854 80%,#f29100) border-box;border:2px solid transparent;border-radius:2.5rem;overflow:hidden}@media (min-width:768px){.paragraph--layout.why .row .col-md-6:first-of-type img{border-radius:4rem}}.paragraph--layout.why .row .col-md-6:nth-of-type(2){order:2}@media (min-width:768px){.paragraph--layout.why .row .col-md-6:nth-of-type(2){order:0}}@media (min-width:992px){.paragraph--layout.why .row .col-md-6:nth-of-type(2)>*{margin-left:5rem}}.paragraph--layout.facts h2{font-size:3rem;text-align:center}.paragraph--layout.facts h3{font-size:2rem;margin-bottom:2.5rem;text-align:center} +/*# sourceMappingURL=landing.min.css.map */ \ No newline at end of file diff --git a/web/themes/iop/assets/css/paragraph--2-column-featured-left.min.css b/web/themes/iop/assets/css/paragraph--2-column-featured-left.min.css deleted file mode 100644 index 776030bb84e6bfc644d27c8f2bfc175e6b8b4af2..0000000000000000000000000000000000000000 --- a/web/themes/iop/assets/css/paragraph--2-column-featured-left.min.css +++ /dev/null @@ -1,2 +0,0 @@ -@media (min-width:768px){.paragraph--2-column-featured-left{margin-top:50px}}.paragraph--2-column-featured-left h2{font-size:2.5rem;font-weight:400;text-align:center}@media (min-width:768px){.paragraph--2-column-featured-left h2{font-size:3rem;text-align:left}}.paragraph--2-column-featured-left:first-of-type{margin-left:-5rem;position:relative}@media (min-width:576px){.paragraph--2-column-featured-left:first-of-type{margin-left:0}}@media (min-width:768px){.paragraph--2-column-featured-left:first-of-type{margin-bottom:0}}.paragraph--2-column-featured-left:first-of-type:before{content:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' style='enable-background:new 0 0 100 100' xml:space='preserve'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='0' y1='50' x2='100' y2='50'%3E%3Cstop offset='.106' style='stop-color:%23268dc2'/%3E%3Cstop offset='.129' style='stop-color:%232c94c1'/%3E%3Cstop offset='.216' style='stop-color:%233ea9bc'/%3E%3Cstop offset='.302' style='stop-color:%2348b6ba'/%3E%3Cstop offset='.382' style='stop-color:%234cbab9'/%3E%3Cstop offset='.682' style='stop-color:%23ced955'/%3E%3Cstop offset='.734' style='stop-color:%23d1d44f'/%3E%3Cstop offset='.805' style='stop-color:%23d9c43d'/%3E%3Cstop offset='.887' style='stop-color:%23e6ac20'/%3E%3Cstop offset='.956' style='stop-color:%23f39202'/%3E%3C/linearGradient%3E%3Ccircle cx='50' cy='50' r='48' style='opacity:.7;fill:none;stroke:url(%23a);stroke-width:4;stroke-miterlimit:10'/%3E%3C/svg%3E");position:absolute;right:-20px;top:-20px;width:80px;z-index:-1}@media (min-width:768px){.paragraph--2-column-featured-left:first-of-type:before{right:-35px;top:-50px;width:100px}}.paragraph--2-column-featured-left:first-of-type img{background:linear-gradient(#082330,#082330) padding-box,linear-gradient(90deg,#238dc1 0,#0047ba 25%,#19d3c5 55%,#cdd854 80%,#f29100) border-box;border:2px solid transparent;border-radius:2.5rem;overflow:hidden}@media (min-width:768px){.paragraph--2-column-featured-left:first-of-type img{border-radius:4rem}}.paragraph--2-column-featured-left:last-of-type{order:2}@media (min-width:768px){.paragraph--2-column-featured-left:last-of-type{order:0}}@media (min-width:992px){.paragraph--2-column-featured-left:last-of-type>*{margin-left:5rem}} -/*# sourceMappingURL=paragraph--2-column-featured-left.min.css.map */ \ No newline at end of file diff --git a/web/themes/iop/assets/css/paragraph--2-column-featured-right.min.css b/web/themes/iop/assets/css/paragraph--2-column-featured-right.min.css deleted file mode 100644 index 52077826fb07d4573f24fc472bed6c7222bbaf73..0000000000000000000000000000000000000000 --- a/web/themes/iop/assets/css/paragraph--2-column-featured-right.min.css +++ /dev/null @@ -1,2 +0,0 @@ -@media (min-width:768px){.paragraph--2-column-featured-right:first-of-type>*{margin-right:5rem}}.paragraph--2-column-featured-right:nth-of-type(2){margin-bottom:2rem;order:-1}@media (min-width:768px){.paragraph--2-column-featured-right:nth-of-type(2){margin-bottom:0;order:0}} -/*# sourceMappingURL=paragraph--2-column-featured-right.min.css.map */ \ No newline at end of file diff --git a/web/themes/iop/assets/css/paragraph--call-to-action.min.css b/web/themes/iop/assets/css/paragraph--call-to-action.min.css index 319c722d1061a1b1b70ce13d2ea2191cd529e130..8dae63b66598566cc0569c23e83a4aba7d377119 100644 --- a/web/themes/iop/assets/css/paragraph--call-to-action.min.css +++ b/web/themes/iop/assets/css/paragraph--call-to-action.min.css @@ -1,2 +1,2 @@ -.paragraph--call-to-action a{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg preserveAspectRatio='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 30' style='enable-background:new 0 0 100 30' xml:space='preserve'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='0' y1='15.5' x2='100' y2='15.5'%3E%3Cstop offset='.106' style='stop-color:%23268dc2'/%3E%3Cstop offset='.129' style='stop-color:%232c94c1'/%3E%3Cstop offset='.216' style='stop-color:%233ea9bc'/%3E%3Cstop offset='.302' style='stop-color:%2348b6ba'/%3E%3Cstop offset='.382' style='stop-color:%234cbab9'/%3E%3Cstop offset='.682' style='stop-color:%23ced955'/%3E%3Cstop offset='.734' style='stop-color:%23d1d44f'/%3E%3Cstop offset='.805' style='stop-color:%23d9c43d'/%3E%3Cstop offset='.887' style='stop-color:%23e6ac20'/%3E%3Cstop offset='.956' style='stop-color:%23f39202'/%3E%3C/linearGradient%3E%3Cpath d='M1 17.6s11.27-6.1 24.01-6.1 34.3 8 49 8 24.99-4 24.99-4' style='fill:none;stroke:url(%23a);stroke-width:4;stroke-linecap:round;stroke-miterlimit:10'/%3E%3C/svg%3E");background-position:center 1.125em;background-repeat:no-repeat;background-size:100% 16px;color:#082330;display:inline-block;font-size:1.25rem;height:2em}.paragraph--call-to-action a:hover{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg preserveAspectRatio='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 30' style='enable-background:new 0 0 100 30' xml:space='preserve'%3E%3Cpath d='M1 17.6s11.27-6.1 24.01-6.1 34.3 8 49 8 24.99-4 24.99-4' style='fill:none;stroke:%233d3f40;stroke-width:4;stroke-linecap:round;stroke-miterlimit:10'/%3E%3C/svg%3E");color:#000;text-decoration:none}@media (min-width:992px){.paragraph--call-to-action a{font-size:1rem}} +.paragraph--call-to-action a.cta{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg preserveAspectRatio='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 30' style='enable-background:new 0 0 100 30' xml:space='preserve'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='0' y1='15.5' x2='100' y2='15.5'%3E%3Cstop offset='.106' style='stop-color:%23268dc2'/%3E%3Cstop offset='.129' style='stop-color:%232c94c1'/%3E%3Cstop offset='.216' style='stop-color:%233ea9bc'/%3E%3Cstop offset='.302' style='stop-color:%2348b6ba'/%3E%3Cstop offset='.382' style='stop-color:%234cbab9'/%3E%3Cstop offset='.682' style='stop-color:%23ced955'/%3E%3Cstop offset='.734' style='stop-color:%23d1d44f'/%3E%3Cstop offset='.805' style='stop-color:%23d9c43d'/%3E%3Cstop offset='.887' style='stop-color:%23e6ac20'/%3E%3Cstop offset='.956' style='stop-color:%23f39202'/%3E%3C/linearGradient%3E%3Cpath d='M1 17.6s11.27-6.1 24.01-6.1 34.3 8 49 8 24.99-4 24.99-4' style='fill:none;stroke:url(%23a);stroke-width:4;stroke-linecap:round;stroke-miterlimit:10'/%3E%3C/svg%3E");background-position:center 1.125em;background-repeat:no-repeat;background-size:100% 16px;color:#082330;display:inline-block;font-size:1.25rem;height:2em}.paragraph--call-to-action a.cta:hover{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg preserveAspectRatio='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 30' style='enable-background:new 0 0 100 30' xml:space='preserve'%3E%3Cpath d='M1 17.6s11.27-6.1 24.01-6.1 34.3 8 49 8 24.99-4 24.99-4' style='fill:none;stroke:%233d3f40;stroke-width:4;stroke-linecap:round;stroke-miterlimit:10'/%3E%3C/svg%3E");color:#000;text-decoration:none}@media (min-width:992px){.paragraph--call-to-action a.cta{font-size:1rem}} /*# sourceMappingURL=paragraph--call-to-action.min.css.map */ \ No newline at end of file diff --git a/web/themes/iop/assets/css/paragraph--carousel.min.css b/web/themes/iop/assets/css/paragraph--carousel.min.css index 99bf38263b6a50dca291a429ea94033a02b2436a..69a241f4ccb9399330d2f099e298cfef736cca6d 100644 --- a/web/themes/iop/assets/css/paragraph--carousel.min.css +++ b/web/themes/iop/assets/css/paragraph--carousel.min.css @@ -1,2 +1,2 @@ -.paragraph--carousel{position:relative}.paragraph--carousel .paragraph__heading{color:#082330;display:block}.paragraph--carousel .paragraph__heading:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg preserveAspectRatio='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 30' style='enable-background:new 0 0 100 30' xml:space='preserve'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='0' y1='15.5' x2='100' y2='15.5'%3E%3Cstop offset='.106' style='stop-color:%23268dc2'/%3E%3Cstop offset='.129' style='stop-color:%232c94c1'/%3E%3Cstop offset='.216' style='stop-color:%233ea9bc'/%3E%3Cstop offset='.302' style='stop-color:%2348b6ba'/%3E%3Cstop offset='.382' style='stop-color:%234cbab9'/%3E%3Cstop offset='.682' style='stop-color:%23ced955'/%3E%3Cstop offset='.734' style='stop-color:%23d1d44f'/%3E%3Cstop offset='.805' style='stop-color:%23d9c43d'/%3E%3Cstop offset='.887' style='stop-color:%23e6ac20'/%3E%3Cstop offset='.956' style='stop-color:%23f39202'/%3E%3C/linearGradient%3E%3Cpath d='M1 17.6s11.27-6.1 24.01-6.1 34.3 8 49 8 24.99-4 24.99-4' style='fill:none;stroke:url(%23a);stroke-width:4;stroke-linecap:round;stroke-miterlimit:10'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:cover;content:"";display:block;height:15px;margin:0 auto;position:relative;top:-8px;width:70px}@media (min-width:768px){.paragraph--carousel .paragraph__heading:after{height:20px;top:-10px;width:100px}}.paragraph--carousel__action{font-size:.75rem;left:67%;line-height:1;position:absolute;top:1.5rem}@media (min-width:576px){.paragraph--carousel__action{font-size:.875rem;left:65%}}@media (min-width:768px){.paragraph--carousel__action{font-size:1rem;top:2rem}}@media (min-width:992px){.paragraph--carousel__action{left:62%}}@media (min-width:1200px){.paragraph--carousel__action{left:60%}}.paragraph--carousel__action a{color:#082330}.paragraph--carousel__action a:hover:visited{text-decoration-color:#082330!important}@media (max-width:767.98px){.glide__outer{margin:0 -.75rem;overflow:hidden}}.glide__arrows{display:flex;justify-content:space-between;left:3%;position:absolute;top:16vw;width:94%}@media (min-width:576px){.glide__arrows{top:7.5rem}}@media (min-width:768px){.glide__arrows{left:-3%;top:4.25rem;width:106%}}@media (min-width:992px){.glide__arrows{left:-2%;top:5.25rem;width:104%}}@media (min-width:1200px){.glide__arrows{top:6.25rem}}@media (min-width:1400px){.glide__arrows{top:7.25rem}}.glide__arrow{align-items:center;background-color:hsla(0,0%,100%,.5);border:1px solid #082330;color:#082330;display:flex;height:2.5rem;justify-content:center;padding:.5rem;width:2.5rem;z-index:1}@media (max-width:575.98px){.glide__track{margin-left:10%;width:80%}}@media (max-width:767.98px){.glide__track{overflow:visible!important}}.glide__slides{align-items:stretch}@media (min-width:768px){.glide__slides{padding:2rem 0!important}}.glide__slide .slide{transition:transform .1s ease}.glide__slide .slide__figure{align-items:center;aspect-ratio:2/1;background:linear-gradient(#dadee0,#dadee0) padding-box,linear-gradient(90deg,#238dc1 0,#0047ba 25%,#19d3c5 55%,#cdd854 80%,#f29100) border-box;border:2px solid transparent;border-radius:1rem;display:flex;justify-content:center;overflow:hidden}@media (min-width:768px){.glide__slide .slide__figure{margin-bottom:2rem}}.glide__slide .slide__svg{color:#858a8c;height:60%;width:30%}.glide__slide .slide__title{opacity:0}.glide__slide .slide__title a:hover:visited{text-decoration-color:#082330!important}.glide__slide .slide__title-link{color:#082330;font-weight:400}.glide__slide .slide__body{opacity:0}@media (min-width:768px){.glide__slide .slide__body{margin-left:-1.25rem;margin-right:-1.25rem}}@media (min-width:992px){.glide__slide .slide__body{margin-left:-1.75rem;margin-right:-1.75rem}}@media (min-width:1200px){.glide__slide .slide__body{margin-left:-2.25rem;margin-right:-2.25rem}}@media (min-width:1400px){.glide__slide .slide__body{margin-left:-2.5rem;margin-right:-2.5rem}}.glide__slide .slide__text{margin-top:.75rem}@media (min-width:768px){.glide__slide .slide__text{margin-top:1rem}.glide__slide--active .slide__figure{transform:scale(1.2)}}.glide__slide--active .slide__title{color:#082330;opacity:1}@media (min-width:768px){.glide__slide--active .slide__title{font-size:1rem;margin-top:1rem}}.glide__slide--active .slide__body{opacity:1}.glide__slide--active .slide__body .paragraph{color:#555859}.glide__slide:not(.glide__slide--active){opacity:.5}.paragraph--carousel+.paragraph--carousel{margin-top:4rem} +.paragraph--carousel{position:relative}.paragraph--carousel .paragraph__heading{color:#082330;font-size:1.75rem;font-weight:400;margin-top:2.5rem;text-align:center}@media (min-width:768px){.paragraph--carousel .paragraph__heading{font-size:3rem;margin-top:2.5rem}}.paragraph--carousel .paragraph__heading:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg preserveAspectRatio='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 30' style='enable-background:new 0 0 100 30' xml:space='preserve'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='0' y1='15.5' x2='100' y2='15.5'%3E%3Cstop offset='.106' style='stop-color:%23268dc2'/%3E%3Cstop offset='.129' style='stop-color:%232c94c1'/%3E%3Cstop offset='.216' style='stop-color:%233ea9bc'/%3E%3Cstop offset='.302' style='stop-color:%2348b6ba'/%3E%3Cstop offset='.382' style='stop-color:%234cbab9'/%3E%3Cstop offset='.682' style='stop-color:%23ced955'/%3E%3Cstop offset='.734' style='stop-color:%23d1d44f'/%3E%3Cstop offset='.805' style='stop-color:%23d9c43d'/%3E%3Cstop offset='.887' style='stop-color:%23e6ac20'/%3E%3Cstop offset='.956' style='stop-color:%23f39202'/%3E%3C/linearGradient%3E%3Cpath d='M1 17.6s11.27-6.1 24.01-6.1 34.3 8 49 8 24.99-4 24.99-4' style='fill:none;stroke:url(%23a);stroke-width:4;stroke-linecap:round;stroke-miterlimit:10'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:cover;content:"";display:block;height:15px;margin:0 auto;position:relative;top:-8px;width:70px}@media (min-width:768px){.paragraph--carousel .paragraph__heading:after{height:20px;top:-10px;width:100px}}.paragraph--carousel__action{font-size:.75rem;left:67%;line-height:1;position:absolute;top:1.5rem}@media (min-width:576px){.paragraph--carousel__action{font-size:.875rem;left:65%}}@media (min-width:768px){.paragraph--carousel__action{font-size:1rem;top:2.5rem}}@media (min-width:992px){.paragraph--carousel__action{left:62%}}@media (min-width:1200px){.paragraph--carousel__action{left:60%}}.paragraph--carousel__action a{color:#082330}.paragraph--carousel__action a:hover:visited{text-decoration-color:#082330!important}@media (max-width:767.98px){.glide__outer{margin:0 -.75rem;overflow:hidden}}.glide__arrows{display:flex;justify-content:space-between;left:3%;position:absolute;top:16vw;width:94%}@media (min-width:576px){.glide__arrows{top:7.5rem}}@media (min-width:768px){.glide__arrows{left:-3%;top:4.25rem;width:106%}}@media (min-width:992px){.glide__arrows{left:-2%;top:5.25rem;width:104%}}@media (min-width:1200px){.glide__arrows{top:6.25rem}}@media (min-width:1400px){.glide__arrows{top:7.25rem}}.glide__arrow{align-items:center;background-color:hsla(0,0%,100%,.5);border:1px solid #082330;color:#082330;display:flex;height:2.5rem;justify-content:center;padding:.5rem;width:2.5rem;z-index:1}@media (max-width:575.98px){.glide__track{margin-left:10%;width:80%}}@media (max-width:767.98px){.glide__track{overflow:visible!important}}.glide__slides{align-items:stretch}@media (min-width:768px){.glide__slides{padding:2rem 0!important}}.glide__slide .slide{transition:transform .1s ease}.glide__slide .slide__figure{align-items:center;aspect-ratio:2/1;background:linear-gradient(#dadee0,#dadee0) padding-box,linear-gradient(90deg,#238dc1 0,#0047ba 25%,#19d3c5 55%,#cdd854 80%,#f29100) border-box;border:2px solid transparent;border-radius:1rem;display:flex;justify-content:center;overflow:hidden}@media (min-width:768px){.glide__slide .slide__figure{margin-bottom:2rem}}.glide__slide .slide__svg{color:#858a8c;height:60%;width:30%}.glide__slide .slide__title{opacity:0}.glide__slide .slide__title a:hover:visited{text-decoration-color:#082330!important}.glide__slide .slide__title-link{color:#082330;font-weight:400}.glide__slide .slide__body{opacity:0}@media (min-width:768px){.glide__slide .slide__body{margin-left:-1.25rem;margin-right:-1.25rem}}@media (min-width:992px){.glide__slide .slide__body{margin-left:-1.75rem;margin-right:-1.75rem}}@media (min-width:1200px){.glide__slide .slide__body{margin-left:-2.25rem;margin-right:-2.25rem}}@media (min-width:1400px){.glide__slide .slide__body{margin-left:-2.5rem;margin-right:-2.5rem}}.glide__slide .slide__text{margin-top:.75rem}@media (min-width:768px){.glide__slide .slide__text{margin-top:1rem}.glide__slide--active .slide__figure{transform:scale(1.2)}}.glide__slide--active .slide__title{color:#082330;opacity:1}@media (min-width:768px){.glide__slide--active .slide__title{font-size:1rem;margin-top:1rem}}.glide__slide--active .slide__body{opacity:1}.glide__slide--active .slide__body .paragraph{color:#555859}.glide__slide:not(.glide__slide--active){opacity:.5}.paragraph--carousel+.paragraph--carousel{margin-top:4rem} /*# sourceMappingURL=paragraph--carousel.min.css.map */ \ No newline at end of file diff --git a/web/themes/iop/assets/css/paragraph--layout.min.css b/web/themes/iop/assets/css/paragraph--layout.min.css new file mode 100644 index 0000000000000000000000000000000000000000..8c4c32fcefbac31ef5aaaa7c0e2ce063735ab601 --- /dev/null +++ b/web/themes/iop/assets/css/paragraph--layout.min.css @@ -0,0 +1,2 @@ +.paragraph--layout{padding-bottom:1.125rem;padding-top:1.125rem}@media (min-width:992px){.paragraph--layout{padding-bottom:2.25rem;padding-top:2.25rem}}.paragraph--layout--light,.paragraph--layout--secondary{padding:2rem 0;position:relative}@media (min-width:576px){.paragraph--layout--light,.paragraph--layout--secondary{padding:4rem 0}}@media (min-width:992px){.paragraph--layout--light,.paragraph--layout--secondary{padding:5rem 0}}.paragraph--layout--light:after,.paragraph--layout--light:before,.paragraph--layout--secondary:after,.paragraph--layout--secondary:before{background-repeat:no-repeat;content:"";display:block;height:100%;left:-12px;position:absolute;width:100vw;z-index:-1}@media (min-width:576px){.paragraph--layout--light:after,.paragraph--layout--light:before,.paragraph--layout--secondary:after,.paragraph--layout--secondary:before{left:calc(-50vw + 258px)}}@media (min-width:768px){.paragraph--layout--light:after,.paragraph--layout--light:before,.paragraph--layout--secondary:after,.paragraph--layout--secondary:before{left:calc(-50vw + 348px)}}@media (min-width:992px){.paragraph--layout--light:after,.paragraph--layout--light:before,.paragraph--layout--secondary:after,.paragraph--layout--secondary:before{left:calc(-50vw + 468px)}}@media (min-width:1200px){.paragraph--layout--light:after,.paragraph--layout--light:before,.paragraph--layout--secondary:after,.paragraph--layout--secondary:before{left:calc(-50vw + 558px)}}@media (min-width:1400px){.paragraph--layout--light:after,.paragraph--layout--light:before,.paragraph--layout--secondary:after,.paragraph--layout--secondary:before{left:calc(-50vw + 648px)}}.paragraph--layout--light:before,.paragraph--layout--secondary:before{background-color:unset;background-position:top,bottom;bottom:0}.paragraph--layout--light:after,.paragraph--layout--secondary:after{height:calc(100% - 4rem);top:2rem}@media (min-width:576px){.paragraph--layout--light:after,.paragraph--layout--secondary:after{height:calc(100% - 6rem);top:3rem}}@media (min-width:768px){.paragraph--layout--light:after,.paragraph--layout--secondary:after{height:calc(100% - 8rem);top:4rem}}@media (min-width:992px){.paragraph--layout--light:after,.paragraph--layout--secondary:after{height:calc(100% - 12rem);top:6rem}}.paragraph--layout--light:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 2578 281'%3E%3Cpath d='M2578 84.05S1784.18-82.21 1277 55.74C819.69 180.13 0 84.05 0 84.05V282.4h2578Z' fill='%23f8f9fa'/%3E%3C/svg%3E"),url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 2578 281'%3E%3Cpath d='M0 198.35s793.82 166.26 1301 28.31c457.31-124.39 1277-28.31 1277-28.31V0H0Z' fill='%23f8f9fa'/%3E%3C/svg%3E")}.paragraph--layout--light:after{background-color:#f8f9fa}.paragraph--layout--secondary:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 2578 281'%3E%3Cpath d='M2578 84.05S1784.18-82.21 1277 55.74C819.69 180.13 0 84.05 0 84.05V282.4h2578Z' fill='%23e8f5fb'/%3E%3C/svg%3E"),url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 2578 281'%3E%3Cpath d='M0 198.35s793.82 166.26 1301 28.31c457.31-124.39 1277-28.31 1277-28.31V0H0Z' fill='%23e8f5fb'/%3E%3C/svg%3E")}.paragraph--layout--secondary:after{background-color:#e8f5fb} +/*# sourceMappingURL=paragraph--layout.min.css.map */ \ No newline at end of file diff --git a/web/themes/iop/assets/css/paragraph--row.min.css b/web/themes/iop/assets/css/paragraph--row.min.css deleted file mode 100644 index 7add9c177d71d290a6ddce07f9716707679cfc13..0000000000000000000000000000000000000000 --- a/web/themes/iop/assets/css/paragraph--row.min.css +++ /dev/null @@ -1,2 +0,0 @@ -.paragraph--row{padding-bottom:1.125rem;padding-top:1.125rem}@media (min-width:992px){.paragraph--row{padding-bottom:2.25rem;padding-top:2.25rem}}.paragraph--row:first-of-type{padding-top:2.5rem}@media (min-width:992px){.paragraph--row:first-of-type{padding-top:4.5rem}}.paragraph--row.paragraph--light-wave{padding:2rem 0!important}@media (min-width:576px){.paragraph--row.paragraph--light-wave{padding:4rem 0!important}}@media (min-width:992px){.paragraph--row.paragraph--light-wave{padding:5rem 0!important}} -/*# sourceMappingURL=paragraph--row.min.css.map */ \ No newline at end of file diff --git a/web/themes/iop/assets/css/paragraph--testimony.min.css b/web/themes/iop/assets/css/paragraph--testimony.min.css index a236629dae087c817e9ab5fcdb756d1858bb6974..11d323b42f4db995a818b54cfd00f995f1876430 100644 --- a/web/themes/iop/assets/css/paragraph--testimony.min.css +++ b/web/themes/iop/assets/css/paragraph--testimony.min.css @@ -1,2 +1,2 @@ -@charset "UTF-8";.paragraph blockquote.paragraph--testimony{border-left:none;margin-left:0;margin-right:0;padding:unset}blockquote.paragraph--testimony{display:flex;flex-direction:column;margin-bottom:4rem}@media (min-width:768px){blockquote.paragraph--testimony{height:100%;justify-content:space-between;margin-bottom:2rem}}blockquote.paragraph--testimony .testimony__quote{margin-bottom:1rem}@media (min-width:768px){blockquote.paragraph--testimony .testimony__quote{margin-bottom:0}}blockquote.paragraph--testimony .testimony__quote:before{color:#238dc1;content:"“";display:inline-block;font-size:5rem;line-height:0;position:relative;top:2rem}blockquote.paragraph--testimony .testimony__quote:after{color:#238dc1;content:"â€";display:inline-block;font-size:5rem;line-height:0;margin-top:-1em;position:relative;top:3.5rem}blockquote.paragraph--testimony .testimony__fig{align-items:center;display:flex}@media (min-width:768px) and (max-width:991.98px){blockquote.paragraph--testimony .testimony__fig{flex-direction:column}}blockquote.paragraph--testimony .testimony__img{aspect-ratio:16/9;background:linear-gradient(#082330,#082330) padding-box,linear-gradient(90deg,#238dc1 0,#0047ba 25%,#19d3c5 55%,#cdd854 80%,#f29100) border-box;border:2px solid transparent;border-radius:2rem;margin-left:-2.5rem;-o-object-fit:cover;object-fit:cover;overflow:hidden;width:70%}@media (min-width:576px){blockquote.paragraph--testimony .testimony__img{margin-left:0}}@media (min-width:768px) and (max-width:991.98px){blockquote.paragraph--testimony .testimony__img{width:100%}}@media (min-width:992px){blockquote.paragraph--testimony .testimony__img{width:50%}}blockquote.paragraph--testimony .testimony__img img{width:100%}blockquote.paragraph--testimony .testimony__figcaption{color:#6d7173;display:flex;flex-direction:column;line-height:1.5;margin-left:1rem;width:calc(30% + 1.5rem)}@media (min-width:576px){blockquote.paragraph--testimony .testimony__figcaption{width:calc(30% - 1rem)}}@media (min-width:768px) and (max-width:991.98px){blockquote.paragraph--testimony .testimony__figcaption{height:4rem;margin-top:1rem;width:100%}}@media (min-width:992px){blockquote.paragraph--testimony .testimony__figcaption{width:50%;width:calc(50% - 1rem)}}blockquote.paragraph--testimony .testimony__author{font-size:.875rem;margin-bottom:0}blockquote.paragraph--testimony .testimony__bio{font-size:.75rem;line-height:1.2;margin-bottom:0}blockquote.paragraph--testimony .testimony__cite{display:inline-block;font-size:.625rem;font-style:normal;line-height:1.2} +@charset "UTF-8";.paragraph--testimony{display:flex;flex-direction:column;margin-bottom:4rem}@media (min-width:768px){.paragraph--testimony{height:100%;justify-content:space-between;margin-bottom:2rem}}.paragraph--testimony blockquote{border-left:none;margin-left:0;margin-right:0;overflow:unset;padding:unset}.paragraph--testimony .testimony__quote{margin-bottom:1rem}@media (min-width:768px){.paragraph--testimony .testimony__quote{margin-bottom:0}}.paragraph--testimony .testimony__quote:before{color:#238dc1;content:"“";display:inline-block;font-size:5rem;line-height:0;position:relative;top:2rem}.paragraph--testimony .testimony__quote:after{color:#238dc1;content:"â€";display:inline-block;font-size:5rem;line-height:0;margin-top:-1em;position:relative;top:3.5rem}.paragraph--testimony .testimony__fig{align-items:center;display:flex}@media (min-width:768px) and (max-width:991.98px){.paragraph--testimony .testimony__fig{flex-direction:column}}.paragraph--testimony .testimony__img{aspect-ratio:16/9;background:linear-gradient(#082330,#082330) padding-box,linear-gradient(90deg,#238dc1 0,#0047ba 25%,#19d3c5 55%,#cdd854 80%,#f29100) border-box;border:2px solid transparent;border-radius:2rem;margin-left:-2.5rem;-o-object-fit:cover;object-fit:cover;overflow:hidden;width:70%}@media (min-width:576px){.paragraph--testimony .testimony__img{margin-left:0}}@media (min-width:768px) and (max-width:991.98px){.paragraph--testimony .testimony__img{width:100%}}@media (min-width:992px){.paragraph--testimony .testimony__img{width:50%}}.paragraph--testimony .testimony__img img{width:100%}.paragraph--testimony .testimony__figcaption{color:#6d7173;display:flex;flex-direction:column;line-height:1.5;margin-left:1rem;width:calc(30% + 1.5rem)}@media (min-width:576px){.paragraph--testimony .testimony__figcaption{width:calc(30% - 1rem)}}@media (min-width:768px) and (max-width:991.98px){.paragraph--testimony .testimony__figcaption{height:4rem;margin-top:1rem;width:100%}}@media (min-width:992px){.paragraph--testimony .testimony__figcaption{width:50%;width:calc(50% - 1rem)}}.paragraph--testimony .testimony__author{font-size:.875rem;margin-bottom:0}.paragraph--testimony .testimony__bio{font-size:.75rem;line-height:1.2;margin-bottom:0}.paragraph--testimony .testimony__cite{display:inline-block;font-size:.625rem;font-style:normal;line-height:1.2} /*# sourceMappingURL=paragraph--testimony.min.css.map */ \ No newline at end of file diff --git a/web/themes/iop/assets/css/paragraph--video.min.css b/web/themes/iop/assets/css/paragraph--video.min.css deleted file mode 100644 index d2f95453c727e0f0d60832ad1b0b5460b46314b1..0000000000000000000000000000000000000000 --- a/web/themes/iop/assets/css/paragraph--video.min.css +++ /dev/null @@ -1,2 +0,0 @@ -.paragraph--video{border-radius:1rem;overflow:hidden} -/*# sourceMappingURL=paragraph--video.min.css.map */ \ No newline at end of file diff --git a/web/themes/iop/assets/css/paragraph.min.css b/web/themes/iop/assets/css/paragraph.min.css deleted file mode 100644 index 5c35393156b7311ea1a4c0565d45d90eed07d244..0000000000000000000000000000000000000000 --- a/web/themes/iop/assets/css/paragraph.min.css +++ /dev/null @@ -1,2 +0,0 @@ -.paragraph,.paragraph h1,.paragraph h2,.paragraph h3,.paragraph h4,.paragraph h5,.paragraph h6{color:#082330}.paragraph__heading{display:block;font-size:1.75rem;font-weight:400;margin:0;text-align:center}@media (min-width:768px){.paragraph__heading{font-size:3rem}}.paragraph__subheading{display:block;font-size:1rem;font-weight:400;margin-bottom:2rem}@media (min-width:992px){.paragraph__subheading{font-size:2rem}}.paragraph--light-wave{position:relative}.paragraph--light-wave:after,.paragraph--light-wave:before{background-repeat:no-repeat;content:"";display:block;height:100%;left:0;position:absolute;width:100vw;z-index:-1}@media (min-width:576px){.paragraph--light-wave:after,.paragraph--light-wave:before{left:calc(-50vw + 270px)}}@media (min-width:768px){.paragraph--light-wave:after,.paragraph--light-wave:before{left:calc(-50vw + 360px)}}@media (min-width:992px){.paragraph--light-wave:after,.paragraph--light-wave:before{left:calc(-50vw + 480px)}}@media (min-width:1200px){.paragraph--light-wave:after,.paragraph--light-wave:before{left:calc(-50vw + 570px)}}@media (min-width:1400px){.paragraph--light-wave:after,.paragraph--light-wave:before{left:calc(-50vw + 660px)}}.paragraph--light-wave:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 2578 281'%3E%3Cpath d='M2578 84.05S1784.18-82.21 1277 55.74C819.69 180.13 0 84.05 0 84.05V282.4h2578Z' fill='%23f5f6f7'/%3E%3C/svg%3E"),url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 2578 281'%3E%3Cpath d='M0 198.35s793.82 166.26 1301 28.31c457.31-124.39 1277-28.31 1277-28.31V0H0Z' fill='%23f5f6f7'/%3E%3C/svg%3E");background-position:top,bottom;top:0}.paragraph--light-wave:after{background-color:#f5f6f7;height:calc(100% - 4rem);top:2rem}@media (min-width:576px){.paragraph--light-wave:after{height:calc(100% - 6rem);top:3rem}}@media (min-width:768px){.paragraph--light-wave:after{height:calc(100% - 8rem);top:4rem}}@media (min-width:992px){.paragraph--light-wave:after{height:calc(100% - 12rem);top:6rem}} -/*# sourceMappingURL=paragraph.min.css.map */ \ No newline at end of file diff --git a/web/themes/iop/assets/css/theme.min.css b/web/themes/iop/assets/css/theme.min.css index e595f7fb91f90523dfde6230a8c95a7ac5289ae5..b69dcf617b011de919d1a2386b4141bffedfdaea 100644 --- a/web/themes/iop/assets/css/theme.min.css +++ b/web/themes/iop/assets/css/theme.min.css @@ -1,2 +1,2 @@ -@charset "UTF-8";@import "fonts/cyrillic-400.css";@import "fonts/latin-400.css";@import "fonts/latin-ext-400.css";@import "fonts/greek-400.css";@import "fonts/cyrillic-500.css";@import "fonts/latin-500.css";@import "fonts/latin-ext-500.css";@import "fonts/greek-500.css";@import "fonts/cyrillic-700.css";@import "fonts/latin-700.css";@import "fonts/latin-ext-700.css";@import "fonts/greek-700.css";@import "fonts/cyrillic-400-italic.css";@import "fonts/latin-400-italic.css";@import "fonts/latin-ext-400-italic.css";@import "fonts/greek-400-italic.css";@import "fonts/cyrillic-500-italic.css";@import "fonts/latin-500-italic.css";@import "fonts/latin-ext-500-italic.css";@import "fonts/greek-500-italic.css";@import "fonts/cyrillic-700-italic.css";@import "fonts/latin-700-italic.css";@import "fonts/latin-ext-700-italic.css";@import "fonts/greek-700-italic.css";.fs-sm,.fs-xs{color:#858a8c}.fw-medium{color:#555859}.fw-medium.h2,.fw-medium.h3,.fw-medium.h4,.h1,h1,h2.fw-medium,h3.fw-medium,h4.fw-medium{color:#05161e}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{color:#082330;font-weight:400;line-height:1.2;margin-bottom:.5rem;margin-top:0}.h1,h1{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h1,h1{font-size:2rem}}.h2,h2{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h2,h2{font-size:1.5rem}}.h3,h3{font-size:1.25rem}.h4,.h5,.h6,h4,h5,h6{font-size:1rem}.small,small{font-size:.875em}.mark,mark{background-color:#fff3cd;padding:.1875em}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:400;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:400;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:400;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:400;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:400;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:400;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-inline,.list-unstyled{list-style:none;padding-left:0}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{font-size:1.25rem;margin-bottom:1rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{color:#6d7173;font-size:.875em;margin-bottom:1rem;margin-top:-1rem}.blockquote-footer:before{content:"— "}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{height:auto;transition:width .35s ease;width:0}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}a{text-underline-offset:2px}a:not(.text-underline-hover):not(.standalone){text-decoration-color:rgba(8,35,48,.3)}a:not(.text-underline-hover):not(.standalone):visited{text-decoration-color:rgba(111,66,193,.3)}a:not(.text-underline-hover):not(.standalone):hover{text-decoration-color:currentColor}a:not(.text-underline-hover):not(.standalone):hover:visited{text-decoration-color:#6f42c1}a.standalone,a.text-underline-hover{text-decoration-color:transparent}a.standalone:hover,a.text-underline-hover:hover{text-decoration-color:currentColor}a.standalone:hover:visited,a.text-underline-hover:hover:visited{text-decoration-color:#6f42c1}svg{fill:currentColor}@media (max-width:767.98px){.n-mx-container{margin-left:-1.5rem;margin-right:-1.5rem;padding-left:1.5rem;padding-right:1.5rem}}.bg-lighter{background-color:#fafbfc}.bg-gray-200{background-color:#f5f6f7}.bg-gray-400{background-color:#a2a8ab}.border-gray-300{border-color:#dadee0}.grid-3-9{grid-template-columns:25% 75%}.clearfix:after{clear:both;content:"";display:block}.text-bg-primary{background-color:RGBA(8,35,48,var(--bs-bg-opacity,1))!important;color:#fff!important}.text-bg-secondary{background-color:RGBA(25,211,197,var(--bs-bg-opacity,1))!important;color:#000!important}.text-bg-success{background-color:RGBA(24,191,128,var(--bs-bg-opacity,1))!important;color:#000!important}.text-bg-info{background-color:RGBA(13,118,139,var(--bs-bg-opacity,1))!important;color:#fff!important}.text-bg-warning{background-color:RGBA(235,168,67,var(--bs-bg-opacity,1))!important;color:#000!important}.text-bg-danger{background-color:RGBA(235,52,52,var(--bs-bg-opacity,1))!important;color:#000!important}.text-bg-light{background-color:RGBA(248,249,250,var(--bs-bg-opacity,1))!important;color:#000!important}.text-bg-dark{background-color:RGBA(33,37,41,var(--bs-bg-opacity,1))!important;color:#fff!important}.text-bg-brand{background-color:RGBA(35,141,193,var(--bs-bg-opacity,1))!important;color:#000!important}.link-primary{color:#082330!important}.link-primary:focus,.link-primary:hover{color:#061c26!important}.link-secondary{color:#19d3c5!important}.link-secondary:focus,.link-secondary:hover{color:#47dcd1!important}.link-success{color:#18bf80!important}.link-success:focus,.link-success:hover{color:#46cc99!important}.link-info{color:#0d768b!important}.link-info:focus,.link-info:hover{color:#0a5e6f!important}.link-warning{color:#eba843!important}.link-warning:focus,.link-warning:hover{color:#efb969!important}.link-danger{color:#eb3434!important}.link-danger:focus,.link-danger:hover{color:#ef5d5d!important}.link-light{color:#f8f9fa!important}.link-light:focus,.link-light:hover{color:#f9fafb!important}.link-dark{color:#212529!important}.link-dark:focus,.link-dark:hover{color:#1a1e21!important}.link-brand{color:#238dc1!important}.link-brand:focus,.link-brand:hover{color:#4fa4cd!important}.ratio{position:relative;width:100%}.ratio:before{content:"";display:block;padding-top:var(--bs-aspect-ratio)}.ratio>*{height:100%;left:0;position:absolute;top:0;width:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.8571428571%}.fixed-top{top:0}.fixed-bottom,.fixed-top{left:0;position:fixed;right:0;z-index:60}.fixed-bottom{bottom:0}.sticky-top{position:sticky;top:0;z-index:50}.sticky-bottom{bottom:0;position:sticky;z-index:50}@media (min-width:576px){.sticky-sm-top{position:sticky;top:0;z-index:50}.sticky-sm-bottom{bottom:0;position:sticky;z-index:50}}@media (min-width:768px){.sticky-md-top{position:sticky;top:0;z-index:50}.sticky-md-bottom{bottom:0;position:sticky;z-index:50}}@media (min-width:992px){.sticky-lg-top{position:sticky;top:0;z-index:50}.sticky-lg-bottom{bottom:0;position:sticky;z-index:50}}@media (min-width:1200px){.sticky-xl-top{position:sticky;top:0;z-index:50}.sticky-xl-bottom{bottom:0;position:sticky;z-index:50}}@media (min-width:1400px){.sticky-xxl-top{position:sticky;top:0;z-index:50}.sticky-xxl-bottom{bottom:0;position:sticky;z-index:50}}.hstack{align-items:center;flex-direction:row}.hstack,.vstack{align-self:stretch;display:flex}.vstack{flex:1 1 auto;flex-direction:column}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){clip:rect(0,0,0,0)!important;border:0!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}.stretched-link:after{bottom:0;content:"";left:0;position:absolute;right:0;top:0;z-index:1}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{align-self:stretch;background-color:currentcolor;display:inline-block;min-height:1em;opacity:.25;width:1px}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-opacity-10{--bs-border-opacity:0.1}.border-opacity-25{--bs-border-opacity:0.25}.border-opacity-50{--bs-border-opacity:0.5}.border-opacity-75{--bs-border-opacity:0.75}.border-opacity-100{--bs-border-opacity:1}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.w-min-content{width:-moz-min-content!important;width:min-content!important}.mw-100{max-width:100%!important}.mw-date{max-width:10rem!important}.mw-col-date{max-width:calc(10rem + var(--bs-gutter-x))!important}.mw-listing-img{max-width:10rem!important}.h-0{height:0!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-2-5{margin:.75rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-left:0!important;margin-right:0!important}.mx-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-2-5{margin-left:.75rem!important;margin-right:.75rem!important}.mx-3{margin-left:1rem!important;margin-right:1rem!important}.mx-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-5{margin-left:3rem!important;margin-right:3rem!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.my-0{margin-bottom:0!important;margin-top:0!important}.my-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-2-5{margin-bottom:.75rem!important;margin-top:.75rem!important}.my-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-2-5{margin-top:.75rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-2-5{margin-right:.75rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-2-5{margin-bottom:.75rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-2-5{margin-left:.75rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-2-5{padding:.75rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-left:0!important;padding-right:0!important}.px-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-2-5{padding-left:.75rem!important;padding-right:.75rem!important}.px-3{padding-left:1rem!important;padding-right:1rem!important}.px-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-5{padding-left:3rem!important;padding-right:3rem!important}.py-0{padding-bottom:0!important;padding-top:0!important}.py-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-2-5{padding-bottom:.75rem!important;padding-top:.75rem!important}.py-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-2-5{padding-top:.75rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-2-5{padding-right:.75rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-2-5{padding-bottom:.75rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-2-5{padding-left:.75rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fs-sm{font-size:.875rem!important}.fs-xs{font-size:.75rem!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-semibold{font-weight:600!important}.fw-bolder{font-weight:bolder!important}.fw-md,.fw-medium{font-weight:500!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-brand{--bs-text-opacity:1;color:rgba(var(--bs-brand-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:#495057!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:hsla(0,0%,100%,.5)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-brand{--bs-bg-opacity:1;background-color:rgba(var(--bs-brand-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-date{--bs-bg-opacity:1;background-color:#1698af!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-2xl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important}.rounded-end,.rounded-top{border-top-right-radius:var(--bs-border-radius)!important}.rounded-bottom,.rounded-end{border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-bottom,.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-start{border-top-left-radius:var(--bs-border-radius)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width:576px){.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.border-sm{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-sm-0{border:0!important}.border-top-sm{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-sm-0{border-top:0!important}.border-bottom-sm{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-sm-0{border-bottom:0!important}.h-sm-0{height:0!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-2-5{margin:.75rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-left:0!important;margin-right:0!important}.mx-sm-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-sm-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-sm-2-5{margin-left:.75rem!important;margin-right:.75rem!important}.mx-sm-3{margin-left:1rem!important;margin-right:1rem!important}.mx-sm-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-sm-5{margin-left:3rem!important;margin-right:3rem!important}.mx-sm-auto{margin-left:auto!important;margin-right:auto!important}.my-sm-0{margin-bottom:0!important;margin-top:0!important}.my-sm-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-sm-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-sm-2-5{margin-bottom:.75rem!important;margin-top:.75rem!important}.my-sm-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-sm-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-sm-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-sm-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-2-5{margin-top:.75rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-2-5{margin-right:.75rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-2-5{margin-bottom:.75rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-2-5{margin-left:.75rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-2-5{padding:.75rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-left:0!important;padding-right:0!important}.px-sm-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-sm-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-sm-2-5{padding-left:.75rem!important;padding-right:.75rem!important}.px-sm-3{padding-left:1rem!important;padding-right:1rem!important}.px-sm-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-sm-5{padding-left:3rem!important;padding-right:3rem!important}.py-sm-0{padding-bottom:0!important;padding-top:0!important}.py-sm-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-sm-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-sm-2-5{padding-bottom:.75rem!important;padding-top:.75rem!important}.py-sm-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-sm-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-sm-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-2-5{padding-top:.75rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-2-5{padding-right:.75rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-2-5{padding-bottom:.75rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-2-5{padding-left:.75rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.border-md{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-md-0{border:0!important}.border-top-md{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-md-0{border-top:0!important}.border-bottom-md{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-md-0{border-bottom:0!important}.h-md-0{height:0!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-2-5{margin:.75rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-left:0!important;margin-right:0!important}.mx-md-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-md-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-md-2-5{margin-left:.75rem!important;margin-right:.75rem!important}.mx-md-3{margin-left:1rem!important;margin-right:1rem!important}.mx-md-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-md-5{margin-left:3rem!important;margin-right:3rem!important}.mx-md-auto{margin-left:auto!important;margin-right:auto!important}.my-md-0{margin-bottom:0!important;margin-top:0!important}.my-md-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-md-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-md-2-5{margin-bottom:.75rem!important;margin-top:.75rem!important}.my-md-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-md-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-md-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-md-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-2-5{margin-top:.75rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-2-5{margin-right:.75rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-2-5{margin-bottom:.75rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-2-5{margin-left:.75rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-2-5{padding:.75rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-left:0!important;padding-right:0!important}.px-md-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-md-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-md-2-5{padding-left:.75rem!important;padding-right:.75rem!important}.px-md-3{padding-left:1rem!important;padding-right:1rem!important}.px-md-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-md-5{padding-left:3rem!important;padding-right:3rem!important}.py-md-0{padding-bottom:0!important;padding-top:0!important}.py-md-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-md-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-md-2-5{padding-bottom:.75rem!important;padding-top:.75rem!important}.py-md-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-md-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-md-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-2-5{padding-top:.75rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-2-5{padding-right:.75rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-2-5{padding-bottom:.75rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-2-5{padding-left:.75rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.border-lg{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-lg-0{border:0!important}.border-top-lg{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-lg-0{border-top:0!important}.border-bottom-lg{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-lg-0{border-bottom:0!important}.h-lg-0{height:0!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-2-5{margin:.75rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-left:0!important;margin-right:0!important}.mx-lg-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-lg-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-lg-2-5{margin-left:.75rem!important;margin-right:.75rem!important}.mx-lg-3{margin-left:1rem!important;margin-right:1rem!important}.mx-lg-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-lg-5{margin-left:3rem!important;margin-right:3rem!important}.mx-lg-auto{margin-left:auto!important;margin-right:auto!important}.my-lg-0{margin-bottom:0!important;margin-top:0!important}.my-lg-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-lg-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-lg-2-5{margin-bottom:.75rem!important;margin-top:.75rem!important}.my-lg-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-lg-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-lg-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-lg-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-2-5{margin-top:.75rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-2-5{margin-right:.75rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-2-5{margin-bottom:.75rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-2-5{margin-left:.75rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-2-5{padding:.75rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-left:0!important;padding-right:0!important}.px-lg-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-lg-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-lg-2-5{padding-left:.75rem!important;padding-right:.75rem!important}.px-lg-3{padding-left:1rem!important;padding-right:1rem!important}.px-lg-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-lg-5{padding-left:3rem!important;padding-right:3rem!important}.py-lg-0{padding-bottom:0!important;padding-top:0!important}.py-lg-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-lg-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-lg-2-5{padding-bottom:.75rem!important;padding-top:.75rem!important}.py-lg-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-lg-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-lg-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-2-5{padding-top:.75rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-2-5{padding-right:.75rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-2-5{padding-bottom:.75rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-2-5{padding-left:.75rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.border-xl{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-xl-0{border:0!important}.border-top-xl{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-xl-0{border-top:0!important}.border-bottom-xl{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-xl-0{border-bottom:0!important}.h-xl-0{height:0!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-2-5{margin:.75rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-left:0!important;margin-right:0!important}.mx-xl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xl-2-5{margin-left:.75rem!important;margin-right:.75rem!important}.mx-xl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xl-auto{margin-left:auto!important;margin-right:auto!important}.my-xl-0{margin-bottom:0!important;margin-top:0!important}.my-xl-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-xl-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-xl-2-5{margin-bottom:.75rem!important;margin-top:.75rem!important}.my-xl-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-xl-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-xl-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-xl-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-2-5{margin-top:.75rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-2-5{margin-right:.75rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-2-5{margin-bottom:.75rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-2-5{margin-left:.75rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-2-5{padding:.75rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-left:0!important;padding-right:0!important}.px-xl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xl-2-5{padding-left:.75rem!important;padding-right:.75rem!important}.px-xl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xl-0{padding-bottom:0!important;padding-top:0!important}.py-xl-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-xl-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-xl-2-5{padding-bottom:.75rem!important;padding-top:.75rem!important}.py-xl-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-xl-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-xl-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-2-5{padding-top:.75rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-2-5{padding-right:.75rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-2-5{padding-bottom:.75rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-2-5{padding-left:.75rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.border-xxl{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-xxl-0{border:0!important}.border-top-xxl{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-xxl-0{border-top:0!important}.border-bottom-xxl{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-xxl-0{border-bottom:0!important}.h-xxl-0{height:0!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-2-5{margin:.75rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-left:0!important;margin-right:0!important}.mx-xxl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xxl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xxl-2-5{margin-left:.75rem!important;margin-right:.75rem!important}.mx-xxl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xxl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xxl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xxl-auto{margin-left:auto!important;margin-right:auto!important}.my-xxl-0{margin-bottom:0!important;margin-top:0!important}.my-xxl-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-xxl-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-xxl-2-5{margin-bottom:.75rem!important;margin-top:.75rem!important}.my-xxl-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-xxl-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-xxl-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-xxl-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-2-5{margin-top:.75rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-2-5{margin-right:.75rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-2-5{margin-bottom:.75rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-2-5{margin-left:.75rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-2-5{padding:.75rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-left:0!important;padding-right:0!important}.px-xxl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xxl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xxl-2-5{padding-left:.75rem!important;padding-right:.75rem!important}.px-xxl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xxl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xxl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xxl-0{padding-bottom:0!important;padding-top:0!important}.py-xxl-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-xxl-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-xxl-2-5{padding-bottom:.75rem!important;padding-top:.75rem!important}.py-xxl-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-xxl-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-xxl-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-2-5{padding-top:.75rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-2-5{padding-right:.75rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-2-5{padding-bottom:.75rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-2-5{padding-left:.75rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}a:hover:visited{text-decoration-color:currentColor!important}a.call-to-action{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg preserveAspectRatio='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 30' style='enable-background:new 0 0 100 30' xml:space='preserve'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='0' y1='15.5' x2='100' y2='15.5'%3E%3Cstop offset='.106' style='stop-color:%23268dc2'/%3E%3Cstop offset='.129' style='stop-color:%232c94c1'/%3E%3Cstop offset='.216' style='stop-color:%233ea9bc'/%3E%3Cstop offset='.302' style='stop-color:%2348b6ba'/%3E%3Cstop offset='.382' style='stop-color:%234cbab9'/%3E%3Cstop offset='.682' style='stop-color:%23ced955'/%3E%3Cstop offset='.734' style='stop-color:%23d1d44f'/%3E%3Cstop offset='.805' style='stop-color:%23d9c43d'/%3E%3Cstop offset='.887' style='stop-color:%23e6ac20'/%3E%3Cstop offset='.956' style='stop-color:%23f39202'/%3E%3C/linearGradient%3E%3Cpath d='M1 17.6s11.27-6.1 24.01-6.1 34.3 8 49 8 24.99-4 24.99-4' style='fill:none;stroke:url(%23a);stroke-width:4;stroke-linecap:round;stroke-miterlimit:10'/%3E%3C/svg%3E");background-position:center 1.125em;background-repeat:no-repeat;background-size:100% 16px;color:#082330;display:inline-block;height:2em}a.call-to-action:hover{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg preserveAspectRatio='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 30' style='enable-background:new 0 0 100 30' xml:space='preserve'%3E%3Cpath d='M1 17.6s11.27-6.1 24.01-6.1 34.3 8 49 8 24.99-4 24.99-4' style='fill:none;stroke:%233d3f40;stroke-width:4;stroke-linecap:round;stroke-miterlimit:10'/%3E%3C/svg%3E");color:#000;text-decoration:none}.layout-container:not(.listing) .page-header{margin-bottom:1rem}@media (min-width:768px){.layout-container:not(.listing) .page-header{margin-bottom:2rem}}.layout-container.listing .page-header+.content{margin-top:-1rem}@media (min-width:768px){.layout-container.listing .page-header+.content{margin-top:-2rem}} +@charset "UTF-8";@import "fonts/cyrillic-400.css";@import "fonts/latin-400.css";@import "fonts/latin-ext-400.css";@import "fonts/greek-400.css";@import "fonts/cyrillic-500.css";@import "fonts/latin-500.css";@import "fonts/latin-ext-500.css";@import "fonts/greek-500.css";@import "fonts/cyrillic-700.css";@import "fonts/latin-700.css";@import "fonts/latin-ext-700.css";@import "fonts/greek-700.css";@import "fonts/cyrillic-400-italic.css";@import "fonts/latin-400-italic.css";@import "fonts/latin-ext-400-italic.css";@import "fonts/greek-400-italic.css";@import "fonts/cyrillic-500-italic.css";@import "fonts/latin-500-italic.css";@import "fonts/latin-ext-500-italic.css";@import "fonts/greek-500-italic.css";@import "fonts/cyrillic-700-italic.css";@import "fonts/latin-700-italic.css";@import "fonts/latin-ext-700-italic.css";@import "fonts/greek-700-italic.css";.fs-sm,.fs-xs{color:#858a8c}.fw-medium{color:#555859}.fw-medium.h2,.fw-medium.h3,.fw-medium.h4,.h1,h1,h2.fw-medium,h3.fw-medium,h4.fw-medium{color:#05161e}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{color:#082330;font-weight:400;line-height:1.2;margin-bottom:.5rem;margin-top:0}.h1,h1{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h1,h1{font-size:2rem}}.h2,h2{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h2,h2{font-size:1.5rem}}.h3,h3{font-size:1.25rem}.h4,.h5,.h6,h4,h5,h6{font-size:1rem}.small,small{font-size:.875em}.mark,mark{background-color:#fff3cd;padding:.1875em}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:400;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:400;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:400;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:400;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:400;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:400;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-inline,.list-unstyled{list-style:none;padding-left:0}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{font-size:1.25rem;margin-bottom:1rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{color:#6d7173;font-size:.875em;margin-bottom:1rem;margin-top:-1rem}.blockquote-footer:before{content:"— "}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{height:auto;transition:width .35s ease;width:0}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}a{text-underline-offset:2px}a:not(.text-underline-hover):not(.standalone){text-decoration-color:rgba(8,35,48,.3)}a:not(.text-underline-hover):not(.standalone):visited{text-decoration-color:rgba(111,66,193,.3)}a:not(.text-underline-hover):not(.standalone):hover{text-decoration-color:currentColor}a:not(.text-underline-hover):not(.standalone):hover:visited{text-decoration-color:#6f42c1}a.standalone,a.text-underline-hover{text-decoration-color:transparent}a.standalone:hover,a.text-underline-hover:hover{text-decoration-color:currentColor}a.standalone:hover:visited,a.text-underline-hover:hover:visited{text-decoration-color:#6f42c1}svg{fill:currentColor}@media (max-width:767.98px){.n-mx-container{margin-left:-1.5rem;margin-right:-1.5rem;padding-left:1.5rem;padding-right:1.5rem}}.bg-lighter{background-color:#fafbfc}.bg-gray-200{background-color:#f5f6f7}.bg-gray-400{background-color:#a2a8ab}.border-gray-300{border-color:#dadee0}.grid-3-9{grid-template-columns:25% 75%}.clearfix:after{clear:both;content:"";display:block}.text-bg-primary{background-color:RGBA(8,35,48,var(--bs-bg-opacity,1))!important;color:#fff!important}.text-bg-secondary{background-color:RGBA(232,245,251,var(--bs-bg-opacity,1))!important;color:#000!important}.text-bg-success{background-color:RGBA(24,191,128,var(--bs-bg-opacity,1))!important;color:#000!important}.text-bg-info{background-color:RGBA(13,118,139,var(--bs-bg-opacity,1))!important;color:#fff!important}.text-bg-warning{background-color:RGBA(235,168,67,var(--bs-bg-opacity,1))!important;color:#000!important}.text-bg-danger{background-color:RGBA(235,52,52,var(--bs-bg-opacity,1))!important;color:#000!important}.text-bg-light{background-color:RGBA(248,249,250,var(--bs-bg-opacity,1))!important;color:#000!important}.text-bg-dark{background-color:RGBA(33,37,41,var(--bs-bg-opacity,1))!important;color:#fff!important}.text-bg-brand{background-color:RGBA(35,141,193,var(--bs-bg-opacity,1))!important;color:#000!important}.link-primary{color:#082330!important}.link-primary:focus,.link-primary:hover{color:#061c26!important}.link-secondary{color:#e8f5fb!important}.link-secondary:focus,.link-secondary:hover{color:#edf7fc!important}.link-success{color:#18bf80!important}.link-success:focus,.link-success:hover{color:#46cc99!important}.link-info{color:#0d768b!important}.link-info:focus,.link-info:hover{color:#0a5e6f!important}.link-warning{color:#eba843!important}.link-warning:focus,.link-warning:hover{color:#efb969!important}.link-danger{color:#eb3434!important}.link-danger:focus,.link-danger:hover{color:#ef5d5d!important}.link-light{color:#f8f9fa!important}.link-light:focus,.link-light:hover{color:#f9fafb!important}.link-dark{color:#212529!important}.link-dark:focus,.link-dark:hover{color:#1a1e21!important}.link-brand{color:#238dc1!important}.link-brand:focus,.link-brand:hover{color:#4fa4cd!important}.ratio{position:relative;width:100%}.ratio:before{content:"";display:block;padding-top:var(--bs-aspect-ratio)}.ratio>*{height:100%;left:0;position:absolute;top:0;width:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.8571428571%}.fixed-top{top:0}.fixed-bottom,.fixed-top{left:0;position:fixed;right:0;z-index:60}.fixed-bottom{bottom:0}.sticky-top{position:sticky;top:0;z-index:50}.sticky-bottom{bottom:0;position:sticky;z-index:50}@media (min-width:576px){.sticky-sm-top{position:sticky;top:0;z-index:50}.sticky-sm-bottom{bottom:0;position:sticky;z-index:50}}@media (min-width:768px){.sticky-md-top{position:sticky;top:0;z-index:50}.sticky-md-bottom{bottom:0;position:sticky;z-index:50}}@media (min-width:992px){.sticky-lg-top{position:sticky;top:0;z-index:50}.sticky-lg-bottom{bottom:0;position:sticky;z-index:50}}@media (min-width:1200px){.sticky-xl-top{position:sticky;top:0;z-index:50}.sticky-xl-bottom{bottom:0;position:sticky;z-index:50}}@media (min-width:1400px){.sticky-xxl-top{position:sticky;top:0;z-index:50}.sticky-xxl-bottom{bottom:0;position:sticky;z-index:50}}.hstack{align-items:center;flex-direction:row}.hstack,.vstack{align-self:stretch;display:flex}.vstack{flex:1 1 auto;flex-direction:column}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){clip:rect(0,0,0,0)!important;border:0!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}.stretched-link:after{bottom:0;content:"";left:0;position:absolute;right:0;top:0;z-index:1}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{align-self:stretch;background-color:currentcolor;display:inline-block;min-height:1em;opacity:.25;width:1px}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-opacity-10{--bs-border-opacity:0.1}.border-opacity-25{--bs-border-opacity:0.25}.border-opacity-50{--bs-border-opacity:0.5}.border-opacity-75{--bs-border-opacity:0.75}.border-opacity-100{--bs-border-opacity:1}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.w-min-content{width:-moz-min-content!important;width:min-content!important}.mw-100{max-width:100%!important}.mw-date{max-width:10rem!important}.mw-col-date{max-width:calc(10rem + var(--bs-gutter-x))!important}.mw-listing-img{max-width:10rem!important}.h-0{height:0!important}.h-50vh{height:50vh!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-2-5{margin:.75rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-left:0!important;margin-right:0!important}.mx-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-2-5{margin-left:.75rem!important;margin-right:.75rem!important}.mx-3{margin-left:1rem!important;margin-right:1rem!important}.mx-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-5{margin-left:3rem!important;margin-right:3rem!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.my-0{margin-bottom:0!important;margin-top:0!important}.my-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-2-5{margin-bottom:.75rem!important;margin-top:.75rem!important}.my-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-2-5{margin-top:.75rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-2-5{margin-right:.75rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-2-5{margin-bottom:.75rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-2-5{margin-left:.75rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-2-5{padding:.75rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-left:0!important;padding-right:0!important}.px-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-2-5{padding-left:.75rem!important;padding-right:.75rem!important}.px-3{padding-left:1rem!important;padding-right:1rem!important}.px-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-5{padding-left:3rem!important;padding-right:3rem!important}.py-0{padding-bottom:0!important;padding-top:0!important}.py-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-2-5{padding-bottom:.75rem!important;padding-top:.75rem!important}.py-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-2-5{padding-top:.75rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-2-5{padding-right:.75rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-2-5{padding-bottom:.75rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-2-5{padding-left:.75rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fs-sm{font-size:.875rem!important}.fs-xs{font-size:.75rem!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-semibold{font-weight:600!important}.fw-bolder{font-weight:bolder!important}.fw-md,.fw-medium{font-weight:500!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-brand{--bs-text-opacity:1;color:rgba(var(--bs-brand-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:#495057!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:hsla(0,0%,100%,.5)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-brand{--bs-bg-opacity:1;background-color:rgba(var(--bs-brand-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-date{--bs-bg-opacity:1;background-color:#1698af!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-2xl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important}.rounded-end,.rounded-top{border-top-right-radius:var(--bs-border-radius)!important}.rounded-bottom,.rounded-end{border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-bottom,.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-start{border-top-left-radius:var(--bs-border-radius)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.col-gap-0{-moz-column-gap:0!important;column-gap:0!important}.col-gap-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.col-gap-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.col-gap-2-5{-moz-column-gap:.75rem!important;column-gap:.75rem!important}.col-gap-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.col-gap-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.col-gap-5{-moz-column-gap:3rem!important;column-gap:3rem!important}@media (min-width:576px){.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.border-sm{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-sm-0{border:0!important}.border-top-sm{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-sm-0{border-top:0!important}.border-bottom-sm{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-sm-0{border-bottom:0!important}.h-sm-0{height:0!important}.h-sm-50vh{height:50vh!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-2-5{margin:.75rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-left:0!important;margin-right:0!important}.mx-sm-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-sm-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-sm-2-5{margin-left:.75rem!important;margin-right:.75rem!important}.mx-sm-3{margin-left:1rem!important;margin-right:1rem!important}.mx-sm-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-sm-5{margin-left:3rem!important;margin-right:3rem!important}.mx-sm-auto{margin-left:auto!important;margin-right:auto!important}.my-sm-0{margin-bottom:0!important;margin-top:0!important}.my-sm-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-sm-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-sm-2-5{margin-bottom:.75rem!important;margin-top:.75rem!important}.my-sm-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-sm-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-sm-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-sm-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-2-5{margin-top:.75rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-2-5{margin-right:.75rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-2-5{margin-bottom:.75rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-2-5{margin-left:.75rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-2-5{padding:.75rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-left:0!important;padding-right:0!important}.px-sm-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-sm-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-sm-2-5{padding-left:.75rem!important;padding-right:.75rem!important}.px-sm-3{padding-left:1rem!important;padding-right:1rem!important}.px-sm-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-sm-5{padding-left:3rem!important;padding-right:3rem!important}.py-sm-0{padding-bottom:0!important;padding-top:0!important}.py-sm-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-sm-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-sm-2-5{padding-bottom:.75rem!important;padding-top:.75rem!important}.py-sm-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-sm-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-sm-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-2-5{padding-top:.75rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-2-5{padding-right:.75rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-2-5{padding-bottom:.75rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-2-5{padding-left:.75rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.border-md{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-md-0{border:0!important}.border-top-md{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-md-0{border-top:0!important}.border-bottom-md{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-md-0{border-bottom:0!important}.h-md-0{height:0!important}.h-md-50vh{height:50vh!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-2-5{margin:.75rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-left:0!important;margin-right:0!important}.mx-md-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-md-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-md-2-5{margin-left:.75rem!important;margin-right:.75rem!important}.mx-md-3{margin-left:1rem!important;margin-right:1rem!important}.mx-md-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-md-5{margin-left:3rem!important;margin-right:3rem!important}.mx-md-auto{margin-left:auto!important;margin-right:auto!important}.my-md-0{margin-bottom:0!important;margin-top:0!important}.my-md-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-md-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-md-2-5{margin-bottom:.75rem!important;margin-top:.75rem!important}.my-md-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-md-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-md-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-md-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-2-5{margin-top:.75rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-2-5{margin-right:.75rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-2-5{margin-bottom:.75rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-2-5{margin-left:.75rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-2-5{padding:.75rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-left:0!important;padding-right:0!important}.px-md-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-md-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-md-2-5{padding-left:.75rem!important;padding-right:.75rem!important}.px-md-3{padding-left:1rem!important;padding-right:1rem!important}.px-md-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-md-5{padding-left:3rem!important;padding-right:3rem!important}.py-md-0{padding-bottom:0!important;padding-top:0!important}.py-md-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-md-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-md-2-5{padding-bottom:.75rem!important;padding-top:.75rem!important}.py-md-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-md-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-md-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-2-5{padding-top:.75rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-2-5{padding-right:.75rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-2-5{padding-bottom:.75rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-2-5{padding-left:.75rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.border-lg{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-lg-0{border:0!important}.border-top-lg{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-lg-0{border-top:0!important}.border-bottom-lg{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-lg-0{border-bottom:0!important}.h-lg-0{height:0!important}.h-lg-50vh{height:50vh!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-2-5{margin:.75rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-left:0!important;margin-right:0!important}.mx-lg-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-lg-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-lg-2-5{margin-left:.75rem!important;margin-right:.75rem!important}.mx-lg-3{margin-left:1rem!important;margin-right:1rem!important}.mx-lg-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-lg-5{margin-left:3rem!important;margin-right:3rem!important}.mx-lg-auto{margin-left:auto!important;margin-right:auto!important}.my-lg-0{margin-bottom:0!important;margin-top:0!important}.my-lg-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-lg-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-lg-2-5{margin-bottom:.75rem!important;margin-top:.75rem!important}.my-lg-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-lg-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-lg-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-lg-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-2-5{margin-top:.75rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-2-5{margin-right:.75rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-2-5{margin-bottom:.75rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-2-5{margin-left:.75rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-2-5{padding:.75rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-left:0!important;padding-right:0!important}.px-lg-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-lg-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-lg-2-5{padding-left:.75rem!important;padding-right:.75rem!important}.px-lg-3{padding-left:1rem!important;padding-right:1rem!important}.px-lg-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-lg-5{padding-left:3rem!important;padding-right:3rem!important}.py-lg-0{padding-bottom:0!important;padding-top:0!important}.py-lg-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-lg-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-lg-2-5{padding-bottom:.75rem!important;padding-top:.75rem!important}.py-lg-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-lg-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-lg-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-2-5{padding-top:.75rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-2-5{padding-right:.75rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-2-5{padding-bottom:.75rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-2-5{padding-left:.75rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.border-xl{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-xl-0{border:0!important}.border-top-xl{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-xl-0{border-top:0!important}.border-bottom-xl{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-xl-0{border-bottom:0!important}.h-xl-0{height:0!important}.h-xl-50vh{height:50vh!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-2-5{margin:.75rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-left:0!important;margin-right:0!important}.mx-xl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xl-2-5{margin-left:.75rem!important;margin-right:.75rem!important}.mx-xl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xl-auto{margin-left:auto!important;margin-right:auto!important}.my-xl-0{margin-bottom:0!important;margin-top:0!important}.my-xl-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-xl-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-xl-2-5{margin-bottom:.75rem!important;margin-top:.75rem!important}.my-xl-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-xl-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-xl-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-xl-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-2-5{margin-top:.75rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-2-5{margin-right:.75rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-2-5{margin-bottom:.75rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-2-5{margin-left:.75rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-2-5{padding:.75rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-left:0!important;padding-right:0!important}.px-xl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xl-2-5{padding-left:.75rem!important;padding-right:.75rem!important}.px-xl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xl-0{padding-bottom:0!important;padding-top:0!important}.py-xl-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-xl-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-xl-2-5{padding-bottom:.75rem!important;padding-top:.75rem!important}.py-xl-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-xl-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-xl-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-2-5{padding-top:.75rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-2-5{padding-right:.75rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-2-5{padding-bottom:.75rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-2-5{padding-left:.75rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.border-xxl{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-xxl-0{border:0!important}.border-top-xxl{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-xxl-0{border-top:0!important}.border-bottom-xxl{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-xxl-0{border-bottom:0!important}.h-xxl-0{height:0!important}.h-xxl-50vh{height:50vh!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-2-5{margin:.75rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-left:0!important;margin-right:0!important}.mx-xxl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xxl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xxl-2-5{margin-left:.75rem!important;margin-right:.75rem!important}.mx-xxl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xxl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xxl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xxl-auto{margin-left:auto!important;margin-right:auto!important}.my-xxl-0{margin-bottom:0!important;margin-top:0!important}.my-xxl-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-xxl-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-xxl-2-5{margin-bottom:.75rem!important;margin-top:.75rem!important}.my-xxl-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-xxl-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-xxl-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-xxl-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-2-5{margin-top:.75rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-2-5{margin-right:.75rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-2-5{margin-bottom:.75rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-2-5{margin-left:.75rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-2-5{padding:.75rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-left:0!important;padding-right:0!important}.px-xxl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xxl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xxl-2-5{padding-left:.75rem!important;padding-right:.75rem!important}.px-xxl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xxl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xxl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xxl-0{padding-bottom:0!important;padding-top:0!important}.py-xxl-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-xxl-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-xxl-2-5{padding-bottom:.75rem!important;padding-top:.75rem!important}.py-xxl-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-xxl-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-xxl-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-2-5{padding-top:.75rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-2-5{padding-right:.75rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-2-5{padding-bottom:.75rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-2-5{padding-left:.75rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}a:hover:visited{text-decoration-color:currentColor!important}.layout-container:not(.listing) .page-header{margin-bottom:1rem}@media (min-width:768px){.layout-container:not(.listing) .page-header{margin-bottom:2rem}}.layout-container.listing .page-header+.content .paragraph--type--content-listing{margin-top:-1rem}@media (min-width:768px){.layout-container.listing .page-header+.content .paragraph--type--content-listing{margin-top:-2rem}} /*# sourceMappingURL=theme.min.css.map */ \ No newline at end of file diff --git a/web/themes/iop/assets/css/tile.min.css b/web/themes/iop/assets/css/tile.min.css index c59114d617fd839e6acbe28b1352bd93e9ea3b81..603691ab667c55e4190d833cdf3d74dbaf832860 100644 --- a/web/themes/iop/assets/css/tile.min.css +++ b/web/themes/iop/assets/css/tile.min.css @@ -1,2 +1,2 @@ -.tile{height:100%;margin-bottom:2rem}@media (min-width:768px){.tile{margin-bottom:0}}.tile__img{aspect-ratio:2/1;background:#fff;border:2px solid #fff;overflow-y:hidden}.tile__img,.tile__img img{border-radius:1.5rem;width:100%}.tile__img img{height:auto}.tile__title{font-size:1rem;font-weight:700;margin:1rem 0;text-align:center}.tile__text{-webkit-box-orient:vertical;-webkit-line-clamp:5;display:-webkit-box;overflow:hidden} +.tile{height:100%;margin-bottom:2rem}@media (min-width:768px){.tile{margin-bottom:0}}.tile__img{aspect-ratio:2/1;background:#fff;border:2px solid #fff;overflow-y:hidden}.tile__img,.tile__img img{border-radius:1.5rem;width:100%}.tile__img img{height:auto}.tile__title{font-size:1rem;font-weight:700;margin:1rem 0;text-align:center}.tile__text{-webkit-box-orient:vertical;-webkit-line-clamp:5;display:-webkit-box;overflow:hidden}.tile .mark,.tile mark{background-color:unset;padding:unset} /*# sourceMappingURL=tile.min.css.map */ \ No newline at end of file diff --git a/web/themes/iop/assets/images/icons/icon-linkedin-hover.png b/web/themes/iop/assets/images/icons/icon-linkedin-hover.png new file mode 100644 index 0000000000000000000000000000000000000000..b368c5cb256a201f11bc496cd6321624aa7ade0b --- /dev/null +++ b/web/themes/iop/assets/images/icons/icon-linkedin-hover.png @@ -0,0 +1,5 @@ +‰PNG + +��� IHDR���0���0���`Ü µ���¨PLTE��� $1p†› #0-: $1)@L<Q\G[e¢¬±¢¬±Ýàâùùùèêë=R]<Q\…’™‚–ÌÑÔàãåÙÜÞÇÌÏÅÊÍáãäÿÿÿ#0EYcƒ—-:òôôºÂÆ\nvÁÇË–¡§™Ÿ¢¬±TfoÜàâÀÈË´¼À4JUÐÕØ’ž¤s‚‰8MXÕÙÛ®·»jz‚gx€bt|Whqàãå «°„‘˜&=Iè„…¸���tRNS�ð‘t÷òâÜļe^! +»»}}B))BBYÒØr��IDATHÇ–Ùb‚0E“¨ˆâÞÚv®E@@Š{Ûÿÿ³ +HYÈ}€—{Bf&a†IibÐï½þ@h#öD“ŽŠ‚ÔΤÁþ*8 ››ÝmM´¾í6¦pñZcÏ9`î© ½yGæã*ÿË8HÒáL_dÿPA¸£JíB(ò¿ÓÅÕêÝŽäßPƒ6%bØÅ75êÝa.^E^_þ†òùxší¿)ŽišÝ9Bj¡óG}9ùtP)ç‘]ð¤ægJ„Q¢3D|Þ8í€ø$*Lj‰¨*öyÀ!ë·ØCelr€{u�é1 f£Œ×&4&äüX^l�ƒÚM¬mð,˺àrêΚ¬UØ¢ÏzXçÕýõ‰O"ò)’[�Öè1€ªŠºEG=à .Wj¶”eUÞR´¬2 z�£(§UÀnØLõ=p…>$ ;|LÅQöÕÀj|®mÏÒäŠúí�?¹¢LàÒ¤A^ X¤%OKáè•~'-_²XxÔBé¯r†Ósÿ ³ÿFô¦À~æ·¡¼~÷¢' bXj(vóúrjŠãùå¦èÕvËš¢¤÷`ú²Ý7Ù{ec_pÀ=íGà‹1«Ö2\ÛØF£ÃÖ°ÝxtX²z}ÈÃÉG¥±ýøó ·ÃRš����IEND®B`‚ \ No newline at end of file diff --git a/web/themes/iop/assets/images/icons/icon-linkedin.png b/web/themes/iop/assets/images/icons/icon-linkedin.png new file mode 100644 index 0000000000000000000000000000000000000000..539d4bf69477b7a9549f5d9ea98cbf5e9a1e1456 --- /dev/null +++ b/web/themes/iop/assets/images/icons/icon-linkedin.png @@ -0,0 +1,11 @@ +‰PNG + +��� IHDR���0���0���`Ü µ��PLTE��� ÀÜéñ^¼P»k–ÖÜ“ß⌴ߧäæàóõÚæðýýýõõõyãÜŸ¿âÍððÊáîêõøâëñÒÅIº½ÃÀĺÃZ»$ÔÈÌĖé r½Q½ÉįÂl½ÃÄ·Ãd¼X»8ØÍ.¢È,–È"`ÃIÙÒ7qÉTÝÓK²ÐI£ÐAvËFÄÐ:‡Ê8xÊq´ØuÍÚoª×Šâ߉×ß–æã¿à‹Þ¨ìç£Ò䟹ãÅ×êçñõD·ÎC¶Í>”Ì=“ËIÒÑHÑÐuÄÛsÂÙxßÚ”Öâ‘ÓߢĿ¦Úç ÊááôöáöõÿÿÿJºÐÅ y¾ÊÄP»ÄÄV»þþÿ–À¡ÁœÁ„¿ +~¾¿Ã¹Ã³Â§ ÀŠ¿s½m½[¼g½a¼ƒ¹ÞB„Ì„¾ÞOÏÒôûüL½ÑÂâï2xÉ#ÏÇÌįİÂT»Q»ÕóõÙæõÁñïÂÛïÁÙï¹Ðí›âæfªÖ\ÁÕTˆÒAÍÏðúüòöüàð÷ÞøöÐàóÄëð»îî¼åî·äí¼Õíµ×ì¨íé Ãæ »å’ßã”Òã•È㕾ãÃâ“»â°áеàyØÝfÝØl¢ØaÜ×dÇ×]£ÔT¢ÒTÒ>¿Î4…ÉÀĽ÷äé£ÁšÁ€ÁV¾i½d¼]¼â÷øÜïöÜíöÑîóÒìóÐäòºÜí³íì°áë²Êë®Òê¬Æé¥åè¥Úè¥Øç™èå–è䃱ÞqÜÛrÙÛqÒÛnÌÚt°ÚkÚÙq¨Ù]ÏÖg›Ö`¨Õc–ÕX»Ô]‘ÔNÆÑ&„ÅœÃ|ÁZ¿2*¬���RtRNS�þ)÷ð‘}vve!! + +‘eBBýý÷öööòòòòòòòíííââââÜÜÜÜÄļ¼¼¼»»»’}}tss^^^BÄÄÄÄ»»’’sse^^)),L±��´IDATHÇbÀ�\v¦ZrŒŒ2šú~\€µKh||\\#cjtôêØ'o!<Ê™ÌåÓCל™ZÔ^UÐ^4¥iŪY³�ÊyØ”3ÒôG!¨Þù+“•,y°©4^—ÑX„ªŽ•— `ª÷UËZR„t-NRåDWÏÁ¼þ$ŠcP6{¹;ºúìAx@C¢Š~É ƒð‚½ËÄ9‘ü«ž 6¯KUà>ç1‰œDÌŽpƒ….[Eqa Q-eÐøˆ¥¢"6)<23;+#=4>.-5:6&%9)1!"lD¶¦L1¬µò,Ô`ìB Ò‡Ãø@êY*;‰ÓP& J‰6á‹‚ˆÓ4§Ô +¨A7|²†‰Aµqiè.Õa`à^…¤dÛt\¢JB¸ìƒ›ƒ4©ãàn +±e` ž‰¬!óPí´Ë85ác0®"ÖÓA5!zÚÁÕ(Nª««mm,**º´¯5¨ëª†Ž …à6d ¹@*'4HnBÑP"Å …]CP+ˆØˆ¢!*D0ÜöÇÆô©4 ¸ôtÊGwÂÓ˜ +áž+a ˆ`Eñ†ð’ñæ…Ø‚††©è‰”¼÷`hèÇ®aG©85›–æ30)YÔRœÇ¯¡*}"ÌVÌ@£bÒlJ&@3h™"y¯IäiÂŽD¸ó2@ƒzæ,Bê'C +cDq?@á +îÊ,¼æ#*D•5w•uQe!\¬û°«ïAá>V»¶a*ß2Xí +2`¼ Š}ánÔŠ}g¨bçÅÛtX8}ûfPÓaSÏ”sà¦n líŠÚ8qöf �¸ýáÍO;ni�%„rtk.����IEND®B`‚ \ No newline at end of file diff --git a/web/themes/iop/assets/images/icons/icon-newsletter-hover.png b/web/themes/iop/assets/images/icons/icon-newsletter-hover.png new file mode 100644 index 0000000000000000000000000000000000000000..74b794204bf1ad0c28f14f9a11e36fc82ad99451 --- /dev/null +++ b/web/themes/iop/assets/images/icons/icon-newsletter-hover.png @@ -0,0 +1,9 @@ +‰PNG + +��� IHDR���0���0���`Ü µ���¨PLTE��� $1p†› #0-: $1)@L<Q\G[e¢¬±¢¬±Ýàâæèé=R]<Q\…’™‚–ÌÑÔàãåÙÜÞýýýõõõÇÌÏÅÊÍÿÿÿ#0/<ÁÈËUgpïñò±º¾s‚Š6KWàãå¹ÁÅóõõ’ž¤™Ÿƒ—\mvEYc&=I,8ÜàâÐÕØ¢¬±• ¦„‘˜jz‚gx€`rzÖÚÜÔØÚ½ÄÈ—£¨9czv���tRNS�ð‘t÷òâÜļe^!»»}}B)) + +BBn¦±��&IDATHÇ¥–ér²0…“¨(âÚªm« ˆ¸k—û¿³¯…@(ðMŸ0ž“¼$Da`0½Û:]RðÕCŽ^kX!eØE'Ë_q¾òS´({%åÌ'ˆž#ˆ�:™—é_FÀõƒ+|\Ñ‹ªïkXZ¼k _Ô·Úðø¯xh·ý‰Wp*8úmy%G´ûR¾šº¾º‡–f>Áãµx=«;Á’7`‰É£¿VƒšôœáÊqóFñÙÌð :¼·�²1¡`žù“÷fôàf…(#+¡‹!ì² PÊ&ì0 ¢Ü˜)È#Á ëôÙvøÚ,d°æŽ +Ö`DÇWúœü ‰d‰Tðt±Ï"�+ƃØAf†=º¤ƒ•l�<çQ]sà +tÀó˜GîoϘW”`ºœ»÷ ÔÄÒgÇ9‹”ŠI#v….Ž…ÓQLZG ¼Ÿ¥‘ò³‘'è„!ÌÛCZÔ´°‡mfÁˆ©‘Ü·QÀö¹4 +0ÄðÕ·<|b¼k§UoÒ’bòÊvð¤ˆZÉ+zà8$¯(a¸53ÜÀÈEÐD€Îˆ`ÚôC6% ‹1.õúÆòàMCX§¡½å>÷ßÕúo´û…%¬^_=‚ªò¸½z(¿ÔSŠ +ïcàv(éï ¿“S +Øn^îÚ�.H93qu°Ã`¿:ìƒÐW‡ÙŸ.'ÿ}ýùbº¹xS.Íð����IEND®B`‚ \ No newline at end of file diff --git a/web/themes/iop/assets/images/icons/icon-newsletter.png b/web/themes/iop/assets/images/icons/icon-newsletter.png new file mode 100644 index 0000000000000000000000000000000000000000..b927ef6661defbecfbbfdf94589215bd941aea94 --- /dev/null +++ b/web/themes/iop/assets/images/icons/icon-newsletter.png @@ -0,0 +1,13 @@ +‰PNG + +��� IHDR���0���0���`Ü µ��ßPLTE���æðôŒ¿¿Ä[¼P¼k–Ö“ßâàòôÚçðÚæðýýýõõõŸ¿âÍððÊáîàôôŽÀºÃ`¼$ÔÈÌĖé r½ÉįÂl½R»ÃÄ·Ãd¼X»8ØÍ.¢È,–È"`ÃIÙÒC·Î=”Ì7qÉTÝÓK²ÐAvËHÒÑFÄÐ8xÊyãÜtÃÚq´ØyàÛoª×Šâ߉×߀§ÛŽµà‹²Ý–æã“Õá¿à‹Þ©æè¥âä¨ìç£Ò䟹ãÅ×êJ£ÐI¢Ï;‡Ê:†ÉvÎÛtÌÙ„´Þ±Û¢Äæ¦Úç ÊáàíõÿÿÿÐÅJº–À„¿œÁŠ¿ +~¾g½[¼ À y¾¿Ã¹ÃÂs½m½a¼P»§Â¡Á³ÂV»ÊÄÄÄñöüôûüñûüâõøßï÷Õôõ›ãædÝØAÎÏ2wÈÌÄÉįİÂT»N»ÙæõÄïðÁÙî¶ãí¹Ðí±Óë˜é咷⎰ሶà#ÎÇ$ÇÇ£Äa¿X¿ðøûáð÷Þì÷ÞøöÐâóÃòðÄëð¿çï¾áî¿Ôî·Üì¹Õì¯Èê¦Üè’ßã”»ã‹çâŒåâ‡Îà…¿ßzÛÝ€§Ý€¤ÜoÏÛnÛÚq¦ÙpŸÙg¥×aÁÖ`”ÕY¾Ô]£ÔT¢ÒUŽÒT‰ÒQ„Ð>¿Î1¿Ê%wÅÃĽ÷ôé¦Á£Á Á€Á ‘À ŽÀ +€¾ z¾u¾k½c¼ÑîóÒáóÎÞòÁÛï¿ñî½îî·ëí³íìµÙì°áë¥åè£Ïç£ËçšàåŸÂå˜Ôä–ÉãÐâ‰ÖáÄá}äÞ|áÞyÕÝ{ÔÝrÙÛtªÚfÉØp™Øaß×_ÓÖg›Ö]ËÕ]©ÔQ×ÒMÁÑT–ÑL¹ÐJ°ÏH¢ÏG›ÎE‘ÍA{Ì7†Ê.²É,žÈ1ƒÈ+™Ç"½Æ!²Æ&„ņÂ{ÁvÁjÀ\¾���PtRNS�þ÷÷ò‘v))! + +eBB!ýööòòòòòòííííââââÜÜÜÜÄÄÄļ¼¼»»»’’’}}}vvtsssee^^^B¼¼»»}}e^^!uð��þIDATHÇbÀ�þŽF.*L‚bÊÚ†¾�£Æîð]!!aL;w‡†nS·fÄ£œÃDrOôöûç'äfduöŸ[Òºu‹¸åÜ^2 ñË' €š%›ã¤Í¸±©çw‹Ø»¸2�äÍ/+ÓãÃTï£ñ²:�+è[³IÞ]½…ð¾…8ÁÕBìhêY§àgb™Qtð²Dž ÀNn`¶Cò¯bdC�#÷9·~Ú¢�‚`Îz]Xèš— +KM!êâ”-ŸHŒ†ªR)Hœ³%- +,(1§7Ö¤ÄiÈ+¥DÛŠ•p¡¹m‘‰ ñÑá!aQÁ¡)Éq©±1-3áÒÅV@ šS`·’Ò05d¤_†É-Vc`à +j‡›0»†pÍNA«®œX„©¡°!_èÀÀÔç¯Îhø‚ªá]~@öm¸‚ú@ Z8?¨½! ó²†{ÙùÍp½ZªA• IiEÕ‡>À4¼ê¨*ÌHGhèTb` ÊDÖ™x#3`öG†ÖYÙ×bc5dŠ0 jˆø|: óiXÔ“œ€©ïSQ5†EC§º€€ã“€@r¦L'E<Ï 85»£cÖÔ€œ‡©NB÷t人€Ügá!o_‡>Î ¨YƒæiH°"4,ÌÌlBëÅìì9Èj¡D\Ћž€êuÈñ°¶* ïA JÄ9†óºV¢';9õÈI’ø'oDâC$o©õX±8!’ë"l6\AÎ@,zø,Jj!�+fj‰QXÌW1ðè§Ý%¬þúz](pVŒl"¤~¤0F÷Ó Þ˜í€%Kb^óa +B‡ð¾Å¸ÕÏGTYW)D¼™Œ]y?°RDrÜçî{—÷`*ßXíò3`<ÞÀŠ}EªòË@;vÀ n:¬¸4©ÔtÈpa¨éàÉIQãpù¹Âš?Ž\Ò�È + +à7hp����IEND®B`‚ \ No newline at end of file diff --git a/web/themes/iop/assets/images/icons/icon-twitter-hover.png b/web/themes/iop/assets/images/icons/icon-twitter-hover.png new file mode 100644 index 0000000000000000000000000000000000000000..2cdbe414737512f278a11f2fe41474d71f2814ee --- /dev/null +++ b/web/themes/iop/assets/images/icons/icon-twitter-hover.png @@ -0,0 +1,7 @@ +‰PNG + +��� IHDR���0���0���`Ü µ���®PLTE��� $1p†› #0-: $1)@L<Q\G[e¢¬±¢¬±Ýàâæèé=R]<Q\…’™‚–ÌÑÔàãåÙÜÞýýýõõõÇÌÏÅÊÍÿÿÿ#0ÁÈË• ¦ct|àãåºÁŲ»¿Ugp5JU¢¬±™Ÿs‚Š\mv&=I,8òôôïñòÜà⃗ÐÕØ/<ÕÙÛÐÕ×®·»jz‚gx€9NY0=EYcôöö£²„‘˜!U&���tRNS�ð‘t÷òâÜļe^!»»}}B)) + +BBn¦±��&IDATHÇ¥–évª0…*¢X‡VmÏfFçY{ïû¿Ø] +6!Qä®~¿w’}¦$L¡céfh4[ºÕa/x«™(`ÖÞJäºÌÇö¾‰¾=ÛIf€¦<‘úT H�?z¤ïÇ-)l@÷]Õ· œlzˆ}‚Ñ–õµ:¦ô”)ê5EïP Ž´¢]Ç„J™ Þâ5ÔýÕ3ŒŸÈG]î¿,Žî=»}œ¨'ôóúj°©6´¬æ:ŽT‰#ô[¿iØR%¶ÐÞ®%@BY¥8»‘½ œ×b˜àýæòj,"\9O£ïD˜Œu0ã›nxý\äD6ße†³DG�þf<ü°ñˆ{²˜.9þÉrx'òÄrë¬_ˆ3÷¬ù‚q|´XKâDP,Ñd ÌK!Ä™£Á�â„PY“�P\`C!¥â‚¢%š@Æ¥¢%)èÅZÛ£bÐÅ´Òb£ ¥UGLÏ=m$CgB RpäÉ +a‰Í§ÂÛŽ73±/¢Ëý’~ó:@ÜSp¹œ…x=’QËFtG9ÞôA:]“Ì.Q¦rç«•csµ€]jð©>´!»1@Dˆ0`ã¯õôÆ,çÓ@üJÃø,\÷Ϋ˻ޖ”¸|õ *‹ãÀõâ£ùOòñGQ૸;U¾sÞ{Àx á^ê·Ðcö˜áíëÆþrN4_úqxû:õ9ùïïÏ?€?¸Ëi‰r����IEND®B`‚ \ No newline at end of file diff --git a/web/themes/iop/assets/images/icons/icon-twitter.png b/web/themes/iop/assets/images/icons/icon-twitter.png new file mode 100644 index 0000000000000000000000000000000000000000..2f1be32a2957c939754cc52a68449a7808e2d035 --- /dev/null +++ b/web/themes/iop/assets/images/icons/icon-twitter.png @@ -0,0 +1,11 @@ +‰PNG + +��� IHDR���0���0���`Ü µ��ÄPLTE���Ýìòùùù ŽÀŒ¿¿Ä^¼¬ÂyâÜ“ßâŒ´ß Àã¢ÐãÌîîÝìòéõ÷äìòÒźÃZ»$ÔÈÌĖàr½Q½O»ÉÄl½R»ÃÄ·Ãd¼X»8ØÍ.¢È,–È"`ÃIÙÒC·ÎTÝÓK²ÐI£ÐAvËHÒÑFÄÐ:‡Ê8xÊtÃÚq´Øk”ÕuÍÚoª×l˜ÖŠâ߉×߃³Ý€§Û–æã¿à‹Þ©æè¥âä§æçŸ¹ãÅ×êÙãî>”Ì=“Ë8rÉ7qÈ”Öâ‘ÓßËÞðÊÛïáôöáöõÿÿÿþþÿ¡Á§ÂœÁ–À y¾m½³ÂÂKº À„¿ +~¾s½a¼ÏÅŠ¿g½¹Ã[¼U»¿ÃAÏÏQ»òüüâøøáñ÷Âáï¡ÁæÌÄÉÄÆÄN»ðöûÛïöÔõõÙæõÐáóÁñï¶îí¹Ðí·Öì›âæV‹ÒQ‡Ñ2vÈÄÄ¥Ä~Á W¿õúüóùüòöüß÷÷ÒèóÅòðÄëð¼åîÁÙî¿Ôî·äí²Îë°Çê’ßã”Òã•Çã“»âŠááŠµà‡°ßƒ¸ÞqÛÛnÓÚlÙÙfÝØaÜ×^ÃÕ\½Õa¡ÕX¥Ó>¿Î"ÎÆ!µÆ%zŽöÃ!eï¥ÁšÁ”À ‘À†¿ +€¾t¾f¼X»ðøûàì÷àé÷ÑîóÒìóÒáóÂåï½îîºÜí°áë®Òê¨í鬯é¥åè¦àè£Éç¢Èæ™èåŸÂå–èä–¼ãÄá±á‡Íà|ÛÝzÛÝyÕÝ€§ÝwÀÛv´ÛnÌÚlÐÙq¨Ùq ÙfÉØiÁØp¡Øh¹×h£×g¦Ög›Öc–Õ]©Ôa‘Ô]‘ÔQ×ÒTŸÒ<ªÌCÌA{Ì2ÇÊ7†Ê.É1ƒÈ4~È%ÍÇ#½Ç*˜Ç#oÄeÀeÀ}†J˜���MtRNS�! +þþ÷÷ð‘vve^B)ýööòòòòòòòíííââââÜÜÜÜÄļ¼¼¼»»»»’’’}}}}tssee^^B)ÄÄÄÄssBB))I/&½��áIDATHÇbÀ�Œ<†Z*â,ÌbÊš<Œ�¿µspÔêÈUq,Ì+W-ôWwçÇ£œÏDbMpÝÍþÌŒ?¿†Œ}³ký—±{ãPÎd!=·ÜÏ øuÍ +c7g¦ÞS/>äZ‘/(8»4T—S=·ÂÚG¾XAÛ¼Py[tõ\l1çQƒâ°“‹…81ÔOðÅ*XQtp'ôÅö,bEr•—b"Ø|¼v$ËÁ}Τ¿î²/Ap¢Fº–IÕ~„5ø¥äšAã Ù¤N_"@I®´Xƒiê _¢ÀÔz©Ô-Äi(Ì¥D›¼JìòÇ,8—îëÛš™‘mÔàš×Ws+Î\/Ð? ,ôùñ”;p±Òl5`~ ¯GQ}\Ç• °†„ä”Ö]ð€šËÈàŽä¢Ô¤ÄÉù`VFLCͳt¸üŒX{£ð£ K’cî±2áRÒòb9´Ã˧€âCêΔ· 4LDŽŠX ÕpäLS Ò‡UCs¬ƒdx’“*15”"iH‹aGJGUI˜ +‘ÓS¬ `¨:15<ôEÕ€ê$ß, Ó}Q„æéüâ§hÒ}Q= V„†×h6LƒJ ‚Õ(|2²Pª†i(#Î!¼ +E¬{!²†6Ô<3Öžø`?BÃ^¸ "ñ1¸åíF옷¡¶&ˆHÞàwSσû¯~¸”ž¥ff[A²h1Ldã…—P /NoÆšE!…Àm$Ñ ÝS¦ôg¶`˳Ó!…�ƒ“lR™/`[®4©¢¨¼ND©„(*'Rß)ŒÅýa…÷"V;´ +¯½ˆ +¡ã*î*k¨Ê¬Ÿ”cW߬‘Ü÷9°ÚSŒ©|ÓEPµ‹³b¿»µbß«b‡Ä9¸é0÷Èö‚F?¿Æ‚vhÓ7°vAkœx ª ¹ù�€iÙæ@ù����IEND®B`‚ \ No newline at end of file diff --git a/web/themes/iop/assets/images/icons/icon-youtube-hover.png b/web/themes/iop/assets/images/icons/icon-youtube-hover.png new file mode 100644 index 0000000000000000000000000000000000000000..8f86d14814193aab02fcce254b0ff4def2c6beee --- /dev/null +++ b/web/themes/iop/assets/images/icons/icon-youtube-hover.png @@ -0,0 +1,6 @@ +‰PNG + +��� IHDR���0���0���`Ü µ���«PLTE��� $1p†#0 $1-: $1)@L<Q\G[e› › ¢¬±¢¬±Ýàâæèé=R]<Q\‚–ÌÑÔÆËÎàãåÙÜÞýýýõõõ…’™„‘˜ÿÿÿ#0EYcUgpƒ—bt|óõõ¹ÂÆ–¡§™Ÿhy\mv,8ÀÈ˳¼À/<Üàâ’ž¤s‚‰4JUïñòFZdàãåÕÙÛÐÕ×®·»¡¬±9NY&=I½ÄÈ‘U+���tRNS�ð‘÷ýòâÜļvse^!»»}BB)) + +}}¨Ël�� IDATHÇ¥–}›é0Å“ Ú¥k±›#ªÚj½Ô;ûý?Ù½Ø;Oº zŸýýΉ3I†´|áÕkÕjî ¿ÅžðÚpQÀm¼>¿Ì’iºH9Ù¦ÓdpñÎì>8d²@–�üc`Ó¿µx' v1Ð~3õM§TZIOpš?õ/¬ä]V¨¼ú©|Àô‡£YÁQ>äˆJSË×1÷7áÌm#~kíÿî'N²'|~×—#-cHÁo5ˆe)bˆk¿qìÊvà—Nl ¡ÖKµÙÌAÌ7µ\Ó× .2Òç°“#ƒËX3Úa +KÌÐb¾‘‚¥Åä3¡m0¢Ø¡3ÒBÌÃI7ÎÎÐR'Á<VÇ‚Ö ƒ\ç H°@Õ0±¤Ü¦a‚«BÚÈ¡)ª÷ éVƒ=$ +ÈIOúL=eœI{Í:àNBxL ¢u�+ "æCi'ÝÊQ럚ï~LJš¹8H"¯FVãL¸×¤dI·#º/§ßߎ(Êv¡Ï–чà}v¥‹¼Œ!G—Ýv—¹•:CöMÏAôLÁéé×ý³ë{J×==(ÑãýÍ'èQ1ébÚåaN¢N¯{K} Óc†]¨CQ~P�ï™þutPQ¸¸Œ‹0R×Ñ¡ÿ«áä¿ÇŸ?żřätÓö����IEND®B`‚ \ No newline at end of file diff --git a/web/themes/iop/assets/images/icons/icon-youtube.png b/web/themes/iop/assets/images/icons/icon-youtube.png new file mode 100644 index 0000000000000000000000000000000000000000..1dd8b98d56466a52394a418c89ce7634da72a451 --- /dev/null +++ b/web/themes/iop/assets/images/icons/icon-youtube.png @@ -0,0 +1,10 @@ +‰PNG + +��� IHDR���0���0���`Ü µ��µPLTE���Üèñ À¿Ä^¼Q¼yâÜk–Ö“ß⌴ߣÒäÈÚíàóõÚæðéõ÷äìòýýýõõõºÃZ»$ÔÈÌĖé r½O»ÉįÂl½ÃÄ·Ãd¼X»8ØÍ.¢È,–È"`ÃIÙÒC·Î=”Ì7qÉTÝÓK²ÐI£ÐAvËHÒÑFÄÐ8xÊtÃÚq´ØuÍÚŠâ߉×߃³Ý€§Û–æã“Õá¿à‹Þ©æè¢Âå¥âäž¾á¨ì矹ãÏññÉëë;‡Ê:†Ép«Øn©ÖáôöáöõÜñðÿÿÿJº y¾ÏÅa¼[¼§Âs½ÊÄÄĹó¡ÁœÁm½g½W»P»–À¿ÃŠ¿ À„¿ +~¾„¾Þñöüõúüáñ÷ÌÄÆÄU»N»Áñï»åî½Öîµíí¹Ðí°Éê˜ç唻㎰ázØÝK¶Ð@xÌ V¾óüüòûüÞøöÜîöÔõõÛæõÃåï¾ÞîµØì ¿å’ß㊵à†ÄßqÛÛoÏÛq§ÙfÝØgÇØi¾ØaÜ×_Ü×g¥×e™Ö]£ÔQÛÓW‹ÒNÆÑL¿ÑR‡ÑAÎÏH©ÏG Ï>¿ÎE˜Î1sÈ"ÎÆÑÅÀĽ÷äñ¯©£Á€Á ‘À ŽÀ†¿ +}¾u¾n½f¼×ðôÖçôÑîóÒáóÐäòÎÞòÃêð»îî°áë®Òê¨íé¥åèšêæâæ›âåšàå˜Ôä–ÉãÐâ’¶âŠßáÄáÝnáÛkÚÙp¡Ø_ÓÖbÄÖ`¾ÖZÁÔX»Ô]©Ô]‘Ô`ŽÔOËÒU¥ÒTŸÒSÑCÔÏJ°ÏP‚ÏEÎE‘ÍDÍD‰Í4ÕÌ7†Ê4xÉ'ÓÈ1ƒÈ*˜Ç!²ÆœÃ‘Æ `ÂvÁcÙ—Ò���KtRNS�)ý÷÷ð‘‘vv^B!! + +ööòòòòòòòíííââââÜÜÜÜÄÄÄļ¼¼¼»»»’’}}}}tssseeee^^BB»»)))Ê¥¹ÿ��ºIDATHÇbÀ�<\F:*LLbÊÚ†\<�Ÿ•†ïªä¤• +–ÇÅEFF¨[òáQÎè&¹ÚwÙÙý éiÞÞiéõûN-\(nìC¹€™ìš Þ( ÷ä’pSlê¹]¢£úÖ{c€uí‹é;aª·UX{'Ï+Ø23LÞ]='‹‡7NPº@ˆC}±7°7”E‡p@“7^°s>³ ’н €=óäà>0ˆ9îM”†èÁB×<ë®7`Z¦ 4~bÍÊ#FCN¦´'X{l¿7Q -˜ ¤ž_*v#qjƒEA)Ñ:{\(õàå[ןù&'%$ÆEF>œ|áDQ\º3èA3»®~vL€tBCxXh|ȸŽü5^Ÿ +¸ %±Ø4ï‚+˜ãÇÃàèƒpÑ5ìznòs``÷)óËaž h˜WPäÇÆ ëS�çWÀ4¤4>@Òp~Zª>up¾\ƒwjë#¸?¸‚j?%VŸT,€œônL •~">>ÞØ4€@†o¿¹€áÖP_M.'¥wÇEbuЧŸÂ5´>F +¥ÛÈžF Örì79XQ"î<v GQ"ÎÑg*œß„]ø‚?”Äç]ŽMC¯7râƒ$o8(<ÒqóƬY3fLŸ~µ¬lʔɥ‡òˆä Î@S½‰=,º™ø, +)ΧáX0¬˜) FýÖLi/XA6›¤‚ŒAÐ ¦ŸˆR)DO©0n!¤¾yžœ3Ø*¾wÏg¶C«PZðš¨P:úp«oGTYW)¬½£ÏVŠvXª]×è¨ ›0•oèV»ÎX€ ¨b¿´Uù¶Ó Š]WÓÁÔt¸x¸¡Ôt¨É=pÜt`dÀ ø1'ü�/ró‡C�^R_F¸î����IEND®B`‚ \ No newline at end of file diff --git a/web/themes/iop/iop.info.yml b/web/themes/iop/iop.info.yml index 7558a580f17cc9e749c65d87bb30c6af0a2def4c..069612e2e99ae2be8b50490497c99e63a3810aa4 100644 --- a/web/themes/iop/iop.info.yml +++ b/web/themes/iop/iop.info.yml @@ -17,6 +17,7 @@ libraries-override: tour/tour-styling: false ventuno/components: false ventuno/theme: false + ventuno/paragraph__carousel: false regions: search_bar: 'Search bar' diff --git a/web/themes/iop/iop.libraries.yml b/web/themes/iop/iop.libraries.yml index a853d4053f3a17fd16a13ed27c235c7fdca6f707..0b8806b54f9e7437a9dabd1ab20b5c03e038925b 100644 --- a/web/themes/iop/iop.libraries.yml +++ b/web/themes/iop/iop.libraries.yml @@ -19,8 +19,15 @@ theme: css: theme: assets/css/theme.min.css: { minified: true } + dependencies: + - iop/landing # Pages +landing: + css: + theme: + assets/css/landing.min.css: { minified: true, preprocess: false } + listing: css: theme: @@ -32,10 +39,15 @@ accordion-faq: theme: assets/css/accordion-faq.min.css: { minified: true, preprocess: false } +call-to-action: + css: + theme: + assets/css/call-to-action.min.css: { minified: true, preprocess: false } + join: css: theme: - assets/css/join.min.css: { minified: true, preprocess: false } + assets/css/join.min.css: { minified: true } navbar: css: @@ -52,59 +64,39 @@ pager: theme: assets/css/pagination.min.css: { minified: true } -paragraph: - css: - theme: - assets/css/paragraph.min.css: { minified: true } - -paragraph--2-column-featured-left: - css: - theme: - assets/css/paragraph--2-column-featured-left.min.css: { minified: true } - -paragraph--2-column-featured-right: - css: - theme: - assets/css/paragraph--2-column-featured-right.min.css: { minified: true } - -paragraph--call-to-action: +paragraph__call_to_action: css: theme: assets/css/paragraph--call-to-action.min.css: { minified: true, preprocess: false } -paragraph--carousel: +paragraph__carousel: css: theme: assets/css/paragraph--carousel.min.css: { minified: true, preprocess: false } assets/css/glide.core.min.css: { minified: true } dependencies: - - iop/paragraph--carousel.js + - iop/paragraph__carousel.js -paragraph--carousel.js: +paragraph__carousel.js: header: true js: assets/js/glide.min.js: { minified: true, attributes: { defer: true } } -paragraph--image: +paragraph__image: css: theme: assets/css/paragraph--image.min.css: { minified: true } -paragraph--row: +paragraph__layout: css: theme: - assets/css/paragraph--row.min.css: { minified: true } + assets/css/paragraph--layout.min.css: { minified: true } -paragraph--testimony: +paragraph__testimony: css: theme: assets/css/paragraph--testimony.min.css: { minified: true } -paragraph--video: - css: - theme: - assets/css/paragraph--video.min.css: { minified: true } - tile: css: theme: diff --git a/web/themes/iop/iop.theme b/web/themes/iop/iop.theme index 32810884325171c24746c98855bc99ce3e440805..e788c9be4e5b4a1f4aa8d92f414539e866b4576d 100644 --- a/web/themes/iop/iop.theme +++ b/web/themes/iop/iop.theme @@ -36,7 +36,8 @@ function iop_preprocess(array &$variables): void { * Implements hook_preprocess_HOOK() for paragraph.html.twig. */ function iop_preprocess_paragraph(array &$variables): void { - $variables['#attached']['library'][] = 'iop/paragraph'; + $variables['#attached']['library'][] = 'iop/paragraph__' . $variables['paragraph']->bundle(); + $variables['attributes']['class'][] = 'paragraph--' . str_replace('_', '-', $variables['paragraph']->bundle()); } /** @@ -51,6 +52,13 @@ function iop_preprocess_paragraph__image(array &$variables): void { } } +/** + * Implements hook_preprocess_HOOK() for paragraph__content_listing.html.twig. + */ +function iop_preprocess_paragraph__content_listing(array &$variables): void { + unset($variables['content']['paragraph_content_listing_content_listing_top']); +} + /** * Implements hook_preprocess_HOOK(). */ @@ -144,7 +152,7 @@ function iop_preprocess_node__custom_page__full(array &$variables): void { // For the custom page that is set as landing page, do not display the title // or the report link. - $variables['label']['#access'] = FALSE; + unset($variables['label']); } } @@ -161,6 +169,10 @@ function iop_preprocess_block(array &$variables): void { case 'iop_primaryadminactions': $variables['attributes']['class'][] = 'd-inline-block'; break; + + case 'iop_pagetitle': + $variables['attributes']['class'][] = 'd-inline-block'; + break; } } @@ -265,3 +277,16 @@ function iop_preprocess_rdf_entity(array &$variables): void { ]); } } + +/** + * Implements hook_preprocess_select(). + */ +function iop_preprocess_select(array &$variables): void { + $field_name = $variables['element']['#name']; + switch ($field_name) { + case 'field_topic': + case 'field_is_solution_type': + $variables['attributes']['class'][] = 'h-50vh'; + break; + } +} diff --git a/web/themes/iop/src/scss/03-components.scss b/web/themes/iop/src/scss/03-components.scss index 5581328f2311d4f4ef2dccc48c055e2cc0f4b072..73418ef10e48be2fb3a40fe64e9da9e92143285c 100644 --- a/web/themes/iop/src/scss/03-components.scss +++ b/web/themes/iop/src/scss/03-components.scss @@ -13,4 +13,6 @@ @import "@openeuropa/bcl-bootstrap/scss/navbar"; @import "@openeuropa/bcl-theme-default/src/scss/header"; @import "@openeuropa/bcl-theme-default/src/scss/icon"; + @import "@openeuropa/bcl-theme-joinup/src/scss/buttons"; + @import "components/ui-dialog"; @import "components/buttons"; diff --git a/web/themes/iop/src/scss/04-theme.scss b/web/themes/iop/src/scss/04-theme.scss index ee15472f687fc240094129150c0900aaacbeaad7..a2e775ee6a0bb1acfbb5c57485573c6b1ba07d3a 100644 --- a/web/themes/iop/src/scss/04-theme.scss +++ b/web/themes/iop/src/scss/04-theme.scss @@ -26,21 +26,6 @@ a { } } } -// Link: wavy colored underline -a.call-to-action { - color: $primary; - display: inline-block; - background-repeat: no-repeat; - background-image: url("data:image/svg+xml;charset=utf-8,%3csvg preserveAspectRatio='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 30' style='enable-background:new 0 0 100 30' xml:space='preserve'%3e%3clinearGradient id='a' gradientUnits='userSpaceOnUse' x1='0' y1='15.5' x2='100' y2='15.5'%3e%3cstop offset='.106' style='stop-color:%23268dc2'/%3e%3cstop offset='.129' style='stop-color:%232c94c1'/%3e%3cstop offset='.216' style='stop-color:%233ea9bc'/%3e%3cstop offset='.302' style='stop-color:%2348b6ba'/%3e%3cstop offset='.382' style='stop-color:%234cbab9'/%3e%3cstop offset='.682' style='stop-color:%23ced955'/%3e%3cstop offset='.734' style='stop-color:%23d1d44f'/%3e%3cstop offset='.805' style='stop-color:%23d9c43d'/%3e%3cstop offset='.887' style='stop-color:%23e6ac20'/%3e%3cstop offset='.956' style='stop-color:%23f39202'/%3e%3c/linearGradient%3e%3cpath d='M1 17.6s11.27-6.1 24.01-6.1 34.3 8 49 8 24.99-4 24.99-4' style='fill:none;stroke:url(%23a);stroke-width:4;stroke-linecap:round;stroke-miterlimit:10'/%3e%3c/svg%3e"); - background-position: center 1.125em; - background-size: 100% 16px; - height: 2em; - &:hover { - color: $black; - text-decoration: none; - background-image: url("data:image/svg+xml;charset=utf-8,%3csvg preserveAspectRatio='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 30' style='enable-background:new 0 0 100 30' xml:space='preserve'%3e%3cpath d='M1 17.6s11.27-6.1 24.01-6.1 34.3 8 49 8 24.99-4 24.99-4' style='fill:none;stroke:%233d3f40;stroke-width:4;stroke-linecap:round;stroke-miterlimit:10'/%3e%3c/svg%3e"); - } -} // Layout .layout-container { @@ -53,7 +38,7 @@ a.call-to-action { } } &.listing { - .page-header + .content { + .page-header + .content .paragraph--type--content-listing { margin-top: $spacer * -1; // -16px @include media-breakpoint-up(md) { margin-top: $spacer * -2; // -32px diff --git a/web/themes/iop/src/scss/components/_ui-dialog.scss b/web/themes/iop/src/scss/components/_ui-dialog.scss new file mode 100644 index 0000000000000000000000000000000000000000..45f38d5b920232f2243ee027361a7a0a8455cd38 --- /dev/null +++ b/web/themes/iop/src/scss/components/_ui-dialog.scss @@ -0,0 +1,53 @@ +.ui-widget, +.ui-widget button { + font-family: $font-family-base; +} +.ui-widget-overlay { + z-index: $zindex-modal-backdrop; +} +.ui-widget-content a.btn-brand { + color: $white; +} +.ui-dialog { + z-index: $zindex-modal; + overflow-wrap: break-word; + border: 1px solid $gray-200; + border-radius: $border-radius-lg; + overflow: hidden; + box-shadow: $modal-content-box-shadow-sm-up; + padding: 0; + .ui-dialog-titlebar { + padding: $spacer; + background-color: transparent; + border: 0; + border-bottom: $modal-header-border-width solid $modal-header-border-color; + } + .ui-dialog-title { + font-weight: $font-weight-base; + color: $primary; + font-size: $h4-font-size; + } + .ui-dialog-titlebar-close { + right: $spacer; + top: 1.75rem; + 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.414z'/%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; + } + .ui-dialog-content { + padding: $spacer; + } + .ui-button.ui-dialog-titlebar-close, + .ui-button.ui-dialog-titlebar-close:hover { + background-color: transparent; + .ui-icon-closethick { + background-image: none; + } + } +} diff --git a/web/themes/iop/src/scss/components/call-to-action.scss b/web/themes/iop/src/scss/components/call-to-action.scss new file mode 100644 index 0000000000000000000000000000000000000000..f33e7b98d8cab0ed1131616e212eeffb766fd5cc --- /dev/null +++ b/web/themes/iop/src/scss/components/call-to-action.scss @@ -0,0 +1,17 @@ +@import "../partials/core"; + +a.call-to-action, +.paragraph--call-to-action:not([class^="lpb"]) > a { + color: $primary; + display: inline-block; + background-repeat: no-repeat; + background-image: url("data:image/svg+xml;charset=utf-8,%3csvg preserveAspectRatio='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 30' style='enable-background:new 0 0 100 30' xml:space='preserve'%3e%3clinearGradient id='a' gradientUnits='userSpaceOnUse' x1='0' y1='15.5' x2='100' y2='15.5'%3e%3cstop offset='.106' style='stop-color:%23268dc2'/%3e%3cstop offset='.129' style='stop-color:%232c94c1'/%3e%3cstop offset='.216' style='stop-color:%233ea9bc'/%3e%3cstop offset='.302' style='stop-color:%2348b6ba'/%3e%3cstop offset='.382' style='stop-color:%234cbab9'/%3e%3cstop offset='.682' style='stop-color:%23ced955'/%3e%3cstop offset='.734' style='stop-color:%23d1d44f'/%3e%3cstop offset='.805' style='stop-color:%23d9c43d'/%3e%3cstop offset='.887' style='stop-color:%23e6ac20'/%3e%3cstop offset='.956' style='stop-color:%23f39202'/%3e%3c/linearGradient%3e%3cpath d='M1 17.6s11.27-6.1 24.01-6.1 34.3 8 49 8 24.99-4 24.99-4' style='fill:none;stroke:url(%23a);stroke-width:4;stroke-linecap:round;stroke-miterlimit:10'/%3e%3c/svg%3e"); + background-position: center 1.125em; + background-size: 100% 16px; + height: 2em; + &:hover { + color: $black; + text-decoration: none; + background-image: url("data:image/svg+xml;charset=utf-8,%3csvg preserveAspectRatio='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 30' style='enable-background:new 0 0 100 30' xml:space='preserve'%3e%3cpath d='M1 17.6s11.27-6.1 24.01-6.1 34.3 8 49 8 24.99-4 24.99-4' style='fill:none;stroke:%233d3f40;stroke-width:4;stroke-linecap:round;stroke-miterlimit:10'/%3e%3c/svg%3e"); + } +} diff --git a/web/themes/iop/src/scss/components/join.scss b/web/themes/iop/src/scss/components/join.scss index a6f0fc8c65c3c55554f1ff53f2f2bb2db0338638..375a68e156d3b3103fd328de6aa8d049704a2b91 100644 --- a/web/themes/iop/src/scss/components/join.scss +++ b/web/themes/iop/src/scss/components/join.scss @@ -31,28 +31,35 @@ width: 2.5rem; height: 2.5rem; margin: $spacer $spacer * .5; - border: 2px solid transparent; - padding: $spacer * .25; // 4px - border-radius: $border-radius-pill; - background: - linear-gradient($white, $white) padding-box, - linear-gradient(to right, $blue, $turquoise) border-box; - color: $brand; - @include media-breakpoint-up(sm) { + background-repeat: no-repeat; + background-size: cover; + @include media-breakpoint-up(sm) { margin: $spacer; width: 3rem; height: 3rem; } - svg { - fill: url('#join-gradient'); + &--linkedin { + background-image: url("#{$theme-images-path}/icons/icon-linkedin.png"); + &:hover { + background-image: url("#{$theme-images-path}/icons/icon-linkedin-hover.png"); + } + } + &--twitter { + background-image: url("#{$theme-images-path}/icons/icon-twitter.png"); + &:hover { + background-image: url("#{$theme-images-path}/icons/icon-twitter-hover.png"); + } + } + &--youtube { + background-image: url("#{$theme-images-path}/icons/icon-youtube.png"); + &:hover { + background-image: url("#{$theme-images-path}/icons/icon-youtube-hover.png"); + } } - &:hover { - color: $primary; - background: - linear-gradient($white, $white) padding-box, - $primary border-box!important; - svg { - fill: $primary;; + &--newsletter { + background-image: url("#{$theme-images-path}/icons/icon-newsletter.png"); + &:hover { + background-image: url("#{$theme-images-path}/icons/icon-newsletter-hover.png"); } } } diff --git a/web/themes/iop/src/scss/components/paragraphs/paragraph--2-column-featured-left.scss b/web/themes/iop/src/scss/components/paragraphs/paragraph--2-column-featured-left.scss deleted file mode 100644 index 80cc854cbd39d0c3e2c020262846c1b0a7e515b8..0000000000000000000000000000000000000000 --- a/web/themes/iop/src/scss/components/paragraphs/paragraph--2-column-featured-left.scss +++ /dev/null @@ -1,59 +0,0 @@ -@import "../../partials/core"; - -.paragraph--2-column-featured-left { - @include media-breakpoint-up(md) { - margin-top: 50px; // Prevent the circular shape to be too close to prev section - } - h2 { - font-weight: normal; - text-align: center; - font-size: 2.5rem; - @include media-breakpoint-up(md) { - text-align: left; - font-size: 3rem; - } - } - &:first-of-type { - position: relative; - margin-left: $spacer * -5; // -80px - @include media-breakpoint-up(sm) { - margin-left: 0; - } - @include media-breakpoint-up(md) { - margin-bottom: 0; - } - &::before { - position: absolute; - content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' style='enable-background:new 0 0 100 100' xml:space='preserve'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='0' y1='50' x2='100' y2='50'%3E%3Cstop offset='.106' style='stop-color:%23268dc2'/%3E%3Cstop offset='.129' style='stop-color:%232c94c1'/%3E%3Cstop offset='.216' style='stop-color:%233ea9bc'/%3E%3Cstop offset='.302' style='stop-color:%2348b6ba'/%3E%3Cstop offset='.382' style='stop-color:%234cbab9'/%3E%3Cstop offset='.682' style='stop-color:%23ced955'/%3E%3Cstop offset='.734' style='stop-color:%23d1d44f'/%3E%3Cstop offset='.805' style='stop-color:%23d9c43d'/%3E%3Cstop offset='.887' style='stop-color:%23e6ac20'/%3E%3Cstop offset='.956' style='stop-color:%23f39202'/%3E%3C/linearGradient%3E%3Ccircle cx='50' cy='50' r='48' style='opacity:.7;fill:none;stroke:url(%23a);stroke-width:4;stroke-miterlimit:10'/%3E%3C/svg%3E"); - z-index: -1; - width: 80px; - top: -20px; - right: -20px; - @include media-breakpoint-up(md) { - width: 100px; - top: -50px; - right: -35px; - } - } - img { - border-radius: $spacer * 2.5; // 40px - border: 2px solid transparent; - overflow: hidden; - background: linear-gradient($primary, $primary) padding-box, $gradient border-box; - @include media-breakpoint-up(md) { - border-radius: $spacer * 4; // 64px - } - } - } - &:last-of-type { - order: 2; - @include media-breakpoint-up(md) { - order: 0; - } - & > * { - @include media-breakpoint-up(lg) { - margin-left: $spacer * 5; // 80px - } - } - } -} diff --git a/web/themes/iop/src/scss/components/paragraphs/paragraph--2-column-featured-right.scss b/web/themes/iop/src/scss/components/paragraphs/paragraph--2-column-featured-right.scss deleted file mode 100644 index 41dc4988b2f83a42426437ddedded417ed7da74a..0000000000000000000000000000000000000000 --- a/web/themes/iop/src/scss/components/paragraphs/paragraph--2-column-featured-right.scss +++ /dev/null @@ -1,19 +0,0 @@ -@import "../../partials/core"; - -.paragraph--2-column-featured-right { - &:first-of-type { - & > * { - @include media-breakpoint-up(md) { - margin-right: $spacer * 5; // 80px - } - } - } - &:nth-of-type(2) { - order: -1; - margin-bottom: $spacer * 2; // 32px - @include media-breakpoint-up(md) { - order: 0; - margin-bottom: 0; - } - } -} diff --git a/web/themes/iop/src/scss/components/paragraphs/paragraph--call-to-action.scss b/web/themes/iop/src/scss/components/paragraphs/paragraph--call-to-action.scss index 21a228a6f335fca73101d5b0fad6874895d20929..afc05d4c8a2618c89fccbe4658e4d4dae164e07e 100644 --- a/web/themes/iop/src/scss/components/paragraphs/paragraph--call-to-action.scss +++ b/web/themes/iop/src/scss/components/paragraphs/paragraph--call-to-action.scss @@ -1,7 +1,7 @@ @import "../../partials/core"; .paragraph--call-to-action { - a { + a.cta { color: $primary; display: inline-block; font-size: 1.25rem; diff --git a/web/themes/iop/src/scss/components/paragraphs/paragraph--carousel.scss b/web/themes/iop/src/scss/components/paragraphs/paragraph--carousel.scss index 4e30d59784d78a5921d47117818d5334f47781a0..503e23b71b89c01a6eb6937a5e7e9aeb338e4f85 100644 --- a/web/themes/iop/src/scss/components/paragraphs/paragraph--carousel.scss +++ b/web/themes/iop/src/scss/components/paragraphs/paragraph--carousel.scss @@ -3,8 +3,16 @@ .paragraph--carousel { position: relative; .paragraph__heading { - display: block; + margin-top: $spacer * 1.5; color: $primary; + text-align: center; + margin-top: 2.5rem; + font-size: 1.75rem; + font-weight: $font-weight-normal; + @include media-breakpoint-up(md) { + margin-top: $spacer * 2.5; + font-size: 3rem; + } &::after { content: ""; background-image: url("data:image/svg+xml;charset=utf-8,%3csvg preserveAspectRatio='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 30' style='enable-background:new 0 0 100 30' xml:space='preserve'%3e%3clinearGradient id='a' gradientUnits='userSpaceOnUse' x1='0' y1='15.5' x2='100' y2='15.5'%3e%3cstop offset='.106' style='stop-color:%23268dc2'/%3e%3cstop offset='.129' style='stop-color:%232c94c1'/%3e%3cstop offset='.216' style='stop-color:%233ea9bc'/%3e%3cstop offset='.302' style='stop-color:%2348b6ba'/%3e%3cstop offset='.382' style='stop-color:%234cbab9'/%3e%3cstop offset='.682' style='stop-color:%23ced955'/%3e%3cstop offset='.734' style='stop-color:%23d1d44f'/%3e%3cstop offset='.805' style='stop-color:%23d9c43d'/%3e%3cstop offset='.887' style='stop-color:%23e6ac20'/%3e%3cstop offset='.956' style='stop-color:%23f39202'/%3e%3c/linearGradient%3e%3cpath d='M1 17.6s11.27-6.1 24.01-6.1 34.3 8 49 8 24.99-4 24.99-4' style='fill:none;stroke:url(%23a);stroke-width:4;stroke-linecap:round;stroke-miterlimit:10'/%3e%3c/svg%3e"); @@ -36,7 +44,7 @@ left: 65%; } @include media-breakpoint-up(md) { - top: $spacer * 2; + top: $spacer * 2.5; font-size: 1rem; } @include media-breakpoint-up(lg) { diff --git a/web/themes/iop/src/scss/components/paragraphs/paragraph--layout.scss b/web/themes/iop/src/scss/components/paragraphs/paragraph--layout.scss new file mode 100644 index 0000000000000000000000000000000000000000..75a7547410cb6b378e4427a4360975d37763ee80 --- /dev/null +++ b/web/themes/iop/src/scss/components/paragraphs/paragraph--layout.scss @@ -0,0 +1,94 @@ +@import "../../partials/core"; + +.paragraph--layout { + padding-top: $spacer * 1.125; // 18px + padding-bottom: $spacer * 1.125; // 18px + @include media-breakpoint-up(lg) { + padding-top: $spacer * 2.25; // 36px + padding-bottom: $spacer * 2.25; // 36px + } + &--light, + &--secondary { + padding: $spacer * 2 0; // 32px + @include media-breakpoint-up(sm) { + padding: $spacer * 4 0; // 64px + } + @include media-breakpoint-up(lg) { + padding: $spacer * 5 0; // 80px + } + position: relative; + &::before, + &::after { + position: absolute; + left: -12px; + z-index: -1; + display: block; + width: 100vw; + height: 100%; + content: ""; + background-repeat: no-repeat; + @include media-breakpoint-up(sm) { + left: calc(-50vw + 258px); + } + @include media-breakpoint-up(md) { + left: calc(-50vw + 348px); + } + @include media-breakpoint-up(lg) { + left: calc(-50vw + 468px); + } + @include media-breakpoint-up(xl) { + left: calc(-50vw + 558px); + } + @include media-breakpoint-up(xxl) { + left: calc(-50vw + 648px); + } + } + // Before pseudo-element contains top and bottom waves. + &::before { + background-color: unset; + bottom: 0; + background-position: top, bottom; + } + // After pseudo-element fills the space between the two waves. + &::after { + top: $spacer * 2; + height: calc(100% - $spacer * 4); + @include media-breakpoint-up(sm) { + top: $spacer * 3; + height: calc(100% - $spacer * 6); + } + @include media-breakpoint-up(md) { + top: $spacer * 4; + height: calc(100% - $spacer * 8); + } + @include media-breakpoint-up(lg) { + top: $spacer * 6; + height: calc(100% - $spacer * 12); + } + } + } + &--light { + // Before pseudo-element contains top and bottom waves. + &::before { + background-image: + url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 2578 281'%3E%3Cpath d='M2578 84.05S1784.18-82.21 1277 55.74C819.69 180.13 0 84.05 0 84.05V282.4h2578Z' fill='%23f8f9fa'/%3E%3C/svg%3E"), + url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 2578 281'%3E%3Cpath d='M0 198.35s793.82 166.26 1301 28.31c457.31-124.39 1277-28.31 1277-28.31V0H0Z' fill='%23f8f9fa'/%3E%3C/svg%3E"); + } + // After pseudo-element fills the space between the two waves. + &::after { + background-color: $light; + } + } + &--secondary { + // Before pseudo-element contains top and bottom waves. + &::before { + background-image: + url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 2578 281'%3E%3Cpath d='M2578 84.05S1784.18-82.21 1277 55.74C819.69 180.13 0 84.05 0 84.05V282.4h2578Z' fill='%23e8f5fb'/%3E%3C/svg%3E"), + url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 2578 281'%3E%3Cpath d='M0 198.35s793.82 166.26 1301 28.31c457.31-124.39 1277-28.31 1277-28.31V0H0Z' fill='%23e8f5fb'/%3E%3C/svg%3E"); + } + // After pseudo-element fills the space between the two waves. + &::after { + background-color: $secondary; + } + } +} diff --git a/web/themes/iop/src/scss/components/paragraphs/paragraph--row.scss b/web/themes/iop/src/scss/components/paragraphs/paragraph--row.scss deleted file mode 100644 index 530f7afa2daf45d2c6075fa93f35c77ce3098ad4..0000000000000000000000000000000000000000 --- a/web/themes/iop/src/scss/components/paragraphs/paragraph--row.scss +++ /dev/null @@ -1,25 +0,0 @@ -@import "../../partials/core"; - -.paragraph--row { - padding-top: $spacer * 1.125; // 18px - padding-bottom: $spacer * 1.125; // 18px - @include media-breakpoint-up(lg) { - padding-top: $spacer * 2.25; // 36px - padding-bottom: $spacer * 2.25; // 36px - } - &:first-of-type { - padding-top: $spacer * 2.5; // 40px - @include media-breakpoint-up(lg) { - padding-top: $spacer * 4.5; // 48px - } - } - &.paragraph--light-wave { - padding: $spacer * 2 0!important; // 32px - @include media-breakpoint-up(sm) { - padding: $spacer * 4 0!important; // 64px - } - @include media-breakpoint-up(lg) { - padding: $spacer * 5 0!important; // 80px - } - } -} diff --git a/web/themes/iop/src/scss/components/paragraphs/paragraph--testimony.scss b/web/themes/iop/src/scss/components/paragraphs/paragraph--testimony.scss index bafff9c41f5c32f0c18a5ff63be62edc8ef16f1a..955f047e0dfb1dd06d37f241d75dd66b7a07fd83 100644 --- a/web/themes/iop/src/scss/components/paragraphs/paragraph--testimony.scss +++ b/web/themes/iop/src/scss/components/paragraphs/paragraph--testimony.scss @@ -1,13 +1,6 @@ @import "../../partials/core"; -// Override Ventuno's blockquote style -.paragraph blockquote.paragraph--testimony { - border-left: none; - padding: unset; - margin-right: 0; - margin-left: 0; -} -blockquote.paragraph--testimony { +.paragraph--testimony { display: flex; flex-direction: column; margin-bottom: $spacer * 4; //64px @@ -16,6 +9,14 @@ blockquote.paragraph--testimony { justify-content: space-between; margin-bottom: $spacer * 2; //32px } + blockquote { + // Override Ventuno's blockquote style + border-left: none; + padding: unset; + margin-right: 0; + margin-left: 0; + overflow: unset; + } .testimony { &__quote { margin-bottom: $spacer; // 16px diff --git a/web/themes/iop/src/scss/components/paragraphs/paragraph--video.scss b/web/themes/iop/src/scss/components/paragraphs/paragraph--video.scss deleted file mode 100644 index a5bdc2c6fa8bed37527f0684e1aaf3af37045d3c..0000000000000000000000000000000000000000 --- a/web/themes/iop/src/scss/components/paragraphs/paragraph--video.scss +++ /dev/null @@ -1,6 +0,0 @@ -@import "../../partials/core"; - -.paragraph--video { - border-radius: $spacer; // 16px - overflow: hidden; -} diff --git a/web/themes/iop/src/scss/components/paragraphs/paragraph.scss b/web/themes/iop/src/scss/components/paragraphs/paragraph.scss deleted file mode 100644 index 513513241777344dc044abf9d121d9fceb81c9ea..0000000000000000000000000000000000000000 --- a/web/themes/iop/src/scss/components/paragraphs/paragraph.scss +++ /dev/null @@ -1,88 +0,0 @@ -@import "../../partials/core"; - -.paragraph { - color: $primary; - h1, - h2, - h3, - h4, - h5, - h6 { - color: $primary; - } - &__heading { - display: block; - text-align: center; - margin: 0; - font-size: 1.75rem; - font-weight: $font-weight-normal; - @include media-breakpoint-up(md) { - font-size: 3rem; - } - } - &__subheading { - display: block; - font-weight: $font-weight-normal; - margin-bottom: $spacer * 2; // 32px - font-size: 1rem; - @include media-breakpoint-up(lg) { - font-size: 2rem; - } - } - // Lightgray wave background - &--light-wave { - position: relative; - &::before, - &::after { - position: absolute; - left: 0; - z-index: -1; - display: block; - width: 100vw; - height: 100%; - content: ""; - background-repeat: no-repeat; - @include media-breakpoint-up(sm) { - left: calc(-50vw + 270px); - } - @include media-breakpoint-up(md) { - left: calc(-50vw + 360px); - } - @include media-breakpoint-up(lg) { - left: calc(-50vw + 480px); - } - @include media-breakpoint-up(xl) { - left: calc(-50vw + 570px); - } - @include media-breakpoint-up(xxl) { - left: calc(-50vw + 660px); - } - } - // Before pseudo-element contains top and bottom waves. - &::before { - top: 0; - background-image: - url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 2578 281'%3E%3Cpath d='M2578 84.05S1784.18-82.21 1277 55.74C819.69 180.13 0 84.05 0 84.05V282.4h2578Z' fill='%23f5f6f7'/%3E%3C/svg%3E"), - url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 2578 281'%3E%3Cpath d='M0 198.35s793.82 166.26 1301 28.31c457.31-124.39 1277-28.31 1277-28.31V0H0Z' fill='%23f5f6f7'/%3E%3C/svg%3E"); - background-position: top, bottom; - } - // After pseudo-element fills the space between the two waves. - &::after { - background-color: $gray-200; - top: $spacer * 2; - height: calc(100% - $spacer * 4); - @include media-breakpoint-up(sm) { - top: $spacer * 3; - height: calc(100% - $spacer * 6); - } - @include media-breakpoint-up(md) { - top: $spacer * 4; - height: calc(100% - $spacer * 8); - } - @include media-breakpoint-up(lg) { - top: $spacer * 6; - height: calc(100% - $spacer * 12); - } - } - } -} diff --git a/web/themes/iop/src/scss/components/tile.scss b/web/themes/iop/src/scss/components/tile.scss index f3b95e8be585d05528343ebe4aa50b2ac773a433..6c9c0b380f00d59486f0d4a596b2e5e960326f83 100644 --- a/web/themes/iop/src/scss/components/tile.scss +++ b/web/themes/iop/src/scss/components/tile.scss @@ -31,4 +31,9 @@ -webkit-line-clamp: 5; overflow: hidden; } + mark, + .mark { + padding: unset; + background-color: unset; + } } diff --git a/web/themes/iop/src/scss/pages/landing.scss b/web/themes/iop/src/scss/pages/landing.scss new file mode 100644 index 0000000000000000000000000000000000000000..057d62cb2e601c2ac48afac82f1290ba5c2bcfcf --- /dev/null +++ b/web/themes/iop/src/scss/pages/landing.scss @@ -0,0 +1,115 @@ +// Put here all the custom crap that will be loaded *only* in the landing page. +@import "../partials/core"; + +.paragraph--layout { + &.banner { + padding-top: $spacer * 2.5; // 40px + @include media-breakpoint-up(lg) { + padding-top: $spacer * 4.5; // 48px + } + .row { + .col-md-6:nth-of-type(1) { + @include media-breakpoint-up(md) { + padding-right: $spacer * 5; + } + } + .col-md-6:nth-of-type(2) { + order: -1; + margin-bottom: $spacer * 2; // 32px + @include media-breakpoint-up(md) { + order: 0; + margin-bottom: 0; + } + } + } + img { + display: none; + @include media-breakpoint-up(md) { + display: block; + } + } + .paragraph--video { + border-radius: $spacer; // 16px + &:not(.js-lpb-component) { + overflow: hidden; + } + + // Temporary workaround: if video is not the last child of its parent, + // apply one unit bottom spacing. Using margin because it collapses with + // the top margin of the next element. + &:not(:last-child) { + margin-bottom: $spacer; + } + } + } + &.why { + @include media-breakpoint-up(md) { + margin-top: 50px; // Prevent the circular shape to be too close to prev section + } + h2 { + font-weight: normal; + text-align: center; + font-size: 2.5rem; + @include media-breakpoint-up(md) { + text-align: left; + font-size: 3rem; + } + } + .row { + .col-md-6:nth-of-type(1) { + position: relative; + margin-left: $spacer * -5; // -80px + @include media-breakpoint-up(sm) { + margin-left: 0; + } + @include media-breakpoint-up(md) { + margin-bottom: 0; + } + &::before { + position: absolute; + content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' style='enable-background:new 0 0 100 100' xml:space='preserve'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='0' y1='50' x2='100' y2='50'%3E%3Cstop offset='.106' style='stop-color:%23268dc2'/%3E%3Cstop offset='.129' style='stop-color:%232c94c1'/%3E%3Cstop offset='.216' style='stop-color:%233ea9bc'/%3E%3Cstop offset='.302' style='stop-color:%2348b6ba'/%3E%3Cstop offset='.382' style='stop-color:%234cbab9'/%3E%3Cstop offset='.682' style='stop-color:%23ced955'/%3E%3Cstop offset='.734' style='stop-color:%23d1d44f'/%3E%3Cstop offset='.805' style='stop-color:%23d9c43d'/%3E%3Cstop offset='.887' style='stop-color:%23e6ac20'/%3E%3Cstop offset='.956' style='stop-color:%23f39202'/%3E%3C/linearGradient%3E%3Ccircle cx='50' cy='50' r='48' style='opacity:.7;fill:none;stroke:url(%23a);stroke-width:4;stroke-miterlimit:10'/%3E%3C/svg%3E"); + z-index: -1; + width: 80px; + top: -20px; + right: -20px; + @include media-breakpoint-up(md) { + width: 100px; + top: -50px; + right: -35px; + } + } + img { + border-radius: $spacer * 2.5; // 40px + border: 2px solid transparent; + overflow: hidden; + background: linear-gradient($primary, $primary) padding-box, $gradient border-box; + @include media-breakpoint-up(md) { + border-radius: $spacer * 4; // 64px + } + } + } + .col-md-6:nth-of-type(2) { + order: 2; + @include media-breakpoint-up(md) { + order: 0; + } + & > * { + @include media-breakpoint-up(lg) { + margin-left: $spacer * 5; // 80px + } + } + } + } + } + &.facts { + h2 { + text-align: center; + font-size: $spacer * 3; + } + h3 { + text-align: center; + font-size: $spacer * 2; + margin-bottom: $spacer * 2.5; + } + } +} diff --git a/web/themes/iop/src/scss/partials/overrides/_colors.scss b/web/themes/iop/src/scss/partials/overrides/_colors.scss index 4c93111542b93d8fb3fb3a2c9a9f91ef81d5336e..ae24efbf9402a7dd351a7d20f45ba17fd0d78a6c 100644 --- a/web/themes/iop/src/scss/partials/overrides/_colors.scss +++ b/web/themes/iop/src/scss/partials/overrides/_colors.scss @@ -10,7 +10,7 @@ $orange: #f29100; $brand: $lightblue; $link-color: $brand; $primary: $darkblue; -$secondary: $turquoise; +$secondary: lighten($lightblue, 50); $gradient: linear-gradient(to right, $lightblue 0%, $blue 25%, $turquoise 55%, $lightgreen 80%, $orange 100%); $brand-darker: darken($brand, 15); diff --git a/web/themes/iop/src/scss/partials/overrides/_utilities.scss b/web/themes/iop/src/scss/partials/overrides/_utilities.scss index 01e181fd47c2bcdc0e3fca3ab9e30f960f9595f6..2c5ef4c3e259e64e7cb677b2e13c371b976dc630 100644 --- a/web/themes/iop/src/scss/partials/overrides/_utilities.scss +++ b/web/themes/iop/src/scss/partials/overrides/_utilities.scss @@ -21,6 +21,7 @@ $utilities: map-merge( class: h, values: ( 0: 0, + 50vh: 50vh, ) ), "max-height": null, @@ -49,6 +50,12 @@ $utilities: map-merge( "gradient": null, "user-select": null, "pointer-events": null, + "column-gap": ( + responsive: false, + property: column-gap, + class: col-gap, + values: $spacers + ), "link": null, "font-weight": map-merge( diff --git a/web/themes/iop/templates/carousel/carousel-item.html.twig b/web/themes/iop/templates/carousel/carousel-item.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..73e4166ca80c66c49f1d1b4a5951b2ae4ca6685d --- /dev/null +++ b/web/themes/iop/templates/carousel/carousel-item.html.twig @@ -0,0 +1,45 @@ +{% + set classes = [ + 'glide__slide', + 'slide', +] +%} +{% + set title_classes = [ + 'h6', + 'text-center', + 'slide__title', +] +%} +<article{{ attributes.addClass(classes) }}> + {{ title_prefix }} + {{ title_suffix }} + + {% block content %} + <a href="{{ url }}" rel="bookmark" title="{{ 'Read'|t }}: {{ label|render|striptags|trim }}" tabindex="-1"> + {% if image %} + <figure class="slide__figure"> + {{ image }} + </figure> + {% else %} + <figure class="slide__figure"> + <svg class="slide__svg"> + <use xlink:href="{{ bcl_icon_path }}#{{ icon }}"></use> + </svg> + </figure> + {% endif %} + </a> + {# 'text' is only present in custom page carousel items which don't display a label #} + {% if text %} + <div class="slide__body"> + <div class="slide__text"> + {{ text }} + </div> + </div> + {% elseif label %} + <h1{{ title_attributes.addClass(title_classes) }}> + <a class="slide__title-link" href="{{ url }}" rel="bookmark">{{ label }}</a> + </h1> + {% endif %} + {% endblock %} +</article> diff --git a/web/themes/iop/templates/content/node--carousel.html.twig b/web/themes/iop/templates/content/node--carousel.html.twig index 501a1e299c2ae4354b08b530eff42cd0e30814ae..6cc8946fa75da1203728707de249a643873a84fd 100644 --- a/web/themes/iop/templates/content/node--carousel.html.twig +++ b/web/themes/iop/templates/content/node--carousel.html.twig @@ -70,60 +70,15 @@ * in different view modes. */ #} -{% - set classes = [ - node.bundle|clean_class, - node.bundle|clean_class ~ '--' ~ view_mode|clean_class, - 'glide__slide', - 'slide', -] -%} -{% - set title_classes = [ - 'h6', - 'text-center', - 'slide__title', -] -%} -{% if node.bundle is same as 'news' %} - {% set icon = 'newspaper' %} -{% elseif node.bundle is same as 'event' %} - {% set icon = 'calendar3' %} -{% elseif node.bundle is same as 'custom_page' %} - {% set icon = 'file-earmark-richtext' %} -{% endif %} -<article{{ attributes.addClass(classes) }}> - {{ title_prefix }} - {{ title_suffix }} - {% block content %} - <a href="{{ url }}" rel="bookmark" title="{{ 'Read'|t }}: {{ label|render|striptags|trim }}" tabindex="-1"> - {% if image %} - <figure class="slide__figure"> - {{ image }} - </figure> - {% else %} - <figure class="slide__figure"> - <svg class="slide__svg"> - <use xlink:href="{{ bcl_icon_path }}#{{ icon }}"></use> - </svg> - </figure> - {% endif %} - </a> - {% if node.bundle in ['news', 'event'] %} - <h1{{ title_attributes.addClass(title_classes) }}> - <a class="slide__title-link" href="{{ url }}" rel="bookmark">{{ label }}</a> - </h1> - {% elseif node.bundle is same as 'custom_page' %} - <div class="slide__body"> - <div class="slide__text"> - {{ content.field_paragraphs_body }} - </div> - {# Slide's Call To Action will be enabled later #} - {# <div> - <a class="slide__cta" href="{{ url }}">{{ 'Learn more'|t }}</a> - </div> #} - </div> - {% endif %} - {% endblock %} -</article> +{% include '@iop/carousel/carousel-item.html.twig' with { + attributes, + url, + title_prefix, + title_suffix, + label, + text: node.bundle is same as 'custom_page' ? content.field_paragraphs_body, + title_attributes, + image, + icon: node.bundle is same as 'collection' ? 'folder2-open' : 'clipboard2-check', +} only %} diff --git a/web/themes/iop/templates/content/node--custom-page--full.html.twig b/web/themes/iop/templates/content/node--custom-page--full.html.twig index dea113c7711f8ece6e8864c597d14f80787e6312..4133455db1805a6a93c72d18984778d1981423a0 100644 --- a/web/themes/iop/templates/content/node--custom-page--full.html.twig +++ b/web/themes/iop/templates/content/node--custom-page--full.html.twig @@ -15,7 +15,7 @@ * Calling other methods, such as node.delete(), will result in an exception. * See \Drupal\node\Entity\Node for a full list of public properties and * methods for the node object. - * - label: The title of the node. + * - label: (optional) The title of the node. * - content: All node items. Use {{ content }} to print them all, * or print a subset such as {{ content.field_example }}. Use * {{ content|without('field_example') }} to temporarily suppress the printing @@ -23,8 +23,8 @@ * - author_picture: The node author user entity, rendered using the "compact" * view mode. * - metadata: Metadata for this node. - * - date: Themed creation date field. - * - author_name: Themed author name field. + * - date: (optional) Themed creation date field. + * - author_name: (optional) Themed author name field. * - url: Direct URL of the current node. * - display_submitted: Whether submission information should be displayed. * - attributes: HTML attributes for the containing element. @@ -65,31 +65,20 @@ * * @see template_preprocess_node() * + * @ingroup themeable + * * @todo Remove the id attribute (or make it a class), because if that gets * rendered twice on a page this is invalid CSS for example: two lists * in different view modes. */ #} - <article{{ attributes }}> - {{ title_prefix }} - {% if not page %} + {% if label and not page %} <h2{{ title_attributes }}> <a href="{{ url }}" rel="bookmark">{{ label }}</a> </h2> {% endif %} - {{ title_suffix }} - - {% if display_submitted %} - <footer> - {{ author_picture }} - <div{{ author_attributes }}> - {% trans %}Submitted by {{ author_name }} on {{ date }}{% endtrans %} - {{ metadata }} - </div> - </footer> - {% endif %} <div{{ content_attributes }}> {{ content }} diff --git a/web/themes/iop/templates/content/page-title--node--news.html.twig b/web/themes/iop/templates/content/page-title--node--news.html.twig index a8e9cf315962a55220faf9dd960cf0096e904e98..dc783d7173bc52a07c5de61dc44069decf3da6e4 100644 --- a/web/themes/iop/templates/content/page-title--node--news.html.twig +++ b/web/themes/iop/templates/content/page-title--node--news.html.twig @@ -14,6 +14,7 @@ #} {% extends '@iop/content/page-title.html.twig' %} {% block url_more %} + {{ attach_library('iop/call-to-action') }} {% set url_more = url_more|merge({'#attributes': {'class': [ 'call-to-action', 'flex-shrink-0', diff --git a/web/themes/iop/templates/field/field--paragraph-heading.html.twig b/web/themes/iop/templates/field/field--paragraph--call-to-action.html.twig similarity index 67% rename from web/themes/iop/templates/field/field--paragraph-heading.html.twig rename to web/themes/iop/templates/field/field--paragraph--call-to-action.html.twig index 6a595194e213def598859fb2f7f9903823c7050f..cf039f81793204a230e0573b10ecfad7734b822d 100644 --- a/web/themes/iop/templates/field/field--paragraph-heading.html.twig +++ b/web/themes/iop/templates/field/field--paragraph--call-to-action.html.twig @@ -7,7 +7,5 @@ */ #} {% for item in items %} - <h2 class="paragraph__heading"> - {{ item.content }} - </h2> + <a href="{{ item.content['#url'] }}" class="cta">{{ item.content['#title'] }}</a> {% endfor %} diff --git a/web/themes/iop/templates/layout/page.html.twig b/web/themes/iop/templates/layout/page.html.twig index a2c0698a1b34fd1c93148cd38acd1f2752846650..8f88a67db1748d6b6c827bf0a64e80381b154fbf 100644 --- a/web/themes/iop/templates/layout/page.html.twig +++ b/web/themes/iop/templates/layout/page.html.twig @@ -58,6 +58,10 @@ {{ page.header_bottom }} {% endif %} + <div class="container"> + {{ page.messages }} + </div> + {% if page.featured|render|striptags|trim is not empty %} <div class="region-featured{% if page_header %} h-0{% endif %}"> <div class="container"> @@ -75,10 +79,6 @@ </div> {% endif %} - <div class="container"> - {{ page.messages }} - </div> - {% if page.content_top %} <div class="container"> {{ page.content_top }} diff --git a/web/themes/iop/templates/paragraphs/paragraph--1-column-layout.html.twig b/web/themes/iop/templates/paragraphs/paragraph--1-column-layout.html.twig deleted file mode 100644 index 6d38e8c3a851cf2f7c61e4897d47c29d62ae4031..0000000000000000000000000000000000000000 --- a/web/themes/iop/templates/paragraphs/paragraph--1-column-layout.html.twig +++ /dev/null @@ -1,55 +0,0 @@ -{# -/** - * @file - * Template for displaying a 1-column layout. - * - * Available variables: - * - paragraph: Full paragraph entity. - * - id: The paragraph ID. - * - bundle: The type of the paragraph, for example, "image" or "text". - * - authorid: The user ID of the paragraph author. - * - createdtime: Formatted creation date. Preprocess functions can - * reformat it by calling format_date() with the desired parameters on - * $variables['paragraph']->getCreatedTime(). - * - content: All paragraph items. Use {{ content }} to print them all, - * or print a subset such as {{ content.field_example }}. Use - * {{ content|without('field_example') }} to temporarily suppress the printing - * of a given child element. - * - attributes: HTML attributes for the containing element. - * The attributes.class element may contain one or more of the following - * classes: - * - paragraphs: The current template type (also known as a "theming hook"). - * - paragraphs--type-[type]: The current paragraphs type. For example, if the paragraph is an - * "Image" it would result in "paragraphs--type--image". Note that the machine - * name will often be in a short form of the human readable label. - * - paragraphs--view-mode--[view_mode]: The View Mode of the paragraph; for example, a - * preview would result in: "paragraphs--view-mode--preview", and - * default: "paragraphs--view-mode--default". - * - view_mode: View mode; for example, "preview" or "full". - * - logged_in: Flag for authenticated user status. Will be true when the - * current user is a logged-in member. - * - is_admin: Flag for admin user status. Will be true when the current user - * is an administrator. - * - * @see template_preprocess_paragraph() - * - * @ingroup themeable - */ -#} - -{% set classes = [ - 'paragraph', - 'paragraph--1-column-layout', - 'col-12', -] %} - -{# Merges Background field with classes. #} -{% set background_field = content.paragraph_row_theme|render %} -{% if background_field %} - {# @todo: This might not work. Fix it. #} - {% set classes = classes|merge(content.paragraph_row_them['#value']) %} -{% endif %} - -<div{{ attributes.addClass(classes) }}> - {{ content.paragraph_column_center }} -</div> diff --git a/web/themes/iop/templates/paragraphs/paragraph--2-column-featured-left.html.twig b/web/themes/iop/templates/paragraphs/paragraph--2-column-featured-left.html.twig deleted file mode 100644 index 278fcb2ef7be802b8e297731ad2121cdab2b6d69..0000000000000000000000000000000000000000 --- a/web/themes/iop/templates/paragraphs/paragraph--2-column-featured-left.html.twig +++ /dev/null @@ -1,57 +0,0 @@ -{# -/** - * @file - * Template for displaying a 2-column layout. - * - * Available variables: - * - paragraph: Full paragraph entity. - * - id: The paragraph ID. - * - bundle: The type of the paragraph, for example, "image" or "text". - * - authorid: The user ID of the paragraph author. - * - createdtime: Formatted creation date. Preprocess functions can - * reformat it by calling format_date() with the desired parameters on - * $variables['paragraph']->getCreatedTime(). - * - content: All paragraph items. Use {{ content }} to print them all, - * or print a subset such as {{ content.field_example }}. Use - * {{ content|without('field_example') }} to temporarily suppress the printing - * of a given child element. - * - attributes: HTML attributes for the containing element. - * The attributes.class element may contain one or more of the following - * classes: - * - paragraphs: The current template type (also known as a "theming hook"). - * - paragraphs--type-[type]: The current paragraphs type. For example, if the paragraph is an - * "Image" it would result in "paragraphs--type--image". Note that the machine - * name will often be in a short form of the human readable label. - * - paragraphs--view-mode--[view_mode]: The View Mode of the paragraph; for example, a - * preview would result in: "paragraphs--view-mode--preview", and - * default: "paragraphs--view-mode--default". - * - view_mode: View mode; for example, "preview" or "full". - * - logged_in: Flag for authenticated user status. Will be true when the - * current user is a logged-in member. - * - is_admin: Flag for admin user status. Will be true when the current user - * is an administrator. - * - paragraph_heading: Special-case heading inteded to be displayed - * on different places depending on the device width. - * - * @see template_preprocess_paragraph() - * - * @ingroup themeable - */ -#} - -{{ attach_library('iop/paragraph--2-column-featured-left') }} - -{% set classes = [ - 'paragraph', - 'paragraph--2-column-featured-left', - 'col-12', - 'col-md-6' -] %} -<span class="d-md-none mb-4">{{ content.paragraph_heading }}</span> -<div {{ attributes.addClass(classes) }}> - {{ content.paragraph_2cf_media }} -</div> -<div {{ attributes.addClass(classes) }}> - <span class="d-none d-md-block mb-4">{{ content.paragraph_heading }}</span> - {{ content.field_paragraphs_item_content }} -</div> diff --git a/web/themes/iop/templates/paragraphs/paragraph--2-column-featured-right.html.twig b/web/themes/iop/templates/paragraphs/paragraph--2-column-featured-right.html.twig deleted file mode 100644 index 303d64963cea6b15e067802dd9115004909fa78f..0000000000000000000000000000000000000000 --- a/web/themes/iop/templates/paragraphs/paragraph--2-column-featured-right.html.twig +++ /dev/null @@ -1,54 +0,0 @@ -{# -/** - * @file - * Template for displaying a 2-column layout. - * - * Available variables: - * - paragraph: Full paragraph entity. - * - id: The paragraph ID. - * - bundle: The type of the paragraph, for example, "image" or "text". - * - authorid: The user ID of the paragraph author. - * - createdtime: Formatted creation date. Preprocess functions can - * reformat it by calling format_date() with the desired parameters on - * $variables['paragraph']->getCreatedTime(). - * - content: All paragraph items. Use {{ content }} to print them all, - * or print a subset such as {{ content.field_example }}. Use - * {{ content|without('field_example') }} to temporarily suppress the printing - * of a given child element. - * - attributes: HTML attributes for the containing element. - * The attributes.class element may contain one or more of the following - * classes: - * - paragraphs: The current template type (also known as a "theming hook"). - * - paragraphs--type-[type]: The current paragraphs type. For example, if the paragraph is an - * "Image" it would result in "paragraphs--type--image". Note that the machine - * name will often be in a short form of the human readable label. - * - paragraphs--view-mode--[view_mode]: The View Mode of the paragraph; for example, a - * preview would result in: "paragraphs--view-mode--preview", and - * default: "paragraphs--view-mode--default". - * - view_mode: View mode; for example, "preview" or "full". - * - logged_in: Flag for authenticated user status. Will be true when the - * current user is a logged-in member. - * - is_admin: Flag for admin user status. Will be true when the current user - * is an administrator. - * - * @see template_preprocess_paragraph() - * - * @ingroup themeable - */ -#} - -{{ attach_library('iop/paragraph--2-column-featured-right') }} - -{% set classes = [ - 'paragraph', - 'paragraph--2-column-featured-right', - 'col-12', - 'col-md-6' -] %} - -<div {{ attributes.addClass(classes) }}> - {{ content.field_paragraphs_item_content }} -</div> -<div {{ attributes.addClass(classes) }}> - {{ content.paragraph_2cf_media }} -</div> diff --git a/web/themes/iop/templates/paragraphs/paragraph--2-column-layout.html.twig b/web/themes/iop/templates/paragraphs/paragraph--2-column-layout.html.twig deleted file mode 100644 index 14acc57e56925c7016212fa97b741f2ffa9778f1..0000000000000000000000000000000000000000 --- a/web/themes/iop/templates/paragraphs/paragraph--2-column-layout.html.twig +++ /dev/null @@ -1,52 +0,0 @@ -{# -/** - * @file - * Template for displaying a 2-column layout. - * - * Available variables: - * - paragraph: Full paragraph entity. - * - id: The paragraph ID. - * - bundle: The type of the paragraph, for example, "image" or "text". - * - authorid: The user ID of the paragraph author. - * - createdtime: Formatted creation date. Preprocess functions can - * reformat it by calling format_date() with the desired parameters on - * $variables['paragraph']->getCreatedTime(). - * - content: All paragraph items. Use {{ content }} to print them all, - * or print a subset such as {{ content.field_example }}. Use - * {{ content|without('field_example') }} to temporarily suppress the printing - * of a given child element. - * - attributes: HTML attributes for the containing element. - * The attributes.class element may contain one or more of the following - * classes: - * - paragraphs: The current template type (also known as a "theming hook"). - * - paragraphs--type-[type]: The current paragraphs type. For example, if the paragraph is an - * "Image" it would result in "paragraphs--type--image". Note that the machine - * name will often be in a short form of the human readable label. - * - paragraphs--view-mode--[view_mode]: The View Mode of the paragraph; for example, a - * preview would result in: "paragraphs--view-mode--preview", and - * default: "paragraphs--view-mode--default". - * - view_mode: View mode; for example, "preview" or "full". - * - logged_in: Flag for authenticated user status. Will be true when the - * current user is a logged-in member. - * - is_admin: Flag for admin user status. Will be true when the current user - * is an administrator. - * - * @see template_preprocess_paragraph() - * - * @ingroup themeable - */ -#} - -{% set classes = [ - 'paragraph', - 'paragraph--2-column-layout', - 'col-12', - 'col-md-6' -] %} - -<div {{ attributes.addClass(classes) }}> - {{ content.paragraph_column_left }} -</div> -<div {{ attributes.addClass(classes) }}> - {{ content.paragraph_column_right }} -</div> diff --git a/web/themes/iop/templates/paragraphs/paragraph--3-column-layout.html.twig b/web/themes/iop/templates/paragraphs/paragraph--3-column-layout.html.twig deleted file mode 100644 index 7561a6172d0a34204127872fd54aed544aaaea56..0000000000000000000000000000000000000000 --- a/web/themes/iop/templates/paragraphs/paragraph--3-column-layout.html.twig +++ /dev/null @@ -1,56 +0,0 @@ -{# -/** - * @file - * Template for displaying a 3-column layout. - * - * Available variables: - * - paragraph: Full paragraph entity. - * - id: The paragraph ID. - * - bundle: The type of the paragraph, for example, "image" or "text". - * - authorid: The user ID of the paragraph author. - * - createdtime: Formatted creation date. Preprocess functions can - * reformat it by calling format_date() with the desired parameters on - * $variables['paragraph']->getCreatedTime(). - * - content: All paragraph items. Use {{ content }} to print them all, - * or print a subset such as {{ content.field_example }}. Use - * {{ content|without('field_example') }} to temporarily suppress the printing - * of a given child element. - * - attributes: HTML attributes for the containing element. - * The attributes.class element may contain one or more of the following - * classes: - * - paragraphs: The current template type (also known as a "theming hook"). - * - paragraphs--type-[type]: The current paragraphs type. For example, if the paragraph is an - * "Image" it would result in "paragraphs--type--image". Note that the machine - * name will often be in a short form of the human readable label. - * - paragraphs--view-mode--[view_mode]: The View Mode of the paragraph; for example, a - * preview would result in: "paragraphs--view-mode--preview", and - * default: "paragraphs--view-mode--default". - * - view_mode: View mode; for example, "preview" or "full". - * - logged_in: Flag for authenticated user status. Will be true when the - * current user is a logged-in member. - * - is_admin: Flag for admin user status. Will be true when the current user - * is an administrator. - * - * @see template_preprocess_paragraph() - * - * @ingroup themeable - */ -#} - -{% set classes = [ - 'paragraph', - 'paragraph--3-column-layout', - 'col-12', - 'col-md-4', -] %} - -{# @todo: No classes are added from above so that the HTML is clean. #} -<div {{ attributes.addClass(classes) }}> - {{ content.paragraph_column_left }} -</div> -<div {{ attributes.addClass(classes) }}> - {{ content.paragraph_column_center }} -</div> -<div {{ attributes.addClass(classes) }}> - {{ content.paragraph_column_right }} -</div> diff --git a/web/themes/iop/templates/paragraphs/paragraph--carousel.html.twig b/web/themes/iop/templates/paragraphs/paragraph--carousel.html.twig index d1b5bcadc300484409423765b277189403ee6074..a7fa9b0e2134114a3f5171fca7392b8b888b85a1 100644 --- a/web/themes/iop/templates/paragraphs/paragraph--carousel.html.twig +++ b/web/themes/iop/templates/paragraphs/paragraph--carousel.html.twig @@ -37,7 +37,7 @@ */ #} -{{ attach_library('iop/paragraph--carousel') }} +{{ attach_library('iop/paragraph__carousel') }} {% set classes = [ 'paragraph', @@ -46,7 +46,9 @@ <div{{ attributes.addClass(classes) }}> {% if content.paragraph_heading|render|striptags|trim is not empty %} - {{ content.paragraph_heading }} + <div class="paragraph__heading"> + {{ content.paragraph_heading }} + </div> {% endif %} {% if content.paragraph_carousel_action|render|striptags|trim is not empty %} diff --git a/web/themes/iop/templates/paragraphs/paragraph--row.html.twig b/web/themes/iop/templates/paragraphs/paragraph--row.html.twig deleted file mode 100644 index f70439631dd686c4c330d79d7ab8cbfd7fd60965..0000000000000000000000000000000000000000 --- a/web/themes/iop/templates/paragraphs/paragraph--row.html.twig +++ /dev/null @@ -1,54 +0,0 @@ -{# -/** - * @file - * Template for displaying a row. - * - * Available variables: - * - paragraph: Full paragraph entity. - * - id: The paragraph ID. - * - bundle: The type of the paragraph, for example, "image" or "text". - * - authorid: The user ID of the paragraph author. - * - createdtime: Formatted creation date. Preprocess functions can - * reformat it by calling format_date() with the desired parameters on - * $variables['paragraph']->getCreatedTime(). - * - content: All paragraph items. Use {{ content }} to print them all, - * or print a subset such as {{ content.field_example }}. Use - * {{ content|without('field_example') }} to temporarily suppress the printing - * of a given child element. - * - attributes: HTML attributes for the containing element. - * The attributes.class element may contain one or more of the following - * classes: - * - paragraphs: The current template type (also known as a "theming hook"). - * - paragraphs--type-[type]: The current paragraphs type. For example, if the paragraph is an - * "Image" it would result in "paragraphs--type--image". Note that the machine - * name will often be in a short form of the human readable label. - * - paragraphs--view-mode--[view_mode]: The View Mode of the paragraph; for example, a - * preview would result in: "paragraphs--view-mode--preview", and - * default: "paragraphs--view-mode--default". - * - view_mode: View mode; for example, "preview" or "full". - * - logged_in: Flag for authenticated user status. Will be true when the - * current user is a logged-in member. - * - is_admin: Flag for admin user status. Will be true when the current user - * is an administrator. - * - row_theme: The theme class to add to the classes. - * - row_background: The absolute URL to the background image. - * - * @see template_preprocess_paragraph() - * @see @iop_preprocess_paragraph__row() - * - * @ingroup themeable - */ -#} - -{{ attach_library('iop/paragraph--row') }} - -{% set classes = [ - 'paragraph', - 'paragraph--' ~ paragraph.bundle|clean_class, - row_theme ? 'paragraph--' ~ row_theme, - 'row', -] %} - -<div{{ attributes.addClass(classes) }}> - {{ content }} -</div> diff --git a/web/themes/iop/templates/paragraphs/paragraph--testimony.html.twig b/web/themes/iop/templates/paragraphs/paragraph--testimony.html.twig index a2af9f3d87b0274abf6e8d030fe5c963a8fc17bb..d945608dbbc3425be761fabee3414f796d6b2903 100644 --- a/web/themes/iop/templates/paragraphs/paragraph--testimony.html.twig +++ b/web/themes/iop/templates/paragraphs/paragraph--testimony.html.twig @@ -37,29 +37,29 @@ */ #} -{{ attach_library('iop/paragraph--testimony') }} - {% set classes = [ 'paragraph', 'paragraph--' ~ paragraph.bundle|clean_class, ] %} -<blockquote {{ attributes.addClass(classes) }}> - <div class="testimony__quote"> - {{ content.paragraph_testimony_text }} - </div> - <figure class="testimony__fig"> - <div class="testimony__img"> - {{ content.paragraph_testimony_image }} +<div {{ attributes.addClass(classes) }}> + <blockquote{% if content.paragraph_testimony_source|render|striptags|trim is not empty %} cite="{{ content.paragraph_testimony_source }}"{% endif %}> + <div class="testimony__quote"> + {{ content.paragraph_testimony_text }} </div> - <figcaption class="testimony__figcaption"> - <p class="testimony__author"><strong>{{ content.paragraph_testimony_author }}</strong></p> - {% if content.paragraph_testimony_bio|render|striptags|trim is not empty %} - <p class="testimony__bio">{{ content.paragraph_testimony_bio }}</p> - {% endif %} - {% if content.paragraph_testimony_source|render|striptags|trim is not empty %} - <cite class="testimony__cite">{{ content.paragraph_testimony_source }}</cite> - {% endif %} - </figcaption> - </figure> -</blockquote> + <figure class="testimony__fig"> + <div class="testimony__img"> + {{ content.paragraph_testimony_image }} + </div> + <figcaption class="testimony__figcaption"> + <p class="testimony__author"><strong>{{ content.paragraph_testimony_author }}</strong></p> + {% if content.paragraph_testimony_bio|render|striptags|trim is not empty %} + <p class="testimony__bio">{{ content.paragraph_testimony_bio }}</p> + {% endif %} + {% if content.paragraph_testimony_source|render|striptags|trim is not empty %} + <cite class="testimony__cite">{{ content.paragraph_testimony_source }}</cite> + {% endif %} + </figcaption> + </figure> + </blockquote> +</div> diff --git a/web/themes/iop/templates/paragraphs/paragraph--video.html.twig b/web/themes/iop/templates/paragraphs/paragraph--video.html.twig deleted file mode 100644 index 9bfe3103adc06e8749998bb12b316b478f021e0c..0000000000000000000000000000000000000000 --- a/web/themes/iop/templates/paragraphs/paragraph--video.html.twig +++ /dev/null @@ -1,56 +0,0 @@ -{# -/** - * @file - * Default theme implementation to display a paragraph. - * - * Available variables: - * - paragraph: Full paragraph entity. - * Only method names starting with "get", "has", or "is" and a few common - * methods such as "id", "label", and "bundle" are available. For example: - * - paragraph.getCreatedTime() will return the paragraph creation timestamp. - * - paragraph.id(): The paragraph ID. - * - paragraph.bundle(): The type of the paragraph, for example, "image" or "text". - * - paragraph.getOwnerId(): The user ID of the paragraph author. - * See Drupal\paragraphs\Entity\Paragraph for a full list of public properties - * and methods for the paragraph object. - * - content: All paragraph items. Use {{ content }} to print them all, - * or print a subset such as {{ content.field_example }}. Use - * {{ content|without('field_example') }} to temporarily suppress the printing - * of a given child element. - * - attributes: HTML attributes for the containing element. - * The attributes.class element may contain one or more of the following - * classes: - * - paragraphs: The current template type (also known as a "theming hook"). - * - paragraphs--type-[type]: The current paragraphs type. For example, if the paragraph is an - * "Image" it would result in "paragraphs--type--image". Note that the machine - * name will often be in a short form of the human readable label. - * - paragraphs--view-mode--[view_mode]: The View Mode of the paragraph; for example, a - * preview would result in: "paragraphs--view-mode--preview", and - * default: "paragraphs--view-mode--default". - * - view_mode: View mode; for example, "preview" or "full". - * - logged_in: Flag for authenticated user status. Will be true when the - * current user is a logged-in member. - * - is_admin: Flag for admin user status. Will be true when the current user - * is an administrator. - * - * @see template_preprocess_paragraph() - * - * @ingroup themeable - */ -#} - -{{ attach_library('iop/paragraph--video') }} - -{% - set classes = [ - 'paragraph', - 'paragraph--video', - ] -%} -{% block paragraph %} - <div{{ attributes.addClass(classes) }}> - {% block content %} - {{ content }} - {% endblock %} - </div> -{% endblock paragraph %} diff --git a/web/themes/iop/templates/rdf_entity/rdf-entity--carousel.html.twig b/web/themes/iop/templates/rdf_entity/rdf-entity--carousel.html.twig index 5576b9e5b0365fabe02e42d2ac8d3553561efd10..27dc039ae4eee4064ae75151bb3a9afcad3b4269 100644 --- a/web/themes/iop/templates/rdf_entity/rdf-entity--carousel.html.twig +++ b/web/themes/iop/templates/rdf_entity/rdf-entity--carousel.html.twig @@ -8,46 +8,13 @@ */ #} -{% - set classes = [ - node.bundle|clean_class, - node.bundle|clean_class ~ '--' ~ view_mode|clean_class, - 'glide__slide', - 'slide', -] -%} -{% - set title_classes = [ - 'h6', - 'text-center', - 'slide__title', -] -%} -{% if rdf_entity.bundle is same as 'collection' %} - {% set icon = 'folder2-open' %} -{% else %} - {% set icon = 'clipboard2-check' %} -{% endif %} -<article{{ attributes.addClass(classes) }}> - {{ title_prefix }} - {{ title_suffix }} - - {% block content %} - <a href="{{ url }}" rel="bookmark" title="{{ 'Read'|t }}: {{ label|render|striptags|trim }}" tabindex="-1"> - {% if image %} - <figure class="slide__figure"> - {{ image }} - </figure> - {% else %} - <figure class="slide__figure"> - <svg class="slide__svg"> - <use xlink:href="{{ bcl_icon_path }}#{{ icon }}"></use> - </svg> - </figure> - {% endif %} - </a> - <h1{{ title_attributes.addClass(title_classes) }}> - <a class="slide__title-link" href="{{ url }}" rel="bookmark">{{ label }}</a> - </h1> - {% endblock %} -</article> +{% include '@iop/carousel/carousel-item.html.twig' with { + attributes, + url, + title_prefix, + title_suffix, + label, + title_attributes, + image, + icon: rdf_entity.bundle is same as 'collection' ? 'folder2-open' : 'clipboard2-check', +} only %} diff --git a/web/themes/ventuno/assets/css/abstract.min.css b/web/themes/ventuno/assets/css/abstract.min.css index 7b27f632c01c433686b682dac0cb8792cfc1ae63..8f2b6ac78383b719cd7e70cc4fc5b7a5ede1d929 100644 --- a/web/themes/ventuno/assets/css/abstract.min.css +++ b/web/themes/ventuno/assets/css/abstract.min.css @@ -1,2 +1,2 @@ -.abstract .read-more{border:none;border-radius:0;color:#0b4e97;margin-top:1rem;padding:0}.abstract .read-more,.abstract .read-more:hover{background-color:transparent;box-shadow:none} +.abstract .btn.read-more{border:none;border-radius:0;color:#0b4e97;margin-top:1rem;padding:0}.abstract .btn.read-more,.abstract .btn.read-more:hover{background-color:transparent;box-shadow:none} /*# sourceMappingURL=abstract.min.css.map */ \ No newline at end of file diff --git a/web/themes/ventuno/assets/css/base.min.css b/web/themes/ventuno/assets/css/base.min.css index cdbdf4d9f4f91c50af233d245baeb9556f7346bb..b46e216515314a4b0e6c92fb5b9a55bf5f2c199c 100644 --- a/web/themes/ventuno/assets/css/base.min.css +++ b/web/themes/ventuno/assets/css/base.min.css @@ -1,2 +1,2 @@ -*,:after,:before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0);background-color:var(--bs-body-bg);color:var(--bs-body-color);font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);margin:0;text-align:var(--bs-body-text-align)}hr{border:0;border-top:1px solid;color:inherit;margin:1rem 0;opacity:.25}h1,h2,h3,h4,h5,h6{color:#143b76;font-weight:400;line-height:1.2;margin-bottom:.5rem;margin-top:0}h1{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){h1{font-size:2rem}}h2{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){h2{font-size:1.5rem}}h3{font-size:1.25rem}h4,h5,h6{font-size:1rem}p{margin-bottom:1rem;margin-top:0}abbr[title]{cursor:help;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{font-style:normal;line-height:inherit;margin-bottom:1rem}ol,ul{padding-left:2rem}dl,ol,ul{margin-bottom:1rem;margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:.875em}mark{background-color:var(--bs-highlight-bg);padding:.1875em}sub,sup{font-size:.75em;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:var(--bs-link-color);text-decoration:none}a:hover{color:var(--bs-link-hover-color);text-decoration:underline}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;font-size:.875em;margin-bottom:1rem;margin-top:0;overflow:auto}pre code{color:inherit;font-size:inherit;word-break:normal}code{word-wrap:break-word;color:var(--bs-code-color);font-size:.875em}a>code{color:inherit}kbd{background-color:var(--bs-body-color);border-radius:.25rem;color:var(--bs-body-bg);font-size:.875em;padding:.1875rem .375rem}kbd kbd{font-size:1em;padding:0}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{border-collapse:collapse;caption-side:bottom}caption{color:#495057;padding-bottom:.5rem;padding-top:.5rem;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border:0 solid;border-color:inherit}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit;margin:0}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{border-style:none;padding:0}textarea{resize:vertical}fieldset{border:0;margin:0;min-width:0;padding:0}legend{float:left;font-size:calc(1.275rem + .3vw);line-height:inherit;margin-bottom:.5rem;padding:0;width:100%}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{-webkit-appearance:button;font:inherit}output{display:inline-block}iframe{border:0}summary{cursor:pointer;display:list-item}progress{vertical-align:baseline}[hidden]{display:none!important}body{overflow-x:hidden}em.placeholder{background-color:transparent;cursor:auto;display:inline;min-height:0;opacity:1;vertical-align:baseline} +*,:after,:before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0);background-color:var(--bs-body-bg);color:var(--bs-body-color);font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);margin:0;text-align:var(--bs-body-text-align)}hr{border:0;border-top:1px solid;color:inherit;margin:1rem 0;opacity:.25}h1,h2,h3,h4,h5,h6{color:#143b76;font-weight:400;line-height:1.2;margin-bottom:.5rem;margin-top:0}h1{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){h1{font-size:2rem}}h2{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){h2{font-size:1.5rem}}h3{font-size:1.25rem}h4{font-size:1.125rem}h5,h6{font-size:1rem}p{margin-bottom:1rem;margin-top:0}abbr[title]{cursor:help;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{font-style:normal;line-height:inherit;margin-bottom:1rem}ol,ul{padding-left:2rem}dl,ol,ul{margin-bottom:1rem;margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:.875em}mark{background-color:var(--bs-highlight-bg);padding:.1875em}sub,sup{font-size:.75em;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:var(--bs-link-color);text-decoration:none}a:hover{color:var(--bs-link-hover-color);text-decoration:underline}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;font-size:.875em;margin-bottom:1rem;margin-top:0;overflow:auto}pre code{color:inherit;font-size:inherit;word-break:normal}code{word-wrap:break-word;color:var(--bs-code-color);font-size:.875em}a>code{color:inherit}kbd{background-color:var(--bs-body-color);border-radius:.25rem;color:var(--bs-body-bg);font-size:.875em;padding:.1875rem .375rem}kbd kbd{font-size:1em;padding:0}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{border-collapse:collapse;caption-side:bottom}caption{color:#495057;padding-bottom:.5rem;padding-top:.5rem;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border:0 solid;border-color:inherit}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit;margin:0}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{border-style:none;padding:0}textarea{resize:vertical}fieldset{border:0;margin:0;min-width:0;padding:0}legend{float:left;font-size:calc(1.275rem + .3vw);line-height:inherit;margin-bottom:.5rem;padding:0;width:100%}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{-webkit-appearance:button;font:inherit}output{display:inline-block}iframe{border:0}summary{cursor:pointer;display:list-item}progress{vertical-align:baseline}[hidden]{display:none!important}body{overflow-x:hidden}em.placeholder{background-color:transparent;cursor:auto;display:inline;min-height:0;opacity:1;vertical-align:baseline} /*# sourceMappingURL=base.min.css.map */ \ No newline at end of file diff --git a/web/themes/ventuno/assets/css/components.min.css b/web/themes/ventuno/assets/css/components.min.css index 9d5aa2a6897071d2ab3f30029ccda70ad83b60a0..f144b9f7308ff8bb954de1da7ef5ad9195b79665 100644 --- a/web/themes/ventuno/assets/css/components.min.css +++ b/web/themes/ventuno/assets/css/components.min.css @@ -1,2 +1,2 @@ -.btn{--bs-btn-padding-x:1.6rem;--bs-btn-padding-y:0.4rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:#242626;--bs-btn-bg:transparent;--bs-btn-border-width:1px;--bs-btn-border-color:transparent;--bs-btn-border-radius:0.4rem;--bs-btn-hover-border-color:transparent;--bs-btn-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.15),0 1px 1px rgba(0,0,0,.075);--bs-btn-disabled-opacity:0.5;--bs-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb),.5);background-color:var(--bs-btn-bg);border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);box-shadow:var(--bs-btn-box-shadow);color:var(--bs-btn-color);cursor:pointer;display:inline-block;font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);text-align:center;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);color:var(--bs-btn-hover-color);text-decoration:none}.btn-check+.btn:hover{background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);color:var(--bs-btn-color)}.btn:focus-visible{background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);box-shadow:var(--bs-btn-box-shadow),var(--bs-btn-focus-box-shadow);color:var(--bs-btn-hover-color);outline:0}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);box-shadow:var(--bs-btn-box-shadow),var(--bs-btn-focus-box-shadow);outline:0}.btn-check:checked+.btn,.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color);box-shadow:var(--bs-btn-active-shadow);color:var(--bs-btn-active-color)}.btn-check:checked+.btn:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-active-shadow),var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);box-shadow:none;color:var(--bs-btn-disabled-color);opacity:var(--bs-btn-disabled-opacity);pointer-events:none}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#143b76;--bs-btn-border-color:#143b76;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#12356a;--bs-btn-hover-border-color:#102f5e;--bs-btn-focus-shadow-rgb:55,88,139;--bs-btn-active-color:#fff;--bs-btn-active-bg:#102f5e;--bs-btn-active-border-color:#0f2c59;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#143b76;--bs-btn-disabled-border-color:#143b76}.btn-secondary{--bs-btn-color:#000;--bs-btn-bg:#e7f1fb;--bs-btn-border-color:#e7f1fb;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#e9f2fb;--bs-btn-hover-border-color:#e9f2fb;--bs-btn-focus-shadow-rgb:196,205,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#ecf4fc;--bs-btn-active-border-color:#e9f2fb;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#e7f1fb;--bs-btn-disabled-border-color:#e7f1fb}.btn-success{--bs-btn-color:#000;--bs-btn-bg:#18bf80;--bs-btn-border-color:#18bf80;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#2fc58d;--bs-btn-hover-border-color:#2fc58d;--bs-btn-focus-shadow-rgb:20,162,109;--bs-btn-active-color:#000;--bs-btn-active-bg:#46cc99;--bs-btn-active-border-color:#2fc58d;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#18bf80;--bs-btn-disabled-border-color:#18bf80}.btn-info{--bs-btn-color:#fff;--bs-btn-bg:#0d768b;--bs-btn-border-color:#0d768b;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0c6a7d;--bs-btn-hover-border-color:#0a5e6f;--bs-btn-focus-shadow-rgb:49,139,156;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a5e6f;--bs-btn-active-border-color:#0a5968;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d768b;--bs-btn-disabled-border-color:#0d768b}.btn-warning{--bs-btn-color:#000;--bs-btn-bg:#eba843;--bs-btn-border-color:#eba843;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#edb156;--bs-btn-hover-border-color:#edb156;--bs-btn-focus-shadow-rgb:200,143,57;--bs-btn-active-color:#000;--bs-btn-active-bg:#efb969;--bs-btn-active-border-color:#edb156;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#eba843;--bs-btn-disabled-border-color:#eba843}.btn-danger{--bs-btn-color:#000;--bs-btn-bg:#eb3434;--bs-btn-border-color:#eb3434;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ed4848;--bs-btn-hover-border-color:#ed4848;--bs-btn-focus-shadow-rgb:200,44,44;--bs-btn-active-color:#000;--bs-btn-active-bg:#ef5d5d;--bs-btn-active-border-color:#ed4848;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#eb3434;--bs-btn-disabled-border-color:#eb3434}.btn-light{--bs-btn-color:#000;--bs-btn-bg:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#dfe0e1;--bs-btn-hover-border-color:#c6c7c8;--bs-btn-focus-shadow-rgb:211,212,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#c6c7c8;--bs-btn-active-border-color:#babbbc;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#f8f9fa;--bs-btn-disabled-border-color:#f8f9fa}.btn-dark{--bs-btn-color:#fff;--bs-btn-bg:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#373b3e;--bs-btn-hover-border-color:#373b3e;--bs-btn-focus-shadow-rgb:66,70,73;--bs-btn-active-color:#fff;--bs-btn-active-bg:#4d5154;--bs-btn-active-border-color:#373b3e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#212529;--bs-btn-disabled-border-color:#212529}.btn-brand{--bs-btn-color:#fff;--bs-btn-bg:#1073de;--bs-btn-border-color:#1073de;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0e68c8;--bs-btn-hover-border-color:#0d5cb2;--bs-btn-focus-shadow-rgb:52,136,227;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d5cb2;--bs-btn-active-border-color:#0c56a7;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#1073de;--bs-btn-disabled-border-color:#1073de}.btn-outline-primary{--bs-btn-color:#143b76;--bs-btn-border-color:#143b76;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#143b76;--bs-btn-hover-border-color:#143b76;--bs-btn-focus-shadow-rgb:20,59,118;--bs-btn-active-color:#fff;--bs-btn-active-bg:#143b76;--bs-btn-active-border-color:#143b76;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#143b76;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#143b76;--bs-gradient:none}.btn-outline-secondary{--bs-btn-color:#e7f1fb;--bs-btn-border-color:#e7f1fb;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#e7f1fb;--bs-btn-hover-border-color:#e7f1fb;--bs-btn-focus-shadow-rgb:231,241,251;--bs-btn-active-color:#000;--bs-btn-active-bg:#e7f1fb;--bs-btn-active-border-color:#e7f1fb;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#e7f1fb;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#e7f1fb;--bs-gradient:none}.btn-outline-success{--bs-btn-color:#18bf80;--bs-btn-border-color:#18bf80;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#18bf80;--bs-btn-hover-border-color:#18bf80;--bs-btn-focus-shadow-rgb:24,191,128;--bs-btn-active-color:#000;--bs-btn-active-bg:#18bf80;--bs-btn-active-border-color:#18bf80;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#18bf80;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#18bf80;--bs-gradient:none}.btn-outline-info{--bs-btn-color:#0d768b;--bs-btn-border-color:#0d768b;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d768b;--bs-btn-hover-border-color:#0d768b;--bs-btn-focus-shadow-rgb:13,118,139;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d768b;--bs-btn-active-border-color:#0d768b;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#0d768b;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d768b;--bs-gradient:none}.btn-outline-warning{--bs-btn-color:#eba843;--bs-btn-border-color:#eba843;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#eba843;--bs-btn-hover-border-color:#eba843;--bs-btn-focus-shadow-rgb:235,168,67;--bs-btn-active-color:#000;--bs-btn-active-bg:#eba843;--bs-btn-active-border-color:#eba843;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#eba843;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#eba843;--bs-gradient:none}.btn-outline-danger{--bs-btn-color:#eb3434;--bs-btn-border-color:#eb3434;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#eb3434;--bs-btn-hover-border-color:#eb3434;--bs-btn-focus-shadow-rgb:235,52,52;--bs-btn-active-color:#000;--bs-btn-active-bg:#eb3434;--bs-btn-active-border-color:#eb3434;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#eb3434;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#eb3434;--bs-gradient:none}.btn-outline-light{--bs-btn-color:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#f8f9fa;--bs-btn-hover-border-color:#f8f9fa;--bs-btn-focus-shadow-rgb:248,249,250;--bs-btn-active-color:#000;--bs-btn-active-bg:#f8f9fa;--bs-btn-active-border-color:#f8f9fa;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#f8f9fa;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#f8f9fa;--bs-gradient:none}.btn-outline-dark{--bs-btn-color:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#212529;--bs-btn-hover-border-color:#212529;--bs-btn-focus-shadow-rgb:33,37,41;--bs-btn-active-color:#fff;--bs-btn-active-bg:#212529;--bs-btn-active-border-color:#212529;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#212529;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#212529;--bs-gradient:none}.btn-outline-brand{--bs-btn-color:#1073de;--bs-btn-border-color:#1073de;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#1073de;--bs-btn-hover-border-color:#1073de;--bs-btn-focus-shadow-rgb:16,115,222;--bs-btn-active-color:#fff;--bs-btn-active-bg:#1073de;--bs-btn-active-border-color:#1073de;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#1073de;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#1073de;--bs-gradient:none}.btn-link{--bs-btn-font-weight:400;--bs-btn-color:#1073de;--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6d7173;--bs-btn-disabled-border-color:transparent;--bs-btn-box-shadow:none;--bs-btn-focus-shadow-rgb:55,88,139;text-decoration:none}.btn-link:focus-visible,.btn-link:hover{text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg{--bs-btn-padding-y:0.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:0.5rem}.btn-sm{--bs-btn-padding-y:0.25rem;--bs-btn-padding-x:0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius:0.25rem}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-menu{--bs-dropdown-zindex:40;--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:0.5rem;--bs-dropdown-spacer:0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:#242626;--bs-dropdown-bg:#fff;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:0.375rem;--bs-dropdown-border-width:1px;--bs-dropdown-inner-border-radius:calc(0.375rem - 1px);--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:0.5rem;--bs-dropdown-box-shadow:0 0.5rem 1rem rgba(0,0,0,.15);--bs-dropdown-link-color:#242626;--bs-dropdown-link-hover-color:#202222;--bs-dropdown-link-hover-bg:#f5f6f7;--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#143b76;--bs-dropdown-link-disabled-color:#858a8c;--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:0.25rem;--bs-dropdown-header-color:#6d7173;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:0.5rem;background-clip:padding-box;background-color:var(--bs-dropdown-bg);border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius);box-shadow:var(--bs-dropdown-box-shadow);color:var(--bs-dropdown-color);display:none;font-size:var(--bs-dropdown-font-size);list-style:none;margin:0;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);position:absolute;text-align:left;z-index:var(--bs-dropdown-zindex)}.dropdown-menu[data-bs-popper]{left:0;margin-top:var(--bs-dropdown-spacer);top:100%}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{left:auto;right:0}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{left:auto;right:0}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{left:auto;right:0}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{left:auto;right:0}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{left:auto;right:0}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{left:auto;right:0}}.dropup .dropdown-menu[data-bs-popper]{bottom:100%;margin-bottom:var(--bs-dropdown-spacer);margin-top:0;top:auto}.dropend .dropdown-menu[data-bs-popper]{left:100%;margin-left:var(--bs-dropdown-spacer);margin-top:0;right:auto;top:0}.dropend .dropdown-toggle:after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{left:auto;margin-right:var(--bs-dropdown-spacer);margin-top:0;right:100%;top:0}.dropstart .dropdown-toggle:before{vertical-align:0}.dropdown-divider{border-top:1px solid var(--bs-dropdown-divider-bg);height:0;margin:var(--bs-dropdown-divider-margin-y) 0;opacity:1;overflow:hidden}.dropdown-item{background-color:transparent;border:0;clear:both;color:var(--bs-dropdown-link-color);display:block;font-weight:400;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);text-align:inherit;white-space:nowrap;width:100%}.dropdown-item:focus,.dropdown-item:hover{background-color:var(--bs-dropdown-link-hover-bg);color:var(--bs-dropdown-link-hover-color);text-decoration:none}.dropdown-item.active,.dropdown-item:active{background-color:var(--bs-dropdown-link-active-bg);color:var(--bs-dropdown-link-active-color);text-decoration:none}.dropdown-item.disabled,.dropdown-item:disabled{background-color:transparent;color:var(--bs-dropdown-link-disabled-color);pointer-events:none}.dropdown-menu.show{display:block}.dropdown-header{color:var(--bs-dropdown-header-color);display:block;font-size:.875rem;margin-bottom:0;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);white-space:nowrap}.dropdown-item-text{color:var(--bs-dropdown-link-color);display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x)}.dropdown-menu-dark{--bs-dropdown-color:#dadee0;--bs-dropdown-bg:#3d3f40;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color:#dadee0;--bs-dropdown-link-hover-color:#fff;--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg:hsla(0,0%,100%,.15);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#143b76;--bs-dropdown-link-disabled-color:#858a8c;--bs-dropdown-header-color:#858a8c}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:#6d7173;display:flex;flex-wrap:wrap;list-style:none;margin-bottom:0;padding-left:0}.nav-link{color:var(--bs-nav-link-color);display:block;font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color);text-decoration:none}.nav-link.disabled{color:var(--bs-nav-link-disabled-color);cursor:default;pointer-events:none}.nav-tabs{--bs-nav-tabs-border-width:1px;--bs-nav-tabs-border-color:#dadee0;--bs-nav-tabs-border-radius:0.375rem;--bs-nav-tabs-link-hover-border-color:#f5f6f7 #f5f6f7 #dadee0;--bs-nav-tabs-link-active-color:#555859;--bs-nav-tabs-link-active-bg:#fff;--bs-nav-tabs-link-active-border-color:#dadee0 #dadee0 #fff;border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{background:none;border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius);margin-bottom:calc(var(--bs-nav-tabs-border-width)*-1)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:var(--bs-nav-tabs-link-hover-border-color);isolation:isolate}.nav-tabs .nav-link.disabled,.nav-tabs .nav-link:disabled{background-color:transparent;border-color:transparent;color:var(--bs-nav-link-disabled-color)}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color);color:var(--bs-nav-tabs-link-active-color)}.nav-tabs .dropdown-menu{border-top-left-radius:0;border-top-right-radius:0;margin-top:calc(var(--bs-nav-tabs-border-width)*-1)}.nav-pills{--bs-nav-pills-border-radius:0.375rem;--bs-nav-pills-link-active-color:#fff;--bs-nav-pills-link-active-bg:#143b76}.nav-pills .nav-link{background:none;border:0;border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link:disabled{background-color:transparent;border-color:transparent;color:var(--bs-nav-link-disabled-color)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{background-color:var(--bs-nav-pills-link-active-bg);color:var(--bs-nav-pills-link-active-color)}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:0.5rem;--bs-navbar-color:rgba(0,0,0,.55);--bs-navbar-hover-color:rgba(0,0,0,.7);--bs-navbar-disabled-color:rgba(0,0,0,.3);--bs-navbar-active-color:rgba(0,0,0,.9);--bs-navbar-brand-padding-y:0.3125rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(0,0,0,.9);--bs-navbar-brand-hover-color:rgba(0,0,0,.9);--bs-navbar-nav-link-padding-x:0.75rem;--bs-navbar-toggler-padding-y:0.25rem;--bs-navbar-toggler-padding-x:0.75rem;--bs-navbar-toggler-font-size:1.25rem;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath stroke='rgba(0, 0, 0, 0.55)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E");--bs-navbar-toggler-border-color:rgba(0,0,0,.1);--bs-navbar-toggler-border-radius:0.375rem;--bs-navbar-toggler-focus-width:0.25rem;--bs-navbar-toggler-transition:box-shadow 0.15s ease-in-out;align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x);position:relative}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{align-items:center;display:flex;flex-wrap:inherit;justify-content:space-between}.navbar-brand{color:var(--bs-navbar-brand-color);font-size:var(--bs-navbar-brand-font-size);margin-right:var(--bs-navbar-brand-margin-end);padding-bottom:var(--bs-navbar-brand-padding-y);padding-top:var(--bs-navbar-brand-padding-y);white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--bs-navbar-brand-hover-color);text-decoration:none}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:flex;flex-direction:column;list-style:none;margin-bottom:0;padding-left:0}.navbar-nav .nav-link.active,.navbar-nav .show>.nav-link{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{color:var(--bs-navbar-color);padding-bottom:.5rem;padding-top:.5rem}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--bs-navbar-active-color)}.navbar-collapse{align-items:center;flex-basis:100%;flex-grow:1}.navbar-toggler{background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);color:var(--bs-navbar-color);font-size:var(--bs-navbar-toggler-font-size);line-height:1;padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width);outline:0;text-decoration:none}.navbar-toggler-icon{background-image:var(--bs-navbar-toggler-icon-bg);background-position:50%;background-repeat:no-repeat;background-size:100%;display:inline-block;height:1.5em;vertical-align:middle;width:1.5em}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{background-color:transparent!important;border:0!important;box-shadow:none;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{background-color:transparent!important;border:0!important;box-shadow:none;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{background-color:transparent!important;border:0!important;box-shadow:none;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{background-color:transparent!important;border:0!important;box-shadow:none;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{background-color:transparent!important;border:0!important;box-shadow:none;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{background-color:transparent!important;border:0!important;box-shadow:none;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}.navbar-dark{--bs-navbar-color:hsla(0,0%,100%,.55);--bs-navbar-hover-color:hsla(0,0%,100%,.75);--bs-navbar-disabled-color:hsla(0,0%,100%,.25);--bs-navbar-active-color:#fff;--bs-navbar-brand-color:#fff;--bs-navbar-brand-hover-color:#fff;--bs-navbar-toggler-border-color:hsla(0,0%,100%,.1);--bs-navbar-toggler-icon-bg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath stroke='rgba(255, 255, 255, 0.55)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.bcl-header .container{position:relative}.bcl-header__navbar,.bcl-header__project{background:linear-gradient(90deg,#039,#1b4ac3)}.bcl-header__top-navbar .navbar-collapse{justify-content:end}.bcl-header__top-navbar .navbar-toggler{border:none;color:#f8f9fa}.bcl-header__top-navbar .navbar-toggler-icon{background:url("data:image/svg+xml;utf8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2Ij48cmVjdCB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiIgZmlsbD0ibm9uZSIvPjxjaXJjbGUgY3g9IjEyOCIgY3k9IjY0IiByPSIxNiIvPjxjaXJjbGUgY3g9IjEyOCIgY3k9IjEyOCIgcj0iMTYiLz48Y2lyY2xlIGN4PSIxMjgiIGN5PSIxOTIiIHI9IjE2Ii8+PC9zdmc+")}.bcl-header .nav-link{align-items:center;color:#1b4ac3;display:flex;padding:.5rem}.bcl-header__navbar .navbar-collapse{padding-bottom:1rem}.bcl-header__navbar .navbar-nav .nav-link{color:#fafbfc}.bcl-header__navbar .navbar-nav .nav-link.active,.bcl-header__navbar .navbar-nav .nav-link:focus,.bcl-header__navbar .navbar-nav .nav-link:hover{color:#fff}.bcl-header__navbar .navbar-nav .nav-link:first-child{padding-left:0}.bcl-header__navbar .navbar-toggler{border-color:#fff;left:.75rem;position:absolute;top:-43px}.bcl-header__navbar .navbar-toggler-icon{background:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 1)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E")}.bcl-header__navbar input:active,.bcl-header__navbar input:focus{box-shadow:0 0 0 .25rem hsla(210,2%,83%,.5)}.bcl-header--ec .bcl-header__navbar,.bcl-header--ec .bcl-header__project,.ec__header .bcl-header__navbar,.ec__header .bcl-header__project{background:#004494}.bcl-header--ec .nav-link,.ec__header .nav-link{color:#17458f}.bcl-navbar-header{align-items:flex-end}.bcl-header--neutral .bcl-header__navbar,.bcl-header--neutral .bcl-header__project{background:#555859}.bcl-header:not(.bcl-header--neutral) .bcl-header__project{padding-top:1rem}.bcl-header .navbar-brand img{width:100px}.bcl-header .notification{padding-right:0;position:relative}.bcl-header .notification span{border-radius:10px;height:18px;line-height:.6rem;padding-left:5px;padding-right:5px;transform:translate(-11px,5px);z-index:1}.bcl-header__project .bcl-header__site-name{color:#fff;display:inline-block;font-size:1.3rem;font-weight:300;margin-bottom:0;max-width:80%;vertical-align:middle}@media only screen and (max-width:400px){.bcl-header--neutral .bcl-header__project-logo{display:none}}@media (max-width:575.98px){.bcl-header .navbar:first-child .nav-link{padding:.5rem .4rem}}@media (min-width:768px){.bcl-header--ec .navbar-brand img,.ec__header .navbar-brand img{width:180px}}@media (max-width:991.98px){.bcl-header__site-name{margin-left:5rem}.bcl-header__top-navbar .navbar-collapse{background:#fff;border:1px solid #dadee0;border-radius:4px;position:absolute;right:.75rem;top:100%;z-index:1050}.bcl-header__top-navbar .navbar-collapse .nav{align-items:flex-start;flex-direction:column;min-width:16rem;padding:1rem}.bcl-header__top-navbar .navbar-collapse .nav li{width:100%}.bcl-header__project{min-height:3rem;padding-top:1rem}.bcl-header nav+nav{min-height:3.5rem}.bcl-header nav+nav .navbar-toggler{position:static}.bcl-header__navbar .navbar-collapse,.bcl-header__navbar .navbar-collapse .nav-item.dropdown{max-width:100%}.bcl-header__navbar .navbar-collapse .nav-item.dropdown a{white-space:normal}.bcl-header__navbar .navbar-collapse .nav-item.dropdown .dropdown-menu{max-width:100%}}@media (min-width:992px){.bcl-header--ec .bcl-header__project.light,.bcl-header__project.light,.ec__header .bcl-header__project.light{background:#fff}.bcl-header__site-name{font-weight:500;margin-left:1.5rem}.bcl-header__project.light .bcl-header__site-name{color:#000}.bcl-header .navbar-toggler{bottom:0;position:relative;right:0}.bcl-header .navbar-brand img{width:auto}.bcl-header__navbar .navbar-collapse{padding-bottom:0}.bcl-header__navbar .nav-link.active{margin-bottom:-.5rem;margin-top:-.5rem;padding-bottom:1rem;padding-top:1rem}.bcl-header__navbar .dropdown-menu{z-index:1050}.bcl-header:not(.bcl-header--neutral) .bcl-header__project{padding-bottom:1rem}.bcl-header--ec .navbar-brand img,.ec__header .navbar-brand img{width:285px}}.bcl-language-list-modal .btn-close{opacity:1}.bcl-language-list-modal.bcl-language-list-modal--ec .modal-body,.bcl-language-list-modal.bcl-language-list-modal--eu .modal-body{overflow:visible;padding-top:.5rem}.bcl-language-list-modal.bcl-language-list-modal--ec .modal-header,.bcl-language-list-modal.bcl-language-list-modal--eu .modal-header{border:0;padding:0}.bcl-language-list-modal.bcl-language-list-modal--eu .modal-body,.bcl-language-list-modal.bcl-language-list-modal--eu .modal-dialog{background:#fff}.bcl-language-list-modal.bcl-language-list-modal--eu h5,.bcl-language-list-modal.bcl-language-list-modal--eu svg{color:#0e47cb}.bcl-language-list-modal.bcl-language-list-modal--eu .btn-close{filter:invert(20%) sepia(70%) saturate(2876%) hue-rotate(216deg) brightness(94%) contrast(105%)}.bcl-language-list-modal.bcl-language-list-modal--ec,.bcl-language-list-modal.bcl-language-list-modal--ec .modal-content{background:#034da1}.bcl-language-list-modal.bcl-language-list-modal--ec h5,.bcl-language-list-modal.bcl-language-list-modal--ec svg{color:#fff}.bcl-language-list-modal.bcl-language-list-modal--ec .btn-close{filter:invert(1) grayscale(100%) brightness(200%)}.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}.btn{font-weight:500}.btn:not(.btn-link):hover{box-shadow:0 .1rem .4rem .1rem rgba(0,0,0,.1)}a.btn-link:hover{text-decoration:none}.btn-primary:hover{background-color:#305286}.btn-primary.active,.btn-primary:active,.btn-primary:focus{background-color:#113264}.btn-secondary,.btn-secondary:hover{color:#0b4e97}.btn-light,.btn-light:hover{color:#143b76}a:hover:visited{text-decoration-color:currentColor!important}a.external:after{margin:0 0 0 .375rem}a.external:after,a.external:hover:after{background-color:currentColor;content:"";display:inline-block;height:1em;-webkit-mask-image:url(../icons/box-arrow-up-right.svg);mask-image:url(../icons/box-arrow-up-right.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:-.125em;width:1em}.bg-light a:not(.btn){color:#0b4e97} +.btn{--bs-btn-padding-x:1.6rem;--bs-btn-padding-y:0.4rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:#242626;--bs-btn-bg:transparent;--bs-btn-border-width:1px;--bs-btn-border-color:transparent;--bs-btn-border-radius:0.4rem;--bs-btn-hover-border-color:transparent;--bs-btn-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.15),0 1px 1px rgba(0,0,0,.075);--bs-btn-disabled-opacity:0.5;--bs-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb),.5);background-color:var(--bs-btn-bg);border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);box-shadow:var(--bs-btn-box-shadow);color:var(--bs-btn-color);cursor:pointer;display:inline-block;font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);text-align:center;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);color:var(--bs-btn-hover-color);text-decoration:none}.btn-check+.btn:hover{background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);color:var(--bs-btn-color)}.btn:focus-visible{background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);box-shadow:var(--bs-btn-box-shadow),var(--bs-btn-focus-box-shadow);color:var(--bs-btn-hover-color);outline:0}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);box-shadow:var(--bs-btn-box-shadow),var(--bs-btn-focus-box-shadow);outline:0}.btn-check:checked+.btn,.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color);box-shadow:var(--bs-btn-active-shadow);color:var(--bs-btn-active-color)}.btn-check:checked+.btn:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-active-shadow),var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);box-shadow:none;color:var(--bs-btn-disabled-color);opacity:var(--bs-btn-disabled-opacity);pointer-events:none}.btn-primary,.button--primary{--bs-btn-color:#fff;--bs-btn-bg:#143b76;--bs-btn-border-color:#143b76;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#12356a;--bs-btn-hover-border-color:#102f5e;--bs-btn-focus-shadow-rgb:55,88,139;--bs-btn-active-color:#fff;--bs-btn-active-bg:#102f5e;--bs-btn-active-border-color:#0f2c59;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#143b76;--bs-btn-disabled-border-color:#143b76}.btn-secondary,.button--secondary{--bs-btn-color:#000;--bs-btn-bg:#e7f1fb;--bs-btn-border-color:#e7f1fb;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#e9f2fb;--bs-btn-hover-border-color:#e9f2fb;--bs-btn-focus-shadow-rgb:196,205,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#ecf4fc;--bs-btn-active-border-color:#e9f2fb;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#e7f1fb;--bs-btn-disabled-border-color:#e7f1fb}.btn-success{--bs-btn-color:#000;--bs-btn-bg:#18bf80;--bs-btn-border-color:#18bf80;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#2fc58d;--bs-btn-hover-border-color:#2fc58d;--bs-btn-focus-shadow-rgb:20,162,109;--bs-btn-active-color:#000;--bs-btn-active-bg:#46cc99;--bs-btn-active-border-color:#2fc58d;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#18bf80;--bs-btn-disabled-border-color:#18bf80}.btn-info{--bs-btn-color:#fff;--bs-btn-bg:#0d768b;--bs-btn-border-color:#0d768b;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0c6a7d;--bs-btn-hover-border-color:#0a5e6f;--bs-btn-focus-shadow-rgb:49,139,156;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a5e6f;--bs-btn-active-border-color:#0a5968;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d768b;--bs-btn-disabled-border-color:#0d768b}.btn-warning{--bs-btn-color:#000;--bs-btn-bg:#eba843;--bs-btn-border-color:#eba843;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#edb156;--bs-btn-hover-border-color:#edb156;--bs-btn-focus-shadow-rgb:200,143,57;--bs-btn-active-color:#000;--bs-btn-active-bg:#efb969;--bs-btn-active-border-color:#edb156;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#eba843;--bs-btn-disabled-border-color:#eba843}.btn-danger{--bs-btn-color:#000;--bs-btn-bg:#eb3434;--bs-btn-border-color:#eb3434;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ed4848;--bs-btn-hover-border-color:#ed4848;--bs-btn-focus-shadow-rgb:200,44,44;--bs-btn-active-color:#000;--bs-btn-active-bg:#ef5d5d;--bs-btn-active-border-color:#ed4848;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#eb3434;--bs-btn-disabled-border-color:#eb3434}.btn-light{--bs-btn-color:#000;--bs-btn-bg:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#dfe0e1;--bs-btn-hover-border-color:#c6c7c8;--bs-btn-focus-shadow-rgb:211,212,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#c6c7c8;--bs-btn-active-border-color:#babbbc;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#f8f9fa;--bs-btn-disabled-border-color:#f8f9fa}.btn-dark{--bs-btn-color:#fff;--bs-btn-bg:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#373b3e;--bs-btn-hover-border-color:#373b3e;--bs-btn-focus-shadow-rgb:66,70,73;--bs-btn-active-color:#fff;--bs-btn-active-bg:#4d5154;--bs-btn-active-border-color:#373b3e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#212529;--bs-btn-disabled-border-color:#212529}.btn-brand{--bs-btn-color:#fff;--bs-btn-bg:#1073de;--bs-btn-border-color:#1073de;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0e68c8;--bs-btn-hover-border-color:#0d5cb2;--bs-btn-focus-shadow-rgb:52,136,227;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d5cb2;--bs-btn-active-border-color:#0c56a7;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#1073de;--bs-btn-disabled-border-color:#1073de}.btn-outline-primary{--bs-btn-color:#143b76;--bs-btn-border-color:#143b76;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#143b76;--bs-btn-hover-border-color:#143b76;--bs-btn-focus-shadow-rgb:20,59,118;--bs-btn-active-color:#fff;--bs-btn-active-bg:#143b76;--bs-btn-active-border-color:#143b76;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#143b76;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#143b76;--bs-gradient:none}.btn-outline-secondary{--bs-btn-color:#e7f1fb;--bs-btn-border-color:#e7f1fb;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#e7f1fb;--bs-btn-hover-border-color:#e7f1fb;--bs-btn-focus-shadow-rgb:231,241,251;--bs-btn-active-color:#000;--bs-btn-active-bg:#e7f1fb;--bs-btn-active-border-color:#e7f1fb;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#e7f1fb;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#e7f1fb;--bs-gradient:none}.btn-outline-success{--bs-btn-color:#18bf80;--bs-btn-border-color:#18bf80;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#18bf80;--bs-btn-hover-border-color:#18bf80;--bs-btn-focus-shadow-rgb:24,191,128;--bs-btn-active-color:#000;--bs-btn-active-bg:#18bf80;--bs-btn-active-border-color:#18bf80;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#18bf80;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#18bf80;--bs-gradient:none}.btn-outline-info{--bs-btn-color:#0d768b;--bs-btn-border-color:#0d768b;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d768b;--bs-btn-hover-border-color:#0d768b;--bs-btn-focus-shadow-rgb:13,118,139;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d768b;--bs-btn-active-border-color:#0d768b;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#0d768b;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d768b;--bs-gradient:none}.btn-outline-warning{--bs-btn-color:#eba843;--bs-btn-border-color:#eba843;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#eba843;--bs-btn-hover-border-color:#eba843;--bs-btn-focus-shadow-rgb:235,168,67;--bs-btn-active-color:#000;--bs-btn-active-bg:#eba843;--bs-btn-active-border-color:#eba843;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#eba843;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#eba843;--bs-gradient:none}.btn-outline-danger{--bs-btn-color:#eb3434;--bs-btn-border-color:#eb3434;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#eb3434;--bs-btn-hover-border-color:#eb3434;--bs-btn-focus-shadow-rgb:235,52,52;--bs-btn-active-color:#000;--bs-btn-active-bg:#eb3434;--bs-btn-active-border-color:#eb3434;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#eb3434;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#eb3434;--bs-gradient:none}.btn-outline-light{--bs-btn-color:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#f8f9fa;--bs-btn-hover-border-color:#f8f9fa;--bs-btn-focus-shadow-rgb:248,249,250;--bs-btn-active-color:#000;--bs-btn-active-bg:#f8f9fa;--bs-btn-active-border-color:#f8f9fa;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#f8f9fa;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#f8f9fa;--bs-gradient:none}.btn-outline-dark{--bs-btn-color:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#212529;--bs-btn-hover-border-color:#212529;--bs-btn-focus-shadow-rgb:33,37,41;--bs-btn-active-color:#fff;--bs-btn-active-bg:#212529;--bs-btn-active-border-color:#212529;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#212529;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#212529;--bs-gradient:none}.btn-outline-brand{--bs-btn-color:#1073de;--bs-btn-border-color:#1073de;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#1073de;--bs-btn-hover-border-color:#1073de;--bs-btn-focus-shadow-rgb:16,115,222;--bs-btn-active-color:#fff;--bs-btn-active-bg:#1073de;--bs-btn-active-border-color:#1073de;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,.125);--bs-btn-disabled-color:#1073de;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#1073de;--bs-gradient:none}.btn-link,.button--link{--bs-btn-font-weight:400;--bs-btn-color:#1073de;--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6d7173;--bs-btn-disabled-border-color:transparent;--bs-btn-box-shadow:none;--bs-btn-focus-shadow-rgb:55,88,139;text-decoration:none}.btn-link:focus-visible,.btn-link:hover,.button--link:focus-visible,.button--link:hover{text-decoration:underline}.btn-link:focus-visible,.button--link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover,.button--link:hover{color:var(--bs-btn-hover-color)}.btn-lg{--bs-btn-padding-y:0.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:0.5rem}.btn-sm{--bs-btn-padding-y:0.25rem;--bs-btn-padding-x:0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius:0.25rem}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-menu{--bs-dropdown-zindex:40;--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:0.5rem;--bs-dropdown-spacer:0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:#242626;--bs-dropdown-bg:#fff;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:0.375rem;--bs-dropdown-border-width:1px;--bs-dropdown-inner-border-radius:calc(0.375rem - 1px);--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:0.5rem;--bs-dropdown-box-shadow:0 0.5rem 1rem rgba(0,0,0,.15);--bs-dropdown-link-color:#242626;--bs-dropdown-link-hover-color:#202222;--bs-dropdown-link-hover-bg:#f5f6f7;--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#143b76;--bs-dropdown-link-disabled-color:#858a8c;--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:0.25rem;--bs-dropdown-header-color:#6d7173;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:0.5rem;background-clip:padding-box;background-color:var(--bs-dropdown-bg);border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius);box-shadow:var(--bs-dropdown-box-shadow);color:var(--bs-dropdown-color);display:none;font-size:var(--bs-dropdown-font-size);list-style:none;margin:0;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);position:absolute;text-align:left;z-index:var(--bs-dropdown-zindex)}.dropdown-menu[data-bs-popper]{left:0;margin-top:var(--bs-dropdown-spacer);top:100%}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{left:auto;right:0}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{left:auto;right:0}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{left:auto;right:0}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{left:auto;right:0}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{left:auto;right:0}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{left:0;right:auto}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{left:auto;right:0}}.dropup .dropdown-menu[data-bs-popper]{bottom:100%;margin-bottom:var(--bs-dropdown-spacer);margin-top:0;top:auto}.dropend .dropdown-menu[data-bs-popper]{left:100%;margin-left:var(--bs-dropdown-spacer);margin-top:0;right:auto;top:0}.dropend .dropdown-toggle:after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{left:auto;margin-right:var(--bs-dropdown-spacer);margin-top:0;right:100%;top:0}.dropstart .dropdown-toggle:before{vertical-align:0}.dropdown-divider{border-top:1px solid var(--bs-dropdown-divider-bg);height:0;margin:var(--bs-dropdown-divider-margin-y) 0;opacity:1;overflow:hidden}.dropdown-item{background-color:transparent;border:0;clear:both;color:var(--bs-dropdown-link-color);display:block;font-weight:400;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);text-align:inherit;white-space:nowrap;width:100%}.dropdown-item:focus,.dropdown-item:hover{background-color:var(--bs-dropdown-link-hover-bg);color:var(--bs-dropdown-link-hover-color);text-decoration:none}.dropdown-item.active,.dropdown-item:active{background-color:var(--bs-dropdown-link-active-bg);color:var(--bs-dropdown-link-active-color);text-decoration:none}.dropdown-item.disabled,.dropdown-item:disabled{background-color:transparent;color:var(--bs-dropdown-link-disabled-color);pointer-events:none}.dropdown-menu.show{display:block}.dropdown-header{color:var(--bs-dropdown-header-color);display:block;font-size:.875rem;margin-bottom:0;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);white-space:nowrap}.dropdown-item-text{color:var(--bs-dropdown-link-color);display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x)}.dropdown-menu-dark{--bs-dropdown-color:#dadee0;--bs-dropdown-bg:#3d3f40;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color:#dadee0;--bs-dropdown-link-hover-color:#fff;--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg:hsla(0,0%,100%,.15);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#143b76;--bs-dropdown-link-disabled-color:#858a8c;--bs-dropdown-header-color:#858a8c}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:#6d7173;display:flex;flex-wrap:wrap;list-style:none;margin-bottom:0;padding-left:0}.nav-link{color:var(--bs-nav-link-color);display:block;font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color);text-decoration:none}.nav-link.disabled{color:var(--bs-nav-link-disabled-color);cursor:default;pointer-events:none}.nav-tabs{--bs-nav-tabs-border-width:1px;--bs-nav-tabs-border-color:#dadee0;--bs-nav-tabs-border-radius:0.375rem;--bs-nav-tabs-link-hover-border-color:#f5f6f7 #f5f6f7 #dadee0;--bs-nav-tabs-link-active-color:#555859;--bs-nav-tabs-link-active-bg:#fff;--bs-nav-tabs-link-active-border-color:#dadee0 #dadee0 #fff;border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{background:none;border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius);margin-bottom:calc(var(--bs-nav-tabs-border-width)*-1)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:var(--bs-nav-tabs-link-hover-border-color);isolation:isolate}.nav-tabs .nav-link.disabled,.nav-tabs .nav-link:disabled{background-color:transparent;border-color:transparent;color:var(--bs-nav-link-disabled-color)}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color);color:var(--bs-nav-tabs-link-active-color)}.nav-tabs .dropdown-menu{border-top-left-radius:0;border-top-right-radius:0;margin-top:calc(var(--bs-nav-tabs-border-width)*-1)}.nav-pills{--bs-nav-pills-border-radius:0.375rem;--bs-nav-pills-link-active-color:#fff;--bs-nav-pills-link-active-bg:#143b76}.nav-pills .nav-link{background:none;border:0;border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link:disabled{background-color:transparent;border-color:transparent;color:var(--bs-nav-link-disabled-color)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{background-color:var(--bs-nav-pills-link-active-bg);color:var(--bs-nav-pills-link-active-color)}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:0.5rem;--bs-navbar-color:rgba(0,0,0,.55);--bs-navbar-hover-color:rgba(0,0,0,.7);--bs-navbar-disabled-color:rgba(0,0,0,.3);--bs-navbar-active-color:rgba(0,0,0,.9);--bs-navbar-brand-padding-y:0.3125rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(0,0,0,.9);--bs-navbar-brand-hover-color:rgba(0,0,0,.9);--bs-navbar-nav-link-padding-x:0.75rem;--bs-navbar-toggler-padding-y:0.25rem;--bs-navbar-toggler-padding-x:0.75rem;--bs-navbar-toggler-font-size:1.25rem;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath stroke='rgba(0, 0, 0, 0.55)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E");--bs-navbar-toggler-border-color:rgba(0,0,0,.1);--bs-navbar-toggler-border-radius:0.375rem;--bs-navbar-toggler-focus-width:0.25rem;--bs-navbar-toggler-transition:box-shadow 0.15s ease-in-out;align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x);position:relative}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{align-items:center;display:flex;flex-wrap:inherit;justify-content:space-between}.navbar-brand{color:var(--bs-navbar-brand-color);font-size:var(--bs-navbar-brand-font-size);margin-right:var(--bs-navbar-brand-margin-end);padding-bottom:var(--bs-navbar-brand-padding-y);padding-top:var(--bs-navbar-brand-padding-y);white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--bs-navbar-brand-hover-color);text-decoration:none}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:flex;flex-direction:column;list-style:none;margin-bottom:0;padding-left:0}.navbar-nav .nav-link.active,.navbar-nav .show>.nav-link{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{color:var(--bs-navbar-color);padding-bottom:.5rem;padding-top:.5rem}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--bs-navbar-active-color)}.navbar-collapse{align-items:center;flex-basis:100%;flex-grow:1}.navbar-toggler{background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);color:var(--bs-navbar-color);font-size:var(--bs-navbar-toggler-font-size);line-height:1;padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width);outline:0;text-decoration:none}.navbar-toggler-icon{background-image:var(--bs-navbar-toggler-icon-bg);background-position:50%;background-repeat:no-repeat;background-size:100%;display:inline-block;height:1.5em;vertical-align:middle;width:1.5em}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{background-color:transparent!important;border:0!important;box-shadow:none;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{background-color:transparent!important;border:0!important;box-shadow:none;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{background-color:transparent!important;border:0!important;box-shadow:none;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{background-color:transparent!important;border:0!important;box-shadow:none;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{background-color:transparent!important;border:0!important;box-shadow:none;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-left:var(--bs-navbar-nav-link-padding-x);padding-right:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{background-color:transparent!important;border:0!important;box-shadow:none;flex-grow:1;height:auto!important;position:static;transform:none!important;transition:none;visibility:visible!important;width:auto!important;z-index:auto}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;overflow-y:visible;padding:0}.navbar-dark{--bs-navbar-color:hsla(0,0%,100%,.55);--bs-navbar-hover-color:hsla(0,0%,100%,.75);--bs-navbar-disabled-color:hsla(0,0%,100%,.25);--bs-navbar-active-color:#fff;--bs-navbar-brand-color:#fff;--bs-navbar-brand-hover-color:#fff;--bs-navbar-toggler-border-color:hsla(0,0%,100%,.1);--bs-navbar-toggler-icon-bg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath stroke='rgba(255, 255, 255, 0.55)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.bcl-header .container{position:relative}.bcl-header__navbar,.bcl-header__project{background:linear-gradient(90deg,#039,#1b4ac3)}.bcl-header__top-navbar .navbar-collapse{justify-content:end}.bcl-header__top-navbar .navbar-toggler{border:none;color:#f8f9fa}.bcl-header__top-navbar .navbar-toggler-icon{background:url("data:image/svg+xml;utf8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2Ij48cmVjdCB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiIgZmlsbD0ibm9uZSIvPjxjaXJjbGUgY3g9IjEyOCIgY3k9IjY0IiByPSIxNiIvPjxjaXJjbGUgY3g9IjEyOCIgY3k9IjEyOCIgcj0iMTYiLz48Y2lyY2xlIGN4PSIxMjgiIGN5PSIxOTIiIHI9IjE2Ii8+PC9zdmc+")}.bcl-header .nav-link{align-items:center;color:#1b4ac3;display:flex;padding:.5rem}.bcl-header__navbar .navbar-collapse{padding-bottom:1rem}.bcl-header__navbar .navbar-nav .nav-link{color:#fafbfc}.bcl-header__navbar .navbar-nav .nav-link.active,.bcl-header__navbar .navbar-nav .nav-link:focus,.bcl-header__navbar .navbar-nav .nav-link:hover{color:#fff}.bcl-header__navbar .navbar-nav .nav-link:first-child{padding-left:0}.bcl-header__navbar .navbar-toggler{border-color:#fff;left:.75rem;position:absolute;top:-43px}.bcl-header__navbar .navbar-toggler-icon{background:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 1)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E")}.bcl-header__navbar input:active,.bcl-header__navbar input:focus{box-shadow:0 0 0 .25rem hsla(210,2%,83%,.5)}.bcl-header--ec .bcl-header__navbar,.bcl-header--ec .bcl-header__project,.ec__header .bcl-header__navbar,.ec__header .bcl-header__project{background:#004494}.bcl-header--ec .nav-link,.ec__header .nav-link{color:#17458f}.bcl-navbar-header{align-items:flex-end}.bcl-header--neutral .bcl-header__navbar,.bcl-header--neutral .bcl-header__project{background:#555859}.bcl-header:not(.bcl-header--neutral) .bcl-header__project{padding-top:1rem}.bcl-header .navbar-brand img{width:100px}.bcl-header .notification{padding-right:0;position:relative}.bcl-header .notification span{border-radius:10px;height:18px;line-height:.6rem;padding-left:5px;padding-right:5px;transform:translate(-11px,5px);z-index:1}.bcl-header__project .bcl-header__site-name{color:#fff;display:inline-block;font-size:1.3rem;font-weight:300;margin-bottom:0;max-width:80%;vertical-align:middle}@media only screen and (max-width:400px){.bcl-header--neutral .bcl-header__project-logo{display:none}}@media (max-width:575.98px){.bcl-header .navbar:first-child .nav-link{padding:.5rem .4rem}}@media (min-width:768px){.bcl-header--ec .navbar-brand img,.ec__header .navbar-brand img{width:180px}}@media (max-width:991.98px){.bcl-header__site-name{margin-left:5rem}.bcl-header__top-navbar .navbar-collapse{background:#fff;border:1px solid #dadee0;border-radius:4px;position:absolute;right:.75rem;top:100%;z-index:1050}.bcl-header__top-navbar .navbar-collapse .nav{align-items:flex-start;flex-direction:column;min-width:16rem;padding:1rem}.bcl-header__top-navbar .navbar-collapse .nav li{width:100%}.bcl-header__project{min-height:3rem;padding-top:1rem}.bcl-header nav+nav{min-height:3.5rem}.bcl-header nav+nav .navbar-toggler{position:static}.bcl-header__navbar .navbar-collapse,.bcl-header__navbar .navbar-collapse .nav-item.dropdown{max-width:100%}.bcl-header__navbar .navbar-collapse .nav-item.dropdown a{white-space:normal}.bcl-header__navbar .navbar-collapse .nav-item.dropdown .dropdown-menu{max-width:100%}}@media (min-width:992px){.bcl-header--ec .bcl-header__project.light,.bcl-header__project.light,.ec__header .bcl-header__project.light{background:#fff}.bcl-header__site-name{font-weight:500;margin-left:1.5rem}.bcl-header__project.light .bcl-header__site-name{color:#000}.bcl-header .navbar-toggler{bottom:0;position:relative;right:0}.bcl-header .navbar-brand img{width:auto}.bcl-header__navbar .navbar-collapse{padding-bottom:0}.bcl-header__navbar .nav-link.active{margin-bottom:-.5rem;margin-top:-.5rem;padding-bottom:1rem;padding-top:1rem}.bcl-header__navbar .dropdown-menu{z-index:1050}.bcl-header:not(.bcl-header--neutral) .bcl-header__project{padding-bottom:1rem}.bcl-header--ec .navbar-brand img,.ec__header .navbar-brand img{width:285px}}.bcl-language-list-modal .btn-close{opacity:1}.bcl-language-list-modal.bcl-language-list-modal--ec .modal-body,.bcl-language-list-modal.bcl-language-list-modal--eu .modal-body{overflow:visible;padding-top:.5rem}.bcl-language-list-modal.bcl-language-list-modal--ec .modal-header,.bcl-language-list-modal.bcl-language-list-modal--eu .modal-header{border:0;padding:0}.bcl-language-list-modal.bcl-language-list-modal--eu .modal-body,.bcl-language-list-modal.bcl-language-list-modal--eu .modal-dialog{background:#fff}.bcl-language-list-modal.bcl-language-list-modal--eu h5,.bcl-language-list-modal.bcl-language-list-modal--eu svg{color:#0e47cb}.bcl-language-list-modal.bcl-language-list-modal--eu .btn-close{filter:invert(20%) sepia(70%) saturate(2876%) hue-rotate(216deg) brightness(94%) contrast(105%)}.bcl-language-list-modal.bcl-language-list-modal--ec,.bcl-language-list-modal.bcl-language-list-modal--ec .modal-content{background:#034da1}.bcl-language-list-modal.bcl-language-list-modal--ec h5,.bcl-language-list-modal.bcl-language-list-modal--ec svg{color:#fff}.bcl-language-list-modal.bcl-language-list-modal--ec .btn-close{filter:invert(1) grayscale(100%) brightness(200%)}.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}.ui-widget,.ui-widget button{font-family:Roboto,sans-serif}.ui-widget-overlay{z-index:502}.ui-widget-content a.btn-brand{color:#fff}.ui-dialog{border:1px solid #f5f6f7;border-radius:.5rem;box-shadow:0 .5rem 1rem rgba(0,0,0,.15);overflow:hidden;overflow-wrap:break-word;padding:0;z-index:512}.ui-dialog .ui-dialog-titlebar{background-color:transparent;border:0;border-bottom:1px solid var(--bs-border-color);padding:1rem}.ui-dialog .ui-dialog-title{color:#143b76;font-size:1.125rem;font-weight:400}.ui-dialog .ui-dialog-titlebar-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.414z'/%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;right:1rem;top:1.75rem;width:1em}.ui-dialog .ui-dialog-content{padding:1rem}.ui-dialog .ui-button.ui-dialog-titlebar-close,.ui-dialog .ui-button.ui-dialog-titlebar-close:hover{background-color:transparent}.ui-dialog .ui-button.ui-dialog-titlebar-close .ui-icon-closethick,.ui-dialog .ui-button.ui-dialog-titlebar-close:hover .ui-icon-closethick{background-image:none}.btn{font-weight:500}.btn:not(.btn-link):not(.button--link):hover{box-shadow:0 .1rem .4rem .1rem rgba(0,0,0,.1)}a.btn-link:hover,a.button--link:hover{text-decoration:none}.btn-primary:hover,.button--primary:hover{background-color:#305286}.active.button--primary,.btn-primary.active,.btn-primary:active,.btn-primary:focus,.button--primary:active,.button--primary:focus{background-color:#113264}.btn-secondary,.btn-secondary:hover,.button--secondary,.button--secondary:hover{color:#0b4e97}.btn-light,.btn-light:hover{color:#143b76}a:hover:visited{text-decoration-color:currentColor!important}a.external:after{margin:0 0 0 .375rem}a.external:after,a.external:hover:after{background-color:currentColor;content:"";display:inline-block;height:1em;-webkit-mask-image:url(../icons/box-arrow-up-right.svg);mask-image:url(../icons/box-arrow-up-right.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:-.125em;width:1em}.bg-light a:not(.btn){color:#0b4e97} /*# sourceMappingURL=components.min.css.map */ \ No newline at end of file diff --git a/web/themes/ventuno/assets/css/homepage.min.css b/web/themes/ventuno/assets/css/homepage.min.css index ec60ef3563a5cca911857abf283f315daaf6de3a..e4e69ae1f68172fec243414b6f54a9c30cf3030e 100644 --- a/web/themes/ventuno/assets/css/homepage.min.css +++ b/web/themes/ventuno/assets/css/homepage.min.css @@ -1,2 +1,2 @@ -.joinup-layout .block>.about-what__title,.joinup-layout .block>h2{color:#143b76;font-size:1.25rem;font-weight:700;line-height:1.2;margin-bottom:1em;padding-top:.75em;text-transform:uppercase}.iop-gradient{-webkit-text-fill-color:transparent;background:linear-gradient(90deg,#c2d962 0,#f6921e);-webkit-background-clip:text;background-clip:text}.region-featured{background-image:url(../images/wave.svg),url(../images/background.svg),linear-gradient(#17458f,#17458f 50%,#082330 0,#082330);background-position:0 55%,0 55%;background-repeat:no-repeat;background-size:100% auto}@media (min-width:768px){.region-featured{background-image:url(../images/banner-md.svg),linear-gradient(90deg,#17458f 0,#17458f 30%,#082330 0,#082330);background-position:50%;background-size:auto 100%}}.region-featured .block-views-exposed-filter-blocksearch-page-1{padding-bottom:.5rem}@media (min-width:992px){.region-featured .block-views-exposed-filter-blocksearch-page-1{margin-right:1rem}}.region-featured .block-views-exposed-filter-blocksearch-page-1 .search-bar .search-bar__input{border-bottom-left-radius:50rem;border-style:none;border-top-left-radius:50rem;font-size:1rem;padding:1rem 1.5rem}@media (min-width:768px){.region-featured .block-views-exposed-filter-blocksearch-page-1 .search-bar .search-bar__input{padding-bottom:0;padding-top:0}}.region-featured .block-views-exposed-filter-blocksearch-page-1 .search-bar .btn-search{background-color:#fff;border-bottom-right-radius:50rem;border-top-right-radius:50rem;color:#212529;font-size:0;padding:.425rem 1rem}.region-featured .block-views-exposed-filter-blocksearch-page-1 .search-bar .btn-search:before{background-color:#143b76;content:"";display:inline-block;font-size:1.2rem;height:1em;margin:.25rem 0;-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}.region-featured .block-views-exposed-filter-blocksearch-page-1 .search-bar .btn-search:hover{box-shadow:none}.region-featured .joinup-welcomes{font-size:1.5rem}@media (min-width:768px){.region-featured .joinup-welcomes{font-size:1.75rem}}@media (min-width:992px){.region-featured .joinup-welcomes{font-size:2.5rem}}.about-how,.about-what,.about-who{color:#555859}.block-views-blockin-the-spotlight-block{border-bottom:1px solid rgba(20,59,118,.1);height:100%;padding-bottom:3rem}.block-views-blockin-the-spotlight-block>h2:before{background-color:#eba843;content:"";display:inline-block;height:1em;margin-right:.5rem;-webkit-mask-image:url(../icons/star.svg);mask-image:url(../icons/star.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:-.125em;width:1em}.block-entityqueue--highlighted-content{border-bottom:1px solid rgba(20,59,118,.1);height:100%;padding-bottom:3rem;position:relative}.block-entityqueue--highlighted-content>h2:before{background-color:#eba843;content:"";display:inline-block;height:1em;margin-right:.5rem;-webkit-mask-image:url(../icons/award.svg);mask-image:url(../icons/award.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:-.125em;width:1em}.block-entityqueue--highlighted-content .more-link{bottom:1rem;position:absolute}@media (min-width:768px){.block-entityqueue--highlighted-content .more-link{bottom:unset;right:0;top:12px}}.block-entityqueue--highlighted-content .more-link:after{background-color:currentColor;content:"";display:inline-block;height:1em;margin-left:.5rem;-webkit-mask-image:url(../icons/arrow-right.svg);mask-image:url(../icons/arrow-right.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:-.125em;width:1em}.block-views-blocklatest-news-block{margin-bottom:3rem;position:relative}.block-views-blocklatest-news-block>h2:before{background-color:#eba843;content:"";display:inline-block;height:1em;margin-right:.5rem;-webkit-mask-image:url(../icons/lightning-charge.svg);mask-image:url(../icons/lightning-charge.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:-.125em;width:1em}.block-views-blocklatest-news-block .more-link{bottom:-2rem;position:absolute}@media (min-width:768px){.block-views-blocklatest-news-block .more-link{bottom:unset;right:0;top:12px}}.block-views-blocklatest-news-block .more-link:after{background-color:currentColor;content:"";display:inline-block;height:1em;margin-left:.5rem;-webkit-mask-image:url(../icons/arrow-right.svg);mask-image:url(../icons/arrow-right.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:-.125em;width:1em}.block-entityqueue--highlighted-event{height:100%;margin-bottom:3rem;position:relative}.block-entityqueue--highlighted-event>h2:before{background-color:#eba843;content:"";display:inline-block;height:1em;margin-right:.5rem;-webkit-mask-image:url(../icons/calendar.svg);mask-image:url(../icons/calendar.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:-.125em;width:1em}.block-entityqueue--highlighted-event .more-link{bottom:-2rem;position:absolute}@media (min-width:768px){.block-entityqueue--highlighted-event .more-link{bottom:unset;right:0;top:12px}}.block-entityqueue--highlighted-event .more-link:after{background-color:currentColor;content:"";display:inline-block;height:1em;margin-left:.5rem;-webkit-mask-image:url(../icons/arrow-right.svg);mask-image:url(../icons/arrow-right.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:-.125em;width:1em}.block-entityqueue--highlighted-event article{align-items:center;background:#6d7173 url(../images/highlighted-event.jpg) no-repeat 50%;background-size:cover;border-radius:.5rem;color:#fff;display:flex;flex-flow:column;justify-content:center;padding:1.5rem;text-align:center}@media (min-width:992px){.block-entityqueue--highlighted-event article{padding:3rem}}.block-entityqueue--highlighted-event article header{margin-bottom:3rem;padding-bottom:3rem}.block-entityqueue--highlighted-event article header h3{border-bottom:4px solid #fff;color:#fff;font-size:1.25rem;font-weight:400;text-transform:uppercase}.block-entityqueue--highlighted-event article>h2{color:#fff;line-height:1.25;margin-bottom:.25rem}.block-entityqueue--highlighted-event article .field--name-field-event-date{font-size:1rem;font-weight:400}.block-entityqueue--highlighted-event article footer{margin-top:3rem;padding-top:3rem}.block-joinup-front-page-explore-block{margin-bottom:3rem;padding-bottom:3rem;padding-top:3rem;position:relative}.block-joinup-front-page-explore-block:before{background:#f5f6f7;bottom:0;content:"";margin-left:calc(50% - 50vw);position:absolute;top:0;width:100vw;z-index:-1}@media (min-width:768px){.block-joinup-front-page-explore-block:before{background:linear-gradient(0deg,#fff 8rem,#f5f6f7 0)}}.block-joinup-front-page-explore-block .explore-block-title{border-bottom:1px solid rgba(20,59,118,.1);font-size:1.25rem;font-weight:700;margin-bottom:1.5rem;padding-bottom:1.5rem;text-transform:uppercase}.block-joinup-front-page-explore-block .explore-block-title:before{background-color:#eba843;content:"";display:inline-block;height:1em;margin-right:.5rem;-webkit-mask-image:url(../icons/eye.svg);mask-image:url(../icons/eye.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:-.125em;width:1em}.block-joinup-front-page-explore-block .nav-tabs{border:none;margin-bottom:1rem}@media (min-width:768px){.block-joinup-front-page-explore-block .nav-tabs{position:absolute;right:0;top:2.5rem}}.block-joinup-front-page-explore-block .nav-tabs .nav-link{background:none;border:none;color:#6d7173;margin:.5rem;padding:0 0 .4rem}@media (min-width:1200px){.block-joinup-front-page-explore-block .nav-tabs .nav-link{margin:1.5rem}}.block-joinup-front-page-explore-block .nav-tabs .nav-link.active{border-bottom:4px solid #000;color:#000}.block-joinup-front-page-explore-block .tab-content .tab-pane .see-more{display:block}.block-joinup-front-page-explore-block .tab-content .tab-pane .tab-data article{background-color:#fff;border-radius:.5rem;display:flex!important;flex-flow:column;height:100%;margin-right:1.5rem;padding:1.5rem}.block-joinup-front-page-explore-block .tab-content .tab-pane .tab-data article .layout{flex-grow:1}.block-joinup-front-page-explore-block .tab-content .tab-pane .tab-data article .layout .layout__region{display:flex;flex-direction:column;height:100%}.block-joinup-front-page-explore-block .tab-content .tab-pane .tab-data article h1{font-size:1.25rem;font-weight:500;line-height:1.5}.block-joinup-front-page-explore-block .tab-content .tab-pane .tab-data article h1 a{-webkit-line-clamp:2;-webkit-box-orient:vertical;color:#3d3f40;display:-webkit-box;overflow:hidden}.block-joinup-front-page-explore-block .tab-content .tab-pane .tab-data article .explore-item__description{-webkit-line-clamp:7;-webkit-box-orient:vertical;color:#6d7173;display:-webkit-box;flex-grow:1;margin-bottom:1.5rem;overflow:hidden}.block-joinup-front-page-explore-block .tab-content .tab-pane .tab-data article .date{color:#6d7173;font-size:.75rem}.block-joinup-front-page-explore-block .tab-content .tab-pane .tab-data article .date .field--name-created,.block-joinup-front-page-explore-block .tab-content .tab-pane .tab-data article .date .field--name-published-at{padding-top:.4rem}.block-joinup-front-page-explore-block .tab-content .tab-pane .tab-data article .read-more-wrapper{align-self:flex-end;margin-top:-1.8rem}.block-joinup-front-page-explore-block .tab-content .tab-pane .tab-data article .read-more{float:right}.block-joinup-front-page-explore-block .tab-content .tab-pane .tab-data article .read-more:hover{text-decoration:none}.glide__outer{margin-left:-1rem;overflow:hidden;padding:1rem;width:calc(100% + 2rem)}.glide__slides,.glide__track{overflow:visible}.glide__slide{box-shadow:0 .1rem .4rem .1rem rgba(0,0,0,.1);display:flex!important;height:auto!important}.glide__arrows{display:flex;float:left}.glide__arrow{background-color:#fff;border:none;height:40px;width:40px}.glide__arrow:hover{box-shadow:0 .1rem .4rem .1rem rgba(0,0,0,.1)}.glide__arrow--left{margin-right:1rem}.glide__arrow--left span.icon:before{-webkit-mask-image:url(../icons/chevron-left.svg);mask-image:url(../icons/chevron-left.svg)}.glide__arrow--left span.icon:before,.glide__arrow--right span.icon:before{background-color:#143b76;content:"";display:inline-block;height:1em;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:-.125em;width:1em}.glide__arrow--right span.icon:before{-webkit-mask-image:url(../icons/chevron-right.svg);mask-image:url(../icons/chevron-right.svg)}.glide__arrow--disabled,.glide__arrow:disabled{opacity:.3;pointer-events:none} +.joinup-layout .block>.about-what__title,.joinup-layout .block>h2{color:#143b76;font-size:1.25rem;font-weight:700;line-height:1.2;margin-bottom:1em;padding-top:.75em;text-transform:uppercase}.iop-gradient{-webkit-text-fill-color:transparent;background:linear-gradient(90deg,#c2d962 0,#f6921e);-webkit-background-clip:text;background-clip:text}.region-featured{background-image:url(../images/wave.svg),url(../images/background.svg),linear-gradient(#17458f,#17458f 50%,#082330 0,#082330);background-position:0 55%,0 55%;background-repeat:no-repeat;background-size:100% auto}@media (min-width:768px){.region-featured{background-image:url(../images/banner-md.svg),linear-gradient(90deg,#17458f 0,#17458f 45%,#082330 0,#082330);background-position:50%;background-size:auto 100%}}.region-featured .block-views-exposed-filter-blocksearch-page-1{padding-bottom:.5rem}@media (min-width:992px){.region-featured .block-views-exposed-filter-blocksearch-page-1{margin-right:1rem}}.region-featured .block-views-exposed-filter-blocksearch-page-1 .search-bar .search-bar__input{border-bottom-left-radius:50rem;border-style:none;border-top-left-radius:50rem;font-size:1rem;padding:1rem 1.5rem}@media (min-width:768px){.region-featured .block-views-exposed-filter-blocksearch-page-1 .search-bar .search-bar__input{padding-bottom:0;padding-top:0}}.region-featured .block-views-exposed-filter-blocksearch-page-1 .search-bar .btn-search{background-color:#fff;border-bottom-right-radius:50rem;border-top-right-radius:50rem;color:#212529;font-size:0;padding:.425rem 1rem}.region-featured .block-views-exposed-filter-blocksearch-page-1 .search-bar .btn-search:before{background-color:#143b76;content:"";display:inline-block;font-size:1.2rem;height:1em;margin:.25rem 0;-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}.region-featured .block-views-exposed-filter-blocksearch-page-1 .search-bar .btn-search:hover{box-shadow:none}.region-featured .joinup-welcomes{font-size:1.5rem}@media (min-width:768px){.region-featured .joinup-welcomes{font-size:1.75rem}}@media (min-width:992px){.region-featured .joinup-welcomes{font-size:2.5rem}}.about-how,.about-what,.about-who{color:#555859}.block-views-blockin-the-spotlight-block{border-bottom:1px solid rgba(20,59,118,.1);height:100%;padding-bottom:3rem}.block-views-blockin-the-spotlight-block>h2:before{background-color:#eba843;content:"";display:inline-block;height:1em;margin-right:.5rem;-webkit-mask-image:url(../icons/star.svg);mask-image:url(../icons/star.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:-.125em;width:1em}.block-entityqueue--highlighted-content{border-bottom:1px solid rgba(20,59,118,.1);height:100%;padding-bottom:3rem;position:relative}.block-entityqueue--highlighted-content>h2:before{background-color:#eba843;content:"";display:inline-block;height:1em;margin-right:.5rem;-webkit-mask-image:url(../icons/award.svg);mask-image:url(../icons/award.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:-.125em;width:1em}.block-entityqueue--highlighted-content .more-link{bottom:1rem;position:absolute}@media (min-width:768px){.block-entityqueue--highlighted-content .more-link{bottom:unset;right:0;top:12px}}.block-entityqueue--highlighted-content .more-link:after{background-color:currentColor;content:"";display:inline-block;height:1em;margin-left:.5rem;-webkit-mask-image:url(../icons/arrow-right.svg);mask-image:url(../icons/arrow-right.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:-.125em;width:1em}.block-views-blocklatest-news-block{margin-bottom:3rem;position:relative}.block-views-blocklatest-news-block>h2:before{background-color:#eba843;content:"";display:inline-block;height:1em;margin-right:.5rem;-webkit-mask-image:url(../icons/lightning-charge.svg);mask-image:url(../icons/lightning-charge.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:-.125em;width:1em}.block-views-blocklatest-news-block .more-link{bottom:-2rem;position:absolute}@media (min-width:768px){.block-views-blocklatest-news-block .more-link{bottom:unset;right:0;top:12px}}.block-views-blocklatest-news-block .more-link:after{background-color:currentColor;content:"";display:inline-block;height:1em;margin-left:.5rem;-webkit-mask-image:url(../icons/arrow-right.svg);mask-image:url(../icons/arrow-right.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:-.125em;width:1em}.block-entityqueue--highlighted-event{height:100%;margin-bottom:3rem;position:relative}.block-entityqueue--highlighted-event>h2:before{background-color:#eba843;content:"";display:inline-block;height:1em;margin-right:.5rem;-webkit-mask-image:url(../icons/calendar.svg);mask-image:url(../icons/calendar.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:-.125em;width:1em}.block-entityqueue--highlighted-event .more-link{bottom:-2rem;position:absolute}@media (min-width:768px){.block-entityqueue--highlighted-event .more-link{bottom:unset;right:0;top:12px}}.block-entityqueue--highlighted-event .more-link:after{background-color:currentColor;content:"";display:inline-block;height:1em;margin-left:.5rem;-webkit-mask-image:url(../icons/arrow-right.svg);mask-image:url(../icons/arrow-right.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:-.125em;width:1em}.block-entityqueue--highlighted-event article{align-items:center;background:#6d7173 url(../images/highlighted-event.jpg) no-repeat 50%;background-size:cover;border-radius:.5rem;color:#fff;display:flex;flex-flow:column;justify-content:center;padding:1.5rem;text-align:center}@media (min-width:992px){.block-entityqueue--highlighted-event article{padding:3rem}}.block-entityqueue--highlighted-event article header{margin-bottom:3rem;padding-bottom:3rem}.block-entityqueue--highlighted-event article header h3{border-bottom:4px solid #fff;color:#fff;font-size:1.25rem;font-weight:400;text-transform:uppercase}.block-entityqueue--highlighted-event article>h2{color:#fff;line-height:1.25;margin-bottom:.25rem}.block-entityqueue--highlighted-event article .field--name-field-event-date{font-size:1.125rem;font-weight:400}.block-entityqueue--highlighted-event article footer{margin-top:3rem;padding-top:3rem}.block-joinup-front-page-explore-block{margin-bottom:3rem;padding-bottom:3rem;padding-top:3rem;position:relative}.block-joinup-front-page-explore-block:before{background:#f5f6f7;bottom:0;content:"";margin-left:calc(50% - 50vw);position:absolute;top:0;width:100vw;z-index:-1}@media (min-width:768px){.block-joinup-front-page-explore-block:before{background:linear-gradient(0deg,#fff 8rem,#f5f6f7 0)}}.block-joinup-front-page-explore-block .explore-block-title{border-bottom:1px solid rgba(20,59,118,.1);font-size:1.25rem;font-weight:700;margin-bottom:1.5rem;padding-bottom:1.5rem;text-transform:uppercase}.block-joinup-front-page-explore-block .explore-block-title:before{background-color:#eba843;content:"";display:inline-block;height:1em;margin-right:.5rem;-webkit-mask-image:url(../icons/eye.svg);mask-image:url(../icons/eye.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:-.125em;width:1em}.block-joinup-front-page-explore-block .nav-tabs{border:none;margin-bottom:1rem}@media (min-width:768px){.block-joinup-front-page-explore-block .nav-tabs{position:absolute;right:0;top:2.5rem}}.block-joinup-front-page-explore-block .nav-tabs .nav-link{background:none;border:none;color:#6d7173;margin:.5rem;padding:0 0 .4rem}@media (min-width:1200px){.block-joinup-front-page-explore-block .nav-tabs .nav-link{margin:1.5rem}}.block-joinup-front-page-explore-block .nav-tabs .nav-link.active{border-bottom:4px solid #000;color:#000}.block-joinup-front-page-explore-block .tab-content .tab-pane .see-more{display:block}.block-joinup-front-page-explore-block .tab-content .tab-pane .tab-data article{background-color:#fff;border-radius:.5rem;display:flex!important;flex-flow:column;height:100%;margin-right:1.5rem;padding:1.5rem}.block-joinup-front-page-explore-block .tab-content .tab-pane .tab-data article .layout{flex-grow:1}.block-joinup-front-page-explore-block .tab-content .tab-pane .tab-data article .layout .layout__region{display:flex;flex-direction:column;height:100%}.block-joinup-front-page-explore-block .tab-content .tab-pane .tab-data article h1{font-size:1.25rem;font-weight:500;line-height:1.5}.block-joinup-front-page-explore-block .tab-content .tab-pane .tab-data article h1 a{-webkit-line-clamp:2;-webkit-box-orient:vertical;color:#3d3f40;display:-webkit-box;overflow:hidden}.block-joinup-front-page-explore-block .tab-content .tab-pane .tab-data article .explore-item__description{-webkit-line-clamp:7;-webkit-box-orient:vertical;color:#6d7173;display:-webkit-box;flex-grow:1;margin-bottom:1.5rem;overflow:hidden}.block-joinup-front-page-explore-block .tab-content .tab-pane .tab-data article .date{color:#6d7173;font-size:.75rem}.block-joinup-front-page-explore-block .tab-content .tab-pane .tab-data article .date .field--name-created,.block-joinup-front-page-explore-block .tab-content .tab-pane .tab-data article .date .field--name-published-at{padding-top:.4rem}.block-joinup-front-page-explore-block .tab-content .tab-pane .tab-data article .read-more-wrapper{align-self:flex-end;margin-top:-1.8rem}.block-joinup-front-page-explore-block .tab-content .tab-pane .tab-data article .read-more{float:right}.block-joinup-front-page-explore-block .tab-content .tab-pane .tab-data article .read-more:hover{text-decoration:none}.glide__outer{margin-left:-1rem;overflow:hidden;padding:1rem;width:calc(100% + 2rem)}.glide__slides,.glide__track{overflow:visible}.glide__slide{box-shadow:0 .1rem .4rem .1rem rgba(0,0,0,.1);display:flex!important;height:auto!important}.glide__arrows{display:flex;float:left}.glide__arrow{background-color:#fff;border:none;height:40px;width:40px}.glide__arrow:hover{box-shadow:0 .1rem .4rem .1rem rgba(0,0,0,.1)}.glide__arrow--left{margin-right:1rem}.glide__arrow--left span.icon:before{-webkit-mask-image:url(../icons/chevron-left.svg);mask-image:url(../icons/chevron-left.svg)}.glide__arrow--left span.icon:before,.glide__arrow--right span.icon:before{background-color:#143b76;content:"";display:inline-block;height:1em;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:-.125em;width:1em}.glide__arrow--right span.icon:before{-webkit-mask-image:url(../icons/chevron-right.svg);mask-image:url(../icons/chevron-right.svg)}.glide__arrow--disabled,.glide__arrow:disabled{opacity:.3;pointer-events:none} /*# sourceMappingURL=homepage.min.css.map */ \ No newline at end of file diff --git a/web/themes/ventuno/assets/css/layout-paragraphs--builder.min.css b/web/themes/ventuno/assets/css/layout-paragraphs--builder.min.css new file mode 100644 index 0000000000000000000000000000000000000000..1e275d6d239137c16a66374f9e5457e892ef84a9 --- /dev/null +++ b/web/themes/ventuno/assets/css/layout-paragraphs--builder.min.css @@ -0,0 +1,2 @@ +.lp-builder .js-lpb-component{outline:1px dashed rgba(0,0,0,.5)}.lp-builder .js-lpb-component-list>.js-lpb-component{margin-bottom:1rem}.lp-builder .js-lpb-region~.js-lpb-region:before{-webkit-border-start:1px dashed rgba(0,0,0,.5);border-inline-start:1px dashed rgba(0,0,0,.5);content:"";display:block;height:100%;inset-inline-start:-.5px;position:absolute}.lp-builder .js-lpb-region.js-lpb-region{outline:none} +/*# sourceMappingURL=layout-paragraphs--builder.min.css.map */ \ No newline at end of file diff --git a/web/themes/ventuno/assets/css/menu--og--navigation.min.css b/web/themes/ventuno/assets/css/menu--og--navigation.min.css index c9efb5a9aa0b9703adf8c84d72f84558e0122741..7c8fe50e735239ad7396f8610466d7a7df58e236 100644 --- a/web/themes/ventuno/assets/css/menu--og--navigation.min.css +++ b/web/themes/ventuno/assets/css/menu--og--navigation.min.css @@ -1,2 +1,2 @@ -.menu--og--navigation{background-color:#f8f9fa;position:relative}.menu--og--navigation__menu{-ms-overflow-style:none;background-color:#f8f9fa;overflow-x:auto;overflow-y:hidden;padding:0;scrollbar-width:none;width:100%}.menu--og--navigation__menu::-webkit-scrollbar{display:none}.menu--og--navigation__menu:after{background-image:linear-gradient(90deg,transparent 50%,#f8f9fa);content:"";height:100%;left:calc(100% - 5rem);pointer-events:none;position:absolute;right:0;top:0;width:5rem}@media (min-width:992px){.menu--og--navigation__menu:after{display:none}}.menu--og--navigation__menu .nav-tabs{border:none;display:inline-flex;flex-wrap:nowrap}.menu--og--navigation__menu .nav-tabs .nav-link{border:none;border-radius:0;box-shadow:0 4px 0 0 transparent;color:#143b76;height:28px;margin:.25rem .75rem .25rem .25rem;padding:0 .25rem;white-space:nowrap}.menu--og--navigation__menu .nav-tabs .nav-link:first-of-type{margin-left:0}.menu--og--navigation__menu .nav-tabs .nav-link:not(:first-of-type){margin-left:.75rem}.menu--og--navigation__menu .nav-tabs .nav-link:hover{box-shadow:0 4px 0 0 #143b76}.menu--og--navigation__menu .nav-tabs .nav-link.active,.menu--og--navigation__menu .nav-tabs .nav-link.active.is-active,.menu--og--navigation__menu .nav-tabs .nav-link.is-active{background-color:unset;box-shadow:0 4px 0 0 #143b76;color:#143b76;font-weight:700}@media (min-width:992px){.menu--og--navigation__menu .nav-tabs .nav-link{max-width:calc(144px - 1.66667rem);overflow-x:hidden;text-overflow:ellipsis}}@media (min-width:1200px){.menu--og--navigation__menu .nav-tabs .nav-link{max-width:calc(174px - 1.66667rem)}}@media (min-width:1400px){.menu--og--navigation__menu .nav-tabs .nav-link{max-width:calc(204px - 1.66667rem)}}.menu--og--navigation__show-more{display:inline-block}.menu--og--navigation__show-more-btn{border:#143b76;border-radius:0;box-shadow:0 4px 0 0 transparent;color:#143b76;display:inline;font-weight:400;height:28px;margin:.25rem .5rem;padding:0 .25rem .25rem;white-space:nowrap}.menu--og--navigation__show-more-btn.show,.menu--og--navigation__show-more-btn:hover{box-shadow:0 4px 0 0 #143b76!important;color:#143b76;text-decoration:none}.menu--og--navigation__show-more .nav-link{border-radius:0;color:#143b76}.menu--og--navigation__show-more .nav-link.active.is-active,.menu--og--navigation__show-more .nav-link:hover{background-color:#e7f1fb;color:#143b76!important} +.menu--og--navigation{background-color:#f8f9fa;position:relative}.menu--og--navigation__menu{-ms-overflow-style:none;background-color:#f8f9fa;overflow-x:auto;overflow-y:hidden;padding:0;scrollbar-width:none;width:100%}.menu--og--navigation__menu::-webkit-scrollbar{display:none}.menu--og--navigation__menu:after{background-image:linear-gradient(90deg,transparent 50%,#f8f9fa);content:"";height:100%;left:calc(100% - 5rem);pointer-events:none;position:absolute;right:0;top:0;width:5rem}@media (min-width:992px){.menu--og--navigation__menu:after{display:none}}.menu--og--navigation__menu .nav:not(.nav-pills){border:none;display:inline-flex;flex-wrap:nowrap}.menu--og--navigation__menu .nav:not(.nav-pills) .nav-item{margin:.25rem .75rem .25rem .25rem}.menu--og--navigation__menu .nav:not(.nav-pills) .nav-item:first-of-type{margin-left:0}.menu--og--navigation__menu .nav:not(.nav-pills) .nav-item:not(:first-of-type){margin-left:.75rem}.menu--og--navigation__menu .nav:not(.nav-pills) .nav-link{border:none;border-radius:0;box-shadow:0 4px 0 0 transparent;color:#143b76;height:28px;padding:0 .25rem;white-space:nowrap}.menu--og--navigation__menu .nav:not(.nav-pills) .nav-link:hover{box-shadow:0 4px 0 0 #143b76}.menu--og--navigation__menu .nav:not(.nav-pills) .nav-link.active,.menu--og--navigation__menu .nav:not(.nav-pills) .nav-link.active.is-active,.menu--og--navigation__menu .nav:not(.nav-pills) .nav-link.is-active{background-color:unset;box-shadow:0 4px 0 0 #143b76;color:#143b76;font-weight:700}@media (min-width:992px){.menu--og--navigation__menu .nav:not(.nav-pills) .nav-link{max-width:calc(144px - 1.66667rem);overflow-x:hidden;text-overflow:ellipsis}}@media (min-width:1200px){.menu--og--navigation__menu .nav:not(.nav-pills) .nav-link{max-width:calc(174px - 1.66667rem)}}@media (min-width:1400px){.menu--og--navigation__menu .nav:not(.nav-pills) .nav-link{max-width:calc(204px - 1.66667rem)}}.menu--og--navigation__show-more{display:inline-block}.menu--og--navigation__show-more-btn{border:#143b76;border-radius:0;box-shadow:0 4px 0 0 transparent;color:#143b76;display:inline;font-weight:400;height:28px;margin:.25rem .5rem;padding:0 .25rem .25rem;white-space:nowrap}.menu--og--navigation__show-more-btn.show,.menu--og--navigation__show-more-btn:hover{box-shadow:0 4px 0 0 #143b76!important;color:#143b76;text-decoration:none}.menu--og--navigation__show-more .nav-link{border-radius:0;color:#143b76}.menu--og--navigation__show-more .nav-link.active.is-active,.menu--og--navigation__show-more .nav-link:hover{background-color:#e7f1fb;color:#143b76!important} /*# sourceMappingURL=menu--og--navigation.min.css.map */ \ No newline at end of file diff --git a/web/themes/ventuno/assets/css/paragraph--carousel.min.css b/web/themes/ventuno/assets/css/paragraph--carousel.min.css index c42f0ac95828642719a7876bf7e8e530df30f8fc..6b2317c02ed9f7efbc6384cca591d9c631ae6865 100644 --- a/web/themes/ventuno/assets/css/paragraph--carousel.min.css +++ b/web/themes/ventuno/assets/css/paragraph--carousel.min.css @@ -1,2 +1,2 @@ -.paragraph--carousel__title{flex:1 1 auto}.paragraph--carousel .glide__outer{margin-left:-.5rem;width:calc(100% + 1rem)}.paragraph--carousel .glide__arrow{height:40px;width:40px}.paragraph--carousel .glide__slides .tile{white-space:normal} +.paragraph--carousel img{margin-bottom:0}.paragraph--carousel__title{flex:1 1 auto}.paragraph--carousel .glide__outer{margin-left:-.5rem;width:calc(100% + 1rem)}.paragraph--carousel .glide__arrow{height:40px;width:40px}.paragraph--carousel .glide__slides .tile{white-space:normal} /*# sourceMappingURL=paragraph--carousel.min.css.map */ \ No newline at end of file diff --git a/web/themes/ventuno/assets/css/paragraph--heading.min.css b/web/themes/ventuno/assets/css/paragraph--heading.min.css new file mode 100644 index 0000000000000000000000000000000000000000..61316395dedf60cdd4ffadd6ded1dbf498205722 --- /dev/null +++ b/web/themes/ventuno/assets/css/paragraph--heading.min.css @@ -0,0 +1,2 @@ +.paragraph--heading.paragraph h2,.paragraph--heading.paragraph h3,.paragraph--heading.paragraph h4,.paragraph--heading.paragraph h5{margin-bottom:1rem;margin-top:0} +/*# sourceMappingURL=paragraph--heading.min.css.map */ \ No newline at end of file diff --git a/web/themes/ventuno/assets/css/paragraph--layout.min.css b/web/themes/ventuno/assets/css/paragraph--layout.min.css new file mode 100644 index 0000000000000000000000000000000000000000..4af4092f86979881be87ee89ae8601762cc5dd46 --- /dev/null +++ b/web/themes/ventuno/assets/css/paragraph--layout.min.css @@ -0,0 +1,2 @@ +.paragraph--layout{padding-bottom:1.125rem;padding-top:1.125rem}.paragraph--layout.lpb-layout{padding:1rem}.paragraph--layout:first-of-type:not(.paragraph--layout--light):not(.paragraph--layout--secondary):not(.lpb-layout){padding-top:0}@media (min-width:992px){.paragraph--layout:first-of-type:not(.paragraph--layout--light):not(.paragraph--layout--secondary):not(.lpb-layout){padding-top:0}.paragraph--layout{padding-bottom:2.25rem;padding-top:2.25rem}}.paragraph--layout--light,.paragraph--layout--secondary{padding:2rem 0;position:relative}@media (min-width:576px){.paragraph--layout--light,.paragraph--layout--secondary{padding:4rem 0}}@media (min-width:992px){.paragraph--layout--light,.paragraph--layout--secondary{padding:5rem 0}}.paragraph--layout--light:before,.paragraph--layout--secondary:before{bottom:0;content:"";height:100%;left:-.75rem;position:absolute;width:100vw;z-index:-1}@media (min-width:576px){.paragraph--layout--light:before,.paragraph--layout--secondary:before{left:calc(-50vw + 258px)}}@media (min-width:768px){.paragraph--layout--light:before,.paragraph--layout--secondary:before{left:calc(-50vw + 348px)}}@media (min-width:992px){.paragraph--layout--light:before,.paragraph--layout--secondary:before{left:calc(-50vw + 468px)}}@media (min-width:1200px){.paragraph--layout--light:before,.paragraph--layout--secondary:before{left:calc(-50vw + 558px)}}@media (min-width:1400px){.paragraph--layout--light:before,.paragraph--layout--secondary:before{left:calc(-50vw + 648px)}}.paragraph--layout--light:before{background-color:#f8f9fa}.paragraph--layout--secondary:before{background-color:#e7f1fb}.lp-builder:not(.is-navigating) .paragraph--layout.js-lpb-component:focus-within,.lp-builder:not(.is-navigating) .paragraph--layout.js-lpb-component:hover{outline:5px solid #eba843} +/*# sourceMappingURL=paragraph--layout.min.css.map */ \ No newline at end of file diff --git a/web/themes/ventuno/assets/css/paragraph--poll.min.css b/web/themes/ventuno/assets/css/paragraph--poll.min.css new file mode 100644 index 0000000000000000000000000000000000000000..9620172f937f14e2ddca40ccba185cd39823d404 --- /dev/null +++ b/web/themes/ventuno/assets/css/paragraph--poll.min.css @@ -0,0 +1,2 @@ +.paragraph--poll{position:relative}.paragraph--poll .col-form-label{padding-bottom:0;padding-top:0}.paragraph--poll .form-item.form-item-choice.form-check{padding:0}.paragraph--poll .form-item.form-item-choice.form-check:not(:last-of-type){border-bottom:1px solid #dadee0}.paragraph--poll .form-radio.form-check-input{display:none}.paragraph--poll .form-check-label.option.form-label{cursor:pointer;margin:0;padding:1rem 0}.paragraph--poll .poll .choice-item:not(:last-of-type){border-bottom:1px solid #dadee0}.paragraph--poll .poll .choice-result.selected,.paragraph--poll .poll .choice-title.selected{color:#0f7b52;margin-inline:1rem}.paragraph--poll .poll .choice-result.not-selected,.paragraph--poll .poll .choice-title.not-selected{color:#143b76;margin-inline:1rem}.paragraph--poll .poll .bar{background-color:transparent;height:2rem;position:absolute;top:.6rem;width:100%}.paragraph--poll .poll .bar .foreground{border-radius:50rem;height:2rem}.paragraph--poll .poll .bar .foreground.selected{background-color:rgba(24,191,128,.1)}.paragraph--poll .poll .bar .foreground.not-selected{background-color:rgba(16,115,222,.1)}.paragraph--poll .form-actions{margin-bottom:0;margin-top:1rem}@media (min-width:576px){.paragraph--poll .form-actions{margin-top:0}.paragraph--poll [data-drupal-selector=edit-cancel]{bottom:-.1rem;position:absolute}} +/*# sourceMappingURL=paragraph--poll.min.css.map */ \ No newline at end of file diff --git a/web/themes/ventuno/assets/css/paragraph--testimony.min.css b/web/themes/ventuno/assets/css/paragraph--testimony.min.css new file mode 100644 index 0000000000000000000000000000000000000000..34b97c20a0e4880449569f79f8329c8b50549871 --- /dev/null +++ b/web/themes/ventuno/assets/css/paragraph--testimony.min.css @@ -0,0 +1,2 @@ +@charset "UTF-8";.paragraph--testimony{display:flex;flex-direction:column;margin-bottom:4rem}@media (min-width:768px){.paragraph--testimony{height:100%;margin-bottom:2rem}}.paragraph--testimony .testimony__quote{margin-bottom:1rem}.paragraph--testimony .testimony__quote:before{color:#1073de;content:"“";display:inline-block;font-size:5rem;line-height:0;position:relative;top:2rem}.paragraph--testimony .testimony__quote:after{color:#1073de;content:"â€";display:inline-block;font-size:5rem;line-height:0;margin-top:-1em;position:relative;top:3.5rem}.paragraph--testimony .testimony__fig{align-items:center;display:flex}@media (min-width:768px) and (max-width:991.98px){.paragraph--testimony .testimony__fig{flex-direction:column}}.paragraph--testimony .testimony__img{aspect-ratio:16/9;background:linear-gradient(#143b76,#143b76) padding-box,linear-gradient(180deg,hsla(0,0%,100%,.15),hsla(0,0%,100%,0)) border-box;border:2px solid transparent;border-radius:2rem;margin-left:-2.5rem;-o-object-fit:cover;object-fit:cover;overflow:hidden;width:70%}@media (min-width:576px){.paragraph--testimony .testimony__img{margin-left:0}}@media (min-width:768px) and (max-width:991.98px){.paragraph--testimony .testimony__img{width:100%}}@media (min-width:992px){.paragraph--testimony .testimony__img{width:50%}}.paragraph--testimony .testimony__img img{width:100%}.paragraph--testimony .testimony__figcaption{color:#6d7173;display:flex;flex-direction:column;line-height:1.5;margin-left:1rem;width:calc(30% + 1.5rem)}@media (min-width:576px){.paragraph--testimony .testimony__figcaption{width:calc(30% - 1rem)}}@media (min-width:768px) and (max-width:991.98px){.paragraph--testimony .testimony__figcaption{height:4rem;margin-top:1rem;width:100%}}@media (min-width:992px){.paragraph--testimony .testimony__figcaption{width:50%;width:calc(50% - 1rem)}}.paragraph--testimony .testimony__author{font-size:.875rem;margin-bottom:0}.paragraph--testimony .testimony__bio{font-size:.75rem;line-height:1.2;margin-bottom:0}.paragraph--testimony .testimony__cite{display:inline-block;font-size:.625rem;font-style:normal;line-height:1.2} +/*# sourceMappingURL=paragraph--testimony.min.css.map */ \ No newline at end of file diff --git a/web/themes/ventuno/assets/css/paragraph--video.min.css b/web/themes/ventuno/assets/css/paragraph--video.min.css new file mode 100644 index 0000000000000000000000000000000000000000..b05306ef8db2ba0860a0706c59778f14affdba73 --- /dev/null +++ b/web/themes/ventuno/assets/css/paragraph--video.min.css @@ -0,0 +1,2 @@ +.paragraph--video.js-lpb-component .video-embed-field-responsive-video iframe{pointer-events:none}.paragraph--video:not(:last-child){margin-bottom:1rem} +/*# sourceMappingURL=paragraph--video.min.css.map */ \ No newline at end of file diff --git a/web/themes/ventuno/assets/css/paragraph.min.css b/web/themes/ventuno/assets/css/paragraph.min.css index 1380877ba9efeeb5f191e7609f055ed5ca141c93..18dab7acb47537290a0f2f1863425ab6dd77ce87 100644 --- a/web/themes/ventuno/assets/css/paragraph.min.css +++ b/web/themes/ventuno/assets/css/paragraph.min.css @@ -1,2 +1,2 @@ -.fieldset--textarea figure,.fieldset--textarea img,.paragraph figure,.paragraph img{height:auto;margin-bottom:1rem;max-width:100%}@media (min-width:576px){.fieldset--textarea figure.align-left,.fieldset--textarea img.align-left,.paragraph figure.align-left,.paragraph img.align-left{float:left;margin-right:1.25rem}.fieldset--textarea figure.align-right,.fieldset--textarea img.align-right,.paragraph figure.align-right,.paragraph img.align-right{float:right;margin-left:1.25rem}}@media (min-width:768px){.fieldset--textarea table,.paragraph table{table-layout:fixed}}.fieldset--textarea table td,.paragraph table td{min-width:100px;vertical-align:top}.fieldset--textarea figure figcaption,.paragraph figure figcaption{font-size:.875rem}.fieldset--textarea blockquote,.paragraph blockquote{border-left:1.25rem solid #1073de;margin-left:0;margin-right:0;overflow:hidden;padding:1.5rem 0 1.5rem 1.5rem}@media (min-width:768px){.fieldset--textarea blockquote,.paragraph blockquote{margin-left:100px}}.fieldset--textarea h1,.fieldset--textarea h2:not(.accordion-header),.fieldset--textarea h3,.fieldset--textarea h4,.fieldset--textarea h5,.fieldset--textarea h6,.paragraph h1,.paragraph h2:not(.accordion-header),.paragraph h3,.paragraph h4,.paragraph h5,.paragraph h6{margin-top:1em}.paragraph.paragraph--carousel img{margin-bottom:0} +.fieldset--textarea figure,.fieldset--textarea img,.paragraph figure,.paragraph img{height:auto;margin-bottom:1rem;max-width:100%}@media (min-width:576px){.fieldset--textarea figure.align-left,.fieldset--textarea img.align-left,.paragraph figure.align-left,.paragraph img.align-left{float:left;margin-right:1.25rem}.fieldset--textarea figure.align-right,.fieldset--textarea img.align-right,.paragraph figure.align-right,.paragraph img.align-right{float:right;margin-left:1.25rem}}@media (min-width:768px){.fieldset--textarea table,.paragraph table{table-layout:fixed}}.fieldset--textarea table td,.paragraph table td{min-width:100px;vertical-align:top}.fieldset--textarea figure figcaption,.paragraph figure figcaption{font-size:.875rem}.fieldset--textarea blockquote,.paragraph blockquote{border-left:1.25rem solid #1073de;margin-left:0;margin-right:0;overflow:hidden;padding:1.5rem 0 1.5rem 1.5rem}@media (min-width:768px){.fieldset--textarea blockquote,.paragraph blockquote{margin-left:100px}}.fieldset--textarea h1,.fieldset--textarea h2:not(.accordion-header),.fieldset--textarea h3,.fieldset--textarea h4,.fieldset--textarea h5,.fieldset--textarea h6,.paragraph h1,.paragraph h2:not(.accordion-header),.paragraph h3,.paragraph h4,.paragraph h5,.paragraph h6{margin-top:1em} /*# sourceMappingURL=paragraph.min.css.map */ \ No newline at end of file diff --git a/web/themes/ventuno/assets/css/searchpage.min.css b/web/themes/ventuno/assets/css/searchpage.min.css index 92a9ec82d223f99122fb6efc6e7f98593ca1c739..8824b5f190896d9f619d40466bd687691f9c0fa2 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;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);display:flex;flex-direction:column;height:var(--bs-card-height);min-width:0;position:relative}.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.414z'/%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 width='16' height='16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0ZM5.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.293 5.354 4.646Z' fill='%236C757D'/%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{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;visibility:visible;white-space:nowrap;width:1px}.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 width='16' height='16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0ZM8 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 4Zm.002 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z' fill='%23D72E3D'/%3E%3C/svg%3E")}.form-control.is-valid,textarea.form-control.is-valid{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0Zm-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.05Z' fill='%2328A745'/%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 width='16' height='16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0ZM8 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 4Zm.002 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z' fill='%23D72E3D'/%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 width='16' height='16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0Zm-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.05Z' fill='%2328A745'/%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{align-items:center;background:#fff;border:none;border-radius:50%;display:inline-flex;font-size:1em;font-weight:300;height:12px;justify-content:center;margin-left:.3rem;padding:0;width:12px}.badge .icon--close svg{height:6px;margin:0;width:6px}a.badge{text-decoration:none}a.badge:focus-visible{outline:none}.badge.bg-primary,.badge.bg-primary a{color:#fff}.badge.bg-primary .icon--close,.badge.bg-primary a .icon--close{color:#143b76}.badge-outline-primary,.badge-outline-primary a{color:#143b76!important}.badge-outline-primary{background:transparent!important;border:1px solid #143b76}.badge-outline-primary .icon--close{background:#143b76;color:#fff}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.bg-primary,a.badge:focus-within.bg-primary,a.badge:hover.bg-primary{background-color:#113264!important}a.badge.badge.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.bg-secondary .icon--close,.badge.bg-secondary a .icon--close{color:#e7f1fb}.badge-outline-secondary a{color:#e7f1fb!important}.badge-outline-secondary{background:transparent!important;border:1px solid #e7f1fb;color:#e7f1fb!important}.badge-outline-secondary .icon--close{background:#e7f1fb;color:#fff}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.bg-secondary,a.badge:focus-within.bg-secondary,a.badge:hover.bg-secondary{background-color:#c4cdd5!important}a.badge.badge.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.bg-success .icon--close,.badge.bg-success a .icon--close{color:#18bf80}.badge-outline-success,.badge-outline-success a{color:#18bf80!important}.badge-outline-success{background:transparent!important;border:1px solid #18bf80}.badge-outline-success .icon--close{background:#18bf80;color:#fff}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.bg-success,a.badge:focus-within.bg-success,a.badge:hover.bg-success{background-color:#14a26d!important}a.badge.badge.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.bg-info .icon--close,.badge.bg-info a .icon--close{color:#0d768b}.badge-outline-info,.badge-outline-info a{color:#0d768b!important}.badge-outline-info{background:transparent!important;border:1px solid #0d768b}.badge-outline-info .icon--close{background:#0d768b;color:#fff}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.bg-info,a.badge:focus-within.bg-info,a.badge:hover.bg-info{background-color:#0b6476!important}a.badge.badge.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.bg-warning .icon--close,.badge.bg-warning a .icon--close{background:#000;color:#eba843}.badge-outline-warning,.badge-outline-warning a{color:#eba843!important}.badge-outline-warning{background:transparent!important;border:1px solid #eba843}.badge-outline-warning .icon--close{background:#eba843;color:#fff}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.bg-warning,a.badge:focus-within.bg-warning,a.badge:hover.bg-warning{background-color:#c88f39!important}a.badge.badge.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.bg-danger .icon--close,.badge.bg-danger a .icon--close{color:#eb3434}.badge-outline-danger,.badge-outline-danger a{color:#eb3434!important}.badge-outline-danger{background:transparent!important;border:1px solid #eb3434}.badge-outline-danger .icon--close{background:#eb3434;color:#fff}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.bg-danger,a.badge:focus-within.bg-danger,a.badge:hover.bg-danger{background-color:#c82c2c!important}a.badge.badge.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.bg-light .icon--close,.badge.bg-light a .icon--close{background:#000;color:#f8f9fa}.badge-outline-light,.badge-outline-light a{color:#f8f9fa!important}.badge-outline-light{background:transparent!important;border:1px solid #f8f9fa}.badge-outline-light .icon--close{background:#f8f9fa;color:#000}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.bg-light,a.badge:focus-within.bg-light,a.badge:hover.bg-light{background-color:#d3d4d5!important}a.badge.badge.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.bg-dark .icon--close,.badge.bg-dark a .icon--close{color:#212529}.badge-outline-dark,.badge-outline-dark a{color:#212529!important}.badge-outline-dark{background:transparent!important;border:1px solid #212529}.badge-outline-dark .icon--close{background:#212529;color:#fff}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.bg-dark,a.badge:focus-within.bg-dark,a.badge:hover.bg-dark{background-color:#1c1f23!important}a.badge.badge.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.bg-brand .icon--close,.badge.bg-brand a .icon--close{color:#1073de}.badge-outline-brand,.badge-outline-brand a{color:#1073de!important}.badge-outline-brand{background:transparent!important;border:1px solid #1073de}.badge-outline-brand .icon--close{background:#1073de;color:#fff}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.bg-brand,a.badge:focus-within.bg-brand,a.badge:hover.bg-brand{background-color:#0e62bd!important}a.badge.badge.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 .ss-values{font-size:1rem}.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:center;vertical-align:baseline;white-space:nowrap}.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 width='16' height='17' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M16 8.5a8 8 0 1 1-16 0 8 8 0 0 1 16 0ZM5.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.793 5.354 5.146Z' fill='%23F8F9FA'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;border-radius:50%;bottom:-2px;content:"";display:inline-block;height:1rem;padding:15px;position:absolute;right:0;transform:scale(.8);width:1rem}.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.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:1rem 1rem}.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 width='16' height='16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0ZM8 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 4Zm.002 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z' fill='%23D72E3D'/%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 width='16' height='16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0Zm-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.05Z' fill='%2328A745'/%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}.joinup-search-filters .bcl-offcanvas{box-shadow:none;z-index:503}@media (min-width:992px){.joinup-search-filters .bcl-offcanvas{border:none;position:relative;transform:none;visibility:visible;width:auto;z-index:49}}.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 .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-left:0}.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:focus{border-color:#8a9dbb;box-shadow:0 0 0 .25rem rgba(20,59,118,.25);outline:0}.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{margin-bottom:.75rem}.joinup-search-filters .facet-item .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}@media (min-width:992px){.view-search .view-header .views-exposed-form{margin-top:1rem}}.view-search .view-header .views-exposed-form .form-item-keys{flex-basis:100%;margin-bottom:1rem!important}@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-keys label{clip:rect(1px,1px,1px,1px);word-wrap:normal;height:1px;overflow:hidden;position:absolute!important;width:1px}.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}@media (min-width:768px){.view-search .view-header .views-exposed-form .form-item-sort-by{flex-basis:40%;justify-content:end}}.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}.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}.view-search [class$=logo]{display:flex;justify-content:center} +.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;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);display:flex;flex-direction:column;height:var(--bs-card-height);min-width:0;position:relative}.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.414z'/%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 width='16' height='16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0ZM5.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.293 5.354 4.646Z' fill='%236C757D'/%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{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;visibility:visible;white-space:nowrap;width:1px}.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 width='16' height='16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0ZM8 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 4Zm.002 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z' fill='%23D72E3D'/%3E%3C/svg%3E")}.form-control.is-valid,textarea.form-control.is-valid{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0Zm-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.05Z' fill='%2328A745'/%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 width='16' height='16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0ZM8 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 4Zm.002 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z' fill='%23D72E3D'/%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 width='16' height='16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0Zm-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.05Z' fill='%2328A745'/%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{align-items:center;background:#fff;border:none;border-radius:50%;display:inline-flex;font-size:1em;font-weight:300;height:12px;justify-content:center;margin-left:.3rem;padding:0;width:12px}.badge .icon--close svg{height:6px;margin:0;width:6px}a.badge{text-decoration:none}a.badge:focus-visible{outline:none}.badge.bg-primary,.badge.bg-primary a{color:#fff}.badge.bg-primary .icon--close,.badge.bg-primary a .icon--close{color:#143b76}.badge-outline-primary,.badge-outline-primary a{color:#143b76!important}.badge-outline-primary{background:transparent!important;border:1px solid #143b76}.badge-outline-primary .icon--close{background:#143b76;color:#fff}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.bg-primary,a.badge:focus-within.bg-primary,a.badge:hover.bg-primary{background-color:#113264!important}a.badge.badge.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.bg-secondary .icon--close,.badge.bg-secondary a .icon--close{color:#e7f1fb}.badge-outline-secondary a{color:#e7f1fb!important}.badge-outline-secondary{background:transparent!important;border:1px solid #e7f1fb;color:#e7f1fb!important}.badge-outline-secondary .icon--close{background:#e7f1fb;color:#fff}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.bg-secondary,a.badge:focus-within.bg-secondary,a.badge:hover.bg-secondary{background-color:#c4cdd5!important}a.badge.badge.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.bg-success .icon--close,.badge.bg-success a .icon--close{color:#18bf80}.badge-outline-success,.badge-outline-success a{color:#18bf80!important}.badge-outline-success{background:transparent!important;border:1px solid #18bf80}.badge-outline-success .icon--close{background:#18bf80;color:#fff}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.bg-success,a.badge:focus-within.bg-success,a.badge:hover.bg-success{background-color:#14a26d!important}a.badge.badge.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.bg-info .icon--close,.badge.bg-info a .icon--close{color:#0d768b}.badge-outline-info,.badge-outline-info a{color:#0d768b!important}.badge-outline-info{background:transparent!important;border:1px solid #0d768b}.badge-outline-info .icon--close{background:#0d768b;color:#fff}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.bg-info,a.badge:focus-within.bg-info,a.badge:hover.bg-info{background-color:#0b6476!important}a.badge.badge.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.bg-warning .icon--close,.badge.bg-warning a .icon--close{background:#000;color:#eba843}.badge-outline-warning,.badge-outline-warning a{color:#eba843!important}.badge-outline-warning{background:transparent!important;border:1px solid #eba843}.badge-outline-warning .icon--close{background:#eba843;color:#fff}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.bg-warning,a.badge:focus-within.bg-warning,a.badge:hover.bg-warning{background-color:#c88f39!important}a.badge.badge.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.bg-danger .icon--close,.badge.bg-danger a .icon--close{color:#eb3434}.badge-outline-danger,.badge-outline-danger a{color:#eb3434!important}.badge-outline-danger{background:transparent!important;border:1px solid #eb3434}.badge-outline-danger .icon--close{background:#eb3434;color:#fff}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.bg-danger,a.badge:focus-within.bg-danger,a.badge:hover.bg-danger{background-color:#c82c2c!important}a.badge.badge.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.bg-light .icon--close,.badge.bg-light a .icon--close{background:#000;color:#f8f9fa}.badge-outline-light,.badge-outline-light a{color:#f8f9fa!important}.badge-outline-light{background:transparent!important;border:1px solid #f8f9fa}.badge-outline-light .icon--close{background:#f8f9fa;color:#000}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.bg-light,a.badge:focus-within.bg-light,a.badge:hover.bg-light{background-color:#d3d4d5!important}a.badge.badge.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.bg-dark .icon--close,.badge.bg-dark a .icon--close{color:#212529}.badge-outline-dark,.badge-outline-dark a{color:#212529!important}.badge-outline-dark{background:transparent!important;border:1px solid #212529}.badge-outline-dark .icon--close{background:#212529;color:#fff}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.bg-dark,a.badge:focus-within.bg-dark,a.badge:hover.bg-dark{background-color:#1c1f23!important}a.badge.badge.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.bg-brand .icon--close,.badge.bg-brand a .icon--close{color:#1073de}.badge-outline-brand,.badge-outline-brand a{color:#1073de!important}.badge-outline-brand{background:transparent!important;border:1px solid #1073de}.badge-outline-brand .icon--close{background:#1073de;color:#fff}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.bg-brand,a.badge:focus-within.bg-brand,a.badge:hover.bg-brand{background-color:#0e62bd!important}a.badge.badge.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 .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:center;vertical-align:baseline;white-space:nowrap}.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 width='16' height='17' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M16 8.5a8 8 0 1 1-16 0 8 8 0 0 1 16 0ZM5.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.793 5.354 5.146Z' fill='%23F8F9FA'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;border-radius:50%;bottom:-2px;content:"";display:inline-block;height:1rem;padding:15px;position:absolute;right:0;transform:scale(.8);width:1rem}.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.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:1rem 1rem}.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 width='16' height='16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0ZM8 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 4Zm.002 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z' fill='%23D72E3D'/%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 width='16' height='16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0Zm-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.05Z' fill='%2328A745'/%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}.joinup-search-filters .bcl-offcanvas{box-shadow:none;z-index:503}@media (min-width:992px){.joinup-search-filters .bcl-offcanvas{border:none;position:relative;transform:none;visibility:visible;width:auto;z-index:49}}.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 .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-left:0}.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:focus{border-color:#8a9dbb;box-shadow:0 0 0 .25rem rgba(20,59,118,.25);outline:0}.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{margin-bottom:.75rem}.joinup-search-filters .facet-item .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}@media (min-width:992px){.view-search .view-header .views-exposed-form{margin-top:1rem}}.view-search .view-header .views-exposed-form .form-item-keys{flex-basis:100%;margin-bottom:1rem!important}@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-keys label{clip:rect(1px,1px,1px,1px);word-wrap:normal;height:1px;overflow:hidden;position:absolute!important;width:1px}.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}@media (min-width:768px){.view-search .view-header .views-exposed-form .form-item-sort-by{flex-basis:40%;justify-content:end}}.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}.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}.view-search [class$=logo]{display:flex;justify-content:center} /*# sourceMappingURL=searchpage.min.css.map */ \ No newline at end of file diff --git a/web/themes/ventuno/assets/css/theme.min.css b/web/themes/ventuno/assets/css/theme.min.css index 495a7057aa449b8574994a73354b893fb2de0d12..f92ed7d61ad9c854ecc4f45b78422ea2ce5def5a 100644 --- a/web/themes/ventuno/assets/css/theme.min.css +++ b/web/themes/ventuno/assets/css/theme.min.css @@ -1,2 +1,2 @@ -@charset "UTF-8";@import "fonts/cyrillic-400.css";@import "fonts/latin-400.css";@import "fonts/latin-ext-400.css";@import "fonts/greek-400.css";@import "fonts/cyrillic-500.css";@import "fonts/latin-500.css";@import "fonts/latin-ext-500.css";@import "fonts/greek-500.css";@import "fonts/cyrillic-700.css";@import "fonts/latin-700.css";@import "fonts/latin-ext-700.css";@import "fonts/greek-700.css";@import "fonts/cyrillic-400-italic.css";@import "fonts/latin-400-italic.css";@import "fonts/latin-ext-400-italic.css";@import "fonts/greek-400-italic.css";@import "fonts/cyrillic-500-italic.css";@import "fonts/latin-500-italic.css";@import "fonts/latin-ext-500-italic.css";@import "fonts/greek-500-italic.css";@import "fonts/cyrillic-700-italic.css";@import "fonts/latin-700-italic.css";@import "fonts/latin-ext-700-italic.css";@import "fonts/greek-700-italic.css";.fs-sm,.fs-xs{color:#858a8c}.fw-medium{color:#555859}.fw-medium.h2,.fw-medium.h3,.fw-medium.h4,.h1,h1,h2.fw-medium,h3.fw-medium,h4.fw-medium{color:#113264}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{color:#143b76;font-weight:400;line-height:1.2;margin-bottom:.5rem;margin-top:0}.h1,h1{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h1,h1{font-size:2rem}}.h2,h2{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h2,h2{font-size:1.5rem}}.h3,h3{font-size:1.25rem}.h4,.h5,.h6,h4,h5,h6{font-size:1rem}.small,small{font-size:.875em}.mark,mark{background-color:#fff3cd;padding:.1875em}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:400;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:400;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:400;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:400;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:400;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:400;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-inline,.list-unstyled{list-style:none;padding-left:0}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{font-size:1.25rem;margin-bottom:1rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{color:#6d7173;font-size:.875em;margin-bottom:1rem;margin-top:-1rem}.blockquote-footer:before{content:"— "}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{height:auto;transition:width .35s ease;width:0}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}a{text-underline-offset:2px}a:not(.text-underline-hover):not(.standalone){text-decoration-color:rgba(20,59,118,.3)}a:not(.text-underline-hover):not(.standalone):visited{text-decoration-color:rgba(111,66,193,.3)}a:not(.text-underline-hover):not(.standalone):hover{text-decoration-color:currentColor}a:not(.text-underline-hover):not(.standalone):hover:visited{text-decoration-color:#6f42c1}a.standalone,a.text-underline-hover{text-decoration-color:transparent}a.standalone:hover,a.text-underline-hover:hover{text-decoration-color:currentColor}a.standalone:hover:visited,a.text-underline-hover:hover:visited{text-decoration-color:#6f42c1}svg{fill:currentColor}@media (max-width:767.98px){.n-mx-container{margin-left:-1.5rem;margin-right:-1.5rem;padding-left:1.5rem;padding-right:1.5rem}}.bg-lighter{background-color:#fafbfc}.bg-gray-200{background-color:#f5f6f7}.bg-gray-400{background-color:#a2a8ab}.border-gray-300{border-color:#dadee0}.grid-3-9{grid-template-columns:25% 75%}.clearfix:after{clear:both;content:"";display:block}.text-bg-primary{background-color:RGBA(20,59,118,var(--bs-bg-opacity,1))!important;color:#fff!important}.text-bg-secondary{background-color:RGBA(231,241,251,var(--bs-bg-opacity,1))!important;color:#000!important}.text-bg-success{background-color:RGBA(24,191,128,var(--bs-bg-opacity,1))!important;color:#000!important}.text-bg-info{background-color:RGBA(13,118,139,var(--bs-bg-opacity,1))!important;color:#fff!important}.text-bg-warning{background-color:RGBA(235,168,67,var(--bs-bg-opacity,1))!important;color:#000!important}.text-bg-danger{background-color:RGBA(235,52,52,var(--bs-bg-opacity,1))!important;color:#000!important}.text-bg-light{background-color:RGBA(248,249,250,var(--bs-bg-opacity,1))!important;color:#000!important}.text-bg-dark{background-color:RGBA(33,37,41,var(--bs-bg-opacity,1))!important;color:#fff!important}.text-bg-brand{background-color:RGBA(16,115,222,var(--bs-bg-opacity,1))!important;color:#fff!important}.link-primary{color:#143b76!important}.link-primary:focus,.link-primary:hover{color:#102f5e!important}.link-secondary{color:#e7f1fb!important}.link-secondary:focus,.link-secondary:hover{color:#ecf4fc!important}.link-success{color:#18bf80!important}.link-success:focus,.link-success:hover{color:#46cc99!important}.link-info{color:#0d768b!important}.link-info:focus,.link-info:hover{color:#0a5e6f!important}.link-warning{color:#eba843!important}.link-warning:focus,.link-warning:hover{color:#efb969!important}.link-danger{color:#eb3434!important}.link-danger:focus,.link-danger:hover{color:#ef5d5d!important}.link-light{color:#f8f9fa!important}.link-light:focus,.link-light:hover{color:#f9fafb!important}.link-dark{color:#212529!important}.link-dark:focus,.link-dark:hover{color:#1a1e21!important}.link-brand{color:#1073de!important}.link-brand:focus,.link-brand:hover{color:#0d5cb2!important}.ratio{position:relative;width:100%}.ratio:before{content:"";display:block;padding-top:var(--bs-aspect-ratio)}.ratio>*{height:100%;left:0;position:absolute;top:0;width:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.8571428571%}.fixed-top{top:0}.fixed-bottom,.fixed-top{left:0;position:fixed;right:0;z-index:60}.fixed-bottom{bottom:0}.sticky-top{position:sticky;top:0;z-index:50}.sticky-bottom{bottom:0;position:sticky;z-index:50}@media (min-width:576px){.sticky-sm-top{position:sticky;top:0;z-index:50}.sticky-sm-bottom{bottom:0;position:sticky;z-index:50}}@media (min-width:768px){.sticky-md-top{position:sticky;top:0;z-index:50}.sticky-md-bottom{bottom:0;position:sticky;z-index:50}}@media (min-width:992px){.sticky-lg-top{position:sticky;top:0;z-index:50}.sticky-lg-bottom{bottom:0;position:sticky;z-index:50}}@media (min-width:1200px){.sticky-xl-top{position:sticky;top:0;z-index:50}.sticky-xl-bottom{bottom:0;position:sticky;z-index:50}}@media (min-width:1400px){.sticky-xxl-top{position:sticky;top:0;z-index:50}.sticky-xxl-bottom{bottom:0;position:sticky;z-index:50}}.hstack{align-items:center;flex-direction:row}.hstack,.vstack{align-self:stretch;display:flex}.vstack{flex:1 1 auto;flex-direction:column}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){clip:rect(0,0,0,0)!important;border:0!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}.stretched-link:after{bottom:0;content:"";left:0;position:absolute;right:0;top:0;z-index:1}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{align-self:stretch;background-color:currentcolor;display:inline-block;min-height:1em;opacity:.25;width:1px}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .1rem .4rem .1rem rgba(0,0,0,.1)!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 .5rem 1rem rgba(0,0,0,.163)!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.mw-date{max-width:10rem!important}.mw-col-date{max-width:calc(10rem + var(--bs-gutter-x))!important}.mw-listing-img{max-width:10rem!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-2-5{margin:.75rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-left:0!important;margin-right:0!important}.mx-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-2-5{margin-left:.75rem!important;margin-right:.75rem!important}.mx-3{margin-left:1rem!important;margin-right:1rem!important}.mx-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-5{margin-left:3rem!important;margin-right:3rem!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.my-0{margin-bottom:0!important;margin-top:0!important}.my-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-2-5{margin-bottom:.75rem!important;margin-top:.75rem!important}.my-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-2-5{margin-top:.75rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-2-5{margin-right:.75rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-2-5{margin-bottom:.75rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-2-5{margin-left:.75rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-2-5{padding:.75rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-left:0!important;padding-right:0!important}.px-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-2-5{padding-left:.75rem!important;padding-right:.75rem!important}.px-3{padding-left:1rem!important;padding-right:1rem!important}.px-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-5{padding-left:3rem!important;padding-right:3rem!important}.py-0{padding-bottom:0!important;padding-top:0!important}.py-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-2-5{padding-bottom:.75rem!important;padding-top:.75rem!important}.py-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-2-5{padding-top:.75rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-2-5{padding-right:.75rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-2-5{padding-bottom:.75rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-2-5{padding-left:.75rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fs-sm{font-size:.875rem!important}.fs-xs{font-size:.75rem!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-semibold{font-weight:600!important}.fw-bolder{font-weight:bolder!important}.fw-md,.fw-medium{font-weight:500!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-brand{--bs-text-opacity:1;color:rgba(var(--bs-brand-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:#495057!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:hsla(0,0%,100%,.5)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-brand{--bs-bg-opacity:1;background-color:rgba(var(--bs-brand-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-date{--bs-bg-opacity:1;background-color:#1698af!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-2xl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important}.rounded-end,.rounded-top{border-top-right-radius:var(--bs-border-radius)!important}.rounded-bottom,.rounded-end{border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-bottom,.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-start{border-top-left-radius:var(--bs-border-radius)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.col-gap-0{-moz-column-gap:0!important;column-gap:0!important}.col-gap-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.col-gap-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.col-gap-2-5{-moz-column-gap:.75rem!important;column-gap:.75rem!important}.col-gap-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.col-gap-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.col-gap-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.row-gap-0{row-gap:0!important}.row-gap-1{row-gap:.25rem!important}.row-gap-2{row-gap:.5rem!important}.row-gap-2-5{row-gap:.75rem!important}.row-gap-3{row-gap:1rem!important}.row-gap-4{row-gap:1.5rem!important}.row-gap-5{row-gap:3rem!important}.zi-0{z-index:0!important}.zi-1{z-index:1!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.border-sm{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-sm-0{border:0!important}.border-top-sm{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-sm-0{border-top:0!important}.border-bottom-sm{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-sm-0{border-bottom:0!important}.w-sm-25{width:25%!important}.w-sm-50{width:50%!important}.w-sm-75{width:75%!important}.w-sm-100{width:100%!important}.w-sm-auto{width:auto!important}.h-sm-25{height:25%!important}.h-sm-50{height:50%!important}.h-sm-75{height:75%!important}.h-sm-100{height:100%!important}.h-sm-auto{height:auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-2-5{margin:.75rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-left:0!important;margin-right:0!important}.mx-sm-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-sm-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-sm-2-5{margin-left:.75rem!important;margin-right:.75rem!important}.mx-sm-3{margin-left:1rem!important;margin-right:1rem!important}.mx-sm-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-sm-5{margin-left:3rem!important;margin-right:3rem!important}.mx-sm-auto{margin-left:auto!important;margin-right:auto!important}.my-sm-0{margin-bottom:0!important;margin-top:0!important}.my-sm-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-sm-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-sm-2-5{margin-bottom:.75rem!important;margin-top:.75rem!important}.my-sm-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-sm-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-sm-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-sm-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-2-5{margin-top:.75rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-2-5{margin-right:.75rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-2-5{margin-bottom:.75rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-2-5{margin-left:.75rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-2-5{padding:.75rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-left:0!important;padding-right:0!important}.px-sm-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-sm-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-sm-2-5{padding-left:.75rem!important;padding-right:.75rem!important}.px-sm-3{padding-left:1rem!important;padding-right:1rem!important}.px-sm-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-sm-5{padding-left:3rem!important;padding-right:3rem!important}.py-sm-0{padding-bottom:0!important;padding-top:0!important}.py-sm-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-sm-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-sm-2-5{padding-bottom:.75rem!important;padding-top:.75rem!important}.py-sm-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-sm-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-sm-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-2-5{padding-top:.75rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-2-5{padding-right:.75rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-2-5{padding-bottom:.75rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-2-5{padding-left:.75rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.border-md{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-md-0{border:0!important}.border-top-md{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-md-0{border-top:0!important}.border-bottom-md{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-md-0{border-bottom:0!important}.w-md-25{width:25%!important}.w-md-50{width:50%!important}.w-md-75{width:75%!important}.w-md-100{width:100%!important}.w-md-auto{width:auto!important}.h-md-25{height:25%!important}.h-md-50{height:50%!important}.h-md-75{height:75%!important}.h-md-100{height:100%!important}.h-md-auto{height:auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-2-5{margin:.75rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-left:0!important;margin-right:0!important}.mx-md-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-md-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-md-2-5{margin-left:.75rem!important;margin-right:.75rem!important}.mx-md-3{margin-left:1rem!important;margin-right:1rem!important}.mx-md-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-md-5{margin-left:3rem!important;margin-right:3rem!important}.mx-md-auto{margin-left:auto!important;margin-right:auto!important}.my-md-0{margin-bottom:0!important;margin-top:0!important}.my-md-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-md-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-md-2-5{margin-bottom:.75rem!important;margin-top:.75rem!important}.my-md-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-md-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-md-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-md-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-2-5{margin-top:.75rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-2-5{margin-right:.75rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-2-5{margin-bottom:.75rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-2-5{margin-left:.75rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-2-5{padding:.75rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-left:0!important;padding-right:0!important}.px-md-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-md-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-md-2-5{padding-left:.75rem!important;padding-right:.75rem!important}.px-md-3{padding-left:1rem!important;padding-right:1rem!important}.px-md-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-md-5{padding-left:3rem!important;padding-right:3rem!important}.py-md-0{padding-bottom:0!important;padding-top:0!important}.py-md-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-md-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-md-2-5{padding-bottom:.75rem!important;padding-top:.75rem!important}.py-md-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-md-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-md-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-2-5{padding-top:.75rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-2-5{padding-right:.75rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-2-5{padding-bottom:.75rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-2-5{padding-left:.75rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.border-lg{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-lg-0{border:0!important}.border-top-lg{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-lg-0{border-top:0!important}.border-bottom-lg{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-lg-0{border-bottom:0!important}.w-lg-25{width:25%!important}.w-lg-50{width:50%!important}.w-lg-75{width:75%!important}.w-lg-100{width:100%!important}.w-lg-auto{width:auto!important}.h-lg-25{height:25%!important}.h-lg-50{height:50%!important}.h-lg-75{height:75%!important}.h-lg-100{height:100%!important}.h-lg-auto{height:auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-2-5{margin:.75rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-left:0!important;margin-right:0!important}.mx-lg-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-lg-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-lg-2-5{margin-left:.75rem!important;margin-right:.75rem!important}.mx-lg-3{margin-left:1rem!important;margin-right:1rem!important}.mx-lg-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-lg-5{margin-left:3rem!important;margin-right:3rem!important}.mx-lg-auto{margin-left:auto!important;margin-right:auto!important}.my-lg-0{margin-bottom:0!important;margin-top:0!important}.my-lg-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-lg-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-lg-2-5{margin-bottom:.75rem!important;margin-top:.75rem!important}.my-lg-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-lg-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-lg-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-lg-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-2-5{margin-top:.75rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-2-5{margin-right:.75rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-2-5{margin-bottom:.75rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-2-5{margin-left:.75rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-2-5{padding:.75rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-left:0!important;padding-right:0!important}.px-lg-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-lg-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-lg-2-5{padding-left:.75rem!important;padding-right:.75rem!important}.px-lg-3{padding-left:1rem!important;padding-right:1rem!important}.px-lg-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-lg-5{padding-left:3rem!important;padding-right:3rem!important}.py-lg-0{padding-bottom:0!important;padding-top:0!important}.py-lg-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-lg-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-lg-2-5{padding-bottom:.75rem!important;padding-top:.75rem!important}.py-lg-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-lg-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-lg-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-2-5{padding-top:.75rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-2-5{padding-right:.75rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-2-5{padding-bottom:.75rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-2-5{padding-left:.75rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.border-xl{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-xl-0{border:0!important}.border-top-xl{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-xl-0{border-top:0!important}.border-bottom-xl{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-xl-0{border-bottom:0!important}.w-xl-25{width:25%!important}.w-xl-50{width:50%!important}.w-xl-75{width:75%!important}.w-xl-100{width:100%!important}.w-xl-auto{width:auto!important}.h-xl-25{height:25%!important}.h-xl-50{height:50%!important}.h-xl-75{height:75%!important}.h-xl-100{height:100%!important}.h-xl-auto{height:auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-2-5{margin:.75rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-left:0!important;margin-right:0!important}.mx-xl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xl-2-5{margin-left:.75rem!important;margin-right:.75rem!important}.mx-xl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xl-auto{margin-left:auto!important;margin-right:auto!important}.my-xl-0{margin-bottom:0!important;margin-top:0!important}.my-xl-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-xl-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-xl-2-5{margin-bottom:.75rem!important;margin-top:.75rem!important}.my-xl-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-xl-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-xl-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-xl-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-2-5{margin-top:.75rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-2-5{margin-right:.75rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-2-5{margin-bottom:.75rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-2-5{margin-left:.75rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-2-5{padding:.75rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-left:0!important;padding-right:0!important}.px-xl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xl-2-5{padding-left:.75rem!important;padding-right:.75rem!important}.px-xl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xl-0{padding-bottom:0!important;padding-top:0!important}.py-xl-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-xl-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-xl-2-5{padding-bottom:.75rem!important;padding-top:.75rem!important}.py-xl-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-xl-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-xl-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-2-5{padding-top:.75rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-2-5{padding-right:.75rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-2-5{padding-bottom:.75rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-2-5{padding-left:.75rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.border-xxl{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-xxl-0{border:0!important}.border-top-xxl{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-xxl-0{border-top:0!important}.border-bottom-xxl{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-xxl-0{border-bottom:0!important}.w-xxl-25{width:25%!important}.w-xxl-50{width:50%!important}.w-xxl-75{width:75%!important}.w-xxl-100{width:100%!important}.w-xxl-auto{width:auto!important}.h-xxl-25{height:25%!important}.h-xxl-50{height:50%!important}.h-xxl-75{height:75%!important}.h-xxl-100{height:100%!important}.h-xxl-auto{height:auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-2-5{margin:.75rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-left:0!important;margin-right:0!important}.mx-xxl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xxl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xxl-2-5{margin-left:.75rem!important;margin-right:.75rem!important}.mx-xxl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xxl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xxl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xxl-auto{margin-left:auto!important;margin-right:auto!important}.my-xxl-0{margin-bottom:0!important;margin-top:0!important}.my-xxl-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-xxl-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-xxl-2-5{margin-bottom:.75rem!important;margin-top:.75rem!important}.my-xxl-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-xxl-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-xxl-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-xxl-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-2-5{margin-top:.75rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-2-5{margin-right:.75rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-2-5{margin-bottom:.75rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-2-5{margin-left:.75rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-2-5{padding:.75rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-left:0!important;padding-right:0!important}.px-xxl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xxl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xxl-2-5{padding-left:.75rem!important;padding-right:.75rem!important}.px-xxl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xxl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xxl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xxl-0{padding-bottom:0!important;padding-top:0!important}.py-xxl-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-xxl-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-xxl-2-5{padding-bottom:.75rem!important;padding-top:.75rem!important}.py-xxl-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-xxl-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-xxl-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-2-5{padding-top:.75rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-2-5{padding-right:.75rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-2-5{padding-bottom:.75rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-2-5{padding-left:.75rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}.glossary-term{border-bottom:1px dotted #212529;cursor:help}.glossary-term,.glossary-term:hover{color:#212529;text-decoration:none}.shadow-hover{box-shadow:0 .1rem .4rem .1rem rgba(0,0,0,.1)}.shadow-hover:hover{box-shadow:0 .5rem 1rem rgba(0,0,0,.163)} +@charset "UTF-8";@import "fonts/cyrillic-400.css";@import "fonts/latin-400.css";@import "fonts/latin-ext-400.css";@import "fonts/greek-400.css";@import "fonts/cyrillic-500.css";@import "fonts/latin-500.css";@import "fonts/latin-ext-500.css";@import "fonts/greek-500.css";@import "fonts/cyrillic-700.css";@import "fonts/latin-700.css";@import "fonts/latin-ext-700.css";@import "fonts/greek-700.css";@import "fonts/cyrillic-400-italic.css";@import "fonts/latin-400-italic.css";@import "fonts/latin-ext-400-italic.css";@import "fonts/greek-400-italic.css";@import "fonts/cyrillic-500-italic.css";@import "fonts/latin-500-italic.css";@import "fonts/latin-ext-500-italic.css";@import "fonts/greek-500-italic.css";@import "fonts/cyrillic-700-italic.css";@import "fonts/latin-700-italic.css";@import "fonts/latin-ext-700-italic.css";@import "fonts/greek-700-italic.css";.fs-sm,.fs-xs{color:#858a8c}.fw-medium{color:#555859}.fw-medium.h2,.fw-medium.h3,.fw-medium.h4,.h1,h1,h2.fw-medium,h3.fw-medium,h4.fw-medium{color:#113264}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{color:#143b76;font-weight:400;line-height:1.2;margin-bottom:.5rem;margin-top:0}.h1,h1{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h1,h1{font-size:2rem}}.h2,h2{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h2,h2{font-size:1.5rem}}.h3,h3{font-size:1.25rem}.h4,h4{font-size:1.125rem}.h5,.h6,h5,h6{font-size:1rem}.small,small{font-size:.875em}.mark,mark{background-color:#fff3cd;padding:.1875em}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:400;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:400;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:400;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:400;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:400;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:400;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-inline,.list-unstyled{list-style:none;padding-left:0}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{font-size:1.25rem;margin-bottom:1rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{color:#6d7173;font-size:.875em;margin-bottom:1rem;margin-top:-1rem}.blockquote-footer:before{content:"— "}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{height:auto;transition:width .35s ease;width:0}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}a{text-underline-offset:2px}a:not(.text-underline-hover):not(.standalone){text-decoration-color:rgba(20,59,118,.3)}a:not(.text-underline-hover):not(.standalone):visited{text-decoration-color:rgba(111,66,193,.3)}a:not(.text-underline-hover):not(.standalone):hover{text-decoration-color:currentColor}a:not(.text-underline-hover):not(.standalone):hover:visited{text-decoration-color:#6f42c1}a.standalone,a.text-underline-hover{text-decoration-color:transparent}a.standalone:hover,a.text-underline-hover:hover{text-decoration-color:currentColor}a.standalone:hover:visited,a.text-underline-hover:hover:visited{text-decoration-color:#6f42c1}svg{fill:currentColor}@media (max-width:767.98px){.n-mx-container{margin-left:-1.5rem;margin-right:-1.5rem;padding-left:1.5rem;padding-right:1.5rem}}.bg-lighter{background-color:#fafbfc}.bg-gray-200{background-color:#f5f6f7}.bg-gray-400{background-color:#a2a8ab}.border-gray-300{border-color:#dadee0}.grid-3-9{grid-template-columns:25% 75%}.clearfix:after{clear:both;content:"";display:block}.text-bg-primary{background-color:RGBA(20,59,118,var(--bs-bg-opacity,1))!important;color:#fff!important}.text-bg-secondary{background-color:RGBA(231,241,251,var(--bs-bg-opacity,1))!important;color:#000!important}.text-bg-success{background-color:RGBA(24,191,128,var(--bs-bg-opacity,1))!important;color:#000!important}.text-bg-info{background-color:RGBA(13,118,139,var(--bs-bg-opacity,1))!important;color:#fff!important}.text-bg-warning{background-color:RGBA(235,168,67,var(--bs-bg-opacity,1))!important;color:#000!important}.text-bg-danger{background-color:RGBA(235,52,52,var(--bs-bg-opacity,1))!important;color:#000!important}.text-bg-light{background-color:RGBA(248,249,250,var(--bs-bg-opacity,1))!important;color:#000!important}.text-bg-dark{background-color:RGBA(33,37,41,var(--bs-bg-opacity,1))!important;color:#fff!important}.text-bg-brand{background-color:RGBA(16,115,222,var(--bs-bg-opacity,1))!important;color:#fff!important}.link-primary{color:#143b76!important}.link-primary:focus,.link-primary:hover{color:#102f5e!important}.link-secondary{color:#e7f1fb!important}.link-secondary:focus,.link-secondary:hover{color:#ecf4fc!important}.link-success{color:#18bf80!important}.link-success:focus,.link-success:hover{color:#46cc99!important}.link-info{color:#0d768b!important}.link-info:focus,.link-info:hover{color:#0a5e6f!important}.link-warning{color:#eba843!important}.link-warning:focus,.link-warning:hover{color:#efb969!important}.link-danger{color:#eb3434!important}.link-danger:focus,.link-danger:hover{color:#ef5d5d!important}.link-light{color:#f8f9fa!important}.link-light:focus,.link-light:hover{color:#f9fafb!important}.link-dark{color:#212529!important}.link-dark:focus,.link-dark:hover{color:#1a1e21!important}.link-brand{color:#1073de!important}.link-brand:focus,.link-brand:hover{color:#0d5cb2!important}.ratio{position:relative;width:100%}.ratio:before{content:"";display:block;padding-top:var(--bs-aspect-ratio)}.ratio>*{height:100%;left:0;position:absolute;top:0;width:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.8571428571%}.fixed-top{top:0}.fixed-bottom,.fixed-top{left:0;position:fixed;right:0;z-index:60}.fixed-bottom{bottom:0}.sticky-top{position:sticky;top:0;z-index:50}.sticky-bottom{bottom:0;position:sticky;z-index:50}@media (min-width:576px){.sticky-sm-top{position:sticky;top:0;z-index:50}.sticky-sm-bottom{bottom:0;position:sticky;z-index:50}}@media (min-width:768px){.sticky-md-top{position:sticky;top:0;z-index:50}.sticky-md-bottom{bottom:0;position:sticky;z-index:50}}@media (min-width:992px){.sticky-lg-top{position:sticky;top:0;z-index:50}.sticky-lg-bottom{bottom:0;position:sticky;z-index:50}}@media (min-width:1200px){.sticky-xl-top{position:sticky;top:0;z-index:50}.sticky-xl-bottom{bottom:0;position:sticky;z-index:50}}@media (min-width:1400px){.sticky-xxl-top{position:sticky;top:0;z-index:50}.sticky-xxl-bottom{bottom:0;position:sticky;z-index:50}}.hstack{align-items:center;flex-direction:row}.hstack,.vstack{align-self:stretch;display:flex}.vstack{flex:1 1 auto;flex-direction:column}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){clip:rect(0,0,0,0)!important;border:0!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}.stretched-link:after{bottom:0;content:"";left:0;position:absolute;right:0;top:0;z-index:1}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{align-self:stretch;background-color:currentcolor;display:inline-block;min-height:1em;opacity:.25;width:1px}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .1rem .4rem .1rem rgba(0,0,0,.1)!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 .5rem 1rem rgba(0,0,0,.163)!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.mw-date{max-width:10rem!important}.mw-col-date{max-width:calc(10rem + var(--bs-gutter-x))!important}.mw-listing-img{max-width:10rem!important}.h-50vh{height:50vh!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-2-5{margin:.75rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-left:0!important;margin-right:0!important}.mx-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-2-5{margin-left:.75rem!important;margin-right:.75rem!important}.mx-3{margin-left:1rem!important;margin-right:1rem!important}.mx-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-5{margin-left:3rem!important;margin-right:3rem!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.my-0{margin-bottom:0!important;margin-top:0!important}.my-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-2-5{margin-bottom:.75rem!important;margin-top:.75rem!important}.my-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-2-5{margin-top:.75rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-2-5{margin-right:.75rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-2-5{margin-bottom:.75rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-2-5{margin-left:.75rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-2-5{padding:.75rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-left:0!important;padding-right:0!important}.px-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-2-5{padding-left:.75rem!important;padding-right:.75rem!important}.px-3{padding-left:1rem!important;padding-right:1rem!important}.px-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-5{padding-left:3rem!important;padding-right:3rem!important}.py-0{padding-bottom:0!important;padding-top:0!important}.py-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-2-5{padding-bottom:.75rem!important;padding-top:.75rem!important}.py-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-2-5{padding-top:.75rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-2-5{padding-right:.75rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-2-5{padding-bottom:.75rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-2-5{padding-left:.75rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fs-sm{font-size:.875rem!important}.fs-xs{font-size:.75rem!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-semibold{font-weight:600!important}.fw-bolder{font-weight:bolder!important}.fw-md,.fw-medium{font-weight:500!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-brand{--bs-text-opacity:1;color:rgba(var(--bs-brand-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:#495057!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:hsla(0,0%,100%,.5)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-brand{--bs-bg-opacity:1;background-color:rgba(var(--bs-brand-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-date{--bs-bg-opacity:1;background-color:#1698af!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-2xl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important}.rounded-end,.rounded-top{border-top-right-radius:var(--bs-border-radius)!important}.rounded-bottom,.rounded-end{border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-bottom,.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-start{border-top-left-radius:var(--bs-border-radius)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.col-gap-0{-moz-column-gap:0!important;column-gap:0!important}.col-gap-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.col-gap-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.col-gap-2-5{-moz-column-gap:.75rem!important;column-gap:.75rem!important}.col-gap-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.col-gap-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.col-gap-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.row-gap-0{row-gap:0!important}.row-gap-1{row-gap:.25rem!important}.row-gap-2{row-gap:.5rem!important}.row-gap-2-5{row-gap:.75rem!important}.row-gap-3{row-gap:1rem!important}.row-gap-4{row-gap:1.5rem!important}.row-gap-5{row-gap:3rem!important}.zi-0{z-index:0!important}.zi-1{z-index:1!important}.zi-2{z-index:2!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.border-sm{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-sm-0{border:0!important}.border-top-sm{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-sm-0{border-top:0!important}.border-bottom-sm{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-sm-0{border-bottom:0!important}.w-sm-25{width:25%!important}.w-sm-50{width:50%!important}.w-sm-75{width:75%!important}.w-sm-100{width:100%!important}.w-sm-auto{width:auto!important}.h-sm-50vh{height:50vh!important}.h-sm-25{height:25%!important}.h-sm-50{height:50%!important}.h-sm-75{height:75%!important}.h-sm-100{height:100%!important}.h-sm-auto{height:auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-2-5{margin:.75rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-left:0!important;margin-right:0!important}.mx-sm-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-sm-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-sm-2-5{margin-left:.75rem!important;margin-right:.75rem!important}.mx-sm-3{margin-left:1rem!important;margin-right:1rem!important}.mx-sm-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-sm-5{margin-left:3rem!important;margin-right:3rem!important}.mx-sm-auto{margin-left:auto!important;margin-right:auto!important}.my-sm-0{margin-bottom:0!important;margin-top:0!important}.my-sm-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-sm-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-sm-2-5{margin-bottom:.75rem!important;margin-top:.75rem!important}.my-sm-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-sm-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-sm-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-sm-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-2-5{margin-top:.75rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-2-5{margin-right:.75rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-2-5{margin-bottom:.75rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-2-5{margin-left:.75rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-2-5{padding:.75rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-left:0!important;padding-right:0!important}.px-sm-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-sm-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-sm-2-5{padding-left:.75rem!important;padding-right:.75rem!important}.px-sm-3{padding-left:1rem!important;padding-right:1rem!important}.px-sm-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-sm-5{padding-left:3rem!important;padding-right:3rem!important}.py-sm-0{padding-bottom:0!important;padding-top:0!important}.py-sm-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-sm-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-sm-2-5{padding-bottom:.75rem!important;padding-top:.75rem!important}.py-sm-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-sm-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-sm-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-2-5{padding-top:.75rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-2-5{padding-right:.75rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-2-5{padding-bottom:.75rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-2-5{padding-left:.75rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.border-md{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-md-0{border:0!important}.border-top-md{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-md-0{border-top:0!important}.border-bottom-md{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-md-0{border-bottom:0!important}.w-md-25{width:25%!important}.w-md-50{width:50%!important}.w-md-75{width:75%!important}.w-md-100{width:100%!important}.w-md-auto{width:auto!important}.h-md-50vh{height:50vh!important}.h-md-25{height:25%!important}.h-md-50{height:50%!important}.h-md-75{height:75%!important}.h-md-100{height:100%!important}.h-md-auto{height:auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-2-5{margin:.75rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-left:0!important;margin-right:0!important}.mx-md-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-md-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-md-2-5{margin-left:.75rem!important;margin-right:.75rem!important}.mx-md-3{margin-left:1rem!important;margin-right:1rem!important}.mx-md-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-md-5{margin-left:3rem!important;margin-right:3rem!important}.mx-md-auto{margin-left:auto!important;margin-right:auto!important}.my-md-0{margin-bottom:0!important;margin-top:0!important}.my-md-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-md-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-md-2-5{margin-bottom:.75rem!important;margin-top:.75rem!important}.my-md-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-md-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-md-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-md-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-2-5{margin-top:.75rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-2-5{margin-right:.75rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-2-5{margin-bottom:.75rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-2-5{margin-left:.75rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-2-5{padding:.75rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-left:0!important;padding-right:0!important}.px-md-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-md-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-md-2-5{padding-left:.75rem!important;padding-right:.75rem!important}.px-md-3{padding-left:1rem!important;padding-right:1rem!important}.px-md-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-md-5{padding-left:3rem!important;padding-right:3rem!important}.py-md-0{padding-bottom:0!important;padding-top:0!important}.py-md-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-md-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-md-2-5{padding-bottom:.75rem!important;padding-top:.75rem!important}.py-md-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-md-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-md-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-2-5{padding-top:.75rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-2-5{padding-right:.75rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-2-5{padding-bottom:.75rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-2-5{padding-left:.75rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.border-lg{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-lg-0{border:0!important}.border-top-lg{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-lg-0{border-top:0!important}.border-bottom-lg{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-lg-0{border-bottom:0!important}.w-lg-25{width:25%!important}.w-lg-50{width:50%!important}.w-lg-75{width:75%!important}.w-lg-100{width:100%!important}.w-lg-auto{width:auto!important}.h-lg-50vh{height:50vh!important}.h-lg-25{height:25%!important}.h-lg-50{height:50%!important}.h-lg-75{height:75%!important}.h-lg-100{height:100%!important}.h-lg-auto{height:auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-2-5{margin:.75rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-left:0!important;margin-right:0!important}.mx-lg-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-lg-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-lg-2-5{margin-left:.75rem!important;margin-right:.75rem!important}.mx-lg-3{margin-left:1rem!important;margin-right:1rem!important}.mx-lg-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-lg-5{margin-left:3rem!important;margin-right:3rem!important}.mx-lg-auto{margin-left:auto!important;margin-right:auto!important}.my-lg-0{margin-bottom:0!important;margin-top:0!important}.my-lg-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-lg-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-lg-2-5{margin-bottom:.75rem!important;margin-top:.75rem!important}.my-lg-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-lg-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-lg-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-lg-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-2-5{margin-top:.75rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-2-5{margin-right:.75rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-2-5{margin-bottom:.75rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-2-5{margin-left:.75rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-2-5{padding:.75rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-left:0!important;padding-right:0!important}.px-lg-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-lg-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-lg-2-5{padding-left:.75rem!important;padding-right:.75rem!important}.px-lg-3{padding-left:1rem!important;padding-right:1rem!important}.px-lg-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-lg-5{padding-left:3rem!important;padding-right:3rem!important}.py-lg-0{padding-bottom:0!important;padding-top:0!important}.py-lg-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-lg-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-lg-2-5{padding-bottom:.75rem!important;padding-top:.75rem!important}.py-lg-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-lg-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-lg-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-2-5{padding-top:.75rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-2-5{padding-right:.75rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-2-5{padding-bottom:.75rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-2-5{padding-left:.75rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.border-xl{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-xl-0{border:0!important}.border-top-xl{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-xl-0{border-top:0!important}.border-bottom-xl{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-xl-0{border-bottom:0!important}.w-xl-25{width:25%!important}.w-xl-50{width:50%!important}.w-xl-75{width:75%!important}.w-xl-100{width:100%!important}.w-xl-auto{width:auto!important}.h-xl-50vh{height:50vh!important}.h-xl-25{height:25%!important}.h-xl-50{height:50%!important}.h-xl-75{height:75%!important}.h-xl-100{height:100%!important}.h-xl-auto{height:auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-2-5{margin:.75rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-left:0!important;margin-right:0!important}.mx-xl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xl-2-5{margin-left:.75rem!important;margin-right:.75rem!important}.mx-xl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xl-auto{margin-left:auto!important;margin-right:auto!important}.my-xl-0{margin-bottom:0!important;margin-top:0!important}.my-xl-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-xl-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-xl-2-5{margin-bottom:.75rem!important;margin-top:.75rem!important}.my-xl-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-xl-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-xl-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-xl-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-2-5{margin-top:.75rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-2-5{margin-right:.75rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-2-5{margin-bottom:.75rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-2-5{margin-left:.75rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-2-5{padding:.75rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-left:0!important;padding-right:0!important}.px-xl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xl-2-5{padding-left:.75rem!important;padding-right:.75rem!important}.px-xl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xl-0{padding-bottom:0!important;padding-top:0!important}.py-xl-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-xl-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-xl-2-5{padding-bottom:.75rem!important;padding-top:.75rem!important}.py-xl-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-xl-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-xl-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-2-5{padding-top:.75rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-2-5{padding-right:.75rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-2-5{padding-bottom:.75rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-2-5{padding-left:.75rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.border-xxl{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-xxl-0{border:0!important}.border-top-xxl{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-xxl-0{border-top:0!important}.border-bottom-xxl{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-xxl-0{border-bottom:0!important}.w-xxl-25{width:25%!important}.w-xxl-50{width:50%!important}.w-xxl-75{width:75%!important}.w-xxl-100{width:100%!important}.w-xxl-auto{width:auto!important}.h-xxl-50vh{height:50vh!important}.h-xxl-25{height:25%!important}.h-xxl-50{height:50%!important}.h-xxl-75{height:75%!important}.h-xxl-100{height:100%!important}.h-xxl-auto{height:auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-2-5{margin:.75rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-left:0!important;margin-right:0!important}.mx-xxl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xxl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xxl-2-5{margin-left:.75rem!important;margin-right:.75rem!important}.mx-xxl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xxl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xxl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xxl-auto{margin-left:auto!important;margin-right:auto!important}.my-xxl-0{margin-bottom:0!important;margin-top:0!important}.my-xxl-1{margin-bottom:.25rem!important;margin-top:.25rem!important}.my-xxl-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.my-xxl-2-5{margin-bottom:.75rem!important;margin-top:.75rem!important}.my-xxl-3{margin-bottom:1rem!important;margin-top:1rem!important}.my-xxl-4{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.my-xxl-5{margin-bottom:3rem!important;margin-top:3rem!important}.my-xxl-auto{margin-bottom:auto!important;margin-top:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-2-5{margin-top:.75rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-2-5{margin-right:.75rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-2-5{margin-bottom:.75rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-2-5{margin-left:.75rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-2-5{padding:.75rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-left:0!important;padding-right:0!important}.px-xxl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xxl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xxl-2-5{padding-left:.75rem!important;padding-right:.75rem!important}.px-xxl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xxl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xxl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xxl-0{padding-bottom:0!important;padding-top:0!important}.py-xxl-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-xxl-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-xxl-2-5{padding-bottom:.75rem!important;padding-top:.75rem!important}.py-xxl-3{padding-bottom:1rem!important;padding-top:1rem!important}.py-xxl-4{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.py-xxl-5{padding-bottom:3rem!important;padding-top:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-2-5{padding-top:.75rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-2-5{padding-right:.75rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-2-5{padding-bottom:.75rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-2-5{padding-left:.75rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}.glossary-term{border-bottom:1px dotted #212529;cursor:help}.glossary-term,.glossary-term:hover{color:#212529;text-decoration:none}.shadow-hover{box-shadow:0 .1rem .4rem .1rem rgba(0,0,0,.1)}.shadow-hover:hover{box-shadow:0 .5rem 1rem rgba(0,0,0,.163)} /*# sourceMappingURL=theme.min.css.map */ \ No newline at end of file diff --git a/web/themes/ventuno/assets/css/tile.min.css b/web/themes/ventuno/assets/css/tile.min.css index da4520b546132c74a0d41a57cc498cef3776a722..10344c5458727594419109d398e7cb99a8377efd 100644 --- a/web/themes/ventuno/assets/css/tile.min.css +++ b/web/themes/ventuno/assets/css/tile.min.css @@ -1,2 +1,2 @@ -.tile{flex-direction:column;height:100%;position:relative}.tile__link{z-index:2}.tile__action{position:relative;z-index:3}.tile__figure{aspect-ratio:16/9;overflow:hidden}.tile__figure picture{align-items:center;display:flex;height:100%;justify-content:center}.tile__figure picture img{margin-bottom:0;max-height:100%;width:auto}.tile__body{padding:1rem}.tile__standout-info{font-size:.875rem;right:.5rem;top:-1rem}.tile__info-icon,.tile__standout-info-icon{font-size:.75rem}.tile__info-icon{flex-shrink:0}.tile__info-text{-webkit-box-orient:vertical;-webkit-line-clamp:1;display:-webkit-box;overflow:hidden}.tile__default-img:after{background-color:#fff;border-radius:50rem;content:"";display:block;height:6rem;position:absolute;width:6rem}.tile__default-icon{color:#a2a8ab;height:3rem;width:3rem;z-index:1}.tile__body{flex:1 1 auto;padding:1rem 1rem 0}.tile__title{-webkit-line-clamp:2}.tile__text,.tile__title{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.tile__text{-webkit-line-clamp:4}.tile__bundle-icon{background-color:#fae8cd;height:1.5rem;width:1.5rem}.tile .mark{align-items:center;background-color:#1073de;border-radius:50rem;display:flex;height:1.75rem;justify-content:center;position:absolute;right:.5rem;top:.5rem;width:1.75rem;z-index:1}.tile .mark.star:before{-webkit-mask-image:url(../icons/star.svg);mask-image:url(../icons/star.svg)}.tile .mark.pin:before,.tile .mark.star:before{background-color:#fff;content:"";display:inline-block;height:1em;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:-.125em;width:1em}.tile .mark.pin:before{-webkit-mask-image:url(../icons/pin.svg);mask-image:url(../icons/pin.svg)}.tile__footer .flag__link{border-radius:50rem;padding:.125rem}.tile__footer .flag__link:hover{text-decoration:none}.tile__footer .flag__link:not(.flag__link--archived):hover{background-color:#e7f1fb}.tile__footer .flag__link--archived:hover,.tile__footer [data-joinup-card-stats-shared]:hover{cursor:not-allowed}.tile--horizontal{width:100%}@media (min-width:768px){.tile--horizontal{flex-direction:row;flex-wrap:wrap;height:auto}.tile--horizontal .tile__figure{aspect-ratio:1/1;padding:1rem 0 0 1rem;width:180px}.tile--horizontal .tile__figure picture{align-items:start}.tile--horizontal .tile__body{flex:1 1 calc(100% - 180px);max-width:calc(100% - 180px);overflow-wrap:anywhere;padding:1rem 1rem 0}.tile--horizontal .tile__standout-info{bottom:.5rem;right:unset;top:unset;transform:translateX(calc(-100% - 1.5rem))}.tile--horizontal .tile__footer{align-self:end;border-top:1px solid #dadee0;margin-top:1rem;width:100%}} +.tile{background-color:#fff;flex-direction:column;height:100%;position:relative}.tile__link{z-index:2}.tile__action{position:relative;z-index:3}.tile__figure{aspect-ratio:16/9;overflow:hidden}.tile__figure picture{align-items:center;display:flex;height:100%;justify-content:center}.tile__figure picture img{margin-bottom:0;max-height:100%;width:auto}.tile__body{padding:1rem}.tile__standout-info{font-size:.875rem;right:.5rem;top:-1rem}.tile__info-icon,.tile__standout-info-icon{font-size:.75rem}.tile__info-icon{flex-shrink:0}.tile__info-text{-webkit-box-orient:vertical;-webkit-line-clamp:1;display:-webkit-box;overflow:hidden}.tile__default-img:after{background-color:#fff;border-radius:50rem;content:"";display:block;height:6rem;position:absolute;width:6rem}.tile__default-icon{color:#a2a8ab;height:3rem;width:3rem;z-index:1}.tile__body{flex:1 1 auto;padding:1rem 1rem 0}.tile__title{-webkit-line-clamp:2}.tile__text,.tile__title{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.tile__text{-webkit-line-clamp:4}.tile__bundle-icon{background-color:#fae8cd;height:1.5rem;width:1.5rem}.tile .mark{align-items:center;background-color:#1073de;border-radius:50rem;display:flex;height:1.75rem;justify-content:center;position:absolute;right:.5rem;top:.5rem;width:1.75rem;z-index:1}.tile .mark.star:before{-webkit-mask-image:url(../icons/star.svg);mask-image:url(../icons/star.svg)}.tile .mark.pin:before,.tile .mark.star:before{background-color:#fff;content:"";display:inline-block;height:1em;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:-.125em;width:1em}.tile .mark.pin:before{-webkit-mask-image:url(../icons/pin.svg);mask-image:url(../icons/pin.svg)}.tile__footer .flag__link{border-radius:50rem;padding:.125rem}.tile__footer .flag__link:hover{text-decoration:none}.tile__footer .flag__link:not(.flag__link--archived):hover{background-color:#e7f1fb}.tile__footer .flag__link--archived:hover,.tile__footer [data-joinup-card-stats-shared]:hover{cursor:not-allowed}.tile--horizontal{width:100%}@media (min-width:768px){.tile--horizontal{flex-direction:row;flex-wrap:wrap;height:auto}.tile--horizontal .tile__figure{aspect-ratio:1/1;padding:1rem 0 0 1rem;width:180px}.tile--horizontal .tile__figure picture{align-items:start}.tile--horizontal .tile__body{flex:1 1 calc(100% - 180px);max-width:calc(100% - 180px);overflow-wrap:anywhere;padding:1rem 1rem 0}.tile--horizontal .tile__standout-info{bottom:.5rem;right:unset;top:unset;transform:translateX(calc(-100% - 1.5rem))}.tile--horizontal .tile__footer{align-self:end;border-top:1px solid #dadee0;margin-top:1rem;width:100%}} /*# sourceMappingURL=tile.min.css.map */ \ No newline at end of file diff --git a/web/themes/ventuno/includes/block.inc b/web/themes/ventuno/includes/block.inc index 78e953317741e226f17461c9e2af09b8b7140e7e..46040ba785e7c79785e81f8318ea998288da91dd 100644 --- a/web/themes/ventuno/includes/block.inc +++ b/web/themes/ventuno/includes/block.inc @@ -66,9 +66,8 @@ function ventuno_preprocess_block(array &$variables): void { break; case 'ventuno_like': - // Add z-index to Like button in order to avoid ajax throbber being - // hidden under eTrans button. - $variables['attributes']['class'][] = 'zi-1'; + // Avoid ajax throbber being hidden under eTrans button. + $variables['attributes']['class'][] = 'zi-2'; break; } diff --git a/web/themes/ventuno/includes/form.inc b/web/themes/ventuno/includes/form.inc index 1cd139938a87d8b6f1618666e3b6d06cee219fb5..cfd0a89759e824fa21edfb5e6875ffe0a24a7787 100644 --- a/web/themes/ventuno/includes/form.inc +++ b/web/themes/ventuno/includes/form.inc @@ -69,6 +69,7 @@ function ventuno_form_views_exposed_form_alter(array &$form, FormStateInterface $form['keys']['#joinup_parent'] = $form_id . '_' . $view->id(); // Ensure the ID is unique, using "search-box" as base. $form['keys']['#id'] = Html::getUniqueId('search-box'); + $form['#id'] = Html::getUniqueId($form['#id']); } if ($route_name != 'view.search.page_1' && $view->id() === 'search') { @@ -91,6 +92,11 @@ function ventuno_theme_suggestions_form_alter(array &$suggestions, array $variab */ function ventuno_preprocess_form_element(array &$variables): void { $variables['#attached']['library'][] = 'ventuno/forms'; + if ($variables['type'] === 'radio' && + isset($variables['element']['#name']) && + $variables['element']['#name'] === 'layout_paragraphs[layout]') { + $variables['attributes']['class'][] = 'm-0 p-0'; + } } /** @@ -105,6 +111,9 @@ function ventuno_preprocess_form_element_label(array &$variables): void { * Implements hook_form_alter(). */ function ventuno_form_alter(array &$form, FormStateInterface $form_state, string $form_id): void { + // Disable client side HTML5 validation @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fs-novalidate + $form['#attributes']['novalidate'] = 'novalidate'; + // Add classes to the delete action in any kind of form. if (isset($form['actions']['delete'])) { $classes = $form['actions']['delete']['#attributes']['class'] ?? []; @@ -147,3 +156,48 @@ function ventuno_theme_suggestions_input_alter(array &$suggestions, array $varia function ventuno_theme_suggestions_select_alter(array &$suggestions, array $variables): void { $suggestions[] = 'select__' . $variables['element']['#name']; } + +/** + * Implements hook_preprocess_radios(). + */ +function ventuno_preprocess_radios(array &$variables): void { + if (isset($variables['element']['#name']) && $variables['element']['#name'] === 'layout_paragraphs[layout]') { + $variables['attributes']['class'][] = 'd-flex col-gap-3'; + } +} + +/** + * Implements hook_form_BASE_FORM_ID_alter(). + */ +function ventuno_form_poll_view_form_alter(array &$form, FormStateInterface $form_state, string $form_id): void { + foreach (['result', 'cancel'] as $element) { + if (!isset($form['actions'][$element])) { + continue; + } + + $form['actions'][$element]['#button_type'] = 'link'; + $form['actions'][$element]['#attributes']['class'][] = 'p-0'; + } +} + +/** + * Implements hook_preprocess_input__submit(). + */ +function ventuno_preprocess_input__submit(array &$variables): void { + if (!isset($variables['element']['#button_type'])) { + $variables['attributes']['class'][] = 'btn-primary'; + } +} + +/** + * Implements hook_preprocess_select(). + */ +function ventuno_preprocess_select(array &$variables): void { + $field_name = $variables['element']['#name']; + switch ($field_name) { + case 'field_topic': + case 'field_is_solution_type': + $variables['attributes']['class'][] = 'h-50vh'; + break; + } +} diff --git a/web/themes/ventuno/includes/layout_paragraphs.inc b/web/themes/ventuno/includes/layout_paragraphs.inc new file mode 100644 index 0000000000000000000000000000000000000000..24004f24b4ee14dbfed9c309ed8e91fed2b7faae --- /dev/null +++ b/web/themes/ventuno/includes/layout_paragraphs.inc @@ -0,0 +1,32 @@ +<?php + +/** + * @file + * Layout paragraphs specific procedural functions. + */ + +declare(strict_types = 1); + +/** + * Implements hook_preprocess_layout_paragraphs_builder_component_menu(). + */ +function ventuno_preprocess_layout_paragraphs_builder_component_menu(array &$variables): void { + foreach ($variables['types']['layout'] as $type) { + /** @var \Drupal\Core\Template\Attribute $attributes */ + $attributes = $type['link_attributes']; + $attributes->addClass(['d-inline-flex', 'w-auto', 'my-2']); + } + foreach ($variables['types']['content'] as $type) { + /** @var \Drupal\Core\Template\Attribute $attributes */ + $attributes = $type['link_attributes']; + $attributes->addClass(['d-inline-flex', 'w-auto', 'my-2']); + } +} + +/** + * Implements hook_preprocess_HOOK() for layout_paragraphs_builder. + */ +function ventuno_preprocess_layout_paragraphs_builder(array &$variables): void { + $variables['attributes']['class'][] = 'form-control'; + $variables['attributes']['class'][] = 'py-3'; +} diff --git a/web/themes/ventuno/includes/paragraph.inc b/web/themes/ventuno/includes/paragraph.inc index cb9a9d912e0e2492b8ff65f4d3133bff67eeb1f1..f628fb8250d0519da9022be1c639019dc61a4265 100644 --- a/web/themes/ventuno/includes/paragraph.inc +++ b/web/themes/ventuno/includes/paragraph.inc @@ -8,12 +8,60 @@ declare(strict_types = 1); use Drupal\Core\Cache\CacheableMetadata; +use Drupal\paragraphs\ParagraphInterface; /** * Implements hook_preprocess_paragraph(). */ function ventuno_preprocess_paragraph(array &$variables): void { $variables['#attached']['library'][] = 'ventuno/paragraph'; + $variables['#attached']['library'][] = 'ventuno/paragraph__' . $variables['paragraph']->bundle(); + $variables['attributes']['class'][] = 'paragraph--' . str_replace('_', '-', $variables['paragraph']->bundle()); + + if (isset($variables['elements']['#joinup_paragraph_alignment'])) { + $variables['attributes']['class'][] = 'd-flex'; + $variables['attributes']['class'][] = match ($variables['elements']['#joinup_paragraph_alignment']) { + 'center' => 'justify-content-center', + 'right' => 'justify-content-end', + default => 'justify-content-start', + }; + } +} + +/** + * Implements hook_preprocess_HOOK(). + */ +function ventuno_preprocess_field__paragraph__call_to_action(array &$variables): void { + $paragraph = $variables['element']['#object']; + if ($paragraph instanceof ParagraphInterface) { + $color = $paragraph->getBehaviorSetting('color', 'color', 'primary'); + $variables['attributes']['class'][] = 'btn'; + $variables['attributes']['class'][] = match ($color) { + 'brand' => 'btn-brand', + 'secondary' => 'btn-secondary', + default => 'btn-primary', + }; + } +} + +/** + * Implements hook_paragraphs_behavior_color_options_alter(). + */ +function ventuno_paragraphs_behavior_color_options_alter(array &$options): void { + $options['primary'] = t('Dark blue'); + $options['brand'] = t('Middle blue'); + $options['secondary'] = t('Light blue'); +} + +/** + * Implements hook_preprocess_paragraph(). + */ +function ventuno_preprocess_paragraph__accordion(array &$variables): void { + $entity = $variables['paragraph']; + + $variables['attributes']['class'][] = 'accordion'; + $variables['attributes']['class'][] = 'accordion' . $entity->id(); + $variables['attributes']['class'][] = 'mb-4'; } /** @@ -31,12 +79,13 @@ function ventuno_preprocess_paragraph__configurable_listing(&$variables) { 'list' => 'view_mode_tile_horizontal', ]; - $results = &$variables['content']['content_listing']['#results']; - foreach ($results as &$result) { - $result['#item']['#view_mode'] = $view_mode_mapping[$style]; - $cache_tags = CacheableMetadata::createFromRenderArray($result['#item']); - $cache_tags->addCacheTags($paragraph->getCacheTags()); - $cache_tags->applyTo($result['#item']); + if ($results = &$variables['content']['content_listing']['#results']) { + foreach ($results as &$result) { + $result['#item']['#view_mode'] = $view_mode_mapping[$style]; + $cache_tags = CacheableMetadata::createFromRenderArray($result['#item']); + $cache_tags->addCacheTags($paragraph->getCacheTags()); + $cache_tags->applyTo($result['#item']); + } } $variables['style'] = $paragraph->get('list_style')->value; @@ -51,8 +100,16 @@ function ventuno_preprocess_paragraph__accordion_item(array &$variables): void { return; } $parent = $entity->getParentEntity(); - if ($parent->bundle() !== 'accordion') { + if (!$parent || $parent->bundle() !== 'accordion') { return; } $variables['parent_id'] = $parent->id(); } + +/** + * Implements hook_preprocess_HOOK(). + */ +function ventuno_preprocess_paragraph__poll(array &$variables): void { + $variables['attributes']['class'][] = 'bg-light'; + $variables['attributes']['class'][] = 'p-3'; +} diff --git a/web/themes/ventuno/includes/utility.inc b/web/themes/ventuno/includes/utility.inc index 69b6f5ecffb2f630c0446e0e8e697843a3f18a90..ce5e0ed565554243eddb4420da68f44959ae9981 100644 --- a/web/themes/ventuno/includes/utility.inc +++ b/web/themes/ventuno/includes/utility.inc @@ -13,7 +13,7 @@ use Drupal\joinup_community_content\Entity\CommunityContentInterface; use Drupal\joinup_core\Controller\IdRedirect; use Drupal\joinup_workflow\ArchivableEntityInterface; -use Drupal\smart_trim\Truncate\TruncateHTML; +use Drupal\smart_trim\TruncateHTML; use Drupal\topic\Entity\TopicReferencingEntityInterface; /** @@ -149,7 +149,7 @@ function _ventuno_preprocess_tile(array &$variables, string $entity_type_id): vo case 'tallinn_report': $variables['info']['icon'] = 'calendar-event'; - if ($entity->getCreatedTime() === $entity->getChangedTime()) { + if ($entity->getCreatedTime() == $entity->getChangedTime()) { $variables['info']['label'] = new TranslatableMarkup('@label: -', [ '@label' => 'Last update', ]); diff --git a/web/themes/ventuno/modules/ventuno_helper/src/EventSubscriber/VentunoOpenModalDialogSubscriber.php b/web/themes/ventuno/modules/ventuno_helper/src/EventSubscriber/VentunoOpenModalDialogSubscriber.php deleted file mode 100644 index 2e406f70c45d42a5fd3a565fbd4252c4247a33ea..0000000000000000000000000000000000000000 --- a/web/themes/ventuno/modules/ventuno_helper/src/EventSubscriber/VentunoOpenModalDialogSubscriber.php +++ /dev/null @@ -1,86 +0,0 @@ -<?php - -declare(strict_types = 1); - -namespace Drupal\ventuno_helper\EventSubscriber; - -use Drupal\Core\Theme\ThemeManagerInterface; -use Drupal\bootstrap4_modal\Ajax\CloseBootstrap4ModalDialogCommand; -use Drupal\bootstrap4_modal\Ajax\OpenBootstrap4ModalDialogCommand; -use Drupal\email_contact\Event\AjaxEmailContactCommandEvent; -use Drupal\joinup_core\Event\AjaxCommandEvent; -use Symfony\Component\EventDispatcher\EventSubscriberInterface; - -/** - * Listens to AjaxCommandEvent|AjaxEmailContactCommandEvent event. - */ -class VentunoOpenModalDialogSubscriber implements EventSubscriberInterface { - - /** - * The theme manager service. - * - * @var \Drupal\Core\Theme\ThemeManagerInterface - */ - protected ThemeManagerInterface $themeManager; - - /** - * Constructs a new event subscriber instance. - * - * @param \Drupal\Core\Theme\ThemeManagerInterface $theme_manager - * The theme manager service. - */ - public function __construct(ThemeManagerInterface $theme_manager) { - $this->themeManager = $theme_manager; - } - - /** - * {@inheritdoc} - */ - public static function getSubscribedEvents(): array { - return [ - AjaxCommandEvent::class => 'onModalDialog', - AjaxEmailContactCommandEvent::class => 'onModalDialog', - ]; - } - - /** - * Uses the Bootstrap 4 Modal dialog opener on Ventuno. - * - * @param \Drupal\joinup_core\Event\AjaxCommandEvent|\Drupal\email_contact\Event\AjaxEmailContactCommandEvent $event - * The Ajax command event. - */ - public function onModalDialog(AjaxCommandEvent|AjaxEmailContactCommandEvent $event): void { - $context = $event->getContext(); - $instance_open = [ - 'join_collection.subscribe_dialog.open', - 'email_contact.modal.open', - ]; - $instance_close = [ - 'join_collection.subscribe_dialog.close', - 'email_contact.modal.close', - ]; - if (in_array($context['instance'], $instance_open) && $this->isVentuno()) { - $event->setCommand(new OpenBootstrap4ModalDialogCommand($context['title'], $context['content'], [ - 'dialogClasses' => ['modal-dialog-centered', 'modal-lg'], - 'dialogShowHeader' => TRUE, - 'dialogShowHeaderTitle' => TRUE, - ])); - $event->addAttachments(['library' => ['ventuno/modals']]); - } - if (in_array($context['instance'], $instance_close) && $this->isVentuno()) { - $event->setCommand(new CloseBootstrap4ModalDialogCommand()); - } - - } - - /** - * Checks whether the current theme is Ventuno. - * - * @return bool - * Whether the current theme is Ventuno. - */ - protected function isVentuno(): bool { - return $this->themeManager->getActiveTheme()->getName() === 'ventuno'; - } - -} diff --git a/web/themes/ventuno/modules/ventuno_helper/src/Render/MainContent/VentunoModalRenderer.php b/web/themes/ventuno/modules/ventuno_helper/src/Render/MainContent/VentunoModalRenderer.php deleted file mode 100644 index 7a5eb5d6542b1f4775ac9f6b4a6b4b7e4b9a87f2..0000000000000000000000000000000000000000 --- a/web/themes/ventuno/modules/ventuno_helper/src/Render/MainContent/VentunoModalRenderer.php +++ /dev/null @@ -1,71 +0,0 @@ -<?php - -declare(strict_types = 1); - -namespace Drupal\ventuno_helper\Render\MainContent; - -use Drupal\Core\Controller\TitleResolverInterface; -use Drupal\Core\Render\MainContent\MainContentRendererInterface; -use Drupal\Core\Render\MainContent\ModalRenderer; -use Drupal\Core\Render\RendererInterface; -use Drupal\Core\Routing\RouteMatchInterface; -use Drupal\Core\Theme\ThemeManagerInterface; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; - -/** - * Modal dialog renderer that uses Bootstrap modals when using Ventuno theme. - */ -class VentunoModalRenderer extends ModalRenderer { - - /** - * The 'Boostrap 4 Modal' modal content renderer. - * - * @var \Drupal\Core\Render\MainContent\MainContentRendererInterface - */ - protected MainContentRendererInterface $bootstrap4ModalRenderer; - - /** - * The theme manager service. - * - * @var \Drupal\Core\Theme\ThemeManagerInterface - */ - protected ThemeManagerInterface $themeManager; - - /** - * Constructs a new dialog renderer. - * - * @param \Drupal\Core\Controller\TitleResolverInterface $title_resolver - * The title resolver. - * @param \Drupal\Core\Render\RendererInterface $renderer - * The renderer. - * @param \Drupal\Core\Render\MainContent\MainContentRendererInterface $bootstrap_4_modal_renderer - * The 'Boostrap 4 Modal' modal content renderer. - * @param \Drupal\Core\Theme\ThemeManagerInterface $theme_manager - * The theme manager service. - */ - public function __construct(TitleResolverInterface $title_resolver, RendererInterface $renderer, MainContentRendererInterface $bootstrap_4_modal_renderer, ThemeManagerInterface $theme_manager) { - parent::__construct($title_resolver, $renderer); - $this->bootstrap4ModalRenderer = $bootstrap_4_modal_renderer; - $this->themeManager = $theme_manager; - } - - /** - * {@inheritdoc} - */ - public function renderResponse(array $main_content, Request $request, RouteMatchInterface $route_match): Response { - $theme = $this->themeManager->getActiveTheme(); - if ($theme->getName() === 'ventuno') { - $request->request->set('dialogOptions', [ - 'dialogClasses' => ['modal-dialog-centered', 'modal-lg'], - 'dialogShowHeader' => TRUE, - 'dialogShowHeaderTitle' => TRUE, - ]); - /** @var \Drupal\Core\Ajax\AjaxResponse $response */ - $response = $this->bootstrap4ModalRenderer->renderResponse($main_content, $request, $route_match); - return $response->addAttachments(['library' => ['ventuno/modals']]); - } - return parent::renderResponse($main_content, $request, $route_match); - } - -} diff --git a/web/themes/ventuno/modules/ventuno_helper/src/VentunoHelperServiceProvider.php b/web/themes/ventuno/modules/ventuno_helper/src/VentunoHelperServiceProvider.php deleted file mode 100644 index ab7d12f7496e6291bc4c4c2850df956222853d57..0000000000000000000000000000000000000000 --- a/web/themes/ventuno/modules/ventuno_helper/src/VentunoHelperServiceProvider.php +++ /dev/null @@ -1,29 +0,0 @@ -<?php - -declare(strict_types = 1); - -namespace Drupal\ventuno_helper; - -use Drupal\Core\DependencyInjection\ContainerBuilder; -use Drupal\Core\DependencyInjection\ServiceModifierInterface; -use Drupal\ventuno_helper\Render\MainContent\VentunoModalRenderer; -use Symfony\Component\DependencyInjection\Reference; - -/** - * Alters 'main_content_renderer.modal' service to use a custom class. - * - * @see \Drupal\ventuno_helper\Render\MainContent\VentunoModalRenderer - */ -class VentunoHelperServiceProvider implements ServiceModifierInterface { - - /** - * {@inheritdoc} - */ - public function alter(ContainerBuilder $container) { - $container->getDefinition('main_content_renderer.modal') - ->setClass(VentunoModalRenderer::class) - ->addArgument(new Reference('main_content_renderer.bs4_modal')) - ->addArgument(new Reference('theme.manager')); - } - -} diff --git a/web/themes/ventuno/modules/ventuno_helper/ventuno_helper.info.yml b/web/themes/ventuno/modules/ventuno_helper/ventuno_helper.info.yml index 2e3c78fe036b470672f94ddb3e3dd6beeea83eea..6035a2af3cccb9a65d308e5d103077b50065a2cd 100644 --- a/web/themes/ventuno/modules/ventuno_helper/ventuno_helper.info.yml +++ b/web/themes/ventuno/modules/ventuno_helper/ventuno_helper.info.yml @@ -2,5 +2,3 @@ type: module name: Ventuno Helper description: Provides backend support for Ventuno theme. core_version_requirement: ">=9.4" -dependencies: - - bootstrap4_modal:bootstrap4_modal diff --git a/web/themes/ventuno/modules/ventuno_helper/ventuno_helper.module b/web/themes/ventuno/modules/ventuno_helper/ventuno_helper.module index a3bcb2aad257c5202aae911989b200f754388182..2f72cec012a8a81734df41ecb581bff7d6e9655d 100644 --- a/web/themes/ventuno/modules/ventuno_helper/ventuno_helper.module +++ b/web/themes/ventuno/modules/ventuno_helper/ventuno_helper.module @@ -7,24 +7,6 @@ declare(strict_types = 1); -use Drupal\bootstrap4_modal\Ajax\CloseBootstrap4ModalDialogCommand; - -/** - * Implements hook_ajax_render_alter(). - */ -function ventuno_helper_ajax_render_alter(array &$data): void { - if (\Drupal::theme()->getActiveTheme()->getName() === 'ventuno') { - foreach ($data as $key => $command) { - if ($command['command'] === 'closeDialog') { - unset($data[$key]); - $bootstrap_command = new CloseBootstrap4ModalDialogCommand(); - $data[] = $bootstrap_command->render(); - break; - } - } - } -} - /** * Implements hook_link_alter(). */ diff --git a/web/themes/ventuno/modules/ventuno_helper/ventuno_helper.services.yml b/web/themes/ventuno/modules/ventuno_helper/ventuno_helper.services.yml deleted file mode 100644 index 3ebb82191de5aa8ed08d6188fefa11b12111bc61..0000000000000000000000000000000000000000 --- a/web/themes/ventuno/modules/ventuno_helper/ventuno_helper.services.yml +++ /dev/null @@ -1,7 +0,0 @@ -services: - - ventuno_helper.open_modal_dialog: - class: Drupal\ventuno_helper\EventSubscriber\VentunoOpenModalDialogSubscriber - arguments: ['@theme.manager'] - tags: - - { name: event_subscriber } diff --git a/web/themes/ventuno/src/scss/03-components.scss b/web/themes/ventuno/src/scss/03-components.scss index 6052c8fa47e9b22fbfc7f45802bd667ed1603346..f7e7a1ed79c13f43432f40f5c0a092168c941be1 100644 --- a/web/themes/ventuno/src/scss/03-components.scss +++ b/web/themes/ventuno/src/scss/03-components.scss @@ -13,5 +13,7 @@ @import "@openeuropa/bcl-bootstrap/scss/navbar"; @import "@openeuropa/bcl-theme-default/src/scss/header"; @import "@openeuropa/bcl-theme-default/src/scss/icon"; + @import "@openeuropa/bcl-theme-joinup/src/scss/buttons"; + @import "components/ui-dialog"; @import "components/buttons"; @import "components/link"; diff --git a/web/themes/ventuno/src/scss/components/_ui-dialog.scss b/web/themes/ventuno/src/scss/components/_ui-dialog.scss new file mode 100644 index 0000000000000000000000000000000000000000..45f38d5b920232f2243ee027361a7a0a8455cd38 --- /dev/null +++ b/web/themes/ventuno/src/scss/components/_ui-dialog.scss @@ -0,0 +1,53 @@ +.ui-widget, +.ui-widget button { + font-family: $font-family-base; +} +.ui-widget-overlay { + z-index: $zindex-modal-backdrop; +} +.ui-widget-content a.btn-brand { + color: $white; +} +.ui-dialog { + z-index: $zindex-modal; + overflow-wrap: break-word; + border: 1px solid $gray-200; + border-radius: $border-radius-lg; + overflow: hidden; + box-shadow: $modal-content-box-shadow-sm-up; + padding: 0; + .ui-dialog-titlebar { + padding: $spacer; + background-color: transparent; + border: 0; + border-bottom: $modal-header-border-width solid $modal-header-border-color; + } + .ui-dialog-title { + font-weight: $font-weight-base; + color: $primary; + font-size: $h4-font-size; + } + .ui-dialog-titlebar-close { + right: $spacer; + top: 1.75rem; + 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.414z'/%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; + } + .ui-dialog-content { + padding: $spacer; + } + .ui-button.ui-dialog-titlebar-close, + .ui-button.ui-dialog-titlebar-close:hover { + background-color: transparent; + .ui-icon-closethick { + background-image: none; + } + } +} diff --git a/web/themes/ventuno/src/scss/components/abstract.scss b/web/themes/ventuno/src/scss/components/abstract.scss index 133c50766e7a225503b14a030d67f817008e77d5..87bba5d8bf89379efecdcf61d1f46ba6be234e95 100644 --- a/web/themes/ventuno/src/scss/components/abstract.scss +++ b/web/themes/ventuno/src/scss/components/abstract.scss @@ -1,7 +1,7 @@ @import "../partials/core"; .abstract { - .read-more { + .btn.read-more { margin-top: $spacer; color: darken($brand, 15); // Override button properties padding: 0; // Override button properties diff --git a/web/themes/ventuno/src/scss/components/buttons.scss b/web/themes/ventuno/src/scss/components/buttons.scss index 79344ae6ffd40575c2633609061f2f630fc84d3c..5c25dfbec10fea841a0aa5286df6059043afc9bd 100644 --- a/web/themes/ventuno/src/scss/components/buttons.scss +++ b/web/themes/ventuno/src/scss/components/buttons.scss @@ -37,3 +37,15 @@ a.btn-link { color: $primary; } } + +.button--primary { + @extend .btn-primary; +} + +.button--secondary { + @extend .btn-secondary; +} + +.button--link { + @extend .btn-link; +} diff --git a/web/themes/ventuno/src/scss/components/layout-paragraphs--builder.scss b/web/themes/ventuno/src/scss/components/layout-paragraphs--builder.scss new file mode 100644 index 0000000000000000000000000000000000000000..5ebb74621120094507d7331e45c6479256c0421f --- /dev/null +++ b/web/themes/ventuno/src/scss/components/layout-paragraphs--builder.scss @@ -0,0 +1,36 @@ +// +// @file +// Theming rules extending / overriding Layout Paragraphs' Builder UI (admin). +// + +@import "../partials/core"; + +$wireframe-width: 1px; +$wireframe-style: dashed; +$wireframe-color: $black; +$wireframe-opacity: 0.5; + +.lp-builder { + .js-lpb-component { + outline: $wireframe-width $wireframe-style rgba($wireframe-color, $wireframe-opacity); + } + + .js-lpb-component-list > .js-lpb-component { + margin-bottom: $spacer; + } + + .js-lpb-region ~ .js-lpb-region:before { + display: block; + position: absolute; + inset-inline-start: calc($wireframe-width / -2); + border-inline-start: $wireframe-width $wireframe-style rgba($wireframe-color, $wireframe-opacity); + height: 100%; + content: ""; + } + + // Doubled selectors needed to override parent library's more specific + // declaration (where a qualifier ":hover" is also used). + .js-lpb-region.js-lpb-region { + outline: none; + } +} diff --git a/web/themes/ventuno/src/scss/components/menu--og--navigation.scss b/web/themes/ventuno/src/scss/components/menu--og--navigation.scss index aa53df4e0f45d46037199ebddbcadb2f83b38d46..45fdc47d56ad899bf83a75370d8ce9b34836705b 100644 --- a/web/themes/ventuno/src/scss/components/menu--og--navigation.scss +++ b/web/themes/ventuno/src/scss/components/menu--og--navigation.scss @@ -30,18 +30,11 @@ display: none; } } - .nav-tabs { + .nav:not(.nav-pills) { display: inline-flex; flex-wrap: nowrap; border: none; - .nav-link { - height: 28px; - white-space: nowrap; - color: $primary; - padding: 0 $spacer * .25; - border: none; - border-radius: 0%; - box-shadow: 0 4px 0 0 transparent; + .nav-item { margin: $spacer * .25; margin-right: $spacer * .75; &:first-of-type { @@ -50,6 +43,15 @@ &:not(:first-of-type) { margin-left: $spacer * .75; } + } + .nav-link { + height: 28px; + white-space: nowrap; + color: $primary; + padding: 0 $spacer * .25; + border: none; + border-radius: 0%; + box-shadow: 0 4px 0 0 transparent; &:hover { box-shadow: 0 4px 0 0 $primary; } diff --git a/web/themes/ventuno/src/scss/components/paragraph--carousel.scss b/web/themes/ventuno/src/scss/components/paragraphs/paragraph--carousel.scss similarity index 73% rename from web/themes/ventuno/src/scss/components/paragraph--carousel.scss rename to web/themes/ventuno/src/scss/components/paragraphs/paragraph--carousel.scss index 45f510a7a450ec57357ea82389683284e568660d..3fa19c51be32a19d118b4b27475ef81ed53824f1 100644 --- a/web/themes/ventuno/src/scss/components/paragraph--carousel.scss +++ b/web/themes/ventuno/src/scss/components/paragraphs/paragraph--carousel.scss @@ -1,7 +1,10 @@ -@import "../partials/core"; -@import "../partials/mixins/bootstrap-icons"; +@import "../../partials/core"; +@import "../../partials/mixins/bootstrap-icons"; .paragraph--carousel { + img { + margin-bottom: 0; + } &__title { flex: 1 1 auto; } diff --git a/web/themes/ventuno/src/scss/components/paragraphs/paragraph--heading.scss b/web/themes/ventuno/src/scss/components/paragraphs/paragraph--heading.scss new file mode 100644 index 0000000000000000000000000000000000000000..676edf833c3d4c22ea7f21e222b7c591416d20ba --- /dev/null +++ b/web/themes/ventuno/src/scss/components/paragraphs/paragraph--heading.scss @@ -0,0 +1,8 @@ +@import "../../partials/core"; + +.paragraph--heading.paragraph { + h2, h3, h4, h5 { + margin-top: 0; + margin-bottom: $spacer; + } +} diff --git a/web/themes/ventuno/src/scss/components/paragraphs/paragraph--layout.scss b/web/themes/ventuno/src/scss/components/paragraphs/paragraph--layout.scss new file mode 100644 index 0000000000000000000000000000000000000000..be8b205ee02dbf223018cb12c5c90f1828a106ec --- /dev/null +++ b/web/themes/ventuno/src/scss/components/paragraphs/paragraph--layout.scss @@ -0,0 +1,69 @@ +@import "../../partials/core"; + +.paragraph--layout { + &.lpb-layout { + padding: $spacer; + } + padding-top: $spacer * 1.125; // 18px + padding-bottom: $spacer * 1.125; // 18px + &:first-of-type:not(.paragraph--layout--light):not(.paragraph--layout--secondary):not(.lpb-layout) { + padding-top: 0; + @include media-breakpoint-up(lg) { + padding-top: 0; + } + } + @include media-breakpoint-up(lg) { + padding-top: $spacer * 2.25; // 36px + padding-bottom: $spacer * 2.25; // 36px + } + &--light, + &--secondary { + padding: $spacer * 2 0; // 32px + @include media-breakpoint-up(sm) { + padding: $spacer * 4 0; // 64px + } + @include media-breakpoint-up(lg) { + padding: $spacer * 5 0; // 80px + } + position: relative; + &::before { + content: ""; + position: absolute; + z-index: -1; + bottom: 0; + width: 100vw; + height: 100%; + left: $spacer * -.75; // -12px + @include media-breakpoint-up(sm) { + left: calc(-50vw + 258px); + } + @include media-breakpoint-up(md) { + left: calc(-50vw + 348px); + } + @include media-breakpoint-up(lg) { + left: calc(-50vw + 468px); + } + @include media-breakpoint-up(xl) { + left: calc(-50vw + 558px); + } + @include media-breakpoint-up(xxl) { + left: calc(-50vw + 648px); + } + } + } + &--light { + &::before { + background-color: $light; + } + } + &--secondary { + &::before { + background-color: $secondary; + } + } +} +// Make Layout Paragraph limits more evident to the user +.lp-builder:not(.is-navigating) .paragraph--layout.js-lpb-component:hover, +.lp-builder:not(.is-navigating) .paragraph--layout.js-lpb-component:focus-within { + outline: 5px solid $warning; +} diff --git a/web/themes/ventuno/src/scss/components/paragraphs/paragraph--poll.scss b/web/themes/ventuno/src/scss/components/paragraphs/paragraph--poll.scss new file mode 100644 index 0000000000000000000000000000000000000000..c11d0fbed47e40f5b3d180a3f9d4e16dcc9a3576 --- /dev/null +++ b/web/themes/ventuno/src/scss/components/paragraphs/paragraph--poll.scss @@ -0,0 +1,72 @@ +@import "../../partials/core"; + +.paragraph--poll { + position: relative; + // Form overrides + .col-form-label { + padding-top: 0; + padding-bottom: 0; + } + .form-item.form-item-choice.form-check { + padding: 0; + &:not(:last-of-type) { + border-bottom: 1px solid $gray-300; + } + } + .form-radio.form-check-input { + display: none; + } + .form-check-label.option.form-label { + cursor: pointer; + padding: $spacer 0; + margin: 0; + } + .poll { + .choice-item { + &:not(:last-of-type) { + border-bottom: 1px solid $gray-300; + } + } + .choice-title, + .choice-result { + &.selected { + color: darken($success, 15); + margin-inline: $spacer; + } + &.not-selected { + color: $primary; + margin-inline: $spacer; + } + } + .bar { + position: absolute; + width: 100%; + top: $spacer * .6; + height: $spacer * 2; + background-color: transparent; + .foreground { + border-radius: $border-radius-pill; + height: $spacer * 2; + &.selected { + background-color: rgba($success, .1); + } + &.not-selected { + background-color: rgba($brand, .1); + } + } + } + } + .form-actions { + margin-top: $spacer; + margin-bottom: 0; + @include media-breakpoint-up(sm) { + margin-top: 0; + } + } + [data-drupal-selector="edit-cancel"] { + @include media-breakpoint-up(sm) { + position: absolute; + bottom: $spacer * -.1; // Align with poll details + } + } +} diff --git a/web/themes/ventuno/src/scss/components/paragraphs/paragraph--testimony.scss b/web/themes/ventuno/src/scss/components/paragraphs/paragraph--testimony.scss new file mode 100644 index 0000000000000000000000000000000000000000..ebabcdc5ec6eb96e088e255a472227c9543e5ebc --- /dev/null +++ b/web/themes/ventuno/src/scss/components/paragraphs/paragraph--testimony.scss @@ -0,0 +1,101 @@ +@import "../../partials/core"; + +.paragraph--testimony { + display: flex; + flex-direction: column; + margin-bottom: $spacer * 4; //64px + @include media-breakpoint-up(md) { + height: 100%; + margin-bottom: $spacer * 2; //32px + } + .testimony { + &__quote { + margin-bottom: $spacer; // 16px + &::before { + display: inline-block; + color: $brand; + font-size: 5rem; + content: "“"; + line-height: 0; + position: relative; + top: $spacer * 2; // 32px + } + &::after { + display: inline-block; + color: $brand; + font-size: 5rem; + content: "â€"; + line-height: 0; + position: relative; + top: $spacer * 3.5; // 56px + margin-top: -1em; + } + } + &__fig { + display: flex; + align-items: center; + @include media-breakpoint-between(md, lg) { + flex-direction: column; + } + } + &__img { + aspect-ratio: 16 / 9; + width: 70%; + border-radius: $spacer * 2; // 32px + border: 2px solid transparent; + overflow: hidden; + background: linear-gradient($primary, $primary) padding-box, $gradient border-box; + margin-left: $spacer * -2.5; // -40px + object-fit: cover; + @include media-breakpoint-up(sm) { + margin-left: 0; + } + @include media-breakpoint-between(md, lg) { + width: 100%; + } + @include media-breakpoint-up(lg) { + width: 50%; + } + img { + width: 100%; + } + } + &__figcaption { + display: flex; + flex-direction: column; + width: calc(30% - 1rem + 2.5rem); + margin-left: 1rem; + color: $gray-600; + line-height: 1.5; + @include media-breakpoint-up(sm) { + width: calc(30% - 1rem); + } + @include media-breakpoint-only(md) { + height: $spacer * 4; // 64px + margin-top: $spacer; + } + @include media-breakpoint-between(md, lg) { + width: 100%; + } + @include media-breakpoint-up(lg) { + width: 50%; + width: calc(50% - 1rem); + } + } + &__author { + font-size: .875rem; + margin-bottom: 0; + } + &__bio { + font-size: .75rem; + line-height: 1.2; + margin-bottom: 0; + } + &__cite { + display: inline-block; // Browsers seem to have a min line-height for <cite> element + font-style: normal; + font-size: .625rem; + line-height: 1.2; + } + } +} diff --git a/web/themes/ventuno/src/scss/components/paragraphs/paragraph--video.scss b/web/themes/ventuno/src/scss/components/paragraphs/paragraph--video.scss new file mode 100644 index 0000000000000000000000000000000000000000..68aaaee24a0e833296c35b1dc595b97c40a46a3c --- /dev/null +++ b/web/themes/ventuno/src/scss/components/paragraphs/paragraph--video.scss @@ -0,0 +1,16 @@ +@import "../../partials/core"; + +.paragraph--video { + &.js-lpb-component { + .video-embed-field-responsive-video iframe { + pointer-events: none; // Allow Drag&Drop in edit form. + } + } + + // Temporary workaround: if video is not the last child of its parent, apply + // one unit bottom spacing. Using margin because it collapses with the top + // margin of the next element. + &:not(:last-child) { + margin-bottom: $spacer; + } +} diff --git a/web/themes/ventuno/src/scss/components/paragraph.scss b/web/themes/ventuno/src/scss/components/paragraphs/paragraph.scss similarity index 90% rename from web/themes/ventuno/src/scss/components/paragraph.scss rename to web/themes/ventuno/src/scss/components/paragraphs/paragraph.scss index d5c6e00d0cd778d365ee8db0bf8c39ec0dabba96..0a60fb6173a414078e514dc44c97c1aad59cc69d 100644 --- a/web/themes/ventuno/src/scss/components/paragraph.scss +++ b/web/themes/ventuno/src/scss/components/paragraphs/paragraph.scss @@ -1,4 +1,4 @@ -@import "../partials/core"; +@import "../../partials/core"; .paragraph, .fieldset--textarea { @@ -59,9 +59,3 @@ margin-top: 1em; } } - -.paragraph.paragraph--carousel { - img { - margin-bottom: 0; - } -} diff --git a/web/themes/ventuno/src/scss/components/tile.scss b/web/themes/ventuno/src/scss/components/tile.scss index e59a8d363a189938798972353898877eb2cec3d8..d5023c5657784c7b88b972c418d2e8c456ef046d 100644 --- a/web/themes/ventuno/src/scss/components/tile.scss +++ b/web/themes/ventuno/src/scss/components/tile.scss @@ -4,6 +4,7 @@ position: relative; flex-direction: column; height: 100%; + background-color: $white; &__link { z-index: 2; } diff --git a/web/themes/ventuno/src/scss/pages/homepage.scss b/web/themes/ventuno/src/scss/pages/homepage.scss index dbc25a2547887e6d91f0dfe3c9813cc630571548..c359618cf50eae8058103380e766e52cd6a3dec1 100644 --- a/web/themes/ventuno/src/scss/pages/homepage.scss +++ b/web/themes/ventuno/src/scss/pages/homepage.scss @@ -33,7 +33,7 @@ @include media-breakpoint-up(md) { background-size: auto 100%; background-position: center; - background-image: url(../images/banner-md.svg), linear-gradient(to right, $ec-blue 0%, $ec-blue 30%, #082330 30%, #082330 100%); + background-image: url(../images/banner-md.svg), linear-gradient(to right, $ec-blue 0%, $ec-blue 45%, #082330 45%, #082330 100%); } .block-views-exposed-filter-blocksearch-page-1 { padding-bottom: $spacer * .5; // 8px diff --git a/web/themes/ventuno/src/scss/partials/overrides/_utilities.scss b/web/themes/ventuno/src/scss/partials/overrides/_utilities.scss index 5b50280f7688efb7bf1e0cd7f7761b6713b2dc53..33fc8755b56ada3aee6e102ddb681818fea19bf4 100644 --- a/web/themes/ventuno/src/scss/partials/overrides/_utilities.scss +++ b/web/themes/ventuno/src/scss/partials/overrides/_utilities.scss @@ -29,6 +29,7 @@ $utilities: map-merge( property: height, class: h, values: ( + 50vh: 50vh, 25: 25%, 50: 50%, 75: 75%, @@ -89,7 +90,8 @@ $utilities: map-merge( class: zi, values: ( 0: 0, - 1: 1 + 1: 1, + 2: 2 ) ), "font-weight": diff --git a/web/themes/ventuno/src/scss/partials/overrides/_variables.scss b/web/themes/ventuno/src/scss/partials/overrides/_variables.scss index 0dc0d90e69076c4808334ae7303bd72ae17606b6..18a6f543d9c45723f5a2907a89eadd07a55f9149 100644 --- a/web/themes/ventuno/src/scss/partials/overrides/_variables.scss +++ b/web/themes/ventuno/src/scss/partials/overrides/_variables.scss @@ -49,7 +49,7 @@ $headings-font-weight: 400; $h1-font-size: $font-size-base * 2; // 32px $h2-font-size: $font-size-base * 1.5; // 24px $h3-font-size: $font-size-base * 1.25; // 20px -$h4-font-size: $font-size-base; // 16px +$h4-font-size: $font-size-base * 1.125; // 18px $h5-font-size: $font-size-base; // 16px $h6-font-size: $font-size-base; // 16px diff --git a/web/themes/ventuno/templates/field/field--paragraph--call-to-action.html.twig b/web/themes/ventuno/templates/field/field--paragraph--call-to-action.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..61898158a436b777b4eed59756371efb0f66e355 --- /dev/null +++ b/web/themes/ventuno/templates/field/field--paragraph--call-to-action.html.twig @@ -0,0 +1,11 @@ +{# +/** + * @file + * Theme override for the bare field template. + * + * @see ./core/themes/stable/templates/field/field.html.twig + */ +#} +{% for item in items %} + <a href="{{ item.content['#url'] }}" {{ attributes }}>{{ item.content['#title'] }}</a> +{% endfor %} diff --git a/web/themes/ventuno/templates/flag/flag-count-text--mini.html.twig b/web/themes/ventuno/templates/flag/flag-count-text--mini.html.twig index 1405f4beb5a0e919d89c1de2556554c10f58ad75..84d557cca6620d7f78868ddd36e2ebc890b23bd6 100644 --- a/web/themes/ventuno/templates/flag/flag-count-text--mini.html.twig +++ b/web/themes/ventuno/templates/flag/flag-count-text--mini.html.twig @@ -22,7 +22,11 @@ {% set attributes = create_attribute() %} {% set count = flagcount(flag, flaggable) %} - <a{{ attributes.addClass(classes).setAttribute('data-dialog-type', 'modal').setAttribute('href', path('joinup_like.anonymous_dialog')).setAttribute('title', 'Login or register to like this content'|t) }}> + <a{{ attributes.addClass(classes) + .setAttribute('data-dialog-type', 'modal') + .setAttribute('href', path('joinup_modal.anonymous', {'type': 'like'}, {'query':{'destination': path('<current>') }})) + .setAttribute('title', 'Sign in or register to like this content'|t) + }}> <svg class="bi icon--xs me-1"> <use xlink:href="{{ bcl_icon_path }}#hand-thumbs-up"></use> </svg> diff --git a/web/themes/ventuno/templates/flag/flag-count-text.html.twig b/web/themes/ventuno/templates/flag/flag-count-text.html.twig index 59f81458668504f35bf7f9fa22f7f97684546377..4ca920ccf78ef76dba7948141d112e0e332419aa 100644 --- a/web/themes/ventuno/templates/flag/flag-count-text.html.twig +++ b/web/themes/ventuno/templates/flag/flag-count-text.html.twig @@ -19,9 +19,9 @@ ] %} {% set attributes = create_attribute() .addClass(classes) - .setAttribute('href', path('joinup_like.anonymous_dialog')) + .setAttribute('href', path('joinup_modal.anonymous', {'type': 'like'}, {'query':{'destination': path('<current>') }})) .setAttribute('data-dialog-type', 'modal') - .setAttribute('data-dialog-options', '{"width":400}' ) + .setAttribute('data-dialog-options', '{"width":"auto","height":"auto"}' ) %} {% set count = flagcount(flag, flaggable) %} diff --git a/web/themes/ventuno/templates/form/input--submit.html.twig b/web/themes/ventuno/templates/form/input--submit.html.twig index 48839aceda39bf5401042f9abe57d1860e69df70..5385720698d7bec8578c977564bb5e51f21d89c8 100644 --- a/web/themes/ventuno/templates/form/input--submit.html.twig +++ b/web/themes/ventuno/templates/form/input--submit.html.twig @@ -10,11 +10,6 @@ * @see template_preprocess_input() */ #} -{% if attributes.hasClass('button--primary') or (attributes['data-drupal-selector'] == 'edit-submit') %} - {% set attributes = attributes.addClass(['btn-primary']) %} -{% elseif not attributes.hasClass('btn-brand') %} - {% set attributes = attributes.addClass(['btn-secondary']) %} -{% endif %} {% if attributes.disabled == 'disabled' %} {% set attributes = attributes.addClass(['disabled']) %} {% endif %} diff --git a/web/themes/ventuno/templates/joinup_like/joinup-like-anonymous.html.twig b/web/themes/ventuno/templates/joinup_like/joinup-like-anonymous.html.twig index ed3f3450fc85c0199d387177abaeef2622a04f72..3345fe6fe4f2d9e6ab73a355354739248a56b867 100644 --- a/web/themes/ventuno/templates/joinup_like/joinup-like-anonymous.html.twig +++ b/web/themes/ventuno/templates/joinup_like/joinup-like-anonymous.html.twig @@ -13,10 +13,10 @@ */ #} <div class="text-center"> - <h2 class="h1 my-5">{{ 'Login or register to like this content'|t }}</h2> - <p class="mb-4">{{ 'Like this content will help other people find reliable information about what they search!'|t }}</p> + <h2 class="h1 my-5">{{ 'Sign in or register to like this content'|t }}</h2> + <p class="mb-4">{{ 'Liking content shows your appreciation to content creators and helps other users find good content'|t }}</p> <p class="text-black-50 mb-2">{{ 'Already have an account?'|t }}</p> - <a class="btn btn-brand mb-4" href="{{ path('user.login') }}">{{ 'Log in'|t }}</a> + <a class="btn btn-brand mb-4" href="{{ path('user.login') }}">{{ 'Sign in'|t }}</a> <p class="text-black-50 mb-2">{{ 'New member?'|t }}</p> <a class="btn btn-secondary" href="{{ path('user.register') }}">{{ 'Register'|t }}</a> </div> diff --git a/web/themes/ventuno/templates/joinup_modal/joinup-modal-anonymous.html.twig b/web/themes/ventuno/templates/joinup_modal/joinup-modal-anonymous.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..3715f42d67a8375369bda20f4a00e9feed274768 --- /dev/null +++ b/web/themes/ventuno/templates/joinup_modal/joinup-modal-anonymous.html.twig @@ -0,0 +1,29 @@ +{# +/** + * @file + * Default theme implementation to display a not logged in modal dialog. + */ + +/** + * Template implementation to display the content of the modal dialog for users who are not logged in. + * + * Available variables: + * - title: Modal title. + * - description: Modal description. + * - login: Login link. + * - register: Register link. + * + * @see \Drupal\joinup_modal\Controller\JoinupModalAnonymousController::render() + * + * @ingroup themeable + */ +#} + +<div class="text-center p-5"> + <h2 class="h1 mb-5">{{ title }}</h2> + <p class="mb-4">{{ description }}</p> + <p class="text-black-50 mb-2">{{ 'Already have an account?'|t }}</p> + {{ link(login.text, login.url, { 'class': ['btn', 'btn-brand', 'mb-4']}) }} + <p class="text-black-50 mb-2">{{ 'New member?'|t }}</p> + {{ link(register.text, register.url, { 'class': ['btn', 'btn-secondary']}) }} +</div> diff --git a/web/themes/ventuno/templates/layout_builder/layout--fourcol-section.html.twig b/web/themes/ventuno/templates/layout_builder/layout--fourcol-section.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..7b517142dc7f7524c389290abe89f14890b4e784 --- /dev/null +++ b/web/themes/ventuno/templates/layout_builder/layout--fourcol-section.html.twig @@ -0,0 +1,40 @@ +{# +/** + * @file + * Default theme implementation for a four-column 25%-25%-25%-25% layout. + * + * Available variables: + * - in_preview: Whether the plugin is being rendered in preview mode. + * - content: The content for this layout. + * - attributes: HTML attributes for the layout <div>. + * + * @ingroup themeable + */ +#} +{% + set classes = [ + 'layout', + 'row', + ] +%} +{% if content %} + <div{{ attributes.addClass(classes).removeClass('layout--fourcol-section') }}> + + <div {{ region_attributes.first.addClass('layout__region', 'layout__region--first', 'col-md-3') }}> + {{ content.first }} + </div> + + <div {{ region_attributes.second.addClass('layout__region', 'layout__region--second', 'col-md-3') }}> + {{ content.second }} + </div> + + <div {{ region_attributes.third.addClass('layout__region', 'layout__region--third', 'col-md-3') }}> + {{ content.third }} + </div> + + <div {{ region_attributes.fourth.addClass('layout__region', 'layout__region--fourth', 'col-md-3') }}> + {{ content.fourth }} + </div> + + </div> +{% endif %} diff --git a/web/themes/ventuno/templates/layout_builder/layout--onecol.html.twig b/web/themes/ventuno/templates/layout_builder/layout--onecol.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..3cacc6ff664e3575f286c9aa82cc868d1c22cb60 --- /dev/null +++ b/web/themes/ventuno/templates/layout_builder/layout--onecol.html.twig @@ -0,0 +1,25 @@ +{# +/** + * @file + * Default theme implementation to display a one-column layout. + * + * Available variables: + * - in_preview: Whether the plugin is being rendered in preview mode. + * - content: The content for this layout. + * - attributes: HTML attributes for the layout <div>. + * + * @ingroup themeable + */ +#} +{% + set classes = [ + 'layout', + ] +%} +{% if content %} + <div{{ attributes.addClass(classes) }}> + <div {{ region_attributes.content.addClass('layout__region', 'layout__region--content') }}> + {{ content.content }} + </div> + </div> +{% endif %} diff --git a/web/themes/ventuno/templates/layout_builder/layout--threecol-section.html.twig b/web/themes/ventuno/templates/layout_builder/layout--threecol-section.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..882b18edd00de7cf86374d7c4002b7d2e6036766 --- /dev/null +++ b/web/themes/ventuno/templates/layout_builder/layout--threecol-section.html.twig @@ -0,0 +1,30 @@ +{# +/** + * @file + * Default theme implementation for a three-column layout. + * + * Available variables: + * - in_preview: Whether the plugin is being rendered in preview mode. + * - content: The content for this layout. + * - attributes: HTML attributes for the layout <div>. + * + * @ingroup themeable + */ +#} +{% if content %} + <div{{ attributes.addClass(classes).removeClass('layout--threecol-section').addClass('row') }}> + + <div {{ region_attributes.first.addClass('layout__region', 'layout__region--first', 'col-md-4') }}> + {{ content.first }} + </div> + + <div {{ region_attributes.second.addClass('layout__region', 'layout__region--second', 'col-md-4') }}> + {{ content.second }} + </div> + + <div {{ region_attributes.third.addClass('layout__region', 'layout__region--third', 'col-md-4') }}> + {{ content.third }} + </div> + + </div> +{% endif %} diff --git a/web/themes/ventuno/templates/layout_builder/layout--twocol-section.html.twig b/web/themes/ventuno/templates/layout_builder/layout--twocol-section.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..0cc09de88689f6c007b5239843398e8b00136fb4 --- /dev/null +++ b/web/themes/ventuno/templates/layout_builder/layout--twocol-section.html.twig @@ -0,0 +1,26 @@ +{# +/** + * @file + * Default theme implementation to display a two-column layout. + * + * Available variables: + * - in_preview: Whether the plugin is being rendered in preview mode. + * - content: The content for this layout. + * - attributes: HTML attributes for the layout <div>. + * + * @ingroup themeable + */ +#} +{% if content %} + <div{{ attributes.removeClass('layout--twocol-section').addClass('row') }}> + + <div {{ region_attributes.first.addClass('layout__region', 'layout__region--first', 'col-md-6') }}> + {{ content.first }} + </div> + + <div {{ region_attributes.second.addClass('layout__region', 'layout__region--second', 'col-md-6') }}> + {{ content.second }} + </div> + + </div> +{% endif %} diff --git a/web/themes/ventuno/templates/menu/menu--og--navigation.html.twig b/web/themes/ventuno/templates/menu/menu--og--navigation.html.twig index a3cbe3e3ae30df57b779db7f410979c980edb9a1..ddd3fe9ba33b2b2540b8b618574a393d28dbd1c9 100644 --- a/web/themes/ventuno/templates/menu/menu--og--navigation.html.twig +++ b/web/themes/ventuno/templates/menu/menu--og--navigation.html.twig @@ -26,8 +26,7 @@ {# A menu with 6 items or less is displayed normally #} {% if items|length < 7 %} {% set menu = pattern('navigation', { - 'variant': 'tabs', - 'orientation': 'horizontal', + 'variant': 'default', 'items': items, attributes: create_attribute() .addClass('pe-4') @@ -61,8 +60,7 @@ Then the rest of items is wrapped in a dropdown #} }) }} {% endset %} {% set menu = pattern('navigation', { - 'variant': 'tabs', - 'orientation': 'horizontal', + 'variant': 'default', 'items': items_to_show, }) %} {% set show_more_menu = pattern('navigation', { diff --git a/web/themes/ventuno/templates/paragraph/paragraph--2-column-layout.html.twig b/web/themes/ventuno/templates/paragraph/paragraph--2-column-layout.html.twig deleted file mode 100644 index 7a19cc59788c89b84f39bcefde31b5393a8e9420..0000000000000000000000000000000000000000 --- a/web/themes/ventuno/templates/paragraph/paragraph--2-column-layout.html.twig +++ /dev/null @@ -1,59 +0,0 @@ -{# -/** - * @file - * Default theme implementation to display a paragraph. - * - * Available variables: - * - paragraph: Full paragraph entity. - * Only method names starting with "get", "has", or "is" and a few common - * methods such as "id", "label", and "bundle" are available. For example: - * - paragraph.getCreatedTime() will return the paragraph creation timestamp. - * - paragraph.id(): The paragraph ID. - * - paragraph.bundle(): The type of the paragraph, for example, "image" or "text". - * - paragraph.getOwnerId(): The user ID of the paragraph author. - * See Drupal\paragraphs\Entity\Paragraph for a full list of public properties - * and methods for the paragraph object. - * - content: All paragraph items. Use {{ content }} to print them all, - * or print a subset such as {{ content.field_example }}. Use - * {{ content|without('field_example') }} to temporarily suppress the printing - * of a given child element. - * - attributes: HTML attributes for the containing element. - * The attributes.class element may contain one or more of the following - * classes: - * - paragraphs: The current template type (also known as a "theming hook"). - * - paragraphs--type-[type]: The current paragraphs type. For example, if the paragraph is an - * "Image" it would result in "paragraphs--type--image". Note that the machine - * name will often be in a short form of the human readable label. - * - paragraphs--view-mode--[view_mode]: The View Mode of the paragraph; for example, a - * preview would result in: "paragraphs--view-mode--preview", and - * default: "paragraphs--view-mode--default". - * - view_mode: View mode; for example, "preview" or "full". - * - logged_in: Flag for authenticated user status. Will be true when the - * current user is a logged-in member. - * - is_admin: Flag for admin user status. Will be true when the current user - * is an administrator. - * - * @see template_preprocess_paragraph() - * - * @ingroup themeable - */ -#} -{% - set classes = [ - 'paragraph', - ] -%} -{% block paragraph %} - <div{{ attributes.addClass(classes) }}> - {% block content %} - <div class="row g-5"> - <div class="col-12 col-lg-6"> - {{ content.paragraph_column_left }} - </div> - <div class="col-12 col-lg-6"> - {{ content.paragraph_column_right }} - </div> - </div> - {% endblock %} - </div> -{% endblock paragraph %} diff --git a/web/themes/ventuno/templates/paragraph/paragraph--3-column-layout.html.twig b/web/themes/ventuno/templates/paragraph/paragraph--3-column-layout.html.twig deleted file mode 100644 index 96d2fbed4a13fcf4611efe238379da7ab7596bbf..0000000000000000000000000000000000000000 --- a/web/themes/ventuno/templates/paragraph/paragraph--3-column-layout.html.twig +++ /dev/null @@ -1,62 +0,0 @@ -{# -/** - * @file - * Default theme implementation to display a paragraph. - * - * Available variables: - * - paragraph: Full paragraph entity. - * Only method names starting with "get", "has", or "is" and a few common - * methods such as "id", "label", and "bundle" are available. For example: - * - paragraph.getCreatedTime() will return the paragraph creation timestamp. - * - paragraph.id(): The paragraph ID. - * - paragraph.bundle(): The type of the paragraph, for example, "image" or "text". - * - paragraph.getOwnerId(): The user ID of the paragraph author. - * See Drupal\paragraphs\Entity\Paragraph for a full list of public properties - * and methods for the paragraph object. - * - content: All paragraph items. Use {{ content }} to print them all, - * or print a subset such as {{ content.field_example }}. Use - * {{ content|without('field_example') }} to temporarily suppress the printing - * of a given child element. - * - attributes: HTML attributes for the containing element. - * The attributes.class element may contain one or more of the following - * classes: - * - paragraphs: The current template type (also known as a "theming hook"). - * - paragraphs--type-[type]: The current paragraphs type. For example, if the paragraph is an - * "Image" it would result in "paragraphs--type--image". Note that the machine - * name will often be in a short form of the human readable label. - * - paragraphs--view-mode--[view_mode]: The View Mode of the paragraph; for example, a - * preview would result in: "paragraphs--view-mode--preview", and - * default: "paragraphs--view-mode--default". - * - view_mode: View mode; for example, "preview" or "full". - * - logged_in: Flag for authenticated user status. Will be true when the - * current user is a logged-in member. - * - is_admin: Flag for admin user status. Will be true when the current user - * is an administrator. - * - * @see template_preprocess_paragraph() - * - * @ingroup themeable - */ -#} -{% - set classes = [ - 'paragraph', - ] -%} -{% block paragraph %} - <div{{ attributes.addClass(classes) }}> - {% block content %} - <div class="row"> - <div class="col-12 col-lg-4"> - {{ content.paragraph_column_left }} - </div> - <div class="col-12 col-lg-4"> - {{ content.paragraph_column_center }} - </div> - <div class="col-12 col-lg-4"> - {{ content.paragraph_column_right }} - </div> - </div> - {% endblock %} - </div> -{% endblock paragraph %} diff --git a/web/themes/ventuno/templates/paragraph/paragraph--accordion-item.html.twig b/web/themes/ventuno/templates/paragraph/paragraph--accordion-item.html.twig index 0692967689ebfb49126725f39b0c57b406ef74bf..8ad438fb91f5f6fb8a9edfc83d1361bc6e493e60 100644 --- a/web/themes/ventuno/templates/paragraph/paragraph--accordion-item.html.twig +++ b/web/themes/ventuno/templates/paragraph/paragraph--accordion-item.html.twig @@ -54,7 +54,7 @@ <span class="accordion-button-text">{{ content.field_paragraphs_item_label }}</span> </button> </h2> - <div id="collapse{{ paragraph.id() }}" class="accordion-collapse collapse" aria-labelledby="heading{{ paragraph.id() }}" data-bs-parent="#accordion{{ parent_id }}"> + <div id="collapse{{ paragraph.id() }}" class="accordion-collapse collapse" aria-labelledby="heading{{ paragraph.id() }}" data-bs-parent=".accordion{{ parent_id }}"> <div class="accordion-body"> {{ content.field_paragraphs_item_content }} </div> diff --git a/web/themes/ventuno/templates/paragraph/paragraph--accordion.html.twig b/web/themes/ventuno/templates/paragraph/paragraph--accordion.html.twig deleted file mode 100644 index b9d1100a6737bd8c1d97dab4cd336f54ec142d14..0000000000000000000000000000000000000000 --- a/web/themes/ventuno/templates/paragraph/paragraph--accordion.html.twig +++ /dev/null @@ -1,57 +0,0 @@ -{# -/** - * @file - * Default theme implementation to display a paragraph. - * - * Available variables: - * - paragraph: Full paragraph entity. - * Only method names starting with "get", "has", or "is" and a few common - * methods such as "id", "label", and "bundle" are available. For example: - * - paragraph.getCreatedTime() will return the paragraph creation timestamp. - * - paragraph.id(): The paragraph ID. - * - paragraph.bundle(): The type of the paragraph, for example, "image" or "text". - * - paragraph.getOwnerId(): The user ID of the paragraph author. - * See Drupal\paragraphs\Entity\Paragraph for a full list of public properties - * and methods for the paragraph object. - * - content: All paragraph items. Use {{ content }} to print them all, - * or print a subset such as {{ content.field_example }}. Use - * {{ content|without('field_example') }} to temporarily suppress the printing - * of a given child element. - * - attributes: HTML attributes for the containing element. - * The attributes.class element may contain one or more of the following - * classes: - * - paragraphs: The current template type (also known as a "theming hook"). - * - paragraphs--type-[type]: The current paragraphs type. For example, if the paragraph is an - * "Image" it would result in "paragraphs--type--image". Note that the machine - * name will often be in a short form of the human readable label. - * - paragraphs--view-mode--[view_mode]: The View Mode of the paragraph; for example, a - * preview would result in: "paragraphs--view-mode--preview", and - * default: "paragraphs--view-mode--default". - * - view_mode: View mode; for example, "preview" or "full". - * - logged_in: Flag for authenticated user status. Will be true when the - * current user is a logged-in member. - * - is_admin: Flag for admin user status. Will be true when the current user - * is an administrator. - * - * @see template_preprocess_paragraph() - * - * @ingroup themeable - */ -#} -{{ attach_library('ventuno/accordion') }} -{% - set classes = [ - 'accordion', - 'paragraph', - 'paragraph--' ~ paragraph.bundle|clean_class, - 'paragraph--type--' ~ paragraph.bundle|clean_class, - 'mb-4', - ] -%} -{% block paragraph %} - <div{{ attributes.addClass(classes).setAttribute('id', 'accordion' ~ paragraph.id()) }}> - {% block content %} - {{ content }} - {% endblock %} - </div> -{% endblock paragraph %} diff --git a/web/themes/ventuno/templates/paragraph/paragraph--github-feed.html.twig b/web/themes/ventuno/templates/paragraph/paragraph--github-feed.html.twig deleted file mode 100644 index fa3ba93f67e6f9cf387b22f92ad52af02073b641..0000000000000000000000000000000000000000 --- a/web/themes/ventuno/templates/paragraph/paragraph--github-feed.html.twig +++ /dev/null @@ -1,55 +0,0 @@ -{# -/** - * @file - * Default theme implementation to display a paragraph. - * - * Available variables: - * - paragraph: Full paragraph entity. - * Only method names starting with "get", "has", or "is" and a few common - * methods such as "id", "label", and "bundle" are available. For example: - * - paragraph.getCreatedTime() will return the paragraph creation timestamp. - * - paragraph.id(): The paragraph ID. - * - paragraph.bundle(): The type of the paragraph, for example, "image" or "text". - * - paragraph.getOwnerId(): The user ID of the paragraph author. - * See Drupal\paragraphs\Entity\Paragraph for a full list of public properties - * and methods for the paragraph object. - * - content: All paragraph items. Use {{ content }} to print them all, - * or print a subset such as {{ content.field_example }}. Use - * {{ content|without('field_example') }} to temporarily suppress the printing - * of a given child element. - * - attributes: HTML attributes for the containing element. - * The attributes.class element may contain one or more of the following - * classes: - * - paragraphs: The current template type (also known as a "theming hook"). - * - paragraphs--type-[type]: The current paragraphs type. For example, if the paragraph is an - * "Image" it would result in "paragraphs--type--image". Note that the machine - * name will often be in a short form of the human readable label. - * - paragraphs--view-mode--[view_mode]: The View Mode of the paragraph; for example, a - * preview would result in: "paragraphs--view-mode--preview", and - * default: "paragraphs--view-mode--default". - * - view_mode: View mode; for example, "preview" or "full". - * - logged_in: Flag for authenticated user status. Will be true when the - * current user is a logged-in member. - * - is_admin: Flag for admin user status. Will be true when the current user - * is an administrator. - * - * @see template_preprocess_paragraph() - * - * @ingroup themeable - */ -#} -{% - set classes = [ - 'paragraph', - 'paragraph--type--' ~ paragraph.bundle|clean_class, - view_mode ? 'paragraph--view-mode--' ~ view_mode|clean_class, - not paragraph.isPublished() ? 'paragraph--unpublished' - ] -%} -{% block paragraph %} - <div{{ attributes.addClass(classes) }}> - {% block content %} - {{ content }} - {% endblock %} - </div> -{% endblock paragraph %} diff --git a/web/themes/ventuno/templates/paragraph/paragraph--poll--preview.html.twig b/web/themes/ventuno/templates/paragraph/paragraph--poll--preview.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..baa3adf77a588850a5ea99b42f01a0f0d5b2d48d --- /dev/null +++ b/web/themes/ventuno/templates/paragraph/paragraph--poll--preview.html.twig @@ -0,0 +1,79 @@ +{# +/** + * @file + * Static visual placeholder for poll paragraph. + * + * Available variables: + * - paragraph: Full paragraph entity. + * Only method names starting with "get", "has", or "is" and a few common + * methods such as "id", "label", and "bundle" are available. For example: + * - paragraph.getCreatedTime() will return the paragraph creation timestamp. + * - paragraph.id(): The paragraph ID. + * - paragraph.bundle(): The type of the paragraph, for example, "image" or "text". + * - paragraph.getOwnerId(): The user ID of the paragraph author. + * See Drupal\paragraphs\Entity\Paragraph for a full list of public properties + * and methods for the paragraph object. + * - content: All paragraph items. Use {{ content }} to print them all, + * or print a subset such as {{ content.field_example }}. Use + * {{ content|without('field_example') }} to temporarily suppress the printing + * of a given child element. + * - attributes: HTML attributes for the containing element. + * The attributes.class element may contain one or more of the following + * classes: + * - paragraphs: The current template type (also known as a "theming hook"). + * - paragraphs--type-[type]: The current paragraphs type. For example, if the paragraph is an + * "Image" it would result in "paragraphs--type--image". Note that the machine + * name will often be in a short form of the human readable label. + * - paragraphs--view-mode--[view_mode]: The View Mode of the paragraph; for example, a + * preview would result in: "paragraphs--view-mode--preview", and + * default: "paragraphs--view-mode--default". + * - view_mode: View mode; for example, "preview" or "full". + * - logged_in: Flag for authenticated user status. Will be true when the + * current user is a logged-in member. + * - is_admin: Flag for admin user status. Will be true when the current user + * is an administrator. + * + * @see template_preprocess_paragraph() + * + * @ingroup themeable + */ +#} + +<div{{ attributes.addClass(classes) }}> + <div class="poll"> + <div class="vote-form"> + <div class="d-flex align-items-baseline justify-content-between pb-3"> + <h2 class="poll-question fs-6 fw-bold bg-dark m-0"> + + + + </h2> + </div> + <div class="mb-3"> + <div class="form-item form-item-choice form-check py-3"> + <span class="fs-6 bg-gray-400"> + + + </span> + </div> + <div class="form-item form-item-choice form-check py-3"> + <span class="fs-6 bg-gray-400"> + + + + </span> + </div> + <div class="form-item form-item-choice form-check py-3"> + <span class="fs-6 bg-gray-400"> + + </span> + </div> + </div> + </div> + <div class="d-flex justify-content-end mt-3"> + <span class="bg-gray-400 fs-6"> + + </span> + </div> + </div> +</div> diff --git a/web/themes/iop/templates/paragraphs/paragraph--call-to-action.html.twig b/web/themes/ventuno/templates/paragraph/paragraph--quote.html.twig similarity index 96% rename from web/themes/iop/templates/paragraphs/paragraph--call-to-action.html.twig rename to web/themes/ventuno/templates/paragraph/paragraph--quote.html.twig index d0c0390af176f7df455a1fdef1e0a32f4b58df46..0d4e9f66338e0d15794edf81e998db98cb8a28c0 100644 --- a/web/themes/iop/templates/paragraphs/paragraph--call-to-action.html.twig +++ b/web/themes/ventuno/templates/paragraph/paragraph--quote.html.twig @@ -38,9 +38,6 @@ * @ingroup themeable */ #} - -{{ attach_library('iop/paragraph--call-to-action') }} - {% set classes = [ 'paragraph', @@ -50,7 +47,9 @@ {% block paragraph %} <div{{ attributes.addClass(classes) }}> {% block content %} - {{ content }} + <blockquote> + {{ content }} + </blockquote> {% endblock %} </div> {% endblock paragraph %} diff --git a/web/themes/ventuno/templates/paragraph/paragraph--row.html.twig b/web/themes/ventuno/templates/paragraph/paragraph--row.html.twig deleted file mode 100644 index 5ec817740a360937cf12daf3ac2b0d7a9d3b86fd..0000000000000000000000000000000000000000 --- a/web/themes/ventuno/templates/paragraph/paragraph--row.html.twig +++ /dev/null @@ -1,54 +0,0 @@ -{# -/** - * @file - * Default theme implementation to display a paragraph. - * - * Available variables: - * - paragraph: Full paragraph entity. - * Only method names starting with "get", "has", or "is" and a few common - * methods such as "id", "label", and "bundle" are available. For example: - * - paragraph.getCreatedTime() will return the paragraph creation timestamp. - * - paragraph.id(): The paragraph ID. - * - paragraph.bundle(): The type of the paragraph, for example, "image" or "text". - * - paragraph.getOwnerId(): The user ID of the paragraph author. - * See Drupal\paragraphs\Entity\Paragraph for a full list of public properties - * and methods for the paragraph object. - * - content: All paragraph items. Use {{ content }} to print them all, - * or print a subset such as {{ content.field_example }}. Use - * {{ content|without('field_example') }} to temporarily suppress the printing - * of a given child element. - * - attributes: HTML attributes for the containing element. - * The attributes.class element may contain one or more of the following - * classes: - * - paragraphs: The current template type (also known as a "theming hook"). - * - paragraphs--type-[type]: The current paragraphs type. For example, if the paragraph is an - * "Image" it would result in "paragraphs--type--image". Note that the machine - * name will often be in a short form of the human readable label. - * - paragraphs--view-mode--[view_mode]: The View Mode of the paragraph; for example, a - * preview would result in: "paragraphs--view-mode--preview", and - * default: "paragraphs--view-mode--default". - * - view_mode: View mode; for example, "preview" or "full". - * - logged_in: Flag for authenticated user status. Will be true when the - * current user is a logged-in member. - * - is_admin: Flag for admin user status. Will be true when the current user - * is an administrator. - * - * @see template_preprocess_paragraph() - * - * @ingroup themeable - */ -#} -{% - set classes = [ - 'paragraph', - 'row', - 'paragraph--type--' ~ paragraph.bundle|clean_class, - ] -%} -{% block paragraph %} - <div{{ attributes.addClass(classes) }}> - {% block content %} - {{ content }} - {% endblock %} - </div> -{% endblock paragraph %} diff --git a/web/themes/ventuno/templates/paragraph/paragraph--simple-paragraph--preview.html.twig b/web/themes/ventuno/templates/paragraph/paragraph--simple-paragraph--preview.html.twig deleted file mode 100644 index 62af387274e9b7c96e5eb155a68502f40a2ef43b..0000000000000000000000000000000000000000 --- a/web/themes/ventuno/templates/paragraph/paragraph--simple-paragraph--preview.html.twig +++ /dev/null @@ -1,45 +0,0 @@ -{# -/** - * @file - * Default theme implementation to display a paragraph. - * - * Available variables: - * - paragraph: Full paragraph entity. - * Only method names starting with "get", "has", or "is" and a few common - * methods such as "id", "label", and "bundle" are available. For example: - * - paragraph.getCreatedTime() will return the paragraph creation timestamp. - * - paragraph.id(): The paragraph ID. - * - paragraph.bundle(): The type of the paragraph, for example, "image" or "text". - * - paragraph.getOwnerId(): The user ID of the paragraph author. - * See Drupal\paragraphs\Entity\Paragraph for a full list of public properties - * and methods for the paragraph object. - * - content: All paragraph items. Use {{ content }} to print them all, - * or print a subset such as {{ content.field_example }}. Use - * {{ content|without('field_example') }} to temporarily suppress the printing - * of a given child element. - * - attributes: HTML attributes for the containing element. - * The attributes.class element may contain one or more of the following - * classes: - * - paragraphs: The current template type (also known as a "theming hook"). - * - paragraphs--type-[type]: The current paragraphs type. For example, if the paragraph is an - * "Image" it would result in "paragraphs--type--image". Note that the machine - * name will often be in a short form of the human readable label. - * - paragraphs--view-mode--[view_mode]: The View Mode of the paragraph; for example, a - * preview would result in: "paragraphs--view-mode--preview", and - * default: "paragraphs--view-mode--default". - * - view_mode: View mode; for example, "preview" or "full". - * - logged_in: Flag for authenticated user status. Will be true when the - * current user is a logged-in member. - * - is_admin: Flag for admin user status. Will be true when the current user - * is an administrator. - * - * @see template_preprocess_paragraph() - * - * @ingroup themeable - */ -#} -{% block paragraph %} - {% block content %} - {{ content }} - {% endblock %} -{% endblock paragraph %} diff --git a/web/themes/iop/templates/paragraphs/paragraph--image.html.twig b/web/themes/ventuno/templates/paragraph/paragraph--testimony.html.twig similarity index 68% rename from web/themes/iop/templates/paragraphs/paragraph--image.html.twig rename to web/themes/ventuno/templates/paragraph/paragraph--testimony.html.twig index 9164d73de5a43b1936365867ce8f660fb7fb5123..060f1103fc7c7a2e7c6296bb056cd67f277b7e4b 100644 --- a/web/themes/iop/templates/paragraphs/paragraph--image.html.twig +++ b/web/themes/ventuno/templates/paragraph/paragraph--testimony.html.twig @@ -1,7 +1,7 @@ {# /** * @file - * Template for displaying an image. + * Template for displaying a testimony. * * Available variables: * - paragraph: Full paragraph entity. @@ -32,20 +32,32 @@ * is an administrator. * * @see template_preprocess_paragraph() - * @see @iop_preprocess_paragraph__row() * * @ingroup themeable */ #} -{{ attach_library('iop/paragraph--image') }} - {% set classes = [ 'paragraph', 'paragraph--' ~ paragraph.bundle|clean_class, - row_theme ? 'paragraph--' ~ row_theme, ] %} -<div{{ attributes.addClass(classes) }}> - {{ content }} -</div> +<blockquote {{ attributes.addClass(classes) }}> + <div class="testimony__quote"> + {{ content.paragraph_testimony_text }} + </div> + <figure class="testimony__fig"> + <div class="testimony__img"> + {{ content.paragraph_testimony_image }} + </div> + <figcaption class="testimony__figcaption"> + <p class="testimony__author"><strong>{{ content.paragraph_testimony_author }}</strong></p> + {% if content.paragraph_testimony_bio|render|striptags|trim is not empty %} + <p class="testimony__bio">{{ content.paragraph_testimony_bio }}</p> + {% endif %} + {% if content.paragraph_testimony_source|render|striptags|trim is not empty %} + <cite class="testimony__cite">{{ content.paragraph_testimony_source }}</cite> + {% endif %} + </figcaption> + </figure> +</blockquote> diff --git a/web/themes/ventuno/templates/paragraph/paragraph--1-column-layout.html.twig b/web/themes/ventuno/templates/paragraph/paragraph.html.twig similarity index 97% rename from web/themes/ventuno/templates/paragraph/paragraph--1-column-layout.html.twig rename to web/themes/ventuno/templates/paragraph/paragraph.html.twig index ccf8c73158ea52572fdae168c75b6d69243c09a3..59ba1353bd4dad66267aa926d45f3b87cd4b8cd7 100644 --- a/web/themes/ventuno/templates/paragraph/paragraph--1-column-layout.html.twig +++ b/web/themes/ventuno/templates/paragraph/paragraph.html.twig @@ -41,7 +41,7 @@ {% set classes = [ 'paragraph', - 'col-12', + 'paragraph--' ~ paragraph.bundle|clean_class, ] %} {% block paragraph %} diff --git a/web/themes/ventuno/templates/parts/header.html.twig b/web/themes/ventuno/templates/parts/header.html.twig index 0ab87615918431ab6a4deb8ef1375759a1f4c340..e34048bcee3e20ab55200692bb5c8bdd171d14aa 100644 --- a/web/themes/ventuno/templates/parts/header.html.twig +++ b/web/themes/ventuno/templates/parts/header.html.twig @@ -29,7 +29,7 @@ type: "search", breakpoint: "", classes: ["order-1 dropdown-search"], - id: "search-box", + id: "search-box-dropdown", icon: { name: "search", }, diff --git a/web/themes/ventuno/templates/patterns/tile/pattern-tile.html.twig b/web/themes/ventuno/templates/patterns/tile/pattern-tile.html.twig index da60af3a87d227df86f91e84ad2bc10a6e4f7290..3ea36809ccb04aaefca4929622a10ab46ba9156a 100644 --- a/web/themes/ventuno/templates/patterns/tile/pattern-tile.html.twig +++ b/web/themes/ventuno/templates/patterns/tile/pattern-tile.html.twig @@ -94,7 +94,7 @@ {{ _label }} </h1> {% if _text is not empty %} - <div class="tile__text text-dark fs-sm my-1">{{ _text|render|striptags|trim|raw }}</div> + <div class="tile__text text-dark fs-sm my-1">{{ _text }}</div> {% endif %} {% if _action %} <div class="tile__action"> diff --git a/web/themes/ventuno/templates/poll/joinup-poll-summary.html.twig b/web/themes/ventuno/templates/poll/joinup-poll-summary.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..bc78dafdbeb7c89c6632c65dc6e7652c66eff977 --- /dev/null +++ b/web/themes/ventuno/templates/poll/joinup-poll-summary.html.twig @@ -0,0 +1,34 @@ +{# +/** + * @file + * Default theme implementation to display the poll summary. + * + * Variables available: + * - show_number_of_votes: True is we want to show the number of votes. + * - number_of_votes: Number of votes. + * - is_closed: True if the poll is closed. + * - time_left: Time left to vote. + * + * @see template_preprocess_joinup_poll_summary() + * + * @ingroup themeable + */ +#} +<div class="d-flex justify-content-end fs-sm text-black-50 mt-3"> + <span class="me-4"> + {% if is_closed %} + {{ 'Poll closed'|t }} + {% elseif time_left %} + {{ '@left left to vote'|t({'@left': time_left}) }} + {% endif %} + </span> + <span> + {% if show_number_of_votes %} + {% trans %} + {{ number_of_votes }} vote + {% plural number_of_votes %} + {{ number_of_votes }} votes + {% endtrans %} + {% endif %} + </span> +</div> diff --git a/web/themes/ventuno/templates/poll/poll-meter--anonymous.html.twig b/web/themes/ventuno/templates/poll/poll-meter--anonymous.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..7f023ea7d90bb58cfc626a582f730d0bc19542dd --- /dev/null +++ b/web/themes/ventuno/templates/poll/poll-meter--anonymous.html.twig @@ -0,0 +1,40 @@ +{# +/** + * @file + * Ventuno theme implementation for a meter. + * + * Available variables: + * - display_value: The textual representation of the meter bar. + * - form: One or more forms to which the <meter> element belongs; multiple + * forms separated by spaces. + * - high: A number specifying the range that is considered to be a high value. + * - low: A number specifying the range that is considered to be a low value. + * - max: A number specifying the maximum value of the range. + * - min: A number specifying the minimum value of the range. + * - optimum: A number specifying what value is the optimal value for the gauge. + * - value: A number specifying the current value of the gauge. + * - percentage: A number specifying the current percentage of the gauge. + * - attributes: HTML attributes for the containing element. + * - choice: The choice of a poll. + * + * @see template_preprocess() + * @see template_preprocess_region() + * + * @ingroup themeable + */ +#} + {% set attributes = create_attribute( + { + 'class': 'use-ajax', + 'data-dialog-type': 'modal', + 'data-dialog-options': {'width': 400}|json_encode, + 'href': path('joinup_modal.anonymous', {'type': 'vote'}, {'query':{'destination': path('<current>') }}), + 'title': 'Login or register to proceed voting'|t, + } + ) %} + +<dt class="choice-item choice-title h4 fw-normal p-3 mb-0"> + <a{{ attributes }}> + {{ choice }} + </a> +</dt> diff --git a/web/themes/ventuno/templates/poll/poll-meter--authenticated.html.twig b/web/themes/ventuno/templates/poll/poll-meter--authenticated.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..eb0705d550daee91b6172ea6a94781ab7dc41549 --- /dev/null +++ b/web/themes/ventuno/templates/poll/poll-meter--authenticated.html.twig @@ -0,0 +1,39 @@ +{# +/** + * @file + * Ventuno theme implementation for a meter. + * + * Available variables: + * - display_value: The textual representation of the meter bar. + * - form: One or more forms to which the <meter> element belongs; multiple + * forms separated by spaces. + * - high: A number specifying the range that is considered to be a high value. + * - low: A number specifying the range that is considered to be a low value. + * - max: A number specifying the maximum value of the range. + * - min: A number specifying the minimum value of the range. + * - optimum: A number specifying what value is the optimal value for the gauge. + * - value: A number specifying the current value of the gauge. + * - percentage: A number specifying the current percentage of the gauge. + * - attributes: HTML attributes for the containing element. + * - choice: The choice of a poll. + * + * @see template_preprocess() + * @see template_preprocess_region() + * + * @ingroup themeable + */ +#} +{% set is_current_selection_class = is_current_selection ? 'selected' : 'not-selected' %} +<div class="choice-item position-relative"> + <div class="d-flex justify-content-between"> + <dt class="choice-title h4 fw-normal py-3 mb-0 {{ is_current_selection_class }}">{{ choice }}</dt> + <dd class="choice-result h4 py-3 mb-0 {{ is_current_selection_class }}"> + {% if display_value %} + <div class="percent">{{ percentage }}%</div> + {% endif %} + </dd> + </div> + <div{{ attributes }}> + <div style="width: {{ percentage }}%" class="foreground {{ is_current_selection_class }}"></div> + </div> +</div> diff --git a/web/themes/ventuno/templates/poll/poll-results.html.twig b/web/themes/ventuno/templates/poll/poll-results.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..f34ef19ae1f23f7db0b4139716d9f81a69c91bab --- /dev/null +++ b/web/themes/ventuno/templates/poll/poll-results.html.twig @@ -0,0 +1,36 @@ +{# +/** + * @file + * Ventuno theme implementation to display the poll results in a block. + * + * Variables available: + * - title: The title of the poll. + * - results: The results of the poll. + * - votes: The total results in the poll. + * - links: Links in the poll. + * - pid: The pid of the poll + * - cancel_form: A form to cancel the user's vote, if allowed. + * - raw_links: The raw array of links. + * - vote: The choice number of the current user's vote. + * + * @see template_preprocess_poll_results() + * + * @ingroup themeable + */ +#} +<div class="poll"> + <div class="d-flex align-items-end justify-content-between pb-3"> + {% if show_question %} + <h2 class="poll-question fs-6 fw-bold text-dark m-0">{{ question }}</h2> + {% else %} + <h2 class="poll-results-title fs-6 fw-bold text-dark m-0">{{ results_title }}</h2> + {% endif %} + </div> + <dl> + {{ results }} + </dl> + + {{ summary }} +</div> + + {{ cancel_form }} diff --git a/web/themes/ventuno/templates/poll/poll-vote.html.twig b/web/themes/ventuno/templates/poll/poll-vote.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..d9e35df2ffcb134a9d014000376e7d685efe57fb --- /dev/null +++ b/web/themes/ventuno/templates/poll/poll-vote.html.twig @@ -0,0 +1,19 @@ +<div class="poll"> + {{ form.messages }} + <div class="vote-form"> + {% if show_question %} + <div class="d-flex align-items-baseline justify-content-between pb-3"> + <h2 class="poll-question fs-6 fw-bold text-dark m-0">{{ question }}</h2> + {{ form.actions.result }} + </div> + {% endif %} + + {{ form.choice }} + + <div class="js-hide">{{ form.actions|without('result') }}</div> + </div> + + {{ form|without('actions', 'choice', 'messages', 'question') }} + {{ summary }} +</div> + diff --git a/web/themes/ventuno/ventuno.info.yml b/web/themes/ventuno/ventuno.info.yml index ec152a888e8ef798e21b4291278c39523119d28c..ad5b27fcbd22de436849423d7b77a91a88c14a4c 100644 --- a/web/themes/ventuno/ventuno.info.yml +++ b/web/themes/ventuno/ventuno.info.yml @@ -17,6 +17,8 @@ libraries-extend: - ventuno/ajax-throbber joinup_group/shared_entity: - ventuno/shared-entity + layout_paragraphs/builder: + - ventuno/layout-paragraphs--builder libraries-override: core/jquery.once: false @@ -37,6 +39,11 @@ libraries-override: core/drupal.checkbox: js: misc/checkbox.js: assets/js/checkbox.min.js + layout_discovery/onecol: false + layout_discovery/twocol: false + layout_builder/twocol_section: false + layout_builder/threecol_section: false + layout_builder/fourcol_section: false regions: search_bar: 'Search bar' diff --git a/web/themes/ventuno/ventuno.libraries.yml b/web/themes/ventuno/ventuno.libraries.yml index 05ff15b98d2c2b4d5afff5f85bc75e06936c79ee..5cc5af584bd2d904d581cdf1685ef8c70ebaaef4 100644 --- a/web/themes/ventuno/ventuno.libraries.yml +++ b/web/themes/ventuno/ventuno.libraries.yml @@ -262,20 +262,54 @@ paragraph: theme: assets/css/paragraph.min.css: { minified: true } -paragraph--carousel: +paragraph__accordion: + dependencies: + - ventuno/accordion + +paragraph__carousel: css: theme: assets/css/paragraph--carousel.min.css: { minified: true } dependencies: - - ventuno/paragraph--carousel.js + - ventuno/paragraph__carousel.js -paragraph--carousel.js: +paragraph__carousel.js: header: true js: assets/js/paragraph--carousel.min.js: { minified: true, attributes: { defer: true } } dependencies: - ventuno/glide +paragraph__layout: + css: + theme: + assets/css/paragraph--layout.min.css: { minified: true } + +paragraph__heading: + css: + theme: + assets/css/paragraph--heading.min.css: { minified: true } + +paragraph__quote: + css: + theme: + assets/css/paragraph--quote.min.css: { minified: true } + +paragraph__poll: + css: + theme: + assets/css/paragraph--poll.min.css: { minified: true } + +paragraph__testimony: + css: + theme: + assets/css/paragraph--testimony.min.css: { minified: true } + +paragraph__video: + css: + theme: + assets/css/paragraph--video.min.css: { minified: true } + releases: css: theme: @@ -356,3 +390,8 @@ user--group-header: css: theme: assets/css/user--group-header.min.css: { minified: true } + +layout-paragraphs--builder: + css: + theme: + assets/css/layout-paragraphs--builder.min.css: { minified: true }