From ed6ddff966d3a6286e4837d0abbe55bad8b399ef Mon Sep 17 00:00:00 2001 From: Bento Pereira Date: Tue, 3 Aug 2021 13:32:01 -0300 Subject: [PATCH] Feat: adding select atom --- .../store-ui/src/atoms/Select/Select.test.tsx | 30 +++++++++++ packages/store-ui/src/atoms/Select/Select.tsx | 19 +++++++ packages/store-ui/src/atoms/Select/index.ts | 2 + .../src/atoms/Select/stories/Select.mdx | 12 +++++ .../atoms/Select/stories/Select.stories.tsx | 51 +++++++++++++++++++ 5 files changed, 114 insertions(+) create mode 100644 packages/store-ui/src/atoms/Select/Select.test.tsx create mode 100644 packages/store-ui/src/atoms/Select/Select.tsx create mode 100644 packages/store-ui/src/atoms/Select/index.ts create mode 100644 packages/store-ui/src/atoms/Select/stories/Select.mdx create mode 100644 packages/store-ui/src/atoms/Select/stories/Select.stories.tsx diff --git a/packages/store-ui/src/atoms/Select/Select.test.tsx b/packages/store-ui/src/atoms/Select/Select.test.tsx new file mode 100644 index 0000000000..6e051ee27e --- /dev/null +++ b/packages/store-ui/src/atoms/Select/Select.test.tsx @@ -0,0 +1,30 @@ +import { render } from '@testing-library/react' +import React from 'react' + +import Input from '.' + +describe('Input', () => { + it('`data-store-input` is present', () => { + const { getByPlaceholderText } = render( + + ) + + expect(getByPlaceholderText('Hello World!')).toHaveAttribute( + 'data-store-input' + ) + }) + it('`data-error` is present', () => { + const { getByPlaceholderText } = render( + + ) + + expect(getByPlaceholderText('Hello World!')).toHaveAttribute('data-error') + }) + it('`data-success` is present', () => { + const { getByPlaceholderText } = render( + + ) + + expect(getByPlaceholderText('Hello World!')).toHaveAttribute('data-success') + }) +}) diff --git a/packages/store-ui/src/atoms/Select/Select.tsx b/packages/store-ui/src/atoms/Select/Select.tsx new file mode 100644 index 0000000000..56714dd673 --- /dev/null +++ b/packages/store-ui/src/atoms/Select/Select.tsx @@ -0,0 +1,19 @@ +/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */ +import type { SelectHTMLAttributes } from 'react' +import React, { forwardRef } from 'react' + +export interface SelectProps extends SelectHTMLAttributes { + /** + * ID to find this component in testing tools (e.g.: cypress, testing library, and jest). + */ + testId?: string +} + +const Select = forwardRef(function Select( + { testId = 'store-select', ...props }, + ref +) { + return