utopia-ui 3.0.0-alpha.214 → 3.0.0-alpha.216

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/index.js CHANGED
@@ -962,16 +962,16 @@ var DialogModal = function (_a) {
962
962
 
963
963
  function HeaderView(_a) {
964
964
  var _this = this;
965
- var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
966
- var item = _a.item, api = _a.api, editCallback = _a.editCallback, deleteCallback = _a.deleteCallback, setPositionCallback = _a.setPositionCallback, itemNameField = _a.itemNameField, itemSubnameField = _a.itemSubnameField, itemAvatarField = _a.itemAvatarField, loading = _a.loading, _m = _a.hideMenu, hideMenu = _m === void 0 ? false : _m, _o = _a.big, big = _o === void 0 ? false : _o, _p = _a.truncateSubname, truncateSubname = _p === void 0 ? true : _p, _q = _a.hideSubname, hideSubname = _q === void 0 ? false : _q, _r = _a.showAddress, showAddress = _r === void 0 ? false : _r;
967
- var _s = React.useState(false), modalOpen = _s[0], setModalOpen = _s[1];
965
+ var _b, _c, _d, _e, _f, _g, _h, _j, _k;
966
+ var item = _a.item, api = _a.api, editCallback = _a.editCallback, deleteCallback = _a.deleteCallback, setPositionCallback = _a.setPositionCallback, itemNameField = _a.itemNameField, itemSubnameField = _a.itemSubnameField, itemAvatarField = _a.itemAvatarField, loading = _a.loading, _l = _a.hideMenu, hideMenu = _l === void 0 ? false : _l, _m = _a.big, big = _m === void 0 ? false : _m, _o = _a.truncateSubname, truncateSubname = _o === void 0 ? true : _o, _p = _a.hideSubname, hideSubname = _p === void 0 ? false : _p, _q = _a.showAddress, showAddress = _q === void 0 ? false : _q;
967
+ var _r = React.useState(false), modalOpen = _r[0], setModalOpen = _r[1];
968
968
  var hasUserPermission = useHasUserPermission();
969
969
  var navigate = useNavigate();
970
970
  var assetsApi = useAssetApi();
971
971
  var avatar = itemAvatarField && getValue(item, itemAvatarField) ? assetsApi.url + getValue(item, itemAvatarField) + "".concat(big ? "?width=160&heigth=160" : "?width=80&heigth=80") : ((_b = item.layer) === null || _b === void 0 ? void 0 : _b.itemAvatarField) && item && getValue(item, (_c = item.layer) === null || _c === void 0 ? void 0 : _c.itemAvatarField) && assetsApi.url + getValue(item, (_d = item.layer) === null || _d === void 0 ? void 0 : _d.itemAvatarField) + "".concat(big ? "?width=160&heigth=160" : "?width=80&heigth=80");
972
972
  var title = itemNameField ? getValue(item, itemNameField) : ((_e = item.layer) === null || _e === void 0 ? void 0 : _e.itemNameField) && item && getValue(item, (_f = item.layer) === null || _f === void 0 ? void 0 : _f.itemNameField);
973
973
  var subtitle = itemSubnameField ? getValue(item, itemSubnameField) : ((_g = item.layer) === null || _g === void 0 ? void 0 : _g.itemSubnameField) && item && getValue(item, (_h = item.layer) === null || _h === void 0 ? void 0 : _h.itemSubnameField);
974
- var _t = React.useState(""), address = _t[0]; _t[1];
974
+ var _s = React.useState(""), address = _s[0]; _s[1];
975
975
  var params = new URLSearchParams(window.location.search);
976
976
  var openDeleteModal = function (event) { return __awaiter(_this, void 0, void 0, function () {
977
977
  return __generator(this, function (_a) {
@@ -983,7 +983,7 @@ function HeaderView(_a) {
983
983
  return (jsxs(Fragment, { children: [jsxs("div", __assign({ className: 'tw-flex tw-flex-row' }, { children: [jsx("div", __assign({ className: "tw-grow tw-max-w-[calc(100%-60px)] }" }, { children: jsxs("div", __assign({ className: "flex items-center" }, { children: [avatar && (jsx("div", __assign({ className: "tw-avatar" }, { children: jsx("div", __assign({ className: "".concat(big ? "tw-w-20" : "tw-w-10", " tw-inline tw-items-center tw-justify-center overflow-hidden") }, { children: jsx("img", { className: "tw-w-full tw-h-full tw-object-cover tw-rounded-full", src: avatar, alt: item.name + " logo" }) })) }))), jsxs("div", __assign({ className: "".concat(avatar ? "tw-ml-2" : "", " tw-overflow-hidden") }, { children: [jsx("div", __assign({ className: "".concat(big ? "xl:tw-text-3xl tw-text-2xl" : "tw-text-xl", " tw-font-semibold tw-truncate") }, { children: title })), showAddress && address && !hideSubname && jsx("div", __assign({ className: "tw-text-xs tw-text-gray-500 ".concat(truncateSubname && "tw-truncate") }, { children: address })), subtitle && !hideSubname && jsx("div", __assign({ className: "tw-text-xs tw-text-gray-500 ".concat(truncateSubname && "tw-truncate") }, { children: subtitle }))] }))] })) })), jsx("div", __assign({ onClick: function (e) { return e.stopPropagation(); }, className: "".concat(big ? "tw-mt-5" : "tw-mt-1") }, { children: ((api === null || api === void 0 ? void 0 : api.deleteItem) || ((_k = (_j = item.layer) === null || _j === void 0 ? void 0 : _j.api) === null || _k === void 0 ? void 0 : _k.updateItem))
984
984
  && (hasUserPermission(api === null || api === void 0 ? void 0 : api.collectionName, "delete", item) || hasUserPermission(api === null || api === void 0 ? void 0 : api.collectionName, "update", item))
985
985
  && !hideMenu &&
986
- jsxs("div", __assign({ className: "tw-dropdown tw-dropdown-bottom" }, { children: [jsx("label", __assign({ tabIndex: 0, className: "tw-bg-base-100 tw-btn tw-m-1 tw-leading-3 tw-border-none tw-min-h-0 tw-h-6" }, { children: jsx("svg", __assign({ xmlns: "http://www.w3.org/2000/svg", className: "tw-h-5 tw-w-5", viewBox: "0 0 20 20", fill: "currentColor" }, { children: jsx("path", { d: "M10 6a2 2 0 110-4 2 2 0 010 4zM10 12a2 2 0 110-4 2 2 0 010 4zM10 18a2 2 0 110-4 2 2 0 010 4z" }) })) })), jsxs("ul", __assign({ tabIndex: 0, className: "tw-dropdown-content tw-menu tw-p-2 tw-shadow tw-bg-base-100 tw-rounded-box tw-z-1000" }, { children: [(((api === null || api === void 0 ? void 0 : api.updateItem) && hasUserPermission(api.collectionName, "update", item)) || ((_l = item.layer) === null || _l === void 0 ? void 0 : _l.customEditLink)) && editCallback && jsx("li", { children: jsx("a", __assign({ className: "!tw-text-base-content tw-cursor-pointer", onClick: function (e) { var _a; return ((_a = item.layer) === null || _a === void 0 ? void 0 : _a.customEditLink) ? navigate("".concat(item.layer.customEditLink).concat(item.layer.customEditParameter ? "/".concat(getValue(item, item.layer.customEditParameter)).concat(params && "?" + params) : "", " ")) : editCallback(e); } }, { children: jsx("svg", __assign({ xmlns: "http://www.w3.org/2000/svg", className: "tw-h-5 tw-w-5", viewBox: "0 0 20 20", fill: "currentColor" }, { children: jsx("path", { d: "M13.586 3.586a2 2 0 112.828 2.828l-.793.793-2.828-2.828.793-.793zM11.379 5.793L3 14.172V17h2.828l8.38-8.379-2.83-2.828z" }) })) })) }), (((api === null || api === void 0 ? void 0 : api.updateItem) && hasUserPermission(api.collectionName, "update", item))) && setPositionCallback && jsx("li", { children: jsx("a", __assign({ className: "!tw-text-base-content tw-cursor-pointer", onClick: setPositionCallback }, { children: jsx("svg", __assign({ stroke: "currentColor", fill: "currentColor", strokeWidth: "0", viewBox: "0 0 512 512", className: "tw-w-5 tw-h-5", xmlns: "http://www.w3.org/2000/svg" }, { children: jsx("path", { d: "M256 0c17.7 0 32 14.3 32 32V42.4c93.7 13.9 167.7 88 181.6 181.6H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H469.6c-13.9 93.7-88 167.7-181.6 181.6V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V469.6C130.3 455.7 56.3 381.7 42.4 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H42.4C56.3 130.3 130.3 56.3 224 42.4V32c0-17.7 14.3-32 32-32zM107.4 288c12.5 58.3 58.4 104.1 116.6 116.6V384c0-17.7 14.3-32 32-32s32 14.3 32 32v20.6c58.3-12.5 104.1-58.4 116.6-116.6H384c-17.7 0-32-14.3-32-32s14.3-32 32-32h20.6C392.1 165.7 346.3 119.9 288 107.4V128c0 17.7-14.3 32-32 32s-32-14.3-32-32V107.4C165.7 119.9 119.9 165.7 107.4 224H128c17.7 0 32 14.3 32 32s-14.3 32-32 32H107.4zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z" }) })) })) }), (api === null || api === void 0 ? void 0 : api.deleteItem) && hasUserPermission(api.collectionName, "delete", item) && deleteCallback && jsx("li", { children: jsx("a", __assign({ className: 'tw-cursor-pointer !tw-text-error', onClick: openDeleteModal }, { children: loading ? jsx("span", { className: "tw-loading tw-loading-spinner tw-loading-sm" })
986
+ jsxs("div", __assign({ className: "tw-dropdown tw-dropdown-bottom" }, { children: [jsx("label", __assign({ tabIndex: 0, className: "tw-bg-base-100 tw-btn tw-m-1 tw-leading-3 tw-border-none tw-min-h-0 tw-h-6" }, { children: jsx("svg", __assign({ xmlns: "http://www.w3.org/2000/svg", className: "tw-h-5 tw-w-5", viewBox: "0 0 20 20", fill: "currentColor" }, { children: jsx("path", { d: "M10 6a2 2 0 110-4 2 2 0 010 4zM10 12a2 2 0 110-4 2 2 0 010 4zM10 18a2 2 0 110-4 2 2 0 010 4z" }) })) })), jsxs("ul", __assign({ tabIndex: 0, className: "tw-dropdown-content tw-menu tw-p-2 tw-shadow tw-bg-base-100 tw-rounded-box tw-z-1000" }, { children: [(((api === null || api === void 0 ? void 0 : api.updateItem) && hasUserPermission(api.collectionName, "update", item))) && editCallback && jsx("li", { children: jsx("a", __assign({ className: "!tw-text-base-content tw-cursor-pointer", onClick: function (e) { var _a; return ((_a = item.layer) === null || _a === void 0 ? void 0 : _a.customEditLink) ? navigate("".concat(item.layer.customEditLink).concat(item.layer.customEditParameter ? "/".concat(getValue(item, item.layer.customEditParameter)).concat(params && "?" + params) : "", " ")) : editCallback(e); } }, { children: jsx("svg", __assign({ xmlns: "http://www.w3.org/2000/svg", className: "tw-h-5 tw-w-5", viewBox: "0 0 20 20", fill: "currentColor" }, { children: jsx("path", { d: "M13.586 3.586a2 2 0 112.828 2.828l-.793.793-2.828-2.828.793-.793zM11.379 5.793L3 14.172V17h2.828l8.38-8.379-2.83-2.828z" }) })) })) }), (((api === null || api === void 0 ? void 0 : api.updateItem) && hasUserPermission(api.collectionName, "update", item))) && setPositionCallback && jsx("li", { children: jsx("a", __assign({ className: "!tw-text-base-content tw-cursor-pointer", onClick: setPositionCallback }, { children: jsx("svg", __assign({ stroke: "currentColor", fill: "currentColor", strokeWidth: "0", viewBox: "0 0 512 512", className: "tw-w-5 tw-h-5", xmlns: "http://www.w3.org/2000/svg" }, { children: jsx("path", { d: "M256 0c17.7 0 32 14.3 32 32V42.4c93.7 13.9 167.7 88 181.6 181.6H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H469.6c-13.9 93.7-88 167.7-181.6 181.6V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V469.6C130.3 455.7 56.3 381.7 42.4 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H42.4C56.3 130.3 130.3 56.3 224 42.4V32c0-17.7 14.3-32 32-32zM107.4 288c12.5 58.3 58.4 104.1 116.6 116.6V384c0-17.7 14.3-32 32-32s32 14.3 32 32v20.6c58.3-12.5 104.1-58.4 116.6-116.6H384c-17.7 0-32-14.3-32-32s14.3-32 32-32h20.6C392.1 165.7 346.3 119.9 288 107.4V128c0 17.7-14.3 32-32 32s-32-14.3-32-32V107.4C165.7 119.9 119.9 165.7 107.4 224H128c17.7 0 32 14.3 32 32s-14.3 32-32 32H107.4zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z" }) })) })) }), (api === null || api === void 0 ? void 0 : api.deleteItem) && hasUserPermission(api.collectionName, "delete", item) && deleteCallback && jsx("li", { children: jsx("a", __assign({ className: 'tw-cursor-pointer !tw-text-error', onClick: openDeleteModal }, { children: loading ? jsx("span", { className: "tw-loading tw-loading-spinner tw-loading-sm" })
987
987
  :
988
988
  jsx("svg", __assign({ xmlns: "http://www.w3.org/2000/svg", className: "tw-h-5 tw-w-5", viewBox: "0 0 20 20", fill: "currentColor" }, { children: jsx("path", { fillRule: "evenodd", d: "M9 2a1 1 0 00-.894.553L7.382 4H4a1 1 0 000 2v10a2 2 0 002 2h8a2 2 0 002-2V6a1 1 0 100-2h-3.382l-.724-1.447A1 1 0 0011 2H9zM7 8a1 1 0 012 0v6a1 1 0 11-2 0V8zm5-1a1 1 0 00-1 1v6a1 1 0 102 0V8a1 1 0 00-1-1z", clipRule: "evenodd" }) })) })) })] }))] })) }))] })), jsx(DialogModal, __assign({ isOpened: modalOpen, title: "Are you sure?", showCloseButton: false, onClose: function () { return (setModalOpen(false)); } }, { children: jsxs("div", __assign({ onClick: function (e) { return e.stopPropagation(); } }, { children: [jsxs("span", { children: ["Do you want to delete ", jsx("b", { children: item.name }), "?"] }), jsx("div", __assign({ className: "tw-grid" }, { children: jsxs("div", __assign({ className: "tw-flex tw-justify-between" }, { children: [jsx("label", __assign({ className: "tw-btn tw-mt-4 tw-btn-error", onClick: function (e) { deleteCallback(e); setModalOpen(false); } }, { children: "Yes" })), jsx("label", __assign({ className: "tw-btn tw-mt-4", onClick: function () { return setModalOpen(false); } }, { children: "No" }))] })) }))] })) }))] }));
989
989
  }
@@ -2858,35 +2858,38 @@ function usePermissionsManager(initialPermissions) {
2858
2858
  });
2859
2859
  }, []);
2860
2860
  var hasUserPermission = useCallback(function (collectionName, action, item, layer) {
2861
+ var evaluateCondition = function (condition) {
2862
+ var _a, _b, _c;
2863
+ if (((_a = condition.user_created) === null || _a === void 0 ? void 0 : _a._eq) === "$CURRENT_USER") {
2864
+ return ((_b = item === null || item === void 0 ? void 0 : item.user_created) === null || _b === void 0 ? void 0 : _b.id) === (user === null || user === void 0 ? void 0 : user.id);
2865
+ }
2866
+ if (((_c = condition.public_edit) === null || _c === void 0 ? void 0 : _c._eq) === true) {
2867
+ return (item === null || item === void 0 ? void 0 : item.public_edit) === true;
2868
+ }
2869
+ return false;
2870
+ };
2871
+ var evaluatePermissions = function (permissionConditions) {
2872
+ var _a;
2873
+ return (_a = permissionConditions._and) === null || _a === void 0 ? void 0 : _a.every(function (andCondition) {
2874
+ return andCondition._or
2875
+ ? andCondition._or.some(function (orCondition) { return evaluateCondition(orCondition); })
2876
+ : evaluateCondition(andCondition);
2877
+ });
2878
+ };
2861
2879
  if (permissions.length === 0)
2862
2880
  return true;
2863
2881
  else if (user && user.role === adminRole)
2864
2882
  return true;
2865
2883
  else {
2866
2884
  return permissions.some(function (p) {
2867
- var _a, _b, _c;
2885
+ var _a;
2868
2886
  return p.action === action &&
2869
2887
  p.collection === collectionName &&
2870
- p.role === (user === null || user === void 0 ? void 0 : user.role) &&
2871
- (
2872
- // Wenn 'item' nicht gesetzt ist, ignorieren wir die Überprüfung von 'user_created'
2873
- !item || !p.permissions || !p.permissions._and ||
2874
- p.permissions._and.some(function (condition) {
2875
- var _a;
2876
- return condition.user_created &&
2877
- condition.user_created._eq === "$CURRENT_USER" &&
2878
- ((_a = item.user_created) === null || _a === void 0 ? void 0 : _a.id) === (user === null || user === void 0 ? void 0 : user.id);
2879
- }))
2880
- || (!user && p.role == null) &&
2881
- ((layer === null || layer === void 0 ? void 0 : layer.public_edit_items) || ((_a = item === null || item === void 0 ? void 0 : item.layer) === null || _a === void 0 ? void 0 : _a.public_edit_items)) &&
2882
- (
2883
- // Wenn 'item' nicht gesetzt ist, ignorieren wir die Überprüfung von 'public_edit'
2884
- !item ||
2885
- ((_c = (_b = p.permissions) === null || _b === void 0 ? void 0 : _b._and) === null || _c === void 0 ? void 0 : _c.some(function (condition) {
2886
- return condition.public_edit &&
2887
- condition.public_edit._eq == true &&
2888
- item.public_edit == true;
2889
- })));
2888
+ ((p.role === (user === null || user === void 0 ? void 0 : user.role) &&
2889
+ (!item || !p.permissions || evaluatePermissions(p.permissions))) ||
2890
+ (p.role == null &&
2891
+ (((layer === null || layer === void 0 ? void 0 : layer.public_edit_items) || ((_a = item === null || item === void 0 ? void 0 : item.layer) === null || _a === void 0 ? void 0 : _a.public_edit_items)) &&
2892
+ (!item || !p.permissions || evaluatePermissions(p.permissions)))));
2890
2893
  });
2891
2894
  }
2892
2895
  }, [permissions, user]);