@ebrains/components 3.0.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/color-primary-palette_6.cjs.entry.js +14 -14
- package/dist/cjs/components-section.cjs.entry.js +1 -1
- package/dist/cjs/components.cjs.js +1 -1
- package/dist/cjs/correct-use-of-colors.cjs.entry.js +1 -1
- package/dist/cjs/docs-palettes.cjs.entry.js +1 -1
- package/dist/cjs/docs-tokens.cjs.entry.js +1 -1
- package/dist/cjs/{eds-accordion_52.cjs.entry.js → eds-accordion_53.cjs.entry.js} +847 -207
- package/dist/cjs/eds-app-root.cjs.entry.js +1 -1
- package/dist/cjs/eds-cookies-preference.cjs.entry.js +1 -1
- package/dist/cjs/eds-feedback.cjs.entry.js +1 -1
- package/dist/cjs/eds-frame.cjs.entry.js +1 -1
- package/dist/cjs/eds-gauge.cjs.entry.js +1 -1
- package/dist/cjs/eds-gitlab-contributors.cjs.entry.js +9 -2
- package/dist/cjs/eds-icon-bluesky.cjs.entry.js +1 -1
- package/dist/cjs/eds-icon-eu.cjs.entry.js +1 -1
- package/dist/cjs/eds-icon-facebook.cjs.entry.js +1 -1
- package/dist/cjs/eds-icon-gitlab.cjs.entry.js +1 -1
- package/dist/cjs/eds-icon-linkedin.cjs.entry.js +1 -1
- package/dist/cjs/eds-icon-mastodon.cjs.entry.js +1 -1
- package/dist/cjs/eds-icon-twitter.cjs.entry.js +1 -1
- package/dist/cjs/eds-icon-youtube.cjs.entry.js +1 -1
- package/dist/cjs/eds-input-search.cjs.entry.js +76 -0
- package/dist/cjs/eds-section-core_2.cjs.entry.js +3 -3
- package/dist/cjs/eds-timeline.cjs.entry.js +1 -1
- package/dist/cjs/eds-toast-manager.cjs.entry.js +1 -1
- package/dist/cjs/eds-trl-badge.cjs.entry.js +181 -0
- package/dist/cjs/incorrect-use-of-colors.cjs.entry.js +1 -1
- package/dist/cjs/index-50bc1aa4.js +10 -2
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/logo-space.cjs.entry.js +1 -1
- package/dist/cjs/logo-variations-horizontal_2.cjs.entry.js +2 -2
- package/dist/cjs/logo-variations-tabs.cjs.entry.js +1 -1
- package/dist/cjs/logo-wrong-usage.cjs.entry.js +1 -1
- package/dist/cjs/svg-repository.cjs.entry.js +1 -1
- package/dist/cjs/token-list_3.cjs.entry.js +3 -3
- package/dist/cjs/token-ratios.cjs.entry.js +1 -1
- package/dist/cjs/token-spacing.cjs.entry.js +1 -1
- package/dist/cjs/token-typography.cjs.entry.js +1 -1
- package/dist/collection/collection-manifest.json +4 -1
- package/dist/collection/components/eds-accordion/eds-accordion.css +3 -2
- package/dist/collection/components/eds-accordion/eds-accordion.js +1 -1
- package/dist/collection/components/eds-accordion/eds-accordion.stories.js +7 -19
- package/dist/collection/components/eds-alert/eds-alert.stories.js +19 -147
- package/dist/collection/components/eds-avatar/eds-avatar.js +1 -1
- package/dist/collection/components/eds-avatar/eds-avatar.stories.js +2 -2
- package/dist/collection/components/eds-block-break/eds-block-break.js +1 -1
- package/dist/collection/components/eds-breadcrump/eds-breadcrump.js +1 -1
- package/dist/collection/components/eds-button/eds-button.css +15 -0
- package/dist/collection/components/eds-button/eds-button.js +13 -6
- package/dist/collection/components/eds-cards/eds-card-composer/eds-card-desc/eds-card-desc.js +1 -1
- package/dist/collection/components/eds-cards/eds-card-cta/eds-card-cta.css +10 -1
- package/dist/collection/components/eds-cards/eds-card-cta/eds-card-cta.js +1 -1
- package/dist/collection/components/eds-cards/eds-card-feature/eds-card-feature.js +1 -1
- package/dist/collection/components/eds-cards/eds-card-generic/eds-card-generic.js +1 -1
- package/dist/collection/components/eds-cards/eds-card-hero/eds-card-hero.js +1 -1
- package/dist/collection/components/eds-cards/eds-card-stat/eds-card-stat.js +1 -1
- package/dist/collection/components/eds-charts/eds-gauge/eds-gauge.js +1 -1
- package/dist/collection/components/eds-code-block/eds-code-block.js +1 -1
- package/dist/collection/components/eds-dropdown/eds-dropdown.js +30 -4
- package/dist/collection/components/eds-feedback/eds-feedback.js +1 -1
- package/dist/collection/components/eds-footer/eds-footer.css +143 -203
- package/dist/collection/components/eds-footer/eds-footer.js +173 -76
- package/dist/collection/components/eds-footer/eds-footer.stories.js +108 -15
- package/dist/collection/components/eds-form/eds-form.css +37 -1
- package/dist/collection/components/eds-form/eds-form.js +45 -7
- package/dist/collection/components/eds-frame/eds-frame.js +1 -1
- package/dist/collection/components/eds-header/eds-header.js +1 -1
- package/dist/collection/components/eds-header/eds-header.stories.js +26 -12
- package/dist/collection/components/eds-icon-wrapper/eds-icon-wrapper.js +20 -1
- package/dist/collection/components/eds-icons/eds-icon-eu/eds-icon-eu.js +1 -1
- package/dist/collection/components/eds-icons/eds-icon-gitlab/eds-icon-gitlab.js +1 -1
- package/dist/collection/components/eds-icons/social/eds-icon-bluesky/eds-icon-bluesky.js +1 -1
- package/dist/collection/components/eds-icons/social/eds-icon-facebook/eds-icon-facebook.js +1 -1
- package/dist/collection/components/eds-icons/social/eds-icon-linkedin/eds-icon-linkedin.js +1 -1
- package/dist/collection/components/eds-icons/social/eds-icon-mastodon/eds-icon-mastodon.js +1 -1
- package/dist/collection/components/eds-icons/social/eds-icon-twitter/eds-icon-twitter.js +1 -1
- package/dist/collection/components/eds-icons/social/eds-icon-youtube/eds-icon-youtube.js +1 -1
- package/dist/collection/components/eds-img/eds-img.js +2 -2
- package/dist/collection/components/eds-img/eds-img.stories.js +29 -52
- package/dist/collection/components/eds-input-dropzone/eds-input-dropzone.js +1 -1
- package/dist/collection/components/eds-input-elements/eds-input/eds-input.js +20 -2
- package/dist/collection/components/eds-input-elements/eds-input-footer/eds-input-footer.css +29 -0
- package/dist/collection/components/eds-input-elements/eds-input-footer/eds-input-footer.js +2 -1
- package/dist/collection/components/eds-input-elements/eds-input-label/eds-input-label.js +1 -1
- package/dist/collection/components/eds-input-elements/eds-input-range/eds-input-range.js +1 -1
- package/dist/collection/components/eds-input-elements/eds-input-search/eds-input-search.js +1 -1
- package/dist/collection/components/eds-input-elements/eds-input-search/eds-input-search.stories.js +30 -0
- package/dist/collection/components/eds-input-elements/eds-input-select/eds-input-select.js +2 -2
- package/dist/collection/components/eds-input-field/eds-input-field.js +11 -5
- package/dist/collection/components/eds-input-field/eds-input-field.stories.js +82 -130
- package/dist/collection/components/eds-input-file/eds-input-file.js +1 -1
- package/dist/collection/components/eds-link/eds-link.js +1 -1
- package/dist/collection/components/eds-link/eds-link.stories.js +13 -8
- package/dist/collection/components/eds-logo/eds-logo.js +1 -1
- package/dist/collection/components/eds-modal/eds-modal.stories.js +9 -8
- package/dist/collection/components/eds-nps/eds-nps.css +32 -0
- package/dist/collection/components/eds-nps/eds-nps.js +3 -3
- package/dist/collection/components/eds-pagination/eds-pagination.js +2 -2
- package/dist/collection/components/eds-rating/eds-rating.css +9 -0
- package/dist/collection/components/eds-rating/eds-rating.js +2 -2
- package/dist/collection/components/eds-section/eds-section-core/eds-section-core.js +1 -1
- package/dist/collection/components/eds-section/eds-section-heading/eds-section-heading.js +2 -2
- package/dist/collection/components/eds-sidebar/eds-sidebar.js +2 -2
- package/dist/collection/components/eds-social-networks/eds-social-networks.js +1 -1
- package/dist/collection/components/eds-spinner/eds-spinner.js +1 -1
- package/dist/collection/components/eds-steps-v2/eds-steps-v2.js +1 -1
- package/dist/collection/components/eds-table/eds-table.css +21 -4
- package/dist/collection/components/eds-table/eds-table.js +17 -50
- package/dist/collection/components/eds-table/eds-table.stories.js +5 -109
- package/dist/collection/components/eds-tabs/eds-tabs.css +7 -1
- package/dist/collection/components/eds-tabs/eds-tabs.js +47 -9
- package/dist/collection/components/eds-tag/eds-tag.js +1 -1
- package/dist/collection/components/eds-timeline/eds-timeline.js +1 -1
- package/dist/collection/components/eds-toast-manager/eds-toast-manager.js +1 -1
- package/dist/collection/components/eds-tooltip/eds-tooltip.js +1 -1
- package/dist/collection/components/eds-tooltip/eds-tooltip.stories.js +1 -1
- package/dist/collection/components/eds-user/eds-user.js +1 -1
- package/dist/collection/eds-docs-ui/colors/color-palette/primary.js +1 -1
- package/dist/collection/eds-docs-ui/colors/color-palette/secondary.js +1 -1
- package/dist/collection/eds-docs-ui/colors/color-palette/support.js +1 -1
- package/dist/collection/eds-docs-ui/colors/gradient-palette/primary.js +1 -1
- package/dist/collection/eds-docs-ui/colors/gradient-palette/secondary.js +7 -7
- package/dist/collection/eds-docs-ui/colors/gradient-palette/support.js +3 -3
- package/dist/collection/eds-docs-ui/colors/use-of-colors/correct-use-of-colors.js +1 -1
- package/dist/collection/eds-docs-ui/colors/use-of-colors/incorrect-use-of-colors.js +1 -1
- package/dist/collection/eds-docs-ui/components-section/components-section.js +1 -1
- package/dist/collection/eds-docs-ui/design-tokens/docs-tokens/docs-tokens.js +1 -1
- package/dist/collection/eds-docs-ui/design-tokens/token-list/token-list.js +1 -1
- package/dist/collection/eds-docs-ui/design-tokens/token-radii/token-radii.js +1 -1
- package/dist/collection/eds-docs-ui/design-tokens/token-ratios/token-ratios.js +1 -1
- package/dist/collection/eds-docs-ui/design-tokens/token-shadows/token-shadows.js +1 -1
- package/dist/collection/eds-docs-ui/design-tokens/token-spacing/token-spacing.js +1 -1
- package/dist/collection/eds-docs-ui/design-tokens/token-typography/token-typography.js +1 -1
- package/dist/collection/eds-docs-ui/docs-palettes/docs-palettes.js +1 -1
- package/dist/collection/eds-docs-ui/logo/logo-space/logo-space.js +1 -1
- package/dist/collection/eds-docs-ui/logo/logo-variations/horizontal/logo-variations-horizontal.js +1 -1
- package/dist/collection/eds-docs-ui/logo/logo-variations/vertical/logo-variations-vertical.js +1 -1
- package/dist/collection/eds-docs-ui/logo/logo-variations-tabs/logo-variations.js +1 -1
- package/dist/collection/eds-docs-ui/logo/logo-wrong-usage/logo-wrong-usage.js +1 -1
- package/dist/collection/eds-docs-ui/svg-repository/svg-repository.js +1 -1
- package/dist/collection/shared-ui/eds-cookies-preference/eds-cookies-preference.js +1 -1
- package/dist/collection/shared-ui/eds-gitlab-contributors/eds-gitlab-contributors.css +19 -0
- package/dist/collection/shared-ui/eds-gitlab-contributors/eds-gitlab-contributors.js +8 -1
- package/dist/collection/shared-ui/eds-global-search/eds-global-search.css +166 -0
- package/dist/collection/shared-ui/eds-global-search/eds-global-search.js +62 -6
- package/dist/collection/shared-ui/eds-kg-learning-resources/eds-kg-learning-resources.css +205 -0
- package/dist/collection/shared-ui/eds-kg-learning-resources/eds-kg-learning-resources.js +257 -0
- package/dist/collection/shared-ui/eds-matomo-notice/eds-matomo-notice.css +23 -102
- package/dist/collection/shared-ui/eds-matomo-notice/eds-matomo-notice.js +7 -1
- package/dist/collection/shared-ui/eds-search-select/eds-search-select.css +203 -0
- package/dist/collection/shared-ui/eds-search-select/eds-search-select.js +685 -0
- package/dist/collection/shared-ui/eds-search-select/eds-search-select.stories.js +85 -0
- package/dist/collection/shared-ui/eds-trl-badge/ebrains-mark.js +26 -0
- package/dist/collection/shared-ui/eds-trl-badge/eds-trl-badge.css +22 -0
- package/dist/collection/shared-ui/eds-trl-badge/eds-trl-badge.js +321 -0
- package/dist/collection/shared-ui/eds-trl-badge/eds-trl-badge.stories.js +96 -0
- package/dist/collection/shared-ui/examples/eds-app-root/eds-app-root.js +1 -1
- package/dist/collection/utils/eds-form/formValidators.js +2 -1
- package/dist/collection/utils/eds-form/safeFormat.js +39 -0
- package/dist/components/components-section.js +1 -1
- package/dist/components/components.css +3 -4
- package/dist/components/components.esm.js +1 -1
- package/dist/components/correct-use-of-colors.js +1 -1
- package/dist/components/docs-palettes.js +1 -1
- package/dist/components/docs-tokens.js +1 -1
- package/dist/components/eds-accordion2.js +2 -2
- package/dist/components/eds-app-root.js +1 -1
- package/dist/components/eds-avatar2.js +1 -1
- package/dist/components/eds-block-break2.js +1 -1
- package/dist/components/eds-breadcrumb.js +1 -1
- package/dist/components/eds-button2.js +12 -5
- package/dist/components/eds-card-cta.js +2 -2
- package/dist/components/eds-card-desc2.js +1 -1
- package/dist/components/eds-card-feature.js +1 -1
- package/dist/components/eds-card-generic2.js +1 -1
- package/dist/components/eds-card-hero.js +1 -1
- package/dist/components/eds-card-stat.js +1 -1
- package/dist/components/eds-code-block2.js +1 -1
- package/dist/components/eds-cookies-preference.js +1 -1
- package/dist/components/eds-dropdown2.js +30 -4
- package/dist/components/eds-feedback.js +1 -1
- package/dist/components/eds-footer2.js +115 -26
- package/dist/components/eds-form.js +61 -23
- package/dist/components/eds-frame.js +1 -1
- package/dist/components/eds-gauge.js +1 -1
- package/dist/components/eds-gitlab-contributors.js +9 -2
- package/dist/components/eds-global-search.js +48 -69
- package/dist/components/eds-header.js +1 -1
- package/dist/components/eds-icon-bluesky.js +1 -1
- package/dist/components/eds-icon-eu.js +1 -1
- package/dist/components/eds-icon-facebook.js +1 -1
- package/dist/components/eds-icon-gitlab.js +1 -1
- package/dist/components/eds-icon-linkedin.js +1 -1
- package/dist/components/eds-icon-mastodon.js +1 -1
- package/dist/components/eds-icon-twitter.js +1 -1
- package/dist/components/eds-icon-wrapper2.js +5 -2
- package/dist/components/eds-icon-youtube.js +1 -1
- package/dist/components/eds-img2.js +2 -2
- package/dist/components/eds-input-dropzone2.js +1 -1
- package/dist/components/eds-input-field2.js +25 -25
- package/dist/components/eds-input-file2.js +1 -1
- package/dist/components/eds-input-footer2.js +43 -3
- package/dist/components/eds-input-label2.js +1 -1
- package/dist/components/eds-input-range2.js +1 -1
- package/dist/components/eds-input-search.js +100 -1
- package/dist/components/eds-input-select2.js +2 -2
- package/dist/components/eds-input2.js +4 -2
- package/dist/components/eds-kg-learning-resources.d.ts +11 -0
- package/dist/components/eds-kg-learning-resources.js +221 -0
- package/dist/components/eds-kg-web-services-select2.js +16 -22
- package/dist/components/eds-link2.js +1 -1
- package/dist/components/eds-logo2.js +1 -1
- package/dist/components/eds-matomo-notice2.js +8 -2
- package/dist/components/eds-nps2.js +4 -4
- package/dist/components/eds-pagination2.js +2 -2
- package/dist/components/eds-rating2.js +3 -3
- package/dist/components/eds-search-select.d.ts +11 -0
- package/dist/components/eds-search-select.js +6 -0
- package/dist/components/eds-search-select2.js +361 -0
- package/dist/components/eds-section-core2.js +1 -1
- package/dist/components/eds-section-heading2.js +2 -2
- package/dist/components/eds-sidebar.js +2 -2
- package/dist/components/eds-social-networks2.js +1 -1
- package/dist/components/eds-spinner2.js +1 -1
- package/dist/components/eds-steps-v2.js +1 -1
- package/dist/components/eds-table2.js +31 -53
- package/dist/components/eds-tabs.js +48 -10
- package/dist/components/eds-tag2.js +1 -1
- package/dist/components/eds-timeline.js +1 -1
- package/dist/components/eds-toast-manager.js +1 -1
- package/dist/components/eds-tooltip2.js +1 -1
- package/dist/components/eds-trl-badge.d.ts +11 -0
- package/dist/components/eds-trl-badge.js +204 -0
- package/dist/components/eds-user.js +1 -1
- package/dist/components/incorrect-use-of-colors.js +1 -1
- package/dist/components/logo-space.js +19 -25
- package/dist/components/logo-variations-horizontal2.js +1 -1
- package/dist/components/logo-variations-tabs.js +1 -1
- package/dist/components/logo-variations-vertical2.js +1 -1
- package/dist/components/logo-wrong-usage.js +1 -1
- package/dist/components/p-00ba405d.entry.js +1 -0
- package/dist/components/p-03342030.entry.js +1 -0
- package/dist/components/{p-0fe10e6c.entry.js → p-0e2bac0f.entry.js} +1 -1
- package/dist/components/{p-7aa4edef.entry.js → p-12acc48d.entry.js} +1 -1
- package/dist/components/p-18399fe1.entry.js +1 -0
- package/dist/components/p-1e6f0572.entry.js +1 -0
- package/dist/components/{p-c46675c8.entry.js → p-1fbcc480.entry.js} +1 -1
- package/dist/components/{p-dfe93385.entry.js → p-25729ade.entry.js} +1 -1
- package/dist/components/p-27e093c3.entry.js +1 -0
- package/dist/components/{p-a6dc1f88.entry.js → p-37ef07d9.entry.js} +1 -1
- package/dist/components/{p-74b9c9a8.entry.js → p-3d1bb2fe.entry.js} +1 -1
- package/dist/components/{p-940a2d42.entry.js → p-42791331.entry.js} +1 -1
- package/dist/components/p-5ff4b1d0.entry.js +1 -0
- package/dist/components/{p-d16b5363.entry.js → p-62580004.entry.js} +1 -1
- package/dist/components/{p-d2576747.entry.js → p-62f53e7a.entry.js} +1 -1
- package/dist/components/p-6be1730a.entry.js +1 -0
- package/dist/components/p-786ff09b.entry.js +1 -0
- package/dist/components/p-80a32e20.entry.js +1 -0
- package/dist/components/p-85476a6f.entry.js +9 -0
- package/dist/components/{p-a63e14bb.entry.js → p-8a483358.entry.js} +1 -1
- package/dist/components/{p-04e9c2d7.entry.js → p-b1a10842.entry.js} +1 -1
- package/dist/components/p-bdcb71e1.entry.js +1 -0
- package/dist/components/p-c2127276.entry.js +1 -0
- package/dist/components/p-c3ee9163.entry.js +1 -0
- package/dist/components/{p-f55dd314.entry.js → p-c4cfbf98.entry.js} +1 -1
- package/dist/components/p-c65082fe.entry.js +1 -0
- package/dist/components/p-cc096938.entry.js +1 -0
- package/dist/components/p-d59d6fda.entry.js +1 -0
- package/dist/components/p-e027bc90.entry.js +1 -0
- package/dist/components/{p-f364296f.entry.js → p-e339d0b5.entry.js} +1 -1
- package/dist/components/{p-0d7aee0b.entry.js → p-e4df206e.entry.js} +1 -1
- package/dist/components/{p-c2fc62f7.entry.js → p-e71a4f29.entry.js} +1 -1
- package/dist/components/{p-773bd015.entry.js → p-e9e6ec19.entry.js} +1 -1
- package/dist/components/p-f4d2f882.entry.js +1 -0
- package/dist/components/{p-d1b3aa52.entry.js → p-f9a9fa34.entry.js} +1 -1
- package/dist/components/primary.js +1 -1
- package/dist/components/primary2.js +1 -1
- package/dist/components/secondary.js +1 -1
- package/dist/components/secondary2.js +7 -7
- package/dist/components/support.js +1 -1
- package/dist/components/support2.js +3 -3
- package/dist/components/svg-repository.js +19 -25
- package/dist/components/token-list2.js +1 -1
- package/dist/components/token-radii2.js +1 -1
- package/dist/components/token-ratios.js +1 -1
- package/dist/components/token-shadows2.js +1 -1
- package/dist/components/token-spacing.js +1 -1
- package/dist/components/token-typography.js +1 -1
- package/dist/esm/color-primary-palette_6.entry.js +14 -14
- package/dist/esm/components-section.entry.js +1 -1
- package/dist/esm/components.js +1 -1
- package/dist/esm/correct-use-of-colors.entry.js +1 -1
- package/dist/esm/docs-palettes.entry.js +1 -1
- package/dist/esm/docs-tokens.entry.js +1 -1
- package/dist/esm/{eds-accordion_52.entry.js → eds-accordion_53.entry.js} +846 -207
- package/dist/esm/eds-app-root.entry.js +1 -1
- package/dist/esm/eds-cookies-preference.entry.js +1 -1
- package/dist/esm/eds-feedback.entry.js +1 -1
- package/dist/esm/eds-frame.entry.js +1 -1
- package/dist/esm/eds-gauge.entry.js +1 -1
- package/dist/esm/eds-gitlab-contributors.entry.js +9 -2
- package/dist/esm/eds-icon-bluesky.entry.js +1 -1
- package/dist/esm/eds-icon-eu.entry.js +1 -1
- package/dist/esm/eds-icon-facebook.entry.js +1 -1
- package/dist/esm/eds-icon-gitlab.entry.js +1 -1
- package/dist/esm/eds-icon-linkedin.entry.js +1 -1
- package/dist/esm/eds-icon-mastodon.entry.js +1 -1
- package/dist/esm/eds-icon-twitter.entry.js +1 -1
- package/dist/esm/eds-icon-youtube.entry.js +1 -1
- package/dist/{components/eds-input-search2.js → esm/eds-input-search.entry.js} +9 -39
- package/dist/esm/eds-section-core_2.entry.js +3 -3
- package/dist/esm/eds-timeline.entry.js +1 -1
- package/dist/esm/eds-toast-manager.entry.js +1 -1
- package/dist/esm/eds-trl-badge.entry.js +177 -0
- package/dist/esm/incorrect-use-of-colors.entry.js +1 -1
- package/dist/esm/index-870ab08f.js +10 -2
- package/dist/esm/loader.js +1 -1
- package/dist/esm/logo-space.entry.js +1 -1
- package/dist/esm/logo-variations-horizontal_2.entry.js +2 -2
- package/dist/esm/logo-variations-tabs.entry.js +1 -1
- package/dist/esm/logo-wrong-usage.entry.js +1 -1
- package/dist/esm/svg-repository.entry.js +1 -1
- package/dist/esm/token-list_3.entry.js +3 -3
- package/dist/esm/token-ratios.entry.js +1 -1
- package/dist/esm/token-spacing.entry.js +1 -1
- package/dist/esm/token-typography.entry.js +1 -1
- package/dist/hydrate/index.js +1222 -207
- package/dist/hydrate/index.mjs +1222 -207
- package/dist/types/components/eds-accordion/eds-accordion.stories.d.ts +4 -8
- package/dist/types/components/eds-alert/eds-alert.stories.d.ts +7 -73
- package/dist/types/components/eds-button/eds-button.d.ts +1 -1
- package/dist/types/components/eds-dropdown/eds-dropdown.d.ts +1 -0
- package/dist/types/components/eds-footer/eds-footer.d.ts +84 -55
- package/dist/types/components/eds-footer/eds-footer.stories.d.ts +62 -1
- package/dist/types/components/eds-form/eds-form.d.ts +10 -0
- package/dist/types/components/eds-header/eds-header.stories.d.ts +6 -6
- package/dist/types/components/eds-icon-wrapper/eds-icon-wrapper.d.ts +8 -0
- package/dist/types/components/eds-img/eds-img.stories.d.ts +6 -20
- package/dist/types/components/eds-input-elements/eds-input/eds-input.d.ts +7 -0
- package/dist/types/components/eds-input-elements/eds-input-search/eds-input-search.stories.d.ts +36 -0
- package/dist/types/components/eds-input-field/eds-input-field.stories.d.ts +97 -38
- package/dist/types/components/eds-link/eds-link.stories.d.ts +9 -6
- package/dist/types/components/eds-table/eds-table.d.ts +8 -14
- package/dist/types/components/eds-table/eds-table.stories.d.ts +0 -107
- package/dist/types/components/eds-tabs/eds-tabs.d.ts +10 -0
- package/dist/types/components.d.ts +507 -86
- package/dist/types/shared-ui/eds-global-search/eds-global-search.d.ts +12 -0
- package/dist/types/shared-ui/eds-kg-learning-resources/eds-kg-learning-resources.d.ts +60 -0
- package/dist/types/shared-ui/eds-search-select/eds-search-select.d.ts +98 -0
- package/dist/types/shared-ui/eds-search-select/eds-search-select.stories.d.ts +81 -0
- package/dist/types/shared-ui/eds-trl-badge/ebrains-mark.d.ts +7 -0
- package/dist/types/shared-ui/eds-trl-badge/eds-trl-badge.d.ts +54 -0
- package/dist/types/shared-ui/eds-trl-badge/eds-trl-badge.stories.d.ts +112 -0
- package/dist/types/utils/eds-form/safeFormat.d.ts +21 -0
- package/package.json +1 -1
- package/dist/components/p-18e852e1.entry.js +0 -1
- package/dist/components/p-3ccd6948.entry.js +0 -1
- package/dist/components/p-3d3841d6.entry.js +0 -1
- package/dist/components/p-3f38df99.entry.js +0 -1
- package/dist/components/p-527e71d0.entry.js +0 -1
- package/dist/components/p-55047f7f.entry.js +0 -9
- package/dist/components/p-64c23098.entry.js +0 -1
- package/dist/components/p-7b93a385.entry.js +0 -1
- package/dist/components/p-878f65a6.entry.js +0 -1
- package/dist/components/p-92f6d9c0.entry.js +0 -1
- package/dist/components/p-9eedf771.entry.js +0 -1
- package/dist/components/p-b4355cec.entry.js +0 -1
- package/dist/components/p-d2f17fac.entry.js +0 -1
- package/dist/components/p-db5eea95.entry.js +0 -1
- package/dist/components/p-e205c269.entry.js +0 -1
- package/dist/components/p-f88b5f21.entry.js +0 -1
|
@@ -1,46 +1,127 @@
|
|
|
1
1
|
import { h } from "@stencil/core";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
3
|
+
* EBRAINS-wide default link columns. Used when a consumer doesn't pass
|
|
4
|
+
* the `columns` prop. URLs are absolute so the same footer renders
|
|
5
|
+
* correctly from any app's domain (handbook.ebrains.eu, forms.ebrains.eu,
|
|
6
|
+
* design.ebrains.eu, …) — the previous eds-docs design used relative
|
|
7
|
+
* paths which only worked from design.ebrains.eu itself.
|
|
6
8
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
* If EBRAINS adds / renames a canonical resource, change it here once
|
|
10
|
+
* and every consumer's footer updates on the next component release.
|
|
11
|
+
*/
|
|
12
|
+
const DEFAULT_COLUMNS = [
|
|
13
|
+
{
|
|
14
|
+
heading: 'Resources',
|
|
15
|
+
links: [
|
|
16
|
+
{ label: 'Documentation', href: 'https://design.ebrains.eu/get-started/', external: true },
|
|
17
|
+
{ label: 'Components', href: 'https://design.ebrains.eu/ui-components/', external: true },
|
|
18
|
+
{ label: 'Foundations', href: 'https://design.ebrains.eu/foundations/', external: true },
|
|
19
|
+
{ label: 'Analytics', href: 'https://design.ebrains.eu/analytics/', external: true },
|
|
20
|
+
],
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
heading: 'Community',
|
|
24
|
+
links: [
|
|
25
|
+
{ label: 'GitLab', href: 'https://gitlab.ebrains.eu/ri/tech-hub/ebrains-ui-ecosystem/', external: true },
|
|
26
|
+
{ label: 'Storybook', href: 'https://storybook.design.ebrains.eu', external: true },
|
|
27
|
+
{ label: 'Report Issues', href: 'https://gitlab.ebrains.eu/ri/tech-hub/ebrains-ui-ecosystem/-/issues', external: true },
|
|
28
|
+
{ label: 'Contribute', href: 'https://design.ebrains.eu/get-started/contributing/', external: true },
|
|
29
|
+
],
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
heading: 'Legal',
|
|
33
|
+
links: [
|
|
34
|
+
{ label: 'MIT License' },
|
|
35
|
+
{ label: 'Cookie Preferences', action: 'cookies' },
|
|
36
|
+
],
|
|
37
|
+
},
|
|
38
|
+
];
|
|
39
|
+
/**
|
|
40
|
+
* `EdsFooter` is the EBRAINS-wide footer component.
|
|
41
|
+
*
|
|
42
|
+
* Renders a 4-column layout matching the eds-docs landing footer:
|
|
43
|
+
* [ Brand (EU flag + funding text + copyright) | Resources | Community | Legal ]
|
|
12
44
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
45
|
+
* Defaults are designed so a consumer that writes `<eds-footer></eds-footer>`
|
|
46
|
+
* with no props gets the full canonical EBRAINS footer rendered — same
|
|
47
|
+
* brand block, same link columns, same dark theme as the eds-docs
|
|
48
|
+
* landing page. The previous minimal-strip footer is replaced; consumers
|
|
49
|
+
* that need different link content pass the `columns` prop (array or
|
|
50
|
+
* JSON-stringified array for HTML attribute use).
|
|
51
|
+
*
|
|
52
|
+
* Configurability without breakage:
|
|
53
|
+
* - All previous props remain (`social`, `variant`, `fundedBy`,
|
|
54
|
+
* `rightsReserved`, `enableScrollTop`, `enableCookiesSettings`,
|
|
55
|
+
* `cookiesPreferences`, `backToTopAriaLabel`). Their meanings are
|
|
56
|
+
* preserved.
|
|
57
|
+
* - New `columns` prop is optional — omit it for the defaults.
|
|
58
|
+
* - The `enableCookiesSettings` toggle now decides whether any column
|
|
59
|
+
* link with `action: 'cookies'` is rendered (default false; pass
|
|
60
|
+
* true to surface the Cookie Preferences entry in the Legal column).
|
|
15
61
|
*/
|
|
16
62
|
export class EdsFooter {
|
|
17
63
|
constructor() {
|
|
18
|
-
/**
|
|
19
|
-
* Scrolls the page smoothly back to the top.
|
|
20
|
-
* Called when the "Back to top" button is clicked.
|
|
21
|
-
* @private
|
|
22
|
-
*/
|
|
23
64
|
this.backToTop = () => {
|
|
24
65
|
window.scrollTo({ top: 0, behavior: 'smooth' });
|
|
25
66
|
};
|
|
67
|
+
this.emitCookies = () => {
|
|
68
|
+
this.cookies.emit('toggle');
|
|
69
|
+
};
|
|
26
70
|
this.social = false;
|
|
27
|
-
this.variant = '
|
|
71
|
+
this.variant = 'inverse';
|
|
28
72
|
this.enableScrollTop = false;
|
|
29
73
|
this.fundedBy = 'EBRAINS is funded by the Horizon Europe Framework Programme.';
|
|
30
74
|
this.rightsReserved = `${new Date().getFullYear()} EBRAINS. All rights reserved.`;
|
|
31
|
-
this.cookiesPreferences = '
|
|
75
|
+
this.cookiesPreferences = 'Cookie Preferences';
|
|
32
76
|
this.enableCookiesSettings = false;
|
|
33
77
|
this.backToTopAriaLabel = 'Back to Top';
|
|
34
|
-
this.
|
|
78
|
+
this.columns = undefined;
|
|
79
|
+
this.resolvedColumns = DEFAULT_COLUMNS;
|
|
80
|
+
}
|
|
81
|
+
componentWillLoad() {
|
|
82
|
+
this.resolvedColumns = this.parseColumns(this.columns);
|
|
83
|
+
}
|
|
84
|
+
onColumnsChange(value) {
|
|
85
|
+
this.resolvedColumns = this.parseColumns(value);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Resolve the `columns` prop to a usable array.
|
|
89
|
+
* - undefined / null → defaults
|
|
90
|
+
* - JSON-parseable str → parsed array
|
|
91
|
+
* - already an array → used as-is
|
|
92
|
+
* - anything else (malformed JSON, wrong shape) → defaults + console warning
|
|
93
|
+
*
|
|
94
|
+
* Defensive parsing so a typo in a Hugo template's attribute doesn't
|
|
95
|
+
* render an empty footer in production. Failure logs a warning but
|
|
96
|
+
* keeps the footer working with sensible defaults.
|
|
97
|
+
*/
|
|
98
|
+
parseColumns(value) {
|
|
99
|
+
if (value === undefined || value === null || value === '')
|
|
100
|
+
return DEFAULT_COLUMNS;
|
|
101
|
+
if (Array.isArray(value))
|
|
102
|
+
return value;
|
|
103
|
+
if (typeof value === 'string') {
|
|
104
|
+
try {
|
|
105
|
+
const parsed = JSON.parse(value);
|
|
106
|
+
if (Array.isArray(parsed))
|
|
107
|
+
return parsed;
|
|
108
|
+
console.warn('eds-footer: `columns` JSON parsed but is not an array; using defaults');
|
|
109
|
+
return DEFAULT_COLUMNS;
|
|
110
|
+
}
|
|
111
|
+
catch (e) {
|
|
112
|
+
console.warn('eds-footer: failed to parse `columns` JSON, using defaults', e);
|
|
113
|
+
return DEFAULT_COLUMNS;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return DEFAULT_COLUMNS;
|
|
35
117
|
}
|
|
36
118
|
componentDidLoad() {
|
|
37
119
|
var _a;
|
|
38
120
|
this.backBtn = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#toTop');
|
|
39
121
|
}
|
|
40
122
|
handleScroll() {
|
|
41
|
-
if (!this.backBtn)
|
|
123
|
+
if (!this.backBtn)
|
|
42
124
|
return;
|
|
43
|
-
}
|
|
44
125
|
const shouldShow = window.scrollY > 100 && document.body.scrollHeight > window.innerHeight;
|
|
45
126
|
this.backBtn.style.opacity = shouldShow ? '1' : '0';
|
|
46
127
|
this.backBtn.style.pointerEvents = shouldShow ? 'auto' : 'none';
|
|
@@ -50,24 +131,35 @@ export class EdsFooter {
|
|
|
50
131
|
btn.setAttribute('tabindex', shouldShow ? '0' : '-1');
|
|
51
132
|
}
|
|
52
133
|
}
|
|
53
|
-
toggleCookiesConsent() {
|
|
54
|
-
this.cookies.emit('toggle');
|
|
55
|
-
}
|
|
56
134
|
/**
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
135
|
+
* Render one link inside a column.
|
|
136
|
+
* - `action: 'cookies'` → button-like anchor that fires the cookies event
|
|
137
|
+
* - `href` present → real anchor (target=_blank when `external`)
|
|
138
|
+
* - neither → plain text span (e.g. "MIT License")
|
|
60
139
|
*/
|
|
140
|
+
renderLink(link, index) {
|
|
141
|
+
if (link.action === 'cookies') {
|
|
142
|
+
if (!this.enableCookiesSettings)
|
|
143
|
+
return null;
|
|
144
|
+
return (h("li", { key: `cookies-${index}` }, h("a", { href: "javascript:void(0)", class: "footer-link", onClick: this.emitCookies, role: "button" }, this.cookiesPreferences || link.label)));
|
|
145
|
+
}
|
|
146
|
+
if (link.href) {
|
|
147
|
+
const external = link.external === true;
|
|
148
|
+
return (h("li", { key: `${link.label}-${index}` }, h("a", Object.assign({ class: "footer-link", href: link.href }, (external ? { target: '_blank', rel: 'noopener noreferrer' } : {})), link.label)));
|
|
149
|
+
}
|
|
150
|
+
return (h("li", { key: `text-${index}` }, h("span", { class: "footer-text-item" }, link.label)));
|
|
151
|
+
}
|
|
61
152
|
render() {
|
|
62
153
|
const year = new Date().getFullYear();
|
|
63
154
|
const rights = this.rightsReserved || `${year} EBRAINS. All rights reserved.`;
|
|
64
155
|
const isInverse = this.variant === 'inverse';
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
156
|
+
// Class hooks driven by variant — the CSS file styles each
|
|
157
|
+
// selector independently rather than relying on prop-based
|
|
158
|
+
// inline styles, so theme tokens stay overridable from outside
|
|
159
|
+
// via the host's CSS custom properties.
|
|
160
|
+
const rootClasses = ['eds-footer-root', isInverse ? 'theme-inverse' : 'theme-default']
|
|
161
|
+
.join(' ');
|
|
162
|
+
return (h("footer", { key: 'b09063376e3bd78845302473a96884bd473cea09', class: rootClasses }, this.social ? (h("div", { class: "footer-social" }, h("div", { class: "footer-container" }, h("eds-social-networks", { variant: this.variant })))) : null, h("div", { key: '3aeb8f496bb4c3c73da907ba9b9fbb72841be213', class: "footer-container" }, h("div", { key: 'e7e33ce7dee8079a9aff17d45963dfaff9576121', class: "footer-grid" }, h("div", { key: 'e6fc738e086774e114c5ceef1b82fea2e2840990', class: "footer-brand" }, h("div", { key: '96f7030269174c122ffe0117897a79b00020dd29', class: "footer-brand-row" }, h("a", { key: '5967c33efff435ceee2a45c21cae67749b91b9ba', target: "_blank", rel: "noopener noreferrer", class: "footer-flag-link", href: "https://research-and-innovation.ec.europa.eu/funding/funding-opportunities/funding-programmes-and-open-calls/horizon-europe_en", "aria-label": "Learn about Horizon Europe funding" }, h("svg", { key: '3de7debe64d431152e47a4daefb7c9facf7bf951', class: "footer-flag-svg", width: "63", height: "50", viewBox: "0 0 640 480", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, h("path", { key: '50e3f0c5ae41e3e7cc5689ddf01a8944a6c5d2eb', d: "M0 0h640v480H0V0z", fill: "#039" }), h("path", { key: '2c0f61e6de734d7214accd10cefd3a39e31f36a1', d: "M325.032 93.15l17.513-.398-14.401 9.972 5.789 16.53L320 108.639l-13.933 10.615 5.789-16.531-14.399-9.97 17.51.396L320 76.374l5.032 16.775zm0 284.444l17.513-.398-14.401 9.972 5.789 16.53L320 393.083l-13.933 10.615 5.789-16.531-14.399-9.97 17.51.397L320 360.818l5.032 16.776zm-147.25-158.983l5.029 16.761 17.511-.397-14.4 9.969 5.79 16.533-13.933-10.616-13.932 10.616 5.788-16.531-14.401-9.971 17.511.397 5.028-16.761.004-.015.001.003.001-.003.003.015zm77.885-105.334l17.511-.397-14.401 9.971 5.79 16.531-13.932-10.614-13.933 10.615 5.788-16.531-14.4-9.971h.005l-.003-.001 17.51.397 5.033-16.775 5.032 16.775zm-52.729 52.729l17.511-.398h.002l-14.402 9.971 5.79 16.531-13.933-10.615-13.932 10.615 5.789-16.532-14.4-9.97 17.51.397 5.033-16.776 5.032 16.777zm-5.001 125.803l5.027 16.759 17.513-.397-14.401 9.971 5.79 16.531-.005-.005.003.006-13.932-10.615-13.933 10.615 5.788-16.532-14.398-9.97 17.51.396 5.029-16.759.004-.016v.003l.002-.003.003.016zm51.445 47.71l5.027 16.76 17.513-.397-14.401 9.97 5.791 16.532-.004-.004.002.004-13.933-10.615-13.933 10.615 5.788-16.532-14.398-9.97 17.51.397 5.029-16.76.004-.016v.003l.002-.003.003.016zm217.873-104.147l17.511-.397-14.401 9.969 5.79 16.533-13.934-10.616-13.931 10.616 5.789-16.533-14.399-9.969 17.509.397 5.034-16.776 5.032 16.776zm-63.958-95.997l-5.786-16.522 14.401-9.972-17.511.398-5.033-16.778-5.034 16.777-17.51-.398 14.4 9.972-5.789 16.53 13.932-10.614 13.934 10.614-.004-.007zm38.797 42.122l13.934 10.614-.004-.007-5.787-16.524 14.401-9.971-17.51.399-5.033-16.778-5.033 16.777-17.51-.398h-.001l14.399 9.972-5.787 16.529 13.931-10.613zm5.007 127.071l17.51-.397-14.4 9.971 5.79 16.531-13.933-10.614-13.932 10.615 5.788-16.531-14.401-9.971h.005l-.003-.001 17.51.397 5.033-16.775 5.033 16.775zm-51.446 47.711l17.511-.397-14.4 9.97 5.79 16.532-13.933-10.615-13.933 10.615 5.789-16.531-14.401-9.971h.002l17.51.397 5.033-16.776 5.032 16.776z", fill: "#FC0" }))), h("p", { key: '9ff8e10db0e213754bfc73bcce1b3dd36bc62e30', class: "footer-funded" }, this.fundedBy)), h("p", { key: 'a24c4fbfe48c4c3c8d076f24da9c84b739a982d8', class: "footer-copyright" }, "\u00A9 ", rights)), this.resolvedColumns.map((col, ci) => (h("div", { class: "footer-column", key: `col-${ci}` }, h("h4", { class: "footer-column-heading" }, col.heading), h("ul", { class: "footer-column-list" }, (col.links || []).map((link, li) => this.renderLink(link, li)))))))), this.enableScrollTop ? (h("div", { id: "toTop", class: "footer-back-to-top" }, h("eds-button", { id: "backToTop", "aria-label": this.backToTopAriaLabel, intent: isInverse ? 'ghostInverse' : 'ghost', size: "large", icon: "chevron-up", onClick: this.backToTop, tabindex: "-1" }))) : null));
|
|
71
163
|
}
|
|
72
164
|
static get is() { return "eds-footer"; }
|
|
73
165
|
static get encapsulation() { return "shadow"; }
|
|
@@ -94,11 +186,8 @@ export class EdsFooter {
|
|
|
94
186
|
"required": false,
|
|
95
187
|
"optional": false,
|
|
96
188
|
"docs": {
|
|
97
|
-
"tags": [
|
|
98
|
-
|
|
99
|
-
"text": "{boolean}"
|
|
100
|
-
}],
|
|
101
|
-
"text": "Determines if the social network section should be displayed.\nAdds top padding when true."
|
|
189
|
+
"tags": [],
|
|
190
|
+
"text": "Show the eds-social-networks section above the main grid."
|
|
102
191
|
},
|
|
103
192
|
"attribute": "social",
|
|
104
193
|
"reflect": false,
|
|
@@ -115,15 +204,12 @@ export class EdsFooter {
|
|
|
115
204
|
"required": false,
|
|
116
205
|
"optional": false,
|
|
117
206
|
"docs": {
|
|
118
|
-
"tags": [
|
|
119
|
-
|
|
120
|
-
"text": "{'default' | 'inverse'}"
|
|
121
|
-
}],
|
|
122
|
-
"text": "Controls the visual variant of the footer.\n- 'default': Light background with dark text\n- 'inverse': Dark/black background with white text"
|
|
207
|
+
"tags": [],
|
|
208
|
+
"text": "Theme variant. Defaults to `inverse` (dark) because the canonical\nEBRAINS footer design uses a dark backdrop with light text. Pass\n`variant=\"default\"` for the light-on-light treatment if an app's\npage palette demands it."
|
|
123
209
|
},
|
|
124
210
|
"attribute": "variant",
|
|
125
|
-
"reflect":
|
|
126
|
-
"defaultValue": "'
|
|
211
|
+
"reflect": true,
|
|
212
|
+
"defaultValue": "'inverse'"
|
|
127
213
|
},
|
|
128
214
|
"enableScrollTop": {
|
|
129
215
|
"type": "boolean",
|
|
@@ -136,11 +222,8 @@ export class EdsFooter {
|
|
|
136
222
|
"required": false,
|
|
137
223
|
"optional": false,
|
|
138
224
|
"docs": {
|
|
139
|
-
"tags": [
|
|
140
|
-
|
|
141
|
-
"text": "{boolean}"
|
|
142
|
-
}],
|
|
143
|
-
"text": "Controls the display of the \"Back to Top\" button.\nWhen true, the button appears in the footer."
|
|
225
|
+
"tags": [],
|
|
226
|
+
"text": "Float a \"Back to top\" button at the top-right of the footer."
|
|
144
227
|
},
|
|
145
228
|
"attribute": "enable-scroll-top",
|
|
146
229
|
"reflect": false,
|
|
@@ -157,11 +240,8 @@ export class EdsFooter {
|
|
|
157
240
|
"required": false,
|
|
158
241
|
"optional": false,
|
|
159
242
|
"docs": {
|
|
160
|
-
"tags": [
|
|
161
|
-
|
|
162
|
-
"text": "{string}"
|
|
163
|
-
}],
|
|
164
|
-
"text": "Controls the display of the \"Founded By\" text."
|
|
243
|
+
"tags": [],
|
|
244
|
+
"text": "\"EBRAINS is funded by\u2026\" line shown next to the EU flag in the brand column."
|
|
165
245
|
},
|
|
166
246
|
"attribute": "funded-by",
|
|
167
247
|
"reflect": false,
|
|
@@ -178,11 +258,8 @@ export class EdsFooter {
|
|
|
178
258
|
"required": false,
|
|
179
259
|
"optional": false,
|
|
180
260
|
"docs": {
|
|
181
|
-
"tags": [
|
|
182
|
-
|
|
183
|
-
"text": "{string}"
|
|
184
|
-
}],
|
|
185
|
-
"text": "Controls the display of the \"Rights Reserved\" text."
|
|
261
|
+
"tags": [],
|
|
262
|
+
"text": "\"\u00A9 {year} EBRAINS. All rights reserved.\" line shown below the funding text."
|
|
186
263
|
},
|
|
187
264
|
"attribute": "rights-reserved",
|
|
188
265
|
"reflect": false,
|
|
@@ -199,15 +276,12 @@ export class EdsFooter {
|
|
|
199
276
|
"required": false,
|
|
200
277
|
"optional": false,
|
|
201
278
|
"docs": {
|
|
202
|
-
"tags": [
|
|
203
|
-
|
|
204
|
-
"text": "{string}"
|
|
205
|
-
}],
|
|
206
|
-
"text": "Controls the display of the \"Cookies preferences\" text."
|
|
279
|
+
"tags": [],
|
|
280
|
+
"text": "Label used for any link with `action: 'cookies'` \u2014 overrides the column's `label`."
|
|
207
281
|
},
|
|
208
282
|
"attribute": "cookies-preferences",
|
|
209
283
|
"reflect": false,
|
|
210
|
-
"defaultValue": "'
|
|
284
|
+
"defaultValue": "'Cookie Preferences'"
|
|
211
285
|
},
|
|
212
286
|
"enableCookiesSettings": {
|
|
213
287
|
"type": "boolean",
|
|
@@ -220,11 +294,8 @@ export class EdsFooter {
|
|
|
220
294
|
"required": false,
|
|
221
295
|
"optional": false,
|
|
222
296
|
"docs": {
|
|
223
|
-
"tags": [
|
|
224
|
-
|
|
225
|
-
"text": "{string}"
|
|
226
|
-
}],
|
|
227
|
-
"text": "Controls the display of the \"Cookies preferences\" link."
|
|
297
|
+
"tags": [],
|
|
298
|
+
"text": "When false, any column link with `action: 'cookies'` is hidden.\nDefault false so adding the footer to a page without a Matomo\nnotice / cookie banner doesn't surface a non-functional link.\nSet true once you've also mounted `<eds-matomo-notice>` on the page."
|
|
228
299
|
},
|
|
229
300
|
"attribute": "enable-cookies-settings",
|
|
230
301
|
"reflect": false,
|
|
@@ -241,21 +312,41 @@ export class EdsFooter {
|
|
|
241
312
|
"required": false,
|
|
242
313
|
"optional": false,
|
|
243
314
|
"docs": {
|
|
244
|
-
"tags": [
|
|
245
|
-
|
|
246
|
-
"text": "{string}"
|
|
247
|
-
}],
|
|
248
|
-
"text": "Controls the display of the \"Back to Top\" aria label text."
|
|
315
|
+
"tags": [],
|
|
316
|
+
"text": "ARIA label for the \"Back to top\" floating button."
|
|
249
317
|
},
|
|
250
318
|
"attribute": "back-to-top-aria-label",
|
|
251
319
|
"reflect": false,
|
|
252
320
|
"defaultValue": "'Back to Top'"
|
|
321
|
+
},
|
|
322
|
+
"columns": {
|
|
323
|
+
"type": "string",
|
|
324
|
+
"mutable": false,
|
|
325
|
+
"complexType": {
|
|
326
|
+
"original": "EdsFooterColumn[] | string",
|
|
327
|
+
"resolved": "EdsFooterColumn[] | string",
|
|
328
|
+
"references": {
|
|
329
|
+
"EdsFooterColumn": {
|
|
330
|
+
"location": "local",
|
|
331
|
+
"path": "/Users/nikolaosgeorgomanolis/Documents/EBRAINS/Projects/ebrains-ui-ecosystem/packages/components/src/components/eds-footer/eds-footer.tsx",
|
|
332
|
+
"id": "../../../packages/components/src/components/eds-footer/eds-footer.tsx::EdsFooterColumn"
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
},
|
|
336
|
+
"required": false,
|
|
337
|
+
"optional": true,
|
|
338
|
+
"docs": {
|
|
339
|
+
"tags": [],
|
|
340
|
+
"text": "Custom link columns. Accepts an array (Vue/React/JS bindings) OR\na JSON-stringified array (HTML attribute use). When omitted, the\ncanonical EBRAINS-wide columns above are used.\n\nShape: see EdsFooterColumn / EdsFooterLink at the top of this file."
|
|
341
|
+
},
|
|
342
|
+
"attribute": "columns",
|
|
343
|
+
"reflect": false
|
|
253
344
|
}
|
|
254
345
|
};
|
|
255
346
|
}
|
|
256
347
|
static get states() {
|
|
257
348
|
return {
|
|
258
|
-
"
|
|
349
|
+
"resolvedColumns": {}
|
|
259
350
|
};
|
|
260
351
|
}
|
|
261
352
|
static get events() {
|
|
@@ -277,6 +368,12 @@ export class EdsFooter {
|
|
|
277
368
|
}];
|
|
278
369
|
}
|
|
279
370
|
static get elementRef() { return "el"; }
|
|
371
|
+
static get watchers() {
|
|
372
|
+
return [{
|
|
373
|
+
"propName": "columns",
|
|
374
|
+
"methodName": "onColumnsChange"
|
|
375
|
+
}];
|
|
376
|
+
}
|
|
280
377
|
static get listeners() {
|
|
281
378
|
return [{
|
|
282
379
|
"name": "scroll",
|
|
@@ -1,57 +1,123 @@
|
|
|
1
|
+
// Sensible sample for the `columns` control — used as the default
|
|
2
|
+
// value of the CustomColumns story so the JSON editor in Storybook
|
|
3
|
+
// opens with something realistic to mutate rather than `null`. The
|
|
4
|
+
// canonical EBRAINS defaults baked into the component differ from
|
|
5
|
+
// this on purpose: leaving the control empty (null) demonstrates the
|
|
6
|
+
// "no overrides" path; this sample demonstrates the override path.
|
|
7
|
+
const SAMPLE_COLUMNS = [
|
|
8
|
+
{
|
|
9
|
+
heading: 'Product',
|
|
10
|
+
links: [
|
|
11
|
+
{ label: 'Home', href: '/' },
|
|
12
|
+
{ label: 'Pricing', href: '/pricing' },
|
|
13
|
+
{ label: 'Docs', href: '/docs' }
|
|
14
|
+
]
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
heading: 'Company',
|
|
18
|
+
links: [
|
|
19
|
+
{ label: 'About', href: '/about' },
|
|
20
|
+
{ label: 'Blog', href: 'https://example.com/blog', external: true },
|
|
21
|
+
{ label: 'Careers', href: '/careers' }
|
|
22
|
+
]
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
heading: 'Legal',
|
|
26
|
+
links: [
|
|
27
|
+
{ label: 'Privacy', href: '/privacy' },
|
|
28
|
+
{ label: 'Terms', href: '/terms' },
|
|
29
|
+
{ label: 'Cookie Preferences', action: 'cookies' }
|
|
30
|
+
]
|
|
31
|
+
}
|
|
32
|
+
];
|
|
1
33
|
export default {
|
|
2
34
|
title: 'Components/Footer',
|
|
3
35
|
component: 'eds-footer',
|
|
4
36
|
argTypes: {
|
|
37
|
+
variant: {
|
|
38
|
+
control: 'select',
|
|
39
|
+
options: ['default', 'inverse'],
|
|
40
|
+
description: 'Theme. Default is `inverse` (dark) — the canonical EBRAINS footer.'
|
|
41
|
+
},
|
|
5
42
|
social: {
|
|
6
43
|
control: 'boolean',
|
|
7
|
-
description: '
|
|
44
|
+
description: 'Show the social-networks section above the main grid'
|
|
8
45
|
},
|
|
9
46
|
fundedBy: {
|
|
10
47
|
control: 'text',
|
|
11
|
-
description: '
|
|
48
|
+
description: 'Text shown next to the EU flag in the brand column'
|
|
12
49
|
},
|
|
13
50
|
rightsReserved: {
|
|
14
51
|
control: 'text',
|
|
15
|
-
description: '
|
|
52
|
+
description: 'Text shown after the © symbol below the funding line'
|
|
16
53
|
},
|
|
17
54
|
enableScrollTop: {
|
|
18
55
|
control: 'boolean',
|
|
19
|
-
description: '
|
|
56
|
+
description: 'Float a "Back to top" button at the top-right of the footer'
|
|
20
57
|
},
|
|
21
58
|
enableCookiesSettings: {
|
|
22
59
|
control: 'boolean',
|
|
23
|
-
description: '
|
|
60
|
+
description: 'Render the "Cookie Preferences" entry (column links with action="cookies")'
|
|
24
61
|
},
|
|
25
62
|
cookiesPreferences: {
|
|
26
63
|
control: 'text',
|
|
27
|
-
description: '
|
|
64
|
+
description: 'Label used for the cookies-action link'
|
|
28
65
|
},
|
|
29
66
|
backToTopAriaLabel: {
|
|
30
67
|
control: 'text',
|
|
31
|
-
description: '
|
|
68
|
+
description: 'ARIA label for the floating back-to-top button'
|
|
69
|
+
},
|
|
70
|
+
columns: {
|
|
71
|
+
// `object` opens a live JSON editor in the Storybook controls
|
|
72
|
+
// panel — visitors can edit headings, links, hrefs, action,
|
|
73
|
+
// external flag etc. and see the footer re-render. Each story
|
|
74
|
+
// sets its own default (null for the canonical-defaults path,
|
|
75
|
+
// SAMPLE_COLUMNS for the override demo).
|
|
76
|
+
control: 'object',
|
|
77
|
+
description: 'Custom link columns. Array of `{ heading, links: [{ label, href?, external?, action? }] }`. Leave null to use the canonical EBRAINS defaults baked into the component.'
|
|
32
78
|
}
|
|
33
79
|
},
|
|
34
80
|
args: {
|
|
81
|
+
variant: 'inverse',
|
|
35
82
|
social: false,
|
|
36
83
|
fundedBy: 'EBRAINS is funded by the Horizon Europe Framework Programme.',
|
|
37
|
-
rightsReserved:
|
|
84
|
+
rightsReserved: `${new Date().getFullYear()} EBRAINS. All rights reserved.`,
|
|
38
85
|
enableScrollTop: false,
|
|
39
86
|
enableCookiesSettings: false,
|
|
40
|
-
cookiesPreferences: '
|
|
41
|
-
backToTopAriaLabel: 'Back to Top'
|
|
42
|
-
|
|
43
|
-
|
|
87
|
+
cookiesPreferences: 'Cookie Preferences',
|
|
88
|
+
backToTopAriaLabel: 'Back to Top',
|
|
89
|
+
columns: null
|
|
90
|
+
}
|
|
44
91
|
};
|
|
92
|
+
// Helper — JSON-stringify the columns array and escape single quotes so
|
|
93
|
+
// the resulting HTML attribute (wrapped in single quotes for readability)
|
|
94
|
+
// stays valid even if a link label or href contains one. Shared by every
|
|
95
|
+
// render function below.
|
|
96
|
+
function columnsAttr(columns) {
|
|
97
|
+
if (columns == null)
|
|
98
|
+
return '';
|
|
99
|
+
const json = JSON.stringify(columns).replace(/'/g, ''');
|
|
100
|
+
return `columns='${json}'`;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Default — what a consumer gets from `<eds-footer></eds-footer>`
|
|
104
|
+
* with no overrides. Dark theme, EBRAINS canonical link columns,
|
|
105
|
+
* EU funding ack + copyright.
|
|
106
|
+
*
|
|
107
|
+
* Leave `columns` null in the controls panel to see the canonical
|
|
108
|
+
* defaults baked into the component; set it to a JSON array (use the
|
|
109
|
+
* object editor) to live-preview an override.
|
|
110
|
+
*/
|
|
45
111
|
export const Default = {
|
|
46
112
|
render: (args) => {
|
|
47
113
|
const notice = args.enableCookiesSettings
|
|
48
|
-
?
|
|
49
|
-
<eds-matomo-notice></eds-matomo-notice>`
|
|
114
|
+
? `<eds-matomo-notice></eds-matomo-notice>`
|
|
50
115
|
: '';
|
|
51
116
|
return `
|
|
52
|
-
<eds-alert message="When cookies consent is enabled, please include <code>eds-matomo-notice</code> in your page"></eds-alert>
|
|
117
|
+
<eds-alert message="When cookies consent is enabled, please include <code>eds-matomo-notice</code> in your page" class="mb-16"></eds-alert>
|
|
53
118
|
${notice}
|
|
54
119
|
<eds-footer
|
|
120
|
+
variant="${args.variant}"
|
|
55
121
|
social="${args.social}"
|
|
56
122
|
funded-by="${args.fundedBy}"
|
|
57
123
|
rights-reserved="${args.rightsReserved}"
|
|
@@ -59,7 +125,34 @@ export const Default = {
|
|
|
59
125
|
enable-cookies-settings="${args.enableCookiesSettings}"
|
|
60
126
|
cookies-preferences="${args.cookiesPreferences}"
|
|
61
127
|
back-to-top-aria-label="${args.backToTopAriaLabel}"
|
|
128
|
+
${columnsAttr(args.columns)}
|
|
62
129
|
></eds-footer>
|
|
63
130
|
`;
|
|
64
131
|
}
|
|
65
132
|
};
|
|
133
|
+
/**
|
|
134
|
+
* Custom link columns — pre-fills the `columns` control with a
|
|
135
|
+
* sensible non-EBRAINS example so the Storybook JSON editor opens
|
|
136
|
+
* with something realistic to mutate. Edit headings, links, hrefs,
|
|
137
|
+
* `external`, and `action` directly in the Controls panel to see
|
|
138
|
+
* the footer re-render.
|
|
139
|
+
*
|
|
140
|
+
* Shape: `[{ heading, links: [{ label, href?, external?, action? }] }]`
|
|
141
|
+
* - `href` present → renders as an anchor (target=_blank if `external`)
|
|
142
|
+
* - `href` absent → renders as plain text (e.g. "MIT License")
|
|
143
|
+
* - `action: 'cookies'` → fires the `cookies` event (gated by
|
|
144
|
+
* enable-cookies-settings)
|
|
145
|
+
*/
|
|
146
|
+
export const CustomColumns = {
|
|
147
|
+
args: {
|
|
148
|
+
enableCookiesSettings: true,
|
|
149
|
+
columns: SAMPLE_COLUMNS
|
|
150
|
+
},
|
|
151
|
+
render: (args) => `
|
|
152
|
+
<eds-footer
|
|
153
|
+
variant="${args.variant}"
|
|
154
|
+
enable-cookies-settings="${args.enableCookiesSettings}"
|
|
155
|
+
${columnsAttr(args.columns)}
|
|
156
|
+
></eds-footer>
|
|
157
|
+
`
|
|
158
|
+
};
|
|
@@ -264,4 +264,40 @@
|
|
|
264
264
|
.md\:pt-64 {
|
|
265
265
|
padding-top: 4rem;
|
|
266
266
|
}
|
|
267
|
-
}
|
|
267
|
+
}
|
|
268
|
+
/* Inline links in the form/step description and Text Blocks — exact match of
|
|
269
|
+
eds-link's "underline" intent (.animated-underline): green bar animates in
|
|
270
|
+
on hover. */
|
|
271
|
+
.eds-desc-link {
|
|
272
|
+
position: relative;
|
|
273
|
+
display: inline-block;
|
|
274
|
+
color: var(--brand-black);
|
|
275
|
+
text-decoration: none;
|
|
276
|
+
}
|
|
277
|
+
.eds-desc-link::after {
|
|
278
|
+
content: '';
|
|
279
|
+
position: absolute;
|
|
280
|
+
bottom: -2px;
|
|
281
|
+
left: 0;
|
|
282
|
+
width: 0;
|
|
283
|
+
height: 2px;
|
|
284
|
+
background-color: var(--brand-green);
|
|
285
|
+
transition: width 0.3s ease;
|
|
286
|
+
}
|
|
287
|
+
.eds-desc-link:hover::after {
|
|
288
|
+
width: 100%;
|
|
289
|
+
}
|
|
290
|
+
.eds-desc-link:focus-visible::after {
|
|
291
|
+
width: 0;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
/* Presentational "Text Block" field (type=content): body text the author drops
|
|
295
|
+
anywhere in the form. Links inside reuse .eds-desc-link above. */
|
|
296
|
+
.eds-content-block {
|
|
297
|
+
line-height: 1.5;
|
|
298
|
+
color: var(--brand-black, #07140d);
|
|
299
|
+
}
|
|
300
|
+
.eds-content-block strong { font-weight: 600; }
|
|
301
|
+
/* In Text Blocks, make links a touch bolder than body text so they read as
|
|
302
|
+
links at a glance (the eds-link underline still animates on hover). */
|
|
303
|
+
.eds-content-block .eds-desc-link { font-weight: 600; }
|