Skip to content

Commit 911ecfe

Browse files
authored
Merge pull request #101 from rishavanand/dev-master-merge-09082022
2 parents 57b1278 + 7d12703 commit 911ecfe

23 files changed

Lines changed: 731 additions & 517 deletions

.eslintrc.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,6 @@ module.exports = {
2323
rules: {
2424
// Place to specify ESLint rules. Can be used to overwrite rules specif$
2525
// e.g. "@typescript-eslint/explicit-function-return-type": "off",
26+
'@typescript-eslint/no-empty-function': 'off',
2627
},
2728
};

gatsby-config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ module.exports = {
6969
modifyVars: {
7070
'primary-color': '#1853db',
7171
'link-color': '#1853db',
72-
'border-radius-base': '4px',
72+
'border-radius-base': '20px',
7373
},
7474
javascriptEnabled: true,
7575
},

package-lock.json

Lines changed: 378 additions & 392 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"@fortawesome/free-brands-svg-icons": "^5.14.0",
1111
"@fortawesome/free-solid-svg-icons": "^5.14.0",
1212
"@fortawesome/react-fontawesome": "^0.1.11",
13-
"antd": "^4.5.1",
13+
"antd": "^4.22.4",
1414
"emoji-mart": "^3.0.0",
1515
"gatsby": "^2.24.15",
1616
"gatsby-image": "^2.4.14",
@@ -19,7 +19,7 @@
1919
"gatsby-plugin-less": "^5.0.0",
2020
"gatsby-plugin-manifest": "^2.4.21",
2121
"gatsby-plugin-offline": "^3.2.21",
22-
"gatsby-plugin-react-helmet": "^3.3.10",
22+
"gatsby-plugin-react-helmet": "^5.20.0",
2323
"gatsby-plugin-sass": "^2.3.12",
2424
"gatsby-plugin-sharp": "^2.6.24",
2525
"gatsby-plugin-smoothscroll": "^1.2.0",
@@ -37,13 +37,16 @@
3737
"uuid": "^8.3.0"
3838
},
3939
"devDependencies": {
40-
"ts-node": "^8.10.2",
40+
"@babel/runtime": "^7.18.6",
41+
"@types/antd": "^1.0.0",
4142
"@types/emoji-mart": "^3.0.2",
43+
"@types/marked": "^1.1.0",
44+
"@types/react-copy-to-clipboard": "^5.0.3",
45+
"@types/react-helmet": "^6.1.5",
4246
"@types/react-scroll": "^1.5.5",
4347
"@typescript-eslint/eslint-plugin": "^3.7.1",
4448
"@typescript-eslint/parser": "^3.7.1",
45-
"@types/marked": "^1.1.0",
46-
"@types/react-helmet": "^6.0.0",
49+
"babel-runtime": "^6.26.0",
4750
"eslint": "^7.5.0",
4851
"eslint-config-prettier": "^6.11.0",
4952
"eslint-plugin-prettier": "^3.1.4",
@@ -54,6 +57,7 @@
5457
"node-sass": "^4.14.1",
5558
"prettier": "^2.0.5",
5659
"react-refresh": "^0.8.3",
60+
"ts-node": "^8.10.2",
5761
"typescript": "^3.9.7"
5862
},
5963
"keywords": [

src/components/Field/GithubReadmeStatsField.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ export const generateImageTag = (data: GithubReadmeStatsData, options: GithubRea
5151
statsUrl = `https://github-readme-stats.vercel.app/api?username=${data.username}&show_icons=true&count_private=true&hide_border=true`;
5252
else if (options.variant === VARIANT.LANGUAGE_STATS)
5353
statsUrl = `https://github-readme-stats.vercel.app/api/top-langs/?username=${data.username}&hide_border=true&layout=compact`;
54+
else statsUrl = '#';
5455

5556
if (options.fitImage)
5657
return `<img src="${statsUrl}" align="${
@@ -65,6 +66,7 @@ export const generateGithubReadmeStatsMarkdown = ({ data, options }: GithubReadm
6566
data = {
6667
username: '',
6768
};
69+
if (!options.alignment) options.alignment = STATS_ALIGNMENT.LEFT;
6870
return (
6971
`${generateAlignmentTags(options.alignment, 'start')}` +
7072
`${generateImageTag(data, options)}` +
@@ -103,12 +105,12 @@ export const GithubReadmeStatsField = ({
103105
...localGithubReadmeStatsProps,
104106
options: {
105107
...localGithubReadmeStatsProps.options,
106-
fitImage: localGithubReadmeStatsProps.options.fitImage ? false : true,
108+
fitImage: localGithubReadmeStatsProps?.options?.fitImage ? false : true,
107109
},
108110
});
109111
};
110112

111-
const changeAlignment = (alignment: typeof localGithubReadmeStatsProps.options.alignment) => {
113+
const changeAlignment = (alignment: STATS_ALIGNMENT) => {
112114
const localProps = { ...localGithubReadmeStatsProps };
113115
if (!localProps.options) localProps.options = {};
114116
localProps.options.alignment = alignment;
@@ -194,7 +196,7 @@ export const GithubReadmeStatsField = ({
194196
rows={1}
195197
autoSize={true}
196198
name="username"
197-
value={localGithubReadmeStatsProps.data.username}
199+
value={localGithubReadmeStatsProps?.data?.username}
198200
onChange={onChange}
199201
/>
200202
</Form.Item>

src/components/Field/ImageField.tsx

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
55
import styles from '../../styles/fields.module.scss';
66
import { faAlignLeft, faExpandArrowsAlt } from '@fortawesome/free-solid-svg-icons';
77
import { FieldProps } from '.';
8+
import { STATS_ALIGNMENT } from './GithubReadmeStatsField';
89

910
const { TextArea } = Input;
1011

@@ -70,6 +71,7 @@ export const generateImageFieldMarkdown = ({ data, options }: ImageFieldProps) =
7071
alt: '',
7172
title: '',
7273
};
74+
if (!options.alignment) options.alignment = IMAGE_ALIGNMENT.LEFT;
7375
return (
7476
`${generateAlignmentTags(options.alignment, 'start')}` +
7577
`${generateImageTag(data, options)}` +
@@ -133,15 +135,15 @@ export const ImageField = ({
133135
...localImageFieldProps,
134136
options: {
135137
...localImageFieldProps.options,
136-
fitImage: localImageFieldProps.options.fitImage ? false : true,
138+
fitImage: localImageFieldProps?.options?.fitImage ? false : true,
137139
},
138140
});
139141
};
140142

141-
const changeAlignment = (aligment: typeof localImageFieldProps.options.alignment) => {
143+
const changeAlignment = (alignment: IMAGE_ALIGNMENT) => {
142144
const localProps = { ...localImageFieldProps };
143145
if (!localProps.options) localProps.options = {};
144-
localProps.options.alignment = aligment;
146+
localProps.options.alignment = alignment;
145147
modifyField(localProps);
146148
};
147149

@@ -199,7 +201,7 @@ export const ImageField = ({
199201
rows={1}
200202
autoSize={true}
201203
name="alt"
202-
value={localImageFieldProps.data.alt}
204+
value={localImageFieldProps?.data?.alt}
203205
onChange={onChange}
204206
/>
205207
</Form.Item>
@@ -208,7 +210,7 @@ export const ImageField = ({
208210
rows={1}
209211
autoSize={true}
210212
name="url"
211-
value={localImageFieldProps.data.url}
213+
value={localImageFieldProps?.data?.url}
212214
onChange={onChange}
213215
/>
214216
</Form.Item>
@@ -217,7 +219,7 @@ export const ImageField = ({
217219
rows={1}
218220
autoSize={true}
219221
name="height"
220-
value={localImageFieldProps.options.height}
222+
value={localImageFieldProps?.options?.height}
221223
onChange={onChange}
222224
/>
223225
</Form.Item>
@@ -226,7 +228,7 @@ export const ImageField = ({
226228
rows={1}
227229
autoSize={true}
228230
name="width"
229-
value={localImageFieldProps.options.width}
231+
value={localImageFieldProps?.options?.width}
230232
onChange={onChange}
231233
/>
232234
</Form.Item>

src/components/Field/ProfileVisitorCounterField.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ export const ProfileVisitorCounterField = ({
8888
});
8989
};
9090

91-
const changeAlignment = (alignment: typeof localProps.options.alignment) => {
91+
const changeAlignment = (alignment: STATS_ALIGNMENT) => {
9292
if (!localProps.options) localProps.options = {};
9393
localProps.options.alignment = alignment;
9494
modifyField(localProps);
@@ -132,7 +132,7 @@ export const ProfileVisitorCounterField = ({
132132
rows={1}
133133
autoSize={true}
134134
name="username"
135-
value={localProps.data.username}
135+
value={localProps?.data?.username}
136136
onChange={onChange}
137137
/>
138138
</Form.Item>

src/components/Field/SkillsField.tsx

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ export interface SkillsFieldProps extends FieldProps {
3939
export const generateImageTag = (data: SkillsFieldData, options: SkillsFieldOptions) => {
4040
return (
4141
`<div align="center"> \n` +
42-
data.list
42+
(data.list || [])
4343
.map(skill => {
44-
return `<img style="margin: 10px" src="${SKILLS[skill].iconUrl}" alt="${SKILLS[skill].label}" height="${options.size}" />`;
44+
return `<a href="${SKILLS[skill].companyUrl}" target="_blank"><img style="margin: 10px" src="${SKILLS[skill].iconUrl}" alt="${SKILLS[skill].label}" height="${options.size}" /></a>`;
4545
})
4646
.join(' \n') +
4747
' \n</div>'
@@ -80,24 +80,26 @@ export const SkillsField = ({
8080

8181
const skillsColSpan = screens.md ? 6 : 12;
8282

83-
const onChange = event => {
83+
const onChange = (event: { target: { value?: string; checked: boolean } }) => {
8484
const name = event.target.value;
85-
const isChecked = event.target.checked;
86-
let currentSkillsList = localSkillsFieldProps.data.list;
85+
if (name) {
86+
const isChecked = event.target.checked;
87+
let currentSkillsList = localSkillsFieldProps.data.list || [];
8788

88-
if (isChecked) {
89-
currentSkillsList.push(name);
90-
} else {
91-
currentSkillsList = currentSkillsList.filter(skill => skill !== name);
92-
}
89+
if (isChecked) {
90+
currentSkillsList.push(name);
91+
} else {
92+
currentSkillsList = currentSkillsList.filter(skill => skill !== name);
93+
}
9394

94-
localSkillsFieldProps.data.list = currentSkillsList as string[];
95+
localSkillsFieldProps.data.list = currentSkillsList as string[];
9596

96-
setLocalSkillsFieldProps(localSkillsFieldProps);
97-
modifyField(localSkillsFieldProps);
97+
setLocalSkillsFieldProps(localSkillsFieldProps);
98+
modifyField(localSkillsFieldProps);
99+
}
98100
};
99101

100-
const onSearch = value => {
102+
const onSearch = (value: string) => {
101103
setSearchValue(value);
102104
};
103105

@@ -126,7 +128,14 @@ export const SkillsField = ({
126128
<>
127129
<Row justify="space-between" style={{ marginBottom: 30 }}>
128130
<Col>
129-
<Search placeholder="Search Skills..." allowClear onSearch={onSearch} style={{ width: 180 }} />
131+
<Search
132+
value={searchValue}
133+
onInput={e => setSearchValue(e.currentTarget.value)}
134+
placeholder="Search Skills..."
135+
allowClear
136+
onSearch={onSearch}
137+
style={{ width: 180 }}
138+
/>
130139
</Col>
131140
<Col>
132141
<Dropdown overlay={sizeMenu}>

src/components/Field/SocialField.tsx

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export interface SocialFieldOptions {
2626
}
2727

2828
export interface SocialFieldData {
29-
sites?: {
29+
sites: {
3030
[key: string]: {
3131
id?: SOCIAL_SITE_IDS;
3232
username?: string;
@@ -54,16 +54,19 @@ export const generateAlignmentTags = (alignment: SOCIAL_FIELD_ALIGNMENT, type: '
5454
export const generateSocialTags = (data: SocialFieldData = { sites: {} }, options: SocialFieldOptions = {}) => {
5555
const sites = data.sites ? Object.keys(data.sites) : [];
5656
return sites
57+
.filter(siteId => data.sites[siteId]?.username)
5758
.map(
5859
siteId =>
59-
`<a href="${SOCIAL_SITES[siteId].href(data.sites[siteId].username)}" target="_blank">\n<img src=${
60+
`<a href="${SOCIAL_SITES[siteId].href(data.sites[siteId].username!)}" target="_blank">\n<img src=${
6061
SOCIAL_SITES[siteId].shieldBadge
6162
} alt=${siteId} style="margin-bottom: 5px;" />\n</a>`,
6263
)
6364
.join('\n');
6465
};
6566

6667
export const generateSocialFieldMarkdown = ({ data, options = {} }: SocialFieldProps) => {
68+
if (!options) options = {};
69+
if (!options.alignment) options.alignment = SOCIAL_FIELD_ALIGNMENT.LEFT;
6770
return (
6871
`${generateAlignmentTags(options.alignment, 'start')}` +
6972
`${generateSocialTags(data, options)}` +
@@ -90,19 +93,20 @@ export const SocialField = ({
9093
const onChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {
9194
const id = event.target.name;
9295
const value = event.target.value;
93-
if (!localSocialFieldProps.data.sites[id]) localSocialFieldProps.data.sites[id] = {};
94-
if (value)
96+
if (localSocialFieldProps?.data && !localSocialFieldProps?.data?.sites[id])
97+
localSocialFieldProps.data.sites[id] = {};
98+
if (localSocialFieldProps.data && value)
9599
localSocialFieldProps.data.sites[id] = {
96100
...localSocialFieldProps.data.sites[id],
97101
username: value,
98102
};
99-
else delete localSocialFieldProps.data.sites[id];
103+
else if (localSocialFieldProps.data) delete localSocialFieldProps.data.sites[id];
100104
modifyField({
101105
...localSocialFieldProps,
102106
});
103107
};
104108

105-
const changeAlignment = (alignment: typeof localSocialFieldProps.options.alignment) => {
109+
const changeAlignment = (alignment: SOCIAL_FIELD_ALIGNMENT) => {
106110
const localProps = { ...localSocialFieldProps };
107111
if (!localProps.options) localProps.options = {};
108112
localProps.options.alignment = alignment;
@@ -118,10 +122,9 @@ export const SocialField = ({
118122
<TextArea
119123
rows={1}
120124
autoSize={true}
121-
suffix={site.title}
122125
name={siteId}
123126
value={
124-
localSocialFieldProps.data.sites[siteId]
127+
localSocialFieldProps.data && localSocialFieldProps.data.sites[siteId]
125128
? localSocialFieldProps.data.sites[siteId].username
126129
: ''
127130
}

src/components/Field/SpotifyListeningTo.tsx

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,15 @@ export const generateAlignmentTags = (alignment: ALIGNMENT, type: 'start' | 'end
3838
};
3939

4040
export const generateSpotifyListeningToMarkdown = ({ data, options }: SpotifyListeningToProps) => {
41-
const markdown = data.spotifyMarkdown
41+
if (!options) options = {};
42+
43+
const markdown = data?.spotifyMarkdown
4244
? data.spotifyMarkdown
4345
: '[spotify-github-profile](https://rishavanand.github.io/static/images/spotify-readme-example.svg)';
4446
const svgLink = markdown.substring(markdown.indexOf('(') + 1, markdown.indexOf(')'));
4547

48+
if (!options?.alignment) options.alignment = ALIGNMENT.LEFT;
49+
4650
if (options.fitImage)
4751
return `<img src="${svgLink}" align="${options.alignment ? options.alignment : 'left'}" style="width: 100%" />`;
4852
else if (options.alignment && (options.alignment === ALIGNMENT.CENTRE || options.alignment === ALIGNMENT.RIGHT))
@@ -81,12 +85,12 @@ export const SpotifyListeningToField = ({
8185
...localSpotifyListeningProps,
8286
options: {
8387
...localSpotifyListeningProps.options,
84-
fitImage: localSpotifyListeningProps.options.fitImage ? false : true,
88+
fitImage: localSpotifyListeningProps?.options?.fitImage ? false : true,
8589
},
8690
});
8791
};
8892

89-
const changeAlignment = (alignment: typeof localSpotifyListeningProps.options.alignment) => {
93+
const changeAlignment = (alignment: ALIGNMENT) => {
9094
const localProps = { ...localSpotifyListeningProps };
9195
if (!localProps.options) localProps.options = {};
9296
localProps.options.alignment = alignment;
@@ -158,7 +162,7 @@ export const SpotifyListeningToField = ({
158162
rows={1}
159163
autoSize={true}
160164
name="md-code"
161-
value={localSpotifyListeningProps.data.spotifyMarkdown}
165+
value={localSpotifyListeningProps?.data?.spotifyMarkdown}
162166
onChange={onChange}
163167
placeholder="Paste the generated code here"
164168
/>

0 commit comments

Comments
 (0)