@likable-hair/svelte 3.3.19 → 3.3.21
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/common/MenuOrDrawerOptions.svelte +1 -1
- package/dist/components/composed/forms/AsyncAutocomplete.svelte +3 -1
- package/dist/components/composed/forms/AsyncAutocomplete.svelte.d.ts +2 -0
- package/dist/components/composed/forms/CountriesAutocomplete.svelte.d.ts +1 -0
- package/dist/components/composed/list/DynamicTable.svelte +25 -37
- package/dist/components/composed/list/DynamicTable.svelte.d.ts +1 -0
- package/dist/components/simple/forms/Autocomplete.svelte +2 -2
- package/dist/components/simple/forms/Autocomplete.svelte.d.ts +1 -0
- package/package.json +1 -1
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<script>import "../../../css/main.css";
|
|
4
4
|
import MenuOrDrawer from "./MenuOrDrawer.svelte";
|
|
5
5
|
import SelectableVerticalList from "../../simple/lists/SelectableVerticalList.svelte";
|
|
6
|
-
export let open = false, activator, drawerPosition = "bottom", menuAnchor = "bottom-center", elements = [], stayInViewport = true, flipOnOverflow = false, _boxShadow = "rgb(var(--global-color-grey-900), .5) 0px 2px 4px", _height = "
|
|
6
|
+
export let open = false, activator, drawerPosition = "bottom", menuAnchor = "bottom-center", elements = [], stayInViewport = true, flipOnOverflow = false, _boxShadow = "rgb(var(--global-color-grey-900), .5) 0px 2px 4px", _height = "300px", _maxHeight = void 0, _minWidth = "100px", _borderRadius = "5px", openingId = void 0;
|
|
7
7
|
let selected;
|
|
8
8
|
let focused;
|
|
9
9
|
$:
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<script>import Autocomplete from "../../../components/simple/forms/Autocomplete.svelte";
|
|
4
4
|
import debounceStore from "../../../stores/debounce";
|
|
5
5
|
import { writable } from "svelte/store";
|
|
6
|
-
export let items = [], values = [], multiple = false, searcher, placeholder = void 0, searchThreshold = 2, debounceTimeout = 500, searching = false, search = false, searchText = void 0, maxVisibleChips = void 0, menuOpened = false, mobileDrawer = false, closeOnSelect = false, disabled = false;
|
|
6
|
+
export let items = [], values = [], multiple = false, searcher, placeholder = void 0, searchThreshold = 2, debounceTimeout = 500, searching = false, search = false, searchText = void 0, maxVisibleChips = void 0, menuOpened = false, mobileDrawer = false, closeOnSelect = false, disabled = false, menuWidth = void 0, menuAnchor = "bottom-center";
|
|
7
7
|
const searchTextValue = writable(searchText);
|
|
8
8
|
$:
|
|
9
9
|
searchTextDebounce = debounceStore(searchTextValue, debounceTimeout);
|
|
@@ -41,6 +41,8 @@ $:
|
|
|
41
41
|
bind:placeholder
|
|
42
42
|
bind:closeOnSelect
|
|
43
43
|
bind:disabled
|
|
44
|
+
{menuWidth}
|
|
45
|
+
{menuAnchor}
|
|
44
46
|
searchFunction={() => true}
|
|
45
47
|
on:change
|
|
46
48
|
>
|
|
@@ -20,6 +20,8 @@ declare const __propDef: {
|
|
|
20
20
|
mobileDrawer?: boolean | undefined;
|
|
21
21
|
closeOnSelect?: boolean | undefined;
|
|
22
22
|
disabled?: boolean | undefined;
|
|
23
|
+
menuWidth?: string | undefined | null;
|
|
24
|
+
menuAnchor?: "bottom" | "bottom-center" | "right-center" | undefined;
|
|
23
25
|
};
|
|
24
26
|
events: {
|
|
25
27
|
change: CustomEvent<any>;
|
|
@@ -38,6 +38,7 @@ declare const __propDef: {
|
|
|
38
38
|
menuBorderRadius?: string | undefined;
|
|
39
39
|
mobileDrawer?: boolean | undefined;
|
|
40
40
|
menuWidth?: string | null | undefined;
|
|
41
|
+
menuAnchor?: "bottom" | "bottom-center" | "right-center" | undefined;
|
|
41
42
|
}, "items"> | undefined;
|
|
42
43
|
selected?: Item[] | undefined;
|
|
43
44
|
items?: Item[] | undefined;
|
|
@@ -38,18 +38,12 @@ onMount(() => {
|
|
|
38
38
|
tableContainer.addEventListener("scroll", setReachedBottomOrTop);
|
|
39
39
|
hideScrollbar = tableContainer.scrollHeight > tableContainer.clientHeight;
|
|
40
40
|
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" }]) {
|
|
41
|
-
let th;
|
|
42
|
-
if (head.value == "non-resizable" || head.value == "customize-headers") {
|
|
43
|
-
th = document.getElementsByClassName(head.value).item(0);
|
|
44
|
-
} else {
|
|
45
|
-
th = document.getElementById(head.value);
|
|
46
|
-
}
|
|
41
|
+
let th = headersHTML[head.value];
|
|
47
42
|
if (!!th) {
|
|
48
43
|
resizeHeader(th, head);
|
|
49
44
|
}
|
|
50
45
|
}
|
|
51
|
-
|
|
52
|
-
table.classList.add("dynamic-resizable");
|
|
46
|
+
tableHTML.classList.add("dynamic-resizable");
|
|
53
47
|
resizeObserver = new ResizeObserver(() => {
|
|
54
48
|
updateRemainingWidth();
|
|
55
49
|
updateHeaderHeight();
|
|
@@ -106,8 +100,8 @@ const [send, receive] = crossfade({
|
|
|
106
100
|
let clazz = {};
|
|
107
101
|
export { clazz as class };
|
|
108
102
|
const dispatch = createEventDispatcher();
|
|
109
|
-
export let headers = [], headersToShowInTable = headers, subHeaders = [], customizeHeaders = false, rows = [], sortedBy = void 0, sortDirection = "asc", cellEdit = false, lang = "en", dateLocale = void 0, noItemsText = lang == "en" ? "No items to show" : "Nessun elemento da visualizzare", showSelect = false, showActions = true, selectMode = "single", selectedItems = [], unselectedItems = [], selectedAll = false, showExpand = false, loading = false, disabled = false, filters = [], searchBarColumns = void 0, 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 = void 0, renderedRowsNumber = 100, sectionRowsNumber = 20, sectionThreshold = 2, backwardThresholdPixel = 100, forwardThresholdPixel = 100, uniqueKey = "id", numberOfResultsVisible = false, endLineVisible = false, resizableColumns = false, resizedColumnSizeWithPadding = {}, dynamicFilters = true;
|
|
110
|
-
let openCellEditor = false, cellEditorActivator, cellEditorContainer, menuElementCellEditor, menuElementQuickFilters, cellEditorInfoActive, saveEditDisabled = false, searchBarInput = void 0, openQuickFilter = false, quickFilterActivator, quickFilterActive, globalBuilder = new FilterBuilder(), calendarOpened = false, calendarOpened2 = false, selectedIndexes = [], cellEditorIndexRow, cellEditorIndexHeader, cellEditorSubItem, currentSectionNumber = 0, tableBody, tableContainer, userScrolling = true, reachedBottom = false, reachedTop = false, resizing = false, remainingWidth = 0, hideScrollbar = false, sortModify, mainHeader, resizeObserver;
|
|
103
|
+
export let headers = [], headersToShowInTable = headers, subHeaders = [], customizeHeaders = false, rows = [], sortedBy = void 0, sortDirection = "asc", cellEdit = false, lang = "en", dateLocale = void 0, noItemsText = lang == "en" ? "No items to show" : "Nessun elemento da visualizzare", showSelect = false, showActions = true, selectMode = "single", selectedItems = [], unselectedItems = [], selectedAll = false, showExpand = false, loading = false, disabled = false, filters = [], searchBarColumns = void 0, 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 = void 0, renderedRowsNumber = 100, sectionRowsNumber = 20, sectionThreshold = 2, backwardThresholdPixel = 100, forwardThresholdPixel = 100, uniqueKey = "id", numberOfResultsVisible = false, endLineVisible = false, resizableColumns = false, resizedColumnSizeWithPadding = {}, dynamicFilters = true, useSelectedItemsOnly = false;
|
|
104
|
+
let openCellEditor = false, cellEditorActivator, cellEditorContainer, menuElementCellEditor, menuElementQuickFilters, cellEditorInfoActive, saveEditDisabled = false, searchBarInput = void 0, openQuickFilter = false, quickFilterActivator, quickFilterActive, globalBuilder = new FilterBuilder(), calendarOpened = false, calendarOpened2 = false, selectedIndexes = [], cellEditorIndexRow, cellEditorIndexHeader, cellEditorSubItem, currentSectionNumber = 0, tableBody, tableContainer, tableHTML, headersHTML = {}, userScrolling = true, reachedBottom = false, reachedTop = false, resizing = false, remainingWidth = 0, hideScrollbar = false, sortModify, mainHeader, resizeObserver, ignoreSelectAll = rows.length == totalRows && useSelectedItemsOnly;
|
|
111
105
|
const DEFAULT_MIN_WIDTH_PX = 100, DEFAULT_MAX_WIDTH_PX = 400;
|
|
112
106
|
$:
|
|
113
107
|
totalSections = (totalRows - renderedRowsNumber) / sectionRowsNumber;
|
|
@@ -223,7 +217,7 @@ function handleCancelClick() {
|
|
|
223
217
|
}
|
|
224
218
|
function handleSelect(item, shiftKeyPressed) {
|
|
225
219
|
let index = -1;
|
|
226
|
-
if (selectedAll) {
|
|
220
|
+
if (selectedAll && !ignoreSelectAll) {
|
|
227
221
|
index = unselectedItems.findIndex((i) => i[uniqueKey] == item[uniqueKey]);
|
|
228
222
|
} else {
|
|
229
223
|
index = selectedItems.findIndex((i) => i[uniqueKey] == item[uniqueKey]);
|
|
@@ -242,7 +236,7 @@ function handleSelect(item, shiftKeyPressed) {
|
|
|
242
236
|
selectedIndex = x;
|
|
243
237
|
}
|
|
244
238
|
for (let i = lastSelectedIndex + 1; i <= selectedIndex; i++) {
|
|
245
|
-
if (selectedAll) {
|
|
239
|
+
if (selectedAll && !ignoreSelectAll) {
|
|
246
240
|
if (!unselectedItems.find((unselectedItem) => unselectedItem[uniqueKey] == rows[i].item[uniqueKey])) {
|
|
247
241
|
unselectedItems = [...unselectedItems, rows[i].item];
|
|
248
242
|
}
|
|
@@ -254,7 +248,7 @@ function handleSelect(item, shiftKeyPressed) {
|
|
|
254
248
|
}
|
|
255
249
|
}
|
|
256
250
|
} else {
|
|
257
|
-
if (selectedAll) {
|
|
251
|
+
if (selectedAll && !ignoreSelectAll) {
|
|
258
252
|
unselectedItems = [...unselectedItems, item];
|
|
259
253
|
} else {
|
|
260
254
|
selectedItems = [...selectedItems, item];
|
|
@@ -263,7 +257,7 @@ function handleSelect(item, shiftKeyPressed) {
|
|
|
263
257
|
}
|
|
264
258
|
}
|
|
265
259
|
} else {
|
|
266
|
-
if (selectedAll) {
|
|
260
|
+
if (selectedAll && !ignoreSelectAll) {
|
|
267
261
|
unselectedItems = unselectedItems.filter((i) => i[uniqueKey] != item[uniqueKey]);
|
|
268
262
|
} else {
|
|
269
263
|
selectedItems = selectedItems.filter((i) => i[uniqueKey] != item[uniqueKey]);
|
|
@@ -273,7 +267,11 @@ function handleSelect(item, shiftKeyPressed) {
|
|
|
273
267
|
}
|
|
274
268
|
function handleSelectAll() {
|
|
275
269
|
if (selectMode == "multiple") {
|
|
276
|
-
|
|
270
|
+
if (!selectedAll && ignoreSelectAll) {
|
|
271
|
+
selectedItems = rows.map((r) => r.item);
|
|
272
|
+
} else {
|
|
273
|
+
selectedItems = [];
|
|
274
|
+
}
|
|
277
275
|
selectedIndexes = [];
|
|
278
276
|
unselectedItems = [];
|
|
279
277
|
selectedAll = !selectedAll;
|
|
@@ -760,14 +758,14 @@ async function updateRemainingWidth() {
|
|
|
760
758
|
const containerWidth = tableContainer?.getBoundingClientRect().width - 30;
|
|
761
759
|
if (containerWidth) {
|
|
762
760
|
const totalResizableWidth = headersToShowInTable.reduce((sum, head) => {
|
|
763
|
-
let th =
|
|
761
|
+
let th = headersHTML[head.value];
|
|
764
762
|
if (!!th) {
|
|
765
763
|
resizeHeader(th, head);
|
|
766
764
|
}
|
|
767
765
|
const width = th?.getBoundingClientRect().width || 0;
|
|
768
766
|
return sum + width + 1;
|
|
769
767
|
}, 0);
|
|
770
|
-
const extraStaticWidth = Array.from(mainHeader.querySelectorAll("th.non-resizable, th.
|
|
768
|
+
const extraStaticWidth = Array.from(mainHeader.querySelectorAll("th.non-resizable, th.customize-headers")).reduce((sum, th) => sum + th.getBoundingClientRect().width + 1, 0);
|
|
771
769
|
remainingWidth = Math.max(0, containerWidth - totalResizableWidth - extraStaticWidth);
|
|
772
770
|
}
|
|
773
771
|
}
|
|
@@ -979,7 +977,7 @@ function resizeHeader(th, header) {
|
|
|
979
977
|
hasMore={currentSectionNumber > 0 && userScrolling}
|
|
980
978
|
direction='backward'
|
|
981
979
|
/>
|
|
982
|
-
<table style="display: table;" class="dynamic-table">
|
|
980
|
+
<table style="display: table;" class="dynamic-table" bind:this={tableHTML}>
|
|
983
981
|
<thead class="table-header" bind:this={mainHeader}>
|
|
984
982
|
<tr>
|
|
985
983
|
{#if !!showSelect && !showExpand && rows.length > 0}
|
|
@@ -988,6 +986,7 @@ function resizeHeader(th, header) {
|
|
|
988
986
|
style:min-width="30px"
|
|
989
987
|
style:text-align="center"
|
|
990
988
|
class="non-resizable"
|
|
989
|
+
bind:this={headersHTML['non-resizable']}
|
|
991
990
|
>
|
|
992
991
|
{#if selectMode === "multiple"}
|
|
993
992
|
<Checkbox
|
|
@@ -1005,6 +1004,7 @@ function resizeHeader(th, header) {
|
|
|
1005
1004
|
style:max-width="60px"
|
|
1006
1005
|
style:text-align="center"
|
|
1007
1006
|
class="non-resizable"
|
|
1007
|
+
bind:this={headersHTML['non-resizable']}
|
|
1008
1008
|
/>
|
|
1009
1009
|
{/if}
|
|
1010
1010
|
{#each headersToShowInTable as head, index}
|
|
@@ -1014,7 +1014,7 @@ function resizeHeader(th, header) {
|
|
|
1014
1014
|
style:max-width={head.maxWidth}
|
|
1015
1015
|
class:sortable={head.sortable}
|
|
1016
1016
|
on:click={() => handleHeaderClick(head)}
|
|
1017
|
-
|
|
1017
|
+
bind:this={headersHTML[head.value]}
|
|
1018
1018
|
>
|
|
1019
1019
|
{#if resizableColumns}
|
|
1020
1020
|
<div class="resizer" use:resize></div>
|
|
@@ -1060,7 +1060,7 @@ function resizeHeader(th, header) {
|
|
|
1060
1060
|
</slot>
|
|
1061
1061
|
</th>
|
|
1062
1062
|
{/each}
|
|
1063
|
-
{#if remainingWidth
|
|
1063
|
+
{#if remainingWidth}
|
|
1064
1064
|
<th
|
|
1065
1065
|
style:width={remainingWidth + 'px'}
|
|
1066
1066
|
class="filler"
|
|
@@ -1071,6 +1071,7 @@ function resizeHeader(th, header) {
|
|
|
1071
1071
|
<th
|
|
1072
1072
|
style:text-align="center"
|
|
1073
1073
|
class="customize-headers"
|
|
1074
|
+
bind:this={headersHTML['customize-headers']}
|
|
1074
1075
|
>
|
|
1075
1076
|
{#if customizeHeaders}
|
|
1076
1077
|
<div style="display: flex; justify-content: start;">
|
|
@@ -1129,7 +1130,7 @@ function resizeHeader(th, header) {
|
|
|
1129
1130
|
: 'var(--dynamic-table-row-disabled-background-color, var(--dynamic-table-default-row-disabled-background-color))'
|
|
1130
1131
|
: expandedRows.findIndex(r => r.item[uniqueKey] == row.item[uniqueKey]) != -1
|
|
1131
1132
|
? 'var(--dynamic-table-expanded-row-background-color, var(--dynamic-table-default-expanded-row-background-color))'
|
|
1132
|
-
: selectedAll
|
|
1133
|
+
: selectedAll && !ignoreSelectAll
|
|
1133
1134
|
? !unselectedItems.find(i => i[uniqueKey] == row.item[uniqueKey])
|
|
1134
1135
|
? 'var(--dynamic-table-selected-row-background-color, var(--dynamic-table-default-selected-row-background-color))'
|
|
1135
1136
|
: ''
|
|
@@ -1145,7 +1146,7 @@ function resizeHeader(th, header) {
|
|
|
1145
1146
|
<Checkbox
|
|
1146
1147
|
id={row.item[uniqueKey]}
|
|
1147
1148
|
value={
|
|
1148
|
-
selectedAll ?
|
|
1149
|
+
selectedAll && !ignoreSelectAll ?
|
|
1149
1150
|
unselectedItems.findIndex(
|
|
1150
1151
|
(i) => i[uniqueKey] == row.item[uniqueKey]
|
|
1151
1152
|
) == -1 :
|
|
@@ -1221,7 +1222,7 @@ function resizeHeader(th, header) {
|
|
|
1221
1222
|
{/if}
|
|
1222
1223
|
</td>
|
|
1223
1224
|
{/each}
|
|
1224
|
-
{#if remainingWidth
|
|
1225
|
+
{#if remainingWidth}
|
|
1225
1226
|
<td/>
|
|
1226
1227
|
{/if}
|
|
1227
1228
|
{#if $$slots.rowActions || $$slots.append}
|
|
@@ -1835,30 +1836,17 @@ function resizeHeader(th, header) {
|
|
|
1835
1836
|
width: fit-content;
|
|
1836
1837
|
}
|
|
1837
1838
|
|
|
1838
|
-
.slot-append {
|
|
1839
|
-
width: 1px;
|
|
1840
|
-
min-width: unset;
|
|
1841
|
-
box-sizing: content-box;
|
|
1842
|
-
}
|
|
1843
|
-
|
|
1844
1839
|
.table-header {
|
|
1845
1840
|
position: sticky;
|
|
1846
1841
|
top: 0;
|
|
1847
1842
|
z-index: 2;
|
|
1843
|
+
top: -1px;
|
|
1848
1844
|
height: var(
|
|
1849
1845
|
--dynamic-table-header-height,
|
|
1850
1846
|
var(--dynamic-table-default-header-height)
|
|
1851
1847
|
);
|
|
1852
1848
|
}
|
|
1853
1849
|
|
|
1854
|
-
@media not all and (min-resolution:.001dpcm) {
|
|
1855
|
-
.table-header {
|
|
1856
|
-
position: sticky;
|
|
1857
|
-
top: -2px;
|
|
1858
|
-
z-index: 2;
|
|
1859
|
-
}
|
|
1860
|
-
}
|
|
1861
|
-
|
|
1862
1850
|
.table-subheader {
|
|
1863
1851
|
top: var(--main-header-height);
|
|
1864
1852
|
z-index: 1;
|
|
@@ -5,7 +5,7 @@ import "./Autocomplete.css";
|
|
|
5
5
|
import { scrollInMenu } from "../common/scroller";
|
|
6
6
|
let clazz = {};
|
|
7
7
|
export { clazz as class };
|
|
8
|
-
export let values = [], items, searchFunction = void 0, multiple = false, disabled = false, mandatory = false, placeholder = "", width = "auto", height = "auto", maxWidth = void 0, minWidth = "200px", openingId = "autocomplete-menu", searchText = void 0, maxVisibleChips = void 0, menuOpened = false, closeOnSelect = !multiple, emptySearchTextOnMenuClose = true, menuBoxShadow = "rgb(var(--global-color-background-300), .5) 0px 2px 4px", menuBorderRadius = "5px", mobileDrawer = false, menuWidth = void 0;
|
|
8
|
+
export let values = [], items, searchFunction = void 0, multiple = false, disabled = false, mandatory = false, placeholder = "", width = "auto", height = "auto", maxWidth = void 0, minWidth = "200px", openingId = "autocomplete-menu", searchText = void 0, maxVisibleChips = void 0, menuOpened = false, closeOnSelect = !multiple, emptySearchTextOnMenuClose = true, menuBoxShadow = "rgb(var(--global-color-background-300), .5) 0px 2px 4px", menuBorderRadius = "5px", mobileDrawer = false, menuWidth = void 0, menuAnchor = "bottom-center";
|
|
9
9
|
let dispatch = createEventDispatcher();
|
|
10
10
|
function select(item) {
|
|
11
11
|
if (disabled)
|
|
@@ -232,7 +232,7 @@ import MenuOrDrawer from "../../composed/common/MenuOrDrawer.svelte";
|
|
|
232
232
|
_boxShadow={menuBoxShadow}
|
|
233
233
|
_borderRadius={menuBorderRadius}
|
|
234
234
|
bind:open={menuOpened}
|
|
235
|
-
anchor=
|
|
235
|
+
anchor={menuAnchor}
|
|
236
236
|
closeOnClickOutside
|
|
237
237
|
bind:refreshPosition
|
|
238
238
|
bind:menuElement
|
|
@@ -36,6 +36,7 @@ declare const __propDef: {
|
|
|
36
36
|
menuBorderRadius?: string | undefined;
|
|
37
37
|
mobileDrawer?: boolean | undefined;
|
|
38
38
|
menuWidth?: string | undefined | null;
|
|
39
|
+
menuAnchor?: "bottom" | "bottom-center" | "right-center" | undefined;
|
|
39
40
|
};
|
|
40
41
|
events: {
|
|
41
42
|
focus: FocusEvent;
|