@servicetitan/dte-pdf-editor 1.96.1 → 1.96.3

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 (69) hide show
  1. package/README.md +26 -8
  2. package/dist/components/field-config-panel/advanced-settings.d.ts.map +1 -1
  3. package/dist/components/field-config-panel/advanced-settings.js +1 -0
  4. package/dist/components/field-config-panel/advanced-settings.js.map +1 -1
  5. package/dist/components/field-config-panel/e-sign-offset-rule-row.js +1 -1
  6. package/dist/components/field-config-panel/e-sign-offset-rule-row.js.map +1 -1
  7. package/dist/components/field-config-panel/e-sign-options-modal.d.ts.map +1 -1
  8. package/dist/components/field-config-panel/e-sign-options-modal.js +1 -0
  9. package/dist/components/field-config-panel/e-sign-options-modal.js.map +1 -1
  10. package/dist/components/field-config-panel/field-config-panel-overlay.d.ts.map +1 -1
  11. package/dist/components/field-config-panel/field-config-panel-overlay.js +23 -33
  12. package/dist/components/field-config-panel/field-config-panel-overlay.js.map +1 -1
  13. package/dist/components/field-config-panel/field-config-panel.d.ts +5 -0
  14. package/dist/components/field-config-panel/field-config-panel.d.ts.map +1 -1
  15. package/dist/components/field-config-panel/field-config-panel.js +5 -2
  16. package/dist/components/field-config-panel/field-config-panel.js.map +1 -1
  17. package/dist/components/field-config-panel/formula-modal.d.ts.map +1 -1
  18. package/dist/components/field-config-panel/formula-modal.js +4 -3
  19. package/dist/components/field-config-panel/formula-modal.js.map +1 -1
  20. package/dist/components/pdf-editor/pdf-editor.d.ts +12 -9
  21. package/dist/components/pdf-editor/pdf-editor.d.ts.map +1 -1
  22. package/dist/components/pdf-editor/pdf-editor.js.map +1 -1
  23. package/dist/constants/field.constants.js +1 -1
  24. package/dist/interface/types.d.ts +4 -8
  25. package/dist/interface/types.d.ts.map +1 -1
  26. package/dist/interface/types.js.map +1 -1
  27. package/dist/styles/field-config-panel-overlay.css +24 -0
  28. package/dist/utils/formula/index.d.ts +0 -1
  29. package/dist/utils/formula/index.d.ts.map +1 -1
  30. package/dist/utils/formula/index.js +0 -1
  31. package/dist/utils/formula/index.js.map +1 -1
  32. package/dist/vendor/dte-shared/business-calendar-validation.utils.d.ts +3 -0
  33. package/dist/vendor/dte-shared/business-calendar-validation.utils.js +4 -0
  34. package/dist/vendor/dte-shared/components/business-calendar-section.d.ts +1 -1
  35. package/dist/vendor/dte-shared/components/business-calendar-section.js +3 -2
  36. package/dist/vendor/dte-shared/components/schedule-drawer.d.ts +5 -3
  37. package/dist/vendor/dte-shared/components/schedule-drawer.js +19 -12
  38. package/dist/vendor/dte-shared/components/schedule-picker.js +10 -10
  39. package/dist/vendor/dte-shared/constants.d.ts +21 -0
  40. package/dist/vendor/dte-shared/constants.js +24 -0
  41. package/dist/vendor/dte-shared/field-schedule-editor-context.d.ts +31 -0
  42. package/dist/vendor/dte-shared/field-schedule-editor-context.js +110 -0
  43. package/dist/vendor/dte-shared/index.d.ts +2 -0
  44. package/dist/vendor/dte-shared/index.js +2 -0
  45. package/dist/vendor/dte-shared/schedule-bindings.utils.d.ts +22 -0
  46. package/dist/vendor/dte-shared/schedule-bindings.utils.js +31 -0
  47. package/dist/vendor/dte-shared/styles/schedule.css +2 -2
  48. package/dist/vendor/dte-shared/types.d.ts +62 -0
  49. package/package.json +2 -2
  50. package/src/components/field-config-panel/__tests__/field-config-panel-overlay.test.tsx +200 -0
  51. package/src/components/field-config-panel/__tests__/schedule-editor-placement.test.tsx +289 -0
  52. package/src/components/field-config-panel/__tests__/schedule-switch-visibility.test.tsx +206 -0
  53. package/src/components/field-config-panel/advanced-settings.tsx +1 -0
  54. package/src/components/field-config-panel/e-sign-offset-rule-row.tsx +1 -1
  55. package/src/components/field-config-panel/e-sign-options-modal.tsx +1 -0
  56. package/src/components/field-config-panel/field-config-panel-overlay.tsx +69 -91
  57. package/src/components/field-config-panel/field-config-panel.tsx +10 -1
  58. package/src/components/field-config-panel/formula-modal.tsx +5 -8
  59. package/src/components/pdf-editor/pdf-editor.tsx +12 -9
  60. package/src/constants/field.constants.ts +1 -1
  61. package/src/interface/types.ts +4 -8
  62. package/src/styles/field-config-panel-overlay.css +24 -0
  63. package/src/utils/formula/index.ts +0 -1
  64. package/dist/utils/formula/schedule-bindings.utils.d.ts +0 -12
  65. package/dist/utils/formula/schedule-bindings.utils.d.ts.map +0 -1
  66. package/dist/utils/formula/schedule-bindings.utils.js +0 -17
  67. package/dist/utils/formula/schedule-bindings.utils.js.map +0 -1
  68. package/src/utils/formula/__tests__/schedule-bindings.utils.test.ts +0 -73
  69. package/src/utils/formula/schedule-bindings.utils.ts +0 -27
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/interface/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/interface/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/interface/types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,aAOX;AAPD,WAAY,aAAa;IACrB,wCAAuB,CAAA;IACvB,gCAAe,CAAA;IACf,gCAAe,CAAA;IACf,sCAAqB,CAAA;IACrB,0CAAyB,CAAA;IACzB,oCAAmB,CAAA;AACvB,CAAC,EAPW,aAAa,KAAb,aAAa,QAOxB;AAED,MAAM,CAAN,IAAY,cAMX;AAND,WAAY,cAAc;IACtB,yCAAuB,CAAA;IACvB,uCAAqB,CAAA;IACrB,2CAAyB,CAAA;IACzB,uDAAqC,CAAA;IACrC,uCAAqB,CAAA;AACzB,CAAC,EANW,cAAc,KAAd,cAAc,QAMzB;AA0MD,kCAAkC;AAClC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AA0KtD;;GAEG;AAEH,wCAAwC;AACxC,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;IACxC,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;IACxD,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;IAC9C,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE;IACtD,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;IAC9C,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;IAC1C,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;IACxC,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE;CAC1C,CAAC;AAEX,wCAAwC;AACxC,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC3C,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,SAAS,EAAE;IAChD,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC9C,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC3C,EAAE,KAAK,EAAE,+BAA+B,EAAE,KAAK,EAAE,SAAS,EAAE;IAC5D,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,SAAS,EAAE;CACnD,CAAC;AAMX,iDAAiD;AACjD,MAAM,CAAC,MAAM,eAAe,GAAG;IAC3B,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;IAC9C,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE;CAChD,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAC9B,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE;IAC1C,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,iBAAiB,EAAE;CAC1C,CAAC;AAEX,6EAA6E;AAC7E,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAE/C,iEAAiE;AACjE,MAAM,CAAC,MAAM,oBAAoB,GAAwB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/interface/types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,aAOX;AAPD,WAAY,aAAa;IACrB,wCAAuB,CAAA;IACvB,gCAAe,CAAA;IACf,gCAAe,CAAA;IACf,sCAAqB,CAAA;IACrB,0CAAyB,CAAA;IACzB,oCAAmB,CAAA;AACvB,CAAC,EAPW,aAAa,KAAb,aAAa,QAOxB;AAED,MAAM,CAAN,IAAY,cAMX;AAND,WAAY,cAAc;IACtB,yCAAuB,CAAA;IACvB,uCAAqB,CAAA;IACrB,2CAAyB,CAAA;IACzB,uDAAqC,CAAA;IACrC,uCAAqB,CAAA;AACzB,CAAC,EANW,cAAc,KAAd,cAAc,QAMzB;AA0MD,kCAAkC;AAClC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAsKtD;;GAEG;AAEH,wCAAwC;AACxC,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;IACxC,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;IACxD,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;IAC9C,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE;IACtD,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;IAC9C,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;IAC1C,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;IACxC,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE;CAC1C,CAAC;AAEX,wCAAwC;AACxC,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC3C,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,SAAS,EAAE;IAChD,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC9C,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC3C,EAAE,KAAK,EAAE,+BAA+B,EAAE,KAAK,EAAE,SAAS,EAAE;IAC5D,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,SAAS,EAAE;CACnD,CAAC;AAMX,iDAAiD;AACjD,MAAM,CAAC,MAAM,eAAe,GAAG;IAC3B,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;IAC9C,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE;CAChD,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAC9B,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE;IAC1C,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,iBAAiB,EAAE;CAC1C,CAAC;AAEX,6EAA6E;AAC7E,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAE/C,iEAAiE;AACjE,MAAM,CAAC,MAAM,oBAAoB,GAAwB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC"}
@@ -33,3 +33,27 @@
33
33
  padding: var(--spacing-2);
