@zeniai/web-components 4.1.67-betaJK2 → 4.1.67-betaVR1

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 (51) hide show
  1. package/dist/{SessionTimeoutPopup-BfhMt5Qq.cjs → SessionTimeoutPopup-BrRR0XU5.cjs} +15065 -14520
  2. package/dist/{SessionTimeoutPopup-DTK0o0og.js → SessionTimeoutPopup-DCorFAuC.js} +70935 -68946
  3. package/dist/appLocale.d.ts +115 -10
  4. package/dist/assets/interface/dnd-handle.svg +8 -0
  5. package/dist/assets/interface/flag.svg +4 -3
  6. package/dist/cockpit.cjs.js +11 -5
  7. package/dist/cockpit.esm.js +3940 -3927
  8. package/dist/components/common/zeniDatePicker/ZeniDatePickerField.d.ts +1 -2
  9. package/dist/components/commonSetUp/approval/AmountConditionRow.d.ts +21 -0
  10. package/dist/components/commonSetUp/approval/ApprovalRuleSection.d.ts +70 -3
  11. package/dist/components/commonSetUp/approval/ApprovalRuleSectionV1.d.ts +14 -0
  12. package/dist/components/commonSetUp/approval/ApprovalStageRow.d.ts +121 -0
  13. package/dist/components/commonSetUp/approval/ApprovalStagesSection.d.ts +66 -0
  14. package/dist/components/commonSetUp/approval/ConditionRow.d.ts +78 -0
  15. package/dist/components/commonSetUp/approval/DepartmentConditionRow.d.ts +22 -0
  16. package/dist/components/commonSetUp/approval/FallbackEngineBanner.d.ts +28 -0
  17. package/dist/components/commonSetUp/approval/FormSection.d.ts +26 -0
  18. package/dist/components/commonSetUp/approval/IgnoreOverlapModal.d.ts +22 -0
  19. package/dist/components/commonSetUp/approval/OperatorIsOrIsNotPicker.d.ts +23 -0
  20. package/dist/components/commonSetUp/approval/RuleOverlapBanner.d.ts +61 -0
  21. package/dist/components/commonSetUp/approval/RuleOverlapCard.d.ts +31 -0
  22. package/dist/components/commonSetUp/approval/Switch.d.ts +23 -0
  23. package/dist/components/commonSetUp/approval/VendorConditionRow.d.ts +27 -0
  24. package/dist/components/spendManagement/billPay/billPaySetUp/BillPayApprovalRuleDetailPage.d.ts +107 -12
  25. package/dist/components/spendManagement/billPay/billPaySetUp/BillPayApprovalRuleDetailPageV1.d.ts +37 -0
  26. package/dist/components/spendManagement/billPay/billPaySetUp/BillPayApprovalRulesPage.d.ts +18 -1
  27. package/dist/components/spendManagement/billPay/billPaySetUp/BillPayApprovalRulesPageV1.d.ts +10 -0
  28. package/dist/components/spendManagement/reimbursement/reimbursementSetUp/ReimbursementApprovalRuleDetailPage.d.ts +100 -12
  29. package/dist/components/spendManagement/reimbursement/reimbursementSetUp/ReimbursementApprovalRuleDetailPageV1.d.ts +37 -0
  30. package/dist/components/spendManagement/reimbursement/reimbursementSetUp/ReimbursementApprovalRulesPage.d.ts +16 -1
  31. package/dist/components/spendManagement/reimbursement/reimbursementSetUp/ReimbursementApprovalRulesPageV1.d.ts +10 -0
  32. package/dist/components/taskManagement/TaskDetailPage.d.ts +2 -6
  33. package/dist/components/taskManagement/TaskListRow.d.ts +2 -7
  34. package/dist/components/taskManagement/TaskListRowSmall.d.ts +1 -3
  35. package/dist/components/taskManagement/TaskManagementPage.d.ts +28 -4
  36. package/dist/components/taskManagement/taskManagementFormConstants.d.ts +0 -1
  37. package/dist/components/taskManagement/taskManagementHeaderItemsData.d.ts +0 -1
  38. package/dist/components/vendors/vendorList/VendorListTableRow.d.ts +1 -2
  39. package/dist/context/featureProvider/DynamicConfigNameConstants.d.ts +2 -0
  40. package/dist/context/featureProvider/useApprovalRulesV3Config.d.ts +31 -0
  41. package/dist/designSystem/ClickableRow.d.ts +11 -0
  42. package/dist/designSystem/clickableRowStyles.d.ts +32 -0
  43. package/dist/index.cjs.js +1 -1
  44. package/dist/index.d.ts +14 -0
  45. package/dist/index.esm.js +328 -321
  46. package/dist/strings/strings.d.ts +115 -10
  47. package/package.json +2 -2
  48. package/dist/components/taskManagement/SubtaskCreationForm.d.ts +0 -14
  49. package/dist/components/taskManagement/TaskDetailSubtaskForm.d.ts +0 -14
  50. package/dist/components/taskManagement/taskManagementTypes.d.ts +0 -33
  51. package/dist/components/taskManagement/taskManagementUtils.d.ts +0 -2
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Form-state keys used by the vendor condition group.
3
+ *
4
+ * Vendor and department rows split their form state across two keys
5
+ * because the multi-select primitive's native value is the
6
+ * `{allOptions, selectedOptions}` shape, which doesn't match the wire
7
+ * `VendorCriteria.vendorIds` `string[]`. The screen connector reads
8
+ * `selection.selectedOptions` and translates to the canonical
9
+ * `VendorCriteria` at save time.
10
+ */
11
+ export declare const VENDOR_CRITERIA_FIELD = "vendorCriteria";
12
+ export declare const VENDOR_OPERATOR_FIELD = "vendorCriteria.operator";
13
+ export declare const VENDOR_SELECTION_FIELD = "vendorCriteria.selection";
14
+ export interface VendorOption {
15
+ id: string;
16
+ name: string;
17
+ }
18
+ export interface VendorConditionRowProps {
19
+ /**
20
+ * All vendor IDs the user can choose from. Display names are
21
+ * resolved via `vendorNamesById`.
22
+ */
23
+ allVendorIds: string[];
24
+ vendorNamesById: Record<string, string>;
25
+ }
26
+ export declare function VendorConditionRow({ allVendorIds, vendorNamesById, }: VendorConditionRowProps): import("react/jsx-runtime").JSX.Element;
27
+ export default VendorConditionRow;
@@ -1,24 +1,119 @@
1
- import { ApprovalUpdateActionType, BillPaySetupApproverUpdateDataView, ID } from '@zeniai/client-epic-state';
1
+ import { AmountComparator, AmountCriteria, ApprovalUpdateActionType, BillPayApprovalRuleWithUser, BillPaySetupApproverUpdateDataView, ID } from '@zeniai/client-epic-state';
2
2
  import { ResponsiveSized } from '../../../../context/windowSizeProvider';
