social-share

Information

Folder
src/components/patterns/social-share

Files

Schema
Template
// src/components/patterns/social-share/social-share.twig

{{ attach_library("circle_dot/pattern-social-share") }}

{% set social_share_config = {
	services: [
		{
			name: "linkedin",
			label: "LinkedIn",
			url: "https://www.linkedin.com/sharing/share-offsite/?url={{ url }}",
		},
		{
			name: "facebook",
			label: "Facebook",
			url: "https://www.facebook.com/sharer/sharer.php?u={{ url }}",
		},
		{
			name: "twitter",
			label: "Twitter",
			url: "https://twitter.com/intent/tweet?url={{ url }}",
		},
		{
			name: "whatsapp",
			label: "WhatsApp",
			url: "https://wa.me/?text={{ url }}",
		},
		{
			name: "mail",
			label: "E-Mail",
			url: "mailto:?subject=Hier ist ein interessanter Artikel für Sie&body={{ url }}",
		},
	],
} %}

{% set social_share_card_id = "social-share-card-" ~ random() %}

<social-share class="SocialShare">
	{# TODO: Translate #}
	{% include "@elements/button/button.twig" with {
		additional_attributes: [["aria-expanded", "false"], ["aria-controls", social_share_card_id], ["aria-haspopup", "dialog"]],
		classes: ["SocialShare-toggle", "js-SocialShare-toggle"],
		label: "Artikel teilen",
		icon: "chevron",
		icon_position: "right",
		modifiers: ["quaternary"],
	} only %}

	<div class="SocialShare-card js-SocialShare-card" id="{{ social_share_card_id }}" tabindex="-1" hidden>
		<ul class="SocialShare-list">
			{% for service in social_share_config.services %}
				<li class="SocialShare-item">
					<a class="SocialShare-link" href="{{ service.url }}" target="_blank" rel="noopener noreferrer">
						{% include "@elements/icon/icon.twig" with {
						name: service.name,
					} only %}
						{{ service.label }}
					</a>
				</li>
			{% endfor %}
		</ul>
	</div>
</social-share>

Error: schema is invalid: data/properties must be object