34
34
  flex: 1;
35
35
  }
36
+
37
+ /*
38
+ * The schedule form of an e-sign date offset is portaled into this slot. While it has content it
39
+ * takes the place of the panel (the `:empty` and `~` selectors need the slot to come first and to
40
+ * hold nothing, not even whitespace, when it is closed).
41
+ */
42
+ .dte-field-config-panel-editor-slot {
43
+ flex: 1;
44
+ padding: var(--spacing-2);
45
+ height: 100%;
46
+ overflow: auto;
47
+ }
48
+
49
+ .dte-field-config-panel-editor-slot:empty {
50
+ display: none;
51
+ }
52
+
53
+ .dte-field-config-panel-overlay-inner {
54
+ flex: 1;
55
+ }
56
+
57
+ .dte-field-config-panel-editor-slot:not(:empty) ~ .dte-field-config-panel-overlay-inner {
58
+ display: none;
59
+ }
@@ -5,7 +5,6 @@ export * from './expression.utils';
5
5
  export * from './format-calculated-result.utils';
6
6
  export * from './formula-types';
7
7
  export * from './render-formula.utils';
8
- export * from './schedule-bindings.utils';
9
8
  export * from './validate-formula.utils';
10
9
  export * from './form-fields.utils';
11
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/formula/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kCAAkC,CAAC;AACjD,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/formula/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kCAAkC,CAAC;AACjD,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC"}
@@ -5,7 +5,6 @@ export * from './expression.utils';
5
5
  export * from './format-calculated-result.utils';
6
6
  export * from './formula-types';
7
7
  export * from './render-formula.utils';
8
- export * from './schedule-bindings.utils';
9
8
  export * from './validate-formula.utils';
10
9
  export * from './form-fields.utils';
11
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/formula/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kCAAkC,CAAC;AACjD,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/formula/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kCAAkC,CAAC;AACjD,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { type KnownHoliday } from './types';
1
2
  /** Whether `value` is a valid `MM-DD` custom date (`02-29` included, as a recurring rule). */
2
3
  export declare function isValidCustomDate(value: string): boolean;
3
4
  /** A month/day pair as `DateFieldYearless` represents it (either part `null` while incomplete). */
