@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
|
@@ -66,7 +66,7 @@ export class EdsInputSearch {
|
|
|
66
66
|
return this.inputElement;
|
|
67
67
|
}
|
|
68
68
|
render() {
|
|
69
|
-
return (h("div", { key: '
|
|
69
|
+
return (h("div", { key: '52676b3559e14b5153f7d8f0fa6cd12e49354d87', class: "relative flex items-center" }, h("eds-icon-wrapper", { key: '754e8753607c01dab63d156d306f3325547049aa', name: "search", class: "absolute top-1/2 left-[14px] -translate-y-1/2 text-lightest", "aria-hidden": "true" }), h("input", { key: 'b49d523195711316c0817de67776d379a6c7248b', id: this.inputId || this.name, name: this.name, placeholder: this.placeholder, value: this.value || '', required: this.required, disabled: this.disabled, type: "search", "aria-label": this.placeholder, class: `input pl-36 ${this.decorate}`,
|
|
70
70
|
//onInput={this.onInput}
|
|
71
71
|
onChange: this.onChange })));
|
|
72
72
|
}
|
package/dist/collection/components/eds-input-elements/eds-input-search/eds-input-search.stories.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
title: 'Components/Inputs/Search',
|
|
3
|
+
component: 'eds-input-search',
|
|
4
|
+
argTypes: {
|
|
5
|
+
label: { control: 'text', description: 'Accessible label for the search field.' },
|
|
6
|
+
placeholder: { control: 'text', description: 'Placeholder text.' },
|
|
7
|
+
value: { control: 'text', description: 'Current value of the search field.' },
|
|
8
|
+
disabled: { control: 'boolean', description: 'If true, the input is disabled.' },
|
|
9
|
+
required: { control: 'boolean', description: 'If true, the input is required.' }
|
|
10
|
+
},
|
|
11
|
+
args: {
|
|
12
|
+
label: 'Search',
|
|
13
|
+
placeholder: 'Search…',
|
|
14
|
+
disabled: false,
|
|
15
|
+
required: false
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
export const Default = {
|
|
19
|
+
render: (args) => `
|
|
20
|
+
<eds-input-search
|
|
21
|
+
name="search-box"
|
|
22
|
+
input-id="search-main"
|
|
23
|
+
${args.label ? `label="${args.label}"` : ''}
|
|
24
|
+
${args.placeholder ? `placeholder="${args.placeholder}"` : ''}
|
|
25
|
+
${args.value ? `value="${args.value}"` : ''}
|
|
26
|
+
${args.disabled ? 'disabled="true"' : ''}
|
|
27
|
+
${args.required ? 'required="true"' : ''}
|
|
28
|
+
></eds-input-search>
|
|
29
|
+
`
|
|
30
|
+
};
|
|
@@ -26,12 +26,12 @@ export class EdsInputSelect {
|
|
|
26
26
|
const selectId = this.inputId || this.name;
|
|
27
27
|
const placeholderText = this.placeholder || `Pick from the list`;
|
|
28
28
|
const describedBy = this.hasMessage || this.error ? `${this.name}-error` : undefined;
|
|
29
|
-
return (h("div", { key: '
|
|
29
|
+
return (h("div", { key: '8365ffbc8f6f6386edfc1626d16c9152fd3cce9f', class: "relative" }, h("select", { key: '52e712898a3251cea5447a379886449175e7c8b8', id: selectId, name: this.name, class: {
|
|
30
30
|
input: true,
|
|
31
31
|
'input-error': this.error,
|
|
32
32
|
'px-4': true,
|
|
33
33
|
'py-2': true
|
|
34
|
-
}, "aria-invalid": this.error ? 'true' : 'false', "aria-describedby": describedBy, disabled: this.disabled, required: this.required, onChange: this.handleChange }, h("option", { key: '
|
|
34
|
+
}, "aria-invalid": this.error ? 'true' : 'false', "aria-describedby": describedBy, disabled: this.disabled, required: this.required, onChange: this.handleChange }, h("option", { key: 'd52c376ffb683abc0dec72177dba445273d148f7', value: "", disabled: true, selected: !this.value || this.value === '' }, placeholderText), this.options.map((opt, index) => (h("option", { key: index, value: opt.value, selected: opt.value === this.value }, opt.label)))), h("span", { key: 'fecbcb47793f8a57de44711b33d3650be5297aa7', class: "bg-dark rounded-xs absolute top-1/2 right-[6px] flex h-28 w-28 -translate-y-1/2 items-center justify-center" }, h("eds-icon-wrapper", { key: '4fda1345a62eeb212093057382d877f31bb6112d', class: "w-20 h-20", name: "chevron-right" }))));
|
|
35
35
|
}
|
|
36
36
|
static get is() { return "eds-input-select"; }
|
|
37
37
|
static get properties() {
|
|
@@ -114,9 +114,12 @@ export class EdsInputField {
|
|
|
114
114
|
return [];
|
|
115
115
|
}
|
|
116
116
|
render() {
|
|
117
|
-
const inputOpts = Object.assign({ name: this.name, id: this.inputId, placeholder: this.placeholder, disabled: this.disabled, onInput: this.handleNativeInput, onChange: this.handleNativeChange, type: this.type, required: this.required, value: this.value, error: this.error,
|
|
118
|
-
|
|
119
|
-
|
|
117
|
+
const inputOpts = Object.assign({ name: this.name, id: this.inputId, placeholder: this.placeholder, disabled: this.disabled, onInput: this.handleNativeInput, onChange: this.handleNativeChange, type: this.type, required: this.required, value: this.value, error: this.error,
|
|
118
|
+
// Icons are only supported on text inputs for now — ignore the prop for
|
|
119
|
+
// every other type so e.g. number/select/checkbox never render one.
|
|
120
|
+
icon: this.type === 'text' ? this.icon : undefined, checked: this.checked }, (this.type === 'number' ? { min: this.min, max: this.max, step: this.step } : {}));
|
|
121
|
+
return (h("div", { key: '2072cce16b572431b41363beff779d8631de7abc' }, this.type === 'checkbox' || this.type === 'radio' ? (this.parsedOptions.length > 0 ? (h("fieldset", { class: "space-y-4" }, (this.label || this.hint) && (h("div", { class: "flex justify-between mb-4" }, this.label && (h("eds-input-label", { name: this.inputId || this.name, label: this.label, required: this.required })), this.hint && (h("p", { id: `${this.name}-hint`, class: "f-ui-05 text-lighter mt-8 ml-8" }, this.hint)))), this.parsedOptions.map((option) => (h("div", { class: "flex items-center gap-x-4 gap-y-4", key: option.value }, h("eds-input", Object.assign({}, inputOpts, { inputId: `${this.inputId || this.name}-${option.value}`, inputTabIndex: 0, value: option.value, checked: typeof this.value === 'string' && this.value.split(',').includes(String(option.value)) })), h("label", { htmlFor: `${this.inputId || this.name}-${option.value}`, class: `input-label-options ${this.disabled ? 'text-lighter' : ''}` }, option.label)))))) : (h("div", { class: "flex items-center gap-x-8" }, h("eds-input", Object.assign({}, inputOpts, { inputTabIndex: 0, value: this.value, checked: this.value === 'on' || this.checked })), this.label && (h("eds-input-label", { name: this.inputId || this.name, label: this.label, disabled: this.disabled, required: this.required }))))) : (h("div", null, (this.label || this.hint) && (h("div", { class: "flex justify-between mb-4" }, this.label && (h("eds-input-label", { name: this.inputId || this.name, label: this.label, disabled: this.disabled, required: this.required })), this.hint && (h("p", { id: `${this.name}-hint`, class: "f-ui-05 text-lighter mt-8 ml-8" }, this.hint)))), this.type === 'select' ? (h("eds-input-select", Object.assign({}, inputOpts, { options: this.parsedOptions }))) : this.type === 'file' ? (h("eds-input-file", { name: this.name, inputId: this.inputId, disabled: this.disabled, required: this.required, multiple: true, onEdsfile: this.handleFileChange })) : this.type === 'dropzone' ? (h("eds-input-dropzone", { name: this.name, inputId: this.inputId, disabled: this.disabled, required: this.required, multiple: true, onEdsfile: this.handleFileChange })) : this.type === 'range' ? ((() => {
|
|
122
|
+
var _a, _b, _c, _d, _e, _f;
|
|
120
123
|
const rangeProps = {
|
|
121
124
|
name: inputOpts.name,
|
|
122
125
|
inputId: inputOpts.id || inputOpts.name,
|
|
@@ -127,8 +130,11 @@ export class EdsInputField {
|
|
|
127
130
|
};
|
|
128
131
|
const opt = this.parsedOptions;
|
|
129
132
|
const numberValue = typeof this.value === 'string' ? parseFloat(this.value) : this.value;
|
|
130
|
-
|
|
131
|
-
|
|
133
|
+
// Prefer the explicit min/max/step props (consistent with
|
|
134
|
+
// type="number"); fall back to options[0..2].value for
|
|
135
|
+
// backward compatibility with existing range fields.
|
|
136
|
+
return (h("eds-input-range", Object.assign({}, rangeProps, { min: (_a = this.min) !== null && _a !== void 0 ? _a : (_b = opt[0]) === null || _b === void 0 ? void 0 : _b.value, max: (_c = this.max) !== null && _c !== void 0 ? _c : (_d = opt[1]) === null || _d === void 0 ? void 0 : _d.value, step: (_e = this.step) !== null && _e !== void 0 ? _e : (_f = opt[2]) === null || _f === void 0 ? void 0 : _f.value, value: numberValue })));
|
|
137
|
+
})()) : (h("eds-input", Object.assign({}, inputOpts))))), h("div", { key: 'f3ab7ef07c5c35f6d5e5d7a3ec35f98fe133ab5b', class: "mt-6" }, h("eds-input-footer", { key: 'a72af69114cd3916e9ffa6ca8a65dced572dadf7', id: `${this.name}-footer`, name: this.name, message: this.message, "error-message": this.errorMessage, error: this.error, link: this.link }))));
|
|
132
138
|
}
|
|
133
139
|
static get is() { return "eds-input-field"; }
|
|
134
140
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1,52 +1,68 @@
|
|
|
1
|
+
import { ICONS } from "../../utils/icons";
|
|
2
|
+
// Derived from the single source of truth so the list never drifts.
|
|
3
|
+
// '' = no icon (the template treats it as falsy).
|
|
4
|
+
const ICON_OPTIONS = ['', ...Object.keys(ICONS).sort()];
|
|
1
5
|
export default {
|
|
2
6
|
title: 'Components/Input Field',
|
|
3
7
|
component: 'eds-input-field',
|
|
4
8
|
argTypes: {
|
|
5
|
-
|
|
6
|
-
inputId: { control: 'text', description: 'ID attribute of the input field' },
|
|
7
|
-
placeholder: { control: 'text', description: 'Placeholder text for the input field' },
|
|
8
|
-
disabled: { control: 'boolean', description: 'Whether the input field is disabled' },
|
|
9
|
+
// ── Core ──
|
|
9
10
|
type: {
|
|
10
11
|
control: 'select',
|
|
11
|
-
options: ['text', 'checkbox', 'radio', 'select', 'password', 'file', 'number', 'range'],
|
|
12
|
-
description: 'Type of the input field'
|
|
12
|
+
options: ['text', 'checkbox', 'radio', 'select', 'password', 'file', 'dropzone', 'number', 'range'],
|
|
13
|
+
description: 'Type of the input field',
|
|
14
|
+
table: { category: 'Core' }
|
|
13
15
|
},
|
|
14
|
-
|
|
15
|
-
label: { control: 'text', description: 'Label for the input field' },
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
},
|
|
22
|
-
min: {
|
|
23
|
-
control: 'number',
|
|
24
|
-
description: 'Minimum value for number or range inputs'
|
|
25
|
-
},
|
|
26
|
-
max: {
|
|
27
|
-
control: 'number',
|
|
28
|
-
description: 'Maximum value for number or range inputs'
|
|
29
|
-
},
|
|
30
|
-
step: {
|
|
31
|
-
control: 'number',
|
|
32
|
-
description: 'Step value for number or range inputs'
|
|
33
|
-
},
|
|
34
|
-
message: { control: 'text', description: 'Message displayed below the input field' },
|
|
35
|
-
error: { control: 'boolean', description: 'Whether the input field is in an error state' },
|
|
16
|
+
name: { control: 'text', description: 'Name attribute of the input field', table: { category: 'Core' } },
|
|
17
|
+
label: { control: 'text', description: 'Label for the input field', table: { category: 'Core' } },
|
|
18
|
+
placeholder: { control: 'text', description: 'Placeholder text', table: { category: 'Core' } },
|
|
19
|
+
// ── State & validation ──
|
|
20
|
+
required: { control: 'boolean', description: 'Whether the input is required', table: { category: 'State & validation' } },
|
|
21
|
+
disabled: { control: 'boolean', description: 'Whether the input is disabled', table: { category: 'State & validation' } },
|
|
22
|
+
error: { control: 'boolean', description: 'Render the input in an error state', table: { category: 'State & validation' } },
|
|
23
|
+
errorMessage: { control: 'text', description: 'Error message shown when invalid', table: { category: 'State & validation' } },
|
|
36
24
|
checked: {
|
|
37
25
|
control: 'boolean',
|
|
38
|
-
description: '
|
|
26
|
+
description: 'Checked state (checkbox/radio only)',
|
|
27
|
+
table: { category: 'State & validation' },
|
|
28
|
+
if: { arg: 'type', eq: 'checkbox' }
|
|
39
29
|
},
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
30
|
+
// ── Helper text & decoration ──
|
|
31
|
+
hint: { control: 'text', description: 'Hint text next to the label', table: { category: 'Helper & decoration' } },
|
|
32
|
+
message: { control: 'text', description: 'Message displayed below the input', table: { category: 'Helper & decoration' } },
|
|
33
|
+
icon: {
|
|
34
|
+
control: { type: 'select' },
|
|
35
|
+
options: ICON_OPTIONS,
|
|
36
|
+
description: 'Icon name to display inside the input (from the EDS icon set)',
|
|
37
|
+
table: { category: 'Helper & decoration' }
|
|
43
38
|
},
|
|
44
|
-
|
|
45
|
-
maxLength: { control: 'number', description: 'Maximum length for
|
|
39
|
+
link: { control: 'object', description: 'Help/docs link `{ url, label }`', table: { category: 'Helper & decoration' } },
|
|
40
|
+
maxLength: { control: 'number', description: 'Maximum length for text input', table: { category: 'Helper & decoration' } },
|
|
41
|
+
// ── Number & range (min/max/step apply to type="number" and type="range") ──
|
|
42
|
+
min: { control: 'number', description: 'Minimum value (number & range)', table: { category: 'Number & range' } },
|
|
43
|
+
max: { control: 'number', description: 'Maximum value (number & range)', table: { category: 'Number & range' } },
|
|
44
|
+
step: { control: 'number', description: 'Step value (number & range)', table: { category: 'Number & range' } },
|
|
45
|
+
// ── Choices ──
|
|
46
46
|
options: {
|
|
47
47
|
control: 'object',
|
|
48
|
-
description: '
|
|
48
|
+
description: 'Choices for select/checkbox/radio. For type="range", min/max/step props are preferred; options[0..2].value is a legacy fallback.',
|
|
49
|
+
table: { category: 'Choices' }
|
|
49
50
|
}
|
|
51
|
+
},
|
|
52
|
+
// Default args so the Controls panel opens populated. The single-attribute
|
|
53
|
+
// variations (error, message, hint, value, maxLength, icon, link, disabled,
|
|
54
|
+
// password, custom icon, single checkbox/radio) are all reachable by toggling
|
|
55
|
+
// these controls — that's why they no longer need their own stories.
|
|
56
|
+
args: {
|
|
57
|
+
name: 'username',
|
|
58
|
+
placeholder: 'Enter your username',
|
|
59
|
+
type: 'text',
|
|
60
|
+
required: true,
|
|
61
|
+
label: 'Username',
|
|
62
|
+
hint: 'Choose a unique handle',
|
|
63
|
+
message: 'Your username should be unique.',
|
|
64
|
+
icon: 'user',
|
|
65
|
+
link: { url: 'https://docs.ebrains.eu', label: 'Help' }
|
|
50
66
|
}
|
|
51
67
|
};
|
|
52
68
|
const Template = (args) => {
|
|
@@ -62,7 +78,6 @@ const Template = (args) => {
|
|
|
62
78
|
${args.required ? `required="${args.required}"` : ''}
|
|
63
79
|
${args.label ? `label="${args.label}"` : ''}
|
|
64
80
|
${args.hint ? `hint="${args.hint}"` : ''}
|
|
65
|
-
${args.link ? `link="${args.link}"` : ''}
|
|
66
81
|
${args.icon ? `icon="${args.icon}"` : ''}
|
|
67
82
|
${args.min !== undefined ? `min="${args.min}"` : ''}
|
|
68
83
|
${args.max !== undefined ? `max="${args.max}"` : ''}
|
|
@@ -78,36 +93,11 @@ const Template = (args) => {
|
|
|
78
93
|
></eds-input-field>
|
|
79
94
|
`;
|
|
80
95
|
};
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
type: 'text',
|
|
87
|
-
required: true,
|
|
88
|
-
label: 'Username'
|
|
89
|
-
};
|
|
90
|
-
export const PasswordInputWithHint = Template.bind({});
|
|
91
|
-
PasswordInputWithHint.args = {
|
|
92
|
-
name: 'password',
|
|
93
|
-
inputId: 'password-input',
|
|
94
|
-
placeholder: 'Enter your password',
|
|
95
|
-
type: 'password',
|
|
96
|
-
required: true,
|
|
97
|
-
label: 'Password',
|
|
98
|
-
hint: 'Must be at least 8 characters'
|
|
99
|
-
};
|
|
100
|
-
export const TextInputWithError = Template.bind({});
|
|
101
|
-
TextInputWithError.args = {
|
|
102
|
-
name: 'email',
|
|
103
|
-
inputId: 'email-input',
|
|
104
|
-
placeholder: 'Enter your email',
|
|
105
|
-
type: 'text',
|
|
106
|
-
required: true,
|
|
107
|
-
label: 'Email Address',
|
|
108
|
-
error: true,
|
|
109
|
-
errorMessage: 'Invalid email address'
|
|
110
|
-
};
|
|
96
|
+
// Control-driven text field. Everything the removed single-attribute stories
|
|
97
|
+
// showed — error/errorMessage, message, hint, value, maxLength, icon, link,
|
|
98
|
+
// disabled, password, custom icon — is reachable straight from the Controls
|
|
99
|
+
// panel on this story.
|
|
100
|
+
export const Default = Template.bind({});
|
|
111
101
|
export const CheckboxGroup = Template.bind({});
|
|
112
102
|
CheckboxGroup.args = {
|
|
113
103
|
name: 'preferences',
|
|
@@ -149,76 +139,38 @@ FileUpload.args = {
|
|
|
149
139
|
label: 'Upload Resume',
|
|
150
140
|
hint: 'PDF or Word Document'
|
|
151
141
|
};
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
};
|
|
161
|
-
|
|
162
|
-
|
|
142
|
+
// The dropzone is just another field `type` — same label/hint/error wrapper as
|
|
143
|
+
// every other input, with the drag-and-drop control swapped in.
|
|
144
|
+
export const Dropzone = Template.bind({});
|
|
145
|
+
Dropzone.args = {
|
|
146
|
+
name: 'attachments',
|
|
147
|
+
type: 'dropzone',
|
|
148
|
+
label: 'Attachments',
|
|
149
|
+
hint: 'Drag and drop files, or click to browse'
|
|
150
|
+
};
|
|
151
|
+
// Number input — kept separate because the min/max/step props apply ONLY to
|
|
152
|
+
// type="number" (they are ignored for every other type).
|
|
153
|
+
export const NumberInput = Template.bind({});
|
|
154
|
+
NumberInput.args = {
|
|
163
155
|
name: 'age',
|
|
164
156
|
placeholder: 'Enter your age',
|
|
165
157
|
type: 'number',
|
|
166
158
|
label: 'Age',
|
|
167
159
|
min: 5,
|
|
168
|
-
max:
|
|
160
|
+
max: 100,
|
|
169
161
|
step: 1,
|
|
170
162
|
required: true
|
|
171
163
|
};
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
type: 'text',
|
|
185
|
-
label: 'Username',
|
|
186
|
-
message: 'Your username should be unique.'
|
|
187
|
-
};
|
|
188
|
-
export const InputWithMaxLength = Template.bind({});
|
|
189
|
-
InputWithMaxLength.args = {
|
|
190
|
-
name: 'shortBio',
|
|
191
|
-
placeholder: 'Enter a short bio',
|
|
192
|
-
type: 'text',
|
|
193
|
-
label: 'Short Bio',
|
|
194
|
-
maxLength: 100
|
|
195
|
-
};
|
|
196
|
-
export const InputWithValue = Template.bind({});
|
|
197
|
-
InputWithValue.args = {
|
|
198
|
-
name: 'city',
|
|
199
|
-
placeholder: 'Enter your city',
|
|
200
|
-
type: 'text',
|
|
201
|
-
label: 'City',
|
|
202
|
-
value: 'San Francisco'
|
|
203
|
-
};
|
|
204
|
-
export const CheckboxSingle = Template.bind({});
|
|
205
|
-
CheckboxSingle.args = {
|
|
206
|
-
name: 'agreeTerms',
|
|
207
|
-
type: 'checkbox',
|
|
208
|
-
label: 'I agree to the terms and conditions',
|
|
209
|
-
required: true
|
|
210
|
-
};
|
|
211
|
-
export const RadioButtonSingle = Template.bind({});
|
|
212
|
-
RadioButtonSingle.args = {
|
|
213
|
-
name: 'subscribe',
|
|
214
|
-
type: 'radio',
|
|
215
|
-
label: 'Subscribe to newsletter'
|
|
216
|
-
};
|
|
217
|
-
export const InputWithCustomIcon = Template.bind({});
|
|
218
|
-
InputWithCustomIcon.args = {
|
|
219
|
-
name: 'search',
|
|
220
|
-
placeholder: 'Search...',
|
|
221
|
-
type: 'text',
|
|
222
|
-
label: 'Search',
|
|
223
|
-
icon: 'search'
|
|
164
|
+
// Range slider — uses the same min/max/step props as type="number".
|
|
165
|
+
// (Legacy fields may still pass these via options[0..2].value, which the
|
|
166
|
+
// component honors as a fallback.)
|
|
167
|
+
export const RangeSlider = Template.bind({});
|
|
168
|
+
RangeSlider.args = {
|
|
169
|
+
name: 'volume',
|
|
170
|
+
type: 'range',
|
|
171
|
+
label: 'Volume',
|
|
172
|
+
value: '40',
|
|
173
|
+
min: 0,
|
|
174
|
+
max: 100,
|
|
175
|
+
step: 5
|
|
224
176
|
};
|
|
@@ -60,7 +60,7 @@ export class EdsInputFile {
|
|
|
60
60
|
}
|
|
61
61
|
render() {
|
|
62
62
|
const effectiveLabel = this.buttonLabel || (this.multiple ? 'Choose Files' : 'Choose File');
|
|
63
|
-
return (h("div", { key: '
|
|
63
|
+
return (h("div", { key: 'e02d98fbc01dbe7a89eeb3010f966ed4a373ede6', class: "eds-input-file-container" }, h("input", { key: '2013826fda9453aade4528c9f051aac98780662f', ref: (el) => (this.fileInputRef = el), type: "file", id: this.inputId || this.name, name: this.name, class: "eds-input-file-hidden", disabled: this.disabled, required: this.required, multiple: this.multiple, accept: this.accept, onChange: this.handleFileSelect }), h("button", { key: 'f5e5cf91376ccb69b39ef3c9b11095aca8bfb728', type: "button", class: "eds-input-file-btn", onClick: this.handleButtonClick, disabled: this.disabled }, h("svg", { key: '563066375b42d0a8c14f14ac9fdfb587539f4e76', viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("path", { key: 'ebe5549fffa0c2453ab98891da75a464c09e9fa2', d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }), h("polyline", { key: '69036b82e15103e481770d0ef2c500b0dcad0399', points: "17 8 12 3 7 8" }), h("line", { key: 'e0531be95796ec6dc7f9fe359e4736a15a0e3640', x1: "12", y1: "3", x2: "12", y2: "15" })), effectiveLabel), this.selectedFiles.length > 0 && (h("div", { key: '62590fb46cee89d2524f1ede71c7af341c3e426a', class: "eds-input-file-chips" }, this.selectedFiles.map((item) => (h("div", { key: item.id, class: "eds-input-file-chip" }, this.getFileIcon(item.file.name), h("span", { class: "eds-input-file-chip-name" }, item.file.name), h("span", { class: "eds-input-file-chip-size" }, this.formatFileSize(item.file.size)), h("button", { type: "button", class: "eds-input-file-chip-remove", onClick: () => this.handleRemoveFile(item.id), disabled: this.disabled, "aria-label": `Remove ${item.file.name}` }, h("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2" }, h("line", { x1: "18", y1: "6", x2: "6", y2: "18" }), h("line", { x1: "6", y1: "6", x2: "18", y2: "18" }))))))))));
|
|
64
64
|
}
|
|
65
65
|
static get is() { return "eds-input-file"; }
|
|
66
66
|
static get encapsulation() { return "shadow"; }
|
|
@@ -290,7 +290,7 @@ export class EdsLink {
|
|
|
290
290
|
const labelClasses = this.hideLabelOnSmallScreen
|
|
291
291
|
? 'hidden lg:flex' // Tailwind example: hidden on small screens, visible on larger
|
|
292
292
|
: '';
|
|
293
|
-
return (h("a", { key: '
|
|
293
|
+
return (h("a", { key: 'd167c16280b7f0b4c1fcf14f0f0d3468111e715b', class: `${classes || ''}`, href: isInteractive ? safeUrl : undefined, target: this.external && isInteractive ? '_blank' : undefined, rel: this.external && isInteractive ? 'noopener noreferrer' : undefined, tabIndex: isInteractive ? 0 : -1, "aria-label": isIconOnly ? this.ariaLabel || 'Link' : undefined, "aria-disabled": this.disabled ? 'true' : undefined, "aria-current": this.current ? 'page' : undefined, role: this.disabled ? 'link' : undefined, download: this.download ? '' : undefined, onClick: (event) => this.handleClick(event), onKeyDown: (event) => this.handleKeyDown(event) }, h("span", { key: '000476a609888f5f848722015ce5e6137f26e371', class: "z-1 relative inline-flex items-center justify-center" }, this.renderLeftIcon(), this.label && (h("span", { key: '15232cde31d23c5a466189c69fbdb9db48f08274', class: `${labelClasses} ${this.icon ? (this.iconPos === 'right' ? (this.size === 'large' ? 'pr-4' : 'pr-2') : (this.size === 'large' ? 'pl-4' : 'pl-2')) : ''}` }, this.label)), this.renderRightIcon())));
|
|
294
294
|
}
|
|
295
295
|
static get is() { return "eds-link"; }
|
|
296
296
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import { ICONS } from "../../utils/icons";
|
|
2
|
+
// Derived from the single source of truth so the list never drifts.
|
|
3
|
+
// '' = no icon (the render treats it as falsy).
|
|
4
|
+
const ICON_OPTIONS = ['', ...Object.keys(ICONS).sort()];
|
|
1
5
|
export default {
|
|
2
6
|
title: 'Components/Link',
|
|
3
7
|
component: 'eds-link',
|
|
@@ -12,8 +16,9 @@ export default {
|
|
|
12
16
|
description: 'The intent style of the link'
|
|
13
17
|
},
|
|
14
18
|
icon: {
|
|
15
|
-
control: '
|
|
16
|
-
|
|
19
|
+
control: { type: 'select' },
|
|
20
|
+
options: ICON_OPTIONS,
|
|
21
|
+
description: 'The icon to be displayed next to the label (from the EDS icon set)'
|
|
17
22
|
},
|
|
18
23
|
iconSmall: {
|
|
19
24
|
control: 'boolean',
|
|
@@ -24,6 +29,10 @@ export default {
|
|
|
24
29
|
options: ['small', 'large'],
|
|
25
30
|
description: 'The size of the link'
|
|
26
31
|
},
|
|
32
|
+
pill: {
|
|
33
|
+
control: 'boolean',
|
|
34
|
+
description: 'If true, renders the link with a pill (fully rounded) shape'
|
|
35
|
+
},
|
|
27
36
|
external: {
|
|
28
37
|
control: 'boolean',
|
|
29
38
|
description: 'If true, marks the link as external'
|
|
@@ -40,10 +49,6 @@ export default {
|
|
|
40
49
|
control: 'text',
|
|
41
50
|
description: 'The URL for the link'
|
|
42
51
|
},
|
|
43
|
-
ariaLabel: {
|
|
44
|
-
control: 'text',
|
|
45
|
-
description: 'ARIA label for accessibility'
|
|
46
|
-
},
|
|
47
52
|
download: {
|
|
48
53
|
control: 'boolean',
|
|
49
54
|
description: 'If true, adds the download attribute to the link'
|
|
@@ -55,11 +60,11 @@ export default {
|
|
|
55
60
|
size: 'large',
|
|
56
61
|
icon: 'arrow-right',
|
|
57
62
|
iconSmall: false,
|
|
63
|
+
pill: true,
|
|
58
64
|
external: false,
|
|
59
65
|
current: false,
|
|
60
66
|
disabled: false,
|
|
61
67
|
url: 'https://example.com',
|
|
62
|
-
ariaLabel: 'Link to example',
|
|
63
68
|
download: false
|
|
64
69
|
}
|
|
65
70
|
};
|
|
@@ -72,11 +77,11 @@ export const Default = {
|
|
|
72
77
|
size="${args.size}"
|
|
73
78
|
icon="${args.icon}"
|
|
74
79
|
icon-small="${args.iconSmall}"
|
|
80
|
+
pill="${args.pill}"
|
|
75
81
|
external="${args.external}"
|
|
76
82
|
current="${args.current}"
|
|
77
83
|
disabled="${args.disabled}"
|
|
78
84
|
url="${args.url}"
|
|
79
|
-
aria-label="${args.ariaLabel}"
|
|
80
85
|
download="${args.download}">
|
|
81
86
|
</eds-link>
|
|
82
87
|
</div>`,
|
|
@@ -52,7 +52,7 @@ export class EdsLogo {
|
|
|
52
52
|
}
|
|
53
53
|
render() {
|
|
54
54
|
const logoContent = this.getLogo();
|
|
55
|
-
return (h("a", { key: '
|
|
55
|
+
return (h("a", { key: '3f8257c9481079f011278b114e13effe9057d823', href: this.href, onClick: () => this.handleClick(), class: "eds-logo-wrapper", "aria-label": this.label }, h("div", { key: '4dac45a1a0c38c6e1613995aad2005b41acac775', innerHTML: logoContent })));
|
|
56
56
|
}
|
|
57
57
|
static get is() { return "eds-logo"; }
|
|
58
58
|
static get encapsulation() { return "shadow"; }
|
|
@@ -26,9 +26,9 @@ export default {
|
|
|
26
26
|
},
|
|
27
27
|
args: {
|
|
28
28
|
title: 'Default Modal Title',
|
|
29
|
-
position: '
|
|
29
|
+
position: 'top',
|
|
30
30
|
truncate: 1,
|
|
31
|
-
inverseHeader:
|
|
31
|
+
inverseHeader: true
|
|
32
32
|
}
|
|
33
33
|
};
|
|
34
34
|
const Template = ({ title, position, truncate, inverseHeader }) => {
|
|
@@ -44,15 +44,15 @@ const Template = ({ title, position, truncate, inverseHeader }) => {
|
|
|
44
44
|
</eds-modal>
|
|
45
45
|
|
|
46
46
|
<!-- Button to control modal -->
|
|
47
|
-
<eds-button intent="
|
|
47
|
+
<eds-button intent="brand" size="large" label="Open Modal" pill="true" @click="${openModal}"></eds-button>
|
|
48
48
|
`;
|
|
49
49
|
};
|
|
50
50
|
export const Default = Template.bind({});
|
|
51
51
|
Default.args = {
|
|
52
52
|
title: 'Default Modal Title',
|
|
53
|
-
position: '
|
|
53
|
+
position: 'top',
|
|
54
54
|
truncate: 1,
|
|
55
|
-
inverseHeader:
|
|
55
|
+
inverseHeader: true
|
|
56
56
|
};
|
|
57
57
|
const TemplateWithForm = ({ title, position, truncate, inverseHeader }) => {
|
|
58
58
|
const openModal = () => {
|
|
@@ -74,7 +74,7 @@ const TemplateWithForm = ({ title, position, truncate, inverseHeader }) => {
|
|
|
74
74
|
|
|
75
75
|
<!-- Button to control modal -->
|
|
76
76
|
<eds-button
|
|
77
|
-
intent="
|
|
77
|
+
intent="brand" size="large" pill="true"
|
|
78
78
|
label="Open Modal with Form"
|
|
79
79
|
@click="${openModal}"
|
|
80
80
|
style="margin-right: 10px;"
|
|
@@ -84,6 +84,7 @@ const TemplateWithForm = ({ title, position, truncate, inverseHeader }) => {
|
|
|
84
84
|
export const ModalWithForm = TemplateWithForm.bind({});
|
|
85
85
|
ModalWithForm.args = {
|
|
86
86
|
title: 'Extended Form Modal',
|
|
87
|
-
position: '
|
|
88
|
-
truncate: 1
|
|
87
|
+
position: 'top',
|
|
88
|
+
truncate: 1,
|
|
89
|
+
inverseHeader: true
|
|
89
90
|
};
|
|
@@ -1,3 +1,35 @@
|
|
|
1
|
+
/* Keep the pills compact (next to each other) and shrink the scale block to
|
|
2
|
+
their width, so the 0/10 labels (justify-between below) line up with the
|
|
3
|
+
first/last pill instead of the full container edge. */
|
|
4
|
+
/* Breathing room above/below the 0…10 endpoint labels. */
|
|
5
|
+
.eds-nps__labels {
|
|
6
|
+
padding-top: 0.75rem;
|
|
7
|
+
padding-bottom: 0.5rem;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.eds-nps__scale {
|
|
11
|
+
display: block; /* own line, stacked under the question */
|
|
12
|
+
width: fit-content; /* but shrink to the pills' width so labels align */
|
|
13
|
+
max-width: 100%;
|
|
14
|
+
padding-top: 0.5rem; /* space between the question and the pills */
|
|
15
|
+
}
|
|
16
|
+
/* A bit more breathing room between the pills. */
|
|
17
|
+
#nps-buttons {
|
|
18
|
+
gap: 0.6rem;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/* Non-color cue for the single selected value (not just light-green vs neon):
|
|
22
|
+
a brand-green-dark ring + slight scale make the pick unmistakable. Keeps
|
|
23
|
+
eds-button untouched. */
|
|
24
|
+
.eds-nps__btn {
|
|
25
|
+
border-radius: 9999px;
|
|
26
|
+
transition: transform 0.15s ease-in-out;
|
|
27
|
+
}
|
|
28
|
+
.eds-nps__btn.is-selected {
|
|
29
|
+
/* Subtle scale only (no ring/border cue), like eds-rating. */
|
|
30
|
+
transform: scale(1.12);
|
|
31
|
+
}
|
|
32
|
+
|
|
1
33
|
.flex {
|
|
2
34
|
display: flex;
|
|
3
35
|
}
|
|
@@ -75,14 +75,14 @@ export class EdsNps {
|
|
|
75
75
|
}
|
|
76
76
|
render() {
|
|
77
77
|
const count = this.max - this.min + 1;
|
|
78
|
-
return (h("div", { key: '
|
|
78
|
+
return (h("div", { key: '412ddeabf0cc97829202063af25f17e3309b0754', class: "eds-nps" }, h("eds-input-label", { key: '100a47e710fa75d6a5761a87ca68e8bc8910e248', id: "nps-question", name: "nps-question", label: this.question }), h("div", { key: '9a7a63112e17f4c725005e1ae8e42c98107db7c4', class: "eds-nps__scale" }, h("div", { key: '501029dad573cd31d956ae3cae67f2db9f2649f1', id: "nps-buttons", role: "radiogroup", "aria-labelledby": "nps-question", onKeyDown: this.handleKeyNav, class: "flex flex-wrap gap-2 my-8" }, Array.from({ length: count }, (_, i) => {
|
|
79
79
|
const val = this.min + i;
|
|
80
80
|
const isSelected = val === this.internalValue;
|
|
81
81
|
const tabIndex = isSelected || (this.internalValue == null && i === 0) ? 0 : -1;
|
|
82
|
-
return (h("div", { class: "flex", key: val }, h("eds-button", { ref: (el) => (this.btnRefs[i] = el), size: "large", role: "radio", "aria-checked": isSelected ? 'true' : 'false', "aria-label": `${val}`, onClick: () => this.onSelect(val), tabIndex: tabIndex, intent: isSelected ? 'brand' : '
|
|
82
|
+
return (h("div", { class: "flex", key: val }, h("eds-button", { ref: (el) => (this.btnRefs[i] = el), size: "large", role: "radio", "aria-checked": isSelected ? 'true' : 'false', "aria-label": `${val}`, onClick: () => this.onSelect(val), tabIndex: tabIndex, intent: isSelected ? 'brand' : 'brandLight', class: isSelected ? 'eds-nps__btn is-selected' : 'eds-nps__btn', "extra-class": "!block !px-0 w-full", label: `${val}`, pill: true, onFocus: () => {
|
|
83
83
|
this.internalValue = val;
|
|
84
84
|
} })));
|
|
85
|
-
})), h("div", { key: '
|
|
85
|
+
})), h("div", { key: 'aa15457591f1edf6e59eed384bcfbb25d49c9fd5', class: "flex justify-between eds-nps__labels" }, h("span", { key: 'a468b290491e368e3084f17ce40c6aa39e00ad3a', class: "f-ui-04 text-light ml-4" }, this.leftLabel), h("span", { key: '146b9eea4bbc360f7765e69e319738c77beae69d', class: "f-ui-04 text-light mr-4" }, this.rightLabel)))));
|
|
86
86
|
}
|
|
87
87
|
static get is() { return "eds-nps"; }
|
|
88
88
|
static get encapsulation() { return "shadow"; }
|
|
@@ -248,7 +248,7 @@ export class EdsPagination {
|
|
|
248
248
|
}
|
|
249
249
|
render() {
|
|
250
250
|
const navigableIndex = -1; // Track index for keyboard navigation
|
|
251
|
-
return (h("div", { key: '
|
|
251
|
+
return (h("div", { key: '5c11fd306f0ebf47a452e44d633e18b2e3860d78' }, this.total > 0 && this.mode === 'default' && (h("p", { key: 'fe8b7f7b6c7785152f1edd90a750f4a9a7e2768b', class: "f-ui-03 text-light mb-28 w-full text-center", "aria-live": "polite", id: "pagination-info" }, h("span", { key: '5e2c67535dbf765dc662770164404f0de69315a1', class: "text-light sr-only" }, "Results:"), this.pageResults())), this.mode === 'navigator' || (this.lastPage && this.lastPage > 1) ? (h("nav", { "aria-label": "Pagination Navigation", "aria-describedby": this.mode === 'default' ? 'pagination-info' : undefined, onKeyDown: this.handleKeyDown }, h("ul", { class: "flex items-center justify-center gap-x-8", role: "list" }, h("li", { class: "mr-auto" }, this.useButtons ? (h("div", { class: "pagination-button-wrapper", onFocus: () => this.handleItemFocus(navigableIndex) }, h("eds-button", { label: this.prevLabel, disabled: this.mode === 'navigator' ? !this.prevUrl : this.isFirstPage(), "aria-label": "Go to previous page", icon: "chevron-left", "icon-pos": "left", size: "small", "icon-small": "true", intent: "ghost", "extra-class": "!p-8 lg:!pr-12 pagination-button", onClick: (event) => {
|
|
252
252
|
if (this.mode === 'default' && !this.isFirstPage()) {
|
|
253
253
|
this.handlePageClick(event, (this.currentPage || 1) - 1);
|
|
254
254
|
}
|
|
@@ -257,7 +257,7 @@ export class EdsPagination {
|
|
|
257
257
|
: this.isFirstPage()
|
|
258
258
|
? '#'
|
|
259
259
|
: this.generateLink(this.currentPage - 1).url, disabled: this.mode === 'navigator' ? !this.prevUrl : this.isFirstPage(), "aria-label": "Go to previous page", icon: "chevron-left", "icon-pos": "left", size: "small", "icon-small": "true", intent: "strong", "hide-label-on-small-screen": true, class: "!p-8 lg:!pr-12" }))), this.mode === 'default' &&
|
|
260
|
-
this.links.map((link, index) => (h("li", { key: index, class: "f-ui-02 flex h-36 items-center justify-center" }, typeof link === 'string' ? (h("span", { class: "flex items-center justify-center", "aria-hidden": "true" }, link)) : this.useButtons ? (h("div", { class: "pagination-button-wrapper", onFocus: () => this.handleItemFocus(navigableIndex) }, h("eds-button", { label: link.label, "aria-label": link.current ? `Current page, page ${link.label}` : `Go to page ${link.label}`, "aria-current": link.current ? 'page' : undefined, size: "small", "extra-class": "!p-8 pagination-button", intent: link.current ? '
|
|
260
|
+
this.links.map((link, index) => (h("li", { key: index, class: "f-ui-02 flex h-36 items-center justify-center" }, typeof link === 'string' ? (h("span", { class: "flex items-center justify-center", "aria-hidden": "true" }, link)) : this.useButtons ? (h("div", { class: "pagination-button-wrapper", onFocus: () => this.handleItemFocus(navigableIndex) }, h("eds-button", { label: link.label, "aria-label": link.current ? `Current page, page ${link.label}` : `Go to page ${link.label}`, "aria-current": link.current ? 'page' : undefined, size: "small", "extra-class": "!p-8 pagination-button", intent: link.current ? 'brand' : 'ghost', onClick: (event) => this.handlePageClick(event, parseInt(link.label)) }))) : (h("eds-link", { url: link.url, "aria-label": link.ariaLabel, label: link.label, current: link.current, "aria-current": link.current ? 'page' : undefined, size: "small", class: "!p-8", intent: link.current ? 'primary' : 'secondary', onClick: (event) => this.handlePageClick(event, parseInt(link.label)) }))))), h("li", { class: "ml-auto" }, this.useButtons ? (h("div", { class: "pagination-button-wrapper", onFocus: () => this.handleItemFocus(navigableIndex) }, h("eds-button", { label: this.nextLabel, disabled: this.mode === 'navigator' ? !this.nextUrl : this.isLastPage(), "aria-label": "Go to next page", size: "small", "icon-small": "true", icon: "chevron-right", intent: "ghost", "extra-class": "!p-8 lg:!pl-12 pagination-button", onClick: (event) => {
|
|
261
261
|
if (this.mode === 'default' && !this.isLastPage()) {
|
|
262
262
|
this.handlePageClick(event, (this.currentPage || 1) + 1);
|
|
263
263
|
}
|