Files
lucent-laravel/front/js/svelte/content/Index.svelte
T
2026-05-07 13:29:49 +03:00

95 lines
2.5 KiB
Svelte

<script>
import Tools from "./tools/Tools.svelte";
import Pagination from "./pagination/Pagination.svelte";
import ActionsOnSelected from "./ActionsOnSelected.svelte";
import Table from "./Table.svelte";
import { getContext } from "svelte";
import { apiGet } from "../../helpers";
export let schema;
export let users;
export let records;
export let graph;
// export let visibleFields;
export let systemFields;
export let sortParam;
export let sortField;
export let operators;
export let filter;
export let limit;
export let skip;
export let total;
export let inModal;
export let modalUrl;
export let selected = [];
export let isWritable = false;
function refresh(e) {
const newUrl = e.detail;
apiGet(newUrl)
.then((response) => {
records = response.records;
sortParam = response.sortParam;
sortField = response.sortField;
operators = response.operators;
filter = response.filter;
skip = response.skip;
limit = response.limit;
total = response.total;
modalUrl = response.modalUrl;
document.querySelector("dialog h3").scrollIntoView();
})
.catch((error) => {
console.log(error);
});
}
</script>
<div class="">
<div class={inModal ? "mt-0" : "mt-5"}>
<h3 class="header-normal mb-5">
{schema.label}
</h3>
{#if selected.length > 0 && !inModal && isWritable}
<ActionsOnSelected {schema} {selected} {filter} />
{:else}
<Tools
bind:schema
bind:records
{systemFields}
{sortParam}
{sortField}
{operators}
{filter}
{graph}
{inModal}
{modalUrl}
{isWritable}
on:refresh={refresh}
/>
{/if}
<Table
{records}
{graph}
{schema}
{sortParam}
{sortField}
{systemFields}
{inModal}
{users}
{isWritable}
bind:selected
/>
</div>
<Pagination
{limit}
{skip}
{total}
on:refresh={refresh}
{inModal}
{modalUrl}
/>
</div>