@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.
Files changed (70) hide show
  1. package/build/.spruce/errors/errors.types.d.ts +12 -12
  2. package/build/.spruce/errors/errors.types.js +0 -2
  3. package/build/.spruce/errors/options.types.d.ts +2 -2
  4. package/build/.spruce/schemas/schemas.types.d.ts +3287 -2737
  5. package/build/.spruce/schemas/schemas.types.js +1 -2
  6. package/build/__tests__/support/CalendarToolBeltStateMachineTestFactory.js +24 -13
  7. package/build/__tests__/support/SpyEventManager.js +1 -1
  8. package/build/__tests__/support/SpyPeopleManager.js +4 -4
  9. package/build/__tests__/support/SpyRemoteEventStore.js +4 -4
  10. package/build/__tests__/support/utilities/calendarAssert.js +2 -4
  11. package/build/__tests__/support/utilities/calendarSkillAssert.js +25 -10
  12. package/build/__tests__/support/utilities/calendarToolBeltInteractor.js +3 -1
  13. package/build/calendar/Calendar.vc.js +52 -43
  14. package/build/calendar/CalendarEventManager.js +86 -66
  15. package/build/calendar/CalendarPeopleManager.js +17 -16
  16. package/build/calendar/CalendarPersister.d.ts +2 -2
  17. package/build/calendar/CalendarPersister.js +13 -8
  18. package/build/calendar/calculateCalendarEventDifferences.js +6 -3
  19. package/build/constants.js +1 -2
  20. package/build/errors/SpruceError.d.ts +1 -1
  21. package/build/errors/SpruceError.js +1 -1
  22. package/build/esm/.spruce/errors/errors.types.d.ts +12 -12
  23. package/build/esm/.spruce/errors/errors.types.js +0 -2
  24. package/build/esm/.spruce/errors/options.types.d.ts +2 -2
  25. package/build/esm/.spruce/schemas/schemas.types.d.ts +3287 -2737
  26. package/build/esm/.spruce/schemas/schemas.types.js +1 -2
  27. package/build/esm/__tests__/support/utilities/calendarAssert.js +0 -1
  28. package/build/esm/__tests__/support/utilities/calendarSkillAssert.js +2 -2
  29. package/build/esm/calendar/Calendar.vc.js +0 -3
  30. package/build/esm/calendar/CalendarEventManager.js +3 -2
  31. package/build/esm/calendar/CalendarPeopleManager.js +0 -2
  32. package/build/esm/calendar/CalendarPersister.d.ts +2 -2
  33. package/build/esm/errors/SpruceError.d.ts +1 -1
  34. package/build/esm/noSchedules/peopleToPeopleWithoutSchedules.d.ts +1 -1
  35. package/build/esm/root/Root.svc.d.ts +2 -2
  36. package/build/esm/root/Root.svc.js +4 -2
  37. package/build/esm/stores/RemoteEventStore.js +7 -4
  38. package/build/esm/toolBelt/CalendarToolRegistrar.js +4 -1
  39. package/build/esm/toolBelt/states/AbstractCalendarEventToolBeltState.js +5 -2
  40. package/build/esm/toolBelt/states/RootToolBeltState.js +2 -1
  41. package/build/esm/tools/CalendarSelectTool.vc.js +5 -2
  42. package/build/esm/tools/EventRepeatingTool.vc.js +3 -1
  43. package/build/esm/tools/PersonSelectTool.vc.js +8 -3
  44. package/build/esm/viewControllers/DateSelectCard.vc.js +1 -4
  45. package/build/esm/viewControllers/RepeatingControlsList.vc.js +2 -1
  46. package/build/noSchedules/peopleToPeopleWithoutSchedules.d.ts +1 -1
  47. package/build/root/Root.svc.d.ts +2 -2
  48. package/build/root/Root.svc.js +73 -48
  49. package/build/stores/RemoteEventStore.js +60 -38
  50. package/build/stores/RemotePreferencesStore.js +10 -4
  51. package/build/toolBelt/CalendarToolRegistrar.js +8 -9
  52. package/build/toolBelt/CalendarToolTestFactory.js +10 -4
  53. package/build/toolBelt/states/AbstractCalendarEventToolBeltState.js +37 -27
  54. package/build/toolBelt/states/PrerequisitesToolBeltState.js +31 -22
  55. package/build/toolBelt/states/RootToolBeltState.js +23 -19
  56. package/build/toolBelt/states/UniversalEventToolBeltState.js +1 -4
  57. package/build/toolBelt/states/makeEventTyped.js +1 -2
  58. package/build/tools/CalendarSelectTool.vc.js +12 -6
  59. package/build/tools/EventDateTimeTool.vc.js +10 -6
  60. package/build/tools/EventDurationTool.vc.js +8 -5
  61. package/build/tools/EventRepeatingTool.vc.js +23 -7
  62. package/build/tools/EventTitleTool.vc.js +8 -5
  63. package/build/tools/PersonSelectTool.vc.js +17 -9
  64. package/build/utilities/draftGenerator.js +1 -1
  65. package/build/viewControllers/DateSelectCard.vc.js +12 -7
  66. package/build/viewControllers/EventControlsCard.vc.js +9 -5
  67. package/build/viewControllers/RepeatingControlsList.vc.js +52 -58
  68. package/build/viewControllers/SelectUpdateRepeatingStrategyCard.vc.js +7 -4
  69. package/build/viewControllers/UniversalCalendarEvent.vc.js +1 -1
  70. 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
