From d327a3413f8b74c12d3bdf8d45d9abb15e995021 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 17 Apr 2024 14:50:50 +0200 Subject: [PATCH] :recycle: refactor(select): create new component dropdown (#1353) * Create PR for #1349 * :recycle: refactor(select): create option component (#1356) * Create PR for #1354 * add new component option * add new component option * fix a11y issues * add interface of the component * add output for visuals * adjust ci * update gitignore * update base images * adjust colors and sass vars * update base images * merge --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Gery Hirschfeld Co-authored-by: hirsch88 * :recycle: refactor(select): create new component option-list (#1357) * Create PR for #1355 * add option list component * update base images * add labelledby for a11y * add changeset --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Gery Hirschfeld Co-authored-by: hirsch88 * add first dropdown draft * update spinner * refactor in to utils * format files * update with prop options * add docs * format files * support testing * chore: Merge branch 'main' into refactor/issue-1349 * adjust component testing * update component testing * add component test for dropdown * update dropdown * update dropdown * update dropdown * autocomplete * rename * update dropdown * update dropdown * format files * add a11y test * add viusal tests * update base images * format files * update angular output * add testing lib migration * update docs * add required * fix tests * fix tests * update docs * chores * create angular e2e test * create angular e2e test * fix doc styles * update base images * update docs * fix chip hover * remove old styles * adjust invalid and disabled with chips * fix z-index * update multiple always with checkbox and improve form submit * update multiple always with checkbox and improve form submit * hide native select for a11y * fix checkbox issue * add log for visual type * fix visual * update base images * update base images * finish auto-fill * fix safari autofill --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Gery Hirschfeld Co-authored-by: hirsch88 --- .changeset/cuddly-horses-teach.md | 5 + .changeset/modern-bags-worry.md | 5 + .changeset/ten-teachers-appear.md | 5 + .../components/bal-dropdown/bal-dropdown.mdx | 119 ++++ .../bal-dropdown/bal-dropdown.stories.ts | 166 ++++++ .../components/bal-dropdown/testing.md | 32 ++ .../components/bal-dropdown/theming.md | 46 ++ .../components/bal-option-list/testing.md | 12 + .../components/bal-option-list/theming.md | 0 docs/stories/components/bal-option/testing.md | 12 + docs/stories/components/bal-option/theming.md | 32 ++ e2e/cypress/component/bal-dropdown.cy.ts | 484 ++++++++++++++++ e2e/cypress/component/bal-option-list.cy.ts | 24 + e2e/cypress/e2e/a11y/bal-dropdown.a11y.cy.ts | 20 + .../e2e/a11y/bal-option-list.a11y.cy.ts | 9 + e2e/cypress/e2e/a11y/bal-option.a11y.cy.ts | 13 + e2e/cypress/e2e/base/bal-dropdown.cy.ts | 44 ++ .../e2e/visual/bal-dropdown.visual.cy.ts | 77 +++ .../e2e/visual/bal-option-list.visual.cy.ts | 9 + .../e2e/visual/bal-option.visual.cy.ts | 17 + .../dropdown-clearable-empty-closed.png | Bin 0 -> 3214 bytes .../dropdown-clearable-empty-open.png | Bin 0 -> 2822 bytes .../dropdown-clearable-empty-selected.png | Bin 0 -> 2276 bytes .../dropdown-desktop-basic-empty-closed.png | Bin 0 -> 2750 bytes .../dropdown-desktop-basic-empty-open.png | Bin 0 -> 2954 bytes .../dropdown-desktop-basic-empty-selected.png | Bin 0 -> 1915 bytes ...opdown-desktop-form-field-empty-closed.png | Bin 0 -> 4702 bytes ...dropdown-desktop-form-field-empty-open.png | Bin 0 -> 3795 bytes ...down-desktop-long-content-empty-closed.png | Bin 0 -> 17012 bytes ...opdown-desktop-long-content-empty-open.png | Bin 0 -> 17197 bytes ...wn-desktop-multiple-chips-empty-closed.png | Bin 0 -> 23293 bytes ...down-desktop-multiple-chips-empty-open.png | Bin 0 -> 23581 bytes ...dropdown-desktop-multiple-empty-closed.png | Bin 0 -> 2822 bytes .../dropdown-desktop-multiple-empty-open.png | Bin 0 -> 3040 bytes ...opdown-desktop-multiple-empty-selected.png | Bin 0 -> 2885 bytes .../dropdown-disabled-empty-closed.png | Bin 0 -> 8680 bytes .../dropdown-invalid-empty-closed.png | Bin 0 -> 8491 bytes .../dropdown-loading-empty-closed.png | Bin 0 -> 2296 bytes .../dropdown-mobile-basic-empty-closed.png | Bin 0 -> 2523 bytes .../dropdown-mobile-basic-empty-open.png | Bin 0 -> 2730 bytes .../dropdown-mobile-basic-empty-selected.png | Bin 0 -> 1728 bytes ...ropdown-mobile-form-field-empty-closed.png | Bin 0 -> 4289 bytes .../dropdown-mobile-form-field-empty-open.png | Bin 0 -> 3821 bytes ...pdown-mobile-long-content-empty-closed.png | Bin 0 -> 6250 bytes ...ropdown-mobile-long-content-empty-open.png | Bin 0 -> 6436 bytes ...own-mobile-multiple-chips-empty-closed.png | Bin 0 -> 23592 bytes ...pdown-mobile-multiple-chips-empty-open.png | Bin 0 -> 23700 bytes .../dropdown-mobile-multiple-empty-closed.png | Bin 0 -> 2593 bytes .../dropdown-mobile-multiple-empty-open.png | Bin 0 -> 2812 bytes ...ropdown-mobile-multiple-empty-selected.png | Bin 0 -> 2659 bytes .../option-basic.png | Bin 0 -> 20925 bytes .../bal-option.visual.cy.ts/option-basic.png | Bin 0 -> 51059 bytes .../option-listbox-checkbox.png | Bin 0 -> 10007 bytes .../option-listbox.png | Bin 0 -> 8525 bytes e2e/cypress/snapshots/report.html | 21 - e2e/cypress/support/lib/visuals/command.ts | 7 + e2e/project.json | 3 +- packages/angular-legacy/src/app-initialize.ts | 9 +- packages/angular-module/src/app-initialize.ts | 9 +- packages/angular/src/app-initialize.ts | 9 +- packages/angular/src/bundles.ts | 9 + .../angular/src/components/bal-dropdown.ts | 75 +++ packages/angular/src/components/index.ts | 1 + .../core/config/stencil.bindings.angular.ts | 2 + packages/core/src/components.d.ts | 456 ++++++++++++++- .../components/bal-checkbox/bal-checkbox.tsx | 8 +- .../bal-checkbox/bal-radio-checkbox.vars.sass | 12 + .../bal-checkbox/radio-checkbox.sass | 16 +- .../src/components/bal-close/bal-close.tsx | 1 + .../components/bal-date-calendar__list.tsx | 2 +- .../bal-dropdown/bal-dropdown.interfaces.ts | 22 + .../components/bal-dropdown/bal-dropdown.sass | 149 +++++ .../components/bal-dropdown/bal-dropdown.tsx | 520 +++++++++++++++++ .../bal-dropdown/bal-dropdown.vars.sass | 74 +++ .../bal-dropdown/test/bal-dropdown.a11y.html | 34 ++ .../test/bal-dropdown.auto-fill.html | 59 ++ .../bal-dropdown/test/bal-dropdown.cy.html | 193 +++++++ .../test/bal-dropdown.visual.html | 211 +++++++ .../src/components/bal-field/bal-field.tsx | 16 +- .../bal-option-list.interfaces.ts | 10 + .../bal-option-list/bal-option-list.sass | 15 + .../bal-option-list/bal-option-list.tsx | 537 ++++++++++++++++++ .../bal-option-list/bal-option-list.vars.sass | 0 .../test/bal-option-list.a11y.html | 27 + .../test/bal-option-list.visual.html | 66 +++ .../bal-option/bal-option.interfaces.ts | 28 + .../src/components/bal-option/bal-option.sass | 121 ++++ .../src/components/bal-option/bal-option.tsx | 245 ++++++++ .../bal-option/bal-option.vars.sass | 42 ++ .../bal-option/test/bal-option.a11y.html | 28 + .../bal-option/test/bal-option.visual.html | 57 ++ .../src/components/bal-select/bal-select.tsx | 4 +- .../bal-select/test/bal-select.cy.html | 7 +- .../bal-spinner/bal-spinner.interfaces.ts | 11 + .../components/bal-spinner/bal-spinner.sass | 34 ++ .../components/bal-spinner/bal-spinner.tsx | 68 ++- .../bal-spinner/test/bal-spinner.cy.html | 8 +- .../core/src/components/bal-tag/bal-tag.sass | 4 +- .../src/components/bal-tag/bal-tag.vars.sass | 4 + packages/core/src/index.ts | 1 + packages/core/src/interfaces.d.ts | 4 + packages/core/src/utils/aria.ts | 1 + .../core/src/utils/config/config.default.ts | 1 + packages/core/src/utils/config/config.ts | 9 + .../core/src/utils/config/config.types.ts | 2 + packages/core/src/utils/dropdown/auto-fill.ts | 47 ++ packages/core/src/utils/dropdown/component.ts | 39 ++ .../core/src/utils/dropdown/dropdown.i18n.ts | 60 ++ packages/core/src/utils/dropdown/events.ts | 57 ++ packages/core/src/utils/dropdown/filters.ts | 11 + packages/core/src/utils/dropdown/focus.ts | 31 + .../core/src/utils/dropdown/form-submit.tsx | 88 +++ packages/core/src/utils/dropdown/icon.tsx | 54 ++ packages/core/src/utils/dropdown/index.ts | 13 + packages/core/src/utils/dropdown/input.tsx | 102 ++++ .../core/src/utils/dropdown/option-list.tsx | 73 +++ packages/core/src/utils/dropdown/option.tsx | 90 +++ packages/core/src/utils/dropdown/popup.ts | 52 ++ packages/core/src/utils/dropdown/value.tsx | 157 +++++ packages/core/stencil.config.ts | 4 + packages/react/src/index.ts | 5 +- .../src/commands/custom/bal-select.command.ts | 36 +- .../src/commands/custom/get.command.ts | 20 +- packages/testing/src/commands/helpers.ts | 1 + .../src/commands/overrides/blur.command.ts | 5 + .../src/commands/overrides/clear.command.ts | 5 + .../src/commands/overrides/click.command.ts | 20 +- .../src/commands/overrides/focus.command.ts | 5 + .../src/commands/overrides/select.command.ts | 27 +- .../src/commands/overrides/should.command.ts | 46 ++ .../src/commands/overrides/type.command.ts | 15 +- packages/testing/src/selectors/index.ts | 18 + packages/vue/src/plugin.ts | 5 +- resources/data/tags.json | 2 + .../e2e/bal-dropdown-multiple.spec.cy.ts | 39 ++ .../app/cypress/e2e/bal-dropdown.spec.cy.ts | 39 ++ .../angular/base/app/src/app/app.component.ts | 6 + .../app/form-components/dropdown.component.ts | 63 ++ 138 files changed, 5527 insertions(+), 91 deletions(-) create mode 100644 .changeset/cuddly-horses-teach.md create mode 100644 .changeset/modern-bags-worry.md create mode 100644 .changeset/ten-teachers-appear.md create mode 100644 docs/stories/components/bal-dropdown/bal-dropdown.mdx create mode 100644 docs/stories/components/bal-dropdown/bal-dropdown.stories.ts create mode 100644 docs/stories/components/bal-dropdown/testing.md create mode 100644 docs/stories/components/bal-dropdown/theming.md create mode 100644 docs/stories/components/bal-option-list/testing.md create mode 100644 docs/stories/components/bal-option-list/theming.md create mode 100644 docs/stories/components/bal-option/testing.md create mode 100644 docs/stories/components/bal-option/theming.md create mode 100644 e2e/cypress/component/bal-dropdown.cy.ts create mode 100644 e2e/cypress/component/bal-option-list.cy.ts create mode 100644 e2e/cypress/e2e/a11y/bal-dropdown.a11y.cy.ts create mode 100644 e2e/cypress/e2e/a11y/bal-option-list.a11y.cy.ts create mode 100644 e2e/cypress/e2e/a11y/bal-option.a11y.cy.ts create mode 100644 e2e/cypress/e2e/base/bal-dropdown.cy.ts create mode 100644 e2e/cypress/e2e/visual/bal-dropdown.visual.cy.ts create mode 100644 e2e/cypress/e2e/visual/bal-option-list.visual.cy.ts create mode 100644 e2e/cypress/e2e/visual/bal-option.visual.cy.ts create mode 100644 e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-clearable-empty-closed.png create mode 100644 e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-clearable-empty-open.png create mode 100644 e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-clearable-empty-selected.png create mode 100644 e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-desktop-basic-empty-closed.png create mode 100644 e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-desktop-basic-empty-open.png create mode 100644 e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-desktop-basic-empty-selected.png create mode 100644 e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-desktop-form-field-empty-closed.png create mode 100644 e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-desktop-form-field-empty-open.png create mode 100644 e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-desktop-long-content-empty-closed.png create mode 100644 e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-desktop-long-content-empty-open.png create mode 100644 e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-desktop-multiple-chips-empty-closed.png create mode 100644 e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-desktop-multiple-chips-empty-open.png create mode 100644 e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-desktop-multiple-empty-closed.png create mode 100644 e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-desktop-multiple-empty-open.png create mode 100644 e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-desktop-multiple-empty-selected.png create mode 100644 e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-disabled-empty-closed.png create mode 100644 e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-invalid-empty-closed.png create mode 100644 e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-loading-empty-closed.png create mode 100644 e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-mobile-basic-empty-closed.png create mode 100644 e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-mobile-basic-empty-open.png create mode 100644 e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-mobile-basic-empty-selected.png create mode 100644 e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-mobile-form-field-empty-closed.png create mode 100644 e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-mobile-form-field-empty-open.png create mode 100644 e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-mobile-long-content-empty-closed.png create mode 100644 e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-mobile-long-content-empty-open.png create mode 100644 e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-mobile-multiple-chips-empty-closed.png create mode 100644 e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-mobile-multiple-chips-empty-open.png create mode 100644 e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-mobile-multiple-empty-closed.png create mode 100644 e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-mobile-multiple-empty-open.png create mode 100644 e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-mobile-multiple-empty-selected.png create mode 100644 e2e/cypress/snapshots/base/visual/bal-option-list.visual.cy.ts/option-basic.png create mode 100644 e2e/cypress/snapshots/base/visual/bal-option.visual.cy.ts/option-basic.png create mode 100644 e2e/cypress/snapshots/base/visual/bal-option.visual.cy.ts/option-listbox-checkbox.png create mode 100644 e2e/cypress/snapshots/base/visual/bal-option.visual.cy.ts/option-listbox.png delete mode 100644 e2e/cypress/snapshots/report.html create mode 100644 packages/angular/src/components/bal-dropdown.ts create mode 100644 packages/core/src/components/bal-dropdown/bal-dropdown.interfaces.ts create mode 100644 packages/core/src/components/bal-dropdown/bal-dropdown.sass create mode 100644 packages/core/src/components/bal-dropdown/bal-dropdown.tsx create mode 100644 packages/core/src/components/bal-dropdown/bal-dropdown.vars.sass create mode 100644 packages/core/src/components/bal-dropdown/test/bal-dropdown.a11y.html create mode 100644 packages/core/src/components/bal-dropdown/test/bal-dropdown.auto-fill.html create mode 100644 packages/core/src/components/bal-dropdown/test/bal-dropdown.cy.html create mode 100644 packages/core/src/components/bal-dropdown/test/bal-dropdown.visual.html create mode 100644 packages/core/src/components/bal-option-list/bal-option-list.interfaces.ts create mode 100644 packages/core/src/components/bal-option-list/bal-option-list.sass create mode 100644 packages/core/src/components/bal-option-list/bal-option-list.tsx create mode 100644 packages/core/src/components/bal-option-list/bal-option-list.vars.sass create mode 100644 packages/core/src/components/bal-option-list/test/bal-option-list.a11y.html create mode 100644 packages/core/src/components/bal-option-list/test/bal-option-list.visual.html create mode 100644 packages/core/src/components/bal-option/bal-option.interfaces.ts create mode 100644 packages/core/src/components/bal-option/bal-option.sass create mode 100644 packages/core/src/components/bal-option/bal-option.tsx create mode 100644 packages/core/src/components/bal-option/bal-option.vars.sass create mode 100644 packages/core/src/components/bal-option/test/bal-option.a11y.html create mode 100644 packages/core/src/components/bal-option/test/bal-option.visual.html create mode 100644 packages/core/src/components/bal-spinner/bal-spinner.interfaces.ts create mode 100644 packages/core/src/utils/aria.ts create mode 100644 packages/core/src/utils/dropdown/auto-fill.ts create mode 100644 packages/core/src/utils/dropdown/component.ts create mode 100644 packages/core/src/utils/dropdown/dropdown.i18n.ts create mode 100644 packages/core/src/utils/dropdown/events.ts create mode 100644 packages/core/src/utils/dropdown/filters.ts create mode 100644 packages/core/src/utils/dropdown/focus.ts create mode 100644 packages/core/src/utils/dropdown/form-submit.tsx create mode 100644 packages/core/src/utils/dropdown/icon.tsx create mode 100644 packages/core/src/utils/dropdown/index.ts create mode 100644 packages/core/src/utils/dropdown/input.tsx create mode 100644 packages/core/src/utils/dropdown/option-list.tsx create mode 100644 packages/core/src/utils/dropdown/option.tsx create mode 100644 packages/core/src/utils/dropdown/popup.ts create mode 100644 packages/core/src/utils/dropdown/value.tsx create mode 100644 test/angular/base/app/cypress/e2e/bal-dropdown-multiple.spec.cy.ts create mode 100644 test/angular/base/app/cypress/e2e/bal-dropdown.spec.cy.ts create mode 100644 test/angular/base/app/src/app/form-components/dropdown.component.ts diff --git a/.changeset/cuddly-horses-teach.md b/.changeset/cuddly-horses-teach.md new file mode 100644 index 0000000000..9f23b05d31 --- /dev/null +++ b/.changeset/cuddly-horses-teach.md @@ -0,0 +1,5 @@ +--- +'@baloise/ds-core': minor +--- + +**dropdown**: add new component to replace bal-select diff --git a/.changeset/modern-bags-worry.md b/.changeset/modern-bags-worry.md new file mode 100644 index 0000000000..ed1cab50ca --- /dev/null +++ b/.changeset/modern-bags-worry.md @@ -0,0 +1,5 @@ +--- +'@baloise/ds-core': minor +--- + +**option-list**: new child component of drop-down components. Option list component will be used by drop-down, combobox and autocomplete. diff --git a/.changeset/ten-teachers-appear.md b/.changeset/ten-teachers-appear.md new file mode 100644 index 0000000000..362cefa739 --- /dev/null +++ b/.changeset/ten-teachers-appear.md @@ -0,0 +1,5 @@ +--- +'@baloise/ds-core': minor +--- + +**option**: new child component of option-list. Option list component will be used by drop-down, combobox and autocomplete. diff --git a/docs/stories/components/bal-dropdown/bal-dropdown.mdx b/docs/stories/components/bal-dropdown/bal-dropdown.mdx new file mode 100644 index 0000000000..053265c21a --- /dev/null +++ b/docs/stories/components/bal-dropdown/bal-dropdown.mdx @@ -0,0 +1,119 @@ +import { Canvas, Meta, Markdown } from '@storybook/blocks' +import { Banner, Lead, PlaygroundBar, StoryHeading, Footer } from '../../../.storybook/blocks' +import * as DropDownStories from './bal-dropdown.stories' + + + + + + + +**Drop-Down** components are used to gather user-provided information from a range of options. + +The `bal-dropdown` component serves as a alternative to a traditional ` + +`, + ), +}) diff --git a/docs/stories/components/bal-dropdown/testing.md b/docs/stories/components/bal-dropdown/testing.md new file mode 100644 index 0000000000..7e2fe1906e --- /dev/null +++ b/docs/stories/components/bal-dropdown/testing.md @@ -0,0 +1,32 @@ +## Testing + +The Baloise Design System provides a collection of custom cypress commands for the components. Moreover, some basic cypress commands like `should` or `click` have been overridden to work with the components. + +Go to testing guide + + + +```ts +describe('Dropdown', () => { + it('should ...', () => { + cy.getByPlaceholder('Pick a color').click() + cy.getByRole('option', { name: 'Red' }).click() + + cy.getByPlaceholder('Pick a color').should('be.disabled') + cy.getByPlaceholder('Pick a color').should('have.value', 'Red') + }) +}) +``` + + + + +### Selectors + +| Selector | Element | +| ------------------ | ------------------------------------ | +| `dropdown.input` | Native input element. | +| `dropdown.options` | Select option. | +| `dropdown.trigger` | Trigger to open and close the popup. | +| `dropdown.chips` | Multi select tag . | + diff --git a/docs/stories/components/bal-dropdown/theming.md b/docs/stories/components/bal-dropdown/theming.md new file mode 100644 index 0000000000..901672d6a4 --- /dev/null +++ b/docs/stories/components/bal-dropdown/theming.md @@ -0,0 +1,46 @@ +## Theming + +The component can be customization by changing the CSS variables. + +Go to theming guide + + + + + + + +### Variables​ + +| Variable | +| ---------------------------------------------------------------------- | +| `--bal-dropdown-control-background` | +| `--bal-dropdown-control-background-hover` | +| `--bal-dropdown-control-background-invalid` | +| `--bal-dropdown-control-background-disabled` | +| `--bal-dropdown-control-input-background` | +| `--bal-dropdown-control-native-input-background` | +| `--bal-dropdown-control-native-input-background-hover` | +| `--bal-dropdown-control-input-inverted-footer-background` | +| `--bal-dropdown-control-input-inverted-footer-background-hover` | +| `--bal-dropdown-control-input-multiple-background` | +| `--bal-dropdown-control-input-multiple-background-read-only-selection` | +| `--bal-dropdown-control-input-option-background` | +| `--bal-dropdown-control-input-option-background-selected` | +| `--bal-dropdown-control-input-option-background-focused` | +| `--bal-dropdown-control-input-option-background-hover` | +| `--bal-dropdown-control-border-radius` | +| `--bal-dropdown-popover-border-color` | +| `--bal-dropdown-control-border-color` | +| `--bal-dropdown-control-border-color-focused` | +| `--bal-dropdown-control-border-color-hover` | +| `--bal-dropdown-control-border-color-invalid` | +| `--bal-dropdown-control-border-color-disabled` | +| `--bal-dropdown-control-border-color-focus-within` | +| `--bal-dropdown-option-border-top-color` | +| `--bal-dropdown-popover-empty-text-color` | +| `--bal-dropdown-control-text-color` | +| `--bal-dropdown-control-text-color-focused` | +| `--bal-dropdown-input-text-color-disabled` | +| `--bal-dropdown-control-inverted-footer-native-input-text-color` | +| `--bal-dropdown-option-content-label-text-color` | diff --git a/docs/stories/components/bal-option-list/testing.md b/docs/stories/components/bal-option-list/testing.md new file mode 100644 index 0000000000..98d460be9e --- /dev/null +++ b/docs/stories/components/bal-option-list/testing.md @@ -0,0 +1,12 @@ +## Testing + +The Baloise Design System provides a collection of custom cypress commands for the components. Moreover, some basic cypress commands like `should` or `click` have been overridden to work with the components. + +Go to testing guide + + + + + + + diff --git a/docs/stories/components/bal-option-list/theming.md b/docs/stories/components/bal-option-list/theming.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/stories/components/bal-option/testing.md b/docs/stories/components/bal-option/testing.md new file mode 100644 index 0000000000..98d460be9e --- /dev/null +++ b/docs/stories/components/bal-option/testing.md @@ -0,0 +1,12 @@ +## Testing + +The Baloise Design System provides a collection of custom cypress commands for the components. Moreover, some basic cypress commands like `should` or `click` have been overridden to work with the components. + +Go to testing guide + + + + + + + diff --git a/docs/stories/components/bal-option/theming.md b/docs/stories/components/bal-option/theming.md new file mode 100644 index 0000000000..a3fa61a158 --- /dev/null +++ b/docs/stories/components/bal-option/theming.md @@ -0,0 +1,32 @@ +## Theming + +The component can be customization by changing the CSS variables. + +Go to theming guide + + + + + + + +### Variables​ + +| Variable | +| ------------------------------------------ | +| `--bal-option-padding-x` | +| `--bal-option-min-height` | +| `--bal-option-background` | +| `--bal-option-background-hovered` | +| `--bal-option-background-selected` | +| `--bal-option-background-selected-hovered` | +| `--bal-option-background-invalid` | +| `--bal-option-background-invalid-hovered` | +| `--bal-option-border-width` | +| `--bal-option-border-color` | +| `--bal-option-font-family` | +| `--bal-option-font-weight` | +| `--bal-option-line-height` | +| `--bal-option-text-hovered` | +| `--bal-option-text-pressed` | +| `--bal-option-text-disabled` | diff --git a/e2e/cypress/component/bal-dropdown.cy.ts b/e2e/cypress/component/bal-dropdown.cy.ts new file mode 100644 index 0000000000..7594a28e25 --- /dev/null +++ b/e2e/cypress/component/bal-dropdown.cy.ts @@ -0,0 +1,484 @@ +import { newBalOption } from '../../generated/components' +import { Components } from '../support/utils' + +describe('bal-dropdown', () => { + let onBalChangeSpy: Cypress.Agent + + let options = [] + let events = { + balChange: onBalChangeSpy, + } + + const template = ` + Green + Red + Yellow + Purple +` + + beforeEach(() => { + options = [ + newBalOption({ value: 'vGreen', label: 'Green' }), + newBalOption({ value: 'vRed', label: 'Red' }), + newBalOption({ value: 'vPurple', label: 'Purple' }), + newBalOption({ value: 'vYellow', label: 'Yellow' }), + ] + onBalChangeSpy = cy.spy().as('balChange') + events = { + balChange: onBalChangeSpy, + } + }) + + context('template options', () => { + it('should select option and emit change event', () => { + cy.mount(template, { + props: { + placeholder: 'Pick a color', + }, + events, + }) + + cy.getByPlaceholder('Pick a color').click() + cy.getByRole('option', { name: 'Red' }).click() + cy.get('@balChange').should('have.been.calledOnce') + cy.get('@balChange').shouldHaveEventDetail('vRed') + cy.getByPlaceholder('Pick a color').should('have.value', 'Red') + }) + + it('should select multiple options and emit 2 change events', () => { + cy.mount(template, { + props: { + placeholder: 'Pick a color', + multiple: true, + }, + events, + }) + + cy.getByPlaceholder('Pick a color').click() + cy.getByRole('option', { name: 'Red' }).click() + cy.getByRole('option', { name: 'Purple' }).click() + cy.get('@balChange').should('have.been.calledTwice') + cy.get('@balChange').shouldHaveEventDetail(['vRed']) + cy.get('@balChange').shouldHaveEventDetail(['vRed', 'vPurple'], 1) + cy.getByPlaceholder('Pick a color').should('have.value', ['Red', 'Purple']) + }) + + it('should not select because component is disabled', () => { + cy.mount(template, { + props: { + placeholder: 'Pick a color', + disabled: true, + }, + events, + }) + + cy.getByPlaceholder('Pick a color').click({ force: true }) + cy.getByRole('option', { name: 'Red' }).click({ force: true }) + cy.get('@balChange').should('not.have.been.called') + cy.getByPlaceholder('Pick a color').should('have.value', '') + }) + + it('should clear values and emit a change event', () => { + cy.mount(template, { + props: { + placeholder: 'Pick a color', + clearable: true, + value: ['vYellow'], + }, + events, + }) + + cy.getByRole('button', { name: 'Löschen' }).click() + cy.get('@balChange').should('have.been.calledOnce') + cy.get('@balChange').shouldHaveEventDetail(null) + cy.getByPlaceholder('Pick a color').should('have.value', '') + }) + }) + + context('prop options', () => { + it('should select option and emit change event', () => { + cy.mount(``, { + props: { + placeholder: 'Pick a color', + options, + }, + events, + }) + + cy.getByPlaceholder('Pick a color').click() + cy.getByRole('option', { name: 'Red' }).click() + cy.get('@balChange').should('have.been.calledOnce') + cy.get('@balChange').shouldHaveEventDetail('vRed') + cy.getByPlaceholder('Pick a color').should('have.value', 'Red') + }) + + it('should select multiple options and emit 2 change events', () => { + cy.mount(``, { + props: { + placeholder: 'Pick a color', + multiple: true, + options, + }, + events, + }) + + cy.getByPlaceholder('Pick a color').click() + cy.getByRole('option', { name: 'Red' }).click() + cy.getByRole('option', { name: 'Purple' }).click() + cy.get('@balChange').should('have.been.calledTwice') + cy.get('@balChange').shouldHaveEventDetail(['vRed']) + cy.get('@balChange').shouldHaveEventDetail(['vRed', 'vPurple'], 1) + cy.getByPlaceholder('Pick a color').should('have.value', ['Red', 'Purple']) + }) + + it('should not select because component is disabled', () => { + cy.mount(``, { + props: { + placeholder: 'Pick a color', + disabled: true, + options, + }, + events, + }) + + cy.getByPlaceholder('Pick a color').click({ force: true }) + cy.getByRole('option', { name: 'Red' }).click({ force: true }) + cy.get('@balChange').should('not.have.been.called') + cy.getByPlaceholder('Pick a color').should('have.value', '') + }) + + it('should clear values and emit a change event', () => { + cy.mount(``, { + props: { + placeholder: 'Pick a color', + clearable: true, + options, + value: ['vYellow'], + }, + events, + }) + + cy.getByRole('button', { name: 'Löschen' }).click() + cy.get('@balChange').should('have.been.calledOnce') + cy.get('@balChange').shouldHaveEventDetail(null) + cy.getByPlaceholder('Pick a color').should('have.value', '') + }) + }) + + context('required', () => { + it('should only once send a change event', () => { + cy.mount(``, { + props: { + placeholder: 'Pick a color', + required: true, + value: [], + options, + }, + events, + }) + + cy.getByPlaceholder('Pick a color').should('have.value', '').click() + cy.getByRole('option', { name: 'Red' }).click() + cy.getByPlaceholder('Pick a color').should('have.value', 'Red').click() + cy.getByRole('option', { name: 'Red' }).click() + + cy.get('@balChange').should('have.been.calledOnce') + cy.get('@balChange').shouldHaveEventDetail('vRed') + }) + + it('should not be able to deselect', () => { + cy.mount(``, { + props: { + placeholder: 'Pick a color', + required: true, + value: ['vRed'], + options, + }, + events, + }) + + cy.getByPlaceholder('Pick a color').should('have.value', 'Red').click() + cy.getByRole('option', { name: 'Red' }).click() + cy.getByPlaceholder('Pick a color').should('have.value', 'Red') + cy.get('@balChange').should('not.have.been.called') + }) + }) + + context('invalid', () => { + it('should be valid', () => { + cy.mount(``, { + props: { + placeholder: 'Pick a color', + invalid: false, + value: [], + options, + }, + events, + }) + + cy.getByPlaceholder('Pick a color').shouldBeValid() + }) + + it('should be invalid', () => { + cy.mount(``, { + props: { + placeholder: 'Pick a color', + invalid: true, + value: [], + options, + }, + events, + }) + + cy.getByPlaceholder('Pick a color').shouldBeInvalid() + }) + }) + + context('multiple + chips', () => { + it('should remove option by clicking the chip', () => { + cy.mount(``, { + props: { + placeholder: 'Pick a color', + chips: true, + multiple: true, + value: ['vRed', 'vPurple'], + options, + }, + events, + }) + + cy.getByRole('button', { name: 'Schliessen' }).first().click({ force: true }) + cy.get('@balChange').should('have.been.calledOnce') + cy.get('@balChange').shouldHaveEventDetail(['vPurple']) + cy.getByPlaceholder('Pick a color').should('have.value', ['Purple']) + }) + }) + + context('key combos', () => { + it('should use arrow key to select option and emit change event', () => { + cy.mount(``, { + props: { + placeholder: 'Pick a color', + options, + }, + events, + }) + + cy.getByPlaceholder('Pick a color').click().type('{downArrow}').type('{enter}') + + cy.get('@balChange').should('have.been.calledOnce') + cy.get('@balChange').shouldHaveEventDetail('vRed') + cy.getByPlaceholder('Pick a color').should('have.value', 'Red') + }) + + it('should use arrow key up and down to select multiple options and emit change event', () => { + cy.mount(``, { + props: { + placeholder: 'Pick a color', + multiple: true, + options, + }, + events, + }) + + cy.getByPlaceholder('Pick a color') + .click() + .type('{downArrow}') + .type('{downArrow}') + .type('{downArrow}') + .type('{enter}') + .type('{upArrow}') + .type('{enter}') + + cy.get('@balChange').should('have.been.calledTwice') + cy.get('@balChange').shouldHaveEventDetail(['vYellow']) + cy.get('@balChange').shouldHaveEventDetail(['vPurple', 'vYellow'], 1) + cy.getByPlaceholder('Pick a color').should('have.value', ['Purple', 'Yellow']) + }) + + it('should use focus by label to select option and emit change event', () => { + cy.mount(``, { + props: { + placeholder: 'Pick a color', + options, + }, + events, + }) + + cy.getByPlaceholder('Pick a color').click().type('{Y}').wait(200).type('{enter}') + + cy.get('@balChange').should('have.been.calledOnce') + cy.get('@balChange').shouldHaveEventDetail('vYellow') + cy.getByPlaceholder('Pick a color').should('have.value', 'Yellow') + }) + + it('should use focus by label to select option and emit change event without open it', () => { + cy.mount(``, { + props: { + placeholder: 'Pick a color', + options, + }, + events, + }) + + cy.getByPlaceholder('Pick a color').focus().type('{Y}').wait(200).blur() + + cy.get('@balChange').should('have.been.calledOnce') + cy.get('@balChange').shouldHaveEventDetail('vYellow') + cy.getByPlaceholder('Pick a color').should('have.value', 'Yellow') + }) + }) + + context('value + no options', () => { + it('should show an empty dropdown since there is no option to match the value', () => { + cy.mount(``, { + props: { + placeholder: 'Pick a color', + value: 'vRed', + }, + events, + }) + + cy.get('.bal-dropdown__root__content').should('be.empty') + cy.getByPlaceholder('Pick a color').should('have.value', '') + }) + + it('should update dropdown after option update', () => { + cy.mount(``, { + props: { + placeholder: 'Pick a color', + value: 'vRed', + }, + events, + }) + + cy.wait(200) + .get('bal-dropdown') + .then($el => { + $el.get(0).options = options + }) + + cy.get('.bal-dropdown__root__content').contains('Red') + cy.getByPlaceholder('Pick a color').should('have.value', 'Red') + }) + + it('should work with dynamic chaning the options and values', () => { + cy.mount(``, { + props: { + placeholder: 'Pick a color', + options, + value: 'vRed', + }, + events, + }) + + cy.wait(200) + .get('bal-dropdown') + .then($el => { + $el.get(0).options = [ + newBalOption({ value: 'vApple', label: 'Apple' }), + newBalOption({ value: 'vOrange', label: 'Orange' }), + newBalOption({ value: 'vBanana', label: 'Banana' }), + ] as any + }) + + cy.get('.bal-dropdown__root__content').should('be.empty') + cy.getByPlaceholder('Pick a color').should('have.value', '') + + cy.getByPlaceholder('Pick a color').click({ force: true }) + cy.getByRole('option', { name: 'Banana' }).click({ force: true }) + + cy.get('.bal-dropdown__root__content').contains('Banana') + cy.getByPlaceholder('Pick a color').should('have.value', 'Banana') + cy.get('@balChange').should('have.been.calledOnce') + cy.get('@balChange').shouldHaveEventDetail('vBanana') + }) + }) + + context('a11y field label', () => { + it('should pick a option with label linking', () => { + cy.mount( + ` + Color + + + + `, + { + props: { + placeholder: 'Pick a color', + options, + }, + events, + }, + ) + + cy.getByLabelText('Color').click() + cy.getByRole('option', { name: 'Green' }).click() + cy.get('@balChange').should('have.been.calledOnce') + cy.get('@balChange').shouldHaveEventDetail('vGreen') + cy.getByPlaceholder('Pick a color').should('have.value', 'Green') + }) + + it('should not select option since it is disabled', () => { + cy.mount( + ` + Color + + + + `, + { + props: { + placeholder: 'Pick a color', + options, + }, + events, + }, + ) + + cy.getByLabelText('Color').click({ force: true }) + cy.getByRole('option', { name: 'Green' }).click({ force: true }) + cy.get('@balChange').should('not.have.been.called') + cy.getByPlaceholder('Pick a color').should('have.value', '') + }) + }) + + context('form reset', () => { + it('should remove option by clicking the chip', () => { + cy.mount( + ` +
+ + + + Country + + + Switzerland + Germany + Italy + + + + + + + +
`, + { + props: { + placeholder: 'Pick your country', + value: 'Germany', + }, + events, + }, + ) + + cy.getByLabelText('Country').click() + cy.getByRole('option', { name: 'Italy' }).click() + cy.getByRole('input', { name: 'Reset' }).click() + cy.getByLabelText('Country').should('have.value', 'Germany') + }) + }) +}) diff --git a/e2e/cypress/component/bal-option-list.cy.ts b/e2e/cypress/component/bal-option-list.cy.ts new file mode 100644 index 0000000000..070b915e73 --- /dev/null +++ b/e2e/cypress/component/bal-option-list.cy.ts @@ -0,0 +1,24 @@ +import { Components } from '../support/utils' + +describe('bal-option-list', () => { + it('should select an option and emit an event', () => { + const onBalOptionChangeSpy = cy.spy().as('balOptionChange') + cy.mount( + ` + Green + Red + Yellow + Purple + `, + { + events: { + balOptionChange: onBalOptionChangeSpy, + }, + }, + ) + + cy.getByRole('option', { name: 'Red' }).click() + cy.get('@balOptionChange').should('have.been.calledOnce') + cy.get('@balOptionChange').shouldHaveEventDetail({ label: 'Red', value: 'vRed', selected: true }) + }) +}) diff --git a/e2e/cypress/e2e/a11y/bal-dropdown.a11y.cy.ts b/e2e/cypress/e2e/a11y/bal-dropdown.a11y.cy.ts new file mode 100644 index 0000000000..3528fabea6 --- /dev/null +++ b/e2e/cypress/e2e/a11y/bal-dropdown.a11y.cy.ts @@ -0,0 +1,20 @@ +import { selectors } from 'support/utils' + +describe('bal-dropdown', () => { + beforeEach(() => { + cy.pageA11y('/components/bal-dropdown/test/bal-dropdown.a11y.html') + cy.platform('desktop') + cy.waitForDesignSystem() + }) + + it('closed state', () => { + cy.get('main').testA11y() + }) + + it('open state', () => { + cy.getByLabelText('Year').click() + cy.get('main').testA11y() + cy.getByRole('option', { name: 'v1990' }).click() + cy.get('main').testA11y() + }) +}) diff --git a/e2e/cypress/e2e/a11y/bal-option-list.a11y.cy.ts b/e2e/cypress/e2e/a11y/bal-option-list.a11y.cy.ts new file mode 100644 index 0000000000..0af30b90ef --- /dev/null +++ b/e2e/cypress/e2e/a11y/bal-option-list.a11y.cy.ts @@ -0,0 +1,9 @@ +describe('bal-option-list', () => { + context('a11y', () => { + beforeEach(() => cy.platform('desktop').pageA11y('/components/bal-option-list/test/bal-option-list.a11y.html')) + + describe('have the AA standard', () => { + it('basic', () => cy.getByTestId('basic').testA11y()) + }) + }) +}) diff --git a/e2e/cypress/e2e/a11y/bal-option.a11y.cy.ts b/e2e/cypress/e2e/a11y/bal-option.a11y.cy.ts new file mode 100644 index 0000000000..7fbfd18a0b --- /dev/null +++ b/e2e/cypress/e2e/a11y/bal-option.a11y.cy.ts @@ -0,0 +1,13 @@ +describe('bal-option', () => { + context('a11y', () => { + beforeEach(() => cy.platform('desktop').pageA11y('/components/bal-option/test/bal-option.a11y.html')) + + describe('have the AA standard', () => { + it('basic', () => cy.getByTestId('basic').testA11y()) + it('selected', () => cy.getByTestId('selected').testA11y()) + it('focused', () => cy.getByTestId('focused').testA11y()) + it('invalid', () => cy.getByTestId('invalid').testA11y()) + it('disabled', () => cy.getByTestId('disabled').testA11y()) + }) + }) +}) diff --git a/e2e/cypress/e2e/base/bal-dropdown.cy.ts b/e2e/cypress/e2e/base/bal-dropdown.cy.ts new file mode 100644 index 0000000000..63de125c06 --- /dev/null +++ b/e2e/cypress/e2e/base/bal-dropdown.cy.ts @@ -0,0 +1,44 @@ +describe('bal-dropdown', () => { + beforeEach(() => { + cy.visit('/components/bal-dropdown/test/bal-dropdown.cy.html') + cy.waitForDesignSystem() + }) + + it('should select label or value', () => { + cy.getByTestId('basic').should('have.value', '1995') + cy.getByTestId('basic').should('not.have.value', '1994') + + cy.getByTestId('basic').click().select('1996').should('have.value', '1996') + cy.getByTestId('basic').click().select('v1997').should('have.value', '1997') + }) + + it('should be disabled', () => { + cy.getByTestId('basic').should('not.be.disabled') + cy.getByTestId('disabled').should('be.disabled') + }) + + it('should assert option labels', () => { + cy.getByTestId('basic').balSelectFindOptions().should('have.length', 6) + cy.getByTestId('basic').balSelectShouldHaveOptions(['1995', '1996', '1997', '1998', '1999', '2000']) + cy.getByTestId('basic').balSelectShouldHaveOptions(['v1995', 'v1996', 'v1997', 'v1998', 'v1999', 'v2000'], 'value') + }) + + describe('multiple', () => { + it('should select and deselect values', () => { + cy.getByTestId('multiple') + .click() + .select(['Black Widow', 'Black Panter']) + .should('have.value', ['Black Widow', 'Black Panter']) + + cy.getByTestId('multiple').balSelectFindOptions().first().click() + cy.getByTestId('multiple').balSelectFindOptions().eq(1).click() + cy.getByTestId('multiple').balSelectFindOptions().eq(2).click() + cy.getByTestId('multiple').should('have.value', ['Iron Man']) + cy.getByTestId('multiple').click() + + cy.getByTestId('multiple').balSelectFindChips().first().contains('Iron Man') + cy.getByTestId('multiple').balSelectFindChips().first().click() + cy.getByTestId('multiple').should('have.value', '') + }) + }) +}) diff --git a/e2e/cypress/e2e/visual/bal-dropdown.visual.cy.ts b/e2e/cypress/e2e/visual/bal-dropdown.visual.cy.ts new file mode 100644 index 0000000000..cbe171be8e --- /dev/null +++ b/e2e/cypress/e2e/visual/bal-dropdown.visual.cy.ts @@ -0,0 +1,77 @@ +import { testOnPlatforms } from 'support/utils' + +describe('bal-dropdown', () => { + beforeEach(() => { + cy.visit('/components/bal-dropdown/test/bal-dropdown.visual.html') + cy.waitForDesignSystem() + }) + + testOnPlatforms(['desktop', 'mobile'], platform => { + it('basic', () => { + cy.getByTestId('basic').testVisual(`dropdown-${platform}-basic-empty-closed`) + cy.getByPlaceholder('visual-basic').click() + cy.getByTestId('basic').testVisual(`dropdown-${platform}-basic-empty-open`) + cy.getByTestId('basic').within(() => { + cy.getByRole('option', { name: '1992' }).click() + }) + cy.getByTestId('basic').testVisual(`dropdown-${platform}-basic-empty-selected`) + }) + + it('long-content', () => { + cy.getByTestId('long-content').testVisual(`dropdown-${platform}-long-content-empty-closed`) + cy.getByPlaceholder('visual-long-content').click() + cy.getByTestId('long-content').testVisual(`dropdown-${platform}-long-content-empty-open`) + }) + + it('multiple', () => { + cy.getByTestId('multiple').testVisual(`dropdown-${platform}-multiple-empty-closed`) + cy.getByPlaceholder('visual-multiple').click() + cy.getByTestId('multiple').testVisual(`dropdown-${platform}-multiple-empty-open`) + cy.getByTestId('multiple').within(() => { + cy.getByRole('option', { name: '1991' }).click() + cy.getByRole('option', { name: '1992' }).click() + }) + cy.getByTestId('multiple').testVisual(`dropdown-${platform}-multiple-empty-selected`) + }) + + it('multiple-chips', () => { + cy.getByTestId('multiple-chips').testVisual(`dropdown-${platform}-multiple-chips-empty-closed`) + cy.getByPlaceholder('visual-multiple-chips').click({ force: true }) + cy.getByTestId('multiple-chips').testVisual(`dropdown-${platform}-multiple-chips-empty-open`) + }) + + it('form-field', () => { + cy.getByTestId('form-field').testVisual(`dropdown-${platform}-form-field-empty-closed`) + cy.getByPlaceholder('visual-form-field').click() + cy.getByTestId('form-field').testVisual(`dropdown-${platform}-form-field-empty-open`) + }) + }) + + context('states', () => { + beforeEach(() => { + cy.platform('desktop') + }) + + it('clearable', () => { + cy.getByTestId('clearable').testVisual(`dropdown-clearable-empty-closed`) + cy.getByPlaceholder('visual-clearable').click() + cy.getByTestId('multiple').testVisual(`dropdown-clearable-empty-open`) + cy.getByTestId('clearable').within(() => { + cy.getByRole('option', { name: '1988' }).click() + }) + cy.getByTestId('clearable').testVisual(`dropdown-clearable-empty-selected`) + }) + + it('loading', () => { + cy.getByTestId('loading').testVisual(`dropdown-loading-empty-closed`) + }) + + it('invalid', () => { + cy.getByTestId('invalid').testVisual(`dropdown-invalid-empty-closed`) + }) + + it('disabled', () => { + cy.getByTestId('disabled').testVisual(`dropdown-disabled-empty-closed`) + }) + }) +}) diff --git a/e2e/cypress/e2e/visual/bal-option-list.visual.cy.ts b/e2e/cypress/e2e/visual/bal-option-list.visual.cy.ts new file mode 100644 index 0000000000..fc14eb7937 --- /dev/null +++ b/e2e/cypress/e2e/visual/bal-option-list.visual.cy.ts @@ -0,0 +1,9 @@ +describe('bal-option-list', () => { + describe('basic', () => { + beforeEach(() => cy.visit('/components/bal-option-list/test/bal-option-list.visual.html').waitForDesignSystem()) + + it('basic component', () => { + cy.getByTestId('basic').testVisual('option-basic') + }) + }) +}) diff --git a/e2e/cypress/e2e/visual/bal-option.visual.cy.ts b/e2e/cypress/e2e/visual/bal-option.visual.cy.ts new file mode 100644 index 0000000000..c606b784be --- /dev/null +++ b/e2e/cypress/e2e/visual/bal-option.visual.cy.ts @@ -0,0 +1,17 @@ +describe('bal-option', () => { + describe('basic', () => { + beforeEach(() => cy.visit('/components/bal-option/test/bal-option.visual.html').waitForDesignSystem()) + + it('basic component', () => { + cy.getByTestId('basic').testVisual('option-basic') + }) + + it('listbox', () => { + cy.getByTestId('listbox').testVisual('option-listbox') + }) + + it('listbox-with-checkboxes', () => { + cy.getByTestId('listbox-checkbox').testVisual('option-listbox-checkbox') + }) + }) +}) diff --git a/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-clearable-empty-closed.png b/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-clearable-empty-closed.png new file mode 100644 index 0000000000000000000000000000000000000000..b0ccd4b280be98be9750ed6dcdd34733735a267c GIT binary patch literal 3214 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 literal 0 HcmV?d00001 diff --git a/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-clearable-empty-open.png b/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-clearable-empty-open.png new file mode 100644 index 0000000000000000000000000000000000000000..7c6f2b5117434f25f27e38a72eb08c31efaebabb GIT binary patch literal 2822 zcmcImXH=6*6GkZ_HAoQ<=?F*(5hX|{UWmp3f?iaLf`n=SL0UjiqawWo2tt5Bq<>UJ zsuVG_2$}>$nxRMyRXT!V{37w5@6Y%5&e`*x*?DL7?9M(j`$S*1fbsK4^02Y7@xw1d z|7K%jf6mmkxVe~LL9?SiY-~JaIP|Zp!3UO!ymvo^KPIiM{Ay_&CV!o+k>g^2%)!O; zBq@^P$rB(?&~xMBzps>LI~O>mwI$C_c$N4{jrkn>4G&ukb2^c6E zpsm?Xs2}w%yRIhB5(A<~%_OQZ`epdr(>vOw{V`Gda?$dYT{#r@DEiNo564oX+W&1+ zm$l<)r-J%@l)=PZoQ>Mais|%@%pK2Ah}8TExB zB)w>Bu!BUvlz-K0&ra@>CredrLLX&pIDFr_G{LYP#QFvv5sJiQ&paD6ntpa`A;Agt9T)@CtX;XT2KpP(noRVj5 zXLy|7gXp+FlZM_Wx?HZ5GffAXxfyHs`^J8$(u zX$+CqXx{fFC)B@dfj;p&_4)_^^Lpw-J1<_C-E?(Coy6!Tk~(4yPbOUJv)6Q&f=3I; z-=yd!A30uckJ8&1P7iq#2on(Q6jaO$l4qhMc!%M;G_(bBFF6)1CeXIR)7^C}lbmH0 z+4rM_gSq5Pwht!vZlBN|gH;;x$A50ONINb}dq&wbGPJ%KHsL8FfxnKG0ZU|^m{yxN zn-3e>@?-hfJMG5_$p(ZT?{S7zevwk*uyVSYgibz~b5Y>cy+x4br!&qV{$%Xre2j^x zyF}0fvEI(O1y~TjBrXCeS$zzbW!m0DoUb;!OM@@Y6c!Gcm9;~>;-r({ut9#REb$I~ zuF@kntK9p`Uib-bamb?tzX;c!kxBZ7B#_m%dU-bJTJy6+XxWExlJkbO@Uo2b4I;!- z5CCFYMP{ivjb#CC^&{#$u_tx?YahpzVpUX2<(WXFe88o)U27isotWK~W%r)9r8|@l zNiN&)+4tPxt*60tNq8yC>S;ygtYV+r6Z7Z8tE*_``YpG)mho%80n>39h1U6)JcT0d zgxXr!%4EC<2C<6HSA-xvJQVEOISP9yce%DYCk7ZuyO$Dpqby-P>8p z!OQVRi3`4!w7Ct!SNvRQsCn8U6Kh z(pezBdc+8uw>bC_Zy>qM9*w)jpzAPxl7bv7#i1Mr<@7wfk$G82NoFEH4b}n5b8^Bd ziYIh;x-g7vR0QH~fqEfaOXP%#=0Hfq+dQ)sPy z3XH{lk+m~^!p?eL%zSmd%Fy&5<_#OJ%oew{K^fDBmTrp$9dz(#D+m`zm_u zB8+5IQIO{uu~``4Bih^DZB(FLh-9WGX@5+>ef<$)t2q? z6(4H zmY2%YDEW#c?60whsHN|?D!Syb?f1hzWkY1JkA!gv34S^jxmphK3#K=-d(nLHRL`dS zAteceX)8|tzDj@#`tr$f?RW&=?u^xNPFScu_9Qx8E$*i)c8r*A$R(#Q)r;t#<%1YacXr} z+s>@U_;YRHbuLFt)hmQQXX!x76siN{0X-o|p>$~Rv8qdxH0Ars^Sy9WbpS-jUncz# zX)3=+yuZI6!GMK?=&cW0U%d&Re`9$sgy_PGcq2f`g20~sA9^FYi*{WvH^JRs1pIOJ zHfJeNr+>(pBGtcS*! P{FV)V-U3=-?D*url@VY8 literal 0 HcmV?d00001 diff --git a/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-clearable-empty-selected.png b/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-clearable-empty-selected.png new file mode 100644 index 0000000000000000000000000000000000000000..673a2128749494549ca99a7150172e5f372cee7d GIT binary patch literal 2276 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 literal 0 HcmV?d00001 diff --git a/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-desktop-basic-empty-open.png b/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-desktop-basic-empty-open.png new file mode 100644 index 0000000000000000000000000000000000000000..a892729d8e06e31fd093065d3760389df3674ca8 GIT binary patch literal 2954 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 RC~(IXvOrmzRvBN4{ue77ngRd- literal 0 HcmV?d00001 diff --git a/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-desktop-basic-empty-selected.png b/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-desktop-basic-empty-selected.png new file mode 100644 index 0000000000000000000000000000000000000000..1cc4fd931e900149583bde0960f06faa5d91db3b GIT binary patch literal 1915 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 literal 0 HcmV?d00001 diff --git a/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-desktop-form-field-empty-open.png b/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-desktop-form-field-empty-open.png new file mode 100644 index 0000000000000000000000000000000000000000..be0e2c5492387a7344f8640be9b66f01dcf9ef1a GIT binary patch literal 3795 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 literal 0 HcmV?d00001 diff --git a/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-desktop-long-content-empty-closed.png b/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-desktop-long-content-empty-closed.png new file mode 100644 index 0000000000000000000000000000000000000000..104976802d3eb4f84e0b04569716db6621615a17 GIT binary patch literal 17012 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 CQYFp+ literal 0 HcmV?d00001 diff --git a/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-desktop-long-content-empty-open.png b/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-desktop-long-content-empty-open.png new file mode 100644 index 0000000000000000000000000000000000000000..ba0954c84386108347c1108502ee32a9b1096692 GIT binary patch literal 17197 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 AUjP6A literal 0 HcmV?d00001 diff --git a/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-desktop-multiple-chips-empty-open.png b/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-desktop-multiple-chips-empty-open.png new file mode 100644 index 0000000000000000000000000000000000000000..01094ea2a27d6c59f58b2bf3457fb2b8d930ecd8 GIT binary patch literal 23581 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 P{FV)V-U3=-?D*url@VY8 literal 0 HcmV?d00001 diff --git a/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-desktop-multiple-empty-open.png b/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-desktop-multiple-empty-open.png new file mode 100644 index 0000000000000000000000000000000000000000..8982f1364aeb22cbd156ae63973b839052f0c588 GIT binary patch literal 3040 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 yv+?hp$fY|_)7sTs6Lk(Hb>NYFDd9 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 a&#t%eEum6p`3~iIOl7DG23Bc1g#Qh_%~&e{ literal 0 HcmV?d00001 diff --git a/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-disabled-empty-closed.png b/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-disabled-empty-closed.png new file mode 100644 index 0000000000000000000000000000000000000000..590d7c5ff247341fb63bfb09acfbaf2f017a6711 GIT binary patch literal 8680 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 literal 0 HcmV?d00001 diff --git a/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-loading-empty-closed.png b/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-loading-empty-closed.png new file mode 100644 index 0000000000000000000000000000000000000000..7955c31da6f62322b1bc68662909c80ed2141553 GIT binary patch literal 2296 zcmbtWX*kqt8&{$*_I;deA;y|xOEPv1Q6&2rTarDDWSvyD#Mm{BnL!xakc4CzLUv9{ z<#3E-NR4%}j^+K2`t*K#ulLJyJ=gO*_x`)@-;;9H+MJUe%+AEb#0k4(V#~zDTnOyd zPO${?y;p#WJVrKe8<`fy>*nrDSyv*8U^WN}?DwUx>rv{4cgwW;AN z@!K=g!pMS*j}(HrJVdgFZ>E@Pp5oiH7fJlB?v0v^5YsV+u#Dz!(^fo^3~jdjCyw5H zIPpJTOEaW(sTZ3z!e2{F3|zz9S)Ut?;KAqz9)C};nt33M>z>O-QLZK&spoP@FhYAr zAZQfi0o%AUHr~EAHgDV?Pbn+)Zw~pwGWGg~mQBu$a-+m@+X~*(4avR8nA1MkbD4?D z=8Z3YrUy0ZZGoSeHHI!GmEEQ*hlyxb<|eiU{|xJb5{u}WZZ;4Hoga@=rowwm3)Fl; zoVgZhs#6W=(JRqe|3-%vOhtm4$m&TPqeyN>5=x9eO-}YU3mTYBw8iGqD2>>ny71m%c!mI-?8GX5q-i_g3M56-~i9{mE42gu+Wf(?9(G&|JJK5v# zHM0KOlUMLv`9T=Vt_dIO*^+C)J``Ht+zKb zE|aaG@^rl4fTnUjAu_+<4TW~)K@{V0nKLnKkkWUv9%SDki3Q4m(N>ukMv*%VTHwg+ zrNb>&iT%|Ikj8Gg*8C7|$m>dLw*ir;04|o7%(bws8W$~ZknJ%DBr5nd=pI$DNHKqK zjur`4c@oJdJp6r*yZM&=**`~@N{UD%d}#BKI}6BGj{n`xGS_sN=Sk*Vi|d|?h`yD9 z660buSO7J|d_CR?i%@nl)^{s*CWZ_Ka{md~9zmZ=Nvx`UGO}J<{gvXd$xk=jqE(Zh zr=donoD9H^{Y?RkIy*Zj7bipI9!UecTYU>OkbR$;C^SgMJk5{tj&pLGrr_l(pI=o? zUOkR~y$%A~6ZdooqphiDdR62=%(E}rZ8}j>)m6h{gpd%tr4O?xa&K7Qlx3B8Xq+o$A-QSlLLR{>dPfN{Y*yFU4&Mbu2hRO4#oOmFpK6C(}TnHX5 zUfaIuKM&v3w1zI-J@8vr(9ok%s|s|(^?)=O5b#>@NfHwlRJ4y9<+GQWS`hUTt8VN+ zYmC~~IZ9!8SG&Bc z>EIeBfx*S0-SkPRJx$e=qU8lg#8PDU2z1M&45yxMIZy6-CI)w(Ol@giz=$>PG)jc- z-$%>vu`zN6Gk!ldW&{LUVh3646-YIG)FaKQtgH;OFD4KOBa^zix;i3a;>b)ia;_^|uW%}qXzqb#4!GkYx3d9Y9Sl^0+aU}u?zX<@v}jgI0^Dz$@{nwy^l#?Zk* z+%(L^MQkD<&zScYJymCuGWNBamrLVC%{-7W~a%2_Bb35??kp zt`qqFKSum7X~Q&fr5)rq0Yh@x>%crY%yDM`;wIW3h2^Vb2N4Wy{-Z9G$-_-Rt<3S6 zqmr$X(675!ZMp1h?EUxJ7G-)Q4Uc9|R-(C}JnQqb*f|5HL++k`D^_Kmw2^@y4HL}N L+N8$F{r-OdK$t{F literal 0 HcmV?d00001 diff --git a/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-mobile-basic-empty-closed.png b/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-mobile-basic-empty-closed.png new file mode 100644 index 0000000000000000000000000000000000000000..ab3b0ab90b2801f74e5d25c04bd3fef8abf32bf8 GIT binary patch literal 2523 zcmb`J`8U-2AIHfy6h=jZh9vuB-}i>N6uHRKwPhJ%!l1H?#x|323&{-4HMSO_At92) zWiU+2K3w})#xgS2xS#L$PxzkiFYog_=Y8Jq*Ll63@Au<8Gac-$1qCDoI5;>2ZGN+K z2(N_U|PDh-%l~rR6K*lld-+4zIR0i4JLg&d}w_I+nv!9WL~>}_%r-K1P&50 z<#9XoK^^Gd)*yAn95P^HCv^#ec7tFzh-TtdeXe3KbDSwpowX?Vb=ZZdExscG2gx+u z7}Q4UN*d-!=Oz<_@M&Op#>O3dnmwlgP)4KzI4gqsA0rV@+3UNo3BHBpk2hG`UOAa6fgIPFU)`YzR&yT zVECb-BK2YO1nelvNoq!+MRTSxjtW^txuC&;-n1sJ-Xd@FkPyDs+`%Qp+Tn?zw`vOK zCFpfO=|$SwP0#ffec?=%s<|p*Ow2M(2{{p!!R!z*x*x}UD(-kO_9wpnfR;)_D7s9b)}n|4|} z(s>)()3eX*Bn-G53rqtPQSX5MpXi`EPe;x3g^V=p3ngaSXg#Z0!nQXz_@7K(xEhsD zBCsNA_m)>~;ql}A?-N{kO40&-op}v=)L_LOOAE# zWk(ByUbw60@d(?Q51tKMT)*g%E+ie;@%qakOhFtTalkXWngA1`h@nSmO07wGM6KKVzPbr02t8{Ucj-JP z)UYD#G!7kff9>sst{-c+z1`(v8b_n%4=B88f=f0eS^S9G$w7JH+iR6r1`aUeo73!b z%|tN1d_cP+ck@vO84q&3XQ%aG$~3Kz^NxS%c!A+*pIq?wDY9M8dK!eou`_xPy%N-E$m%^PbkW;N3Y~*Cprcbp@Qi9Qny^+WQCv z7AwS??Dv32H9wsZq~(IOa-~p0AUYRw91uBA{ys8Io-{cFhFg05-Ud^Zj#O>h5n!vw zd6^ddLa~ite>4iy=l!T>9GpKTg)(eolod#0FRsHbO24BV$|2bxFyc6SFKRl=10mW+(VH7fPA-b!FDcftdy zE_&<+MSuXquMfu?B9?oQllzyen~&r&aS$(quI-> zc+3OJtrT#95=?qWyBcU`r)n>!Iz*98lC=J_&F6x%MG2O=EIB?fI!g+F5KYt3Zv4#- zC+F;!gLM$YcFv&;u1n>&(=f4<-u3Bvlap-|?&oOkfH~!ebMTDXo?xAKh*4r=JPV6d zd;8D3ieW!Z@g>FvnK9o_%aV9v12|IYa;CyUq#Qut{ndROFmc8X;Vb~arkTy%k)~Ni z(sMm%-k+AkwVKHw>0j>SE8`ki7T+U^}<+dU$G#4vI-)e|TVLt(~UpUBEleV3WdO;IX9_bFrJCe7?A zCUSp9ojN46EIBqpW`YvPu>*NFvl04i3$C!F8Z3Sc5sdq=G4{uJ_{Wyg@~<*z{n}Nw zqNxi0+Hs^4XgMiVfGFD65t@DRwDy;?(7T9mdqaT85JUY(P8!NwTMHh&=_h%C@^tgIm&TP>N~npr;efg7ksbwNQdS4@ zlA0dD%tH@TK|Ib4pZj@3!Jymf2-8wn873#&M}>ay{LTJYJH;xi>uZp6rQ7@Lvh}sk zVt%&|N0J-Hj1R)jv7&7uG>gDqM+ZFdW^^*C1M013@Y6N~dn#kSV)+y$A?x O95z?&E#Ja@QvL-SWyAph literal 0 HcmV?d00001 diff --git a/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-mobile-basic-empty-open.png b/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-mobile-basic-empty-open.png new file mode 100644 index 0000000000000000000000000000000000000000..1db9647f17e68eb3dc2d3063bf25bbfc76c47498 GIT binary patch literal 2730 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 literal 0 HcmV?d00001 diff --git a/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-mobile-form-field-empty-closed.png b/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-mobile-form-field-empty-closed.png new file mode 100644 index 0000000000000000000000000000000000000000..33bda00a377cb5633cffc2f1e7e9f1dc06658c2b GIT binary patch literal 4289 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 literal 0 HcmV?d00001 diff --git a/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-mobile-form-field-empty-open.png b/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-mobile-form-field-empty-open.png new file mode 100644 index 0000000000000000000000000000000000000000..540c9d5ce84340b3995693b8902fd2d6271ca039 GIT binary patch literal 3821 zcmeHKc{r49+n0*S)+n;?O(fe8)7Xt=h$3RFWf@yyjInF#Az89784NE%QOaaD<-ypV z8H6Ou@EF;*>|}dy@Av%qyvOl<-*LSEz5m?zb)VODo%ea3*YEsY=NWs)%#fXxpOt}u zfgNE4w_sp6Wetp-&oKedA8W}(1_q8Q1YE~5_|$SUOF+i6r_qx;`*$akuB?YQ`_j@IFQsfaQdS7)C|RcsVtE?oy4Y49^vQNw5fGad!|yx%swH0q$|qQ@Dq10|^+aSWR5~IQ%K(?lrVB~k6-@<{;N*UT z=SqT{D=!1M4wqcRNz%myBPFTSr62!`%=syn)$}@Q(3?`X5%y9d_V~6*W(Lt2%cn)! zve4{Ib@N?6i1#%&M|NyFIkwKv`1zd1J*Hb3kAFAqo@Ao8C$4m>aQ99J(~kcE!0g@c>BkGCBXKkrpou`9k_!Z?d80+ zacJlC{ghtU&|rY-cIb#sbx>AT?tAC0Ib^1p#Ia2Dc=(Wh?O5~q>f@r6YJykgjO-zLlx(iqznM`*HG~0t0+2@WFB{cC|u3*1%5FG{PlU_fo}B%iD571JA#aoj>f> ztJ)k5UAG((EC?G4FA4WLhZ0eJ&M~MIPL&VwUVKbnIT{8z+H7L|{rg$;qPQ*Xza}^x z%!J64FLZU8NjzxFR*EJB@gSahcz(P4-rNBbwHmPqvPey{*&Gv4-~35A_!IWhpTr@2 zlUfy)@3Q$?IDG4TQHhHVG#q5gm({} z>X+!6w+I$+ELP*=OvTjfj{H=OZ=#eGG&btFh=UHwK!*Fhpmxjn;h^l}iu5;k<2)XE zIJYmU9LW7*y_8XHuU5#M-{8e{ZHUww$=O5(PWwfo`;4D#zTj}$gV~_zo-iK8wYXDk z{9jV)3{e%Y>bC@f)?5o_nkar;fQc{9nlk9S5omi{PLu#jIJ~$OkgeK zd&4qA(;h8eSw*OAX{wM&Ozg8B>$S7nN&8UX%Ingu_51oWry|oFOEatASr$S9Ve2EP z4_-ceEZD7tx3~y!n?6k~QwT=kQ+mz47sBW2R;)B%rW3wAA@?U-z52eyv$MmuE~`E< zk`x88WGOsinD^|;jd`X0!?iR;5FrkQ>Y4@eBYi9Y5};;%%8Zwr>xx33zAD>U64bjL zzENHTwREJ!%lk?d6coggNVh7QYGRHedL;|W8uA26IZB6ym*)WXkbBeNYjkHm zaS}-wRoYu<4v?WvPiKsJm>L^{pu?V5pKNZr`V$8_fg=YY#Km|bwY2IJ=?`diUiLWF z5qHJl`{1MLyLvVs>Z01)uh@<>Hf0z0Hg#e1uRB|!gILcK`K-nWCDv|#ghMVznJ_ZKbP}=D`@4JYmCjo*Nz$(oj+<4KLQIE! zVzE;`V_t64(-Z9l>$a(kC)pMIz0Om$wRhFnMDKZk7+YhYHTvh52L?PrrS;So7o*vh z;D~wQYyl_VHQ5ROKx2^7gOmTU!aaap%Afg3YaYWQWNWw2X^+_|`ZTw~M^kA{FlUmyPxz zBR}cad?D`R-ka);8u@tTtR5i@RM;@7{q;K^QB_q!rawl>!&Ki*XySN{5oB>!;(*@4 z4b3de4yBLGpuSj)jCz=^ zl_e5s=uQ0CU$;?1K_tVyM_fxl){f>Byb#f|0TBhr|XcEK+dxLSz*-LSVdcMbB#g#e&W+3*YG1cyxD$WCmJp?K#s z&z7)F`z>GK5PT~pEiDR$C1~uIc|4+wGJCA#YMy;-YiD5M{mrLTMMrdfL#eBmBB>>x zc5*5uQ+Ozlv};4w<0bX2)$F8(Ne8Aa`5&#x*&s1s%>n7w$%a3Sr-K7zsl}!!88_G; zf9*e+8$tbCsW48JKvV^oW^a7fPY4Sw{oHto70t0HB}V=Ow-g;GE@HGV)GkL{nbMyKavS)nP`&6NMA{ zs!fDz!}oMk)6!yc03uCTRY9+APAlI~?mNzf>@BIxu614lH%amxyij~3mc9?T`ny^;j4QRyHaEj#1TP^DSUl@`FK)bxvf4JZ8eH64g< zLu|)vMUg3rRj+56ioF|`Os=$t?S0pO-IsKJ);pU9(&F%=jaidHhB-td*Q^af%;w ucUEffL2JN3SC{zz@9O@}mw%`2P_AgjICsaWYDbf+8mmm=7 z5I~v%q&I1^xijB<^D^@?FZq&_lXK4g_xjgb|4JlGOPQ3Ij`+rn8>Ff#in=#$;2DDV zj|mCDYtd&(ts6IJAgYRT`Ut$O4ib~0Q~%A0K0Y2^-lZSqhBW%ziH^^ApBx+>>To|G1lM%Y z&WGhyRmCgT5HAZ|rpo6(1y@9P6Nlc6WJq8GXJ90+Z!MpV{QrI!OOx`%y}rzBYlFHt zthQX-Ix-p#;!u9^ahVV+DBT~o6V09c9P!yXNNso_Hmm(0!uf3_rYJg<`Q?gCysD*C zJ_^-`ZS=k1Nr}TgcGckW@DS0NYTLNU|2k#l2R5{OT&Z-nEi*Rs!h|#Kmx{gp?RsbI zXz$k>!!`yj=xFL9jH5(yo2*RrWATM2)*VS~G3gJ`ljMvEeOBis?B*)Alk3?rxeq&< zVpV6`kg?h`#p~l^@^h7~sf6^6!8|pnDcS&XO-)khWhn%gWAor~fWs|I&aIcbQ7Cry zqS3Eo8DTbuI^y1oat{TcC`~SmpCdm=C!LmF#M7*Ae6NpXysBRtR{!XEmZJ2K03lW* ze-dcy>I$K_z1>?C%ogZGq_Bs3&Y^0{^w{mIvxepYjZkkiS!j4O$Ki$}@--y360fq9 zJxA-Af&d$ImkB;IneQfcDmZJ(|5&6#Syff?!{5{2dkgTGS*49Fp$^WmCIUa7tb8p} zJ~@0bkot1|k?CaSnxI$)8F0OI<0XjpFX| zFOr97Qh8k%OsypE>TCCO#18!1_YWmqxWmYk+aFeZ_cR_2k|L-Vbqo_ilucJRb_335 zYU`+K9qbj@q6rAEu3$THwY4H2AB#Wbz;vf|j+J#Xw4f8@%wBUZyV1^@X`bxMOPS)E z=%}iwt<-26yUOeeUc0#&rW9)sy;6MwmwJ}V#8hDl zy^%a8)-4fG8!_Wu^U52p_y_gcW+;9o^@>gr)LiA}d6sLfINS0*JmgkjOnHsuNc9Aa zw_Jh-Ld?jh$=-e?bjxozRI%H{dbao80rNRuc-(y9r%zE@j0~q-r>7hY+AZo&xww`n zw|5_J(RyiWoQVIzIkX{BXJ~uS1aXNGrbAoDujfuNQYSdOr7H!CYa#!Z!jNJ$+Y--A2p2%8QGuK9@ zKaW7Q(z+LWE{3y50cO*QI@Jiye6s>=M4SwBz&dp<6JU07{xDQz(Xt()? zKi+w$q`HnAmr^C!5w}B9n3esuFfZ?2m94V-!j7hz+JODodm?%R($0~Nm}&k0d*OPPr1#^b(wmp3qDfL{CxrhteYPVU37W zaYV5Zc84p`1CKfyXf6M~jhBKzYJO6p(HBEK zRtevwds0%we~ul{QC%0M=H~Q$d!k$_GTHq}r>!){hh{RFM%B(;HxBrVt1aER{r!Ad z%PK2ZdqlZTPAA5!Y^av(T)MODO-~MxDWwk{yc2>u-@S$(_p*nb?J%zB!qvGkLeCXx zw`kwhH4wjZWUlJaFCKH@D_DYte)-x0H4j|r0gQymo>UM|JHBA~UA+2_&HLeoM8-5| znQ#(YkMo$g6{WQgpN_b_(gXWnr<*gf461-F5q_c_HR&Ag)J)6s7Yqy;84wp6ae||( z2r|{-x9xv5dU8eoywkR%c|dnU5?Qic^E*{fpSp4p&Qpr7W=++jHMupjulpx5PfdCg-k@cH>~ zU-vx!$l>__UA8fqhp%H#HbeZ)4r_LZtjm*NUb3!aFW6Q%$Fsl*O0)CdNa z)K&zc8M8}cH8>TtwMjhJ1dG^G2VQxKDJOZX;?3QhE7d%HDz3#or|=Bm#IvhwWws%^ zZ@Ef}rMg~7(ZZra85eAFsft*pY9eSDot%!Cmm4CCZyAi~!^4PpV6<#Be#gYtK}Z55 zG^(@%J9?UViaC85qG<5p}gJEIi4A-Is4uQi1|nWy(rn zqaUsaVqy;(JYB`Wy%c-QP_{ct{R7FR<&|LzAF(GwgPEc3K@v3H$f{z+f2KgCj;=!bJ3VM=sh5?LvOzGH%N#UdMDg*VcW&{dxe=>bu9%zTu6nEOh`i(#(0VR33Osffhy=Z{eWPiZgn1>JtjCCi?X zq8btbt<}Mt>Ch=X{B$8dW&m2CRt2zLN$*RRr1Nu%$~i>;U>_a>)R#UPS+Y&JzBZVt z(s=pqvNglf(NaU9=FhbXg9g$0Uso3|UZigTv78T(4|-CZZ{*LOZgg9u8d5B#=@i>H z$h++MkU#oc??=uM{vJ2l+O$zp))yAQag55*Q64tXRw{lR+)qQn~X;Fe18LVK3A} zKM5`K&y=_Si^p6M;7g3hm7IX%c&^o1G3?LbUgvaw!uR`vZJ9H{y=f2F+qb2Lx0z8%w4)pG`@odzf7BHiP&(`l8$-1 zxFs$p=i!iS#mW9_x}=ao{d529gp)HViriP!eU1C}Cy1F{sqiJ|5mdP};2N0t-o969 zwCw9(Ceu0KHlNPz=_*hq_^?)ndIdolE{&l7TEXLB-j}Rbwu0Y3c-!4+o%4yUF zeCAT%XiE(|jrEVFTTHS6aq=uZpLFmY+}SV1R!KL0u5Cm#-FRZF5qpTxGuMn<=o_Q1 zFq_U5=RoR|oB9b>`}(s=i-qQwm37QSO{NCb*9QUWN$?V*w`H>o4!-^U!|C;sv$1_jD0C(?b(h& z{oJR4witie`FO_6ZwU-h&CdW4#>9B&P*cn%O#?HekRAV-k&J0oCv*IR6F2uGHVF?B z<#=p>4l{(eB_UzooDj*hhsn|bOP0weqki` zlta8K4Or}!NbB;Szh*}w>*1RxTtJOZ_vPu@phqp-+(p(Tj_j9=*)(FlT)>1#W}YYH z%+2~_XU($y{rOW-F{fB}=|CTUfhV7_!zU-q4cdfE!w~lG!|6aK5<3~&HB-?7BGsbB zW!Xf#k;gl`^*^h^hu1OliQ?6EW@MY08J~P+B#Y6J9TPn{Kh)2For=nEb2GQFwpW2y zJfh#>Y`eI;54PgfpLKSPm_u0gClU579cZ0u;Jf(bA{J3b*?{ojo=vNbVFkN2cuzAB z4*9CzL*FMRlnRQ9o%Y6cO?)Yw#Dwbh^m8B9rH%NOlyI~yaRHP)&33* z{1}3f(o*)5J8>BgR~4Zr5HuN|KS3GbqNN0b^yA7D>)V5yx2xYJKYz8^Y1(}`f~Pux zt^~{+9YxFmZ*hV={=TT$YbDf1c(@u3a{+yZ{v1t4K6%D9>Wo%4G$i?-&w0YNA)al~ zHGM0tCmB6Y%xsdd38_STQ@#LZf5F3V!ZMyzm(fe(l!lart8KYtFa3C!oRAS5Hl zswJR+q5eF@Zc4Fih7u1(4v)!MuWjg^W{rg z+>w&GoGIuZhL~nm122|qrd77&Q}`S4Hw)1CPSDm^FLpfx1G#~R<0?(J8{7cxMV9Ci z9k?%Qg5CTG?hn?i0-RvAJ)CfOPaTnV8Iu7Bg@td81DvRnn($8Tca6m*I;WIRBfT|# z{YltZ_drTU*gfYVbNk^*kQm?!j?7p73~4}_M+uUpk3SL7?Fj2}dDwuFu%*0pgeNUy z-IdMf;eRVgvHSk{qY8fdk6bw7?E&mWWKAELy@jI&rLkqkB;8o&c$(j_`}a}Zonjy< z*G$jCL*;4g%`WWf%bp~Voh?Zbm`N?DrbEr-lYX4+w#8F2d=aXsrxy&287-uOv5$Hz zVe$oie#QIM%U~1z_wV0dbJf2z(4(D$a^A0ZpPWfwSh7Ngt7vOSv*}pwczjm8mhXpE z5@DTVb4d;Bko676{WjpJ_S`s(rb4Z(srSGDOMa$HBMQmN&#mjmD8^^ZnmnR`)bg`& zg}9$NizNZe^VrAc!I2kdX@f+%u-gmiu)9~+!$)uLqrV)ko^uXI6)Q;lIXL_n4NIG2 zJGtyZRm`MyZd^B`wS8|J{>1L~dWh6jT-iYxmG-}JrctfusCbQjFz;ESvFcrNqg1ECV=3AH!5!dU)Tw(r>6 z=^9~$dUx*ZVkx80#=n`(RWs?Y$!#iOI~xe_XNsQod>lKn z{<_D|*s+|hb3I)FXZG;&RY*R{Yv)sGjQ9%J%ec3- znFtE230fsAZeA`RfCvn3eg&2Hz0dEtrN zkPlFY!NPPMfC*jTg=2iq`hd7`a)pOoM{xNK#5H)EyhzL{&COA})kYF<8a@RM>9#oZ($RQxb=}d}G*^&WxwU``cNm(23B zPN^SYT0_Ki|7{4y1Q+*HUdSeFr*x0hZTt53^S<&DvE6UFpHdmM=2;v_so)cuM7w_^49q)5lXkmjZ~Kh( z)Zv{V=@72QstXeE!Y2k8iwa|=!L@ui%&1Y|t+IB`{(7H#0hx)yTn|5;JH(zhI1IS@ z^gE@KK9BNzgw=J?=%*{Y$Tg5pt{ulJlnzC_+*PXc zF9+Wl$Fr^~#LnaR*%sDI{_gIkENN(Z9X&E3hH)Ox($W+c^@xwJJmbp7**Ojb-kCVs z7IJDX_mn^^_2N}O8m+{t4D#txcQ+7whe(xxuzHb^VN#lS@o@P%&Gys+zY2n_{XagK zbzQx$s8IYj1y4>+R(XHJCp7CyM_)fgx9s1ee&FZ>Dk_$;gx~_0UffhUuUV^aSGi%; zzft_KI{)oGAyP@7X}XrAfl~SF>rksLBr||)o;&&56<)yH0C|}zu{-z=;fCrnEyYUt He}eu4TJ=Fm literal 0 HcmV?d00001 diff --git a/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-mobile-long-content-empty-open.png b/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-mobile-long-content-empty-open.png new file mode 100644 index 0000000000000000000000000000000000000000..b5fda3cfec6f449dea882489f4614855bf5c779b GIT binary patch literal 6436 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 Al>h($ literal 0 HcmV?d00001 diff --git a/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-mobile-multiple-chips-empty-closed.png b/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-mobile-multiple-chips-empty-closed.png new file mode 100644 index 0000000000000000000000000000000000000000..ec93aece61ccd20604ba3a4f5a33853913c3d040 GIT binary patch literal 23592 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 literal 0 HcmV?d00001 diff --git a/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-mobile-multiple-chips-empty-open.png b/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-mobile-multiple-chips-empty-open.png new file mode 100644 index 0000000000000000000000000000000000000000..3e533b3d25cae428fc5c40b13cd7417444ed816a GIT binary patch literal 23700 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 b36{M78iz-uc5)qb8()LdGsYI_oQ(JfrA+L4 literal 0 HcmV?d00001 diff --git a/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-mobile-multiple-empty-closed.png b/e2e/cypress/snapshots/base/visual/bal-dropdown.visual.cy.ts/dropdown-mobile-multiple-empty-closed.png new file mode 100644 index 0000000000000000000000000000000000000000..b163c668e96bc28a4d52c10af6842e1d16cec433 GIT binary patch literal 2593 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 Dg|{9C literal 0 HcmV?d00001 diff --git a/e2e/cypress/snapshots/base/visual/bal-option-list.visual.cy.ts/option-basic.png b/e2e/cypress/snapshots/base/visual/bal-option-list.visual.cy.ts/option-basic.png new file mode 100644 index 0000000000000000000000000000000000000000..b89e6ccf1a0d54fd25b91010cc9307ef81f0f725 GIT binary patch literal 20925 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 literal 0 HcmV?d00001 diff --git a/e2e/cypress/snapshots/base/visual/bal-option.visual.cy.ts/option-listbox.png b/e2e/cypress/snapshots/base/visual/bal-option.visual.cy.ts/option-listbox.png new file mode 100644 index 0000000000000000000000000000000000000000..0f661d979481d06403a8fc388335207a7ae96188 GIT binary patch literal 8525 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 UvSILV5+_s?H01Lizk2sS0FAq56951J literal 0 HcmV?d00001 diff --git a/e2e/cypress/snapshots/report.html b/e2e/cypress/snapshots/report.html deleted file mode 100644 index 0f64eae156..0000000000 --- a/e2e/cypress/snapshots/report.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - Comparison Report - REG - - -
- - - - - diff --git a/e2e/cypress/support/lib/visuals/command.ts b/e2e/cypress/support/lib/visuals/command.ts index 0f6e421d0a..ac63a28462 100644 --- a/e2e/cypress/support/lib/visuals/command.ts +++ b/e2e/cypress/support/lib/visuals/command.ts @@ -35,6 +35,8 @@ export type CypressConfigEnv = { /** Add custom cypress command to compare image snapshots of an element or the window. */ function addCompareSnapshotCommand(screenshotOptions?: ScreenshotOptions): void { + console.log('=> visualRegressionType is set to ', Cypress.env('visualRegressionType')) + Cypress.Commands.add( 'testVisual', { prevSubject: 'optional' }, @@ -96,6 +98,11 @@ function prepareOptions( 'Environment variables under "visualRegression" apper to be missing. Please consult the plugin documentation for the proper setup.', ) } + if (Cypress.env('visualRegressionType') === undefined) { + throw new Error( + 'Environment variables under "visualRegressionType" apper to be missing. Please consult the plugin documentation for the proper setup.', + ) + } const options: VisualRegressionOptions = { type: (Cypress.env('visualRegressionType') as TypeOption) || 'regression', screenshotName: name, diff --git a/e2e/project.json b/e2e/project.json index 5c471efc92..ada9421d07 100644 --- a/e2e/project.json +++ b/e2e/project.json @@ -6,8 +6,7 @@ "executor": "nx:run-commands", "dependsOn": [{ "projects": ["core"], "target": "build" }], "options": { - "command": "concurrently --prefix=\">\" --hide=\"1\" \"npx nx run core:serve\" \"npx nx run e2e:serve\"", - "parallel": true + "command": "concurrently --prefix=\">\" --hide=\"1\" \"npx nx run core:serve\" \"npx nx run e2e:serve\"" } }, "serve": { diff --git a/packages/angular-legacy/src/app-initialize.ts b/packages/angular-legacy/src/app-initialize.ts index 7e2eea8040..59f16ead0a 100644 --- a/packages/angular-legacy/src/app-initialize.ts +++ b/packages/angular-legacy/src/app-initialize.ts @@ -11,7 +11,14 @@ export const appInitialize = (config: BaloiseDesignSystemAngularConfig, doc: Doc const win: Window | undefined = doc.defaultView as any if (win && typeof (window as any) !== 'undefined') { - initializeBaloiseDesignSystem(config.defaults, undefined, win) + initializeBaloiseDesignSystem( + { + ...config.defaults, + httpFormSubmit: false, + }, + undefined, + win, + ) const aelFn = '__zone_symbol__addEventListener' in (doc.body as any) ? '__zone_symbol__addEventListener' : 'addEventListener' diff --git a/packages/angular-module/src/app-initialize.ts b/packages/angular-module/src/app-initialize.ts index f4d480a7c3..3186705684 100644 --- a/packages/angular-module/src/app-initialize.ts +++ b/packages/angular-module/src/app-initialize.ts @@ -31,7 +31,14 @@ export const appInitialize = (config: BaloiseDesignSystemAngularConfig, doc: Doc }, } - initializeBaloiseDesignSystem(config.defaults, platformConfig, win) + initializeBaloiseDesignSystem( + { + ...config.defaults, + httpFormSubmit: false, + }, + platformConfig, + win, + ) } } } diff --git a/packages/angular/src/app-initialize.ts b/packages/angular/src/app-initialize.ts index fc55184250..5da4ee2406 100644 --- a/packages/angular/src/app-initialize.ts +++ b/packages/angular/src/app-initialize.ts @@ -30,7 +30,14 @@ export const appInitialize = (config: BaloiseDesignSystemAngularConfig, doc: Doc }, } - initializeBaloiseDesignSystem(config.defaults, platformConfig, win) + initializeBaloiseDesignSystem( + { + ...config.defaults, + httpFormSubmit: false, + }, + platformConfig, + win, + ) } } } diff --git a/packages/angular/src/bundles.ts b/packages/angular/src/bundles.ts index 4c351304a6..2772da378a 100644 --- a/packages/angular/src/bundles.ts +++ b/packages/angular/src/bundles.ts @@ -3,6 +3,7 @@ import { BalCheckboxGroup, BalDate, BalDatepicker, + BalDropdown, BalInput, BalInputDate, BalInputSlider, @@ -87,6 +88,8 @@ import { BalTag, BalTagGroup, BalText, + BalOption, + BalOptionList, } from './generated/proxies' export const BalAccordionBundle = [BalAccordion, BalAccordionDetails, BalAccordionSummary, BalAccordionTrigger] as const @@ -155,6 +158,8 @@ export const BalFieldBundle = [ BalFieldHint, ] as const +export const BalDropdownBundle = [BalDropdown, BalOptionList, BalOption] as const + /* Component Sections */ export const BalFormBundle = [ @@ -171,6 +176,7 @@ export const BalFormBundle = [ ...BalCheckboxBundle, BalDate, BalDatepicker, + ...BalDropdownBundle, BalInputDate, BalInputStepper, BalInputSlider, @@ -209,6 +215,9 @@ export const BalComponentBundle = [ BalDataLabel, BalDataValue, BalDivider, + BalDropdown, + BalOption, + BalOptionList, BalField, BalFieldControl, BalFieldHint, diff --git a/packages/angular/src/components/bal-dropdown.ts b/packages/angular/src/components/bal-dropdown.ts new file mode 100644 index 0000000000..1df694f0fe --- /dev/null +++ b/packages/angular/src/components/bal-dropdown.ts @@ -0,0 +1,75 @@ +import { + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + ElementRef, + EventEmitter, + HostListener, + Injector, + NgZone, + forwardRef, +} from '@angular/core' +import { NG_VALUE_ACCESSOR } from '@angular/forms' + +import type { Components } from '@baloise/ds-core' +import { defineCustomElement as defineOptionDropdown } from '@baloise/ds-core/components/bal-dropdown' +import { defineCustomElement as defineOptionList } from '@baloise/ds-core/components/bal-option-list' +import { defineCustomElement as defineOption } from '@baloise/ds-core/components/bal-option' + +import { ProxyCmp, proxyOutputs } from '../generated/angular-component-lib/utils' +import { ValueAccessor } from '../generated/value-accessor' +import { BalDropdownInputs, BalDropdownMethods, BalDropdownOutputs } from '../generated/meta' + +const accessorProvider = { + provide: NG_VALUE_ACCESSOR, + useExisting: /*@__PURE__*/ forwardRef(() => BalDropdown), + multi: true, +} + +@ProxyCmp({ + defineCustomElementFn: () => { + defineOption() + defineOptionList() + defineOptionDropdown() + }, + inputs: BalDropdownInputs, + methods: BalDropdownMethods, +}) +@Component({ + selector: 'bal-dropdown', + changeDetection: ChangeDetectionStrategy.OnPush, + template: '', + providers: [accessorProvider], + standalone: true, + inputs: BalDropdownInputs, + outputs: BalDropdownOutputs, +}) +export class BalDropdown extends ValueAccessor { + protected el: HTMLElement + + constructor( + c: ChangeDetectorRef, + r: ElementRef, + protected z: NgZone, + injector: Injector, + ) { + super(injector, r) + c.detach() + this.el = r.nativeElement + proxyOutputs(this, this.el, BalDropdownOutputs) + } + + @HostListener('balChange', ['$event']) + handleBalChange(event: CustomEvent): void { + this.handleValueChange(event) + } +} + +export declare interface BalDropdown extends Components.BalDropdown { + /** Emitted when a option got selected. */ + balChange: EventEmitter> + /** Emitted when the input loses focus. */ + balBlur: EventEmitter> + /** Emitted when the input has focus. */ + balFocus: EventEmitter> +} diff --git a/packages/angular/src/components/index.ts b/packages/angular/src/components/index.ts index 8cf50209c2..fe1a2a9b97 100644 --- a/packages/angular/src/components/index.ts +++ b/packages/angular/src/components/index.ts @@ -10,5 +10,6 @@ export * from './bal-input' export * from './bal-number-input' export * from './bal-radio-group' export * from './bal-select' +export * from './bal-dropdown' export * from './bal-textarea' export * from './bal-time-input' diff --git a/packages/core/config/stencil.bindings.angular.ts b/packages/core/config/stencil.bindings.angular.ts index a8ede96e04..87979219f6 100644 --- a/packages/core/config/stencil.bindings.angular.ts +++ b/packages/core/config/stencil.bindings.angular.ts @@ -7,6 +7,7 @@ export const angularValueAccessorBindings: ValueAccessorConfig[] = [ 'bal-radio-group', 'bal-checkbox-group', 'bal-select', + 'bal-dropdown', 'bal-datepicker', 'bal-date', 'bal-input-date', @@ -49,6 +50,7 @@ export const AngularGenerator = () => 'bal-checkbox', 'bal-date', 'bal-datepicker', + 'bal-dropdown', 'bal-file-upload', 'bal-input-date', 'bal-input-slider', diff --git a/packages/core/src/components.d.ts b/packages/core/src/components.d.ts index 49461c5925..76a731a177 100644 --- a/packages/core/src/components.d.ts +++ b/packages/core/src/components.d.ts @@ -10,6 +10,7 @@ import { AccordionState, BalAriaForm as BalAriaForm1, BalConfigState as BalConfi import { BalCarouselItemData } from "./components/bal-carousel/bal-carousel.type"; import { BalCheckboxOption } from "./components/bal-checkbox/bal-checkbox.type"; import { BalAriaForm } from "./utils/form"; +import { BalOption } from "./utils/dropdown"; import { OverlayEventDetail } from "./components/bal-modal/bal-modal.type"; import { PopoverPresentOptions } from "./components/bal-popover/bal-popover"; import { BalRadioOption } from "./components/bal-radio/bal-radio.type"; @@ -20,6 +21,7 @@ export { AccordionState, BalAriaForm as BalAriaForm1, BalConfigState as BalConfi export { BalCarouselItemData } from "./components/bal-carousel/bal-carousel.type"; export { BalCheckboxOption } from "./components/bal-checkbox/bal-checkbox.type"; export { BalAriaForm } from "./utils/form"; +export { BalOption } from "./utils/dropdown"; export { OverlayEventDetail } from "./components/bal-modal/bal-modal.type"; export { PopoverPresentOptions } from "./components/bal-popover/bal-popover"; export { BalRadioOption } from "./components/bal-radio/bal-radio.type"; @@ -965,6 +967,99 @@ export namespace Components { "region"?: string; "stickyFooter": boolean; } + interface BalDropdown { + /** + * Indicates whether the value of the control can be automatically completed by the browser. + */ + "autocomplete": BalProps.BalInputAutocomplete; + /** + * If `true`, the selected options are shown as chips + */ + "chips": boolean; + /** + * Sets the value to `[]`, the input value to ´''´ and the focus index to ´0´. + */ + "clear": () => Promise; + /** + * If `true`, a cross at the end is visible to clear the selection + */ + "clearable": boolean; + /** + * Closes the popup with option list + */ + "close": () => Promise; + "configChanged": (state: BalConfigState) => Promise; + /** + * Defines the max height of the list element + */ + "contentHeight": number; + /** + * If `true`, the user cannot interact with the option. + */ + "disabled": boolean; + /** + * Defines the filter logic of the list + */ + "filter": BalProps.BalOptionListFilter; + /** + * Returns the value of the component + */ + "getValue": () => Promise; + /** + * If `true` there will be on trigger icon visible + */ + "icon": string; + /** + * If `true`, the component will be shown as invalid + */ + "invalid": boolean; + "inverted": boolean; + /** + * Defines if the select is in a loading state. + */ + "loading": boolean; + /** + * If `true`, the user can select multiple options. + */ + "multiple": boolean; + /** + * The name of the control, which is submitted with the form data. + */ + "name": string; + /** + * Opens the popup with option list + */ + "open": () => Promise; + /** + * Steps can be passed as a property or through HTML markup. + */ + "options": BalOption[]; + /** + * Defines the placeholder of the component. Only shown when the value is empty + */ + "placeholder": string; + /** + * If `true` the element can not mutated, meaning the user can not edit the control. + */ + "readonly": boolean; + /** + * If `true`, the user must fill in a value before submitting a form. + */ + "required": boolean; + /** + * Select option by passed value + */ + "select": (newValue: string | string[]) => Promise; + "setAriaForm": (ariaForm: BalAriaForm) => Promise; + /** + * Sets the focus on the input element + */ + "setFocus": () => Promise; + /** + * The value of the selected options. + */ + "value"?: string | string[]; + } interface BalField { /** * If `true`, the element is not mutable, focusable, or even submitted with the form. The user can neither edit nor focus on the control, nor its form control descendants. @@ -2080,6 +2175,145 @@ export namespace Components { */ "value"?: number; } + interface BalOption { + /** + * If `true`, the user cannot interact with the option. + */ + "disabled": boolean; + /** + * If `true`, the option is focused. + */ + "focused": boolean; + /** + * If `true`, the option is hidden. + */ + "hidden": boolean; + /** + * If `true`, the option is shown in red. + */ + "invalid": boolean; + /** + * Label will be shown in the input element when it got selected + */ + "label": string; + /** + * If `true`, the option can present in more than one line. + */ + "multiline": boolean; + /** + * Selects or deselects the option and informs other components + */ + "select": (selected?: boolean) => Promise; + /** + * If `true`, the option is selected. + */ + "selected": boolean; + /** + * The value of the select option. This value will be returned by the parent `` element. + */ + "value": string; + } + interface BalOptionList { + /** + * Defines the max height of the list element + */ + "contentHeight"?: number; + /** + * If `true`, the user cannot interact with the option. + */ + "disabled": boolean; + /** + * Defines the filter logic of the list + */ + "filter": BalProps.BalOptionListFilter; + /** + * Filter the options by the given filter property and hides options + * @returns focusIndex + */ + "filterByContent": (search: string) => Promise; + /** + * Focus the option with the label that starts with the search property + * @returns focusIndex + */ + "focusByLabel": (search: string, config: Partial<{ select: boolean; }>) => Promise; + /** + * Focus the first visible option in the list + * @returns focusIndex + */ + "focusFirst": () => Promise; + /** + * Defines the focused option with his index value + */ + "focusIndex": number; + /** + * Focus the last visible option in the list + * @returns focusIndex + */ + "focusLast": () => Promise; + /** + * Focus the next visible option in the list + * @returns focusIndex + */ + "focusNext": () => Promise; + /** + * Focus the previous visible option in the list + * @returns focusIndex + */ + "focusPrevious": () => Promise; + /** + * Returns a list of options + */ + "getLabels": () => Promise; + /** + * Returns a list of accessible options + */ + "getOptions": () => Promise; + /** + * Returns a list of option labels + */ + "getSelectedOptions": (values?: string[]) => Promise; + /** + * Returns a list of option values + */ + "getSelectedValues": () => Promise; + /** + * Returns a list of options + */ + "getValues": () => Promise; + /** + * Id of the label element to describe this option list + */ + "labelledby"?: string; + /** + * If `true` the list supports multiple selections + */ + "multiple": boolean; + /** + * If `true`, the user must fill in a value before submitting a form. + */ + "required": boolean; + /** + * Resets the focus index to pristine and scrolls to the top of the list + */ + "resetFocus": () => Promise; + /** + * Shows or hides all options + */ + "resetHidden": (hidden?: boolean) => Promise; + /** + * Selects or deselects all options + */ + "resetSelected": (selected?: boolean) => Promise; + /** + * Selects the option with the current focus + */ + "selectByFocus": () => Promise; + "setAriaForm": (ariaForm: BalAriaForm) => Promise; + /** + * Updates options + */ + "updateSelected": (values?: string[]) => Promise; + } interface BalPagination { /** * Align the buttons to start, center or end @@ -2493,7 +2727,7 @@ export namespace Components { */ "freeSolo": boolean; /** - * Sets the focus on the input element + * Returns the value of the component */ "getValue": () => Promise; /** @@ -2650,7 +2884,7 @@ export namespace Components { /** * Defines the color of the spinner. */ - "color": 'blue' | 'white'; + "color": BalProps.BalSpinnerColor; /** * If `true` the component will not add the spinner animation svg */ @@ -2663,6 +2897,10 @@ export namespace Components { * If `true` the component is smaller */ "small": boolean; + /** + * Defines the look of the spinner + */ + "variation": BalProps.BalSpinnerVariation; } interface BalStack { /** @@ -3284,6 +3522,10 @@ export interface BalDatepickerCustomEvent extends CustomEvent { detail: T; target: HTMLBalDatepickerElement; } +export interface BalDropdownCustomEvent extends CustomEvent { + detail: T; + target: HTMLBalDropdownElement; +} export interface BalFieldCustomEvent extends CustomEvent { detail: T; target: HTMLBalFieldElement; @@ -3332,6 +3574,10 @@ export interface BalNumberInputCustomEvent extends CustomEvent { detail: T; target: HTMLBalNumberInputElement; } +export interface BalOptionCustomEvent extends CustomEvent { + detail: T; + target: HTMLBalOptionElement; +} export interface BalPaginationCustomEvent extends CustomEvent { detail: T; target: HTMLBalPaginationElement; @@ -3747,6 +3993,25 @@ declare global { prototype: HTMLBalDocAppElement; new (): HTMLBalDocAppElement; }; + interface HTMLBalDropdownElementEventMap { + "balChange": BalEvents.BalDropdownChangeDetail; + "balFocus": BalEvents.BalDropdownFocusDetail; + "balBlur": BalEvents.BalDropdownBlurDetail; + } + interface HTMLBalDropdownElement extends Components.BalDropdown, HTMLStencilElement { + addEventListener(type: K, listener: (this: HTMLBalDropdownElement, ev: BalDropdownCustomEvent) => any, options?: boolean | AddEventListenerOptions): void; + addEventListener(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; + addEventListener(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; + removeEventListener(type: K, listener: (this: HTMLBalDropdownElement, ev: BalDropdownCustomEvent) => any, options?: boolean | EventListenerOptions): void; + removeEventListener(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void; + removeEventListener(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; + removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void; + } + var HTMLBalDropdownElement: { + prototype: HTMLBalDropdownElement; + new (): HTMLBalDropdownElement; + }; interface HTMLBalFieldElementEventMap { "balFormControlDidLoad": BalEvents.BalFieldAriaLabelledByDetail; } @@ -4208,6 +4473,30 @@ declare global { prototype: HTMLBalNumberInputElement; new (): HTMLBalNumberInputElement; }; + interface HTMLBalOptionElementEventMap { + "balOptionChange": BalEvents.BalOptionChangeDetail; + "balOptionFocus": BalEvents.BalOptionFocusDetail; + } + interface HTMLBalOptionElement extends Components.BalOption, HTMLStencilElement { + addEventListener(type: K, listener: (this: HTMLBalOptionElement, ev: BalOptionCustomEvent) => any, options?: boolean | AddEventListenerOptions): void; + addEventListener(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; + addEventListener(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; + removeEventListener(type: K, listener: (this: HTMLBalOptionElement, ev: BalOptionCustomEvent) => any, options?: boolean | EventListenerOptions): void; + removeEventListener(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void; + removeEventListener(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; + removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void; + } + var HTMLBalOptionElement: { + prototype: HTMLBalOptionElement; + new (): HTMLBalOptionElement; + }; + interface HTMLBalOptionListElement extends Components.BalOptionList, HTMLStencilElement { + } + var HTMLBalOptionListElement: { + prototype: HTMLBalOptionListElement; + new (): HTMLBalOptionListElement; + }; interface HTMLBalPaginationElementEventMap { "balChange": BalEvents.BalPaginationChangeDetail; } @@ -4655,6 +4944,7 @@ declare global { "bal-datepicker": HTMLBalDatepickerElement; "bal-divider": HTMLBalDividerElement; "bal-doc-app": HTMLBalDocAppElement; + "bal-dropdown": HTMLBalDropdownElement; "bal-field": HTMLBalFieldElement; "bal-field-control": HTMLBalFieldControlElement; "bal-field-hint": HTMLBalFieldHintElement; @@ -4704,6 +4994,8 @@ declare global { "bal-notices": HTMLBalNoticesElement; "bal-notification": HTMLBalNotificationElement; "bal-number-input": HTMLBalNumberInputElement; + "bal-option": HTMLBalOptionElement; + "bal-option-list": HTMLBalOptionListElement; "bal-pagination": HTMLBalPaginationElement; "bal-popover": HTMLBalPopoverElement; "bal-popover-content": HTMLBalPopoverContentElement; @@ -5727,6 +6019,85 @@ declare namespace LocalJSX { "region"?: string; "stickyFooter"?: boolean; } + interface BalDropdown { + /** + * Indicates whether the value of the control can be automatically completed by the browser. + */ + "autocomplete"?: BalProps.BalInputAutocomplete; + /** + * If `true`, the selected options are shown as chips + */ + "chips"?: boolean; + /** + * If `true`, a cross at the end is visible to clear the selection + */ + "clearable"?: boolean; + /** + * Defines the max height of the list element + */ + "contentHeight"?: number; + /** + * If `true`, the user cannot interact with the option. + */ + "disabled"?: boolean; + /** + * Defines the filter logic of the list + */ + "filter"?: BalProps.BalOptionListFilter; + /** + * If `true` there will be on trigger icon visible + */ + "icon"?: string; + /** + * If `true`, the component will be shown as invalid + */ + "invalid"?: boolean; + "inverted"?: boolean; + /** + * Defines if the select is in a loading state. + */ + "loading"?: boolean; + /** + * If `true`, the user can select multiple options. + */ + "multiple"?: boolean; + /** + * The name of the control, which is submitted with the form data. + */ + "name"?: string; + /** + * Emitted when the input loses focus. + */ + "onBalBlur"?: (event: BalDropdownCustomEvent) => void; + /** + * Emitted when a option got selected. + */ + "onBalChange"?: (event: BalDropdownCustomEvent) => void; + /** + * Emitted when the input has focus. + */ + "onBalFocus"?: (event: BalDropdownCustomEvent) => void; + /** + * Steps can be passed as a property or through HTML markup. + */ + "options"?: BalOption[]; + /** + * Defines the placeholder of the component. Only shown when the value is empty + */ + "placeholder"?: string; + /** + * If `true` the element can not mutated, meaning the user can not edit the control. + */ + "readonly"?: boolean; + /** + * If `true`, the user must fill in a value before submitting a form. + */ + "required"?: boolean; + /** + * The value of the selected options. + */ + "value"?: string | string[]; + } interface BalField { /** * If `true`, the element is not mutable, focusable, or even submitted with the form. The user can neither edit nor focus on the control, nor its form control descendants. @@ -6902,6 +7273,75 @@ declare namespace LocalJSX { */ "value"?: number; } + interface BalOption { + /** + * If `true`, the user cannot interact with the option. + */ + "disabled"?: boolean; + /** + * If `true`, the option is focused. + */ + "focused"?: boolean; + /** + * If `true`, the option is hidden. + */ + "hidden"?: boolean; + /** + * If `true`, the option is shown in red. + */ + "invalid"?: boolean; + /** + * Label will be shown in the input element when it got selected + */ + "label"?: string; + /** + * If `true`, the option can present in more than one line. + */ + "multiline"?: boolean; + /** + * Emitted when the option gets selected or unselected + */ + "onBalOptionChange"?: (event: BalOptionCustomEvent) => void; + "onBalOptionFocus"?: (event: BalOptionCustomEvent) => void; + /** + * If `true`, the option is selected. + */ + "selected"?: boolean; + /** + * The value of the select option. This value will be returned by the parent `` element. + */ + "value"?: string; + } + interface BalOptionList { + /** + * Defines the max height of the list element + */ + "contentHeight"?: number; + /** + * If `true`, the user cannot interact with the option. + */ + "disabled"?: boolean; + /** + * Defines the filter logic of the list + */ + "filter"?: BalProps.BalOptionListFilter; + /** + * Defines the focused option with his index value + */ + "focusIndex"?: number; + /** + * Id of the label element to describe this option list + */ + "labelledby"?: string; + /** + * If `true` the list supports multiple selections + */ + "multiple"?: boolean; + /** + * If `true`, the user must fill in a value before submitting a form. + */ + "required"?: boolean; + } interface BalPagination { /** * Align the buttons to start, center or end @@ -7479,7 +7919,7 @@ declare namespace LocalJSX { /** * Defines the color of the spinner. */ - "color"?: 'blue' | 'white'; + "color"?: BalProps.BalSpinnerColor; /** * If `true` the component will not add the spinner animation svg */ @@ -7492,6 +7932,10 @@ declare namespace LocalJSX { * If `true` the component is smaller */ "small"?: boolean; + /** + * Defines the look of the spinner + */ + "variation"?: BalProps.BalSpinnerVariation; } interface BalStack { /** @@ -8107,6 +8551,7 @@ declare namespace LocalJSX { "bal-datepicker": BalDatepicker; "bal-divider": BalDivider; "bal-doc-app": BalDocApp; + "bal-dropdown": BalDropdown; "bal-field": BalField; "bal-field-control": BalFieldControl; "bal-field-hint": BalFieldHint; @@ -8156,6 +8601,8 @@ declare namespace LocalJSX { "bal-notices": BalNotices; "bal-notification": BalNotification; "bal-number-input": BalNumberInput; + "bal-option": BalOption; + "bal-option-list": BalOptionList; "bal-pagination": BalPagination; "bal-popover": BalPopover; "bal-popover-content": BalPopoverContent; @@ -8226,6 +8673,7 @@ declare module "@stencil/core" { "bal-datepicker": LocalJSX.BalDatepicker & JSXBase.HTMLAttributes; "bal-divider": LocalJSX.BalDivider & JSXBase.HTMLAttributes; "bal-doc-app": LocalJSX.BalDocApp & JSXBase.HTMLAttributes; + "bal-dropdown": LocalJSX.BalDropdown & JSXBase.HTMLAttributes; "bal-field": LocalJSX.BalField & JSXBase.HTMLAttributes; "bal-field-control": LocalJSX.BalFieldControl & JSXBase.HTMLAttributes; "bal-field-hint": LocalJSX.BalFieldHint & JSXBase.HTMLAttributes; @@ -8275,6 +8723,8 @@ declare module "@stencil/core" { "bal-notices": LocalJSX.BalNotices & JSXBase.HTMLAttributes; "bal-notification": LocalJSX.BalNotification & JSXBase.HTMLAttributes; "bal-number-input": LocalJSX.BalNumberInput & JSXBase.HTMLAttributes; + "bal-option": LocalJSX.BalOption & JSXBase.HTMLAttributes; + "bal-option-list": LocalJSX.BalOptionList & JSXBase.HTMLAttributes; "bal-pagination": LocalJSX.BalPagination & JSXBase.HTMLAttributes; "bal-popover": LocalJSX.BalPopover & JSXBase.HTMLAttributes; "bal-popover-content": LocalJSX.BalPopoverContent & JSXBase.HTMLAttributes; diff --git a/packages/core/src/components/bal-checkbox/bal-checkbox.tsx b/packages/core/src/components/bal-checkbox/bal-checkbox.tsx index a0b8698ee9..fffaf108c9 100644 --- a/packages/core/src/components/bal-checkbox/bal-checkbox.tsx +++ b/packages/core/src/components/bal-checkbox/bal-checkbox.tsx @@ -20,6 +20,7 @@ import { BalCheckboxOption } from './bal-checkbox.type' import { Loggable, Logger, LogInstance } from '../../utils/log' import { FOCUS_KEYS } from '../../utils/focus-visible' import { BalAriaForm, BalAriaFormLinking, defaultBalAriaForm } from '../../utils/form' +import { ariaBooleanToString } from '../../utils/aria' @Component({ tag: 'bal-checkbox', @@ -424,8 +425,8 @@ export class Checkbox implements ComponentInterface, FormInput, Loggable, B return ( , Loggable, B aria-labelledby={labelId} aria-describedby={this.ariaForm.messageId} aria-invalid={this.invalid === true ? 'true' : 'false'} - aria-disabled={this.disabled ? 'true' : null} + aria-disabled={ariaBooleanToString(this.disabled)} aria-checked={`${this.checked}`} + aria-hidden={ariaBooleanToString(this.nonSubmit)} name={this.name} value={this.value} checked={this.checked} diff --git a/packages/core/src/components/bal-checkbox/bal-radio-checkbox.vars.sass b/packages/core/src/components/bal-checkbox/bal-radio-checkbox.vars.sass index 54ebe4288e..76e5e06324 100644 --- a/packages/core/src/components/bal-checkbox/bal-radio-checkbox.vars.sass +++ b/packages/core/src/components/bal-checkbox/bal-radio-checkbox.vars.sass @@ -59,9 +59,21 @@ * @prop --bal-radio-checkbox-button-border-color-checked: tbd * @prop --bal-radio-checkbox-button-border-color-disabled: tbd * @prop --bal-radio-checkbox-button-border-color-invalid: tbd + * @prop --bal-radio-checkbox-symbol-size: tbd + * @prop --bal-radio-checkbox-symbol-width: tbd + * @prop --bal-radio-checkbox-symbol-height: tbd + * @prop --bal-radio-checkbox-symbol-left: tbd + * @prop --bal-radio-checkbox-symbol-margin-top: tbd + * @prop --bal-radio-checkbox-label-min-height: tbd */ :root + --bal-radio-checkbox-symbol-size: 1.5rem + --bal-radio-checkbox-symbol-width: calc(0.5rem - 1px) + --bal-radio-checkbox-symbol-height: calc(0.875rem - 1px) + --bal-radio-checkbox-symbol-left: calc(0.5rem + 1px) + --bal-radio-checkbox-symbol-margin-top: 0.25rem + --bal-radio-checkbox-label-min-height: 1.5rem // // background colors --bal-radio-checkbox-select-button-background-hover: var(--bal-color-grey-2) diff --git a/packages/core/src/components/bal-checkbox/radio-checkbox.sass b/packages/core/src/components/bal-checkbox/radio-checkbox.sass index ec727b41af..eab59d5ef4 100644 --- a/packages/core/src/components/bal-checkbox/radio-checkbox.sass +++ b/packages/core/src/components/bal-checkbox/radio-checkbox.sass @@ -102,7 +102,7 @@ bal-radio .bal-radio-checkbox__label align-items: center justify-content: center text-align: left - min-height: 1.5rem + min-height: var(--bal-radio-checkbox-label-min-height) font-family: var(--bal-font-family-text) // // inner text span element @@ -134,12 +134,12 @@ bal-radio .bal-radio-checkbox__label position: absolute left: 0 top: 0.25rem - height: 1.5rem - width: 1.5rem + height: var(--bal-radio-checkbox-symbol-size) + width: var(--bal-radio-checkbox-symbol-size) background-color: transparent background-position: center background-repeat: no-repeat - background-size: 1.5rem 1.5rem + background-size: var(--bal-radio-checkbox-symbol-size) var(--bal-radio-checkbox-symbol-size) &::before content: '' border-style: var(--bal-form-field-control-border-style) @@ -171,10 +171,10 @@ bal-radio .bal-radio-checkbox__label border-bottom-width: 2px border-left: 0 border-radius: 1px - width: calc(0.5rem - 1px) - height: calc(0.875rem - 1px) - left: calc(0.5rem + 1px) - margin-top: 0.25rem + width: var(--bal-radio-checkbox-symbol-width) + height: var(--bal-radio-checkbox-symbol-height) + left: var(--bal-radio-checkbox-symbol-left) + margin-top: var(--bal-radio-checkbox-symbol-margin-top) transform: rotate(45deg) // // Symbol colors main, inverted and background diff --git a/packages/core/src/components/bal-close/bal-close.tsx b/packages/core/src/components/bal-close/bal-close.tsx index aab4766432..ea8fb9ebd8 100644 --- a/packages/core/src/components/bal-close/bal-close.tsx +++ b/packages/core/src/components/bal-close/bal-close.tsx @@ -53,6 +53,7 @@ export class Close implements ComponentInterface, BalConfigObserver { type="button" aria-label={label} title={label} + tabindex={-1} class={{ ...buttonEl.class(), ...buttonEl.modifier('inverted').class(this.inverted), diff --git a/packages/core/src/components/bal-date/bal-date-calendar/components/bal-date-calendar__list.tsx b/packages/core/src/components/bal-date/bal-date-calendar/components/bal-date-calendar__list.tsx index 86c20ddd07..df5c984a85 100644 --- a/packages/core/src/components/bal-date/bal-date-calendar/components/bal-date-calendar__list.tsx +++ b/packages/core/src/components/bal-date/bal-date-calendar/components/bal-date-calendar__list.tsx @@ -37,7 +37,7 @@ export const CalendarList: FunctionalComponent = ({ ref={el => (ref ? ref(el) : undefined)} > {list.map(item => ( -
  • +
  • + + Submit + Reset + diff --git a/packages/core/src/components/bal-spinner/bal-spinner.interfaces.ts b/packages/core/src/components/bal-spinner/bal-spinner.interfaces.ts new file mode 100644 index 0000000000..7c0e4a3a68 --- /dev/null +++ b/packages/core/src/components/bal-spinner/bal-spinner.interfaces.ts @@ -0,0 +1,11 @@ +/* eslint-disable no-unused-vars */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +// eslint-disable-next-line @typescript-eslint/triple-slash-reference +/// + +namespace BalProps { + export type BalSpinnerColor = 'blue' | 'white' + export type BalSpinnerVariation = 'logo' | 'circle' +} + +namespace BalEvents {} diff --git a/packages/core/src/components/bal-spinner/bal-spinner.sass b/packages/core/src/components/bal-spinner/bal-spinner.sass index 53b8fc8845..350b788961 100644 --- a/packages/core/src/components/bal-spinner/bal-spinner.sass +++ b/packages/core/src/components/bal-spinner/bal-spinner.sass @@ -1,10 +1,44 @@ @import '@baloise/ds-styles/sass/mixins' +// Spinner +// -------------------------------------------------- + bal-spinner, .bal-spinner text-align: center display: flex justify-content: center align-content: center + width: 4rem svg transform: unset !important + +.bal-spinner--small + width: 2rem + +// Circle +// -------------------------------------------------- + +.bal-spinner--circle + margin: auto + border-width: 0.25rem + border-style: solid + border-color: var(--bal-color-grey) + border-radius: 50% + border-top-color: var(--bal-color-primary) + width: 1.5rem + height: 1.5rem + +.bal-spinner--circle.bal-spinner--small + width: 1.125rem + height: 1.125rem + border-width: 0.2rem + +.bal-spinner--circle.bal-spinner--animated + animation: spinner 1.6s linear infinite + +@keyframes spinner + 0% + transform: rotate(0deg) + 100% + transform: rotate(360deg) diff --git a/packages/core/src/components/bal-spinner/bal-spinner.tsx b/packages/core/src/components/bal-spinner/bal-spinner.tsx index e81a476b34..013b7ab2b2 100644 --- a/packages/core/src/components/bal-spinner/bal-spinner.tsx +++ b/packages/core/src/components/bal-spinner/bal-spinner.tsx @@ -1,8 +1,10 @@ -import { Component, h, Host, Prop, Element, Watch, ComponentInterface } from '@stencil/core' +import { Component, h, Host, Prop, Element, Watch, ComponentInterface, State } from '@stencil/core' import type { AnimationItem } from 'lottie-web/build/player/lottie_light_html' import { rIC } from '../../utils/helpers' import { Loggable, Logger, LogInstance } from '../../utils/log' import { raf } from '../../utils/helpers' +import { BEM } from '../../utils/bem' +import { BalConfigObserver, BalConfigState, ListenToConfig, defaultConfig } from '../../utils/config' type SpinnerAnimationFunction = (el: HTMLElement, color: string) => AnimationItem @@ -10,13 +12,15 @@ type SpinnerAnimationFunction = (el: HTMLElement, color: string) => AnimationIte tag: 'bal-spinner', styleUrl: 'bal-spinner.sass', }) -export class Spinner implements ComponentInterface, Loggable { +export class Spinner implements ComponentInterface, Loggable, BalConfigObserver { private animationItem!: AnimationItem private animationFunction?: SpinnerAnimationFunction private currentRaf: number | undefined log!: LogInstance + @State() animated = defaultConfig.animated + @Logger('bal-spinner') createLogger(log: LogInstance) { this.log = log @@ -52,20 +56,39 @@ export class Spinner implements ComponentInterface, Loggable { /** * Defines the color of the spinner. */ - @Prop() color: 'blue' | 'white' = 'blue' + @Prop() color: BalProps.BalSpinnerColor = 'blue' /** * If `true` the component is smaller */ @Prop() small = false + /** + * Defines the look of the spinner + */ + @Prop() variation: BalProps.BalSpinnerVariation = 'logo' + @Watch('variation') + variationWatcher(newValue: BalProps.BalSpinnerVariation, oldValue: BalProps.BalSpinnerVariation) { + if (newValue !== oldValue) { + if (this.variation === 'circle') { + this.destroy() + } else { + this.animate() + } + } + } + /** * LIFECYCLE * ------------------------------------------------------ */ componentDidLoad() { - this.animate() + if (this.variation === 'logo') { + this.animate() + } else { + this.destroy() + } } disconnectedCallback() { @@ -74,12 +97,30 @@ export class Spinner implements ComponentInterface, Loggable { } } + /** + * LISTENERS + * ------------------------------------------------------ + */ + + @ListenToConfig() + configChanged(state: BalConfigState): void { + this.animated = state.animated + if (state.animated === false) { + this.destroy() + } + } + /** * PRIVATE METHODS * ------------------------------------------------------ */ private animate = async () => { + if (!this.animated) { + this.destroy() + return + } + await this.load() if (this.currentRaf !== undefined) { @@ -104,6 +145,10 @@ export class Spinner implements ComponentInterface, Loggable { } private shouldAnimate = () => { + if (this.variation !== 'logo') { + return false + } + if (typeof (window as any) === 'undefined') { return false } @@ -147,6 +192,19 @@ export class Spinner implements ComponentInterface, Loggable { */ render() { - return + const block = BEM.block('spinner') + + return ( + + ) } } diff --git a/packages/core/src/components/bal-spinner/test/bal-spinner.cy.html b/packages/core/src/components/bal-spinner/test/bal-spinner.cy.html index fd6f97ad75..da45dd65f7 100644 --- a/packages/core/src/components/bal-spinner/test/bal-spinner.cy.html +++ b/packages/core/src/components/bal-spinner/test/bal-spinner.cy.html @@ -23,10 +23,16 @@

    Small

    Inverted

    -
    +
    + +

    Circle Variation

    +
    + + +
    diff --git a/packages/core/src/components/bal-tag/bal-tag.sass b/packages/core/src/components/bal-tag/bal-tag.sass index 2eedce0e5e..4193c6d690 100644 --- a/packages/core/src/components/bal-tag/bal-tag.sass +++ b/packages/core/src/components/bal-tag/bal-tag.sass @@ -68,8 +68,8 @@ gap: .25rem // sizes +modifier(is-small) - font-size: var(--bal-text-size-small) !important - font-weight: var(--bal-font-weight-regular) !important + font-size: var(--bal-tag-size-small-font-size) !important + font-weight: var(--bal-tag-size-small-font-weight) !important +modifier(is-medium) font-size: var(--bal-text-size-medium) !important +modifier(is-large) diff --git a/packages/core/src/components/bal-tag/bal-tag.vars.sass b/packages/core/src/components/bal-tag/bal-tag.vars.sass index 54cbeb19c7..443f9bbab3 100644 --- a/packages/core/src/components/bal-tag/bal-tag.vars.sass +++ b/packages/core/src/components/bal-tag/bal-tag.vars.sass @@ -85,3 +85,7 @@ --bal-tag-text-green-light: var(--bal-color-primary) --bal-tag-text-invalid: var(--bal-color-text-white) --bal-tag-text-disabled: var(--bal-color-text-white) + // + // size small + --bal-tag-size-small-font-size: var(--bal-text-size-small) + --bal-tag-size-small-font-weight: var(--bal-font-weight-regular) diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 26e090809e..0139383f6c 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -57,6 +57,7 @@ export * from './components/bal-label/bal-label.i18n' * Utils */ export { initializeBaloiseDesignSystem as initialize, initializeBaloiseDesignSystem } from './initialize' +export { newBalOption } from './utils/dropdown/option' export { newBalStepOption } from './components/bal-steps/bal-step.util' export { newBalTabOption } from './components/bal-tabs/bal-tab.util' export { newBalCheckboxOption } from './components/bal-checkbox/utils/bal-checkbox.util' diff --git a/packages/core/src/interfaces.d.ts b/packages/core/src/interfaces.d.ts index 8b221bbaf6..ca5b29c43b 100644 --- a/packages/core/src/interfaces.d.ts +++ b/packages/core/src/interfaces.d.ts @@ -13,6 +13,7 @@ import './components/bal-card/bal-card.interfaces' import './components/bal-carousel/bal-carousel.interfaces' import './components/bal-close/bal-close.interfaces' import './components/bal-data/bal-data.interfaces' +import './components/bal-dropdown/bal-dropdown.interfaces' import './components/bal-icon/bal-icon.interfaces' import './components/bal-list/bal-list.interfaces' import './components/bal-logo/bal-logo.interfaces' @@ -24,6 +25,8 @@ import './components/bal-nav/bal-nav-menu-bar/bal-nav-menu-bar.interfaces' import './components/bal-nav/bal-nav-menu-flyout/bal-nav-menu-flyout.interfaces' import './components/bal-nav/bal-nav.interfaces' import './components/bal-navbar/bal-navbar.interfaces' +import './components/bal-option/bal-option.interfaces' +import './components/bal-option-list/bal-option-list.interfaces' import './components/bal-pagination/bal-pagination.interfaces' import './components/bal-popover/bal-popover.interfaces' import './components/bal-popup/bal-popup.interfaces' @@ -40,6 +43,7 @@ import './components/bal-text/bal-text.interfaces' import './components/bal-content/bal-content.interfaces' import './components/bal-divider/bal-divider.interfaces' import './components/bal-stack/bal-stack.interfaces' +import './components/bal-spinner/bal-spinner.interfaces' import './components/bal-checkbox/bal-checkbox.interfaces' import './components/bal-date/bal-date.interfaces' import './components/bal-date/bal-date-calendar/bal-date-calendar.interfaces' diff --git a/packages/core/src/utils/aria.ts b/packages/core/src/utils/aria.ts new file mode 100644 index 0000000000..961c2e6c75 --- /dev/null +++ b/packages/core/src/utils/aria.ts @@ -0,0 +1 @@ +export const ariaBooleanToString = (bool?: boolean) => (!!bool ? 'true' : 'false') diff --git a/packages/core/src/utils/config/config.default.ts b/packages/core/src/utils/config/config.default.ts index 97c5228db3..6a1a01caad 100644 --- a/packages/core/src/utils/config/config.default.ts +++ b/packages/core/src/utils/config/config.default.ts @@ -68,6 +68,7 @@ export const defaultConfig: BalConfigState = { fallbackLanguage: 'de', logger: defaultLoggerConfig, animated: true, + httpFormSubmit: true, } export const defaultLocale = `${defaultConfig.language}-${defaultConfig.region}` diff --git a/packages/core/src/utils/config/config.ts b/packages/core/src/utils/config/config.ts index e955de6a7e..8e35d6073a 100644 --- a/packages/core/src/utils/config/config.ts +++ b/packages/core/src/utils/config/config.ts @@ -88,6 +88,15 @@ export class Config { this._notify() } + get httpFormSubmit(): boolean { + return this._config.httpFormSubmit + } + + set httpFormSubmit(httpFormSubmit: boolean) { + this._config.httpFormSubmit = httpFormSubmit + this._notify() + } + attach(observer: BalConfigObserver): void { const isExist = this._observers.includes(observer) if (isExist) { diff --git a/packages/core/src/utils/config/config.types.ts b/packages/core/src/utils/config/config.types.ts index a864eeca9d..006073b617 100644 --- a/packages/core/src/utils/config/config.types.ts +++ b/packages/core/src/utils/config/config.types.ts @@ -25,6 +25,7 @@ export interface BalConfig { fallbackLanguage?: BalLanguage logger?: BalLogger animated?: boolean + httpFormSubmit?: boolean _jmp?: (c: any) => any _raf?: (c: any) => number _ael?: (el: any, eventName: string, listener: any, options: any) => void @@ -40,6 +41,7 @@ export interface BalConfigState { fallbackLanguage: BalLanguage logger: BalLogger animated: boolean + httpFormSubmit: boolean } export interface BalPlatformConfig { diff --git a/packages/core/src/utils/dropdown/auto-fill.ts b/packages/core/src/utils/dropdown/auto-fill.ts new file mode 100644 index 0000000000..13471116c9 --- /dev/null +++ b/packages/core/src/utils/dropdown/auto-fill.ts @@ -0,0 +1,47 @@ +import { areArraysEqual } from '@baloise/web-app-utils' +import { stopEventBubbling } from '../form-input' +import { DropdownComponent } from './component' + +export class DropdownAutoFillUtil { + private component!: DropdownComponent + + connectedCallback(component: DropdownComponent) { + this.component = component + } + + handleAutoFill = async (ev: Event) => { + stopEventBubbling(ev) + if (this.isAutoFillAllowed()) { + this.component.isAutoFilled = true + + const autoFillValue = this.component.nativeEl.value + const newValue = await this.parseAutoFillValueWithOptions(autoFillValue) + if (newValue === undefined) { + this.component.isAutoFilled = false + return + } + + if (!areArraysEqual(newValue, this.component.rawValue)) { + this.component.valueUtil.updateRawValueBySelection(newValue, true) + } + } + } + + private isAutoFillAllowed(): boolean { + return !this.component.multiple + } + + private async parseAutoFillValueWithOptions(autoFillValue: string): Promise { + const options = await this.component.listEl.getOptions() + const value = undefined + + for (let index = 0; index < options.length; index++) { + const option = options[index] + if (option.value === autoFillValue || option.label === autoFillValue) { + return [option.value] + } + } + + return value + } +} diff --git a/packages/core/src/utils/dropdown/component.ts b/packages/core/src/utils/dropdown/component.ts new file mode 100644 index 0000000000..b8394a2069 --- /dev/null +++ b/packages/core/src/utils/dropdown/component.ts @@ -0,0 +1,39 @@ +import { EventEmitter } from '@stencil/core' +import { DropdownValueUtil } from './value' +import { BalOption } from './option' +import { DropdownFocus } from './focus' +import { DropdownPopupUtil } from './popup' + +export type DropdownComponent = DropdownFocus & { + el: HTMLElement + selectEl: HTMLSelectElement | undefined + panelEl: HTMLDivElement | undefined + nativeEl: HTMLInputElement | undefined + listEl: HTMLBalOptionListElement | undefined + + valueUtil: DropdownValueUtil + popupUtil: DropdownPopupUtil + + multiple: boolean + chips: boolean + readonly: boolean + disabled: boolean + clearable: boolean + hasFocus: boolean + isExpanded: boolean + isAutoFilled: boolean + inputLabel: string + + nativeOptions: string[] + choices: BalOption[] + options: BalOption[] + rawOptions: BalOption[] + rawValue: string[] + value?: string | string[] + initialValue?: string | string[] + + panelCleanup?: () => void + balChange: EventEmitter + balBlur: EventEmitter + balFocus: EventEmitter +} diff --git a/packages/core/src/utils/dropdown/dropdown.i18n.ts b/packages/core/src/utils/dropdown/dropdown.i18n.ts new file mode 100644 index 0000000000..3b88a11802 --- /dev/null +++ b/packages/core/src/utils/dropdown/dropdown.i18n.ts @@ -0,0 +1,60 @@ +import { I18n } from '../../interfaces' + +interface I18nBalDropdown { + clearable: string + open: string + close: string +} + +export const i18nBalDropdown: I18n = { + de: { + clearable: 'Löschen', + open: 'Öffnen', + close: 'Schließen', + }, + en: { + clearable: 'clear', + open: 'Open', + close: 'Close', + }, + fr: { + clearable: 'Effacer', + open: 'Ouvrir', + close: 'Fermer', + }, + it: { + clearable: 'Cancellare', + open: 'Apri', + close: 'Chiudi', + }, + nl: { + clearable: 'Wissen', + open: 'Open', + close: 'Sluiten', + }, + es: { + clearable: 'Limpiar', + open: 'Abrir', + close: 'Cerrar', + }, + pl: { + clearable: 'Wyczyść', + open: 'Otwórz', + close: 'Zamknij', + }, + pt: { + clearable: 'Limpar', + open: 'Abrir', + close: 'Fechar', + }, + sv: { + clearable: 'Rensa', + open: 'Öppna', + close: 'Stäng', + }, + fi: { + clearable: 'Tyhjennä', + open: 'Avaa', + close: 'Sulje', + }, +} diff --git a/packages/core/src/utils/dropdown/events.ts b/packages/core/src/utils/dropdown/events.ts new file mode 100644 index 0000000000..8afaf84f2b --- /dev/null +++ b/packages/core/src/utils/dropdown/events.ts @@ -0,0 +1,57 @@ +import { DropdownComponent } from './component' + +export type DropdownEvents = { + listenOnClickOutside(ev: UIEvent) + listenOnClick(ev: UIEvent) +} + +export class DropdownEventsUtil { + private component!: DropdownComponent + + connectedCallback(component: DropdownComponent) { + this.component = component + } + + handleFocus(ev: FocusEvent) { + this.component.hasFocus = true + this.component.balFocus.emit(ev) + } + + handleBlur(ev: FocusEvent) { + this.component.hasFocus = false + this.component.balBlur.emit(ev) + } + + handleClick(ev: MouseEvent) { + if (!this.component.valueUtil.isDisabled()) { + if (this.component.chips) { + const targetEl = ev.target as HTMLElement + const closeEl = targetEl.closest('bal-close') + if (closeEl) { + return + } + } + + if (this.component.clearable) { + const targetEl = ev.target as HTMLElement + const clearEl = targetEl.closest('.bal-dropdown__clear') + if (clearEl) { + this.component.valueUtil.updateRawValueBySelection([]) + return + } + } + + this.component.popupUtil.toggleList() + } + } + + // @Listen('click', { target: 'document' }) + handleOutsideClick(ev: UIEvent) { + if (this.component.isExpanded) { + if (!this.component.el.contains(ev.target as Node)) { + this.component.isExpanded = false + this.component.listEl?.resetFocus() + } + } + } +} diff --git a/packages/core/src/utils/dropdown/filters.ts b/packages/core/src/utils/dropdown/filters.ts new file mode 100644 index 0000000000..53b593f0b6 --- /dev/null +++ b/packages/core/src/utils/dropdown/filters.ts @@ -0,0 +1,11 @@ +export function startsWith(text: string, input: string): boolean { + const content = text.trim().toLowerCase() + const value = input.trim().toLowerCase() + return content.startsWith(value) +} + +export function includes(text: string, input: string): boolean { + const content = text.trim().toLowerCase() + const value = input.trim().toLowerCase() + return content.includes(value) +} diff --git a/packages/core/src/utils/dropdown/focus.ts b/packages/core/src/utils/dropdown/focus.ts new file mode 100644 index 0000000000..8fef4fd00e --- /dev/null +++ b/packages/core/src/utils/dropdown/focus.ts @@ -0,0 +1,31 @@ +import { DropdownComponent } from './component' + +export type DropdownFocus = { + labelToFocus: string +} + +export class DropdownFocusUtil { + private component!: DropdownComponent + + private keyHitTimeout!: NodeJS.Timeout + private timeout!: NodeJS.Timeout + + connectedCallback(component: DropdownComponent) { + this.component = component + } + + public focusOptionByLabel(key: string, options: Partial<{ select: boolean }> = {}) { + this.component.labelToFocus = (this.component.labelToFocus + key).trim() + if (this.component.labelToFocus.length > 0) { + clearTimeout(this.keyHitTimeout) + this.keyHitTimeout = setTimeout(() => { + this.component.listEl?.focusByLabel(this.component.labelToFocus, options) + }, 100) + + clearTimeout(this.timeout) + this.timeout = setTimeout(async () => { + this.component.labelToFocus = '' + }, 1000) + } + } +} diff --git a/packages/core/src/utils/dropdown/form-submit.tsx b/packages/core/src/utils/dropdown/form-submit.tsx new file mode 100644 index 0000000000..39a52eae70 --- /dev/null +++ b/packages/core/src/utils/dropdown/form-submit.tsx @@ -0,0 +1,88 @@ +import { FunctionalComponent, h } from '@stencil/core' +import { DropdownComponent } from './component' +import { BEM } from '../bem' + +export type DropdownFormSubmit = { + resetHandler(ev: UIEvent) +} + +export class DropdownFormSubmitUtil { + private component!: DropdownComponent + private resetHandlerTimer?: NodeJS.Timer + + connectedCallback(component: DropdownComponent) { + this.component = component + this.component.initialValue = this.component.value + } + + componentDidRender() { + if (this.component.selectEl) { + const options = this.component.selectEl.querySelectorAll('option') + options.forEach(option => { + if (this.component.rawValue.includes(option.value)) { + option.selected = true + } + }) + } + } + + // @Listen('reset', { capture: true, target: 'document' }) + handle(ev: UIEvent) { + const formElement = ev.target as HTMLElement + if (formElement?.contains(this.component.el)) { + if (this.resetHandlerTimer) { + clearTimeout(this.resetHandlerTimer) + } + + this.resetHandlerTimer = setTimeout(() => { + const newRawValue = this.component.valueUtil.parseValueString(this.component.initialValue) + this.component.valueUtil.updateRawValueBySelection(newRawValue) + }, 0) + } + } +} + +export interface DropdownNativeSelectProps { + name: string + httpFormSubmit: boolean + multiple: boolean + required: boolean + disabled: boolean + rawValue: string[] + refSelectEl: (el: HTMLSelectElement) => void +} + +export const DropdownNativeSelect: FunctionalComponent = ({ + name, + httpFormSubmit, + multiple, + required, + disabled, + rawValue, + refSelectEl, +}) => { + const block = BEM.block('dropdown') + + return httpFormSubmit ? ( + + ) : ( + '' + ) +} diff --git a/packages/core/src/utils/dropdown/icon.tsx b/packages/core/src/utils/dropdown/icon.tsx new file mode 100644 index 0000000000..34f25d1dc3 --- /dev/null +++ b/packages/core/src/utils/dropdown/icon.tsx @@ -0,0 +1,54 @@ +import { FunctionalComponent, h } from '@stencil/core' +import { BalLanguage } from '../config' +import { BEM } from '../bem' +import { i18nBalDropdown } from './dropdown.i18n' + +export interface DropdownIconProps { + language: BalLanguage + loading: boolean + clearable: boolean + filled: boolean + disabled: boolean + invalid: boolean + expanded: boolean + icon: string +} + +export const DropdownIcon: FunctionalComponent = ({ + icon, + language, + loading, + clearable, + invalid, + filled, + expanded, + disabled, +}) => { + const block = BEM.block('dropdown') + + if (loading) { + return + } else if (clearable && filled && !disabled) { + return ( + + ) + } else { + return ( + + ) + } +} diff --git a/packages/core/src/utils/dropdown/index.ts b/packages/core/src/utils/dropdown/index.ts new file mode 100644 index 0000000000..e87e926f5c --- /dev/null +++ b/packages/core/src/utils/dropdown/index.ts @@ -0,0 +1,13 @@ +export * from './auto-fill' +export * from './component' +export * from './dropdown.i18n' +export * from './events' +export * from './filters' +export * from './focus' +export * from './form-submit' +export * from './icon' +export * from './option' +export * from './option-list' +export * from './popup' +export * from './value' +export * from './input' diff --git a/packages/core/src/utils/dropdown/input.tsx b/packages/core/src/utils/dropdown/input.tsx new file mode 100644 index 0000000000..b80b8c5411 --- /dev/null +++ b/packages/core/src/utils/dropdown/input.tsx @@ -0,0 +1,102 @@ +import { h, FunctionalComponent } from '@stencil/core' +import { BEM } from '../bem' +import { i18nBalDropdown } from './dropdown.i18n' +import { ariaBooleanToString } from '../aria' +import { BalAriaForm } from '../form' +import { BalLanguage } from '../config' +import { Attributes } from '../attributes' + +export interface DropdownInputProps { + name: string + inputId: string + httpFormSubmit: boolean + ariaForm: BalAriaForm + rawValue: string[] + autocomplete: string + placeholder: string + inputLabel: string + required: boolean + disabled: boolean + readonly: boolean + expanded: boolean + invalid: boolean + language: BalLanguage + inheritedAttributes: Attributes + refInputEl: (el: HTMLInputElement) => void + onChange: (ev: Event) => void + onFocus: (ev: FocusEvent) => void + onBlur: (ev: FocusEvent) => void + onKeyDown: (ev: KeyboardEvent) => void +} + +export const DropdownInput: FunctionalComponent = ({ + name, + inputId, + httpFormSubmit, + ariaForm, + rawValue, + autocomplete, + required, + disabled, + readonly, + placeholder, + expanded, + invalid, + language, + inputLabel, + inheritedAttributes, + refInputEl, + onChange, + onFocus, + onBlur, + onKeyDown, +}) => { + const block = BEM.block('dropdown') + + const Input = () => ( + refInputEl(el)} + onChange={ev => onChange(ev)} + onFocus={ev => onFocus(ev)} + onBlur={ev => onBlur(ev)} + onKeyDown={ev => onKeyDown(ev)} + {...inheritedAttributes} + /> + ) + + if (httpFormSubmit) { + return + } + + return ( +
    + +
    + ) +} diff --git a/packages/core/src/utils/dropdown/option-list.tsx b/packages/core/src/utils/dropdown/option-list.tsx new file mode 100644 index 0000000000..ce65cb6f10 --- /dev/null +++ b/packages/core/src/utils/dropdown/option-list.tsx @@ -0,0 +1,73 @@ +import { FunctionalComponent, h } from '@stencil/core' +import { BalOption } from './option' +import { BEM } from '../bem' + +export interface DropdownOptionListProps { + inputId: string + block: string + filter: BalProps.BalOptionListFilter + required: boolean + isExpanded: boolean + isDisabled: boolean + hasPropOptions: boolean + multiple: boolean + contentHeight: number + rawOptions: BalOption[] + refPanelEl: (el: HTMLDivElement) => void + refListEl: (el: HTMLBalOptionListElement) => void +} + +export const DropdownOptionList: FunctionalComponent = ({ + inputId, + isExpanded, + rawOptions, + isDisabled, + hasPropOptions, + required, + filter, + multiple, + contentHeight, + refPanelEl, + refListEl, +}) => { + const block = BEM.block('dropdown') + + return ( +
    + + + {hasPropOptions + ? rawOptions.map(option => ( + + )) + : ''} + +
    + ) +} diff --git a/packages/core/src/utils/dropdown/option.tsx b/packages/core/src/utils/dropdown/option.tsx new file mode 100644 index 0000000000..99433a3c74 --- /dev/null +++ b/packages/core/src/utils/dropdown/option.tsx @@ -0,0 +1,90 @@ +import { h } from '@stencil/core' +import { DropdownComponent } from './component' + +export type BalBaseOption = { + value: TValue + label: string +} + +export type BalOptionOptions = { + // state values + disabled: boolean + invalid: boolean + selected: boolean + focused: boolean + hidden: boolean + // visual values + multiline: boolean +} + +export type BalOption = BalBaseOption & BalOptionOptions + +export type NewBalOption = ( + option: BalBaseOption, + options?: Partial, +) => BalOption + +export const newBalOption: NewBalOption = (option, options) => { + const data: BalOption = { + ...option, + disabled: false, + invalid: false, + selected: false, + focused: false, + hidden: false, + multiline: false, + } + + if (options) { + data.disabled = options.disabled === undefined ? data.disabled : options.disabled + data.invalid = options.invalid === undefined ? data.invalid : options.invalid + data.selected = options.selected === undefined ? data.selected : options.selected + data.focused = options.focused === undefined ? data.focused : options.focused + data.hidden = options.hidden === undefined ? data.hidden : options.hidden + data.multiline = options.multiline === undefined ? data.multiline : options.multiline + } + + return data +} + +export const mapOption = (option: Partial): BalOption => { + return newBalOption( + { + value: option.value, + label: option.label, + }, + option, + ) +} + +export class DropdownOptionUtil { + private component!: DropdownComponent + + connectedCallback(component: DropdownComponent) { + this.component = component + this.optionChanged() + } + + async componentWillRender() { + if (this.component.listEl) { + this.component.nativeOptions = await this.component.listEl.getValues() + } + } + + hasPropOptions(): boolean { + return this.component.options && this.component.options.length > 0 + } + + async optionChanged() { + this.component.rawOptions = this.component.options.map(mapOption) + await this.component.valueUtil.updateInputContent() + } + + async listenToOptionChange(_ev: BalEvents.BalOptionChange) { + const newSelectedValues = (await this.component.listEl?.getSelectedValues()) || [] + this.component.valueUtil.updateRawValueBySelection(newSelectedValues) + if (!this.component.multiple) { + this.component.popupUtil.collapseList() + } + } +} diff --git a/packages/core/src/utils/dropdown/popup.ts b/packages/core/src/utils/dropdown/popup.ts new file mode 100644 index 0000000000..fd146f1199 --- /dev/null +++ b/packages/core/src/utils/dropdown/popup.ts @@ -0,0 +1,52 @@ +import { autoUpdate, computePosition, flip, shift } from '@floating-ui/dom' +import { DropdownComponent } from './component' + +export class DropdownPopupUtil { + private component!: DropdownComponent + + connectedCallback(component: DropdownComponent) { + this.component = component + } + + updatePanelPosition = (referenceEl: HTMLElement, floatingEl: HTMLElement) => () => { + computePosition(referenceEl, floatingEl, { + placement: 'bottom-start', + middleware: [flip(), shift()], + }).then(({ x, y }) => { + Object.assign(floatingEl.style, { + left: `${x}px`, + top: `${y}px`, + }) + }) + } + + toggleList() { + if (!this.component.valueUtil.isDisabled()) { + if (this.component.isExpanded) { + this.collapseList() + } else { + this.expandList() + } + } + } + + expandList() { + if (this.component.panelEl) { + this.component.panelCleanup = autoUpdate( + this.component.el, + this.component.panelEl, + this.updatePanelPosition(this.component.el, this.component.panelEl), + ) + } + this.component.isExpanded = true + this.component.listEl?.focusFirst() + } + + collapseList() { + this.component.isExpanded = false + this.component.listEl?.resetFocus() + if (this.component.panelCleanup) { + this.component.panelCleanup() + } + } +} diff --git a/packages/core/src/utils/dropdown/value.tsx b/packages/core/src/utils/dropdown/value.tsx new file mode 100644 index 0000000000..374d3d1099 --- /dev/null +++ b/packages/core/src/utils/dropdown/value.tsx @@ -0,0 +1,157 @@ +import { FunctionalComponent, h } from '@stencil/core' +import { areArraysEqual } from '@baloise/web-app-utils' +import isNil from 'lodash.isnil' +import { DropdownComponent } from './component' +import { BEM } from '../bem' +import { BalOption } from './option' +import { waitAfterFramePaint } from '../helpers' + +export class DropdownValueUtil { + private component!: DropdownComponent + + connectedCallback(component: DropdownComponent) { + this.component = component + } + + componentDidLoad(): void { + setTimeout(() => this.valueChanged(this.component.value, undefined), 0) + } + + isDisabled(): boolean { + return this.component.disabled || this.component.readonly + } + + isFilled(): boolean { + return this.component.rawValue && this.component.rawValue.length > 0 + } + + valueChanged(newValue: string | string[] | undefined, oldValue: string | string[] | undefined) { + const newValueType = typeof newValue + const oldValueType = typeof oldValue + + if (newValueType !== oldValueType) { + this.updateRawValueByValueProp(newValue) + } + + if (newValueType === 'string' && newValue !== oldValue) { + this.updateRawValueByValueProp(newValue) + } + + if (Array.isArray(newValue) && Array.isArray(oldValue) && !areArraysEqual(newValue, oldValue)) { + this.updateRawValueByValueProp(newValue) + } + } + + updateRawValueBySelection(newRawValue: string[] = [], isAutoFilled = false) { + this.component.isAutoFilled = isAutoFilled + this.updateRawValue(newRawValue) + if (this.component.multiple) { + this.component.balChange.emit(this.component.rawValue) + } else { + this.component.balChange.emit(this.component.rawValue[0]) + } + } + + parseValueString(newValue: string | string[] = []) { + let newRawValue: string[] = [] + + if (!isNil(newValue) && newValue !== '') { + if (Array.isArray(newValue)) { + newRawValue = [...newValue.filter(v => !isNil(v))] + } else { + if (newValue.split('').includes(',')) { + newRawValue = [ + ...newValue + .split(',') + .filter(v => v) + .map(v => v.trim()), + ] + } else { + newRawValue = [newValue] + } + } + } + return newRawValue + } + + updateRawValueByValueProp(newValue: string | string[] = []) { + const newRawValue = this.parseValueString(newValue) + this.updateRawValue(newRawValue) + } + + async updateRawValue(newRawValue: string[] = []) { + this.component.rawValue = newRawValue + + if (this.component.listEl) { + await this.component.listEl.updateSelected(this.component.rawValue) + } + + await this.updateInputContent() + } + + removeOption(option: BalOption) { + const newRawValue = this.component.rawValue.filter(value => value !== option.value) + this.updateRawValueBySelection(newRawValue) + } + + async updateInputContent() { + await waitAfterFramePaint() + if (this.component.listEl) { + this.component.choices = await this.component.listEl.getSelectedOptions(this.component.rawValue) + this.component.inputLabel = this.component.choices + .map(option => option.label.trim()) + .sort() + .join(',') + } + } +} + +export interface DropdownValueProps { + filled: boolean + chips: boolean + invalid: boolean + disabled: boolean + readonly: boolean + placeholder: string + choices: BalOption[] + onRemoveChip: (option: BalOption) => void +} + +export const DropdownValue: FunctionalComponent = ({ + filled, + chips, + placeholder, + choices, + invalid, + disabled, + readonly, + onRemoveChip, +}) => { + const block = BEM.block('dropdown') + + if (filled) { + if (chips) { + return ( +
    + {choices.map(option => ( + onRemoveChip(option)} + > + {option.label} + + ))} +
    + ) + } else { + return choices.map(option => option.label).join(', ') + } + } else { + return placeholder + } +} diff --git a/packages/core/stencil.config.ts b/packages/core/stencil.config.ts index 80a7cbc6e6..5f97658829 100644 --- a/packages/core/stencil.config.ts +++ b/packages/core/stencil.config.ts @@ -217,6 +217,7 @@ export const config: Config = { // form components { components: ['bal-checkbox', 'bal-checkbox-group'] }, { components: ['bal-datepicker'] }, + { components: ['bal-dropdown'] }, { components: ['bal-field', 'bal-field-label', 'bal-field-control', 'bal-field-message', 'bal-field-hint'] }, { components: ['bal-file-upload'] }, { components: ['bal-form'] }, @@ -230,6 +231,9 @@ export const config: Config = { { components: ['bal-select', 'bal-select-option'] }, { components: ['bal-textarea'] }, { components: ['bal-time-input'] }, + { + components: ['bal-option-list', 'bal-option'], + }, // // overlay components { components: ['bal-modal', 'bal-modal-body', 'bal-modal-header'] }, diff --git a/packages/react/src/index.ts b/packages/react/src/index.ts index 3ff09abbbe..557ccdc4b1 100644 --- a/packages/react/src/index.ts +++ b/packages/react/src/index.ts @@ -6,7 +6,10 @@ interface BaloiseDesignSystemReactConfig { } export const useBaloiseDesignSystem = (config: BaloiseDesignSystemReactConfig = {}) => { - initialize(config.defaults) + initialize({ + ...config.defaults, + httpFormSubmit: false, + }) } export * from './generated/proxies' diff --git a/packages/testing/src/commands/custom/bal-select.command.ts b/packages/testing/src/commands/custom/bal-select.command.ts index a0b848a1d9..cebca81a8e 100644 --- a/packages/testing/src/commands/custom/bal-select.command.ts +++ b/packages/testing/src/commands/custom/bal-select.command.ts @@ -1,4 +1,4 @@ -import { log, wrapOptions } from '../helpers' +import { isDropDown, log, wrapOptions } from '../helpers' import { selectors } from '../../selectors' Cypress.Commands.add( @@ -8,14 +8,20 @@ Cypress.Commands.add( }, (subject, options) => { const o = wrapOptions(options) - return cy - .wrapComponent(subject, o) - .find(selectors.select.options, o) - .then($el => { - log('balSelectFindOptions', '', $el, options) - return $el - }) - .waitForComponents(o) + + if (isDropDown(subject)) { + return cy + .wrapComponent(subject, o) + .find(selectors.dropdown.options, o) + .then($el => log('balSelectFindOptions', '', $el, options)) + .waitForComponents(o) + } else { + return cy + .wrapComponent(subject, o) + .find(selectors.select.options, o) + .then($el => log('balSelectFindOptions', '', $el, options)) + .waitForComponents(o) + } }, ) @@ -25,8 +31,9 @@ Cypress.Commands.add( prevSubject: true, }, (subject, labels, dataKey = 'label', options) => { - log('balAccordionIsOpen', '', subject, options) + log('balSelectShouldHaveOptions', '', subject, options) const o = wrapOptions(options) + return cy .wrapComponent(subject, o) .balSelectFindOptions(o) @@ -44,13 +51,12 @@ Cypress.Commands.add( }, (subject, options) => { const o = wrapOptions(options) + const selector = isDropDown(subject) ? selectors.dropdown.chips : selectors.select.chips + return cy .wrapComponent(subject, o) - .find(selectors.select.chips, o) - .then($el => { - log('balSelectFindChips', '', $el, options) - return $el - }) + .find(selector, o) + .then($el => log('balSelectFindChips', '', $el, options)) .waitForComponents(o) }, ) diff --git a/packages/testing/src/commands/custom/get.command.ts b/packages/testing/src/commands/custom/get.command.ts index 1aeac790b3..3f27a784fc 100644 --- a/packages/testing/src/commands/custom/get.command.ts +++ b/packages/testing/src/commands/custom/get.command.ts @@ -47,6 +47,7 @@ Cypress.Commands.add('getByLabelText', { prevSubject: ['optional'] }, (subject, o, ) }) + .first(o) .then(o, $el => log(!!subject ? '-getByLabelText' : 'getByLabelText', labelText, $el, options)) as any } else { return cy @@ -58,6 +59,7 @@ Cypress.Commands.add('getByLabelText', { prevSubject: ['optional'] }, (subject, o, ) }) + .first(o) .then(o, $el => log(!!subject ? '-getByLabelText' : 'getByLabelText', labelText, $el, options)) as any } }) @@ -70,20 +72,10 @@ Cypress.Commands.add( (subject, placeholder, options?: Partial): any => { const o = wrapOptions(options) + const selector = `input[placeholder="${placeholder}"], textarea[placeholder="${placeholder}"], [data-placeholder="${placeholder}"]` const element = subject - ? cy - .wrap(subject, o) - .find( - `input[placeholder="${placeholder}"], textarea[placeholder="${placeholder}"], [data-placeholder="${placeholder}"]`, - o, - ) - .waitForComponents(o) - : cy - .get( - `input[placeholder="${placeholder}"], textarea[placeholder="${placeholder}"], [data-placeholder="${placeholder}"]`, - o, - ) - .waitForComponents(o) + ? cy.wrap(subject, o).find(selector, o).first(o).waitForComponents(o) + : cy.get(selector, o).first(o).waitForComponents(o) element.then(o, $el => log(!!subject ? '-getByPlaceholder' : 'getByPlaceholder', placeholder, $el, options)) return element @@ -104,7 +96,7 @@ Cypress.Commands.add( function filterVisibleElements(elements: HTMLElement[]) { return elements.filter(element => { - const isElementAriaHidden = options.hidden === true ? false : !!Cypress.$(element).attr('aria-hidden') + const isElementAriaHidden = options.hidden === true ? false : Cypress.$(element).attr('aria-hidden') === 'true' return !isElementAriaHidden }) } diff --git a/packages/testing/src/commands/helpers.ts b/packages/testing/src/commands/helpers.ts index 1e6472cd58..858d4ed3aa 100644 --- a/packages/testing/src/commands/helpers.ts +++ b/packages/testing/src/commands/helpers.ts @@ -86,6 +86,7 @@ export const isSelect: isElementType = el => isElement(el, 'BAL-SELECT') export const isTag: isElementType = el => isElement(el, 'BAL-TAG') export const isTabs: isElementType = el => isElement(el, 'BAL-TABS') export const isSteps: isElementType = el => isElement(el, 'BAL-STEPS') +export const isDropDown: isElementType = el => isElement(el, 'BAL-DROPDOWN') export const isSlider: isElementType = el => isElement(el, 'BAL-INPUT-SLIDER') export const isHint: isElementType = el => isElement(el, 'BAL-HINT') export const isTextarea: isElementType = el => isElement(el, 'BAL-TEXTAREA') diff --git a/packages/testing/src/commands/overrides/blur.command.ts b/packages/testing/src/commands/overrides/blur.command.ts index 15fa908f35..f77ead82c8 100644 --- a/packages/testing/src/commands/overrides/blur.command.ts +++ b/packages/testing/src/commands/overrides/blur.command.ts @@ -13,6 +13,7 @@ import { wrapOptions, wrapCommand, isInputDate, + isDropDown, } from '../helpers' Cypress.Commands.overwrite('blur', (originalFn: any, element: Cypress.Chainable, options: any) => { @@ -62,5 +63,9 @@ Cypress.Commands.overwrite('blur', (originalFn: any, element: Cypress. return command(selectors.select.input) } + if (isDropDown(element)) { + return command(selectors.dropdown.input) + } + return originalFn(element, options) }) diff --git a/packages/testing/src/commands/overrides/clear.command.ts b/packages/testing/src/commands/overrides/clear.command.ts index 2abc1a49f0..0898ba35e6 100644 --- a/packages/testing/src/commands/overrides/clear.command.ts +++ b/packages/testing/src/commands/overrides/clear.command.ts @@ -10,6 +10,7 @@ import { wrapCommand, wrapOptions, isInputDate, + isDropDown, } from '../helpers' import { selectors } from '../../selectors' @@ -52,5 +53,9 @@ Cypress.Commands.overwrite('clear', (originalFn: any, element: Cypress return command('.bal-select__control__input') } + if (isDropDown(element)) { + return command(selectors.dropdown.input) + } + return originalFn(element, options) }) diff --git a/packages/testing/src/commands/overrides/click.command.ts b/packages/testing/src/commands/overrides/click.command.ts index feaed7f951..c9e1f8e3e0 100644 --- a/packages/testing/src/commands/overrides/click.command.ts +++ b/packages/testing/src/commands/overrides/click.command.ts @@ -9,11 +9,21 @@ import { isHint, wrapCommand, wrapOptions, + isDropDown, + log, } from '../helpers' import { selectors } from '../../selectors' Cypress.Commands.overwrite('click', (originalFn: any, element: Cypress.Chainable, options) => { - const command = wrapCommand('click', element, '', $el => originalFn($el, wrapOptions(options))) + const command = (selector: string) => { + return cy + .wrapComponent(element as any, { log: false }) + .waitForComponents({ log: false }) + .find(selector, { log: false }) + .click({ force: true, log: false }) + .then($el => log('click', '', $el)) + .wrapComponent(element as any, { log: false }) + } if (isAccordion(element)) { return command(selectors.accordion.trigger) @@ -35,13 +45,17 @@ Cypress.Commands.overwrite('click', (originalFn: any, element: Cypress return command(selectors.radio.label) } - if (isTag(element) && hasClass(element, 'sc-bal-select')) { - return command('.delete') + if (isTag(element)) { + return command(selectors.tag.close) } if (isHint(element)) { return command(selectors.hint.trigger) } + if (isDropDown(element)) { + return command(selectors.dropdown.trigger) + } + return originalFn(element, options) }) diff --git a/packages/testing/src/commands/overrides/focus.command.ts b/packages/testing/src/commands/overrides/focus.command.ts index 0185d9f8fb..143388a60e 100644 --- a/packages/testing/src/commands/overrides/focus.command.ts +++ b/packages/testing/src/commands/overrides/focus.command.ts @@ -3,6 +3,7 @@ import { isButton, isCheckbox, isDatepicker, + isDropDown, isInput, isInputDate, isNumberInput, @@ -62,5 +63,9 @@ Cypress.Commands.overwrite('focus', (originalFn: any, element: Cypress return command(selectors.select.input) } + if (isDropDown(element)) { + return command(selectors.dropdown.input) + } + return originalFn(element, options) }) diff --git a/packages/testing/src/commands/overrides/select.command.ts b/packages/testing/src/commands/overrides/select.command.ts index fd5d3772e3..adeff0ab29 100644 --- a/packages/testing/src/commands/overrides/select.command.ts +++ b/packages/testing/src/commands/overrides/select.command.ts @@ -1,4 +1,4 @@ -import { isSelect, isSteps, isTabs } from '../helpers' +import { isDropDown, isSelect, isSteps, isTabs, log, shouldLog } from '../helpers' import { selectors } from '../../selectors' import { byDataSelectors } from '../../selectors/selectors.util' @@ -29,6 +29,31 @@ Cypress.Commands.overwrite('select', (originalFn: any, element: any, values: any .wrap(element, { log: false }) } + if (isDropDown(element)) { + let valueArray: any[] = [] + if (typeof values === 'string') { + valueArray.push(values) + } else { + valueArray = [...values] + } + + log('select', valueArray, element, options) + + if (valueArray.length === 0) { + return cy.wrap(element, { log: false }).clear({ log: false }) + } + + return cy + .wrap(element, { log: false }) + .within({ log: false }, () => { + for (let index = 0; index < valueArray.length; index++) { + const label = valueArray[index] + cy.getByRole('option', { name: label, log: false }).click({ log: false }) + } + }) + .wrap(element, { log: false }) + } + if (isTabs(element)) { if (typeof values === 'string') { return cy diff --git a/packages/testing/src/commands/overrides/should.command.ts b/packages/testing/src/commands/overrides/should.command.ts index eeb07fc39e..aa66a05117 100644 --- a/packages/testing/src/commands/overrides/should.command.ts +++ b/packages/testing/src/commands/overrides/should.command.ts @@ -16,6 +16,7 @@ import { isSteps, hasTestId, isInputDate, + isDropDown, } from '../helpers' import { parseDataTestID, selectors } from '../../selectors/index' @@ -179,6 +180,51 @@ const shouldAndAndCommand = ( } } + if (hasClass(element, 'bal-dropdown__root__input')) { + const parseKey = () => { + return typeof key === 'string' + ? key + : (key as string[]) + .map(k => k.trim()) + .sort() + .join(',') + } + + switch (condition) { + case 'have.value': + return originalFn(element, 'have.attr', 'data-label', parseKey(), value) + + case 'not.have.value': + return originalFn(element, 'not.have.attr', 'data-label', parseKey(), value) + } + } + + if (isDropDown(element)) { + const nativeEl = element.find(selectors.dropdown.input, { log: false }) + const parseKey = () => { + return typeof key === 'string' + ? key + : (key as string[]) + .map(k => k.trim()) + .sort() + .join(',') + } + + switch (condition) { + case 'have.focus': + case 'not.have.focus': + case 'be.disabled': + case 'not.be.disabled': + return originalFn(nativeEl, condition, key, value, options) + + case 'have.value': + return originalFn(nativeEl, 'have.attr', 'data-label', parseKey(), value) + + case 'not.have.value': + return originalFn(nativeEl, 'not.have.attr', 'data-label', parseKey(), value) + } + } + if (isTabs(element)) { switch (condition) { case 'have.value': diff --git a/packages/testing/src/commands/overrides/type.command.ts b/packages/testing/src/commands/overrides/type.command.ts index 67b163455a..d0ace88d0d 100644 --- a/packages/testing/src/commands/overrides/type.command.ts +++ b/packages/testing/src/commands/overrides/type.command.ts @@ -1,4 +1,13 @@ -import { isInput, isInputDate, isNumberInput, isSlider, isTextarea, wrapCommand, wrapOptions } from '../helpers' +import { + isDropDown, + isInput, + isInputDate, + isNumberInput, + isSlider, + isTextarea, + wrapCommand, + wrapOptions, +} from '../helpers' import { selectors } from '../../selectors' Cypress.Commands.overwrite('type', (originalFn: any, element: any, content: any, options) => { @@ -8,6 +17,10 @@ Cypress.Commands.overwrite('type', (originalFn: any, element: any, content: any, return command(selectors.input.native) } + if (isDropDown(element)) { + return command(selectors.dropdown.input) + } + if (isInputDate(element)) { return command(selectors.dateInput.native) } diff --git a/packages/testing/src/selectors/index.ts b/packages/testing/src/selectors/index.ts index c4c873c2b3..1d282de49e 100644 --- a/packages/testing/src/selectors/index.ts +++ b/packages/testing/src/selectors/index.ts @@ -231,6 +231,24 @@ export const selectors = { */ chips: byTestId('bal-select-chip'), }, + dropdown: { + /** + * Native input element. + */ + input: '[data-native]', + /** + * Select option. + */ + options: 'bal-option', + /** + * Trigger to open and close the popup. + */ + trigger: byTestId('bal-dropdown-trigger'), + /** + * Multi select tag . + */ + chips: byTestId('bal-dropdown-chip'), + }, popover: { /** * Popover trigger. diff --git a/packages/vue/src/plugin.ts b/packages/vue/src/plugin.ts index 786f2f2c49..70a7a03a1f 100644 --- a/packages/vue/src/plugin.ts +++ b/packages/vue/src/plugin.ts @@ -11,7 +11,10 @@ interface BaloiseDesignSystemVueConfig { export const BaloiseDesignSystem: Plugin = { async install(app, config: BaloiseDesignSystemVueConfig = {}) { - initialize(config.defaults) + initialize({ + ...config.defaults, + httpFormSubmit: false, + }) if (config && config.defineCustomElementTag === true) { app.config.compilerOptions.isCustomElement = tag => tag.startsWith('bal-') diff --git a/resources/data/tags.json b/resources/data/tags.json index d2c4d86c8e..e6892c4981 100644 --- a/resources/data/tags.json +++ b/resources/data/tags.json @@ -11,6 +11,7 @@ "bal-data", "bal-date", "bal-divider", + "bal-dropdown", "bal-field", "bal-file-upload", "bal-footer", @@ -26,6 +27,7 @@ "bal-nav", "bal-notification", "bal-number-input", + "bal-option", "bal-pagination", "bal-popover", "bal-popup", diff --git a/test/angular/base/app/cypress/e2e/bal-dropdown-multiple.spec.cy.ts b/test/angular/base/app/cypress/e2e/bal-dropdown-multiple.spec.cy.ts new file mode 100644 index 0000000000..75f7101e98 --- /dev/null +++ b/test/angular/base/app/cypress/e2e/bal-dropdown-multiple.spec.cy.ts @@ -0,0 +1,39 @@ +describe('bal-dropdown-multiple', () => { + beforeEach(() => { + cy.visit('/').platform('desktop').waitForDesignSystem() + }) + it('should change value', () => { + cy.getByLabelText('Dropdown Multiple Label').click() + cy.getByTestId('dropdownMultiple').within(() => { + cy.getByRole('option', { name: 'Kiwi' }).click() + }) + cy.getByLabelText('Dropdown Multiple Label').click().blur() + + cy.getByLabelText('Dropdown Multiple Label') + .shouldBeInvalid() + .getDescribingElement() + .contains('This field is required') + + cy.getByLabelText('Dropdown Multiple Label').click() + cy.getByTestId('dropdownMultiple').within(() => { + cy.getByRole('option', { name: 'Kiwi' }).click() + cy.getByRole('option', { name: 'Mango' }).click() + }) + cy.getByLabelText('Dropdown Multiple Label').click().blur() + cy.getByLabelText('Dropdown Multiple Label').should('have.value', 'Mango,Kiwi') + + cy.getByLabelText('Dropdown Multiple Label') + .shouldBeValid() + .getDescribingElement() + .should('not.contain', 'This field is required') + + cy.getByRole('button', { name: 'Disable Dropdown Multiple' }).click() + cy.getByLabelText('Dropdown Multiple Label').should('be.disabled') + + cy.getByRole('button', { name: 'Enable Dropdown Multiple' }).click() + cy.getByLabelText('Dropdown Multiple Label').should('not.be.disabled') + + cy.getByTestId('result').contains(`"Kiwi"`) + cy.getByTestId('result').contains(`"Mango"`) + }) +}) diff --git a/test/angular/base/app/cypress/e2e/bal-dropdown.spec.cy.ts b/test/angular/base/app/cypress/e2e/bal-dropdown.spec.cy.ts new file mode 100644 index 0000000000..a02500f1c1 --- /dev/null +++ b/test/angular/base/app/cypress/e2e/bal-dropdown.spec.cy.ts @@ -0,0 +1,39 @@ +describe('bal-dropdown', () => { + beforeEach(() => { + cy.visit('/').platform('desktop').waitForDesignSystem() + }) + it('should change value', () => { + cy.getByLabelText('Dropdown Label') + .should('have.value', '') + .click() + .wait(32) + .click() + .blur() + .shouldBeInvalid() + .getDescribingElement() + .contains('This field is required') + + cy.getByLabelText('Dropdown Label').click() + cy.get('bal-dropdown').getByRole('option', { name: 'Kiwi' }).click() + cy.getByLabelText('Dropdown Label') + .should('have.value', 'Kiwi') + .shouldBeValid() + .getDescribingElement() + .should('not.contain', 'This field is required') + + cy.getByRole('button', { name: 'Update Dropdown' }).click() + cy.getByLabelText('Dropdown Label') + .should('have.value', 'Apple') + .shouldBeValid() + .getDescribingElement() + .should('not.contain', 'This field is required') + + cy.getByRole('button', { name: 'Disable Dropdown' }).click() + cy.getByLabelText('Dropdown Label').should('be.disabled') + + cy.getByRole('button', { name: 'Enable Dropdown' }).click() + cy.getByLabelText('Dropdown Label').should('not.be.disabled') + + cy.getByTestId('result').contains('"dropdown": "Apple"') + }) +}) diff --git a/test/angular/base/app/src/app/app.component.ts b/test/angular/base/app/src/app/app.component.ts index c2d263058b..5469ee7d35 100644 --- a/test/angular/base/app/src/app/app.component.ts +++ b/test/angular/base/app/src/app/app.component.ts @@ -9,6 +9,7 @@ import { DatePickerComponent } from './form-components/datepicker.component' import { TimeComponent } from './form-components/time.component' import { InputStepperComponent } from './form-components/input-stepper.component' import { SliderComponent } from './form-components/input-slider.component' +import { DropdownComponent } from './form-components/dropdown.component' import { SelectComponent } from './form-components/select.component' import { CheckboxComponent } from './form-components/checkbox.component' import { CheckboxGroupComponent } from './form-components/checkbox-group.component' @@ -39,6 +40,7 @@ export interface UpdateControl { TimeComponent, InputStepperComponent, SliderComponent, + DropdownComponent, SelectComponent, CheckboxComponent, CheckboxGroupComponent, @@ -61,6 +63,8 @@ export interface UpdateControl { + + @@ -97,6 +101,8 @@ export class AppComponent { time: new FormControl(null, [Validators.required]), inputStepper: new FormControl(0, [Validators.min(2)]), slider: new FormControl(30, [Validators.min(10)]), + dropdown: new FormControl(null, [Validators.required]), + dropdownMultiple: new FormControl(['Kiwi'], [Validators.required]), select: new FormControl('Kiwi', [Validators.required]), selectMultiple: new FormControl(['Kiwi'], [Validators.required]), typeahead: new FormControl('Kiwi', [Validators.required]), diff --git a/test/angular/base/app/src/app/form-components/dropdown.component.ts b/test/angular/base/app/src/app/form-components/dropdown.component.ts new file mode 100644 index 0000000000..7a7834db8f --- /dev/null +++ b/test/angular/base/app/src/app/form-components/dropdown.component.ts @@ -0,0 +1,63 @@ +import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core' +import { CommonModule } from '@angular/common' +import { FormGroup, ReactiveFormsModule } from '@angular/forms' +import { balImports } from '../../design-system' +import { UpdateControl } from '../app.component' + +@Component({ + selector: 'app-dropdown', + standalone: true, + imports: [CommonModule, ReactiveFormsModule, ...balImports], + template: ` + + {{ label }} + + + {{ label }} Label + + + {{ option }} + + + + This field is required + + + + + Update {{ label }} + + Enable {{ label }} + Disable {{ label }} + + + + `, + styles: [], + changeDetection: ChangeDetectionStrategy.OnPush, + schemas: [CUSTOM_ELEMENTS_SCHEMA], +}) +export class DropdownComponent { + @Input() form!: FormGroup + @Input() multiple = false + @Input() typeahead = false + + get label() { + return this.multiple ? 'Dropdown Multiple' : 'Dropdown' + } + + get control() { + return this.multiple ? 'dropdownMultiple' : 'dropdown' + } + + @Output() updateControl = new EventEmitter() + + options = ['Apple', 'Banana', 'Orange', 'Mango', 'Strawberry', 'Pineapple', 'Grapes', 'Watermelon', 'Kiwi', 'Peach'] +}