@likable-hair/svelte 3.3.18 → 3.3.19

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.
@@ -52,6 +52,7 @@ onMount(() => {
52
52
  table.classList.add("dynamic-resizable");
53
53
  resizeObserver = new ResizeObserver(() => {
54
54
  updateRemainingWidth();
55
+ updateHeaderHeight();
55
56
  });
56
57
  resizeObserver.observe(tableContainer);
57
58
  return () => {
@@ -1059,7 +1060,7 @@ function resizeHeader(th, header) {
1059
1060
  </slot>
1060
1061
  </th>
1061
1062
  {/each}
1062
- {#if remainingWidth && (customizeHeaders || resizableColumns)}
1063
+ {#if remainingWidth && (customizeHeaders || $$slots.rowActions || $$slots.append || resizableColumns)}
1063
1064
  <th
1064
1065
  style:width={remainingWidth + 'px'}
1065
1066
  class="filler"
@@ -1220,7 +1221,7 @@ function resizeHeader(th, header) {
1220
1221
  {/if}
1221
1222
  </td>
1222
1223
  {/each}
1223
- {#if remainingWidth && (customizeHeaders || resizableColumns)}
1224
+ {#if remainingWidth && (customizeHeaders || $$slots.rowActions || $$slots.append || resizableColumns)}
1224
1225
  <td/>
1225
1226
  {/if}
1226
1227
  {#if $$slots.rowActions || $$slots.append}
@@ -3,34 +3,21 @@ import Icon from "../../simple/media/Icon.svelte";
3
3
  import Paginator from "../../simple/lists/Paginator.svelte";
4
4
  import Dropdown from "../forms/Dropdown.svelte";
5
5
  import { createEventDispatcher } from "svelte";
6
- import "./PaginatedTable.css";
7
6
  </script>
8
7
 
9
8
  <script>import Filters from "../search/Filters.svelte";
10
9
  import SearchBar from "../search/SearchBar.svelte";
11
10
  import Converter from "../../../utils/filters/filters";
12
- import CircularLoader from "../../simple/loaders/CircularLoader.svelte";
13
- import { DateTime } from "luxon";
14
- import { FilterBuilder } from "../../..";
15
- import Menu from "../../simple/common/Menu.svelte";
16
- import LabelAndTextField from "../forms/LabelAndTextField.svelte";
17
- import Autocomplete from "../../simple/forms/Autocomplete.svelte";
18
- import Chip from "../../simple/navigation/Chip.svelte";
19
- import FlagIcon from "../../simple/media/FlagIcon.svelte";
20
- import CountriesAutocomplete from "../forms/CountriesAutocomplete.svelte";
21
- import DatePickerTextField from "../forms/DatePickerTextField.svelte";
22
- import ConfirmOrCancelButtons from "../forms/ConfirmOrCancelButtons.svelte";
23
- import Divider from "../../simple/common/Divider.svelte";
24
11
  let clazz = {};
25
12
  export { clazz as class };
26
13
  export let headers = [], items = [], sortedBy = void 0, sortDirection = void 0, page = 1, maxPage = void 0, rowsPerPageOptions = [
27
14
  { label: "20", value: 20 },
28
15
  { label: "50", value: 50 },
29
16
  { label: "100", value: 100 }
30
- ], hideRowsPerPage = false, totalElements = void 0, rowsPerPage = 20, filters = [], searchBarColumns = void 0, searchBarVisible = true, searchBarPlaceholder = "Type something to search...", lang = "en", editFilterMode = "one-edit", showActiveFilters = true, resizableColumns = false, resizedColumnSizeWithPadding = {}, pointerOnRowHover = void 0, doubleClickActive = false, doubleClickDelay = 250, quickFilters = [];
17
+ ], hideRowsPerPage = false, totalElements = void 0, rowsPerPage = 20, filters = [], searchBarColumns = void 0, searchBarVisible = true, searchBarPlaceholder = "Type something to search...", lang = "en", editFilterMode = "one-edit", showActiveFilters = true, resizableColumns = false, resizedColumnSizeWithPadding = {}, pointerOnRowHover = void 0, doubleClickActive = false, doubleClickDelay = 250;
31
18
  export let calculateRowStyles = void 0;
32
19
  export let calculateRowClasses = void 0;
33
- let searchBarInput, searchText = void 0, sortModify, menuElementQuickFilters, saveEditDisabled = false, calendarOpened = false, calendarOpened2 = false, loading = false, quickFilterActive, openQuickFilter = false, quickFiltersVisible = true, quickFilterActivator = void 0, globalBuilder = new FilterBuilder();
20
+ let searchBarInput, searchText = void 0, sortModify;
34
21
  let dispatch = createEventDispatcher();
35
22
  let rowsPerPageSelection = [];
36
23
  $:
@@ -93,266 +80,6 @@ function buildFilters(params) {
93
80
  }
94
81
  return builder;
95
82
  }
96
- function handleCancelClick() {
97
- quickFilterActivator = void 0;
98
- openQuickFilter = false;
99
- }
100
- function handleQuickFilterClick(mouseEvent, quickFilter) {
101
- handleCancelClick();
102
- setTimeout(() => {
103
- if (quickFilter) {
104
- if (!quickFilterActivator) {
105
- let target = mouseEvent.target;
106
- quickFilterActivator = target;
107
- quickFilterActive = quickFilter;
108
- openQuickFilter = !openQuickFilter;
109
- }
110
- }
111
- }, 300);
112
- }
113
- function setQuickFilterMissingValue(quickFilter) {
114
- if (quickFilter.type.key == "custom") {
115
- quickFilter.type.missingValue = true;
116
- quickFilter.type.value = void 0;
117
- } else if (quickFilter.type.key == "multi-select") {
118
- quickFilter.type.missingValue = true;
119
- quickFilter.type.values = [];
120
- } else if (quickFilter.type.key == "string") {
121
- quickFilter.type.missingValue = true;
122
- quickFilter.type.value = void 0;
123
- } else if (quickFilter.type.key == "country") {
124
- quickFilter.type.missingValue = true;
125
- quickFilter.type.selected = void 0;
126
- } else if (quickFilter.type.key == "number") {
127
- quickFilter.type.missingValue = true;
128
- quickFilter.type.value = void 0;
129
- }
130
- handleApplyClick(quickFilter);
131
- }
132
- function setQuickFilterValue(quickFilter, value) {
133
- if (quickFilter.type.key == "custom") {
134
- quickFilter.type.value = value;
135
- } else if (quickFilter.type.key == "boolean") {
136
- quickFilter.type.value = value;
137
- }
138
- handleApplyClick(quickFilter);
139
- }
140
- function handleApplyClick(quickFilter, dispatchCustomFilterClick = false) {
141
- if (quickFilter.type.key == "custom" && dispatchCustomFilterClick) {
142
- dispatch("applyCustomQuickFilter", { quickFilter, setQuickFilterValue });
143
- } else {
144
- quickFilter.active = true;
145
- quickFilters = quickFilters;
146
- globalBuilder = quickFilterBuilder(globalBuilder, quickFilter);
147
- handleFiltersChange();
148
- quickFilterActivator = void 0;
149
- openQuickFilter = false;
150
- }
151
- }
152
- function quickFilterBuilder(builder, quickFilter, clearPreaviousValue = true) {
153
- if (quickFilter.type.key == "custom") {
154
- let value = quickFilter.type.value, missingValue = quickFilter.type.missingValue;
155
- if (clearPreaviousValue) {
156
- builder = handleClearQuickFilter(quickFilter, false);
157
- }
158
- quickFilter.type.value = value;
159
- quickFilter.type.missingValue = missingValue;
160
- builder = quickFilter.type.modify({
161
- builder,
162
- value: { value, missingValue }
163
- });
164
- } else if (quickFilter.type.key == "string") {
165
- let value = quickFilter.type.value, missingValue = quickFilter.type.missingValue;
166
- if (clearPreaviousValue) {
167
- builder = handleClearQuickFilter(quickFilter, false);
168
- }
169
- quickFilter.type.value = value;
170
- quickFilter.type.missingValue = missingValue;
171
- if (quickFilter.type.modify) {
172
- builder = quickFilter.type.modify({
173
- builder,
174
- value: { value, missingValue }
175
- });
176
- }
177
- if (!!quickFilter.column) {
178
- if (missingValue) {
179
- builder.whereNull(quickFilter.column);
180
- } else if (!!value) {
181
- builder.where(
182
- quickFilter.column,
183
- quickFilter.type.mode ?? "equal",
184
- value
185
- );
186
- }
187
- }
188
- } else if (quickFilter.type.key == "boolean") {
189
- let value = quickFilter.type.value;
190
- if (clearPreaviousValue) {
191
- builder = handleClearQuickFilter(quickFilter, false);
192
- }
193
- quickFilter.type.value = value;
194
- if (quickFilter.type.modify) {
195
- builder = quickFilter.type.modify({
196
- builder,
197
- value
198
- });
199
- }
200
- if (!!quickFilter.column && value != void 0) {
201
- builder.where(quickFilter.column, value);
202
- }
203
- } else if (quickFilter.type.key == "country") {
204
- let value = quickFilter.type.selected, missingValue = quickFilter.type.missingValue;
205
- if (clearPreaviousValue) {
206
- builder = handleClearQuickFilter(quickFilter, false);
207
- }
208
- quickFilter.type.selected = value;
209
- quickFilter.type.missingValue = missingValue;
210
- const values = value?.map((item) => item.value);
211
- if (quickFilter.type.modify) {
212
- builder = quickFilter.type.modify({
213
- builder,
214
- value: { values, missingValue }
215
- });
216
- }
217
- if (!!quickFilter.column) {
218
- if (missingValue) {
219
- builder.whereNull(quickFilter.column);
220
- } else if (!!values && values.length > 0) {
221
- builder.whereIn(quickFilter.column, values);
222
- }
223
- }
224
- } else if (quickFilter.type.key == "date") {
225
- let from = quickFilter.type.from, to = quickFilter.type.to;
226
- if (clearPreaviousValue) {
227
- builder = handleClearQuickFilter(quickFilter, false);
228
- }
229
- quickFilter.type.from = from;
230
- quickFilter.type.to = to;
231
- if (quickFilter.type.modify) {
232
- builder = quickFilter.type.modify({
233
- builder,
234
- value: { from, to }
235
- });
236
- } else if (!!quickFilter.column) {
237
- if (!!from) {
238
- builder.where(
239
- quickFilter.column,
240
- ">=",
241
- DateTime.fromJSDate(from).setLocale("it-IT").startOf("day").toString()
242
- );
243
- }
244
- if (!!to) {
245
- builder.where(
246
- quickFilter.column,
247
- "<=",
248
- DateTime.fromJSDate(to).setLocale("it-IT").endOf("day").toString()
249
- );
250
- }
251
- }
252
- } else if (quickFilter.type.key == "multi-select") {
253
- let value = quickFilter.type.values, missingValue = quickFilter.type.missingValue;
254
- if (clearPreaviousValue) {
255
- builder = handleClearQuickFilter(quickFilter, false);
256
- }
257
- quickFilter.type.values = value;
258
- quickFilter.type.missingValue = missingValue;
259
- const values = value.map((item) => item.value);
260
- if (quickFilter.type.modify) {
261
- builder = quickFilter.type.modify({
262
- builder,
263
- value: { values, missingValue }
264
- });
265
- } else if (quickFilter.column) {
266
- if (missingValue) {
267
- builder.whereNull(quickFilter.column);
268
- } else if (values.length > 0) {
269
- builder.whereIn(quickFilter.column, values);
270
- }
271
- }
272
- } else if (quickFilter.type.key == "number") {
273
- let value = quickFilter.type.value, missingValue = quickFilter.type.missingValue;
274
- if (clearPreaviousValue) {
275
- builder = handleClearQuickFilter(quickFilter, false);
276
- }
277
- quickFilter.type.value = value;
278
- quickFilter.type.missingValue = missingValue;
279
- if (quickFilter.type.modify) {
280
- builder = quickFilter.type.modify({
281
- builder,
282
- value: { value, missingValue }
283
- });
284
- }
285
- if (quickFilter.column) {
286
- if (missingValue) {
287
- builder.whereNull(quickFilter.column);
288
- } else if (!!value) {
289
- builder.where(quickFilter.column, value);
290
- }
291
- }
292
- }
293
- return builder;
294
- }
295
- function handleClearQuickFilter(quickFilter, dispatchFiltersChange = true) {
296
- if (quickFilter.type.key == "custom") {
297
- quickFilter.type.value = void 0;
298
- quickFilter.type.missingValue = void 0;
299
- if (dispatchFiltersChange) {
300
- dispatch("removeCustomQuickFilter", { quickFilter });
301
- }
302
- } else if (quickFilter.type.key == "string") {
303
- quickFilter.type.value = void 0;
304
- quickFilter.type.missingValue = void 0;
305
- } else if (quickFilter.type.key == "number") {
306
- quickFilter.type.value = void 0;
307
- quickFilter.type.missingValue = void 0;
308
- } else if (quickFilter.type.key == "boolean") {
309
- quickFilter.type.value = void 0;
310
- } else if (quickFilter.type.key == "country") {
311
- quickFilter.type.selected = void 0;
312
- quickFilter.type.missingValue = void 0;
313
- } else if (quickFilter.type.key == "date") {
314
- quickFilter.type.from = void 0;
315
- quickFilter.type.to = void 0;
316
- } else if (quickFilter.type.key == "multi-select") {
317
- quickFilter.type.values = [];
318
- quickFilter.type.missingValue = false;
319
- quickFilter.type.missingValue = void 0;
320
- }
321
- if (dispatchFiltersChange) {
322
- quickFilter.active = false;
323
- }
324
- globalBuilder = searchTextBuilder(searchText);
325
- for (let i = 0; i < quickFilters.length; i++) {
326
- if (quickFilters[i].active) {
327
- globalBuilder = quickFilterBuilder(
328
- globalBuilder,
329
- quickFilters[i],
330
- false
331
- );
332
- }
333
- }
334
- if (dispatchFiltersChange) {
335
- quickFilters = quickFilters;
336
- handleFiltersChange();
337
- }
338
- return globalBuilder;
339
- }
340
- function searchTextBuilder(searchText2) {
341
- let builder;
342
- let converter = new Converter();
343
- builder = converter.createBuilder({
344
- filters: filters || []
345
- });
346
- if (!!searchText2 && !!searchBarColumns && searchBarColumns.length > 0) {
347
- builder.where((b) => {
348
- b.where(searchBarColumns[0], "ilike", "%" + searchText2 + "%");
349
- for (let i = 1; i < searchBarColumns.length; i += 1) {
350
- b.orWhere(searchBarColumns[i], "ilike", "%" + searchText2 + "%");
351
- }
352
- });
353
- }
354
- return builder;
355
- }
356
83
  </script>
357
84
 
358
85
  <div class="paginated-table">
@@ -392,54 +119,6 @@ function searchTextBuilder(searchText2) {
392
119
  </svelte:fragment>
393
120
  </Filters>
394
121
  </div>
395
- <div class="quick-filters-results-container">
396
- <div class="quick-filters">
397
- {#if !!quickFilters && quickFilters.length > 0 && quickFiltersVisible}
398
- {#each quickFilters as quickFilter}
399
- <div
400
- class={quickFilter.active ? "active-quick-filters" : "non-active-quick-filters"}
401
- >
402
- <button
403
- on:click={(e) => {
404
- handleQuickFilterClick(e, quickFilter);
405
- }}
406
- >
407
- <div class="quick-filter-icon">
408
- <Icon name={quickFilter.icon} --icon-size="20px" />
409
- {quickFilter.title}
410
- </div>
411
- </button>
412
- {#if quickFilter.active}
413
- <div style:padding-top="1px" style:padding-right="3px">
414
- <Icon
415
- name="mdi-close-circle"
416
- click
417
- --icon-size="14px"
418
- on:click={() => {
419
- handleClearQuickFilter(quickFilter);
420
- }}
421
- />
422
- </div>
423
- {/if}
424
- </div>
425
- {/each}
426
- {/if}
427
- </div>
428
- {#if totalElements}
429
- <div class='results-number'>
430
- { lang == 'en' ? 'Results: ' : 'Risultati: '}
431
- {#if !loading && !!items}
432
- {totalElements || items.length}
433
- {:else}
434
- <CircularLoader
435
- {loading}
436
- --circular-loader-height='10px'
437
- ></CircularLoader>
438
- {/if}
439
- </div>
440
- {/if}
441
- </div>
442
-
443
122
  <SimpleTable
444
123
  bind:headers
445
124
  bind:class={clazz.simpleTable}
@@ -539,261 +218,6 @@ function searchTextBuilder(searchText2) {
539
218
  </div>
540
219
  </div>
541
220
 
542
-
543
- <Menu
544
- bind:open={openQuickFilter}
545
- activator={quickFilterActivator}
546
- bind:menuElement={menuElementQuickFilters}
547
- anchor="bottom"
548
- openingId="quick-filter"
549
- closeOnClickOutside
550
- >
551
- <div
552
- class="quick-filter-container"
553
- >
554
- <div style:grid-column="1 / 3">
555
- {#if quickFilterActive.type.key == 'custom'}
556
- <slot name="custom-quick-filter" quickFilter={quickFilterActive} {setQuickFilterMissingValue}>
557
- </slot>
558
- {:else if quickFilterActive.type.key === "string"}
559
- <div class="space-between" style="font-weight: 500;">
560
- {quickFilterActive.title}
561
- {#if !!quickFilterActive.type.missingLabel}
562
- <button
563
- on:click={() =>
564
- setQuickFilterMissingValue(quickFilterActive)}
565
- >{quickFilterActive.type.missingLabel}</button
566
- >
567
- {/if}
568
- </div>
569
- <LabelAndTextField
570
- description={quickFilterActive.description}
571
- name={quickFilterActive.title}
572
- info={quickFilterActive.info}
573
- type="text"
574
- bind:value={quickFilterActive.type.value}
575
- --simple-textfield-border-radius= 0.5rem
576
- --simple-textfield-background-color= transparent
577
- --simple-textfield-box-shadow= 'inset 0 0 0 1px rgb(var(--global-color-background-500))'
578
- --simple-textfield-focus-box-shadow='inset 0 0 0 2px rgb(var(--global-color-primary-500))'
579
- />
580
- {:else if quickFilterActive.type.key === "number"}
581
- <div class="space-between" style="font-weight: 500; margin-bottom: 8px;">
582
- {quickFilterActive.title}
583
- {#if !!quickFilterActive.type.missingLabel}
584
- <button
585
- on:click={() =>
586
- setQuickFilterMissingValue(quickFilterActive)}
587
- >{quickFilterActive.type.missingLabel}</button
588
- >
589
- {/if}
590
- </div>
591
- <LabelAndTextField
592
- description={quickFilterActive.description}
593
- name={quickFilterActive.title}
594
- info={quickFilterActive.info}
595
- type="number"
596
- error={saveEditDisabled}
597
- bind:value={quickFilterActive.type.value}
598
- --simple-textfield-border-radius= 0.5rem
599
- --simple-textfield-background-color= transparent
600
- --simple-textfield-box-shadow= 'inset 0 0 0 1px rgb(var(--global-color-background-500))'
601
- --simple-textfield-focus-box-shadow='inset 0 0 0 2px rgb(var(--global-color-primary-500))'
602
- />
603
- {:else if quickFilterActive.type.key === "multi-select"}
604
- <div class="space-between" style="font-weight: 500; margin-bottom: 8px;">
605
- {quickFilterActive.title}
606
- {#if !!quickFilterActive.type.missingLabel}
607
- <button
608
- on:click={() =>
609
- setQuickFilterMissingValue(quickFilterActive)}
610
- >{quickFilterActive.type.missingLabel}</button
611
- >
612
- {/if}
613
- </div>
614
- <div on:click|stopPropagation role="presentation" tabindex="-1">
615
- <Autocomplete
616
- multiple
617
- items={quickFilterActive.type.items}
618
- bind:values={quickFilterActive.type.values}
619
- --autocomplete-border-radius= 0.5rem
620
- --autocomplete-border="1px solid rgb(var(--global-color-background-500))"
621
- --autocomplete-focus-box-shadow="0 0 0 2px rgb(var(--global-color-primary-500))"
622
- >
623
- <svelte:fragment slot="selection" let:selection let:unselect>
624
- <slot name="selection" {selection} {unselect}>
625
- <div tabindex="-1">
626
- <Chip
627
- close={true}
628
- on:close={() => unselect(selection)}
629
- --chip-default-border-radius="var(--autocomplete-border-radius, var(--autocomplete-default-border-radius))"
630
- buttonTabIndex={-1}
631
- truncateText
632
- >
633
- <slot name="chip-label" {selection}>
634
- {#if !!quickFilterActive.type.countriesAlpha2 && quickFilterActive.type.countriesAlpha2.find((c) => c.value == selection.value)}
635
- <div>
636
- <FlagIcon
637
- alpha2={quickFilterActive.type.countriesAlpha2
638
- .find((c) => c.value == selection.value)
639
- ?.label?.toString()
640
- .toLowerCase() ?? ""}
641
- --flag-icon-size="16px"
642
- />
643
- </div>
644
- {/if}
645
- {selection.label}
646
- </slot>
647
- </Chip>
648
- </div>
649
- </slot>
650
- </svelte:fragment>
651
- <svelte:fragment slot="item-label" let:item>
652
- <slot name="item-label" {item}>
653
- {#if !!quickFilterActive.type.countriesAlpha2 && quickFilterActive.type.countriesAlpha2.find((c) => c.value == item.value)}
654
- <FlagIcon
655
- alpha2={quickFilterActive.type.countriesAlpha2
656
- .find((c) => c.value == item.value)
657
- ?.label?.toString()
658
- .toLowerCase() ?? ""}
659
- />
660
- {/if}
661
- {item.label}
662
- </slot>
663
- </svelte:fragment>
664
- </Autocomplete>
665
- </div>
666
- {:else if quickFilterActive.type.key === "boolean"}
667
- {#if quickFilterActive.type.params}
668
- <div class="vertical-quick-filters">
669
- <button
670
- on:click={() => setQuickFilterValue(quickFilterActive, true)}
671
- >
672
- {quickFilterActive.type.params.labelTrue}
673
- </button>
674
- <button
675
- on:click={() => setQuickFilterValue(quickFilterActive, false)}
676
- >
677
- {quickFilterActive.type.params.labelFalse}
678
- </button>
679
- <button
680
- on:click={() => setQuickFilterValue(quickFilterActive, undefined)}
681
- >
682
- {lang == 'en' ? 'All' : 'Tutti'}
683
- </button>
684
- </div>
685
- {/if}
686
- {:else if quickFilterActive.type.key === "country"}
687
- <div class="space-between" style="font-weight: 500; margin-bottom: 8px;">
688
- {quickFilterActive.title}
689
- {#if !!quickFilterActive.type.missingLabel}
690
- <button
691
- on:click={() =>
692
- setQuickFilterMissingValue(quickFilterActive)}
693
- >{quickFilterActive.type.missingLabel}</button
694
- >
695
- {/if}
696
- </div>
697
- <div on:click|stopPropagation role="presentation" tabindex="-1">
698
- <CountriesAutocomplete
699
- bind:selected={quickFilterActive.type.selected}
700
- {...((!!quickFilterActive.type.countriesOptions && quickFilterActive.type.countriesOptions.length > 0) && {
701
- items: quickFilterActive.type.countriesOptions,
702
- })}
703
- autocompleteProps={{
704
- placeholder: !!quickFilterActive.type.selected
705
- ? quickFilterActive.type.selected.length > 0
706
- ? ""
707
- : quickFilterActive.description
708
- : quickFilterActive.description,
709
- multiple: true,
710
- }}
711
- --autocomplete-border-radius= 0.5rem
712
- --autocomplete-border="1px solid rgb(var(--global-color-background-500))"
713
- --autocomplete-focus-box-shadow="0 0 0 2px rgb(var(--global-color-primary-500))"
714
- />
715
- </div>
716
- {:else if quickFilterActive.type.key === "date"}
717
- <div on:click|stopPropagation role="presentation" tabindex="-1">
718
- <div>
719
- <DatePickerTextField
720
- bind:selectedDate={quickFilterActive.type.from}
721
- placeholder={lang == 'en' ? "From" : 'Da'}
722
- --simple-textfield-width="100%"
723
- --simple-textfield-border-radius= 0.5rem
724
- --simple-textfield-background-color= transparent
725
- --simple-textfield-box-shadow= 'inset 0 0 0 1px rgb(var(--global-color-background-500))'
726
- --simple-textfield-focus-box-shadow='inset 0 0 0 2px rgb(var(--global-color-primary-500))'
727
- flipOnOverflow
728
- bind:menuOpened={calendarOpened}
729
- on:day-click={() => (calendarOpened = false)}
730
- >
731
- <svelte:fragment slot="append-inner">
732
- <Icon
733
- name="mdi-close-circle"
734
- click
735
- on:click={() => {
736
- if (
737
- !!quickFilterActive &&
738
- quickFilterActive.type.key === "date"
739
- ) {
740
- quickFilterActive.type.from = undefined;
741
- }
742
- }}
743
- />
744
- </svelte:fragment>
745
- </DatePickerTextField>
746
- </div>
747
- <div>
748
- <DatePickerTextField
749
- bind:selectedDate={quickFilterActive.type.to}
750
- placeholder={lang == 'en' ? "To" : 'A'}
751
- --simple-textfield-width="100%"
752
- --simple-textfield-border-radius= 0.5rem
753
- --simple-textfield-background-color= transparent
754
- --simple-textfield-box-shadow= 'inset 0 0 0 1px rgb(var(--global-color-background-500))'
755
- --simple-textfield-focus-box-shadow='inset 0 0 0 2px rgb(var(--global-color-primary-500))'
756
- flipOnOverflow
757
- bind:menuOpened={calendarOpened2}
758
- on:day-click={() => (calendarOpened2 = false)}
759
- >
760
- <svelte:fragment slot="append-inner">
761
- <Icon
762
- name="mdi-close-circle"
763
- click
764
- on:click={() => {
765
- if (
766
- !!quickFilterActive &&
767
- quickFilterActive.type.key === "date"
768
- ) {
769
- quickFilterActive.type.to = undefined;
770
- }
771
- }}
772
- />
773
- </svelte:fragment>
774
- </DatePickerTextField>
775
- </div>
776
- </div>
777
- {/if}
778
- </div>
779
-
780
- {#if quickFilterActive.type.key != "boolean"}
781
- <div style:margin-top="10px" style:grid-row="2" style:grid-column="1 / 3">
782
- <Divider --divider-color=rgb(var(--global-color-contrast-100)) />
783
- </div>
784
- <div style:grid-row="3" style:grid-column="2" style:margin-top="-15px">
785
- <ConfirmOrCancelButtons
786
- confirmDisable={saveEditDisabled}
787
- confirmText={lang == 'en' ? "Apply" : 'Applica'}
788
- cancelText={lang == 'en' ? "Cancel" : 'Annulla'}
789
- on:cancel-click={handleCancelClick}
790
- on:confirm-click={() => handleApplyClick(quickFilterActive, quickFilterActive.type.key == 'custom')}
791
- />
792
- </div>
793
- {/if}
794
- </div>
795
- </Menu>
796
-
797
221
  <style>
798
222
  .paginated-table {
799
223
  width: 100%;
@@ -837,64 +261,6 @@ function searchTextBuilder(searchText2) {
837
261
  );
838
262
  }
839
263
 
840
- .quick-filter-container {
841
- display: grid;
842
- grid-template-columns: 1fr 1fr;
843
- justify-content: center;
844
- align-items: center;
845
- box-shadow: 2px 2px 2px 2px rgba(0, 0, 0, 0.2);
846
- position: fixed;
847
- padding: 10px;
848
- border-radius: 10px;
849
- background-color: var(
850
- --paginated-table-quick-filter-background-color,
851
- var(--paginated-table-default-quick-filter-background-color)
852
- );
853
- }
854
-
855
- .quick-filters {
856
- display: flex;
857
- flex-direction: row;
858
- margin-bottom: 10px;
859
- }
860
-
861
- .quick-filters-results-container {
862
- display: flex;
863
- justify-content: space-between;
864
- }
865
-
866
- .vertical-quick-filters {
867
- display: flex;
868
- flex-direction: column;
869
- align-items: start;
870
- width: 130px;
871
- }
872
-
873
-
874
- .active-quick-filters {
875
- display: flex;
876
- margin-right: 15px;
877
- background-color: rgb(var(--global-color-primary-500));
878
- border-radius: 5px;
879
- width: fit-content;
880
- }
881
-
882
- .non-active-quick-filters {
883
- display: flex;
884
- margin-right: 16px;
885
- }
886
-
887
- .quick-filter-icon {
888
- display: flex;
889
- gap: 4px;
890
- margin: 0 8px;
891
- }
892
-
893
- .space-between {
894
- display: flex;
895
- justify-content: space-between;
896
- }
897
-
898
264
  @media only screen and (max-width: 768px) {
899
265
  .per-page-dropdown {
900
266
  display: none;
@@ -3,12 +3,10 @@ import SimpleTable, { type CalculateRowClasses, type CalculateRowStyles } from "
3
3
  import Paginator from "../../simple/lists/Paginator.svelte";
4
4
  import Dropdown from "../forms/Dropdown.svelte";
5
5
  import { type ComponentProps } from "svelte";
6
- import './PaginatedTable.css';
7
6
  type ArrayElement<ArrayType extends readonly unknown[]> = ArrayType extends readonly (infer ElementType)[] ? ElementType : never;
8
7
  export type Header = ArrayElement<NonNullable<ComponentProps<SimpleTable>["headers"]>>;
9
8
  import Filters from "../search/Filters.svelte";
10
9
  import type Builder from "../../../utils/filters/builder";
11
- import type { QuickFilter } from "../../../utils/filters/quickFilters";
12
10
  declare const __propDef: {
13
11
  props: {
14
12
  class?: {
@@ -38,7 +36,6 @@ declare const __propDef: {
38
36
  pointerOnRowHover?: boolean | undefined;
39
37
  doubleClickActive?: ComponentProps<SimpleTable>['doubleClickActive'];
40
38
  doubleClickDelay?: ComponentProps<SimpleTable>['doubleClickDelay'];
41
- quickFilters?: QuickFilter[] | undefined;
42
39
  calculateRowStyles?: CalculateRowStyles | undefined;
43
40
  calculateRowClasses?: CalculateRowClasses | undefined;
44
41
  };
@@ -61,7 +58,6 @@ declare const __propDef: {
61
58
  rowDoubleClick: CustomEvent<{
62
59
  item: import("../../simple/lists/SimpleTable.svelte").Item;
63
60
  }>;
64
- click: MouseEvent;
65
61
  } & {
66
62
  [evt: string]: CustomEvent<any>;
67
63
  };
@@ -98,8 +94,8 @@ declare const __propDef: {
98
94
  };
99
95
  footer: {
100
96
  hideRowsPerPage: boolean;
101
- rowsPerPageOptions: import("../../simple/forms/Autocomplete.svelte").Item[] | undefined;
102
- rowsPerPageSelection: import("../../simple/forms/Autocomplete.svelte").Item[];
97
+ rowsPerPageOptions: import("../forms/Dropdown.svelte").Item[] | undefined;
98
+ rowsPerPageSelection: import("../forms/Dropdown.svelte").Item[];
103
99
  totalElements: number | undefined;
104
100
  page: number;
105
101
  maxPage: number | undefined;
@@ -112,20 +108,6 @@ declare const __propDef: {
112
108
  rowsPerPage: number;
113
109
  totalElements: number | undefined;
114
110
  };
115
- 'custom-quick-filter': {
116
- quickFilter: QuickFilter;
117
- setQuickFilterMissingValue: (quickFilter: QuickFilter) => void;
118
- };
119
- selection: {
120
- selection: import("../../simple/forms/Autocomplete.svelte").Item;
121
- unselect: (item: import("../../simple/forms/Autocomplete.svelte").Item) => void;
122
- };
123
- 'chip-label': {
124
- selection: import("../../simple/forms/Autocomplete.svelte").Item;
125
- };
126
- 'item-label': {
127
- item: import("../../simple/forms/Autocomplete.svelte").Item;
128
- };
129
111
  };
130
112
  };
131
113
  export type PaginatedTableProps = typeof __propDef.props;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@likable-hair/svelte",
3
3
  "description": "A Svelte component for likablehair and others",
4
- "version": "3.3.18",
4
+ "version": "3.3.19",
5
5
  "scripts": {
6
6
  "host": "vite --host",
7
7
  "dev": "vite dev",
@@ -1,3 +0,0 @@
1
- :root {
2
- --paginated-table-default-quick-filter-background-color: rgb(var(--global-color-background-300));
3
- }