@sprucelabs/spruce-calendar-components 22.3.19 → 22.4.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.
@@ -1033,87 +1033,6 @@ declare module '@sprucelabs/spruce-core-schemas/build/.spruce/schemas/core.schem
1033
1033
  interface CreateCalendarResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarResponsePayloadSchema> {
1034
1034
  }
1035
1035
  }
1036
- namespace SpruceSchemas.Calendar.v2021_05_19 {
1037
- interface DeleteCalendarEmitTarget {
1038
- 'organizationId': string;
1039
- 'calendarId': string;
1040
- }
1041
- interface DeleteCalendarEmitTargetSchema extends SpruceSchema.Schema {
1042
- id: 'deleteCalendarEmitTarget';
1043
- version: 'v2021_05_19';
1044
- namespace: 'Calendar';
1045
- name: '';
1046
- fields: {
1047
- /** . */
1048
- 'organizationId': {
1049
- type: 'id';
1050
- isRequired: true;
1051
- options: undefined;
1052
- };
1053
- /** . */
1054
- 'calendarId': {
1055
- type: 'id';
1056
- isRequired: true;
1057
- options: undefined;
1058
- };
1059
- };
1060
- }
1061
- interface DeleteCalendarEmitTargetEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarEmitTargetSchema> {
1062
- }
1063
- }
1064
- namespace SpruceSchemas.Calendar.v2021_05_19 {
1065
- interface DeleteCalendarEmitTargetAndPayload {
1066
- /** Source. */
1067
- 'source'?: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSource | undefined | null;
1068
- 'target': SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarEmitTarget;
1069
- }
1070
- interface DeleteCalendarEmitTargetAndPayloadSchema extends SpruceSchema.Schema {
1071
- id: 'deleteCalendarEmitTargetAndPayload';
1072
- version: 'v2021_05_19';
1073
- namespace: 'Calendar';
1074
- name: '';
1075
- fields: {
1076
- /** Source. */
1077
- 'source': {
1078
- label: 'Source';
1079
- type: 'schema';
1080
- options: {
1081
- schema: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSourceSchema;
1082
- };
1083
- };
1084
- /** . */
1085
- 'target': {
1086
- type: 'schema';
1087
- isRequired: true;
1088
- options: {
1089
- schema: SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarEmitTargetSchema;
1090
- };
1091
- };
1092
- };
1093
- }
1094
- interface DeleteCalendarEmitTargetAndPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarEmitTargetAndPayloadSchema> {
1095
- }
1096
- }
1097
- namespace SpruceSchemas.Calendar.v2021_05_19 {
1098
- interface DeleteCalendarResponsePayload {
1099
- 'totalDeleted'?: number | undefined | null;
1100
- }
1101
- interface DeleteCalendarResponsePayloadSchema extends SpruceSchema.Schema {
1102
- id: 'deleteCalendarResponsePayload';
1103
- version: 'v2021_05_19';
1104
- namespace: 'Calendar';
1105
- name: '';
1106
- fields: {
1107
- /** . */
1108
- 'totalDeleted': {
1109
- type: 'number';
1110
- options: undefined;
1111
- };
1112
- };
1113
- }
1114
- interface DeleteCalendarResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarResponsePayloadSchema> {
1115
- }
1116
- }
1117
1036
  namespace SpruceSchemas.Calendar.v2021_05_19 {
1118
1037
  interface CreateCalendarEventTypeEmitPayload {
1119
1038
  'name': string;
@@ -1623,6 +1542,87 @@ declare module '@sprucelabs/spruce-core-schemas/build/.spruce/schemas/core.schem
1623
1542
  interface CreateCalendarEventTypeResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEventTypeResponsePayloadSchema> {
1624
1543
  }
1625
1544
  }
1545
+ namespace SpruceSchemas.Calendar.v2021_05_19 {
1546
+ interface DeleteCalendarEmitTarget {
1547
+ 'organizationId': string;
1548
+ 'calendarId': string;
1549
+ }
1550
+ interface DeleteCalendarEmitTargetSchema extends SpruceSchema.Schema {
1551
+ id: 'deleteCalendarEmitTarget';
1552
+ version: 'v2021_05_19';
1553
+ namespace: 'Calendar';
1554
+ name: '';
1555
+ fields: {
1556
+ /** . */
1557
+ 'organizationId': {
1558
+ type: 'id';
1559
+ isRequired: true;
1560
+ options: undefined;
1561
+ };
1562
+ /** . */
1563
+ 'calendarId': {
1564
+ type: 'id';
1565
+ isRequired: true;
1566
+ options: undefined;
1567
+ };
1568
+ };
1569
+ }
1570
+ interface DeleteCalendarEmitTargetEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarEmitTargetSchema> {
1571
+ }
1572
+ }
1573
+ namespace SpruceSchemas.Calendar.v2021_05_19 {
1574
+ interface DeleteCalendarEmitTargetAndPayload {
1575
+ /** Source. */
1576
+ 'source'?: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSource | undefined | null;
1577
+ 'target': SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarEmitTarget;
1578
+ }
1579
+ interface DeleteCalendarEmitTargetAndPayloadSchema extends SpruceSchema.Schema {
1580
+ id: 'deleteCalendarEmitTargetAndPayload';
1581
+ version: 'v2021_05_19';
1582
+ namespace: 'Calendar';
1583
+ name: '';
1584
+ fields: {
1585
+ /** Source. */
1586
+ 'source': {
1587
+ label: 'Source';
1588
+ type: 'schema';
1589
+ options: {
1590
+ schema: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSourceSchema;
1591
+ };
1592
+ };
1593
+ /** . */
1594
+ 'target': {
1595
+ type: 'schema';
1596
+ isRequired: true;
1597
+ options: {
1598
+ schema: SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarEmitTargetSchema;
1599
+ };
1600
+ };
1601
+ };
1602
+ }
1603
+ interface DeleteCalendarEmitTargetAndPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarEmitTargetAndPayloadSchema> {
1604
+ }
1605
+ }
1606
+ namespace SpruceSchemas.Calendar.v2021_05_19 {
1607
+ interface DeleteCalendarResponsePayload {
1608
+ 'totalDeleted'?: number | undefined | null;
1609
+ }
1610
+ interface DeleteCalendarResponsePayloadSchema extends SpruceSchema.Schema {
1611
+ id: 'deleteCalendarResponsePayload';
1612
+ version: 'v2021_05_19';
1613
+ namespace: 'Calendar';
1614
+ name: '';
1615
+ fields: {
1616
+ /** . */
1617
+ 'totalDeleted': {
1618
+ type: 'number';
1619
+ options: undefined;
1620
+ };
1621
+ };
1622
+ }
1623
+ interface DeleteCalendarResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarResponsePayloadSchema> {
1624
+ }
1625
+ }
1626
1626
  namespace SpruceSchemas.Calendar.v2021_05_19 {
1627
1627
  interface DidCancelCalendarEventEmitTarget {
1628
1628
  'locationId': string;
@@ -1033,87 +1033,6 @@ declare module '@sprucelabs/spruce-core-schemas/build/.spruce/schemas/core.schem
1033
1033
  interface CreateCalendarResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarResponsePayloadSchema> {
1034
1034
  }
1035
1035
  }
1036
- namespace SpruceSchemas.Calendar.v2021_05_19 {
1037
- interface DeleteCalendarEmitTarget {
1038
- 'organizationId': string;
1039
- 'calendarId': string;
1040
- }
1041
- interface DeleteCalendarEmitTargetSchema extends SpruceSchema.Schema {
1042
- id: 'deleteCalendarEmitTarget';
1043
- version: 'v2021_05_19';
1044
- namespace: 'Calendar';
1045
- name: '';
1046
- fields: {
1047
- /** . */
1048
- 'organizationId': {
1049
- type: 'id';
1050
- isRequired: true;
1051
- options: undefined;
1052
- };
1053
- /** . */
1054
- 'calendarId': {
1055
- type: 'id';
1056
- isRequired: true;
1057
- options: undefined;
1058
- };
1059
- };
1060
- }
1061
- interface DeleteCalendarEmitTargetEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarEmitTargetSchema> {
1062
- }
1063
- }
1064
- namespace SpruceSchemas.Calendar.v2021_05_19 {
1065
- interface DeleteCalendarEmitTargetAndPayload {
1066
- /** Source. */
1067
- 'source'?: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSource | undefined | null;
1068
- 'target': SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarEmitTarget;
1069
- }
1070
- interface DeleteCalendarEmitTargetAndPayloadSchema extends SpruceSchema.Schema {
1071
- id: 'deleteCalendarEmitTargetAndPayload';
1072
- version: 'v2021_05_19';
1073
- namespace: 'Calendar';
1074
- name: '';
1075
- fields: {
1076
- /** Source. */
1077
- 'source': {
1078
- label: 'Source';
1079
- type: 'schema';
1080
- options: {
1081
- schema: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSourceSchema;
1082
- };
1083
- };
1084
- /** . */
1085
- 'target': {
1086
- type: 'schema';
1087
- isRequired: true;
1088
- options: {
1089
- schema: SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarEmitTargetSchema;
1090
- };
1091
- };
1092
- };
1093
- }
1094
- interface DeleteCalendarEmitTargetAndPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarEmitTargetAndPayloadSchema> {
1095
- }
1096
- }
1097
- namespace SpruceSchemas.Calendar.v2021_05_19 {
1098
- interface DeleteCalendarResponsePayload {
1099
- 'totalDeleted'?: number | undefined | null;
1100
- }
1101
- interface DeleteCalendarResponsePayloadSchema extends SpruceSchema.Schema {
1102
- id: 'deleteCalendarResponsePayload';
1103
- version: 'v2021_05_19';
1104
- namespace: 'Calendar';
1105
- name: '';
1106
- fields: {
1107
- /** . */
1108
- 'totalDeleted': {
1109
- type: 'number';
1110
- options: undefined;
1111
- };
1112
- };
1113
- }
1114
- interface DeleteCalendarResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarResponsePayloadSchema> {
1115
- }
1116
- }
1117
1036
  namespace SpruceSchemas.Calendar.v2021_05_19 {
1118
1037
  interface CreateCalendarEventTypeEmitPayload {
1119
1038
  'name': string;
@@ -1623,6 +1542,87 @@ declare module '@sprucelabs/spruce-core-schemas/build/.spruce/schemas/core.schem
1623
1542
  interface CreateCalendarEventTypeResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEventTypeResponsePayloadSchema> {
1624
1543
  }
1625
1544
  }
1545
+ namespace SpruceSchemas.Calendar.v2021_05_19 {
1546
+ interface DeleteCalendarEmitTarget {
1547
+ 'organizationId': string;
1548
+ 'calendarId': string;
1549
+ }
1550
+ interface DeleteCalendarEmitTargetSchema extends SpruceSchema.Schema {
1551
+ id: 'deleteCalendarEmitTarget';
1552
+ version: 'v2021_05_19';
1553
+ namespace: 'Calendar';
1554
+ name: '';
1555
+ fields: {
1556
+ /** . */
1557
+ 'organizationId': {
1558
+ type: 'id';
1559
+ isRequired: true;
1560
+ options: undefined;
1561
+ };
1562
+ /** . */
1563
+ 'calendarId': {
1564
+ type: 'id';
1565
+ isRequired: true;
1566
+ options: undefined;
1567
+ };
1568
+ };
1569
+ }
1570
+ interface DeleteCalendarEmitTargetEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarEmitTargetSchema> {
1571
+ }
1572
+ }
1573
+ namespace SpruceSchemas.Calendar.v2021_05_19 {
1574
+ interface DeleteCalendarEmitTargetAndPayload {
1575
+ /** Source. */
1576
+ 'source'?: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSource | undefined | null;
1577
+ 'target': SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarEmitTarget;
1578
+ }
1579
+ interface DeleteCalendarEmitTargetAndPayloadSchema extends SpruceSchema.Schema {
1580
+ id: 'deleteCalendarEmitTargetAndPayload';
1581
+ version: 'v2021_05_19';
1582
+ namespace: 'Calendar';
1583
+ name: '';
1584
+ fields: {
1585
+ /** Source. */
1586
+ 'source': {
1587
+ label: 'Source';
1588
+ type: 'schema';
1589
+ options: {
1590
+ schema: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSourceSchema;
1591
+ };
1592
+ };
1593
+ /** . */
1594
+ 'target': {
1595
+ type: 'schema';
1596
+ isRequired: true;
1597
+ options: {
1598
+ schema: SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarEmitTargetSchema;
1599
+ };
1600
+ };
1601
+ };
1602
+ }
1603
+ interface DeleteCalendarEmitTargetAndPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarEmitTargetAndPayloadSchema> {
1604
+ }
1605
+ }
1606
+ namespace SpruceSchemas.Calendar.v2021_05_19 {
1607
+ interface DeleteCalendarResponsePayload {
1608
+ 'totalDeleted'?: number | undefined | null;
1609
+ }
1610
+ interface DeleteCalendarResponsePayloadSchema extends SpruceSchema.Schema {
1611
+ id: 'deleteCalendarResponsePayload';
1612
+ version: 'v2021_05_19';
1613
+ namespace: 'Calendar';
1614
+ name: '';
1615
+ fields: {
1616
+ /** . */
1617
+ 'totalDeleted': {
1618
+ type: 'number';
1619
+ options: undefined;
1620
+ };
1621
+ };
1622
+ }
1623
+ interface DeleteCalendarResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.DeleteCalendarResponsePayloadSchema> {
1624
+ }
1625
+ }
1626
1626
  namespace SpruceSchemas.Calendar.v2021_05_19 {
1627
1627
  interface DidCancelCalendarEventEmitTarget {
1628
1628
  'locationId': string;
@@ -249,7 +249,6 @@ export default class RootSkillViewController extends AbstractSkillViewController
249
249
  }
250
250
  handleDraftEventAdded(event) {
251
251
  return __awaiter(this, void 0, void 0, function* () {
252
- console.log('handle draft event added');
253
252
  yield this.events.addDraftEvent(event, !event.eventTypeSlug);
254
253
  if (!event.eventTypeSlug) {
255
254
  this.toolBeltVc.open({ shouldStayOpen: true });
@@ -11,7 +11,7 @@ export default abstract class AbstractCalendarEventToolBeltState implements Tool
11
11
  private toolBeltVc;
12
12
  private vcs;
13
13
  private pendingContextUpdates;
14
- private controlsVc;
14
+ protected controlsVc: EventControlsCardViewController;
15
15
  private isLoaded;
16
16
  private events;
17
17
  load(sm: CalendarToolBeltStateMachine): Promise<void>;
@@ -90,10 +90,13 @@ export default class CalendarEventManager {
90
90
  });
91
91
  }
92
92
  silentlySwapEvent(oldId, event) {
93
+ var _a;
93
94
  return __awaiter(this, void 0, void 0, function* () {
94
95
  const events = this.getEvents().filter((e) => e.id !== oldId);
95
96
  this.allEvents = [...events, event];
96
- yield this.updateEventInContext(event);
97
+ if (((_a = this.sm.getContext().event) === null || _a === void 0 ? void 0 : _a.id) === oldId) {
98
+ yield this.updateEventInContext(event);
99
+ }
97
100
  });
98
101
  }
99
102
  handleDropEvent(id, updates) {
@@ -11,14 +11,19 @@ export default class EventControlsCardViewController extends AbstractViewControl
11
11
  private cardVc;
12
12
  private saveHandler;
13
13
  private cancelHandler;
14
- private getHasPendingContextChangesHandler;
14
+ private getHasPendingContextChanges;
15
15
  private getContext;
16
16
  private cancelEventHandler;
17
+ private isEnableLocked;
17
18
  constructor(options: ViewControllerOptions & EventControlsCardOptions);
18
19
  private CardVc;
19
20
  private handleClickCancel;
20
21
  private handleClickSave;
22
+ lockEnabled(): void;
23
+ unlockEnabled(): void;
24
+ getIsEnableLocked(): boolean;
21
25
  handleUpdateContext(): void;
26
+ private shouldFooterBeEnabled;
22
27
  private optionallyDropInCancelButton;
23
28
  render(): SpruceSchemas.HeartwoodViewControllers.v2021_02_11.Card;
24
29
  }
@@ -13,6 +13,7 @@ import draftEventGenerator from '../utilities/draftGenerator.js';
13
13
  export default class EventControlsCardViewController extends AbstractViewController {
14
14
  constructor(options) {
15
15
  super(options);
16
+ this.isEnableLocked = false;
16
17
  const { onSave, onCancel, getHasPendingContextChanges, getContext, onCancelEvent, } = assertOptions(options, [
17
18
  'onCancel',
18
19
  'onSave',
@@ -23,7 +24,7 @@ export default class EventControlsCardViewController extends AbstractViewControl
23
24
  this.saveHandler = onSave;
24
25
  this.cancelHandler = onCancel;
25
26
  this.cancelEventHandler = onCancelEvent;
26
- this.getHasPendingContextChangesHandler = getHasPendingContextChanges;
27
+ this.getHasPendingContextChanges = getHasPendingContextChanges;
27
28
  this.getContext = getContext;
28
29
  this.cardVc = this.CardVc();
29
30
  this.optionallyDropInCancelButton();
@@ -63,8 +64,19 @@ export default class EventControlsCardViewController extends AbstractViewControl
63
64
  this.cardVc.disableFooter();
64
65
  });
65
66
  }
67
+ lockEnabled() {
68
+ this.isEnableLocked = true;
69
+ this.handleUpdateContext();
70
+ }
71
+ unlockEnabled() {
72
+ this.isEnableLocked = false;
73
+ this.handleUpdateContext();
74
+ }
75
+ getIsEnableLocked() {
76
+ return this.isEnableLocked;
77
+ }
66
78
  handleUpdateContext() {
67
- if (this.getHasPendingContextChangesHandler()) {
79
+ if (this.shouldFooterBeEnabled()) {
68
80
  this.cardVc.enableFooter();
69
81
  }
70
82
  else {
@@ -72,6 +84,9 @@ export default class EventControlsCardViewController extends AbstractViewControl
72
84
  }
73
85
  this.optionallyDropInCancelButton();
74
86
  }
87
+ shouldFooterBeEnabled() {
88
+ return this.getHasPendingContextChanges() || this.isEnableLocked;
89
+ }
75
90
  optionallyDropInCancelButton() {
76
91
  var _a;
77
92
  const { event } = this.getContext();
@@ -220,7 +220,6 @@ class RootSkillViewController extends heartwood_view_controllers_1.AbstractSkill
220
220
  }
221
221
  }
222
222
  async handleDraftEventAdded(event) {
223
- console.log('handle draft event added');
224
223
  await this.events.addDraftEvent(event, !event.eventTypeSlug);
225
224
  if (!event.eventTypeSlug) {
226
225
  this.toolBeltVc.open({ shouldStayOpen: true });
@@ -11,7 +11,7 @@ export default abstract class AbstractCalendarEventToolBeltState implements Tool
11
11
  private toolBeltVc;
12
12
  private vcs;
13
13
  private pendingContextUpdates;
14
- private controlsVc;
14
+ protected controlsVc: EventControlsCardViewController;
15
15
  private isLoaded;
16
16
  private events;
17
17
  load(sm: CalendarToolBeltStateMachine): Promise<void>;
@@ -84,9 +84,12 @@ class CalendarEventManager {
84
84
  }
85
85
  }
86
86
  async silentlySwapEvent(oldId, event) {
87
+ var _a;
87
88
  const events = this.getEvents().filter((e) => e.id !== oldId);
88
89
  this.allEvents = [...events, event];
89
- await this.updateEventInContext(event);
90
+ if (((_a = this.sm.getContext().event) === null || _a === void 0 ? void 0 : _a.id) === oldId) {
91
+ await this.updateEventInContext(event);
92
+ }
90
93
  }
91
94
  async handleDropEvent(id, updates) {
92
95
  const event = Object.assign(Object.assign({}, this.calendarVc.getEvent(id)), updates);
@@ -11,14 +11,19 @@ export default class EventControlsCardViewController extends AbstractViewControl
11
11
  private cardVc;
12
12
  private saveHandler;
13
13
  private cancelHandler;
14
- private getHasPendingContextChangesHandler;
14
+ private getHasPendingContextChanges;
15
15
  private getContext;
16
16
  private cancelEventHandler;
17
+ private isEnableLocked;
17
18
  constructor(options: ViewControllerOptions & EventControlsCardOptions);
18
19
  private CardVc;
19
20
  private handleClickCancel;
20
21
  private handleClickSave;
22
+ lockEnabled(): void;
23
+ unlockEnabled(): void;
24
+ getIsEnableLocked(): boolean;
21
25
  handleUpdateContext(): void;
26
+ private shouldFooterBeEnabled;
22
27
  private optionallyDropInCancelButton;
23
28
  render(): SpruceSchemas.HeartwoodViewControllers.v2021_02_11.Card;
24
29
  }
@@ -9,6 +9,7 @@ const draftGenerator_1 = __importDefault(require("../utilities/draftGenerator"))
9
9
  class EventControlsCardViewController extends heartwood_view_controllers_1.AbstractViewController {
10
10
  constructor(options) {
11
11
  super(options);
12
+ this.isEnableLocked = false;
12
13
  const { onSave, onCancel, getHasPendingContextChanges, getContext, onCancelEvent, } = (0, schema_1.assertOptions)(options, [
13
14
  'onCancel',
14
15
  'onSave',
@@ -19,7 +20,7 @@ class EventControlsCardViewController extends heartwood_view_controllers_1.Abstr
19
20
  this.saveHandler = onSave;
20
21
  this.cancelHandler = onCancel;
21
22
  this.cancelEventHandler = onCancelEvent;
22
- this.getHasPendingContextChangesHandler = getHasPendingContextChanges;
23
+ this.getHasPendingContextChanges = getHasPendingContextChanges;
23
24
  this.getContext = getContext;
24
25
  this.cardVc = this.CardVc();
25
26
  this.optionallyDropInCancelButton();
@@ -55,8 +56,19 @@ class EventControlsCardViewController extends heartwood_view_controllers_1.Abstr
55
56
  this.cardVc.setFooterIsBusy(false);
56
57
  this.cardVc.disableFooter();
57
58
  }
59
+ lockEnabled() {
60
+ this.isEnableLocked = true;
61
+ this.handleUpdateContext();
62
+ }
63
+ unlockEnabled() {
64
+ this.isEnableLocked = false;
65
+ this.handleUpdateContext();
66
+ }
67
+ getIsEnableLocked() {
68
+ return this.isEnableLocked;
69
+ }
58
70
  handleUpdateContext() {
59
- if (this.getHasPendingContextChangesHandler()) {
71
+ if (this.shouldFooterBeEnabled()) {
60
72
  this.cardVc.enableFooter();
61
73
  }
62
74
  else {
@@ -64,6 +76,9 @@ class EventControlsCardViewController extends heartwood_view_controllers_1.Abstr
64
76
  }
65
77
  this.optionallyDropInCancelButton();
66
78
  }
79
+ shouldFooterBeEnabled() {
80
+ return this.getHasPendingContextChanges() || this.isEnableLocked;
81
+ }
67
82
  optionallyDropInCancelButton() {
68
83
  var _a;
69
84
  const { event } = this.getContext();
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.3.19",
4
+ "version": "22.4.0",
5
5
  "skill": {
6
6
  "namespace": "calendar"
7
7
  },