diff --git a/index.html b/index.html index e69de29..ad6e706 100644 --- a/index.html +++ b/index.html @@ -0,0 +1,31 @@ + + + + + + + + Mini Twitter + + + + + + +
+
+ + +
+

Character count:

+

0

+
+ +
+
+
+ + + + \ No newline at end of file diff --git a/src/index.js b/src/index.js index e69de29..f682d79 100644 --- a/src/index.js +++ b/src/index.js @@ -0,0 +1,34 @@ +document.querySelector('form').addEventListener('submit', e => { + e.preventDefault(); + let newTweet = document.querySelector('#tweet').value; + let tweetArr = newTweet.split(' '); + newTweet = tweetArr + .map(word => (word.startsWith('@') ? `${word}` : word)) + .join(' '); + newTweet = `

${newTweet}

+ `; + const newTweetNode = document.createElement('div'); + + newTweetNode.innerHTML = newTweet; + const timelineNode = document.querySelector('.timeline'); + const refTweetNode = document.querySelector('.timeline div:first-child'); + if (document.querySelector('#tweet').value.length <= 280) { + timelineNode.insertBefore(newTweetNode, refTweetNode); + const deleteButton = document.querySelector('.delete'); + deleteButton.addEventListener('click', e => { + timelineNode.removeChild(e.target.parentElement); + }); + document.querySelector('#tweet').value = ''; + document.querySelector('#count').textContent = 0; + } +}); + +document.querySelector('#tweet').addEventListener('input', e => { + document.querySelector('#count').textContent = e.target.value.length; + if (e.target.value.length > 280) { + let count = document.querySelector('#count'); + count.style.color = 'red'; + } else { + count.style.color = 'black'; + } +}); diff --git a/style.css b/style.css new file mode 100644 index 0000000..1f7afb9 --- /dev/null +++ b/style.css @@ -0,0 +1,79 @@ +html { + box-sizing: border-box; + font-family: Helvetica, Arial, sans-serif; +} + +*, +*:before, +*:after { + /* display: none; */ + box-sizing: inherit; +} + +form { + /* background: lemonchiffon; */ + display: flex; + flex-direction: column; + align-items: center; + flex-wrap: wrap; +} + +label { + text-align: center; + font-weight: bold; + font-family: sans-serif; + margin: 1em 0; +} + +textarea { + align-self: stretch; + height: 4rem; + padding: 0.25em; + font-family: Arial, Helvetica, sans-serif; +} + +.counter { + align-self: stretch; + display: flex; + justify-content: flex-end; + align-content: stretch; +} + +.counter p { + /* flex: 1; */ +} +.counter p { + text-transform: uppercase; + font-size: 0.8em; +} +.counter p:first-child { + /* flex: 2; */ + margin-right: 4px; +} + +button#submit { + background: orange; + border: none; + border-radius: 1em; + width: 60%; + padding: 0.5em; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); +} + +.timeline div { + border-radius: 2px; + display: flex; + flex-direction: column; + margin: 1em 0; + padding: 0.5em; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); +} + +.delete { + align-self: flex-end; + padding: 0.25em 0.5em; + background: rgb(34, 34, 34); + border: none; + border-radius: 2em; + color: rgb(231, 171, 7); +}