@object-ui/plugin-detail 3.3.0 → 3.3.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 (134) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +21 -1
  3. package/dist/AddressField-LgHnO2Lk.js +98 -0
  4. package/dist/AutoNumberField-xZCrU0eW.js +14 -0
  5. package/dist/{AvatarField-Xuieq0ZI.js → AvatarField-Dy2XGlPz.js} +16 -15
  6. package/dist/{BooleanField-DwfMKknK.js → BooleanField-C0Clfka5.js} +11 -10
  7. package/dist/CodeField-CHUa07B6.js +23 -0
  8. package/dist/ColorField-vxHqEhcS.js +38 -0
  9. package/dist/CurrencyField-DiWjYWDo.js +49 -0
  10. package/dist/DateField-DGaRPM4P.js +22 -0
  11. package/dist/DateTimeField-8QnpsI_h.js +30 -0
  12. package/dist/EmailField-CkVgMbpI.js +26 -0
  13. package/dist/FileField-5UPV7uek.js +149 -0
  14. package/dist/FormulaField-BUgt6-Pi.js +17 -0
  15. package/dist/GeolocationField-D9T_jgG6.js +118 -0
  16. package/dist/GridField-DE_HwiIN.js +49 -0
  17. package/dist/ImageField-Dswnqtzf.js +73 -0
  18. package/dist/LocationField-gjqbE6na.js +36 -0
  19. package/dist/LookupField-BcS3LRKc.js +901 -0
  20. package/dist/{MasterDetailField-B0HTmmD7.js → MasterDetailField-BF6_-X3A.js} +20 -19
  21. package/dist/NumberField-Dj2rYmrS.js +27 -0
  22. package/dist/ObjectField-BymIojwd.js +50 -0
  23. package/dist/{PasswordField-DVTimsc3.js → PasswordField-ED_Xgqz-.js} +8 -7
  24. package/dist/PercentField-D-JKOxKC.js +61 -0
  25. package/dist/PhoneField-DSCaGYq7.js +26 -0
  26. package/dist/QRCodeField-CtcOUapi.js +73 -0
  27. package/dist/{RatingField-rRi_P0N0.js → RatingField-BDnyQFWy.js} +10 -9
  28. package/dist/RichTextField-CH6LVZQA.js +33 -0
  29. package/dist/SelectField-DE4dpkMV.js +36 -0
  30. package/dist/{SignatureField-2CnhcWI0.js → SignatureField-B1wh3f5A.js} +18 -17
  31. package/dist/{SliderField-DEpMVXko.js → SliderField-zoTCKh9n.js} +2 -1
  32. package/dist/SummaryField-BeBVT6VN.js +22 -0
  33. package/dist/TextAreaField-rfUGrRxh.js +37 -0
  34. package/dist/TextField-C_yM7ATQ.js +30 -0
  35. package/dist/TimeField-BcQmBZi9.js +22 -0
  36. package/dist/UrlField-BakaF6NI.js +31 -0
  37. package/dist/UserField-zS7y3eKb.js +76 -0
  38. package/dist/VectorField-CTZ4myDM.js +34 -0
  39. package/dist/index.js +1912 -1728
  40. package/dist/index.umd.cjs +38 -47
  41. package/dist/packages/plugin-detail/src/DetailSection.d.ts.map +1 -1
  42. package/dist/packages/plugin-detail/src/DetailView.d.ts +24 -0
  43. package/dist/packages/plugin-detail/src/DetailView.d.ts.map +1 -1
  44. package/dist/packages/plugin-detail/src/RelatedList.d.ts +8 -0
  45. package/dist/packages/plugin-detail/src/RelatedList.d.ts.map +1 -1
  46. package/dist/packages/plugin-detail/src/useDetailTranslation.d.ts.map +1 -1
  47. package/dist/plugin-detail.css +1 -2
  48. package/dist/rolldown-runtime-DnwLefa7.js +23 -0
  49. package/dist/{src-C56Ly5uG.js → src-DyUKLvMN.js} +18271 -26636
  50. package/dist/{useFieldTranslation-CkxqyB82.js → useFieldTranslation-BRgjC1oq.js} +1 -1
  51. package/package.json +33 -11
  52. package/.turbo/turbo-build.log +0 -64
  53. package/dist/AddressField-CDLSeyNx.js +0 -93
  54. package/dist/AutoNumberField-CtE7suf5.js +0 -14
  55. package/dist/CodeField-CfwgRxx2.js +0 -22
  56. package/dist/ColorField-YKHA7dBD.js +0 -37
  57. package/dist/CurrencyField-tvS3fPAF.js +0 -51
  58. package/dist/DateField-BKqXpkOh.js +0 -21
  59. package/dist/DateTimeField-CR-nJCE7.js +0 -32
  60. package/dist/EmailField-CgvW1Qal.js +0 -28
  61. package/dist/FileField-BVAme2ML.js +0 -151
  62. package/dist/FormulaField-DamJ2VaG.js +0 -14
  63. package/dist/GeolocationField-C99z7ZBM.js +0 -113
  64. package/dist/GridField-C9JbpTx_.js +0 -51
  65. package/dist/ImageField-CDANtgVV.js +0 -75
  66. package/dist/LocationField-ZSyZ0O-h.js +0 -35
  67. package/dist/LookupField-B3hQJt95.js +0 -903
  68. package/dist/LookupField-D00z6gn_.js +0 -2
  69. package/dist/NumberField-DL2QAL7X.js +0 -26
  70. package/dist/ObjectField-JYvUnuRO.js +0 -52
  71. package/dist/PercentField-DjR6BSpw.js +0 -63
  72. package/dist/PhoneField-CX1JL-jp.js +0 -28
  73. package/dist/QRCodeField-CH_1pU6R.js +0 -72
  74. package/dist/RichTextField-CJqLWlrb.js +0 -32
  75. package/dist/SelectField-DGoDoRM_.js +0 -30
  76. package/dist/SelectField-XBVI50AD.js +0 -2
  77. package/dist/SummaryField-7ch9aqAu.js +0 -19
  78. package/dist/TextAreaField-Cmw1oXcw.js +0 -36
  79. package/dist/TextField-OTLa3p51.js +0 -29
  80. package/dist/TimeField-DKPoNWoR.js +0 -21
  81. package/dist/UrlField-CxbmzP9f.js +0 -33
  82. package/dist/UserField-ChvwUkMK.js +0 -78
  83. package/dist/VectorField-BVClL8Vw.js +0 -36
  84. package/src/ActivityTimeline.tsx +0 -184
  85. package/src/CommentAttachment.tsx +0 -194
  86. package/src/CommentInput.tsx +0 -81
  87. package/src/DetailSection.tsx +0 -340
  88. package/src/DetailTabs.tsx +0 -73
  89. package/src/DetailView.stories.tsx +0 -334
  90. package/src/DetailView.tsx +0 -823
  91. package/src/DiffView.tsx +0 -233
  92. package/src/FieldChangeItem.tsx +0 -46
  93. package/src/HeaderHighlight.tsx +0 -88
  94. package/src/InlineCreateRelated.tsx +0 -291
  95. package/src/MentionAutocomplete.tsx +0 -123
  96. package/src/PointInTimeRestore.tsx +0 -261
  97. package/src/ReactionPicker.tsx +0 -106
  98. package/src/RecordActivityTimeline.tsx +0 -433
  99. package/src/RecordChatterPanel.tsx +0 -209
  100. package/src/RecordComments.tsx +0 -217
  101. package/src/RecordNavigationEnhanced.tsx +0 -213
  102. package/src/RelatedList.tsx +0 -413
  103. package/src/RelationshipGraph.tsx +0 -286
  104. package/src/RichTextCommentInput.tsx +0 -350
  105. package/src/SectionGroup.tsx +0 -101
  106. package/src/SubscriptionToggle.tsx +0 -62
  107. package/src/ThreadedReplies.tsx +0 -163
  108. package/src/__tests__/ActivityTimeline.test.tsx +0 -119
  109. package/src/__tests__/ActivityTimelineFiltering.test.tsx +0 -143
  110. package/src/__tests__/CommentInput.test.tsx +0 -57
  111. package/src/__tests__/DetailSection.test.tsx +0 -490
  112. package/src/__tests__/DetailView.test.tsx +0 -694
  113. package/src/__tests__/FieldChangeItem.test.tsx +0 -119
  114. package/src/__tests__/HeaderHighlight.test.tsx +0 -213
  115. package/src/__tests__/MentionAutocomplete.test.tsx +0 -97
  116. package/src/__tests__/ReactionPicker.test.tsx +0 -113
  117. package/src/__tests__/RecordActivityTimeline.test.tsx +0 -395
  118. package/src/__tests__/RecordChatterPanel.test.tsx +0 -265
  119. package/src/__tests__/RecordComments.test.tsx +0 -96
  120. package/src/__tests__/RecordCommentsPinSearch.test.tsx +0 -133
  121. package/src/__tests__/RelatedList.test.tsx +0 -160
  122. package/src/__tests__/SectionGroup.test.tsx +0 -101
  123. package/src/__tests__/SubscriptionToggle.test.tsx +0 -84
  124. package/src/__tests__/ThreadedReplies.test.tsx +0 -212
  125. package/src/__tests__/autoLayout.test.ts +0 -228
  126. package/src/__tests__/phase12-features.test.tsx +0 -583
  127. package/src/__tests__/roadmap-features.test.tsx +0 -478
  128. package/src/autoLayout.ts +0 -128
  129. package/src/index.tsx +0 -149
  130. package/src/useDetailTranslation.ts +0 -183
  131. package/tsconfig.json +0 -18
  132. package/vite.config.ts +0 -57
  133. package/vitest.config.ts +0 -13
  134. package/vitest.setup.ts +0 -1
