NEWSBOARD (component )

src/app/shared/components/newsboard/templates

Demo Section

Each variation will be presented in the following section.

News

Newsboard News App


Events (archive)

Newsboard Events App


Events (pastYear = 2)

Newsboard Events App 2 Past Year


Events (pastYear = false)

Newsboard Events App


News Detail

News App Detail


News Archive

Newsboard News App Archive


News with PastDate and Archive

Newsboard News App Archive with PastDate


Readme

newsboard (component)

Description

This blueprint is based on the blueprint of Veams.


Requirements

  • Veams#5.0.0

Installation

Installation with Veams from local machine

veams install bp absolute/filepath/to/newsboard


Fields

newsboard.hbs

Settings

Parameter Type Default Description
settings.newsboardClasses String '' Modifier classes for component
settings.newsboardContextClass String 'default' Context class of component

Content

Parameter Type Description
content.newsboardField String Please add a description!

SASS

Variables

There are multiple variables which you can change:

Variable Value Description
$newsboard-my-custom-var 0px Please add a description!

Modifier Classes

There are modifier classes you can add to c-newsboard:

Modifier Description
is-modifier Please add a description!

Templates

newsboard.hbs

<div class="c-newsboard{{#if settings.newsboardContextClass}}--{{settings.newsboardContextClass}}{{else}}--default{{/if}}{{#if settings.newsboardClasses}} {{settings.newsboardClasses}}{{/if}}" data-css="c-newsboard">
	{{#if content.headline}}
		<h2 class="newsboard__headline">{{content.headline}}</h2>
	{{/if}}
	<div id="{{settings.selectorId}}"
		class="newsboard__vue"
		data-config='{
				"thema": "{{content.thema}}",
				"filterClassPage": "{{content.filterClassPage}}",
				"jsonUrl": "{{#if (prod)}}{{content.prodJsonUrl}}{{else}}{{content.devJsonUrl}}{{/if}}",
				"enableDateFilter": "{{content.enableDateFilter}}",
				"frontendPath": "{{content.frontendPath}}",
				"lng": "{{content.lng}}",
				"archive": {{content.archive}},
				{{#if content.itemsPerPage}}
					"itemsPerPage": {{content.itemsPerPage}},
				{{/if}}
				{{#if content.pastYears}}
					"pastYears": {{content.pastYears}},
				{{/if}}
				{{#if content.mandatoryTopics}}
					"mandatoryTopics": {{{json content.mandatoryTopics}}},
				{{/if}}
				{{#if content.pastDate}}
					"pastDate": "{{content.pastDate}}",
				{{/if}}
				"topics": {{{json content.topics}}}
			}'>
			<span class="newsboard__load-init-loader is-loading">
				<span class="newsboard__load-init-loader-box is-one"></span>
				<span class="newsboard__load-init-loader-box is-two"></span>
				<span class="newsboard__load-init-loader-box is-three"></span>
			</span>
	</div>
</div>

<script>
	document.addEventListener('DOMContentLoaded', function() {
		window.LmuNewsboard.init("{{settings.selectorId}}");
	})
</script>


<script src="{{@root.assets}}scripts/newsboard.bundle.vue_3.js" defer></script>

Data File

newsboard.hjson

{
	"variations": {
		"news": {
			"docs": {
				"variationName": "News"
			},
			"settings": {
				"newsboardContextClass": "default",
				"newsboardClasses": "",
				"selectorId": "newsboard-app-1"
			},
			"content": {
				"headline": "Newsboard News App",
				"filterClassPage": "is-lpage",
				"prodJsonUrl": "/assets/mocks/newsboard/news/data.json",
				"devJsonUrl": "/api/newsboard/news",
				"thema": "news",
				"enableDateFilter": true,
				"frontendPath": "https://cms-cdn.lmu.de/assets",
				"lng": "EN",
				"itemsPerPage": 5,
				"pastYears": 2,
				"archive": false,
				"topics": [
					{
						"id":"21632",
						"tName":"Marketing"
					},
					{
						"id":"21568",
						"tName":"Finanzen"
					}
				]
			}
		},
		"event": {
			"docs": {
				"variationName": "Events (archive)"
			},
			"settings": {
				"newsboardContextClass": "default",
				"newsboardClasses": "",
				"selectorId": "newsboard-app-2"
			},
			"content" : {
				"headline": "Newsboard Events App",
				"filterClassPage": "is-lpage",
				"prodJsonUrl": "/assets/mocks/newsboard/events/data.json",
				"devJsonUrl": "/api/newsboard/events",
				"thema": "events",
				"noHitTxt": "Keine Events verfügbar",
				"enableDateFilter": true,
				"frontendPath": "https://cms-cdn.lmu.de/assets",
				"itemsPerPage": 5,
				"archive": true,
				"lng": "DE",
				"topics": [
					{
						"id":"21185",
						"tName":"Marketing"
					},
					{
						"id":"21184",
						"tName":"Finanzen"
					}
				],
				"dateTill": "till"
			}
		},
		"event_past_year": {
			"docs": {
				"variationName": "Events (pastYear = 2)"
			},
			"settings": {
				"newsboardContextClass": "default",
				"newsboardClasses": "",
				"selectorId": "newsboard-app-3"
			},
			"content" : {
				"headline": "Newsboard Events App 2 Past Year",
				"filterClassPage": "is-lpage",
				"prodJsonUrl": "/assets/mocks/newsboard/events/data.json",
				"devJsonUrl": "/api/newsboard/events",
				"thema": "events",
				"noHitTxt": "Keine Events verfügbar",
				"enableDateFilter": true,
				"frontendPath": "https://cms-cdn.lmu.de/assets",
				"itemsPerPage": 5,
				"archive": false,
				"pastYears": 2,
				"lng": "DE",
				"topics": [
					{
						"id":"21185",
						"tName":"Marketing"
					},
					{
						"id":"21184",
						"tName":"Finanzen"
					}
				],
				"dateTill": "till"
			}
		},
		"event_all": {
			"docs": {
				"variationName": "Events (pastYear = false)"
			},
			"settings": {
				"newsboardContextClass": "default",
				"newsboardClasses": "",
				"selectorId": "newsboard-app-4"
			},
			"content" : {
				"headline": "Newsboard Events App",
				"filterClassPage": "is-lpage",
				"prodJsonUrl": "/assets/mocks/newsboard/events/data.json",
				"devJsonUrl": "/api/newsboard/events",
				"thema": "events",
				"noHitTxt": "Keine Events verfügbar",
				"enableDateFilter": true,
				"frontendPath": "https://cms-cdn.lmu.de/assets",
				"itemsPerPage": 5,
				"archive": false,
				"lng": "EN",
				"topics": [
					{
						"id":"21185",
						"tName":"Marketing"
					},
					{
						"id":"21184",
						"tName":"Finanzen"
					}
				],
				"dateTill": "till"
			}
		},
		"news-detail": {
			"docs": {
				"variationName": "News Detail"
			},
			"settings": {
				"newsboardContextClass": "rte",
				"newsboardClasses": "",
				"selectorId": "newsboard-app-5"
			},
			"content": {
				"headline": "News App Detail",
				"filterClassPage": "is-rte",
				"prodJsonUrl": "/assets/mocks/newsboard/news/data.json",
				"devJsonUrl": "/api/newsboard/news",
				"thema": "news",
				"enableDateFilter": true,
				"frontendPath": "https://cms-cdn.lmu.de/assets",
				"lng": "DE",
				"itemsPerPage": 5,
				"pastYears": 2,
				"archive": false,
				"topics": [
					{
						"id":"21632",
						"tName":"Marketing"
					},
					{
						"id":"21568",
						"tName":"Finanzen"
					}
				]
			}
		},
		"news-archive": {
			"docs": {
				"variationName": "News Archive"
			},
			"settings": {
				"newsboardContextClass": "default",
				"newsboardClasses": "",
				"selectorId": "newsboard-app-6"
			},
			"content": {
				"headline": "Newsboard News App Archive",
				"filterClassPage": "is-lpage",
				"prodJsonUrl": "/assets/mocks/newsboard/news/data-archive.json",
				"devJsonUrl": "/api/newsboard/news",
				"thema": "news",
				"enableDateFilter": true,
				"frontendPath": "https://cms-cdn.lmu.de/assets",
				"lng": "EN",
				"itemsPerPage": 5,
				"pastYears": 20,
				"archive": true,
				"topics": []
			}
		},
		"news-past-date": {
			"docs": {
				"variationName": "News with PastDate and Archive"
			},
			"settings": {
				"newsboardContextClass": "default",
				"newsboardClasses": "",
				"selectorId": "newsboard-app-7"
			},
			"content": {
				"headline": "Newsboard News App Archive with PastDate",
				"filterClassPage": "is-lpage",
				"prodJsonUrl": "/assets/mocks/newsboard/news/data-archive.json",
				"devJsonUrl": "/api/newsboard/news",
				"thema": "news",
				"enableDateFilter": true,
				"frontendPath": "https://cms-cdn.lmu.de/assets",
				"lng": "EN",
				"itemsPerPage": 5,
				"pastYears": 20,
				"archive": true,
				"pastDate": "2021-05-15",
				"topics": []
			}
		}
	}
}

Styles

newsboard.scss

/* ===================================================
component: newsboard
=================================================== */
/*
Animation
----------------------- */
@include keyframes(newsboardBoxAppear) {
	0% {
		opacity: 0;
	}

	16% {
		opacity: 1;
	}

	48% {
		opacity: 1;
	}

	64% {
		opacity: 0;
	}

	100% {
		opacity: 0;
	}
}

/* ---------------------------------------------------
Global Styles
--------------------------------------------------- */
[data-css="c-newsboard"] {

	clear: both;
	display: inline-block;
	position: relative;
	width: 100%;
	margin: 0 auto 60px;

	@include bp($bp-mobile-p) {
		margin-bottom: 80px;
	}

	@include bp($bp-tablet-p) {
		margin-bottom: 100px;
	}

	@include bp(1920px) {
		margin-bottom: 120px;
	}


	.newsboard__headline {
		@include headline-h2-styles();
	}

	.newsboard__load-init-loader {
		@include centering(h);

		position: relative;
		top: 0px;
		display: flex;
		width: 200px;
		flex-direction: row;
		background-color: $color-white;
		height: 60px;
		align-items: center;
		justify-content: center;
		pointer-events: none;
		opacity: 0;
		transition: opacity $animation-duration-std $animation-easing-std;
		z-index: 100;
		border: 1px solid $color-green;

		&.is-loading {
				opacity: 1;
			}
	}


	.newsboard__load-init-loader-box {
		display: block;
		margin: 10px;
		border: 1em solid $color-green;
		opacity: 0;

		/*
		MODIFIERS
		----------------------- */
		&.is-one {
			animation: newsboardBoxAppear 2s linear infinite;
		}

		&.is-two {
			animation: newsboardBoxAppear 2s linear .3s infinite;
		}

		&.is-three {
			animation: newsboardBoxAppear 2s linear .62s infinite;
		}
	}
}




/* ---------------------------------------------------
Context: Default
--------------------------------------------------- */
.c-newsboard--default {
}

.c-newsboard--lpage {
	.newsboard__headline {
		@include bp($bp-tablet-p) {
			@include grid-column-width(12);
			@include grid-push-h(0);
		}
	}
}

.c-newsboard--rte {
	@include rte-dimensions();
	margin-bottom: 60px;

	.newsboard__headline {
		width: 100%;
		flex: 0 0 100%;
		margin-left: 0px;
	}
}


HTML Output

News

<div class="c-newsboard--default" data-css="c-newsboard">
	<h2 class="newsboard__headline">Newsboard News App</h2>
	<div id="newsboard-app-1" class="newsboard__vue" data-config='{
				"thema": "news",
				"filterClassPage": "is-lpage",
				"jsonUrl": "/assets/mocks/newsboard/news/data.json",
				"enableDateFilter": "true",
				"frontendPath": "https://cms-cdn.lmu.de/assets",
				"lng": "EN",
				"archive": false,
					"itemsPerPage": 5,
					"pastYears": 2,
				"topics": [{"id":"21632","tName":"Marketing"},{"id":"21568","tName":"Finanzen"}]
			}'>
		<span class="newsboard__load-init-loader is-loading">
			<span class="newsboard__load-init-loader-box is-one"></span>
			<span class="newsboard__load-init-loader-box is-two"></span>
			<span class="newsboard__load-init-loader-box is-three"></span>
		</span>
	</div>
</div>
<script>
	document.addEventListener('DOMContentLoaded', function() {
		window.LmuNewsboard.init("newsboard-app-1");
	})
</script>
<script src="./scripts/newsboard.bundle.vue_3.js" defer></script>

Events (archive)

<div class="c-newsboard--default" data-css="c-newsboard">
	<h2 class="newsboard__headline">Newsboard Events App</h2>
	<div id="newsboard-app-2" class="newsboard__vue" data-config='{
				"thema": "events",
				"filterClassPage": "is-lpage",
				"jsonUrl": "/assets/mocks/newsboard/events/data.json",
				"enableDateFilter": "true",
				"frontendPath": "https://cms-cdn.lmu.de/assets",
				"lng": "DE",
				"archive": true,
					"itemsPerPage": 5,
				"topics": [{"id":"21185","tName":"Marketing"},{"id":"21184","tName":"Finanzen"}]
			}'>
		<span class="newsboard__load-init-loader is-loading">
			<span class="newsboard__load-init-loader-box is-one"></span>
			<span class="newsboard__load-init-loader-box is-two"></span>
			<span class="newsboard__load-init-loader-box is-three"></span>
		</span>
	</div>
</div>
<script>
	document.addEventListener('DOMContentLoaded', function() {
		window.LmuNewsboard.init("newsboard-app-2");
	})
</script>
<script src="./scripts/newsboard.bundle.vue_3.js" defer></script>

Events (pastYear = 2)

<div class="c-newsboard--default" data-css="c-newsboard">
	<h2 class="newsboard__headline">Newsboard Events App 2 Past Year</h2>
	<div id="newsboard-app-3" class="newsboard__vue" data-config='{
				"thema": "events",
				"filterClassPage": "is-lpage",
				"jsonUrl": "/assets/mocks/newsboard/events/data.json",
				"enableDateFilter": "true",
				"frontendPath": "https://cms-cdn.lmu.de/assets",
				"lng": "DE",
				"archive": false,
					"itemsPerPage": 5,
					"pastYears": 2,
				"topics": [{"id":"21185","tName":"Marketing"},{"id":"21184","tName":"Finanzen"}]
			}'>
		<span class="newsboard__load-init-loader is-loading">
			<span class="newsboard__load-init-loader-box is-one"></span>
			<span class="newsboard__load-init-loader-box is-two"></span>
			<span class="newsboard__load-init-loader-box is-three"></span>
		</span>
	</div>
</div>
<script>
	document.addEventListener('DOMContentLoaded', function() {
		window.LmuNewsboard.init("newsboard-app-3");
	})
</script>
<script src="./scripts/newsboard.bundle.vue_3.js" defer></script>

Events (pastYear = false)

<div class="c-newsboard--default" data-css="c-newsboard">
	<h2 class="newsboard__headline">Newsboard Events App</h2>
	<div id="newsboard-app-4" class="newsboard__vue" data-config='{
				"thema": "events",
				"filterClassPage": "is-lpage",
				"jsonUrl": "/assets/mocks/newsboard/events/data.json",
				"enableDateFilter": "true",
				"frontendPath": "https://cms-cdn.lmu.de/assets",
				"lng": "EN",
				"archive": false,
					"itemsPerPage": 5,
				"topics": [{"id":"21185","tName":"Marketing"},{"id":"21184","tName":"Finanzen"}]
			}'>
		<span class="newsboard__load-init-loader is-loading">
			<span class="newsboard__load-init-loader-box is-one"></span>
			<span class="newsboard__load-init-loader-box is-two"></span>
			<span class="newsboard__load-init-loader-box is-three"></span>
		</span>
	</div>
</div>
<script>
	document.addEventListener('DOMContentLoaded', function() {
		window.LmuNewsboard.init("newsboard-app-4");
	})
</script>
<script src="./scripts/newsboard.bundle.vue_3.js" defer></script>

News Detail

<div class="c-newsboard--rte" data-css="c-newsboard">
	<h2 class="newsboard__headline">News App Detail</h2>
	<div id="newsboard-app-5" class="newsboard__vue" data-config='{
				"thema": "news",
				"filterClassPage": "is-rte",
				"jsonUrl": "/assets/mocks/newsboard/news/data.json",
				"enableDateFilter": "true",
				"frontendPath": "https://cms-cdn.lmu.de/assets",
				"lng": "DE",
				"archive": false,
					"itemsPerPage": 5,
					"pastYears": 2,
				"topics": [{"id":"21632","tName":"Marketing"},{"id":"21568","tName":"Finanzen"}]
			}'>
		<span class="newsboard__load-init-loader is-loading">
			<span class="newsboard__load-init-loader-box is-one"></span>
			<span class="newsboard__load-init-loader-box is-two"></span>
			<span class="newsboard__load-init-loader-box is-three"></span>
		</span>
	</div>
</div>
<script>
	document.addEventListener('DOMContentLoaded', function() {
		window.LmuNewsboard.init("newsboard-app-5");
	})
</script>
<script src="./scripts/newsboard.bundle.vue_3.js" defer></script>

News Archive

<div class="c-newsboard--default" data-css="c-newsboard">
	<h2 class="newsboard__headline">Newsboard News App Archive</h2>
	<div id="newsboard-app-6" class="newsboard__vue" data-config='{
				"thema": "news",
				"filterClassPage": "is-lpage",
				"jsonUrl": "/assets/mocks/newsboard/news/data-archive.json",
				"enableDateFilter": "true",
				"frontendPath": "https://cms-cdn.lmu.de/assets",
				"lng": "EN",
				"archive": true,
					"itemsPerPage": 5,
					"pastYears": 20,
				"topics": []
			}'>
		<span class="newsboard__load-init-loader is-loading">
			<span class="newsboard__load-init-loader-box is-one"></span>
			<span class="newsboard__load-init-loader-box is-two"></span>
			<span class="newsboard__load-init-loader-box is-three"></span>
		</span>
	</div>
</div>
<script>
	document.addEventListener('DOMContentLoaded', function() {
		window.LmuNewsboard.init("newsboard-app-6");
	})
</script>
<script src="./scripts/newsboard.bundle.vue_3.js" defer></script>

News with PastDate and Archive

<div class="c-newsboard--default" data-css="c-newsboard">
	<h2 class="newsboard__headline">Newsboard News App Archive with PastDate</h2>
	<div id="newsboard-app-7" class="newsboard__vue" data-config='{
				"thema": "news",
				"filterClassPage": "is-lpage",
				"jsonUrl": "/assets/mocks/newsboard/news/data-archive.json",
				"enableDateFilter": "true",
				"frontendPath": "https://cms-cdn.lmu.de/assets",
				"lng": "EN",
				"archive": true,
					"itemsPerPage": 5,
					"pastYears": 20,
					"pastDate": "2021-05-15",
				"topics": []
			}'>
		<span class="newsboard__load-init-loader is-loading">
			<span class="newsboard__load-init-loader-box is-one"></span>
			<span class="newsboard__load-init-loader-box is-two"></span>
			<span class="newsboard__load-init-loader-box is-three"></span>
		</span>
	</div>
</div>
<script>
	document.addEventListener('DOMContentLoaded', function() {
		window.LmuNewsboard.init("newsboard-app-7");
	})
</script>
<script src="./scripts/newsboard.bundle.vue_3.js" defer></script>

Wonach suchst du?