@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.es.js
CHANGED
|
@@ -714,6 +714,9 @@ function sanitizeData(values, properties) {
|
|
|
714
714
|
return result;
|
|
715
715
|
}
|
|
716
716
|
function getReferenceFrom(entity) {
|
|
717
|
+
if (!entity) {
|
|
718
|
+
throw new Error("getReferenceFrom: entity is null or undefined");
|
|
719
|
+
}
|
|
717
720
|
return new EntityReference(entity.id, entity.path, entity.databaseId);
|
|
718
721
|
}
|
|
719
722
|
function traverseValuesProperties(inputValues, properties, operation) {
|
|
@@ -763,6 +766,12 @@ function traverseValueProperty(inputValue, property, operation) {
|
|
|
763
766
|
}
|
|
764
767
|
return value;
|
|
765
768
|
}
|
|
769
|
+
function isDataTypeFilterable(dataType, isPartOfArray = false) {
|
|
770
|
+
if (isPartOfArray) {
|
|
771
|
+
return ["string", "number", "date", "reference"].includes(dataType);
|
|
772
|
+
}
|
|
773
|
+
return ["string", "number", "boolean", "date", "reference", "array"].includes(dataType);
|
|
774
|
+
}
|
|
766
775
|
function enumToObjectEntries(enumValues) {
|
|
767
776
|
if (Array.isArray(enumValues)) {
|
|
768
777
|
return enumValues;
|
|
@@ -849,8 +858,13 @@ const resolveCollection = ({
|
|
|
849
858
|
...a,
|
|
850
859
|
...b
|
|
851
860
|
}), {});
|
|
861
|
+
const {
|
|
862
|
+
properties: overrideProps,
|
|
863
|
+
...restOverrides
|
|
864
|
+
} = collectionOverride ?? {};
|
|
852
865
|
return {
|
|
853
866
|
...collection,
|
|
867
|
+
...restOverrides,
|
|
854
868
|
properties: cleanedProperties,
|
|
855
869
|
originalCollection: collection
|
|
856
870
|
};
|
|
@@ -4536,7 +4550,7 @@ function useCollectionFetch(t0) {
|
|
|
4536
4550
|
}
|
|
4537
4551
|
setDataLoading(false);
|
|
4538
4552
|
setDataLoadingError(void 0);
|
|
4539
|
-
setData(entities.map(_temp$
|
|
4553
|
+
setData(entities.map(_temp$D));
|
|
4540
4554
|
setNoMoreToLoad(!itemCount || entities.length < itemCount);
|
|
4541
4555
|
};
|
|
4542
4556
|
const onError = (error) => {
|
|
@@ -4619,7 +4633,7 @@ function useCollectionFetch(t0) {
|
|
|
4619
4633
|
}
|
|
4620
4634
|
function _temp2$f() {
|
|
4621
4635
|
}
|
|
4622
|
-
function _temp$
|
|
4636
|
+
function _temp$D(e_0) {
|
|
4623
4637
|
return {
|
|
4624
4638
|
...e_0
|
|
4625
4639
|
};
|
|
@@ -4684,7 +4698,7 @@ function useEntityFetch(t0) {
|
|
|
4684
4698
|
setEntity(CACHE[`${path}/${entityId}`]);
|
|
4685
4699
|
setDataLoading(false);
|
|
4686
4700
|
setDataLoadingError(void 0);
|
|
4687
|
-
return _temp$
|
|
4701
|
+
return _temp$C;
|
|
4688
4702
|
} else {
|
|
4689
4703
|
if (entityId && path && collection) {
|
|
4690
4704
|
if (dataSource.listenEntity) {
|
|
@@ -4752,7 +4766,7 @@ function _temp3$5() {
|
|
|
4752
4766
|
}
|
|
4753
4767
|
function _temp2$e() {
|
|
4754
4768
|
}
|
|
4755
|
-
function _temp$
|
|
4769
|
+
function _temp$C() {
|
|
4756
4770
|
}
|
|
4757
4771
|
async function saveEntityWithCallbacks({
|
|
4758
4772
|
collection,
|
|
@@ -5396,7 +5410,7 @@ function ImagePreview(t0) {
|
|
|
5396
5410
|
}
|
|
5397
5411
|
let t9;
|
|
5398
5412
|
if ($[19] !== url) {
|
|
5399
|
-
t9 = /* @__PURE__ */ jsx(Tooltip, { title: "Open image in new tab", side: "bottom", children: /* @__PURE__ */ jsx(IconButton, { className: "invisible group-hover:visible", variant: "filled", component: "a", href: url, rel: "noopener noreferrer", target: "_blank", size: "smallest", onClick: _temp$
|
|
5413
|
+
t9 = /* @__PURE__ */ jsx(Tooltip, { title: "Open image in new tab", side: "bottom", children: /* @__PURE__ */ jsx(IconButton, { className: "invisible group-hover:visible", variant: "filled", component: "a", href: url, rel: "noopener noreferrer", target: "_blank", size: "smallest", onClick: _temp$B, children: t8 }) });
|
|
5400
5414
|
$[19] = url;
|
|
5401
5415
|
$[20] = t9;
|
|
5402
5416
|
} else {
|
|
@@ -5430,7 +5444,7 @@ function ImagePreview(t0) {
|
|
|
5430
5444
|
}
|
|
5431
5445
|
return t11;
|
|
5432
5446
|
}
|
|
5433
|
-
function _temp$
|
|
5447
|
+
function _temp$B(e_0) {
|
|
5434
5448
|
return e_0.stopPropagation();
|
|
5435
5449
|
}
|
|
5436
5450
|
const FIRECMS_NS$1 = "firecms_core";
|
|
@@ -5497,7 +5511,7 @@ function UrlComponentPreview(t0) {
|
|
|
5497
5511
|
}
|
|
5498
5512
|
let t3;
|
|
5499
5513
|
if ($[2] !== url) {
|
|
5500
|
-
t3 = /* @__PURE__ */ 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$
|
|
5514
|
+
t3 = /* @__PURE__ */ 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: [
|
|
5501
5515
|
t2,
|
|
5502
5516
|
url
|
|
5503
5517
|
] });
|
|
@@ -5627,7 +5641,7 @@ function UrlComponentPreview(t0) {
|
|
|
5627
5641
|
function _temp2$d(e_0) {
|
|
5628
5642
|
return e_0.stopPropagation();
|
|
5629
5643
|
}
|
|
5630
|
-
function _temp$
|
|
5644
|
+
function _temp$A(e) {
|
|
5631
5645
|
e.preventDefault();
|
|
5632
5646
|
}
|
|
5633
5647
|
function VideoPreview(t0) {
|
|
@@ -5761,7 +5775,7 @@ function SkeletonPropertyComponent(t0) {
|
|
|
5761
5775
|
if (Array.isArray(arrayProperty.of)) {
|
|
5762
5776
|
let t1;
|
|
5763
5777
|
if ($[6] !== arrayProperty.of) {
|
|
5764
|
-
t1 = arrayProperty.of.map(_temp$
|
|
5778
|
+
t1 = arrayProperty.of.map(_temp$z);
|
|
5765
5779
|
$[6] = arrayProperty.of;
|
|
5766
5780
|
$[7] = t1;
|
|
5767
5781
|
} else {
|
|
@@ -5899,7 +5913,7 @@ function SkeletonPropertyComponent(t0) {
|
|
|
5899
5913
|
}
|
|
5900
5914
|
return content || null;
|
|
5901
5915
|
}
|
|
5902
|
-
function _temp$
|
|
5916
|
+
function _temp$z(p, i) {
|
|
5903
5917
|
return renderGenericArrayCell(p, i);
|
|
5904
5918
|
}
|
|
5905
5919
|
function renderMap(property, size) {
|
|
@@ -6343,104 +6357,77 @@ function EntityPreview({
|
|
|
6343
6357
|
actions
|
|
6344
6358
|
] });
|
|
6345
6359
|
}
|
|
6346
|
-
|
|
6347
|
-
const $ = c(
|
|
6348
|
-
|
|
6349
|
-
|
|
6350
|
-
|
|
6351
|
-
|
|
6352
|
-
|
|
6353
|
-
|
|
6354
|
-
|
|
6355
|
-
|
|
6356
|
-
|
|
6357
|
-
|
|
6358
|
-
children,
|
|
6359
|
-
hover,
|
|
6360
|
-
onClick,
|
|
6361
|
-
size: t1,
|
|
6362
|
-
style,
|
|
6363
|
-
className,
|
|
6364
|
-
fullwidth: t2,
|
|
6365
|
-
...props
|
|
6366
|
-
} = t0);
|
|
6367
|
-
$[0] = t0;
|
|
6368
|
-
$[1] = children;
|
|
6369
|
-
$[2] = className;
|
|
6370
|
-
$[3] = hover;
|
|
6371
|
-
$[4] = onClick;
|
|
6372
|
-
$[5] = props;
|
|
6373
|
-
$[6] = style;
|
|
6374
|
-
$[7] = t1;
|
|
6375
|
-
$[8] = t2;
|
|
6376
|
-
} else {
|
|
6377
|
-
children = $[1];
|
|
6378
|
-
className = $[2];
|
|
6379
|
-
hover = $[3];
|
|
6380
|
-
onClick = $[4];
|
|
6381
|
-
props = $[5];
|
|
6382
|
-
style = $[6];
|
|
6383
|
-
t1 = $[7];
|
|
6384
|
-
t2 = $[8];
|
|
6385
|
-
}
|
|
6360
|
+
function EntityPreviewContainer(t0) {
|
|
6361
|
+
const $ = c(15);
|
|
6362
|
+
const {
|
|
6363
|
+
children,
|
|
6364
|
+
hover,
|
|
6365
|
+
onClick,
|
|
6366
|
+
size: t1,
|
|
6367
|
+
style,
|
|
6368
|
+
className,
|
|
6369
|
+
fullwidth: t2,
|
|
6370
|
+
ref
|
|
6371
|
+
} = t0;
|
|
6386
6372
|
const size = t1 === void 0 ? "medium" : t1;
|
|
6387
6373
|
const fullwidth = t2 === void 0 ? true : t2;
|
|
6388
|
-
|
|
6389
|
-
|
|
6390
|
-
|
|
6391
|
-
|
|
6392
|
-
|
|
6393
|
-
|
|
6394
|
-
|
|
6395
|
-
$[
|
|
6374
|
+
const t3 = fullwidth ? "w-full" : "";
|
|
6375
|
+
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" : "";
|
|
6376
|
+
const t5 = size === "small" ? "p-1" : "px-2 py-1";
|
|
6377
|
+
const t6 = onClick ? "cursor-pointer" : "";
|
|
6378
|
+
let t7;
|
|
6379
|
+
if ($[0] !== className || $[1] !== t3 || $[2] !== t4 || $[3] !== t5 || $[4] !== t6) {
|
|
6380
|
+
t7 = cls("bg-white dark:bg-surface-900", "min-h-[44px]", t3, "items-center", t4, t5, "flex border rounded-lg", t6, defaultBorderMixin, className);
|
|
6381
|
+
$[0] = className;
|
|
6382
|
+
$[1] = t3;
|
|
6383
|
+
$[2] = t4;
|
|
6384
|
+
$[3] = t5;
|
|
6385
|
+
$[4] = t6;
|
|
6386
|
+
$[5] = t7;
|
|
6396
6387
|
} else {
|
|
6397
|
-
|
|
6388
|
+
t7 = $[5];
|
|
6398
6389
|
}
|
|
6399
|
-
const
|
|
6400
|
-
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" : "";
|
|
6401
|
-
const t6 = size === "small" ? "p-1" : "px-2 py-1";
|
|
6402
|
-
const t7 = onClick ? "cursor-pointer" : "";
|
|
6390
|
+
const divClassName = t7;
|
|
6403
6391
|
let t8;
|
|
6404
|
-
if ($[
|
|
6405
|
-
t8 =
|
|
6406
|
-
|
|
6407
|
-
|
|
6408
|
-
|
|
6409
|
-
$[
|
|
6410
|
-
$[
|
|
6411
|
-
$[16] = t8;
|
|
6392
|
+
if ($[6] !== onClick) {
|
|
6393
|
+
t8 = onClick ? (event) => {
|
|
6394
|
+
event.preventDefault();
|
|
6395
|
+
onClick(event);
|
|
6396
|
+
} : void 0;
|
|
6397
|
+
$[6] = onClick;
|
|
6398
|
+
$[7] = t8;
|
|
6412
6399
|
} else {
|
|
6413
|
-
t8 = $[
|
|
6400
|
+
t8 = $[7];
|
|
6414
6401
|
}
|
|
6402
|
+
const handleClick = t8;
|
|
6415
6403
|
let t9;
|
|
6416
|
-
if ($[
|
|
6417
|
-
t9 =
|
|
6418
|
-
|
|
6419
|
-
|
|
6420
|
-
|
|
6421
|
-
|
|
6404
|
+
if ($[8] !== divClassName || $[9] !== handleClick || $[10] !== style) {
|
|
6405
|
+
t9 = {
|
|
6406
|
+
ref,
|
|
6407
|
+
tabIndex: 0,
|
|
6408
|
+
style,
|
|
6409
|
+
className: divClassName,
|
|
6410
|
+
onClick: handleClick
|
|
6422
6411
|
};
|
|
6423
|
-
$[
|
|
6424
|
-
$[
|
|
6412
|
+
$[8] = divClassName;
|
|
6413
|
+
$[9] = handleClick;
|
|
6414
|
+
$[10] = style;
|
|
6415
|
+
$[11] = t9;
|
|
6425
6416
|
} else {
|
|
6426
|
-
t9 = $[
|
|
6417
|
+
t9 = $[11];
|
|
6427
6418
|
}
|
|
6419
|
+
const divProps = t9;
|
|
6428
6420
|
let t10;
|
|
6429
|
-
if ($[
|
|
6430
|
-
t10 = /* @__PURE__ */ jsx("div", {
|
|
6431
|
-
$[
|
|
6432
|
-
$[
|
|
6433
|
-
$[
|
|
6434
|
-
$[22] = t3;
|
|
6435
|
-
$[23] = t8;
|
|
6436
|
-
$[24] = t9;
|
|
6437
|
-
$[25] = t10;
|
|
6421
|
+
if ($[12] !== children || $[13] !== divProps) {
|
|
6422
|
+
t10 = /* @__PURE__ */ jsx("div", { ...divProps, children });
|
|
6423
|
+
$[12] = children;
|
|
6424
|
+
$[13] = divProps;
|
|
6425
|
+
$[14] = t10;
|
|
6438
6426
|
} else {
|
|
6439
|
-
t10 = $[
|
|
6427
|
+
t10 = $[14];
|
|
6440
6428
|
}
|
|
6441
6429
|
return t10;
|
|
6442
|
-
}
|
|
6443
|
-
EntityPreviewContainer.displayName = "EntityPreviewContainer";
|
|
6430
|
+
}
|
|
6444
6431
|
const ReferencePreview = function ReferencePreview2(props) {
|
|
6445
6432
|
const $ = c(10);
|
|
6446
6433
|
const reference = props.reference;
|
|
@@ -7074,7 +7061,7 @@ function DatePreview(t0) {
|
|
|
7074
7061
|
timeZoneName: "short"
|
|
7075
7062
|
});
|
|
7076
7063
|
const parts = tzFormatter.formatToParts(date);
|
|
7077
|
-
t32 = parts.find(_temp$
|
|
7064
|
+
t32 = parts.find(_temp$y)?.value ?? "";
|
|
7078
7065
|
$[6] = date;
|
|
7079
7066
|
$[7] = timezone;
|
|
7080
7067
|
$[8] = t32;
|
|
@@ -7145,7 +7132,7 @@ function DatePreview(t0) {
|
|
|
7145
7132
|
}
|
|
7146
7133
|
return t3;
|
|
7147
7134
|
}
|
|
7148
|
-
function _temp$
|
|
7135
|
+
function _temp$y(p) {
|
|
7149
7136
|
return p.type === "timeZoneName";
|
|
7150
7137
|
}
|
|
7151
7138
|
function MapPropertyPreview(t0) {
|
|
@@ -7240,7 +7227,7 @@ function KeyValuePreview(t0) {
|
|
|
7240
7227
|
}
|
|
7241
7228
|
let t1;
|
|
7242
7229
|
if ($[1] !== value) {
|
|
7243
|
-
t1 = Object.entries(value).map(_temp$
|
|
7230
|
+
t1 = Object.entries(value).map(_temp$x);
|
|
7244
7231
|
$[1] = value;
|
|
7245
7232
|
$[2] = t1;
|
|
7246
7233
|
} else {
|
|
@@ -7256,7 +7243,7 @@ function KeyValuePreview(t0) {
|
|
|
7256
7243
|
}
|
|
7257
7244
|
return t2;
|
|
7258
7245
|
}
|
|
7259
|
-
function _temp$
|
|
7246
|
+
function _temp$x(t0) {
|
|
7260
7247
|
const [key, childValue] = t0;
|
|
7261
7248
|
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");
|
|
7262
7249
|
const isScalar = childValue && (typeof childValue !== "object" || isTimestampObj);
|
|
@@ -8517,7 +8504,7 @@ function VirtualTableSelect(props) {
|
|
|
8517
8504
|
console.trace("onChange");
|
|
8518
8505
|
if (valueType === "number") {
|
|
8519
8506
|
if (multiple) {
|
|
8520
|
-
const newValue = updatedValue.map(_temp$
|
|
8507
|
+
const newValue = updatedValue.map(_temp$w);
|
|
8521
8508
|
updateValue(newValue);
|
|
8522
8509
|
} else {
|
|
8523
8510
|
updateValue(parseFloat(updatedValue));
|
|
@@ -8588,7 +8575,7 @@ function VirtualTableSelect(props) {
|
|
|
8588
8575
|
function _temp2$c(v_0) {
|
|
8589
8576
|
return v_0.toString();
|
|
8590
8577
|
}
|
|
8591
|
-
function _temp$
|
|
8578
|
+
function _temp$w(v) {
|
|
8592
8579
|
return parseFloat(v);
|
|
8593
8580
|
}
|
|
8594
8581
|
function VirtualTableNumberInput(props) {
|
|
@@ -8784,7 +8771,7 @@ function VirtualTableUserSelect(props) {
|
|
|
8784
8771
|
const renderValue = t3;
|
|
8785
8772
|
let t4;
|
|
8786
8773
|
if ($[7] !== disabled || $[8] !== internalValue || $[9] !== multiple || $[10] !== onChange || $[11] !== renderValue || $[12] !== users || $[13] !== validValue) {
|
|
8787
|
-
t4 = multiple ? /* @__PURE__ */ jsx(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$
|
|
8774
|
+
t4 = multiple ? /* @__PURE__ */ jsx(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__ */ jsx(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) });
|
|
8788
8775
|
$[7] = disabled;
|
|
8789
8776
|
$[8] = internalValue;
|
|
8790
8777
|
$[9] = multiple;
|
|
@@ -8801,7 +8788,7 @@ function VirtualTableUserSelect(props) {
|
|
|
8801
8788
|
function _temp2$b(user_1) {
|
|
8802
8789
|
return /* @__PURE__ */ jsx(SelectItem, { value: user_1.uid, children: /* @__PURE__ */ jsx(UserDisplay, { user: user_1 }) }, user_1.uid);
|
|
8803
8790
|
}
|
|
8804
|
-
function _temp$
|
|
8791
|
+
function _temp$v(user_0) {
|
|
8805
8792
|
return /* @__PURE__ */ jsx(MultiSelectItem, { value: user_0.uid, children: /* @__PURE__ */ jsx(UserDisplay, { user: user_0 }) }, user_0.uid);
|
|
8806
8793
|
}
|
|
8807
8794
|
class ErrorBoundary extends React__default.Component {
|
|
@@ -9046,7 +9033,7 @@ function useStorageUploadController(t0) {
|
|
|
9046
9033
|
newValue = [...internalValue];
|
|
9047
9034
|
newValue = removeDuplicates(newValue);
|
|
9048
9035
|
setInternalValue(newValue);
|
|
9049
|
-
const fieldValue = newValue.filter(_temp$
|
|
9036
|
+
const fieldValue = newValue.filter(_temp$u).map(_temp2$a);
|
|
9050
9037
|
if (multipleFilesSupported) {
|
|
9051
9038
|
onChange(fieldValue);
|
|
9052
9039
|
} else {
|
|
@@ -9167,7 +9154,7 @@ function useStorageUploadController(t0) {
|
|
|
9167
9154
|
function _temp2$a(e_0) {
|
|
9168
9155
|
return e_0.storagePathOrDownloadUrl;
|
|
9169
9156
|
}
|
|
9170
|
-
function _temp$
|
|
9157
|
+
function _temp$u(e) {
|
|
9171
9158
|
return !!e.storagePathOrDownloadUrl;
|
|
9172
9159
|
}
|
|
9173
9160
|
function getInternalInitialValue(multipleFilesSupported, value, metadata, size) {
|
|
@@ -9457,7 +9444,7 @@ function StorageUpload$1(t0) {
|
|
|
9457
9444
|
const snackbarContext = useSnackbarController();
|
|
9458
9445
|
let t1;
|
|
9459
9446
|
if ($[0] !== storage.acceptedFiles) {
|
|
9460
|
-
t1 = storage.acceptedFiles ? storage.acceptedFiles.map(_temp$
|
|
9447
|
+
t1 = storage.acceptedFiles ? storage.acceptedFiles.map(_temp$t).reduce(_temp2$9, {}) : void 0;
|
|
9461
9448
|
$[0] = storage.acceptedFiles;
|
|
9462
9449
|
$[1] = t1;
|
|
9463
9450
|
} else {
|
|
@@ -9686,7 +9673,7 @@ function _temp2$9(a, b) {
|
|
|
9686
9673
|
...b
|
|
9687
9674
|
};
|
|
9688
9675
|
}
|
|
9689
|
-
function _temp$
|
|
9676
|
+
function _temp$t(e) {
|
|
9690
9677
|
return {
|
|
9691
9678
|
[e]: []
|
|
9692
9679
|
};
|
|
@@ -9796,7 +9783,7 @@ const TableReferenceFieldInternal = React__default.memo(function TableReferenceF
|
|
|
9796
9783
|
let t1;
|
|
9797
9784
|
if ($[2] !== updateValue) {
|
|
9798
9785
|
t1 = (entities) => {
|
|
9799
|
-
updateValue(entities.map(_temp$
|
|
9786
|
+
updateValue(entities.filter(Boolean).map(_temp$s));
|
|
9800
9787
|
};
|
|
9801
9788
|
$[2] = updateValue;
|
|
9802
9789
|
$[3] = t1;
|
|
@@ -9968,7 +9955,7 @@ const TableReferenceFieldInternal = React__default.memo(function TableReferenceF
|
|
|
9968
9955
|
}
|
|
9969
9956
|
return t10;
|
|
9970
9957
|
}, equal);
|
|
9971
|
-
function _temp$
|
|
9958
|
+
function _temp$s(e) {
|
|
9972
9959
|
return getReferenceFrom(e);
|
|
9973
9960
|
}
|
|
9974
9961
|
function _temp2$8(ref) {
|
|
@@ -11636,7 +11623,7 @@ function ArrayOfReferencesFieldBinding({
|
|
|
11636
11623
|
throw Error(`Couldn't find the corresponding collection for the path: ${ofProperty.path}`);
|
|
11637
11624
|
}
|
|
11638
11625
|
const onMultipleEntitiesSelected = useCallback((entities) => {
|
|
11639
|
-
setValue(entities.map((e) => getReferenceFrom(e)));
|
|
11626
|
+
setValue(entities.filter(Boolean).map((e) => getReferenceFrom(e)));
|
|
11640
11627
|
}, [setValue]);
|
|
11641
11628
|
const referenceDialogController = useReferenceDialog({
|
|
11642
11629
|
multiselect: true,
|
|
@@ -11746,7 +11733,7 @@ function StorageItemPreview(t0) {
|
|
|
11746
11733
|
}
|
|
11747
11734
|
let t5;
|
|
11748
11735
|
if ($[15] !== placeholder) {
|
|
11749
|
-
t5 = placeholder && /* @__PURE__ */ jsx("div", { onClick: _temp$
|
|
11736
|
+
t5 = placeholder && /* @__PURE__ */ jsx("div", { onClick: _temp$r, className: "flex flex-col items-center justify-center w-full h-full", children: /* @__PURE__ */ jsx(DescriptionIcon, { className: "text-surface-700 dark:text-surface-300" }) });
|
|
11750
11737
|
$[15] = placeholder;
|
|
11751
11738
|
$[16] = t5;
|
|
11752
11739
|
} else {
|
|
@@ -11769,7 +11756,7 @@ function StorageItemPreview(t0) {
|
|
|
11769
11756
|
}
|
|
11770
11757
|
return t6;
|
|
11771
11758
|
}
|
|
11772
|
-
function _temp$
|
|
11759
|
+
function _temp$r(e) {
|
|
11773
11760
|
return e.stopPropagation();
|
|
11774
11761
|
}
|
|
11775
11762
|
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";
|
|
@@ -11997,7 +11984,7 @@ function SortableStorageItem(t0) {
|
|
|
11997
11984
|
t4 = $[7];
|
|
11998
11985
|
}
|
|
11999
11986
|
const style = t4;
|
|
12000
|
-
const getImageSizeNumber = _temp$
|
|
11987
|
+
const getImageSizeNumber = _temp$q;
|
|
12001
11988
|
let child;
|
|
12002
11989
|
if (entry.storagePathOrDownloadUrl) {
|
|
12003
11990
|
const t52 = `storage_preview_${entry.storagePathOrDownloadUrl}`;
|
|
@@ -12072,7 +12059,7 @@ function SortableStorageItem(t0) {
|
|
|
12072
12059
|
}
|
|
12073
12060
|
return t6;
|
|
12074
12061
|
}
|
|
12075
|
-
function _temp$
|
|
12062
|
+
function _temp$q(previewSize) {
|
|
12076
12063
|
switch (previewSize) {
|
|
12077
12064
|
case "small": {
|
|
12078
12065
|
return 40;
|
|
@@ -12353,7 +12340,7 @@ function StorageUpload(t0) {
|
|
|
12353
12340
|
newValue.splice(fromIndex, 1);
|
|
12354
12341
|
newValue.splice(toIndex, 0, item);
|
|
12355
12342
|
setInternalValue(newValue);
|
|
12356
|
-
const fieldValue = newValue.filter(_temp3$4).map(_temp4$
|
|
12343
|
+
const fieldValue = newValue.filter(_temp3$4).map(_temp4$4);
|
|
12357
12344
|
onChange(fieldValue);
|
|
12358
12345
|
};
|
|
12359
12346
|
$[0] = multipleFilesSupported;
|
|
@@ -12547,7 +12534,7 @@ function _temp6$2(v_1) {
|
|
|
12547
12534
|
function _temp5$2(v_0) {
|
|
12548
12535
|
return !!v_0.storagePathOrDownloadUrl;
|
|
12549
12536
|
}
|
|
12550
|
-
function _temp4$
|
|
12537
|
+
function _temp4$4(e_0) {
|
|
12551
12538
|
return e_0.storagePathOrDownloadUrl;
|
|
12552
12539
|
}
|
|
12553
12540
|
function _temp3$4(e) {
|
|
@@ -13591,7 +13578,7 @@ function MapFieldBinding(t0) {
|
|
|
13591
13578
|
} else {
|
|
13592
13579
|
t42 = $[20];
|
|
13593
13580
|
}
|
|
13594
|
-
t3 = Object.entries(mapProperties).filter(_temp$
|
|
13581
|
+
t3 = Object.entries(mapProperties).filter(_temp$p).map(t42);
|
|
13595
13582
|
$[6] = autoFocus;
|
|
13596
13583
|
$[7] = context;
|
|
13597
13584
|
$[8] = disabled;
|
|
@@ -13670,7 +13657,7 @@ function MapFieldBinding(t0) {
|
|
|
13670
13657
|
}
|
|
13671
13658
|
return t10;
|
|
13672
13659
|
}
|
|
13673
|
-
function _temp$
|
|
13660
|
+
function _temp$p(t0) {
|
|
13674
13661
|
const [, property_0] = t0;
|
|
13675
13662
|
return !isHidden(property_0);
|
|
13676
13663
|
}
|
|
@@ -15044,7 +15031,7 @@ function BlockEntry(t0) {
|
|
|
15044
15031
|
const property = t4;
|
|
15045
15032
|
let t5;
|
|
15046
15033
|
if ($[9] !== properties) {
|
|
15047
|
-
t5 = Object.entries(properties).map(_temp$
|
|
15034
|
+
t5 = Object.entries(properties).map(_temp$o);
|
|
15048
15035
|
$[9] = properties;
|
|
15049
15036
|
$[10] = t5;
|
|
15050
15037
|
} else {
|
|
@@ -15137,7 +15124,7 @@ function BlockEntry(t0) {
|
|
|
15137
15124
|
}
|
|
15138
15125
|
return t11;
|
|
15139
15126
|
}
|
|
15140
|
-
function _temp$
|
|
15127
|
+
function _temp$o(t0) {
|
|
15141
15128
|
const [key, property_0] = t0;
|
|
15142
15129
|
return {
|
|
15143
15130
|
id: key,
|
|
@@ -17258,24 +17245,27 @@ function buildIdColumn(largeLayout) {
|
|
|
17258
17245
|
function propertiesToColumns({
|
|
17259
17246
|
properties,
|
|
17260
17247
|
sortable,
|
|
17261
|
-
|
|
17262
|
-
AdditionalHeaderWidget
|
|
17248
|
+
forcedFilters,
|
|
17249
|
+
AdditionalHeaderWidget,
|
|
17250
|
+
allowedFilters
|
|
17263
17251
|
}) {
|
|
17264
|
-
const disabledFilter = Boolean(forceFilter);
|
|
17265
17252
|
return Object.entries(properties).flatMap(([key, property]) => getColumnKeysForProperty(property, key)).map(({
|
|
17266
17253
|
key,
|
|
17267
17254
|
disabled
|
|
17268
17255
|
}) => {
|
|
17269
17256
|
const property = getResolvedPropertyInPath(properties, key);
|
|
17270
17257
|
if (!property) throw Error("Internal error: no property found in path " + key);
|
|
17271
|
-
const filterable =
|
|
17258
|
+
const filterable = property.dataType === "array" ? isDataTypeFilterable(property.of?.dataType, true) : isDataTypeFilterable(property.dataType);
|
|
17259
|
+
const isFilterForced = forcedFilters?.includes(key) ?? false;
|
|
17260
|
+
const isFilterAllowed = allowedFilters ? allowedFilters.includes(key) : filterable;
|
|
17261
|
+
const filterEnabled = filterable && isFilterAllowed && !isFilterForced;
|
|
17272
17262
|
return {
|
|
17273
17263
|
key,
|
|
17274
17264
|
align: getTableCellAlignment(property),
|
|
17275
17265
|
icon: getIconForProperty(property, "small"),
|
|
17276
17266
|
title: property.name ?? key,
|
|
17277
17267
|
sortable,
|
|
17278
|
-
filter:
|
|
17268
|
+
filter: filterEnabled,
|
|
17279
17269
|
width: getTablePropertyColumnWidth(property),
|
|
17280
17270
|
resizable: true,
|
|
17281
17271
|
custom: {
|
|
@@ -17288,16 +17278,6 @@ function propertiesToColumns({
|
|
|
17288
17278
|
};
|
|
17289
17279
|
});
|
|
17290
17280
|
}
|
|
17291
|
-
function filterableProperty(property, partOfArray = false) {
|
|
17292
|
-
if (partOfArray) {
|
|
17293
|
-
return ["string", "number", "date", "reference"].includes(property.dataType);
|
|
17294
|
-
}
|
|
17295
|
-
if (property.dataType === "array") {
|
|
17296
|
-
if (property.of) return filterableProperty(property.of, true);
|
|
17297
|
-
else return false;
|
|
17298
|
-
}
|
|
17299
|
-
return ["string", "number", "boolean", "date", "reference", "array"].includes(property.dataType);
|
|
17300
|
-
}
|
|
17301
17281
|
const VirtualTableHeader = React__default.memo(function VirtualTableHeader2(t0) {
|
|
17302
17282
|
const $ = c(61);
|
|
17303
17283
|
const {
|
|
@@ -18457,7 +18437,7 @@ const SafeLinkRenderer = (t0) => {
|
|
|
18457
18437
|
let t1;
|
|
18458
18438
|
if ($[0] !== text) {
|
|
18459
18439
|
const urlRegex = /https?:\/\/[^\s]+/g;
|
|
18460
|
-
t1 = text.replace(urlRegex, _temp$
|
|
18440
|
+
t1 = text.replace(urlRegex, _temp$n);
|
|
18461
18441
|
$[0] = text;
|
|
18462
18442
|
$[1] = t1;
|
|
18463
18443
|
} else {
|
|
@@ -18476,7 +18456,7 @@ const SafeLinkRenderer = (t0) => {
|
|
|
18476
18456
|
}
|
|
18477
18457
|
return t2;
|
|
18478
18458
|
};
|
|
18479
|
-
function _temp$
|
|
18459
|
+
function _temp$n(url) {
|
|
18480
18460
|
return `<a href="${url}" class="underline" target="_blank">Link</a><br/>`;
|
|
18481
18461
|
}
|
|
18482
18462
|
const operationLabels$2 = {
|
|
@@ -18550,10 +18530,10 @@ function ReferenceFilterField({
|
|
|
18550
18530
|
return path ? navigationController.getCollection(path) : void 0;
|
|
18551
18531
|
}, [path]);
|
|
18552
18532
|
const onSingleEntitySelected = (entity) => {
|
|
18553
|
-
updateFilter(operation, getReferenceFrom(entity));
|
|
18533
|
+
if (entity) updateFilter(operation, getReferenceFrom(entity));
|
|
18554
18534
|
};
|
|
18555
18535
|
const onMultipleEntitiesSelected = (entities) => {
|
|
18556
|
-
updateFilter(operation, entities.map((e) => getReferenceFrom(e)));
|
|
18536
|
+
updateFilter(operation, entities.filter(Boolean).map((e) => getReferenceFrom(e)));
|
|
18557
18537
|
};
|
|
18558
18538
|
const multiple = multipleSelectOperations$2.includes(operation);
|
|
18559
18539
|
const referenceDialogController = useReferenceDialog({
|
|
@@ -18728,7 +18708,7 @@ function StringNumberFilterField(t0) {
|
|
|
18728
18708
|
}
|
|
18729
18709
|
let t8;
|
|
18730
18710
|
if ($[20] !== operation || $[21] !== t6 || $[22] !== t7) {
|
|
18731
|
-
t8 = /* @__PURE__ */ jsx("div", { className: "w-[100px]", children: /* @__PURE__ */ jsx(Select, { value: operation, size: "medium", fullWidth: true, position: "item-aligned", onValueChange: t6, renderValue: _temp$
|
|
18711
|
+
t8 = /* @__PURE__ */ jsx("div", { className: "w-[100px]", children: /* @__PURE__ */ jsx(Select, { value: operation, size: "medium", fullWidth: true, position: "item-aligned", onValueChange: t6, renderValue: _temp$m, children: t7 }) });
|
|
18732
18712
|
$[20] = operation;
|
|
18733
18713
|
$[21] = t6;
|
|
18734
18714
|
$[22] = t7;
|
|
@@ -18782,7 +18762,7 @@ function StringNumberFilterField(t0) {
|
|
|
18782
18762
|
let t11;
|
|
18783
18763
|
if ($[40] !== dataType || $[41] !== enumValues || $[42] !== internalValue || $[43] !== isNullOperation || $[44] !== multiple || $[45] !== name || $[46] !== operation || $[47] !== updateFilter) {
|
|
18784
18764
|
t11 = enumValues && multiple && /* @__PURE__ */ jsx(MultiSelect, { size: "medium", position: "item-aligned", value: Array.isArray(internalValue) ? internalValue.map(_temp3$3) : [], disabled: isNullOperation, onValueChange: (value_2) => {
|
|
18785
|
-
updateFilter(operation, dataType === "number" ? value_2.map(_temp4$
|
|
18765
|
+
updateFilter(operation, dataType === "number" ? value_2.map(_temp4$3) : value_2);
|
|
18786
18766
|
}, multiple, endAdornment: internalValue && /* @__PURE__ */ jsx(IconButton, { className: "absolute right-2 top-3", onClick: (e_2) => updateFilter(operation, void 0), children: /* @__PURE__ */ jsx(CloseIcon, {}) }), children: enumValues.map((enumConfig_0) => /* @__PURE__ */ jsx(MultiSelectItem, { value: String(enumConfig_0.id), children: /* @__PURE__ */ jsx(EnumValuesChip, { enumKey: String(enumConfig_0.id), enumValues, size: "small" }) }, `select_value_${name}_${enumConfig_0.id}`)) });
|
|
18787
18767
|
$[40] = dataType;
|
|
18788
18768
|
$[41] = enumValues;
|
|
@@ -18824,7 +18804,7 @@ function StringNumberFilterField(t0) {
|
|
|
18824
18804
|
}
|
|
18825
18805
|
return t13;
|
|
18826
18806
|
}
|
|
18827
|
-
function _temp4$
|
|
18807
|
+
function _temp4$3(v) {
|
|
18828
18808
|
return parseInt(v);
|
|
18829
18809
|
}
|
|
18830
18810
|
function _temp3$3(e_1) {
|
|
@@ -18833,7 +18813,7 @@ function _temp3$3(e_1) {
|
|
|
18833
18813
|
function _temp2$6(op_2) {
|
|
18834
18814
|
return /* @__PURE__ */ jsx(SelectItem, { value: op_2, children: operationLabels$1[op_2] }, op_2);
|
|
18835
18815
|
}
|
|
18836
|
-
function _temp$
|
|
18816
|
+
function _temp$m(op_1) {
|
|
18837
18817
|
return operationLabels$1[op_1];
|
|
18838
18818
|
}
|
|
18839
18819
|
function BooleanFilterField(t0) {
|
|
@@ -19004,7 +18984,7 @@ function DateTimeFilterField(t0) {
|
|
|
19004
18984
|
}
|
|
19005
18985
|
let t8;
|
|
19006
18986
|
if ($[17] !== operation || $[18] !== t6 || $[19] !== t7) {
|
|
19007
|
-
t8 = /* @__PURE__ */ jsx("div", { className: "w-[100px]", children: /* @__PURE__ */ jsx(Select, { value: operation, size: "medium", fullWidth: true, onValueChange: t6, renderValue: _temp$
|
|
18987
|
+
t8 = /* @__PURE__ */ jsx("div", { className: "w-[100px]", children: /* @__PURE__ */ jsx(Select, { value: operation, size: "medium", fullWidth: true, onValueChange: t6, renderValue: _temp$l, children: t7 }) });
|
|
19008
18988
|
$[17] = operation;
|
|
19009
18989
|
$[18] = t6;
|
|
19010
18990
|
$[19] = t7;
|
|
@@ -19054,7 +19034,7 @@ function DateTimeFilterField(t0) {
|
|
|
19054
19034
|
function _temp2$5(op_2) {
|
|
19055
19035
|
return /* @__PURE__ */ jsx(SelectItem, { value: op_2, children: operationLabels[op_2] }, op_2);
|
|
19056
19036
|
}
|
|
19057
|
-
function _temp$
|
|
19037
|
+
function _temp$l(op_1) {
|
|
19058
19038
|
return operationLabels[op_1];
|
|
19059
19039
|
}
|
|
19060
19040
|
const SelectableTable = function SelectableTable2({
|
|
@@ -19304,7 +19284,8 @@ const EntityCollectionTable = function EntityCollectionTable2({
|
|
|
19304
19284
|
const columnsResult = propertiesToColumns({
|
|
19305
19285
|
properties,
|
|
19306
19286
|
sortable,
|
|
19307
|
-
|
|
19287
|
+
forcedFilters: tableController.forcedFilters,
|
|
19288
|
+
allowedFilters: tableController.allowedFilters,
|
|
19308
19289
|
AdditionalHeaderWidget
|
|
19309
19290
|
});
|
|
19310
19291
|
const propertyColumnKeys = new Set(columnsResult.map((col) => col.key));
|
|
@@ -19451,7 +19432,26 @@ function useDataSourceTableController({
|
|
|
19451
19432
|
filterValues: initialFilterUrl,
|
|
19452
19433
|
sortBy: initialSortUrl
|
|
19453
19434
|
} = parseFilterAndSort(location.search);
|
|
19454
|
-
const
|
|
19435
|
+
const availableFilterKeys = collection.allowedFilters ?? Object.keys(collection.properties);
|
|
19436
|
+
const forcedFilterKeys = collection.forceFilter ? Object.keys(collection.forceFilter) : [];
|
|
19437
|
+
const allowedFilterKeys = useMemo(() => {
|
|
19438
|
+
const availableKeys = availableFilterKeys.filter((key) => {
|
|
19439
|
+
const property = collection.properties[key];
|
|
19440
|
+
if (!property) return false;
|
|
19441
|
+
if (typeof property === "function") return false;
|
|
19442
|
+
const dataType = property.dataType;
|
|
19443
|
+
const filterable = dataType === "array" ? isDataTypeFilterable(property.of?.dataType, true) : isDataTypeFilterable(dataType);
|
|
19444
|
+
return filterable;
|
|
19445
|
+
});
|
|
19446
|
+
const forcedKeys = forcedFilterKeys.filter((key_0) => !availableKeys.includes(key_0));
|
|
19447
|
+
return [...availableKeys, ...forcedKeys];
|
|
19448
|
+
}, [collection.properties, availableFilterKeys, forcedFilterKeys]);
|
|
19449
|
+
const removeUnallowedFilters = useCallback((filters) => {
|
|
19450
|
+
if (!filters) return;
|
|
19451
|
+
return Object.fromEntries(Object.entries(filters).filter(([key_1]) => allowedFilterKeys.includes(key_1)));
|
|
19452
|
+
}, [allowedFilterKeys]);
|
|
19453
|
+
const initFilters = forceFilter ?? (updateUrl ? initialFilterUrl : void 0) ?? initialFilter ?? void 0;
|
|
19454
|
+
const [filterValues_0, setFilterValues] = React__default.useState(removeUnallowedFilters(initFilters));
|
|
19455
19455
|
const [sortBy_0, setSortBy] = React__default.useState((updateUrl ? initialSortUrl : void 0) ?? initialSortInternal);
|
|
19456
19456
|
useUpdateUrl(filterValues_0, sortBy_0, searchString, updateUrl);
|
|
19457
19457
|
const collectionScroll = scrollRestoration?.getCollectionScroll(fullPath, filterValues_0);
|
|
@@ -19474,7 +19474,7 @@ function useDataSourceTableController({
|
|
|
19474
19474
|
const [dataLoading, setDataLoading] = useState(false);
|
|
19475
19475
|
const [dataLoadingError, setDataLoadingError] = useState();
|
|
19476
19476
|
const [noMoreToLoad, setNoMoreToLoad] = useState(false);
|
|
19477
|
-
const clearFilter = useCallback(() => setFilterValues(forceFilter
|
|
19477
|
+
const clearFilter = useCallback(() => setFilterValues(removeUnallowedFilters(forceFilter)), [forceFilter, removeUnallowedFilters]);
|
|
19478
19478
|
const updateFilterValues = useCallback((updatedFilter) => {
|
|
19479
19479
|
if (forceFilter) {
|
|
19480
19480
|
console.warn("Filter is not compatible with the force filter. Ignoring filter");
|
|
@@ -19483,9 +19483,9 @@ function useDataSourceTableController({
|
|
|
19483
19483
|
if (updatedFilter && Object.keys(updatedFilter).length === 0) {
|
|
19484
19484
|
setFilterValues(void 0);
|
|
19485
19485
|
} else {
|
|
19486
|
-
setFilterValues(updatedFilter);
|
|
19486
|
+
setFilterValues(removeUnallowedFilters(updatedFilter));
|
|
19487
19487
|
}
|
|
19488
|
-
}, [forceFilter]);
|
|
19488
|
+
}, [forceFilter, removeUnallowedFilters]);
|
|
19489
19489
|
useEffect(() => {
|
|
19490
19490
|
setDataLoading(true);
|
|
19491
19491
|
const onEntitiesUpdate = async (entities) => {
|
|
@@ -19560,6 +19560,8 @@ function useDataSourceTableController({
|
|
|
19560
19560
|
dataLoadingError,
|
|
19561
19561
|
filterValues: filterValues_0,
|
|
19562
19562
|
setFilterValues: updateFilterValues,
|
|
19563
|
+
allowedFilters: allowedFilterKeys,
|
|
19564
|
+
forcedFilters: forcedFilterKeys,
|
|
19563
19565
|
sortBy: sortBy_0,
|
|
19564
19566
|
setSortBy,
|
|
19565
19567
|
searchString,
|
|
@@ -19783,7 +19785,7 @@ function useTableSearchHelper(t0) {
|
|
|
19783
19785
|
const searchBlocked = t12;
|
|
19784
19786
|
let t2;
|
|
19785
19787
|
if ($[15] !== customizationController.plugins || $[16] !== dataSource?.initTextSearch) {
|
|
19786
|
-
t2 = Boolean(dataSource?.initTextSearch) || customizationController.plugins?.find(_temp$
|
|
19788
|
+
t2 = Boolean(dataSource?.initTextSearch) || customizationController.plugins?.find(_temp$k);
|
|
19787
19789
|
$[15] = customizationController.plugins;
|
|
19788
19790
|
$[16] = dataSource?.initTextSearch;
|
|
19789
19791
|
$[17] = t2;
|
|
@@ -19875,7 +19877,7 @@ function useTableSearchHelper(t0) {
|
|
|
19875
19877
|
}
|
|
19876
19878
|
return t1;
|
|
19877
19879
|
}
|
|
19878
|
-
function _temp$
|
|
19880
|
+
function _temp$k(p_0) {
|
|
19879
19881
|
return Boolean(p_0.collectionView?.onTextSearchClick);
|
|
19880
19882
|
}
|
|
19881
19883
|
function DeleteEntityDialog({
|
|
@@ -20497,7 +20499,7 @@ function FavouritesView(t0) {
|
|
|
20497
20499
|
T0 = Collapse;
|
|
20498
20500
|
t4 = favouriteCollections.length > 0;
|
|
20499
20501
|
t2 = "flex flex-row flex-wrap gap-2 pb-2 min-h-[32px]";
|
|
20500
|
-
t3 = favouriteCollections.map(_temp$
|
|
20502
|
+
t3 = favouriteCollections.map(_temp$j);
|
|
20501
20503
|
$[2] = navigationController;
|
|
20502
20504
|
$[3] = t1;
|
|
20503
20505
|
$[4] = T0;
|
|
@@ -20531,7 +20533,7 @@ function FavouritesView(t0) {
|
|
|
20531
20533
|
}
|
|
20532
20534
|
return t6;
|
|
20533
20535
|
}
|
|
20534
|
-
function _temp$
|
|
20536
|
+
function _temp$j(entry_0) {
|
|
20535
20537
|
return /* @__PURE__ */ jsx(NavigationChip, { entry: entry_0 }, entry_0.path);
|
|
20536
20538
|
}
|
|
20537
20539
|
const scrollsMap = {};
|
|
@@ -20768,7 +20770,7 @@ const NavigationCard = React__default.memo(function NavigationCard2(t0) {
|
|
|
20768
20770
|
}
|
|
20769
20771
|
let t4;
|
|
20770
20772
|
if ($[4] !== actions) {
|
|
20771
|
-
t4 = /* @__PURE__ */ jsx("div", { className: "flex items-center gap-0.5", onClick: _temp$
|
|
20773
|
+
t4 = /* @__PURE__ */ jsx("div", { className: "flex items-center gap-0.5", onClick: _temp$i, children: actions });
|
|
20772
20774
|
$[4] = actions;
|
|
20773
20775
|
$[5] = t4;
|
|
20774
20776
|
} else {
|
|
@@ -20855,7 +20857,7 @@ const NavigationCard = React__default.memo(function NavigationCard2(t0) {
|
|
|
20855
20857
|
}
|
|
20856
20858
|
return t12;
|
|
20857
20859
|
});
|
|
20858
|
-
function _temp$
|
|
20860
|
+
function _temp$i(event) {
|
|
20859
20861
|
event.preventDefault();
|
|
20860
20862
|
event.stopPropagation();
|
|
20861
20863
|
}
|
|
@@ -23211,7 +23213,7 @@ const BoardColumn = memo(function BoardColumn2(t0) {
|
|
|
23211
23213
|
let t19;
|
|
23212
23214
|
let t20;
|
|
23213
23215
|
if ($[19] !== items2) {
|
|
23214
|
-
t20 = items2.map(_temp$
|
|
23216
|
+
t20 = items2.map(_temp$h);
|
|
23215
23217
|
$[19] = items2;
|
|
23216
23218
|
$[20] = t20;
|
|
23217
23219
|
} else {
|
|
@@ -23317,7 +23319,7 @@ const BoardColumn = memo(function BoardColumn2(t0) {
|
|
|
23317
23319
|
}
|
|
23318
23320
|
return t29;
|
|
23319
23321
|
});
|
|
23320
|
-
function _temp$
|
|
23322
|
+
function _temp$h(i) {
|
|
23321
23323
|
return i.id;
|
|
23322
23324
|
}
|
|
23323
23325
|
function Board(t0) {
|
|
@@ -25253,7 +25255,8 @@ function FiltersDialog({
|
|
|
25253
25255
|
properties,
|
|
25254
25256
|
filterValues,
|
|
25255
25257
|
setFilterValues,
|
|
25256
|
-
forceFilter
|
|
25258
|
+
forceFilter,
|
|
25259
|
+
allowedFilters
|
|
25257
25260
|
}) {
|
|
25258
25261
|
const {
|
|
25259
25262
|
t
|
|
@@ -25265,15 +25268,14 @@ function FiltersDialog({
|
|
|
25265
25268
|
setLocalFilters(filterValues ?? {});
|
|
25266
25269
|
}
|
|
25267
25270
|
}, [open, filterValues]);
|
|
25268
|
-
const
|
|
25269
|
-
return Object.entries(properties).filter(([key
|
|
25270
|
-
|
|
25271
|
-
|
|
25272
|
-
|
|
25273
|
-
if (!baseProperty) return false;
|
|
25274
|
-
return ["string", "number", "boolean", "date", "reference"].includes(baseProperty.dataType);
|
|
25271
|
+
const editableFilterProperties = useMemo(() => {
|
|
25272
|
+
return Object.entries(properties).filter(([key]) => {
|
|
25273
|
+
const isFilterAllowed = !allowedFilters || allowedFilters.includes(key);
|
|
25274
|
+
const isFilterForced = Boolean(forceFilter && Object.keys(forceFilter).includes(key));
|
|
25275
|
+
return isFilterAllowed && !isFilterForced;
|
|
25275
25276
|
});
|
|
25276
|
-
}, [properties, forceFilter]);
|
|
25277
|
+
}, [properties, allowedFilters, forceFilter]);
|
|
25278
|
+
const hasEditableFilterProperties = editableFilterProperties.length > 0;
|
|
25277
25279
|
const handleFilterChange = useCallback((propertyKey, value) => {
|
|
25278
25280
|
setLocalFilters((prev) => {
|
|
25279
25281
|
const newFilters = {
|
|
@@ -25305,22 +25307,26 @@ function FiltersDialog({
|
|
|
25305
25307
|
}));
|
|
25306
25308
|
}, []);
|
|
25307
25309
|
const isAnyFieldHidden = Object.values(hiddenFields).some((hidden_0) => hidden_0);
|
|
25308
|
-
const
|
|
25309
|
-
|
|
25310
|
-
|
|
25311
|
-
|
|
25312
|
-
|
|
25310
|
+
const getActiveFilterCount = () => {
|
|
25311
|
+
const editableLocalFilters = Object.keys(localFilters).filter((key_0) => !forceFilter || !(key_0 in forceFilter));
|
|
25312
|
+
return editableLocalFilters.length;
|
|
25313
|
+
};
|
|
25314
|
+
const activeFilterCount = getActiveFilterCount();
|
|
25315
|
+
const renderFilterField = useCallback((propertyKey_1, property) => {
|
|
25316
|
+
const isArray = property.dataType === "array";
|
|
25317
|
+
const baseProperty = isArray ? property.of : property;
|
|
25318
|
+
if (!baseProperty) return null;
|
|
25313
25319
|
const filterValue = localFilters[propertyKey_1];
|
|
25314
25320
|
const setValue = (value_0) => handleFilterChange(propertyKey_1, value_0);
|
|
25315
|
-
if (
|
|
25316
|
-
return /* @__PURE__ */ jsx(ReferenceFilterField, { value: filterValue, setValue, name: propertyKey_1, isArray, path:
|
|
25317
|
-
} else if (
|
|
25318
|
-
const enumValues =
|
|
25319
|
-
return /* @__PURE__ */ jsx(StringNumberFilterField, { value: filterValue, setValue, name: propertyKey_1, dataType:
|
|
25320
|
-
} else if (
|
|
25321
|
-
return /* @__PURE__ */ jsx(BooleanFilterField, { value: filterValue, setValue, name: propertyKey_1, title:
|
|
25322
|
-
} else if (
|
|
25323
|
-
return /* @__PURE__ */ jsx(DateTimeFilterField, { value: filterValue, setValue, name: propertyKey_1, mode:
|
|
25321
|
+
if (baseProperty.dataType === "reference") {
|
|
25322
|
+
return /* @__PURE__ */ 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) });
|
|
25323
|
+
} else if (baseProperty.dataType === "number" || baseProperty.dataType === "string") {
|
|
25324
|
+
const enumValues = baseProperty.enumValues ? enumToObjectEntries(baseProperty.enumValues) : void 0;
|
|
25325
|
+
return /* @__PURE__ */ jsx(StringNumberFilterField, { value: filterValue, setValue, name: propertyKey_1, dataType: baseProperty.dataType, isArray, enumValues, title: property.name });
|
|
25326
|
+
} else if (baseProperty.dataType === "boolean") {
|
|
25327
|
+
return /* @__PURE__ */ jsx(BooleanFilterField, { value: filterValue, setValue, name: propertyKey_1, title: property.name });
|
|
25328
|
+
} else if (baseProperty.dataType === "date") {
|
|
25329
|
+
return /* @__PURE__ */ jsx(DateTimeFilterField, { value: filterValue, setValue, name: propertyKey_1, mode: baseProperty.mode, isArray, title: property.name });
|
|
25324
25330
|
}
|
|
25325
25331
|
return null;
|
|
25326
25332
|
}, [localFilters, handleFilterChange, hiddenFields, setHiddenForField]);
|
|
@@ -25329,23 +25335,25 @@ function FiltersDialog({
|
|
|
25329
25335
|
/* @__PURE__ */ jsx(Typography, { variant: "h6", children: t("filters") }),
|
|
25330
25336
|
activeFilterCount > 0 && /* @__PURE__ */ jsx("span", { className: "ml-2 px-2 py-0.5 text-xs rounded-full bg-primary text-white", children: activeFilterCount })
|
|
25331
25337
|
] }),
|
|
25332
|
-
/* @__PURE__ */ jsx(DialogContent, { children:
|
|
25338
|
+
/* @__PURE__ */ jsx(DialogContent, { children: !hasEditableFilterProperties ? /* @__PURE__ */ jsx(Typography, { color: "secondary", className: "py-8 text-center", children: t("no_filterable_properties") }) : /* @__PURE__ */ jsx("table", { className: "w-full border-collapse", children: /* @__PURE__ */ jsx("tbody", { children: editableFilterProperties.map(([propertyKey_2, property_0], index) => {
|
|
25333
25339
|
const hasFilter = propertyKey_2 in localFilters;
|
|
25334
25340
|
return /* @__PURE__ */ jsxs("tr", { className: cls(index > 0 && "border-t", defaultBorderMixin), children: [
|
|
25335
|
-
/* @__PURE__ */ jsx("td", { className: "py-3 pr-4 align-middle w-[160px]", children: /* @__PURE__ */ jsx(Typography, { variant: "body2", className: cls("font-medium", hasFilter && "text-primary"), children:
|
|
25336
|
-
/* @__PURE__ */ jsx("td", { className: "py-3", children: renderFilterField(propertyKey_2,
|
|
25341
|
+
/* @__PURE__ */ jsx("td", { className: "py-3 pr-4 align-middle w-[160px]", children: /* @__PURE__ */ jsx(Typography, { variant: "body2", className: cls("font-medium", hasFilter && "text-primary"), children: property_0.name || propertyKey_2 }) }),
|
|
25342
|
+
/* @__PURE__ */ jsx("td", { className: "py-3", children: renderFilterField(propertyKey_2, property_0) })
|
|
25337
25343
|
] }, propertyKey_2);
|
|
25338
25344
|
}) }) }) }),
|
|
25339
25345
|
/* @__PURE__ */ jsxs(DialogActions, { children: [
|
|
25340
25346
|
/* @__PURE__ */ jsx(Button, { variant: "text", onClick: handleClearAll, disabled: activeFilterCount === 0, children: t("clear") }),
|
|
25341
25347
|
/* @__PURE__ */ jsx("div", { className: "flex-grow" }),
|
|
25342
|
-
/* @__PURE__ */
|
|
25343
|
-
|
|
25348
|
+
hasEditableFilterProperties && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
25349
|
+
/* @__PURE__ */ jsx(Button, { variant: "text", onClick: () => onOpenChange(false), children: t("cancel") }),
|
|
25350
|
+
/* @__PURE__ */ jsx(Button, { variant: "filled", onClick: handleApply, children: t("apply_filters") })
|
|
25351
|
+
] })
|
|
25344
25352
|
] })
|
|
25345
25353
|
] });
|
|
25346
25354
|
}
|
|
25347
25355
|
function EntityCollectionViewStartActions(t0) {
|
|
25348
|
-
const $ = c(
|
|
25356
|
+
const $ = c(37);
|
|
25349
25357
|
const {
|
|
25350
25358
|
collection,
|
|
25351
25359
|
relativePath,
|
|
@@ -25409,34 +25417,36 @@ function EntityCollectionViewStartActions(t0) {
|
|
|
25409
25417
|
t3 = $[13];
|
|
25410
25418
|
}
|
|
25411
25419
|
const actionProps = t3;
|
|
25420
|
+
const hasAnyAllowedFilters = !tableController.allowedFilters || tableController.allowedFilters.length > 0;
|
|
25412
25421
|
let t4;
|
|
25413
|
-
if ($[14] !== activeFilterCount || $[15] !==
|
|
25414
|
-
t4 = resolvedProperties && tableController.setFilterValues && /* @__PURE__ */ jsx(Tooltip, { title: t("filters"), children: /* @__PURE__ */ jsx(Badge, { color: "primary", invisible: activeFilterCount === 0, children: largeLayout ? /* @__PURE__ */ jsxs(Button, { variant: "text", size: "small", onClick: () => setFiltersDialogOpen(true), startIcon: /* @__PURE__ */ jsx(FilterListIcon, { size: "small" }), className: cls(activeFilterCount > 0 && "text-primary"), children: [
|
|
25422
|
+
if ($[14] !== activeFilterCount || $[15] !== hasAnyAllowedFilters || $[16] !== largeLayout || $[17] !== resolvedProperties || $[18] !== t || $[19] !== tableController.setFilterValues) {
|
|
25423
|
+
t4 = resolvedProperties && tableController.setFilterValues && hasAnyAllowedFilters && /* @__PURE__ */ jsx(Tooltip, { title: t("filters"), children: /* @__PURE__ */ jsx(Badge, { color: "primary", invisible: activeFilterCount === 0, children: largeLayout ? /* @__PURE__ */ jsxs(Button, { variant: "text", size: "small", onClick: () => setFiltersDialogOpen(true), startIcon: /* @__PURE__ */ jsx(FilterListIcon, { size: "small" }), className: cls(activeFilterCount > 0 && "text-primary"), children: [
|
|
25415
25424
|
t("filters"),
|
|
25416
25425
|
activeFilterCount > 0 ? ` (${activeFilterCount})` : ""
|
|
25417
25426
|
] }) : /* @__PURE__ */ jsx(IconButton, { size: "small", onClick: () => setFiltersDialogOpen(true), className: cls(activeFilterCount > 0 && "text-primary"), children: /* @__PURE__ */ jsx(FilterListIcon, { size: "small" }) }) }) }, "filters_tooltip");
|
|
25418
25427
|
$[14] = activeFilterCount;
|
|
25419
|
-
$[15] =
|
|
25420
|
-
$[16] =
|
|
25421
|
-
$[17] =
|
|
25422
|
-
$[18] =
|
|
25423
|
-
$[19] =
|
|
25428
|
+
$[15] = hasAnyAllowedFilters;
|
|
25429
|
+
$[16] = largeLayout;
|
|
25430
|
+
$[17] = resolvedProperties;
|
|
25431
|
+
$[18] = t;
|
|
25432
|
+
$[19] = tableController.setFilterValues;
|
|
25433
|
+
$[20] = t4;
|
|
25424
25434
|
} else {
|
|
25425
|
-
t4 = $[
|
|
25435
|
+
t4 = $[20];
|
|
25426
25436
|
}
|
|
25427
25437
|
const filtersButton = t4;
|
|
25428
25438
|
const t5 = !collection.forceFilter;
|
|
25429
25439
|
let t6;
|
|
25430
|
-
if ($[
|
|
25440
|
+
if ($[21] !== t5 || $[22] !== tableController) {
|
|
25431
25441
|
t6 = /* @__PURE__ */ jsx(ClearFilterSortButton, { tableController, enabled: t5 }, "clear_filter");
|
|
25432
|
-
$[
|
|
25433
|
-
$[
|
|
25434
|
-
$[
|
|
25442
|
+
$[21] = t5;
|
|
25443
|
+
$[22] = tableController;
|
|
25444
|
+
$[23] = t6;
|
|
25435
25445
|
} else {
|
|
25436
|
-
t6 = $[
|
|
25446
|
+
t6 = $[23];
|
|
25437
25447
|
}
|
|
25438
25448
|
let actions;
|
|
25439
|
-
if ($[
|
|
25449
|
+
if ($[24] !== actionProps || $[25] !== filtersButton || $[26] !== plugins || $[27] !== t6) {
|
|
25440
25450
|
actions = [filtersButton, t6];
|
|
25441
25451
|
if (plugins) {
|
|
25442
25452
|
plugins.forEach((plugin, i) => {
|
|
@@ -25445,39 +25455,42 @@ function EntityCollectionViewStartActions(t0) {
|
|
|
25445
25455
|
}
|
|
25446
25456
|
});
|
|
25447
25457
|
}
|
|
25448
|
-
$[
|
|
25449
|
-
$[
|
|
25450
|
-
$[
|
|
25451
|
-
$[
|
|
25452
|
-
$[
|
|
25458
|
+
$[24] = actionProps;
|
|
25459
|
+
$[25] = filtersButton;
|
|
25460
|
+
$[26] = plugins;
|
|
25461
|
+
$[27] = t6;
|
|
25462
|
+
$[28] = actions;
|
|
25453
25463
|
} else {
|
|
25454
|
-
actions = $[
|
|
25464
|
+
actions = $[28];
|
|
25455
25465
|
}
|
|
25456
25466
|
let t7;
|
|
25457
|
-
if ($[
|
|
25458
|
-
t7 = resolvedProperties && tableController.setFilterValues && /* @__PURE__ */ jsx(FiltersDialog, { open: filtersDialogOpen, onOpenChange: setFiltersDialogOpen, properties: resolvedProperties, filterValues: tableController.filterValues, setFilterValues: (filterValues_0) => tableController.setFilterValues?.(filterValues_0 ?? {}), forceFilter: collection.forceFilter });
|
|
25459
|
-
$[
|
|
25460
|
-
$[
|
|
25461
|
-
$[
|
|
25462
|
-
$[
|
|
25463
|
-
$[
|
|
25467
|
+
if ($[29] !== collection.forceFilter || $[30] !== filtersDialogOpen || $[31] !== resolvedProperties || $[32] !== tableController) {
|
|
25468
|
+
t7 = resolvedProperties && tableController.setFilterValues && /* @__PURE__ */ 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) });
|
|
25469
|
+
$[29] = collection.forceFilter;
|
|
25470
|
+
$[30] = filtersDialogOpen;
|
|
25471
|
+
$[31] = resolvedProperties;
|
|
25472
|
+
$[32] = tableController;
|
|
25473
|
+
$[33] = t7;
|
|
25464
25474
|
} else {
|
|
25465
|
-
t7 = $[
|
|
25475
|
+
t7 = $[33];
|
|
25466
25476
|
}
|
|
25467
25477
|
let t8;
|
|
25468
|
-
if ($[
|
|
25478
|
+
if ($[34] !== actions || $[35] !== t7) {
|
|
25469
25479
|
t8 = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
25470
25480
|
actions,
|
|
25471
25481
|
t7
|
|
25472
25482
|
] });
|
|
25473
|
-
$[
|
|
25474
|
-
$[
|
|
25475
|
-
$[
|
|
25483
|
+
$[34] = actions;
|
|
25484
|
+
$[35] = t7;
|
|
25485
|
+
$[36] = t8;
|
|
25476
25486
|
} else {
|
|
25477
|
-
t8 = $[
|
|
25487
|
+
t8 = $[36];
|
|
25478
25488
|
}
|
|
25479
25489
|
return t8;
|
|
25480
25490
|
}
|
|
25491
|
+
function _temp$g(key_0) {
|
|
25492
|
+
return key_0.toString();
|
|
25493
|
+
}
|
|
25481
25494
|
const collectionScrollCache = /* @__PURE__ */ new Map();
|
|
25482
25495
|
function useScrollRestoration() {
|
|
25483
25496
|
const updateCollectionScroll = ({
|
|
@@ -25536,7 +25549,12 @@ const EntityCollectionView$1 = React__default.memo(function EntityCollectionView
|
|
|
25536
25549
|
const scrollRestoration = useScrollRestoration();
|
|
25537
25550
|
const collection = useMemo(() => {
|
|
25538
25551
|
const userOverride = userConfigPersistence?.getCollectionConfig(fullPath);
|
|
25539
|
-
|
|
25552
|
+
if (!userOverride) return collectionProp;
|
|
25553
|
+
const {
|
|
25554
|
+
properties,
|
|
25555
|
+
...rest
|
|
25556
|
+
} = userOverride;
|
|
25557
|
+
return mergeDeep(collectionProp, rest);
|
|
25540
25558
|
}, [collectionProp, fullPath, userConfigPersistence?.getCollectionConfig]);
|
|
25541
25559
|
const openEntityMode = collection?.openEntityMode ?? DEFAULT_ENTITY_OPEN_MODE;
|
|
25542
25560
|
const collectionRef = React__default.useRef(collection);
|
|
@@ -25790,11 +25808,12 @@ const EntityCollectionView$1 = React__default.memo(function EntityCollectionView
|
|
|
25790
25808
|
collection,
|
|
25791
25809
|
path: fullPath,
|
|
25792
25810
|
propertyConfigs: customizationController.propertyConfigs,
|
|
25793
|
-
authController
|
|
25794
|
-
|
|
25811
|
+
authController,
|
|
25812
|
+
userConfigPersistence
|
|
25813
|
+
}), [collection, fullPath, userConfigPersistence]);
|
|
25795
25814
|
const hasEnumProperty = useMemo(() => {
|
|
25796
|
-
const
|
|
25797
|
-
return Object.values(
|
|
25815
|
+
const properties_0 = resolvedCollection.properties;
|
|
25816
|
+
return Object.values(properties_0).some((prop) => prop && prop.dataType === "string" && prop.enumValues);
|
|
25798
25817
|
}, [resolvedCollection.properties]);
|
|
25799
25818
|
const enabledViews = useMemo(() => {
|
|
25800
25819
|
const configured = collection.enabledViews ?? ["table", "cards", "kanban"];
|
|
@@ -25805,8 +25824,8 @@ const EntityCollectionView$1 = React__default.memo(function EntityCollectionView
|
|
|
25805
25824
|
}, [collection.enabledViews, hasEnumProperty]);
|
|
25806
25825
|
const kanbanPropertyOptions = useMemo(() => {
|
|
25807
25826
|
const options = [];
|
|
25808
|
-
const
|
|
25809
|
-
for (const [key_0, property_0] of Object.entries(
|
|
25827
|
+
const properties_1 = resolvedCollection.properties;
|
|
25828
|
+
for (const [key_0, property_0] of Object.entries(properties_1)) {
|
|
25810
25829
|
const prop_0 = property_0;
|
|
25811
25830
|
if (prop_0 && prop_0.dataType === "string" && prop_0.enumValues) {
|
|
25812
25831
|
options.push({
|
|
@@ -27169,7 +27188,7 @@ function ReferenceWidget({
|
|
|
27169
27188
|
const onMultipleEntitiesSelected = useCallback((entities) => {
|
|
27170
27189
|
if (disabled) return;
|
|
27171
27190
|
if (onMultipleReferenceSelected) {
|
|
27172
|
-
const references = entities ? entities.map((e) => getReferenceFrom(e)) : null;
|
|
27191
|
+
const references = entities ? entities.filter(Boolean).map((e) => getReferenceFrom(e)) : null;
|
|
27173
27192
|
onMultipleReferenceSelected({
|
|
27174
27193
|
references,
|
|
27175
27194
|
entities
|
|
@@ -28109,7 +28128,14 @@ function useBuildNavigationController(props) {
|
|
|
28109
28128
|
if (!collections_0) return void 0;
|
|
28110
28129
|
const baseCollection = getCollectionByPathOrId(removeInitialAndTrailingSlashes(idOrPath), collections_0);
|
|
28111
28130
|
const userOverride = includeUserOverride ? userConfigPersistence?.getCollectionConfig(idOrPath) : void 0;
|
|
28112
|
-
|
|
28131
|
+
let overriddenCollection = baseCollection;
|
|
28132
|
+
if (baseCollection && userOverride) {
|
|
28133
|
+
const {
|
|
28134
|
+
properties,
|
|
28135
|
+
...rest
|
|
28136
|
+
} = userOverride;
|
|
28137
|
+
overriddenCollection = mergeDeep(baseCollection, rest);
|
|
28138
|
+
}
|
|
28113
28139
|
let result = overriddenCollection;
|
|
28114
28140
|
if (overriddenCollection) {
|
|
28115
28141
|
const subcollections = overriddenCollection.subcollections;
|
|
@@ -30050,7 +30076,7 @@ function useBuildSideDialogsController() {
|
|
|
30050
30076
|
replace: true,
|
|
30051
30077
|
state: {
|
|
30052
30078
|
base_location: baseLocation,
|
|
30053
|
-
panels: updatedPanels.map(_temp4$
|
|
30079
|
+
panels: updatedPanels.map(_temp4$2)
|
|
30054
30080
|
}
|
|
30055
30081
|
});
|
|
30056
30082
|
}
|
|
@@ -30148,7 +30174,7 @@ function _temp6$1(p_4) {
|
|
|
30148
30174
|
function _temp5$1(p_3) {
|
|
30149
30175
|
return p_3.key;
|
|
30150
30176
|
}
|
|
30151
|
-
function _temp4$
|
|
30177
|
+
function _temp4$2(p_2) {
|
|
30152
30178
|
return p_2.key;
|
|
30153
30179
|
}
|
|
30154
30180
|
function _temp3$2(p_1) {
|
|
@@ -32294,7 +32320,7 @@ const Scaffold = React__default.memo(function Scaffold2(props) {
|
|
|
32294
32320
|
const otherChildren = t3;
|
|
32295
32321
|
const includeDrawer = drawerChildren.length > 0;
|
|
32296
32322
|
const largeLayout = useLargeLayout();
|
|
32297
|
-
const [drawerOpen, setDrawerOpen] = React__default.useState(
|
|
32323
|
+
const [drawerOpen, setDrawerOpen] = React__default.useState(_temp4$1);
|
|
32298
32324
|
const [onHover, setOnHover] = React__default.useState(false);
|
|
32299
32325
|
let t4;
|
|
32300
32326
|
if ($[6] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
|
|
@@ -32316,6 +32342,10 @@ const Scaffold = React__default.memo(function Scaffold2(props) {
|
|
|
32316
32342
|
if ($[8] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
|
|
32317
32343
|
t6 = () => {
|
|
32318
32344
|
setDrawerOpen(true);
|
|
32345
|
+
try {
|
|
32346
|
+
localStorage.setItem("firecms_drawer_open", "true");
|
|
32347
|
+
} catch {
|
|
32348
|
+
}
|
|
32319
32349
|
};
|
|
32320
32350
|
$[8] = t6;
|
|
32321
32351
|
} else {
|
|
@@ -32326,6 +32356,10 @@ const Scaffold = React__default.memo(function Scaffold2(props) {
|
|
|
32326
32356
|
if ($[9] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
|
|
32327
32357
|
t7 = () => {
|
|
32328
32358
|
setDrawerOpen(false);
|
|
32359
|
+
try {
|
|
32360
|
+
localStorage.setItem("firecms_drawer_open", "false");
|
|
32361
|
+
} catch {
|
|
32362
|
+
}
|
|
32329
32363
|
};
|
|
32330
32364
|
$[9] = t7;
|
|
32331
32365
|
} else {
|
|
@@ -32678,6 +32712,13 @@ function _temp2$1(child_0) {
|
|
|
32678
32712
|
function _temp3$1(child_1) {
|
|
32679
32713
|
return child_1.type.componentType !== "Drawer" && child_1.type.componentType !== "AppBar";
|
|
32680
32714
|
}
|
|
32715
|
+
function _temp4$1() {
|
|
32716
|
+
try {
|
|
32717
|
+
return localStorage.getItem("firecms_drawer_open") === "true";
|
|
32718
|
+
} catch {
|
|
32719
|
+
return false;
|
|
32720
|
+
}
|
|
32721
|
+
}
|
|
32681
32722
|
const en = {
|
|
32682
32723
|
// ─── Form actions ────────────────────────────────────────────
|
|
32683
32724
|
save: "Save",
|
|
@@ -32815,8 +32856,8 @@ const en = {
|
|
|
32815
32856
|
// ─── Error states ─────────────────────────────────────────────
|
|
32816
32857
|
error: "Error",
|
|
32817
32858
|
error_uploading_file: "Error uploading file",
|
|
32818
|
-
error_deleting: "Error deleting",
|
|
32819
|
-
error_before_delete: "Error before delete",
|
|
32859
|
+
error_deleting: "Error deleting: {{message}}",
|
|
32860
|
+
error_before_delete: "Error before delete: {{message}}",
|
|
32820
32861
|
error_updating_asset: "Error updating asset",
|
|
32821
32862
|
error_deleting_asset: "Error deleting asset",
|
|
32822
32863
|
error_firestore_index: "A Firestore index is required for this query.",
|
|
@@ -33153,10 +33194,18 @@ const en = {
|
|
|
33153
33194
|
auto_setup_collections_button: "Automatically set up collections",
|
|
33154
33195
|
auto_setup_collections_title: "Automatically set up collections?",
|
|
33155
33196
|
auto_setup_collections_desc: "This will automatically create collection configs for collections that are <b>NOT</b> already mapped",
|
|
33156
|
-
|
|
33197
|
+
setting_up_collections: "Setting up collections",
|
|
33198
|
+
setting_up_collection: "Setting up {{name}}",
|
|
33157
33199
|
no_collections_found_to_setup: "No collections found to setup.",
|
|
33158
33200
|
collections_have_been_setup: "Collections have been automatically setup.",
|
|
33159
33201
|
error_setting_up_collections: "Error automatically setting up collections",
|
|
33202
|
+
setup_collections_title: "Set up collections",
|
|
33203
|
+
setup_collections_select_desc: "Select which collections to automatically set up:",
|
|
33204
|
+
select_all: "Select all",
|
|
33205
|
+
deselect_all: "Deselect all",
|
|
33206
|
+
setup_collections_confirm: "Set up ({{count}})",
|
|
33207
|
+
collection_setup_success: "{{name}} has been set up",
|
|
33208
|
+
go_to_collection: "Go to collection",
|
|
33160
33209
|
// --- Home Suggestions ---
|
|
33161
33210
|
add_your: "Add your",
|
|
33162
33211
|
database_collections: "database collections",
|
|
@@ -33484,8 +33533,8 @@ const es = {
|
|
|
33484
33533
|
// ─── Error states ─────────────────────────────────────────────
|
|
33485
33534
|
error: "Error",
|
|
33486
33535
|
error_uploading_file: "Error al subir archivo",
|
|
33487
|
-
error_deleting: "Error al eliminar",
|
|
33488
|
-
error_before_delete: "Error antes de eliminar",
|
|
33536
|
+
error_deleting: "Error al eliminar: {{message}}",
|
|
33537
|
+
error_before_delete: "Error antes de eliminar: {{message}}",
|
|
33489
33538
|
error_updating_asset: "Error al actualizar recurso",
|
|
33490
33539
|
error_deleting_asset: "Error al eliminar recurso",
|
|
33491
33540
|
error_firestore_index: "Se requiere un índice de Firestore para esta consulta.",
|
|
@@ -33824,10 +33873,18 @@ const es = {
|
|
|
33824
33873
|
auto_setup_collections_button: "Configurar colecciones automáticamente",
|
|
33825
33874
|
auto_setup_collections_title: "¿Configurar colecciones automáticamente?",
|
|
33826
33875
|
auto_setup_collections_desc: "Esto creará automáticamente la configuración de las colecciones que <b>NO</b> estén mapeadas",
|
|
33827
|
-
|
|
33876
|
+
setting_up_collections: "Configurando colecciones",
|
|
33877
|
+
setting_up_collection: "Configurando {{name}}",
|
|
33828
33878
|
no_collections_found_to_setup: "No se encontraron colecciones para configurar",
|
|
33829
33879
|
collections_have_been_setup: "¡Tus colecciones han sido configuradas!",
|
|
33830
33880
|
error_setting_up_collections: "Error al configurar colecciones",
|
|
33881
|
+
setup_collections_title: "Set up collections",
|
|
33882
|
+
setup_collections_select_desc: "Select which collections to automatically set up:",
|
|
33883
|
+
select_all: "Select all",
|
|
33884
|
+
deselect_all: "Deselect all",
|
|
33885
|
+
setup_collections_confirm: "Set up ({{count}})",
|
|
33886
|
+
collection_setup_success: "{{name}} has been set up",
|
|
33887
|
+
go_to_collection: "Go to collection",
|
|
33831
33888
|
// --- Home Suggestions ---
|
|
33832
33889
|
add_your: "Añade tus",
|
|
33833
33890
|
database_collections: "colecciones de base de datos",
|
|
@@ -34157,8 +34214,8 @@ const de = {
|
|
|
34157
34214
|
// ─── Error states ─────────────────────────────────────────────
|
|
34158
34215
|
error: "Fehler",
|
|
34159
34216
|
error_uploading_file: "Fehler beim Hochladen der Datei",
|
|
34160
|
-
error_deleting: "Fehler beim Löschen",
|
|
34161
|
-
error_before_delete: "Fehler vor dem Löschen",
|
|
34217
|
+
error_deleting: "Fehler beim Löschen: {{message}}",
|
|
34218
|
+
error_before_delete: "Fehler vor dem Löschen: {{message}}",
|
|
34162
34219
|
error_updating_asset: "Fehler beim Aktualisieren des Assets",
|
|
34163
34220
|
error_deleting_asset: "Fehler beim Löschen des Assets",
|
|
34164
34221
|
error_firestore_index: "Für diese Abfrage ist ein Firestore-Index erforderlich.",
|
|
@@ -34495,10 +34552,18 @@ const de = {
|
|
|
34495
34552
|
auto_setup_collections_button: "Sammlungen automatisch einrichten",
|
|
34496
34553
|
auto_setup_collections_title: "Sammlungen automatisch einrichten?",
|
|
34497
34554
|
auto_setup_collections_desc: "Dadurch werden automatisch Sammlungskonfigurationen für Sammlungen erstellt, die noch <b>NICHT</b> zugeordnet sind.",
|
|
34498
|
-
|
|
34555
|
+
setting_up_collections: "Sammlungen werden eingerichtet",
|
|
34556
|
+
setting_up_collection: "{{name}} wird eingerichtet",
|
|
34499
34557
|
no_collections_found_to_setup: "Keine einzurichtenden Sammlungen gefunden",
|
|
34500
34558
|
collections_have_been_setup: "Sammlungen wurden automatisch eingerichtet",
|
|
34501
34559
|
error_setting_up_collections: "Fehler beim automatischen Einrichten der Sammlungen",
|
|
34560
|
+
setup_collections_title: "Set up collections",
|
|
34561
|
+
setup_collections_select_desc: "Select which collections to automatically set up:",
|
|
34562
|
+
select_all: "Select all",
|
|
34563
|
+
deselect_all: "Deselect all",
|
|
34564
|
+
setup_collections_confirm: "Set up ({{count}})",
|
|
34565
|
+
collection_setup_success: "{{name}} has been set up",
|
|
34566
|
+
go_to_collection: "Go to collection",
|
|
34502
34567
|
add_your: "Fügen Sie Ihre",
|
|
34503
34568
|
database_collections: "Datenbanksammlungen",
|
|
34504
34569
|
to_firecms: "zu FireCMS hinzu",
|
|
@@ -34826,8 +34891,8 @@ const fr = {
|
|
|
34826
34891
|
// ─── Error states ─────────────────────────────────────────────
|
|
34827
34892
|
error: "Erreur",
|
|
34828
34893
|
error_uploading_file: "Erreur lors du téléchargement du fichier",
|
|
34829
|
-
error_deleting: "Erreur lors de la suppression",
|
|
34830
|
-
error_before_delete: "Erreur avant la suppression",
|
|
34894
|
+
error_deleting: "Erreur lors de la suppression: {{message}}",
|
|
34895
|
+
error_before_delete: "Erreur avant la suppression: {{message}}",
|
|
34831
34896
|
error_updating_asset: "Erreur lors de la mise à jour de l'actif",
|
|
34832
34897
|
error_deleting_asset: "Erreur lors de la suppression de l'actif",
|
|
34833
34898
|
error_firestore_index: "Un index Firestore est requis pour cette requête.",
|
|
@@ -35164,10 +35229,18 @@ const fr = {
|
|
|
35164
35229
|
auto_setup_collections_button: "Configurer les collections automatiquement",
|
|
35165
35230
|
auto_setup_collections_title: "Configurer les collections automatiquement ?",
|
|
35166
35231
|
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",
|
|
35167
|
-
|
|
35232
|
+
setting_up_collections: "Configuration des collections",
|
|
35233
|
+
setting_up_collection: "Configuration de {{name}}",
|
|
35168
35234
|
no_collections_found_to_setup: "Aucune collection à configurer trouvée",
|
|
35169
35235
|
collections_have_been_setup: "Les collections ont été configurées",
|
|
35170
35236
|
error_setting_up_collections: "Erreur lors de la configuration des collections",
|
|
35237
|
+
setup_collections_title: "Set up collections",
|
|
35238
|
+
setup_collections_select_desc: "Select which collections to automatically set up:",
|
|
35239
|
+
select_all: "Select all",
|
|
35240
|
+
deselect_all: "Deselect all",
|
|
35241
|
+
setup_collections_confirm: "Set up ({{count}})",
|
|
35242
|
+
collection_setup_success: "{{name}} has been set up",
|
|
35243
|
+
go_to_collection: "Go to collection",
|
|
35171
35244
|
add_your: "Ajoutez vos",
|
|
35172
35245
|
database_collections: "collections de base de données",
|
|
35173
35246
|
to_firecms: "à FireCMS",
|
|
@@ -35495,8 +35568,8 @@ const it = {
|
|
|
35495
35568
|
// ─── Error states ─────────────────────────────────────────────
|
|
35496
35569
|
error: "Errore",
|
|
35497
35570
|
error_uploading_file: "Errore durante il caricamento del file",
|
|
35498
|
-
error_deleting: "Errore durante l'eliminazione",
|
|
35499
|
-
error_before_delete: "Errore prima dell'eliminazione",
|
|
35571
|
+
error_deleting: "Errore durante l'eliminazione: {{message}}",
|
|
35572
|
+
error_before_delete: "Errore prima dell'eliminazione: {{message}}",
|
|
35500
35573
|
error_updating_asset: "Errore durante l'aggiornamento dell'asset",
|
|
35501
35574
|
error_deleting_asset: "Errore durante l'eliminazione dell'asset",
|
|
35502
35575
|
error_firestore_index: "Per questa query è richiesto un indice Firestore.",
|
|
@@ -35833,10 +35906,18 @@ const it = {
|
|
|
35833
35906
|
auto_setup_collections_button: "Configura le collezioni automaticamente",
|
|
35834
35907
|
auto_setup_collections_title: "Configurazione automatica delle collezioni",
|
|
35835
35908
|
auto_setup_collections_desc: "Configura le collezioni automaticamente in base ai dati Firestore esistenti. Lascia che FireCMS configuri il CMS perfetto per te.",
|
|
35836
|
-
|
|
35909
|
+
setting_up_collections: "Configurazione delle collezioni",
|
|
35910
|
+
setting_up_collection: "Configurazione di {{name}}",
|
|
35837
35911
|
no_collections_found_to_setup: "Nessuna collezione trovata da configurare",
|
|
35838
35912
|
collections_have_been_setup: "Le collezioni sono state configurate",
|
|
35839
35913
|
error_setting_up_collections: "Errore durante la configurazione delle collezioni",
|
|
35914
|
+
setup_collections_title: "Set up collections",
|
|
35915
|
+
setup_collections_select_desc: "Select which collections to automatically set up:",
|
|
35916
|
+
select_all: "Select all",
|
|
35917
|
+
deselect_all: "Deselect all",
|
|
35918
|
+
setup_collections_confirm: "Set up ({{count}})",
|
|
35919
|
+
collection_setup_success: "{{name}} has been set up",
|
|
35920
|
+
go_to_collection: "Go to collection",
|
|
35840
35921
|
add_your: "Aggiungi le tue",
|
|
35841
35922
|
database_collections: "collezioni del database",
|
|
35842
35923
|
to_firecms: "a FireCMS",
|
|
@@ -36164,8 +36245,8 @@ const hi = {
|
|
|
36164
36245
|
// ─── Error states ─────────────────────────────────────────────
|
|
36165
36246
|
error: "त्रुटि",
|
|
36166
36247
|
error_uploading_file: "फ़ाइल अपलोड करने में त्रुटि",
|
|
36167
|
-
error_deleting: "हटाने में
|
|
36168
|
-
error_before_delete: "हटाने से पहले
|
|
36248
|
+
error_deleting: "हटाने में त्रुटि: {{message}}",
|
|
36249
|
+
error_before_delete: "हटाने से पहले त्रुटि: {{message}}",
|
|
36169
36250
|
error_updating_asset: "एसेट अपडेट करने में त्रुटि",
|
|
36170
36251
|
error_deleting_asset: "एसेट हटाने में त्रुटि",
|
|
36171
36252
|
error_firestore_index: "इस क्वेरी के लिए Firestore इंडेक्स आवश्यक है।",
|
|
@@ -36502,10 +36583,18 @@ const hi = {
|
|
|
36502
36583
|
auto_setup_collections_button: "संग्रहों को स्वचालित रूप से सेट करें",
|
|
36503
36584
|
auto_setup_collections_title: "संग्रहों की स्वचालित सेटअप",
|
|
36504
36585
|
auto_setup_collections_desc: "अपने मौजूदा Firestore डेटा के आधार पर संग्रहों को स्वचालित रूप से सेट करें। FireCMS को आपके लिए परफेक्ट CMS कॉन्फ़िगर करने दें।",
|
|
36505
|
-
|
|
36586
|
+
setting_up_collections: "संग्रह सेट किए जा रहे हैं",
|
|
36587
|
+
setting_up_collection: "{{name}} सेट किया जा रहा है",
|
|
36506
36588
|
no_collections_found_to_setup: "सेट करने के लिए कोई संग्रह नहीं मिला",
|
|
36507
36589
|
collections_have_been_setup: "संग्रहों को सेट कर दिया गया है",
|
|
36508
36590
|
error_setting_up_collections: "संग्रह सेट करने में त्रुटि",
|
|
36591
|
+
setup_collections_title: "Set up collections",
|
|
36592
|
+
setup_collections_select_desc: "Select which collections to automatically set up:",
|
|
36593
|
+
select_all: "Select all",
|
|
36594
|
+
deselect_all: "Deselect all",
|
|
36595
|
+
setup_collections_confirm: "Set up ({{count}})",
|
|
36596
|
+
collection_setup_success: "{{name}} has been set up",
|
|
36597
|
+
go_to_collection: "Go to collection",
|
|
36509
36598
|
add_your: "अपने",
|
|
36510
36599
|
database_collections: "डेटाबेस संग्रह",
|
|
36511
36600
|
to_firecms: "को FireCMS में जोड़ें",
|
|
@@ -36833,8 +36922,8 @@ const pt = {
|
|
|
36833
36922
|
// ─── Error states ─────────────────────────────────────────────
|
|
36834
36923
|
error: "Erro",
|
|
36835
36924
|
error_uploading_file: "Erro ao carregar ficheiro",
|
|
36836
|
-
error_deleting: "Erro ao eliminar",
|
|
36837
|
-
error_before_delete: "Erro antes de eliminar",
|
|
36925
|
+
error_deleting: "Erro ao eliminar: {{message}}",
|
|
36926
|
+
error_before_delete: "Erro antes de eliminar: {{message}}",
|
|
36838
36927
|
error_updating_asset: "Erro ao atualizar recurso",
|
|
36839
36928
|
error_deleting_asset: "Erro ao eliminar recurso",
|
|
36840
36929
|
error_firestore_index: "É necessário um índice Firestore para esta consulta.",
|
|
@@ -37171,10 +37260,18 @@ const pt = {
|
|
|
37171
37260
|
auto_setup_collections_button: "Configurar coleções automaticamente",
|
|
37172
37261
|
auto_setup_collections_title: "Configurar coleções automaticamente?",
|
|
37173
37262
|
auto_setup_collections_desc: "Isto criará automaticamente configurações de coleção para coleções que <b>NÃO</b> estão já mapeadas",
|
|
37174
|
-
|
|
37263
|
+
setting_up_collections: "Configurando coleções",
|
|
37264
|
+
setting_up_collection: "Configurando {{name}}",
|
|
37175
37265
|
no_collections_found_to_setup: "Nenhuma coleção encontrada para configurar.",
|
|
37176
37266
|
collections_have_been_setup: "As coleções foram configuradas automaticamente.",
|
|
37177
37267
|
error_setting_up_collections: "Erro ao configurar coleções automaticamente",
|
|
37268
|
+
setup_collections_title: "Set up collections",
|
|
37269
|
+
setup_collections_select_desc: "Select which collections to automatically set up:",
|
|
37270
|
+
select_all: "Select all",
|
|
37271
|
+
deselect_all: "Deselect all",
|
|
37272
|
+
setup_collections_confirm: "Set up ({{count}})",
|
|
37273
|
+
collection_setup_success: "{{name}} has been set up",
|
|
37274
|
+
go_to_collection: "Go to collection",
|
|
37178
37275
|
// --- Home Suggestions ---
|
|
37179
37276
|
add_your: "Adicione as suas",
|
|
37180
37277
|
database_collections: "coleções da base de dados",
|
|
@@ -42212,6 +42309,7 @@ export {
|
|
|
42212
42309
|
hydrateRegExp,
|
|
42213
42310
|
iconSynonyms,
|
|
42214
42311
|
iconsSearch,
|
|
42312
|
+
isDataTypeFilterable,
|
|
42215
42313
|
isDefaultFieldConfigId,
|
|
42216
42314
|
isEmptyObject,
|
|
42217
42315
|
isEnumValueDisabled,
|