@multiplatform.one/frappe-ui 7.22.0 → 7.23.1

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 (222) hide show
  1. package/README.md +14 -0
  2. package/dist/cjs/FrappeForm.cjs +96 -52
  3. package/dist/cjs/FrappeForm.native.js +103 -52
  4. package/dist/cjs/FrappeForm.native.js.map +1 -1
  5. package/dist/cjs/FrappeFormActions.cjs +161 -0
  6. package/dist/cjs/FrappeFormActions.native.js +167 -0
  7. package/dist/cjs/FrappeFormActions.native.js.map +1 -0
  8. package/dist/cjs/FrappeTable.cjs +42 -13
  9. package/dist/cjs/FrappeTable.native.js +55 -19
  10. package/dist/cjs/FrappeTable.native.js.map +1 -1
  11. package/dist/cjs/desk/DeskFormPage.cjs +2 -1
  12. package/dist/cjs/desk/DeskFormPage.native.js +3 -0
  13. package/dist/cjs/desk/DeskFormPage.native.js.map +1 -1
  14. package/dist/cjs/filterFields.cjs +277 -34
  15. package/dist/cjs/filterFields.native.js +311 -36
  16. package/dist/cjs/filterFields.native.js.map +1 -1
  17. package/dist/cjs/formEngine/docLifecycle.cjs +98 -0
  18. package/dist/cjs/formEngine/docLifecycle.native.js +131 -0
  19. package/dist/cjs/formEngine/docLifecycle.native.js.map +1 -0
  20. package/dist/cjs/formEngine/useAmendedAs.cjs +48 -0
  21. package/dist/cjs/formEngine/useAmendedAs.native.js +60 -0
  22. package/dist/cjs/formEngine/useAmendedAs.native.js.map +1 -0
  23. package/dist/cjs/formEngine/useDocRights.cjs +2 -2
  24. package/dist/cjs/formEngine/useDocRights.native.js +2 -2
  25. package/dist/cjs/formEngine/useDocRights.native.js.map +1 -1
  26. package/dist/cjs/formEngine/useFormEngine.cjs +1 -0
  27. package/dist/cjs/formEngine/useFormEngine.native.js +1 -0
  28. package/dist/cjs/formEngine/useFormEngine.native.js.map +1 -1
  29. package/dist/cjs/index.cjs +30 -1
  30. package/dist/cjs/index.native.js +30 -1
  31. package/dist/cjs/index.native.js.map +1 -1
  32. package/dist/cjs/list/listColumns.cjs +397 -0
  33. package/dist/cjs/list/listColumns.native.js +447 -0
  34. package/dist/cjs/list/listColumns.native.js.map +1 -0
  35. package/dist/cjs/list/listFields.cjs +50 -0
  36. package/dist/cjs/list/listFields.native.js +79 -0
  37. package/dist/cjs/list/listFields.native.js.map +1 -0
  38. package/dist/cjs/list/listFormat.cjs +68 -0
  39. package/dist/cjs/list/listFormat.native.js +74 -0
  40. package/dist/cjs/list/listFormat.native.js.map +1 -0
  41. package/dist/cjs/list/statusColors.cjs +102 -0
  42. package/dist/cjs/list/statusColors.native.js +109 -0
  43. package/dist/cjs/list/statusColors.native.js.map +1 -0
  44. package/dist/cjs/useFrappeAggregate.cjs +1 -1
  45. package/dist/cjs/useFrappeAggregate.native.js +1 -1
  46. package/dist/cjs/useFrappeAggregate.native.js.map +1 -1
  47. package/dist/esm/FrappeForm.mjs +97 -53
  48. package/dist/esm/FrappeForm.mjs.map +1 -1
  49. package/dist/esm/FrappeForm.native.js +104 -53
  50. package/dist/esm/FrappeForm.native.js.map +1 -1
  51. package/dist/esm/FrappeFormActions.mjs +136 -0
  52. package/dist/esm/FrappeFormActions.mjs.map +1 -0
  53. package/dist/esm/FrappeFormActions.native.js +139 -0
  54. package/dist/esm/FrappeFormActions.native.js.map +1 -0
  55. package/dist/esm/FrappeTable.mjs +42 -13
  56. package/dist/esm/FrappeTable.mjs.map +1 -1
  57. package/dist/esm/FrappeTable.native.js +55 -19
  58. package/dist/esm/FrappeTable.native.js.map +1 -1
  59. package/dist/esm/desk/DeskFormPage.mjs +2 -1
  60. package/dist/esm/desk/DeskFormPage.mjs.map +1 -1
  61. package/dist/esm/desk/DeskFormPage.native.js +3 -0
  62. package/dist/esm/desk/DeskFormPage.native.js.map +1 -1
  63. package/dist/esm/filterFields.mjs +263 -34
  64. package/dist/esm/filterFields.mjs.map +1 -1
  65. package/dist/esm/filterFields.native.js +297 -36
  66. package/dist/esm/filterFields.native.js.map +1 -1
  67. package/dist/esm/formEngine/docLifecycle.mjs +68 -0
  68. package/dist/esm/formEngine/docLifecycle.mjs.map +1 -0
  69. package/dist/esm/formEngine/docLifecycle.native.js +98 -0
  70. package/dist/esm/formEngine/docLifecycle.native.js.map +1 -0
  71. package/dist/esm/formEngine/useAmendedAs.mjs +23 -0
  72. package/dist/esm/formEngine/useAmendedAs.mjs.map +1 -0
  73. package/dist/esm/formEngine/useAmendedAs.native.js +32 -0
  74. package/dist/esm/formEngine/useAmendedAs.native.js.map +1 -0
  75. package/dist/esm/formEngine/useDocRights.mjs +2 -2
  76. package/dist/esm/formEngine/useDocRights.mjs.map +1 -1
  77. package/dist/esm/formEngine/useDocRights.native.js +2 -2
  78. package/dist/esm/formEngine/useDocRights.native.js.map +1 -1
  79. package/dist/esm/formEngine/useFormEngine.mjs +1 -1
  80. package/dist/esm/formEngine/useFormEngine.mjs.map +1 -1
  81. package/dist/esm/formEngine/useFormEngine.native.js +1 -1
  82. package/dist/esm/formEngine/useFormEngine.native.js.map +1 -1
  83. package/dist/esm/index.mjs +6 -2
  84. package/dist/esm/index.mjs.map +1 -1
  85. package/dist/esm/index.native.js +6 -2
  86. package/dist/esm/index.native.js.map +1 -1
  87. package/dist/esm/list/listColumns.mjs +372 -0
  88. package/dist/esm/list/listColumns.mjs.map +1 -0
  89. package/dist/esm/list/listColumns.native.js +419 -0
  90. package/dist/esm/list/listColumns.native.js.map +1 -0
  91. package/dist/esm/list/listFields.mjs +23 -0
  92. package/dist/esm/list/listFields.mjs.map +1 -0
  93. package/dist/esm/list/listFields.native.js +49 -0
  94. package/dist/esm/list/listFields.native.js.map +1 -0
  95. package/dist/esm/list/listFormat.mjs +38 -0
  96. package/dist/esm/list/listFormat.mjs.map +1 -0
  97. package/dist/esm/list/listFormat.native.js +41 -0
  98. package/dist/esm/list/listFormat.native.js.map +1 -0
  99. package/dist/esm/list/statusColors.mjs +77 -0
  100. package/dist/esm/list/statusColors.mjs.map +1 -0
  101. package/dist/esm/list/statusColors.native.js +81 -0
  102. package/dist/esm/list/statusColors.native.js.map +1 -0
  103. package/dist/esm/useFrappeAggregate.mjs +1 -1
  104. package/dist/esm/useFrappeAggregate.mjs.map +1 -1
  105. package/dist/esm/useFrappeAggregate.native.js +1 -1
  106. package/dist/esm/useFrappeAggregate.native.js.map +1 -1
  107. package/dist/jsx/FrappeForm.mjs +97 -53
  108. package/dist/jsx/FrappeForm.mjs.map +1 -1
  109. package/dist/jsx/FrappeForm.native.js +103 -52
  110. package/dist/jsx/FrappeForm.native.js.map +1 -1
  111. package/dist/jsx/FrappeFormActions.mjs +136 -0
  112. package/dist/jsx/FrappeFormActions.mjs.map +1 -0
  113. package/dist/jsx/FrappeFormActions.native.js +167 -0
  114. package/dist/jsx/FrappeFormActions.native.js.map +1 -0
  115. package/dist/jsx/FrappeTable.mjs +42 -13
  116. package/dist/jsx/FrappeTable.mjs.map +1 -1
  117. package/dist/jsx/FrappeTable.native.js +55 -19
  118. package/dist/jsx/FrappeTable.native.js.map +1 -1
  119. package/dist/jsx/desk/DeskFormPage.mjs +2 -1
  120. package/dist/jsx/desk/DeskFormPage.mjs.map +1 -1
  121. package/dist/jsx/desk/DeskFormPage.native.js +3 -0
  122. package/dist/jsx/desk/DeskFormPage.native.js.map +1 -1
  123. package/dist/jsx/filterFields.mjs +263 -34
  124. package/dist/jsx/filterFields.mjs.map +1 -1
  125. package/dist/jsx/filterFields.native.js +311 -36
  126. package/dist/jsx/filterFields.native.js.map +1 -1
  127. package/dist/jsx/formEngine/docLifecycle.mjs +68 -0
  128. package/dist/jsx/formEngine/docLifecycle.mjs.map +1 -0
  129. package/dist/jsx/formEngine/docLifecycle.native.js +131 -0
  130. package/dist/jsx/formEngine/docLifecycle.native.js.map +1 -0
  131. package/dist/jsx/formEngine/useAmendedAs.mjs +23 -0
  132. package/dist/jsx/formEngine/useAmendedAs.mjs.map +1 -0
  133. package/dist/jsx/formEngine/useAmendedAs.native.js +60 -0
  134. package/dist/jsx/formEngine/useAmendedAs.native.js.map +1 -0
  135. package/dist/jsx/formEngine/useDocRights.mjs +2 -2
  136. package/dist/jsx/formEngine/useDocRights.mjs.map +1 -1
  137. package/dist/jsx/formEngine/useDocRights.native.js +2 -2
  138. package/dist/jsx/formEngine/useDocRights.native.js.map +1 -1
  139. package/dist/jsx/formEngine/useFormEngine.mjs +1 -1
  140. package/dist/jsx/formEngine/useFormEngine.mjs.map +1 -1
  141. package/dist/jsx/formEngine/useFormEngine.native.js +1 -0
  142. package/dist/jsx/formEngine/useFormEngine.native.js.map +1 -1
  143. package/dist/jsx/index.js +6 -2
  144. package/dist/jsx/index.js.map +1 -1
  145. package/dist/jsx/index.mjs +6 -2
  146. package/dist/jsx/index.mjs.map +1 -1
  147. package/dist/jsx/index.native.js +30 -1
  148. package/dist/jsx/index.native.js.map +1 -1
  149. package/dist/jsx/list/listColumns.mjs +372 -0
  150. package/dist/jsx/list/listColumns.mjs.map +1 -0
  151. package/dist/jsx/list/listColumns.native.js +447 -0
  152. package/dist/jsx/list/listColumns.native.js.map +1 -0
  153. package/dist/jsx/list/listFields.mjs +23 -0
  154. package/dist/jsx/list/listFields.mjs.map +1 -0
  155. package/dist/jsx/list/listFields.native.js +79 -0
  156. package/dist/jsx/list/listFields.native.js.map +1 -0
  157. package/dist/jsx/list/listFormat.mjs +38 -0
  158. package/dist/jsx/list/listFormat.mjs.map +1 -0
  159. package/dist/jsx/list/listFormat.native.js +74 -0
  160. package/dist/jsx/list/listFormat.native.js.map +1 -0
  161. package/dist/jsx/list/statusColors.mjs +77 -0
  162. package/dist/jsx/list/statusColors.mjs.map +1 -0
  163. package/dist/jsx/list/statusColors.native.js +109 -0
  164. package/dist/jsx/list/statusColors.native.js.map +1 -0
  165. package/dist/jsx/useFrappeAggregate.mjs +1 -1
  166. package/dist/jsx/useFrappeAggregate.mjs.map +1 -1
  167. package/dist/jsx/useFrappeAggregate.native.js +1 -1
  168. package/dist/jsx/useFrappeAggregate.native.js.map +1 -1
  169. package/package.json +22 -16
  170. package/src/FrappeForm.deskSemantics.spec.tsx +1 -1
  171. package/src/FrappeForm.lifecycle.spec.tsx +463 -0
  172. package/src/FrappeForm.lifecycle.stories.tsx +84 -0
  173. package/src/FrappeForm.tsx +124 -84
  174. package/src/FrappeFormActions.tsx +216 -0
  175. package/src/FrappeTable.defaultColumns.spec.tsx +229 -0
  176. package/src/FrappeTable.tsx +79 -32
  177. package/src/desk/DeskFormPage.tsx +1 -0
  178. package/src/filterFields.spec.ts +57 -2
  179. package/src/filterFields.ts +365 -38
  180. package/src/formEngine/docLifecycle.spec.ts +195 -0
  181. package/src/formEngine/docLifecycle.ts +148 -0
  182. package/src/formEngine/useAmendedAs.ts +38 -0
  183. package/src/formEngine/useDocRights.ts +11 -3
  184. package/src/formEngine/useFormEngine.ts +1 -1
  185. package/src/frappeViews.designLaw.spec.ts +6 -0
  186. package/src/index.ts +47 -1
  187. package/src/list/listColumns.tsx +488 -0
  188. package/src/list/listFields.spec.ts +147 -0
  189. package/src/list/listFields.ts +68 -0
  190. package/src/list/listFormat.spec.ts +151 -0
  191. package/src/list/listFormat.ts +80 -0
  192. package/src/list/seam.spec.ts +116 -0
  193. package/src/list/statusColors.spec.ts +100 -0
  194. package/src/list/statusColors.ts +94 -0
  195. package/src/useFrappeAggregate.ts +1 -1
  196. package/types/FrappeForm.d.ts +13 -3
  197. package/types/FrappeForm.d.ts.map +1 -1
  198. package/types/FrappeFormActions.d.ts +36 -0
  199. package/types/FrappeFormActions.d.ts.map +1 -0
  200. package/types/FrappeTable.d.ts +11 -5
  201. package/types/FrappeTable.d.ts.map +1 -1
  202. package/types/desk/DeskFormPage.d.ts.map +1 -1
  203. package/types/filterFields.d.ts +81 -10
  204. package/types/filterFields.d.ts.map +1 -1
  205. package/types/formEngine/docLifecycle.d.ts +59 -0
  206. package/types/formEngine/docLifecycle.d.ts.map +1 -0
  207. package/types/formEngine/useAmendedAs.d.ts +9 -0
  208. package/types/formEngine/useAmendedAs.d.ts.map +1 -0
  209. package/types/formEngine/useDocRights.d.ts +1 -1
  210. package/types/formEngine/useDocRights.d.ts.map +1 -1
  211. package/types/formEngine/useFormEngine.d.ts +1 -0
  212. package/types/formEngine/useFormEngine.d.ts.map +1 -1
  213. package/types/index.d.ts +5 -1
  214. package/types/index.d.ts.map +1 -1
  215. package/types/list/listColumns.d.ts +41 -0
  216. package/types/list/listColumns.d.ts.map +1 -0
  217. package/types/list/listFields.d.ts +16 -0
  218. package/types/list/listFields.d.ts.map +1 -0
  219. package/types/list/listFormat.d.ts +30 -0
  220. package/types/list/listFormat.d.ts.map +1 -0
  221. package/types/list/statusColors.d.ts +14 -0
  222. package/types/list/statusColors.d.ts.map +1 -0
