42 lines
1.6 KiB
JavaScript
Executable File
42 lines
1.6 KiB
JavaScript
Executable File
import "../../../src/components/appHeader/app-header.sass";
|
|
import "../../../src/sass/helpers/flex-helpers.sass";
|
|
import { isSome } from 'fp-ts/lib/Option';
|
|
import { h } from 'vue';
|
|
import BNavbarBurger from '../navbar/BNavbarBurger';
|
|
import { useSidebarController } from '../sidebar/composables';
|
|
|
|
function generateMainSlot(injection, includeClickHandler, slots) {
|
|
return h('div', {
|
|
class: 'main-slot',
|
|
...(includeClickHandler && isSome(injection.listeners.value) ? {
|
|
onClick: injection.listeners.value.value.onClick
|
|
} : {})
|
|
}, slots.default && slots.default());
|
|
}
|
|
|
|
function generateNavigationButton(injection, slots) {
|
|
const listeners = isSome(injection.listeners.value) ? injection.listeners.value.value : {};
|
|
const attrs = isSome(injection.attrs.value) ? injection.attrs.value.value : {};
|
|
return h('button', {
|
|
class: 'navigation-icon is-hidden-desktop',
|
|
...listeners,
|
|
...attrs,
|
|
'aria-label': 'Toggle navigation pane'
|
|
}, slots.trigger ? slots.trigger({
|
|
isVisible: injection.isVisible.value
|
|
}) : h(BNavbarBurger, {
|
|
tag: 'span',
|
|
isActive: injection.isVisible.value
|
|
}));
|
|
}
|
|
|
|
export default function (props, {
|
|
slots
|
|
}) {
|
|
const sidebarController = useSidebarController();
|
|
const isInvisible = !sidebarController.isVisible.value;
|
|
return h(props.tag ?? 'header', {
|
|
class: 'b-app-header is-flex flex-direction-row justify-content-center align-items-center has-navigation'
|
|
}, [generateNavigationButton(sidebarController, slots), generateMainSlot(sidebarController, isInvisible, slots)]);
|
|
}
|
|
//# sourceMappingURL=BAppHeader.js.map
|