@box/activity-feed 2.2.15 → 2.2.17
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.
- package/dist/chunks/AssigneeList.js +1 -124
- package/dist/chunks/TaskDueDate.js +1 -44
- package/dist/chunks/TaskItemFooter.js +1 -77
- package/dist/chunks/TaskMessage.js +1 -88
- package/dist/chunks/TaskState.js +1 -83
- package/dist/chunks/activity-feed-list.js +1 -33
- package/dist/chunks/activity-feed.js +1 -46
- package/dist/chunks/app-activity-item.js +1 -75
- package/dist/chunks/editor.js +1 -16
- package/dist/chunks/empty-state.js +1 -30
- package/dist/chunks/header.js +1 -72
- package/dist/chunks/scroll.js +1 -6
- package/dist/chunks/task-button.js +1 -49
- package/dist/chunks/task-delete-confirmation-popover.js +1 -57
- package/dist/chunks/task-options-menu.js +1 -81
- package/dist/chunks/types.js +1 -8
- package/dist/chunks/version-item.module.js +1 -10
- package/dist/esm/index.js +1 -10
- package/dist/esm/lib/activity-feed.js +1 -6
- package/dist/esm/lib/components/activity-feed-list/activity-feed-list.js +1 -2
- package/dist/esm/lib/components/activity-feed-list/index.js +1 -2
- package/dist/esm/lib/components/activity-feed-list/use-list-scroll-state.js +1 -33
- package/dist/esm/lib/components/app-activity-item/app-activity-item.js +1 -2
- package/dist/esm/lib/components/app-activity-item/index.js +1 -2
- package/dist/esm/lib/components/app-activity-item/messages.js +1 -6
- package/dist/esm/lib/components/editor/editor.js +1 -2
- package/dist/esm/lib/components/editor/index.js +1 -2
- package/dist/esm/lib/components/empty-state/empty-state.js +1 -2
- package/dist/esm/lib/components/empty-state/index.js +1 -2
- package/dist/esm/lib/components/empty-state/messages.js +1 -12
- package/dist/esm/lib/components/header/header-filter-options.js +1 -34
- package/dist/esm/lib/components/header/header.js +1 -2
- package/dist/esm/lib/components/header/messages.js +1 -44
- package/dist/esm/lib/components/header/task-button/index.js +1 -2
- package/dist/esm/lib/components/header/task-button/messages.js +1 -24
- package/dist/esm/lib/components/header/task-button/task-button.js +1 -2
- package/dist/esm/lib/components/task-item/TaskItem.js +1 -92
- package/dist/esm/lib/components/task-item/TaskItemFooter.js +1 -2
- package/dist/esm/lib/components/task-item/components/assignee-list/AssigneeList.js +1 -2
- package/dist/esm/lib/components/task-item/components/assignee-list/index.js +1 -2
- package/dist/esm/lib/components/task-item/components/task-due-date/TaskDueDate.js +1 -2
- package/dist/esm/lib/components/task-item/components/task-due-date/index.js +1 -2
- package/dist/esm/lib/components/task-item/components/task-message/MessageRenderer.js +1 -21
- package/dist/esm/lib/components/task-item/components/task-message/TaskMessage.js +1 -2
- package/dist/esm/lib/components/task-item/components/task-message/index.js +1 -2
- package/dist/esm/lib/components/task-item/components/task-message/messages.js +1 -28
- package/dist/esm/lib/components/task-item/components/task-message/task-delete-confirmation-popover.js +1 -2
- package/dist/esm/lib/components/task-item/components/task-message/task-options-menu.js +1 -2
- package/dist/esm/lib/components/task-item/components/task-state/TaskState.js +1 -2
- package/dist/esm/lib/components/task-item/components/task-state/index.js +1 -2
- package/dist/esm/lib/components/task-item/components/task-state/messages.js +1 -20
- package/dist/esm/lib/components/task-item/index.js +1 -6
- package/dist/esm/lib/components/task-item/messages.js +1 -88
- package/dist/esm/lib/components/task-item/utils/task-item-helpers.js +2 -22
- package/dist/esm/lib/components/user-avatar/getInitials.js +1 -5
- package/dist/esm/lib/components/user-avatar/index.js +1 -2
- package/dist/esm/lib/components/user-avatar/user-avatar.js +1 -22
- package/dist/esm/lib/components/version-item/delete-version-item/delete-version-item.js +1 -41
- package/dist/esm/lib/components/version-item/delete-version-item/index.js +1 -2
- package/dist/esm/lib/components/version-item/divider-version-item/divider-version-item.js +1 -20
- package/dist/esm/lib/components/version-item/divider-version-item/index.js +1 -2
- package/dist/esm/lib/components/version-item/index.js +1 -2
- package/dist/esm/lib/components/version-item/messages.js +1 -36
- package/dist/esm/lib/components/version-item/version-item.js +1 -54
- package/dist/esm/lib/resin-targets.js +1 -20
- package/dist/esm/lib/scroll/create-activity-feed-scroll.js +1 -21
- package/dist/esm/lib/scroll/index.js +1 -4
- package/dist/esm/lib/scroll/use-activity-feed-scroll.js +1 -7
- package/package.json +15 -15
|
@@ -1,124 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import t from "../esm/lib/components/task-item/messages.js";
|
|
3
|
-
import { UserAvatar as n } from "../esm/lib/components/user-avatar/user-avatar.js";
|
|
4
|
-
import { useCallback as r, useEffect as i, useState as a } from "react";
|
|
5
|
-
import { Avatar as o, Text as s, TextButton as c } from "@box/blueprint-web";
|
|
6
|
-
import { useIntl as l } from "react-intl";
|
|
7
|
-
import { Fragment as u, jsx as d, jsxs as f } from "react/jsx-runtime";
|
|
8
|
-
import { Gray10 as p } from "@box/blueprint-web-assets/tokens/tokens";
|
|
9
|
-
import '../styles/AssigneeList.css';var m = {
|
|
10
|
-
assigneeList: "_assigneeList_hcidg_4",
|
|
11
|
-
assigneeItem: "_assigneeItem_hcidg_11",
|
|
12
|
-
assigneeMeta: "_assigneeMeta_hcidg_17",
|
|
13
|
-
assigneeName: "_assigneeName_hcidg_25",
|
|
14
|
-
assigneeSeparator: "_assigneeSeparator_hcidg_33",
|
|
15
|
-
assigneeStatusSuccess: "_assigneeStatusSuccess_hcidg_37",
|
|
16
|
-
assigneeStatusRejected: "_assigneeStatusRejected_hcidg_42",
|
|
17
|
-
assigneeShowMoreRow: "_assigneeShowMoreRow_hcidg_47",
|
|
18
|
-
assigneeShowLessButton: "_assigneeShowLessButton_hcidg_55"
|
|
19
|
-
}, h = 3;
|
|
20
|
-
function g(n) {
|
|
21
|
-
switch (n) {
|
|
22
|
-
case e.COMPLETED: return {
|
|
23
|
-
message: t.assigneeRowStatusCompleted,
|
|
24
|
-
statusClass: m.assigneeStatusSuccess
|
|
25
|
-
};
|
|
26
|
-
case e.APPROVED: return {
|
|
27
|
-
message: t.assigneeRowStatusApproved,
|
|
28
|
-
statusClass: m.assigneeStatusSuccess
|
|
29
|
-
};
|
|
30
|
-
case e.REJECTED: return {
|
|
31
|
-
message: t.assigneeRowStatusRejected,
|
|
32
|
-
statusClass: m.assigneeStatusRejected
|
|
33
|
-
};
|
|
34
|
-
default: return null;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
function _({ assignees: e, disabled: _ = !1, hasNextPage: v = !1, onLoadAllAssignee: y }) {
|
|
38
|
-
let [b, x] = a(!1), [S, C] = a(!1), [w, T] = a(!1), [E, D] = a(e), [O, k] = a(!1), { formatMessage: A } = l();
|
|
39
|
-
i(() => {
|
|
40
|
-
D(e), k(!1), x(!1), T(!1), C(!1);
|
|
41
|
-
}, [e]);
|
|
42
|
-
let j = r(async () => {
|
|
43
|
-
if (v && y && !O) {
|
|
44
|
-
C(!0), T(!1);
|
|
45
|
-
try {
|
|
46
|
-
D(await y()), k(!0), x(!0);
|
|
47
|
-
} catch {
|
|
48
|
-
T(!0);
|
|
49
|
-
} finally {
|
|
50
|
-
C(!1);
|
|
51
|
-
}
|
|
52
|
-
} else x(!0);
|
|
53
|
-
}, [
|
|
54
|
-
v,
|
|
55
|
-
y,
|
|
56
|
-
O
|
|
57
|
-
]);
|
|
58
|
-
if (E.length === 0) return null;
|
|
59
|
-
let M = E.length, N = b ? M : Math.min(h, M), P = Math.max(0, M - h), F;
|
|
60
|
-
return F = S ? A(t.loadingAssignees) : P > 0 ? A(v && !O ? t.showMoreAssigneesApproximate : t.showMoreAssignees, { count: P }) : A(t.showMore), /* @__PURE__ */ f("div", {
|
|
61
|
-
className: m.assigneeList,
|
|
62
|
-
children: [
|
|
63
|
-
E.slice(0, N).map((e) => {
|
|
64
|
-
let t = g(e.status);
|
|
65
|
-
return /* @__PURE__ */ f("div", {
|
|
66
|
-
className: m.assigneeItem,
|
|
67
|
-
"data-testid": `assignee-row-${e.id}`,
|
|
68
|
-
children: [/* @__PURE__ */ d(n, {
|
|
69
|
-
size: "xsmall",
|
|
70
|
-
user: e
|
|
71
|
-
}), /* @__PURE__ */ f("div", {
|
|
72
|
-
className: m.assigneeMeta,
|
|
73
|
-
children: [/* @__PURE__ */ d(s, {
|
|
74
|
-
as: "span",
|
|
75
|
-
variant: "bodySmall",
|
|
76
|
-
color: "textOnLightSecondary",
|
|
77
|
-
className: m.assigneeName,
|
|
78
|
-
children: e.name
|
|
79
|
-
}), t && /* @__PURE__ */ f(u, { children: [/* @__PURE__ */ d(s, {
|
|
80
|
-
as: "span",
|
|
81
|
-
variant: "bodySmall",
|
|
82
|
-
color: "textOnLightSecondary",
|
|
83
|
-
"aria-hidden": !0,
|
|
84
|
-
className: m.assigneeSeparator,
|
|
85
|
-
children: "·"
|
|
86
|
-
}), /* @__PURE__ */ d(s, {
|
|
87
|
-
as: "span",
|
|
88
|
-
variant: "bodySmall",
|
|
89
|
-
className: t.statusClass,
|
|
90
|
-
children: A(t.message)
|
|
91
|
-
})] })]
|
|
92
|
-
})]
|
|
93
|
-
}, e.id);
|
|
94
|
-
}),
|
|
95
|
-
!b && (P > 0 || v) && /* @__PURE__ */ f(u, { children: [/* @__PURE__ */ f("div", {
|
|
96
|
-
className: m.assigneeShowMoreRow,
|
|
97
|
-
children: [P > 0 && (!v || O) && /* @__PURE__ */ d(o, {
|
|
98
|
-
"aria-hidden": !0,
|
|
99
|
-
color: p,
|
|
100
|
-
size: "xsmall",
|
|
101
|
-
text: `+${P}`
|
|
102
|
-
}), /* @__PURE__ */ d(c, {
|
|
103
|
-
disabled: S || _,
|
|
104
|
-
onClick: j,
|
|
105
|
-
type: "button",
|
|
106
|
-
children: F
|
|
107
|
-
})]
|
|
108
|
-
}), w && /* @__PURE__ */ d(s, {
|
|
109
|
-
as: "div",
|
|
110
|
-
variant: "bodySmall",
|
|
111
|
-
color: "textOnLightError",
|
|
112
|
-
children: A(t.loadAssigneesError)
|
|
113
|
-
})] }),
|
|
114
|
-
b && P > 0 && /* @__PURE__ */ d(c, {
|
|
115
|
-
className: m.assigneeShowLessButton,
|
|
116
|
-
disabled: _,
|
|
117
|
-
onClick: () => x(!1),
|
|
118
|
-
type: "button",
|
|
119
|
-
children: A(t.showLessAssignees)
|
|
120
|
-
})
|
|
121
|
-
]
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
export { _ as t };
|
|
1
|
+
import{n as TaskStatus}from"./types.js";import messages from"../esm/lib/components/task-item/messages.js";import{UserAvatar}from"../esm/lib/components/user-avatar/user-avatar.js";import{useCallback,useEffect,useState}from"react";import{Avatar,Text,TextButton}from"@box/blueprint-web";import{useIntl}from"react-intl";import{Fragment,jsx,jsxs}from"react/jsx-runtime";import{Gray10}from"@box/blueprint-web-assets/tokens/tokens";import '../styles/AssigneeList.css';var AssigneeList_module_default={assigneeList:`_assigneeList_hcidg_4`,assigneeItem:`_assigneeItem_hcidg_11`,assigneeMeta:`_assigneeMeta_hcidg_17`,assigneeName:`_assigneeName_hcidg_25`,assigneeSeparator:`_assigneeSeparator_hcidg_33`,assigneeStatusSuccess:`_assigneeStatusSuccess_hcidg_37`,assigneeStatusRejected:`_assigneeStatusRejected_hcidg_42`,assigneeShowMoreRow:`_assigneeShowMoreRow_hcidg_47`,assigneeShowLessButton:`_assigneeShowLessButton_hcidg_55`},INITIAL_VISIBLE_ASSIGNEE_COUNT=3;function getAssigneeRowStatus(status){switch(status){case TaskStatus.COMPLETED:return{message:messages.assigneeRowStatusCompleted,statusClass:AssigneeList_module_default.assigneeStatusSuccess};case TaskStatus.APPROVED:return{message:messages.assigneeRowStatusApproved,statusClass:AssigneeList_module_default.assigneeStatusSuccess};case TaskStatus.REJECTED:return{message:messages.assigneeRowStatusRejected,statusClass:AssigneeList_module_default.assigneeStatusRejected};default:return null}}function AssigneeList({assignees,disabled=!1,hasNextPage=!1,onLoadAllAssignee}){let[isExpanded,setIsExpanded]=useState(!1),[isLoading,setIsLoading]=useState(!1),[loadError,setLoadError]=useState(!1),[allAssignees,setAllAssignees]=useState(assignees),[hasLoadedAll,setHasLoadedAll]=useState(!1),{formatMessage}=useIntl();useEffect(()=>{setAllAssignees(assignees),setHasLoadedAll(!1),setIsExpanded(!1),setLoadError(!1),setIsLoading(!1)},[assignees]);let handleShowMore=useCallback(async()=>{if(hasNextPage&&onLoadAllAssignee&&!hasLoadedAll){setIsLoading(!0),setLoadError(!1);try{setAllAssignees(await onLoadAllAssignee()),setHasLoadedAll(!0),setIsExpanded(!0)}catch{setLoadError(!0)}finally{setIsLoading(!1)}}else setIsExpanded(!0)},[hasNextPage,onLoadAllAssignee,hasLoadedAll]);if(allAssignees.length===0)return null;let totalCount=allAssignees.length,visibleCount=isExpanded?totalCount:Math.min(INITIAL_VISIBLE_ASSIGNEE_COUNT,totalCount),hiddenCount=Math.max(0,totalCount-INITIAL_VISIBLE_ASSIGNEE_COUNT),showMoreLabel;return showMoreLabel=isLoading?formatMessage(messages.loadingAssignees):hiddenCount>0?formatMessage(hasNextPage&&!hasLoadedAll?messages.showMoreAssigneesApproximate:messages.showMoreAssignees,{count:hiddenCount}):formatMessage(messages.showMore),jsxs(`div`,{className:AssigneeList_module_default.assigneeList,children:[allAssignees.slice(0,visibleCount).map(assignee=>{let rowStatus=getAssigneeRowStatus(assignee.status);return jsxs(`div`,{className:AssigneeList_module_default.assigneeItem,"data-testid":`assignee-row-${assignee.id}`,children:[jsx(UserAvatar,{size:`xsmall`,user:assignee}),jsxs(`div`,{className:AssigneeList_module_default.assigneeMeta,children:[jsx(Text,{as:`span`,variant:`bodySmall`,color:`textOnLightSecondary`,className:AssigneeList_module_default.assigneeName,children:assignee.name}),rowStatus&&jsxs(Fragment,{children:[jsx(Text,{as:`span`,variant:`bodySmall`,color:`textOnLightSecondary`,"aria-hidden":!0,className:AssigneeList_module_default.assigneeSeparator,children:`·`}),jsx(Text,{as:`span`,variant:`bodySmall`,className:rowStatus.statusClass,children:formatMessage(rowStatus.message)})]})]})]},assignee.id)}),!isExpanded&&(hiddenCount>0||hasNextPage)&&jsxs(Fragment,{children:[jsxs(`div`,{className:AssigneeList_module_default.assigneeShowMoreRow,children:[hiddenCount>0&&(!hasNextPage||hasLoadedAll)&&jsx(Avatar,{"aria-hidden":!0,color:Gray10,size:`xsmall`,text:`+${hiddenCount}`}),jsx(TextButton,{disabled:isLoading||disabled,onClick:handleShowMore,type:`button`,children:showMoreLabel})]}),loadError&&jsx(Text,{as:`div`,variant:`bodySmall`,color:`textOnLightError`,children:formatMessage(messages.loadAssigneesError)})]}),isExpanded&&hiddenCount>0&&jsx(TextButton,{className:AssigneeList_module_default.assigneeShowLessButton,disabled,onClick:()=>setIsExpanded(!1),type:`button`,children:formatMessage(messages.showLessAssignees)})]})}export{AssigneeList as t};
|
|
@@ -1,44 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { Text as t } from "@box/blueprint-web";
|
|
3
|
-
import { FormattedMessage as n, useIntl as r } from "react-intl";
|
|
4
|
-
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
5
|
-
import { Calendar as o } from "@box/blueprint-web-assets/icons/Medium";
|
|
6
|
-
import '../styles/TaskDueDate.css';var s = {
|
|
7
|
-
dueDateRow: "_dueDateRow_1jnvx_1",
|
|
8
|
-
dueDateCalendarIcon: "_dueDateCalendarIcon_1jnvx_7",
|
|
9
|
-
dueDateRowOverdue: "_dueDateRowOverdue_1jnvx_14"
|
|
10
|
-
}, c = ({ dueDate: c }) => {
|
|
11
|
-
let l = r();
|
|
12
|
-
if (!Number.isFinite(c) || c === 0) return null;
|
|
13
|
-
let u = new Date(c), d = c < Date.now(), f = /* @__PURE__ */ new Date(), p = u.getFullYear() === f.getFullYear(), m = l.formatDate(u, p ? {
|
|
14
|
-
month: "short",
|
|
15
|
-
day: "numeric"
|
|
16
|
-
} : {
|
|
17
|
-
month: "short",
|
|
18
|
-
day: "numeric",
|
|
19
|
-
year: "numeric"
|
|
20
|
-
}), h = l.formatDate(u, {
|
|
21
|
-
hour: "numeric",
|
|
22
|
-
minute: "2-digit"
|
|
23
|
-
});
|
|
24
|
-
return /* @__PURE__ */ a("div", {
|
|
25
|
-
className: d ? `${s.dueDateRow} ${s.dueDateRowOverdue}` : s.dueDateRow,
|
|
26
|
-
children: [/* @__PURE__ */ i(o, {
|
|
27
|
-
"aria-hidden": !0,
|
|
28
|
-
className: s.dueDateCalendarIcon,
|
|
29
|
-
color: "currentColor"
|
|
30
|
-
}), /* @__PURE__ */ i(t, {
|
|
31
|
-
as: "span",
|
|
32
|
-
variant: "bodySmall",
|
|
33
|
-
color: d ? "textOnLightError" : "textOnLightSecondary",
|
|
34
|
-
children: /* @__PURE__ */ i(n, {
|
|
35
|
-
...e.taskDueDateLabel,
|
|
36
|
-
values: {
|
|
37
|
-
monthDay: m,
|
|
38
|
-
time: h
|
|
39
|
-
}
|
|
40
|
-
})
|
|
41
|
-
})]
|
|
42
|
-
});
|
|
43
|
-
};
|
|
44
|
-
export { c as t };
|
|
1
|
+
import messages from"../esm/lib/components/task-item/messages.js";import{Text}from"@box/blueprint-web";import{FormattedMessage,useIntl}from"react-intl";import{jsx,jsxs}from"react/jsx-runtime";import{Calendar}from"@box/blueprint-web-assets/icons/Medium";import '../styles/TaskDueDate.css';var TaskDueDate_module_default={dueDateRow:`_dueDateRow_1jnvx_1`,dueDateCalendarIcon:`_dueDateCalendarIcon_1jnvx_7`,dueDateRowOverdue:`_dueDateRowOverdue_1jnvx_14`},TaskDueDate=({dueDate})=>{let intl=useIntl();if(!Number.isFinite(dueDate)||dueDate===0)return null;let dueDateObj=new Date(dueDate),isOverdue=dueDate<Date.now(),now=new Date,dateInCurrentYear=dueDateObj.getFullYear()===now.getFullYear(),monthDay=intl.formatDate(dueDateObj,dateInCurrentYear?{month:`short`,day:`numeric`}:{month:`short`,day:`numeric`,year:`numeric`}),time=intl.formatDate(dueDateObj,{hour:`numeric`,minute:`2-digit`});return jsxs(`div`,{className:isOverdue?`${TaskDueDate_module_default.dueDateRow} ${TaskDueDate_module_default.dueDateRowOverdue}`:TaskDueDate_module_default.dueDateRow,children:[jsx(Calendar,{"aria-hidden":!0,className:TaskDueDate_module_default.dueDateCalendarIcon,color:`currentColor`}),jsx(Text,{as:`span`,variant:`bodySmall`,color:isOverdue?`textOnLightError`:`textOnLightSecondary`,children:jsx(FormattedMessage,{...messages.taskDueDateLabel,values:{monthDay,time}})})]})};export{TaskDueDate as t};
|
|
@@ -1,77 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import t from "../esm/lib/components/task-item/messages.js";
|
|
3
|
-
import { t as n } from "./AssigneeList.js";
|
|
4
|
-
import { t as r } from "./TaskDueDate.js";
|
|
5
|
-
import { Button as i } from "@box/blueprint-web";
|
|
6
|
-
import { useIntl as a } from "react-intl";
|
|
7
|
-
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
8
|
-
import { Checkmark as c, XMark as l } from "@box/blueprint-web-assets/icons/Medium";
|
|
9
|
-
import '../styles/TaskItemFooter.css';var u = {
|
|
10
|
-
taskItem: "_taskItem_156h2_1",
|
|
11
|
-
header: "_header_156h2_10",
|
|
12
|
-
headerTitleRow: "_headerTitleRow_156h2_18",
|
|
13
|
-
headerLeadingIcon: "_headerLeadingIcon_156h2_24",
|
|
14
|
-
cardBody: "_cardBody_156h2_31",
|
|
15
|
-
textMessageFooterSlot: "_textMessageFooterSlot_156h2_38",
|
|
16
|
-
marginBottom: "_marginBottom_156h2_46",
|
|
17
|
-
approvalActionsRow: "_approvalActionsRow_156h2_50",
|
|
18
|
-
approvalApproveIcon: "_approvalApproveIcon_156h2_57",
|
|
19
|
-
approvalRejectIcon: "_approvalRejectIcon_156h2_61"
|
|
20
|
-
};
|
|
21
|
-
function d({ assignees: d, canApprove: f, canReject: p, disabled: m = !1, dueDate: h, hasNextPage: g, onApprove: _, onComplete: v, onLoadAllAssignee: y, onReject: b, pendingAction: x, showActionButtons: S, showApprovalActions: C, showGeneralComplete: w }) {
|
|
22
|
-
let T = a(), E = x !== void 0;
|
|
23
|
-
return /* @__PURE__ */ s("div", {
|
|
24
|
-
className: S ? u.textMessageFooterSlot : `${u.textMessageFooterSlot} ${u.marginBottom}`,
|
|
25
|
-
children: [
|
|
26
|
-
!!h && /* @__PURE__ */ o(r, { dueDate: h }),
|
|
27
|
-
/* @__PURE__ */ o(n, {
|
|
28
|
-
assignees: d,
|
|
29
|
-
disabled: m,
|
|
30
|
-
hasNextPage: g,
|
|
31
|
-
onLoadAllAssignee: y
|
|
32
|
-
}),
|
|
33
|
-
S && /* @__PURE__ */ s("div", { children: [w && /* @__PURE__ */ o(i, {
|
|
34
|
-
"data-resin-target": e.TASK_COMPLETE,
|
|
35
|
-
disabled: m || E && x !== "complete",
|
|
36
|
-
loading: x === "complete",
|
|
37
|
-
loadingAriaLabel: T.formatMessage(t.taskCompleteActionLoading),
|
|
38
|
-
onClick: v,
|
|
39
|
-
size: "small",
|
|
40
|
-
variant: "primary",
|
|
41
|
-
children: T.formatMessage(t.taskCompleteAction)
|
|
42
|
-
}), C && /* @__PURE__ */ s("div", {
|
|
43
|
-
className: u.approvalActionsRow,
|
|
44
|
-
children: [/* @__PURE__ */ o(i, {
|
|
45
|
-
"data-resin-target": e.TASK_APPROVE,
|
|
46
|
-
disabled: m || !f || E && x !== "approve",
|
|
47
|
-
loading: x === "approve",
|
|
48
|
-
loadingAriaLabel: T.formatMessage(t.taskApproveActionLoading),
|
|
49
|
-
onClick: _,
|
|
50
|
-
size: "small",
|
|
51
|
-
startIcon: () => /* @__PURE__ */ o(c, {
|
|
52
|
-
className: u.approvalApproveIcon,
|
|
53
|
-
color: "currentColor"
|
|
54
|
-
}),
|
|
55
|
-
type: "button",
|
|
56
|
-
variant: "secondary",
|
|
57
|
-
children: T.formatMessage(t.taskApproveAction)
|
|
58
|
-
}), /* @__PURE__ */ o(i, {
|
|
59
|
-
"data-resin-target": e.TASK_REJECT,
|
|
60
|
-
disabled: m || !p || E && x !== "reject",
|
|
61
|
-
loading: x === "reject",
|
|
62
|
-
loadingAriaLabel: T.formatMessage(t.taskRejectActionLoading),
|
|
63
|
-
onClick: b,
|
|
64
|
-
size: "small",
|
|
65
|
-
startIcon: () => /* @__PURE__ */ o(l, {
|
|
66
|
-
className: u.approvalRejectIcon,
|
|
67
|
-
color: "currentColor"
|
|
68
|
-
}),
|
|
69
|
-
type: "button",
|
|
70
|
-
variant: "secondary",
|
|
71
|
-
children: T.formatMessage(t.taskRejectAction)
|
|
72
|
-
})]
|
|
73
|
-
})] })
|
|
74
|
-
]
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
export { u as n, d as t };
|
|
1
|
+
import{ACTIVITY_FEED_RESIN_TARGETS}from"../esm/lib/resin-targets.js";import messages from"../esm/lib/components/task-item/messages.js";import{t as AssigneeList}from"./AssigneeList.js";import{t as TaskDueDate}from"./TaskDueDate.js";import{Button}from"@box/blueprint-web";import{useIntl}from"react-intl";import{jsx,jsxs}from"react/jsx-runtime";import{Checkmark,XMark}from"@box/blueprint-web-assets/icons/Medium";import '../styles/TaskItemFooter.css';var TaskItem_module_default={taskItem:`_taskItem_156h2_1`,header:`_header_156h2_10`,headerTitleRow:`_headerTitleRow_156h2_18`,headerLeadingIcon:`_headerLeadingIcon_156h2_24`,cardBody:`_cardBody_156h2_31`,textMessageFooterSlot:`_textMessageFooterSlot_156h2_38`,marginBottom:`_marginBottom_156h2_46`,approvalActionsRow:`_approvalActionsRow_156h2_50`,approvalApproveIcon:`_approvalApproveIcon_156h2_57`,approvalRejectIcon:`_approvalRejectIcon_156h2_61`};function TaskItemFooter({assignees,canApprove,canReject,disabled=!1,dueDate,hasNextPage,onApprove,onComplete,onLoadAllAssignee,onReject,pendingAction,showActionButtons,showApprovalActions,showGeneralComplete}){let intl=useIntl(),hasPendingAction=pendingAction!==void 0;return jsxs(`div`,{className:showActionButtons?TaskItem_module_default.textMessageFooterSlot:`${TaskItem_module_default.textMessageFooterSlot} ${TaskItem_module_default.marginBottom}`,children:[!!dueDate&&jsx(TaskDueDate,{dueDate}),jsx(AssigneeList,{assignees,disabled,hasNextPage,onLoadAllAssignee}),showActionButtons&&jsxs(`div`,{children:[showGeneralComplete&&jsx(Button,{"data-resin-target":ACTIVITY_FEED_RESIN_TARGETS.TASK_COMPLETE,disabled:disabled||hasPendingAction&&pendingAction!==`complete`,loading:pendingAction===`complete`,loadingAriaLabel:intl.formatMessage(messages.taskCompleteActionLoading),onClick:onComplete,size:`small`,variant:`primary`,children:intl.formatMessage(messages.taskCompleteAction)}),showApprovalActions&&jsxs(`div`,{className:TaskItem_module_default.approvalActionsRow,children:[jsx(Button,{"data-resin-target":ACTIVITY_FEED_RESIN_TARGETS.TASK_APPROVE,disabled:disabled||!canApprove||hasPendingAction&&pendingAction!==`approve`,loading:pendingAction===`approve`,loadingAriaLabel:intl.formatMessage(messages.taskApproveActionLoading),onClick:onApprove,size:`small`,startIcon:()=>jsx(Checkmark,{className:TaskItem_module_default.approvalApproveIcon,color:`currentColor`}),type:`button`,variant:`secondary`,children:intl.formatMessage(messages.taskApproveAction)}),jsx(Button,{"data-resin-target":ACTIVITY_FEED_RESIN_TARGETS.TASK_REJECT,disabled:disabled||!canReject||hasPendingAction&&pendingAction!==`reject`,loading:pendingAction===`reject`,loadingAriaLabel:intl.formatMessage(messages.taskRejectActionLoading),onClick:onReject,size:`small`,startIcon:()=>jsx(XMark,{className:TaskItem_module_default.approvalRejectIcon,color:`currentColor`}),type:`button`,variant:`secondary`,children:intl.formatMessage(messages.taskRejectAction)})]})]})]})}export{TaskItem_module_default as n,TaskItemFooter as t};
|
|
@@ -1,88 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { t } from "./task-options-menu.js";
|
|
3
|
-
import { useState as n } from "react";
|
|
4
|
-
import r from "clsx";
|
|
5
|
-
import { Avatar as i, Text as a } from "@box/blueprint-web";
|
|
6
|
-
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
7
|
-
import { ReadableTime as c } from "@box/readable-time";
|
|
8
|
-
import '../styles/TaskMessage.css';var l = {
|
|
9
|
-
taskMessage: "_taskMessage_9yucp_1",
|
|
10
|
-
headerContainer: "_headerContainer_9yucp_11",
|
|
11
|
-
information: "_information_9yucp_19",
|
|
12
|
-
avatar: "_avatar_9yucp_26",
|
|
13
|
-
textContainer: "_textContainer_9yucp_29",
|
|
14
|
-
author: "_author_9yucp_37",
|
|
15
|
-
optionsMenu: "_optionsMenu_9yucp_45",
|
|
16
|
-
contentWrapper: "_contentWrapper_9yucp_65",
|
|
17
|
-
threadedIndicator: "_threadedIndicator_9yucp_69",
|
|
18
|
-
threadedIndicatorHidden: "_threadedIndicatorHidden_9yucp_85",
|
|
19
|
-
messageContent: "_messageContent_9yucp_88",
|
|
20
|
-
messageFooter: "_messageFooter_9yucp_95"
|
|
21
|
-
}, u = {
|
|
22
|
-
as: "span",
|
|
23
|
-
variant: "bodySmall",
|
|
24
|
-
color: "textOnLightSecondary"
|
|
25
|
-
};
|
|
26
|
-
function d(e) {
|
|
27
|
-
let t = e.trim().split(/\s+/);
|
|
28
|
-
return t.length === 1 ? t[0].charAt(0).toUpperCase() : (t[0].charAt(0) + t[t.length - 1].charAt(0)).toUpperCase();
|
|
29
|
-
}
|
|
30
|
-
function f({ id: f, author: p, message: m, createdAt: h, canEdit: g = !1, canDelete: _ = !1, disabled: v = !1, onEdit: y, onDelete: b, onView: x, showThreadedIndicator: S = !1, children: C }) {
|
|
31
|
-
let [w, T] = n(!1), E = g && !!y || _ && !!b || !!x, D = d(p.name);
|
|
32
|
-
return /* @__PURE__ */ s("div", {
|
|
33
|
-
className: l.taskMessage,
|
|
34
|
-
"data-message-wrapper": !0,
|
|
35
|
-
children: [/* @__PURE__ */ s("div", {
|
|
36
|
-
className: l.headerContainer,
|
|
37
|
-
children: [/* @__PURE__ */ s("div", {
|
|
38
|
-
className: l.information,
|
|
39
|
-
children: [/* @__PURE__ */ o(i, {
|
|
40
|
-
alt: p.name,
|
|
41
|
-
className: l.avatar,
|
|
42
|
-
colorIndex: parseInt(p.id, 10) || 0,
|
|
43
|
-
size: "medium",
|
|
44
|
-
src: p.avatarUrl || "",
|
|
45
|
-
text: D
|
|
46
|
-
}), /* @__PURE__ */ o("div", {
|
|
47
|
-
className: l.textContainer,
|
|
48
|
-
children: /* @__PURE__ */ o(a, {
|
|
49
|
-
as: "p",
|
|
50
|
-
className: l.author,
|
|
51
|
-
color: "textOnLightDefault",
|
|
52
|
-
variant: "bodyDefaultBold",
|
|
53
|
-
children: p.name
|
|
54
|
-
})
|
|
55
|
-
})]
|
|
56
|
-
}), E && /* @__PURE__ */ o("div", {
|
|
57
|
-
className: l.optionsMenu,
|
|
58
|
-
"data-state": w ? "open" : "closed",
|
|
59
|
-
children: /* @__PURE__ */ o(t, {
|
|
60
|
-
canDelete: _,
|
|
61
|
-
canEdit: g,
|
|
62
|
-
disabled: v,
|
|
63
|
-
onDelete: b ? () => b(f) : void 0,
|
|
64
|
-
onEdit: y ? () => y(f) : void 0,
|
|
65
|
-
onView: x ? () => x(f) : void 0,
|
|
66
|
-
onOpenChange: T
|
|
67
|
-
})
|
|
68
|
-
})]
|
|
69
|
-
}), /* @__PURE__ */ s("div", {
|
|
70
|
-
className: l.contentWrapper,
|
|
71
|
-
children: [/* @__PURE__ */ o("div", { className: r(l.threadedIndicator, !S && l.threadedIndicatorHidden) }), /* @__PURE__ */ s("div", {
|
|
72
|
-
className: l.messageContent,
|
|
73
|
-
children: [
|
|
74
|
-
/* @__PURE__ */ o(e, { messageObject: m }),
|
|
75
|
-
/* @__PURE__ */ o("div", {
|
|
76
|
-
className: l.messageFooter,
|
|
77
|
-
children: /* @__PURE__ */ o(c, {
|
|
78
|
-
textProps: u,
|
|
79
|
-
timestamp: h
|
|
80
|
-
})
|
|
81
|
-
}),
|
|
82
|
-
C
|
|
83
|
-
]
|
|
84
|
-
})]
|
|
85
|
-
})]
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
export { f as t };
|
|
1
|
+
import{MessageRenderer}from"../esm/lib/components/task-item/components/task-message/MessageRenderer.js";import{t as TaskOptionsMenu}from"./task-options-menu.js";import{useState}from"react";import clsx from"clsx";import{Avatar,Text}from"@box/blueprint-web";import{jsx,jsxs}from"react/jsx-runtime";import{ReadableTime}from"@box/readable-time";import '../styles/TaskMessage.css';var TaskMessage_module_default={taskMessage:`_taskMessage_9yucp_1`,headerContainer:`_headerContainer_9yucp_11`,information:`_information_9yucp_19`,avatar:`_avatar_9yucp_26`,textContainer:`_textContainer_9yucp_29`,author:`_author_9yucp_37`,optionsMenu:`_optionsMenu_9yucp_45`,contentWrapper:`_contentWrapper_9yucp_65`,threadedIndicator:`_threadedIndicator_9yucp_69`,threadedIndicatorHidden:`_threadedIndicatorHidden_9yucp_85`,messageContent:`_messageContent_9yucp_88`,messageFooter:`_messageFooter_9yucp_95`},readableTimeTextProps={as:`span`,variant:`bodySmall`,color:`textOnLightSecondary`};function getInitials(name){let nameParts=name.trim().split(/\s+/);return nameParts.length===1?nameParts[0].charAt(0).toUpperCase():(nameParts[0].charAt(0)+nameParts[nameParts.length-1].charAt(0)).toUpperCase()}function TaskMessage({id,author,message,createdAt,canEdit=!1,canDelete=!1,disabled=!1,onEdit,onDelete,onView,showThreadedIndicator=!1,children}){let[isOptionsRegionOpen,setIsOptionsRegionOpen]=useState(!1),showActions=canEdit&&!!onEdit||canDelete&&!!onDelete||!!onView,initials=getInitials(author.name);return jsxs(`div`,{className:TaskMessage_module_default.taskMessage,"data-message-wrapper":!0,children:[jsxs(`div`,{className:TaskMessage_module_default.headerContainer,children:[jsxs(`div`,{className:TaskMessage_module_default.information,children:[jsx(Avatar,{alt:author.name,className:TaskMessage_module_default.avatar,colorIndex:parseInt(author.id,10)||0,size:`medium`,src:author.avatarUrl||``,text:initials}),jsx(`div`,{className:TaskMessage_module_default.textContainer,children:jsx(Text,{as:`p`,className:TaskMessage_module_default.author,color:`textOnLightDefault`,variant:`bodyDefaultBold`,children:author.name})})]}),showActions&&jsx(`div`,{className:TaskMessage_module_default.optionsMenu,"data-state":isOptionsRegionOpen?`open`:`closed`,children:jsx(TaskOptionsMenu,{canDelete,canEdit,disabled,onDelete:onDelete?()=>onDelete(id):void 0,onEdit:onEdit?()=>onEdit(id):void 0,onView:onView?()=>onView(id):void 0,onOpenChange:setIsOptionsRegionOpen})})]}),jsxs(`div`,{className:TaskMessage_module_default.contentWrapper,children:[jsx(`div`,{className:clsx(TaskMessage_module_default.threadedIndicator,!showThreadedIndicator&&TaskMessage_module_default.threadedIndicatorHidden)}),jsxs(`div`,{className:TaskMessage_module_default.messageContent,children:[jsx(MessageRenderer,{messageObject:message}),jsx(`div`,{className:TaskMessage_module_default.messageFooter,children:jsx(ReadableTime,{textProps:readableTimeTextProps,timestamp:createdAt})}),children]})]})]})}export{TaskMessage as t};
|
package/dist/chunks/TaskState.js
CHANGED
|
@@ -1,83 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import t from "../esm/lib/components/task-item/components/task-state/messages.js";
|
|
3
|
-
import { Text as n } from "@box/blueprint-web";
|
|
4
|
-
import { useIntl as r } from "react-intl";
|
|
5
|
-
import { Fragment as i, jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
6
|
-
import { ReadableTime as s } from "@box/readable-time";
|
|
7
|
-
import { CheckmarkCircle as c, XMarkCircle as l } from "@box/blueprint-web-assets/icons/MediumFilled";
|
|
8
|
-
import { bpGreenLight125 as u, bpWatermelonRed125 as d } from "@box/blueprint-web-assets/tokens/tokens";
|
|
9
|
-
import '../styles/TaskState.css';var f = {
|
|
10
|
-
taskState: "_taskState_1qxrh_1",
|
|
11
|
-
leftContainer: "_leftContainer_1qxrh_8",
|
|
12
|
-
rightContainer: "_rightContainer_1qxrh_16",
|
|
13
|
-
statusLine: "_statusLine_1qxrh_22",
|
|
14
|
-
countText: "_countText_1qxrh_30"
|
|
15
|
-
}, p = {
|
|
16
|
-
as: "span",
|
|
17
|
-
variant: "bodySmall",
|
|
18
|
-
color: "textOnLightSecondary"
|
|
19
|
-
}, m = {
|
|
20
|
-
[e.REJECTED]: /* @__PURE__ */ a(l, {
|
|
21
|
-
color: d,
|
|
22
|
-
height: 24,
|
|
23
|
-
width: 24
|
|
24
|
-
}),
|
|
25
|
-
[e.COMPLETED]: /* @__PURE__ */ a(c, {
|
|
26
|
-
color: u,
|
|
27
|
-
height: 24,
|
|
28
|
-
width: 24
|
|
29
|
-
}),
|
|
30
|
-
[e.APPROVED]: /* @__PURE__ */ a(c, {
|
|
31
|
-
color: u,
|
|
32
|
-
height: 24,
|
|
33
|
-
width: 24
|
|
34
|
-
})
|
|
35
|
-
};
|
|
36
|
-
function h({ completedAt: c, showCount: l = !0, totalCount: u, variant: d }) {
|
|
37
|
-
let h = r();
|
|
38
|
-
if (d !== e.COMPLETED && d !== e.APPROVED && d !== e.REJECTED) return null;
|
|
39
|
-
let g = m[d], _ = l && u > 0 && d !== e.REJECTED, v;
|
|
40
|
-
switch (d) {
|
|
41
|
-
case e.APPROVED:
|
|
42
|
-
v = t.approvedHeadline;
|
|
43
|
-
break;
|
|
44
|
-
case e.COMPLETED:
|
|
45
|
-
v = t.completedHeadline;
|
|
46
|
-
break;
|
|
47
|
-
case e.REJECTED:
|
|
48
|
-
v = t.rejectedHeadline;
|
|
49
|
-
break;
|
|
50
|
-
}
|
|
51
|
-
let y = /* @__PURE__ */ o(i, { children: [/* @__PURE__ */ a(n, {
|
|
52
|
-
as: "span",
|
|
53
|
-
color: "textOnLightDefault",
|
|
54
|
-
variant: "bodyDefaultBold",
|
|
55
|
-
children: h.formatMessage(v)
|
|
56
|
-
}), _ && /* @__PURE__ */ a(n, {
|
|
57
|
-
as: "span",
|
|
58
|
-
className: f.countText,
|
|
59
|
-
color: "textOnLightSecondary",
|
|
60
|
-
variant: "bodyDefault",
|
|
61
|
-
children: h.formatMessage(t.completedCountParenthetical, {
|
|
62
|
-
completedCount: u,
|
|
63
|
-
totalCount: u
|
|
64
|
-
})
|
|
65
|
-
})] });
|
|
66
|
-
return /* @__PURE__ */ o("div", {
|
|
67
|
-
className: f.taskState,
|
|
68
|
-
children: [/* @__PURE__ */ a("div", {
|
|
69
|
-
className: f.leftContainer,
|
|
70
|
-
children: g
|
|
71
|
-
}), /* @__PURE__ */ o("div", {
|
|
72
|
-
className: f.rightContainer,
|
|
73
|
-
children: [/* @__PURE__ */ a("div", {
|
|
74
|
-
className: f.statusLine,
|
|
75
|
-
children: y
|
|
76
|
-
}), /* @__PURE__ */ a(s, {
|
|
77
|
-
textProps: p,
|
|
78
|
-
timestamp: c
|
|
79
|
-
})]
|
|
80
|
-
})]
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
export { h as t };
|
|
1
|
+
import{n as TaskStatus}from"./types.js";import messages from"../esm/lib/components/task-item/components/task-state/messages.js";import{Text}from"@box/blueprint-web";import{useIntl}from"react-intl";import{Fragment,jsx,jsxs}from"react/jsx-runtime";import{ReadableTime}from"@box/readable-time";import{CheckmarkCircle,XMarkCircle}from"@box/blueprint-web-assets/icons/MediumFilled";import{bpGreenLight125,bpWatermelonRed125}from"@box/blueprint-web-assets/tokens/tokens";import '../styles/TaskState.css';var TaskState_module_default={taskState:`_taskState_1qxrh_1`,leftContainer:`_leftContainer_1qxrh_8`,rightContainer:`_rightContainer_1qxrh_16`,statusLine:`_statusLine_1qxrh_22`,countText:`_countText_1qxrh_30`},readableTimeTextProps={as:`span`,variant:`bodySmall`,color:`textOnLightSecondary`},TASK_STATE_ICONS={[TaskStatus.REJECTED]:jsx(XMarkCircle,{color:bpWatermelonRed125,height:24,width:24}),[TaskStatus.COMPLETED]:jsx(CheckmarkCircle,{color:bpGreenLight125,height:24,width:24}),[TaskStatus.APPROVED]:jsx(CheckmarkCircle,{color:bpGreenLight125,height:24,width:24})};function TaskState({completedAt,showCount=!0,totalCount,variant}){let intl=useIntl();if(variant!==TaskStatus.COMPLETED&&variant!==TaskStatus.APPROVED&&variant!==TaskStatus.REJECTED)return null;let icon=TASK_STATE_ICONS[variant],shouldShowCount=showCount&&totalCount>0&&variant!==TaskStatus.REJECTED,headlineMessage;switch(variant){case TaskStatus.APPROVED:headlineMessage=messages.approvedHeadline;break;case TaskStatus.COMPLETED:headlineMessage=messages.completedHeadline;break;case TaskStatus.REJECTED:headlineMessage=messages.rejectedHeadline;break}let statusLine=jsxs(Fragment,{children:[jsx(Text,{as:`span`,color:`textOnLightDefault`,variant:`bodyDefaultBold`,children:intl.formatMessage(headlineMessage)}),shouldShowCount&&jsx(Text,{as:`span`,className:TaskState_module_default.countText,color:`textOnLightSecondary`,variant:`bodyDefault`,children:intl.formatMessage(messages.completedCountParenthetical,{completedCount:totalCount,totalCount})})]});return jsxs(`div`,{className:TaskState_module_default.taskState,children:[jsx(`div`,{className:TaskState_module_default.leftContainer,children:icon}),jsxs(`div`,{className:TaskState_module_default.rightContainer,children:[jsx(`div`,{className:TaskState_module_default.statusLine,children:statusLine}),jsx(ReadableTime,{textProps:readableTimeTextProps,timestamp:completedAt})]})]})}export{TaskState as t};
|
|
@@ -1,33 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { useListScrollState as t } from "../esm/lib/components/activity-feed-list/use-list-scroll-state.js";
|
|
3
|
-
import { Children as n, isValidElement as r } from "react";
|
|
4
|
-
import i from "clsx";
|
|
5
|
-
import { jsx as a } from "react/jsx-runtime";
|
|
6
|
-
import '../styles/activity-feed-list.css';var o = {
|
|
7
|
-
emptyStateWrapper: "_emptyStateWrapper_1yzxf_1",
|
|
8
|
-
list: "_list_1yzxf_8",
|
|
9
|
-
fadeTop: "_fadeTop_1yzxf_19",
|
|
10
|
-
fadeBottom: "_fadeBottom_1yzxf_19"
|
|
11
|
-
}, s = ({ children: s }) => {
|
|
12
|
-
let { isAtBottom: c, isAtTop: l, setContainer: u } = t();
|
|
13
|
-
return n.toArray(s).length === 0 ? /* @__PURE__ */ a("div", {
|
|
14
|
-
className: o.emptyStateWrapper,
|
|
15
|
-
children: /* @__PURE__ */ a(e, {})
|
|
16
|
-
}) : /* @__PURE__ */ a("ul", {
|
|
17
|
-
ref: u,
|
|
18
|
-
className: i(o.list, {
|
|
19
|
-
[o.fadeBottom]: !c,
|
|
20
|
-
[o.fadeTop]: !l
|
|
21
|
-
}),
|
|
22
|
-
"data-testid": "activity-feed-list",
|
|
23
|
-
children: n.map(s, (e, t) => {
|
|
24
|
-
if (!/*#__PURE__*/ r(e)) return /* @__PURE__ */ a("li", { children: e }, `activity-feed-row-${t}`);
|
|
25
|
-
let n = e.key == null ? void 0 : String(e.key), i = n ?? `activity-feed-row-${t}`;
|
|
26
|
-
return /* @__PURE__ */ a("li", {
|
|
27
|
-
"data-activity-id": n,
|
|
28
|
-
children: e
|
|
29
|
-
}, i);
|
|
30
|
-
})
|
|
31
|
-
});
|
|
32
|
-
};
|
|
33
|
-
export { s as t };
|
|
1
|
+
import{t as EmptyState}from"./empty-state.js";import{useListScrollState}from"../esm/lib/components/activity-feed-list/use-list-scroll-state.js";import{Children,isValidElement}from"react";import clsx from"clsx";import{jsx}from"react/jsx-runtime";import '../styles/activity-feed-list.css';var activity_feed_list_module_default={emptyStateWrapper:`_emptyStateWrapper_1yzxf_1`,list:`_list_1yzxf_8`,fadeTop:`_fadeTop_1yzxf_19`,fadeBottom:`_fadeBottom_1yzxf_19`},ActivityFeedList=({children})=>{let{isAtBottom,isAtTop,setContainer}=useListScrollState();return Children.toArray(children).length===0?jsx(`div`,{className:activity_feed_list_module_default.emptyStateWrapper,children:jsx(EmptyState,{})}):jsx(`ul`,{ref:setContainer,className:clsx(activity_feed_list_module_default.list,{[activity_feed_list_module_default.fadeBottom]:!isAtBottom,[activity_feed_list_module_default.fadeTop]:!isAtTop}),"data-testid":`activity-feed-list`,children:Children.map(children,(child,index)=>{if(!isValidElement(child))return jsx(`li`,{children:child},`activity-feed-row-${index}`);let activityId=child.key==null?void 0:String(child.key),liKey=activityId??`activity-feed-row-${index}`;return jsx(`li`,{"data-activity-id":activityId,children:child},liKey)})})};export{ActivityFeedList as t};
|
|
@@ -1,46 +1 @@
|
|
|
1
|
-
import { t as
|
|
2
|
-
import { t } from "./app-activity-item.js";
|
|
3
|
-
import { t as n } from "./editor.js";
|
|
4
|
-
import { t as r } from "./header.js";
|
|
5
|
-
import { TaskItem as i } from "../esm/lib/components/task-item/TaskItem.js";
|
|
6
|
-
import { VersionItem as a } from "../esm/lib/components/version-item/version-item.js";
|
|
7
|
-
import { createActivityFeedScroll as o } from "../esm/lib/scroll/create-activity-feed-scroll.js";
|
|
8
|
-
import { t as s } from "./scroll.js";
|
|
9
|
-
import { useActivityFeedScroll as c } from "../esm/lib/scroll/use-activity-feed-scroll.js";
|
|
10
|
-
import { useCallback as l, useLayoutEffect as u, useRef as d } from "react";
|
|
11
|
-
import { MentionContextProvider as f, ThreadedAnnotationsV2 as p } from "@box/threaded-annotations";
|
|
12
|
-
import { jsx as m } from "react/jsx-runtime";
|
|
13
|
-
import '../styles/activity-feed.css';var h = { container: "_container_40rcc_1" }, g = ({ children: e, scrollTo: t, mentionContext: n }) => {
|
|
14
|
-
let r = d(null);
|
|
15
|
-
r.current ||= o();
|
|
16
|
-
let i = r.current, a = t != null && s(t) ? t : i;
|
|
17
|
-
typeof process < "u" && process.env.NODE_ENV !== "production" && t != null && !s(t) && console.warn("ActivityFeed.Root: `scrollTo` must be the return value of `useActivityFeedScroll()`. Using an internal handle for container attachment instead.");
|
|
18
|
-
let c = d(a);
|
|
19
|
-
c.current = a;
|
|
20
|
-
let p = d(null), g = l((e) => {
|
|
21
|
-
p.current = e, c.current.attachContainer(e);
|
|
22
|
-
}, []);
|
|
23
|
-
return u(() => {
|
|
24
|
-
c.current.attachContainer(p.current);
|
|
25
|
-
}, [a]), /* @__PURE__ */ m(f, {
|
|
26
|
-
value: n,
|
|
27
|
-
children: /* @__PURE__ */ m("div", {
|
|
28
|
-
className: h.container,
|
|
29
|
-
ref: g,
|
|
30
|
-
children: e
|
|
31
|
-
})
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
|
-
function _(t) {
|
|
35
|
-
return /* @__PURE__ */ m(e, { ...t });
|
|
36
|
-
}
|
|
37
|
-
var v = _;
|
|
38
|
-
v.AppActivity = t, v.Task = i, v.ThreadedAnnotation = p, v.Version = a;
|
|
39
|
-
var y = {
|
|
40
|
-
Editor: n,
|
|
41
|
-
Header: r,
|
|
42
|
-
List: v,
|
|
43
|
-
Root: g,
|
|
44
|
-
useActivityFeedScroll: c
|
|
45
|
-
};
|
|
46
|
-
export { y as t };
|
|
1
|
+
import{t as ActivityFeedList}from"./activity-feed-list.js";import{t as AppActivityItem}from"./app-activity-item.js";import{t as Editor}from"./editor.js";import{t as Header}from"./header.js";import{TaskItem}from"../esm/lib/components/task-item/TaskItem.js";import{VersionItem}from"../esm/lib/components/version-item/version-item.js";import{createActivityFeedScroll}from"../esm/lib/scroll/create-activity-feed-scroll.js";import{t as isAttachableActivityFeedScrollHandle}from"./scroll.js";import{useActivityFeedScroll}from"../esm/lib/scroll/use-activity-feed-scroll.js";import{useCallback,useLayoutEffect,useRef}from"react";import{MentionContextProvider,ThreadedAnnotationsV2}from"@box/threaded-annotations";import{jsx}from"react/jsx-runtime";import '../styles/activity-feed.css';var activity_feed_module_default={container:`_container_40rcc_1`},ActivityFeedRoot=({children,scrollTo:scrollToProp,mentionContext})=>{let fallbackScrollRef=useRef(null);fallbackScrollRef.current||=createActivityFeedScroll();let fallbackScroll=fallbackScrollRef.current,resolvedScroll=scrollToProp!=null&&isAttachableActivityFeedScrollHandle(scrollToProp)?scrollToProp:fallbackScroll;typeof process<`u`&&process.env.NODE_ENV!==`production`&&scrollToProp!=null&&!isAttachableActivityFeedScrollHandle(scrollToProp)&&console.warn("ActivityFeed.Root: `scrollTo` must be the return value of `useActivityFeedScroll()`. Using an internal handle for container attachment instead.");let resolvedScrollRef=useRef(resolvedScroll);resolvedScrollRef.current=resolvedScroll;let containerRef=useRef(null),setContainerRef=useCallback(node=>{containerRef.current=node,resolvedScrollRef.current.attachContainer(node)},[]);return useLayoutEffect(()=>{resolvedScrollRef.current.attachContainer(containerRef.current)},[resolvedScroll]),jsx(MentionContextProvider,{value:mentionContext,children:jsx(`div`,{className:activity_feed_module_default.container,ref:setContainerRef,children})})};function ActivityFeedListRoot(props){return jsx(ActivityFeedList,{...props})}var List=ActivityFeedListRoot;List.AppActivity=AppActivityItem,List.Task=TaskItem,List.ThreadedAnnotation=ThreadedAnnotationsV2,List.Version=VersionItem;var ActivityFeed={Editor,Header,List,Root:ActivityFeedRoot,useActivityFeedScroll};export{ActivityFeed as t};
|
|
@@ -1,75 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { createElement as t, useMemo as n } from "react";
|
|
3
|
-
import { Avatar as r, Link as i, Text as a } from "@box/blueprint-web";
|
|
4
|
-
import { useIntl as o } from "react-intl";
|
|
5
|
-
import { jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
6
|
-
import { ReadableTime as l } from "@box/readable-time";
|
|
7
|
-
import '../styles/app-activity-item.css';var u = {
|
|
8
|
-
appActivityItem: "_appActivityItem_zi9kh_1",
|
|
9
|
-
message: "_message_zi9kh_10",
|
|
10
|
-
activityLink: "_activityLink_zi9kh_14"
|
|
11
|
-
}, d = (e) => {
|
|
12
|
-
try {
|
|
13
|
-
let n = new DOMParser().parseFromString(e, "text/html");
|
|
14
|
-
return Array.from(n.body.childNodes).map((e, n) => {
|
|
15
|
-
if (e.nodeType === Node.ELEMENT_NODE) {
|
|
16
|
-
let r = e;
|
|
17
|
-
if (r.nodeName === "A") {
|
|
18
|
-
let e = r;
|
|
19
|
-
return /* @__PURE__ */ t(i, {
|
|
20
|
-
...Object.fromEntries([...e.attributes].filter((e) => e.name.startsWith("data-")).map((e) => [e.name, e.value])),
|
|
21
|
-
className: u.activityLink,
|
|
22
|
-
href: e.href,
|
|
23
|
-
key: n,
|
|
24
|
-
rel: "noreferrer noopener",
|
|
25
|
-
target: "_blank"
|
|
26
|
-
}, e.textContent);
|
|
27
|
-
}
|
|
28
|
-
return /*#__PURE__*/ t(r.tagName.toLowerCase(), { key: n }, r.textContent);
|
|
29
|
-
}
|
|
30
|
-
return e.textContent;
|
|
31
|
-
});
|
|
32
|
-
} catch {
|
|
33
|
-
return [e];
|
|
34
|
-
}
|
|
35
|
-
}, f = ({ appIconUrl: t, appName: i, createdAt: f, id: p, renderedText: m }) => {
|
|
36
|
-
let { formatMessage: h } = o(), g = parseInt(p, 10), _ = Number.isNaN(g) ? 0 : g % 10, v = n(() => d(m), [m]);
|
|
37
|
-
return /* @__PURE__ */ c("div", {
|
|
38
|
-
className: u.appActivityItem,
|
|
39
|
-
children: [/* @__PURE__ */ s(r, {
|
|
40
|
-
alt: i,
|
|
41
|
-
colorIndex: _,
|
|
42
|
-
size: "medium",
|
|
43
|
-
src: t,
|
|
44
|
-
text: i.charAt(0)
|
|
45
|
-
}), /* @__PURE__ */ s(a, {
|
|
46
|
-
as: "span",
|
|
47
|
-
className: u.message,
|
|
48
|
-
color: "textOnLightSecondary",
|
|
49
|
-
variant: "bodyDefault",
|
|
50
|
-
children: h(e.activityItemText, {
|
|
51
|
-
appName: /* @__PURE__ */ s(a, {
|
|
52
|
-
as: "span",
|
|
53
|
-
color: "textOnLightSecondary",
|
|
54
|
-
variant: "bodyDefaultSemibold",
|
|
55
|
-
children: i
|
|
56
|
-
}),
|
|
57
|
-
parsedContent: /* @__PURE__ */ s(a, {
|
|
58
|
-
as: "span",
|
|
59
|
-
color: "textOnLightSecondary",
|
|
60
|
-
variant: "bodyDefault",
|
|
61
|
-
children: v
|
|
62
|
-
}),
|
|
63
|
-
timestamp: /* @__PURE__ */ s(l, {
|
|
64
|
-
textProps: {
|
|
65
|
-
as: "span",
|
|
66
|
-
color: "textOnLightSecondary",
|
|
67
|
-
variant: "bodyDefault"
|
|
68
|
-
},
|
|
69
|
-
timestamp: f
|
|
70
|
-
})
|
|
71
|
-
})
|
|
72
|
-
})]
|
|
73
|
-
});
|
|
74
|
-
};
|
|
75
|
-
export { f as t };
|
|
1
|
+
import{messages}from"../esm/lib/components/app-activity-item/messages.js";import{createElement,useMemo}from"react";import{Avatar,Link,Text}from"@box/blueprint-web";import{useIntl}from"react-intl";import{jsx,jsxs}from"react/jsx-runtime";import{ReadableTime}from"@box/readable-time";import '../styles/app-activity-item.css';var app_activity_item_module_default={appActivityItem:`_appActivityItem_zi9kh_1`,message:`_message_zi9kh_10`,activityLink:`_activityLink_zi9kh_14`},parseRenderedText=html=>{try{let doc=new DOMParser().parseFromString(html,`text/html`);return Array.from(doc.body.childNodes).map((node,index)=>{if(node.nodeType===Node.ELEMENT_NODE){let element=node;if(element.nodeName===`A`){let anchor=element;return createElement(Link,{...Object.fromEntries([...anchor.attributes].filter(a=>a.name.startsWith(`data-`)).map(a=>[a.name,a.value])),className:app_activity_item_module_default.activityLink,href:anchor.href,key:index,rel:`noreferrer noopener`,target:`_blank`},anchor.textContent)}return createElement(element.tagName.toLowerCase(),{key:index},element.textContent)}return node.textContent})}catch{return[html]}},AppActivityItem=({appIconUrl,appName,createdAt,id,renderedText})=>{let{formatMessage}=useIntl(),numericId=parseInt(id,10),colorIndex=Number.isNaN(numericId)?0:numericId%10,parsedContent=useMemo(()=>parseRenderedText(renderedText),[renderedText]);return jsxs(`div`,{className:app_activity_item_module_default.appActivityItem,children:[jsx(Avatar,{alt:appName,colorIndex,size:`medium`,src:appIconUrl,text:appName.charAt(0)}),jsx(Text,{as:`span`,className:app_activity_item_module_default.message,color:`textOnLightSecondary`,variant:`bodyDefault`,children:formatMessage(messages.activityItemText,{appName:jsx(Text,{as:`span`,color:`textOnLightSecondary`,variant:`bodyDefaultSemibold`,children:appName}),parsedContent:jsx(Text,{as:`span`,color:`textOnLightSecondary`,variant:`bodyDefault`,children:parsedContent}),timestamp:jsx(ReadableTime,{textProps:{as:`span`,color:`textOnLightSecondary`,variant:`bodyDefault`},timestamp:createdAt})})})]})};export{AppActivityItem as t};
|
package/dist/chunks/editor.js
CHANGED
|
@@ -1,16 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { jsx as t } from "react/jsx-runtime";
|
|
3
|
-
import '../styles/editor.css';var n = { editorWrapper: "_editorWrapper_1ye9q_1" }, r = ({ disableComponent: r, maxCharacterCount: i, onPost: a, onPostError: o, onPostSuccess: s, userSelectorProps: c, videoTimestamp: l }) => /* @__PURE__ */ t("div", {
|
|
4
|
-
className: n.editorWrapper,
|
|
5
|
-
children: /* @__PURE__ */ t(e, {
|
|
6
|
-
disableComponent: r,
|
|
7
|
-
isFirstAnnotation: !1,
|
|
8
|
-
maxCharacterCount: i,
|
|
9
|
-
onPost: a,
|
|
10
|
-
onPostError: o,
|
|
11
|
-
onPostSuccess: s,
|
|
12
|
-
userSelectorProps: c,
|
|
13
|
-
videoTimestamp: l
|
|
14
|
-
})
|
|
15
|
-
});
|
|
16
|
-
export { r as t };
|
|
1
|
+
import{MessageEditorV2}from"@box/threaded-annotations";import{jsx}from"react/jsx-runtime";import '../styles/editor.css';var editor_module_default={editorWrapper:`_editorWrapper_1ye9q_1`},Editor=({disableComponent,maxCharacterCount,onPost,onPostError,onPostSuccess,userSelectorProps,videoTimestamp})=>jsx(`div`,{className:editor_module_default.editorWrapper,children:jsx(MessageEditorV2,{disableComponent,isFirstAnnotation:!1,maxCharacterCount,onPost,onPostError,onPostSuccess,userSelectorProps,videoTimestamp})});export{Editor as t};
|