@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.
Files changed (69) hide show
  1. package/dist/chunks/AssigneeList.js +1 -124
  2. package/dist/chunks/TaskDueDate.js +1 -44
  3. package/dist/chunks/TaskItemFooter.js +1 -77
  4. package/dist/chunks/TaskMessage.js +1 -88
  5. package/dist/chunks/TaskState.js +1 -83
  6. package/dist/chunks/activity-feed-list.js +1 -33
  7. package/dist/chunks/activity-feed.js +1 -46
  8. package/dist/chunks/app-activity-item.js +1 -75
  9. package/dist/chunks/editor.js +1 -16
  10. package/dist/chunks/empty-state.js +1 -30
  11. package/dist/chunks/header.js +1 -72
  12. package/dist/chunks/scroll.js +1 -6
  13. package/dist/chunks/task-button.js +1 -49
  14. package/dist/chunks/task-delete-confirmation-popover.js +1 -57
  15. package/dist/chunks/task-options-menu.js +1 -81
  16. package/dist/chunks/types.js +1 -8
  17. package/dist/chunks/version-item.module.js +1 -10
  18. package/dist/esm/index.js +1 -10
  19. package/dist/esm/lib/activity-feed.js +1 -6
  20. package/dist/esm/lib/components/activity-feed-list/activity-feed-list.js +1 -2
  21. package/dist/esm/lib/components/activity-feed-list/index.js +1 -2
  22. package/dist/esm/lib/components/activity-feed-list/use-list-scroll-state.js +1 -33
  23. package/dist/esm/lib/components/app-activity-item/app-activity-item.js +1 -2
  24. package/dist/esm/lib/components/app-activity-item/index.js +1 -2
  25. package/dist/esm/lib/components/app-activity-item/messages.js +1 -6
  26. package/dist/esm/lib/components/editor/editor.js +1 -2
  27. package/dist/esm/lib/components/editor/index.js +1 -2
  28. package/dist/esm/lib/components/empty-state/empty-state.js +1 -2
  29. package/dist/esm/lib/components/empty-state/index.js +1 -2
  30. package/dist/esm/lib/components/empty-state/messages.js +1 -12
  31. package/dist/esm/lib/components/header/header-filter-options.js +1 -34
  32. package/dist/esm/lib/components/header/header.js +1 -2
  33. package/dist/esm/lib/components/header/messages.js +1 -44
  34. package/dist/esm/lib/components/header/task-button/index.js +1 -2
  35. package/dist/esm/lib/components/header/task-button/messages.js +1 -24
  36. package/dist/esm/lib/components/header/task-button/task-button.js +1 -2
  37. package/dist/esm/lib/components/task-item/TaskItem.js +1 -92
  38. package/dist/esm/lib/components/task-item/TaskItemFooter.js +1 -2
  39. package/dist/esm/lib/components/task-item/components/assignee-list/AssigneeList.js +1 -2
  40. package/dist/esm/lib/components/task-item/components/assignee-list/index.js +1 -2
  41. package/dist/esm/lib/components/task-item/components/task-due-date/TaskDueDate.js +1 -2
  42. package/dist/esm/lib/components/task-item/components/task-due-date/index.js +1 -2
  43. package/dist/esm/lib/components/task-item/components/task-message/MessageRenderer.js +1 -21
  44. package/dist/esm/lib/components/task-item/components/task-message/TaskMessage.js +1 -2
  45. package/dist/esm/lib/components/task-item/components/task-message/index.js +1 -2
  46. package/dist/esm/lib/components/task-item/components/task-message/messages.js +1 -28
  47. package/dist/esm/lib/components/task-item/components/task-message/task-delete-confirmation-popover.js +1 -2
  48. package/dist/esm/lib/components/task-item/components/task-message/task-options-menu.js +1 -2
  49. package/dist/esm/lib/components/task-item/components/task-state/TaskState.js +1 -2
  50. package/dist/esm/lib/components/task-item/components/task-state/index.js +1 -2
  51. package/dist/esm/lib/components/task-item/components/task-state/messages.js +1 -20
  52. package/dist/esm/lib/components/task-item/index.js +1 -6
  53. package/dist/esm/lib/components/task-item/messages.js +1 -88
  54. package/dist/esm/lib/components/task-item/utils/task-item-helpers.js +2 -22
  55. package/dist/esm/lib/components/user-avatar/getInitials.js +1 -5
  56. package/dist/esm/lib/components/user-avatar/index.js +1 -2
  57. package/dist/esm/lib/components/user-avatar/user-avatar.js +1 -22
  58. package/dist/esm/lib/components/version-item/delete-version-item/delete-version-item.js +1 -41
  59. package/dist/esm/lib/components/version-item/delete-version-item/index.js +1 -2
  60. package/dist/esm/lib/components/version-item/divider-version-item/divider-version-item.js +1 -20
  61. package/dist/esm/lib/components/version-item/divider-version-item/index.js +1 -2
  62. package/dist/esm/lib/components/version-item/index.js +1 -2
  63. package/dist/esm/lib/components/version-item/messages.js +1 -36
  64. package/dist/esm/lib/components/version-item/version-item.js +1 -54
  65. package/dist/esm/lib/resin-targets.js +1 -20
  66. package/dist/esm/lib/scroll/create-activity-feed-scroll.js +1 -21
  67. package/dist/esm/lib/scroll/index.js +1 -4
  68. package/dist/esm/lib/scroll/use-activity-feed-scroll.js +1 -7
  69. package/package.json +15 -15
@@ -1,124 +1 @@
1
- import { n as e } from "./types.js";
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 e from "../esm/lib/components/task-item/messages.js";
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 { ACTIVITY_FEED_RESIN_TARGETS as e } from "../esm/lib/resin-targets.js";
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 { MessageRenderer as e } from "../esm/lib/components/task-item/components/task-message/MessageRenderer.js";
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};
@@ -1,83 +1 @@
1
- import { n as e } from "./types.js";
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 { t as e } from "./empty-state.js";
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 e } from "./activity-feed-list.js";
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 { messages as e } from "../esm/lib/components/app-activity-item/messages.js";
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};
@@ -1,16 +1 @@
1
- import { MessageEditorV2 as e } from "@box/threaded-annotations";
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};