@zeniai/web-components 4.2.40 → 4.2.41

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 (34) hide show
  1. package/dist/{SessionTimeoutPopup-ChX3q26k.cjs → SessionTimeoutPopup-BGnc2AAx.cjs} +17257 -16608
  2. package/dist/{SessionTimeoutPopup-DU_Y9pn1.js → SessionTimeoutPopup-DI767zWh.js} +76195 -73924
  3. package/dist/appLocale.d.ts +34 -0
  4. package/dist/cockpit.cjs.js +1 -1
  5. package/dist/cockpit.esm.js +2 -2
  6. package/dist/components/appDrawerContent/MenuButton.d.ts +2 -2
  7. package/dist/components/commentsAndNotes/ThreadsSection.d.ts +28 -0
  8. package/dist/components/commentsAndNotes/utils/CollaborationHelpers.d.ts +7 -0
  9. package/dist/components/commentsAndNotes/utils/CollaborationProvider.d.ts +10 -0
  10. package/dist/components/commentsAndNotes/utils/CollaborationTypes.d.ts +9 -1
  11. package/dist/components/common/zeniDatePicker/ZeniDatePickerField.d.ts +2 -1
  12. package/dist/components/formElements/creatableMultiSelectField/CreatableMultiSelectField.d.ts +8 -1
  13. package/dist/components/spendManagement/activitySection/HistoryContent.d.ts +5 -0
  14. package/dist/components/taskManagement/PriorityLabel.d.ts +2 -0
  15. package/dist/components/taskManagement/SubtaskCreationForm.d.ts +14 -0
  16. package/dist/components/taskManagement/SubtaskDetailTable.d.ts +13 -0
  17. package/dist/components/taskManagement/TaskDetailPage.d.ts +37 -4
  18. package/dist/components/taskManagement/TaskDetailPage.dimensions.d.ts +20 -0
  19. package/dist/components/taskManagement/TaskDetailPage.styled.d.ts +329 -0
  20. package/dist/components/taskManagement/TaskDetailSubtaskForm.d.ts +14 -0
  21. package/dist/components/taskManagement/TaskListRow.d.ts +57 -2
  22. package/dist/components/taskManagement/TaskListRowSmall.d.ts +3 -1
  23. package/dist/components/taskManagement/TaskManagementPage.d.ts +5 -28
  24. package/dist/components/taskManagement/stories/subtaskMocks.d.ts +30 -0
  25. package/dist/components/taskManagement/taskManagementFormConstants.d.ts +1 -0
  26. package/dist/components/taskManagement/taskManagementHeaderItemsData.d.ts +1 -0
  27. package/dist/components/taskManagement/taskManagementTypes.d.ts +33 -0
  28. package/dist/components/taskManagement/useSubtaskFormVisibility.d.ts +20 -0
  29. package/dist/designSystem/zeniConstants.d.ts +8 -0
  30. package/dist/index.cjs.js +1 -1
  31. package/dist/index.css +1 -1
  32. package/dist/index.esm.js +1 -1
  33. package/dist/strings/strings.d.ts +34 -0
  34. package/package.json +2 -2
