Updated HeaderAction component with slot & scoped styling

This commit is contained in:
Daniel Boven 2020-07-18 13:54:58 +02:00
commit f7714c721b
4 changed files with 34 additions and 11 deletions

View file

@ -19,18 +19,39 @@
} }
</script> </script>
<style>
.action-text {
font-size: 16px;
line-height: 20px;
text-decoration: none;
color: #fff;
width: 100%;
padding: 0 1rem;
}
.action-text > span {
margin-left: 0.75rem;
vertical-align: top;
}
</style>
<svelte:window on:mouseup={mouseUp} /> <svelte:window on:mouseup={mouseUp} />
<div> <div>
<button <button
aria-label={type} aria-label={type}
class={cx('--header__action', isOpen && '--header__action--active', text && '--header__action--text')} class={cx('--header__action', isOpen && '--header__action--active')}
class:action-text={text}
type="button" type="button"
on:click={() => { on:click={() => {
isOpen = true; isOpen = true;
}}> }}>
<Icon {...icon} /> <Icon {...icon} />
{optional(text)} <slot name="custom-el">
{#if text}
<span>{text}</span>
{/if}
</slot>
</button> </button>
{#if isOpen} {#if isOpen}
<div <div

View file

@ -3,12 +3,18 @@
export let type = undefined; export let type = undefined;
export let icon = undefined; export let icon = undefined;
export let linkIsActive = undefined; export let linkIsActive = undefined;
export let text = undefined; import { cx } from '../../../lib';
import { cx, optional } from '../../../lib';
import Icon from '../../Icon/Icon.svelte'; import Icon from '../../Icon/Icon.svelte';
</script> </script>
<style> <style>
.action-link {
text-align: center;
align-items: center;
vertical-align: middle;
justify-content: center;
padding-top: 10px;
}
.subject-divider { .subject-divider {
color: #525252; color: #525252;
padding-bottom: 4px; padding-bottom: 4px;
@ -19,8 +25,8 @@
<a <a
aria-label={type} aria-label={type}
class={cx('--header__action', linkIsActive && '--header__action--active', text && '--header__action--text')} class={cx('--header__action', linkIsActive && '--header__action--active')}
class:action-link={true}
{href}> {href}>
<Icon {...icon} /> <Icon {...icon} />
{optional(text)}
</a> </a>

View file

@ -1,4 +1,3 @@
export { cx } from './cx'; export { cx } from './cx';
export { css } from './css'; export { css } from './css';
export { fillArray } from './fill-array'; export { fillArray } from './fill-array';
export { optional } from './optional';

View file

@ -1,3 +0,0 @@
const optional = x => x || '';
export { optional };