3
- import { StepData } from '../../common/followStepsSection/FollowStepsSectionMedium';
4
- declare const lowerBound = "lowerBound";
5
- declare const upperBound = "upperBound";
3
+ import { ApprovalStageData } from '../../../commonSetUp/approval/ApprovalStageRow';
4
+ import { IsOrIsNotOperator } from '../../../commonSetUp/approval/OperatorIsOrIsNotPicker';
5
+ declare const name = "name";
6
+ declare const description = "description";
7
+ declare const amountCriteria = "amountCriteria";
8
+ declare const vendorCriteria = "vendorCriteria";
9
+ declare const departmentCriteria = "departmentCriteria";
6
10
  declare const steps = "steps";
11
+ declare const separationOfDuties = "separationOfDuties";
12
+ declare const isFallback = "isFallback";
7
13
  declare const applyToExistingBills = "applyToExistingBills";
14
+ /**
15
+ * Form-side shape for vendor / department conditions.
16
+ *
17
+ * The widget primitive (`LabeledMultiSelectField`) stores its value as
18
+ * `{allOptions, selectedOptions}`, which doesn't match the wire shape
19
+ * `{type, operator, vendorIds | departmentIds}`. The form stores the
20
+ * widget-native shape under each slot and the screen connector
21
+ * translates to the canonical `VendorCriteria` / `DepartmentCriteria`
22
+ * at save time.
23
+ *
24
+ * The `operator` slot is driven by `SingleSelectField`, which writes
25
+ * the wrapped `{allOptions, selectedOption}` shape to form state, so
26
+ * we declare it inline as `{allOptions, selectedOption}` here.
27
+ * `getDefaultValues` seeds the wrapped shape too, so the runtime
28
+ * always matches the type. Readers do `value.operator.selectedOption`.
29
+ */
30
+ export interface MultiSelectFormValue {
31
+ allOptions: string[];
32
+ selectedOptions: string[];
33
+ }
34
+ export interface VendorConditionFormValue {
35
+ operator: {
36
+ allOptions: IsOrIsNotOperator[];
37
+ selectedOption?: IsOrIsNotOperator;
38
+ };
39
+ selection: MultiSelectFormValue;
40
+ }
41
+ export interface DepartmentConditionFormValue {
42
+ operator: {
43
+ allOptions: IsOrIsNotOperator[];
44
+ selectedOption?: IsOrIsNotOperator;
45
+ };
46
+ selection: MultiSelectFormValue;
47
+ }
48
+ /**
49
+ * Form-side amount shape. Same reason as vendor/department: the
50
+ * comparator slot is `SingleSelectField`-driven, so its runtime shape
51
+ * is the wrapper. The min/max remain canonical `Amount` because they
52
+ * are driven by `TextField` which writes bare values.
53
+ */
54
+ export interface AmountConditionFormValue {
55
+ comparator: {
56
+ allOptions: AmountComparator[];
57
+ selectedOption?: AmountComparator;
58
+ };
59
+ type: "amount";
60
+ max?: AmountCriteria["max"];
61
+ min?: AmountCriteria["min"];
62
+ }
63
+ /**
64
+ * Full Approval Rules 3.0 form data shape.
65
+ *
66
+ * Each top-level slot corresponds to one section of the form. Bindings
67
+ * land incrementally — the slots are declared up front so the contract is
68
+ * stable across tasks:
69
+ * - amountCriteria — task #8
70
+ * - vendorCriteria / departmentCriteria — tasks #9–#10 (this change)
71
+ * - separationOfDuties — task #14
72
+ * - isFallback — task #15
73
+ */
8
74
  export interface FormData {
9
75
  [applyToExistingBills]: string[];
10
- [steps]: StepData[];
11
- [upperBound]: number;
12
- [lowerBound]?: number;
76
+ [steps]: ApprovalStageData[];
77
+ [amountCriteria]?: AmountConditionFormValue;
78
+ [departmentCriteria]?: DepartmentConditionFormValue;
79
+ [description]?: string;
80
+ [isFallback]?: boolean;
81
+ [name]?: string;
82
+ [separationOfDuties]?: boolean;
83
+ [vendorCriteria]?: VendorConditionFormValue;
13
84
  }
