budibase/packages/builder/src/components/userInterface/FrontendNavigatePane.svelte

108 lines
2.5 KiB
Svelte
Raw Normal View History

<script>
import { onMount } from "svelte"
import { goto, params, url } from "@sveltech/routify"
import {
store,
currentAsset,
backendUiStore,
selectedAccessRole,
} from "builderStore"
import { FrontendTypes } from "constants"
2020-11-19 17:41:29 +01:00
import ComponentNavigationTree from "components/userInterface/ComponentNavigationTree/index.svelte"
import Layout from "components/userInterface/Layout.svelte"
2020-10-08 10:35:11 +02:00
import NewScreenModal from "components/userInterface/NewScreenModal.svelte"
import NewLayoutModal from "components/userInterface/NewLayoutModal.svelte"
import { Modal, Switcher, Select } from "@budibase/bbui"
2020-05-29 19:32:52 +02:00
const tabs = [
{
title: "Screens",
key: "screen",
},
{
title: "Layouts",
key: "layout",
},
]
let modal
let routes = {}
let tab = $params.assetType
2020-12-02 14:41:00 +01:00
function navigate({ detail }) {
2020-12-02 14:41:00 +01:00
if (!detail) return
2020-12-07 17:06:20 +01:00
$goto(`../${detail.heading.key}`)
2020-12-02 14:41:00 +01:00
}
onMount(() => {
2020-11-19 22:07:25 +01:00
store.actions.routing.fetch()
})
</script>
<div class="title">
<Switcher headings={tabs} bind:value={tab} on:change={navigate}>
{#if tab === FrontendTypes.SCREEN}
<i
on:click={modal.show}
data-cy="new-screen"
class="ri-add-circle-fill" />
<div class="role-select">
<Select
extraThin
secondary
bind:value={$selectedAccessRole}
label="Filter by Access">
{#each $backendUiStore.roles as role}
<option value={role._id}>{role.name}</option>
{/each}
</Select>
</div>
{#if $currentAsset}
<div class="nav-items-container">
<ComponentNavigationTree />
</div>
{/if}
<Modal bind:this={modal}>
<NewScreenModal />
</Modal>
{:else if tab === FrontendTypes.LAYOUT}
<i
on:click={modal.show}
data-cy="new-layout"
class="ri-add-circle-fill" />
{#each $store.layouts as layout, idx (layout._id)}
<Layout {layout} border={idx > 0} />
2020-12-02 15:49:43 +01:00
{/each}
<Modal bind:this={modal}>
<NewLayoutModal />
</Modal>
{/if}
</Switcher>
</div>
<style>
.title {
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: stretch;
2020-12-04 15:52:40 +01:00
position: relative;
}
.title i {
font-size: 20px;
2020-12-04 15:52:40 +01:00
position: absolute;
top: 0;
right: 0;
}
.title i:hover {
cursor: pointer;
color: var(--blue);
}
.role-select {
margin-bottom: var(--spacing-m);
}
</style>