Skip to content

Commit

Permalink
feat(store-ui): Spinner atom (#961)
Browse files Browse the repository at this point in the history
* Spinner component for loading

* Spinner exports

* Fix data-testid

Co-authored-by: Igor Brasileiro <brasileiro456@gmail.com>

* remove explicit children prop

Co-authored-by: Igor Brasileiro <brasileiro456@gmail.com>

* BREAKING CHANGE: Remove deprecated folders (#927)

* feat(store-ui): adding list atom (#918)

Create List component as an Atom.

* feat(store-ui): Add Skeleton Atom (#911)

* Add skeleton atom

* Move animation to theme

* Import tailwind utilities

* Update test

* Use only 1 div

* Update story

* Extend HTMLDivElement

* Spinner exports

* lint

* Fix Spinner test

* removing duplicated line in package.json

Co-authored-by: Igor Brasileiro <brasileiro456@gmail.com>
Co-authored-by: Tiago Gimenes <tlgimenes@gmail.com>
Co-authored-by: Bento Pereira <40964933+bentoper@users.noreply.github.com>
Co-authored-by: Larícia Mota <laricia.mota@vtex.com.br>
  • Loading branch information
5 people authored and rrbambokian committed Sep 30, 2021
1 parent acb4bad commit a2d4ba8
Show file tree
Hide file tree
Showing 9 changed files with 91 additions and 7 deletions.
5 changes: 1 addition & 4 deletions lerna.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,5 @@
}
},
"changelogPreset": "angular",
"packages": [
"packages/*",
"themes/*"
]
"packages": ["packages/*", "themes/*"]
}
12 changes: 12 additions & 0 deletions packages/store-ui/src/atoms/Spinner/Spinner.test.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { render } from '@testing-library/react'
import React from 'react'

import Spinner from './Spinner'

describe('Spinner', () => {
it('`data-store-spinner` is present', () => {
const { getByTestId } = render(<Spinner />)

expect(getByTestId('store-spinner')).toHaveAttribute('data-store-spinner')
})
})
17 changes: 17 additions & 0 deletions packages/store-ui/src/atoms/Spinner/Spinner.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import React, { forwardRef } from 'react'

export type SpinnerProps = {
/**
* ID to find this component in testing tools (e.g.: cypress, testing library, and jest).
*/
testId?: string
}

const Spinner = forwardRef<HTMLDivElement, SpinnerProps>(function Spinner(
{ children, testId = 'store-spinner', ...props },
ref
) {
return <span ref={ref} data-store-spinner data-testid={testId} {...props} />
})

export default Spinner
2 changes: 2 additions & 0 deletions packages/store-ui/src/atoms/Spinner/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export { default } from './Spinner'
export type { SpinnerProps } from './Spinner'
18 changes: 18 additions & 0 deletions packages/store-ui/src/atoms/Spinner/stories/Spinner.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import { Story, Canvas, ArgsTable } from '@storybook/addon-docs'
import Spinner from '../Spinner'

# Spinner

<Canvas>
<Story id="atoms-spinner--spinner" />
</Canvas>

## Props

<ArgsTable of={Spinner} />

## CSS Selectors

```css
[data-store-spinner] {}
```
21 changes: 21 additions & 0 deletions packages/store-ui/src/atoms/Spinner/stories/Spinner.stories.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import type { Story } from '@storybook/react'
import React from 'react'

import type { SpinnerProps } from '../Spinner'
import Component from '../Spinner'
import mdx from './Spinner.mdx'

const SpinnerTemplate: Story<SpinnerProps> = ({ testId }) => (
<Component testId={testId} />
)

export const Spinner = SpinnerTemplate.bind({})

export default {
title: 'Atoms/Spinner',
parameters: {
docs: {
page: mdx,
},
},
}
3 changes: 3 additions & 0 deletions packages/store-ui/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,9 @@ export type { ListProps } from './atoms/List'
export { default as Skeleton } from './atoms/Skeleton'
export type { SkeletonProps } from './atoms/Skeleton'

export { default as Spinner } from './atoms/Spinner'
export type { SpinnerProps } from './atoms/Spinner'

// Molecules
export { default as Bullets } from './molecules/Bullets'
export type { BulletsProps } from './molecules/Bullets'
Expand Down
7 changes: 4 additions & 3 deletions themes/theme-b2c-tailwind/src/atoms/index.css
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
@import "./badge.css";
@import "./button.css";
@import "./icon.css";
@import "./input.css";
@import "./overlay.css";
@import "./popover.css";
@import "./price.css";
@import "./textarea.css";
@import "./overlay.css";
@import "./badge.css";
@import "./skeleton.css";
@import "./skeleton.css";
@import "./spinner.css";
13 changes: 13 additions & 0 deletions themes/theme-b2c-tailwind/src/atoms/spinner.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
[data-store-spinner] {
@apply block animate-spin text-xs relative;

border-top: 0.2em solid rgba(0, 0, 0, 0.2);
border-right: 0.2em solid rgba(0, 0, 0, 0.2);
border-bottom: 0.2em solid rgba(0, 0, 0, 0.2);
border-left: 0.2em solid #000000;
}

[data-store-spinner], [data-store-spinner]:after {
@apply h-4 w-4;
border-radius: 50%;
}

0 comments on commit a2d4ba8

Please sign in to comment.