@@ -0,0 +1,329 @@
1
+ import { WindowSize } from '../../context/windowSizeProvider';
2
+ export declare const CommentAreaForNewTask: import('@emotion/styled').StyledComponent<{
3
+ theme?: import('@emotion/react').Theme;
4
+ as?: React.ElementType;
5
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
6
+ export declare const Message: import('@emotion/styled').StyledComponent<{
7
+ theme?: import('@emotion/react').Theme;
8
+ as?: React.ElementType;
9
+ } & import('react').ClassAttributes<HTMLDivElement> & import('react').HTMLAttributes<HTMLDivElement> & {
10
+ theme?: import('@emotion/react').Theme;
11
+ }, {}, {}>;
12
+ export declare const FormSection: import('@emotion/styled').StyledComponent<{
13
+ theme?: import('@emotion/react').Theme;
14
+ as?: React.ElementType;
15
+ } & {
16
+ windowSize: WindowSize;
17
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
18
+ export declare const TaskDetailSection: import('@emotion/styled').StyledComponent<{
19
+ theme?: import('@emotion/react').Theme;
20
+ as?: React.ElementType;
21
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
22
+ export declare const CommentArea: import('@emotion/styled').StyledComponent<{
23
+ theme?: import('@emotion/react').Theme;
24
+ as?: React.ElementType;
25
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
26
+ export declare const TabSwitcherWrapper: import('@emotion/styled').StyledComponent<{
27
+ theme?: import('@emotion/react').Theme;
28
+ as?: React.ElementType;
29
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
30
+ export declare const PageContent: import('@emotion/styled').StyledComponent<{
31
+ theme?: import('@emotion/react').Theme;
32
+ as?: React.ElementType;
33
+ } & {
34
+ windowSize: WindowSize;
35
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
36
+ export declare const VisibilityRadioGroup: import('@emotion/styled').StyledComponent<{
37
+ theme?: import('@emotion/react').Theme;
38
+ as?: React.ElementType;
39
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
40
+ export declare const PageContainer: import('@emotion/styled').StyledComponent<{
41
+ theme?: import('@emotion/react').Theme;
42
+ as?: React.ElementType;
43
+ } & {
44
+ windowSize: WindowSize;
45
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
46
+ export declare const ElementsContainer: import('@emotion/styled').StyledComponent<{
47
+ theme?: import('@emotion/react').Theme;
48
+ as?: React.ElementType;
49
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
50
+ export declare const NavBarContainer: import('@emotion/styled').StyledComponent<{
51
+ theme?: import('@emotion/react').Theme;
52
+ as?: React.ElementType;
53
+ } & {
54
+ windowSize: WindowSize;
55
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
56
+ export declare const IconsWrapper: import('@emotion/styled').StyledComponent<{
57
+ theme?: import('@emotion/react').Theme;
58
+ as?: React.ElementType;
59
+ } & {
60
+ windowSize: WindowSize;
61
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
62
+ export declare const StyledBackArrow: import('@emotion/styled').StyledComponent<import('react').SVGProps<SVGSVGElement> & {
63
+ title?: string;
64
+ } & {
65
+ theme?: import('@emotion/react').Theme;
66
+ }, {}, {}>;
67
+ export declare const HeaderLeftSection: import('@emotion/styled').StyledComponent<{
68
+ theme?: import('@emotion/react').Theme;
69
+ as?: React.ElementType;
70
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
71
+ export declare const HeaderNameWrapper: import('@emotion/styled').StyledComponent<{
72
+ theme?: import('@emotion/react').Theme;
73
+ as?: React.ElementType;
74
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
75
+ export declare const StyledPriority: import('@emotion/styled').StyledComponent<{
76
+ theme?: import('@emotion/react').Theme;
77
+ as?: React.ElementType;
78
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
79
+ export declare const StyledFlag: import('@emotion/styled').StyledComponent<import('react').SVGProps<SVGSVGElement> & {
80
+ title?: string;
81
+ } & {
82
+ theme?: import('@emotion/react').Theme;
83
+ } & {
84
+ color: string;
85
+ }, {}, {}>;
86
+ export declare const StyledPriorityLabel: import('@emotion/styled').StyledComponent<{
87
+ theme?: import('@emotion/react').Theme;
88
+ as?: React.ElementType;
89
+ } & import('react').ClassAttributes<HTMLDivElement> & import('react').HTMLAttributes<HTMLDivElement> & {
90
+ theme?: import('@emotion/react').Theme;
91
+ }, {}, {}>;
92
+ export declare const StyledHyperlinkIcon: import('@emotion/styled').StyledComponent<import('react').SVGProps<SVGSVGElement> & {
93
+ title?: string;
94
+ } & {
95
+ theme?: import('@emotion/react').Theme;
96
+ }, {}, {}>;
97
+ export declare const StyledArchiveIcon: import('@emotion/styled').StyledComponent<import('react').SVGProps<SVGSVGElement> & {
98
+ title?: string;
99
+ } & {
100
+ theme?: import('@emotion/react').Theme;
101
+ }, {}, {}>;
102
+ export declare const StyledDeleteIcon: import('@emotion/styled').StyledComponent<import('react').SVGProps<SVGSVGElement> & {
103
+ title?: string;
104
+ } & {
105
+ theme?: import('@emotion/react').Theme;
106
+ }, {}, {}>;
107
+ export declare const SnoozeIconWrapper: import('@emotion/styled').StyledComponent<{
108
+ theme?: import('@emotion/react').Theme;
109
+ as?: React.ElementType;
110
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
111
+ export declare const StyledSnoozeIcon: import('@emotion/styled').StyledComponent<import('react').SVGProps<SVGSVGElement> & {
112
+ title?: string;
113
+ } & {
114
+ theme?: import('@emotion/react').Theme;
115
+ } & {
116
+ $isSnoozed: boolean;
117
+ }, {}, {}>;
118
+ export declare const SnoozedBanner: import('@emotion/styled').StyledComponent<{
119
+ theme?: import('@emotion/react').Theme;
120
+ as?: React.ElementType;
121
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
122
+ export declare const SnoozedClockIcon: import('@emotion/styled').StyledComponent<import('react').SVGProps<SVGSVGElement> & {
123
+ title?: string;
124
+ } & {
125
+ theme?: import('@emotion/react').Theme;
126
+ }, {}, {}>;
127
+ export declare const SnoozedText: import('@emotion/styled').StyledComponent<{
128
+ theme?: import('@emotion/react').Theme;
129
+ as?: React.ElementType;
130
+ } & import('react').ClassAttributes<HTMLDivElement> & import('react').HTMLAttributes<HTMLDivElement> & {
131
+ theme?: import('@emotion/react').Theme;
132
+ }, {}, {}>;
133
+ export declare const SourceTaskHyperlinkIcon: import('@emotion/styled').StyledComponent<import('react').SVGProps<SVGSVGElement> & {
134
+ title?: string;
135
+ } & {
136
+ theme?: import('@emotion/react').Theme;
137
+ }, {}, {}>;
138
+ export declare const TooltipIconContainer: import('@emotion/styled').StyledComponent<{
139
+ theme?: import('@emotion/react').Theme;
140
+ as?: React.ElementType;
141
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
142
+ export declare const StyledCopiedIcon: import('@emotion/styled').StyledComponent<import('react').SVGProps<SVGSVGElement> & {
143
+ title?: string;
144
+ } & {
145
+ theme?: import('@emotion/react').Theme;
146
+ }, {}, {}>;
147
+ export declare const CopiedText: import('@emotion/styled').StyledComponent<{
148
+ theme?: import('@emotion/react').Theme;
149
+ as?: React.ElementType;
150
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
151
+ export declare const TooltipText: import('@emotion/styled').StyledComponent<{
152
+ theme?: import('@emotion/react').Theme;
153
+ as?: React.ElementType;
154
+ } & import('react').ClassAttributes<HTMLDivElement> & import('react').HTMLAttributes<HTMLDivElement> & {
155
+ theme?: import('@emotion/react').Theme;
156
+ }, {}, {}>;
157
+ export declare const ReloadPage: import('@emotion/styled').StyledComponent<{
158
+ theme?: import('@emotion/react').Theme;
159
+ as?: React.ElementType;
160
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
161
+ export declare const ReloadIconContainer: import('@emotion/styled').StyledComponent<{
162
+ theme?: import('@emotion/react').Theme;
163
+ as?: React.ElementType;
164
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
165
+ export declare const StyledReloadIcon: import('@emotion/styled').StyledComponent<import('react').SVGProps<SVGSVGElement> & {
166
+ title?: string;
167
+ } & {
168
+ theme?: import('@emotion/react').Theme;
169
+ }, {}, {}>;
170
+ export declare const ReloadLabel: import('@emotion/styled').StyledComponent<{
171
+ theme?: import('@emotion/react').Theme;
172
+ as?: React.ElementType;
173
+ } & import('react').ClassAttributes<HTMLDivElement> & import('react').HTMLAttributes<HTMLDivElement> & {
174
+ theme?: import('@emotion/react').Theme;
175
+ } & import('react').ClassAttributes<HTMLSpanElement> & import('react').HTMLAttributes<HTMLSpanElement>, {}, {}>;
176
+ export declare const StyledRecurringIcon: import('@emotion/styled').StyledComponent<import('react').SVGProps<SVGSVGElement> & {
177
+ title?: string;
178
+ } & {
179
+ theme?: import('@emotion/react').Theme;
180
+ }, {}, {}>;
181
+ /** View Details toggle */
182
+ export declare const ViewDetailsToggle: import('@emotion/styled').StyledComponent<{
183
+ theme?: import('@emotion/react').Theme;
184
+ as?: React.ElementType;
185
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
186
+ export declare const ViewDetailsText: import('@emotion/styled').StyledComponent<{
187
+ theme?: import('@emotion/react').Theme;
188
+ as?: React.ElementType;
189
+ } & import('react').ClassAttributes<HTMLDivElement> & import('react').HTMLAttributes<HTMLDivElement> & {
190
+ theme?: import('@emotion/react').Theme;
191
+ }, {}, {}>;
192
+ export declare const ViewDetailsChevron: import('@emotion/styled').StyledComponent<import('react').SVGProps<SVGSVGElement> & {
193
+ title?: string;
194
+ } & {
195
+ theme?: import('@emotion/react').Theme;
196
+ } & {
197
+ $isExpanded: boolean;
198
+ }, {}, {}>;
199
+ /** CSS grid cells */
200
+ export declare const GridCell: import('@emotion/styled').StyledComponent<{
201
+ theme?: import('@emotion/react').Theme;
202
+ as?: React.ElementType;
203
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
204
+ export declare const GridCellFullWidth: import('@emotion/styled').StyledComponent<{
205
+ theme?: import('@emotion/react').Theme;
206
+ as?: React.ElementType;
207
+ } & import('react').ClassAttributes<HTMLDivElement> & import('react').HTMLAttributes<HTMLDivElement> & {
208
+ theme?: import('@emotion/react').Theme;
209
+ }, {}, {}>;
210
+ export declare const TagGridCell: import('@emotion/styled').StyledComponent<{
211
+ theme?: import('@emotion/react').Theme;
212
+ as?: React.ElementType;
213
+ } & import('react').ClassAttributes<HTMLDivElement> & import('react').HTMLAttributes<HTMLDivElement> & {
214
+ theme?: import('@emotion/react').Theme;
215
+ }, {}, {}>;
216
+ export declare const RecurringGridCell: import('@emotion/styled').StyledComponent<{
217
+ theme?: import('@emotion/react').Theme;
218
+ as?: React.ElementType;
219
+ } & import('react').ClassAttributes<HTMLDivElement> & import('react').HTMLAttributes<HTMLDivElement> & {
220
+ theme?: import('@emotion/react').Theme;
221
+ }, {}, {}>;
222
+ export declare const DescriptionSpacer: import('@emotion/styled').StyledComponent<{
223
+ theme?: import('@emotion/react').Theme;
224
+ as?: React.ElementType;
225
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
226
+ /** Assignee field container */
227
+ export declare const AssigneeContainer: import('@emotion/styled').StyledComponent<{
228
+ theme?: import('@emotion/react').Theme;
229
+ as?: React.ElementType;
230
+ } & {
231
+ windowSize: WindowSize;
232
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
233
+ export declare const AssigneeFieldWrapper: import('@emotion/styled').StyledComponent<{
234
+ theme?: import('@emotion/react').Theme;
235
+ as?: React.ElementType;
236
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
237
+ /** Visibility field container */
238
+ export declare const VisibilityContainer: import('@emotion/styled').StyledComponent<{
239
+ theme?: import('@emotion/react').Theme;
240
+ as?: React.ElementType;
241
+ } & {
242
+ windowSize: WindowSize;
243
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
244
+ export declare const RightPanelContent: import('@emotion/styled').StyledComponent<{
245
+ theme?: import('@emotion/react').Theme;
246
+ as?: React.ElementType;
247
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
248
+ export declare const ActivityTabContent: import('@emotion/styled').StyledComponent<{
249
+ theme?: import('@emotion/react').Theme;
250
+ as?: React.ElementType;
251
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
252
+ export declare const SubtasksSectionContainer: import('@emotion/styled').StyledComponent<{
253
+ theme?: import('@emotion/react').Theme;
254
+ as?: React.ElementType;
255
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
256
+ export declare const PrivateToggle: import('@emotion/styled').StyledComponent<{
257
+ theme?: import('@emotion/react').Theme;
258
+ as?: React.ElementType;
259
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
260
+ export declare const ToggleTrack: import('@emotion/styled').StyledComponent<{
261
+ theme?: import('@emotion/react').Theme;
262
+ as?: React.ElementType;
263
+ } & {
264
+ $on: boolean;
265
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
266
+ export declare const ToggleThumb: import('@emotion/styled').StyledComponent<{
267
+ theme?: import('@emotion/react').Theme;
268
+ as?: React.ElementType;
269
+ } & {
270
+ $on: boolean;
271
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
272
+ export declare const PrivateTagPill: import('@emotion/styled').StyledComponent<{
273
+ theme?: import('@emotion/react').Theme;
274
+ as?: React.ElementType;
275
+ } & import('react').ClassAttributes<HTMLDivElement> & import('react').HTMLAttributes<HTMLDivElement> & {
276
+ theme?: import('@emotion/react').Theme;
277
+ } & import('react').ClassAttributes<HTMLSpanElement> & import('react').HTMLAttributes<HTMLSpanElement>, {}, {}>;
278
+ export declare const SubtasksTable: import('@emotion/styled').StyledComponent<{
279
+ theme?: import('@emotion/react').Theme;
280
+ as?: React.ElementType;
281
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
282
+ export declare const SubtasksSectionTitle: import('@emotion/styled').StyledComponent<{
283
+ theme?: import('@emotion/react').Theme;
284
+ as?: React.ElementType;
285
+ } & import('react').ClassAttributes<HTMLDivElement> & import('react').HTMLAttributes<HTMLDivElement> & {
286
+ theme?: import('@emotion/react').Theme;
287
+ }, {}, {}>;
288
+ export declare const SubtasksCompletionCount: import('@emotion/styled').StyledComponent<{
289
+ theme?: import('@emotion/react').Theme;
290
+ as?: React.ElementType;
291
+ } & import('react').ClassAttributes<HTMLDivElement> & import('react').HTMLAttributes<HTMLDivElement> & {
292
+ theme?: import('@emotion/react').Theme;
293
+ }, {}, {}>;
294
+ export declare const ParentBreadcrumb: import('@emotion/styled').StyledComponent<{
295
+ theme?: import('@emotion/react').Theme;
296
+ as?: React.ElementType;
297
+ } & import('react').ClassAttributes<HTMLDivElement> & import('react').HTMLAttributes<HTMLDivElement> & {
298
+ theme?: import('@emotion/react').Theme;
299
+ }, {}, {}>;
300
+ export declare const ParentBreadcrumbArrow: import('@emotion/styled').StyledComponent<import('react').SVGProps<SVGSVGElement> & {
301
+ title?: string;
302
+ } & {
303
+ theme?: import('@emotion/react').Theme;
304
+ }, {}, {}>;
305
+ export declare const HeaderNameDisplay: import('@emotion/styled').StyledComponent<{
306
+ theme?: import('@emotion/react').Theme;
307
+ as?: React.ElementType;
308
+ } & import('react').ClassAttributes<HTMLDivElement> & import('react').HTMLAttributes<HTMLDivElement> & {
309
+ theme?: import('@emotion/react').Theme;
310
+ } & import('react').ClassAttributes<HTMLSpanElement> & import('react').HTMLAttributes<HTMLSpanElement>, {}, {}>;
311
+ export declare const TaskTitleBar: import('@emotion/styled').StyledComponent<{
312
+ theme?: import('@emotion/react').Theme;
313
+ as?: React.ElementType;
314
+ } & import('react').ClassAttributes<HTMLDivElement> & import('react').HTMLAttributes<HTMLDivElement> & {
315
+ theme?: import('@emotion/react').Theme;
316
+ }, {}, {}>;
317
+ /**
318
+ * TextField variant for the task title row. Uses the standard
319
+ * semi-bold typography from the design system (Manrope/14px) instead
320
+ * of an inline `style={{ fontFamily, fontSize, lineHeight }}` literal,
321
+ * and sizes via Space tokens.
322
+ */
323
+ export declare const TaskTitleTextField: import('@emotion/styled').StyledComponent<Readonly<import('../formElements/textField/TextField').TextFieldProps> & {
324
+ theme?: import('@emotion/react').Theme;
325
+ }, {}, {}>;
326
+ export declare const SubtasksHeaderRow: import('@emotion/styled').StyledComponent<{
327
+ theme?: import('@emotion/react').Theme;
328
+ as?: React.ElementType;
329
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
@@ -0,0 +1,14 @@
1
+ import { CreateSubTaskPayload, ID, SnackbarMessageConfig, Tag, User, UserGroup } from '@zeniai/client-epic-state';
2
+ export interface TaskDetailSubtaskFormProps {
3
+ parentTaskId: ID;
4
+ tagList: Tag[];
5
+ userGroupList: UserGroup[];
6
+ userList: User[];
7
+ isCreating?: boolean;
8
+ onCancel: () => void;
9
+ onSubmit: (data: CreateSubTaskPayload) => void;
10
+ onCreateTagClick?: (tagName: string) => void;
11
+ onShowToast?: (messageInfo: SnackbarMessageConfig) => void;
12
+ }
13
+ declare const TaskDetailSubtaskForm: ({ tagList, userGroupList, userList, parentTaskId, isCreating, onCancel, onCreateTagClick, onShowToast, onSubmit, }: TaskDetailSubtaskFormProps) => import("react/jsx-runtime").JSX.Element;
14
+ export default TaskDetailSubtaskForm;
@@ -1,4 +1,4 @@
1
- import { ID, SnackbarMessageConfig, SortOrder, Tag, Task, TaskGroupWithTasksList, TaskListUIState, TaskListViewSortKey, UserGroup, UserListSelectorView } from '@zeniai/client-epic-state';
1
+ import { CreateSubTaskPayload, FetchState, ID, SnackbarMessageConfig, SortOrder, Tag, Task, TaskGroupWithTasksList, TaskListUIState, TaskListViewSortKey, TaskWithUserDetails, User, 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,6 +10,7 @@ export interface TaskListRowProps extends FormSectionProps {
10
10
  selectedRowIds: ID[];
11
11
  showGroupName: boolean;
12
12
  showRenameTextField: boolean;
13
+ subtasksByParentId: Map<ID, TaskWithUserDetails[]>;
13
14
  tagList: Tag[];
14
15
  taskGroup: TaskGroupWithTasksList;
15
16
  uiState: TaskListUIState;
@@ -17,21 +18,75 @@ export interface TaskListRowProps extends FormSectionProps {
17
18
  userList: UserListSelectorView;
18
19
  isTaskRecurringParentEnabled?: boolean;
19
20
  isZeniUser?: boolean;
21
+ subTaskCreateStatus?: FetchState;
20
22
  onAddNewTaskToTaskGroup: (taskGroupId: ID) => void;
21
23
  onCollapseAll: () => void;
22
24
  onCollapseToggle: (taskGroupId: ID) => void;
23
25
  onColumnSortConfigChanged: (sortKey: TaskListViewSortKey, sortOrder: SortOrder) => void;
26
+ onCreateSubtask: (parentTaskId: ID, data: CreateSubTaskPayload) => void;
24
27
  onCreateTagClick: (tagName: string, taskId: string) => void;
25
28
  onDeleteTaskGroup: (taskGroupId: ID) => void;
26
29
  onDragStart: (e: React.DragEvent, value: string) => void;
27
30
  onExpandAll: () => void;
28
31
  onParentTaskClick: (id: ID) => void;
29
32
  onRenameClick: () => void;
33
+ onRowHeightChange: () => void;
30
34
  onShowToast: (messageInfo: SnackbarMessageConfig) => void;
35
+ onSubtaskFormToggle: () => void;
31
36
  onTaskGroupNameClick: (id: ID) => void;
32
37
  onTaskManagementRowClick: (id: ID) => void;
33
38
  onTimeSpentUpdate: (task: Task, updates: Partial<Task>) => void;
39
+ resetSubtaskFormCreationStatus?: () => void;
34
40
  }
35
41
  export declare const getTagLabel: (tagIds: ID[], tagList: Tag[]) => 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, isZeniUser, }: TaskListRowProps) => import("react/jsx-runtime").JSX.Element;
42
+ export declare const RowContent: ({ taskDetail, userGroupList, tagList, isSelected, isLastRow, sectionId, userList, onRowClick, onTimeSpentUpdate, onShowToast, onCreateTagClick, onParentTaskClick, onAddSubtaskClick, isTaskRecurringParentEnabled, isZeniUser, isSubtask, hasSubtasks, hasExpandedContent, isSubtasksExpanded, onToggleSubtasks, }: {
43
+ isSelected: boolean;
44
+ sectionId: string;
45
+ tagList: Tag[];
46
+ taskDetail: TaskWithUserDetails;
47
+ userGroupList: UserGroup[];
48
+ userList: User[];
49
+ hasExpandedContent?: boolean;
50
+ hasSubtasks?: boolean;
51
+ isLastRow?: boolean;
52
+ isSubtask?: boolean;
53
+ isSubtasksExpanded?: boolean;
54
+ isTaskRecurringParentEnabled?: boolean;
55
+ isZeniUser?: boolean;
56
+ onAddSubtaskClick: () => void;
57
+ onCreateTagClick: (tagName: string, taskId: string) => void;
58
+ onParentTaskClick: (id: ID) => void;
59
+ onRowClick: () => void;
60
+ onShowToast: (messageInfo: SnackbarMessageConfig) => void;
61
+ onTimeSpentUpdate: (task: Task, updates: Partial<Task>) => void;
62
+ onToggleSubtasks?: () => void;
63
+ }) => import("react/jsx-runtime").JSX.Element;
64
+ 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, isZeniUser, resetSubtaskFormCreationStatus, subTaskCreateStatus, }: TaskListRowProps) => import("react/jsx-runtime").JSX.Element;
37
65
  export default TaskListRow;
66
+ export declare const RowWithSubtaskFormWrapper: import('@emotion/styled').StyledComponent<{
67
+ theme?: import('@emotion/react').Theme;
68
+ as?: React.ElementType;
69
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
70
+ export declare const CreateSubtaskRow: import('@emotion/styled').StyledComponent<{
71
+ theme?: import('@emotion/react').Theme;
72
+ as?: React.ElementType;
73
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
74
+ export declare const CreateSubtaskLeftGutter: import('@emotion/styled').StyledComponent<{
75
+ theme?: import('@emotion/react').Theme;
76
+ as?: React.ElementType;
77
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
78
+ export declare const CreateSubtaskContent: import('@emotion/styled').StyledComponent<{
79
+ theme?: import('@emotion/react').Theme;
80
+ as?: React.ElementType;
81
+ }, import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
82
+ export declare const StyledCreateSubtaskAddIcon: import('@emotion/styled').StyledComponent<import('react').SVGProps<SVGSVGElement> & {
83
+ title?: string;
84
+ } & {
85
+ theme?: import('@emotion/react').Theme;
86
+ }, {}, {}>;
87
+ export declare const CreateSubtaskText: import('@emotion/styled').StyledComponent<{
88
+ theme?: import('@emotion/react').Theme;
89
+ as?: React.ElementType;
90
+ } & import('react').ClassAttributes<HTMLDivElement> & import('react').HTMLAttributes<HTMLDivElement> & {
91
+ theme?: import('@emotion/react').Theme;
92
+ }, {}, {}>;
@@ -1,4 +1,4 @@
1
- import { ID, SnackbarMessageConfig, Tag, Task, TaskGroupWithTasksList } from '@zeniai/client-epic-state';
1
+ import { ID, SnackbarMessageConfig, Tag, Task, TaskGroupWithTasksList, TaskWithUserDetails } 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>;
@@ -10,6 +10,7 @@ export interface TaskListRowSmallProps extends FormSectionProps {
10
10
  tagList: Tag[];
11
11
  taskGroup: TaskGroupWithTasksList;
12
12
  isZeniUser?: boolean;
13
+ subtasksByParentId?: Map<ID, TaskWithUserDetails[]>;
13
14
  onAddNewTaskToTaskGroup: (taskGroupId: ID) => void;
14
15
  onCollapseAll: () => void;
15
16
  onCollapseToggle: (taskGroupId: ID) => void;
@@ -19,5 +20,6 @@ export interface TaskListRowSmallProps extends FormSectionProps {
19
20
  onShowToast: (messageInfo: SnackbarMessageConfig) => void;
20
21
  onTaskManagementRowClick: (id: ID) => void;
21
22
  onTimeSpentUpdate: (task: Task, updates: Partial<Task>) => void;
23
+ onRowHeightChange?: () => void;
22
24
  }
23
25
  export declare const TaskListRowSmall: ({ taskGroup, tagList, sectionId, showGroupName, showRenameTextField, isSelectionAllowed, isCollapsed, existingTaskGroupNamesByGroupId, onDeleteTaskGroup, onExpandAll, onCollapseAll, onAddNewTaskToTaskGroup, onCollapseToggle, onTaskManagementRowClick, onDragStart, onTimeSpentUpdate, onShowToast, isZeniUser, }: TaskListRowSmallProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,31 +1,5 @@
1
1
  import { ClientAnalytics } from '@zeniai/client-analytics';
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
- }
2
+ import { CreateSubTaskPayload, FetchState, ID, SnackbarMessageConfig, SortOrder, SpendManagementFiltersType, TagViewSelectorView, Task, TaskGroupKey, TaskListLocalData, TaskListSelectorView, TaskListTab, TaskListViewSortKey } from '@zeniai/client-epic-state';
29
3
  export declare const uniqueFormName: (sectionId: ID) => `${string}_form`;
30
4
  export interface TaskManagementPageProps {
31
5
  isTaskTemplatesEnabled: boolean;
@@ -39,6 +13,7 @@ export interface TaskManagementPageProps {
39
13
  isTaskGroupAssigneesEnabled?: boolean;
40
14
  isTaskRecurringParentEnabled?: boolean;
41
15
  isZeniUser?: boolean;
16
+ subTaskCreateStatus?: FetchState;
42
17
  taskListFetchState?: FetchState;
43
18
  assignGroupToTasks: (taskGroupId: ID) => void;
44
19
  bulkUpdateTasks: (taskIds: ID[], updates: Partial<Task>) => void;
@@ -69,6 +44,8 @@ export interface TaskManagementPageProps {
69
44
  updateTask: (task: Task, updates: Partial<Task>) => void;
70
45
  onAskAiCfoClick?: () => void;
71
46
  onQuickResponsesClick?: () => void;
47
+ onSubtaskCreation?: (parentTaskId: ID, data: CreateSubTaskPayload) => void;
48
+ resetSubtaskFormCreationStatus?: () => void;
72
49
  }
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
+ 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, resetSubtaskFormCreationStatus, onSubtaskCreation, subTaskCreateStatus, }: TaskManagementPageProps) => import("react/jsx-runtime").JSX.Element;
74
51
  export default TaskManagementPage;
@@ -0,0 +1,30 @@
1
+ import { Tag, Task, User, UserGroup } from '@zeniai/client-epic-state';
2
+ export declare const subtaskUsersMock: User[];
3
+ export declare const subtaskUserGroupsMock: UserGroup[];
4
+ export declare const subtaskTagsMock: Tag[];
5
+ export declare const sampleSubtasksMock: Task[];
6
+ export declare const parentTaskIdMock = "task_4517209d-0209-4440-ae17-fe44f1480dd6";
7
+ export declare const newSubtaskSectionDefaults: {
8
+ newSubtaskSection: {
9
+ name: string;
10
+ description: string;
11
+ status: {
12
+ selectedOption: string;
13
+ };
14
+ priority: {
15
+ selectedOption: string;
16
+ };
17
+ assignees: {
18
+ selectedUsers: never[];
19
+ selectedUserGroups: never[];
20
+ allUsers: User[];
21
+ allUserGroups: UserGroup[];
22
+ };
23
+ tags: {
24
+ selectedOptions: never[];
25
+ allOptions: never[];
26
+ };
27
+ dueDate: undefined;
28
+ timeSpent: string;
29
+ };
30
+ };
@@ -1,5 +1,6 @@
1
1
  export declare const taskManagementPage = "taskManagementPage";
2
2
  export declare const taskManagementTableSectionId = "taskManagementTable";
3
+ export declare const newSubtaskSectionId = "newSubtaskSection";
3
4
  export declare const newGroupField = "newGroup";
4
5
  export declare const groupDataKey = "groupData";
5
6
  export declare const taskDataKey = "taskData";
@@ -2,6 +2,7 @@ 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;
5
6
  sortOrder: SortOrder;
6
7
  value: string;
7
8
  width: ResponsiveSized;
@@ -0,0 +1,33 @@
1
+ import { ID } from '@zeniai/client-epic-state';
2
+ import { UserMultiSelectFieldValue } from '../cockpit/common/userMultiSelect/UserMultiSelectField';
3
+ import { ZeniDatePickerValue } from '../common/zeniDatePicker/ZeniDatePickerField';
4
+ import { MultiSelectFieldValue } from '../formElements/creatableMultiSelectField/CreatableMultiSelectField';
5
+ import { SingleSelectPickerFieldValue } from '../formElements/singleSelectPickerField/SingleSelectPickerField';
6
+ import { assigneeKey, dueDateKey, groupDataKey, groupNameKey, newSubtaskSectionId, priorityKey, selectedIdsKey, statusKey, tagKey, taskDataKey, taskManagementTableSectionId, timeSpentKey } from './taskManagementFormConstants';
7
+ interface GroupData {
8
+ [groupNameKey]: string;
9
+ [selectedIdsKey]: ID[];
10
+ }
11
+ interface TaskData {
12
+ [assigneeKey]: UserMultiSelectFieldValue;
13
+ [dueDateKey]: ZeniDatePickerValue;
14
+ [priorityKey]: SingleSelectPickerFieldValue;
15
+ [statusKey]: SingleSelectPickerFieldValue;
16
+ [tagKey]: MultiSelectFieldValue;
17
+ [timeSpentKey]: string;
18
+ }
19
+ export type TasksFormData = Record<ID, TaskData>;
20
+ export type GroupFormData = Record<ID, GroupData>;
21
+ export interface TaskManagementTableSectionFormData {
22
+ [groupDataKey]: GroupFormData;
23
+ [taskDataKey]: TasksFormData;
24
+ }
25
+ export interface SubtasksFormData extends TaskData {
26
+ description: string;
27
+ name: string;
28
+ }
29
+ export interface TaskManagementFormData {
30
+ [newSubtaskSectionId]: SubtasksFormData;
31
+ [taskManagementTableSectionId]: TaskManagementTableSectionFormData;
32
+ }
33
+ export {};
@@ -0,0 +1,20 @@
1
+ import { FetchState } from '@zeniai/client-epic-state';
2
+ /**
3
+ * Edge-triggered visibility controller for the TaskDetailPage subtask
4
+ * creation form.
5
+ *
6
+ * The form should auto-close only on the In-Progress -> Completed
7
+ * transition of `subTaskCreateStatus` (i.e. when a fresh create
8
+ * succeeds). A level-trigger (`status === "Completed"`) is buggy: if
9
+ * the user creates a subtask, then re-opens the form, the status is
10
+ * still "Completed" from the previous create and the form would close
11
+ * immediately. Mirrors the edge-trigger pattern in TaskListRow.tsx.
12
+ *
13
+ * Extracted to its own module so the race-condition unit test can
14
+ * exercise the exact code path that ships in TaskDetailPage, instead
15
+ * of a re-declared copy.
16
+ */
17
+ export declare const useSubtaskFormVisibility: (subTaskCreateStatus: FetchState | undefined) => {
18
+ isSubtaskFormVisible: boolean;
19
+ setIsSubtaskFormVisible: (visible: boolean) => void;
20
+ };
@@ -15,6 +15,14 @@ export declare enum Space {
15
15
  sp11 = "80px",
16
16
  sp12 = "100px"
17
17
  }
18
+ /**
19
+ * BorderStroke widths for borders / outlines. Wrapped in an enum so call
20
+ * sites don't sprinkle bare px literals throughout styled-components.
21
+ */
22
+ export declare enum BorderStroke {
23
+ hairline = "1px",
24
+ regular = "2px"
25
+ }
18
26
  export declare const OriginalFont: "Roboto,'Helvetica Neue',Helvetica,Arial,sans-serif";
19
27
  export declare const fonts: {
20
28
  readonly Original: "Roboto,'Helvetica Neue',Helvetica,Arial,sans-serif";