fuma 0.4.0 → 0.4.1
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.
|
@@ -4,6 +4,8 @@ export let numberOfMonths = 3;
|
|
|
4
4
|
export let numberOfColumns = numberOfMonths;
|
|
5
5
|
export let showWeekNumbers = true;
|
|
6
6
|
export let range = void 0;
|
|
7
|
+
export let minDate = void 0;
|
|
8
|
+
export let maxDate = void 0;
|
|
7
9
|
let startElement;
|
|
8
10
|
let endElement;
|
|
9
11
|
let picker;
|
|
@@ -30,6 +32,8 @@ async function initTimePicker() {
|
|
|
30
32
|
numberOfMonths,
|
|
31
33
|
numberOfColumns,
|
|
32
34
|
showWeekNumbers,
|
|
35
|
+
minDate,
|
|
36
|
+
maxDate,
|
|
33
37
|
startDate: range?.start ? dayjs(range.start).toDate() : void 0,
|
|
34
38
|
endDate: range?.end ? dayjs(range.end).toDate() : void 0,
|
|
35
39
|
setup: (picker2) => {
|
|
@@ -6,6 +6,8 @@ declare const __propDef: {
|
|
|
6
6
|
numberOfColumns?: number | undefined;
|
|
7
7
|
showWeekNumbers?: boolean | undefined;
|
|
8
8
|
range?: Range | undefined;
|
|
9
|
+
minDate?: Date | number | string | undefined;
|
|
10
|
+
maxDate?: Date | number | string | undefined;
|
|
9
11
|
};
|
|
10
12
|
events: {
|
|
11
13
|
change: CustomEvent<Range>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<script>import { mdiCalendarMonthOutline, mdiClose } from "@mdi/js";
|
|
2
|
+
import dayjs from "dayjs";
|
|
2
3
|
import { goto } from "$app/navigation";
|
|
3
4
|
import { page } from "$app/stores";
|
|
4
5
|
import { urlParam } from "../../store/param.js";
|
|
@@ -7,16 +8,17 @@ import { Icon } from "../icon/index.js";
|
|
|
7
8
|
import { DropDown } from "../menu/index.js";
|
|
8
9
|
import { InputTime } from "../input/index.js";
|
|
9
10
|
import { RangePicker } from "./index.js";
|
|
10
|
-
|
|
11
|
+
export let minDate = void 0;
|
|
12
|
+
export let maxDate = void 0;
|
|
11
13
|
let dropDown;
|
|
12
14
|
const start = $page.url.searchParams.get("start");
|
|
13
15
|
const end = $page.url.searchParams.get("end");
|
|
14
|
-
let
|
|
16
|
+
export let range = {
|
|
15
17
|
start: start ? new Date(start) : null,
|
|
16
18
|
end: end ? new Date(end) : null
|
|
17
19
|
};
|
|
18
20
|
$:
|
|
19
|
-
isValidPeriod = !!
|
|
21
|
+
isValidPeriod = !!range.start && !!range.end;
|
|
20
22
|
function getLabel(_range) {
|
|
21
23
|
if (!_range || !_range.start || !_range.end)
|
|
22
24
|
return "P\xE9riodes";
|
|
@@ -28,15 +30,15 @@ function handleSubmit() {
|
|
|
28
30
|
return;
|
|
29
31
|
goto(
|
|
30
32
|
$urlParam.with({
|
|
31
|
-
start: dayjs(
|
|
32
|
-
end: dayjs(
|
|
33
|
+
start: dayjs(range.start).format("HH:mm"),
|
|
34
|
+
end: dayjs(range.end).format("HH:mm")
|
|
33
35
|
}),
|
|
34
36
|
{ replaceState: true, noScroll: true }
|
|
35
37
|
);
|
|
36
38
|
}
|
|
37
39
|
function handleReset() {
|
|
38
40
|
dropDown.hide();
|
|
39
|
-
|
|
41
|
+
range = { start: null, end: null };
|
|
40
42
|
goto($urlParam.without("start", "end"), { replaceState: true, noScroll: true });
|
|
41
43
|
}
|
|
42
44
|
</script>
|
|
@@ -45,7 +47,7 @@ function handleReset() {
|
|
|
45
47
|
<div slot="activator" class="join">
|
|
46
48
|
<button class="btn join-item btn-sm shrink flex-nowrap">
|
|
47
49
|
<Icon path={mdiCalendarMonthOutline} class="opacity-60" size={20} />
|
|
48
|
-
{getLabel(
|
|
50
|
+
{getLabel(range)}
|
|
49
51
|
</button>
|
|
50
52
|
{#if isValidPeriod}
|
|
51
53
|
<button class="btn btn-square join-item btn-sm" on:click|preventDefault={handleReset}>
|
|
@@ -55,14 +57,14 @@ function handleReset() {
|
|
|
55
57
|
</div>
|
|
56
58
|
|
|
57
59
|
<form class="flex flex-col" on:submit|preventDefault={handleSubmit} data-sveltekit-replacestate>
|
|
58
|
-
<RangePicker numberOfMonths={1} bind:range
|
|
60
|
+
<RangePicker numberOfMonths={1} bind:range {minDate} {maxDate} />
|
|
59
61
|
|
|
60
|
-
<input class="hidden" type="text" name="start" value={
|
|
61
|
-
<input class="hidden" type="text" name="end" value={
|
|
62
|
+
<input class="hidden" type="text" name="start" value={range.start?.toJSON()} />
|
|
63
|
+
<input class="hidden" type="text" name="end" value={range.end?.toJSON()} />
|
|
62
64
|
|
|
63
65
|
<div class="flex gap-2 p-2">
|
|
64
|
-
<InputTime label="A partir de" bind:value={
|
|
65
|
-
<InputTime label="Jusqu'à" bind:value={
|
|
66
|
+
<InputTime label="A partir de" bind:value={range.start} enhanceDisabled class="grow" />
|
|
67
|
+
<InputTime label="Jusqu'à" bind:value={range.end} enhanceDisabled class="grow" />
|
|
66
68
|
</div>
|
|
67
69
|
<button class="btn m-2"> Valider </button>
|
|
68
70
|
</form>
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { SvelteComponent } from "svelte";
|
|
2
2
|
declare const __propDef: {
|
|
3
|
-
props:
|
|
3
|
+
props: {
|
|
4
|
+
minDate?: Date | number | string | undefined;
|
|
5
|
+
maxDate?: Date | number | string | undefined;
|
|
6
|
+
range?: {
|
|
7
|
+
start: Date | null;
|
|
8
|
+
end: Date | null;
|
|
9
|
+
} | undefined;
|
|
10
|
+
};
|
|
4
11
|
events: {
|
|
5
12
|
[evt: string]: CustomEvent<any>;
|
|
6
13
|
};
|