@sprucelabs/spruce-calendar-components 22.7.11 → 22.8.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.
- package/build/__tests__/support/CalendarToolBeltStateMachineTestFactory.d.ts +39 -0
- package/build/__tests__/support/CalendarToolBeltStateMachineTestFactory.js +105 -0
- package/build/esm/__tests__/support/CalendarToolBeltStateMachineTestFactory.d.ts +39 -0
- package/build/esm/__tests__/support/CalendarToolBeltStateMachineTestFactory.js +126 -0
- package/build/esm/skillViewControllers/Root.svc.d.ts +4 -4
- package/build/esm/skillViewControllers/Root.svc.js +4 -1
- package/build/esm/utilities/CalendarPeopleManager.d.ts +1 -1
- package/build/skillViewControllers/Root.svc.d.ts +4 -4
- package/build/skillViewControllers/Root.svc.js +4 -1
- package/build/utilities/CalendarPeopleManager.d.ts +1 -1
- package/package.json +6 -2
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { SpruceSchemas } from '@sprucelabs/calendar-utils';
|
|
2
|
+
import { ToolBeltViewController } from '@sprucelabs/heartwood-view-controllers';
|
|
3
|
+
import { ViewFixture } from '@sprucelabs/spruce-test-fixtures';
|
|
4
|
+
import { GetScheduleOptions, RemoteEventStore } from '../../stores/RemoteEventStore';
|
|
5
|
+
import { CalendarToolBeltStateMachine, UpdateEvent } from '../../types/calendar.types';
|
|
6
|
+
import CalendarViewController from '../../viewControllers/Calendar.vc';
|
|
7
|
+
import SpyEventManager from './SpyEventManager';
|
|
8
|
+
export default class CalendarToolBeltStateMachineTestFactory {
|
|
9
|
+
static StateMachine(views: ViewFixture): Promise<{
|
|
10
|
+
stateMachine: CalendarToolBeltStateMachine;
|
|
11
|
+
toolBeltVc: ToolBeltViewController;
|
|
12
|
+
calendarVc: CalendarViewController;
|
|
13
|
+
events: SpyEventManager;
|
|
14
|
+
}>;
|
|
15
|
+
}
|
|
16
|
+
declare module '@sprucelabs/heartwood-view-controllers/build/types/heartwood.types' {
|
|
17
|
+
interface ViewControllerMap {
|
|
18
|
+
'calendar.calendar': CalendarViewController;
|
|
19
|
+
}
|
|
20
|
+
interface ViewControllerOptionsMap {
|
|
21
|
+
'calendar.calendar': ConstructorParameters<typeof CalendarViewController>[0];
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export declare class FakeRemoteEventStore implements RemoteEventStore {
|
|
25
|
+
lastPersistedEvent?: SpruceSchemas.CalendarUtils.v2021_05_19.CalendarEvent;
|
|
26
|
+
load(_options: {
|
|
27
|
+
organizationId: string;
|
|
28
|
+
locationId: string;
|
|
29
|
+
}): Promise<void>;
|
|
30
|
+
persist(event: UpdateEvent): Promise<SpruceSchemas.CalendarUtils.v2021_05_19.CalendarEvent>;
|
|
31
|
+
setCalendarId(_id: string): void;
|
|
32
|
+
clearCalendarId(): void;
|
|
33
|
+
getCalendarId(): string | undefined;
|
|
34
|
+
waitForPendingSaves(): Promise<void>;
|
|
35
|
+
cancelEvent(_id: string): Promise<void>;
|
|
36
|
+
getSchedules(_options: GetScheduleOptions): Promise<SpruceSchemas.HeartwoodViewControllers.v2021_02_11.CalendarEvent[]>;
|
|
37
|
+
getEventTypes(): Promise<SpruceSchemas.Calendar.v2021_05_19.CalendarEventType[]>;
|
|
38
|
+
getCalendars(): Promise<SpruceSchemas.Calendar.v2021_05_19.Calendar[]>;
|
|
39
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.FakeRemoteEventStore = void 0;
|
|
7
|
+
const calendar_utils_1 = require("@sprucelabs/calendar-utils");
|
|
8
|
+
const heartwood_view_controllers_1 = require("@sprucelabs/heartwood-view-controllers");
|
|
9
|
+
const spruce_test_fixtures_1 = require("@sprucelabs/spruce-test-fixtures");
|
|
10
|
+
const test_utils_1 = require("@sprucelabs/test-utils");
|
|
11
|
+
const RemotePreferencesStore_1 = __importDefault(require("../../stores/RemotePreferencesStore"));
|
|
12
|
+
const draftGenerator_1 = __importDefault(require("../../utilities/draftGenerator"));
|
|
13
|
+
const Calendar_vc_1 = __importDefault(require("../../viewControllers/Calendar.vc"));
|
|
14
|
+
const SpyEventManager_1 = __importDefault(require("./SpyEventManager"));
|
|
15
|
+
const SpyPeopleManager_1 = __importDefault(require("./SpyPeopleManager"));
|
|
16
|
+
class CalendarToolBeltStateMachineTestFactory {
|
|
17
|
+
static async StateMachine(views) {
|
|
18
|
+
const factory = views.getFactory();
|
|
19
|
+
if (!factory.hasController('calendar.calendar')) {
|
|
20
|
+
factory.mixinControllers({
|
|
21
|
+
//@ts-ignore
|
|
22
|
+
'calendar.calendar': Calendar_vc_1.default,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
const toolBeltVc = views.Controller('toolBelt', {});
|
|
26
|
+
const event = heartwood_view_controllers_1.calendarSeeder.generateEventValues();
|
|
27
|
+
const calendarVc = views.Controller('calendar.calendar', {
|
|
28
|
+
onAddDraftEvent: () => { },
|
|
29
|
+
onEventSwapped(draft, saved) {
|
|
30
|
+
return events.silentlySwapEvent(draft.id, saved);
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
calendarVc.addEvent(event);
|
|
34
|
+
const sm = new heartwood_view_controllers_1.ToolBeltStateMachine({
|
|
35
|
+
vcFactory: views.getFactory(),
|
|
36
|
+
toolBeltVc,
|
|
37
|
+
connectToApi: async () => spruce_test_fixtures_1.fake.getClient(),
|
|
38
|
+
context: Object.assign(Object.assign({}, views.getRouter().buildLoadOptions()), { event,
|
|
39
|
+
calendarVc, cancelEvent: () => { } }),
|
|
40
|
+
});
|
|
41
|
+
const connectToApi = async () => spruce_test_fixtures_1.fake.getClient();
|
|
42
|
+
const preferences = new FakeRemotePreferences({ connectToApi });
|
|
43
|
+
const remoteEventsStore = new FakeRemoteEventStore();
|
|
44
|
+
const events = new SpyEventManager_1.default({
|
|
45
|
+
calendarVc,
|
|
46
|
+
sm,
|
|
47
|
+
dates: calendar_utils_1.dateUtil,
|
|
48
|
+
remoteVc: {
|
|
49
|
+
fetchRemoteController: async (name) => factory.getController(name),
|
|
50
|
+
},
|
|
51
|
+
askForUpdateStrategy: async () => {
|
|
52
|
+
return 'all';
|
|
53
|
+
},
|
|
54
|
+
events: remoteEventsStore,
|
|
55
|
+
preferences,
|
|
56
|
+
});
|
|
57
|
+
await events.load();
|
|
58
|
+
events.silentlyAddEvent(event);
|
|
59
|
+
const people = new SpyPeopleManager_1.default({
|
|
60
|
+
calendarVc,
|
|
61
|
+
connectToApi,
|
|
62
|
+
preferences,
|
|
63
|
+
getVisibleEvents: () => [],
|
|
64
|
+
});
|
|
65
|
+
await sm.updateContext({ events, people });
|
|
66
|
+
await sm.on('did-update-context', () => {
|
|
67
|
+
calendarVc.updateEvent(event.id, Object.assign({}, sm.getContext().event));
|
|
68
|
+
});
|
|
69
|
+
//@ts-ignore
|
|
70
|
+
return { stateMachine: sm, toolBeltVc, calendarVc, events };
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
exports.default = CalendarToolBeltStateMachineTestFactory;
|
|
74
|
+
class FakeRemotePreferences extends RemotePreferencesStore_1.default {
|
|
75
|
+
async loadPreferences() { }
|
|
76
|
+
async save() { }
|
|
77
|
+
}
|
|
78
|
+
class FakeRemoteEventStore {
|
|
79
|
+
async load(_options) { }
|
|
80
|
+
async persist(event) {
|
|
81
|
+
const e = Object.assign(Object.assign({ dateCreated: new Date().getTime() }, heartwood_view_controllers_1.calendarSeeder.generateEventValues()), event);
|
|
82
|
+
if (draftGenerator_1.default.isDraftId(e.id)) {
|
|
83
|
+
e.id = (0, test_utils_1.generateId)();
|
|
84
|
+
}
|
|
85
|
+
this.lastPersistedEvent = e;
|
|
86
|
+
return e;
|
|
87
|
+
}
|
|
88
|
+
setCalendarId(_id) { }
|
|
89
|
+
clearCalendarId() { }
|
|
90
|
+
getCalendarId() {
|
|
91
|
+
return undefined;
|
|
92
|
+
}
|
|
93
|
+
async waitForPendingSaves() { }
|
|
94
|
+
async cancelEvent(_id) { }
|
|
95
|
+
async getSchedules(_options) {
|
|
96
|
+
return [];
|
|
97
|
+
}
|
|
98
|
+
async getEventTypes() {
|
|
99
|
+
return [];
|
|
100
|
+
}
|
|
101
|
+
async getCalendars() {
|
|
102
|
+
return [];
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
exports.FakeRemoteEventStore = FakeRemoteEventStore;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { SpruceSchemas } from '@sprucelabs/calendar-utils';
|
|
2
|
+
import { ToolBeltViewController } from '@sprucelabs/heartwood-view-controllers';
|
|
3
|
+
import { ViewFixture } from '@sprucelabs/spruce-test-fixtures';
|
|
4
|
+
import { GetScheduleOptions, RemoteEventStore } from '../../stores/RemoteEventStore';
|
|
5
|
+
import { CalendarToolBeltStateMachine, UpdateEvent } from '../../types/calendar.types';
|
|
6
|
+
import CalendarViewController from '../../viewControllers/Calendar.vc';
|
|
7
|
+
import SpyEventManager from './SpyEventManager';
|
|
8
|
+
export default class CalendarToolBeltStateMachineTestFactory {
|
|
9
|
+
static StateMachine(views: ViewFixture): Promise<{
|
|
10
|
+
stateMachine: CalendarToolBeltStateMachine;
|
|
11
|
+
toolBeltVc: ToolBeltViewController;
|
|
12
|
+
calendarVc: CalendarViewController;
|
|
13
|
+
events: SpyEventManager;
|
|
14
|
+
}>;
|
|
15
|
+
}
|
|
16
|
+
declare module '@sprucelabs/heartwood-view-controllers/build/types/heartwood.types' {
|
|
17
|
+
interface ViewControllerMap {
|
|
18
|
+
'calendar.calendar': CalendarViewController;
|
|
19
|
+
}
|
|
20
|
+
interface ViewControllerOptionsMap {
|
|
21
|
+
'calendar.calendar': ConstructorParameters<typeof CalendarViewController>[0];
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export declare class FakeRemoteEventStore implements RemoteEventStore {
|
|
25
|
+
lastPersistedEvent?: SpruceSchemas.CalendarUtils.v2021_05_19.CalendarEvent;
|
|
26
|
+
load(_options: {
|
|
27
|
+
organizationId: string;
|
|
28
|
+
locationId: string;
|
|
29
|
+
}): Promise<void>;
|
|
30
|
+
persist(event: UpdateEvent): Promise<SpruceSchemas.CalendarUtils.v2021_05_19.CalendarEvent>;
|
|
31
|
+
setCalendarId(_id: string): void;
|
|
32
|
+
clearCalendarId(): void;
|
|
33
|
+
getCalendarId(): string | undefined;
|
|
34
|
+
waitForPendingSaves(): Promise<void>;
|
|
35
|
+
cancelEvent(_id: string): Promise<void>;
|
|
36
|
+
getSchedules(_options: GetScheduleOptions): Promise<SpruceSchemas.HeartwoodViewControllers.v2021_02_11.CalendarEvent[]>;
|
|
37
|
+
getEventTypes(): Promise<SpruceSchemas.Calendar.v2021_05_19.CalendarEventType[]>;
|
|
38
|
+
getCalendars(): Promise<SpruceSchemas.Calendar.v2021_05_19.Calendar[]>;
|
|
39
|
+
}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { dateUtil } from '@sprucelabs/calendar-utils';
|
|
11
|
+
import { calendarSeeder, ToolBeltStateMachine, } from '@sprucelabs/heartwood-view-controllers';
|
|
12
|
+
import { fake } from '@sprucelabs/spruce-test-fixtures';
|
|
13
|
+
import { generateId } from '@sprucelabs/test-utils';
|
|
14
|
+
import RemotePreferencesStore from '../../stores/RemotePreferencesStore.js';
|
|
15
|
+
import draftEventGenerator from '../../utilities/draftGenerator.js';
|
|
16
|
+
import CalendarViewController from '../../viewControllers/Calendar.vc.js';
|
|
17
|
+
import SpyEventManager from './SpyEventManager.js';
|
|
18
|
+
import SpyPeopleManager from './SpyPeopleManager.js';
|
|
19
|
+
export default class CalendarToolBeltStateMachineTestFactory {
|
|
20
|
+
static StateMachine(views) {
|
|
21
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
22
|
+
const factory = views.getFactory();
|
|
23
|
+
if (!factory.hasController('calendar.calendar')) {
|
|
24
|
+
factory.mixinControllers({
|
|
25
|
+
//@ts-ignore
|
|
26
|
+
'calendar.calendar': CalendarViewController,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
const toolBeltVc = views.Controller('toolBelt', {});
|
|
30
|
+
const event = calendarSeeder.generateEventValues();
|
|
31
|
+
const calendarVc = views.Controller('calendar.calendar', {
|
|
32
|
+
onAddDraftEvent: () => { },
|
|
33
|
+
onEventSwapped(draft, saved) {
|
|
34
|
+
return events.silentlySwapEvent(draft.id, saved);
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
calendarVc.addEvent(event);
|
|
38
|
+
const sm = new ToolBeltStateMachine({
|
|
39
|
+
vcFactory: views.getFactory(),
|
|
40
|
+
toolBeltVc,
|
|
41
|
+
connectToApi: () => __awaiter(this, void 0, void 0, function* () { return fake.getClient(); }),
|
|
42
|
+
context: Object.assign(Object.assign({}, views.getRouter().buildLoadOptions()), { event,
|
|
43
|
+
calendarVc, cancelEvent: () => { } }),
|
|
44
|
+
});
|
|
45
|
+
const connectToApi = () => __awaiter(this, void 0, void 0, function* () { return fake.getClient(); });
|
|
46
|
+
const preferences = new FakeRemotePreferences({ connectToApi });
|
|
47
|
+
const remoteEventsStore = new FakeRemoteEventStore();
|
|
48
|
+
const events = new SpyEventManager({
|
|
49
|
+
calendarVc,
|
|
50
|
+
sm,
|
|
51
|
+
dates: dateUtil,
|
|
52
|
+
remoteVc: {
|
|
53
|
+
fetchRemoteController: (name) => __awaiter(this, void 0, void 0, function* () { return factory.getController(name); }),
|
|
54
|
+
},
|
|
55
|
+
askForUpdateStrategy: () => __awaiter(this, void 0, void 0, function* () {
|
|
56
|
+
return 'all';
|
|
57
|
+
}),
|
|
58
|
+
events: remoteEventsStore,
|
|
59
|
+
preferences,
|
|
60
|
+
});
|
|
61
|
+
yield events.load();
|
|
62
|
+
events.silentlyAddEvent(event);
|
|
63
|
+
const people = new SpyPeopleManager({
|
|
64
|
+
calendarVc,
|
|
65
|
+
connectToApi,
|
|
66
|
+
preferences,
|
|
67
|
+
getVisibleEvents: () => [],
|
|
68
|
+
});
|
|
69
|
+
yield sm.updateContext({ events, people });
|
|
70
|
+
yield sm.on('did-update-context', () => {
|
|
71
|
+
calendarVc.updateEvent(event.id, Object.assign({}, sm.getContext().event));
|
|
72
|
+
});
|
|
73
|
+
//@ts-ignore
|
|
74
|
+
return { stateMachine: sm, toolBeltVc, calendarVc, events };
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
class FakeRemotePreferences extends RemotePreferencesStore {
|
|
79
|
+
loadPreferences() {
|
|
80
|
+
return __awaiter(this, void 0, void 0, function* () { });
|
|
81
|
+
}
|
|
82
|
+
save() {
|
|
83
|
+
return __awaiter(this, void 0, void 0, function* () { });
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
export class FakeRemoteEventStore {
|
|
87
|
+
load(_options) {
|
|
88
|
+
return __awaiter(this, void 0, void 0, function* () { });
|
|
89
|
+
}
|
|
90
|
+
persist(event) {
|
|
91
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
92
|
+
const e = Object.assign(Object.assign({ dateCreated: new Date().getTime() }, calendarSeeder.generateEventValues()), event);
|
|
93
|
+
if (draftEventGenerator.isDraftId(e.id)) {
|
|
94
|
+
e.id = generateId();
|
|
95
|
+
}
|
|
96
|
+
this.lastPersistedEvent = e;
|
|
97
|
+
return e;
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
setCalendarId(_id) { }
|
|
101
|
+
clearCalendarId() { }
|
|
102
|
+
getCalendarId() {
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
waitForPendingSaves() {
|
|
106
|
+
return __awaiter(this, void 0, void 0, function* () { });
|
|
107
|
+
}
|
|
108
|
+
cancelEvent(_id) {
|
|
109
|
+
return __awaiter(this, void 0, void 0, function* () { });
|
|
110
|
+
}
|
|
111
|
+
getSchedules(_options) {
|
|
112
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
113
|
+
return [];
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
getEventTypes() {
|
|
117
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
118
|
+
return [];
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
getCalendars() {
|
|
122
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
123
|
+
return [];
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}
|
|
@@ -5,7 +5,7 @@ import { CalendarToolBeltStateMachine } from '../types/calendar.types';
|
|
|
5
5
|
import CalendarEventManager from '../utilities/CalendarEventManager';
|
|
6
6
|
import CalendarPeopleManager from '../utilities/CalendarPeopleManager';
|
|
7
7
|
import CalendarViewController from '../viewControllers/Calendar.vc';
|
|
8
|
-
export default class RootSkillViewController extends AbstractSkillViewController<
|
|
8
|
+
export default class RootSkillViewController extends AbstractSkillViewController<RootArgs> {
|
|
9
9
|
static id: string;
|
|
10
10
|
private calendarVc;
|
|
11
11
|
private toolBeltVc;
|
|
@@ -56,7 +56,7 @@ export default class RootSkillViewController extends AbstractSkillViewController
|
|
|
56
56
|
renderToolBelt(): SpruceSchemas.HeartwoodViewControllers.v2021_02_11.ToolBelt;
|
|
57
57
|
getCalendarSelectVc(): import("../viewControllers/CalendarSelectTool.vc").default | undefined;
|
|
58
58
|
getCalendarVc(): CalendarViewController;
|
|
59
|
-
load(options: SkillViewControllerLoadOptions<
|
|
59
|
+
load(options: SkillViewControllerLoadOptions<RootArgs>): Promise<void>;
|
|
60
60
|
private setupEventListeners;
|
|
61
61
|
private handleDidCancelEvent;
|
|
62
62
|
private handleDidCreateOrUpdate;
|
|
@@ -73,7 +73,7 @@ export default class RootSkillViewController extends AbstractSkillViewController
|
|
|
73
73
|
render(): SpruceSchemas.HeartwoodViewControllers.v2021_02_11.SkillView;
|
|
74
74
|
}
|
|
75
75
|
export declare type CalendarPerson = SpruceSchemas.HeartwoodViewControllers.v2021_02_11.CalendarPerson;
|
|
76
|
-
interface
|
|
76
|
+
export interface RootArgs {
|
|
77
77
|
startDate?: number;
|
|
78
|
+
visiblePeopleIds?: string[];
|
|
78
79
|
}
|
|
79
|
-
export {};
|
|
@@ -305,13 +305,16 @@ export default class RootSkillViewController extends AbstractSkillViewController
|
|
|
305
305
|
});
|
|
306
306
|
yield router.redirect('heartwood.root');
|
|
307
307
|
}
|
|
308
|
-
const { startDate = this.dates.date() } = args;
|
|
308
|
+
const { startDate = this.dates.date(), visiblePeopleIds } = args;
|
|
309
309
|
yield this.calendarVc.renderOnce(() => __awaiter(this, void 0, void 0, function* () {
|
|
310
310
|
this.syncOffsetWithLocale(locale);
|
|
311
311
|
yield this.calendarVc.setStartDate(startDate);
|
|
312
312
|
}));
|
|
313
313
|
yield this.transitionToRoot();
|
|
314
314
|
this.setSelectedDateInDateSelectVc(startDate);
|
|
315
|
+
if (visiblePeopleIds) {
|
|
316
|
+
yield this.people.setVisiblePeopleIds(visiblePeopleIds);
|
|
317
|
+
}
|
|
315
318
|
yield this.waitUntilDoneSaving();
|
|
316
319
|
});
|
|
317
320
|
}
|
|
@@ -33,7 +33,7 @@ export default class CalendarPeopleManager extends AbstractEventEmitter<PeopleCo
|
|
|
33
33
|
private setVisibleToWorking;
|
|
34
34
|
private getWorkingPeopleIds;
|
|
35
35
|
private getWorkingPeople;
|
|
36
|
-
|
|
36
|
+
setVisiblePeopleIds(visible: string[], options?: SetVisiblePeolpeOptions): Promise<void>;
|
|
37
37
|
setPersonVisibility(id: string, shouldBeVisible: boolean): Promise<void>;
|
|
38
38
|
private emitDidUpdate;
|
|
39
39
|
}
|
|
@@ -5,7 +5,7 @@ import { CalendarToolBeltStateMachine } from '../types/calendar.types';
|
|
|
5
5
|
import CalendarEventManager from '../utilities/CalendarEventManager';
|
|
6
6
|
import CalendarPeopleManager from '../utilities/CalendarPeopleManager';
|
|
7
7
|
import CalendarViewController from '../viewControllers/Calendar.vc';
|
|
8
|
-
export default class RootSkillViewController extends AbstractSkillViewController<
|
|
8
|
+
export default class RootSkillViewController extends AbstractSkillViewController<RootArgs> {
|
|
9
9
|
static id: string;
|
|
10
10
|
private calendarVc;
|
|
11
11
|
private toolBeltVc;
|
|
@@ -56,7 +56,7 @@ export default class RootSkillViewController extends AbstractSkillViewController
|
|
|
56
56
|
renderToolBelt(): SpruceSchemas.HeartwoodViewControllers.v2021_02_11.ToolBelt;
|
|
57
57
|
getCalendarSelectVc(): import("../viewControllers/CalendarSelectTool.vc").default | undefined;
|
|
58
58
|
getCalendarVc(): CalendarViewController;
|
|
59
|
-
load(options: SkillViewControllerLoadOptions<
|
|
59
|
+
load(options: SkillViewControllerLoadOptions<RootArgs>): Promise<void>;
|
|
60
60
|
private setupEventListeners;
|
|
61
61
|
private handleDidCancelEvent;
|
|
62
62
|
private handleDidCreateOrUpdate;
|
|
@@ -73,7 +73,7 @@ export default class RootSkillViewController extends AbstractSkillViewController
|
|
|
73
73
|
render(): SpruceSchemas.HeartwoodViewControllers.v2021_02_11.SkillView;
|
|
74
74
|
}
|
|
75
75
|
export declare type CalendarPerson = SpruceSchemas.HeartwoodViewControllers.v2021_02_11.CalendarPerson;
|
|
76
|
-
interface
|
|
76
|
+
export interface RootArgs {
|
|
77
77
|
startDate?: number;
|
|
78
|
+
visiblePeopleIds?: string[];
|
|
78
79
|
}
|
|
79
|
-
export {};
|
|
@@ -268,13 +268,16 @@ class RootSkillViewController extends heartwood_view_controllers_1.AbstractSkill
|
|
|
268
268
|
});
|
|
269
269
|
await router.redirect('heartwood.root');
|
|
270
270
|
}
|
|
271
|
-
const { startDate = this.dates.date() } = args;
|
|
271
|
+
const { startDate = this.dates.date(), visiblePeopleIds } = args;
|
|
272
272
|
await this.calendarVc.renderOnce(async () => {
|
|
273
273
|
this.syncOffsetWithLocale(locale);
|
|
274
274
|
await this.calendarVc.setStartDate(startDate);
|
|
275
275
|
});
|
|
276
276
|
await this.transitionToRoot();
|
|
277
277
|
this.setSelectedDateInDateSelectVc(startDate);
|
|
278
|
+
if (visiblePeopleIds) {
|
|
279
|
+
await this.people.setVisiblePeopleIds(visiblePeopleIds);
|
|
280
|
+
}
|
|
278
281
|
await this.waitUntilDoneSaving();
|
|
279
282
|
}
|
|
280
283
|
async setupEventListeners() {
|
|
@@ -33,7 +33,7 @@ export default class CalendarPeopleManager extends AbstractEventEmitter<PeopleCo
|
|
|
33
33
|
private setVisibleToWorking;
|
|
34
34
|
private getWorkingPeopleIds;
|
|
35
35
|
private getWorkingPeople;
|
|
36
|
-
|
|
36
|
+
setVisiblePeopleIds(visible: string[], options?: SetVisiblePeolpeOptions): Promise<void>;
|
|
37
37
|
setPersonVisibility(id: string, shouldBeVisible: boolean): Promise<void>;
|
|
38
38
|
private emitDidUpdate;
|
|
39
39
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sprucelabs/spruce-calendar-components",
|
|
3
3
|
"description": "Calendar components for working with calendars and Sprucebot.",
|
|
4
|
-
"version": "22.
|
|
4
|
+
"version": "22.8.1",
|
|
5
5
|
"skill": {
|
|
6
6
|
"namespace": "calendar"
|
|
7
7
|
},
|
|
@@ -14,6 +14,10 @@
|
|
|
14
14
|
"module": "./build/esm/index-components.js",
|
|
15
15
|
"sideEffects": false,
|
|
16
16
|
"files": [
|
|
17
|
+
"build/__tests__/support/CalendarToolBeltStateMachineTestFactory.js",
|
|
18
|
+
"build/__tests__/support/CalendarToolBeltStateMachineTestFactory.d.ts",
|
|
19
|
+
"build/esm/__tests__/support/CalendarToolBeltStateMachineTestFactory.js",
|
|
20
|
+
"build/esm/__tests__/support/CalendarToolBeltStateMachineTestFactory.d.ts",
|
|
17
21
|
"build/__tests__/support/SpyEventManager.js",
|
|
18
22
|
"build/__tests__/support/SpyEventManager.d.ts",
|
|
19
23
|
"build/esm/__tests__/support/SpyEventManager.js",
|
|
@@ -166,7 +170,7 @@
|
|
|
166
170
|
"build/noSchedules/peopleToPeopleWithoutSchedules.d.ts",
|
|
167
171
|
"build/esm/noSchedules/peopleToPeopleWithoutSchedules.js",
|
|
168
172
|
"build/esm/noSchedules/peopleToPeopleWithoutSchedules.d.ts"
|
|
169
|
-
],
|
|
173
|
+
],
|
|
170
174
|
"keywords": [],
|
|
171
175
|
"scripts": {
|
|
172
176
|
"release": "npm publish"
|