14
85
  export interface BillPayApprovalRuleDetailPageProps {
86
+ /**
87
+ * User-resolved approval rules used by the overlap warning surface
88
+ * (RuleOverlapBanner). Threaded separately from `localData` because
89
+ * the update-data view exposes only the raw `ApprovalRule[]` (no
90
+ * resolved user actors on the steps), and the banner's per-rule
91
+ * card renders resolved actor names in its 'Then:' section.
92
+ */
93
+ allApprovalRulesWithUser: BillPayApprovalRuleWithUser[];
94
+ /**
95
+ * Vendor list available to the rule. Threaded from `state.contactState`
96
+ * by the screen connector. Empty when the contact slice hasn't loaded
97
+ * yet — the multi-select renders no options in that case.
98
+ */
99
+ allVendorIds: string[];
15
100
  approvalUpdateActionType: ApprovalUpdateActionType;
16
101
  localData: BillPaySetupApproverUpdateDataView;
17
- hideUpperBoundField?: boolean;
18
- isLowerBoundDisabled?: boolean;
19
- isUpperBoundDisabled?: boolean;
102
+ vendorNamesById: Record<string, string>;
103
+ /**
104
+ * When editing an existing rule, the rule being edited. Used to
105
+ * exclude it from the overlap check (a rule should not flag itself
106
+ * as conflicting). Undefined for create flows.
107
+ */
108
+ editingRuleId?: ID;
20
109
  onApprovalRuleDataUpdated: (formData: FormData) => void;
21
110
  onBackClick: () => void;
111
+ /**
112
+ * Approval Rules 3.0 — invoked from RuleOverlapBanner when the user
113
+ * clicks Edit on one of the conflicting rules. The screen connector
114
+ * wires this to a same-tab navigation to that rule's detail page.
115
+ */
116
+ onEditExistingRule: (ruleId: string) => void;
22
117
  onResetClick: () => void;
23
118
  onSaveRuleClick: () => void;
24
119
  onSaveRuleSuccess: () => void;
@@ -29,9 +124,9 @@ export interface BillPayApprovalRuleDetailPageProps {
29
124
  export declare const D: {
30
125
  footerPadding: ResponsiveSized;
31
126
  };
32
- declare function BillPayApprovalRuleDetailPage({ localData, approvalUpdateActionType, onBackClick, onApprovalRuleDataUpdated, onResetClick, isLowerBoundDisabled, isUpperBoundDisabled, hideUpperBoundField, onSaveRuleClick, onSaveRuleSuccess, }: BillPayApprovalRuleDetailPageProps): import("react/jsx-runtime").JSX.Element;
127
+ declare function BillPayApprovalRuleDetailPage({ localData, approvalUpdateActionType, allApprovalRulesWithUser, allVendorIds, editingRuleId, vendorNamesById, onBackClick, onApprovalRuleDataUpdated, onEditExistingRule, onResetClick, onSaveRuleClick, onSaveRuleSuccess, }: BillPayApprovalRuleDetailPageProps): import("react/jsx-runtime").JSX.Element;
33
128
  export default BillPayApprovalRuleDetailPage;
34
129
  export declare const uniqueFormName: (sectionId: ID) => `${string}_form`;
35
130
  type FormDataKeys = keyof FormData;
36
- export declare const uniqueName: (key: FormDataKeys) => "steps" | "lowerBound" | "upperBound" | "applyToExistingBills";
131
+ export declare const uniqueName: (key: FormDataKeys) => "description" | "name" | "steps" | "isFallback" | "separationOfDuties" | "amountCriteria" | "departmentCriteria" | "vendorCriteria" | "applyToExistingBills";
37
132
  export type FormDataKeyUniqueNames = ReturnType<typeof uniqueName>;
@@ -0,0 +1,37 @@
1
+ import { ApprovalUpdateActionType, BillPaySetupApproverUpdateDataView, ID } from '@zeniai/client-epic-state';
2
+ import { ResponsiveSized } from '../../../../context/windowSizeProvider';
3
+ import { StepData } from '../../common/followStepsSection/FollowStepsSectionMedium';
4
+ declare const lowerBound = "lowerBound";
5
+ declare const upperBound = "upperBound";
6
+ declare const steps = "steps";
7
+ declare const applyToExistingBills = "applyToExistingBills";
8
+ export interface FormData {
9
+ [applyToExistingBills]: string[];
10
+ [steps]: StepData[];
11
+ [upperBound]: number;
12
+ [lowerBound]?: number;
13
+ }
14
+ export interface BillPayApprovalRuleDetailPageProps {
15
+ approvalUpdateActionType: ApprovalUpdateActionType;
16
+ localData: BillPaySetupApproverUpdateDataView;
17
+ hideUpperBoundField?: boolean;
18
+ isLowerBoundDisabled?: boolean;
19
+ isUpperBoundDisabled?: boolean;
20
+ onApprovalRuleDataUpdated: (formData: FormData) => void;
21
+ onBackClick: () => void;
22
+ onResetClick: () => void;
23
+ onSaveRuleClick: () => void;
24
+ onSaveRuleSuccess: () => void;
25
+ }
26
+ /**
27
+ * Dimensions
28
+ */
29
+ export declare const D: {
30
+ footerPadding: ResponsiveSized;
31
+ };
32
+ declare function BillPayApprovalRuleDetailPage({ localData, approvalUpdateActionType, onBackClick, onApprovalRuleDataUpdated, onResetClick, isLowerBoundDisabled, isUpperBoundDisabled, hideUpperBoundField, onSaveRuleClick, onSaveRuleSuccess, }: BillPayApprovalRuleDetailPageProps): import("react/jsx-runtime").JSX.Element;
33
+ export default BillPayApprovalRuleDetailPage;
34
+ export declare const uniqueFormName: (sectionId: ID) => `${string}_form`;
35
+ type FormDataKeys = keyof FormData;
36
+ export declare const uniqueName: (key: FormDataKeys) => "steps" | "applyToExistingBills" | "lowerBound" | "upperBound";
37
+ export type FormDataKeyUniqueNames = ReturnType<typeof uniqueName>;
@@ -2,9 +2,26 @@ import { ApproverViewUpdateData, BillPaySetupApproverView } from '@zeniai/client
2
2
  export interface Props {
3
3
  approvalView: BillPaySetupApproverView;
4
4
  billPaySetupApproverViewUpdateData?: ApproverViewUpdateData;
5
+ /**
6
+ * Optional department-id → display-name map (where "department" maps
7
+ * to the Class entity in this codebase). Derived from `state.classState`.
8
+ */
9
+ departmentNamesById?: Record<string, string>;
10
+ /**
11
+ * Optional vendor-id → display-name map for resolving vendor chips on
12
+ * rule cards. The connected screen derives this from `state.contactState`.
13
+ */
14
+ vendorNamesById?: Record<string, string>;
5
15
  onBackClick: () => void;
6
16
  onDeleteRuleClick: (ruleId: string) => void;
7
17
  onEditRuleClick: (ruleId?: string) => void;
18
+ /**
19
+ * Called when the user drops a dragged rule card onto another. The
20
+ * page computes the new id ordering (preserving the fallback rule
21
+ * outside the list) and the screen connector dispatches the
22
+ * reorder action against CES.
23
+ */
24
+ onReorderRules?: (newApprovalRuleIds: string[]) => void;
8
25
  }
9
- declare const BillPayApprovalRulesPage: ({ approvalView, onBackClick, onEditRuleClick, onDeleteRuleClick, }: Props) => import("react/jsx-runtime").JSX.Element;
26
+ declare const BillPayApprovalRulesPage: ({ approvalView, onBackClick, onEditRuleClick, onDeleteRuleClick, vendorNamesById, departmentNamesById, onReorderRules, }: Props) => import("react/jsx-runtime").JSX.Element;
10
27
  export default BillPayApprovalRulesPage;
@@ -0,0 +1,10 @@
1
+ import { ApproverViewUpdateData, BillPaySetupApproverView } from '@zeniai/client-epic-state';
2
+ export interface Props {
3
+ approvalView: BillPaySetupApproverView;
4
+ billPaySetupApproverViewUpdateData?: ApproverViewUpdateData;
5
+ onBackClick: () => void;
6
+ onDeleteRuleClick: (ruleId: string) => void;
7
+ onEditRuleClick: (ruleId?: string) => void;
8
+ }
9
+ declare const BillPayApprovalRulesPage: ({ approvalView, onBackClick, onEditRuleClick, onDeleteRuleClick, }: Props) => import("react/jsx-runtime").JSX.Element;
10
+ export default BillPayApprovalRulesPage;
@@ -1,24 +1,112 @@
1
- import { ApprovalUpdateActionType, ID, RemiSetupApproverUpdateDataView } from '@zeniai/client-epic-state';
1
+ import { AmountComparator, AmountCriteria, ApprovalUpdateActionType, ID, RemiApprovalRuleWithUser, RemiSetupApproverUpdateDataView } from '@zeniai/client-epic-state';
2
2
  import { ResponsiveSized } from '../../../../context/windowSizeProvider';
3
- import { StepData } from '../../common/followStepsSection/FollowStepsSectionMedium';
4
- declare const lowerBound = "lowerBound";
5
- declare const upperBound = "upperBound";
3
+ import { ApprovalStageData } from '../../../commonSetUp/approval/ApprovalStageRow';
4
+ import { IsOrIsNotOperator } from '../../../commonSetUp/approval/OperatorIsOrIsNotPicker';
5
+ declare const name = "name";
6
+ declare const description = "description";
7
+ declare const amountCriteria = "amountCriteria";
8
+ declare const vendorCriteria = "vendorCriteria";
9
+ declare const departmentCriteria = "departmentCriteria";
6
10
  declare const steps = "steps";
11
+ declare const separationOfDuties = "separationOfDuties";
12
+ declare const isFallback = "isFallback";
7
13
  declare const applyToExistingReimbursements = "applyToExistingReimbursements";
14
+ /**
15
+ * Form-side shape for vendor / department conditions.
16
+ *
17
+ * The widget primitive (`LabeledMultiSelectField`) stores its value as
18
+ * `{allOptions, selectedOptions}`, which doesn't match the wire shape
19
+ * `{type, operator, vendorIds | departmentIds}`. The form stores the
20
+ * widget-native shape under each slot and the screen connector
21
+ * translates to the canonical `VendorCriteria` / `DepartmentCriteria`
22
+ * at save time.
23
+ */
24
+ export interface MultiSelectFormValue {
25
+ allOptions: string[];
26
+ selectedOptions: string[];
27
+ }
28
+ export interface VendorConditionFormValue {
29
+ operator: {
30
+ allOptions: IsOrIsNotOperator[];
31
+ selectedOption?: IsOrIsNotOperator;
32
+ };
33
+ selection: MultiSelectFormValue;
34
+ }
35
+ export interface DepartmentConditionFormValue {
36
+ operator: {
37
+ allOptions: IsOrIsNotOperator[];
38
+ selectedOption?: IsOrIsNotOperator;
39
+ };
40
+ selection: MultiSelectFormValue;
41
+ }
42
+ /**
43
+ * Form-side amount shape. See the BillPay equivalent for the fuller
44
+ * rationale — comparator is wrapped because the dropdown is
45
+ * SingleSelectField-driven, min / max remain canonical because they
46
+ * are driven by TextField.
47
+ */
48
+ export interface AmountConditionFormValue {
49
+ comparator: {
50
+ allOptions: AmountComparator[];
51
+ selectedOption?: AmountComparator;
52
+ };
53
+ type: "amount";
54
+ max?: AmountCriteria["max"];
55
+ min?: AmountCriteria["min"];
56
+ }
57
+ /**
58
+ * Full Approval Rules 3.0 form data shape.
59
+ *
60
+ * Each top-level slot corresponds to one section of the form. Bindings
61
+ * land incrementally — the slots are declared up front so the contract is
62
+ * stable across tasks:
63
+ * - amountCriteria — task #8
64
+ * - vendorCriteria / departmentCriteria — tasks #9–#10 (this change)
65
+ * - separationOfDuties — task #14
66
+ * - isFallback — task #15
67
+ */
8
68
  export interface FormData {
9
69
  [applyToExistingReimbursements]: string[];
10
- [steps]: StepData[];
11
- [upperBound]: number;
12
- [lowerBound]?: number;
70
+ [steps]: ApprovalStageData[];
71
+ [amountCriteria]?: AmountConditionFormValue;
72
+ [departmentCriteria]?: DepartmentConditionFormValue;
73
+ [description]?: string;
74
+ [isFallback]?: boolean;
75
+ [name]?: string;
76
+ [separationOfDuties]?: boolean;
77
+ [vendorCriteria]?: VendorConditionFormValue;
13
78
  }
14
79
  export interface ReimbursementApprovalRuleDetailPageProps {
80
+ /**
81
+ * User-resolved approval rules used by RuleOverlapBanner. See the
82
+ * BillPay equivalent for the rationale — the update-data view only
83
+ * exposes the raw `ApprovalRule[]`, but the banner needs resolved
84
+ * actor names to render the 'Then:' section.
85
+ */
86
+ allApprovalRulesWithUser: RemiApprovalRuleWithUser[];
87
+ /**
88
+ * Vendor list available to the rule. Threaded from `state.contactState`
89
+ * by the screen connector. Empty when the contact slice hasn't loaded
90
+ * yet — the multi-select renders no options in that case.
91
+ */
92
+ allVendorIds: string[];
15
93
  approvalUpdateActionType: ApprovalUpdateActionType;
16
94
  localData: RemiSetupApproverUpdateDataView;
17
- hideUpperBoundField?: boolean;
18
- isLowerBoundDisabled?: boolean;
19
- isUpperBoundDisabled?: boolean;
95
+ vendorNamesById: Record<string, string>;
96
+ /**
97
+ * When editing an existing rule, the rule being edited. Used to
98
+ * exclude it from the overlap check (a rule should not flag itself
99
+ * as conflicting). Undefined for create flows.
100
+ */
101
+ editingRuleId?: ID;
20
102
  onApprovalRuleDataUpdated: (formData: FormData) => void;
21
103
  onBackClick: () => void;
104
+ /**
105
+ * Approval Rules 3.0 — invoked from RuleOverlapBanner when the user
106
+ * clicks Edit on one of the conflicting rules. The screen connector
107
+ * wires this to a same-tab navigation to that rule's detail page.
108
+ */
109
+ onEditExistingRule: (ruleId: string) => void;
22
110
  onResetClick: () => void;
23
111
  onSaveRuleClick: () => void;
24
112
  onSaveRuleSuccess: () => void;
@@ -29,9 +117,9 @@ export interface ReimbursementApprovalRuleDetailPageProps {
29
117
  export declare const D: {
30
118
  footerPadding: ResponsiveSized;
31
119
  };
32
- declare function ReimbursementApprovalRuleDetailPage({ localData, approvalUpdateActionType, isLowerBoundDisabled, isUpperBoundDisabled, hideUpperBoundField, onBackClick, onApprovalRuleDataUpdated, onResetClick, onSaveRuleClick, onSaveRuleSuccess, }: ReimbursementApprovalRuleDetailPageProps): import("react/jsx-runtime").JSX.Element;
120
+ declare function ReimbursementApprovalRuleDetailPage({ localData, approvalUpdateActionType, allApprovalRulesWithUser, allVendorIds, editingRuleId, vendorNamesById, onBackClick, onApprovalRuleDataUpdated, onEditExistingRule, onResetClick, onSaveRuleClick, onSaveRuleSuccess, }: ReimbursementApprovalRuleDetailPageProps): import("react/jsx-runtime").JSX.Element;
33
121
  export default ReimbursementApprovalRuleDetailPage;
34
122
  export declare const uniqueFormName: (sectionId: ID) => `${string}_form`;
35
123
  type FormDataKeys = keyof FormData;
36
- export declare const uniqueName: (key: FormDataKeys) => "steps" | "lowerBound" | "upperBound" | "applyToExistingReimbursements";
124
+ export declare const uniqueName: (key: FormDataKeys) => "description" | "name" | "steps" | "isFallback" | "separationOfDuties" | "amountCriteria" | "departmentCriteria" | "vendorCriteria" | "applyToExistingReimbursements";
37
125
  export type FormDataKeyUniqueNames = ReturnType<typeof uniqueName>;
@@ -0,0 +1,37 @@
1
+ import { ApprovalUpdateActionType, ID, RemiSetupApproverUpdateDataView } from '@zeniai/client-epic-state';
2
+ import { ResponsiveSized } from '../../../../context/windowSizeProvider';
3
+ import { StepData } from '../../common/followStepsSection/FollowStepsSectionMedium';
4
+ declare const lowerBound = "lowerBound";
5
+ declare const upperBound = "upperBound";
6
+ declare const steps = "steps";
7
+ declare const applyToExistingReimbursements = "applyToExistingReimbursements";
8
+ export interface FormData {
9
+ [applyToExistingReimbursements]: string[];
10
+ [steps]: StepData[];
11
+ [upperBound]: number;
12
+ [lowerBound]?: number;
13
+ }
14
+ export interface ReimbursementApprovalRuleDetailPageProps {
15
+ approvalUpdateActionType: ApprovalUpdateActionType;
16
+ localData: RemiSetupApproverUpdateDataView;
17
+ hideUpperBoundField?: boolean;
18
+ isLowerBoundDisabled?: boolean;
19
+ isUpperBoundDisabled?: boolean;
20
+ onApprovalRuleDataUpdated: (formData: FormData) => void;
21
+ onBackClick: () => void;
22
+ onResetClick: () => void;
23
+ onSaveRuleClick: () => void;
24
+ onSaveRuleSuccess: () => void;
25
+ }
26
+ /**
27
+ * Dimensions
28
+ */
29
+ export declare const D: {
30
+ footerPadding: ResponsiveSized;
31
+ };
32
+ declare function ReimbursementApprovalRuleDetailPage({ localData, approvalUpdateActionType, isLowerBoundDisabled, isUpperBoundDisabled, hideUpperBoundField, onBackClick, onApprovalRuleDataUpdated, onResetClick, onSaveRuleClick, onSaveRuleSuccess, }: ReimbursementApprovalRuleDetailPageProps): import("react/jsx-runtime").JSX.Element;
33
+ export default ReimbursementApprovalRuleDetailPage;
34
+ export declare const uniqueFormName: (sectionId: ID) => `${string}_form`;
35
+ type FormDataKeys = keyof FormData;
36
+ export declare const uniqueName: (key: FormDataKeys) => "steps" | "lowerBound" | "upperBound" | "applyToExistingReimbursements";
37
+ export type FormDataKeyUniqueNames = ReturnType<typeof uniqueName>;
@@ -1,10 +1,25 @@
1
1
  import { ApproverViewUpdateData, RemiSetupApproverView } from '@zeniai/client-epic-state';
2
2
  export interface Props {
3
3
  approvalView: RemiSetupApproverView;
4
+ /**
5
+ * Optional department-id → display-name map (where "department" maps
6
+ * to the Class entity in this codebase). Derived from `state.classState`.
7
+ */
8
+ departmentNamesById?: Record<string, string>;
4
9
  remiSetupApproverViewUpdateData?: ApproverViewUpdateData;
10
+ /**
11
+ * Optional vendor-id → display-name map for resolving vendor chips on
12
+ * rule cards. The connected screen derives this from `state.contactState`.
13
+ */
14
+ vendorNamesById?: Record<string, string>;
5
15
  onBackClick: () => void;
6
16
  onDeleteRuleClick: (ruleId: string) => void;
7
17
  onEditRuleClick: (ruleId?: string) => void;
18
+ /**
19
+ * Called with the new full id ordering when the user drops a card.
20
+ * Mirrors the BillPay equivalent.
21
+ */
22
+ onReorderRules?: (newApprovalRuleIds: string[]) => void;
8
23
  }
9
- declare const ReimbursementApprovalRulesPage: ({ approvalView, onBackClick, onEditRuleClick, onDeleteRuleClick, }: Props) => import("react/jsx-runtime").JSX.Element;
24
+ declare const ReimbursementApprovalRulesPage: ({ approvalView, onBackClick, onEditRuleClick, onDeleteRuleClick, vendorNamesById, departmentNamesById, onReorderRules, }: Props) => import("react/jsx-runtime").JSX.Element;
10
25
  export default ReimbursementApprovalRulesPage;
@@ -0,0 +1,10 @@
1
+ import { ApproverViewUpdateData, RemiSetupApproverView } from '@zeniai/client-epic-state';
2
+ export interface Props {
3
+ approvalView: RemiSetupApproverView;
4
+ remiSetupApproverViewUpdateData?: ApproverViewUpdateData;
5
+ onBackClick: () => void;
6
+ onDeleteRuleClick: (ruleId: string) => void;
7
+ onEditRuleClick: (ruleId?: string) => void;
8
+ }
9
+ declare const ReimbursementApprovalRulesPage: ({ approvalView, onBackClick, onEditRuleClick, onDeleteRuleClick, }: Props) => import("react/jsx-runtime").JSX.Element;
10
+ export default ReimbursementApprovalRulesPage;
@@ -8,7 +8,6 @@ import { RecurringViewType } from '../formElements/recurringView/RecurringView';
8
8
  import { SingleSelectPickerFieldValue } from '../formElements/singleSelectPickerField/SingleSelectPickerField';
9
9
  import { SingleSelectFieldValue } from '../singleSelect/SingleSelectField';
10
10
  import { AttachmentFormData } from './AllTaskAttachments';
11
- import { TaskDetailSubtaskFormProps } from './TaskDetailSubtaskForm';
12
11
  import { timeSpentKey } from './taskManagementFormConstants';
13
12
  type TaskAttributeCodeType = TaskStatusCodeType | PriorityCodeType | ID;
14
13
  declare const name = "name";
@@ -41,7 +40,7 @@ type FormDataKeys = keyof TaskDetailFormData;
41
40
  export interface FormData {
42
41
  [taskSectionId]: TaskDetailFormData;
43
42
  }
44
- declare const uniqueName: (sectionId: string, key: FormDataKeys) => `${string}.fileIds` | `${string}.name` | `${string}.status` | `${string}.priority` | `${string}.dueDate` | `${string}.timeSpent` | `${string}.description` | `${string}.assignee` | `${string}.tag` | `${string}.taskType` | `${string}.recurringView` | `${string}.visibility`;
43
+ declare const uniqueName: (sectionId: string, key: FormDataKeys) => `${string}.fileIds` | `${string}.name` | `${string}.status` | `${string}.description` | `${string}.priority` | `${string}.dueDate` | `${string}.assignee` | `${string}.tag` | `${string}.timeSpent` | `${string}.taskType` | `${string}.recurringView` | `${string}.visibility`;
45
44
  export type FormDataKeyUniqueNames = ReturnType<typeof uniqueName>;
46
45
  export declare const uniqueFormName: (sectionId: ID) => `${string}_form`;
47
46
  export interface TaskDetailPageProps {
@@ -66,7 +65,6 @@ export interface TaskDetailPageProps {
66
65
  isTaskVisibilityEnabled?: boolean;
67
66
  isZeniUser?: boolean;
68
67
  recurringSourceTaskUrl?: string;
69
- subTaskCreateStatus?: FetchState;
70
68
  taskDetailFetchState?: FetchState;
71
69
  taskGroupList?: Array<{
72
70
  id: ID;
@@ -89,10 +87,8 @@ export interface TaskDetailPageProps {
89
87
  onSnoozeTask: (taskId: ID, snoozedUntil: string) => void;
90
88
  onUnsnoozeTask: (taskId: ID) => void;
91
89
  updateFilesEntity: (files: FilePayload[]) => void;
92
- onCreateSubtask?: (parentTaskId: ID, data: Parameters<TaskDetailSubtaskFormProps["onSubmit"]>[0]) => void;
93
90
  onFetchCannedResponses?: () => void;
94
91
  onManageTemplatesClick?: () => void;
95
- onSubtaskClick?: (subtaskId: ID) => void;
96
92
  }
97
93
  export declare const getLabelColor: (value: TaskAttributeCodeType, theme?: Theme) => string;
98
94
  export declare const getRichLabel: (value: TaskAttributeCodeType, theme: Theme) => import("react/jsx-runtime").JSX.Element;
@@ -101,5 +97,5 @@ export declare const getTagList: (tagList: Tag[]) => {
101
97
  value: string;
102
98
  isDeleted: boolean | undefined;
103
99
  }[];
104
- declare const TaskDetailPage: ({ taskDetailSelectorView, companyName, companyId, loggedInUser, analytics, isNewClicked, filesEndPoint, authParams, currentUrl, taskId, taskGroupList, taskGroupName, taskDetailFetchState, onSaveChangesToLocalStore, onSaveDetailClick, onArchiveTaskClick, onSnoozeTask, onUnsnoozeTask, onDismissClick, handleZeniLogoClick: _handleZeniLogoClick, updateFilesEntity, onDeleteFile, onEditFileName, onDeleteTaskClick, onReloadTaskDetailPage, tagListView, userGroupList, onCreateTagClick, onDeleteTagClick, cannedResponses, initialOpenThreadRequest, isCannedResponsesLoading, isTaskCannedResponsesEnabled, isTaskGroupAssigneesEnabled, isTaskRecurringParentEnabled, isTaskSnoozeEnabled, isTaskVisibilityEnabled, isZeniUser, onCreateSubtask, onFetchCannedResponses, onManageTemplatesClick, onSubtaskClick, recurringSourceTaskUrl, subTaskCreateStatus, }: TaskDetailPageProps) => import("react/jsx-runtime").JSX.Element;
100
+ declare const TaskDetailPage: ({ taskDetailSelectorView, companyName, companyId, loggedInUser, analytics, isNewClicked, filesEndPoint, authParams, currentUrl, taskId, taskGroupList, taskGroupName, taskDetailFetchState, onSaveChangesToLocalStore, onSaveDetailClick, onArchiveTaskClick, onSnoozeTask, onUnsnoozeTask, onDismissClick, handleZeniLogoClick: _handleZeniLogoClick, updateFilesEntity, onDeleteFile, onEditFileName, onDeleteTaskClick, onReloadTaskDetailPage, tagListView, userGroupList, onCreateTagClick, onDeleteTagClick, cannedResponses, initialOpenThreadRequest, isCannedResponsesLoading, isTaskCannedResponsesEnabled, isTaskGroupAssigneesEnabled, isTaskRecurringParentEnabled, isTaskSnoozeEnabled, isTaskVisibilityEnabled, isZeniUser, onFetchCannedResponses, onManageTemplatesClick, recurringSourceTaskUrl, }: TaskDetailPageProps) => import("react/jsx-runtime").JSX.Element;
105
101
  export default TaskDetailPage;
@@ -1,4 +1,4 @@
1
- import { CreateSubTaskPayload, FetchState, ID, SnackbarMessageConfig, SortOrder, Tag, Task, TaskGroupWithTasksList, TaskListUIState, TaskListViewSortKey, TaskWithUserDetails, UserGroup, UserListSelectorView } from '@zeniai/client-epic-state';
1
+ import { ID, SnackbarMessageConfig, SortOrder, Tag, Task, TaskGroupWithTasksList, TaskListUIState, TaskListViewSortKey, UserGroup, UserListSelectorView } from '@zeniai/client-epic-state';
2
2
  import { FormSectionProps } from '../formElements/common/formSection';
3
3
  export declare const getTaskFieldName: (sectionId: string, taskId: string, fieldKey: string) => string;
4
4
  export declare const isDuplicateGroupName: (newName: string, groupId: ID, existingTaskGroupNamesByGroupId: Record<ID, string>) => boolean;
@@ -10,7 +10,6 @@ export interface TaskListRowProps extends FormSectionProps {
10
10
  selectedRowIds: ID[];
11
11
  showGroupName: boolean;
12
12
  showRenameTextField: boolean;
13
- subtasksByParentId: Map<ID, TaskWithUserDetails[]>;
14
13
  tagList: Tag[];
15
14
  taskGroup: TaskGroupWithTasksList;
16
15
  uiState: TaskListUIState;
@@ -18,7 +17,6 @@ export interface TaskListRowProps extends FormSectionProps {
18
17
  userList: UserListSelectorView;
19
18
  isTaskRecurringParentEnabled?: boolean;
20
19
  isZeniUser?: boolean;
21
- subTaskCreateStatus?: FetchState;
22
20
  onAddNewTaskToTaskGroup: (taskGroupId: ID) => void;
23
21
  onCollapseAll: () => void;
24
22
  onCollapseToggle: (taskGroupId: ID) => void;
@@ -29,14 +27,11 @@ export interface TaskListRowProps extends FormSectionProps {
29
27
  onExpandAll: () => void;
30
28
  onParentTaskClick: (id: ID) => void;
31
29
  onRenameClick: () => void;
32
- onRowHeightChange: () => void;
33
30
  onShowToast: (messageInfo: SnackbarMessageConfig) => void;
34
31
  onTaskGroupNameClick: (id: ID) => void;
35
32
  onTaskManagementRowClick: (id: ID) => void;
36
33
  onTimeSpentUpdate: (task: Task, updates: Partial<Task>) => void;
37
- onCreateSubtask?: (parentTaskId: ID, data: CreateSubTaskPayload) => void;
38
- onSubtaskFormToggle?: () => void;
39
34
  }
40
35
  export declare const getTagLabel: (tagIds: ID[], tagList: Tag[]) => JSX.Element;
41
- declare const TaskListRow: ({ taskGroup, userGroupList, tagList, sectionId, uiState, userList, showGroupName, showRenameTextField, isCollapsed, isSelectionAllowed, selectedRowIds, existingTaskGroupNamesByGroupId, subtasksByParentId, onRenameClick, onDeleteTaskGroup, onExpandAll, onCollapseAll, onAddNewTaskToTaskGroup, onCollapseToggle, onTaskManagementRowClick, onColumnSortConfigChanged, onDragStart, onTimeSpentUpdate, onShowToast, onCreateTagClick, onTaskGroupNameClick, onParentTaskClick, onCreateSubtask, onSubtaskFormToggle, onRowHeightChange, isTaskRecurringParentEnabled, subTaskCreateStatus, }: TaskListRowProps) => import("react/jsx-runtime").JSX.Element;
36
+ declare const TaskListRow: ({ taskGroup, userGroupList, tagList, sectionId, uiState, userList, showGroupName, showRenameTextField, isCollapsed, isSelectionAllowed, selectedRowIds, existingTaskGroupNamesByGroupId, onRenameClick, onDeleteTaskGroup, onExpandAll, onCollapseAll, onAddNewTaskToTaskGroup, onCollapseToggle, onTaskManagementRowClick, onColumnSortConfigChanged, onDragStart, onTimeSpentUpdate, onShowToast, onCreateTagClick, onTaskGroupNameClick, onParentTaskClick, isTaskRecurringParentEnabled, }: TaskListRowProps) => import("react/jsx-runtime").JSX.Element;
42
37
  export default TaskListRow;
@@ -1,4 +1,4 @@
1
- import { ID, SnackbarMessageConfig, Tag, Task, TaskGroupWithTasksList, TaskWithUserDetails } from '@zeniai/client-epic-state';
1
+ import { ID, SnackbarMessageConfig, Tag, Task, TaskGroupWithTasksList } from '@zeniai/client-epic-state';
2
2
  import { FormSectionProps } from '../formElements/common/formSection';
3
3
  export interface TaskListRowSmallProps extends FormSectionProps {
4
4
  existingTaskGroupNamesByGroupId: Record<ID, string>;
@@ -9,7 +9,6 @@ export interface TaskListRowSmallProps extends FormSectionProps {
9
9
  showRenameTextField: boolean;
10
10
  tagList: Tag[];
11
11
  taskGroup: TaskGroupWithTasksList;
12
- subtasksByParentId?: Map<ID, TaskWithUserDetails[]>;
13
12
  onAddNewTaskToTaskGroup: (taskGroupId: ID) => void;
14
13
  onCollapseAll: () => void;
15
14
  onCollapseToggle: (taskGroupId: ID) => void;
@@ -19,6 +18,5 @@ export interface TaskListRowSmallProps extends FormSectionProps {
19
18
  onShowToast: (messageInfo: SnackbarMessageConfig) => void;
20
19
  onTaskManagementRowClick: (id: ID) => void;
21
20
  onTimeSpentUpdate: (task: Task, updates: Partial<Task>) => void;
22
- onRowHeightChange?: () => void;
23
21
  }
24
22
  export declare const TaskListRowSmall: ({ taskGroup, tagList, sectionId, showGroupName, showRenameTextField, isSelectionAllowed, isCollapsed, existingTaskGroupNamesByGroupId, onDeleteTaskGroup, onExpandAll, onCollapseAll, onAddNewTaskToTaskGroup, onCollapseToggle, onTaskManagementRowClick, onDragStart, onTimeSpentUpdate, onShowToast, }: TaskListRowSmallProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,31 @@
1
1
  import { ClientAnalytics } from '@zeniai/client-analytics';
2
- import { CreateSubTaskPayload, FetchState, ID, SnackbarMessageConfig, SortOrder, SpendManagementFiltersType, TagViewSelectorView, Task, TaskGroupKey, TaskListLocalData, TaskListSelectorView, TaskListTab, TaskListViewSortKey } from '@zeniai/client-epic-state';
2
+ import { FetchState, ID, SnackbarMessageConfig, SortOrder, SpendManagementFiltersType, TagViewSelectorView, Task, TaskGroupKey, TaskListLocalData, TaskListSelectorView, TaskListTab, TaskListViewSortKey } from '@zeniai/client-epic-state';
3
+ import { UserMultiSelectFieldValue } from '../cockpit/common/userMultiSelect/UserMultiSelectField';
4
+ import { ZeniDatePickerValue } from '../common/zeniDatePicker/ZeniDatePickerField';
5
+ import { MultiSelectFieldValue } from '../formElements/creatableMultiSelectField/CreatableMultiSelectField';
6
+ import { SingleSelectPickerFieldValue } from '../formElements/singleSelectPickerField/SingleSelectPickerField';
7
+ import { assigneeKey, dueDateKey, groupDataKey, groupNameKey, priorityKey, selectedIdsKey, statusKey, tagKey, taskDataKey, taskManagementTableSectionId, timeSpentKey } from './taskManagementFormConstants';
8
+ interface GroupData {
9
+ [groupNameKey]: string;
10
+ [selectedIdsKey]: ID[];
11
+ }
12
+ interface TaskData {
13
+ [assigneeKey]: UserMultiSelectFieldValue;
14
+ [dueDateKey]: ZeniDatePickerValue;
15
+ [priorityKey]: SingleSelectPickerFieldValue;
16
+ [statusKey]: SingleSelectPickerFieldValue;
17
+ [tagKey]: MultiSelectFieldValue;
18
+ [timeSpentKey]: string;
19
+ }
20
+ type TasksFormData = Record<ID, TaskData>;
21
+ type GroupFormData = Record<ID, GroupData>;
22
+ interface TaskManagementTableSectionFormData {
23
+ [groupDataKey]: GroupFormData;
24
+ [taskDataKey]: TasksFormData;
25
+ }
26
+ export interface FormData {
27
+ [taskManagementTableSectionId]: TaskManagementTableSectionFormData;
28
+ }
3
29
  export declare const uniqueFormName: (sectionId: ID) => `${string}_form`;
4
30
  export interface TaskManagementPageProps {
5
31
  isTaskTemplatesEnabled: boolean;
@@ -13,7 +39,6 @@ export interface TaskManagementPageProps {
13
39
  isTaskGroupAssigneesEnabled?: boolean;
14
40
  isTaskRecurringParentEnabled?: boolean;
15
41
  isZeniUser?: boolean;
16
- subTaskCreateStatus?: FetchState;
17
42
  taskListFetchState?: FetchState;
18
43
  assignGroupToTasks: (taskGroupId: ID) => void;
19
44
  bulkUpdateTasks: (taskIds: ID[], updates: Partial<Task>) => void;
@@ -44,7 +69,6 @@ export interface TaskManagementPageProps {
44
69
  updateTask: (task: Task, updates: Partial<Task>) => void;
45
70
  onAskAiCfoClick?: () => void;
46
71
  onQuickResponsesClick?: () => void;
47
- onSubtaskCreation?: (parentTaskId: ID, data: CreateSubTaskPayload) => void;
48
72
  }
49
- declare const TaskManagementPage: ({ taskListView, tagListView, isTaskTemplatesEnabled, taskListFetchState, onCreateTagClick, updateTask, onDragNDrop, onDeleteTaskGroup, updateLocalData, onTaskManagementRowClick, onParentTaskClick, onReloadTasks, onColumnSortConfigChanged, onSearchTextChanged, onTabChange, onBackClick, bulkUpdateTasks, onNewTaskClick, onFiltersChange, resetLocalData, handleCreateGroup, assignGroupToTasks, onAddNewTaskToTaskGroup, onGroupByFilterChange, onTaskGroupRename, analytics, onTimeSpentUpdate, onShowToast, handleGroupTemplateClick, handleGroupTemplateTaskClick, handleNewTaskInitialization, onTaskGroupNameClick, isAiCfoAccessEnabled, isZeniUser, isTaskBulkResolutionEnabled, isTaskCannedResponsesEnabled, isTaskCategorizationEnabled, isTaskGroupAssigneesEnabled, isTaskRecurringParentEnabled, onAskAiCfoClick, onQuickResponsesClick, onSubtaskCreation, subTaskCreateStatus, }: TaskManagementPageProps) => import("react/jsx-runtime").JSX.Element;
73
+ declare const TaskManagementPage: ({ taskListView, tagListView, isTaskTemplatesEnabled, taskListFetchState, onCreateTagClick, updateTask, onDragNDrop, onDeleteTaskGroup, updateLocalData, onTaskManagementRowClick, onParentTaskClick, onReloadTasks, onColumnSortConfigChanged, onSearchTextChanged, onTabChange, onBackClick, bulkUpdateTasks, onNewTaskClick, onFiltersChange, resetLocalData, handleCreateGroup, assignGroupToTasks, onAddNewTaskToTaskGroup, onGroupByFilterChange, onTaskGroupRename, analytics, onTimeSpentUpdate, onShowToast, handleGroupTemplateClick, handleGroupTemplateTaskClick, handleNewTaskInitialization, onTaskGroupNameClick, isAiCfoAccessEnabled, isZeniUser, isTaskBulkResolutionEnabled, isTaskCannedResponsesEnabled, isTaskCategorizationEnabled, isTaskGroupAssigneesEnabled, isTaskRecurringParentEnabled, onAskAiCfoClick, onQuickResponsesClick, }: TaskManagementPageProps) => import("react/jsx-runtime").JSX.Element;
50
74
  export default TaskManagementPage;
@@ -1,6 +1,5 @@
1
1
  export declare const taskManagementPage = "taskManagementPage";
2
2
  export declare const taskManagementTableSectionId = "taskManagementTable";
3
- export declare const newSubtaskSectionId = "newSubtaskSection";
4
3
  export declare const newGroupField = "newGroup";
5
4
  export declare const groupDataKey = "groupData";
6
5
  export declare const taskDataKey = "taskData";
@@ -2,7 +2,6 @@ import { SortOrder, TaskListViewSortKey } from '@zeniai/client-epic-state';
2
2
  import { ResponsiveSized } from '../../context/windowSizeProvider';
3
3
  export interface TaskListHeaderItemData {
4
4
  key: TaskListViewSortKey;
5
- minWidth: string;
6
5
  sortOrder: SortOrder;
7
6
  value: string;
8
7
  width: ResponsiveSized;