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


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}}
				"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": "DE",
				"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": "EN",
				"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": "EN",
				"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"
					}
				]
			}
		}
	}
}

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": "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-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": "EN",
				"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": "EN",
				"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>

Wonach suchst du?