@@ -11,6 +12,8 @@ export declare function yearlessDateToCustomDate(value: YearlessDateValue | null
11
12
  export declare function customDateToYearlessDate(value: string): YearlessDateValue | null;
12
13
  /** Formats a stored `MM-DD` custom date for display, e.g. `03-03` → `Mar - 03`. */
13
14
  export declare function formatCustomDateLabel(value: string): string;
15
+ /** How the schedule picker and drawer name a known holiday, e.g. `Independence Day · July 4`. */
16
+ export declare function formatKnownHolidayLabel(holiday: Pick<KnownHoliday, 'displayName' | 'rule'>): string;
14
17
  /** Whether `name` is the reserved default-schedule name, ignoring case and surrounding whitespace. */
15
18
  export declare function isReservedScheduleName(name: string): boolean;
16
19
  /**
@@ -48,6 +48,10 @@ export function formatCustomDateLabel(value) {
48
48
  const [, month, day] = match;
49
49
  return `${CUSTOM_DATE_MONTH_ABBREVIATIONS[Number(month) - 1]} - ${day}`;
50
50
  }
51
+ /** How the schedule picker and drawer name a known holiday, e.g. `Independence Day · July 4`. */
52
+ export function formatKnownHolidayLabel(holiday) {
53
+ return `${holiday.displayName} · ${holiday.rule}`;
54
+ }
51
55
  /** Whether `name` is the reserved default-schedule name, ignoring case and surrounding whitespace. */
52
56
  export function isReservedScheduleName(name) {
53
57
  return name.trim().toLowerCase() === RESERVED_SCHEDULE_NAME.toLowerCase();
@@ -9,7 +9,7 @@ interface BusinessCalendarSectionProps {
9
9
  /**
10
10
  * A business-day exclusion toggle, shown for a date calculated field (Formula Builder's Advanced
11
11
  * Settings, date result type only) and an e-sign `dateSignedOffset` field's day-offset settings.
12
- * Off is plain calendar-day arithmetic; on reveals the schedule picker.
12
+ * On reveals the schedule picker; what off means for the date arithmetic is up to the editor.
13
13
  */
14
14
  export declare const BusinessCalendarSection: FC<BusinessCalendarSectionProps>;
15
15
  export {};
@@ -1,13 +1,14 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Flex, Switch } from '@servicetitan/anvil2';
3
+ import { BUSINESS_CALENDAR_TOGGLE_LABEL } from '../constants';
3
4
  import '../styles/schedule.css';
4
5
  import { SchedulePicker } from './schedule-picker';
5
6
  /**
6
7
  * A business-day exclusion toggle, shown for a date calculated field (Formula Builder's Advanced
7
8
  * Settings, date result type only) and an e-sign `dateSignedOffset` field's day-offset settings.
8
- * Off is plain calendar-day arithmetic; on reveals the schedule picker.
9
+ * On reveals the schedule picker; what off means for the date arithmetic is up to the editor.
9
10
  */
10
- export const BusinessCalendarSection = ({ businessCalendar, label = 'Exclude weekends & holidays from the calculation', }) => {
11
+ export const BusinessCalendarSection = ({ businessCalendar, label = BUSINESS_CALENDAR_TOGGLE_LABEL, }) => {
11
12
  const { enabled, onToggle } = businessCalendar;
12
13
  return (_jsx("div", { className: "dte-business-calendar-section", children: _jsxs(Flex, { direction: "column", gap: "4", children: [_jsx(Switch, { checked: enabled, onChange: (_e, state) => onToggle(state.checked), label: label, value: "business-calendar-exclusion" }), enabled && _jsx(SchedulePicker, { businessCalendar: businessCalendar })] }) }));
13
14
  };
@@ -8,9 +8,11 @@ interface ScheduleDrawerProps {
8
8
  onSaved(schedule: BusinessDaySchedule): void;
9
9
  }
10
10
  /**
11
- * "Create New Schedule" / "Edit Schedule" drawer. Creating starts from the default schedule's
12
- * rules (DEFAULT_SCHEDULE_WEEKEND_DAYS, every catalog holiday); editing starts from
13
- * `editingSchedule`'s own rules and replaces it in place on save.
11
+ * "Create New Schedule" / "Edit Schedule" drawer. With `businessCalendar.editorContainer` set, the
12
+ * same form is portaled into that element instead (its Close button calls `onClose`; there is no
13
+ * backdrop or Escape key). Creating starts from the default schedule's rules
14
+ * (DEFAULT_SCHEDULE_WEEKEND_DAYS, every catalog holiday); editing starts from `editingSchedule`'s
15
+ * own rules and replaces it in place on save.
14
16
  */
15
17
  export declare const ScheduleDrawer: FC<ScheduleDrawerProps>;
16
18
  export {};
@@ -1,20 +1,24 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Alert, Button, ButtonToggle, DateFieldYearless, Drawer, Flex, MultiSelectFieldSync, Text, TextField, } from '@servicetitan/anvil2';
3
3
  import IconAddCircle from '@servicetitan/anvil2/assets/icons/material/round/add_circle.svg';
4
+ import IconClose from '@servicetitan/anvil2/assets/icons/material/round/close.svg';
4
5
  import DeleteIcon from '@servicetitan/anvil2/assets/icons/material/round/delete.svg';
5
6
  import { useMemo, useRef, useState } from 'react';
6
- import { customDateToYearlessDate, validateScheduleName, yearlessDateToCustomDate, } from '../business-calendar-validation.utils';
7
+ import { createPortal } from 'react-dom';
8
+ import { customDateToYearlessDate, formatKnownHolidayLabel, validateScheduleName, yearlessDateToCustomDate, } from '../business-calendar-validation.utils';
7
9
  import { DEFAULT_SCHEDULE_WEEKEND_DAYS } from '../constants';
8
10
  const EMPTY_DATE = { month: null, day: null };
9
11
  const isEmptyDate = (value) => value.month === null && value.day === null;
10
12
  /**
11
- * "Create New Schedule" / "Edit Schedule" drawer. Creating starts from the default schedule's
12
- * rules (DEFAULT_SCHEDULE_WEEKEND_DAYS, every catalog holiday); editing starts from
13
- * `editingSchedule`'s own rules and replaces it in place on save.
13
+ * "Create New Schedule" / "Edit Schedule" drawer. With `businessCalendar.editorContainer` set, the
14
+ * same form is portaled into that element instead (its Close button calls `onClose`; there is no
15
+ * backdrop or Escape key). Creating starts from the default schedule's rules
16
+ * (DEFAULT_SCHEDULE_WEEKEND_DAYS, every catalog holiday); editing starts from `editingSchedule`'s
17
+ * own rules and replaces it in place on save.
14
18
  */
15
19
  export const ScheduleDrawer = ({ businessCalendar, editingSchedule, onClose, onSaved, }) => {
16
20
  var _a;
17
- const { holidayCatalog, holidayCatalogError, holidayCatalogLoading, onCreateSchedule, onUpdateSchedule, schedules, } = businessCalendar;
21
+ const { editorContainer, holidayCatalog, holidayCatalogError, holidayCatalogLoading, onCreateSchedule, onUpdateSchedule, schedules, } = businessCalendar;
18
22
  const [name, setName] = useState((_a = editingSchedule === null || editingSchedule === void 0 ? void 0 : editingSchedule.name) !== null && _a !== void 0 ? _a : '');
19
23
  const [weekendDays, setWeekendDays] = useState(() => { var _a; return new Set((_a = editingSchedule === null || editingSchedule === void 0 ? void 0 : editingSchedule.calendar.weekendDays) !== null && _a !== void 0 ? _a : DEFAULT_SCHEDULE_WEEKEND_DAYS); });
20
24
  const [knownHolidays, setKnownHolidays] = useState(() => {
@@ -39,7 +43,7 @@ export const ScheduleDrawer = ({ businessCalendar, editingSchedule, onClose, onS
39
43
  var _a;
40
44
  return ((_a = holidayCatalog === null || holidayCatalog === void 0 ? void 0 : holidayCatalog.holidays) !== null && _a !== void 0 ? _a : []).map(h => ({
41
45
  id: h.code,
42
- label: `${h.displayName} · ${h.rule}`,
46
+ label: formatKnownHolidayLabel(h),
43
47
  }));
44
48
  }, [holidayCatalog]);
45
49
  const selectedHolidayOptions = useMemo(() => holidayOptions.filter(o => knownHolidays.has(String(o.id))), [holidayOptions, knownHolidays]);
@@ -103,10 +107,13 @@ export const ScheduleDrawer = ({ businessCalendar, editingSchedule, onClose, onS
103
107
  setSubmitting(false);
104
108
  }
105
109
  };
106
- return (_jsxs(Drawer, { open: true, onClose: onClose, size: "medium", children: [_jsx(Drawer.Header, { children: isEditing ? 'Edit Schedule' : 'Create New Schedule' }), _jsx(Drawer.Content, { children: _jsxs(Flex, { direction: "column", gap: "4", children: [_jsx(TextField, { required: true, label: "Schedule Name", value: name, onChange: e => setName(e.target.value), onBlur: () => setNameTouched(true), error: nameTouched ? nameError : undefined }), _jsxs(Flex, { direction: "column", gap: "2", children: [_jsx(Text, { variant: "eyebrow", size: "small", children: "Exclude Weekends" }), _jsxs(Flex, { gap: "3", children: [_jsx(ButtonToggle, { checked: weekendDays.has(6), onClick: () => toggleWeekendDay(6), children: "Saturday" }), _jsx(ButtonToggle, { checked: weekendDays.has(0), onClick: () => toggleWeekendDay(0), children: "Sunday" })] })] }), _jsxs(Flex, { direction: "column", gap: "2", children: [_jsx(Text, { variant: "eyebrow", size: "small", children: "Exclude Holidays" }), holidayCatalogLoading && _jsx(Text, { variant: "body", children: "Loading holidays\u2026" }), holidayCatalogError && (_jsx(Alert, { status: "danger", title: holidayCatalogError })), _jsx(MultiSelectFieldSync, { label: holidayCatalog
107
- ? `${holidayCatalog.jurisdiction} Holidays`
108
- : 'Holidays', disabled: holidayCatalogLoading, options: holidayOptions, value: selectedHolidayOptions, onSelectedOptionsChange: options => setKnownHolidays(new Set(options.map(o => String(o.id)))), description: "Select the holidays you want to exclude", filter: { keys: ['label'] } })] }), _jsxs(Flex, { direction: "column", gap: "2", children: [_jsx(Text, { variant: "eyebrow", size: "small", children: "Custom Dates" }), customDates.map((row, index) => {
109
- const invalid = resolvedCustomDates[index] === null && !isEmptyDate(row.value);
110
- return (_jsxs(Flex, { gap: "2", children: [_jsx(DateFieldYearless, { label: `Custom date ${index + 1}`, hideLabel: true, value: row.value, error: invalid ? 'Enter a valid date' : undefined, onChange: change => handleCustomDateChange(row.id, change.value), flex: 1 }), _jsx(Button, { icon: DeleteIcon, appearance: "ghost", "aria-label": "Remove date", onClick: () => handleRemoveDate(row.id) })] }, row.id));
111
- }), _jsx(Button, { appearance: "ghost", icon: IconAddCircle, onClick: handleAddDate, children: "Add Date" })] }), submitError && _jsx(Alert, { status: "danger", title: submitError })] }) }), _jsxs(Drawer.Footer, { sticky: true, children: [_jsx(Drawer.CancelButton, { appearance: "secondary", children: "Cancel" }), _jsx(Button, { appearance: "primary", onClick: handleSubmit, loading: submitting, disabled: !canSubmit, children: isEditing ? 'Save' : 'Create' })] })] }));
110
+ const title = isEditing ? 'Edit Schedule' : 'Create New Schedule';
111
+ const form = (_jsxs(Flex, { direction: "column", gap: "5", style: { height: '100%', overflowY: 'auto' }, children: [_jsx(TextField, { required: true, label: "Schedule Name", placeholder: "New Schedule", value: name, onChange: e => setName(e.target.value), onBlur: () => setNameTouched(true), error: nameTouched ? nameError : undefined }), _jsxs(Flex, { direction: "column", gap: "3", children: [_jsx(Text, { variant: "eyebrow", size: "small", children: "Exclude Weekends" }), _jsxs(Flex, { gap: "3", children: [_jsx(ButtonToggle, { checked: weekendDays.has(6), onClick: () => toggleWeekendDay(6), children: "Saturday" }), _jsx(ButtonToggle, { checked: weekendDays.has(0), onClick: () => toggleWeekendDay(0), children: "Sunday" })] })] }), _jsxs(Flex, { direction: "column", gap: "3", children: [_jsx(Text, { variant: "eyebrow", size: "small", children: "Exclude Holidays" }), holidayCatalogLoading && _jsx(Text, { variant: "body", children: "Loading holidays\u2026" }), holidayCatalogError && _jsx(Alert, { status: "danger", title: holidayCatalogError }), _jsx(MultiSelectFieldSync, { label: holidayCatalog ? `${holidayCatalog.jurisdiction} Holidays` : 'Holidays', disabled: holidayCatalogLoading, options: holidayOptions, value: selectedHolidayOptions, onSelectedOptionsChange: options => setKnownHolidays(new Set(options.map(o => String(o.id)))), description: "Select the holidays you want to exclude", filter: { keys: ['label'] } })] }), _jsxs(Flex, { direction: "column", gap: "2", children: [_jsx(Text, { variant: "eyebrow", size: "small", children: "Custom Dates" }), customDates.map((row, index) => {
112
+ const invalid = resolvedCustomDates[index] === null && !isEmptyDate(row.value);
113
+ return (_jsxs(Flex, { gap: "2", children: [_jsx(DateFieldYearless, { label: `Custom date ${index + 1}`, hideLabel: true, value: row.value, error: invalid ? 'Enter a valid date' : undefined, onChange: change => handleCustomDateChange(row.id, change.value), flex: 1 }), _jsx(Button, { icon: DeleteIcon, appearance: "ghost", "aria-label": "Remove date", onClick: () => handleRemoveDate(row.id) })] }, row.id));
114
+ }), _jsx(Button, { appearance: "ghost", icon: IconAddCircle, onClick: handleAddDate, alignSelf: "end", children: "Add Date" })] }), submitError && _jsx(Alert, { status: "danger", title: submitError })] }));
115
+ if (editorContainer) {
116
+ return createPortal(_jsxs(Flex, { direction: "column", gap: "5", style: { height: '100%' }, children: [_jsxs(Flex, { alignItems: "center", justifyContent: "space-between", children: [_jsx(Text, { variant: "headline", el: "h6", size: "small", children: title }), _jsx(Button, { appearance: "ghost", size: "small", onClick: onClose, "aria-label": "Close", icon: IconClose })] }), form, _jsx(Button, { size: "small", appearance: "primary", onClick: handleSubmit, loading: submitting, disabled: !canSubmit, style: { width: '100%' }, children: isEditing ? 'Save' : 'Create' })] }), editorContainer);
117
+ }
118
+ return (_jsxs(Drawer, { open: true, onClose: onClose, size: "medium", children: [_jsx(Drawer.Header, { children: title }), _jsx(Drawer.Content, { children: form }), _jsxs(Drawer.Footer, { sticky: true, children: [_jsx(Drawer.CancelButton, { appearance: "secondary", children: "Cancel" }), _jsx(Button, { appearance: "primary", onClick: handleSubmit, loading: submitting, disabled: !canSubmit, children: isEditing ? 'Save' : 'Create' })] })] }));
112
119
  };
@@ -5,10 +5,10 @@ import EditIcon from '@servicetitan/anvil2/assets/icons/material/round/edit.svg'
5
5
  import IconExpandLess from '@servicetitan/anvil2/assets/icons/material/round/expand_less.svg';
6
6
  import IconExpandMore from '@servicetitan/anvil2/assets/icons/material/round/expand_more.svg';
7
7
  import { Fragment, useMemo, useState } from 'react';
8
- import { formatCustomDateLabel } from '../business-calendar-validation.utils';
8
+ import { formatCustomDateLabel, formatKnownHolidayLabel, } from '../business-calendar-validation.utils';
9
+ import { SCHEDULE_PICKER_TEXT, WEEKEND_DAY_LABELS } from '../constants';
10
+ import { findSelectedSchedule } from '../schedule-bindings.utils';
9
11
  import { ScheduleDrawer } from './schedule-drawer';
10
- /** `BusinessCalendarRules.weekendDays` day numbers, as `Date.getUTCDay()` numbers them. */
11
- const WEEKEND_DAY_LABELS = { 0: 'Sundays', 6: 'Saturdays' };
12
12
  const DEFAULT_OPTION_ID = 'default';
13
13
  /** "Select Schedule or create new" picker plus a collapsible preview of the selected schedule's rules. */
14
14
  export const SchedulePicker = ({ businessCalendar }) => {
@@ -22,7 +22,7 @@ export const SchedulePicker = ({ businessCalendar }) => {
22
22
  const options = useMemo(() => (schedules !== null && schedules !== void 0 ? schedules : []).map(s => { var _a; return ({ id: (_a = s.id) !== null && _a !== void 0 ? _a : DEFAULT_OPTION_ID, label: s.name }); }), [schedules]);
23
23
  const selectedOptionId = selectedScheduleId !== null && selectedScheduleId !== void 0 ? selectedScheduleId : DEFAULT_OPTION_ID;
24
24
  const selectedOption = (_a = options.find(o => o.id === selectedOptionId)) !== null && _a !== void 0 ? _a : null;
25
- const selectedSchedule = (schedules !== null && schedules !== void 0 ? schedules : []).find(s => { var _a; return ((_a = s.id) !== null && _a !== void 0 ? _a : DEFAULT_OPTION_ID) === selectedOptionId; });
25
+ const selectedSchedule = findSelectedSchedule(schedules, selectedScheduleId);
26
26
  const holidayByCode = useMemo(() => {
27
27
  var _a;
28
28
  const map = new Map();
@@ -68,21 +68,21 @@ export const SchedulePicker = ({ businessCalendar }) => {
68
68
  onSelectSchedule(undefined);
69
69
  }
70
70
  catch (e) {
71
- setDeleteError(e instanceof Error ? e.message : 'Failed to delete schedule');
71
+ setDeleteError(e instanceof Error ? e.message : SCHEDULE_PICKER_TEXT.deleteFailed);
72
72
  }
73
73
  finally {
74
74
  setDeleting(false);
75
75
  }
76
76
  };
77
- return (_jsxs(Fragment, { children: [_jsx(SelectFieldSync, { label: "Select Schedule or create new", options: options, value: selectedOption, disableClearButton: true, disabled: schedulesLoading, onSelectedOptionChange: handleSelectedOptionChange, onAddNewItem: handleOpenCreate, addItemLabel: "Create new schedule", filter: { keys: ['label'] } }), schedulesLoading && _jsx(Text, { variant: "body", children: "Loading schedules\u2026" }), schedulesError && _jsx(Alert, { status: "danger", title: schedulesError }), selectedSchedule && (_jsxs("div", { className: "dte-business-calendar-preview", children: [_jsxs(Flex, { alignItems: "center", justifyContent: "space-between", gap: "2", className: "dte-business-calendar-preview-header", children: [_jsxs(Flex, { alignItems: "center", gap: "2", onClick: () => setPreviewOpen(prev => !prev), children: [_jsx(Button, { appearance: "ghost", size: "small", icon: previewOpen ? IconExpandLess : IconExpandMore, "aria-label": previewOpen
77
+ return (_jsxs(Fragment, { children: [_jsx(SelectFieldSync, { label: SCHEDULE_PICKER_TEXT.selectLabel, options: options, value: selectedOption, disableClearButton: true, disabled: schedulesLoading, onSelectedOptionChange: handleSelectedOptionChange, onAddNewItem: handleOpenCreate, addItemLabel: SCHEDULE_PICKER_TEXT.createNew, filter: { keys: ['label'] } }), schedulesLoading && (_jsx(Text, { variant: "body", children: SCHEDULE_PICKER_TEXT.loadingSchedules })), schedulesError && _jsx(Alert, { status: "danger", title: schedulesError }), selectedSchedule && (_jsxs("div", { className: "dte-business-calendar-preview", children: [_jsxs(Flex, { alignItems: "center", justifyContent: "space-between", gap: "2", className: "dte-business-calendar-preview-header", children: [_jsxs(Flex, { alignItems: "center", gap: "2", onClick: () => setPreviewOpen(prev => !prev), children: [_jsx(Button, { appearance: "ghost", size: "small", icon: previewOpen ? IconExpandLess : IconExpandMore, "aria-label": previewOpen
78
78
  ? 'Collapse schedule preview'
79
- : 'Expand schedule preview' }), _jsx(Text, { variant: "body", children: _jsx("strong", { children: selectedSchedule.name }) })] }), !selectedSchedule.isDefault && (_jsxs(Flex, { alignItems: "center", gap: "2", children: [_jsx(Button, { icon: EditIcon, size: "small", appearance: "ghost", onClick: handleOpenEdit, disabled: deleting, children: "Edit" }), _jsx(Button, { icon: DeleteIcon, size: "small", appearance: "ghost", "aria-label": "Delete schedule", onClick: handleDelete, loading: deleting, disabled: !onDeleteSchedule })] }))] }), deleteError && _jsx(Alert, { status: "danger", title: deleteError }), previewOpen && (_jsxs(Flex, { direction: "column", gap: "3", className: "dte-business-calendar-preview-content", children: [_jsxs(Flex, { direction: "column", gap: "2", children: [_jsx(Text, { variant: "eyebrow", size: "small", children: "Excluded Weekends" }), _jsx(Flex, { gap: "2", style: { flexWrap: 'wrap' }, children: selectedSchedule.calendar.weekendDays.map(day => {
79
+ : 'Expand schedule preview' }), _jsx(Text, { variant: "body", size: "small", style: { fontWeight: 'bold' }, children: selectedSchedule.name })] }), !selectedSchedule.isDefault && (_jsxs(Flex, { alignItems: "center", gap: "2", children: [_jsx(Button, { icon: EditIcon, size: "small", appearance: "ghost", onClick: handleOpenEdit, disabled: deleting }), _jsx(Button, { icon: DeleteIcon, size: "small", appearance: "ghost", "aria-label": "Delete schedule", onClick: handleDelete, loading: deleting, disabled: !onDeleteSchedule })] }))] }), deleteError && _jsx(Alert, { status: "danger", title: deleteError }), previewOpen && (_jsxs(Flex, { direction: "column", gap: "5", className: "dte-business-calendar-preview-content", children: [_jsxs(Flex, { direction: "column", gap: "4", children: [_jsx(Text, { variant: "eyebrow", size: "small", children: SCHEDULE_PICKER_TEXT.excludedWeekends }), _jsx(Flex, { gap: "2", style: { flexWrap: 'wrap' }, children: selectedSchedule.calendar.weekendDays.map(day => {
80
80
  var _a;
81
81
  return (_jsx(Chip, { label: (_a = WEEKEND_DAY_LABELS[day]) !== null && _a !== void 0 ? _a : String(day), size: "medium" }, day));
82
- }) })] }), _jsxs(Flex, { direction: "column", gap: "2", children: [_jsx(Text, { variant: "eyebrow", size: "small", children: "Excluded Holidays" }), holidayCatalogLoading && (_jsx(Text, { variant: "body", children: "Loading holidays\u2026" })), holidayCatalogError && (_jsx(Alert, { status: "danger", title: holidayCatalogError })), _jsx(Flex, { gap: "2", style: { flexWrap: 'wrap' }, children: selectedSchedule.calendar.knownHolidays.map(code => {
82
+ }) })] }), _jsxs(Flex, { direction: "column", gap: "4", children: [_jsx(Text, { variant: "eyebrow", size: "small", children: SCHEDULE_PICKER_TEXT.excludedHolidays }), holidayCatalogLoading && (_jsx(Text, { variant: "body", children: SCHEDULE_PICKER_TEXT.loadingHolidays })), holidayCatalogError && (_jsx(Alert, { status: "danger", title: holidayCatalogError })), _jsx(Flex, { gap: "2", style: { flexWrap: 'wrap' }, children: selectedSchedule.calendar.knownHolidays.map(code => {
83
83
  const holiday = holidayByCode.get(code);
84
84
  return (_jsx(Chip, { label: holiday
85
- ? `${holiday.displayName} · ${holiday.rule}`
85
+ ? formatKnownHolidayLabel(holiday)
86
86
  : code, size: "medium" }, code));
87
- }) })] }), selectedSchedule.calendar.customDates.length > 0 && (_jsxs(Flex, { direction: "column", gap: "2", children: [_jsx(Text, { variant: "eyebrow", size: "small", children: "Custom Dates" }), _jsx(Flex, { gap: "2", style: { flexWrap: 'wrap' }, children: selectedSchedule.calendar.customDates.map(date => (_jsx(Chip, { label: formatCustomDateLabel(date), size: "medium" }, date))) })] }))] }))] })), drawerOpen && (_jsx(ScheduleDrawer, { businessCalendar: businessCalendar, editingSchedule: editingSchedule, onClose: handleCloseDrawer, onSaved: handleSaved }))] }));
87
+ }) })] }), selectedSchedule.calendar.customDates.length > 0 && (_jsxs(Flex, { direction: "column", gap: "4", children: [_jsx(Text, { variant: "eyebrow", size: "small", children: SCHEDULE_PICKER_TEXT.customDates }), _jsx(Flex, { gap: "2", style: { flexWrap: 'wrap' }, children: selectedSchedule.calendar.customDates.map(date => (_jsx(Chip, { label: formatCustomDateLabel(date), size: "medium" }, date))) })] }))] }))] })), drawerOpen && (_jsx(ScheduleDrawer, { businessCalendar: businessCalendar, editingSchedule: editingSchedule, onClose: handleCloseDrawer, onSaved: handleSaved }))] }));
88
88
  };
@@ -8,3 +8,24 @@ export declare const CUSTOM_DATE_PATTERN: RegExp;
8
8
  export declare const CUSTOM_DATE_MONTH_LENGTHS: number[];
9
9
  /** The default schedule's weekend: Sunday and Saturday, DTE's `Date.getUTCDay()` numbering. */
10
10
  export declare const DEFAULT_SCHEDULE_WEEKEND_DAYS: [0, 6];
11
+ /**
12
+ * `BusinessCalendarSection`'s default toggle label, used for a date calculated field and an e-sign
13
+ * `dateSignedOffset` field alike.
14
+ */
15
+ export declare const BUSINESS_CALENDAR_TOGGLE_LABEL = "Exclude weekends & holidays from the calculation";
16
+ /** How a schedule's preview names `BusinessCalendarRules.weekendDays`. */
17
+ export declare const WEEKEND_DAY_LABELS: Readonly<Record<number, string>>;
18
+ /**
19
+ * `SchedulePicker`'s text, also used by an editor that renders its own copy of the picker
20
+ * (Unlayer's Formula Builder, inside an iframe without Anvil2), so both read the same.
21
+ */
22
+ export declare const SCHEDULE_PICKER_TEXT: {
23
+ readonly selectLabel: "Select Schedule or create new";
24
+ readonly createNew: "Create new schedule";
25
+ readonly loadingSchedules: "Loading schedules…";
26
+ readonly loadingHolidays: "Loading holidays…";
27
+ readonly excludedWeekends: "Excluded Weekends";
28
+ readonly excludedHolidays: "Excluded Holidays";
29
+ readonly customDates: "Custom Dates";
30
+ readonly deleteFailed: "Failed to delete schedule";
31
+ };
@@ -8,3 +8,27 @@ export const CUSTOM_DATE_PATTERN = /^(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$/;
8
8
  export const CUSTOM_DATE_MONTH_LENGTHS = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
9
9
  /** The default schedule's weekend: Sunday and Saturday, DTE's `Date.getUTCDay()` numbering. */
10
10
  export const DEFAULT_SCHEDULE_WEEKEND_DAYS = [0, 6];
11
+ /**
12
+ * `BusinessCalendarSection`'s default toggle label, used for a date calculated field and an e-sign
13
+ * `dateSignedOffset` field alike.
14
+ */
15
+ export const BUSINESS_CALENDAR_TOGGLE_LABEL = 'Exclude weekends & holidays from the calculation';
16
+ /** How a schedule's preview names `BusinessCalendarRules.weekendDays`. */
17
+ export const WEEKEND_DAY_LABELS = {
18
+ 0: 'Sundays',
19
+ 6: 'Saturdays',
20
+ };
21
+ /**
22
+ * `SchedulePicker`'s text, also used by an editor that renders its own copy of the picker
23
+ * (Unlayer's Formula Builder, inside an iframe without Anvil2), so both read the same.
24
+ */
25
+ export const SCHEDULE_PICKER_TEXT = {
26
+ selectLabel: 'Select Schedule or create new',
27
+ createNew: 'Create new schedule',
28
+ loadingSchedules: 'Loading schedules…',
29
+ loadingHolidays: 'Loading holidays…',
30
+ excludedWeekends: 'Excluded Weekends',
31
+ excludedHolidays: 'Excluded Holidays',
32
+ customDates: 'Custom Dates',
33
+ deleteFailed: 'Failed to delete schedule',
34
+ };
@@ -0,0 +1,31 @@
1
+ import { type BusinessCalendarHostProps, type FieldScheduleBinding, type ScheduleEditorContext } from './types';
2
+ /** Where a field's `ScheduleEditorContext` reads the current bindings and sends the next ones. */
3
+ export interface FieldScheduleBindingsAccess {
4
+ get(): FieldScheduleBinding[];
5
+ set(bindings: FieldScheduleBinding[]): void;
6
+ }
7
+ /**
8
+ * The `ScheduleEditorContext` of the field `fieldKey`, built from an editor's schedule props: the
9
+ * toggle is on while the field has a binding, and the toggle, the picker and a schedule delete
10
+ * replace the bindings through `bindings.set`.
11
+ *
12
+ * Every change reads the bindings through `bindings.get` when it happens, not when the context was
13
+ * built, so a callback kept from an earlier render can't write stale bindings back. A pick changes
14
+ * only a field whose toggle is on, and only to a different schedule: the picker shows only while
15
+ * the toggle is on, and its select of the default schedule right after a delete (which already
16
+ * moved the field there) must neither resend the bindings nor turn back on a toggle switched off
17
+ * while the delete was running. Without a `fieldKey` the toggle is off and does nothing.
18
+ */
19
+ export declare function buildFieldScheduleEditorContext(fieldKey: string | undefined, host: BusinessCalendarHostProps, bindings: FieldScheduleBindingsAccess): ScheduleEditorContext;
20
+ /**
21
+ * A stable {@link FieldScheduleBindingsAccess} over an editor's `scheduleBindings`: changes go to the
22
+ * latest `onScheduleBindingsChange`, even from a callback kept from an earlier render, and until the
23
+ * host passes them back the next change builds on the last one sent.
24
+ */
25
+ export declare function useFieldScheduleBindingsAccess(scheduleBindings: FieldScheduleBinding[] | undefined, onScheduleBindingsChange: ((bindings: FieldScheduleBinding[]) => void) | undefined): FieldScheduleBindingsAccess;
26
+ /**
27
+ * {@link buildFieldScheduleEditorContext} for a component: the field's context from the editor's
28
+ * schedule props, rebuilt only when one of them changes, with
29
+ * {@link useFieldScheduleBindingsAccess} for the bindings.
30
+ */
31
+ export declare function useFieldScheduleEditorContext(fieldKey: string | undefined, host: BusinessCalendarHostProps): ScheduleEditorContext;
@@ -0,0 +1,110 @@
1
+ import { useEffect, useMemo, useRef } from 'react';
2
+ import { clearDeletedSchedule, setFieldSchedule, setFieldScheduleEnabled, } from './schedule-bindings.utils';
3
+ /**
4
+ * The `ScheduleEditorContext` of the field `fieldKey`, built from an editor's schedule props: the
5
+ * toggle is on while the field has a binding, and the toggle, the picker and a schedule delete
6
+ * replace the bindings through `bindings.set`.
7
+ *
8
+ * Every change reads the bindings through `bindings.get` when it happens, not when the context was
9
+ * built, so a callback kept from an earlier render can't write stale bindings back. A pick changes
10
+ * only a field whose toggle is on, and only to a different schedule: the picker shows only while
11
+ * the toggle is on, and its select of the default schedule right after a delete (which already
12
+ * moved the field there) must neither resend the bindings nor turn back on a toggle switched off
13
+ * while the delete was running. Without a `fieldKey` the toggle is off and does nothing.
14
+ */
15
+ export function buildFieldScheduleEditorContext(fieldKey, host, bindings) {
16
+ var _a;
17
+ const binding = fieldKey
18
+ ? (_a = host.scheduleBindings) === null || _a === void 0 ? void 0 : _a.find(b => b.fieldKey === fieldKey)
19
+ : undefined;
20
+ const { onDeleteSchedule } = host;
21
+ return {
22
+ enabled: !!binding,
23
+ selectedScheduleId: binding === null || binding === void 0 ? void 0 : binding.scheduleId,
24
+ onToggle: enabled => {
25
+ if (fieldKey) {
26
+ bindings.set(setFieldScheduleEnabled(bindings.get(), fieldKey, enabled));
27
+ }
28
+ },
29
+ onSelectSchedule: scheduleId => {
30
+ const current = bindings.get();
31
+ const fieldBinding = fieldKey ? current.find(b => b.fieldKey === fieldKey) : undefined;
32
+ if (fieldKey && fieldBinding && fieldBinding.scheduleId !== scheduleId) {
33
+ bindings.set(setFieldSchedule(current, fieldKey, scheduleId));
34
+ }
35
+ },
36
+ holidayCatalog: host.holidayCatalog,
37
+ holidayCatalogLoading: host.holidayCatalogLoading,
38
+ holidayCatalogError: host.holidayCatalogError,
39
+ schedules: host.schedules,
40
+ schedulesLoading: host.schedulesLoading,
41
+ schedulesError: host.schedulesError,
42
+ onCreateSchedule: host.onCreateSchedule,
43
+ onUpdateSchedule: host.onUpdateSchedule,
44
+ onDeleteSchedule: onDeleteSchedule &&
45
+ (async (id) => {
46
+ await onDeleteSchedule(id);
47
+ const current = bindings.get();
48
+ if (current.some(b => b.scheduleId === id)) {
49
+ bindings.set(clearDeletedSchedule(current, id));
50
+ }
51
+ }),
52
+ };
53
+ }
54
+ /**
55
+ * A stable {@link FieldScheduleBindingsAccess} over an editor's `scheduleBindings`: changes go to the
56
+ * latest `onScheduleBindingsChange`, even from a callback kept from an earlier render, and until the
57
+ * host passes them back the next change builds on the last one sent.
58
+ */
59
+ export function useFieldScheduleBindingsAccess(scheduleBindings, onScheduleBindingsChange) {
60
+ const latestBindings = useRef(scheduleBindings !== null && scheduleBindings !== void 0 ? scheduleBindings : []);
61
+ const latestOnChange = useRef(onScheduleBindingsChange);
62
+ useEffect(() => {
63
+ latestBindings.current = scheduleBindings !== null && scheduleBindings !== void 0 ? scheduleBindings : [];
64
+ }, [scheduleBindings]);
65
+ useEffect(() => {
66
+ latestOnChange.current = onScheduleBindingsChange;
67
+ }, [onScheduleBindingsChange]);
68
+ return useMemo(() => ({
69
+ get: () => latestBindings.current,
70
+ set: next => {
71
+ var _a;
72
+ latestBindings.current = next;
73
+ (_a = latestOnChange.current) === null || _a === void 0 ? void 0 : _a.call(latestOnChange, next);
74
+ },
75
+ }), []);
76
+ }
77
+ /**
78
+ * {@link buildFieldScheduleEditorContext} for a component: the field's context from the editor's
79
+ * schedule props, rebuilt only when one of them changes, with
80
+ * {@link useFieldScheduleBindingsAccess} for the bindings.
81
+ */
82
+ export function useFieldScheduleEditorContext(fieldKey, host) {
83
+ const { holidayCatalog, holidayCatalogError, holidayCatalogLoading, onCreateSchedule, onDeleteSchedule, onScheduleBindingsChange, onUpdateSchedule, scheduleBindings, schedules, schedulesError, schedulesLoading, } = host;
84
+ const bindings = useFieldScheduleBindingsAccess(scheduleBindings, onScheduleBindingsChange);
85
+ return useMemo(() => buildFieldScheduleEditorContext(fieldKey, {
86
+ holidayCatalog,
87
+ holidayCatalogError,
88
+ holidayCatalogLoading,
89
+ onCreateSchedule,
90
+ onDeleteSchedule,
91
+ onUpdateSchedule,
92
+ scheduleBindings,
93
+ schedules,
94
+ schedulesError,
95
+ schedulesLoading,
96
+ }, bindings), [
97
+ bindings,
98
+ fieldKey,
99
+ holidayCatalog,
100
+ holidayCatalogError,
101
+ holidayCatalogLoading,
102
+ onCreateSchedule,
103
+ onDeleteSchedule,
104
+ onUpdateSchedule,
105
+ scheduleBindings,
106
+ schedules,
107
+ schedulesError,
108
+ schedulesLoading,
109
+ ]);
110
+ }
@@ -4,3 +4,5 @@ export { ScheduleDrawer } from './components/schedule-drawer';
4
4
  export type * from './types';
5
5
  export * from './constants';
6
6
  export * from './business-calendar-validation.utils';
7
+ export * from './schedule-bindings.utils';
8
+ export * from './field-schedule-editor-context';
@@ -3,3 +3,5 @@ export { SchedulePicker } from './components/schedule-picker';
3
3
  export { ScheduleDrawer } from './components/schedule-drawer';
4
4
  export * from './constants';
5
5
  export * from './business-calendar-validation.utils';
6
+ export * from './schedule-bindings.utils';
7
+ export * from './field-schedule-editor-context';
@@ -0,0 +1,22 @@
1
+ import { type BusinessDaySchedule, type FieldScheduleBinding } from './types';
2
+ /**
3
+ * The schedule a field's picker shows for its `scheduleId` (undefined for the default schedule),
4
+ * or undefined when it isn't listed (for example a deleted one).
5
+ */
6
+ export declare function findSelectedSchedule(schedules: BusinessDaySchedule[] | undefined, scheduleId: number | undefined): BusinessDaySchedule | undefined;
7
+ /**
8
+ * Replaces `fieldKey`'s binding: enabling adds it (default schedule, `scheduleId` undefined);
9
+ * disabling removes it. Every other field's binding is returned unchanged.
10
+ */
11
+ export declare function setFieldScheduleEnabled(bindings: FieldScheduleBinding[], fieldKey: string, enabled: boolean): FieldScheduleBinding[];
12
+ /**
13
+ * Sets `fieldKey`'s selected schedule (`scheduleId` undefined for the default schedule),
14
+ * enabling its toggle if it wasn't already on. Every other field's binding is returned unchanged.
15
+ */
16
+ export declare function setFieldSchedule(bindings: FieldScheduleBinding[], fieldKey: string, scheduleId: number | undefined): FieldScheduleBinding[];
17
+ /**
18
+ * Moves every field bound to the deleted schedule `scheduleId` to the default schedule, keeping its
19
+ * toggle on, as DTE falls back for a deleted schedule (and DTE refuses to save a binding to a
20
+ * schedule that no longer exists). Every other binding is returned unchanged.
21
+ */
22
+ export declare function clearDeletedSchedule(bindings: FieldScheduleBinding[], scheduleId: number): FieldScheduleBinding[];
@@ -0,0 +1,31 @@
1
+ /**
2
+ * The schedule a field's picker shows for its `scheduleId` (undefined for the default schedule),
3
+ * or undefined when it isn't listed (for example a deleted one).
4
+ */
5
+ export function findSelectedSchedule(schedules, scheduleId) {
6
+ return (schedules !== null && schedules !== void 0 ? schedules : []).find(s => scheduleId === undefined ? s.id === undefined : s.id === scheduleId);
7
+ }
8
+ /**
9
+ * Replaces `fieldKey`'s binding: enabling adds it (default schedule, `scheduleId` undefined);
10
+ * disabling removes it. Every other field's binding is returned unchanged.
11
+ */
12
+ export function setFieldScheduleEnabled(bindings, fieldKey, enabled) {
13
+ const withoutField = bindings.filter(b => b.fieldKey !== fieldKey);
14
+ return enabled ? [...withoutField, { fieldKey }] : withoutField;
15
+ }
16
+ /**
17
+ * Sets `fieldKey`'s selected schedule (`scheduleId` undefined for the default schedule),
18
+ * enabling its toggle if it wasn't already on. Every other field's binding is returned unchanged.
19
+ */
20
+ export function setFieldSchedule(bindings, fieldKey, scheduleId) {
21
+ const withoutField = bindings.filter(b => b.fieldKey !== fieldKey);
22
+ return [...withoutField, { fieldKey, scheduleId }];
23
+ }
24
+ /**
25
+ * Moves every field bound to the deleted schedule `scheduleId` to the default schedule, keeping its
26
+ * toggle on, as DTE falls back for a deleted schedule (and DTE refuses to save a binding to a
27
+ * schedule that no longer exists). Every other binding is returned unchanged.
28
+ */
29
+ export function clearDeletedSchedule(bindings, scheduleId) {
30
+ return bindings.map(b => (b.scheduleId === scheduleId ? { fieldKey: b.fieldKey } : b));
31
+ }
@@ -5,7 +5,7 @@
5
5
  }
6
6
 
7
7
  .dte-business-calendar-preview {
8
- padding: var(--spacing-2);
8
+ padding: var(--spacing-1);
9
9
  border: 1px solid var(--border-color);
10
10
  border-radius: 8px;
11
11
  }
@@ -15,5 +15,5 @@
15
15
  }
16
16
 
17
17
  .dte-business-calendar-preview-content {
18
- margin-top: var(--spacing-2);
18
+ margin-top: var(--spacing-1);
19
19
  }