|
4 | 4 | faAnglesRight,
|
5 | 5 | faAngleRight,
|
6 | 6 | faAnglesLeft,
|
7 |
| - faAngleLeft |
| 7 | + faAngleLeft, |
| 8 | + faChevronDown |
8 | 9 | } from '@fortawesome/free-solid-svg-icons';
|
| 10 | + import { ListBox, ListBoxItem, popup, type PopupSettings } from '@skeletonlabs/skeleton'; |
9 | 11 |
|
10 | 12 | export let pageConfig;
|
11 | 13 | export let pageSizes;
|
|
31 | 33 | }
|
32 | 34 | };
|
33 | 35 |
|
| 36 | + let pageSizeDropdownValue: string = $pageSize; |
| 37 | +
|
| 38 | + const pageSizePopup: PopupSettings = { |
| 39 | + event: 'click', |
| 40 | + target: `#${id}-pageSizeDropdown`, |
| 41 | + placement: 'bottom', |
| 42 | + closeQuery: '.listbox-item' |
| 43 | + }; |
| 44 | +
|
34 | 45 | $: goToFirstPageDisabled = !$pageIndex;
|
35 | 46 | $: goToLastPageDisabled = $pageIndex == $pageCount - 1;
|
36 | 47 | $: goToNextPageDisabled = !$hasNextPage;
|
37 | 48 | $: goToPreviousPageDisabled = !$hasPreviousPage;
|
| 49 | + $: $pageSize = pageSizeDropdownValue; |
38 | 50 | </script>
|
39 | 51 |
|
40 |
| -<div class="flex justify-between w-full items-stretch gap-10"> |
| 52 | +<div class="flex justify-between w-full items-stretch gap-10 z-50"> |
41 | 53 | <div class="flex justify-start">
|
42 |
| - <select |
| 54 | + <!-- <select |
43 | 55 | name="pageSize"
|
44 | 56 | id="{id}-pageSize"
|
45 | 57 | class="select variant-filled-primary w-min font-bold"
|
46 | 58 | bind:value={$pageSize}
|
47 | 59 | >
|
48 | 60 | {#each pageSizes as size}
|
49 |
| - <option value={size} class="!bg-primary-700">{size}</option> |
| 61 | + <option value={size} class="">{size}</option> |
50 | 62 | {/each}
|
51 |
| - </select> |
| 63 | + </select> --> |
| 64 | + |
| 65 | + <button class="btn variant-filled-primary w-20 justify-between" use:popup={pageSizePopup}> |
| 66 | + <span class="capitalize font-semibold">{pageSizeDropdownValue}</span> |
| 67 | + <Fa icon={faChevronDown} size="xs" /> |
| 68 | + </button> |
| 69 | + |
| 70 | + <div class="card w-20 shadow-xl py-2" data-popup={`#${id}-pageSizeDropdown`}> |
| 71 | + <ListBox rounded="rounded-none"> |
| 72 | + {#each pageSizes as size} |
| 73 | + <ListBoxItem bind:group={pageSizeDropdownValue} name="medium" value={size} |
| 74 | + >{size}</ListBoxItem |
| 75 | + > |
| 76 | + {/each} |
| 77 | + </ListBox> |
| 78 | + <div class="arrow bg-surface-100-800-token" /> |
| 79 | + </div> |
52 | 80 | </div>
|
53 | 81 | <div class="flex justify-center gap-1">
|
54 | 82 | <button
|
|
0 commit comments