Skip to content
This repository was archived by the owner on Sep 20, 2024. It is now read-only.

Commit 74c9f9e

Browse files
committed
feat(spinner): add spinner label
1 parent 250f69c commit 74c9f9e

File tree

14 files changed

+164
-7
lines changed

14 files changed

+164
-7
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<template>
2+
<c-spinner label="My spinner label" />
3+
</template>
4+
5+
<script lang="ts">
6+
import { CSpinner } from '@chakra-ui/c-spinner/src'
7+
import { defineComponent } from 'vue'
8+
9+
export default defineComponent({
10+
name: 'BaseCSpinnerExample',
11+
components: { CSpinner },
12+
})
13+
</script>

packages/c-spinner/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@
3737
"dependencies": {
3838
"@chakra-ui/styled-system": "^1.4.1",
3939
"@chakra-ui/vue-system": "*",
40-
"@chakra-ui/vue-utils": "*"
40+
"@chakra-ui/vue-utils": "*",
41+
"@chakra-ui/c-visually-hidden": "*"
4142
},
4243
"peerDependencies": {
4344
"vue": ">=3.0.5"

packages/c-spinner/src/spinner.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
useStyleConfig,
88
} from '@chakra-ui/vue-system'
99
import { ComponentThemeConfig } from '@chakra-ui/vue-theme'
10+
import { CVisuallyHidden } from '@chakra-ui/c-visually-hidden'
1011

1112
const spin = keyframes({
1213
'0%': {
@@ -119,7 +120,8 @@ const CSpinner = defineComponent({
119120
}),
120121
{
121122
...attrs,
122-
}
123+
},
124+
props.label && [h(CVisuallyHidden, props.label)]
123125
)
124126
},
125127
})

packages/c-spinner/tests/c-spinner.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@ import { CSpinner } from '../src'
44
it('should render properly', () => {
55
const { asFragment } = render(CSpinner)
66
expect(asFragment()).toMatchSnapshot()
7-
})
7+
})

packages/c-visually-hidden/README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# @chakra-ui/c-visually-hidden
2+
3+
A component used in web accessibility to hide content from the visual client but keep it readable for screen readers
4+
5+
## Installation
6+
7+
```sh
8+
yarn add @chakra-ui/c-visually-hidden
9+
# or
10+
npm i @chakra-ui/c-visually-hidden
11+
```
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<template>
2+
<chakra.p>👇🏽 There's actually some visually hidden text here :) 😀 </chakra.p>
3+
<c-visually-hidden> Visually Hidden </c-visually-hidden>
4+
</template>
5+
6+
<script lang="ts">
7+
import { CVisuallyHidden } from '@chakra-ui/c-visually-hidden/src'
8+
import { defineComponent } from 'vue'
9+
10+
export default defineComponent({
11+
name: 'BaseCVisuallyHiddenExample',
12+
components: { CVisuallyHidden },
13+
})
14+
</script>
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
{
2+
"name": "@chakra-ui/c-visually-hidden",
3+
"description": "Chakra UI Vue | A component used in web accessibility to hide content from the visual client but keep it readable for screen readers component",
4+
"version": "1.0.0",
5+
"main": "dist/cjs/index.js",
6+
"module": "dist/esm/index.js",
7+
"types": "dist/types/index.d.ts",
8+
"typings": "dist/types/index.d.ts",
9+
"author": "Jonathan Bakebwa <[email protected]>",
10+
"homepage": "https://github.com/chakra-ui/chakra-ui-vue-next#readme",
11+
"license": "MIT",
12+
"files": [
13+
"dist"
14+
],
15+
16+
"publishConfig": {
17+
"access": "public"
18+
},
19+
"repository": {
20+
"type": "git",
21+
"url": "git+https://github.com/chakra-ui/chakra-ui-vue-next.git"
22+
},
23+
"bugs": {
24+
"url": "https://github.com/chakra-ui/chakra-ui=vue-next/issues"
25+
},
26+
"sideEffects": false,
27+
"scripts": {
28+
"build": "concurrently yarn:build:*",
29+
"build:esm": "cross-env BABEL_ENV=esm babel src --root-mode upward --extensions .ts -d dist/esm --source-maps",
30+
"build:cjs": "cross-env BABEL_ENV=cjs babel src --root-mode upward --extensions .ts -d dist/cjs --source-maps",
31+
"build:types": "tsc --emitDeclarationOnly --declaration --declarationDir dist/types",
32+
"watch": "concurrently yarn:watch:*",
33+
"watch:esm": "cross-env BABEL_ENV=esm babel src --root-mode upward --extensions .ts -d dist/esm --source-maps --watch",
34+
"watch:cjs": "cross-env BABEL_ENV=cjs babel src --root-mode upward --extensions .ts -d dist/cjs --source-maps --watch",
35+
"watch:types": "tsc --emitDeclarationOnly --declaration --declarationDir dist/types --watch"
36+
},
37+
"dependencies": {
38+
"@chakra-ui/styled-system": "^1.4.1",
39+
"@chakra-ui/vue-system": "*",
40+
"@chakra-ui/vue-utils": "*"
41+
},
42+
"peerDependencies": {
43+
"vue": ">=3.0.5"
44+
}
45+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import { chakra } from '@chakra-ui/vue-system'
2+
import { CSSObject } from '@emotion/css'
3+
4+
/**
5+
* Styles to visually hide an element
6+
* but make it accessible to screen-readers
7+
*/
8+
export const visuallyHiddenStyle: CSSObject = {
9+
border: '0px',
10+
clip: 'rect(0px, 0px, 0px, 0px)',
11+
height: '1px',
12+
width: '1px',
13+
margin: '-1px',
14+
padding: '0px',
15+
overflow: 'hidden',
16+
whiteSpace: 'nowrap',
17+
position: 'absolute',
18+
}
19+
20+
/**
21+
* Visually hidden component used to hide
22+
* elements on screen
23+
*/
24+
export const CVisuallyHidden = chakra('span', {
25+
baseStyle: visuallyHiddenStyle,
26+
})
27+
28+
/**
29+
* Visually hidden input component for designing
30+
* custom input components using the html `input`
31+
* as a proxy
32+
*/
33+
export const CVisuallyHiddenInput = chakra('input', {
34+
baseStyle: visuallyHiddenStyle,
35+
})
36+
37+
export default CVisuallyHidden
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export { default as CVisuallyHidden } from './c-visually-hidden'
2+
export * from './c-visually-hidden'
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { render } from '../../test-utils/src'
2+
import { CVisuallyHidden } from '../src'
3+
4+
it('should render properly', () => {
5+
const { asFragment } = render(CVisuallyHidden)
6+
expect(asFragment()).toMatchSnapshot()
7+
})

0 commit comments

Comments
 (0)