@object-ui/fields 3.1.2 → 3.1.4
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/AddressField-B6fPb2Fs.js +3 -0
- package/dist/AddressField-Ctsxkj35.cjs +1 -0
- package/dist/AutoNumberField-DXIYJfiB.js +3 -0
- package/dist/AutoNumberField-f76XU1bR.cjs +1 -0
- package/dist/AvatarField-BHpex3Wa.js +3 -0
- package/dist/AvatarField-CXOdYavl.cjs +1 -0
- package/dist/BooleanField-Bs0urhsx.js +3 -0
- package/dist/BooleanField-DeexI_O2.cjs +1 -0
- package/dist/CodeField-DDOMH8E8.cjs +1 -0
- package/dist/CodeField-tRACqngO.js +3 -0
- package/dist/ColorField-Bar6bOJw.js +3 -0
- package/dist/ColorField-CM9CxZ9h.cjs +1 -0
- package/dist/CurrencyField-CezTX_rA.cjs +1 -0
- package/dist/CurrencyField-D4VwXI9k.js +3 -0
- package/dist/DateField-DDUllj7w.cjs +1 -0
- package/dist/DateField-DjGiK6BH.js +3 -0
- package/dist/DateTimeField-DBh-dYdR.js +3 -0
- package/dist/DateTimeField-DDqgVN3b.cjs +1 -0
- package/dist/EmailField-B-3nY8Pr.cjs +1 -0
- package/dist/EmailField-Cp6yJlpH.js +3 -0
- package/dist/FileField-C1bcL7tu.cjs +1 -0
- package/dist/FileField-DUgt6ai3.js +3 -0
- package/dist/FormulaField-BLV1KgkQ.js +3 -0
- package/dist/FormulaField-CsbQIZ7S.cjs +1 -0
- package/dist/GeolocationField-BbIRH51u.js +3 -0
- package/dist/GeolocationField-UFu9VR-x.cjs +1 -0
- package/dist/GridField-2m74haE0.cjs +1 -0
- package/dist/GridField-O3Jd1NuJ.js +3 -0
- package/dist/ImageField-Cna7g6KL.cjs +1 -0
- package/dist/ImageField-rc1Nzcvb.js +3 -0
- package/dist/LocationField-DpRe9QlH.cjs +1 -0
- package/dist/LocationField-QZPPYo0J.js +3 -0
- package/dist/LookupField-BX4sK8NG.js +904 -0
- package/dist/LookupField-C9rPrHi_.cjs +1 -0
- package/dist/MasterDetailField-BXncIT1s.js +3 -0
- package/dist/MasterDetailField-TNP2825Z.cjs +1 -0
- package/dist/NumberField-DCHTzmDG.js +3 -0
- package/dist/NumberField-SqRwbcY8.cjs +1 -0
- package/dist/ObjectField-BEUHpn_X.js +3 -0
- package/dist/ObjectField-BWZwaFIG.cjs +1 -0
- package/dist/PasswordField-BZ_OeQyw.js +3 -0
- package/dist/PasswordField-kLp-ZyPm.cjs +1 -0
- package/dist/PercentField-B2t2knlc.js +3 -0
- package/dist/PercentField-BzhD6tQm.cjs +1 -0
- package/dist/PhoneField-CirvuysP.cjs +1 -0
- package/dist/PhoneField-CkrCFmcO.js +3 -0
- package/dist/QRCodeField-C4OOLCbE.cjs +1 -0
- package/dist/QRCodeField-CQoGow8y.js +3 -0
- package/dist/RatingField-CZG8SgQ8.cjs +1 -0
- package/dist/RatingField-DecDJkou.js +3 -0
- package/dist/RichTextField-Bog2i4NN.cjs +1 -0
- package/dist/RichTextField-b-8QbNCJ.js +3 -0
- package/dist/SelectField-CAa6c0cB.cjs +1 -0
- package/dist/SelectField-DMy5IxRc.js +3 -0
- package/dist/SignatureField-BvTPE7Dn.js +3 -0
- package/dist/SignatureField-jsb-0AYp.cjs +1 -0
- package/dist/SliderField-B7WvKFv7.js +3 -0
- package/dist/SliderField-DRjEJSxK.cjs +1 -0
- package/dist/SummaryField-DA16Edq3.cjs +1 -0
- package/dist/SummaryField-DVSVfKmY.js +3 -0
- package/dist/TextAreaField--ut87UiB.js +3 -0
- package/dist/TextAreaField-Cxp3DFC6.cjs +1 -0
- package/dist/TextField-CkEDGbkQ.js +3 -0
- package/dist/TextField-aLAzBaLZ.cjs +1 -0
- package/dist/TimeField-D0lF0y_I.cjs +1 -0
- package/dist/TimeField-DA_S6lQV.js +3 -0
- package/dist/UrlField-D0ugmD3f.cjs +1 -0
- package/dist/UrlField-DCnXHR1A.js +3 -0
- package/dist/UserField-DGlorzyG.cjs +1 -0
- package/dist/UserField-V0GmvyGV.js +3 -0
- package/dist/VectorField-BSD85ntU.cjs +1 -0
- package/dist/VectorField-CVi5yrrc.js +3 -0
- package/dist/fields/src/index.d.ts +8 -0
- package/dist/fields/src/record-picker-dialog.stories.d.ts +25 -0
- package/dist/fields/src/record-picker.test.d.ts +1 -0
- package/dist/fields/src/widgets/LookupField.d.ts +13 -2
- package/dist/fields/src/widgets/RecordPickerDialog.d.ts +166 -0
- package/dist/fields/src/widgets/_cell-renderer-bridge.d.ts +3 -0
- package/dist/index.cjs +4 -9
- package/dist/index.js +2229 -2682
- package/dist/jsx-runtime-DHCF5ANT.cjs +6 -0
- package/dist/jsx-runtime-MxADXuRH.js +189 -0
- package/package.json +8 -7
- package/src/__tests__/cell-renderers.test.tsx +133 -4
- package/src/complex-widgets.test.tsx +426 -2
- package/src/index.tsx +76 -22
- package/src/record-picker-dialog.stories.tsx +160 -0
- package/src/record-picker.test.tsx +1696 -0
- package/src/widgets/LookupField.tsx +485 -80
- package/src/widgets/RecordPickerDialog.tsx +1182 -0
- package/src/widgets/_cell-renderer-bridge.ts +19 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,a)=>(a=n==null?{}:e(i(n)),c(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n)),u=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),d=o((e=>{process.env.NODE_ENV!==`production`&&(function(){function t(e){if(e==null)return null;if(typeof e==`function`)return e.$$typeof===O?null:e.displayName||e.name||null;if(typeof e==`string`)return e;switch(e){case _:return`Fragment`;case y:return`Profiler`;case v:return`StrictMode`;case C:return`Suspense`;case w:return`SuspenseList`;case D:return`Activity`}if(typeof e==`object`)switch(typeof e.tag==`number`&&console.error(`Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.`),e.$$typeof){case g:return`Portal`;case x:return e.displayName||`Context`;case b:return(e._context.displayName||`Context`)+`.Consumer`;case S:var n=e.render;return e=e.displayName,e||=(e=n.displayName||n.name||``,e===``?`ForwardRef`:`ForwardRef(`+e+`)`),e;case T:return n=e.displayName||null,n===null?t(e.type)||`Memo`:n;case E:n=e._payload,e=e._init;try{return t(e(n))}catch{}}return null}function n(e){return``+e}function r(e){try{n(e);var t=!1}catch{t=!0}if(t){t=console;var r=t.error,i=typeof Symbol==`function`&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||`Object`;return r.call(t,`The provided key is an unsupported type %s. This value must be coerced to a string before using it here.`,i),n(e)}}function i(e){if(e===_)return`<>`;if(typeof e==`object`&&e&&e.$$typeof===E)return`<...>`;try{var n=t(e);return n?`<`+n+`>`:`<...>`}catch{return`<...>`}}function a(){var e=k.A;return e===null?null:e.getOwner()}function o(){return Error(`react-stack-top-frame`)}function s(e){if(A.call(e,`key`)){var t=Object.getOwnPropertyDescriptor(e,`key`).get;if(t&&t.isReactWarning)return!1}return e.key!==void 0}function c(e,t){function n(){N||(N=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",t))}n.isReactWarning=!0,Object.defineProperty(e,`key`,{get:n,configurable:!0})}function l(){var e=t(this.type);return P[e]||(P[e]=!0,console.error(`Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.`)),e=this.props.ref,e===void 0?null:e}function u(e,t,n,r,i,a){var o=n.ref;return e={$$typeof:h,type:e,key:t,props:n,_owner:r},(o===void 0?null:o)===null?Object.defineProperty(e,`ref`,{enumerable:!1,value:null}):Object.defineProperty(e,`ref`,{enumerable:!1,get:l}),e._store={},Object.defineProperty(e._store,`validated`,{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,`_debugInfo`,{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,`_debugStack`,{configurable:!1,enumerable:!1,writable:!0,value:i}),Object.defineProperty(e,`_debugTask`,{configurable:!1,enumerable:!1,writable:!0,value:a}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function d(e,n,i,o,l,d){var p=n.children;if(p!==void 0)if(o)if(j(p)){for(o=0;o<p.length;o++)f(p[o]);Object.freeze&&Object.freeze(p)}else console.error(`React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.`);else f(p);if(A.call(n,`key`)){p=t(e);var m=Object.keys(n).filter(function(e){return e!==`key`});o=0<m.length?`{key: someKey, `+m.join(`: ..., `)+`: ...}`:`{key: someKey}`,L[p+o]||(m=0<m.length?`{`+m.join(`: ..., `)+`: ...}`:`{}`,console.error(`A props object containing a "key" prop is being spread into JSX:
|
|
2
|
+
let props = %s;
|
|
3
|
+
<%s {...props} />
|
|
4
|
+
React keys must be passed directly to JSX without using spread:
|
|
5
|
+
let props = %s;
|
|
6
|
+
<%s key={someKey} {...props} />`,o,p,m,p),L[p+o]=!0)}if(p=null,i!==void 0&&(r(i),p=``+i),s(n)&&(r(n.key),p=``+n.key),`key`in n)for(var h in i={},n)h!==`key`&&(i[h]=n[h]);else i=n;return p&&c(i,typeof e==`function`?e.displayName||e.name||`Unknown`:e),u(e,p,i,a(),l,d)}function f(e){p(e)?e._store&&(e._store.validated=1):typeof e==`object`&&e&&e.$$typeof===E&&(e._payload.status===`fulfilled`?p(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function p(e){return typeof e==`object`&&!!e&&e.$$typeof===h}var m=require(`react`),h=Symbol.for(`react.transitional.element`),g=Symbol.for(`react.portal`),_=Symbol.for(`react.fragment`),v=Symbol.for(`react.strict_mode`),y=Symbol.for(`react.profiler`),b=Symbol.for(`react.consumer`),x=Symbol.for(`react.context`),S=Symbol.for(`react.forward_ref`),C=Symbol.for(`react.suspense`),w=Symbol.for(`react.suspense_list`),T=Symbol.for(`react.memo`),E=Symbol.for(`react.lazy`),D=Symbol.for(`react.activity`),O=Symbol.for(`react.client.reference`),k=m.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,A=Object.prototype.hasOwnProperty,j=Array.isArray,M=console.createTask?console.createTask:function(){return null};m={react_stack_bottom_frame:function(e){return e()}};var N,P={},F=m.react_stack_bottom_frame.bind(m,o)(),I=M(i(o)),L={};e.Fragment=_,e.jsx=function(e,t,n){var r=1e4>k.recentlyCreatedOwnerStacks++;return d(e,t,n,!1,r?Error(`react-stack-top-frame`):F,r?M(i(e)):I)},e.jsxs=function(e,t,n){var r=1e4>k.recentlyCreatedOwnerStacks++;return d(e,t,n,!0,r?Error(`react-stack-top-frame`):F,r?M(i(e)):I)}})()})),f=o(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=u():t.exports=d()}));Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return f}});
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
//#region \0rolldown/runtime.js
|
|
2
|
+
var e = Object.defineProperty, t = (e, t) => () => (t || e((t = { exports: {} }).exports, t), t.exports), n = (t, n) => {
|
|
3
|
+
let r = {};
|
|
4
|
+
for (var i in t) e(r, i, {
|
|
5
|
+
get: t[i],
|
|
6
|
+
enumerable: !0
|
|
7
|
+
});
|
|
8
|
+
return n || e(r, Symbol.toStringTag, { value: "Module" }), r;
|
|
9
|
+
}, r = /* @__PURE__ */ ((e) => typeof require < "u" ? require : typeof Proxy < "u" ? new Proxy(e, { get: (e, t) => (typeof require < "u" ? require : e)[t] }) : e)(function(e) {
|
|
10
|
+
if (typeof require < "u") return require.apply(this, arguments);
|
|
11
|
+
throw Error("Calling `require` for \"" + e + "\" in an environment that doesn't expose the `require` function. See https://rolldown.rs/in-depth/bundling-cjs#require-external-modules for more details.");
|
|
12
|
+
}), i = /* @__PURE__ */ t(((e) => {
|
|
13
|
+
var t = Symbol.for("react.transitional.element"), n = Symbol.for("react.fragment");
|
|
14
|
+
function r(e, n, r) {
|
|
15
|
+
var i = null;
|
|
16
|
+
if (r !== void 0 && (i = "" + r), n.key !== void 0 && (i = "" + n.key), "key" in n) for (var a in r = {}, n) a !== "key" && (r[a] = n[a]);
|
|
17
|
+
else r = n;
|
|
18
|
+
return n = r.ref, {
|
|
19
|
+
$$typeof: t,
|
|
20
|
+
type: e,
|
|
21
|
+
key: i,
|
|
22
|
+
ref: n === void 0 ? null : n,
|
|
23
|
+
props: r
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
e.Fragment = n, e.jsx = r, e.jsxs = r;
|
|
27
|
+
})), a = /* @__PURE__ */ t(((e) => {
|
|
28
|
+
process.env.NODE_ENV !== "production" && (function() {
|
|
29
|
+
function t(e) {
|
|
30
|
+
if (e == null) return null;
|
|
31
|
+
if (typeof e == "function") return e.$$typeof === k ? null : e.displayName || e.name || null;
|
|
32
|
+
if (typeof e == "string") return e;
|
|
33
|
+
switch (e) {
|
|
34
|
+
case v: return "Fragment";
|
|
35
|
+
case b: return "Profiler";
|
|
36
|
+
case y: return "StrictMode";
|
|
37
|
+
case w: return "Suspense";
|
|
38
|
+
case T: return "SuspenseList";
|
|
39
|
+
case O: return "Activity";
|
|
40
|
+
}
|
|
41
|
+
if (typeof e == "object") switch (typeof e.tag == "number" && console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."), e.$$typeof) {
|
|
42
|
+
case _: return "Portal";
|
|
43
|
+
case S: return e.displayName || "Context";
|
|
44
|
+
case x: return (e._context.displayName || "Context") + ".Consumer";
|
|
45
|
+
case C:
|
|
46
|
+
var n = e.render;
|
|
47
|
+
return e = e.displayName, e ||= (e = n.displayName || n.name || "", e === "" ? "ForwardRef" : "ForwardRef(" + e + ")"), e;
|
|
48
|
+
case E: return n = e.displayName || null, n === null ? t(e.type) || "Memo" : n;
|
|
49
|
+
case D:
|
|
50
|
+
n = e._payload, e = e._init;
|
|
51
|
+
try {
|
|
52
|
+
return t(e(n));
|
|
53
|
+
} catch {}
|
|
54
|
+
}
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
function n(e) {
|
|
58
|
+
return "" + e;
|
|
59
|
+
}
|
|
60
|
+
function i(e) {
|
|
61
|
+
try {
|
|
62
|
+
n(e);
|
|
63
|
+
var t = !1;
|
|
64
|
+
} catch {
|
|
65
|
+
t = !0;
|
|
66
|
+
}
|
|
67
|
+
if (t) {
|
|
68
|
+
t = console;
|
|
69
|
+
var r = t.error, i = typeof Symbol == "function" && Symbol.toStringTag && e[Symbol.toStringTag] || e.constructor.name || "Object";
|
|
70
|
+
return r.call(t, "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.", i), n(e);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
function a(e) {
|
|
74
|
+
if (e === v) return "<>";
|
|
75
|
+
if (typeof e == "object" && e && e.$$typeof === D) return "<...>";
|
|
76
|
+
try {
|
|
77
|
+
var n = t(e);
|
|
78
|
+
return n ? "<" + n + ">" : "<...>";
|
|
79
|
+
} catch {
|
|
80
|
+
return "<...>";
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function o() {
|
|
84
|
+
var e = A.A;
|
|
85
|
+
return e === null ? null : e.getOwner();
|
|
86
|
+
}
|
|
87
|
+
function s() {
|
|
88
|
+
return Error("react-stack-top-frame");
|
|
89
|
+
}
|
|
90
|
+
function c(e) {
|
|
91
|
+
if (j.call(e, "key")) {
|
|
92
|
+
var t = Object.getOwnPropertyDescriptor(e, "key").get;
|
|
93
|
+
if (t && t.isReactWarning) return !1;
|
|
94
|
+
}
|
|
95
|
+
return e.key !== void 0;
|
|
96
|
+
}
|
|
97
|
+
function l(e, t) {
|
|
98
|
+
function n() {
|
|
99
|
+
P || (P = !0, console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)", t));
|
|
100
|
+
}
|
|
101
|
+
n.isReactWarning = !0, Object.defineProperty(e, "key", {
|
|
102
|
+
get: n,
|
|
103
|
+
configurable: !0
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
function u() {
|
|
107
|
+
var e = t(this.type);
|
|
108
|
+
return F[e] || (F[e] = !0, console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")), e = this.props.ref, e === void 0 ? null : e;
|
|
109
|
+
}
|
|
110
|
+
function d(e, t, n, r, i, a) {
|
|
111
|
+
var o = n.ref;
|
|
112
|
+
return e = {
|
|
113
|
+
$$typeof: g,
|
|
114
|
+
type: e,
|
|
115
|
+
key: t,
|
|
116
|
+
props: n,
|
|
117
|
+
_owner: r
|
|
118
|
+
}, (o === void 0 ? null : o) === null ? Object.defineProperty(e, "ref", {
|
|
119
|
+
enumerable: !1,
|
|
120
|
+
value: null
|
|
121
|
+
}) : Object.defineProperty(e, "ref", {
|
|
122
|
+
enumerable: !1,
|
|
123
|
+
get: u
|
|
124
|
+
}), e._store = {}, Object.defineProperty(e._store, "validated", {
|
|
125
|
+
configurable: !1,
|
|
126
|
+
enumerable: !1,
|
|
127
|
+
writable: !0,
|
|
128
|
+
value: 0
|
|
129
|
+
}), Object.defineProperty(e, "_debugInfo", {
|
|
130
|
+
configurable: !1,
|
|
131
|
+
enumerable: !1,
|
|
132
|
+
writable: !0,
|
|
133
|
+
value: null
|
|
134
|
+
}), Object.defineProperty(e, "_debugStack", {
|
|
135
|
+
configurable: !1,
|
|
136
|
+
enumerable: !1,
|
|
137
|
+
writable: !0,
|
|
138
|
+
value: i
|
|
139
|
+
}), Object.defineProperty(e, "_debugTask", {
|
|
140
|
+
configurable: !1,
|
|
141
|
+
enumerable: !1,
|
|
142
|
+
writable: !0,
|
|
143
|
+
value: a
|
|
144
|
+
}), Object.freeze && (Object.freeze(e.props), Object.freeze(e)), e;
|
|
145
|
+
}
|
|
146
|
+
function f(e, n, r, a, s, u) {
|
|
147
|
+
var f = n.children;
|
|
148
|
+
if (f !== void 0) if (a) if (M(f)) {
|
|
149
|
+
for (a = 0; a < f.length; a++) p(f[a]);
|
|
150
|
+
Object.freeze && Object.freeze(f);
|
|
151
|
+
} else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");
|
|
152
|
+
else p(f);
|
|
153
|
+
if (j.call(n, "key")) {
|
|
154
|
+
f = t(e);
|
|
155
|
+
var m = Object.keys(n).filter(function(e) {
|
|
156
|
+
return e !== "key";
|
|
157
|
+
});
|
|
158
|
+
a = 0 < m.length ? "{key: someKey, " + m.join(": ..., ") + ": ...}" : "{key: someKey}", R[f + a] || (m = 0 < m.length ? "{" + m.join(": ..., ") + ": ...}" : "{}", console.error("A props object containing a \"key\" prop is being spread into JSX:\n let props = %s;\n <%s {...props} />\nReact keys must be passed directly to JSX without using spread:\n let props = %s;\n <%s key={someKey} {...props} />", a, f, m, f), R[f + a] = !0);
|
|
159
|
+
}
|
|
160
|
+
if (f = null, r !== void 0 && (i(r), f = "" + r), c(n) && (i(n.key), f = "" + n.key), "key" in n) for (var h in r = {}, n) h !== "key" && (r[h] = n[h]);
|
|
161
|
+
else r = n;
|
|
162
|
+
return f && l(r, typeof e == "function" ? e.displayName || e.name || "Unknown" : e), d(e, f, r, o(), s, u);
|
|
163
|
+
}
|
|
164
|
+
function p(e) {
|
|
165
|
+
m(e) ? e._store && (e._store.validated = 1) : typeof e == "object" && e && e.$$typeof === D && (e._payload.status === "fulfilled" ? m(e._payload.value) && e._payload.value._store && (e._payload.value._store.validated = 1) : e._store && (e._store.validated = 1));
|
|
166
|
+
}
|
|
167
|
+
function m(e) {
|
|
168
|
+
return typeof e == "object" && !!e && e.$$typeof === g;
|
|
169
|
+
}
|
|
170
|
+
var h = r("react"), g = Symbol.for("react.transitional.element"), _ = Symbol.for("react.portal"), v = Symbol.for("react.fragment"), y = Symbol.for("react.strict_mode"), b = Symbol.for("react.profiler"), x = Symbol.for("react.consumer"), S = Symbol.for("react.context"), C = Symbol.for("react.forward_ref"), w = Symbol.for("react.suspense"), T = Symbol.for("react.suspense_list"), E = Symbol.for("react.memo"), D = Symbol.for("react.lazy"), O = Symbol.for("react.activity"), k = Symbol.for("react.client.reference"), A = h.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, j = Object.prototype.hasOwnProperty, M = Array.isArray, N = console.createTask ? console.createTask : function() {
|
|
171
|
+
return null;
|
|
172
|
+
};
|
|
173
|
+
h = { react_stack_bottom_frame: function(e) {
|
|
174
|
+
return e();
|
|
175
|
+
} };
|
|
176
|
+
var P, F = {}, I = h.react_stack_bottom_frame.bind(h, s)(), L = N(a(s)), R = {};
|
|
177
|
+
e.Fragment = v, e.jsx = function(e, t, n) {
|
|
178
|
+
var r = 1e4 > A.recentlyCreatedOwnerStacks++;
|
|
179
|
+
return f(e, t, n, !1, r ? Error("react-stack-top-frame") : I, r ? N(a(e)) : L);
|
|
180
|
+
}, e.jsxs = function(e, t, n) {
|
|
181
|
+
var r = 1e4 > A.recentlyCreatedOwnerStacks++;
|
|
182
|
+
return f(e, t, n, !0, r ? Error("react-stack-top-frame") : I, r ? N(a(e)) : L);
|
|
183
|
+
};
|
|
184
|
+
})();
|
|
185
|
+
})), o = /* @__PURE__ */ t(((e, t) => {
|
|
186
|
+
process.env.NODE_ENV === "production" ? t.exports = i() : t.exports = a();
|
|
187
|
+
}));
|
|
188
|
+
//#endregion
|
|
189
|
+
export { n, o as t };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@object-ui/fields",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.4",
|
|
4
4
|
"description": "Field renderers and registry for Object UI",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -23,11 +23,12 @@
|
|
|
23
23
|
],
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"clsx": "^2.1.1",
|
|
26
|
-
"lucide-react": "^0.
|
|
26
|
+
"lucide-react": "^0.577.0",
|
|
27
27
|
"tailwind-merge": "^3.5.0",
|
|
28
|
-
"@object-ui/components": "3.1.
|
|
29
|
-
"@object-ui/core": "3.1.
|
|
30
|
-
"@object-ui/
|
|
28
|
+
"@object-ui/components": "3.1.4",
|
|
29
|
+
"@object-ui/core": "3.1.4",
|
|
30
|
+
"@object-ui/react": "3.1.4",
|
|
31
|
+
"@object-ui/types": "3.1.4"
|
|
31
32
|
},
|
|
32
33
|
"peerDependencies": {
|
|
33
34
|
"react": "^18.0.0 || ^19.0.0",
|
|
@@ -36,9 +37,9 @@
|
|
|
36
37
|
"devDependencies": {
|
|
37
38
|
"@types/react": "19.2.14",
|
|
38
39
|
"@types/react-dom": "19.2.3",
|
|
39
|
-
"@vitejs/plugin-react": "^
|
|
40
|
+
"@vitejs/plugin-react": "^6.0.1",
|
|
40
41
|
"typescript": "^5.9.3",
|
|
41
|
-
"vite": "^
|
|
42
|
+
"vite": "^8.0.1",
|
|
42
43
|
"vite-plugin-dts": "^4.5.4"
|
|
43
44
|
},
|
|
44
45
|
"publishConfig": {
|
|
@@ -788,7 +788,7 @@ describe('LookupCellRenderer', () => {
|
|
|
788
788
|
it('should render object name when value is an object', () => {
|
|
789
789
|
render(
|
|
790
790
|
<LookupCellRenderer
|
|
791
|
-
value={{ name: 'Acme Corp',
|
|
791
|
+
value={{ name: 'Acme Corp', id: '123' }}
|
|
792
792
|
field={{ name: 'account', type: 'lookup' } as any}
|
|
793
793
|
/>
|
|
794
794
|
);
|
|
@@ -798,17 +798,17 @@ describe('LookupCellRenderer', () => {
|
|
|
798
798
|
it('should render object label when name is missing', () => {
|
|
799
799
|
render(
|
|
800
800
|
<LookupCellRenderer
|
|
801
|
-
value={{ label: 'Widget Co',
|
|
801
|
+
value={{ label: 'Widget Co', id: '456' }}
|
|
802
802
|
field={{ name: 'account', type: 'lookup' } as any}
|
|
803
803
|
/>
|
|
804
804
|
);
|
|
805
805
|
expect(screen.getByText('Widget Co')).toBeInTheDocument();
|
|
806
806
|
});
|
|
807
807
|
|
|
808
|
-
it('should render object
|
|
808
|
+
it('should render object id as fallback', () => {
|
|
809
809
|
render(
|
|
810
810
|
<LookupCellRenderer
|
|
811
|
-
value={{
|
|
811
|
+
value={{ id: '789' }}
|
|
812
812
|
field={{ name: 'account', type: 'lookup' } as any}
|
|
813
813
|
/>
|
|
814
814
|
);
|
|
@@ -1041,3 +1041,132 @@ describe('PercentCellRenderer progress-type fields', () => {
|
|
|
1041
1041
|
expect(bar).toHaveAttribute('aria-valuenow', '50');
|
|
1042
1042
|
});
|
|
1043
1043
|
});
|
|
1044
|
+
|
|
1045
|
+
// =========================================================================
|
|
1046
|
+
// Object value safety (coerceToSafeValue) — prevents React error #310
|
|
1047
|
+
// =========================================================================
|
|
1048
|
+
import {
|
|
1049
|
+
NumberCellRenderer,
|
|
1050
|
+
CurrencyCellRenderer,
|
|
1051
|
+
FormulaCellRenderer,
|
|
1052
|
+
coerceToSafeValue,
|
|
1053
|
+
} from '../index';
|
|
1054
|
+
|
|
1055
|
+
describe('coerceToSafeValue', () => {
|
|
1056
|
+
it('should pass through primitives unchanged', () => {
|
|
1057
|
+
expect(coerceToSafeValue('hello')).toBe('hello');
|
|
1058
|
+
expect(coerceToSafeValue(42)).toBe(42);
|
|
1059
|
+
expect(coerceToSafeValue(true)).toBe(true);
|
|
1060
|
+
expect(coerceToSafeValue(null)).toBe(null);
|
|
1061
|
+
expect(coerceToSafeValue(undefined)).toBe(undefined);
|
|
1062
|
+
});
|
|
1063
|
+
|
|
1064
|
+
it('should extract number from MongoDB $numberDecimal', () => {
|
|
1065
|
+
expect(coerceToSafeValue({ $numberDecimal: '250000' })).toBe(250000);
|
|
1066
|
+
});
|
|
1067
|
+
|
|
1068
|
+
it('should extract string from MongoDB $oid', () => {
|
|
1069
|
+
expect(coerceToSafeValue({ $oid: 'abc123' })).toBe('abc123');
|
|
1070
|
+
});
|
|
1071
|
+
|
|
1072
|
+
it('should extract string from MongoDB $date', () => {
|
|
1073
|
+
expect(coerceToSafeValue({ $date: '2024-01-01T00:00:00Z' })).toBe('2024-01-01T00:00:00Z');
|
|
1074
|
+
});
|
|
1075
|
+
|
|
1076
|
+
it('should extract name from expanded reference object', () => {
|
|
1077
|
+
expect(coerceToSafeValue({ id: 'x', name: 'Acme Corp' })).toBe('Acme Corp');
|
|
1078
|
+
});
|
|
1079
|
+
|
|
1080
|
+
it('should extract label when name is not present', () => {
|
|
1081
|
+
expect(coerceToSafeValue({ id: 'x', label: 'Active' })).toBe('Active');
|
|
1082
|
+
});
|
|
1083
|
+
|
|
1084
|
+
it('should fall back to id when no name/label', () => {
|
|
1085
|
+
expect(coerceToSafeValue({ id: 'abc123' })).toBe('abc123');
|
|
1086
|
+
});
|
|
1087
|
+
|
|
1088
|
+
it('should handle arrays of primitives', () => {
|
|
1089
|
+
expect(coerceToSafeValue(['a', 'b', 'c'])).toBe('a, b, c');
|
|
1090
|
+
});
|
|
1091
|
+
|
|
1092
|
+
it('should handle arrays of objects', () => {
|
|
1093
|
+
expect(coerceToSafeValue([{ name: 'Alice' }, { name: 'Bob' }])).toBe('Alice, Bob');
|
|
1094
|
+
});
|
|
1095
|
+
|
|
1096
|
+
it('should convert Date to ISO string', () => {
|
|
1097
|
+
const d = new Date('2024-06-15T12:00:00Z');
|
|
1098
|
+
expect(coerceToSafeValue(d)).toBe('2024-06-15T12:00:00.000Z');
|
|
1099
|
+
});
|
|
1100
|
+
});
|
|
1101
|
+
|
|
1102
|
+
describe('NumberCellRenderer object safety', () => {
|
|
1103
|
+
it('should handle MongoDB $numberDecimal without crashing', () => {
|
|
1104
|
+
const { container } = render(
|
|
1105
|
+
<NumberCellRenderer
|
|
1106
|
+
value={{ $numberDecimal: '250000' }}
|
|
1107
|
+
field={{ name: 'amount', type: 'number' } as any}
|
|
1108
|
+
/>
|
|
1109
|
+
);
|
|
1110
|
+
expect(container.innerHTML).not.toBe('');
|
|
1111
|
+
expect(screen.getByText('250,000')).toBeInTheDocument();
|
|
1112
|
+
});
|
|
1113
|
+
|
|
1114
|
+
it('should handle expanded reference object without crashing', () => {
|
|
1115
|
+
const { container } = render(
|
|
1116
|
+
<NumberCellRenderer
|
|
1117
|
+
value={{ id: 'abc', name: 'Not a number' }}
|
|
1118
|
+
field={{ name: 'amount', type: 'number' } as any}
|
|
1119
|
+
/>
|
|
1120
|
+
);
|
|
1121
|
+
expect(container.innerHTML).not.toBe('');
|
|
1122
|
+
// Should render the extracted name string, not crash
|
|
1123
|
+
expect(screen.getByText('Not a number')).toBeInTheDocument();
|
|
1124
|
+
});
|
|
1125
|
+
});
|
|
1126
|
+
|
|
1127
|
+
describe('CurrencyCellRenderer object safety', () => {
|
|
1128
|
+
it('should handle MongoDB $numberDecimal', () => {
|
|
1129
|
+
const { container } = render(
|
|
1130
|
+
<CurrencyCellRenderer
|
|
1131
|
+
value={{ $numberDecimal: '5000' }}
|
|
1132
|
+
field={{ name: 'price', type: 'currency', currency: 'USD' } as any}
|
|
1133
|
+
/>
|
|
1134
|
+
);
|
|
1135
|
+
expect(container.innerHTML).not.toBe('');
|
|
1136
|
+
expect(screen.getByText(/5,000/)).toBeInTheDocument();
|
|
1137
|
+
});
|
|
1138
|
+
});
|
|
1139
|
+
|
|
1140
|
+
describe('TextCellRenderer object safety', () => {
|
|
1141
|
+
it('should extract name from object instead of [object Object]', () => {
|
|
1142
|
+
render(
|
|
1143
|
+
<TextCellRenderer
|
|
1144
|
+
value={{ id: 'abc', name: 'Acme Corp' }}
|
|
1145
|
+
field={{ name: 'company', type: 'text' } as any}
|
|
1146
|
+
/>
|
|
1147
|
+
);
|
|
1148
|
+
expect(screen.getByText('Acme Corp')).toBeInTheDocument();
|
|
1149
|
+
});
|
|
1150
|
+
|
|
1151
|
+
it('should handle arrays of objects', () => {
|
|
1152
|
+
render(
|
|
1153
|
+
<TextCellRenderer
|
|
1154
|
+
value={[{ name: 'Alice' }, { name: 'Bob' }]}
|
|
1155
|
+
field={{ name: 'contacts', type: 'text' } as any}
|
|
1156
|
+
/>
|
|
1157
|
+
);
|
|
1158
|
+
expect(screen.getByText('Alice, Bob')).toBeInTheDocument();
|
|
1159
|
+
});
|
|
1160
|
+
});
|
|
1161
|
+
|
|
1162
|
+
describe('FormulaCellRenderer object safety', () => {
|
|
1163
|
+
it('should extract value from MongoDB $numberDecimal', () => {
|
|
1164
|
+
render(
|
|
1165
|
+
<FormulaCellRenderer
|
|
1166
|
+
value={{ $numberDecimal: '42.5' }}
|
|
1167
|
+
field={{ name: 'calc', type: 'formula' } as any}
|
|
1168
|
+
/>
|
|
1169
|
+
);
|
|
1170
|
+
expect(screen.getByText('42.5')).toBeInTheDocument();
|
|
1171
|
+
});
|
|
1172
|
+
});
|