- var _a;
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 = (_a = this.toolBeltVc) === null || _a === void 0 ? void 0 : _a.getTool('scope-selection');
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
- !((_a = this.toolBeltVc) === null || _a === void 0 ? void 0 : _a.getTool('scope-selection'))) {
67
- (_b = this.toolBeltVc) === null || _b === void 0 ? void 0 : _b.addTool(this.scopeSelectionTool);
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
- (_a = this.toolBeltVc) === null || _a === void 0 ? void 0 : _a.addTool({
80
+ this.toolBeltVc?.addTool({
74
81
  lineIcon: 'calendar',
75
82
  id: 'calendars',
76
- card: (_b = this.calendarSelectCardVc) === null || _b === void 0 ? void 0 : _b.render(),
83
+ card: this.calendarSelectCardVc?.render(),
77
84
  });
78
- return (_c = this.calendarSelectCardVc) === null || _c === void 0 ? void 0 : _c.load(stateMachine.getContext());
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 && !((_a = this.toolBeltVc) === null || _a === void 0 ? void 0 : _a.getTool('people'))) {
89
+ if (location && !this.toolBeltVc?.getTool('people')) {
84
90
  this.personSelectVc = this.PersonSelectVc();
85
- (_b = this.toolBeltVc) === null || _b === void 0 ? void 0 : _b.addTool({
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
- (_a = this.dateSelectVc) === null || _a === void 0 ? void 0 : _a.setSelectedDate(year, month, day);
114
+ this.dateSelectVc?.setSelectedDate(year, month, day);
110
115
  }
111
116
  PersonSelectVc() {
112
- var _a;
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
- constructor() {
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: (_a = type.lineIcon) !== null && _a !== void 0 ? _a : 'coffee', hint: null }];
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: { content: "You don't have any calendars yet!" },
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 = this.events.setCalendarVisibility(calendarId, isVisible);
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 === null || org === void 0 ? void 0 : org.id,
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 !== null && dateTimeMs !== void 0 ? dateTimeMs : this.event.startDateTimeMs);
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 ((_a = this.updateContext) === null || _a === void 0 ? void 0 : _a.call(this, {
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) => (Object.assign({}, 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
- var _a;
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: [{ shouldBePadded: false, form: this.formVc.render() }],
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: Object.assign({}, this.getEvent()),
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 = Object.assign({ repeats: undefined, interval: undefined, repeatsUntil: undefined, occurrences: undefined, daysOfWeek: undefined, daysOfMonth: undefined }, cleaned);
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 = (_a = this.updateContextHandler) === null || _a === void 0 ? void 0 : _a.call(this, Object.assign({}, keyedUpdates));
61
+ const pass = this.updateContextHandler?.({
62
+ ...keyedUpdates,
63
+ });
47
64
  return pass;
48
65
  }
49
66
  removeExtraRepeatingFields(value) {
50
- const cleaned = Object.assign({}, value);
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
- var _a, _b;
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 === null || timeBlock === void 0 ? void 0 : timeBlock.title,
39
- subtitle: timeBlock === null || timeBlock === void 0 ? void 0 : timeBlock.subtitle,
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
- var _a;
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: ((_a = person.avatar) === null || _a === void 0 ? void 0 : _a.mUri) ? [person.avatar.mUri] : undefined,
96
+ avatars: person.avatar?.mUri
97
+ ? [person.avatar.mUri]
98
+ : undefined,
93
99
  },
94
100
  {
95
101
  text: {
96
- content: this.isPersonLoggedIn(person) ? 'You' : person.casualName,
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 = this.people.setPersonVisibility(person.id, value !== null && value !== void 0 ? value : false);
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 !== null && eventTypeName !== void 0 ? eventTypeName : 'event'}`;
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', Object.assign({ view: 'month', onClickView: ({ dateTimeMs }) => this.handleDateSelect(dateTimeMs), selectedDates: [] }, options));
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 !== null && dateTimeMs !== void 0 ? dateTimeMs : 0);
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 ((event === null || event === void 0 ? void 0 : event.id) && !draftGenerator_1.default.isDraftId(event.id)) {
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 ${(_a = event.eventTypeSlug) !== null && _a !== void 0 ? _a : 'event'}`,
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;