From 9b04b49ca5016b2b39e73937bec19d95dcf29a71 Mon Sep 17 00:00:00 2001 From: Alexandre Esteves Date: Thu, 20 Jul 2023 11:47:55 +0200 Subject: [PATCH] fix(searchbar): pr comment --- .../osds-search-bar/osds-search-bar.scss | 11 +++++---- .../osds-search-bar/osds-search-bar.spec.ts | 23 +++++++++++++++++++ .../osds-search-bar/osds-search-bar.tsx | 20 ++++++++-------- .../styles/osds-search-bar.size.scss | 4 +++- .../components/search-bar/src/index.html | 3 +++ .../osds-select/styles/osds-select.size.scss | 2 +- 6 files changed, 47 insertions(+), 16 deletions(-) diff --git a/packages/stencil/components/search-bar/src/components/osds-search-bar/osds-search-bar.scss b/packages/stencil/components/search-bar/src/components/osds-search-bar/osds-search-bar.scss index c482dfa7a3..431026b3eb 100644 --- a/packages/stencil/components/search-bar/src/components/osds-search-bar/osds-search-bar.scss +++ b/packages/stencil/components/search-bar/src/components/osds-search-bar/osds-search-bar.scss @@ -11,7 +11,7 @@ osds-select { --ods-size-select-border-radius-bottom-right: 0; --ods-size-select-border-radius-top-right: 0; - --ods-size-select-border-right: none; + --ods-size-select-border-right-width: 0; } .first { @@ -27,9 +27,12 @@ border-radius: 0; } - osds-button::part(button) { - border-bottom-left-radius: 0; - border-top-left-radius: 0; + osds-button { + flex-shrink: 0; + &::part(button) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; + } } } diff --git a/packages/stencil/components/search-bar/src/components/osds-search-bar/osds-search-bar.spec.ts b/packages/stencil/components/search-bar/src/components/osds-search-bar/osds-search-bar.spec.ts index 8113ca4bc2..bd27555476 100644 --- a/packages/stencil/components/search-bar/src/components/osds-search-bar/osds-search-bar.spec.ts +++ b/packages/stencil/components/search-bar/src/components/osds-search-bar/osds-search-bar.spec.ts @@ -114,6 +114,29 @@ describe('spec:osds-search-bar', () => { instance.handlerOnClickSearchButton(); expect(spyEmitOdsSearchSubmit).toHaveBeenCalledTimes(2); expect(spyEmitOdsSearchSubmit).toHaveBeenCalledWith({ optionValue: '', inputValue: '' }); + }); + + it('should call emit odsSearchSubmit with keyboard navigation', async () => { + await setup({}); + const spyEmitOdsSearchSubmit = jest.spyOn(instance.odsSearchSubmit, 'emit'); + const enterKey = new KeyboardEvent('keydown', { code: 'Enter'}); + instance.handlerOnKeydownInput(enterKey); + const spaceKey = new KeyboardEvent('keydown', { code: 'Space'}); + instance.handlerOnKeydownInput(spaceKey); + + expect(spyEmitOdsSearchSubmit).toHaveBeenCalledTimes(2); + expect(spyEmitOdsSearchSubmit).toHaveBeenCalledWith({ optionValue: '', inputValue: '' }); + }); + + it('should not call emit odsSearchSubmit with keyboard navigation because of wrong key', async () => { + await setup({}); + const spyEmitOdsSearchSubmit = jest.spyOn(instance.odsSearchSubmit, 'emit'); + const enterKey = new KeyboardEvent('keydown', { code: 'A'}); + instance.handlerOnKeydownInput(enterKey); + const spaceKey = new KeyboardEvent('keydown', { code: '0'}); + instance.handlerOnKeydownInput(spaceKey); + + expect(spyEmitOdsSearchSubmit).not.toHaveBeenCalled(); }) }); }); diff --git a/packages/stencil/components/search-bar/src/components/osds-search-bar/osds-search-bar.tsx b/packages/stencil/components/search-bar/src/components/osds-search-bar/osds-search-bar.tsx index 5f64a56810..0284d3a912 100644 --- a/packages/stencil/components/search-bar/src/components/osds-search-bar/osds-search-bar.tsx +++ b/packages/stencil/components/search-bar/src/components/osds-search-bar/osds-search-bar.tsx @@ -10,7 +10,6 @@ import { OdsSearchBarEvents, OdsSearchBarMethods, OdsSelectValueChangeEvent, - // odsSearchBarDefaultAttributes } from '@ovhcloud/ods-core'; import { OdsStencilEvents, OdsStencilMethods } from '@ovhcloud/ods-stencil/libraries/stencil-core'; import { OdsThemeColorIntent } from '@ovhcloud/ods-theming'; @@ -60,6 +59,14 @@ export class OsdsSearchBar implements OdsSearchBar @@ -80,7 +87,6 @@ export class OsdsSearchBar implements OdsSearchBar { this.options?.map((option) => { option.label }) } - || '' } this.handlerOnClickSearchButton() } - onKeyDown={ (event: KeyboardEvent) => { - const isEnter = event.code.includes('Enter'); - const isSpace = event.code.includes('Space'); - if (isEnter || isSpace) { - this.handlerOnClickSearchButton(); - } - }} + onKeyDown={ (event: KeyboardEvent) => this.handlerOnKeydownInput(event) } size={ OdsButtonSize.sm } color={ OdsThemeColorIntent.primary } disabled={ this.disabled } diff --git a/packages/stencil/components/search-bar/src/components/osds-search-bar/styles/osds-search-bar.size.scss b/packages/stencil/components/search-bar/src/components/osds-search-bar/styles/osds-search-bar.size.scss index 9cfd3f5d9e..fa1eee2ce1 100644 --- a/packages/stencil/components/search-bar/src/components/osds-search-bar/styles/osds-search-bar.size.scss +++ b/packages/stencil/components/search-bar/src/components/osds-search-bar/styles/osds-search-bar.size.scss @@ -4,9 +4,11 @@ // Main CSS mixin for sizes @mixin osds-search-bar-theme-size() { :host { - width: 654px; osds-select { width: 30%; } } + :host([flex]) { + width: 100%; + } } diff --git a/packages/stencil/components/search-bar/src/index.html b/packages/stencil/components/search-bar/src/index.html index a0c334d732..3f657ba8d1 100644 --- a/packages/stencil/components/search-bar/src/index.html +++ b/packages/stencil/components/search-bar/src/index.html @@ -18,6 +18,9 @@

SearchBar

+

SearchBar Flex

+ +

SearchBar with value

diff --git a/packages/stencil/components/select/src/components/osds-select/styles/osds-select.size.scss b/packages/stencil/components/select/src/components/osds-select/styles/osds-select.size.scss index 2c8cd02bba..4be93f3996 100644 --- a/packages/stencil/components/select/src/components/osds-select/styles/osds-select.size.scss +++ b/packages/stencil/components/select/src/components/osds-select/styles/osds-select.size.scss @@ -7,7 +7,7 @@ grid-column-gap: ods-get-size-property($sizes, grid-column-gap); height: ods-get-size-property($sizes, height); border-width: ods-get-size-property($sizes, border-width); - border-right: var(--ods-size-select-border-right, ods-get-size-property($sizes,border-width)); + border-right-width: var(--ods-size-select-border-right-width, ods-get-size-property($sizes, border-width)); padding: ods-get-size-property($sizes, padding); border-top-left-radius: var(--ods-size-select-border-radius-top-left, ods-get-size-property($sizes, border-radius)); border-bottom-left-radius: var(--ods-size-select-border-radius-bottom-left, ods-get-size-property($sizes, border-radius));