@@ -1,113 +0,0 @@
1
- import { Bt as e, Ct as t, D as n, O as r, Z as i, gn as a } from "./src-C56Ly5uG.js";
2
- import o from "react";
3
- import { jsx as s, jsxs as c } from "react/jsx-runtime";
4
- //#region ../fields/src/widgets/GeolocationField.tsx
5
- var l = /* @__PURE__ */ a({ GeolocationField: () => u });
6
- function u({ value: a, onChange: l, field: u, readonly: d, ...f }) {
7
- let [p, m] = o.useState(!1), h = a || {}, g = (e, t) => {
8
- l({
9
- ...h,
10
- [e]: t ? Number(t) : void 0
11
- });
12
- }, _ = () => {
13
- if (!navigator.geolocation) {
14
- console.error("Geolocation is not supported by this browser");
15
- return;
16
- }
17
- m(!0), navigator.geolocation.getCurrentPosition((e) => {
18
- l({
19
- latitude: e.coords.latitude,
20
- longitude: e.coords.longitude,
21
- accuracy: e.coords.accuracy
22
- }), m(!1);
23
- }, (e) => {
24
- console.error("Error getting location:", e.message), m(!1);
25
- }, {
26
- enableHighAccuracy: !0,
27
- timeout: 5e3,
28
- maximumAge: 0
29
- });
30
- }, v = (e) => !e.latitude || !e.longitude ? "-" : `${e.latitude.toFixed(6)}, ${e.longitude.toFixed(6)}`, y = () => {
31
- if (!h.latitude || !h.longitude) return;
32
- let e = `https://www.google.com/maps?q=${h.latitude},${h.longitude}`;
33
- window.open(e, "_blank");
34
- };
35
- return d ? /* @__PURE__ */ c("div", {
36
- className: "flex items-center gap-2",
37
- children: [
38
- /* @__PURE__ */ s(t, { className: "w-4 h-4 text-muted-foreground" }),
39
- /* @__PURE__ */ s("span", {
40
- className: "text-sm",
41
- children: v(h)
42
- }),
43
- h.latitude && h.longitude && /* @__PURE__ */ s(i, {
44
- type: "button",
45
- variant: "link",
46
- size: "sm",
47
- onClick: y,
48
- className: "p-0 h-auto",
49
- children: "View on map"
50
- })
51
- ]
52
- }) : /* @__PURE__ */ c("div", {
53
- className: "space-y-3",
54
- children: [
55
- /* @__PURE__ */ c("div", {
56
- className: "flex items-center gap-2",
57
- children: [/* @__PURE__ */ c(i, {
58
- type: "button",
59
- variant: "outline",
60
- size: "sm",
61
- onClick: _,
62
- disabled: d || p,
63
- children: [/* @__PURE__ */ s(e, { className: "w-4 h-4 mr-2" }), p ? "Getting location..." : "Use Current Location"]
64
- }), h.latitude && h.longitude && /* @__PURE__ */ c(i, {
65
- type: "button",
66
- variant: "link",
67
- size: "sm",
68
- onClick: y,
69
- children: [/* @__PURE__ */ s(t, { className: "w-4 h-4 mr-2" }), "View on map"]
70
- })]
71
- }),
72
- /* @__PURE__ */ c("div", {
73
- className: "grid grid-cols-2 gap-3",
74
- children: [/* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s(r, {
75
- htmlFor: "latitude",
76
- className: "text-xs",
77
- children: "Latitude"
78
- }), /* @__PURE__ */ s(n, {
79
- id: "latitude",
80
- type: "number",
81
- value: h.latitude ?? "",
82
- onChange: (e) => g("latitude", e.target.value),
83
- placeholder: "37.7749",
84
- disabled: d || f.disabled,
85
- step: "any",
86
- className: f.className
87
- })] }), /* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s(r, {
88
- htmlFor: "longitude",
89
- className: "text-xs",
90
- children: "Longitude"
91
- }), /* @__PURE__ */ s(n, {
92
- id: "longitude",
93
- type: "number",
94
- value: h.longitude ?? "",
95
- onChange: (e) => g("longitude", e.target.value),
96
- placeholder: "-122.4194",
97
- disabled: d || f.disabled,
98
- step: "any"
99
- })] })]
100
- }),
101
- h.accuracy && /* @__PURE__ */ c("p", {
102
- className: "text-xs text-muted-foreground",
103
- children: [
104
- "Accuracy: ±",
105
- h.accuracy.toFixed(0),
106
- "m"
107
- ]
108
- })
109
- ]
110
- });
111
- }
112
- //#endregion
113
- export { l as t };
@@ -1,51 +0,0 @@
1
- import { gn as e, un as t } from "./src-C56Ly5uG.js";
2
- import "react";
3
- import { jsx as n, jsxs as r } from "react/jsx-runtime";
4
- //#region ../fields/src/widgets/GridField.tsx
5
- var i = /* @__PURE__ */ e({ GridField: () => a });
6
- function a({ value: e, field: i, readonly: a, ...o }) {
7
- let s = (i || o.schema)?.columns || [];
8
- return !e || !Array.isArray(e) ? /* @__PURE__ */ n("span", {
9
- className: "text-sm text-muted-foreground",
10
- children: "-"
11
- }) : a ? /* @__PURE__ */ n("div", {
12
- className: t("text-sm", o.className),
13
- children: /* @__PURE__ */ r("span", {
14
- className: "text-foreground",
15
- children: [e.length, " rows"]
16
- })
17
- }) : /* @__PURE__ */ r("div", {
18
- className: t("border border-border rounded-lg overflow-hidden", o.className),
19
- children: [/* @__PURE__ */ n("div", {
20
- className: "overflow-auto max-h-60",
21
- children: /* @__PURE__ */ r("table", {
22
- className: "w-full text-sm",
23
- children: [/* @__PURE__ */ n("thead", {
24
- className: "bg-muted border-b border-border",
25
- children: /* @__PURE__ */ n("tr", { children: s.map((e, t) => /* @__PURE__ */ n("th", {
26
- className: "px-3 py-2 text-left text-xs font-medium text-muted-foreground",
27
- children: e.label || e.name
28
- }, t)) })
29
- }), /* @__PURE__ */ n("tbody", {
30
- className: "divide-y divide-border",
31
- children: e.slice(0, 5).map((e, t) => /* @__PURE__ */ n("tr", {
32
- className: "hover:bg-muted/50 transition-colors",
33
- children: s.map((t, r) => /* @__PURE__ */ n("td", {
34
- className: "px-3 py-2 text-foreground",
35
- children: e[t.name] == null ? "-" : String(e[t.name])
36
- }, r))
37
- }, t))
38
- })]
39
- })
40
- }), e.length > 5 && /* @__PURE__ */ r("div", {
41
- className: "bg-muted px-3 py-2 text-xs text-muted-foreground border-t border-border",
42
- children: [
43
- "Showing 5 of ",
44
- e.length,
45
- " rows"
46
- ]
47
- })]
48
- });
49
- }
50
- //#endregion
51
- export { i as t };
@@ -1,75 +0,0 @@
1
- import { $ as e, Z as t, gn as n, kt as r } from "./src-C56Ly5uG.js";
2
- import { useRef as i } from "react";
3
- import { jsx as a, jsxs as o } from "react/jsx-runtime";
4
- //#region ../fields/src/widgets/ImageField.tsx
5
- var s = /* @__PURE__ */ n({ ImageField: () => c });
6
- function c({ value: n, onChange: s, field: c, readonly: l, ...u }) {
7
- let d = i(null), f = c || u.schema, p = f?.multiple || !1, m = f?.accept ? f.accept.join(",") : "image/*";
8
- if (l) return n ? /* @__PURE__ */ a("div", {
9
- className: "flex flex-wrap gap-2",
10
- children: (Array.isArray(n) ? n : [n]).map((e, t) => /* @__PURE__ */ a("img", {
11
- src: e.url || "",
12
- alt: e.name || `Image ${t + 1}`,
13
- className: "size-20 rounded-md object-cover border border-gray-200"
14
- }, t))
15
- }) : /* @__PURE__ */ a("span", {
16
- className: "text-sm",
17
- children: "-"
18
- });
19
- let h = n ? Array.isArray(n) ? n : [n] : [], g = (e) => {
20
- let t = Array.from(e.target.files || []);
21
- if (t.length === 0) return;
22
- let n = t.map((e) => ({
23
- name: e.name,
24
- original_name: e.name,
25
- size: e.size,
26
- mime_type: e.type,
27
- url: URL.createObjectURL(e)
28
- }));
29
- s(p ? [...h, ...n] : n[0]);
30
- }, _ = (e) => {
31
- if (p) {
32
- let t = h.filter((t, n) => n !== e);
33
- s(t.length > 0 ? t : null);
34
- } else s(null);
35
- };
36
- return /* @__PURE__ */ o("div", {
37
- className: u.className,
38
- children: [/* @__PURE__ */ a("input", {
39
- ref: d,
40
- type: "file",
41
- multiple: p,
42
- accept: m,
43
- onChange: g,
44
- className: "hidden"
45
- }), /* @__PURE__ */ o("div", {
46
- className: "space-y-2",
47
- children: [h.length > 0 && /* @__PURE__ */ a("div", {
48
- className: "grid grid-cols-4 gap-2",
49
- children: h.map((n, r) => /* @__PURE__ */ o("div", {
50
- className: "relative group",
51
- children: [/* @__PURE__ */ a("img", {
52
- src: n.url || "",
53
- alt: n.name || `Image ${r + 1}`,
54
- className: "size-20 rounded-md object-cover border border-gray-200"
55
- }), /* @__PURE__ */ a(t, {
56
- type: "button",
57
- variant: "destructive",
58
- size: "sm",
59
- onClick: () => _(r),
60
- className: "absolute top-1 right-1 h-6 w-6 p-0 opacity-0 group-hover:opacity-100 transition-opacity",
61
- children: /* @__PURE__ */ a(e, { className: "size-3" })
62
- })]
63
- }, r))
64
- }), /* @__PURE__ */ o(t, {
65
- type: "button",
66
- variant: "outline",
67
- onClick: () => d.current?.click(),
68
- className: "w-full",
69
- children: [/* @__PURE__ */ a(r, { className: "size-4 mr-2" }), h.length > 0 ? "Add More Images" : "Upload Image"]
70
- })]
71
- })]
72
- });
73
- }
74
- //#endregion
75
- export { s as t };
@@ -1,35 +0,0 @@
1
- import { D as e, gn as t } from "./src-C56Ly5uG.js";
2
- import "react";
3
- import { jsx as n } from "react/jsx-runtime";
4
- //#region ../fields/src/widgets/LocationField.tsx
5
- var r = /* @__PURE__ */ t({ LocationField: () => i });
6
- function i({ value: t, onChange: r, field: i, readonly: a, ...o }) {
7
- let s = i || o.schema, c = t && typeof t == "object" ? `${t.latitude || 0}, ${t.longitude || 0}` : "";
8
- return a ? /* @__PURE__ */ n("span", {
9
- className: "text-sm",
10
- children: c || "-"
11
- }) : /* @__PURE__ */ n(e, {
12
- type: "text",
13
- value: c,
14
- onChange: (e) => {
15
- let t = e.target.value;
16
- if (!t.trim()) {
17
- r(null);
18
- return;
19
- }
20
- let n = t.split(",").map((e) => e.trim());
21
- if (n.length === 2) {
22
- let e = parseFloat(n[0]), t = parseFloat(n[1]);
23
- !isNaN(e) && !isNaN(t) && r({
24
- latitude: e,
25
- longitude: t
26
- });
27
- }
28
- },
29
- placeholder: s?.placeholder || "latitude, longitude",
30
- disabled: a || o.disabled,
31
- className: o.className
32
- });
33
- }
34
- //#endregion
35
- export { r as t };