svelte-range-calendar 0.2.0 → 0.5.0
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/README.md +6 -1
- package/dist/Calendar.svelte +142 -111
- package/dist/Calendar.svelte.d.ts +49 -28
- package/dist/shared/dates.d.ts +13 -17
- package/dist/shared/dates.js +70 -66
- package/dist/shared/formatters.d.ts +1 -1
- package/dist/shared/types.d.ts +12 -12
- package/package.json +2 -3
- package/src/Calendar.svelte +142 -111
- package/src/shared/dates.ts +100 -105
- package/src/shared/formatters.ts +1 -1
- package/src/shared/types.ts +12 -12
|
@@ -3,11 +3,11 @@ import type { Snippet } from 'svelte';
|
|
|
3
3
|
import type { ClassValue } from 'svelte/elements';
|
|
4
4
|
import type { Formatter } from './shared/formatters.js';
|
|
5
5
|
import type { CalendarType, Detail, LooseValue, NavigationLabelArgs, ReturnValue, TileArgs, Value, View, ViewCallbackProperties } from './shared/types.js';
|
|
6
|
-
type CalendarProps = {
|
|
6
|
+
type CalendarProps<T> = {
|
|
7
7
|
/**
|
|
8
8
|
* The beginning of the period that shall be displayed. Can be bound.
|
|
9
9
|
*/
|
|
10
|
-
activeStartDate?:
|
|
10
|
+
activeStartDate?: T | null;
|
|
11
11
|
/**
|
|
12
12
|
* Whether a partial range (only the first end selected) should be passed to `onChange`. Only applies when `selectRange` is set.
|
|
13
13
|
*
|
|
@@ -25,18 +25,18 @@ type CalendarProps = {
|
|
|
25
25
|
/**
|
|
26
26
|
* The beginning of the period that shall be displayed by default.
|
|
27
27
|
*/
|
|
28
|
-
defaultActiveStartDate?:
|
|
28
|
+
defaultActiveStartDate?: T;
|
|
29
29
|
/**
|
|
30
30
|
* Calendar view that shall be displayed by default.
|
|
31
31
|
*/
|
|
32
32
|
defaultView?: View;
|
|
33
|
-
formatDay?: Formatter
|
|
34
|
-
formatLongDate?: Formatter
|
|
35
|
-
formatMonth?: Formatter
|
|
36
|
-
formatMonthYear?: Formatter
|
|
37
|
-
formatShortWeekday?: Formatter
|
|
38
|
-
formatWeekday?: Formatter
|
|
39
|
-
formatYear?: Formatter
|
|
33
|
+
formatDay?: Formatter<T>;
|
|
34
|
+
formatLongDate?: Formatter<T>;
|
|
35
|
+
formatMonth?: Formatter<T>;
|
|
36
|
+
formatMonthYear?: Formatter<T>;
|
|
37
|
+
formatShortWeekday?: Formatter<T>;
|
|
38
|
+
formatWeekday?: Formatter<T>;
|
|
39
|
+
formatYear?: Formatter<T>;
|
|
40
40
|
/**
|
|
41
41
|
* Whether to go to the beginning of the selected range when it changes.
|
|
42
42
|
*
|
|
@@ -50,7 +50,7 @@ type CalendarProps = {
|
|
|
50
50
|
/**
|
|
51
51
|
* Maximum date that the user can select. Periods partially overlapped by `maxDate` will also be selectable.
|
|
52
52
|
*/
|
|
53
|
-
maxDate?:
|
|
53
|
+
maxDate?: T;
|
|
54
54
|
/**
|
|
55
55
|
* The most detailed view that the user shall see. Clicking an item in this view selects a date.
|
|
56
56
|
*
|
|
@@ -60,7 +60,7 @@ type CalendarProps = {
|
|
|
60
60
|
/**
|
|
61
61
|
* Minimum date that the user can select. Periods partially overlapped by `minDate` will also be selectable.
|
|
62
62
|
*/
|
|
63
|
-
minDate?:
|
|
63
|
+
minDate?: T;
|
|
64
64
|
/**
|
|
65
65
|
* The least detailed view that the user shall see.
|
|
66
66
|
*
|
|
@@ -72,7 +72,7 @@ type CalendarProps = {
|
|
|
72
72
|
/**
|
|
73
73
|
* Custom content of the navigation label.
|
|
74
74
|
*/
|
|
75
|
-
navigationLabel?: Snippet<[NavigationLabelArgs]>;
|
|
75
|
+
navigationLabel?: Snippet<[NavigationLabelArgs<T>]>;
|
|
76
76
|
next2AriaLabel?: string;
|
|
77
77
|
/**
|
|
78
78
|
* Content of the "jump forward" button. Setting it to `null` hides the button.
|
|
@@ -87,18 +87,18 @@ type CalendarProps = {
|
|
|
87
87
|
* @default '›'
|
|
88
88
|
*/
|
|
89
89
|
nextLabel?: string | null;
|
|
90
|
-
onActiveStartDateChange?: (args: ViewCallbackProperties) => void;
|
|
90
|
+
onActiveStartDateChange?: (args: ViewCallbackProperties<T>) => void;
|
|
91
91
|
/**
|
|
92
92
|
* Function called when the user selects a value. When `selectRange` is set, receives a `[from, to]` array.
|
|
93
93
|
*/
|
|
94
|
-
onChange?: (value: Value
|
|
95
|
-
onClickDay?: (value:
|
|
96
|
-
onClickDecade?: (value:
|
|
97
|
-
onClickMonth?: (value:
|
|
98
|
-
onClickYear?: (value:
|
|
99
|
-
onDrillDown?: (args: ViewCallbackProperties) => void;
|
|
100
|
-
onDrillUp?: (args: ViewCallbackProperties) => void;
|
|
101
|
-
onViewChange?: (args: ViewCallbackProperties) => void;
|
|
94
|
+
onChange?: (value: Value<T>, event: MouseEvent) => void;
|
|
95
|
+
onClickDay?: (value: T, event: MouseEvent) => void;
|
|
96
|
+
onClickDecade?: (value: T, event: MouseEvent) => void;
|
|
97
|
+
onClickMonth?: (value: T, event: MouseEvent) => void;
|
|
98
|
+
onClickYear?: (value: T, event: MouseEvent) => void;
|
|
99
|
+
onDrillDown?: (args: ViewCallbackProperties<T>) => void;
|
|
100
|
+
onDrillUp?: (args: ViewCallbackProperties<T>) => void;
|
|
101
|
+
onViewChange?: (args: ViewCallbackProperties<T>) => void;
|
|
102
102
|
prev2AriaLabel?: string;
|
|
103
103
|
/**
|
|
104
104
|
* Content of the "jump backward" button. Setting it to `null` hides the button.
|
|
@@ -149,24 +149,45 @@ type CalendarProps = {
|
|
|
149
149
|
/**
|
|
150
150
|
* Class name(s) added to tiles. Can be a function receiving `{ activeStartDate, date, view }`.
|
|
151
151
|
*/
|
|
152
|
-
tileClassName?: ClassValue | ((args: TileArgs) => ClassValue);
|
|
152
|
+
tileClassName?: ClassValue | ((args: TileArgs<T>) => ClassValue);
|
|
153
153
|
/**
|
|
154
154
|
* Custom content rendered inside tiles.
|
|
155
155
|
*/
|
|
156
|
-
tileContent?: Snippet<[TileArgs]>;
|
|
156
|
+
tileContent?: Snippet<[TileArgs<T>]>;
|
|
157
157
|
/**
|
|
158
158
|
* Function that returns `true` for dates that should be disabled.
|
|
159
159
|
*/
|
|
160
|
-
tileDisabled?: (args: TileArgs) => boolean;
|
|
160
|
+
tileDisabled?: (args: TileArgs<T>) => boolean;
|
|
161
161
|
/**
|
|
162
162
|
* Calendar value. Can be a single date or a range.
|
|
163
163
|
*/
|
|
164
|
-
value?: LooseValue
|
|
164
|
+
value?: LooseValue<T>;
|
|
165
165
|
/**
|
|
166
166
|
* Currently displayed view. Can be bound.
|
|
167
167
|
*/
|
|
168
168
|
view?: View;
|
|
169
169
|
};
|
|
170
|
-
declare
|
|
171
|
-
|
|
170
|
+
declare function $$render<T>(): {
|
|
171
|
+
props: CalendarProps<T>;
|
|
172
|
+
exports: {};
|
|
173
|
+
bindings: "activeStartDate" | "view";
|
|
174
|
+
slots: {};
|
|
175
|
+
events: {};
|
|
176
|
+
};
|
|
177
|
+
declare class __sveltets_Render<T> {
|
|
178
|
+
props(): ReturnType<typeof $$render<T>>['props'];
|
|
179
|
+
events(): ReturnType<typeof $$render<T>>['events'];
|
|
180
|
+
slots(): ReturnType<typeof $$render<T>>['slots'];
|
|
181
|
+
bindings(): "activeStartDate" | "view";
|
|
182
|
+
exports(): {};
|
|
183
|
+
}
|
|
184
|
+
interface $$IsomorphicComponent {
|
|
185
|
+
new <T>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
|
|
186
|
+
$$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
|
|
187
|
+
} & ReturnType<__sveltets_Render<T>['exports']>;
|
|
188
|
+
<T>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
|
|
189
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
190
|
+
}
|
|
191
|
+
declare const Calendar: $$IsomorphicComponent;
|
|
192
|
+
type Calendar<T> = InstanceType<typeof Calendar<T>>;
|
|
172
193
|
export default Calendar;
|
package/dist/shared/dates.d.ts
CHANGED
|
@@ -1,21 +1,17 @@
|
|
|
1
|
+
import type { DateAdapter } from 'svelte-date-utils';
|
|
1
2
|
import type { CalendarType, DateType, LooseValue, LooseValuePiece, Range, View } from './types.js';
|
|
2
3
|
export declare const views: readonly ["century", "decade", "year", "month"];
|
|
3
|
-
/** Type of date represented by a single tile in a given view. */
|
|
4
4
|
export declare const tileTypes: Record<View, DateType>;
|
|
5
5
|
export declare function getCalendarType(locale: string): CalendarType;
|
|
6
|
-
export declare function isWeekend(date:
|
|
7
|
-
export declare function addDays(date:
|
|
8
|
-
export declare function getBeginOfWeek(date:
|
|
9
|
-
export declare function getDaysBetween(from:
|
|
10
|
-
export declare function getWeekNumber(date:
|
|
11
|
-
export declare function getBegin(type: DateType, date:
|
|
12
|
-
export declare function getEnd(type: DateType, date:
|
|
13
|
-
export declare function getRange(type: DateType, date:
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
export declare function shiftDate(view: View, date: Date, amount: number, double?: boolean): Date;
|
|
19
|
-
export declare function isRangeWithinRange(greater: Range<Date>, smaller: Range<Date>): boolean;
|
|
20
|
-
export declare function toDate(value: LooseValuePiece | undefined): Date | null;
|
|
21
|
-
export declare function normalizeValue(value: LooseValue | undefined): Range<Date | null>;
|
|
6
|
+
export declare function isWeekend<T>(adapter: DateAdapter<T>, date: T, calendarType: CalendarType): boolean;
|
|
7
|
+
export declare function addDays<T>(adapter: DateAdapter<T>, date: T, days: number): T;
|
|
8
|
+
export declare function getBeginOfWeek<T>(adapter: DateAdapter<T>, date: T, calendarType: CalendarType): T;
|
|
9
|
+
export declare function getDaysBetween<T>(adapter: DateAdapter<T>, from: T, to: T): number;
|
|
10
|
+
export declare function getWeekNumber<T>(adapter: DateAdapter<T>, date: T, calendarType: CalendarType): number;
|
|
11
|
+
export declare function getBegin<T>(adapter: DateAdapter<T>, type: DateType, date: T): T;
|
|
12
|
+
export declare function getEnd<T>(adapter: DateAdapter<T>, type: DateType, date: T): T;
|
|
13
|
+
export declare function getRange<T>(adapter: DateAdapter<T>, type: DateType, date: T): Range<T>;
|
|
14
|
+
export declare function shiftDate<T>(adapter: DateAdapter<T>, view: View, date: T, amount: number, double?: boolean): T;
|
|
15
|
+
export declare function isRangeWithinRange<T>(adapter: DateAdapter<T>, greater: Range<T>, smaller: Range<T>): boolean;
|
|
16
|
+
export declare function toDate<T>(adapter: DateAdapter<T>, value: LooseValuePiece<T> | undefined): T | null;
|
|
17
|
+
export declare function normalizeValue<T>(adapter: DateAdapter<T>, value: LooseValue<T> | undefined): Range<T | null>;
|
package/dist/shared/dates.js
CHANGED
|
@@ -1,15 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createDateUtils } from 'svelte-date-utils';
|
|
2
2
|
export const views = ['century', 'decade', 'year', 'month'];
|
|
3
|
-
/** Type of date represented by a single tile in a given view. */
|
|
4
3
|
export const tileTypes = {
|
|
5
4
|
century: 'decade',
|
|
6
5
|
decade: 'year',
|
|
7
6
|
year: 'month',
|
|
8
7
|
month: 'day',
|
|
9
8
|
};
|
|
10
|
-
const dayInMs = 24 * 60 * 60 * 1000;
|
|
11
|
-
const gregoryRegions = new Set('AG AS AU BD BR BS BT BW BZ CA CO DM DO ET GT GU HK HN ID IN JM JP KE KH KR LA MH MM MO MT MX MZ NI NP PA PE PH PK PR PT PY SA SG SV TH TT TW UM US VE VI WS YE ZA ZW'.split(' '));
|
|
12
|
-
const islamicRegions = new Set('AE AF BH DJ DZ EG IQ IR JO KW LY OM QA SD SY'.split(' '));
|
|
13
9
|
export function getCalendarType(locale) {
|
|
14
10
|
let region;
|
|
15
11
|
try {
|
|
@@ -18,13 +14,15 @@ export function getCalendarType(locale) {
|
|
|
18
14
|
catch {
|
|
19
15
|
region = locale.split('-')[1]?.toUpperCase();
|
|
20
16
|
}
|
|
21
|
-
if (region === 'IL')
|
|
17
|
+
if (region === 'IL')
|
|
22
18
|
return 'hebrew';
|
|
23
|
-
|
|
24
|
-
if (region && islamicRegions.has(region)) {
|
|
19
|
+
if (region && 'AE AF BH DJ DZ EG IQ IR JO KW LY OM QA SD SY'.split(' ').includes(region)) {
|
|
25
20
|
return 'islamic';
|
|
26
21
|
}
|
|
27
|
-
if (region &&
|
|
22
|
+
if (region &&
|
|
23
|
+
'AG AS AU BD BR BS BT BW BZ CA CO DM DO ET GT GU HK HN ID IN JM JP KE KH KR LA MH MM MO MT MX MZ NI NP PA PE PH PK PR PT PY SA SG SV TH TT TW UM US VE VI WS YE ZA ZW'
|
|
24
|
+
.split(' ')
|
|
25
|
+
.includes(region)) {
|
|
28
26
|
return 'gregory';
|
|
29
27
|
}
|
|
30
28
|
return 'iso8601';
|
|
@@ -35,98 +33,104 @@ const weekStartDays = {
|
|
|
35
33
|
iso8601: 1,
|
|
36
34
|
islamic: 6,
|
|
37
35
|
};
|
|
38
|
-
export function isWeekend(date, calendarType) {
|
|
39
|
-
const day = date.getDay();
|
|
36
|
+
export function isWeekend(adapter, date, calendarType) {
|
|
37
|
+
const day = adapter.toJsDate(date).getDay();
|
|
40
38
|
return calendarType === 'islamic' || calendarType === 'hebrew'
|
|
41
39
|
? day === 5 || day === 6
|
|
42
40
|
: day === 0 || day === 6;
|
|
43
41
|
}
|
|
44
|
-
export function addDays(date, days) {
|
|
45
|
-
return
|
|
42
|
+
export function addDays(adapter, date, days) {
|
|
43
|
+
return adapter.startOfDay(adapter.addDays(date, days));
|
|
46
44
|
}
|
|
47
|
-
export function getBeginOfWeek(date, calendarType) {
|
|
48
|
-
const
|
|
49
|
-
|
|
45
|
+
export function getBeginOfWeek(adapter, date, calendarType) {
|
|
46
|
+
const day = adapter.toJsDate(date).getDay();
|
|
47
|
+
const offset = (day - weekStartDays[calendarType] + 7) % 7;
|
|
48
|
+
return addDays(adapter, date, -offset);
|
|
50
49
|
}
|
|
51
|
-
export function getDaysBetween(from, to) {
|
|
52
|
-
const
|
|
53
|
-
const
|
|
54
|
-
|
|
50
|
+
export function getDaysBetween(adapter, from, to) {
|
|
51
|
+
const a = adapter.toJsDate(from);
|
|
52
|
+
const b = adapter.toJsDate(to);
|
|
53
|
+
const fromDay = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate());
|
|
54
|
+
const toDay = Date.UTC(b.getFullYear(), b.getMonth(), b.getDate());
|
|
55
|
+
return Math.round((toDay - fromDay) / 86_400_000);
|
|
55
56
|
}
|
|
56
|
-
export function getWeekNumber(date, calendarType) {
|
|
57
|
+
export function getWeekNumber(adapter, date, calendarType) {
|
|
58
|
+
const jsDate = adapter.toJsDate(date);
|
|
57
59
|
if (calendarType === 'iso8601') {
|
|
58
|
-
const
|
|
59
|
-
const
|
|
60
|
-
|
|
60
|
+
const day = jsDate.getDay() || 7;
|
|
61
|
+
const thursday = addDays(adapter, date, 4 - day);
|
|
62
|
+
const year = adapter.getYear(thursday);
|
|
63
|
+
const yearStart = adapter.setDate(adapter.setMonth(adapter.setYear(adapter.date(), year), 0), 1);
|
|
64
|
+
return Math.ceil((getDaysBetween(adapter, yearStart, thursday) + 1) / 7);
|
|
61
65
|
}
|
|
62
|
-
const weekStart = getBeginOfWeek(date, calendarType);
|
|
63
|
-
|
|
64
|
-
if (addDays(weekStart, 6).getFullYear() > weekStart.getFullYear()) {
|
|
66
|
+
const weekStart = getBeginOfWeek(adapter, date, calendarType);
|
|
67
|
+
if (adapter.getYear(addDays(adapter, weekStart, 6)) > adapter.getYear(weekStart))
|
|
65
68
|
return 1;
|
|
66
|
-
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
+
const year = adapter.getYear(weekStart);
|
|
70
|
+
const firstDate = adapter.setDate(adapter.setMonth(adapter.setYear(adapter.date(), year), 0), 1);
|
|
71
|
+
const firstWeekStart = getBeginOfWeek(adapter, firstDate, calendarType);
|
|
72
|
+
return Math.round(getDaysBetween(adapter, firstWeekStart, weekStart) / 7) + 1;
|
|
69
73
|
}
|
|
70
|
-
export function getBegin(type, date) {
|
|
74
|
+
export function getBegin(adapter, type, date) {
|
|
75
|
+
const utils = createDateUtils(adapter);
|
|
71
76
|
switch (type) {
|
|
72
77
|
case 'century':
|
|
73
|
-
return getCenturyStart(date);
|
|
78
|
+
return utils.getCenturyStart(date);
|
|
74
79
|
case 'decade':
|
|
75
|
-
return getDecadeStart(date);
|
|
80
|
+
return utils.getDecadeStart(date);
|
|
76
81
|
case 'year':
|
|
77
|
-
return getYearStart(date);
|
|
82
|
+
return utils.getYearStart(date);
|
|
78
83
|
case 'month':
|
|
79
|
-
return getMonthStart(date);
|
|
84
|
+
return utils.getMonthStart(date);
|
|
80
85
|
case 'day':
|
|
81
|
-
return getDayStart(date);
|
|
86
|
+
return utils.getDayStart(date);
|
|
82
87
|
}
|
|
83
88
|
}
|
|
84
|
-
export function getEnd(type, date) {
|
|
89
|
+
export function getEnd(adapter, type, date) {
|
|
90
|
+
const utils = createDateUtils(adapter);
|
|
85
91
|
switch (type) {
|
|
86
92
|
case 'century':
|
|
87
|
-
return getCenturyEnd(date);
|
|
93
|
+
return utils.getCenturyEnd(date);
|
|
88
94
|
case 'decade':
|
|
89
|
-
return getDecadeEnd(date);
|
|
95
|
+
return utils.getDecadeEnd(date);
|
|
90
96
|
case 'year':
|
|
91
|
-
return getYearEnd(date);
|
|
97
|
+
return utils.getYearEnd(date);
|
|
92
98
|
case 'month':
|
|
93
|
-
return getMonthEnd(date);
|
|
99
|
+
return utils.getMonthEnd(date);
|
|
94
100
|
case 'day':
|
|
95
|
-
return getDayEnd(date);
|
|
101
|
+
return utils.getDayEnd(date);
|
|
96
102
|
}
|
|
97
103
|
}
|
|
98
|
-
export function getRange(type, date) {
|
|
99
|
-
return [getBegin(type, date), getEnd(type, date)];
|
|
104
|
+
export function getRange(adapter, type, date) {
|
|
105
|
+
return [getBegin(adapter, type, date), getEnd(adapter, type, date)];
|
|
100
106
|
}
|
|
101
107
|
const stepInYears = { century: 100, decade: 10, month: 0, year: 1 };
|
|
102
108
|
const bigStepInYears = { century: 0, decade: 100, month: 1, year: 10 };
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
export function shiftDate(view, date, amount, double = false) {
|
|
108
|
-
const year =
|
|
109
|
-
const month =
|
|
109
|
+
function makeDate(adapter, year, month, day = 1) {
|
|
110
|
+
const date = adapter.setYear(adapter.date(), year);
|
|
111
|
+
return adapter.setDate(adapter.setMonth(date, month), day);
|
|
112
|
+
}
|
|
113
|
+
export function shiftDate(adapter, view, date, amount, double = false) {
|
|
114
|
+
const year = adapter.getYear(date);
|
|
115
|
+
const month = adapter.getMonth(date);
|
|
110
116
|
if (!double) {
|
|
111
117
|
return view === 'month'
|
|
112
|
-
?
|
|
113
|
-
: getBegin(view,
|
|
118
|
+
? makeDate(adapter, year, month + amount)
|
|
119
|
+
: getBegin(adapter, view, makeDate(adapter, year + amount * stepInYears[view], 0));
|
|
114
120
|
}
|
|
115
|
-
return getBegin(view,
|
|
121
|
+
return getBegin(adapter, view, makeDate(adapter, year + amount * bigStepInYears[view], view === 'month' ? month : 0));
|
|
116
122
|
}
|
|
117
|
-
export function isRangeWithinRange(greater, smaller) {
|
|
118
|
-
return (
|
|
123
|
+
export function isRangeWithinRange(adapter, greater, smaller) {
|
|
124
|
+
return !adapter.isAfter(smaller[0], greater[0]) && !adapter.isBefore(smaller[1], greater[1]);
|
|
119
125
|
}
|
|
120
|
-
export function toDate(value) {
|
|
121
|
-
if (value === null || value === undefined)
|
|
126
|
+
export function toDate(adapter, value) {
|
|
127
|
+
if (value === null || value === undefined)
|
|
122
128
|
return null;
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
return Number.isNaN(date.getTime()) ? null : date;
|
|
129
|
+
const date = typeof value === 'string' ? adapter.date(value) : value;
|
|
130
|
+
return adapter.isValid(date) ? date : null;
|
|
126
131
|
}
|
|
127
|
-
export function normalizeValue(value) {
|
|
128
|
-
if (Array.isArray(value))
|
|
129
|
-
return [toDate(value[0]), toDate(value[1])];
|
|
130
|
-
|
|
131
|
-
return [toDate(value), null];
|
|
132
|
+
export function normalizeValue(adapter, value) {
|
|
133
|
+
if (Array.isArray(value))
|
|
134
|
+
return [toDate(adapter, value[0]), toDate(adapter, value[1])];
|
|
135
|
+
return [toDate(adapter, value), null];
|
|
132
136
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type Formatter = (locale: string | undefined, date:
|
|
1
|
+
export type Formatter<T = Date> = (locale: string | undefined, date: T) => string;
|
|
2
2
|
export declare const formatDay: Formatter;
|
|
3
3
|
export declare const formatLongDate: Formatter;
|
|
4
4
|
export declare const formatMonth: Formatter;
|
package/dist/shared/types.d.ts
CHANGED
|
@@ -3,25 +3,25 @@ export type CalendarType = 'gregory' | 'hebrew' | 'islamic' | 'iso8601';
|
|
|
3
3
|
export type View = 'century' | 'decade' | 'year' | 'month';
|
|
4
4
|
export type Detail = View;
|
|
5
5
|
export type DateType = View | 'day';
|
|
6
|
-
export type LooseValuePiece = string |
|
|
7
|
-
export type LooseValue = LooseValuePiece | Range<LooseValuePiece
|
|
8
|
-
export type ValuePiece = Date | null;
|
|
9
|
-
export type Value = ValuePiece | Range<ValuePiece
|
|
6
|
+
export type LooseValuePiece<T = Date> = string | T | null;
|
|
7
|
+
export type LooseValue<T = Date> = LooseValuePiece<T> | Range<LooseValuePiece<T>>;
|
|
8
|
+
export type ValuePiece<T = Date> = T | null;
|
|
9
|
+
export type Value<T = Date> = ValuePiece<T> | Range<ValuePiece<T>>;
|
|
10
10
|
export type ReturnValue = 'start' | 'end' | 'range';
|
|
11
11
|
export type NavigationAction = 'prev' | 'prev2' | 'next' | 'next2' | 'onChange' | 'drillUp' | 'drillDown';
|
|
12
|
-
export type ViewCallbackProperties = {
|
|
12
|
+
export type ViewCallbackProperties<T = Date> = {
|
|
13
13
|
action: NavigationAction;
|
|
14
|
-
activeStartDate:
|
|
15
|
-
value: LooseValue | undefined;
|
|
14
|
+
activeStartDate: T | null;
|
|
15
|
+
value: LooseValue<T> | undefined;
|
|
16
16
|
view: View;
|
|
17
17
|
};
|
|
18
|
-
export type TileArgs = {
|
|
19
|
-
activeStartDate:
|
|
20
|
-
date:
|
|
18
|
+
export type TileArgs<T = Date> = {
|
|
19
|
+
activeStartDate: T;
|
|
20
|
+
date: T;
|
|
21
21
|
view: View;
|
|
22
22
|
};
|
|
23
|
-
export type NavigationLabelArgs = {
|
|
24
|
-
date:
|
|
23
|
+
export type NavigationLabelArgs<T = Date> = {
|
|
24
|
+
date: T;
|
|
25
25
|
label: string;
|
|
26
26
|
locale: string | undefined;
|
|
27
27
|
view: View;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "svelte-range-calendar",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "A calendar with range selection for your Svelte app.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"calendar",
|
|
@@ -50,8 +50,7 @@
|
|
|
50
50
|
"watch": "svelte-package --input src --output dist --watch"
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"
|
|
54
|
-
"svelte-date-utils": "^0.2.0"
|
|
53
|
+
"svelte-date-utils": "^0.5.0"
|
|
55
54
|
},
|
|
56
55
|
"devDependencies": {
|
|
57
56
|
"@sveltejs/package": "^3.0.1",
|