@rebasepro/cms 0.21.1 → 0.21.2-canary.g1ea48be
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/{CollectionEditorDialog-DPLimWfL.js → CollectionEditorDialog-B1mG1cfx.js} +3 -3
- package/dist/{CollectionEditorDialog-DPLimWfL.js.map → CollectionEditorDialog-B1mG1cfx.js.map} +1 -1
- package/dist/{PropertyEditView-D85vuYZu.js → PropertyEditView-gKNUHxLY.js} +2 -2
- package/dist/{PropertyEditView-D85vuYZu.js.map → PropertyEditView-gKNUHxLY.js.map} +1 -1
- package/dist/{RouterCollectionsStudioView-C1BseTGZ.js → RouterCollectionsStudioView-qgDWC6E2.js} +4 -4
- package/dist/{RouterCollectionsStudioView-C1BseTGZ.js.map → RouterCollectionsStudioView-qgDWC6E2.js.map} +1 -1
- package/dist/collection_editor_ui.js +4 -4
- package/dist/components/EntityIdentityBar.d.ts +11 -0
- package/dist/components/PropertyKeyHint.d.ts +25 -0
- package/dist/components/index.d.ts +1 -1
- package/dist/{export-CrKQwyBM.js → export-DIyk1720.js} +3 -3
- package/dist/export-DIyk1720.js.map +1 -0
- package/dist/form/components/LabelWithIcon.d.ts +7 -0
- package/dist/form/components/index.d.ts +0 -1
- package/dist/{history-DH4h_T1U.js → history-CrZEzQ5b.js} +2 -2
- package/dist/{history-DH4h_T1U.js.map → history-CrZEzQ5b.js.map} +1 -1
- package/dist/{import-Ct2FFEEj.js → import-ByaJMZuT.js} +2 -2
- package/dist/{import-Ct2FFEEj.js.map → import-ByaJMZuT.js.map} +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +8 -8
- package/dist/index.js.map +1 -1
- package/dist/{util-jUWinb7D.js → util-qfCPxJzB.js} +470 -424
- package/dist/util-qfCPxJzB.js.map +1 -0
- package/package.json +9 -9
- package/dist/components/PropertyIdCopyTooltip.d.ts +0 -8
- package/dist/export-CrKQwyBM.js.map +0 -1
- package/dist/form/components/LabelWithIconAndTooltip.d.ts +0 -15
- package/dist/util-jUWinb7D.js.map +0 -1
|
@@ -156,41 +156,53 @@ function getDefaultPropertiesOrder(collection) {
|
|
|
156
156
|
return [...Object.keys(collection.properties), ...(collection.additionalFields ?? []).map((field) => field.key)];
|
|
157
157
|
}
|
|
158
158
|
//#endregion
|
|
159
|
-
//#region src/components/
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
159
|
+
//#region src/components/PropertyKeyHint.tsx
|
|
160
|
+
/**
|
|
161
|
+
* A property's key, shown beside its label while the label is hovered, and
|
|
162
|
+
* copied when clicked.
|
|
163
|
+
*
|
|
164
|
+
* Inline, in the label row's own empty space, rather than a tooltip. The tooltip
|
|
165
|
+
* this replaces wrapped the field's control as well as its label, so it opened
|
|
166
|
+
* the moment a field took focus and sat on top of the label of the very field
|
|
167
|
+
* being filled in. Closing again on blur, it was also what threw Tab out of the
|
|
168
|
+
* dialog (see `useRestoreInterruptedFocus` in `@rebasepro/ui`). A key a
|
|
169
|
+
* developer copies now and then is not worth a layer over the form.
|
|
170
|
+
*
|
|
171
|
+
* Revealed by hovering the nearest `group/label` ancestor, after a pause, so a
|
|
172
|
+
* pointer crossing the form does not flicker keys on and off; hidden again at
|
|
173
|
+
* once. Out of the tab order: a stop per field would double the keystrokes it
|
|
174
|
+
* takes to get through a form, for something only the pointer needs.
|
|
175
|
+
*
|
|
176
|
+
* Gives up its width before the label does (`shrink-[999]`), so a long field
|
|
177
|
+
* name in a narrow column is never truncated to make room for a key that is not
|
|
178
|
+
* even showing.
|
|
179
|
+
*/
|
|
180
|
+
function PropertyKeyHint({ propertyKey, className }) {
|
|
181
|
+
const { t } = useTranslation();
|
|
172
182
|
const [copied, setCopied] = useState(false);
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
183
|
+
const copy = (event) => {
|
|
184
|
+
event.preventDefault();
|
|
185
|
+
event.stopPropagation();
|
|
186
|
+
navigator.clipboard?.writeText(propertyKey).then(() => {
|
|
187
|
+
setCopied(true);
|
|
188
|
+
setTimeout(() => setCopied(false), 1600);
|
|
189
|
+
}, () => void 0);
|
|
190
|
+
};
|
|
191
|
+
return /* @__PURE__ */ jsxs("button", {
|
|
192
|
+
type: "button",
|
|
193
|
+
tabIndex: -1,
|
|
194
|
+
onClick: copy,
|
|
195
|
+
"aria-label": `${t("copy")} ${propertyKey}`,
|
|
196
|
+
className: cls("inline-flex items-center gap-1 min-w-0 shrink-[999] px-1 -my-0.5 rounded-md", "font-mono text-[11px] font-normal leading-tight", "text-text-disabled dark:text-text-disabled-dark", "hover:text-text-secondary dark:hover:text-text-secondary-dark hover:bg-surface-hover", "opacity-0 transition-opacity duration-150 group-hover/label:opacity-100 group-hover/label:delay-500", className),
|
|
197
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
198
|
+
className: "truncate",
|
|
199
|
+
children: propertyKey
|
|
200
|
+
}), copied ? /* @__PURE__ */ jsx(CheckIcon, {
|
|
201
|
+
size: 11,
|
|
202
|
+
className: "shrink-0"
|
|
203
|
+
}) : /* @__PURE__ */ jsx(CopyIcon, {
|
|
204
|
+
size: 11,
|
|
205
|
+
className: "shrink-0"
|
|
194
206
|
})]
|
|
195
207
|
});
|
|
196
208
|
}
|
|
@@ -273,25 +285,23 @@ function FieldBlock({ propertyKey, property, showLabel, mode = "edit", label, ic
|
|
|
273
285
|
id: `form_field_${propertyKey}`,
|
|
274
286
|
className: "relative flex flex-col min-w-0",
|
|
275
287
|
children: [
|
|
276
|
-
showLabel && /* @__PURE__ */
|
|
277
|
-
|
|
278
|
-
children:
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
(property
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
]
|
|
294
|
-
})
|
|
288
|
+
showLabel && /* @__PURE__ */ jsxs("div", {
|
|
289
|
+
className: cls("group/label flex items-center gap-1.5 min-w-0 font-medium leading-tight mb-1.5", "text-[13px] text-text-primary dark:text-text-primary-dark"),
|
|
290
|
+
children: [
|
|
291
|
+
(property || icon) && /* @__PURE__ */ jsx("span", {
|
|
292
|
+
className: "shrink-0 text-text-disabled dark:text-text-disabled-dark",
|
|
293
|
+
children: property ? getIconForProperty(property, 14) : icon
|
|
294
|
+
}),
|
|
295
|
+
/* @__PURE__ */ jsx("span", {
|
|
296
|
+
className: "truncate",
|
|
297
|
+
children: property?.name ?? label ?? propertyKey
|
|
298
|
+
}),
|
|
299
|
+
required && /* @__PURE__ */ jsx("span", {
|
|
300
|
+
className: "text-red-500 dark:text-red-500 -ml-1",
|
|
301
|
+
children: "*"
|
|
302
|
+
}),
|
|
303
|
+
property && /* @__PURE__ */ jsx(PropertyKeyHint, { propertyKey })
|
|
304
|
+
]
|
|
295
305
|
}),
|
|
296
306
|
/* @__PURE__ */ jsx("div", {
|
|
297
307
|
className: "min-w-0",
|
|
@@ -3484,32 +3494,23 @@ function FieldHelperText({ error, showError, property, includeDescription = true
|
|
|
3484
3494
|
* Render the label of with an icon and the title of a property
|
|
3485
3495
|
* @group Form custom fields
|
|
3486
3496
|
*/
|
|
3487
|
-
var LabelWithIcon = forwardRef(({ icon, title, small, className, required, labelId }, ref) => {
|
|
3497
|
+
var LabelWithIcon = forwardRef(({ icon, title, small, className, required, labelId, propertyKey }, ref) => {
|
|
3488
3498
|
return /* @__PURE__ */ jsxs("div", {
|
|
3489
3499
|
ref,
|
|
3490
|
-
className: cls("align-middle inline-flex items-center my-0.5", small ? "gap-1" : "gap-2", className),
|
|
3491
|
-
children: [
|
|
3492
|
-
|
|
3493
|
-
|
|
3494
|
-
|
|
3495
|
-
|
|
3500
|
+
className: cls("group/label align-middle inline-flex items-center min-w-0 my-0.5", small ? "gap-1" : "gap-2", className),
|
|
3501
|
+
children: [
|
|
3502
|
+
icon,
|
|
3503
|
+
/* @__PURE__ */ jsx("span", {
|
|
3504
|
+
id: labelId,
|
|
3505
|
+
className: `text-start font-medium text-${small ? "base" : "sm"} origin-top-left transform ${small ? "translate-x-2 scale-75" : ""}`,
|
|
3506
|
+
children: (title ?? "") + (required ? " *" : "")
|
|
3507
|
+
}),
|
|
3508
|
+
propertyKey && /* @__PURE__ */ jsx(PropertyKeyHint, { propertyKey })
|
|
3509
|
+
]
|
|
3496
3510
|
});
|
|
3497
3511
|
});
|
|
3498
3512
|
LabelWithIcon.displayName = "LabelWithIcon";
|
|
3499
3513
|
//#endregion
|
|
3500
|
-
//#region src/form/components/LabelWithIconAndTooltip.tsx
|
|
3501
|
-
/**
|
|
3502
|
-
* Render the label of with an icon and the title of a property
|
|
3503
|
-
* @group Form custom fields
|
|
3504
|
-
*/
|
|
3505
|
-
function LabelWithIconAndTooltip({ propertyKey, className, ...props }) {
|
|
3506
|
-
return /* @__PURE__ */ jsx(PropertyIdCopyTooltip, {
|
|
3507
|
-
propertyKey,
|
|
3508
|
-
className,
|
|
3509
|
-
children: /* @__PURE__ */ jsx(LabelWithIcon, { ...props })
|
|
3510
|
-
});
|
|
3511
|
-
}
|
|
3512
|
-
//#endregion
|
|
3513
3514
|
//#region src/form/field_bindings/ReadOnlyFieldBinding.tsx
|
|
3514
3515
|
/**
|
|
3515
3516
|
*
|
|
@@ -3522,7 +3523,7 @@ function LabelWithIconAndTooltip({ propertyKey, className, ...props }) {
|
|
|
3522
3523
|
function ReadOnlyFieldBinding({ propertyKey, value, error, showError, minimalistView, property, includeDescription, hideLabel, context, size = "large" }) {
|
|
3523
3524
|
const skipCardWrapper = property.type === "relation" || property.type === "reference";
|
|
3524
3525
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
3525
|
-
!minimalistView && !hideLabel && /* @__PURE__ */ jsx(
|
|
3526
|
+
!minimalistView && !hideLabel && /* @__PURE__ */ jsx(LabelWithIcon, {
|
|
3526
3527
|
propertyKey,
|
|
3527
3528
|
icon: getIconForProperty(property, "small"),
|
|
3528
3529
|
required: property.validation?.required,
|
|
@@ -3599,7 +3600,7 @@ function ArrayCustomShapedFieldBinding({ propertyKey, value, error, showError, i
|
|
|
3599
3600
|
value,
|
|
3600
3601
|
setValue
|
|
3601
3602
|
});
|
|
3602
|
-
const title = /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(
|
|
3603
|
+
const title = /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(LabelWithIcon, {
|
|
3603
3604
|
propertyKey,
|
|
3604
3605
|
icon: getIconForProperty(property, "small"),
|
|
3605
3606
|
required: property.validation?.required,
|
|
@@ -8902,6 +8903,21 @@ function loadXlsxReader() {
|
|
|
8902
8903
|
return xlsxReader;
|
|
8903
8904
|
}
|
|
8904
8905
|
/**
|
|
8906
|
+
* Put a date the reader left a millisecond short back on its second.
|
|
8907
|
+
*
|
|
8908
|
+
* `read-excel-file` turns Excel's date serials (fractional days) into
|
|
8909
|
+
* milliseconds with `Math.floor`, and the fraction is rarely exact in floating
|
|
8910
|
+
* point: a time of 12:30:00 arrives as 12:29:59.999, and a field that shows
|
|
8911
|
+
* minutes displays 12:29. A date within a millisecond of a whole second is put
|
|
8912
|
+
* back on it; a genuine sub-second value is left alone.
|
|
8913
|
+
*/
|
|
8914
|
+
function snapToSecond(cell) {
|
|
8915
|
+
if (!(cell instanceof Date)) return cell;
|
|
8916
|
+
const time = cell.getTime();
|
|
8917
|
+
const second = Math.round(time / 1e3) * 1e3;
|
|
8918
|
+
return Math.abs(time - second) <= 1 ? new Date(second) : cell;
|
|
8919
|
+
}
|
|
8920
|
+
/**
|
|
8905
8921
|
* Whether this file is delimited text rather than a workbook.
|
|
8906
8922
|
*
|
|
8907
8923
|
* Browsers report `text/csv`, `application/csv` or nothing at all for the same
|
|
@@ -8999,7 +9015,7 @@ function convertFileToJson(file) {
|
|
|
8999
9015
|
row.forEach((cell, index) => {
|
|
9000
9016
|
if (cell === null || cell === void 0) return;
|
|
9001
9017
|
const header = headers.byColumn.get(index);
|
|
9002
|
-
if (header && !isPrototypePollutingKey(header)) obj[header] = cell;
|
|
9018
|
+
if (header && !isPrototypePollutingKey(header)) obj[header] = snapToSecond(cell);
|
|
9003
9019
|
});
|
|
9004
9020
|
parsedData.push(obj);
|
|
9005
9021
|
}
|
|
@@ -9895,8 +9911,8 @@ function EditorCollectionAction({ path, parentCollectionSlugs, parentEntityIds,
|
|
|
9895
9911
|
}
|
|
9896
9912
|
//#endregion
|
|
9897
9913
|
//#region src/components/CollectionViewBinding/CollectionViewActions.tsx
|
|
9898
|
-
var ImportCollectionAction = lazyChunk(() => import("./import-
|
|
9899
|
-
var ExportCollectionAction = lazyChunk(() => import("./export-
|
|
9914
|
+
var ImportCollectionAction = lazyChunk(() => import("./import-ByaJMZuT.js").then((n) => n.t).then((m) => ({ default: m.ImportCollectionAction })));
|
|
9915
|
+
var ExportCollectionAction = lazyChunk(() => import("./export-DIyk1720.js").then((n) => n.t).then((m) => ({ default: m.ExportCollectionAction })));
|
|
9900
9916
|
function CollectionViewActions({ collection, relativePath, parentCollectionSlugs, parentEntityIds, onNewClick, onAddExistingClick, onMultipleDeleteClick, selectionEnabled, path, selectionController, tableController, collectionEntitiesCount, compact, children, openNewDocument }) {
|
|
9901
9917
|
const context = useAdminContext();
|
|
9902
9918
|
const { canCreate, canDelete } = usePermissions();
|
|
@@ -11983,12 +11999,7 @@ function EntityViewBinding({ entity, collection, className, asPage = false, open
|
|
|
11983
11999
|
*/
|
|
11984
12000
|
function EntityIdentityBar({ collection, collectionUrl, title, entityId, status, dirty, saving, onSave, onDiscard, saveDisabled, hasErrors, onSaveAndClose, saveAndClosePlacement = "button", onClose, onBack, onInspect, onViewHistory, externalLink, recordActions, pluginActions, trailing, leading }) {
|
|
11985
12001
|
const { t } = useTranslation();
|
|
11986
|
-
const saveLabel = status === "existing" ? t("save") : status === "copy" ? t("create_copy") : t("create");
|
|
11987
|
-
const closeLabel = status === "existing" ? t("save_and_close") : status === "copy" ? t("create_copy_and_close") : t("create_and_close");
|
|
11988
12002
|
const hasMenu = Boolean(recordActions) || Boolean(onInspect) || Boolean(onViewHistory) || Boolean(externalLink);
|
|
11989
|
-
const saveAndCloseButton = Boolean(onSaveAndClose) && saveAndClosePlacement === "button";
|
|
11990
|
-
const saveAndCloseMenu = Boolean(onSaveAndClose) && saveAndClosePlacement === "menu";
|
|
11991
|
-
const saveTooltip = hasErrors ? t("fix_errors_before_saving") ?? "Fix highlighted errors before saving" : void 0;
|
|
11992
12003
|
return /* @__PURE__ */ jsxs("div", {
|
|
11993
12004
|
className: cls("h-[52px] shrink-0 flex items-center gap-2 pl-1.5 pr-2", "bg-surface-sheet"),
|
|
11994
12005
|
children: [
|
|
@@ -12022,59 +12033,17 @@ function EntityIdentityBar({ collection, collectionUrl, title, entityId, status,
|
|
|
12022
12033
|
}),
|
|
12023
12034
|
entityId !== void 0 && /* @__PURE__ */ jsx(IdChip, { value: String(entityId) }),
|
|
12024
12035
|
/* @__PURE__ */ jsx("div", { className: "flex-1" }),
|
|
12025
|
-
|
|
12036
|
+
pluginActions,
|
|
12037
|
+
/* @__PURE__ */ jsx(EntitySaveActions, {
|
|
12038
|
+
status,
|
|
12026
12039
|
dirty,
|
|
12027
12040
|
saving,
|
|
12028
|
-
|
|
12029
|
-
|
|
12030
|
-
|
|
12031
|
-
|
|
12032
|
-
|
|
12033
|
-
|
|
12034
|
-
size: "small",
|
|
12035
|
-
onClick: onDiscard,
|
|
12036
|
-
children: status === "existing" ? t("discard") : t("clear")
|
|
12037
|
-
}),
|
|
12038
|
-
onSave && /* @__PURE__ */ jsxs("div", {
|
|
12039
|
-
className: "flex items-stretch rounded-lg overflow-hidden",
|
|
12040
|
-
children: [/* @__PURE__ */ jsx(Tooltip, {
|
|
12041
|
-
title: saveTooltip,
|
|
12042
|
-
children: /* @__PURE__ */ jsx(LoadingButton, {
|
|
12043
|
-
variant: saveAndCloseButton ? "text" : "filled",
|
|
12044
|
-
color: "primary",
|
|
12045
|
-
size: "small",
|
|
12046
|
-
loading: saving && !saveAndCloseButton,
|
|
12047
|
-
disabled: saveDisabled,
|
|
12048
|
-
onClick: onSave,
|
|
12049
|
-
className: saveAndCloseMenu ? "rounded-none" : void 0,
|
|
12050
|
-
children: saveLabel
|
|
12051
|
-
})
|
|
12052
|
-
}), saveAndCloseMenu && /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(Menu, {
|
|
12053
|
-
align: "end",
|
|
12054
|
-
trigger: /* @__PURE__ */ jsx(Button, {
|
|
12055
|
-
variant: "filled",
|
|
12056
|
-
color: "primary",
|
|
12057
|
-
size: "small",
|
|
12058
|
-
disabled: saveDisabled,
|
|
12059
|
-
"aria-label": closeLabel,
|
|
12060
|
-
style: { borderLeftColor: "color-mix(in oklab, currentColor 15%, transparent)" },
|
|
12061
|
-
className: "rounded-none px-1.5",
|
|
12062
|
-
children: /* @__PURE__ */ jsx(ChevronDownIcon, { size: iconSize.smallest })
|
|
12063
|
-
}),
|
|
12064
|
-
children: /* @__PURE__ */ jsxs(MenuItem, {
|
|
12065
|
-
onClick: onSaveAndClose,
|
|
12066
|
-
children: [/* @__PURE__ */ jsx(CheckIcon, { size: iconSize.smallest }), closeLabel]
|
|
12067
|
-
})
|
|
12068
|
-
}) })]
|
|
12069
|
-
}),
|
|
12070
|
-
saveAndCloseButton && /* @__PURE__ */ jsx(LoadingButton, {
|
|
12071
|
-
variant: "filled",
|
|
12072
|
-
color: "primary",
|
|
12073
|
-
size: "small",
|
|
12074
|
-
loading: saving,
|
|
12075
|
-
disabled: saveDisabled,
|
|
12076
|
-
onClick: onSaveAndClose,
|
|
12077
|
-
children: closeLabel
|
|
12041
|
+
onSave,
|
|
12042
|
+
onDiscard,
|
|
12043
|
+
saveDisabled,
|
|
12044
|
+
hasErrors,
|
|
12045
|
+
onSaveAndClose,
|
|
12046
|
+
saveAndClosePlacement
|
|
12078
12047
|
}),
|
|
12079
12048
|
hasMenu && /* @__PURE__ */ jsxs(Menu, {
|
|
12080
12049
|
align: "end",
|
|
@@ -12116,6 +12085,78 @@ function EntityIdentityBar({ collection, collectionUrl, title, entityId, status,
|
|
|
12116
12085
|
});
|
|
12117
12086
|
}
|
|
12118
12087
|
/**
|
|
12088
|
+
* Save, "save and close", Discard, and the words saying where the edit stands.
|
|
12089
|
+
*
|
|
12090
|
+
* Its own component because it has two homes. On a page and in the side panel
|
|
12091
|
+
* it sits in the identity bar, where it stays in view while the form scrolls. In
|
|
12092
|
+
* the dialog it sits in a footer under the form: a dialog is read top to bottom
|
|
12093
|
+
* and finished at the bottom, where every other dialog in the app keeps its
|
|
12094
|
+
* buttons, and the bar at its top is left to say what the record is.
|
|
12095
|
+
*/
|
|
12096
|
+
function EntitySaveActions({ status, dirty, saving, onSave, onDiscard, saveDisabled, hasErrors, onSaveAndClose, saveAndClosePlacement = "button" }) {
|
|
12097
|
+
const { t } = useTranslation();
|
|
12098
|
+
const saveLabel = status === "existing" ? t("save") : status === "copy" ? t("create_copy") : t("create");
|
|
12099
|
+
const closeLabel = status === "existing" ? t("save_and_close") : status === "copy" ? t("create_copy_and_close") : t("create_and_close");
|
|
12100
|
+
const saveAndCloseButton = Boolean(onSaveAndClose) && saveAndClosePlacement === "button";
|
|
12101
|
+
const saveAndCloseMenu = Boolean(onSaveAndClose) && saveAndClosePlacement === "menu";
|
|
12102
|
+
const saveTooltip = hasErrors ? t("fix_errors_before_saving") ?? "Fix highlighted errors before saving" : void 0;
|
|
12103
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
12104
|
+
onSave && /* @__PURE__ */ jsx(SaveState, {
|
|
12105
|
+
dirty,
|
|
12106
|
+
saving,
|
|
12107
|
+
status,
|
|
12108
|
+
t
|
|
12109
|
+
}),
|
|
12110
|
+
onDiscard && dirty && !saving && /* @__PURE__ */ jsx(Button, {
|
|
12111
|
+
variant: "text",
|
|
12112
|
+
size: "small",
|
|
12113
|
+
onClick: onDiscard,
|
|
12114
|
+
children: status === "existing" ? t("discard") : t("clear")
|
|
12115
|
+
}),
|
|
12116
|
+
onSave && /* @__PURE__ */ jsxs("div", {
|
|
12117
|
+
className: "flex items-stretch rounded-lg overflow-hidden",
|
|
12118
|
+
children: [/* @__PURE__ */ jsx(Tooltip, {
|
|
12119
|
+
title: saveTooltip,
|
|
12120
|
+
children: /* @__PURE__ */ jsx(LoadingButton, {
|
|
12121
|
+
variant: saveAndCloseButton ? "text" : "filled",
|
|
12122
|
+
color: "primary",
|
|
12123
|
+
size: "small",
|
|
12124
|
+
loading: saving && !saveAndCloseButton,
|
|
12125
|
+
disabled: saveDisabled,
|
|
12126
|
+
onClick: onSave,
|
|
12127
|
+
className: saveAndCloseMenu ? "rounded-none" : void 0,
|
|
12128
|
+
children: saveLabel
|
|
12129
|
+
})
|
|
12130
|
+
}), saveAndCloseMenu && /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(Menu, {
|
|
12131
|
+
align: "end",
|
|
12132
|
+
trigger: /* @__PURE__ */ jsx(Button, {
|
|
12133
|
+
variant: "filled",
|
|
12134
|
+
color: "primary",
|
|
12135
|
+
size: "small",
|
|
12136
|
+
disabled: saveDisabled,
|
|
12137
|
+
"aria-label": closeLabel,
|
|
12138
|
+
style: { borderLeftColor: "color-mix(in oklab, currentColor 15%, transparent)" },
|
|
12139
|
+
className: "rounded-none px-1.5",
|
|
12140
|
+
children: /* @__PURE__ */ jsx(ChevronDownIcon, { size: iconSize.smallest })
|
|
12141
|
+
}),
|
|
12142
|
+
children: /* @__PURE__ */ jsxs(MenuItem, {
|
|
12143
|
+
onClick: onSaveAndClose,
|
|
12144
|
+
children: [/* @__PURE__ */ jsx(CheckIcon, { size: iconSize.smallest }), closeLabel]
|
|
12145
|
+
})
|
|
12146
|
+
}) })]
|
|
12147
|
+
}),
|
|
12148
|
+
saveAndCloseButton && /* @__PURE__ */ jsx(LoadingButton, {
|
|
12149
|
+
variant: "filled",
|
|
12150
|
+
color: "primary",
|
|
12151
|
+
size: "small",
|
|
12152
|
+
loading: saving,
|
|
12153
|
+
disabled: saveDisabled,
|
|
12154
|
+
onClick: onSaveAndClose,
|
|
12155
|
+
children: closeLabel
|
|
12156
|
+
})
|
|
12157
|
+
] });
|
|
12158
|
+
}
|
|
12159
|
+
/**
|
|
12119
12160
|
* The words the unlabelled floating circle never said.
|
|
12120
12161
|
*
|
|
12121
12162
|
* That indicator was a ✓ / pencil / spinner chip stuck to the top-right of the
|
|
@@ -12232,7 +12273,7 @@ function SplitListShowButton({ onClick }) {
|
|
|
12232
12273
|
}
|
|
12233
12274
|
//#endregion
|
|
12234
12275
|
//#region src/components/EntityInspector.tsx
|
|
12235
|
-
var EntityHistoryView = lazyChunk(() => import("./history-
|
|
12276
|
+
var EntityHistoryView = lazyChunk(() => import("./history-CrZEzQ5b.js").then((m) => ({ default: m.EntityHistoryView })));
|
|
12236
12277
|
/**
|
|
12237
12278
|
* The JSON tab pulls `prism-react-renderer` — 85 kB, and it was EAGER.
|
|
12238
12279
|
*
|
|
@@ -18185,6 +18226,34 @@ function EditViewBindingInner({ path, entityId, selectedTab: selectedTabProp, co
|
|
|
18185
18226
|
})
|
|
18186
18227
|
}, `entity_detail_collection_tab_${view.name}`);
|
|
18187
18228
|
});
|
|
18229
|
+
const onSave = formActionsContext ? () => {
|
|
18230
|
+
sideDialogContext.setPendingClose?.(false);
|
|
18231
|
+
pendingCloseRef.current = false;
|
|
18232
|
+
formActionsContext.submit();
|
|
18233
|
+
} : void 0;
|
|
18234
|
+
const onSaveAndClose = formActionsContext && canCloseAfterSave ? () => {
|
|
18235
|
+
if (layout === "split") {
|
|
18236
|
+
pendingCloseRef.current = true;
|
|
18237
|
+
Promise.resolve(formActionsContext.submit()).finally(() => {
|
|
18238
|
+
pendingCloseRef.current = false;
|
|
18239
|
+
});
|
|
18240
|
+
return;
|
|
18241
|
+
}
|
|
18242
|
+
sideDialogContext.setPendingClose?.(true);
|
|
18243
|
+
Promise.resolve(formActionsContext.submit()).finally(() => sideDialogContext.setPendingClose?.(false));
|
|
18244
|
+
} : void 0;
|
|
18245
|
+
const onDiscard = formActionsContext ? () => discard(formActionsContext.formex, status) : void 0;
|
|
18246
|
+
/**
|
|
18247
|
+
* The dialog keeps Save at its foot, not in the bar.
|
|
18248
|
+
*
|
|
18249
|
+
* A dialog is filled in top to bottom and finished at the bottom, which is
|
|
18250
|
+
* where every other dialog in the app puts its buttons; up in the bar's
|
|
18251
|
+
* right-hand corner, Create was the one thing on screen the eye had to
|
|
18252
|
+
* travel back up to reach. The bar keeps what the record is and the ways
|
|
18253
|
+
* out of it. The side panel and the pages keep Save in the bar, where it
|
|
18254
|
+
* stays in view while a long form scrolls.
|
|
18255
|
+
*/
|
|
18256
|
+
const actionsInFooter = layout === "dialog";
|
|
18188
18257
|
const fullScreenButton = !barActions && (layout === "side_panel" || layout === "dialog") && entityId ? /* @__PURE__ */ jsx(Tooltip, {
|
|
18189
18258
|
title: "Open full screen",
|
|
18190
18259
|
children: /* @__PURE__ */ jsx(IconButton, {
|
|
@@ -18212,25 +18281,11 @@ function EditViewBindingInner({ path, entityId, selectedTab: selectedTabProp, co
|
|
|
18212
18281
|
hasErrors: hasFormErrors,
|
|
18213
18282
|
saveDisabled: !canEdit || saveDisabled,
|
|
18214
18283
|
onBack: layout === "full_screen" && !onShowList ? () => navigate(withListState(urlController.buildUrlCollectionPath(path))) : void 0,
|
|
18215
|
-
onSave:
|
|
18216
|
-
|
|
18217
|
-
pendingCloseRef.current = false;
|
|
18218
|
-
formActionsContext.submit();
|
|
18219
|
-
} : void 0,
|
|
18220
|
-
onSaveAndClose: formActionsContext && canCloseAfterSave ? () => {
|
|
18221
|
-
if (layout === "split") {
|
|
18222
|
-
pendingCloseRef.current = true;
|
|
18223
|
-
Promise.resolve(formActionsContext.submit()).finally(() => {
|
|
18224
|
-
pendingCloseRef.current = false;
|
|
18225
|
-
});
|
|
18226
|
-
return;
|
|
18227
|
-
}
|
|
18228
|
-
sideDialogContext.setPendingClose?.(true);
|
|
18229
|
-
Promise.resolve(formActionsContext.submit()).finally(() => sideDialogContext.setPendingClose?.(false));
|
|
18230
|
-
} : void 0,
|
|
18284
|
+
onSave: actionsInFooter ? void 0 : onSave,
|
|
18285
|
+
onSaveAndClose: actionsInFooter ? void 0 : onSaveAndClose,
|
|
18231
18286
|
saveAndClosePlacement: layout === "split" ? "menu" : "button",
|
|
18232
18287
|
onClose: onCloseRequest,
|
|
18233
|
-
onDiscard:
|
|
18288
|
+
onDiscard: actionsInFooter ? void 0 : onDiscard,
|
|
18234
18289
|
onInspect: includeJsonView ? () => setInspectorTab("json") : void 0,
|
|
18235
18290
|
onViewHistory: includeHistoryView ? () => setInspectorTab("history") : void 0,
|
|
18236
18291
|
externalLink: usedEntity ? customizationController?.entityLinkBuilder?.({ entity: usedEntity }) : void 0,
|
|
@@ -18302,6 +18357,19 @@ function EditViewBindingInner({ path, entityId, selectedTab: selectedTabProp, co
|
|
|
18302
18357
|
refreshToken: savedCount,
|
|
18303
18358
|
includeHistory: includeHistoryView
|
|
18304
18359
|
})]
|
|
18360
|
+
}),
|
|
18361
|
+
actionsInFooter && onSave && /* @__PURE__ */ jsx(DialogActions, {
|
|
18362
|
+
translucent: false,
|
|
18363
|
+
children: /* @__PURE__ */ jsx(EntitySaveActions, {
|
|
18364
|
+
status,
|
|
18365
|
+
dirty: Boolean(formContext?.formex?.dirty),
|
|
18366
|
+
saving: Boolean(formContext?.isSaving),
|
|
18367
|
+
hasErrors: hasFormErrors,
|
|
18368
|
+
saveDisabled: !canEdit || saveDisabled,
|
|
18369
|
+
onSave,
|
|
18370
|
+
onSaveAndClose,
|
|
18371
|
+
onDiscard
|
|
18372
|
+
})
|
|
18305
18373
|
})
|
|
18306
18374
|
]
|
|
18307
18375
|
});
|
|
@@ -20394,7 +20462,7 @@ function ArrayOfReferencesFieldBinding({ propertyKey, value, error, showError, d
|
|
|
20394
20462
|
ofProperty.admin?.previewProperties,
|
|
20395
20463
|
value
|
|
20396
20464
|
]);
|
|
20397
|
-
const title = /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(
|
|
20465
|
+
const title = /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(LabelWithIcon, {
|
|
20398
20466
|
propertyKey,
|
|
20399
20467
|
icon: getIconForProperty(property, "small"),
|
|
20400
20468
|
required: property.validation?.required,
|
|
@@ -20486,7 +20554,7 @@ function BlockFieldBinding({ propertyKey, value, error, showError, isSubmitting,
|
|
|
20486
20554
|
storedProps
|
|
20487
20555
|
}, `array_one_of_${internalId}`);
|
|
20488
20556
|
};
|
|
20489
|
-
const title = /* @__PURE__ */ jsx(
|
|
20557
|
+
const title = /* @__PURE__ */ jsx(LabelWithIcon, {
|
|
20490
20558
|
propertyKey,
|
|
20491
20559
|
icon: getIconForProperty(property, "small"),
|
|
20492
20560
|
required: property.validation?.required,
|
|
@@ -20624,25 +20692,22 @@ function DateTimeFieldBinding({ propertyKey, value, setValue, autoFocus, error,
|
|
|
20624
20692
|
value,
|
|
20625
20693
|
setValue
|
|
20626
20694
|
});
|
|
20627
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(
|
|
20628
|
-
|
|
20629
|
-
|
|
20630
|
-
|
|
20631
|
-
|
|
20632
|
-
|
|
20633
|
-
|
|
20634
|
-
|
|
20635
|
-
|
|
20636
|
-
|
|
20637
|
-
|
|
20638
|
-
|
|
20639
|
-
|
|
20640
|
-
|
|
20641
|
-
|
|
20642
|
-
|
|
20643
|
-
}),
|
|
20644
|
-
"aria-label": hideLabel ? property.name ?? propertyKey : void 0
|
|
20645
|
-
})
|
|
20695
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(DateTimeField, {
|
|
20696
|
+
size,
|
|
20697
|
+
value: internalValue,
|
|
20698
|
+
onChange: (dateValue) => setValue(dateValue),
|
|
20699
|
+
mode: property.mode,
|
|
20700
|
+
clearable: property.admin?.clearable,
|
|
20701
|
+
locale,
|
|
20702
|
+
error: showError,
|
|
20703
|
+
disabled,
|
|
20704
|
+
label: hideLabel ? void 0 : /* @__PURE__ */ jsx(LabelWithIcon, {
|
|
20705
|
+
icon: getIconForProperty(property, "small"),
|
|
20706
|
+
required: property.validation?.required,
|
|
20707
|
+
className: showError ? "text-red-500 dark:text-red-500" : "text-text-secondary dark:text-text-secondary-dark",
|
|
20708
|
+
title: property.name ?? propertyKey
|
|
20709
|
+
}),
|
|
20710
|
+
"aria-label": hideLabel ? property.name ?? propertyKey : void 0
|
|
20646
20711
|
}), /* @__PURE__ */ jsx(FieldHelperText, {
|
|
20647
20712
|
includeDescription,
|
|
20648
20713
|
showError,
|
|
@@ -20668,7 +20733,7 @@ function KeyValueFieldBinding({ propertyKey, value, showError, error, disabled,
|
|
|
20668
20733
|
initialValue: getIn(context.formex.initialValues, propertyKey),
|
|
20669
20734
|
fieldName: property.name ?? propertyKey
|
|
20670
20735
|
});
|
|
20671
|
-
const title = /* @__PURE__ */ jsx(
|
|
20736
|
+
const title = /* @__PURE__ */ jsx(LabelWithIcon, {
|
|
20672
20737
|
propertyKey,
|
|
20673
20738
|
icon: getIconForProperty(property, "small"),
|
|
20674
20739
|
required: property.validation?.required,
|
|
@@ -21135,7 +21200,7 @@ function MapFieldBinding({ propertyKey, value, showError, error, disabled, prope
|
|
|
21135
21200
|
} });
|
|
21136
21201
|
},
|
|
21137
21202
|
innerClassName: "px-2 md:px-4 pb-2 md:pb-4 pt-1 md:pt-2 bg-surface-card",
|
|
21138
|
-
title: /* @__PURE__ */ jsx(
|
|
21203
|
+
title: /* @__PURE__ */ jsx(LabelWithIcon, {
|
|
21139
21204
|
propertyKey,
|
|
21140
21205
|
icon: getIconForProperty(property, "small"),
|
|
21141
21206
|
required: property.validation?.required,
|
|
@@ -21304,7 +21369,7 @@ function MarkdownEditorFieldBinding({ property, propertyKey, value, setValue, in
|
|
|
21304
21369
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
21305
21370
|
!hideLabel && /* @__PURE__ */ jsx("div", {
|
|
21306
21371
|
className: "flex items-center w-full",
|
|
21307
|
-
children: /* @__PURE__ */ jsx(
|
|
21372
|
+
children: /* @__PURE__ */ jsx(LabelWithIcon, {
|
|
21308
21373
|
propertyKey,
|
|
21309
21374
|
icon: getIconForProperty(property, "small"),
|
|
21310
21375
|
required: property.validation?.required,
|
|
@@ -21390,7 +21455,7 @@ function MultiSelectFieldBinding({ propertyKey, value, setValue, error, showErro
|
|
|
21390
21455
|
value: validValue ? value.map((v) => v?.toString()) : [],
|
|
21391
21456
|
disabled,
|
|
21392
21457
|
modalPopover: true,
|
|
21393
|
-
label: hideLabel ? void 0 : /* @__PURE__ */ jsx(
|
|
21458
|
+
label: hideLabel ? void 0 : /* @__PURE__ */ jsx(LabelWithIcon, {
|
|
21394
21459
|
propertyKey,
|
|
21395
21460
|
icon: getIconForProperty(property, "small"),
|
|
21396
21461
|
required: property.validation?.required,
|
|
@@ -21458,7 +21523,7 @@ function ReferenceFieldBindingInternal({ propertyKey, value, setValue, error, sh
|
|
|
21458
21523
|
referenceDialogController.open();
|
|
21459
21524
|
};
|
|
21460
21525
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
21461
|
-
!minimalistView && !hideLabel && /* @__PURE__ */ jsx(
|
|
21526
|
+
!minimalistView && !hideLabel && /* @__PURE__ */ jsx(LabelWithIcon, {
|
|
21462
21527
|
propertyKey,
|
|
21463
21528
|
icon: getIconForProperty(property, "small"),
|
|
21464
21529
|
required: property.validation?.required,
|
|
@@ -21558,7 +21623,7 @@ function RepeatFieldBinding({ propertyKey, value, error, showError, isSubmitting
|
|
|
21558
21623
|
newDefaultEntry: getDefaultValueFor(property.of),
|
|
21559
21624
|
onValueChange: (value) => setFieldValue(propertyKey, value)
|
|
21560
21625
|
});
|
|
21561
|
-
const title = /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(
|
|
21626
|
+
const title = /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(LabelWithIcon, {
|
|
21562
21627
|
propertyKey,
|
|
21563
21628
|
icon: getIconForProperty(property, "small"),
|
|
21564
21629
|
required: property.validation?.required,
|
|
@@ -21620,14 +21685,12 @@ function SelectFieldBinding({ propertyKey, value, setValue, error, showError, di
|
|
|
21620
21685
|
fullWidth: true,
|
|
21621
21686
|
position: "item-aligned",
|
|
21622
21687
|
inputClassName: cls("w-full"),
|
|
21623
|
-
label: hideLabel ? void 0 : /* @__PURE__ */ jsx(
|
|
21688
|
+
label: hideLabel ? void 0 : /* @__PURE__ */ jsx(LabelWithIcon, {
|
|
21689
|
+
icon: getIconForProperty(property, "small"),
|
|
21690
|
+
required: property.validation?.required,
|
|
21691
|
+
title: property.name ?? propertyKey,
|
|
21624
21692
|
propertyKey,
|
|
21625
|
-
|
|
21626
|
-
icon: getIconForProperty(property, "small"),
|
|
21627
|
-
required: property.validation?.required,
|
|
21628
|
-
title: property.name ?? propertyKey,
|
|
21629
|
-
className: "h-8 text-text-secondary dark:text-text-secondary-dark ml-3.5 my-0"
|
|
21630
|
-
})
|
|
21693
|
+
className: "h-8 text-text-secondary dark:text-text-secondary-dark ml-3.5 my-0"
|
|
21631
21694
|
}),
|
|
21632
21695
|
endAdornment: property.admin?.clearable && !disabled && /* @__PURE__ */ jsx(IconButton, {
|
|
21633
21696
|
size: "small",
|
|
@@ -21728,7 +21791,7 @@ function StorageUploadFieldBinding({ propertyKey, value, setValue, error, showEr
|
|
|
21728
21791
|
setValue
|
|
21729
21792
|
});
|
|
21730
21793
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
21731
|
-
!minimalistView && !hideLabel && /* @__PURE__ */ jsx(
|
|
21794
|
+
!minimalistView && !hideLabel && /* @__PURE__ */ jsx(LabelWithIcon, {
|
|
21732
21795
|
propertyKey,
|
|
21733
21796
|
icon: getIconForProperty(property, "small"),
|
|
21734
21797
|
required: property.validation?.required,
|
|
@@ -21968,22 +22031,19 @@ var SwitchFieldBinding = function SwitchFieldBinding({ propertyKey, value, setVa
|
|
|
21968
22031
|
value,
|
|
21969
22032
|
setValue
|
|
21970
22033
|
});
|
|
21971
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(
|
|
21972
|
-
|
|
21973
|
-
|
|
21974
|
-
|
|
21975
|
-
|
|
21976
|
-
|
|
21977
|
-
|
|
21978
|
-
|
|
21979
|
-
|
|
21980
|
-
|
|
21981
|
-
|
|
21982
|
-
|
|
21983
|
-
|
|
21984
|
-
autoFocus,
|
|
21985
|
-
size
|
|
21986
|
-
})
|
|
22034
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(BooleanSwitchWithLabel, {
|
|
22035
|
+
value,
|
|
22036
|
+
onValueChange: (v) => setValue(v),
|
|
22037
|
+
error: showError,
|
|
22038
|
+
position: hideLabel ? "start" : void 0,
|
|
22039
|
+
label: hideLabel ? void 0 : /* @__PURE__ */ jsx(LabelWithIcon, {
|
|
22040
|
+
icon: getIconForProperty(property, "small"),
|
|
22041
|
+
required: property.validation?.required,
|
|
22042
|
+
title: property.name ?? propertyKey
|
|
22043
|
+
}),
|
|
22044
|
+
disabled,
|
|
22045
|
+
autoFocus,
|
|
22046
|
+
size
|
|
21987
22047
|
}), /* @__PURE__ */ jsx(FieldHelperText, {
|
|
21988
22048
|
includeDescription,
|
|
21989
22049
|
showError,
|
|
@@ -22040,47 +22100,44 @@ function TextFieldBinding({ propertyKey, value, setValue, error, showError, disa
|
|
|
22040
22100
|
});
|
|
22041
22101
|
const accessibleName = property.name ?? propertyKey;
|
|
22042
22102
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
22043
|
-
/* @__PURE__ */
|
|
22044
|
-
|
|
22045
|
-
children:
|
|
22046
|
-
|
|
22047
|
-
|
|
22048
|
-
label
|
|
22049
|
-
className: "pointer-events-none absolute top-1 text-xs font-medium px-3 text-text-secondary dark:text-text-secondary-dark",
|
|
22050
|
-
children: label
|
|
22051
|
-
}),
|
|
22052
|
-
/* @__PURE__ */ jsx(TextareaAutosize, {
|
|
22053
|
-
value: displayValue,
|
|
22054
|
-
onChange,
|
|
22055
|
-
autoFocus,
|
|
22056
|
-
disabled,
|
|
22057
|
-
"aria-label": accessibleName,
|
|
22058
|
-
className: cls("rounded-md resize-none w-full outline-none text-sm bg-transparent min-h-[64px] px-3", label ? "pt-8 pb-2" : "py-2", disabled && "outline-none opacity-50 text-surface-accent-600 dark:text-surface-accent-500", showError && error ? "text-red-500 dark:text-red-600" : "")
|
|
22059
|
-
}),
|
|
22060
|
-
property.admin?.clearable && /* @__PURE__ */ jsx("div", {
|
|
22061
|
-
className: "flex flex-row justify-center items-center absolute h-full right-0 top-0 mr-4",
|
|
22062
|
-
children: /* @__PURE__ */ jsx(IconButton, {
|
|
22063
|
-
onClick: handleClearClick,
|
|
22064
|
-
children: /* @__PURE__ */ jsx(XIcon, {})
|
|
22065
|
-
})
|
|
22066
|
-
})
|
|
22067
|
-
]
|
|
22068
|
-
}) : /* @__PURE__ */ jsx(TextField, {
|
|
22069
|
-
size,
|
|
22070
|
-
value: displayValue,
|
|
22071
|
-
onChange,
|
|
22072
|
-
autoFocus,
|
|
22073
|
-
label,
|
|
22074
|
-
"aria-label": label ? void 0 : accessibleName,
|
|
22075
|
-
type: inputType,
|
|
22076
|
-
disabled,
|
|
22077
|
-
endAdornment: property.admin?.clearable && /* @__PURE__ */ jsx(IconButton, {
|
|
22078
|
-
onClick: handleClearClick,
|
|
22079
|
-
children: /* @__PURE__ */ jsx(XIcon, {})
|
|
22103
|
+
isMultiline ? /* @__PURE__ */ jsxs("div", {
|
|
22104
|
+
className: cls("rounded-md relative max-w-full min-h-[64px]", fieldBackgroundMixin, fieldBackgroundHoverMixin, showError && error ? "border border-red-500 dark:border-red-600" : ""),
|
|
22105
|
+
children: [
|
|
22106
|
+
label && /* @__PURE__ */ jsx("div", {
|
|
22107
|
+
className: "pointer-events-none absolute top-1 text-xs font-medium px-3 text-text-secondary dark:text-text-secondary-dark",
|
|
22108
|
+
children: label
|
|
22080
22109
|
}),
|
|
22081
|
-
|
|
22082
|
-
|
|
22083
|
-
|
|
22110
|
+
/* @__PURE__ */ jsx(TextareaAutosize, {
|
|
22111
|
+
value: displayValue,
|
|
22112
|
+
onChange,
|
|
22113
|
+
autoFocus,
|
|
22114
|
+
disabled,
|
|
22115
|
+
"aria-label": accessibleName,
|
|
22116
|
+
className: cls("rounded-md resize-none w-full outline-none text-sm bg-transparent min-h-[64px] px-3", label ? "pt-8 pb-2" : "py-2", disabled && "outline-none opacity-50 text-surface-accent-600 dark:text-surface-accent-500", showError && error ? "text-red-500 dark:text-red-600" : "")
|
|
22117
|
+
}),
|
|
22118
|
+
property.admin?.clearable && /* @__PURE__ */ jsx("div", {
|
|
22119
|
+
className: "flex flex-row justify-center items-center absolute h-full right-0 top-0 mr-4",
|
|
22120
|
+
children: /* @__PURE__ */ jsx(IconButton, {
|
|
22121
|
+
onClick: handleClearClick,
|
|
22122
|
+
children: /* @__PURE__ */ jsx(XIcon, {})
|
|
22123
|
+
})
|
|
22124
|
+
})
|
|
22125
|
+
]
|
|
22126
|
+
}) : /* @__PURE__ */ jsx(TextField, {
|
|
22127
|
+
size,
|
|
22128
|
+
value: displayValue,
|
|
22129
|
+
onChange,
|
|
22130
|
+
autoFocus,
|
|
22131
|
+
label,
|
|
22132
|
+
"aria-label": label ? void 0 : accessibleName,
|
|
22133
|
+
type: inputType,
|
|
22134
|
+
disabled,
|
|
22135
|
+
endAdornment: property.admin?.clearable && /* @__PURE__ */ jsx(IconButton, {
|
|
22136
|
+
onClick: handleClearClick,
|
|
22137
|
+
children: /* @__PURE__ */ jsx(XIcon, {})
|
|
22138
|
+
}),
|
|
22139
|
+
error: showError ? !!error : void 0,
|
|
22140
|
+
inputClassName: error ? "text-red-500 dark:text-red-600" : ""
|
|
22084
22141
|
}),
|
|
22085
22142
|
/* @__PURE__ */ jsx(FieldHelperText, {
|
|
22086
22143
|
includeDescription,
|
|
@@ -22153,84 +22210,81 @@ function VectorFieldBinding({ propertyKey, value, setValue, error, showError, di
|
|
|
22153
22210
|
className: "flex items-center justify-between mb-1",
|
|
22154
22211
|
children: label
|
|
22155
22212
|
}),
|
|
22156
|
-
/* @__PURE__ */ jsx(
|
|
22157
|
-
|
|
22158
|
-
children: /* @__PURE__ */
|
|
22159
|
-
className: "
|
|
22160
|
-
children:
|
|
22161
|
-
className:
|
|
22213
|
+
/* @__PURE__ */ jsx("div", {
|
|
22214
|
+
className: "w-full",
|
|
22215
|
+
children: !isEditing ? /* @__PURE__ */ jsxs("div", {
|
|
22216
|
+
className: cls("flex flex-col gap-3 p-4 rounded-xl border bg-surface-field transition-all duration-200", defaultBorderMixin),
|
|
22217
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
22218
|
+
className: "flex items-center justify-between flex-wrap gap-2",
|
|
22162
22219
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
22163
|
-
className: "flex items-center
|
|
22164
|
-
children: [
|
|
22165
|
-
className:
|
|
22166
|
-
|
|
22167
|
-
|
|
22168
|
-
|
|
22169
|
-
|
|
22170
|
-
|
|
22171
|
-
|
|
22172
|
-
|
|
22173
|
-
|
|
22174
|
-
|
|
22175
|
-
})
|
|
22176
|
-
]
|
|
22177
|
-
}), /* @__PURE__ */ jsxs("div", {
|
|
22178
|
-
className: "flex items-center gap-2",
|
|
22179
|
-
children: [
|
|
22180
|
-
isPopulated && /* @__PURE__ */ jsx(Button, {
|
|
22181
|
-
variant: "text",
|
|
22182
|
-
size: "small",
|
|
22183
|
-
onClick: () => setShowValues(!showValues),
|
|
22184
|
-
startIcon: showValues ? /* @__PURE__ */ jsx(EyeOffIcon, { size: 14 }) : /* @__PURE__ */ jsx(EyeIcon, { size: 14 }),
|
|
22185
|
-
children: showValues ? "Hide values" : "Show values"
|
|
22186
|
-
}),
|
|
22187
|
-
!disabled && /* @__PURE__ */ jsx(Button, {
|
|
22188
|
-
variant: "outlined",
|
|
22189
|
-
size: "small",
|
|
22190
|
-
onClick: () => setIsEditing(true),
|
|
22191
|
-
startIcon: /* @__PURE__ */ jsx(PencilIcon, { size: 14 }),
|
|
22192
|
-
children: isPopulated ? "Edit values" : "Add values"
|
|
22193
|
-
}),
|
|
22194
|
-
isPopulated && !disabled && /* @__PURE__ */ jsx(IconButton, {
|
|
22195
|
-
size: "small",
|
|
22196
|
-
onClick: handleClearClick,
|
|
22197
|
-
className: "text-text-secondary hover:text-red-500",
|
|
22198
|
-
children: /* @__PURE__ */ jsx(Trash2Icon, { size: 14 })
|
|
22199
|
-
})
|
|
22200
|
-
]
|
|
22201
|
-
})]
|
|
22202
|
-
}), showValues && isPopulated && /* @__PURE__ */ jsx("div", {
|
|
22203
|
-
className: "mt-1 p-3 rounded-lg bg-surface-well border border-hairline max-h-36 overflow-y-auto font-mono text-[11px] leading-relaxed text-text-secondary dark:text-text-secondary-dark break-all selection:bg-primary/20",
|
|
22204
|
-
children: arrayValue.join(", ")
|
|
22205
|
-
})]
|
|
22206
|
-
}) : /* @__PURE__ */ jsxs("div", {
|
|
22207
|
-
className: cls("flex flex-col gap-2 p-4 rounded-xl border bg-surface-field", defaultBorderMixin),
|
|
22208
|
-
children: [/* @__PURE__ */ jsx(TextField, {
|
|
22209
|
-
size,
|
|
22210
|
-
"aria-label": `${property.name ?? propertyKey} vector values`,
|
|
22211
|
-
value: textValue,
|
|
22212
|
-
onChange,
|
|
22213
|
-
autoFocus: true,
|
|
22214
|
-
placeholder: `e.g., 0.15, -0.42, 0.88 (Requires ${property.dimensions} dimensions)`,
|
|
22215
|
-
disabled,
|
|
22216
|
-
error: showError ? !!error : void 0,
|
|
22217
|
-
inputClassName: error ? "text-red-500 dark:text-red-600 font-mono text-xs" : "font-mono text-xs"
|
|
22220
|
+
className: "flex items-center gap-2.5",
|
|
22221
|
+
children: [
|
|
22222
|
+
/* @__PURE__ */ jsx("div", { className: `w-2.5 h-2.5 rounded-full ${isPopulated ? "bg-emerald-500 animate-pulse" : "bg-surface-300 dark:bg-surface-600"}` }),
|
|
22223
|
+
/* @__PURE__ */ jsx("span", {
|
|
22224
|
+
className: "text-sm font-semibold text-text-primary dark:text-text-primary-dark",
|
|
22225
|
+
children: isPopulated ? `${arrayValue.length} Dimensions` : "Empty Vector"
|
|
22226
|
+
}),
|
|
22227
|
+
isPopulated && /* @__PURE__ */ jsx("span", {
|
|
22228
|
+
className: "text-xs text-text-secondary dark:text-text-secondary-dark px-2 py-0.5 rounded-full bg-surface-raised font-medium",
|
|
22229
|
+
children: "Embedding"
|
|
22230
|
+
})
|
|
22231
|
+
]
|
|
22218
22232
|
}), /* @__PURE__ */ jsxs("div", {
|
|
22219
|
-
className: "flex
|
|
22220
|
-
children: [
|
|
22221
|
-
|
|
22222
|
-
|
|
22223
|
-
|
|
22224
|
-
|
|
22225
|
-
|
|
22226
|
-
|
|
22227
|
-
|
|
22228
|
-
|
|
22229
|
-
|
|
22230
|
-
|
|
22231
|
-
|
|
22233
|
+
className: "flex items-center gap-2",
|
|
22234
|
+
children: [
|
|
22235
|
+
isPopulated && /* @__PURE__ */ jsx(Button, {
|
|
22236
|
+
variant: "text",
|
|
22237
|
+
size: "small",
|
|
22238
|
+
onClick: () => setShowValues(!showValues),
|
|
22239
|
+
startIcon: showValues ? /* @__PURE__ */ jsx(EyeOffIcon, { size: 14 }) : /* @__PURE__ */ jsx(EyeIcon, { size: 14 }),
|
|
22240
|
+
children: showValues ? "Hide values" : "Show values"
|
|
22241
|
+
}),
|
|
22242
|
+
!disabled && /* @__PURE__ */ jsx(Button, {
|
|
22243
|
+
variant: "outlined",
|
|
22244
|
+
size: "small",
|
|
22245
|
+
onClick: () => setIsEditing(true),
|
|
22246
|
+
startIcon: /* @__PURE__ */ jsx(PencilIcon, { size: 14 }),
|
|
22247
|
+
children: isPopulated ? "Edit values" : "Add values"
|
|
22248
|
+
}),
|
|
22249
|
+
isPopulated && !disabled && /* @__PURE__ */ jsx(IconButton, {
|
|
22250
|
+
size: "small",
|
|
22251
|
+
onClick: handleClearClick,
|
|
22252
|
+
className: "text-text-secondary hover:text-red-500",
|
|
22253
|
+
children: /* @__PURE__ */ jsx(Trash2Icon, { size: 14 })
|
|
22254
|
+
})
|
|
22255
|
+
]
|
|
22232
22256
|
})]
|
|
22233
|
-
})
|
|
22257
|
+
}), showValues && isPopulated && /* @__PURE__ */ jsx("div", {
|
|
22258
|
+
className: "mt-1 p-3 rounded-lg bg-surface-well border border-hairline max-h-36 overflow-y-auto font-mono text-[11px] leading-relaxed text-text-secondary dark:text-text-secondary-dark break-all selection:bg-primary/20",
|
|
22259
|
+
children: arrayValue.join(", ")
|
|
22260
|
+
})]
|
|
22261
|
+
}) : /* @__PURE__ */ jsxs("div", {
|
|
22262
|
+
className: cls("flex flex-col gap-2 p-4 rounded-xl border bg-surface-field", defaultBorderMixin),
|
|
22263
|
+
children: [/* @__PURE__ */ jsx(TextField, {
|
|
22264
|
+
size,
|
|
22265
|
+
"aria-label": `${property.name ?? propertyKey} vector values`,
|
|
22266
|
+
value: textValue,
|
|
22267
|
+
onChange,
|
|
22268
|
+
autoFocus: true,
|
|
22269
|
+
placeholder: `e.g., 0.15, -0.42, 0.88 (Requires ${property.dimensions} dimensions)`,
|
|
22270
|
+
disabled,
|
|
22271
|
+
error: showError ? !!error : void 0,
|
|
22272
|
+
inputClassName: error ? "text-red-500 dark:text-red-600 font-mono text-xs" : "font-mono text-xs"
|
|
22273
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
22274
|
+
className: "flex justify-end gap-2 mt-2",
|
|
22275
|
+
children: [/* @__PURE__ */ jsx(Button, {
|
|
22276
|
+
variant: "outlined",
|
|
22277
|
+
size: "small",
|
|
22278
|
+
onClick: () => setIsEditing(false),
|
|
22279
|
+
children: "Cancel"
|
|
22280
|
+
}), /* @__PURE__ */ jsx(Button, {
|
|
22281
|
+
variant: "filled",
|
|
22282
|
+
size: "small",
|
|
22283
|
+
onClick: () => setIsEditing(false),
|
|
22284
|
+
startIcon: /* @__PURE__ */ jsx(CheckIcon, { size: 14 }),
|
|
22285
|
+
children: "Done"
|
|
22286
|
+
})]
|
|
22287
|
+
})]
|
|
22234
22288
|
})
|
|
22235
22289
|
}),
|
|
22236
22290
|
/* @__PURE__ */ jsx(FieldHelperText, {
|
|
@@ -22336,49 +22390,46 @@ function GeopointFieldBinding({ propertyKey, value, setValue, error, showError,
|
|
|
22336
22390
|
title: property.name ?? propertyKey
|
|
22337
22391
|
})
|
|
22338
22392
|
}),
|
|
22339
|
-
/* @__PURE__ */
|
|
22340
|
-
|
|
22341
|
-
children:
|
|
22342
|
-
|
|
22343
|
-
|
|
22344
|
-
|
|
22345
|
-
|
|
22346
|
-
|
|
22347
|
-
|
|
22348
|
-
|
|
22349
|
-
|
|
22350
|
-
|
|
22351
|
-
|
|
22352
|
-
|
|
22353
|
-
|
|
22354
|
-
|
|
22355
|
-
|
|
22356
|
-
|
|
22357
|
-
|
|
22358
|
-
|
|
22359
|
-
|
|
22360
|
-
|
|
22361
|
-
|
|
22362
|
-
|
|
22363
|
-
|
|
22364
|
-
|
|
22365
|
-
|
|
22366
|
-
|
|
22367
|
-
|
|
22368
|
-
|
|
22369
|
-
|
|
22370
|
-
|
|
22371
|
-
|
|
22372
|
-
|
|
22373
|
-
|
|
22374
|
-
|
|
22375
|
-
|
|
22376
|
-
|
|
22377
|
-
|
|
22378
|
-
|
|
22379
|
-
})
|
|
22380
|
-
]
|
|
22381
|
-
})
|
|
22393
|
+
/* @__PURE__ */ jsxs("div", {
|
|
22394
|
+
className: "flex gap-4 w-full items-center",
|
|
22395
|
+
children: [
|
|
22396
|
+
/* @__PURE__ */ jsx(TextField, {
|
|
22397
|
+
className: "flex-1",
|
|
22398
|
+
size,
|
|
22399
|
+
label: "Latitude",
|
|
22400
|
+
value: latText,
|
|
22401
|
+
autoFocus,
|
|
22402
|
+
disabled,
|
|
22403
|
+
error: showError ? Boolean(error) || latInvalid : latInvalid,
|
|
22404
|
+
onChange: (e) => {
|
|
22405
|
+
setLatText(e.target.value);
|
|
22406
|
+
commit(e.target.value, lngText);
|
|
22407
|
+
},
|
|
22408
|
+
placeholder: "e.g. 41.3874",
|
|
22409
|
+
inputClassName: "font-mono"
|
|
22410
|
+
}),
|
|
22411
|
+
/* @__PURE__ */ jsx(TextField, {
|
|
22412
|
+
className: "flex-1",
|
|
22413
|
+
size,
|
|
22414
|
+
label: "Longitude",
|
|
22415
|
+
value: lngText,
|
|
22416
|
+
disabled,
|
|
22417
|
+
error: showError ? Boolean(error) || lngInvalid : lngInvalid,
|
|
22418
|
+
onChange: (e) => {
|
|
22419
|
+
setLngText(e.target.value);
|
|
22420
|
+
commit(latText, e.target.value);
|
|
22421
|
+
},
|
|
22422
|
+
placeholder: "e.g. 2.1686",
|
|
22423
|
+
inputClassName: "font-mono"
|
|
22424
|
+
}),
|
|
22425
|
+
!disabled && (latText || lngText) && /* @__PURE__ */ jsx(IconButton, {
|
|
22426
|
+
size: "small",
|
|
22427
|
+
onClick: handleClear,
|
|
22428
|
+
className: "shrink-0 text-text-secondary hover:text-red-500",
|
|
22429
|
+
"aria-label": "Clear location",
|
|
22430
|
+
children: /* @__PURE__ */ jsx(Trash2Icon, { size: 14 })
|
|
22431
|
+
})
|
|
22432
|
+
]
|
|
22382
22433
|
}),
|
|
22383
22434
|
/* @__PURE__ */ jsx(FieldHelperText, {
|
|
22384
22435
|
includeDescription,
|
|
@@ -22459,59 +22510,56 @@ function BinaryFieldBinding({ propertyKey, value, setValue, error, showError, di
|
|
|
22459
22510
|
title: property.name ?? propertyKey
|
|
22460
22511
|
})
|
|
22461
22512
|
}),
|
|
22462
|
-
/* @__PURE__ */ jsx(
|
|
22463
|
-
|
|
22464
|
-
children: /* @__PURE__ */
|
|
22465
|
-
className: "
|
|
22466
|
-
children:
|
|
22467
|
-
className:
|
|
22468
|
-
children: [/* @__PURE__ */
|
|
22469
|
-
className: "
|
|
22470
|
-
children:
|
|
22471
|
-
className: "text-sm font-semibold text-text-primary truncate",
|
|
22472
|
-
children: malformed ? "Invalid base64" : isPopulated ? `${humanSize(bytes)} of binary data` : "Empty"
|
|
22473
|
-
})]
|
|
22474
|
-
}), /* @__PURE__ */ jsxs("div", {
|
|
22475
|
-
className: "flex items-center gap-2 shrink-0",
|
|
22476
|
-
children: [!disabled && /* @__PURE__ */ jsx(Button, {
|
|
22477
|
-
variant: "outlined",
|
|
22478
|
-
size: "small",
|
|
22479
|
-
onClick: () => setIsEditing(true),
|
|
22480
|
-
startIcon: /* @__PURE__ */ jsx(PencilIcon, { size: 14 }),
|
|
22481
|
-
children: isPopulated ? "Edit base64" : "Add base64"
|
|
22482
|
-
}), isPopulated && !disabled && /* @__PURE__ */ jsx(IconButton, {
|
|
22483
|
-
size: "small",
|
|
22484
|
-
onClick: handleClear,
|
|
22485
|
-
className: "text-text-secondary hover:text-red-500",
|
|
22486
|
-
"aria-label": "Clear binary value",
|
|
22487
|
-
children: /* @__PURE__ */ jsx(Trash2Icon, { size: 14 })
|
|
22488
|
-
})]
|
|
22513
|
+
/* @__PURE__ */ jsx("div", {
|
|
22514
|
+
className: "w-full",
|
|
22515
|
+
children: !isEditing ? /* @__PURE__ */ jsxs("div", {
|
|
22516
|
+
className: cls("flex items-center justify-between gap-2 p-4 rounded-xl border bg-surface-field", defaultBorderMixin),
|
|
22517
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
22518
|
+
className: "flex items-center gap-2.5 min-w-0",
|
|
22519
|
+
children: [/* @__PURE__ */ jsx("div", { className: `w-2.5 h-2.5 rounded-full shrink-0 ${isPopulated ? "bg-emerald-500" : "bg-surface-300 dark:bg-surface-600"}` }), /* @__PURE__ */ jsx("span", {
|
|
22520
|
+
className: "text-sm font-semibold text-text-primary truncate",
|
|
22521
|
+
children: malformed ? "Invalid base64" : isPopulated ? `${humanSize(bytes)} of binary data` : "Empty"
|
|
22489
22522
|
})]
|
|
22490
|
-
})
|
|
22491
|
-
className:
|
|
22492
|
-
children: [/* @__PURE__ */ jsx(
|
|
22493
|
-
|
|
22494
|
-
"
|
|
22495
|
-
|
|
22496
|
-
|
|
22497
|
-
|
|
22498
|
-
|
|
22499
|
-
|
|
22500
|
-
|
|
22501
|
-
|
|
22502
|
-
|
|
22503
|
-
|
|
22504
|
-
}), /* @__PURE__ */ jsx("div", {
|
|
22505
|
-
className: "flex justify-end",
|
|
22506
|
-
children: /* @__PURE__ */ jsx(Button, {
|
|
22507
|
-
variant: "filled",
|
|
22508
|
-
size: "small",
|
|
22509
|
-
onClick: () => setIsEditing(false),
|
|
22510
|
-
startIcon: /* @__PURE__ */ jsx(CheckIcon, { size: 14 }),
|
|
22511
|
-
children: "Done"
|
|
22512
|
-
})
|
|
22523
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
22524
|
+
className: "flex items-center gap-2 shrink-0",
|
|
22525
|
+
children: [!disabled && /* @__PURE__ */ jsx(Button, {
|
|
22526
|
+
variant: "outlined",
|
|
22527
|
+
size: "small",
|
|
22528
|
+
onClick: () => setIsEditing(true),
|
|
22529
|
+
startIcon: /* @__PURE__ */ jsx(PencilIcon, { size: 14 }),
|
|
22530
|
+
children: isPopulated ? "Edit base64" : "Add base64"
|
|
22531
|
+
}), isPopulated && !disabled && /* @__PURE__ */ jsx(IconButton, {
|
|
22532
|
+
size: "small",
|
|
22533
|
+
onClick: handleClear,
|
|
22534
|
+
className: "text-text-secondary hover:text-red-500",
|
|
22535
|
+
"aria-label": "Clear binary value",
|
|
22536
|
+
children: /* @__PURE__ */ jsx(Trash2Icon, { size: 14 })
|
|
22513
22537
|
})]
|
|
22514
|
-
})
|
|
22538
|
+
})]
|
|
22539
|
+
}) : /* @__PURE__ */ jsxs("div", {
|
|
22540
|
+
className: cls("flex flex-col gap-2 p-4 rounded-xl border", defaultBorderMixin),
|
|
22541
|
+
children: [/* @__PURE__ */ jsx(TextField, {
|
|
22542
|
+
size,
|
|
22543
|
+
"aria-label": `${property.name ?? propertyKey} base64 value`,
|
|
22544
|
+
value: text,
|
|
22545
|
+
onChange,
|
|
22546
|
+
autoFocus: autoFocus ?? true,
|
|
22547
|
+
multiline: true,
|
|
22548
|
+
minRows: 4,
|
|
22549
|
+
disabled,
|
|
22550
|
+
placeholder: "Base64-encoded bytes, e.g. iVBORw0KGgo…",
|
|
22551
|
+
error: showError ? Boolean(error) || malformed : malformed,
|
|
22552
|
+
inputClassName: `font-mono text-xs ${malformed ? "text-red-500" : ""}`
|
|
22553
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
22554
|
+
className: "flex justify-end",
|
|
22555
|
+
children: /* @__PURE__ */ jsx(Button, {
|
|
22556
|
+
variant: "filled",
|
|
22557
|
+
size: "small",
|
|
22558
|
+
onClick: () => setIsEditing(false),
|
|
22559
|
+
startIcon: /* @__PURE__ */ jsx(CheckIcon, { size: 14 }),
|
|
22560
|
+
children: "Done"
|
|
22561
|
+
})
|
|
22562
|
+
})]
|
|
22515
22563
|
})
|
|
22516
22564
|
}),
|
|
22517
22565
|
/* @__PURE__ */ jsx(FieldHelperText, {
|
|
@@ -22576,7 +22624,7 @@ function MultipleRelationFieldBinding({ propertyKey, value: valueProp, error, sh
|
|
|
22576
22624
|
property.admin?.previewProperties,
|
|
22577
22625
|
value
|
|
22578
22626
|
]);
|
|
22579
|
-
const title = /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(
|
|
22627
|
+
const title = /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(LabelWithIcon, {
|
|
22580
22628
|
propertyKey,
|
|
22581
22629
|
icon: getIconForProperty(property, "small"),
|
|
22582
22630
|
required: property.validation?.required,
|
|
@@ -22657,7 +22705,7 @@ function RelationSelectorBinding({ propertyKey, value, size, error, showError, d
|
|
|
22657
22705
|
return /* @__PURE__ */ jsxs("div", {
|
|
22658
22706
|
className: "",
|
|
22659
22707
|
children: [
|
|
22660
|
-
!hideLabel && /* @__PURE__ */ jsx(
|
|
22708
|
+
!hideLabel && /* @__PURE__ */ jsx(LabelWithIcon, {
|
|
22661
22709
|
propertyKey,
|
|
22662
22710
|
icon: getIconForProperty(property, "small"),
|
|
22663
22711
|
required: property.validation?.required,
|
|
@@ -22707,7 +22755,7 @@ function SingleRelationFieldBinding({ propertyKey, value, size, error, showError
|
|
|
22707
22755
|
};
|
|
22708
22756
|
const usedRelation = Array.isArray(value) ? void 0 : normalizedValue ?? void 0;
|
|
22709
22757
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
22710
|
-
!hideLabel && /* @__PURE__ */ jsx(
|
|
22758
|
+
!hideLabel && /* @__PURE__ */ jsx(LabelWithIcon, {
|
|
22711
22759
|
propertyKey,
|
|
22712
22760
|
icon: getIconForProperty(property, "small"),
|
|
22713
22761
|
required: property.validation?.required,
|
|
@@ -22759,14 +22807,12 @@ function SingleRelationFieldBinding({ propertyKey, value, size, error, showError
|
|
|
22759
22807
|
function UserSelectFieldBinding({ propertyKey, value, setValue, error, showError, disabled, autoFocus, touched, property, includeDescription, hideLabel, size = "large" }) {
|
|
22760
22808
|
const selectorSize = size;
|
|
22761
22809
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
22762
|
-
!hideLabel && /* @__PURE__ */ jsx(
|
|
22810
|
+
!hideLabel && /* @__PURE__ */ jsx(LabelWithIcon, {
|
|
22811
|
+
icon: getIconForProperty(property, "small"),
|
|
22812
|
+
required: property.validation?.required,
|
|
22813
|
+
title: property.name,
|
|
22763
22814
|
propertyKey,
|
|
22764
|
-
|
|
22765
|
-
icon: getIconForProperty(property, "small"),
|
|
22766
|
-
required: property.validation?.required,
|
|
22767
|
-
title: property.name,
|
|
22768
|
-
className: "h-8 text-text-secondary dark:text-text-secondary-dark ml-3.5 my-0"
|
|
22769
|
-
})
|
|
22815
|
+
className: "h-8 text-text-secondary dark:text-text-secondary-dark ml-3.5 my-0"
|
|
22770
22816
|
}),
|
|
22771
22817
|
/* @__PURE__ */ jsx(UserSelector, {
|
|
22772
22818
|
value,
|
|
@@ -25574,6 +25620,6 @@ function getFullIdPath(propertyKey, propertyNamespace) {
|
|
|
25574
25620
|
return idToPropertiesPath(propertyNamespace ? `${propertyNamespace}.${propertyKey}` : propertyKey);
|
|
25575
25621
|
}
|
|
25576
25622
|
//#endregion
|
|
25577
|
-
export { NAVIGATION_DEFAULT_GROUP_NAME as $,
|
|
25623
|
+
export { NAVIGATION_DEFAULT_GROUP_NAME as $, CollectionRegistryContext as $n, getCollectionBySlugWithin as $t, getFieldId as A, ReadOnlyFieldBinding as An, getIconForWidget as Ar, convertDataToEntity as At, MapFieldBinding as B, MapPropertyPreview as Bn, detectCsvDelimiter as Bt, EntityFormBinding as C, NavigationStateContext as Cn, LABEL_ICON_SIZE as Cr, EntityCardBinding as Ct, getDefaultFieldConfig as D, SelectableTableContext as Dn, getBracketNotation as Dr, useCollectionEditorDialogsState as Dt, DEFAULT_FIELD_CONFIGS as E, SideDialogsControllerContext as En, PropertyKeyHint as Er, ConfigControllerProvider as Et, SelectFieldBinding as F, UserPreview as Fn, isRelationProperty as Fr, ImportSaveInProgress as Ft, useSelectionDialog as G, ArrayOfStorageComponentsPreview as Gn, SearchIconsView as Gt, DateTimeFieldBinding as H, ArrayOfStringsPreview as Hn, parseCsvToObjects as Ht, RepeatFieldBinding as I, NumberPropertyPreview as In, IMPORT_BATCH_SIZE as It, useBuildUrlController as J, InlineEntityListPreview as Jn, BreadcrumbsProvider as Jt, SelectionTableBinding as K, RelationPreview as Kn, FieldCaption as Kt, ReferenceFieldBinding as L, BooleanPreview as Ln, saveImportedEntities as Lt, TextFieldBinding as M, FieldHelperText as Mn, getPropertyInPath$1 as Mr, processValueMapping as Mt, SwitchFieldBinding as N, ArrayOfMapsPreview as Nn, getResolvedPropertyInPath as Nr, getInferenceType as Nt, getDefaultFieldId as O, ArrayCustomShapedFieldBinding as On, getDefaultPropertiesOrder as Or, ImportNewPropertyFieldPreview as Ot, StorageUploadFieldBinding as P, PropertyPreview as Pn, isReferenceProperty as Pr, useImportConfig as Pt, useResolvedCollections as Q, useSidePanel as Qn, addInitialSlash as Qt, MultiSelectFieldBinding as R, DatePreview as Rn, ImportFileUpload as Rt, isSchemaChangeCancelled as S, useUrlController as Sn, FieldBlock as Sr, CollectionCardViewBinding as St, PropertyFieldBinding as T, useSideDialogsController as Tn, spanClass as Tr, useCollectionEditorController as Tt, BlockFieldBinding as U, ArrayPropertyEnumPreview as Un, ArrayContainer as Ut, KeyValueFieldBinding as V, ArrayOneOfPreview as Vn, parseCsvRows as Vt, ArrayOfReferencesFieldBinding as W, ArrayEnumPreview as Wn, PropertyConfigBadge as Wt, useTopLevelNavigation as X, EntityPreviewBinding as Xn, resolveEntityView as Xt, useBuildNavigationStateController as Y, ReferencePreview as Yn, resolveEntityAction as Yt, useResolvedViews as Z, SidePanelControllerContext as Zn, mergeEntityActions as Zt, useCollectionsConfigController as _, CollectionTableBinding as _n, ImagePreview as _r, editEntityAction as _t, namespaceToPropertiesPath as a, resolveCollectionPathIds$1 as an, getEntityTitlePropertyKeyForEntity as ar, getEntityViewWidth as at, asUnavailable as b, useAdminContext as bn, FormRail as br, DetailViewBinding as bt, buildCollectionGenerationCallback as c, SelectionMenu as cn, EnumValuesChip as cr, useSafeSnackbarController as ct, fromSerializableCollectionConfigs as d, resolveSelection as dn, SkeletonPropertyComponent as dr, getInitialEntityValues as dt, getCollectionPathsCombinations as en, useCollectionRegistryController as er, useBuildCollectionRegistryController as et, fromSerializableProperties as f, selectionQueryToFindParams as fn, renderSkeletonCaptionText as fr, removeEmptyContainers as ft, toSerializableProperty as g, VirtualTableInput$1 as gn, UrlComponentPreview as gr, deleteEntityAction as gt, toSerializableProperties as h, useSelectionController as hn, renderSkeletonText as hr, copyEntityAction as ht, namespaceToPropertiesOrderPath as i, removeTrailingSlash$1 as in, getEntityTitlePropertyKey as ir, buildSidePanelsFromUrl as it, VectorFieldBinding as j, LabelWithIcon as jn, getPropertiesWithPropertiesOrder as jr, flattenEntry as jt, getFieldConfig as k, useClearRestoreValue as kn, getIconForProperty as kr, DataNewPropertiesMapping as kt, validateCollectionJson as l, MAX_SELECTION_ROWS as ln, StorageThumbnail as lr, extractTouchedValues as lt, toSerializableCollectionConfig as m, walkEntityPages as mn, renderSkeletonImageThumbnail as mr, CollectionViewBinding as mt, getFullIdPath as n, removeInitialAndTrailingSlashes$1 as nn, useResolvedUser as nr, resolveNavigationFrom as nt, CollectionGenerationApiError as o, resolveOpenEntityMode as on, ArrayPropertyPreview as or, useBuildSidePanel as ot, fromSerializableProperty as p, serializeSelectionQuery as pn, renderSkeletonIcon as pr, zodToFormErrors as pt, SideDialogs as q, ArrayOfReferencesPreview as qn, useBreadcrumbsController as qt, idToPropertiesPath as r, removeInitialSlash as rn, getEntityPreviewKeys as rr, useResolvedNavigationFrom as rt, DEFAULT_COLLECTION_GENERATION_ENDPOINT as s, resolveViewMode as sn, StringPropertyPreview as sr, EditViewBinding as st, getFullId as t, getLastSegment$1 as tn, getUserLabel as tr, useHistory as tt, fromSerializableCollectionConfig as u, SELECTION_PAGE_SIZE as un, StorageThumbnailInternal as ur, getChanges as ut, LiveSchemaError as v, SelectableTable as vn, EmptyValue as vr, resetPasswordAction as vt, EntityForm as w, useNavigationStateController as wn, isSelfLabellingProperty as wr, CollectionViewActions as wt, createLiveSchemaClient as x, UrlContext as xn, RecordMeta as xr, EntityViewBinding as xt, SchemaChangeCancelled as y, CollectionRowActions as yn, FormSections as yr, CreationResultDialog as yt, MarkdownEditorFieldBinding as z, KeyValuePreview as zn, convertFileToJson as zt };
|
|
25578
25624
|
|
|
25579
|
-
//# sourceMappingURL=util-
|
|
25625
|
+
//# sourceMappingURL=util-qfCPxJzB.js.map
|