Skip to content

Commit 307b782

Browse files
committed
feat: added target for href
1 parent 92bf511 commit 307b782

File tree

5 files changed

+44
-6
lines changed

5 files changed

+44
-6
lines changed

README.md

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,13 @@ react-store-badges is a React.js component displaying badges for App Store and G
1111
react-store-badge uses SVG files, (optimized by svgo) so no worries about image going wrong.
1212

1313
## Getting started
14+
1415
```
1516
npm install --save react-store-badges
1617
```
1718

1819
## Usage
20+
1921
```
2022
import React, {Component} from 'react'
2123
@@ -40,29 +42,40 @@ react-store-badge uses SVG files, (optimized by svgo) so no worries about image
4042
}
4143
```
4244

45+
## props
46+
47+
| Name | Type | Default | Description |
48+
| :----------- | :-------------------------------: | :--------: | :------------------------------ |
49+
| **url** | <code>string</code> | `required` | url of App Store and Play Store |
50+
| **platform** | <code>'ios'&#124;'android'</code> | `required` | url of App Store and Play Store |
51+
| **defaultLocale** | <code>string</code> | 'en-us' | default locale code |
52+
| **locale** | <code>string</code> | 'en-us' | locale name |
53+
| **width** | <code>number</code> | 135 | width for badge size |
54+
| **height** | <code>number</code> | 40 | height for badge size |
55+
| **target** | <code>'_self'&#124;'_blank'&#124;'_parent'&#124;'_top'</code> | '_self' | target for url to be opened |
4356
## Localization
57+
4458
### Supported locales
59+
4560
[Apple locales list](https://www.apple.com/itunes/marketing-on-itunes/identity-guidelines.html#itunes-store-badges#LocalizedBadges)
4661

4762
[Google locales list](https://github.com/yjb94/google-play-badge-svg/tree/master/img)
4863

4964
### Localization tip
65+
5066
- iOS uses full code of their locale. (ex. en-us) and google uses short code of their locale(ex. en). So if you want your badge in only one store, you can customize it anyway.
5167

5268
## Badge Guidelines
69+
5370
please note that you have to follow the guidelines below
5471

5572
[Apple Badge Guidelines](https://developer.apple.com/app-store/marketing/guidelines/)
5673

5774
[Google Badge Guidelines](https://play.google.com/intl/en_us/badges/)
5875

59-
60-
6176
[build-badge]: https://img.shields.io/travis/yjb94/react-store-badge/master.png?style=flat-square
6277
[build]: https://travis-ci.org/yjb94/react-store-badge
63-
6478
[npm-badge]: https://img.shields.io/npm/v/npm-package.png?style=flat-square
6579
[npm]: https://www.npmjs.org/package/npm-package
66-
6780
[coveralls-badge]: https://img.shields.io/coveralls/yjb94/react-store-badges/master.png?style=flat-square
6881
[coveralls]: https://coveralls.io/github/yjb94/react-store-badges

demo/src/index.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,16 @@ class Demo extends Component {
105105
/>
106106
</div>
107107
</div>
108+
<div>
109+
<h1>Open in new target</h1>
110+
<div>
111+
<ReactStoreBadges
112+
platform={'ios'}
113+
url={'https://apps.apple.com/app/'}
114+
target="_blank"
115+
/>
116+
</div>
117+
</div>
108118
</div>
109119
)
110120
}

src/index.d.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ export interface ReactStoreBadgesProps {
1919

2020
/** height for badge size */
2121
height?: number
22+
23+
/** target for url to be opened */
24+
target?: "_self" | "_blank" | "_parent" | "_top"
2225
}
2326

2427
declare const ReactStoreBadges: ReactStoreBadgesProps

src/index.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React, { useState } from 'react';
22

33
const HEIGHT_RATIO = 3.375;
44

5-
const getImage = (locale, code = locale) => {
5+
const getImage = (locale = 'en-us', code = locale) => {
66
return {
77
ios:`https://linkmaker.itunes.apple.com/images/badges/${locale}/badge_appstore-lrg.svg`,
88
android: `https://raw.github.com/yjb94/google-play-badge-svg/master/img/${code}_get.svg?sanitize=true`
@@ -16,6 +16,7 @@ const ReactStoreBadges = ({
1616
locale = (typeof navigator !== 'undefined' && navigator.language || defaultLocale),
1717
width = 135,
1818
height = width/HEIGHT_RATIO,
19+
target = "_self"
1920
}) => {
2021
let shortCode = locale = locale.toLowerCase()
2122
const expeptionLocale = ["zh-cn", "zh-tw"];
@@ -26,7 +27,7 @@ const ReactStoreBadges = ({
2627
const [image, setImage] = useState(getImage(locale, shortCode))
2728

2829
const setDefaultImage = () => {
29-
setImage(getImage(defaultLocale))
30+
setImage(getImage(defaultLocale, shortCode))
3031
}
3132

3233
return (
@@ -37,6 +38,7 @@ const ReactStoreBadges = ({
3738
width: width,
3839
}}
3940
href={url}
41+
target={target}
4042
>
4143
<img
4244
src={image[platform]}

tests/index-test.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ describe('ReactStoreBadges', () => {
3333
locale={'en-us'}
3434
width={135}
3535
height={40}
36+
target={"_blank"}
3637
/>, node, () => {
3738
})
3839
})
@@ -54,4 +55,13 @@ describe('ReactStoreBadges', () => {
5455
/>, node, () => {
5556
})
5657
})
58+
59+
it('wrong locale, wrong image', () => {
60+
render(
61+
<ReactStoreBadges
62+
defaultLocale={'abcd'}
63+
locale={'abc'}
64+
/>, node, () => {
65+
})
66+
})
5767
})

0 commit comments

Comments
 (0)