| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 | <template>	<div class='modal' :class='{ "is-active": isModalActive }' v-if='news !== null'>		<div class='modal-background'></div>		<div class='modal-card'>			<header class='modal-card-head'>				<p class='modal-card-title'><strong>{{ news.title }}</strong> ({{ formatDate(news.createdAt) }})</p>				<button class='delete' @click='toggleModal()'></button>			</header>			<section class='modal-card-body'>				<div class='content'>					<p>{{ news.description }}</p>				</div>				<div class='sect' v-show='news.features.length > 0'>					<div class='sect-head-features'>The features are so great</div>					<ul class='sect-body'>						<li v-for='li in news.features'>{{ li }}</li>					</ul>				</div>				<div class='sect' v-show='news.improvements.length > 0'>					<div class='sect-head-improvements'>Improvements</div>					<ul class='sect-body'>						<li v-for='li in news.improvements'>{{ li }}</li>					</ul>				</div>				<div class='sect' v-show='news.bugs.length > 0'>					<div class='sect-head-bugs'>Bugs Smashed</div>					<ul class='sect-body'>						<li v-for='li in news.bugs'>{{ li }}</li>					</ul>				</div>				<div class='sect' v-show='news.upcoming.length > 0'>					<div class='sect-head-upcoming'>Coming Soon to a Musare near you</div>					<ul class='sect-body'>						<li v-for='li in news.upcoming'>{{ li }}</li>					</ul>				</div>			</section>		</div>	</div></template><script>	import io from '../../io';	export default {		data() {			return {				isModalActive: false,				news: null			}		},		ready: function () {			let _this = this;			io.getSocket(true, (socket) => {				_this.socket = socket;				_this.socket.emit('news.newest', res => {					_this.news = res.data;					if (_this.news) {						if (localStorage.getItem('whatIsNew')) {							if (parseInt(localStorage.getItem('whatIsNew')) < res.data.createdAt) {								this.toggleModal();								localStorage.setItem('whatIsNew', res.data.createdAt);							}						} else {							this.toggleModal();							localStorage.setItem('whatIsNew', res.data.createdAt);						}					}				});			});		},		methods: {			toggleModal: function () {				this.isModalActive = !this.isModalActive;			},			formatDate: unix => {				return moment(unix).format('DD-MM-YYYY');			}		},		events: {			closeModal: function() {				this.isModalActive = false;			}		}	}</script><style lang='scss' scoped>	.modal-card-head {		border-bottom: none;		background-color: ghostwhite;		padding: 15px;	}	.modal-card-title { font-size: 14px; }	.delete {		background: transparent;		&:hover { background: transparent; }		&:before, &:after { background-color: #bbb; }	}	.sect {		div[class^='sect-head'], div[class*=' sect-head']{			padding: 12px;			text-transform: uppercase;			font-weight: bold;			color: #fff;		}		.sect-head-features { background-color: dodgerblue; }		.sect-head-improvements { background-color: seagreen; }		.sect-head-bugs { background-color: brown; }		.sect-head-upcoming { background-color: mediumpurple; }		.sect-body {			padding: 15px 25px;			li { list-style-type: disc; }		}	}</style>
 |