@firecms/core 3.3.0-canary.040c21c → 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 +408 -297
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +408 -297
- package/dist/index.umd.js.map +1 -1
- package/dist/types/collections.d.ts +17 -0
- package/dist/types/translations.d.ts +11 -3
- 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/HomePage/NavigationCardBinding.tsx +6 -3
- 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/core/DefaultDrawer.tsx +1 -1
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +1 -1
- package/src/hooks/useBuildNavigationController.tsx +5 -1
- package/src/locales/de.ts +13 -5
- package/src/locales/en.ts +13 -5
- package/src/locales/es.ts +13 -5
- package/src/locales/fr.ts +13 -5
- package/src/locales/hi.ts +13 -5
- package/src/locales/it.ts +13 -5
- package/src/locales/pt.ts +13 -5
- package/src/types/collections.ts +18 -0
- package/src/types/translations.ts +11 -3
- 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
|
}
|
|
@@ -20915,7 +20917,7 @@ function SmallNavigationCard(t0) {
|
|
|
20915
20917
|
return t5;
|
|
20916
20918
|
}
|
|
20917
20919
|
function NavigationCardBinding(t0) {
|
|
20918
|
-
const $ = c(
|
|
20920
|
+
const $ = c(38);
|
|
20919
20921
|
const {
|
|
20920
20922
|
path,
|
|
20921
20923
|
collection,
|
|
@@ -20928,6 +20930,9 @@ function NavigationCardBinding(t0) {
|
|
|
20928
20930
|
shrink
|
|
20929
20931
|
} = t0;
|
|
20930
20932
|
const userConfigurationPersistence = useUserConfigurationPersistence();
|
|
20933
|
+
const {
|
|
20934
|
+
t
|
|
20935
|
+
} = useTranslation();
|
|
20931
20936
|
const t1 = collection ?? view;
|
|
20932
20937
|
let t2;
|
|
20933
20938
|
if ($[0] !== t1) {
|
|
@@ -21000,51 +21005,61 @@ function NavigationCardBinding(t0) {
|
|
|
21000
21005
|
t5 = $[13];
|
|
21001
21006
|
}
|
|
21002
21007
|
const actions = t5;
|
|
21008
|
+
let t6;
|
|
21009
|
+
if ($[18] !== name || $[19] !== t) {
|
|
21010
|
+
t6 = t(name);
|
|
21011
|
+
$[18] = name;
|
|
21012
|
+
$[19] = t;
|
|
21013
|
+
$[20] = t6;
|
|
21014
|
+
} else {
|
|
21015
|
+
t6 = $[20];
|
|
21016
|
+
}
|
|
21017
|
+
const translatedName = t6;
|
|
21003
21018
|
if (type === "admin") {
|
|
21004
|
-
let
|
|
21005
|
-
if ($[
|
|
21006
|
-
|
|
21007
|
-
$[
|
|
21008
|
-
$[
|
|
21009
|
-
$[
|
|
21010
|
-
$[
|
|
21019
|
+
let t72;
|
|
21020
|
+
if ($[21] !== collectionIcon || $[22] !== translatedName || $[23] !== url) {
|
|
21021
|
+
t72 = /* @__PURE__ */ jsx(SmallNavigationCard, { icon: collectionIcon, name: translatedName, url });
|
|
21022
|
+
$[21] = collectionIcon;
|
|
21023
|
+
$[22] = translatedName;
|
|
21024
|
+
$[23] = url;
|
|
21025
|
+
$[24] = t72;
|
|
21011
21026
|
} else {
|
|
21012
|
-
|
|
21027
|
+
t72 = $[24];
|
|
21013
21028
|
}
|
|
21014
|
-
return
|
|
21029
|
+
return t72;
|
|
21015
21030
|
}
|
|
21016
|
-
let
|
|
21017
|
-
if ($[
|
|
21018
|
-
|
|
21031
|
+
let t7;
|
|
21032
|
+
if ($[25] !== navigate || $[26] !== onClick || $[27] !== path || $[28] !== url || $[29] !== userConfigurationPersistence) {
|
|
21033
|
+
t7 = () => {
|
|
21019
21034
|
onClick?.();
|
|
21020
21035
|
navigate(url);
|
|
21021
21036
|
if (userConfigurationPersistence) {
|
|
21022
21037
|
userConfigurationPersistence.setRecentlyVisitedPaths([path, ...(userConfigurationPersistence.recentlyVisitedPaths ?? []).filter((p_0) => p_0 !== path)]);
|
|
21023
21038
|
}
|
|
21024
21039
|
};
|
|
21025
|
-
$[
|
|
21026
|
-
$[
|
|
21027
|
-
$[
|
|
21028
|
-
$[
|
|
21029
|
-
$[
|
|
21030
|
-
$[
|
|
21040
|
+
$[25] = navigate;
|
|
21041
|
+
$[26] = onClick;
|
|
21042
|
+
$[27] = path;
|
|
21043
|
+
$[28] = url;
|
|
21044
|
+
$[29] = userConfigurationPersistence;
|
|
21045
|
+
$[30] = t7;
|
|
21031
21046
|
} else {
|
|
21032
|
-
|
|
21047
|
+
t7 = $[30];
|
|
21033
21048
|
}
|
|
21034
|
-
let
|
|
21035
|
-
if ($[
|
|
21036
|
-
|
|
21037
|
-
$[
|
|
21038
|
-
$[
|
|
21039
|
-
$[
|
|
21040
|
-
$[
|
|
21041
|
-
$[
|
|
21042
|
-
$[
|
|
21043
|
-
$[
|
|
21049
|
+
let t8;
|
|
21050
|
+
if ($[31] !== actions || $[32] !== collectionIcon || $[33] !== description || $[34] !== shrink || $[35] !== t7 || $[36] !== translatedName) {
|
|
21051
|
+
t8 = /* @__PURE__ */ jsx(NavigationCard, { icon: collectionIcon, name: translatedName, description, actions, onClick: t7, shrink });
|
|
21052
|
+
$[31] = actions;
|
|
21053
|
+
$[32] = collectionIcon;
|
|
21054
|
+
$[33] = description;
|
|
21055
|
+
$[34] = shrink;
|
|
21056
|
+
$[35] = t7;
|
|
21057
|
+
$[36] = translatedName;
|
|
21058
|
+
$[37] = t8;
|
|
21044
21059
|
} else {
|
|
21045
|
-
|
|
21060
|
+
t8 = $[37];
|
|
21046
21061
|
}
|
|
21047
|
-
return
|
|
21062
|
+
return t8;
|
|
21048
21063
|
}
|
|
21049
21064
|
const animateLayoutChanges = (args) => defaultAnimateLayoutChanges({
|
|
21050
21065
|
...args,
|
|
@@ -23198,7 +23213,7 @@ const BoardColumn = memo(function BoardColumn2(t0) {
|
|
|
23198
23213
|
let t19;
|
|
23199
23214
|
let t20;
|
|
23200
23215
|
if ($[19] !== items2) {
|
|
23201
|
-
t20 = items2.map(_temp$
|
|
23216
|
+
t20 = items2.map(_temp$h);
|
|
23202
23217
|
$[19] = items2;
|
|
23203
23218
|
$[20] = t20;
|
|
23204
23219
|
} else {
|
|
@@ -23304,7 +23319,7 @@ const BoardColumn = memo(function BoardColumn2(t0) {
|
|
|
23304
23319
|
}
|
|
23305
23320
|
return t29;
|
|
23306
23321
|
});
|
|
23307
|
-
function _temp$
|
|
23322
|
+
function _temp$h(i) {
|
|
23308
23323
|
return i.id;
|
|
23309
23324
|
}
|
|
23310
23325
|
function Board(t0) {
|
|
@@ -25240,7 +25255,8 @@ function FiltersDialog({
|
|
|
25240
25255
|
properties,
|
|
25241
25256
|
filterValues,
|
|
25242
25257
|
setFilterValues,
|
|
25243
|
-
forceFilter
|
|
25258
|
+
forceFilter,
|
|
25259
|
+
allowedFilters
|
|
25244
25260
|
}) {
|
|
25245
25261
|
const {
|
|
25246
25262
|
t
|
|
@@ -25252,15 +25268,14 @@ function FiltersDialog({
|
|
|
25252
25268
|
setLocalFilters(filterValues ?? {});
|
|
25253
25269
|
}
|
|
25254
25270
|
}, [open, filterValues]);
|
|
25255
|
-
const
|
|
25256
|
-
return Object.entries(properties).filter(([key
|
|
25257
|
-
|
|
25258
|
-
|
|
25259
|
-
|
|
25260
|
-
if (!baseProperty) return false;
|
|
25261
|
-
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;
|
|
25262
25276
|
});
|
|
25263
|
-
}, [properties, forceFilter]);
|
|
25277
|
+
}, [properties, allowedFilters, forceFilter]);
|
|
25278
|
+
const hasEditableFilterProperties = editableFilterProperties.length > 0;
|
|
25264
25279
|
const handleFilterChange = useCallback((propertyKey, value) => {
|
|
25265
25280
|
setLocalFilters((prev) => {
|
|
25266
25281
|
const newFilters = {
|
|
@@ -25292,22 +25307,26 @@ function FiltersDialog({
|
|
|
25292
25307
|
}));
|
|
25293
25308
|
}, []);
|
|
25294
25309
|
const isAnyFieldHidden = Object.values(hiddenFields).some((hidden_0) => hidden_0);
|
|
25295
|
-
const
|
|
25296
|
-
|
|
25297
|
-
|
|
25298
|
-
|
|
25299
|
-
|
|
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;
|
|
25300
25319
|
const filterValue = localFilters[propertyKey_1];
|
|
25301
25320
|
const setValue = (value_0) => handleFilterChange(propertyKey_1, value_0);
|
|
25302
|
-
if (
|
|
25303
|
-
return /* @__PURE__ */ jsx(ReferenceFilterField, { value: filterValue, setValue, name: propertyKey_1, isArray, path:
|
|
25304
|
-
} else if (
|
|
25305
|
-
const enumValues =
|
|
25306
|
-
return /* @__PURE__ */ jsx(StringNumberFilterField, { value: filterValue, setValue, name: propertyKey_1, dataType:
|
|
25307
|
-
} else if (
|
|
25308
|
-
return /* @__PURE__ */ jsx(BooleanFilterField, { value: filterValue, setValue, name: propertyKey_1, title:
|
|
25309
|
-
} else if (
|
|
25310
|
-
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 });
|
|
25311
25330
|
}
|
|
25312
25331
|
return null;
|
|
25313
25332
|
}, [localFilters, handleFilterChange, hiddenFields, setHiddenForField]);
|
|
@@ -25316,23 +25335,25 @@ function FiltersDialog({
|
|
|
25316
25335
|
/* @__PURE__ */ jsx(Typography, { variant: "h6", children: t("filters") }),
|
|
25317
25336
|
activeFilterCount > 0 && /* @__PURE__ */ jsx("span", { className: "ml-2 px-2 py-0.5 text-xs rounded-full bg-primary text-white", children: activeFilterCount })
|
|
25318
25337
|
] }),
|
|
25319
|
-
/* @__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) => {
|
|
25320
25339
|
const hasFilter = propertyKey_2 in localFilters;
|
|
25321
25340
|
return /* @__PURE__ */ jsxs("tr", { className: cls(index > 0 && "border-t", defaultBorderMixin), children: [
|
|
25322
|
-
/* @__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:
|
|
25323
|
-
/* @__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) })
|
|
25324
25343
|
] }, propertyKey_2);
|
|
25325
25344
|
}) }) }) }),
|
|
25326
25345
|
/* @__PURE__ */ jsxs(DialogActions, { children: [
|
|
25327
25346
|
/* @__PURE__ */ jsx(Button, { variant: "text", onClick: handleClearAll, disabled: activeFilterCount === 0, children: t("clear") }),
|
|
25328
25347
|
/* @__PURE__ */ jsx("div", { className: "flex-grow" }),
|
|
25329
|
-
/* @__PURE__ */
|
|
25330
|
-
|
|
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
|
+
] })
|
|
25331
25352
|
] })
|
|
25332
25353
|
] });
|
|
25333
25354
|
}
|
|
25334
25355
|
function EntityCollectionViewStartActions(t0) {
|
|
25335
|
-
const $ = c(
|
|
25356
|
+
const $ = c(37);
|
|
25336
25357
|
const {
|
|
25337
25358
|
collection,
|
|
25338
25359
|
relativePath,
|
|
@@ -25396,34 +25417,36 @@ function EntityCollectionViewStartActions(t0) {
|
|
|
25396
25417
|
t3 = $[13];
|
|
25397
25418
|
}
|
|
25398
25419
|
const actionProps = t3;
|
|
25420
|
+
const hasAnyAllowedFilters = !tableController.allowedFilters || tableController.allowedFilters.length > 0;
|
|
25399
25421
|
let t4;
|
|
25400
|
-
if ($[14] !== activeFilterCount || $[15] !==
|
|
25401
|
-
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: [
|
|
25402
25424
|
t("filters"),
|
|
25403
25425
|
activeFilterCount > 0 ? ` (${activeFilterCount})` : ""
|
|
25404
25426
|
] }) : /* @__PURE__ */ jsx(IconButton, { size: "small", onClick: () => setFiltersDialogOpen(true), className: cls(activeFilterCount > 0 && "text-primary"), children: /* @__PURE__ */ jsx(FilterListIcon, { size: "small" }) }) }) }, "filters_tooltip");
|
|
25405
25427
|
$[14] = activeFilterCount;
|
|
25406
|
-
$[15] =
|
|
25407
|
-
$[16] =
|
|
25408
|
-
$[17] =
|
|
25409
|
-
$[18] =
|
|
25410
|
-
$[19] =
|
|
25428
|
+
$[15] = hasAnyAllowedFilters;
|
|
25429
|
+
$[16] = largeLayout;
|
|
25430
|
+
$[17] = resolvedProperties;
|
|
25431
|
+
$[18] = t;
|
|
25432
|
+
$[19] = tableController.setFilterValues;
|
|
25433
|
+
$[20] = t4;
|
|
25411
25434
|
} else {
|
|
25412
|
-
t4 = $[
|
|
25435
|
+
t4 = $[20];
|
|
25413
25436
|
}
|
|
25414
25437
|
const filtersButton = t4;
|
|
25415
25438
|
const t5 = !collection.forceFilter;
|
|
25416
25439
|
let t6;
|
|
25417
|
-
if ($[
|
|
25440
|
+
if ($[21] !== t5 || $[22] !== tableController) {
|
|
25418
25441
|
t6 = /* @__PURE__ */ jsx(ClearFilterSortButton, { tableController, enabled: t5 }, "clear_filter");
|
|
25419
|
-
$[
|
|
25420
|
-
$[
|
|
25421
|
-
$[
|
|
25442
|
+
$[21] = t5;
|
|
25443
|
+
$[22] = tableController;
|
|
25444
|
+
$[23] = t6;
|
|
25422
25445
|
} else {
|
|
25423
|
-
t6 = $[
|
|
25446
|
+
t6 = $[23];
|
|
25424
25447
|
}
|
|
25425
25448
|
let actions;
|
|
25426
|
-
if ($[
|
|
25449
|
+
if ($[24] !== actionProps || $[25] !== filtersButton || $[26] !== plugins || $[27] !== t6) {
|
|
25427
25450
|
actions = [filtersButton, t6];
|
|
25428
25451
|
if (plugins) {
|
|
25429
25452
|
plugins.forEach((plugin, i) => {
|
|
@@ -25432,39 +25455,42 @@ function EntityCollectionViewStartActions(t0) {
|
|
|
25432
25455
|
}
|
|
25433
25456
|
});
|
|
25434
25457
|
}
|
|
25435
|
-
$[
|
|
25436
|
-
$[
|
|
25437
|
-
$[
|
|
25438
|
-
$[
|
|
25439
|
-
$[
|
|
25458
|
+
$[24] = actionProps;
|
|
25459
|
+
$[25] = filtersButton;
|
|
25460
|
+
$[26] = plugins;
|
|
25461
|
+
$[27] = t6;
|
|
25462
|
+
$[28] = actions;
|
|
25440
25463
|
} else {
|
|
25441
|
-
actions = $[
|
|
25464
|
+
actions = $[28];
|
|
25442
25465
|
}
|
|
25443
25466
|
let t7;
|
|
25444
|
-
if ($[
|
|
25445
|
-
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 });
|
|
25446
|
-
$[
|
|
25447
|
-
$[
|
|
25448
|
-
$[
|
|
25449
|
-
$[
|
|
25450
|
-
$[
|
|
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;
|
|
25451
25474
|
} else {
|
|
25452
|
-
t7 = $[
|
|
25475
|
+
t7 = $[33];
|
|
25453
25476
|
}
|
|
25454
25477
|
let t8;
|
|
25455
|
-
if ($[
|
|
25478
|
+
if ($[34] !== actions || $[35] !== t7) {
|
|
25456
25479
|
t8 = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
25457
25480
|
actions,
|
|
25458
25481
|
t7
|
|
25459
25482
|
] });
|
|
25460
|
-
$[
|
|
25461
|
-
$[
|
|
25462
|
-
$[
|
|
25483
|
+
$[34] = actions;
|
|
25484
|
+
$[35] = t7;
|
|
25485
|
+
$[36] = t8;
|
|
25463
25486
|
} else {
|
|
25464
|
-
t8 = $[
|
|
25487
|
+
t8 = $[36];
|
|
25465
25488
|
}
|
|
25466
25489
|
return t8;
|
|
25467
25490
|
}
|
|
25491
|
+
function _temp$g(key_0) {
|
|
25492
|
+
return key_0.toString();
|
|
25493
|
+
}
|
|
25468
25494
|
const collectionScrollCache = /* @__PURE__ */ new Map();
|
|
25469
25495
|
function useScrollRestoration() {
|
|
25470
25496
|
const updateCollectionScroll = ({
|
|
@@ -25523,7 +25549,12 @@ const EntityCollectionView$1 = React__default.memo(function EntityCollectionView
|
|
|
25523
25549
|
const scrollRestoration = useScrollRestoration();
|
|
25524
25550
|
const collection = useMemo(() => {
|
|
25525
25551
|
const userOverride = userConfigPersistence?.getCollectionConfig(fullPath);
|
|
25526
|
-
|
|
25552
|
+
if (!userOverride) return collectionProp;
|
|
25553
|
+
const {
|
|
25554
|
+
properties,
|
|
25555
|
+
...rest
|
|
25556
|
+
} = userOverride;
|
|
25557
|
+
return mergeDeep(collectionProp, rest);
|
|
25527
25558
|
}, [collectionProp, fullPath, userConfigPersistence?.getCollectionConfig]);
|
|
25528
25559
|
const openEntityMode = collection?.openEntityMode ?? DEFAULT_ENTITY_OPEN_MODE;
|
|
25529
25560
|
const collectionRef = React__default.useRef(collection);
|
|
@@ -25777,11 +25808,12 @@ const EntityCollectionView$1 = React__default.memo(function EntityCollectionView
|
|
|
25777
25808
|
collection,
|
|
25778
25809
|
path: fullPath,
|
|
25779
25810
|
propertyConfigs: customizationController.propertyConfigs,
|
|
25780
|
-
authController
|
|
25781
|
-
|
|
25811
|
+
authController,
|
|
25812
|
+
userConfigPersistence
|
|
25813
|
+
}), [collection, fullPath, userConfigPersistence]);
|
|
25782
25814
|
const hasEnumProperty = useMemo(() => {
|
|
25783
|
-
const
|
|
25784
|
-
return Object.values(
|
|
25815
|
+
const properties_0 = resolvedCollection.properties;
|
|
25816
|
+
return Object.values(properties_0).some((prop) => prop && prop.dataType === "string" && prop.enumValues);
|
|
25785
25817
|
}, [resolvedCollection.properties]);
|
|
25786
25818
|
const enabledViews = useMemo(() => {
|
|
25787
25819
|
const configured = collection.enabledViews ?? ["table", "cards", "kanban"];
|
|
@@ -25792,8 +25824,8 @@ const EntityCollectionView$1 = React__default.memo(function EntityCollectionView
|
|
|
25792
25824
|
}, [collection.enabledViews, hasEnumProperty]);
|
|
25793
25825
|
const kanbanPropertyOptions = useMemo(() => {
|
|
25794
25826
|
const options = [];
|
|
25795
|
-
const
|
|
25796
|
-
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)) {
|
|
25797
25829
|
const prop_0 = property_0;
|
|
25798
25830
|
if (prop_0 && prop_0.dataType === "string" && prop_0.enumValues) {
|
|
25799
25831
|
options.push({
|
|
@@ -27156,7 +27188,7 @@ function ReferenceWidget({
|
|
|
27156
27188
|
const onMultipleEntitiesSelected = useCallback((entities) => {
|
|
27157
27189
|
if (disabled) return;
|
|
27158
27190
|
if (onMultipleReferenceSelected) {
|
|
27159
|
-
const references = entities ? entities.map((e) => getReferenceFrom(e)) : null;
|
|
27191
|
+
const references = entities ? entities.filter(Boolean).map((e) => getReferenceFrom(e)) : null;
|
|
27160
27192
|
onMultipleReferenceSelected({
|
|
27161
27193
|
references,
|
|
27162
27194
|
entities
|
|
@@ -28096,7 +28128,14 @@ function useBuildNavigationController(props) {
|
|
|
28096
28128
|
if (!collections_0) return void 0;
|
|
28097
28129
|
const baseCollection = getCollectionByPathOrId(removeInitialAndTrailingSlashes(idOrPath), collections_0);
|
|
28098
28130
|
const userOverride = includeUserOverride ? userConfigPersistence?.getCollectionConfig(idOrPath) : void 0;
|
|
28099
|
-
|
|
28131
|
+
let overriddenCollection = baseCollection;
|
|
28132
|
+
if (baseCollection && userOverride) {
|
|
28133
|
+
const {
|
|
28134
|
+
properties,
|
|
28135
|
+
...rest
|
|
28136
|
+
} = userOverride;
|
|
28137
|
+
overriddenCollection = mergeDeep(baseCollection, rest);
|
|
28138
|
+
}
|
|
28100
28139
|
let result = overriddenCollection;
|
|
28101
28140
|
if (overriddenCollection) {
|
|
28102
28141
|
const subcollections = overriddenCollection.subcollections;
|
|
@@ -30037,7 +30076,7 @@ function useBuildSideDialogsController() {
|
|
|
30037
30076
|
replace: true,
|
|
30038
30077
|
state: {
|
|
30039
30078
|
base_location: baseLocation,
|
|
30040
|
-
panels: updatedPanels.map(_temp4$
|
|
30079
|
+
panels: updatedPanels.map(_temp4$2)
|
|
30041
30080
|
}
|
|
30042
30081
|
});
|
|
30043
30082
|
}
|
|
@@ -30135,7 +30174,7 @@ function _temp6$1(p_4) {
|
|
|
30135
30174
|
function _temp5$1(p_3) {
|
|
30136
30175
|
return p_3.key;
|
|
30137
30176
|
}
|
|
30138
|
-
function _temp4$
|
|
30177
|
+
function _temp4$2(p_2) {
|
|
30139
30178
|
return p_2.key;
|
|
30140
30179
|
}
|
|
30141
30180
|
function _temp3$2(p_1) {
|
|
@@ -32281,7 +32320,7 @@ const Scaffold = React__default.memo(function Scaffold2(props) {
|
|
|
32281
32320
|
const otherChildren = t3;
|
|
32282
32321
|
const includeDrawer = drawerChildren.length > 0;
|
|
32283
32322
|
const largeLayout = useLargeLayout();
|
|
32284
|
-
const [drawerOpen, setDrawerOpen] = React__default.useState(
|
|
32323
|
+
const [drawerOpen, setDrawerOpen] = React__default.useState(_temp4$1);
|
|
32285
32324
|
const [onHover, setOnHover] = React__default.useState(false);
|
|
32286
32325
|
let t4;
|
|
32287
32326
|
if ($[6] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
|
|
@@ -32303,6 +32342,10 @@ const Scaffold = React__default.memo(function Scaffold2(props) {
|
|
|
32303
32342
|
if ($[8] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
|
|
32304
32343
|
t6 = () => {
|
|
32305
32344
|
setDrawerOpen(true);
|
|
32345
|
+
try {
|
|
32346
|
+
localStorage.setItem("firecms_drawer_open", "true");
|
|
32347
|
+
} catch {
|
|
32348
|
+
}
|
|
32306
32349
|
};
|
|
32307
32350
|
$[8] = t6;
|
|
32308
32351
|
} else {
|
|
@@ -32313,6 +32356,10 @@ const Scaffold = React__default.memo(function Scaffold2(props) {
|
|
|
32313
32356
|
if ($[9] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
|
|
32314
32357
|
t7 = () => {
|
|
32315
32358
|
setDrawerOpen(false);
|
|
32359
|
+
try {
|
|
32360
|
+
localStorage.setItem("firecms_drawer_open", "false");
|
|
32361
|
+
} catch {
|
|
32362
|
+
}
|
|
32316
32363
|
};
|
|
32317
32364
|
$[9] = t7;
|
|
32318
32365
|
} else {
|
|
@@ -32665,6 +32712,13 @@ function _temp2$1(child_0) {
|
|
|
32665
32712
|
function _temp3$1(child_1) {
|
|
32666
32713
|
return child_1.type.componentType !== "Drawer" && child_1.type.componentType !== "AppBar";
|
|
32667
32714
|
}
|
|
32715
|
+
function _temp4$1() {
|
|
32716
|
+
try {
|
|
32717
|
+
return localStorage.getItem("firecms_drawer_open") === "true";
|
|
32718
|
+
} catch {
|
|
32719
|
+
return false;
|
|
32720
|
+
}
|
|
32721
|
+
}
|
|
32668
32722
|
const en = {
|
|
32669
32723
|
// ─── Form actions ────────────────────────────────────────────
|
|
32670
32724
|
save: "Save",
|
|
@@ -32802,8 +32856,8 @@ const en = {
|
|
|
32802
32856
|
// ─── Error states ─────────────────────────────────────────────
|
|
32803
32857
|
error: "Error",
|
|
32804
32858
|
error_uploading_file: "Error uploading file",
|
|
32805
|
-
error_deleting: "Error deleting",
|
|
32806
|
-
error_before_delete: "Error before delete",
|
|
32859
|
+
error_deleting: "Error deleting: {{message}}",
|
|
32860
|
+
error_before_delete: "Error before delete: {{message}}",
|
|
32807
32861
|
error_updating_asset: "Error updating asset",
|
|
32808
32862
|
error_deleting_asset: "Error deleting asset",
|
|
32809
32863
|
error_firestore_index: "A Firestore index is required for this query.",
|
|
@@ -33068,8 +33122,8 @@ const en = {
|
|
|
33068
33122
|
cms_users: "CMS Users",
|
|
33069
33123
|
roles_menu: "Roles",
|
|
33070
33124
|
project_settings: "Project settings",
|
|
33071
|
-
|
|
33072
|
-
|
|
33125
|
+
firestore_manager: "Firestore Manager",
|
|
33126
|
+
manage_your_firestore_data: "Manage your Firestore data",
|
|
33073
33127
|
// ─── FireCMS Cloud Login ──────────────────────────────────────
|
|
33074
33128
|
build_admin_panel_in_minutes: "Build Your Firebase Admin Panel in Minutes",
|
|
33075
33129
|
go_live_instantly: "Go live instantly:",
|
|
@@ -33140,10 +33194,18 @@ const en = {
|
|
|
33140
33194
|
auto_setup_collections_button: "Automatically set up collections",
|
|
33141
33195
|
auto_setup_collections_title: "Automatically set up collections?",
|
|
33142
33196
|
auto_setup_collections_desc: "This will automatically create collection configs for collections that are <b>NOT</b> already mapped",
|
|
33143
|
-
|
|
33197
|
+
setting_up_collections: "Setting up collections",
|
|
33198
|
+
setting_up_collection: "Setting up {{name}}",
|
|
33144
33199
|
no_collections_found_to_setup: "No collections found to setup.",
|
|
33145
33200
|
collections_have_been_setup: "Collections have been automatically setup.",
|
|
33146
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",
|
|
33147
33209
|
// --- Home Suggestions ---
|
|
33148
33210
|
add_your: "Add your",
|
|
33149
33211
|
database_collections: "database collections",
|
|
@@ -33471,8 +33533,8 @@ const es = {
|
|
|
33471
33533
|
// ─── Error states ─────────────────────────────────────────────
|
|
33472
33534
|
error: "Error",
|
|
33473
33535
|
error_uploading_file: "Error al subir archivo",
|
|
33474
|
-
error_deleting: "Error al eliminar",
|
|
33475
|
-
error_before_delete: "Error antes de eliminar",
|
|
33536
|
+
error_deleting: "Error al eliminar: {{message}}",
|
|
33537
|
+
error_before_delete: "Error antes de eliminar: {{message}}",
|
|
33476
33538
|
error_updating_asset: "Error al actualizar recurso",
|
|
33477
33539
|
error_deleting_asset: "Error al eliminar recurso",
|
|
33478
33540
|
error_firestore_index: "Se requiere un índice de Firestore para esta consulta.",
|
|
@@ -33739,8 +33801,8 @@ const es = {
|
|
|
33739
33801
|
cms_users: "Usuarios del CMS",
|
|
33740
33802
|
roles_menu: "Roles",
|
|
33741
33803
|
project_settings: "Ajustes del proyecto",
|
|
33742
|
-
|
|
33743
|
-
|
|
33804
|
+
firestore_manager: "Gestor de Firestore",
|
|
33805
|
+
manage_your_firestore_data: "Gestiona tus datos de Firestore",
|
|
33744
33806
|
// ─── FireCMS Cloud Login ──────────────────────────────────────
|
|
33745
33807
|
build_admin_panel_in_minutes: "Crea tu panel de administración de Firebase en minutos",
|
|
33746
33808
|
go_live_instantly: "En vivo al instante:",
|
|
@@ -33811,10 +33873,18 @@ const es = {
|
|
|
33811
33873
|
auto_setup_collections_button: "Configurar colecciones automáticamente",
|
|
33812
33874
|
auto_setup_collections_title: "¿Configurar colecciones automáticamente?",
|
|
33813
33875
|
auto_setup_collections_desc: "Esto creará automáticamente la configuración de las colecciones que <b>NO</b> estén mapeadas",
|
|
33814
|
-
|
|
33876
|
+
setting_up_collections: "Configurando colecciones",
|
|
33877
|
+
setting_up_collection: "Configurando {{name}}",
|
|
33815
33878
|
no_collections_found_to_setup: "No se encontraron colecciones para configurar",
|
|
33816
33879
|
collections_have_been_setup: "¡Tus colecciones han sido configuradas!",
|
|
33817
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",
|
|
33818
33888
|
// --- Home Suggestions ---
|
|
33819
33889
|
add_your: "Añade tus",
|
|
33820
33890
|
database_collections: "colecciones de base de datos",
|
|
@@ -34144,8 +34214,8 @@ const de = {
|
|
|
34144
34214
|
// ─── Error states ─────────────────────────────────────────────
|
|
34145
34215
|
error: "Fehler",
|
|
34146
34216
|
error_uploading_file: "Fehler beim Hochladen der Datei",
|
|
34147
|
-
error_deleting: "Fehler beim Löschen",
|
|
34148
|
-
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}}",
|
|
34149
34219
|
error_updating_asset: "Fehler beim Aktualisieren des Assets",
|
|
34150
34220
|
error_deleting_asset: "Fehler beim Löschen des Assets",
|
|
34151
34221
|
error_firestore_index: "Für diese Abfrage ist ein Firestore-Index erforderlich.",
|
|
@@ -34410,8 +34480,8 @@ const de = {
|
|
|
34410
34480
|
cms_users: "CMS-Benutzer",
|
|
34411
34481
|
roles_menu: "Rollen",
|
|
34412
34482
|
project_settings: "Projekteinstellungen",
|
|
34413
|
-
|
|
34414
|
-
|
|
34483
|
+
firestore_manager: "Firestore-Manager",
|
|
34484
|
+
manage_your_firestore_data: "Deine Firestore-Daten verwalten",
|
|
34415
34485
|
// ─── FireCMS Cloud Login ──────────────────────────────────────
|
|
34416
34486
|
build_admin_panel_in_minutes: "Erstellen Sie Ihr Firebase Admin Panel in wenigen Minuten",
|
|
34417
34487
|
go_live_instantly: "Sofort live gehen:",
|
|
@@ -34482,10 +34552,18 @@ const de = {
|
|
|
34482
34552
|
auto_setup_collections_button: "Sammlungen automatisch einrichten",
|
|
34483
34553
|
auto_setup_collections_title: "Sammlungen automatisch einrichten?",
|
|
34484
34554
|
auto_setup_collections_desc: "Dadurch werden automatisch Sammlungskonfigurationen für Sammlungen erstellt, die noch <b>NICHT</b> zugeordnet sind.",
|
|
34485
|
-
|
|
34555
|
+
setting_up_collections: "Sammlungen werden eingerichtet",
|
|
34556
|
+
setting_up_collection: "{{name}} wird eingerichtet",
|
|
34486
34557
|
no_collections_found_to_setup: "Keine einzurichtenden Sammlungen gefunden",
|
|
34487
34558
|
collections_have_been_setup: "Sammlungen wurden automatisch eingerichtet",
|
|
34488
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",
|
|
34489
34567
|
add_your: "Fügen Sie Ihre",
|
|
34490
34568
|
database_collections: "Datenbanksammlungen",
|
|
34491
34569
|
to_firecms: "zu FireCMS hinzu",
|
|
@@ -34813,8 +34891,8 @@ const fr = {
|
|
|
34813
34891
|
// ─── Error states ─────────────────────────────────────────────
|
|
34814
34892
|
error: "Erreur",
|
|
34815
34893
|
error_uploading_file: "Erreur lors du téléchargement du fichier",
|
|
34816
|
-
error_deleting: "Erreur lors de la suppression",
|
|
34817
|
-
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}}",
|
|
34818
34896
|
error_updating_asset: "Erreur lors de la mise à jour de l'actif",
|
|
34819
34897
|
error_deleting_asset: "Erreur lors de la suppression de l'actif",
|
|
34820
34898
|
error_firestore_index: "Un index Firestore est requis pour cette requête.",
|
|
@@ -35079,8 +35157,8 @@ const fr = {
|
|
|
35079
35157
|
cms_users: "Utilisateurs du CMS",
|
|
35080
35158
|
roles_menu: "Rôles",
|
|
35081
35159
|
project_settings: "Paramètres du projet",
|
|
35082
|
-
|
|
35083
|
-
|
|
35160
|
+
firestore_manager: "Gestionnaire Firestore",
|
|
35161
|
+
manage_your_firestore_data: "Gérez vos données Firestore",
|
|
35084
35162
|
// ─── FireCMS Cloud Login ──────────────────────────────────────
|
|
35085
35163
|
build_admin_panel_in_minutes: "Créez votre panneau d'administration Firebase en quelques minutes",
|
|
35086
35164
|
go_live_instantly: "Mise en ligne immédiate :",
|
|
@@ -35151,10 +35229,18 @@ const fr = {
|
|
|
35151
35229
|
auto_setup_collections_button: "Configurer les collections automatiquement",
|
|
35152
35230
|
auto_setup_collections_title: "Configurer les collections automatiquement ?",
|
|
35153
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",
|
|
35154
|
-
|
|
35232
|
+
setting_up_collections: "Configuration des collections",
|
|
35233
|
+
setting_up_collection: "Configuration de {{name}}",
|
|
35155
35234
|
no_collections_found_to_setup: "Aucune collection à configurer trouvée",
|
|
35156
35235
|
collections_have_been_setup: "Les collections ont été configurées",
|
|
35157
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",
|
|
35158
35244
|
add_your: "Ajoutez vos",
|
|
35159
35245
|
database_collections: "collections de base de données",
|
|
35160
35246
|
to_firecms: "à FireCMS",
|
|
@@ -35482,8 +35568,8 @@ const it = {
|
|
|
35482
35568
|
// ─── Error states ─────────────────────────────────────────────
|
|
35483
35569
|
error: "Errore",
|
|
35484
35570
|
error_uploading_file: "Errore durante il caricamento del file",
|
|
35485
|
-
error_deleting: "Errore durante l'eliminazione",
|
|
35486
|
-
error_before_delete: "Errore prima dell'eliminazione",
|
|
35571
|
+
error_deleting: "Errore durante l'eliminazione: {{message}}",
|
|
35572
|
+
error_before_delete: "Errore prima dell'eliminazione: {{message}}",
|
|
35487
35573
|
error_updating_asset: "Errore durante l'aggiornamento dell'asset",
|
|
35488
35574
|
error_deleting_asset: "Errore durante l'eliminazione dell'asset",
|
|
35489
35575
|
error_firestore_index: "Per questa query è richiesto un indice Firestore.",
|
|
@@ -35748,8 +35834,8 @@ const it = {
|
|
|
35748
35834
|
cms_users: "Utenti CMS",
|
|
35749
35835
|
roles_menu: "Ruoli",
|
|
35750
35836
|
project_settings: "Impostazioni del progetto",
|
|
35751
|
-
|
|
35752
|
-
|
|
35837
|
+
firestore_manager: "Gestore Firestore",
|
|
35838
|
+
manage_your_firestore_data: "Gestisci i tuoi dati Firestore",
|
|
35753
35839
|
// ─── FireCMS Cloud Login ──────────────────────────────────────
|
|
35754
35840
|
build_admin_panel_in_minutes: "Crea il tuo pannello di amministrazione Firebase in pochi minuti",
|
|
35755
35841
|
go_live_instantly: "Online in un istante:",
|
|
@@ -35820,10 +35906,18 @@ const it = {
|
|
|
35820
35906
|
auto_setup_collections_button: "Configura le collezioni automaticamente",
|
|
35821
35907
|
auto_setup_collections_title: "Configurazione automatica delle collezioni",
|
|
35822
35908
|
auto_setup_collections_desc: "Configura le collezioni automaticamente in base ai dati Firestore esistenti. Lascia che FireCMS configuri il CMS perfetto per te.",
|
|
35823
|
-
|
|
35909
|
+
setting_up_collections: "Configurazione delle collezioni",
|
|
35910
|
+
setting_up_collection: "Configurazione di {{name}}",
|
|
35824
35911
|
no_collections_found_to_setup: "Nessuna collezione trovata da configurare",
|
|
35825
35912
|
collections_have_been_setup: "Le collezioni sono state configurate",
|
|
35826
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",
|
|
35827
35921
|
add_your: "Aggiungi le tue",
|
|
35828
35922
|
database_collections: "collezioni del database",
|
|
35829
35923
|
to_firecms: "a FireCMS",
|
|
@@ -36151,8 +36245,8 @@ const hi = {
|
|
|
36151
36245
|
// ─── Error states ─────────────────────────────────────────────
|
|
36152
36246
|
error: "त्रुटि",
|
|
36153
36247
|
error_uploading_file: "फ़ाइल अपलोड करने में त्रुटि",
|
|
36154
|
-
error_deleting: "हटाने में
|
|
36155
|
-
error_before_delete: "हटाने से पहले
|
|
36248
|
+
error_deleting: "हटाने में त्रुटि: {{message}}",
|
|
36249
|
+
error_before_delete: "हटाने से पहले त्रुटि: {{message}}",
|
|
36156
36250
|
error_updating_asset: "एसेट अपडेट करने में त्रुटि",
|
|
36157
36251
|
error_deleting_asset: "एसेट हटाने में त्रुटि",
|
|
36158
36252
|
error_firestore_index: "इस क्वेरी के लिए Firestore इंडेक्स आवश्यक है।",
|
|
@@ -36417,8 +36511,8 @@ const hi = {
|
|
|
36417
36511
|
cms_users: "CMS उपयोगकर्ता",
|
|
36418
36512
|
roles_menu: "भूमिकाएँ",
|
|
36419
36513
|
project_settings: "परियोजना सेटिंग",
|
|
36420
|
-
|
|
36421
|
-
|
|
36514
|
+
firestore_manager: "Firestore मैनेजर",
|
|
36515
|
+
manage_your_firestore_data: "अपने Firestore डेटा का प्रबंधन करें",
|
|
36422
36516
|
// ─── FireCMS Cloud Login ──────────────────────────────────────
|
|
36423
36517
|
build_admin_panel_in_minutes: "मिनटों में अपना Firebase एडमिन पैनल बनाएं",
|
|
36424
36518
|
go_live_instantly: "तुरंत लाइव जाएं:",
|
|
@@ -36489,10 +36583,18 @@ const hi = {
|
|
|
36489
36583
|
auto_setup_collections_button: "संग्रहों को स्वचालित रूप से सेट करें",
|
|
36490
36584
|
auto_setup_collections_title: "संग्रहों की स्वचालित सेटअप",
|
|
36491
36585
|
auto_setup_collections_desc: "अपने मौजूदा Firestore डेटा के आधार पर संग्रहों को स्वचालित रूप से सेट करें। FireCMS को आपके लिए परफेक्ट CMS कॉन्फ़िगर करने दें।",
|
|
36492
|
-
|
|
36586
|
+
setting_up_collections: "संग्रह सेट किए जा रहे हैं",
|
|
36587
|
+
setting_up_collection: "{{name}} सेट किया जा रहा है",
|
|
36493
36588
|
no_collections_found_to_setup: "सेट करने के लिए कोई संग्रह नहीं मिला",
|
|
36494
36589
|
collections_have_been_setup: "संग्रहों को सेट कर दिया गया है",
|
|
36495
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",
|
|
36496
36598
|
add_your: "अपने",
|
|
36497
36599
|
database_collections: "डेटाबेस संग्रह",
|
|
36498
36600
|
to_firecms: "को FireCMS में जोड़ें",
|
|
@@ -36820,8 +36922,8 @@ const pt = {
|
|
|
36820
36922
|
// ─── Error states ─────────────────────────────────────────────
|
|
36821
36923
|
error: "Erro",
|
|
36822
36924
|
error_uploading_file: "Erro ao carregar ficheiro",
|
|
36823
|
-
error_deleting: "Erro ao eliminar",
|
|
36824
|
-
error_before_delete: "Erro antes de eliminar",
|
|
36925
|
+
error_deleting: "Erro ao eliminar: {{message}}",
|
|
36926
|
+
error_before_delete: "Erro antes de eliminar: {{message}}",
|
|
36825
36927
|
error_updating_asset: "Erro ao atualizar recurso",
|
|
36826
36928
|
error_deleting_asset: "Erro ao eliminar recurso",
|
|
36827
36929
|
error_firestore_index: "É necessário um índice Firestore para esta consulta.",
|
|
@@ -37086,8 +37188,8 @@ const pt = {
|
|
|
37086
37188
|
cms_users: "Utilizadores do CMS",
|
|
37087
37189
|
roles_menu: "Funções",
|
|
37088
37190
|
project_settings: "Definições do projeto",
|
|
37089
|
-
|
|
37090
|
-
|
|
37191
|
+
firestore_manager: "Gerenciador do Firestore",
|
|
37192
|
+
manage_your_firestore_data: "Gerencie os seus dados do Firestore",
|
|
37091
37193
|
// ─── FireCMS Cloud Login ──────────────────────────────────────
|
|
37092
37194
|
build_admin_panel_in_minutes: "Construa o Seu Painel de Administração Firebase em Minutos",
|
|
37093
37195
|
go_live_instantly: "Entre em produção instantaneamente:",
|
|
@@ -37158,10 +37260,18 @@ const pt = {
|
|
|
37158
37260
|
auto_setup_collections_button: "Configurar coleções automaticamente",
|
|
37159
37261
|
auto_setup_collections_title: "Configurar coleções automaticamente?",
|
|
37160
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",
|
|
37161
|
-
|
|
37263
|
+
setting_up_collections: "Configurando coleções",
|
|
37264
|
+
setting_up_collection: "Configurando {{name}}",
|
|
37162
37265
|
no_collections_found_to_setup: "Nenhuma coleção encontrada para configurar.",
|
|
37163
37266
|
collections_have_been_setup: "As coleções foram configuradas automaticamente.",
|
|
37164
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",
|
|
37165
37275
|
// --- Home Suggestions ---
|
|
37166
37276
|
add_your: "Adicione as suas",
|
|
37167
37277
|
database_collections: "coleções da base de dados",
|
|
@@ -42199,6 +42309,7 @@ export {
|
|
|
42199
42309
|
hydrateRegExp,
|
|
42200
42310
|
iconSynonyms,
|
|
42201
42311
|
iconsSearch,
|
|
42312
|
+
isDataTypeFilterable,
|
|
42202
42313
|
isDefaultFieldConfigId,
|
|
42203
42314
|
isEmptyObject,
|
|
42204
42315
|
isEnumValueDisabled,
|