Files
lucent-laravel/front/js/svelte/content/tools/Tools.svelte
T

116 lines
3.2 KiB
Svelte
Raw Normal View History

2023-10-02 23:10:49 +03:00
<script>
import FilterFields from "./FilterFields.svelte";
import Uploader from "../../files/Uploader.svelte";
import Icon from "../../common/Icon.svelte";
import SortFields from "./SortFields.svelte";
import AppliedFilter from "./AppliedFilter.svelte";
import {getContext} from "svelte";
const channel = getContext("channel");
export let sort;
export let schema;
export let operators;
export let filter;
export let inModal;
export let modalUrl;
export let records;
export let systemFields = [];
export let visibleFields = [];
let url = new URL(window.location.href);
let csvUrl = url.pathname + "/csv?" + url.searchParams.toString();
function uploadComplete(e) {
records = e.detail;
}
</script>
<div class="mb-3 d-flex align-items-center justify-content-between">
<div class=" d-flex">
<SortFields
{schema}
{sort}
{systemFields}
{inModal}
{modalUrl}
on:refresh
/>
<FilterFields
bind:schema
{systemFields}
{operators}
{filter}
{inModal}
{modalUrl}
on:refresh
/>
{#if Object.entries(filter).length > 0}
{#each Object.entries(filter) as [k, v]}
<AppliedFilter
{schema}
{operators}
key={k}
value={v}
{inModal}
{modalUrl}
{systemFields}
on:refresh
/>
{/each}
{/if}
</div>
<div class="d-flex align-items-center ">
{#if schema.type === "collection"}
{#if !inModal}
<a
href="{channel.lucentUrl}/records/new?schema={schema.name}"
class="btn btn-sm btn-primary"
>
New Record
</a>
{/if}
{:else }
<div class="d-inline-block ms-1">
<Uploader {schema} on:uploadComplete={uploadComplete}/>
</div>
{/if}
{#if !inModal}
<div class="dropdown d-inline-block">
<button
class="btn btn-link btn-sm"
type="button"
data-bs-toggle="dropdown"
aria-expanded="false"
>
<Icon icon="ellipsis-vertical"/>
</button>
<ul class="dropdown-menu">
<li>
<a
class="dropdown-item"
href={csvUrl}
>Export to CSV</a
>
</li>
<li>
<a
class="dropdown-item"
href="{channel.lucentUrl}/content/{schema.name}?filter[_sys.status_in]=trashed"
>View trashed records</a
>
</li>
</ul>
</div>
{/if}
</div>
</div>