Skip to content

Commit

Permalink
Merge pull request #106 from chingu-voyage5/feature-Link-modal-#78-kiran
Browse files Browse the repository at this point in the history
Feature link modal #78 kiran
  • Loading branch information
NariRoh authored Jul 27, 2018
2 parents b73c470 + 860959f commit 07b0eca
Show file tree
Hide file tree
Showing 5 changed files with 246 additions and 32 deletions.
2 changes: 1 addition & 1 deletion src/components/Greetings.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import React from 'react';
import './Time';
import '../styles/Greetings.css';


Expand All @@ -12,6 +11,7 @@ class Greetings extends React.Component {
}



render(){
return(
<div>
Expand Down
70 changes: 40 additions & 30 deletions src/components/Links.js
Original file line number Diff line number Diff line change
@@ -1,17 +1,25 @@
import React from "react";
import "../styles/Links.css";

import Modal from "react-modal";
import { FaChrome, FaTh } from "react-icons/lib/fa";

import NewLink from "./NewLink";

// import LinkTodo from "./LinkTodo";


class Links extends React.Component {

constructor() {
super();
this.state = {
showModal: false
showModal: false,
newLink: ""
};
this.handleOpenModal = this.handleOpenModal.bind(this);
this.handleCloseModal = this.handleCloseModal.bind(this);


}
handleOpenModal() {
this.setState({ showModal: true });
Expand All @@ -20,37 +28,39 @@ class Links extends React.Component {
handleCloseModal() {
this.setState({ showModal: false });
}




render() {
return (
<div id="Links">
<span onClick={this.handleOpenModal}>Links</span>
<Modal
className="Links__Modal"
overlayClassName="Overlay"
isOpen={this.state.showModal}
onRequestClose={this.handleCloseModal}
>
{/* Modal Content */}
<div className="Links__Modal__Content">
<ul>
<li className="Links__List">
<a href="#">
<FaChrome />
Chrome Tab
return <div id="Links">
<span onClick={this.handleOpenModal}>Links</span>
<Modal className="Links__Modal" overlayClassName="Overlay" isOpen={this.state.showModal} onRequestClose={this.handleCloseModal}>
{/* Modal Content */}
<div className="Links__Modal__Content">
<ul>
<li className="Links__List">
<a href="http://www.google.com/ig" target="_blank">
<FaChrome />
Chrome Tab
</a>
</li>
<li className="Links__List">
<a href="chrome://apps/">
<FaTh />
Apps
</li>
<li className="Links__List">
<a href="http://www.google.com/search_app" target="_blank">
<FaTh />
Apps
</a>
</li>
</ul>
<p>New Link</p>
</div>
</Modal>
</div>
);
</li>


<li className="Links__List">
<NewLink />
</li>
</ul>

</div>
</Modal>
</div>;
}
}

Expand Down
141 changes: 141 additions & 0 deletions src/components/NewLink.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
import React from 'react';
import '../styles/NewLink.css';
import { MdCancel } from 'react-icons/lib/md';

class NewLink extends React.Component {
constructor() {
super();
this.state = {
isHidden: true,
value: 'New Link',
linkName: ' ',
linkUrl: ' '
};

this.toggleHidden = this.toggleHidden.bind(this);
this.addLink = this.addLink.bind(this);
this.deleteLink = this.deleteLink.bind(this);
this.linkSubmit = this.linkSubmit.bind(this);
}

toggleHidden() {
this.setState({
isHidden: !this.state.isHidden,
value: ' ',
});
}

addLink(e) {
let linkUrl = e.target.form.linkUrl.value;
linkUrl = linkUrl.indexOf('://') === -1 ? 'http://' + linkUrl : linkUrl;

// console.log(e.target.value);
this.setState({
linkName: e.target.form.linkName.value.trim().toLowerCase(),
linkUrl: linkUrl,
});
// console.log(this.state.linkName);
// console.log(this.state.linkUrl);
}

deleteLink = e => {
this.setState({
isHidden: !this.state.isHidden,
value: 'New Link',
});
};

componentDidMount() {
try {
const linkName = localStorage.getItem('linkName');
const linkNameParsed = JSON.parse(linkName);
const linkUrl = localStorage.getItem('linkUrl');
const linkUrlParsed = JSON.parse(linkUrl);

if (linkNameParsed && linkUrlParsed) {
this.setState(() => ({
linkName: linkNameParsed,
linkUrl: linkUrlParsed,
}));
}
} catch (e) {
// do nothing
}
}

componentDidUpdate(prevState) {
if (prevState.linkName !== this.state.linkName.length) {
const linkName = JSON.stringify(this.state.linkName);
const linkUrl = JSON.stringify(this.state.linkUrl);

console.log(linkName);
console.log(linkUrl);

localStorage.setItem('linkName', linkName);
localStorage.setItem('linkUrl', linkUrl);
console.log('Saving Data');
}
}

linkSubmit = e => {
e.preventDefault();

this.setState({
isHidden: !this.state.isHidden,
value: 'New Link',
});
};

deleteLinkList = () => {
this.setState({
linkName: '',
linkUrl: '',
// button:!this.state.button
});
};

render() {
return (
<div>
<p onClick={this.toggleHidden}>{this.state.value}</p>
{!this.state.isHidden && (
<form onSubmit={this.linkSubmit}>
<input
id="link-name"
name="linkName"
type="text"
placeholder="Name"
onChange={this.addLink}
value={this.state.linkName}
/>

<MdCancel className="icon" onClick={this.deleteLink} />

<input
id="link-url"
type="text"
name="linkUrl"
placeholder="URL"
onChange={this.addLink}
value={this.state.linkUrl}
/>
<button className="submit" type="submit" />
</form>
)}

{this.state.isHidden &&
this.state.linkName !== '' &&
this.state.linkUrl !== 'http://' && (
<div id="link-list">
<a id="link-id" href={this.state.linkUrl} target="_blank">
{this.state.linkName}
</a>
<MdCancel className="icon-link" onClick={this.deleteLinkList} />
</div>
)}
</div>
);
}
}

export default NewLink;
2 changes: 1 addition & 1 deletion src/styles/Links.css
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

.Links__Modal {
width: 239px;
height: 90px;
height: 150px;
background-color: rgba(15,15,15,.925);
margin-top: 63px;
margin-left: 5px;
Expand Down
63 changes: 63 additions & 0 deletions src/styles/NewLink.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
#link-name {
font-family: -apple-system, BlinkMacSystemFont, "Neue Haas Grotesk Text Pro", "Helvetica Neue", Helvetica, Arial, sans-serif;
background-color: rgba(15, 15, 15, .925);
color: white;
margin-left: 10px;
margin-top: 10px;
border: none;
height: 25px;
width: 180px;
}

.button {
display: none;
}

#link-url {
font-family: -apple-system, BlinkMacSystemFont, "Neue Haas Grotesk Text Pro", "Helvetica Neue", Helvetica, Arial, sans-serif;
background-color: rgba(15, 15, 15, .925);
color: white;
margin-left: 10px;
border: none;
height: 25px;
width: 180px;
margin-top: 5px;
}

#link-list {
display: flex;
flex-direction: row;
}

.link-id {
display: flex;
}

/* This will render the 'X' */

/* .icon-link{
display:none;
} */

.icon-link {
display: flex;
margin-left: 40px;
margin-top: 10px;
}

.icon {
margin-left: 10px;
font-size: 10px;
}

#link-id {
margin-top: 10px;
margin-left: 10px;
display: flex;
color: white;
width: 60px;
}

.submit {
display: none;
}

0 comments on commit 07b0eca

Please sign in to comment.