@firecms/core 3.3.0-canary.102f274 → 3.3.0-canary.1e1cce9
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/components/EntityCollectionTable/column_utils.d.ts +4 -3
- package/dist/components/EntityCollectionView/FiltersDialog.d.ts +2 -1
- package/dist/components/EntityPreview.d.ts +3 -1
- package/dist/index.es.js +349 -251
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +349 -251
- package/dist/index.umd.js.map +1 -1
- package/dist/types/collections.d.ts +17 -0
- package/dist/types/translations.d.ts +9 -1
- package/dist/util/entities.d.ts +1 -0
- package/package.json +5 -5
- package/src/app/Scaffold.tsx +13 -1
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +2 -1
- package/src/components/EntityCollectionTable/column_utils.tsx +11 -19
- package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +1 -1
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +5 -2
- package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +4 -1
- package/src/components/EntityCollectionView/FiltersDialog.tsx +39 -28
- package/src/components/EntityPreview.tsx +41 -40
- package/src/components/ReferenceWidget.tsx +1 -1
- package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +2 -2
- package/src/components/common/useDataSourceTableController.tsx +41 -4
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +1 -1
- package/src/hooks/useBuildNavigationController.tsx +5 -1
- package/src/locales/de.ts +11 -3
- package/src/locales/en.ts +11 -3
- package/src/locales/es.ts +11 -3
- package/src/locales/fr.ts +11 -3
- package/src/locales/hi.ts +11 -3
- package/src/locales/it.ts +11 -3
- package/src/locales/pt.ts +11 -3
- package/src/types/collections.ts +18 -0
- package/src/types/translations.ts +9 -1
- package/src/util/entities.ts +11 -0
- package/src/util/resolutions.ts +3 -0
package/dist/index.umd.js
CHANGED
|
@@ -691,6 +691,9 @@
|
|
|
691
691
|
return result;
|
|
692
692
|
}
|
|
693
693
|
function getReferenceFrom(entity) {
|
|
694
|
+
if (!entity) {
|
|
695
|
+
throw new Error("getReferenceFrom: entity is null or undefined");
|
|
696
|
+
}
|
|
694
697
|
return new EntityReference(entity.id, entity.path, entity.databaseId);
|
|
695
698
|
}
|
|
696
699
|
function traverseValuesProperties(inputValues, properties, operation) {
|
|
@@ -740,6 +743,12 @@
|
|
|
740
743
|
}
|
|
741
744
|
return value;
|
|
742
745
|
}
|
|
746
|
+
function isDataTypeFilterable(dataType, isPartOfArray = false) {
|
|
747
|
+
if (isPartOfArray) {
|
|
748
|
+
return ["string", "number", "date", "reference"].includes(dataType);
|
|
749
|
+
}
|
|
750
|
+
return ["string", "number", "boolean", "date", "reference", "array"].includes(dataType);
|
|
751
|
+
}
|
|
743
752
|
function enumToObjectEntries(enumValues) {
|
|
744
753
|
if (Array.isArray(enumValues)) {
|
|
745
754
|
return enumValues;
|
|
@@ -826,8 +835,13 @@
|
|
|
826
835
|
...a,
|
|
827
836
|
...b
|
|
828
837
|
}), {});
|
|
838
|
+
const {
|
|
839
|
+
properties: overrideProps,
|
|
840
|
+
...restOverrides
|
|
841
|
+
} = collectionOverride ?? {};
|
|
829
842
|
return {
|
|
830
843
|
...collection,
|
|
844
|
+
...restOverrides,
|
|
831
845
|
properties: cleanedProperties,
|
|
832
846
|
originalCollection: collection
|
|
833
847
|
};
|
|
@@ -4513,7 +4527,7 @@
|
|
|
4513
4527
|
}
|
|
4514
4528
|
setDataLoading(false);
|
|
4515
4529
|
setDataLoadingError(void 0);
|
|
4516
|
-
setData(entities.map(_temp$
|
|
4530
|
+
setData(entities.map(_temp$D));
|
|
4517
4531
|
setNoMoreToLoad(!itemCount || entities.length < itemCount);
|
|
4518
4532
|
};
|
|
4519
4533
|
const onError = (error) => {
|
|
@@ -4596,7 +4610,7 @@
|
|
|
4596
4610
|
}
|
|
4597
4611
|
function _temp2$f() {
|
|
4598
4612
|
}
|
|
4599
|
-
function _temp$
|
|
4613
|
+
function _temp$D(e_0) {
|
|
4600
4614
|
return {
|
|
4601
4615
|
...e_0
|
|
4602
4616
|
};
|
|
@@ -4661,7 +4675,7 @@
|
|
|
4661
4675
|
setEntity(CACHE[`${path}/${entityId}`]);
|
|
4662
4676
|
setDataLoading(false);
|
|
4663
4677
|
setDataLoadingError(void 0);
|
|
4664
|
-
return _temp$
|
|
4678
|
+
return _temp$C;
|
|
4665
4679
|
} else {
|
|
4666
4680
|
if (entityId && path && collection) {
|
|
4667
4681
|
if (dataSource.listenEntity) {
|
|
@@ -4729,7 +4743,7 @@
|
|
|
4729
4743
|
}
|
|
4730
4744
|
function _temp2$e() {
|
|
4731
4745
|
}
|
|
4732
|
-
function _temp$
|
|
4746
|
+
function _temp$C() {
|
|
4733
4747
|
}
|
|
4734
4748
|
async function saveEntityWithCallbacks({
|
|
4735
4749
|
collection,
|
|
@@ -5373,7 +5387,7 @@
|
|
|
5373
5387
|
}
|
|
5374
5388
|
let t9;
|
|
5375
5389
|
if ($[19] !== url) {
|
|
5376
|
-
t9 = /* @__PURE__ */ jsxRuntime.jsx(ui.Tooltip, { title: "Open image in new tab", side: "bottom", children: /* @__PURE__ */ jsxRuntime.jsx(ui.IconButton, { className: "invisible group-hover:visible", variant: "filled", component: "a", href: url, rel: "noopener noreferrer", target: "_blank", size: "smallest", onClick: _temp$
|
|
5390
|
+
t9 = /* @__PURE__ */ jsxRuntime.jsx(ui.Tooltip, { title: "Open image in new tab", side: "bottom", children: /* @__PURE__ */ jsxRuntime.jsx(ui.IconButton, { className: "invisible group-hover:visible", variant: "filled", component: "a", href: url, rel: "noopener noreferrer", target: "_blank", size: "smallest", onClick: _temp$B, children: t8 }) });
|
|
5377
5391
|
$[19] = url;
|
|
5378
5392
|
$[20] = t9;
|
|
5379
5393
|
} else {
|
|
@@ -5407,7 +5421,7 @@
|
|
|
5407
5421
|
}
|
|
5408
5422
|
return t11;
|
|
5409
5423
|
}
|
|
5410
|
-
function _temp$
|
|
5424
|
+
function _temp$B(e_0) {
|
|
5411
5425
|
return e_0.stopPropagation();
|
|
5412
5426
|
}
|
|
5413
5427
|
const FIRECMS_NS$1 = "firecms_core";
|
|
@@ -5474,7 +5488,7 @@
|
|
|
5474
5488
|
}
|
|
5475
5489
|
let t3;
|
|
5476
5490
|
if ($[2] !== url) {
|
|
5477
|
-
t3 = /* @__PURE__ */ jsxRuntime.jsxs("a", { className: "flex gap-4 break-words items-center font-medium text-primary visited:text-primary dark:visited:text-primary dark:text-primary", href: url, rel: "noopener noreferrer", onMouseDown: _temp$
|
|
5491
|
+
t3 = /* @__PURE__ */ jsxRuntime.jsxs("a", { className: "flex gap-4 break-words items-center font-medium text-primary visited:text-primary dark:visited:text-primary dark:text-primary", href: url, rel: "noopener noreferrer", onMouseDown: _temp$A, target: "_blank", children: [
|
|
5478
5492
|
t2,
|
|
5479
5493
|
url
|
|
5480
5494
|
] });
|
|
@@ -5604,7 +5618,7 @@
|
|
|
5604
5618
|
function _temp2$d(e_0) {
|
|
5605
5619
|
return e_0.stopPropagation();
|
|
5606
5620
|
}
|
|
5607
|
-
function _temp$
|
|
5621
|
+
function _temp$A(e) {
|
|
5608
5622
|
e.preventDefault();
|
|
5609
5623
|
}
|
|
5610
5624
|
function VideoPreview(t0) {
|
|
@@ -5738,7 +5752,7 @@
|
|
|
5738
5752
|
if (Array.isArray(arrayProperty.of)) {
|
|
5739
5753
|
let t1;
|
|
5740
5754
|
if ($[6] !== arrayProperty.of) {
|
|
5741
|
-
t1 = arrayProperty.of.map(_temp$
|
|
5755
|
+
t1 = arrayProperty.of.map(_temp$z);
|
|
5742
5756
|
$[6] = arrayProperty.of;
|
|
5743
5757
|
$[7] = t1;
|
|
5744
5758
|
} else {
|
|
@@ -5876,7 +5890,7 @@
|
|
|
5876
5890
|
}
|
|
5877
5891
|
return content || null;
|
|
5878
5892
|
}
|
|
5879
|
-
function _temp$
|
|
5893
|
+
function _temp$z(p, i) {
|
|
5880
5894
|
return renderGenericArrayCell(p, i);
|
|
5881
5895
|
}
|
|
5882
5896
|
function renderMap(property, size) {
|
|
@@ -6320,104 +6334,77 @@
|
|
|
6320
6334
|
actions
|
|
6321
6335
|
] });
|
|
6322
6336
|
}
|
|
6323
|
-
|
|
6324
|
-
const $ = reactCompilerRuntime.c(
|
|
6325
|
-
|
|
6326
|
-
|
|
6327
|
-
|
|
6328
|
-
|
|
6329
|
-
|
|
6330
|
-
|
|
6331
|
-
|
|
6332
|
-
|
|
6333
|
-
|
|
6334
|
-
|
|
6335
|
-
children,
|
|
6336
|
-
hover,
|
|
6337
|
-
onClick,
|
|
6338
|
-
size: t1,
|
|
6339
|
-
style,
|
|
6340
|
-
className,
|
|
6341
|
-
fullwidth: t2,
|
|
6342
|
-
...props
|
|
6343
|
-
} = t0);
|
|
6344
|
-
$[0] = t0;
|
|
6345
|
-
$[1] = children;
|
|
6346
|
-
$[2] = className;
|
|
6347
|
-
$[3] = hover;
|
|
6348
|
-
$[4] = onClick;
|
|
6349
|
-
$[5] = props;
|
|
6350
|
-
$[6] = style;
|
|
6351
|
-
$[7] = t1;
|
|
6352
|
-
$[8] = t2;
|
|
6353
|
-
} else {
|
|
6354
|
-
children = $[1];
|
|
6355
|
-
className = $[2];
|
|
6356
|
-
hover = $[3];
|
|
6357
|
-
onClick = $[4];
|
|
6358
|
-
props = $[5];
|
|
6359
|
-
style = $[6];
|
|
6360
|
-
t1 = $[7];
|
|
6361
|
-
t2 = $[8];
|
|
6362
|
-
}
|
|
6337
|
+
function EntityPreviewContainer(t0) {
|
|
6338
|
+
const $ = reactCompilerRuntime.c(15);
|
|
6339
|
+
const {
|
|
6340
|
+
children,
|
|
6341
|
+
hover,
|
|
6342
|
+
onClick,
|
|
6343
|
+
size: t1,
|
|
6344
|
+
style,
|
|
6345
|
+
className,
|
|
6346
|
+
fullwidth: t2,
|
|
6347
|
+
ref
|
|
6348
|
+
} = t0;
|
|
6363
6349
|
const size = t1 === void 0 ? "medium" : t1;
|
|
6364
6350
|
const fullwidth = t2 === void 0 ? true : t2;
|
|
6365
|
-
|
|
6366
|
-
|
|
6367
|
-
|
|
6368
|
-
|
|
6369
|
-
|
|
6370
|
-
|
|
6371
|
-
|
|
6372
|
-
$[
|
|
6351
|
+
const t3 = fullwidth ? "w-full" : "";
|
|
6352
|
+
const t4 = hover ? "hover:bg-surface-accent-50 dark:hover:bg-surface-800 group-hover:bg-surface-accent-50 dark:group-hover:bg-surface-800" : "";
|
|
6353
|
+
const t5 = size === "small" ? "p-1" : "px-2 py-1";
|
|
6354
|
+
const t6 = onClick ? "cursor-pointer" : "";
|
|
6355
|
+
let t7;
|
|
6356
|
+
if ($[0] !== className || $[1] !== t3 || $[2] !== t4 || $[3] !== t5 || $[4] !== t6) {
|
|
6357
|
+
t7 = ui.cls("bg-white dark:bg-surface-900", "min-h-[44px]", t3, "items-center", t4, t5, "flex border rounded-lg", t6, ui.defaultBorderMixin, className);
|
|
6358
|
+
$[0] = className;
|
|
6359
|
+
$[1] = t3;
|
|
6360
|
+
$[2] = t4;
|
|
6361
|
+
$[3] = t5;
|
|
6362
|
+
$[4] = t6;
|
|
6363
|
+
$[5] = t7;
|
|
6373
6364
|
} else {
|
|
6374
|
-
|
|
6365
|
+
t7 = $[5];
|
|
6375
6366
|
}
|
|
6376
|
-
const
|
|
6377
|
-
const t5 = hover ? "hover:bg-surface-accent-50 dark:hover:bg-surface-800 group-hover:bg-surface-accent-50 dark:group-hover:bg-surface-800" : "";
|
|
6378
|
-
const t6 = size === "small" ? "p-1" : "px-2 py-1";
|
|
6379
|
-
const t7 = onClick ? "cursor-pointer" : "";
|
|
6367
|
+
const divClassName = t7;
|
|
6380
6368
|
let t8;
|
|
6381
|
-
if ($[
|
|
6382
|
-
t8 =
|
|
6383
|
-
|
|
6384
|
-
|
|
6385
|
-
|
|
6386
|
-
$[
|
|
6387
|
-
$[
|
|
6388
|
-
$[16] = t8;
|
|
6369
|
+
if ($[6] !== onClick) {
|
|
6370
|
+
t8 = onClick ? (event) => {
|
|
6371
|
+
event.preventDefault();
|
|
6372
|
+
onClick(event);
|
|
6373
|
+
} : void 0;
|
|
6374
|
+
$[6] = onClick;
|
|
6375
|
+
$[7] = t8;
|
|
6389
6376
|
} else {
|
|
6390
|
-
t8 = $[
|
|
6377
|
+
t8 = $[7];
|
|
6391
6378
|
}
|
|
6379
|
+
const handleClick = t8;
|
|
6392
6380
|
let t9;
|
|
6393
|
-
if ($[
|
|
6394
|
-
t9 =
|
|
6395
|
-
|
|
6396
|
-
|
|
6397
|
-
|
|
6398
|
-
|
|
6381
|
+
if ($[8] !== divClassName || $[9] !== handleClick || $[10] !== style) {
|
|
6382
|
+
t9 = {
|
|
6383
|
+
ref,
|
|
6384
|
+
tabIndex: 0,
|
|
6385
|
+
style,
|
|
6386
|
+
className: divClassName,
|
|
6387
|
+
onClick: handleClick
|
|
6399
6388
|
};
|
|
6400
|
-
$[
|
|
6401
|
-
$[
|
|
6389
|
+
$[8] = divClassName;
|
|
6390
|
+
$[9] = handleClick;
|
|
6391
|
+
$[10] = style;
|
|
6392
|
+
$[11] = t9;
|
|
6402
6393
|
} else {
|
|
6403
|
-
t9 = $[
|
|
6394
|
+
t9 = $[11];
|
|
6404
6395
|
}
|
|
6396
|
+
const divProps = t9;
|
|
6405
6397
|
let t10;
|
|
6406
|
-
if ($[
|
|
6407
|
-
t10 = /* @__PURE__ */ jsxRuntime.jsx("div", {
|
|
6408
|
-
$[
|
|
6409
|
-
$[
|
|
6410
|
-
$[
|
|
6411
|
-
$[22] = t3;
|
|
6412
|
-
$[23] = t8;
|
|
6413
|
-
$[24] = t9;
|
|
6414
|
-
$[25] = t10;
|
|
6398
|
+
if ($[12] !== children || $[13] !== divProps) {
|
|
6399
|
+
t10 = /* @__PURE__ */ jsxRuntime.jsx("div", { ...divProps, children });
|
|
6400
|
+
$[12] = children;
|
|
6401
|
+
$[13] = divProps;
|
|
6402
|
+
$[14] = t10;
|
|
6415
6403
|
} else {
|
|
6416
|
-
t10 = $[
|
|
6404
|
+
t10 = $[14];
|
|
6417
6405
|
}
|
|
6418
6406
|
return t10;
|
|
6419
|
-
}
|
|
6420
|
-
EntityPreviewContainer.displayName = "EntityPreviewContainer";
|
|
6407
|
+
}
|
|
6421
6408
|
const ReferencePreview = function ReferencePreview2(props) {
|
|
6422
6409
|
const $ = reactCompilerRuntime.c(10);
|
|
6423
6410
|
const reference = props.reference;
|
|
@@ -7051,7 +7038,7 @@
|
|
|
7051
7038
|
timeZoneName: "short"
|
|
7052
7039
|
});
|
|
7053
7040
|
const parts = tzFormatter.formatToParts(date);
|
|
7054
|
-
t32 = parts.find(_temp$
|
|
7041
|
+
t32 = parts.find(_temp$y)?.value ?? "";
|
|
7055
7042
|
$[6] = date;
|
|
7056
7043
|
$[7] = timezone;
|
|
7057
7044
|
$[8] = t32;
|
|
@@ -7122,7 +7109,7 @@
|
|
|
7122
7109
|
}
|
|
7123
7110
|
return t3;
|
|
7124
7111
|
}
|
|
7125
|
-
function _temp$
|
|
7112
|
+
function _temp$y(p) {
|
|
7126
7113
|
return p.type === "timeZoneName";
|
|
7127
7114
|
}
|
|
7128
7115
|
function MapPropertyPreview(t0) {
|
|
@@ -7217,7 +7204,7 @@
|
|
|
7217
7204
|
}
|
|
7218
7205
|
let t1;
|
|
7219
7206
|
if ($[1] !== value) {
|
|
7220
|
-
t1 = Object.entries(value).map(_temp$
|
|
7207
|
+
t1 = Object.entries(value).map(_temp$x);
|
|
7221
7208
|
$[1] = value;
|
|
7222
7209
|
$[2] = t1;
|
|
7223
7210
|
} else {
|
|
@@ -7233,7 +7220,7 @@
|
|
|
7233
7220
|
}
|
|
7234
7221
|
return t2;
|
|
7235
7222
|
}
|
|
7236
|
-
function _temp$
|
|
7223
|
+
function _temp$x(t0) {
|
|
7237
7224
|
const [key, childValue] = t0;
|
|
7238
7225
|
const isTimestampObj = childValue && typeof childValue === "object" && (childValue instanceof Date || "_seconds" in childValue && "_nanoseconds" in childValue && typeof childValue._seconds === "number" && typeof childValue._nanoseconds === "number" || "seconds" in childValue && "nanoseconds" in childValue && typeof childValue.seconds === "number" && typeof childValue.nanoseconds === "number");
|
|
7239
7226
|
const isScalar = childValue && (typeof childValue !== "object" || isTimestampObj);
|
|
@@ -8494,7 +8481,7 @@
|
|
|
8494
8481
|
console.trace("onChange");
|
|
8495
8482
|
if (valueType === "number") {
|
|
8496
8483
|
if (multiple) {
|
|
8497
|
-
const newValue = updatedValue.map(_temp$
|
|
8484
|
+
const newValue = updatedValue.map(_temp$w);
|
|
8498
8485
|
updateValue(newValue);
|
|
8499
8486
|
} else {
|
|
8500
8487
|
updateValue(parseFloat(updatedValue));
|
|
@@ -8565,7 +8552,7 @@
|
|
|
8565
8552
|
function _temp2$c(v_0) {
|
|
8566
8553
|
return v_0.toString();
|
|
8567
8554
|
}
|
|
8568
|
-
function _temp$
|
|
8555
|
+
function _temp$w(v) {
|
|
8569
8556
|
return parseFloat(v);
|
|
8570
8557
|
}
|
|
8571
8558
|
function VirtualTableNumberInput(props) {
|
|
@@ -8761,7 +8748,7 @@
|
|
|
8761
8748
|
const renderValue = t3;
|
|
8762
8749
|
let t4;
|
|
8763
8750
|
if ($[7] !== disabled || $[8] !== internalValue || $[9] !== multiple || $[10] !== onChange || $[11] !== renderValue || $[12] !== users || $[13] !== validValue) {
|
|
8764
|
-
t4 = multiple ? /* @__PURE__ */ jsxRuntime.jsx(ui.MultiSelect, { inputRef: ref, className: "w-full h-full p-0 bg-transparent", position: "item-aligned", disabled, includeClear: false, useChips: false, value: validValue ? internalValue : [], onValueChange: onChange, children: users?.map(_temp$
|
|
8751
|
+
t4 = multiple ? /* @__PURE__ */ jsxRuntime.jsx(ui.MultiSelect, { inputRef: ref, className: "w-full h-full p-0 bg-transparent", position: "item-aligned", disabled, includeClear: false, useChips: false, value: validValue ? internalValue : [], onValueChange: onChange, children: users?.map(_temp$v) }) : /* @__PURE__ */ jsxRuntime.jsx(ui.Select, { inputRef: ref, size: "large", fullWidth: true, className: "w-full h-full p-0 bg-transparent", position: "item-aligned", disabled, padding: false, value: validValue ? internalValue : "", onValueChange: onChange, renderValue, children: users?.map(_temp2$b) });
|
|
8765
8752
|
$[7] = disabled;
|
|
8766
8753
|
$[8] = internalValue;
|
|
8767
8754
|
$[9] = multiple;
|
|
@@ -8778,7 +8765,7 @@
|
|
|
8778
8765
|
function _temp2$b(user_1) {
|
|
8779
8766
|
return /* @__PURE__ */ jsxRuntime.jsx(ui.SelectItem, { value: user_1.uid, children: /* @__PURE__ */ jsxRuntime.jsx(UserDisplay, { user: user_1 }) }, user_1.uid);
|
|
8780
8767
|
}
|
|
8781
|
-
function _temp$
|
|
8768
|
+
function _temp$v(user_0) {
|
|
8782
8769
|
return /* @__PURE__ */ jsxRuntime.jsx(ui.MultiSelectItem, { value: user_0.uid, children: /* @__PURE__ */ jsxRuntime.jsx(UserDisplay, { user: user_0 }) }, user_0.uid);
|
|
8783
8770
|
}
|
|
8784
8771
|
class ErrorBoundary extends React.Component {
|
|
@@ -9023,7 +9010,7 @@
|
|
|
9023
9010
|
newValue = [...internalValue];
|
|
9024
9011
|
newValue = removeDuplicates(newValue);
|
|
9025
9012
|
setInternalValue(newValue);
|
|
9026
|
-
const fieldValue = newValue.filter(_temp$
|
|
9013
|
+
const fieldValue = newValue.filter(_temp$u).map(_temp2$a);
|
|
9027
9014
|
if (multipleFilesSupported) {
|
|
9028
9015
|
onChange(fieldValue);
|
|
9029
9016
|
} else {
|
|
@@ -9144,7 +9131,7 @@
|
|
|
9144
9131
|
function _temp2$a(e_0) {
|
|
9145
9132
|
return e_0.storagePathOrDownloadUrl;
|
|
9146
9133
|
}
|
|
9147
|
-
function _temp$
|
|
9134
|
+
function _temp$u(e) {
|
|
9148
9135
|
return !!e.storagePathOrDownloadUrl;
|
|
9149
9136
|
}
|
|
9150
9137
|
function getInternalInitialValue(multipleFilesSupported, value, metadata, size) {
|
|
@@ -9434,7 +9421,7 @@
|
|
|
9434
9421
|
const snackbarContext = useSnackbarController();
|
|
9435
9422
|
let t1;
|
|
9436
9423
|
if ($[0] !== storage.acceptedFiles) {
|
|
9437
|
-
t1 = storage.acceptedFiles ? storage.acceptedFiles.map(_temp$
|
|
9424
|
+
t1 = storage.acceptedFiles ? storage.acceptedFiles.map(_temp$t).reduce(_temp2$9, {}) : void 0;
|
|
9438
9425
|
$[0] = storage.acceptedFiles;
|
|
9439
9426
|
$[1] = t1;
|
|
9440
9427
|
} else {
|
|
@@ -9663,7 +9650,7 @@
|
|
|
9663
9650
|
...b
|
|
9664
9651
|
};
|
|
9665
9652
|
}
|
|
9666
|
-
function _temp$
|
|
9653
|
+
function _temp$t(e) {
|
|
9667
9654
|
return {
|
|
9668
9655
|
[e]: []
|
|
9669
9656
|
};
|
|
@@ -9773,7 +9760,7 @@
|
|
|
9773
9760
|
let t1;
|
|
9774
9761
|
if ($[2] !== updateValue) {
|
|
9775
9762
|
t1 = (entities) => {
|
|
9776
|
-
updateValue(entities.map(_temp$
|
|
9763
|
+
updateValue(entities.filter(Boolean).map(_temp$s));
|
|
9777
9764
|
};
|
|
9778
9765
|
$[2] = updateValue;
|
|
9779
9766
|
$[3] = t1;
|
|
@@ -9945,7 +9932,7 @@
|
|
|
9945
9932
|
}
|
|
9946
9933
|
return t10;
|
|
9947
9934
|
}, equal);
|
|
9948
|
-
function _temp$
|
|
9935
|
+
function _temp$s(e) {
|
|
9949
9936
|
return getReferenceFrom(e);
|
|
9950
9937
|
}
|
|
9951
9938
|
function _temp2$8(ref) {
|
|
@@ -11613,7 +11600,7 @@
|
|
|
11613
11600
|
throw Error(`Couldn't find the corresponding collection for the path: ${ofProperty.path}`);
|
|
11614
11601
|
}
|
|
11615
11602
|
const onMultipleEntitiesSelected = React.useCallback((entities) => {
|
|
11616
|
-
setValue(entities.map((e) => getReferenceFrom(e)));
|
|
11603
|
+
setValue(entities.filter(Boolean).map((e) => getReferenceFrom(e)));
|
|
11617
11604
|
}, [setValue]);
|
|
11618
11605
|
const referenceDialogController = useReferenceDialog({
|
|
11619
11606
|
multiselect: true,
|
|
@@ -11723,7 +11710,7 @@
|
|
|
11723
11710
|
}
|
|
11724
11711
|
let t5;
|
|
11725
11712
|
if ($[15] !== placeholder) {
|
|
11726
|
-
t5 = placeholder && /* @__PURE__ */ jsxRuntime.jsx("div", { onClick: _temp$
|
|
11713
|
+
t5 = placeholder && /* @__PURE__ */ jsxRuntime.jsx("div", { onClick: _temp$r, className: "flex flex-col items-center justify-center w-full h-full", children: /* @__PURE__ */ jsxRuntime.jsx(ui.DescriptionIcon, { className: "text-surface-700 dark:text-surface-300" }) });
|
|
11727
11714
|
$[15] = placeholder;
|
|
11728
11715
|
$[16] = t5;
|
|
11729
11716
|
} else {
|
|
@@ -11746,7 +11733,7 @@
|
|
|
11746
11733
|
}
|
|
11747
11734
|
return t6;
|
|
11748
11735
|
}
|
|
11749
|
-
function _temp$
|
|
11736
|
+
function _temp$r(e) {
|
|
11750
11737
|
return e.stopPropagation();
|
|
11751
11738
|
}
|
|
11752
11739
|
const dropZoneClasses = "box-border relative pt-[2px] items-center border border-transparent min-h-[254px] outline-none rounded-md duration-200 ease-[cubic-bezier(0.4,0,0.2,1)] focus:border-primary-solid";
|
|
@@ -11974,7 +11961,7 @@
|
|
|
11974
11961
|
t4 = $[7];
|
|
11975
11962
|
}
|
|
11976
11963
|
const style = t4;
|
|
11977
|
-
const getImageSizeNumber = _temp$
|
|
11964
|
+
const getImageSizeNumber = _temp$q;
|
|
11978
11965
|
let child;
|
|
11979
11966
|
if (entry.storagePathOrDownloadUrl) {
|
|
11980
11967
|
const t52 = `storage_preview_${entry.storagePathOrDownloadUrl}`;
|
|
@@ -12049,7 +12036,7 @@
|
|
|
12049
12036
|
}
|
|
12050
12037
|
return t6;
|
|
12051
12038
|
}
|
|
12052
|
-
function _temp$
|
|
12039
|
+
function _temp$q(previewSize) {
|
|
12053
12040
|
switch (previewSize) {
|
|
12054
12041
|
case "small": {
|
|
12055
12042
|
return 40;
|
|
@@ -12330,7 +12317,7 @@
|
|
|
12330
12317
|
newValue.splice(fromIndex, 1);
|
|
12331
12318
|
newValue.splice(toIndex, 0, item);
|
|
12332
12319
|
setInternalValue(newValue);
|
|
12333
|
-
const fieldValue = newValue.filter(_temp3$4).map(_temp4$
|
|
12320
|
+
const fieldValue = newValue.filter(_temp3$4).map(_temp4$4);
|
|
12334
12321
|
onChange(fieldValue);
|
|
12335
12322
|
};
|
|
12336
12323
|
$[0] = multipleFilesSupported;
|
|
@@ -12524,7 +12511,7 @@
|
|
|
12524
12511
|
function _temp5$2(v_0) {
|
|
12525
12512
|
return !!v_0.storagePathOrDownloadUrl;
|
|
12526
12513
|
}
|
|
12527
|
-
function _temp4$
|
|
12514
|
+
function _temp4$4(e_0) {
|
|
12528
12515
|
return e_0.storagePathOrDownloadUrl;
|
|
12529
12516
|
}
|
|
12530
12517
|
function _temp3$4(e) {
|
|
@@ -13568,7 +13555,7 @@
|
|
|
13568
13555
|
} else {
|
|
13569
13556
|
t42 = $[20];
|
|
13570
13557
|
}
|
|
13571
|
-
t3 = Object.entries(mapProperties).filter(_temp$
|
|
13558
|
+
t3 = Object.entries(mapProperties).filter(_temp$p).map(t42);
|
|
13572
13559
|
$[6] = autoFocus;
|
|
13573
13560
|
$[7] = context;
|
|
13574
13561
|
$[8] = disabled;
|
|
@@ -13647,7 +13634,7 @@
|
|
|
13647
13634
|
}
|
|
13648
13635
|
return t10;
|
|
13649
13636
|
}
|
|
13650
|
-
function _temp$
|
|
13637
|
+
function _temp$p(t0) {
|
|
13651
13638
|
const [, property_0] = t0;
|
|
13652
13639
|
return !isHidden(property_0);
|
|
13653
13640
|
}
|
|
@@ -15021,7 +15008,7 @@
|
|
|
15021
15008
|
const property = t4;
|
|
15022
15009
|
let t5;
|
|
15023
15010
|
if ($[9] !== properties) {
|
|
15024
|
-
t5 = Object.entries(properties).map(_temp$
|
|
15011
|
+
t5 = Object.entries(properties).map(_temp$o);
|
|
15025
15012
|
$[9] = properties;
|
|
15026
15013
|
$[10] = t5;
|
|
15027
15014
|
} else {
|
|
@@ -15114,7 +15101,7 @@
|
|
|
15114
15101
|
}
|
|
15115
15102
|
return t11;
|
|
15116
15103
|
}
|
|
15117
|
-
function _temp$
|
|
15104
|
+
function _temp$o(t0) {
|
|
15118
15105
|
const [key, property_0] = t0;
|
|
15119
15106
|
return {
|
|
15120
15107
|
id: key,
|
|
@@ -17235,24 +17222,27 @@
|
|
|
17235
17222
|
function propertiesToColumns({
|
|
17236
17223
|
properties,
|
|
17237
17224
|
sortable: sortable2,
|
|
17238
|
-
|
|
17239
|
-
AdditionalHeaderWidget
|
|
17225
|
+
forcedFilters,
|
|
17226
|
+
AdditionalHeaderWidget,
|
|
17227
|
+
allowedFilters
|
|
17240
17228
|
}) {
|
|
17241
|
-
const disabledFilter = Boolean(forceFilter);
|
|
17242
17229
|
return Object.entries(properties).flatMap(([key, property]) => getColumnKeysForProperty(property, key)).map(({
|
|
17243
17230
|
key,
|
|
17244
17231
|
disabled
|
|
17245
17232
|
}) => {
|
|
17246
17233
|
const property = getResolvedPropertyInPath(properties, key);
|
|
17247
17234
|
if (!property) throw Error("Internal error: no property found in path " + key);
|
|
17248
|
-
const filterable =
|
|
17235
|
+
const filterable = property.dataType === "array" ? isDataTypeFilterable(property.of?.dataType, true) : isDataTypeFilterable(property.dataType);
|
|
17236
|
+
const isFilterForced = forcedFilters?.includes(key) ?? false;
|
|
17237
|
+
const isFilterAllowed = allowedFilters ? allowedFilters.includes(key) : filterable;
|
|
17238
|
+
const filterEnabled = filterable && isFilterAllowed && !isFilterForced;
|
|
17249
17239
|
return {
|
|
17250
17240
|
key,
|
|
17251
17241
|
align: getTableCellAlignment(property),
|
|
17252
17242
|
icon: getIconForProperty(property, "small"),
|
|
17253
17243
|
title: property.name ?? key,
|
|
17254
17244
|
sortable: sortable2,
|
|
17255
|
-
filter:
|
|
17245
|
+
filter: filterEnabled,
|
|
17256
17246
|
width: getTablePropertyColumnWidth(property),
|
|
17257
17247
|
resizable: true,
|
|
17258
17248
|
custom: {
|
|
@@ -17265,16 +17255,6 @@
|
|
|
17265
17255
|
};
|
|
17266
17256
|
});
|
|
17267
17257
|
}
|
|
17268
|
-
function filterableProperty(property, partOfArray = false) {
|
|
17269
|
-
if (partOfArray) {
|
|
17270
|
-
return ["string", "number", "date", "reference"].includes(property.dataType);
|
|
17271
|
-
}
|
|
17272
|
-
if (property.dataType === "array") {
|
|
17273
|
-
if (property.of) return filterableProperty(property.of, true);
|
|
17274
|
-
else return false;
|
|
17275
|
-
}
|
|
17276
|
-
return ["string", "number", "boolean", "date", "reference", "array"].includes(property.dataType);
|
|
17277
|
-
}
|
|
17278
17258
|
const VirtualTableHeader = React.memo(function VirtualTableHeader2(t0) {
|
|
17279
17259
|
const $ = reactCompilerRuntime.c(61);
|
|
17280
17260
|
const {
|
|
@@ -18434,7 +18414,7 @@
|
|
|
18434
18414
|
let t1;
|
|
18435
18415
|
if ($[0] !== text) {
|
|
18436
18416
|
const urlRegex = /https?:\/\/[^\s]+/g;
|
|
18437
|
-
t1 = text.replace(urlRegex, _temp$
|
|
18417
|
+
t1 = text.replace(urlRegex, _temp$n);
|
|
18438
18418
|
$[0] = text;
|
|
18439
18419
|
$[1] = t1;
|
|
18440
18420
|
} else {
|
|
@@ -18453,7 +18433,7 @@
|
|
|
18453
18433
|
}
|
|
18454
18434
|
return t2;
|
|
18455
18435
|
};
|
|
18456
|
-
function _temp$
|
|
18436
|
+
function _temp$n(url) {
|
|
18457
18437
|
return `<a href="${url}" class="underline" target="_blank">Link</a><br/>`;
|
|
18458
18438
|
}
|
|
18459
18439
|
const operationLabels$2 = {
|
|
@@ -18527,10 +18507,10 @@
|
|
|
18527
18507
|
return path ? navigationController.getCollection(path) : void 0;
|
|
18528
18508
|
}, [path]);
|
|
18529
18509
|
const onSingleEntitySelected = (entity) => {
|
|
18530
|
-
updateFilter(operation, getReferenceFrom(entity));
|
|
18510
|
+
if (entity) updateFilter(operation, getReferenceFrom(entity));
|
|
18531
18511
|
};
|
|
18532
18512
|
const onMultipleEntitiesSelected = (entities) => {
|
|
18533
|
-
updateFilter(operation, entities.map((e) => getReferenceFrom(e)));
|
|
18513
|
+
updateFilter(operation, entities.filter(Boolean).map((e) => getReferenceFrom(e)));
|
|
18534
18514
|
};
|
|
18535
18515
|
const multiple = multipleSelectOperations$2.includes(operation);
|
|
18536
18516
|
const referenceDialogController = useReferenceDialog({
|
|
@@ -18705,7 +18685,7 @@
|
|
|
18705
18685
|
}
|
|
18706
18686
|
let t8;
|
|
18707
18687
|
if ($[20] !== operation || $[21] !== t6 || $[22] !== t7) {
|
|
18708
|
-
t8 = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-[100px]", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Select, { value: operation, size: "medium", fullWidth: true, position: "item-aligned", onValueChange: t6, renderValue: _temp$
|
|
18688
|
+
t8 = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-[100px]", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Select, { value: operation, size: "medium", fullWidth: true, position: "item-aligned", onValueChange: t6, renderValue: _temp$m, children: t7 }) });
|
|
18709
18689
|
$[20] = operation;
|
|
18710
18690
|
$[21] = t6;
|
|
18711
18691
|
$[22] = t7;
|
|
@@ -18759,7 +18739,7 @@
|
|
|
18759
18739
|
let t11;
|
|
18760
18740
|
if ($[40] !== dataType || $[41] !== enumValues || $[42] !== internalValue || $[43] !== isNullOperation || $[44] !== multiple || $[45] !== name || $[46] !== operation || $[47] !== updateFilter) {
|
|
18761
18741
|
t11 = enumValues && multiple && /* @__PURE__ */ jsxRuntime.jsx(ui.MultiSelect, { size: "medium", position: "item-aligned", value: Array.isArray(internalValue) ? internalValue.map(_temp3$3) : [], disabled: isNullOperation, onValueChange: (value_2) => {
|
|
18762
|
-
updateFilter(operation, dataType === "number" ? value_2.map(_temp4$
|
|
18742
|
+
updateFilter(operation, dataType === "number" ? value_2.map(_temp4$3) : value_2);
|
|
18763
18743
|
}, multiple, endAdornment: internalValue && /* @__PURE__ */ jsxRuntime.jsx(ui.IconButton, { className: "absolute right-2 top-3", onClick: (e_2) => updateFilter(operation, void 0), children: /* @__PURE__ */ jsxRuntime.jsx(ui.CloseIcon, {}) }), children: enumValues.map((enumConfig_0) => /* @__PURE__ */ jsxRuntime.jsx(ui.MultiSelectItem, { value: String(enumConfig_0.id), children: /* @__PURE__ */ jsxRuntime.jsx(EnumValuesChip, { enumKey: String(enumConfig_0.id), enumValues, size: "small" }) }, `select_value_${name}_${enumConfig_0.id}`)) });
|
|
18764
18744
|
$[40] = dataType;
|
|
18765
18745
|
$[41] = enumValues;
|
|
@@ -18801,7 +18781,7 @@
|
|
|
18801
18781
|
}
|
|
18802
18782
|
return t13;
|
|
18803
18783
|
}
|
|
18804
|
-
function _temp4$
|
|
18784
|
+
function _temp4$3(v) {
|
|
18805
18785
|
return parseInt(v);
|
|
18806
18786
|
}
|
|
18807
18787
|
function _temp3$3(e_1) {
|
|
@@ -18810,7 +18790,7 @@
|
|
|
18810
18790
|
function _temp2$6(op_2) {
|
|
18811
18791
|
return /* @__PURE__ */ jsxRuntime.jsx(ui.SelectItem, { value: op_2, children: operationLabels$1[op_2] }, op_2);
|
|
18812
18792
|
}
|
|
18813
|
-
function _temp$
|
|
18793
|
+
function _temp$m(op_1) {
|
|
18814
18794
|
return operationLabels$1[op_1];
|
|
18815
18795
|
}
|
|
18816
18796
|
function BooleanFilterField(t0) {
|
|
@@ -18981,7 +18961,7 @@
|
|
|
18981
18961
|
}
|
|
18982
18962
|
let t8;
|
|
18983
18963
|
if ($[17] !== operation || $[18] !== t6 || $[19] !== t7) {
|
|
18984
|
-
t8 = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-[100px]", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Select, { value: operation, size: "medium", fullWidth: true, onValueChange: t6, renderValue: _temp$
|
|
18964
|
+
t8 = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-[100px]", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Select, { value: operation, size: "medium", fullWidth: true, onValueChange: t6, renderValue: _temp$l, children: t7 }) });
|
|
18985
18965
|
$[17] = operation;
|
|
18986
18966
|
$[18] = t6;
|
|
18987
18967
|
$[19] = t7;
|
|
@@ -19031,7 +19011,7 @@
|
|
|
19031
19011
|
function _temp2$5(op_2) {
|
|
19032
19012
|
return /* @__PURE__ */ jsxRuntime.jsx(ui.SelectItem, { value: op_2, children: operationLabels[op_2] }, op_2);
|
|
19033
19013
|
}
|
|
19034
|
-
function _temp$
|
|
19014
|
+
function _temp$l(op_1) {
|
|
19035
19015
|
return operationLabels[op_1];
|
|
19036
19016
|
}
|
|
19037
19017
|
const SelectableTable = function SelectableTable2({
|
|
@@ -19281,7 +19261,8 @@
|
|
|
19281
19261
|
const columnsResult = propertiesToColumns({
|
|
19282
19262
|
properties,
|
|
19283
19263
|
sortable: sortable2,
|
|
19284
|
-
|
|
19264
|
+
forcedFilters: tableController.forcedFilters,
|
|
19265
|
+
allowedFilters: tableController.allowedFilters,
|
|
19285
19266
|
AdditionalHeaderWidget
|
|
19286
19267
|
});
|
|
19287
19268
|
const propertyColumnKeys = new Set(columnsResult.map((col) => col.key));
|
|
@@ -19428,7 +19409,26 @@
|
|
|
19428
19409
|
filterValues: initialFilterUrl,
|
|
19429
19410
|
sortBy: initialSortUrl
|
|
19430
19411
|
} = parseFilterAndSort(location.search);
|
|
19431
|
-
const
|
|
19412
|
+
const availableFilterKeys = collection.allowedFilters ?? Object.keys(collection.properties);
|
|
19413
|
+
const forcedFilterKeys = collection.forceFilter ? Object.keys(collection.forceFilter) : [];
|
|
19414
|
+
const allowedFilterKeys = React.useMemo(() => {
|
|
19415
|
+
const availableKeys = availableFilterKeys.filter((key) => {
|
|
19416
|
+
const property = collection.properties[key];
|
|
19417
|
+
if (!property) return false;
|
|
19418
|
+
if (typeof property === "function") return false;
|
|
19419
|
+
const dataType = property.dataType;
|
|
19420
|
+
const filterable = dataType === "array" ? isDataTypeFilterable(property.of?.dataType, true) : isDataTypeFilterable(dataType);
|
|
19421
|
+
return filterable;
|
|
19422
|
+
});
|
|
19423
|
+
const forcedKeys = forcedFilterKeys.filter((key_0) => !availableKeys.includes(key_0));
|
|
19424
|
+
return [...availableKeys, ...forcedKeys];
|
|
19425
|
+
}, [collection.properties, availableFilterKeys, forcedFilterKeys]);
|
|
19426
|
+
const removeUnallowedFilters = React.useCallback((filters) => {
|
|
19427
|
+
if (!filters) return;
|
|
19428
|
+
return Object.fromEntries(Object.entries(filters).filter(([key_1]) => allowedFilterKeys.includes(key_1)));
|
|
19429
|
+
}, [allowedFilterKeys]);
|
|
19430
|
+
const initFilters = forceFilter ?? (updateUrl ? initialFilterUrl : void 0) ?? initialFilter ?? void 0;
|
|
19431
|
+
const [filterValues_0, setFilterValues] = React.useState(removeUnallowedFilters(initFilters));
|
|
19432
19432
|
const [sortBy_0, setSortBy] = React.useState((updateUrl ? initialSortUrl : void 0) ?? initialSortInternal);
|
|
19433
19433
|
useUpdateUrl(filterValues_0, sortBy_0, searchString, updateUrl);
|
|
19434
19434
|
const collectionScroll = scrollRestoration?.getCollectionScroll(fullPath, filterValues_0);
|
|
@@ -19451,7 +19451,7 @@
|
|
|
19451
19451
|
const [dataLoading, setDataLoading] = React.useState(false);
|
|
19452
19452
|
const [dataLoadingError, setDataLoadingError] = React.useState();
|
|
19453
19453
|
const [noMoreToLoad, setNoMoreToLoad] = React.useState(false);
|
|
19454
|
-
const clearFilter = React.useCallback(() => setFilterValues(forceFilter
|
|
19454
|
+
const clearFilter = React.useCallback(() => setFilterValues(removeUnallowedFilters(forceFilter)), [forceFilter, removeUnallowedFilters]);
|
|
19455
19455
|
const updateFilterValues = React.useCallback((updatedFilter) => {
|
|
19456
19456
|
if (forceFilter) {
|
|
19457
19457
|
console.warn("Filter is not compatible with the force filter. Ignoring filter");
|
|
@@ -19460,9 +19460,9 @@
|
|
|
19460
19460
|
if (updatedFilter && Object.keys(updatedFilter).length === 0) {
|
|
19461
19461
|
setFilterValues(void 0);
|
|
19462
19462
|
} else {
|
|
19463
|
-
setFilterValues(updatedFilter);
|
|
19463
|
+
setFilterValues(removeUnallowedFilters(updatedFilter));
|
|
19464
19464
|
}
|
|
19465
|
-
}, [forceFilter]);
|
|
19465
|
+
}, [forceFilter, removeUnallowedFilters]);
|
|
19466
19466
|
React.useEffect(() => {
|
|
19467
19467
|
setDataLoading(true);
|
|
19468
19468
|
const onEntitiesUpdate = async (entities) => {
|
|
@@ -19537,6 +19537,8 @@
|
|
|
19537
19537
|
dataLoadingError,
|
|
19538
19538
|
filterValues: filterValues_0,
|
|
19539
19539
|
setFilterValues: updateFilterValues,
|
|
19540
|
+
allowedFilters: allowedFilterKeys,
|
|
19541
|
+
forcedFilters: forcedFilterKeys,
|
|
19540
19542
|
sortBy: sortBy_0,
|
|
19541
19543
|
setSortBy,
|
|
19542
19544
|
searchString,
|
|
@@ -19760,7 +19762,7 @@
|
|
|
19760
19762
|
const searchBlocked = t12;
|
|
19761
19763
|
let t2;
|
|
19762
19764
|
if ($[15] !== customizationController.plugins || $[16] !== dataSource?.initTextSearch) {
|
|
19763
|
-
t2 = Boolean(dataSource?.initTextSearch) || customizationController.plugins?.find(_temp$
|
|
19765
|
+
t2 = Boolean(dataSource?.initTextSearch) || customizationController.plugins?.find(_temp$k);
|
|
19764
19766
|
$[15] = customizationController.plugins;
|
|
19765
19767
|
$[16] = dataSource?.initTextSearch;
|
|
19766
19768
|
$[17] = t2;
|
|
@@ -19852,7 +19854,7 @@
|
|
|
19852
19854
|
}
|
|
19853
19855
|
return t1;
|
|
19854
19856
|
}
|
|
19855
|
-
function _temp$
|
|
19857
|
+
function _temp$k(p_0) {
|
|
19856
19858
|
return Boolean(p_0.collectionView?.onTextSearchClick);
|
|
19857
19859
|
}
|
|
19858
19860
|
function DeleteEntityDialog({
|
|
@@ -20474,7 +20476,7 @@
|
|
|
20474
20476
|
T0 = ui.Collapse;
|
|
20475
20477
|
t4 = favouriteCollections.length > 0;
|
|
20476
20478
|
t2 = "flex flex-row flex-wrap gap-2 pb-2 min-h-[32px]";
|
|
20477
|
-
t3 = favouriteCollections.map(_temp$
|
|
20479
|
+
t3 = favouriteCollections.map(_temp$j);
|
|
20478
20480
|
$[2] = navigationController;
|
|
20479
20481
|
$[3] = t1;
|
|
20480
20482
|
$[4] = T0;
|
|
@@ -20508,7 +20510,7 @@
|
|
|
20508
20510
|
}
|
|
20509
20511
|
return t6;
|
|
20510
20512
|
}
|
|
20511
|
-
function _temp$
|
|
20513
|
+
function _temp$j(entry_0) {
|
|
20512
20514
|
return /* @__PURE__ */ jsxRuntime.jsx(NavigationChip, { entry: entry_0 }, entry_0.path);
|
|
20513
20515
|
}
|
|
20514
20516
|
const scrollsMap = {};
|
|
@@ -20745,7 +20747,7 @@
|
|
|
20745
20747
|
}
|
|
20746
20748
|
let t4;
|
|
20747
20749
|
if ($[4] !== actions) {
|
|
20748
|
-
t4 = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-0.5", onClick: _temp$
|
|
20750
|
+
t4 = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-0.5", onClick: _temp$i, children: actions });
|
|
20749
20751
|
$[4] = actions;
|
|
20750
20752
|
$[5] = t4;
|
|
20751
20753
|
} else {
|
|
@@ -20832,7 +20834,7 @@
|
|
|
20832
20834
|
}
|
|
20833
20835
|
return t12;
|
|
20834
20836
|
});
|
|
20835
|
-
function _temp$
|
|
20837
|
+
function _temp$i(event) {
|
|
20836
20838
|
event.preventDefault();
|
|
20837
20839
|
event.stopPropagation();
|
|
20838
20840
|
}
|
|
@@ -23188,7 +23190,7 @@
|
|
|
23188
23190
|
let t19;
|
|
23189
23191
|
let t20;
|
|
23190
23192
|
if ($[19] !== items2) {
|
|
23191
|
-
t20 = items2.map(_temp$
|
|
23193
|
+
t20 = items2.map(_temp$h);
|
|
23192
23194
|
$[19] = items2;
|
|
23193
23195
|
$[20] = t20;
|
|
23194
23196
|
} else {
|
|
@@ -23294,7 +23296,7 @@
|
|
|
23294
23296
|
}
|
|
23295
23297
|
return t29;
|
|
23296
23298
|
});
|
|
23297
|
-
function _temp$
|
|
23299
|
+
function _temp$h(i) {
|
|
23298
23300
|
return i.id;
|
|
23299
23301
|
}
|
|
23300
23302
|
function Board(t0) {
|
|
@@ -25230,7 +25232,8 @@
|
|
|
25230
25232
|
properties,
|
|
25231
25233
|
filterValues,
|
|
25232
25234
|
setFilterValues,
|
|
25233
|
-
forceFilter
|
|
25235
|
+
forceFilter,
|
|
25236
|
+
allowedFilters
|
|
25234
25237
|
}) {
|
|
25235
25238
|
const {
|
|
25236
25239
|
t
|
|
@@ -25242,15 +25245,14 @@
|
|
|
25242
25245
|
setLocalFilters(filterValues ?? {});
|
|
25243
25246
|
}
|
|
25244
25247
|
}, [open, filterValues]);
|
|
25245
|
-
const
|
|
25246
|
-
return Object.entries(properties).filter(([key
|
|
25247
|
-
|
|
25248
|
-
|
|
25249
|
-
|
|
25250
|
-
if (!baseProperty) return false;
|
|
25251
|
-
return ["string", "number", "boolean", "date", "reference"].includes(baseProperty.dataType);
|
|
25248
|
+
const editableFilterProperties = React.useMemo(() => {
|
|
25249
|
+
return Object.entries(properties).filter(([key]) => {
|
|
25250
|
+
const isFilterAllowed = !allowedFilters || allowedFilters.includes(key);
|
|
25251
|
+
const isFilterForced = Boolean(forceFilter && Object.keys(forceFilter).includes(key));
|
|
25252
|
+
return isFilterAllowed && !isFilterForced;
|
|
25252
25253
|
});
|
|
25253
|
-
}, [properties, forceFilter]);
|
|
25254
|
+
}, [properties, allowedFilters, forceFilter]);
|
|
25255
|
+
const hasEditableFilterProperties = editableFilterProperties.length > 0;
|
|
25254
25256
|
const handleFilterChange = React.useCallback((propertyKey, value) => {
|
|
25255
25257
|
setLocalFilters((prev) => {
|
|
25256
25258
|
const newFilters = {
|
|
@@ -25282,22 +25284,26 @@
|
|
|
25282
25284
|
}));
|
|
25283
25285
|
}, []);
|
|
25284
25286
|
const isAnyFieldHidden = Object.values(hiddenFields).some((hidden_0) => hidden_0);
|
|
25285
|
-
const
|
|
25286
|
-
|
|
25287
|
-
|
|
25288
|
-
|
|
25289
|
-
|
|
25287
|
+
const getActiveFilterCount = () => {
|
|
25288
|
+
const editableLocalFilters = Object.keys(localFilters).filter((key_0) => !forceFilter || !(key_0 in forceFilter));
|
|
25289
|
+
return editableLocalFilters.length;
|
|
25290
|
+
};
|
|
25291
|
+
const activeFilterCount = getActiveFilterCount();
|
|
25292
|
+
const renderFilterField = React.useCallback((propertyKey_1, property) => {
|
|
25293
|
+
const isArray = property.dataType === "array";
|
|
25294
|
+
const baseProperty = isArray ? property.of : property;
|
|
25295
|
+
if (!baseProperty) return null;
|
|
25290
25296
|
const filterValue = localFilters[propertyKey_1];
|
|
25291
25297
|
const setValue = (value_0) => handleFilterChange(propertyKey_1, value_0);
|
|
25292
|
-
if (
|
|
25293
|
-
return /* @__PURE__ */ jsxRuntime.jsx(ReferenceFilterField, { value: filterValue, setValue, name: propertyKey_1, isArray, path:
|
|
25294
|
-
} else if (
|
|
25295
|
-
const enumValues =
|
|
25296
|
-
return /* @__PURE__ */ jsxRuntime.jsx(StringNumberFilterField, { value: filterValue, setValue, name: propertyKey_1, dataType:
|
|
25297
|
-
} else if (
|
|
25298
|
-
return /* @__PURE__ */ jsxRuntime.jsx(BooleanFilterField, { value: filterValue, setValue, name: propertyKey_1, title:
|
|
25299
|
-
} else if (
|
|
25300
|
-
return /* @__PURE__ */ jsxRuntime.jsx(DateTimeFilterField, { value: filterValue, setValue, name: propertyKey_1, mode:
|
|
25298
|
+
if (baseProperty.dataType === "reference") {
|
|
25299
|
+
return /* @__PURE__ */ jsxRuntime.jsx(ReferenceFilterField, { value: filterValue, setValue, name: propertyKey_1, isArray, path: baseProperty.path, title: property.name, includeId: baseProperty.includeId, previewProperties: baseProperty.previewProperties, hidden: hiddenFields[propertyKey_1] ?? false, setHidden: (hidden_1) => setHiddenForField(propertyKey_1, hidden_1) });
|
|
25300
|
+
} else if (baseProperty.dataType === "number" || baseProperty.dataType === "string") {
|
|
25301
|
+
const enumValues = baseProperty.enumValues ? enumToObjectEntries(baseProperty.enumValues) : void 0;
|
|
25302
|
+
return /* @__PURE__ */ jsxRuntime.jsx(StringNumberFilterField, { value: filterValue, setValue, name: propertyKey_1, dataType: baseProperty.dataType, isArray, enumValues, title: property.name });
|
|
25303
|
+
} else if (baseProperty.dataType === "boolean") {
|
|
25304
|
+
return /* @__PURE__ */ jsxRuntime.jsx(BooleanFilterField, { value: filterValue, setValue, name: propertyKey_1, title: property.name });
|
|
25305
|
+
} else if (baseProperty.dataType === "date") {
|
|
25306
|
+
return /* @__PURE__ */ jsxRuntime.jsx(DateTimeFilterField, { value: filterValue, setValue, name: propertyKey_1, mode: baseProperty.mode, isArray, title: property.name });
|
|
25301
25307
|
}
|
|
25302
25308
|
return null;
|
|
25303
25309
|
}, [localFilters, handleFilterChange, hiddenFields, setHiddenForField]);
|
|
@@ -25306,23 +25312,25 @@
|
|
|
25306
25312
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Typography, { variant: "h6", children: t("filters") }),
|
|
25307
25313
|
activeFilterCount > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-2 px-2 py-0.5 text-xs rounded-full bg-primary text-white", children: activeFilterCount })
|
|
25308
25314
|
] }),
|
|
25309
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.DialogContent, { children:
|
|
25315
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.DialogContent, { children: !hasEditableFilterProperties ? /* @__PURE__ */ jsxRuntime.jsx(ui.Typography, { color: "secondary", className: "py-8 text-center", children: t("no_filterable_properties") }) : /* @__PURE__ */ jsxRuntime.jsx("table", { className: "w-full border-collapse", children: /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: editableFilterProperties.map(([propertyKey_2, property_0], index) => {
|
|
25310
25316
|
const hasFilter = propertyKey_2 in localFilters;
|
|
25311
25317
|
return /* @__PURE__ */ jsxRuntime.jsxs("tr", { className: ui.cls(index > 0 && "border-t", ui.defaultBorderMixin), children: [
|
|
25312
|
-
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-3 pr-4 align-middle w-[160px]", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Typography, { variant: "body2", className: ui.cls("font-medium", hasFilter && "text-primary"), children:
|
|
25313
|
-
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-3", children: renderFilterField(propertyKey_2,
|
|
25318
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-3 pr-4 align-middle w-[160px]", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Typography, { variant: "body2", className: ui.cls("font-medium", hasFilter && "text-primary"), children: property_0.name || propertyKey_2 }) }),
|
|
25319
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-3", children: renderFilterField(propertyKey_2, property_0) })
|
|
25314
25320
|
] }, propertyKey_2);
|
|
25315
25321
|
}) }) }) }),
|
|
25316
25322
|
/* @__PURE__ */ jsxRuntime.jsxs(ui.DialogActions, { children: [
|
|
25317
25323
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Button, { variant: "text", onClick: handleClearAll, disabled: activeFilterCount === 0, children: t("clear") }),
|
|
25318
25324
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-grow" }),
|
|
25319
|
-
/* @__PURE__ */ jsxRuntime.
|
|
25320
|
-
|
|
25325
|
+
hasEditableFilterProperties && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
25326
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Button, { variant: "text", onClick: () => onOpenChange(false), children: t("cancel") }),
|
|
25327
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Button, { variant: "filled", onClick: handleApply, children: t("apply_filters") })
|
|
25328
|
+
] })
|
|
25321
25329
|
] })
|
|
25322
25330
|
] });
|
|
25323
25331
|
}
|
|
25324
25332
|
function EntityCollectionViewStartActions(t0) {
|
|
25325
|
-
const $ = reactCompilerRuntime.c(
|
|
25333
|
+
const $ = reactCompilerRuntime.c(37);
|
|
25326
25334
|
const {
|
|
25327
25335
|
collection,
|
|
25328
25336
|
relativePath,
|
|
@@ -25386,34 +25394,36 @@
|
|
|
25386
25394
|
t3 = $[13];
|
|
25387
25395
|
}
|
|
25388
25396
|
const actionProps = t3;
|
|
25397
|
+
const hasAnyAllowedFilters = !tableController.allowedFilters || tableController.allowedFilters.length > 0;
|
|
25389
25398
|
let t4;
|
|
25390
|
-
if ($[14] !== activeFilterCount || $[15] !==
|
|
25391
|
-
t4 = resolvedProperties && tableController.setFilterValues && /* @__PURE__ */ jsxRuntime.jsx(ui.Tooltip, { title: t("filters"), children: /* @__PURE__ */ jsxRuntime.jsx(ui.Badge, { color: "primary", invisible: activeFilterCount === 0, children: largeLayout ? /* @__PURE__ */ jsxRuntime.jsxs(ui.Button, { variant: "text", size: "small", onClick: () => setFiltersDialogOpen(true), startIcon: /* @__PURE__ */ jsxRuntime.jsx(ui.FilterListIcon, { size: "small" }), className: ui.cls(activeFilterCount > 0 && "text-primary"), children: [
|
|
25399
|
+
if ($[14] !== activeFilterCount || $[15] !== hasAnyAllowedFilters || $[16] !== largeLayout || $[17] !== resolvedProperties || $[18] !== t || $[19] !== tableController.setFilterValues) {
|
|
25400
|
+
t4 = resolvedProperties && tableController.setFilterValues && hasAnyAllowedFilters && /* @__PURE__ */ jsxRuntime.jsx(ui.Tooltip, { title: t("filters"), children: /* @__PURE__ */ jsxRuntime.jsx(ui.Badge, { color: "primary", invisible: activeFilterCount === 0, children: largeLayout ? /* @__PURE__ */ jsxRuntime.jsxs(ui.Button, { variant: "text", size: "small", onClick: () => setFiltersDialogOpen(true), startIcon: /* @__PURE__ */ jsxRuntime.jsx(ui.FilterListIcon, { size: "small" }), className: ui.cls(activeFilterCount > 0 && "text-primary"), children: [
|
|
25392
25401
|
t("filters"),
|
|
25393
25402
|
activeFilterCount > 0 ? ` (${activeFilterCount})` : ""
|
|
25394
25403
|
] }) : /* @__PURE__ */ jsxRuntime.jsx(ui.IconButton, { size: "small", onClick: () => setFiltersDialogOpen(true), className: ui.cls(activeFilterCount > 0 && "text-primary"), children: /* @__PURE__ */ jsxRuntime.jsx(ui.FilterListIcon, { size: "small" }) }) }) }, "filters_tooltip");
|
|
25395
25404
|
$[14] = activeFilterCount;
|
|
25396
|
-
$[15] =
|
|
25397
|
-
$[16] =
|
|
25398
|
-
$[17] =
|
|
25399
|
-
$[18] =
|
|
25400
|
-
$[19] =
|
|
25405
|
+
$[15] = hasAnyAllowedFilters;
|
|
25406
|
+
$[16] = largeLayout;
|
|
25407
|
+
$[17] = resolvedProperties;
|
|
25408
|
+
$[18] = t;
|
|
25409
|
+
$[19] = tableController.setFilterValues;
|
|
25410
|
+
$[20] = t4;
|
|
25401
25411
|
} else {
|
|
25402
|
-
t4 = $[
|
|
25412
|
+
t4 = $[20];
|
|
25403
25413
|
}
|
|
25404
25414
|
const filtersButton = t4;
|
|
25405
25415
|
const t5 = !collection.forceFilter;
|
|
25406
25416
|
let t6;
|
|
25407
|
-
if ($[
|
|
25417
|
+
if ($[21] !== t5 || $[22] !== tableController) {
|
|
25408
25418
|
t6 = /* @__PURE__ */ jsxRuntime.jsx(ClearFilterSortButton, { tableController, enabled: t5 }, "clear_filter");
|
|
25409
|
-
$[
|
|
25410
|
-
$[
|
|
25411
|
-
$[
|
|
25419
|
+
$[21] = t5;
|
|
25420
|
+
$[22] = tableController;
|
|
25421
|
+
$[23] = t6;
|
|
25412
25422
|
} else {
|
|
25413
|
-
t6 = $[
|
|
25423
|
+
t6 = $[23];
|
|
25414
25424
|
}
|
|
25415
25425
|
let actions;
|
|
25416
|
-
if ($[
|
|
25426
|
+
if ($[24] !== actionProps || $[25] !== filtersButton || $[26] !== plugins || $[27] !== t6) {
|
|
25417
25427
|
actions = [filtersButton, t6];
|
|
25418
25428
|
if (plugins) {
|
|
25419
25429
|
plugins.forEach((plugin, i) => {
|
|
@@ -25422,39 +25432,42 @@
|
|
|
25422
25432
|
}
|
|
25423
25433
|
});
|
|
25424
25434
|
}
|
|
25425
|
-
$[
|
|
25426
|
-
$[
|
|
25427
|
-
$[
|
|
25428
|
-
$[
|
|
25429
|
-
$[
|
|
25435
|
+
$[24] = actionProps;
|
|
25436
|
+
$[25] = filtersButton;
|
|
25437
|
+
$[26] = plugins;
|
|
25438
|
+
$[27] = t6;
|
|
25439
|
+
$[28] = actions;
|
|
25430
25440
|
} else {
|
|
25431
|
-
actions = $[
|
|
25441
|
+
actions = $[28];
|
|
25432
25442
|
}
|
|
25433
25443
|
let t7;
|
|
25434
|
-
if ($[
|
|
25435
|
-
t7 = resolvedProperties && tableController.setFilterValues && /* @__PURE__ */ jsxRuntime.jsx(FiltersDialog, { open: filtersDialogOpen, onOpenChange: setFiltersDialogOpen, properties: resolvedProperties, filterValues: tableController.filterValues, setFilterValues: (filterValues_0) => tableController.setFilterValues?.(filterValues_0 ?? {}), forceFilter: collection.forceFilter });
|
|
25436
|
-
$[
|
|
25437
|
-
$[
|
|
25438
|
-
$[
|
|
25439
|
-
$[
|
|
25440
|
-
$[
|
|
25444
|
+
if ($[29] !== collection.forceFilter || $[30] !== filtersDialogOpen || $[31] !== resolvedProperties || $[32] !== tableController) {
|
|
25445
|
+
t7 = resolvedProperties && tableController.setFilterValues && /* @__PURE__ */ jsxRuntime.jsx(FiltersDialog, { open: filtersDialogOpen, onOpenChange: setFiltersDialogOpen, properties: resolvedProperties, filterValues: tableController.filterValues, setFilterValues: (filterValues_0) => tableController.setFilterValues?.(filterValues_0 ?? {}), forceFilter: collection.forceFilter, allowedFilters: tableController.allowedFilters?.map(_temp$g) });
|
|
25446
|
+
$[29] = collection.forceFilter;
|
|
25447
|
+
$[30] = filtersDialogOpen;
|
|
25448
|
+
$[31] = resolvedProperties;
|
|
25449
|
+
$[32] = tableController;
|
|
25450
|
+
$[33] = t7;
|
|
25441
25451
|
} else {
|
|
25442
|
-
t7 = $[
|
|
25452
|
+
t7 = $[33];
|
|
25443
25453
|
}
|
|
25444
25454
|
let t8;
|
|
25445
|
-
if ($[
|
|
25455
|
+
if ($[34] !== actions || $[35] !== t7) {
|
|
25446
25456
|
t8 = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
25447
25457
|
actions,
|
|
25448
25458
|
t7
|
|
25449
25459
|
] });
|
|
25450
|
-
$[
|
|
25451
|
-
$[
|
|
25452
|
-
$[
|
|
25460
|
+
$[34] = actions;
|
|
25461
|
+
$[35] = t7;
|
|
25462
|
+
$[36] = t8;
|
|
25453
25463
|
} else {
|
|
25454
|
-
t8 = $[
|
|
25464
|
+
t8 = $[36];
|
|
25455
25465
|
}
|
|
25456
25466
|
return t8;
|
|
25457
25467
|
}
|
|
25468
|
+
function _temp$g(key_0) {
|
|
25469
|
+
return key_0.toString();
|
|
25470
|
+
}
|
|
25458
25471
|
const collectionScrollCache = /* @__PURE__ */ new Map();
|
|
25459
25472
|
function useScrollRestoration() {
|
|
25460
25473
|
const updateCollectionScroll = ({
|
|
@@ -25513,7 +25526,12 @@
|
|
|
25513
25526
|
const scrollRestoration = useScrollRestoration();
|
|
25514
25527
|
const collection = React.useMemo(() => {
|
|
25515
25528
|
const userOverride = userConfigPersistence?.getCollectionConfig(fullPath);
|
|
25516
|
-
|
|
25529
|
+
if (!userOverride) return collectionProp;
|
|
25530
|
+
const {
|
|
25531
|
+
properties,
|
|
25532
|
+
...rest
|
|
25533
|
+
} = userOverride;
|
|
25534
|
+
return mergeDeep(collectionProp, rest);
|
|
25517
25535
|
}, [collectionProp, fullPath, userConfigPersistence?.getCollectionConfig]);
|
|
25518
25536
|
const openEntityMode = collection?.openEntityMode ?? DEFAULT_ENTITY_OPEN_MODE;
|
|
25519
25537
|
const collectionRef = React.useRef(collection);
|
|
@@ -25767,11 +25785,12 @@
|
|
|
25767
25785
|
collection,
|
|
25768
25786
|
path: fullPath,
|
|
25769
25787
|
propertyConfigs: customizationController.propertyConfigs,
|
|
25770
|
-
authController
|
|
25771
|
-
|
|
25788
|
+
authController,
|
|
25789
|
+
userConfigPersistence
|
|
25790
|
+
}), [collection, fullPath, userConfigPersistence]);
|
|
25772
25791
|
const hasEnumProperty = React.useMemo(() => {
|
|
25773
|
-
const
|
|
25774
|
-
return Object.values(
|
|
25792
|
+
const properties_0 = resolvedCollection.properties;
|
|
25793
|
+
return Object.values(properties_0).some((prop) => prop && prop.dataType === "string" && prop.enumValues);
|
|
25775
25794
|
}, [resolvedCollection.properties]);
|
|
25776
25795
|
const enabledViews = React.useMemo(() => {
|
|
25777
25796
|
const configured = collection.enabledViews ?? ["table", "cards", "kanban"];
|
|
@@ -25782,8 +25801,8 @@
|
|
|
25782
25801
|
}, [collection.enabledViews, hasEnumProperty]);
|
|
25783
25802
|
const kanbanPropertyOptions = React.useMemo(() => {
|
|
25784
25803
|
const options = [];
|
|
25785
|
-
const
|
|
25786
|
-
for (const [key_0, property_0] of Object.entries(
|
|
25804
|
+
const properties_1 = resolvedCollection.properties;
|
|
25805
|
+
for (const [key_0, property_0] of Object.entries(properties_1)) {
|
|
25787
25806
|
const prop_0 = property_0;
|
|
25788
25807
|
if (prop_0 && prop_0.dataType === "string" && prop_0.enumValues) {
|
|
25789
25808
|
options.push({
|
|
@@ -27146,7 +27165,7 @@
|
|
|
27146
27165
|
const onMultipleEntitiesSelected = React.useCallback((entities) => {
|
|
27147
27166
|
if (disabled) return;
|
|
27148
27167
|
if (onMultipleReferenceSelected) {
|
|
27149
|
-
const references = entities ? entities.map((e) => getReferenceFrom(e)) : null;
|
|
27168
|
+
const references = entities ? entities.filter(Boolean).map((e) => getReferenceFrom(e)) : null;
|
|
27150
27169
|
onMultipleReferenceSelected({
|
|
27151
27170
|
references,
|
|
27152
27171
|
entities
|
|
@@ -28086,7 +28105,14 @@
|
|
|
28086
28105
|
if (!collections_0) return void 0;
|
|
28087
28106
|
const baseCollection = getCollectionByPathOrId(removeInitialAndTrailingSlashes(idOrPath), collections_0);
|
|
28088
28107
|
const userOverride = includeUserOverride ? userConfigPersistence?.getCollectionConfig(idOrPath) : void 0;
|
|
28089
|
-
|
|
28108
|
+
let overriddenCollection = baseCollection;
|
|
28109
|
+
if (baseCollection && userOverride) {
|
|
28110
|
+
const {
|
|
28111
|
+
properties,
|
|
28112
|
+
...rest
|
|
28113
|
+
} = userOverride;
|
|
28114
|
+
overriddenCollection = mergeDeep(baseCollection, rest);
|
|
28115
|
+
}
|
|
28090
28116
|
let result = overriddenCollection;
|
|
28091
28117
|
if (overriddenCollection) {
|
|
28092
28118
|
const subcollections = overriddenCollection.subcollections;
|
|
@@ -30027,7 +30053,7 @@
|
|
|
30027
30053
|
replace: true,
|
|
30028
30054
|
state: {
|
|
30029
30055
|
base_location: baseLocation,
|
|
30030
|
-
panels: updatedPanels.map(_temp4$
|
|
30056
|
+
panels: updatedPanels.map(_temp4$2)
|
|
30031
30057
|
}
|
|
30032
30058
|
});
|
|
30033
30059
|
}
|
|
@@ -30125,7 +30151,7 @@
|
|
|
30125
30151
|
function _temp5$1(p_3) {
|
|
30126
30152
|
return p_3.key;
|
|
30127
30153
|
}
|
|
30128
|
-
function _temp4$
|
|
30154
|
+
function _temp4$2(p_2) {
|
|
30129
30155
|
return p_2.key;
|
|
30130
30156
|
}
|
|
30131
30157
|
function _temp3$2(p_1) {
|
|
@@ -32271,7 +32297,7 @@
|
|
|
32271
32297
|
const otherChildren = t3;
|
|
32272
32298
|
const includeDrawer = drawerChildren.length > 0;
|
|
32273
32299
|
const largeLayout = useLargeLayout();
|
|
32274
|
-
const [drawerOpen, setDrawerOpen] = React.useState(
|
|
32300
|
+
const [drawerOpen, setDrawerOpen] = React.useState(_temp4$1);
|
|
32275
32301
|
const [onHover, setOnHover] = React.useState(false);
|
|
32276
32302
|
let t4;
|
|
32277
32303
|
if ($[6] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
|
|
@@ -32293,6 +32319,10 @@
|
|
|
32293
32319
|
if ($[8] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
|
|
32294
32320
|
t6 = () => {
|
|
32295
32321
|
setDrawerOpen(true);
|
|
32322
|
+
try {
|
|
32323
|
+
localStorage.setItem("firecms_drawer_open", "true");
|
|
32324
|
+
} catch {
|
|
32325
|
+
}
|
|
32296
32326
|
};
|
|
32297
32327
|
$[8] = t6;
|
|
32298
32328
|
} else {
|
|
@@ -32303,6 +32333,10 @@
|
|
|
32303
32333
|
if ($[9] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
|
|
32304
32334
|
t7 = () => {
|
|
32305
32335
|
setDrawerOpen(false);
|
|
32336
|
+
try {
|
|
32337
|
+
localStorage.setItem("firecms_drawer_open", "false");
|
|
32338
|
+
} catch {
|
|
32339
|
+
}
|
|
32306
32340
|
};
|
|
32307
32341
|
$[9] = t7;
|
|
32308
32342
|
} else {
|
|
@@ -32655,6 +32689,13 @@
|
|
|
32655
32689
|
function _temp3$1(child_1) {
|
|
32656
32690
|
return child_1.type.componentType !== "Drawer" && child_1.type.componentType !== "AppBar";
|
|
32657
32691
|
}
|
|
32692
|
+
function _temp4$1() {
|
|
32693
|
+
try {
|
|
32694
|
+
return localStorage.getItem("firecms_drawer_open") === "true";
|
|
32695
|
+
} catch {
|
|
32696
|
+
return false;
|
|
32697
|
+
}
|
|
32698
|
+
}
|
|
32658
32699
|
const en = {
|
|
32659
32700
|
// ─── Form actions ────────────────────────────────────────────
|
|
32660
32701
|
save: "Save",
|
|
@@ -32792,8 +32833,8 @@
|
|
|
32792
32833
|
// ─── Error states ─────────────────────────────────────────────
|
|
32793
32834
|
error: "Error",
|
|
32794
32835
|
error_uploading_file: "Error uploading file",
|
|
32795
|
-
error_deleting: "Error deleting",
|
|
32796
|
-
error_before_delete: "Error before delete",
|
|
32836
|
+
error_deleting: "Error deleting: {{message}}",
|
|
32837
|
+
error_before_delete: "Error before delete: {{message}}",
|
|
32797
32838
|
error_updating_asset: "Error updating asset",
|
|
32798
32839
|
error_deleting_asset: "Error deleting asset",
|
|
32799
32840
|
error_firestore_index: "A Firestore index is required for this query.",
|
|
@@ -33130,10 +33171,18 @@
|
|
|
33130
33171
|
auto_setup_collections_button: "Automatically set up collections",
|
|
33131
33172
|
auto_setup_collections_title: "Automatically set up collections?",
|
|
33132
33173
|
auto_setup_collections_desc: "This will automatically create collection configs for collections that are <b>NOT</b> already mapped",
|
|
33133
|
-
|
|
33174
|
+
setting_up_collections: "Setting up collections",
|
|
33175
|
+
setting_up_collection: "Setting up {{name}}",
|
|
33134
33176
|
no_collections_found_to_setup: "No collections found to setup.",
|
|
33135
33177
|
collections_have_been_setup: "Collections have been automatically setup.",
|
|
33136
33178
|
error_setting_up_collections: "Error automatically setting up collections",
|
|
33179
|
+
setup_collections_title: "Set up collections",
|
|
33180
|
+
setup_collections_select_desc: "Select which collections to automatically set up:",
|
|
33181
|
+
select_all: "Select all",
|
|
33182
|
+
deselect_all: "Deselect all",
|
|
33183
|
+
setup_collections_confirm: "Set up ({{count}})",
|
|
33184
|
+
collection_setup_success: "{{name}} has been set up",
|
|
33185
|
+
go_to_collection: "Go to collection",
|
|
33137
33186
|
// --- Home Suggestions ---
|
|
33138
33187
|
add_your: "Add your",
|
|
33139
33188
|
database_collections: "database collections",
|
|
@@ -33461,8 +33510,8 @@
|
|
|
33461
33510
|
// ─── Error states ─────────────────────────────────────────────
|
|
33462
33511
|
error: "Error",
|
|
33463
33512
|
error_uploading_file: "Error al subir archivo",
|
|
33464
|
-
error_deleting: "Error al eliminar",
|
|
33465
|
-
error_before_delete: "Error antes de eliminar",
|
|
33513
|
+
error_deleting: "Error al eliminar: {{message}}",
|
|
33514
|
+
error_before_delete: "Error antes de eliminar: {{message}}",
|
|
33466
33515
|
error_updating_asset: "Error al actualizar recurso",
|
|
33467
33516
|
error_deleting_asset: "Error al eliminar recurso",
|
|
33468
33517
|
error_firestore_index: "Se requiere un índice de Firestore para esta consulta.",
|
|
@@ -33801,10 +33850,18 @@
|
|
|
33801
33850
|
auto_setup_collections_button: "Configurar colecciones automáticamente",
|
|
33802
33851
|
auto_setup_collections_title: "¿Configurar colecciones automáticamente?",
|
|
33803
33852
|
auto_setup_collections_desc: "Esto creará automáticamente la configuración de las colecciones que <b>NO</b> estén mapeadas",
|
|
33804
|
-
|
|
33853
|
+
setting_up_collections: "Configurando colecciones",
|
|
33854
|
+
setting_up_collection: "Configurando {{name}}",
|
|
33805
33855
|
no_collections_found_to_setup: "No se encontraron colecciones para configurar",
|
|
33806
33856
|
collections_have_been_setup: "¡Tus colecciones han sido configuradas!",
|
|
33807
33857
|
error_setting_up_collections: "Error al configurar colecciones",
|
|
33858
|
+
setup_collections_title: "Set up collections",
|
|
33859
|
+
setup_collections_select_desc: "Select which collections to automatically set up:",
|
|
33860
|
+
select_all: "Select all",
|
|
33861
|
+
deselect_all: "Deselect all",
|
|
33862
|
+
setup_collections_confirm: "Set up ({{count}})",
|
|
33863
|
+
collection_setup_success: "{{name}} has been set up",
|
|
33864
|
+
go_to_collection: "Go to collection",
|
|
33808
33865
|
// --- Home Suggestions ---
|
|
33809
33866
|
add_your: "Añade tus",
|
|
33810
33867
|
database_collections: "colecciones de base de datos",
|
|
@@ -34134,8 +34191,8 @@
|
|
|
34134
34191
|
// ─── Error states ─────────────────────────────────────────────
|
|
34135
34192
|
error: "Fehler",
|
|
34136
34193
|
error_uploading_file: "Fehler beim Hochladen der Datei",
|
|
34137
|
-
error_deleting: "Fehler beim Löschen",
|
|
34138
|
-
error_before_delete: "Fehler vor dem Löschen",
|
|
34194
|
+
error_deleting: "Fehler beim Löschen: {{message}}",
|
|
34195
|
+
error_before_delete: "Fehler vor dem Löschen: {{message}}",
|
|
34139
34196
|
error_updating_asset: "Fehler beim Aktualisieren des Assets",
|
|
34140
34197
|
error_deleting_asset: "Fehler beim Löschen des Assets",
|
|
34141
34198
|
error_firestore_index: "Für diese Abfrage ist ein Firestore-Index erforderlich.",
|
|
@@ -34472,10 +34529,18 @@
|
|
|
34472
34529
|
auto_setup_collections_button: "Sammlungen automatisch einrichten",
|
|
34473
34530
|
auto_setup_collections_title: "Sammlungen automatisch einrichten?",
|
|
34474
34531
|
auto_setup_collections_desc: "Dadurch werden automatisch Sammlungskonfigurationen für Sammlungen erstellt, die noch <b>NICHT</b> zugeordnet sind.",
|
|
34475
|
-
|
|
34532
|
+
setting_up_collections: "Sammlungen werden eingerichtet",
|
|
34533
|
+
setting_up_collection: "{{name}} wird eingerichtet",
|
|
34476
34534
|
no_collections_found_to_setup: "Keine einzurichtenden Sammlungen gefunden",
|
|
34477
34535
|
collections_have_been_setup: "Sammlungen wurden automatisch eingerichtet",
|
|
34478
34536
|
error_setting_up_collections: "Fehler beim automatischen Einrichten der Sammlungen",
|
|
34537
|
+
setup_collections_title: "Set up collections",
|
|
34538
|
+
setup_collections_select_desc: "Select which collections to automatically set up:",
|
|
34539
|
+
select_all: "Select all",
|
|
34540
|
+
deselect_all: "Deselect all",
|
|
34541
|
+
setup_collections_confirm: "Set up ({{count}})",
|
|
34542
|
+
collection_setup_success: "{{name}} has been set up",
|
|
34543
|
+
go_to_collection: "Go to collection",
|
|
34479
34544
|
add_your: "Fügen Sie Ihre",
|
|
34480
34545
|
database_collections: "Datenbanksammlungen",
|
|
34481
34546
|
to_firecms: "zu FireCMS hinzu",
|
|
@@ -34803,8 +34868,8 @@
|
|
|
34803
34868
|
// ─── Error states ─────────────────────────────────────────────
|
|
34804
34869
|
error: "Erreur",
|
|
34805
34870
|
error_uploading_file: "Erreur lors du téléchargement du fichier",
|
|
34806
|
-
error_deleting: "Erreur lors de la suppression",
|
|
34807
|
-
error_before_delete: "Erreur avant la suppression",
|
|
34871
|
+
error_deleting: "Erreur lors de la suppression: {{message}}",
|
|
34872
|
+
error_before_delete: "Erreur avant la suppression: {{message}}",
|
|
34808
34873
|
error_updating_asset: "Erreur lors de la mise à jour de l'actif",
|
|
34809
34874
|
error_deleting_asset: "Erreur lors de la suppression de l'actif",
|
|
34810
34875
|
error_firestore_index: "Un index Firestore est requis pour cette requête.",
|
|
@@ -35141,10 +35206,18 @@
|
|
|
35141
35206
|
auto_setup_collections_button: "Configurer les collections automatiquement",
|
|
35142
35207
|
auto_setup_collections_title: "Configurer les collections automatiquement ?",
|
|
35143
35208
|
auto_setup_collections_desc: "Cela créera automatiquement des configurations de collection pour les collections qui ne sont <b>PAS</b> déjà mappées",
|
|
35144
|
-
|
|
35209
|
+
setting_up_collections: "Configuration des collections",
|
|
35210
|
+
setting_up_collection: "Configuration de {{name}}",
|
|
35145
35211
|
no_collections_found_to_setup: "Aucune collection à configurer trouvée",
|
|
35146
35212
|
collections_have_been_setup: "Les collections ont été configurées",
|
|
35147
35213
|
error_setting_up_collections: "Erreur lors de la configuration des collections",
|
|
35214
|
+
setup_collections_title: "Set up collections",
|
|
35215
|
+
setup_collections_select_desc: "Select which collections to automatically set up:",
|
|
35216
|
+
select_all: "Select all",
|
|
35217
|
+
deselect_all: "Deselect all",
|
|
35218
|
+
setup_collections_confirm: "Set up ({{count}})",
|
|
35219
|
+
collection_setup_success: "{{name}} has been set up",
|
|
35220
|
+
go_to_collection: "Go to collection",
|
|
35148
35221
|
add_your: "Ajoutez vos",
|
|
35149
35222
|
database_collections: "collections de base de données",
|
|
35150
35223
|
to_firecms: "à FireCMS",
|
|
@@ -35472,8 +35545,8 @@
|
|
|
35472
35545
|
// ─── Error states ─────────────────────────────────────────────
|
|
35473
35546
|
error: "Errore",
|
|
35474
35547
|
error_uploading_file: "Errore durante il caricamento del file",
|
|
35475
|
-
error_deleting: "Errore durante l'eliminazione",
|
|
35476
|
-
error_before_delete: "Errore prima dell'eliminazione",
|
|
35548
|
+
error_deleting: "Errore durante l'eliminazione: {{message}}",
|
|
35549
|
+
error_before_delete: "Errore prima dell'eliminazione: {{message}}",
|
|
35477
35550
|
error_updating_asset: "Errore durante l'aggiornamento dell'asset",
|
|
35478
35551
|
error_deleting_asset: "Errore durante l'eliminazione dell'asset",
|
|
35479
35552
|
error_firestore_index: "Per questa query è richiesto un indice Firestore.",
|
|
@@ -35810,10 +35883,18 @@
|
|
|
35810
35883
|
auto_setup_collections_button: "Configura le collezioni automaticamente",
|
|
35811
35884
|
auto_setup_collections_title: "Configurazione automatica delle collezioni",
|
|
35812
35885
|
auto_setup_collections_desc: "Configura le collezioni automaticamente in base ai dati Firestore esistenti. Lascia che FireCMS configuri il CMS perfetto per te.",
|
|
35813
|
-
|
|
35886
|
+
setting_up_collections: "Configurazione delle collezioni",
|
|
35887
|
+
setting_up_collection: "Configurazione di {{name}}",
|
|
35814
35888
|
no_collections_found_to_setup: "Nessuna collezione trovata da configurare",
|
|
35815
35889
|
collections_have_been_setup: "Le collezioni sono state configurate",
|
|
35816
35890
|
error_setting_up_collections: "Errore durante la configurazione delle collezioni",
|
|
35891
|
+
setup_collections_title: "Set up collections",
|
|
35892
|
+
setup_collections_select_desc: "Select which collections to automatically set up:",
|
|
35893
|
+
select_all: "Select all",
|
|
35894
|
+
deselect_all: "Deselect all",
|
|
35895
|
+
setup_collections_confirm: "Set up ({{count}})",
|
|
35896
|
+
collection_setup_success: "{{name}} has been set up",
|
|
35897
|
+
go_to_collection: "Go to collection",
|
|
35817
35898
|
add_your: "Aggiungi le tue",
|
|
35818
35899
|
database_collections: "collezioni del database",
|
|
35819
35900
|
to_firecms: "a FireCMS",
|
|
@@ -36141,8 +36222,8 @@
|
|
|
36141
36222
|
// ─── Error states ─────────────────────────────────────────────
|
|
36142
36223
|
error: "त्रुटि",
|
|
36143
36224
|
error_uploading_file: "फ़ाइल अपलोड करने में त्रुटि",
|
|
36144
|
-
error_deleting: "हटाने में
|
|
36145
|
-
error_before_delete: "हटाने से पहले
|
|
36225
|
+
error_deleting: "हटाने में त्रुटि: {{message}}",
|
|
36226
|
+
error_before_delete: "हटाने से पहले त्रुटि: {{message}}",
|
|
36146
36227
|
error_updating_asset: "एसेट अपडेट करने में त्रुटि",
|
|
36147
36228
|
error_deleting_asset: "एसेट हटाने में त्रुटि",
|
|
36148
36229
|
error_firestore_index: "इस क्वेरी के लिए Firestore इंडेक्स आवश्यक है।",
|
|
@@ -36479,10 +36560,18 @@
|
|
|
36479
36560
|
auto_setup_collections_button: "संग्रहों को स्वचालित रूप से सेट करें",
|
|
36480
36561
|
auto_setup_collections_title: "संग्रहों की स्वचालित सेटअप",
|
|
36481
36562
|
auto_setup_collections_desc: "अपने मौजूदा Firestore डेटा के आधार पर संग्रहों को स्वचालित रूप से सेट करें। FireCMS को आपके लिए परफेक्ट CMS कॉन्फ़िगर करने दें।",
|
|
36482
|
-
|
|
36563
|
+
setting_up_collections: "संग्रह सेट किए जा रहे हैं",
|
|
36564
|
+
setting_up_collection: "{{name}} सेट किया जा रहा है",
|
|
36483
36565
|
no_collections_found_to_setup: "सेट करने के लिए कोई संग्रह नहीं मिला",
|
|
36484
36566
|
collections_have_been_setup: "संग्रहों को सेट कर दिया गया है",
|
|
36485
36567
|
error_setting_up_collections: "संग्रह सेट करने में त्रुटि",
|
|
36568
|
+
setup_collections_title: "Set up collections",
|
|
36569
|
+
setup_collections_select_desc: "Select which collections to automatically set up:",
|
|
36570
|
+
select_all: "Select all",
|
|
36571
|
+
deselect_all: "Deselect all",
|
|
36572
|
+
setup_collections_confirm: "Set up ({{count}})",
|
|
36573
|
+
collection_setup_success: "{{name}} has been set up",
|
|
36574
|
+
go_to_collection: "Go to collection",
|
|
36486
36575
|
add_your: "अपने",
|
|
36487
36576
|
database_collections: "डेटाबेस संग्रह",
|
|
36488
36577
|
to_firecms: "को FireCMS में जोड़ें",
|
|
@@ -36810,8 +36899,8 @@
|
|
|
36810
36899
|
// ─── Error states ─────────────────────────────────────────────
|
|
36811
36900
|
error: "Erro",
|
|
36812
36901
|
error_uploading_file: "Erro ao carregar ficheiro",
|
|
36813
|
-
error_deleting: "Erro ao eliminar",
|
|
36814
|
-
error_before_delete: "Erro antes de eliminar",
|
|
36902
|
+
error_deleting: "Erro ao eliminar: {{message}}",
|
|
36903
|
+
error_before_delete: "Erro antes de eliminar: {{message}}",
|
|
36815
36904
|
error_updating_asset: "Erro ao atualizar recurso",
|
|
36816
36905
|
error_deleting_asset: "Erro ao eliminar recurso",
|
|
36817
36906
|
error_firestore_index: "É necessário um índice Firestore para esta consulta.",
|
|
@@ -37148,10 +37237,18 @@
|
|
|
37148
37237
|
auto_setup_collections_button: "Configurar coleções automaticamente",
|
|
37149
37238
|
auto_setup_collections_title: "Configurar coleções automaticamente?",
|
|
37150
37239
|
auto_setup_collections_desc: "Isto criará automaticamente configurações de coleção para coleções que <b>NÃO</b> estão já mapeadas",
|
|
37151
|
-
|
|
37240
|
+
setting_up_collections: "Configurando coleções",
|
|
37241
|
+
setting_up_collection: "Configurando {{name}}",
|
|
37152
37242
|
no_collections_found_to_setup: "Nenhuma coleção encontrada para configurar.",
|
|
37153
37243
|
collections_have_been_setup: "As coleções foram configuradas automaticamente.",
|
|
37154
37244
|
error_setting_up_collections: "Erro ao configurar coleções automaticamente",
|
|
37245
|
+
setup_collections_title: "Set up collections",
|
|
37246
|
+
setup_collections_select_desc: "Select which collections to automatically set up:",
|
|
37247
|
+
select_all: "Select all",
|
|
37248
|
+
deselect_all: "Deselect all",
|
|
37249
|
+
setup_collections_confirm: "Set up ({{count}})",
|
|
37250
|
+
collection_setup_success: "{{name}} has been set up",
|
|
37251
|
+
go_to_collection: "Go to collection",
|
|
37155
37252
|
// --- Home Suggestions ---
|
|
37156
37253
|
add_your: "Adicione as suas",
|
|
37157
37254
|
database_collections: "coleções da base de dados",
|
|
@@ -42188,6 +42285,7 @@ ul[data-type="taskList"] li[data-checked="true"] > div > p {
|
|
|
42188
42285
|
exports2.hydrateRegExp = hydrateRegExp;
|
|
42189
42286
|
exports2.iconSynonyms = iconSynonyms;
|
|
42190
42287
|
exports2.iconsSearch = iconsSearch;
|
|
42288
|
+
exports2.isDataTypeFilterable = isDataTypeFilterable;
|
|
42191
42289
|
exports2.isDefaultFieldConfigId = isDefaultFieldConfigId;
|
|
42192
42290
|
exports2.isEmptyObject = isEmptyObject;
|
|
42193
42291
|
exports2.isEnumValueDisabled = isEnumValueDisabled;
|