@svar-ui/calendar-provider 2.6.0 → 2.7.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/dist/index.d.mts +93 -17
- package/dist/index.mjs +29 -11
- package/package.json +5 -5
package/dist/index.d.mts
CHANGED
|
@@ -21,25 +21,22 @@ declare class EventBus<T, A extends keyof T> {
|
|
|
21
21
|
setNext(next: IEventBus<T>): IEventBus<T>;
|
|
22
22
|
}
|
|
23
23
|
//#endregion
|
|
24
|
-
//#region ../../node_modules/.pnpm/@svar-ui+lib-data-provider@1.7.
|
|
25
|
-
type Action = {
|
|
24
|
+
//#region ../../node_modules/.pnpm/@svar-ui+lib-data-provider@1.7.3/node_modules/@svar-ui/lib-data-provider/dist/index.d.ts
|
|
25
|
+
type Action<T = DataObj> = {
|
|
26
26
|
ignoreID?: boolean;
|
|
27
27
|
debounce?: number;
|
|
28
|
-
|
|
28
|
+
kind?: number;
|
|
29
|
+
handler: Handler<T>;
|
|
29
30
|
};
|
|
30
|
-
type ActionMap<T> = { [P in keyof T]?: Action };
|
|
31
|
+
type ActionMap<T> = { [P in keyof T]?: Action<T[P]> };
|
|
31
32
|
type DataObj = {
|
|
32
33
|
[key: string]: any;
|
|
33
34
|
};
|
|
34
|
-
type Handler = (data:
|
|
35
|
-
type HandlerConfig = {
|
|
35
|
+
type Handler<T = DataObj> = (data: T, action: string, ev: any) => Promise<any>;
|
|
36
|
+
type HandlerConfig<T = DataObj> = Action<T> & {
|
|
36
37
|
resolve?: (v: boolean) => void;
|
|
37
38
|
reject?: (e: any) => void;
|
|
38
39
|
timer?: number;
|
|
39
|
-
kind?: number;
|
|
40
|
-
debounce?: number;
|
|
41
|
-
ignoreID?: boolean;
|
|
42
|
-
handler: Handler;
|
|
43
40
|
};
|
|
44
41
|
type RestDataProviderConfig = {
|
|
45
42
|
batchURL?: string;
|
|
@@ -87,6 +84,7 @@ declare class Rest<T> extends EventBus<T, keyof T> {
|
|
|
87
84
|
}
|
|
88
85
|
//#endregion
|
|
89
86
|
//#region ../store/dist/index.d.mts
|
|
87
|
+
type RecurringEditMode = "series" | "single" | "following";
|
|
90
88
|
interface StoreActions {
|
|
91
89
|
["navigate-to"]: {
|
|
92
90
|
date?: Date;
|
|
@@ -99,29 +97,91 @@ interface StoreActions {
|
|
|
99
97
|
event: Partial<CalendarEvent>;
|
|
100
98
|
edit?: boolean;
|
|
101
99
|
id?: EventID;
|
|
100
|
+
rawId?: EventID;
|
|
102
101
|
};
|
|
103
102
|
["update-event"]: {
|
|
104
103
|
id: EventID;
|
|
104
|
+
rawId?: EventID;
|
|
105
105
|
event: Partial<CalendarEvent>;
|
|
106
106
|
mode?: "single" | "following";
|
|
107
|
-
originalDate?: string;
|
|
108
107
|
};
|
|
109
108
|
["delete-event"]: {
|
|
110
109
|
id: EventID;
|
|
110
|
+
rawId?: EventID;
|
|
111
|
+
cascade?: boolean;
|
|
111
112
|
};
|
|
112
113
|
["select-event"]: {
|
|
113
114
|
id: EventID | null;
|
|
115
|
+
rawId?: EventID | null;
|
|
116
|
+
mode?: RecurringEditMode | null;
|
|
114
117
|
};
|
|
115
118
|
["move-event"]: {
|
|
116
119
|
id: EventID;
|
|
117
|
-
|
|
118
|
-
|
|
120
|
+
rawId?: EventID;
|
|
121
|
+
event: Partial<CalendarEvent>;
|
|
122
|
+
mode?: "single" | "following";
|
|
119
123
|
};
|
|
120
124
|
["filter-events"]: {
|
|
121
125
|
filter?: ((obj: any) => boolean) | null;
|
|
122
126
|
tag?: string;
|
|
123
127
|
};
|
|
128
|
+
["request-data"]: RequestDataAction;
|
|
129
|
+
["provide-data"]: ProvideDataAction;
|
|
130
|
+
["export-data"]: ExportConfig;
|
|
131
|
+
["undo"]: Record<string, never>;
|
|
132
|
+
["redo"]: Record<string, never>;
|
|
124
133
|
}
|
|
134
|
+
type ExportConfig = {
|
|
135
|
+
url?: string | ((data: ExportConfig, records: CalendarEvent[], helpers: ExportHelpers) => void);
|
|
136
|
+
format?: string;
|
|
137
|
+
fileName?: string;
|
|
138
|
+
skin?: string;
|
|
139
|
+
paper?: {
|
|
140
|
+
fitSize?: boolean;
|
|
141
|
+
size?: string | {
|
|
142
|
+
width: number;
|
|
143
|
+
height: number;
|
|
144
|
+
};
|
|
145
|
+
landscape?: boolean;
|
|
146
|
+
styles?: string | string[];
|
|
147
|
+
margins?: {
|
|
148
|
+
top?: number;
|
|
149
|
+
bottom?: number;
|
|
150
|
+
left?: number;
|
|
151
|
+
right?: number;
|
|
152
|
+
};
|
|
153
|
+
header?: string;
|
|
154
|
+
footer?: string;
|
|
155
|
+
scale?: number;
|
|
156
|
+
};
|
|
157
|
+
excel?: {
|
|
158
|
+
sheetNames?: string[];
|
|
159
|
+
dateFormat?: string;
|
|
160
|
+
columns?: {
|
|
161
|
+
id: string;
|
|
162
|
+
label?: string;
|
|
163
|
+
width?: number;
|
|
164
|
+
hidden?: boolean;
|
|
165
|
+
}[];
|
|
166
|
+
};
|
|
167
|
+
data?: Record<string, any>;
|
|
168
|
+
};
|
|
169
|
+
type ExportHelpers = {
|
|
170
|
+
post: (url: string, data: Record<string, string>) => void;
|
|
171
|
+
serialize: (value: any) => string;
|
|
172
|
+
};
|
|
173
|
+
type RequestDataAction = {
|
|
174
|
+
startDate: Date;
|
|
175
|
+
endDate: Date;
|
|
176
|
+
date: Date;
|
|
177
|
+
view: string;
|
|
178
|
+
};
|
|
179
|
+
type ProvideDataAction = {
|
|
180
|
+
data: {
|
|
181
|
+
events: CalendarEvent[];
|
|
182
|
+
};
|
|
183
|
+
reset?: boolean;
|
|
184
|
+
};
|
|
125
185
|
type EventID = string | number;
|
|
126
186
|
interface CalendarEvent {
|
|
127
187
|
id: EventID;
|
|
@@ -132,13 +192,29 @@ interface CalendarEvent {
|
|
|
132
192
|
}
|
|
133
193
|
//#endregion
|
|
134
194
|
//#region src/RestDataProvider.d.ts
|
|
135
|
-
type TMethodsConfig = Pick<StoreActions, "add-event" | "update-event" | "delete-event">;
|
|
195
|
+
type TMethodsConfig = Pick<StoreActions, "add-event" | "update-event" | "move-event" | "delete-event" | "request-data">;
|
|
196
|
+
type CalendarRestDataProviderConfig = Partial<RestDataProviderConfig> & {
|
|
197
|
+
loader?: DynamicLoader;
|
|
198
|
+
parseDate?: (v: any) => Date;
|
|
199
|
+
serializeDate?: (date: Date) => any;
|
|
200
|
+
};
|
|
201
|
+
type DynamicLoader = {
|
|
202
|
+
request: (data: RequestDataAction) => Promise<void>;
|
|
203
|
+
};
|
|
204
|
+
type Range = {
|
|
205
|
+
startDate: Date;
|
|
206
|
+
endDate: Date;
|
|
207
|
+
};
|
|
136
208
|
declare class RestDataProvider extends Rest<TMethodsConfig> {
|
|
209
|
+
private _loader;
|
|
210
|
+
private _parseDate;
|
|
211
|
+
private _serializeDate;
|
|
212
|
+
constructor(url?: string, config?: CalendarRestDataProviderConfig);
|
|
137
213
|
getHandlers(): ActionMap<TMethodsConfig>;
|
|
138
|
-
getData(): Promise<CalendarEvent[]>;
|
|
214
|
+
getData(range?: Range): Promise<CalendarEvent[]>;
|
|
139
215
|
parseDates(data: CalendarEvent[]): CalendarEvent[];
|
|
140
216
|
protected toPayload(obj: object): string;
|
|
141
|
-
|
|
217
|
+
private handleDynamicRequest;
|
|
142
218
|
}
|
|
143
219
|
//#endregion
|
|
144
|
-
export { RestDataProvider };
|
|
220
|
+
export { type CalendarRestDataProviderConfig, type ProvideDataAction, type RequestDataAction, RestDataProvider };
|
package/dist/index.mjs
CHANGED
|
@@ -45,7 +45,7 @@ var EventBus = class {
|
|
|
45
45
|
}
|
|
46
46
|
};
|
|
47
47
|
//#endregion
|
|
48
|
-
//#region ../../node_modules/.pnpm/@svar-ui+lib-data-provider@1.7.
|
|
48
|
+
//#region ../../node_modules/.pnpm/@svar-ui+lib-data-provider@1.7.3/node_modules/@svar-ui/lib-data-provider/dist/index.js
|
|
49
49
|
var cantSendYet = Symbol();
|
|
50
50
|
var ActionQueue = class {
|
|
51
51
|
constructor() {
|
|
@@ -183,7 +183,7 @@ var ActionQueue = class {
|
|
|
183
183
|
if (hasRealID) {
|
|
184
184
|
if (copy === null) copy = { ...obj };
|
|
185
185
|
copy[key] = hasRealID;
|
|
186
|
-
} else if (
|
|
186
|
+
} else if (test !== ignore) return cantSendYet;
|
|
187
187
|
}
|
|
188
188
|
}
|
|
189
189
|
return copy || obj;
|
|
@@ -276,6 +276,15 @@ var Rest = class extends EventBus {
|
|
|
276
276
|
//#endregion
|
|
277
277
|
//#region src/RestDataProvider.ts
|
|
278
278
|
var RestDataProvider = class extends Rest {
|
|
279
|
+
_loader = null;
|
|
280
|
+
_parseDate;
|
|
281
|
+
_serializeDate;
|
|
282
|
+
constructor(url, config = {}) {
|
|
283
|
+
super(url, config);
|
|
284
|
+
this._loader = config.loader ?? null;
|
|
285
|
+
this._parseDate = config.parseDate || ((v) => new Date(v));
|
|
286
|
+
this._serializeDate = config.serializeDate || ((date) => date.toISOString());
|
|
287
|
+
}
|
|
279
288
|
getHandlers() {
|
|
280
289
|
return {
|
|
281
290
|
"add-event": {
|
|
@@ -292,29 +301,38 @@ var RestDataProvider = class extends Rest {
|
|
|
292
301
|
return this.send(`events/${data.id}`, "PUT", data.event);
|
|
293
302
|
}
|
|
294
303
|
},
|
|
295
|
-
"
|
|
304
|
+
"move-event": { handler: async (data) => {
|
|
305
|
+
return this.send(`events/${data.id}`, "PUT", data.event);
|
|
306
|
+
} },
|
|
307
|
+
"delete-event": { handler: async (data) => this.send(`events/${data.id}`, "DELETE") },
|
|
308
|
+
"request-data": { handler: async (data) => this.handleDynamicRequest(data) }
|
|
296
309
|
};
|
|
297
310
|
}
|
|
298
|
-
async getData() {
|
|
299
|
-
|
|
311
|
+
async getData(range) {
|
|
312
|
+
let events;
|
|
313
|
+
if (range) {
|
|
314
|
+
const query = [`startDate=${encodeURIComponent(this._serializeDate(range.startDate))}`, `endDate=${encodeURIComponent(this._serializeDate(range.endDate))}`].join("&");
|
|
315
|
+
events = await this.send(`events?${query}`, "GET");
|
|
316
|
+
} else events = await this.send("events", "GET");
|
|
300
317
|
return this.parseDates(events);
|
|
301
318
|
}
|
|
302
319
|
parseDates(data) {
|
|
303
320
|
data.forEach((item) => {
|
|
304
|
-
item.start =
|
|
305
|
-
item.end =
|
|
306
|
-
if (item.exdates) item.exdates = item.exdates.map((d) =>
|
|
321
|
+
item.start = this._parseDate(item.start);
|
|
322
|
+
item.end = this._parseDate(item.end);
|
|
323
|
+
if (item.exdates) item.exdates = item.exdates.map((d) => this._parseDate(d));
|
|
307
324
|
});
|
|
308
325
|
return data;
|
|
309
326
|
}
|
|
310
327
|
toPayload(obj) {
|
|
311
328
|
return JSON.stringify(obj, (_key, value) => {
|
|
312
|
-
if (value instanceof Date) return this.
|
|
329
|
+
if (value instanceof Date) return this._serializeDate(value);
|
|
313
330
|
return value;
|
|
314
331
|
});
|
|
315
332
|
}
|
|
316
|
-
|
|
317
|
-
|
|
333
|
+
handleDynamicRequest(data) {
|
|
334
|
+
if (!this._loader) return;
|
|
335
|
+
return this._loader.request(data);
|
|
318
336
|
}
|
|
319
337
|
};
|
|
320
338
|
//#endregion
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@svar-ui/calendar-provider",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.7.0",
|
|
4
4
|
"description": "Data provider and REST proxy for the SVAR Calendar",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"files": [
|
|
@@ -16,19 +16,19 @@
|
|
|
16
16
|
"access": "public"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
|
-
"@svar-ui/lib-data-provider": "1.7.
|
|
19
|
+
"@svar-ui/lib-data-provider": "1.7.3",
|
|
20
20
|
"@typescript/native-preview": "7.0.0-dev.20260316.1",
|
|
21
21
|
"typescript": "^5.9.3",
|
|
22
22
|
"vite-plus": "0.1.16",
|
|
23
|
-
"@svar-ui/calendar-store": "2.
|
|
23
|
+
"@svar-ui/calendar-store": "2.7.0"
|
|
24
24
|
},
|
|
25
25
|
"inlinedDependencies": {
|
|
26
|
-
"@svar-ui/lib-data-provider": "1.7.
|
|
26
|
+
"@svar-ui/lib-data-provider": "1.7.3",
|
|
27
27
|
"@svar-ui/lib-state": "1.9.6"
|
|
28
28
|
},
|
|
29
29
|
"scripts": {
|
|
30
30
|
"build": "vp pack",
|
|
31
|
-
"
|
|
31
|
+
"dev": "vp pack --watch",
|
|
32
32
|
"test": "vp test",
|
|
33
33
|
"check": "vp check"
|
|
34
34
|
}
|