@likable-hair/svelte 4.0.11 → 4.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/composed/forms/AsyncAutocomplete.svelte +4 -1
- package/dist/components/composed/forms/AsyncAutocomplete.svelte.d.ts +4 -0
- package/dist/components/composed/list/DynamicTable.svelte +26 -38
- package/dist/components/composed/list/DynamicTable.svelte.d.ts +1 -0
- package/dist/components/composed/list/PaginatedTable.svelte +1 -4
- package/dist/components/composed/list/PaginatedTable.svelte.d.ts +142 -133
- package/dist/components/simple/forms/Autocomplete.svelte +2 -2
- package/dist/components/simple/forms/Autocomplete.svelte.d.ts +2 -0
- package/package.json +1 -1
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
<script lang="ts" generics="Data">import Autocomplete from "../../../components/simple/forms/Autocomplete.svelte";
|
|
5
5
|
import debounceStore from "../../../stores/debounce";
|
|
6
6
|
import { writable } from 'svelte/store';
|
|
7
|
-
|
|
7
|
+
import Menu from "../../simple/common/Menu.svelte";
|
|
8
|
+
let { items = [], values = [], multiple = false, searcher, placeholder, searchThreshold = 2, debounceTimeout = 500, searching = false, search = false, searchText, maxVisibleChips, menuOpened = false, mobileDrawer = false, closeOnSelect = false, disabled = false, menuAnchor, menuWidth, chipLabelSnippet, itemLabelSnippet, onchange, } = $props();
|
|
8
9
|
const searchTextValue = writable(searchText);
|
|
9
10
|
let searchTextDebounce = $derived(debounceStore(searchTextValue, debounceTimeout));
|
|
10
11
|
$effect(() => {
|
|
@@ -44,6 +45,8 @@ $effect(() => {
|
|
|
44
45
|
{placeholder}
|
|
45
46
|
{closeOnSelect}
|
|
46
47
|
{disabled}
|
|
48
|
+
{menuWidth}
|
|
49
|
+
{menuAnchor}
|
|
47
50
|
searchFunction={() => true}
|
|
48
51
|
{onchange}
|
|
49
52
|
{chipLabelSnippet}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { Item } from "../../../components/simple/forms/Autocomplete.svelte";
|
|
2
2
|
export type { Item };
|
|
3
|
+
import type { ComponentProps } from "svelte";
|
|
4
|
+
import Menu from "../../simple/common/Menu.svelte";
|
|
3
5
|
declare class __sveltets_Render<Data> {
|
|
4
6
|
props(): {
|
|
5
7
|
items: Item<Data>[];
|
|
@@ -19,6 +21,8 @@ declare class __sveltets_Render<Data> {
|
|
|
19
21
|
mobileDrawer?: boolean;
|
|
20
22
|
closeOnSelect?: boolean;
|
|
21
23
|
disabled?: boolean;
|
|
24
|
+
menuWidth?: string;
|
|
25
|
+
menuAnchor?: ComponentProps<typeof Menu>["anchor"];
|
|
22
26
|
chipLabelSnippet?: import("svelte").Snippet<[{
|
|
23
27
|
selection: Item<Data>;
|
|
24
28
|
}]> | undefined;
|
|
@@ -29,19 +29,12 @@ onMount(() => {
|
|
|
29
29
|
hideScrollbar = tableContainer.scrollHeight > tableContainer.clientHeight;
|
|
30
30
|
}
|
|
31
31
|
for (const head of [...headers, { value: 'non-resizable', minWidth: DEFAULT_MIN_WIDTH_PX + 'px', maxWidth: DEFAULT_MAX_WIDTH_PX + 'px' }, { value: 'customize-headers', minWidth: DEFAULT_MIN_WIDTH_PX + 'px', maxWidth: DEFAULT_MAX_WIDTH_PX + 'px' }]) {
|
|
32
|
-
let th;
|
|
33
|
-
if (head.value == 'non-resizable' || head.value == 'customize-headers') {
|
|
34
|
-
th = document.getElementsByClassName(head.value).item(0);
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
th = document.getElementById(head.value);
|
|
38
|
-
}
|
|
32
|
+
let th = headersHTML[head.value];
|
|
39
33
|
if (!!th) {
|
|
40
34
|
resizeHeader(th, head);
|
|
41
35
|
}
|
|
42
36
|
}
|
|
43
|
-
|
|
44
|
-
table.classList.add('dynamic-resizable');
|
|
37
|
+
tableHTML?.classList.add('dynamic-resizable');
|
|
45
38
|
resizeObserver = new ResizeObserver(() => {
|
|
46
39
|
updateRemainingWidth();
|
|
47
40
|
updateHeaderHeight();
|
|
@@ -101,8 +94,8 @@ const [send, receive] = crossfade({
|
|
|
101
94
|
};
|
|
102
95
|
},
|
|
103
96
|
});
|
|
104
|
-
let { headers = [], headersToShowInTable = headers, subHeaders = [], customizeHeaders = false, rows = [], sortedBy = $bindable(), sortDirection = $bindable("asc"), cellEdit = false, lang = "en", dateLocale, noItemsText = lang == 'en' ? "No items to show" : 'Nessun elemento da visualizzare', showSelect = false, showActions = true, selectMode = "single", selectedItems = $bindable([]), unselectedItems = $bindable([]), selectedAll = $bindable(false), showExpand = false, loading = false, disabled = false, filters = $bindable([]), searchBarColumns, searchBarVisible = false, searchBarPlaceholder = lang == 'en' ? "Type to search..." : "Scrivi per cercare...", filtersVisible = false, quickFiltersVisible = false, editFilterMode = "one-edit", showActiveFilters = true, quickFilters = [], actionsForSelectedItems = [], quickActionsDisabled = false, totalRows = rows.length, searchText = $bindable(), renderedRowsNumber = 100, sectionRowsNumber = 20, sectionThreshold = 2, backwardThresholdPixel = 100, forwardThresholdPixel = 100, uniqueKey = 'id', numberOfResultsVisible = false, endLineVisible = false, resizableColumns = false, resizedColumnSizeWithPadding = {}, dynamicFilters = true, class: clazz = {}, onapplyCustomQuickFilter, oncellClick, onfetchData, onfiltersChange, onsort, onremoveAllFilters, onremoveCustomQuickFilter, onremoveFilter, onrowClick, onsaveCellEdit, onsaveHeadersToShow, oncolumnResize, searchBarSnippet, customFilterChipSnippet, customFilterSnippet, filterAppendSnippet, onscroll, selectionSnippet: selectionInternalSnippet, itemLabelSnippet: itemLabelInternalSnippet, chipLabelSnippet, headerSnippet, headerLabelSnippet, rowAppendSnippet, customRowSnippet, subRowAppendSnippet, subHeaderLabelSnippet, subHeaderSnippet, subRowActionsSnippet, customSubRowSnippet, customQuickFilterSnippet, appendSnippet, } = $props();
|
|
105
|
-
let openCellEditor = $state(false), cellEditorActivator = $state(), cellEditorContainer = $state(), menuElementCellEditor = $state(), menuElementQuickFilters = $state(), cellEditorInfoActive = $state(), saveEditDisabled = $state(false), searchBarInput = $state(undefined), openQuickFilter = $state(false), quickFilterActivator = $state(), quickFilterActive = $state(), globalBuilder = new FilterBuilder(), calendarOpened = $state(false), calendarOpened2 = $state(false), selectedIndexes = [], cellEditorIndexRow = $state(), cellEditorIndexHeader = $state(), cellEditorSubItem = $state(), currentSectionNumber = $state(0), tableBody = $state(), tableContainer = $state(), userScrolling = $state(true), reachedBottom = $state(false), reachedTop = false, resizing = false, remainingWidth = $state(0), hideScrollbar = $state(false), sortModify, mainHeader = $state(), resizeObserver;
|
|
97
|
+
let { headers = [], headersToShowInTable = headers, subHeaders = [], customizeHeaders = false, rows = [], sortedBy = $bindable(), sortDirection = $bindable("asc"), cellEdit = false, lang = "en", dateLocale, noItemsText = lang == 'en' ? "No items to show" : 'Nessun elemento da visualizzare', showSelect = false, showActions = true, selectMode = "single", selectedItems = $bindable([]), unselectedItems = $bindable([]), selectedAll = $bindable(false), showExpand = false, loading = false, disabled = false, filters = $bindable([]), searchBarColumns, searchBarVisible = false, searchBarPlaceholder = lang == 'en' ? "Type to search..." : "Scrivi per cercare...", filtersVisible = false, quickFiltersVisible = false, editFilterMode = "one-edit", showActiveFilters = true, quickFilters = [], actionsForSelectedItems = [], quickActionsDisabled = false, totalRows = rows.length, searchText = $bindable(), renderedRowsNumber = 100, sectionRowsNumber = 20, sectionThreshold = 2, backwardThresholdPixel = 100, forwardThresholdPixel = 100, uniqueKey = 'id', numberOfResultsVisible = false, endLineVisible = false, resizableColumns = false, resizedColumnSizeWithPadding = {}, dynamicFilters = true, useSelectedItemsOnly = false, class: clazz = {}, onapplyCustomQuickFilter, oncellClick, onfetchData, onfiltersChange, onsort, onremoveAllFilters, onremoveCustomQuickFilter, onremoveFilter, onrowClick, onsaveCellEdit, onsaveHeadersToShow, oncolumnResize, searchBarSnippet, customFilterChipSnippet, customFilterSnippet, filterAppendSnippet, onscroll, selectionSnippet: selectionInternalSnippet, itemLabelSnippet: itemLabelInternalSnippet, chipLabelSnippet, headerSnippet, headerLabelSnippet, rowAppendSnippet, customRowSnippet, subRowAppendSnippet, subHeaderLabelSnippet, subHeaderSnippet, subRowActionsSnippet, customSubRowSnippet, customQuickFilterSnippet, appendSnippet, } = $props();
|
|
98
|
+
let openCellEditor = $state(false), cellEditorActivator = $state(), cellEditorContainer = $state(), menuElementCellEditor = $state(), menuElementQuickFilters = $state(), cellEditorInfoActive = $state(), saveEditDisabled = $state(false), searchBarInput = $state(undefined), openQuickFilter = $state(false), quickFilterActivator = $state(), quickFilterActive = $state(), globalBuilder = new FilterBuilder(), calendarOpened = $state(false), calendarOpened2 = $state(false), selectedIndexes = [], cellEditorIndexRow = $state(), cellEditorIndexHeader = $state(), cellEditorSubItem = $state(), currentSectionNumber = $state(0), tableBody = $state(), tableContainer = $state(), tableHTML = $state(), headersHTML = {}, userScrolling = $state(true), reachedBottom = $state(false), reachedTop = false, resizing = false, remainingWidth = $state(0), hideScrollbar = $state(false), sortModify, mainHeader = $state(), resizeObserver, ignoreSelectAll = rows.length == totalRows && useSelectedItemsOnly;
|
|
106
99
|
const DEFAULT_MIN_WIDTH_PX = 100, DEFAULT_MAX_WIDTH_PX = 400;
|
|
107
100
|
let totalSections = $derived((totalRows - renderedRowsNumber) / sectionRowsNumber);
|
|
108
101
|
let hasMoreToRender = $derived(totalSections > currentSectionNumber);
|
|
@@ -240,7 +233,7 @@ function handleCancelClick() {
|
|
|
240
233
|
}
|
|
241
234
|
function handleSelect(item, shiftKeyPressed) {
|
|
242
235
|
let index = -1;
|
|
243
|
-
if (selectedAll) {
|
|
236
|
+
if (selectedAll && !ignoreSelectAll) {
|
|
244
237
|
index = unselectedItems.findIndex((i) => i[uniqueKey] == item[uniqueKey]);
|
|
245
238
|
}
|
|
246
239
|
else {
|
|
@@ -262,7 +255,7 @@ function handleSelect(item, shiftKeyPressed) {
|
|
|
262
255
|
selectedIndex = x;
|
|
263
256
|
}
|
|
264
257
|
for (let i = lastSelectedIndex + 1; i <= selectedIndex; i++) {
|
|
265
|
-
if (selectedAll) {
|
|
258
|
+
if (selectedAll && !ignoreSelectAll) {
|
|
266
259
|
if (!unselectedItems.find((unselectedItem) => unselectedItem[uniqueKey] == rows[i].item[uniqueKey])) {
|
|
267
260
|
unselectedItems = [...unselectedItems, rows[i].item];
|
|
268
261
|
}
|
|
@@ -276,7 +269,7 @@ function handleSelect(item, shiftKeyPressed) {
|
|
|
276
269
|
}
|
|
277
270
|
}
|
|
278
271
|
else {
|
|
279
|
-
if (selectedAll) {
|
|
272
|
+
if (selectedAll && !ignoreSelectAll) {
|
|
280
273
|
unselectedItems = [...unselectedItems, item];
|
|
281
274
|
}
|
|
282
275
|
else {
|
|
@@ -287,7 +280,7 @@ function handleSelect(item, shiftKeyPressed) {
|
|
|
287
280
|
}
|
|
288
281
|
}
|
|
289
282
|
else {
|
|
290
|
-
if (selectedAll) {
|
|
283
|
+
if (selectedAll && !ignoreSelectAll) {
|
|
291
284
|
unselectedItems = unselectedItems.filter((i) => i[uniqueKey] != item[uniqueKey]);
|
|
292
285
|
}
|
|
293
286
|
else {
|
|
@@ -298,7 +291,12 @@ function handleSelect(item, shiftKeyPressed) {
|
|
|
298
291
|
}
|
|
299
292
|
function handleSelectAll() {
|
|
300
293
|
if (selectMode == "multiple") {
|
|
301
|
-
|
|
294
|
+
if (!selectedAll && ignoreSelectAll) {
|
|
295
|
+
selectedItems = rows.map(r => r.item);
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
selectedItems = [];
|
|
299
|
+
}
|
|
302
300
|
selectedIndexes = [];
|
|
303
301
|
unselectedItems = [];
|
|
304
302
|
selectedAll = !selectedAll;
|
|
@@ -855,14 +853,14 @@ async function updateRemainingWidth() {
|
|
|
855
853
|
const containerWidth = tableContainer.getBoundingClientRect().width - 30;
|
|
856
854
|
if (containerWidth) {
|
|
857
855
|
const totalResizableWidth = headersToShowInTable.reduce((sum, head) => {
|
|
858
|
-
let th =
|
|
856
|
+
let th = headersHTML[head.value];
|
|
859
857
|
if (!!th) {
|
|
860
858
|
resizeHeader(th, head);
|
|
861
859
|
}
|
|
862
860
|
const width = th?.getBoundingClientRect().width || 0;
|
|
863
861
|
return sum + width + 1;
|
|
864
862
|
}, 0);
|
|
865
|
-
const extraStaticWidth = Array.from(mainHeader.querySelectorAll('th.non-resizable, th.
|
|
863
|
+
const extraStaticWidth = Array.from(mainHeader.querySelectorAll('th.non-resizable, th.customize-headers'))
|
|
866
864
|
.reduce((sum, th) => sum + th.getBoundingClientRect().width + 1, 0);
|
|
867
865
|
remainingWidth = Math.max(0, containerWidth - totalResizableWidth - extraStaticWidth);
|
|
868
866
|
}
|
|
@@ -1052,7 +1050,7 @@ function resizeHeader(th, header) {
|
|
|
1052
1050
|
hasMore={currentSectionNumber > 0 && userScrolling}
|
|
1053
1051
|
direction='backward'
|
|
1054
1052
|
/>
|
|
1055
|
-
<table style="display: table;" class="dynamic-table">
|
|
1053
|
+
<table style="display: table;" class="dynamic-table" bind:this={tableHTML}>
|
|
1056
1054
|
<thead class="table-header" bind:this={mainHeader}>
|
|
1057
1055
|
<tr>
|
|
1058
1056
|
{#if !!showSelect && !showExpand && rows.length > 0}
|
|
@@ -1061,6 +1059,7 @@ function resizeHeader(th, header) {
|
|
|
1061
1059
|
style:min-width="30px"
|
|
1062
1060
|
style:text-align="center"
|
|
1063
1061
|
class="non-resizable"
|
|
1062
|
+
bind:this={headersHTML['non-resizable']}
|
|
1064
1063
|
>
|
|
1065
1064
|
{#if selectMode === "multiple"}
|
|
1066
1065
|
<Checkbox
|
|
@@ -1078,6 +1077,7 @@ function resizeHeader(th, header) {
|
|
|
1078
1077
|
style:max-width="60px"
|
|
1079
1078
|
style:text-align="center"
|
|
1080
1079
|
class="non-resizable"
|
|
1080
|
+
bind:this={headersHTML['non-resizable']}
|
|
1081
1081
|
></th>
|
|
1082
1082
|
{/if}
|
|
1083
1083
|
{#each headersToShowInTable as header, index}
|
|
@@ -1087,7 +1087,7 @@ function resizeHeader(th, header) {
|
|
|
1087
1087
|
style:max-width={header.maxWidth}
|
|
1088
1088
|
class:sortable={header.sortable}
|
|
1089
1089
|
onclick={() => handleHeaderClick(header)}
|
|
1090
|
-
|
|
1090
|
+
bind:this={headersHTML[header.value]}
|
|
1091
1091
|
>
|
|
1092
1092
|
{#if resizableColumns}
|
|
1093
1093
|
<div class="resizer" use:resize></div>
|
|
@@ -1139,7 +1139,7 @@ function resizeHeader(th, header) {
|
|
|
1139
1139
|
{/if}
|
|
1140
1140
|
</th>
|
|
1141
1141
|
{/each}
|
|
1142
|
-
{#if remainingWidth
|
|
1142
|
+
{#if remainingWidth}
|
|
1143
1143
|
<th
|
|
1144
1144
|
style:width={remainingWidth + 'px'}
|
|
1145
1145
|
class="filler"
|
|
@@ -1150,6 +1150,7 @@ function resizeHeader(th, header) {
|
|
|
1150
1150
|
<th
|
|
1151
1151
|
style:text-align="center"
|
|
1152
1152
|
class="customize-headers"
|
|
1153
|
+
bind:this={headersHTML['customize-headers']}
|
|
1153
1154
|
>
|
|
1154
1155
|
{#if customizeHeaders}
|
|
1155
1156
|
<div style="display: flex; justify-content: center;">
|
|
@@ -1207,7 +1208,7 @@ function resizeHeader(th, header) {
|
|
|
1207
1208
|
: 'var(--dynamic-table-row-disabled-background-color, var(--dynamic-table-default-row-disabled-background-color))'
|
|
1208
1209
|
: expandedRows.findIndex(r => r.item[uniqueKey] == row.item[uniqueKey]) != -1
|
|
1209
1210
|
? 'var(--dynamic-table-expanded-row-background-color, var(--dynamic-table-default-expanded-row-background-color))'
|
|
1210
|
-
: selectedAll
|
|
1211
|
+
: selectedAll && !ignoreSelectAll
|
|
1211
1212
|
? !unselectedItems.find(i => i[uniqueKey] == row.item[uniqueKey])
|
|
1212
1213
|
? 'var(--dynamic-table-selected-row-background-color, var(--dynamic-table-default-selected-row-background-color))'
|
|
1213
1214
|
: ''
|
|
@@ -1223,7 +1224,7 @@ function resizeHeader(th, header) {
|
|
|
1223
1224
|
<Checkbox
|
|
1224
1225
|
id={row.item[uniqueKey]}
|
|
1225
1226
|
value={
|
|
1226
|
-
selectedAll ?
|
|
1227
|
+
selectedAll && !ignoreSelectAll ?
|
|
1227
1228
|
unselectedItems.findIndex(
|
|
1228
1229
|
(i) => i[uniqueKey] == row.item[uniqueKey]
|
|
1229
1230
|
) == -1 :
|
|
@@ -1292,7 +1293,7 @@ function resizeHeader(th, header) {
|
|
|
1292
1293
|
{/if}
|
|
1293
1294
|
</td>
|
|
1294
1295
|
{/each}
|
|
1295
|
-
{#if remainingWidth
|
|
1296
|
+
{#if remainingWidth}
|
|
1296
1297
|
<td></td>
|
|
1297
1298
|
{/if}
|
|
1298
1299
|
{#if rowAppendSnippet}
|
|
@@ -1901,30 +1902,17 @@ function resizeHeader(th, header) {
|
|
|
1901
1902
|
width: fit-content;
|
|
1902
1903
|
}
|
|
1903
1904
|
|
|
1904
|
-
.slot-append {
|
|
1905
|
-
width: 1px;
|
|
1906
|
-
min-width: unset;
|
|
1907
|
-
box-sizing: content-box;
|
|
1908
|
-
}
|
|
1909
|
-
|
|
1910
1905
|
.table-header {
|
|
1911
1906
|
position: sticky;
|
|
1912
1907
|
top: 0;
|
|
1913
1908
|
z-index: 2;
|
|
1909
|
+
top: -1px;
|
|
1914
1910
|
height: var(
|
|
1915
1911
|
--dynamic-table-header-height,
|
|
1916
1912
|
var(--dynamic-table-default-header-height)
|
|
1917
1913
|
);
|
|
1918
1914
|
}
|
|
1919
1915
|
|
|
1920
|
-
@media not all and (min-resolution:.001dpcm) {
|
|
1921
|
-
.table-header {
|
|
1922
|
-
position: sticky;
|
|
1923
|
-
top: -2px;
|
|
1924
|
-
z-index: 2;
|
|
1925
|
-
}
|
|
1926
|
-
}
|
|
1927
|
-
|
|
1928
1916
|
.table-subheader {
|
|
1929
1917
|
top: var(--main-header-height);
|
|
1930
1918
|
z-index: 1;
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
<script lang="ts"
|
|
2
|
-
</script>
|
|
3
|
-
|
|
4
|
-
<script lang="ts">import SimpleTable from "../../simple/lists/SimpleTable.svelte";
|
|
1
|
+
<script lang="ts" generics="Item extends {[key: string]: any}, Data">import SimpleTable, {} from "../../simple/lists/SimpleTable.svelte";
|
|
5
2
|
import Paginator from "../../simple/lists/Paginator.svelte";
|
|
6
3
|
import Dropdown from "../forms/Dropdown.svelte";
|
|
7
4
|
import {} from "svelte";
|
|
@@ -1,144 +1,153 @@
|
|
|
1
|
-
|
|
2
|
-
export type Header = ArrayElement<NonNullable<ComponentProps<typeof SimpleTable>["headers"]>>;
|
|
3
|
-
import SimpleTable from "../../simple/lists/SimpleTable.svelte";
|
|
1
|
+
import { type Header } from "../../simple/lists/SimpleTable.svelte";
|
|
4
2
|
import Paginator from "../../simple/lists/Paginator.svelte";
|
|
5
3
|
import Dropdown from "../forms/Dropdown.svelte";
|
|
6
4
|
import { type ComponentProps, type Snippet } from "svelte";
|
|
7
5
|
import Filters from "../search/Filters.svelte";
|
|
8
6
|
import type Builder from "../../../utils/filters/builder";
|
|
9
|
-
declare
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
sortedBy: string | undefined;
|
|
33
|
-
sortDirection: string;
|
|
34
|
-
sortModify: import("../../simple/lists/SimpleTable.svelte").Header["sortModify"];
|
|
35
|
-
};
|
|
36
|
-
}) => void) | undefined;
|
|
37
|
-
onrowClick?: ((event: {
|
|
38
|
-
detail: {
|
|
39
|
-
item: {
|
|
40
|
-
[key: string]: any;
|
|
7
|
+
declare class __sveltets_Render<Item extends {
|
|
8
|
+
[key: string]: any;
|
|
9
|
+
}, Data> {
|
|
10
|
+
props(): Omit<{
|
|
11
|
+
headers: Header<Data>[];
|
|
12
|
+
items: Item[];
|
|
13
|
+
sortedBy?: string;
|
|
14
|
+
sortDirection?: "asc" | "desc";
|
|
15
|
+
resizableColumns?: boolean;
|
|
16
|
+
resizedColumnSizeWithPadding?: {
|
|
17
|
+
[value: string]: number;
|
|
18
|
+
} | undefined;
|
|
19
|
+
pointerOnRowHover?: boolean;
|
|
20
|
+
lang?: "it" | "en";
|
|
21
|
+
doubleClickActive?: boolean;
|
|
22
|
+
doubleClickDelay?: number;
|
|
23
|
+
calculateRowStyles?: import("../../simple/lists/SimpleTable.svelte").CalculateRowStyles<Item> | undefined;
|
|
24
|
+
calculateRowClasses?: import("../../simple/lists/SimpleTable.svelte").CalculateRowClasses<Item> | undefined;
|
|
25
|
+
onsort?: ((event: {
|
|
26
|
+
detail: {
|
|
27
|
+
sortedBy: string | undefined;
|
|
28
|
+
sortDirection: string;
|
|
29
|
+
sortModify: Header["sortModify"];
|
|
41
30
|
};
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
item: {
|
|
47
|
-
[key: string]: any;
|
|
31
|
+
}) => void) | undefined;
|
|
32
|
+
onrowClick?: ((event: {
|
|
33
|
+
detail: {
|
|
34
|
+
item: Item;
|
|
48
35
|
};
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
36
|
+
}) => void) | undefined;
|
|
37
|
+
onrowDoubleClick?: ((event: {
|
|
38
|
+
detail: {
|
|
39
|
+
item: Item;
|
|
40
|
+
};
|
|
41
|
+
}) => void) | undefined;
|
|
42
|
+
oncolumnResize?: ((event: {
|
|
43
|
+
detail: {
|
|
44
|
+
id: string;
|
|
45
|
+
newWidthPx: number;
|
|
46
|
+
};
|
|
47
|
+
}) => void) | undefined;
|
|
48
|
+
headerSnippet?: Snippet<[{
|
|
49
|
+
head: Header<Data>;
|
|
50
|
+
}]> | undefined;
|
|
51
|
+
headerLabelSnippet?: Snippet<[{
|
|
52
|
+
head: Header<Data>;
|
|
53
|
+
}]> | undefined;
|
|
54
|
+
appendSnippet?: Snippet<[{
|
|
55
|
+
index: number;
|
|
56
|
+
item?: Item | undefined;
|
|
57
|
+
}]> | undefined;
|
|
58
|
+
rowActionsSnippet?: Snippet<[{
|
|
59
|
+
index: number;
|
|
60
|
+
item: Item;
|
|
61
|
+
}]> | undefined;
|
|
62
|
+
customSnippet?: Snippet<[{
|
|
63
|
+
index: number;
|
|
64
|
+
columnIndex: number;
|
|
65
|
+
header: Header<Data>;
|
|
66
|
+
item: Item;
|
|
67
|
+
}]> | undefined;
|
|
68
|
+
noDataSnippet?: Snippet<[]>;
|
|
69
|
+
class?: {
|
|
70
|
+
container?: string;
|
|
71
|
+
header?: string;
|
|
72
|
+
row?: string;
|
|
73
|
+
cell?: string;
|
|
67
74
|
} | undefined;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
75
|
+
}, "class"> & {
|
|
76
|
+
page?: NonNullable<ComponentProps<typeof Paginator>["page"]>;
|
|
77
|
+
maxPage?: ComponentProps<typeof Paginator>["maxPage"];
|
|
78
|
+
rowsPerPageOptions?: ComponentProps<typeof Dropdown>["items"];
|
|
79
|
+
hideRowsPerPage?: boolean;
|
|
80
|
+
totalElements?: number;
|
|
81
|
+
rowsPerPage?: number;
|
|
82
|
+
filters?: ComponentProps<typeof Filters>["filters"];
|
|
83
|
+
searchBarColumns?: string[];
|
|
84
|
+
searchBarVisible?: boolean;
|
|
85
|
+
searchBarPlaceholder?: string;
|
|
86
|
+
editFilterMode?: "one-edit" | "multi-edit";
|
|
87
|
+
showActiveFilters?: boolean;
|
|
88
|
+
class?: {
|
|
89
|
+
simpleTable?: {
|
|
90
|
+
container?: string;
|
|
91
|
+
header?: string;
|
|
92
|
+
row?: string;
|
|
93
|
+
cell?: string;
|
|
94
|
+
} | undefined;
|
|
95
|
+
} | undefined;
|
|
96
|
+
onpaginationChange?: ((event: {
|
|
97
|
+
detail: {
|
|
98
|
+
rowsPerPage: number;
|
|
99
|
+
page: number;
|
|
100
|
+
builder: Builder;
|
|
101
|
+
};
|
|
102
|
+
}) => void) | undefined;
|
|
103
|
+
onfiltersChange?: ((event: {
|
|
104
|
+
detail: {
|
|
105
|
+
builder: Builder;
|
|
106
|
+
};
|
|
107
|
+
}) => void) | undefined;
|
|
108
|
+
onremoveFilter?: ComponentProps<typeof Filters>["onremoveFilter"];
|
|
109
|
+
onremoveAllFilters?: ComponentProps<typeof Filters>["onremoveAllFilters"];
|
|
110
|
+
filterAppendSnippet?: ComponentProps<typeof Filters>["appendSnippet"];
|
|
111
|
+
customFilterChipSnippet?: ComponentProps<typeof Filters>["customChipSnippet"];
|
|
112
|
+
customFilterSnippet?: ComponentProps<typeof Filters>["customSnippet"];
|
|
113
|
+
searchBarSnippet?: Snippet<[{
|
|
114
|
+
handleSearchChange: (searchText: string | undefined) => void;
|
|
115
|
+
}]> | undefined;
|
|
116
|
+
footerSnippet?: Snippet<[{
|
|
117
|
+
hideRowsPerPage: boolean;
|
|
118
|
+
rowsPerPageOptions: import("../forms/AsyncAutocomplete.svelte").Item<unknown>[];
|
|
119
|
+
rowsPerPageSelection: import("../forms/AsyncAutocomplete.svelte").Item<unknown>[] | undefined;
|
|
120
|
+
totalElements: number | undefined;
|
|
121
|
+
page: number;
|
|
122
|
+
maxPage: number | undefined;
|
|
108
123
|
rowsPerPage: number;
|
|
124
|
+
handlePaginationChange: () => void;
|
|
125
|
+
}]> | undefined;
|
|
126
|
+
rangeDescriptorSnippet?: Snippet<[{
|
|
127
|
+
totalElements: number | undefined;
|
|
109
128
|
page: number;
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
handlePaginationChange: () => void;
|
|
135
|
-
}]>;
|
|
136
|
-
rangeDescriptorSnippet?: Snippet<[{
|
|
137
|
-
totalElements: number | undefined;
|
|
138
|
-
page: number;
|
|
139
|
-
maxPage: number | undefined;
|
|
140
|
-
rowsPerPage: number;
|
|
141
|
-
}]>;
|
|
142
|
-
}, {}, "page" | "sortedBy" | "sortDirection" | "filters" | "rowsPerPage">;
|
|
143
|
-
type PaginatedTable = ReturnType<typeof PaginatedTable>;
|
|
129
|
+
maxPage: number | undefined;
|
|
130
|
+
rowsPerPage: number;
|
|
131
|
+
}]> | undefined;
|
|
132
|
+
};
|
|
133
|
+
events(): {};
|
|
134
|
+
slots(): {};
|
|
135
|
+
bindings(): "page" | "sortedBy" | "sortDirection" | "filters" | "rowsPerPage";
|
|
136
|
+
exports(): {};
|
|
137
|
+
}
|
|
138
|
+
interface $$IsomorphicComponent {
|
|
139
|
+
new <Item extends {
|
|
140
|
+
[key: string]: any;
|
|
141
|
+
}, Data>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<Item, Data>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<Item, Data>['props']>, ReturnType<__sveltets_Render<Item, Data>['events']>, ReturnType<__sveltets_Render<Item, Data>['slots']>> & {
|
|
142
|
+
$$bindings?: ReturnType<__sveltets_Render<Item, Data>['bindings']>;
|
|
143
|
+
} & ReturnType<__sveltets_Render<Item, Data>['exports']>;
|
|
144
|
+
<Item extends {
|
|
145
|
+
[key: string]: any;
|
|
146
|
+
}, Data>(internal: unknown, props: ReturnType<__sveltets_Render<Item, Data>['props']> & {}): ReturnType<__sveltets_Render<Item, Data>['exports']>;
|
|
147
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
|
|
148
|
+
}
|
|
149
|
+
declare const PaginatedTable: $$IsomorphicComponent;
|
|
150
|
+
type PaginatedTable<Item extends {
|
|
151
|
+
[key: string]: any;
|
|
152
|
+
}, Data> = InstanceType<typeof PaginatedTable<Item, Data>>;
|
|
144
153
|
export default PaginatedTable;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<script lang="ts" generics="Data">import "../../../css/main.css";
|
|
5
5
|
import "./Autocomplete.css";
|
|
6
6
|
import { scrollInMenu } from "../common/scroller";
|
|
7
|
-
let { values = $bindable(), items = [], searchFunction = undefined, multiple = false, disabled = false, mandatory = false, placeholder = "", width = "auto", height = "auto", maxWidth = undefined, minWidth = "200px", openingId = $bindable("autocomplete-menu"), searchText = $bindable(undefined), maxVisibleChips = undefined, menuOpened = $bindable(false), closeOnSelect = !multiple, emptySearchTextOnMenuClose = true, menuBoxShadow = "rgb(var(--global-color-background-300), .5) 0px 2px 4px", menuBorderRadius = "5px", mobileDrawer = false, menuWidth = undefined, class: clazz = {}, selectionContainerSnippet, selectionSnippet, chipLabelSnippet, exceedCounterSnippet, menuSnippet, itemLabelSnippet, itemSnippet, onchange, onfocus, onblur, onkeydown, onclose, } = $props();
|
|
7
|
+
let { values = $bindable(), items = [], searchFunction = undefined, multiple = false, disabled = false, mandatory = false, placeholder = "", width = "auto", height = "auto", maxWidth = undefined, minWidth = "200px", openingId = $bindable("autocomplete-menu"), searchText = $bindable(undefined), maxVisibleChips = undefined, menuOpened = $bindable(false), closeOnSelect = !multiple, emptySearchTextOnMenuClose = true, menuBoxShadow = "rgb(var(--global-color-background-300), .5) 0px 2px 4px", menuBorderRadius = "5px", mobileDrawer = false, menuWidth = undefined, menuAnchor = 'bottom-center', class: clazz = {}, selectionContainerSnippet, selectionSnippet, chipLabelSnippet, exceedCounterSnippet, menuSnippet, itemLabelSnippet, itemSnippet, onchange, onfocus, onblur, onkeydown, onclose, } = $props();
|
|
8
8
|
let notVisibleChipNumber = $derived(Math.max((values?.length || 0) - (maxVisibleChips || 0), 0));
|
|
9
9
|
function select(item) {
|
|
10
10
|
if (disabled)
|
|
@@ -286,7 +286,7 @@ import MenuOrDrawer from "../../composed/common/MenuOrDrawer.svelte";
|
|
|
286
286
|
_boxShadow={menuBoxShadow}
|
|
287
287
|
_borderRadius={menuBorderRadius}
|
|
288
288
|
bind:open={menuOpened}
|
|
289
|
-
anchor=
|
|
289
|
+
anchor={menuAnchor}
|
|
290
290
|
closeOnClickOutside
|
|
291
291
|
bind:refreshPosition
|
|
292
292
|
bind:menuElement
|
|
@@ -5,6 +5,7 @@ export type Item<Data = any> = {
|
|
|
5
5
|
};
|
|
6
6
|
import "../../../css/main.css";
|
|
7
7
|
import "./Autocomplete.css";
|
|
8
|
+
import Menu from "../common/Menu.svelte";
|
|
8
9
|
import { type ComponentProps, type Snippet } from "svelte";
|
|
9
10
|
import SimpleTextField from "./SimpleTextField.svelte";
|
|
10
11
|
import MenuOrDrawer from "../../composed/common/MenuOrDrawer.svelte";
|
|
@@ -31,6 +32,7 @@ declare class __sveltets_Render<Data> {
|
|
|
31
32
|
menuBorderRadius?: string;
|
|
32
33
|
mobileDrawer?: boolean;
|
|
33
34
|
menuWidth?: string | null;
|
|
35
|
+
menuAnchor?: ComponentProps<typeof Menu>["anchor"];
|
|
34
36
|
class?: {
|
|
35
37
|
activator?: string;
|
|
36
38
|
menu?: string;
|