@sprucelabs/spruce-calendar-components 28.3.102 → 29.0.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/build/.spruce/errors/errors.types.d.ts +12 -12
- package/build/.spruce/errors/errors.types.js +0 -2
- package/build/.spruce/errors/options.types.d.ts +2 -2
- package/build/.spruce/schemas/schemas.types.d.ts +3287 -2737
- package/build/.spruce/schemas/schemas.types.js +1 -2
- package/build/__tests__/support/CalendarToolBeltStateMachineTestFactory.js +24 -13
- package/build/__tests__/support/SpyEventManager.js +1 -1
- package/build/__tests__/support/SpyPeopleManager.js +4 -4
- package/build/__tests__/support/SpyRemoteEventStore.js +4 -4
- package/build/__tests__/support/utilities/calendarAssert.js +2 -4
- package/build/__tests__/support/utilities/calendarSkillAssert.js +25 -10
- package/build/__tests__/support/utilities/calendarToolBeltInteractor.js +3 -1
- package/build/calendar/Calendar.vc.js +52 -43
- package/build/calendar/CalendarEventManager.js +86 -66
- package/build/calendar/CalendarPeopleManager.js +17 -16
- package/build/calendar/CalendarPersister.d.ts +2 -2
- package/build/calendar/CalendarPersister.js +13 -8
- package/build/calendar/calculateCalendarEventDifferences.js +6 -3
- package/build/constants.js +1 -2
- package/build/errors/SpruceError.d.ts +1 -1
- package/build/errors/SpruceError.js +1 -1
- package/build/esm/.spruce/errors/errors.types.d.ts +12 -12
- package/build/esm/.spruce/errors/errors.types.js +0 -2
- package/build/esm/.spruce/errors/options.types.d.ts +2 -2
- package/build/esm/.spruce/schemas/schemas.types.d.ts +3287 -2737
- package/build/esm/.spruce/schemas/schemas.types.js +1 -2
- package/build/esm/__tests__/support/utilities/calendarAssert.js +0 -1
- package/build/esm/__tests__/support/utilities/calendarSkillAssert.js +2 -2
- package/build/esm/calendar/Calendar.vc.js +0 -3
- package/build/esm/calendar/CalendarEventManager.js +3 -2
- package/build/esm/calendar/CalendarPeopleManager.js +0 -2
- package/build/esm/calendar/CalendarPersister.d.ts +2 -2
- package/build/esm/errors/SpruceError.d.ts +1 -1
- package/build/esm/noSchedules/peopleToPeopleWithoutSchedules.d.ts +1 -1
- package/build/esm/root/Root.svc.d.ts +2 -2
- package/build/esm/root/Root.svc.js +4 -2
- package/build/esm/stores/RemoteEventStore.js +7 -4
- package/build/esm/toolBelt/CalendarToolRegistrar.js +4 -1
- package/build/esm/toolBelt/states/AbstractCalendarEventToolBeltState.js +5 -2
- package/build/esm/toolBelt/states/RootToolBeltState.js +2 -1
- package/build/esm/tools/CalendarSelectTool.vc.js +5 -2
- package/build/esm/tools/EventRepeatingTool.vc.js +3 -1
- package/build/esm/tools/PersonSelectTool.vc.js +8 -3
- package/build/esm/viewControllers/DateSelectCard.vc.js +1 -4
- package/build/esm/viewControllers/RepeatingControlsList.vc.js +2 -1
- package/build/noSchedules/peopleToPeopleWithoutSchedules.d.ts +1 -1
- package/build/root/Root.svc.d.ts +2 -2
- package/build/root/Root.svc.js +73 -48
- package/build/stores/RemoteEventStore.js +60 -38
- package/build/stores/RemotePreferencesStore.js +10 -4
- package/build/toolBelt/CalendarToolRegistrar.js +8 -9
- package/build/toolBelt/CalendarToolTestFactory.js +10 -4
- package/build/toolBelt/states/AbstractCalendarEventToolBeltState.js +37 -27
- package/build/toolBelt/states/PrerequisitesToolBeltState.js +31 -22
- package/build/toolBelt/states/RootToolBeltState.js +23 -19
- package/build/toolBelt/states/UniversalEventToolBeltState.js +1 -4
- package/build/toolBelt/states/makeEventTyped.js +1 -2
- package/build/tools/CalendarSelectTool.vc.js +12 -6
- package/build/tools/EventDateTimeTool.vc.js +10 -6
- package/build/tools/EventDurationTool.vc.js +8 -5
- package/build/tools/EventRepeatingTool.vc.js +23 -7
- package/build/tools/EventTitleTool.vc.js +8 -5
- package/build/tools/PersonSelectTool.vc.js +17 -9
- package/build/utilities/draftGenerator.js +1 -1
- package/build/viewControllers/DateSelectCard.vc.js +12 -7
- package/build/viewControllers/EventControlsCard.vc.js +9 -5
- package/build/viewControllers/RepeatingControlsList.vc.js +52 -58
- package/build/viewControllers/SelectUpdateRepeatingStrategyCard.vc.js +7 -4
- package/build/viewControllers/UniversalCalendarEvent.vc.js +1 -1
- package/package.json +1 -1
|
@@ -3,8 +3,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.RootToolBeltState = void 0;
|
|
4
4
|
const schema_1 = require("@sprucelabs/schema");
|
|
5
5
|
class RootToolBeltState {
|
|
6
|
+
id = 'root';
|
|
7
|
+
calendarSelectCardVc;
|
|
8
|
+
toolBeltVc;
|
|
9
|
+
personSelectVc;
|
|
10
|
+
sm;
|
|
11
|
+
scopeSelectionTool;
|
|
12
|
+
dateSelectVc;
|
|
13
|
+
lastSelectedDate;
|
|
14
|
+
people;
|
|
15
|
+
events;
|
|
16
|
+
dates;
|
|
6
17
|
constructor(options) {
|
|
7
|
-
this.id = 'root';
|
|
8
18
|
const { people, events, dates } = (0, schema_1.assertOptions)(options, [
|
|
9
19
|
'people',
|
|
10
20
|
'events',
|
|
@@ -18,8 +28,7 @@ class RootToolBeltState {
|
|
|
18
28
|
return this.calendarSelectCardVc;
|
|
19
29
|
}
|
|
20
30
|
CalendarSelectVc() {
|
|
21
|
-
|
|
22
|
-
return (_a = this.sm) === null || _a === void 0 ? void 0 : _a.Controller('calendar.calendar-select-tool', {
|
|
31
|
+
return this.sm?.Controller('calendar.calendar-select-tool', {
|
|
23
32
|
events: this.events,
|
|
24
33
|
});
|
|
25
34
|
}
|
|
@@ -54,35 +63,32 @@ class RootToolBeltState {
|
|
|
54
63
|
await events.setCurrentDate(date);
|
|
55
64
|
}
|
|
56
65
|
resetToolBelt() {
|
|
57
|
-
var _a;
|
|
58
66
|
if (!this.scopeSelectionTool) {
|
|
59
|
-
this.scopeSelectionTool =
|
|
67
|
+
this.scopeSelectionTool =
|
|
68
|
+
this.toolBeltVc?.getTool('scope-selection');
|
|
60
69
|
}
|
|
61
70
|
this.toolBeltVc.clearTools();
|
|
62
71
|
}
|
|
63
72
|
optionallyDropInScopeSelectionTool() {
|
|
64
|
-
var _a, _b;
|
|
65
73
|
if (this.scopeSelectionTool &&
|
|
66
|
-
!
|
|
67
|
-
|
|
74
|
+
!this.toolBeltVc?.getTool('scope-selection')) {
|
|
75
|
+
this.toolBeltVc?.addTool(this.scopeSelectionTool);
|
|
68
76
|
}
|
|
69
77
|
}
|
|
70
78
|
setupCalendarSelectVc(stateMachine) {
|
|
71
|
-
var _a, _b, _c;
|
|
72
79
|
this.calendarSelectCardVc = this.CalendarSelectVc();
|
|
73
|
-
|
|
80
|
+
this.toolBeltVc?.addTool({
|
|
74
81
|
lineIcon: 'calendar',
|
|
75
82
|
id: 'calendars',
|
|
76
|
-
card:
|
|
83
|
+
card: this.calendarSelectCardVc?.render(),
|
|
77
84
|
});
|
|
78
|
-
return
|
|
85
|
+
return this.calendarSelectCardVc?.load(stateMachine.getContext());
|
|
79
86
|
}
|
|
80
87
|
async optionallyAddPeopleCard(scope) {
|
|
81
|
-
var _a, _b;
|
|
82
88
|
const location = await scope.getCurrentLocation();
|
|
83
|
-
if (location && !
|
|
89
|
+
if (location && !this.toolBeltVc?.getTool('people')) {
|
|
84
90
|
this.personSelectVc = this.PersonSelectVc();
|
|
85
|
-
|
|
91
|
+
this.toolBeltVc?.addTool({
|
|
86
92
|
lineIcon: 'user',
|
|
87
93
|
id: 'people',
|
|
88
94
|
card: this.personSelectVc.render(),
|
|
@@ -100,17 +106,15 @@ class RootToolBeltState {
|
|
|
100
106
|
return this.dateSelectVc.getSelectedDate();
|
|
101
107
|
}
|
|
102
108
|
setSelectedDate(year, month, day) {
|
|
103
|
-
var _a;
|
|
104
109
|
this.lastSelectedDate = {
|
|
105
110
|
year,
|
|
106
111
|
month,
|
|
107
112
|
day,
|
|
108
113
|
};
|
|
109
|
-
|
|
114
|
+
this.dateSelectVc?.setSelectedDate(year, month, day);
|
|
110
115
|
}
|
|
111
116
|
PersonSelectVc() {
|
|
112
|
-
|
|
113
|
-
return (_a = this.sm) === null || _a === void 0 ? void 0 : _a.Controller('calendar.person-select-tool', {
|
|
117
|
+
return this.sm?.Controller('calendar.person-select-tool', {
|
|
114
118
|
people: this.people,
|
|
115
119
|
});
|
|
116
120
|
}
|
|
@@ -5,10 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const AbstractCalendarEventToolBeltState_1 = __importDefault(require("./AbstractCalendarEventToolBeltState"));
|
|
7
7
|
class UniversalEventToolBeltState extends AbstractCalendarEventToolBeltState_1.default {
|
|
8
|
-
|
|
9
|
-
super(...arguments);
|
|
10
|
-
this.id = 'universal';
|
|
11
|
-
}
|
|
8
|
+
id = 'universal';
|
|
12
9
|
async load(stateMachine) {
|
|
13
10
|
await super.load(stateMachine);
|
|
14
11
|
await this.addTool({
|
|
@@ -5,10 +5,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const draftGenerator_1 = __importDefault(require("../../utilities/draftGenerator"));
|
|
7
7
|
function makeEventTyped(event, type) {
|
|
8
|
-
var _a;
|
|
9
8
|
const { timeBlocks } = event;
|
|
10
9
|
timeBlocks[0].title = draftGenerator_1.default.generateTitle(type.name);
|
|
11
|
-
timeBlocks[0].leftIcons = [{ icon:
|
|
10
|
+
timeBlocks[0].leftIcons = [{ icon: type.lineIcon ?? 'coffee', hint: null }];
|
|
12
11
|
return event;
|
|
13
12
|
}
|
|
14
13
|
exports.default = makeEventTyped;
|
|
@@ -3,10 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const heartwood_view_controllers_1 = require("@sprucelabs/heartwood-view-controllers");
|
|
4
4
|
const schema_1 = require("@sprucelabs/schema");
|
|
5
5
|
class CalendarSelectCardViewController extends heartwood_view_controllers_1.AbstractViewController {
|
|
6
|
+
static id = 'calendar-select-tool';
|
|
7
|
+
isLoaded = false;
|
|
8
|
+
activeVc;
|
|
9
|
+
events;
|
|
10
|
+
selectedCalendarIds = [];
|
|
11
|
+
changePromise;
|
|
6
12
|
constructor(options) {
|
|
7
13
|
super(options);
|
|
8
|
-
this.isLoaded = false;
|
|
9
|
-
this.selectedCalendarIds = [];
|
|
10
14
|
const { events } = (0, schema_1.assertOptions)(options, ['events']);
|
|
11
15
|
this.events = events;
|
|
12
16
|
this.selectedCalendarIds = this.events.getVisibleCalendarIds();
|
|
@@ -22,7 +26,9 @@ class CalendarSelectCardViewController extends heartwood_view_controllers_1.Abst
|
|
|
22
26
|
noResultsRow: {
|
|
23
27
|
cells: [
|
|
24
28
|
{
|
|
25
|
-
text: {
|
|
29
|
+
text: {
|
|
30
|
+
content: "You don't have any calendars yet!",
|
|
31
|
+
},
|
|
26
32
|
},
|
|
27
33
|
],
|
|
28
34
|
},
|
|
@@ -44,7 +50,8 @@ class CalendarSelectCardViewController extends heartwood_view_controllers_1.Abst
|
|
|
44
50
|
value: this.selectedCalendarIds.indexOf(calendar.id) > -1,
|
|
45
51
|
onChange: async (isVisible) => {
|
|
46
52
|
const calendarId = calendar.id;
|
|
47
|
-
this.changePromise =
|
|
53
|
+
this.changePromise =
|
|
54
|
+
this.events.setCalendarVisibility(calendarId, isVisible);
|
|
48
55
|
const p = this.changePromise;
|
|
49
56
|
return p;
|
|
50
57
|
},
|
|
@@ -84,7 +91,7 @@ class CalendarSelectCardViewController extends heartwood_view_controllers_1.Abst
|
|
|
84
91
|
const org = await scope.getCurrentOrganization();
|
|
85
92
|
if (org) {
|
|
86
93
|
this.activeVc.setTarget({
|
|
87
|
-
organizationId: org
|
|
94
|
+
organizationId: org?.id,
|
|
88
95
|
});
|
|
89
96
|
}
|
|
90
97
|
await this.activeVc.load();
|
|
@@ -94,5 +101,4 @@ class CalendarSelectCardViewController extends heartwood_view_controllers_1.Abst
|
|
|
94
101
|
return this.activeVc.render();
|
|
95
102
|
}
|
|
96
103
|
}
|
|
97
|
-
CalendarSelectCardViewController.id = 'calendar-select-tool';
|
|
98
104
|
exports.default = CalendarSelectCardViewController;
|
|
@@ -3,9 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const heartwood_view_controllers_1 = require("@sprucelabs/heartwood-view-controllers");
|
|
4
4
|
const schema_1 = require("@sprucelabs/schema");
|
|
5
5
|
class EventDateTimeToolViewController extends heartwood_view_controllers_1.AbstractViewController {
|
|
6
|
+
static id = 'event-date-time-tool';
|
|
7
|
+
shouldPersistContextChangesImmediately = true;
|
|
8
|
+
cardVc;
|
|
9
|
+
formVc;
|
|
10
|
+
updateContext;
|
|
11
|
+
getContext;
|
|
12
|
+
calendarVc;
|
|
6
13
|
constructor(options) {
|
|
7
14
|
super(options);
|
|
8
|
-
this.shouldPersistContextChangesImmediately = true;
|
|
9
15
|
this.updateContext = options.updateContext;
|
|
10
16
|
this.getContext = options.getContext;
|
|
11
17
|
this.calendarVc = this.Controller('calendar', {
|
|
@@ -80,7 +86,7 @@ class EventDateTimeToolViewController extends heartwood_view_controllers_1.Abstr
|
|
|
80
86
|
return shouldBail;
|
|
81
87
|
}
|
|
82
88
|
getSelectedDate(dateTimeMs) {
|
|
83
|
-
const { year, month, day } = this.dates.splitDate(dateTimeMs
|
|
89
|
+
const { year, month, day } = this.dates.splitDate(dateTimeMs ?? this.event.startDateTimeMs);
|
|
84
90
|
return { year, month, day };
|
|
85
91
|
}
|
|
86
92
|
CardVc() {
|
|
@@ -123,12 +129,11 @@ class EventDateTimeToolViewController extends heartwood_view_controllers_1.Abstr
|
|
|
123
129
|
this.calendarVc.setSelectedDates([this.getSelectedDate()]);
|
|
124
130
|
}
|
|
125
131
|
async handleChangeForm({ values }) {
|
|
126
|
-
var _a;
|
|
127
132
|
if (values.startDateTime) {
|
|
128
|
-
await
|
|
133
|
+
await this.updateContext?.({
|
|
129
134
|
//@ts-ignore
|
|
130
135
|
'event.startDateTimeMs': values.startDateTime,
|
|
131
|
-
})
|
|
136
|
+
});
|
|
132
137
|
}
|
|
133
138
|
}
|
|
134
139
|
getFormVc() {
|
|
@@ -144,7 +149,6 @@ class EventDateTimeToolViewController extends heartwood_view_controllers_1.Abstr
|
|
|
144
149
|
return this.cardVc.render();
|
|
145
150
|
}
|
|
146
151
|
}
|
|
147
|
-
EventDateTimeToolViewController.id = 'event-date-time-tool';
|
|
148
152
|
exports.default = EventDateTimeToolViewController;
|
|
149
153
|
const schema = (0, schema_1.buildSchema)({
|
|
150
154
|
id: ' startDateTime',
|
|
@@ -3,9 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const heartwood_view_controllers_1 = require("@sprucelabs/heartwood-view-controllers");
|
|
4
4
|
const schema_1 = require("@sprucelabs/schema");
|
|
5
5
|
class EventDurationToolViewController extends heartwood_view_controllers_1.AbstractViewController {
|
|
6
|
+
static id = 'event-duration-tool';
|
|
7
|
+
shouldPersistContextChangesImmediately = false;
|
|
8
|
+
cardVc;
|
|
9
|
+
formVc;
|
|
10
|
+
getContextHandler;
|
|
11
|
+
updateContextHandler;
|
|
6
12
|
constructor(options) {
|
|
7
13
|
super(options);
|
|
8
|
-
this.shouldPersistContextChangesImmediately = false;
|
|
9
14
|
const { getContext, updateContext } = options;
|
|
10
15
|
this.getContextHandler = getContext;
|
|
11
16
|
this.updateContextHandler = updateContext;
|
|
@@ -47,7 +52,7 @@ class EventDurationToolViewController extends heartwood_view_controllers_1.Abstr
|
|
|
47
52
|
async handleChangeForm() {
|
|
48
53
|
const durationMs = this.formVc.getValue('durationMs');
|
|
49
54
|
const duration = parseInt(durationMs, 10) / 1000 / 60;
|
|
50
|
-
const timeBlocks = this.event.timeBlocks.map((tb) => (
|
|
55
|
+
const timeBlocks = this.event.timeBlocks.map((tb) => ({ ...tb }));
|
|
51
56
|
timeBlocks[0].durationMinutes = duration;
|
|
52
57
|
await this.updateContextHandler({
|
|
53
58
|
//@ts-ignore
|
|
@@ -55,8 +60,7 @@ class EventDurationToolViewController extends heartwood_view_controllers_1.Abstr
|
|
|
55
60
|
});
|
|
56
61
|
}
|
|
57
62
|
getDurationMsFromEvent() {
|
|
58
|
-
|
|
59
|
-
if ((_a = this.event.timeBlocks) === null || _a === void 0 ? void 0 : _a[0]) {
|
|
63
|
+
if (this.event.timeBlocks?.[0]) {
|
|
60
64
|
return `${this.event.timeBlocks[0].durationMinutes * 60 * 1000}`;
|
|
61
65
|
}
|
|
62
66
|
return null;
|
|
@@ -79,7 +83,6 @@ class EventDurationToolViewController extends heartwood_view_controllers_1.Abstr
|
|
|
79
83
|
return this.cardVc.render();
|
|
80
84
|
}
|
|
81
85
|
}
|
|
82
|
-
EventDurationToolViewController.id = 'event-duration-tool';
|
|
83
86
|
exports.default = EventDurationToolViewController;
|
|
84
87
|
const labels = [
|
|
85
88
|
'15m',
|
|
@@ -3,6 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const heartwood_view_controllers_1 = require("@sprucelabs/heartwood-view-controllers");
|
|
4
4
|
const schema_1 = require("@sprucelabs/schema");
|
|
5
5
|
class EventRepeatingToolViewController extends heartwood_view_controllers_1.AbstractViewController {
|
|
6
|
+
static id = 'event-repeating-tool';
|
|
7
|
+
cardVc;
|
|
8
|
+
controlsListVc;
|
|
9
|
+
formVc;
|
|
10
|
+
getEvent;
|
|
11
|
+
updateContextHandler;
|
|
6
12
|
constructor(options) {
|
|
7
13
|
super(options);
|
|
8
14
|
const { getContext, updateContext } = options;
|
|
@@ -21,13 +27,15 @@ class EventRepeatingToolViewController extends heartwood_view_controllers_1.Abst
|
|
|
21
27
|
},
|
|
22
28
|
body: {
|
|
23
29
|
isBusy: false,
|
|
24
|
-
sections: [
|
|
30
|
+
sections: [
|
|
31
|
+
{ shouldBePadded: false, form: this.formVc.render() },
|
|
32
|
+
],
|
|
25
33
|
},
|
|
26
34
|
});
|
|
27
35
|
}
|
|
28
36
|
ControlsListVc() {
|
|
29
37
|
return this.Controller('calendar.repeating-controls-list', {
|
|
30
|
-
repeating:
|
|
38
|
+
repeating: { ...this.getEvent() },
|
|
31
39
|
didChangeRepeating: async (value) => {
|
|
32
40
|
const pass = this.handleDidChangeRepeating(value);
|
|
33
41
|
return pass;
|
|
@@ -35,19 +43,28 @@ class EventRepeatingToolViewController extends heartwood_view_controllers_1.Abst
|
|
|
35
43
|
});
|
|
36
44
|
}
|
|
37
45
|
handleDidChangeRepeating(value) {
|
|
38
|
-
var _a;
|
|
39
46
|
const cleaned = this.removeExtraRepeatingFields(value);
|
|
40
|
-
const updates =
|
|
47
|
+
const updates = {
|
|
48
|
+
repeats: undefined,
|
|
49
|
+
interval: undefined,
|
|
50
|
+
repeatsUntil: undefined,
|
|
51
|
+
occurrences: undefined,
|
|
52
|
+
daysOfWeek: undefined,
|
|
53
|
+
daysOfMonth: undefined,
|
|
54
|
+
...cleaned,
|
|
55
|
+
};
|
|
41
56
|
const keyedUpdates = {};
|
|
42
57
|
Object.keys(updates).forEach((k) => {
|
|
43
58
|
//@ts-ignore
|
|
44
59
|
keyedUpdates[`event.${k}`] = updates[k];
|
|
45
60
|
});
|
|
46
|
-
const pass =
|
|
61
|
+
const pass = this.updateContextHandler?.({
|
|
62
|
+
...keyedUpdates,
|
|
63
|
+
});
|
|
47
64
|
return pass;
|
|
48
65
|
}
|
|
49
66
|
removeExtraRepeatingFields(value) {
|
|
50
|
-
const cleaned =
|
|
67
|
+
const cleaned = { ...value };
|
|
51
68
|
delete cleaned.repeatAmount;
|
|
52
69
|
return cleaned;
|
|
53
70
|
}
|
|
@@ -83,7 +100,6 @@ class EventRepeatingToolViewController extends heartwood_view_controllers_1.Abst
|
|
|
83
100
|
return this.cardVc.render();
|
|
84
101
|
}
|
|
85
102
|
}
|
|
86
|
-
EventRepeatingToolViewController.id = 'event-repeating-tool';
|
|
87
103
|
exports.default = EventRepeatingToolViewController;
|
|
88
104
|
const schema = (0, schema_1.buildSchema)({
|
|
89
105
|
id: 'repeatingSchema',
|
|
@@ -3,6 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const heartwood_view_controllers_1 = require("@sprucelabs/heartwood-view-controllers");
|
|
4
4
|
const schema_1 = require("@sprucelabs/schema");
|
|
5
5
|
class EventTitleToolViewController extends heartwood_view_controllers_1.AbstractViewController {
|
|
6
|
+
static id = 'event-title-card';
|
|
7
|
+
cardVc;
|
|
8
|
+
formVc;
|
|
9
|
+
getContext;
|
|
10
|
+
updateContextHandler;
|
|
6
11
|
constructor(options) {
|
|
7
12
|
super(options);
|
|
8
13
|
const { getContext, updateContext } = options;
|
|
@@ -23,8 +28,7 @@ class EventTitleToolViewController extends heartwood_view_controllers_1.Abstract
|
|
|
23
28
|
});
|
|
24
29
|
}
|
|
25
30
|
FormVc() {
|
|
26
|
-
|
|
27
|
-
const timeBlock = (_b = (_a = this.getContext().event) === null || _a === void 0 ? void 0 : _a.timeBlocks) === null || _b === void 0 ? void 0 : _b[0];
|
|
31
|
+
const timeBlock = this.getContext().event?.timeBlocks?.[0];
|
|
28
32
|
return this.Controller('form', (0, heartwood_view_controllers_1.buildForm)({
|
|
29
33
|
schema: formSchema,
|
|
30
34
|
shouldShowSubmitControls: false,
|
|
@@ -35,8 +39,8 @@ class EventTitleToolViewController extends heartwood_view_controllers_1.Abstract
|
|
|
35
39
|
},
|
|
36
40
|
],
|
|
37
41
|
values: {
|
|
38
|
-
title: timeBlock
|
|
39
|
-
subtitle: timeBlock
|
|
42
|
+
title: timeBlock?.title,
|
|
43
|
+
subtitle: timeBlock?.subtitle,
|
|
40
44
|
},
|
|
41
45
|
}));
|
|
42
46
|
}
|
|
@@ -63,7 +67,6 @@ class EventTitleToolViewController extends heartwood_view_controllers_1.Abstract
|
|
|
63
67
|
return this.cardVc.render();
|
|
64
68
|
}
|
|
65
69
|
}
|
|
66
|
-
EventTitleToolViewController.id = 'event-title-card';
|
|
67
70
|
exports.default = EventTitleToolViewController;
|
|
68
71
|
const formSchema = (0, schema_1.buildSchema)({
|
|
69
72
|
id: 'titleSubtitle',
|
|
@@ -3,20 +3,25 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const heartwood_view_controllers_1 = require("@sprucelabs/heartwood-view-controllers");
|
|
4
4
|
const schema_1 = require("@sprucelabs/schema");
|
|
5
5
|
class PersonSelectToolViewController extends heartwood_view_controllers_1.AbstractViewController {
|
|
6
|
+
static id = 'person-select-tool';
|
|
7
|
+
shouldUpdateVisibilityOnToggleChange = true;
|
|
8
|
+
updatePromise;
|
|
6
9
|
get visiblePeopleIds() {
|
|
7
10
|
return this.people.getVisiblePeopleIds();
|
|
8
11
|
}
|
|
12
|
+
isLoaded = false;
|
|
9
13
|
get loggedInPersonId() {
|
|
10
|
-
|
|
11
|
-
return (_a = this.people.getLoggedInPerson()) === null || _a === void 0 ? void 0 : _a.id;
|
|
14
|
+
return this.people.getLoggedInPerson()?.id;
|
|
12
15
|
}
|
|
16
|
+
cardVc;
|
|
17
|
+
listVc;
|
|
18
|
+
modeButtonBarVc;
|
|
13
19
|
get mode() {
|
|
14
20
|
return this.people.getVisibilityMode();
|
|
15
21
|
}
|
|
22
|
+
people;
|
|
16
23
|
constructor(options) {
|
|
17
24
|
super(options);
|
|
18
|
-
this.shouldUpdateVisibilityOnToggleChange = true;
|
|
19
|
-
this.isLoaded = false;
|
|
20
25
|
const { people } = (0, schema_1.assertOptions)(options, ['people']);
|
|
21
26
|
this.people = people;
|
|
22
27
|
this.listVc = this.ListVc();
|
|
@@ -84,16 +89,19 @@ class PersonSelectToolViewController extends heartwood_view_controllers_1.Abstra
|
|
|
84
89
|
});
|
|
85
90
|
}
|
|
86
91
|
renderRow(person) {
|
|
87
|
-
var _a;
|
|
88
92
|
return {
|
|
89
93
|
id: person.id,
|
|
90
94
|
cells: [
|
|
91
95
|
{
|
|
92
|
-
avatars:
|
|
96
|
+
avatars: person.avatar?.mUri
|
|
97
|
+
? [person.avatar.mUri]
|
|
98
|
+
: undefined,
|
|
93
99
|
},
|
|
94
100
|
{
|
|
95
101
|
text: {
|
|
96
|
-
content: this.isPersonLoggedIn(person)
|
|
102
|
+
content: this.isPersonLoggedIn(person)
|
|
103
|
+
? 'You'
|
|
104
|
+
: person.casualName,
|
|
97
105
|
},
|
|
98
106
|
},
|
|
99
107
|
{
|
|
@@ -102,7 +110,8 @@ class PersonSelectToolViewController extends heartwood_view_controllers_1.Abstra
|
|
|
102
110
|
value: !!this.visiblePeopleIds.find((id) => id === person.id),
|
|
103
111
|
onChange: async (value) => {
|
|
104
112
|
if (this.shouldUpdateVisibilityOnToggleChange) {
|
|
105
|
-
this.updatePromise =
|
|
113
|
+
this.updatePromise =
|
|
114
|
+
this.people.setPersonVisibility(person.id, value ?? false);
|
|
106
115
|
}
|
|
107
116
|
},
|
|
108
117
|
},
|
|
@@ -153,5 +162,4 @@ class PersonSelectToolViewController extends heartwood_view_controllers_1.Abstra
|
|
|
153
162
|
return this.cardVc.render();
|
|
154
163
|
}
|
|
155
164
|
}
|
|
156
|
-
PersonSelectToolViewController.id = 'person-select-tool';
|
|
157
165
|
exports.default = PersonSelectToolViewController;
|
|
@@ -31,7 +31,7 @@ const draftEventGenerator = {
|
|
|
31
31
|
];
|
|
32
32
|
},
|
|
33
33
|
generateTitle(eventTypeName) {
|
|
34
|
-
return `New ${eventTypeName
|
|
34
|
+
return `New ${eventTypeName ?? 'event'}`;
|
|
35
35
|
},
|
|
36
36
|
};
|
|
37
37
|
exports.default = draftEventGenerator;
|
|
@@ -3,12 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const heartwood_view_controllers_1 = require("@sprucelabs/heartwood-view-controllers");
|
|
4
4
|
const schema_1 = require("@sprucelabs/schema");
|
|
5
5
|
class DateSelectCardViewController extends heartwood_view_controllers_1.AbstractViewController {
|
|
6
|
+
static id = 'date-select-card';
|
|
7
|
+
cardVc;
|
|
8
|
+
calendarVc;
|
|
9
|
+
dateSelectHandler;
|
|
6
10
|
constructor(options) {
|
|
7
11
|
super(options);
|
|
8
|
-
const { onSelectDate, startDate, selectedDate } = (0, schema_1.assertOptions)(options, [
|
|
9
|
-
'onSelectDate',
|
|
10
|
-
'startDate',
|
|
11
|
-
]);
|
|
12
|
+
const { onSelectDate, startDate, selectedDate } = (0, schema_1.assertOptions)(options, ['onSelectDate', 'startDate']);
|
|
12
13
|
this.dateSelectHandler = onSelectDate;
|
|
13
14
|
this.calendarVc = this.CalendarVc({
|
|
14
15
|
startDate,
|
|
@@ -23,7 +24,12 @@ class DateSelectCardViewController extends heartwood_view_controllers_1.Abstract
|
|
|
23
24
|
await this.calendarVc.setStartDate(startDate);
|
|
24
25
|
}
|
|
25
26
|
CalendarVc(options) {
|
|
26
|
-
return this.Controller('calendar',
|
|
27
|
+
return this.Controller('calendar', {
|
|
28
|
+
view: 'month',
|
|
29
|
+
onClickView: ({ dateTimeMs }) => this.handleDateSelect(dateTimeMs),
|
|
30
|
+
selectedDates: [],
|
|
31
|
+
...options,
|
|
32
|
+
});
|
|
27
33
|
}
|
|
28
34
|
async handleDateSelect(dateTimeMs) {
|
|
29
35
|
const { year, month, day } = this.dates.splitDate(dateTimeMs);
|
|
@@ -32,7 +38,7 @@ class DateSelectCardViewController extends heartwood_view_controllers_1.Abstract
|
|
|
32
38
|
this.calendarVc.clearSelectedDates();
|
|
33
39
|
this.calendarVc.selectDate(year, month, day);
|
|
34
40
|
});
|
|
35
|
-
await this.dateSelectHandler(dateTimeMs
|
|
41
|
+
await this.dateSelectHandler(dateTimeMs ?? 0);
|
|
36
42
|
}
|
|
37
43
|
CardVc() {
|
|
38
44
|
return this.Controller('card', {
|
|
@@ -64,5 +70,4 @@ class DateSelectCardViewController extends heartwood_view_controllers_1.Abstract
|
|
|
64
70
|
return this.cardVc.render();
|
|
65
71
|
}
|
|
66
72
|
}
|
|
67
|
-
DateSelectCardViewController.id = 'date-select-card';
|
|
68
73
|
exports.default = DateSelectCardViewController;
|
|
@@ -7,9 +7,15 @@ const heartwood_view_controllers_1 = require("@sprucelabs/heartwood-view-control
|
|
|
7
7
|
const schema_1 = require("@sprucelabs/schema");
|
|
8
8
|
const draftGenerator_1 = __importDefault(require("../utilities/draftGenerator"));
|
|
9
9
|
class EventControlsCardViewController extends heartwood_view_controllers_1.AbstractViewController {
|
|
10
|
+
static id = 'event-controls-card';
|
|
11
|
+
cardVc;
|
|
12
|
+
saveHandler;
|
|
13
|
+
// private cancelHandler: () => boolean | void | Promise<boolean | void>
|
|
14
|
+
getContext;
|
|
15
|
+
cancelEventHandler;
|
|
16
|
+
isEnableLocked = false;
|
|
10
17
|
constructor(options) {
|
|
11
18
|
super(options);
|
|
12
|
-
this.isEnableLocked = false;
|
|
13
19
|
const { onSave, getContext, onCancelEvent } = (0, schema_1.assertOptions)(options, [
|
|
14
20
|
'onSave',
|
|
15
21
|
'onCancelEvent',
|
|
@@ -57,16 +63,15 @@ class EventControlsCardViewController extends heartwood_view_controllers_1.Abstr
|
|
|
57
63
|
this.optionallyDropInCancelButton();
|
|
58
64
|
}
|
|
59
65
|
optionallyDropInCancelButton() {
|
|
60
|
-
var _a;
|
|
61
66
|
const { event } = this.getContext();
|
|
62
|
-
if (
|
|
67
|
+
if (event?.id && !draftGenerator_1.default.isDraftId(event.id)) {
|
|
63
68
|
this.cardVc.setBody({
|
|
64
69
|
sections: [
|
|
65
70
|
{
|
|
66
71
|
buttons: [
|
|
67
72
|
{
|
|
68
73
|
id: 'cancel-event',
|
|
69
|
-
label: `Cancel ${
|
|
74
|
+
label: `Cancel ${event.eventTypeSlug ?? 'event'}`,
|
|
70
75
|
type: 'destructive',
|
|
71
76
|
onClick: () => this.cancelEventHandler(this.getContext().event.id),
|
|
72
77
|
},
|
|
@@ -80,5 +85,4 @@ class EventControlsCardViewController extends heartwood_view_controllers_1.Abstr
|
|
|
80
85
|
return this.cardVc.render();
|
|
81
86
|
}
|
|
82
87
|
}
|
|
83
|
-
EventControlsCardViewController.id = 'event-controls-card';
|
|
84
88
|
exports.default = EventControlsCardViewController;
|