diff --git a/src/components/addons.js b/src/components/addons.js
index 1c641cf..e065fae 100644
--- a/src/components/addons.js
+++ b/src/components/addons.js
@@ -1,10 +1,11 @@
-import React from "react"
+import React, { useState, useEffect } from "react"
import { withPrefix } from "gatsby"
import { latestBlogs } from "../utils/workflows"
import links from "../constants/page-links"
-import { isMediumUsernameValid } from "../utils/validation"
+import { isMediumUsernameValid, isGitHubUsernameValid } from "../utils/validation"
+import { ToolsIcon, XCircleIcon } from "@primer/octicons-react";
-const AddonsItem = ({ inputId, inputChecked, onInputChange, ...props }) => {
+const AddonsItem = ({inputId, inputChecked, onInputChange, Icon, onIconClick, ...props}) => {
return (
+ {
+ Icon?
+
+ :''
+ }
+
+ )
+}
+
+const CustomizeBadge = ({githubName, badgeOptions, onBadgeUpdate}) => {
+ return (
+
)
}
const Addons = props => {
+ const [customizeBadgeOpen, setCustomizeOpen] = useState(false);
+ const [debounce, setDebounce] = useState(undefined);
+ const [badgeOptions, setBadgeOptions] = useState({
+ badgeStyle: props.data.badgeStyle,
+ badgeColor: props.data.badgeColor,
+ badgeLabel: props.data.badgeLabel
+ });
+
+ useEffect(() => {
+ setBadgeOptions({
+ badgeStyle: props.data.badgeStyle,
+ badgeColor: props.data.badgeColor,
+ badgeLabel: props.data.badgeLabel
+ })
+ }, [props.data.badgeStyle, props.data.badgeColor, props.data.badgeLabel])
+
const blogPostPorkflow = () => {
let payload = {
dev: {
@@ -48,6 +132,20 @@ const Addons = props => {
tempElement.click()
document.body.removeChild(tempElement)
}
+
+ const onCustomizeClick = () => {
+ setCustomizeOpen(!customizeBadgeOpen);
+ }
+
+ const onBadgeUpdate = (option, value) => {
+ const callback = () => {
+ let newVal = (option==='badgeLabel' && value==='')?'Profile views':value;
+ setBadgeOptions({...badgeOptions, [option]: newVal});
+ props.handleDataChange(option, {target: {value: newVal}})
+ }
+ clearTimeout(debounce);
+ setDebounce(setTimeout(callback, 300));
+ }
return (
@@ -57,9 +155,20 @@ const Addons = props => {
inputId="visitors-count"
inputChecked={props.data.visitorsBadge}
onInputChange={() => props.handleCheckChange("visitorsBadge")}
+ Icon={ customizeBadgeOpen ? XCircleIcon : ToolsIcon }
+ onIconClick={onCustomizeClick}
>
display visitors count badge
+ {
+ customizeBadgeOpen?
+
+ : ''
+ }
{
return ""
}
const VisitorsBadge = props => {
- let link = "https://komarev.com/ghpvc/?username=" + props.github
+ let link = "https://komarev.com/ghpvc/?username="
+ + props.github
+ + `&label=${props.badgeOptions.badgeLabel}`
+ + `&color=${props.badgeOptions.badgeColor}`
+ + `&style=${props.badgeOptions.badgeStyle}`
if (props.show) {
return (
<>
@@ -223,6 +227,11 @@ const Markdown = props => {
>
<>
diff --git a/src/components/markdownPreview.js b/src/components/markdownPreview.js
index 983b8bf..8f71fe8 100644
--- a/src/components/markdownPreview.js
+++ b/src/components/markdownPreview.js
@@ -222,7 +222,11 @@ const MarkdownPreview = props => {
)
}
const VisitorsBadgePreview = props => {
- let link = "https://komarev.com/ghpvc/?username=" + props.github
+ let link = "https://komarev.com/ghpvc/?username="
+ + props.github
+ + `&label=${props.badgeOptions.badgeLabel}`
+ + `&color=${props.badgeOptions.badgeColor}`
+ + `&style=${props.badgeOptions.badgeStyle}`
if (props.show) {
return (
@@ -308,6 +312,11 @@ const MarkdownPreview = props => {
{
return
}
- setPrefix(cache.prefix || DEFAULT_PREFIX)
- setData(cache.data || DEFAULT_DATA)
- setLink(cache.link || DEFAULT_LINK)
- setSocial(cache.social || DEFAULT_SOCIAL)
+ setPrefix(cache.prefix ? {...DEFAULT_PREFIX, ...cache.prefix} : DEFAULT_PREFIX)
+ setData(cache.data ? {...DEFAULT_DATA, ...cache.data} : DEFAULT_DATA)
+ setLink(cache.link ? {...DEFAULT_LINK, ...cache.link} : DEFAULT_LINK)
+ setSocial(cache.social ? {...DEFAULT_SOCIAL, ...cache.social} : DEFAULT_SOCIAL)
const cacheSkills = mergeDefaultWithNewDataSkills(
DEFAULT_SKILLS,
@@ -470,6 +473,7 @@ const IndexPage = () => {
data={data}
social={social}
handleCheckChange={handleCheckChange}
+ handleDataChange={handleDataChange}
/>
{(data.visitorsBadge ||