@@ -0,0 +1,372 @@
1
+ import { Avatar, Anchor, Chip, Text, XStack } from "@multiplatform.one/components";
2
+ import { Button } from "@multiplatform.one/forms";
3
+ import { ChatCircleIcon, HeartIcon } from "@phosphor-icons/react";
4
+ import { formatAbsoluteDateTime } from "@multiplatform.one/theme";
5
+ import { listViewFields } from "./listFields.mjs";
6
+ import { formatDateCell, formatTimeAgo, parseUserListField, stripHtmlPreview } from "./listFormat.mjs";
7
+ import { statusPillColors } from "./statusColors.mjs";
8
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
9
+ const NUMERIC_FIELDTYPES = /* @__PURE__ */new Set(["Currency", "Float", "Int", "Percent", "Duration"]);
10
+ const RICH_TEXT_FIELDTYPES = /* @__PURE__ */new Set(["Text Editor", "HTML Editor", "HTML", "Markdown Editor", "Long Text", "Text", "Small Text"]);
11
+ function cellPreview(value, fieldtype) {
12
+ const text = fieldtype && RICH_TEXT_FIELDTYPES.has(fieldtype) ? stripHtmlPreview(value) : value;
13
+ return text.replace(/\s+/g, " ").trim();
14
+ }
15
+ function isStatusField(field, meta) {
16
+ if (field.fieldname === "status") return true;
17
+ if (field.fieldtype !== "Select") return false;
18
+ const stateTitles = new Set((meta?.states ?? []).map(state => (state.title ?? "").trim().toLowerCase()));
19
+ if (stateTitles.size === 0) return false;
20
+ const options = (field.options ?? "").split("\n").map(option => option.trim().toLowerCase());
21
+ return options.some(option => option && stateTitles.has(option));
22
+ }
23
+ function isIndicatorField(field, meta) {
24
+ if (field.fieldtype === "Select") return true;
25
+ if (field.fieldtype === "Check" && field.fieldname === "enabled") return true;
26
+ return isStatusField(field, meta);
27
+ }
28
+ function stopRowPress(event) {
29
+ event?.stopPropagation?.();
30
+ }
31
+ function chipColorFromStatus(value, meta) {
32
+ const ramp = statusPillColors(value, meta).background.replace(/^\$/, "").replace(/\d+$/, "");
33
+ if (ramp === "pink") return "purple";
34
+ if (ramp === "red" || ramp === "green" || ramp === "blue" || ramp === "yellow" || ramp === "orange" || ramp === "purple" || ramp === "gray") {
35
+ return ramp;
36
+ }
37
+ return "gray";
38
+ }
39
+ function IndicatorPill({
40
+ value,
41
+ meta,
42
+ fieldname,
43
+ filterValue,
44
+ onFilterClick
45
+ }) {
46
+ const chipColor = chipColorFromStatus(value, meta);
47
+ const applied = filterValue ?? value;
48
+ return /* @__PURE__ */jsx(XStack, {
49
+ alignSelf: "flex-start",
50
+ ...(onFilterClick ? {
51
+ "data-filter": `${fieldname},=,${applied}`,
52
+ onPress: event => stopRowPress(event)
53
+ } : {}),
54
+ children: /* @__PURE__ */jsx(Chip, {
55
+ size: "$2",
56
+ variant: "subtle",
57
+ color: chipColor,
58
+ onPress: onFilterClick ? () => onFilterClick(fieldname, applied) : void 0,
59
+ children: value
60
+ })
61
+ });
62
+ }
63
+ function FilterableText({
64
+ fieldname,
65
+ value,
66
+ children,
67
+ onFilterClick
68
+ }) {
69
+ if (!onFilterClick) return /* @__PURE__ */jsx(Fragment, {
70
+ children
71
+ });
72
+ return /* @__PURE__ */jsx(XStack, {
73
+ role: "button",
74
+ cursor: "pointer",
75
+ minWidth: 0,
76
+ flexShrink: 1,
77
+ onPress: event => {
78
+ stopRowPress(event);
79
+ onFilterClick(fieldname, value);
80
+ },
81
+ hoverStyle: {
82
+ opacity: 0.8
83
+ },
84
+ ...{
85
+ "data-filter": `${fieldname},=,${value}`
86
+ },
87
+ children
88
+ });
89
+ }
90
+ function commentCount(doc) {
91
+ const raw = doc._comment_count;
92
+ if (typeof raw === "number" && Number.isFinite(raw)) return raw;
93
+ if (typeof raw === "string" && raw.trim()) {
94
+ const parsed = Number(raw);
95
+ if (Number.isFinite(parsed)) return parsed;
96
+ }
97
+ const comments = doc._comments;
98
+ if (typeof comments === "string" && comments.trim()) {
99
+ try {
100
+ const parsed = JSON.parse(comments);
101
+ if (Array.isArray(parsed)) return parsed.length;
102
+ } catch {
103
+ return 0;
104
+ }
105
+ }
106
+ return 0;
107
+ }
108
+ function LikeControl({
109
+ doc,
110
+ t,
111
+ sessionUser,
112
+ onToggleLike,
113
+ likeOverrides
114
+ }) {
115
+ const name = doc.name ?? "";
116
+ const likedBy = parseUserListField(doc._liked_by);
117
+ const liked = likeOverrides?.[name] ?? (sessionUser ? likedBy.includes(sessionUser) : false);
118
+ const likeLabel = liked ? t("list.unlike", "Remove from liked") : t("list.like", "Add to liked");
119
+ if (!onToggleLike || !name) {
120
+ return /* @__PURE__ */jsx(Text, {
121
+ fontSize: "$4",
122
+ color: liked ? "$red10" : "$color8",
123
+ role: "img",
124
+ "aria-label": likeLabel,
125
+ children: liked ? "\u2665" : "\u2661"
126
+ });
127
+ }
128
+ return /* @__PURE__ */jsx(Button, {
129
+ circular: true,
130
+ chromeless: true,
131
+ size: "$2",
132
+ col: liked ? "$red10" : "$color8",
133
+ icon: /* @__PURE__ */jsx(HeartIcon, {
134
+ size: 16,
135
+ weight: liked ? "fill" : "regular"
136
+ }),
137
+ "aria-label": likeLabel,
138
+ "aria-pressed": liked,
139
+ onPress: event => {
140
+ stopRowPress(event);
141
+ onToggleLike(name, !liked);
142
+ }
143
+ });
144
+ }
145
+ function ActivityCluster({
146
+ doc,
147
+ t,
148
+ sessionUser,
149
+ onToggleLike,
150
+ likeOverrides
151
+ }) {
152
+ const assignees = parseUserListField(doc._assign);
153
+ const comments = commentCount(doc);
154
+ const modified = doc.modified ? String(doc.modified) : "";
155
+ const absolute = modified ? formatAbsoluteDateTime(modified) : "";
156
+ return /* @__PURE__ */jsxs(XStack, {
157
+ alignItems: "center",
158
+ justifyContent: "flex-end",
159
+ gap: "$2",
160
+ minWidth: 0,
161
+ testID: "list-activity",
162
+ children: [assignees.slice(0, 3).map(user => /* @__PURE__ */jsx(Avatar, {
163
+ name: user,
164
+ size: 20,
165
+ circular: true,
166
+ "aria-label": user
167
+ }, user)), modified ? /* @__PURE__ */jsx(Text, {
168
+ fontSize: "$2",
169
+ color: "$color9",
170
+ ...{
171
+ title: absolute || void 0
172
+ },
173
+ children: formatTimeAgo(modified)
174
+ }) : null, /* @__PURE__ */jsxs(XStack, {
175
+ alignItems: "center",
176
+ gap: "$1",
177
+ ...{
178
+ "aria-label": t("list.comments", "Comments")
179
+ },
180
+ children: [/* @__PURE__ */jsx(ChatCircleIcon, {
181
+ size: 14
182
+ }), /* @__PURE__ */jsx(Text, {
183
+ fontSize: "$2",
184
+ color: "$color9",
185
+ children: comments
186
+ })]
187
+ }), /* @__PURE__ */jsx(LikeControl, {
188
+ doc,
189
+ t,
190
+ sessionUser,
191
+ onToggleLike,
192
+ likeOverrides
193
+ })]
194
+ });
195
+ }
196
+ function fieldCell(field, meta, onFilterClick) {
197
+ return ({
198
+ getValue
199
+ }) => {
200
+ const raw = getValue();
201
+ if (raw === null || raw === void 0 || raw === "") return /* @__PURE__ */jsx(Text, {
202
+ fontSize: "$3",
203
+ color: "$color8",
204
+ children: "\u2014"
205
+ });
206
+ if (field.fieldtype === "Check" && field.fieldname === "enabled") {
207
+ const on = raw === true || raw === 1 || raw === "1";
208
+ return /* @__PURE__ */jsx(IndicatorPill, {
209
+ value: on ? "Active" : "Disabled",
210
+ meta,
211
+ fieldname: field.fieldname,
212
+ filterValue: on ? "1" : "0",
213
+ onFilterClick
214
+ });
215
+ }
216
+ const value = String(raw);
217
+ if (isIndicatorField(field, meta)) {
218
+ return /* @__PURE__ */jsx(IndicatorPill, {
219
+ value,
220
+ meta,
221
+ fieldname: field.fieldname,
222
+ onFilterClick
223
+ });
224
+ }
225
+ switch (field.fieldtype) {
226
+ case "Check":
227
+ return /* @__PURE__ */jsx(Text, {
228
+ fontSize: "$3",
229
+ color: raw ? "$green11" : "$color8",
230
+ children: raw ? "\u2713" : "\u2014"
231
+ });
232
+ case "Date":
233
+ case "Datetime":
234
+ {
235
+ const display = formatDateCell(value);
236
+ return /* @__PURE__ */jsx(FilterableText, {
237
+ fieldname: field.fieldname,
238
+ value,
239
+ onFilterClick,
240
+ children: /* @__PURE__ */jsx(Text, {
241
+ fontSize: "$3",
242
+ color: "$color11",
243
+ children: display
244
+ })
245
+ });
246
+ }
247
+ case "Currency":
248
+ case "Float":
249
+ case "Int":
250
+ case "Percent":
251
+ return /* @__PURE__ */jsx(Text, {
252
+ fontSize: "$3",
253
+ color: "$color12",
254
+ textAlign: "right",
255
+ children: value
256
+ });
257
+ case "Link":
258
+ return /* @__PURE__ */jsx(FilterableText, {
259
+ fieldname: field.fieldname,
260
+ value,
261
+ onFilterClick,
262
+ children: /* @__PURE__ */jsx(Text, {
263
+ fontSize: "$3",
264
+ color: "$color11",
265
+ numberOfLines: 1,
266
+ flexShrink: 1,
267
+ minWidth: 0,
268
+ children: value
269
+ })
270
+ });
271
+ default:
272
+ return /* @__PURE__ */jsx(Text, {
273
+ fontSize: "$3",
274
+ color: "$color11",
275
+ numberOfLines: 1,
276
+ flexShrink: 1,
277
+ minWidth: 0,
278
+ children: cellPreview(value, field.fieldtype)
279
+ });
280
+ }
281
+ };
282
+ }
283
+ function buildListColumns({
284
+ meta,
285
+ t,
286
+ sessionUser,
287
+ onToggleLike,
288
+ likeOverrides,
289
+ permMatrix,
290
+ getDocHref,
291
+ onFilterClick
292
+ }) {
293
+ const titleField = meta?.title_field || "name";
294
+ const columns = [];
295
+ const titleMeta = meta?.fields?.find(field => field.fieldname === titleField);
296
+ columns.push({
297
+ id: titleField,
298
+ header: titleField === "name" ? t("list.idColumn", "ID") : titleMeta?.label || t("list.titleColumn", "Title"),
299
+ accessorKey: titleField,
300
+ minWidth: 180,
301
+ meta: {
302
+ role: "title"
303
+ },
304
+ cell: ({
305
+ row,
306
+ getValue
307
+ }) => {
308
+ const raw = getValue();
309
+ const name = row.original.name ?? "";
310
+ const value = raw === null || raw === void 0 || raw === "" ? name : String(raw);
311
+ const href = name && getDocHref ? getDocHref(name) : void 0;
312
+ const label = cellPreview(value, titleMeta?.fieldtype);
313
+ const subject = /* @__PURE__ */jsx(Text, {
314
+ fontSize: "$3",
315
+ fontWeight: "400",
316
+ color: "$color12",
317
+ numberOfLines: 1,
318
+ flexShrink: 1,
319
+ minWidth: 0,
320
+ children: label
321
+ });
322
+ if (!href) return subject;
323
+ return /* @__PURE__ */jsx(Anchor, {
324
+ href,
325
+ textDecorationLine: "none",
326
+ minWidth: 0,
327
+ flexShrink: 1,
328
+ onPress: stopRowPress,
329
+ children: subject
330
+ });
331
+ }
332
+ });
333
+ for (const field of listViewFields(meta, titleField, permMatrix)) {
334
+ columns.push({
335
+ id: field.fieldname,
336
+ header: field.label || field.fieldname,
337
+ accessorKey: field.fieldname,
338
+ ...(NUMERIC_FIELDTYPES.has(field.fieldtype) ? {
339
+ align: "right"
340
+ } : {}),
341
+ cell: fieldCell(field, meta, onFilterClick)
342
+ });
343
+ }
344
+ columns.push({
345
+ id: "_activity",
346
+ header: t("list.activity", "Activity"),
347
+ meta: {
348
+ role: "actions",
349
+ label: t("list.activity", "Activity")
350
+ },
351
+ sortable: false,
352
+ filterable: false,
353
+ cell: ({
354
+ row
355
+ }) => /* @__PURE__ */jsx(ActivityCluster, {
356
+ doc: row.original,
357
+ t,
358
+ sessionUser,
359
+ onToggleLike,
360
+ likeOverrides
361
+ })
362
+ });
363
+ columns.push({
364
+ id: "modified",
365
+ accessorKey: "modified",
366
+ header: t("list.lastUpdated", "Last Updated On"),
367
+ enableHiding: true
368
+ });
369
+ return columns;
370
+ }
371
+ export { buildListColumns };
372
+ //# sourceMappingURL=listColumns.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Avatar","Anchor","Chip","Text","XStack","Button","ChatCircleIcon","HeartIcon","formatAbsoluteDateTime","listViewFields","formatDateCell","formatTimeAgo","parseUserListField","stripHtmlPreview","statusPillColors","Fragment","jsx","jsxs","NUMERIC_FIELDTYPES","Set","RICH_TEXT_FIELDTYPES","cellPreview","value","fieldtype","text","has","replace","trim","isStatusField","field","meta","fieldname","stateTitles","states","map","state","title","toLowerCase","size","options","split","option","some","isIndicatorField","stopRowPress","event","stopPropagation","chipColorFromStatus","ramp","background","IndicatorPill","filterValue","onFilterClick","chipColor","applied","alignSelf","onPress","children","variant","color","FilterableText","role","cursor","minWidth","flexShrink","hoverStyle","opacity","commentCount","doc","raw","_comment_count","Number","isFinite","parsed","comments","_comments","JSON","parse","Array","isArray","length","LikeControl","t","sessionUser","onToggleLike","likeOverrides","name","likedBy","_liked_by","liked","includes","likeLabel","fontSize","circular","chromeless","col","icon","weight","ActivityCluster","assignees","_assign","modified","String","absolute","alignItems","justifyContent","gap","testID","slice","user","fieldCell","getValue","on","display","textAlign","numberOfLines","buildListColumns","permMatrix","getDocHref","titleField","title_field","columns","titleMeta","fields","find","push","id","header","label","accessorKey","cell","row","original","href","subject","fontWeight","textDecorationLine","align","sortable","filterable","enableHiding"],"sources":["../../../src/list/listColumns.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}