@webiny/app-file-manager 0.0.0-unstable.df7a8bb475 → 0.0.0-unstable.e2758ee1cf
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/app.js +2 -1
- package/app.js.map +1 -1
- package/modules/FileManagerRenderer/FileManagerView/LeftSidebar.js +6 -7
- package/modules/FileManagerRenderer/FileManagerView/LeftSidebar.js.map +1 -1
- package/modules/FileManagerRenderer/FileManagerView/getThumbnailRenderer.js +1 -1
- package/modules/FileManagerRenderer/FileManagerView/getThumbnailRenderer.js.map +1 -1
- package/modules/HeadlessCms/fileRenderer/fileField.js +8 -2
- package/modules/HeadlessCms/fileRenderer/fileField.js.map +1 -1
- package/modules/HeadlessCms/fileRenderer/fileFields.js +8 -2
- package/modules/HeadlessCms/fileRenderer/fileFields.js.map +1 -1
- package/modules/SecurityPermissions.d.ts +2 -0
- package/modules/SecurityPermissions.js +34 -0
- package/modules/SecurityPermissions.js.map +1 -0
- package/modules/Settings/index.js +0 -3
- package/modules/Settings/index.js.map +1 -1
- package/package.json +21 -21
- package/modules/Settings/plugins/permissionRenderer/FileManagerPermissions.d.ts +0 -14
- package/modules/Settings/plugins/permissionRenderer/FileManagerPermissions.js +0 -205
- package/modules/Settings/plugins/permissionRenderer/FileManagerPermissions.js.map +0 -1
- package/modules/Settings/plugins/permissionRenderer/index.d.ts +0 -3
- package/modules/Settings/plugins/permissionRenderer/index.js +0 -23
- package/modules/Settings/plugins/permissionRenderer/index.js.map +0 -1
package/app.js
CHANGED
|
@@ -4,8 +4,9 @@ import { FileManagerApiProviderModule } from "./modules/FileManagerApiProvider/i
|
|
|
4
4
|
import { FileManagerRendererModule } from "./modules/FileManagerRenderer/index.js";
|
|
5
5
|
import { HeadlessCmsModule } from "./modules/HeadlessCms/index.js";
|
|
6
6
|
import { EnterpriseModule } from "./modules/Enterprise/index.js";
|
|
7
|
+
import { SecurityPermissions } from "./modules/SecurityPermissions.js";
|
|
7
8
|
export const FileManager = () => {
|
|
8
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SettingsModule, null), /*#__PURE__*/React.createElement(FileManagerApiProviderModule, null), /*#__PURE__*/React.createElement(FileManagerRendererModule, null), /*#__PURE__*/React.createElement(HeadlessCmsModule, null), /*#__PURE__*/React.createElement(EnterpriseModule, null));
|
|
9
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SettingsModule, null), /*#__PURE__*/React.createElement(FileManagerApiProviderModule, null), /*#__PURE__*/React.createElement(FileManagerRendererModule, null), /*#__PURE__*/React.createElement(HeadlessCmsModule, null), /*#__PURE__*/React.createElement(EnterpriseModule, null), /*#__PURE__*/React.createElement(SecurityPermissions, null));
|
|
9
10
|
};
|
|
10
11
|
|
|
11
12
|
//# sourceMappingURL=app.js.map
|
package/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","SettingsModule","FileManagerApiProviderModule","FileManagerRendererModule","HeadlessCmsModule","EnterpriseModule","FileManager","createElement","Fragment"],"sources":["app.tsx"],"sourcesContent":["import React from \"react\";\nimport { SettingsModule } from \"~/modules/Settings/index.js\";\nimport { FileManagerApiProviderModule } from \"~/modules/FileManagerApiProvider/index.js\";\nimport { FileManagerRendererModule } from \"~/modules/FileManagerRenderer/index.js\";\nimport { HeadlessCmsModule } from \"~/modules/HeadlessCms/index.js\";\nimport { EnterpriseModule } from \"~/modules/Enterprise/index.js\";\n\nexport const FileManager = () => {\n return (\n <>\n <SettingsModule />\n <FileManagerApiProviderModule />\n <FileManagerRendererModule />\n <HeadlessCmsModule />\n <EnterpriseModule />\n </>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,cAAc;AACvB,SAASC,4BAA4B;AACrC,SAASC,yBAAyB;AAClC,SAASC,iBAAiB;AAC1B,SAASC,gBAAgB;
|
|
1
|
+
{"version":3,"names":["React","SettingsModule","FileManagerApiProviderModule","FileManagerRendererModule","HeadlessCmsModule","EnterpriseModule","SecurityPermissions","FileManager","createElement","Fragment"],"sources":["app.tsx"],"sourcesContent":["import React from \"react\";\nimport { SettingsModule } from \"~/modules/Settings/index.js\";\nimport { FileManagerApiProviderModule } from \"~/modules/FileManagerApiProvider/index.js\";\nimport { FileManagerRendererModule } from \"~/modules/FileManagerRenderer/index.js\";\nimport { HeadlessCmsModule } from \"~/modules/HeadlessCms/index.js\";\nimport { EnterpriseModule } from \"~/modules/Enterprise/index.js\";\nimport { SecurityPermissions } from \"./modules/SecurityPermissions.js\";\n\nexport const FileManager = () => {\n return (\n <>\n <SettingsModule />\n <FileManagerApiProviderModule />\n <FileManagerRendererModule />\n <HeadlessCmsModule />\n <EnterpriseModule />\n <SecurityPermissions />\n </>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,cAAc;AACvB,SAASC,4BAA4B;AACrC,SAASC,yBAAyB;AAClC,SAASC,iBAAiB;AAC1B,SAASC,gBAAgB;AACzB,SAASC,mBAAmB;AAE5B,OAAO,MAAMC,WAAW,GAAGA,CAAA,KAAM;EAC7B,oBACIP,KAAA,CAAAQ,aAAA,CAAAR,KAAA,CAAAS,QAAA,qBACIT,KAAA,CAAAQ,aAAA,CAACP,cAAc,MAAE,CAAC,eAClBD,KAAA,CAAAQ,aAAA,CAACN,4BAA4B,MAAE,CAAC,eAChCF,KAAA,CAAAQ,aAAA,CAACL,yBAAyB,MAAE,CAAC,eAC7BH,KAAA,CAAAQ,aAAA,CAACJ,iBAAiB,MAAE,CAAC,eACrBJ,KAAA,CAAAQ,aAAA,CAACH,gBAAgB,MAAE,CAAC,eACpBL,KAAA,CAAAQ,aAAA,CAACF,mBAAmB,MAAE,CACxB,CAAC;AAEX,CAAC","ignoreList":[]}
|
|
@@ -27,22 +27,21 @@ export const LeftSidebar = ({
|
|
|
27
27
|
}
|
|
28
28
|
}, [currentFolder]);
|
|
29
29
|
return /*#__PURE__*/React.createElement("div", {
|
|
30
|
-
className: "
|
|
31
|
-
style: {
|
|
32
|
-
height: "calc(100vh - 69px)"
|
|
33
|
-
}
|
|
30
|
+
className: "flex flex-col h-main-content"
|
|
34
31
|
}, /*#__PURE__*/React.createElement("div", {
|
|
35
|
-
className: "
|
|
32
|
+
className: "py-sm px-md"
|
|
36
33
|
}, /*#__PURE__*/React.createElement(Heading, {
|
|
37
34
|
level: 5
|
|
38
|
-
}, "File Manager")), /*#__PURE__*/React.createElement(Separator, null), /*#__PURE__*/React.createElement(
|
|
35
|
+
}, "File Manager")), /*#__PURE__*/React.createElement(Separator, null), /*#__PURE__*/React.createElement("div", {
|
|
36
|
+
className: "flex-1 overflow-y-scroll"
|
|
37
|
+
}, /*#__PURE__*/React.createElement(FolderTree, {
|
|
39
38
|
folderActions: browser.folder.actions,
|
|
40
39
|
dropConfirmation: browser.folder.dropConfirmation,
|
|
41
40
|
focusedFolderId: currentFolder,
|
|
42
41
|
onFolderClick: data => onFolderClick(data.id),
|
|
43
42
|
enableActions: true,
|
|
44
43
|
enableCreate: true
|
|
45
|
-
}), children ? /*#__PURE__*/React.createElement(Separator, null) : null, children);
|
|
44
|
+
})), children ? /*#__PURE__*/React.createElement(Separator, null) : null, children);
|
|
46
45
|
};
|
|
47
46
|
|
|
48
47
|
//# sourceMappingURL=LeftSidebar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","Separator","FolderTree","useLoadFolderHierarchy","useListFoldersByParentIds","useFileManagerViewConfig","Heading","LeftSidebar","currentFolder","onFolderClick","children","browser","folders","loadFolderHierarchy","listFoldersByParentIds","length","createElement","className","
|
|
1
|
+
{"version":3,"names":["React","useEffect","Separator","FolderTree","useLoadFolderHierarchy","useListFoldersByParentIds","useFileManagerViewConfig","Heading","LeftSidebar","currentFolder","onFolderClick","children","browser","folders","loadFolderHierarchy","listFoldersByParentIds","length","createElement","className","level","folderActions","folder","actions","dropConfirmation","focusedFolderId","data","id","enableActions","enableCreate"],"sources":["LeftSidebar.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport { Separator } from \"@webiny/admin-ui\";\nimport { FolderTree, useLoadFolderHierarchy, useListFoldersByParentIds } from \"@webiny/app-aco\";\nimport { useFileManagerViewConfig } from \"~/modules/FileManagerRenderer/FileManagerView/FileManagerViewConfig.js\";\nimport { Heading } from \"@webiny/admin-ui\";\n\ninterface LeftSidebarProps {\n currentFolder: string;\n onFolderClick: (folderId: string) => void;\n children?: React.ReactNode;\n}\n\nexport const LeftSidebar = ({ currentFolder, onFolderClick, children }: LeftSidebarProps) => {\n const { browser } = useFileManagerViewConfig();\n const { folders, loadFolderHierarchy } = useLoadFolderHierarchy();\n const { listFoldersByParentIds } = useListFoldersByParentIds();\n\n useEffect(() => {\n if (folders.length === 0) {\n loadFolderHierarchy(currentFolder);\n } else {\n // Otherwise let's load only the current folder sub-tree\n listFoldersByParentIds([currentFolder]);\n }\n }, [currentFolder]);\n\n return (\n <div className={\"flex flex-col h-main-content\"}>\n <div className={\"py-sm px-md\"}>\n <Heading level={5}>File Manager</Heading>\n </div>\n <Separator />\n <div className={\"flex-1 overflow-y-scroll\"}>\n <FolderTree\n folderActions={browser.folder.actions}\n dropConfirmation={browser.folder.dropConfirmation}\n focusedFolderId={currentFolder}\n onFolderClick={data => onFolderClick(data.id)}\n enableActions={true}\n enableCreate={true}\n />\n </div>\n {children ? <Separator /> : null}\n {children}\n </div>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAQ,OAAO;AACxC,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,SAASC,UAAU,EAAEC,sBAAsB,EAAEC,yBAAyB,QAAQ,iBAAiB;AAC/F,SAASC,wBAAwB;AACjC,SAASC,OAAO,QAAQ,kBAAkB;AAQ1C,OAAO,MAAMC,WAAW,GAAGA,CAAC;EAAEC,aAAa;EAAEC,aAAa;EAAEC;AAA2B,CAAC,KAAK;EACzF,MAAM;IAAEC;EAAQ,CAAC,GAAGN,wBAAwB,CAAC,CAAC;EAC9C,MAAM;IAAEO,OAAO;IAAEC;EAAoB,CAAC,GAAGV,sBAAsB,CAAC,CAAC;EACjE,MAAM;IAAEW;EAAuB,CAAC,GAAGV,yBAAyB,CAAC,CAAC;EAE9DJ,SAAS,CAAC,MAAM;IACZ,IAAIY,OAAO,CAACG,MAAM,KAAK,CAAC,EAAE;MACtBF,mBAAmB,CAACL,aAAa,CAAC;IACtC,CAAC,MAAM;MACH;MACAM,sBAAsB,CAAC,CAACN,aAAa,CAAC,CAAC;IAC3C;EACJ,CAAC,EAAE,CAACA,aAAa,CAAC,CAAC;EAEnB,oBACIT,KAAA,CAAAiB,aAAA;IAAKC,SAAS,EAAE;EAA+B,gBAC3ClB,KAAA,CAAAiB,aAAA;IAAKC,SAAS,EAAE;EAAc,gBAC1BlB,KAAA,CAAAiB,aAAA,CAACV,OAAO;IAACY,KAAK,EAAE;EAAE,GAAC,cAAqB,CACvC,CAAC,eACNnB,KAAA,CAAAiB,aAAA,CAACf,SAAS,MAAE,CAAC,eACbF,KAAA,CAAAiB,aAAA;IAAKC,SAAS,EAAE;EAA2B,gBACvClB,KAAA,CAAAiB,aAAA,CAACd,UAAU;IACPiB,aAAa,EAAER,OAAO,CAACS,MAAM,CAACC,OAAQ;IACtCC,gBAAgB,EAAEX,OAAO,CAACS,MAAM,CAACE,gBAAiB;IAClDC,eAAe,EAAEf,aAAc;IAC/BC,aAAa,EAAEe,IAAI,IAAIf,aAAa,CAACe,IAAI,CAACC,EAAE,CAAE;IAC9CC,aAAa,EAAE,IAAK;IACpBC,YAAY,EAAE;EAAK,CACtB,CACA,CAAC,EACLjB,QAAQ,gBAAGX,KAAA,CAAAiB,aAAA,CAACf,SAAS,MAAE,CAAC,GAAG,IAAI,EAC/BS,QACA,CAAC;AAEd,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["minimatch","getThumbnailRenderer","renderers","file","regExMatch","types","sort","a","b","countA","type","match","length","countB","renderer","find"],"sources":["getThumbnailRenderer.ts"],"sourcesContent":["import type { FileItem } from \"~/types.js\";\nimport minimatch from \"minimatch\";\n\nexport const getThumbnailRenderer = <T extends { type: string }>(\n renderers: T[],\n file: FileItem\n): T => {\n // Sort by type and by priority. More occurrences of `*` means lower priority.\n const regExMatch = /\\*/g;\n\n const types = renderers.sort((a, b) => {\n const countA = (a.type.match(regExMatch) || []).length;\n const countB = (b.type.match(regExMatch) || []).length;\n if (countB > countA) {\n return -1;\n } else if (countB < countA) {\n return 1;\n }\n return 0;\n });\n\n // Find first matching type\n const renderer = types.find(type => minimatch(file.type, type.type));\n\n return renderer!;\n};\n"],"mappings":"AACA,
|
|
1
|
+
{"version":3,"names":["minimatch","getThumbnailRenderer","renderers","file","regExMatch","types","sort","a","b","countA","type","match","length","countB","renderer","find"],"sources":["getThumbnailRenderer.ts"],"sourcesContent":["import type { FileItem } from \"~/types.js\";\nimport { minimatch } from \"minimatch\";\n\nexport const getThumbnailRenderer = <T extends { type: string }>(\n renderers: T[],\n file: FileItem\n): T => {\n // Sort by type and by priority. More occurrences of `*` means lower priority.\n const regExMatch = /\\*/g;\n\n const types = renderers.sort((a, b) => {\n const countA = (a.type.match(regExMatch) || []).length;\n const countB = (b.type.match(regExMatch) || []).length;\n if (countB > countA) {\n return -1;\n } else if (countB < countA) {\n return 1;\n }\n return 0;\n });\n\n // Find first matching type\n const renderer = types.find(type => minimatch(file.type, type.type));\n\n return renderer!;\n};\n"],"mappings":"AACA,SAASA,SAAS,QAAQ,WAAW;AAErC,OAAO,MAAMC,oBAAoB,GAAGA,CAChCC,SAAc,EACdC,IAAc,KACV;EACJ;EACA,MAAMC,UAAU,GAAG,KAAK;EAExB,MAAMC,KAAK,GAAGH,SAAS,CAACI,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAK;IACnC,MAAMC,MAAM,GAAG,CAACF,CAAC,CAACG,IAAI,CAACC,KAAK,CAACP,UAAU,CAAC,IAAI,EAAE,EAAEQ,MAAM;IACtD,MAAMC,MAAM,GAAG,CAACL,CAAC,CAACE,IAAI,CAACC,KAAK,CAACP,UAAU,CAAC,IAAI,EAAE,EAAEQ,MAAM;IACtD,IAAIC,MAAM,GAAGJ,MAAM,EAAE;MACjB,OAAO,CAAC,CAAC;IACb,CAAC,MAAM,IAAII,MAAM,GAAGJ,MAAM,EAAE;MACxB,OAAO,CAAC;IACZ;IACA,OAAO,CAAC;EACZ,CAAC,CAAC;;EAEF;EACA,MAAMK,QAAQ,GAAGT,KAAK,CAACU,IAAI,CAACL,IAAI,IAAIV,SAAS,CAACG,IAAI,CAACO,IAAI,EAAEA,IAAI,CAACA,IAAI,CAAC,CAAC;EAEpE,OAAOI,QAAQ;AACnB,CAAC","ignoreList":[]}
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { FileManager } from "@webiny/app-admin";
|
|
3
|
-
import {
|
|
3
|
+
import { useEffectiveRules, useModelField } from "@webiny/app-headless-cms-common";
|
|
4
4
|
import { FilePicker } from "@webiny/admin-ui";
|
|
5
|
+
import { EditFileUsingUrl } from "../../../components/EditFileUsingUrl/index.js";
|
|
5
6
|
import { getSupportedExtensionsLabelHint } from "./utils.js";
|
|
6
7
|
const FieldRenderer = ({
|
|
7
|
-
field,
|
|
8
8
|
getBind
|
|
9
9
|
}) => {
|
|
10
|
+
const {
|
|
11
|
+
field
|
|
12
|
+
} = useModelField();
|
|
13
|
+
const rules = useEffectiveRules(field);
|
|
14
|
+
const disabled = !rules.canEdit || rules.disabled;
|
|
10
15
|
const Bind = getBind();
|
|
11
16
|
const imagesOnly = field.settings && field.settings.imagesOnly;
|
|
12
17
|
return /*#__PURE__*/React.createElement(Bind, null, bind => {
|
|
@@ -25,6 +30,7 @@ const FieldRenderer = ({
|
|
|
25
30
|
showFileManager
|
|
26
31
|
}) => {
|
|
27
32
|
return /*#__PURE__*/React.createElement(FilePicker, Object.assign({}, bind, {
|
|
33
|
+
disabled: disabled,
|
|
28
34
|
label: field.label,
|
|
29
35
|
validation: validation,
|
|
30
36
|
description: field.description,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","FileManager","
|
|
1
|
+
{"version":3,"names":["React","FileManager","useEffectiveRules","useModelField","FilePicker","EditFileUsingUrl","getSupportedExtensionsLabelHint","FieldRenderer","getBind","field","rules","disabled","canEdit","Bind","imagesOnly","settings","createElement","bind","value","onChange","validation","ValidationContainer","onSetFile","file","src","editFile","images","render","showFileManager","Object","assign","label","description","hint","help","note","onSelectItem","onEditItem","onRemoveItem","placeholder","type","singleFile","name","renderer","rendererName","canUse","list","params"],"sources":["fileField.tsx"],"sourcesContent":["import React from \"react\";\nimport type {\n CmsModelFieldRendererPlugin,\n CmsModelFieldRendererProps\n} from \"@webiny/app-headless-cms/types.js\";\nimport { FileManager } from \"@webiny/app-admin\";\nimport { useEffectiveRules, useModelField } from \"@webiny/app-headless-cms-common\";\nimport { FilePicker } from \"@webiny/admin-ui\";\nimport { EditFileUsingUrl } from \"~/components/EditFileUsingUrl/index.js\";\nimport { getSupportedExtensionsLabelHint } from \"~/modules/HeadlessCms/fileRenderer/utils.js\";\n\nconst FieldRenderer = ({ getBind }: CmsModelFieldRendererProps) => {\n const { field } = useModelField();\n const rules = useEffectiveRules(field);\n const disabled = !rules.canEdit || rules.disabled;\n const Bind = getBind();\n\n const imagesOnly = field.settings && field.settings.imagesOnly;\n\n return (\n <Bind>\n {bind => {\n const { value, onChange, validation } = bind;\n\n return (\n <Bind.ValidationContainer>\n <EditFileUsingUrl onSetFile={file => bind.onChange(file.src)}>\n {({ editFile }) => (\n <FileManager\n images={imagesOnly}\n render={({ showFileManager }) => {\n return (\n <FilePicker\n {...bind}\n disabled={disabled}\n label={field.label}\n validation={validation}\n description={field.description}\n hint={field.help}\n note={getSupportedExtensionsLabelHint(imagesOnly)}\n value={value}\n onSelectItem={() => {\n showFileManager(file => onChange(file.src));\n }}\n onEditItem={() => editFile(value)}\n onRemoveItem={() => onChange(null)}\n placeholder={field.placeholder}\n type={\"compact\"}\n data-testid={`fr.input.filefield.${field.label}`}\n />\n );\n }}\n />\n )}\n </EditFileUsingUrl>\n </Bind.ValidationContainer>\n );\n }}\n </Bind>\n );\n};\n\nexport const singleFile: CmsModelFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-file\",\n renderer: {\n rendererName: \"file-input\",\n name: \"File Input\",\n description: \"Enables selecting a single file via File Manager.\",\n canUse({ field }) {\n return field.type === \"file\" && !field.list;\n },\n render(params) {\n return <FieldRenderer {...params} />;\n }\n }\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAKzB,SAASC,WAAW,QAAQ,mBAAmB;AAC/C,SAASC,iBAAiB,EAAEC,aAAa,QAAQ,iCAAiC;AAClF,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,gBAAgB;AACzB,SAASC,+BAA+B;AAExC,MAAMC,aAAa,GAAGA,CAAC;EAAEC;AAAoC,CAAC,KAAK;EAC/D,MAAM;IAAEC;EAAM,CAAC,GAAGN,aAAa,CAAC,CAAC;EACjC,MAAMO,KAAK,GAAGR,iBAAiB,CAACO,KAAK,CAAC;EACtC,MAAME,QAAQ,GAAG,CAACD,KAAK,CAACE,OAAO,IAAIF,KAAK,CAACC,QAAQ;EACjD,MAAME,IAAI,GAAGL,OAAO,CAAC,CAAC;EAEtB,MAAMM,UAAU,GAAGL,KAAK,CAACM,QAAQ,IAAIN,KAAK,CAACM,QAAQ,CAACD,UAAU;EAE9D,oBACId,KAAA,CAAAgB,aAAA,CAACH,IAAI,QACAI,IAAI,IAAI;IACL,MAAM;MAAEC,KAAK;MAAEC,QAAQ;MAAEC;IAAW,CAAC,GAAGH,IAAI;IAE5C,oBACIjB,KAAA,CAAAgB,aAAA,CAACH,IAAI,CAACQ,mBAAmB,qBACrBrB,KAAA,CAAAgB,aAAA,CAACX,gBAAgB;MAACiB,SAAS,EAAEC,IAAI,IAAIN,IAAI,CAACE,QAAQ,CAACI,IAAI,CAACC,GAAG;IAAE,GACxD,CAAC;MAAEC;IAAS,CAAC,kBACVzB,KAAA,CAAAgB,aAAA,CAACf,WAAW;MACRyB,MAAM,EAAEZ,UAAW;MACnBa,MAAM,EAAEA,CAAC;QAAEC;MAAgB,CAAC,KAAK;QAC7B,oBACI5B,KAAA,CAAAgB,aAAA,CAACZ,UAAU,EAAAyB,MAAA,CAAAC,MAAA,KACHb,IAAI;UACRN,QAAQ,EAAEA,QAAS;UACnBoB,KAAK,EAAEtB,KAAK,CAACsB,KAAM;UACnBX,UAAU,EAAEA,UAAW;UACvBY,WAAW,EAAEvB,KAAK,CAACuB,WAAY;UAC/BC,IAAI,EAAExB,KAAK,CAACyB,IAAK;UACjBC,IAAI,EAAE7B,+BAA+B,CAACQ,UAAU,CAAE;UAClDI,KAAK,EAAEA,KAAM;UACbkB,YAAY,EAAEA,CAAA,KAAM;YAChBR,eAAe,CAACL,IAAI,IAAIJ,QAAQ,CAACI,IAAI,CAACC,GAAG,CAAC,CAAC;UAC/C,CAAE;UACFa,UAAU,EAAEA,CAAA,KAAMZ,QAAQ,CAACP,KAAK,CAAE;UAClCoB,YAAY,EAAEA,CAAA,KAAMnB,QAAQ,CAAC,IAAI,CAAE;UACnCoB,WAAW,EAAE9B,KAAK,CAAC8B,WAAY;UAC/BC,IAAI,EAAE,SAAU;UAChB,eAAa,sBAAsB/B,KAAK,CAACsB,KAAK;QAAG,EACpD,CAAC;MAEV;IAAE,CACL,CAES,CACI,CAAC;EAEnC,CACE,CAAC;AAEf,CAAC;AAED,OAAO,MAAMU,UAAuC,GAAG;EACnDD,IAAI,EAAE,2BAA2B;EACjCE,IAAI,EAAE,gCAAgC;EACtCC,QAAQ,EAAE;IACNC,YAAY,EAAE,YAAY;IAC1BF,IAAI,EAAE,YAAY;IAClBV,WAAW,EAAE,mDAAmD;IAChEa,MAAMA,CAAC;MAAEpC;IAAM,CAAC,EAAE;MACd,OAAOA,KAAK,CAAC+B,IAAI,KAAK,MAAM,IAAI,CAAC/B,KAAK,CAACqC,IAAI;IAC/C,CAAC;IACDnB,MAAMA,CAACoB,MAAM,EAAE;MACX,oBAAO/C,KAAA,CAAAgB,aAAA,CAACT,aAAa,EAAKwC,MAAS,CAAC;IACxC;EACJ;AACJ,CAAC","ignoreList":[]}
|
|
@@ -5,11 +5,16 @@ import { FileManager } from "@webiny/app-admin";
|
|
|
5
5
|
import { getSupportedExtensionsLabelHint } from "./utils.js";
|
|
6
6
|
import { EditFileUsingUrl } from "../../../components/EditFileUsingUrl/index.js";
|
|
7
7
|
import { MultiFilePicker } from "@webiny/admin-ui";
|
|
8
|
+
import { useEffectiveRules, useModelField } from "@webiny/app-headless-cms-common";
|
|
8
9
|
const t = i18n.ns("app-headless-cms/admin/fields/file");
|
|
9
10
|
const FieldRenderer = ({
|
|
10
|
-
getBind
|
|
11
|
-
field
|
|
11
|
+
getBind
|
|
12
12
|
}) => {
|
|
13
|
+
const {
|
|
14
|
+
field
|
|
15
|
+
} = useModelField();
|
|
16
|
+
const rules = useEffectiveRules(field);
|
|
17
|
+
const disabled = !rules.canEdit || rules.disabled;
|
|
13
18
|
const Bind = getBind();
|
|
14
19
|
const editFileRef = useRef(null);
|
|
15
20
|
const imagesOnly = field.settings && field.settings.imagesOnly;
|
|
@@ -52,6 +57,7 @@ const FieldRenderer = ({
|
|
|
52
57
|
});
|
|
53
58
|
};
|
|
54
59
|
return /*#__PURE__*/React.createElement(MultiFilePicker, Object.assign({}, bind, {
|
|
60
|
+
disabled: disabled,
|
|
55
61
|
label: field.label,
|
|
56
62
|
validation: validation,
|
|
57
63
|
description: field.description,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useRef","dotProp","i18n","FileManager","getSupportedExtensionsLabelHint","EditFileUsingUrl","MultiFilePicker","t","ns","FieldRenderer","getBind","field","Bind","editFileRef","imagesOnly","settings","onSetFile","bind","file","current","newValue","value","onChange","slice","index","src","createElement","validation","values","Array","isArray","filter","Boolean","ValidationContainer","editFile","multiple","images","render","showFileManager","selectFiles","files","urls","map","f","Object","assign","label","description","note","onSelectItem","onReplaceItem","_","onRemoveItem","delete","onEditItem","url","placeholder","type","multipleFiles","name","renderer","rendererName","canUse","list","props"],"sources":["fileFields.tsx"],"sourcesContent":["import React, { useRef } from \"react\";\nimport dotProp from \"dot-prop-immutable\";\nimport type {\n BindComponentRenderProp,\n CmsModelFieldRendererPlugin,\n CmsModelFieldRendererProps\n} from \"@webiny/app-headless-cms/types.js\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { FileManager } from \"@webiny/app-admin\";\nimport { getSupportedExtensionsLabelHint } from \"./utils.js\";\nimport { EditFileUsingUrl } from \"~/components/EditFileUsingUrl/index.js\";\nimport type { FileItem } from \"~/types.js\";\nimport { MultiFilePicker } from \"@webiny/admin-ui\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/file\");\n\ninterface EditFileRef {\n index: number;\n url: string;\n}\n\nconst FieldRenderer = ({ getBind, field }: CmsModelFieldRendererProps) => {\n const Bind = getBind();\n const editFileRef = useRef<EditFileRef | null>(null);\n\n const imagesOnly = field.settings && field.settings.imagesOnly;\n\n const onSetFile = (bind: BindComponentRenderProp) => {\n return (file: FileItem) => {\n if (!editFileRef.current) {\n return;\n }\n\n const newValue = [...bind.value];\n bind.onChange([\n ...newValue.slice(0, editFileRef.current.index),\n file.src,\n ...newValue.slice(editFileRef.current.index + 1)\n ]);\n\n editFileRef.current = null;\n };\n };\n\n return (\n <Bind>\n {bind => {\n const { onChange, validation } = bind;\n\n // We need to make sure the value is an array, since this is a multi-value component.\n const values: string[] = (\n Array.isArray(bind.value) ? bind.value : [bind.value]\n ).filter(Boolean);\n\n return (\n <Bind.ValidationContainer>\n <EditFileUsingUrl onSetFile={onSetFile(bind)}>\n {({ editFile }) => (\n <FileManager\n multiple\n images={imagesOnly}\n render={({ showFileManager }) => {\n const selectFiles = (index = -1) => {\n showFileManager(files => {\n const urls = files.map(f => f.src);\n if (index === -1) {\n onChange([...values, ...urls]);\n } else {\n onChange([\n ...values.slice(0, index),\n ...urls,\n ...values.slice(index + 1)\n ]);\n }\n });\n };\n return (\n <MultiFilePicker\n {...bind}\n label={field.label}\n validation={validation}\n description={field.description}\n note={getSupportedExtensionsLabelHint(imagesOnly)}\n values={values}\n onSelectItem={() => selectFiles()}\n onReplaceItem={(_, index) => selectFiles(index)}\n onRemoveItem={(_, index) =>\n onChange(dotProp.delete(values, index))\n }\n onEditItem={(value, index) => {\n if (!value) {\n return;\n }\n\n editFileRef.current = {\n index,\n url: value.url\n };\n\n editFile(value.url);\n }}\n placeholder={field.placeholder}\n type={\"compact\"}\n data-testid={`fr.input.filefields.${field.label}`}\n />\n );\n }}\n />\n )}\n </EditFileUsingUrl>\n </Bind.ValidationContainer>\n );\n }}\n </Bind>\n );\n};\n\nexport const multipleFiles: CmsModelFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-files\",\n renderer: {\n rendererName: \"file-inputs\",\n name: t`File Inputs`,\n description: t`Enables selecting multiple files via File Manager.`,\n canUse({ field }) {\n return field.type === \"file\" && !!field.list;\n },\n render(props) {\n return <FieldRenderer {...props} />;\n }\n }\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useRef","dotProp","i18n","FileManager","getSupportedExtensionsLabelHint","EditFileUsingUrl","MultiFilePicker","useEffectiveRules","useModelField","t","ns","FieldRenderer","getBind","field","rules","disabled","canEdit","Bind","editFileRef","imagesOnly","settings","onSetFile","bind","file","current","newValue","value","onChange","slice","index","src","createElement","validation","values","Array","isArray","filter","Boolean","ValidationContainer","editFile","multiple","images","render","showFileManager","selectFiles","files","urls","map","f","Object","assign","label","description","note","onSelectItem","onReplaceItem","_","onRemoveItem","delete","onEditItem","url","placeholder","type","multipleFiles","name","renderer","rendererName","canUse","list","props"],"sources":["fileFields.tsx"],"sourcesContent":["import React, { useRef } from \"react\";\nimport dotProp from \"dot-prop-immutable\";\nimport type {\n BindComponentRenderProp,\n CmsModelFieldRendererPlugin,\n CmsModelFieldRendererProps\n} from \"@webiny/app-headless-cms/types.js\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { FileManager } from \"@webiny/app-admin\";\nimport { getSupportedExtensionsLabelHint } from \"./utils.js\";\nimport { EditFileUsingUrl } from \"~/components/EditFileUsingUrl/index.js\";\nimport type { FileItem } from \"~/types.js\";\nimport { MultiFilePicker } from \"@webiny/admin-ui\";\nimport { useEffectiveRules, useModelField } from \"@webiny/app-headless-cms-common\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/file\");\n\ninterface EditFileRef {\n index: number;\n url: string;\n}\n\nconst FieldRenderer = ({ getBind }: CmsModelFieldRendererProps) => {\n const { field } = useModelField();\n const rules = useEffectiveRules(field);\n const disabled = !rules.canEdit || rules.disabled;\n const Bind = getBind();\n const editFileRef = useRef<EditFileRef | null>(null);\n\n const imagesOnly = field.settings && field.settings.imagesOnly;\n\n const onSetFile = (bind: BindComponentRenderProp) => {\n return (file: FileItem) => {\n if (!editFileRef.current) {\n return;\n }\n\n const newValue = [...bind.value];\n bind.onChange([\n ...newValue.slice(0, editFileRef.current.index),\n file.src,\n ...newValue.slice(editFileRef.current.index + 1)\n ]);\n\n editFileRef.current = null;\n };\n };\n\n return (\n <Bind>\n {bind => {\n const { onChange, validation } = bind;\n\n // We need to make sure the value is an array, since this is a multi-value component.\n const values: string[] = (\n Array.isArray(bind.value) ? bind.value : [bind.value]\n ).filter(Boolean);\n\n return (\n <Bind.ValidationContainer>\n <EditFileUsingUrl onSetFile={onSetFile(bind)}>\n {({ editFile }) => (\n <FileManager\n multiple\n images={imagesOnly}\n render={({ showFileManager }) => {\n const selectFiles = (index = -1) => {\n showFileManager(files => {\n const urls = files.map(f => f.src);\n if (index === -1) {\n onChange([...values, ...urls]);\n } else {\n onChange([\n ...values.slice(0, index),\n ...urls,\n ...values.slice(index + 1)\n ]);\n }\n });\n };\n return (\n <MultiFilePicker\n {...bind}\n disabled={disabled}\n label={field.label}\n validation={validation}\n description={field.description}\n note={getSupportedExtensionsLabelHint(imagesOnly)}\n values={values}\n onSelectItem={() => selectFiles()}\n onReplaceItem={(_, index) => selectFiles(index)}\n onRemoveItem={(_, index) =>\n onChange(dotProp.delete(values, index))\n }\n onEditItem={(value, index) => {\n if (!value) {\n return;\n }\n\n editFileRef.current = {\n index,\n url: value.url\n };\n\n editFile(value.url);\n }}\n placeholder={field.placeholder}\n type={\"compact\"}\n data-testid={`fr.input.filefields.${field.label}`}\n />\n );\n }}\n />\n )}\n </EditFileUsingUrl>\n </Bind.ValidationContainer>\n );\n }}\n </Bind>\n );\n};\n\nexport const multipleFiles: CmsModelFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-files\",\n renderer: {\n rendererName: \"file-inputs\",\n name: t`File Inputs`,\n description: t`Enables selecting multiple files via File Manager.`,\n canUse({ field }) {\n return field.type === \"file\" && !!field.list;\n },\n render(props) {\n return <FieldRenderer {...props} />;\n }\n }\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { AdminConfig } from "@webiny/app-admin";
|
|
3
|
+
import { ReactComponent as PermissionsIcon } from "@webiny/icons/folder_open.svg";
|
|
4
|
+
const {
|
|
5
|
+
Security
|
|
6
|
+
} = AdminConfig;
|
|
7
|
+
export const SecurityPermissions = () => {
|
|
8
|
+
return /*#__PURE__*/React.createElement(AdminConfig, null, /*#__PURE__*/React.createElement(Security.Permissions, {
|
|
9
|
+
name: "file-manager",
|
|
10
|
+
title: "File Manager",
|
|
11
|
+
description: "Manage File Manager permissions.",
|
|
12
|
+
icon: /*#__PURE__*/React.createElement(PermissionsIcon, null),
|
|
13
|
+
schema: {
|
|
14
|
+
prefix: "fm",
|
|
15
|
+
fullAccess: true,
|
|
16
|
+
entities: [{
|
|
17
|
+
id: "file",
|
|
18
|
+
title: "File",
|
|
19
|
+
scopes: ["full", "own"],
|
|
20
|
+
permission: "fm.file",
|
|
21
|
+
actions: [{
|
|
22
|
+
name: "rwd"
|
|
23
|
+
}]
|
|
24
|
+
}, {
|
|
25
|
+
id: "settings",
|
|
26
|
+
title: "Settings",
|
|
27
|
+
scopes: ["full"],
|
|
28
|
+
permission: "fm.settings"
|
|
29
|
+
}]
|
|
30
|
+
}
|
|
31
|
+
}));
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=SecurityPermissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","AdminConfig","ReactComponent","PermissionsIcon","Security","SecurityPermissions","createElement","Permissions","name","title","description","icon","schema","prefix","fullAccess","entities","id","scopes","permission","actions"],"sources":["SecurityPermissions.tsx"],"sourcesContent":["import React from \"react\";\nimport { AdminConfig } from \"@webiny/app-admin\";\nimport { ReactComponent as PermissionsIcon } from \"@webiny/icons/folder_open.svg\";\n\nconst { Security } = AdminConfig;\n\nexport const SecurityPermissions = () => {\n return (\n <AdminConfig>\n <Security.Permissions\n name=\"file-manager\"\n title=\"File Manager\"\n description=\"Manage File Manager permissions.\"\n icon={<PermissionsIcon />}\n schema={{\n prefix: \"fm\",\n fullAccess: true,\n entities: [\n {\n id: \"file\",\n title: \"File\",\n scopes: [\"full\", \"own\"],\n permission: \"fm.file\",\n actions: [\n {\n name: \"rwd\"\n }\n ]\n },\n {\n id: \"settings\",\n title: \"Settings\",\n scopes: [\"full\"],\n permission: \"fm.settings\"\n }\n ]\n }}\n />\n </AdminConfig>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,WAAW,QAAQ,mBAAmB;AAC/C,SAASC,cAAc,IAAIC,eAAe,QAAQ,+BAA+B;AAEjF,MAAM;EAAEC;AAAS,CAAC,GAAGH,WAAW;AAEhC,OAAO,MAAMI,mBAAmB,GAAGA,CAAA,KAAM;EACrC,oBACIL,KAAA,CAAAM,aAAA,CAACL,WAAW,qBACRD,KAAA,CAAAM,aAAA,CAACF,QAAQ,CAACG,WAAW;IACjBC,IAAI,EAAC,cAAc;IACnBC,KAAK,EAAC,cAAc;IACpBC,WAAW,EAAC,kCAAkC;IAC9CC,IAAI,eAAEX,KAAA,CAAAM,aAAA,CAACH,eAAe,MAAE,CAAE;IAC1BS,MAAM,EAAE;MACJC,MAAM,EAAE,IAAI;MACZC,UAAU,EAAE,IAAI;MAChBC,QAAQ,EAAE,CACN;QACIC,EAAE,EAAE,MAAM;QACVP,KAAK,EAAE,MAAM;QACbQ,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;QACvBC,UAAU,EAAE,SAAS;QACrBC,OAAO,EAAE,CACL;UACIX,IAAI,EAAE;QACV,CAAC;MAET,CAAC,EACD;QACIQ,EAAE,EAAE,UAAU;QACdP,KAAK,EAAE,UAAU;QACjBQ,MAAM,EAAE,CAAC,MAAM,CAAC;QAChBC,UAAU,EAAE;MAChB,CAAC;IAET;EAAE,CACL,CACQ,CAAC;AAEtB,CAAC","ignoreList":[]}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { AdminConfig, useRouter, AdminLayout } from "@webiny/app-admin";
|
|
3
|
-
import { plugins } from "@webiny/plugins";
|
|
4
3
|
import { HasPermission } from "@webiny/app-admin";
|
|
5
|
-
import permissionRenderer from "./plugins/permissionRenderer/index.js";
|
|
6
4
|
import { FileManagerSettings } from "./views/FileManagerSettings.js";
|
|
7
5
|
import { Routes } from "../../routes.js";
|
|
8
6
|
const {
|
|
@@ -13,7 +11,6 @@ export const SettingsModule = () => {
|
|
|
13
11
|
const {
|
|
14
12
|
getLink
|
|
15
13
|
} = useRouter();
|
|
16
|
-
plugins.register(permissionRenderer);
|
|
17
14
|
return /*#__PURE__*/React.createElement(AdminConfig, null, /*#__PURE__*/React.createElement(HasPermission, {
|
|
18
15
|
name: "fm.settings"
|
|
19
16
|
}, /*#__PURE__*/React.createElement(Route, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","AdminConfig","useRouter","AdminLayout","
|
|
1
|
+
{"version":3,"names":["React","AdminConfig","useRouter","AdminLayout","HasPermission","FileManagerSettings","Routes","Menu","Route","SettingsModule","getLink","createElement","name","route","Settings","element","title","parent","Group","text","Link","to","pinnable"],"sources":["index.tsx"],"sourcesContent":["import React from \"react\";\nimport { AdminConfig, useRouter, AdminLayout } from \"@webiny/app-admin\";\nimport { HasPermission } from \"@webiny/app-admin\";\nimport { FileManagerSettings } from \"./views/FileManagerSettings.js\";\nimport { Routes } from \"~/routes.js\";\n\nconst { Menu, Route } = AdminConfig;\n\nexport const SettingsModule = () => {\n const { getLink } = useRouter();\n\n return (\n <AdminConfig>\n <HasPermission name={\"fm.settings\"}>\n <Route\n route={Routes.Settings}\n element={\n <AdminLayout title={\"File Manager - General Settings\"}>\n <FileManagerSettings />\n </AdminLayout>\n }\n />\n <Menu\n parent={\"settings\"}\n name={\"settings.fm\"}\n element={<Menu.Group text={\"File Manager\"} />}\n />\n <Menu\n parent={\"settings\"}\n name={\"settings.fm.general\"}\n element={\n <Menu.Link text={\"General\"} to={getLink(Routes.Settings)} pinnable={true} />\n }\n />\n </HasPermission>\n </AdminConfig>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,WAAW,EAAEC,SAAS,EAAEC,WAAW,QAAQ,mBAAmB;AACvE,SAASC,aAAa,QAAQ,mBAAmB;AACjD,SAASC,mBAAmB;AAC5B,SAASC,MAAM;AAEf,MAAM;EAAEC,IAAI;EAAEC;AAAM,CAAC,GAAGP,WAAW;AAEnC,OAAO,MAAMQ,cAAc,GAAGA,CAAA,KAAM;EAChC,MAAM;IAAEC;EAAQ,CAAC,GAAGR,SAAS,CAAC,CAAC;EAE/B,oBACIF,KAAA,CAAAW,aAAA,CAACV,WAAW,qBACRD,KAAA,CAAAW,aAAA,CAACP,aAAa;IAACQ,IAAI,EAAE;EAAc,gBAC/BZ,KAAA,CAAAW,aAAA,CAACH,KAAK;IACFK,KAAK,EAAEP,MAAM,CAACQ,QAAS;IACvBC,OAAO,eACHf,KAAA,CAAAW,aAAA,CAACR,WAAW;MAACa,KAAK,EAAE;IAAkC,gBAClDhB,KAAA,CAAAW,aAAA,CAACN,mBAAmB,MAAE,CACb;EAChB,CACJ,CAAC,eACFL,KAAA,CAAAW,aAAA,CAACJ,IAAI;IACDU,MAAM,EAAE,UAAW;IACnBL,IAAI,EAAE,aAAc;IACpBG,OAAO,eAAEf,KAAA,CAAAW,aAAA,CAACJ,IAAI,CAACW,KAAK;MAACC,IAAI,EAAE;IAAe,CAAE;EAAE,CACjD,CAAC,eACFnB,KAAA,CAAAW,aAAA,CAACJ,IAAI;IACDU,MAAM,EAAE,UAAW;IACnBL,IAAI,EAAE,qBAAsB;IAC5BG,OAAO,eACHf,KAAA,CAAAW,aAAA,CAACJ,IAAI,CAACa,IAAI;MAACD,IAAI,EAAE,SAAU;MAACE,EAAE,EAAEX,OAAO,CAACJ,MAAM,CAACQ,QAAQ,CAAE;MAACQ,QAAQ,EAAE;IAAK,CAAE;EAC9E,CACJ,CACU,CACN,CAAC;AAEtB,CAAC","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/app-file-manager",
|
|
3
|
-
"version": "0.0.0-unstable.
|
|
3
|
+
"version": "0.0.0-unstable.e2758ee1cf",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"repository": {
|
|
@@ -14,21 +14,21 @@
|
|
|
14
14
|
"@apollo/react-components": "3.1.5",
|
|
15
15
|
"@apollo/react-hooks": "3.1.5",
|
|
16
16
|
"@types/react": "18.2.79",
|
|
17
|
-
"@webiny/admin-ui": "0.0.0-unstable.
|
|
18
|
-
"@webiny/app": "0.0.0-unstable.
|
|
19
|
-
"@webiny/app-aco": "0.0.0-unstable.
|
|
20
|
-
"@webiny/app-admin": "0.0.0-unstable.
|
|
21
|
-
"@webiny/app-headless-cms": "0.0.0-unstable.
|
|
22
|
-
"@webiny/app-headless-cms-common": "0.0.0-unstable.
|
|
23
|
-
"@webiny/app-websockets": "0.0.0-unstable.
|
|
24
|
-
"@webiny/error": "0.0.0-unstable.
|
|
25
|
-
"@webiny/form": "0.0.0-unstable.
|
|
26
|
-
"@webiny/icons": "0.0.0-unstable.
|
|
27
|
-
"@webiny/plugins": "0.0.0-unstable.
|
|
28
|
-
"@webiny/react-composition": "0.0.0-unstable.
|
|
29
|
-
"@webiny/react-properties": "0.0.0-unstable.
|
|
30
|
-
"@webiny/utils": "0.0.0-unstable.
|
|
31
|
-
"@webiny/validation": "0.0.0-unstable.
|
|
17
|
+
"@webiny/admin-ui": "0.0.0-unstable.e2758ee1cf",
|
|
18
|
+
"@webiny/app": "0.0.0-unstable.e2758ee1cf",
|
|
19
|
+
"@webiny/app-aco": "0.0.0-unstable.e2758ee1cf",
|
|
20
|
+
"@webiny/app-admin": "0.0.0-unstable.e2758ee1cf",
|
|
21
|
+
"@webiny/app-headless-cms": "0.0.0-unstable.e2758ee1cf",
|
|
22
|
+
"@webiny/app-headless-cms-common": "0.0.0-unstable.e2758ee1cf",
|
|
23
|
+
"@webiny/app-websockets": "0.0.0-unstable.e2758ee1cf",
|
|
24
|
+
"@webiny/error": "0.0.0-unstable.e2758ee1cf",
|
|
25
|
+
"@webiny/form": "0.0.0-unstable.e2758ee1cf",
|
|
26
|
+
"@webiny/icons": "0.0.0-unstable.e2758ee1cf",
|
|
27
|
+
"@webiny/plugins": "0.0.0-unstable.e2758ee1cf",
|
|
28
|
+
"@webiny/react-composition": "0.0.0-unstable.e2758ee1cf",
|
|
29
|
+
"@webiny/react-properties": "0.0.0-unstable.e2758ee1cf",
|
|
30
|
+
"@webiny/utils": "0.0.0-unstable.e2758ee1cf",
|
|
31
|
+
"@webiny/validation": "0.0.0-unstable.e2758ee1cf",
|
|
32
32
|
"apollo-cache": "1.3.5",
|
|
33
33
|
"apollo-client": "2.6.10",
|
|
34
34
|
"apollo-link": "1.2.14",
|
|
@@ -38,12 +38,12 @@
|
|
|
38
38
|
"dataurl-to-blob": "0.0.1",
|
|
39
39
|
"dayjs": "1.11.19",
|
|
40
40
|
"dot-prop-immutable": "2.1.1",
|
|
41
|
-
"graphql": "16.
|
|
41
|
+
"graphql": "16.13.0",
|
|
42
42
|
"graphql-tag": "2.12.6",
|
|
43
43
|
"load-script": "1.0.0",
|
|
44
44
|
"lodash": "4.17.23",
|
|
45
45
|
"mime": "3.0.0",
|
|
46
|
-
"minimatch": "
|
|
46
|
+
"minimatch": "10.2.4",
|
|
47
47
|
"mobx": "6.15.0",
|
|
48
48
|
"mobx-react-lite": "3.4.3",
|
|
49
49
|
"prop-types": "15.8.1",
|
|
@@ -57,14 +57,14 @@
|
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
59
|
"@svgr/webpack": "6.5.1",
|
|
60
|
-
"@webiny/build-tools": "0.0.0-unstable.
|
|
60
|
+
"@webiny/build-tools": "0.0.0-unstable.e2758ee1cf",
|
|
61
61
|
"rimraf": "6.1.3",
|
|
62
62
|
"typescript": "5.9.3",
|
|
63
|
-
"vitest": "
|
|
63
|
+
"vitest": "4.0.18"
|
|
64
64
|
},
|
|
65
65
|
"publishConfig": {
|
|
66
66
|
"access": "public",
|
|
67
67
|
"directory": "dist"
|
|
68
68
|
},
|
|
69
|
-
"gitHead": "
|
|
69
|
+
"gitHead": "e2758ee1cfa3b9a7152e9bb995a90ccabd33266f"
|
|
70
70
|
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
interface FileManagerPermissionItem {
|
|
3
|
-
settingsAccessScope?: string;
|
|
4
|
-
filesAccessScope?: string;
|
|
5
|
-
accessLevel?: string;
|
|
6
|
-
name?: string;
|
|
7
|
-
filesRWD?: string;
|
|
8
|
-
}
|
|
9
|
-
interface FileManagerPermissionsProps {
|
|
10
|
-
value: FileManagerPermissionItem;
|
|
11
|
-
onChange: (value: FileManagerPermissionItem[]) => void;
|
|
12
|
-
}
|
|
13
|
-
export declare const FileManagerPermissions: ({ value, onChange }: FileManagerPermissionsProps) => React.JSX.Element;
|
|
14
|
-
export {};
|
|
@@ -1,205 +0,0 @@
|
|
|
1
|
-
import React, { Fragment, useCallback, useMemo } from "react";
|
|
2
|
-
import { Grid, Select } from "@webiny/admin-ui";
|
|
3
|
-
import { i18n } from "@webiny/app/i18n/index.js";
|
|
4
|
-
import { CannotUseAaclAlert, PermissionInfo, gridWithPaddingClass, PermissionsGroup } from "@webiny/app-admin";
|
|
5
|
-
import { Form } from "@webiny/form";
|
|
6
|
-
import { useSecurity } from "@webiny/app-admin";
|
|
7
|
-
const t = i18n.ns("app-file-manager/admin/plugins/permissionRenderer");
|
|
8
|
-
const FILE_MANAGER = "fm";
|
|
9
|
-
const FILE_MANAGER_FULL_ACCESS = `${FILE_MANAGER}.*`;
|
|
10
|
-
const FILE_MANAGER_ACCESS_FILE = `${FILE_MANAGER}.file`;
|
|
11
|
-
const FILE_MANAGER_ACCESS_SETTINGS = `${FILE_MANAGER}.settings`;
|
|
12
|
-
const FULL_ACCESS = "full";
|
|
13
|
-
const NO_ACCESS = "no";
|
|
14
|
-
const CUSTOM_ACCESS = "custom";
|
|
15
|
-
export const FileManagerPermissions = ({
|
|
16
|
-
value,
|
|
17
|
-
onChange
|
|
18
|
-
}) => {
|
|
19
|
-
const {
|
|
20
|
-
getPermission
|
|
21
|
-
} = useSecurity();
|
|
22
|
-
|
|
23
|
-
// We disable form elements for custom permissions if AACL cannot be used.
|
|
24
|
-
const cannotUseAAcl = useMemo(() => {
|
|
25
|
-
return !getPermission("aacl", true);
|
|
26
|
-
}, []);
|
|
27
|
-
const onFormChange = useCallback(data => {
|
|
28
|
-
let newValue = [];
|
|
29
|
-
if (Array.isArray(value)) {
|
|
30
|
-
// Let's just filter out the `file-manager*` permission objects, it's easier to build new ones from scratch.
|
|
31
|
-
newValue = value.filter(item => !item.name.startsWith(FILE_MANAGER));
|
|
32
|
-
}
|
|
33
|
-
if (data.accessLevel === NO_ACCESS) {
|
|
34
|
-
onChange(newValue);
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
if (data.accessLevel === FULL_ACCESS) {
|
|
38
|
-
newValue.push({
|
|
39
|
-
name: FILE_MANAGER_FULL_ACCESS
|
|
40
|
-
});
|
|
41
|
-
onChange(newValue);
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// Handling custom access level.
|
|
46
|
-
|
|
47
|
-
// Files first.
|
|
48
|
-
if (data.filesAccessScope && data.filesAccessScope !== NO_ACCESS) {
|
|
49
|
-
const permission = {
|
|
50
|
-
name: FILE_MANAGER_ACCESS_FILE,
|
|
51
|
-
own: false,
|
|
52
|
-
rwd: undefined
|
|
53
|
-
};
|
|
54
|
-
if (data.filesAccessScope === "own") {
|
|
55
|
-
permission.own = true;
|
|
56
|
-
permission.rwd = "rwd";
|
|
57
|
-
} else {
|
|
58
|
-
permission.rwd = data.filesRWD || "r";
|
|
59
|
-
}
|
|
60
|
-
newValue.push(permission);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
// Settings second.
|
|
64
|
-
if (data.settingsAccessScope === FULL_ACCESS) {
|
|
65
|
-
newValue.push({
|
|
66
|
-
name: FILE_MANAGER_ACCESS_SETTINGS
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
onChange(newValue);
|
|
70
|
-
}, [value]);
|
|
71
|
-
const formData = useMemo(() => {
|
|
72
|
-
if (!Array.isArray(value)) {
|
|
73
|
-
return {
|
|
74
|
-
accessLevel: NO_ACCESS
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
const hasFullAccess = value.find(item => item.name === FILE_MANAGER_FULL_ACCESS || item.name === "*");
|
|
78
|
-
if (hasFullAccess) {
|
|
79
|
-
return {
|
|
80
|
-
accessLevel: FULL_ACCESS
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
const permissions = value.filter(item => item.name.startsWith(FILE_MANAGER));
|
|
84
|
-
if (!permissions.length) {
|
|
85
|
-
return {
|
|
86
|
-
accessLevel: NO_ACCESS
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
const data = {
|
|
90
|
-
accessLevel: CUSTOM_ACCESS,
|
|
91
|
-
filesAccessScope: NO_ACCESS,
|
|
92
|
-
settingsAccessScope: NO_ACCESS,
|
|
93
|
-
filesRWD: "r"
|
|
94
|
-
};
|
|
95
|
-
const filesPermission = permissions.find(item => item.name === FILE_MANAGER_ACCESS_FILE);
|
|
96
|
-
if (filesPermission) {
|
|
97
|
-
data.filesAccessScope = filesPermission.own ? "own" : FULL_ACCESS;
|
|
98
|
-
if (data.filesAccessScope === FULL_ACCESS) {
|
|
99
|
-
data.filesRWD = filesPermission.rwd;
|
|
100
|
-
} else {
|
|
101
|
-
data.filesRWD = "rwd";
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
const hasSettingsAccess = permissions.find(item => item.name === FILE_MANAGER_ACCESS_SETTINGS);
|
|
105
|
-
if (hasSettingsAccess) {
|
|
106
|
-
data.settingsAccessScope = FULL_ACCESS;
|
|
107
|
-
}
|
|
108
|
-
return data;
|
|
109
|
-
}, []);
|
|
110
|
-
return /*#__PURE__*/React.createElement(Form, {
|
|
111
|
-
data: formData,
|
|
112
|
-
onChange: onFormChange
|
|
113
|
-
}, ({
|
|
114
|
-
data,
|
|
115
|
-
Bind,
|
|
116
|
-
setValue
|
|
117
|
-
}) => /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(Grid, {
|
|
118
|
-
className: gridWithPaddingClass
|
|
119
|
-
}, /*#__PURE__*/React.createElement(Grid.Column, {
|
|
120
|
-
span: 12
|
|
121
|
-
}, data.accessLevel === "custom" && cannotUseAAcl && /*#__PURE__*/React.createElement(CannotUseAaclAlert, null))), /*#__PURE__*/React.createElement(Grid, {
|
|
122
|
-
className: gridWithPaddingClass
|
|
123
|
-
}, /*#__PURE__*/React.createElement(Grid.Column, {
|
|
124
|
-
span: 6
|
|
125
|
-
}, /*#__PURE__*/React.createElement(PermissionInfo, {
|
|
126
|
-
title: t`Access Level`
|
|
127
|
-
})), /*#__PURE__*/React.createElement(Grid.Column, {
|
|
128
|
-
span: 6
|
|
129
|
-
}, /*#__PURE__*/React.createElement(Bind, {
|
|
130
|
-
name: "accessLevel"
|
|
131
|
-
}, /*#__PURE__*/React.createElement(Select, {
|
|
132
|
-
options: [{
|
|
133
|
-
value: NO_ACCESS,
|
|
134
|
-
label: t`No access`
|
|
135
|
-
}, {
|
|
136
|
-
value: FULL_ACCESS,
|
|
137
|
-
label: t`Full access`
|
|
138
|
-
}, {
|
|
139
|
-
value: CUSTOM_ACCESS,
|
|
140
|
-
label: t`Custom access`
|
|
141
|
-
}]
|
|
142
|
-
})))), data.accessLevel === "custom" && /*#__PURE__*/React.createElement("div", {
|
|
143
|
-
className: "mt-lg"
|
|
144
|
-
}, /*#__PURE__*/React.createElement(PermissionsGroup, {
|
|
145
|
-
title: t`Files`
|
|
146
|
-
}, /*#__PURE__*/React.createElement(Grid, null, /*#__PURE__*/React.createElement(Grid.Column, {
|
|
147
|
-
span: 12
|
|
148
|
-
}, /*#__PURE__*/React.createElement(Bind, {
|
|
149
|
-
name: "filesAccessScope",
|
|
150
|
-
beforeChange: (value, cb) => {
|
|
151
|
-
if (value === "own") {
|
|
152
|
-
setValue(`filesRWD`, "rwd");
|
|
153
|
-
}
|
|
154
|
-
cb(value);
|
|
155
|
-
}
|
|
156
|
-
}, /*#__PURE__*/React.createElement(Select, {
|
|
157
|
-
label: t`Access Scope`,
|
|
158
|
-
disabled: cannotUseAAcl,
|
|
159
|
-
options: [{
|
|
160
|
-
value: NO_ACCESS,
|
|
161
|
-
label: t`No access`
|
|
162
|
-
}, {
|
|
163
|
-
value: FULL_ACCESS,
|
|
164
|
-
label: t`Full access`
|
|
165
|
-
}, {
|
|
166
|
-
value: "own",
|
|
167
|
-
label: t`Only files created by the user`
|
|
168
|
-
}]
|
|
169
|
-
}))), /*#__PURE__*/React.createElement(Grid.Column, {
|
|
170
|
-
span: 12
|
|
171
|
-
}, /*#__PURE__*/React.createElement(Bind, {
|
|
172
|
-
name: "filesRWD"
|
|
173
|
-
}, /*#__PURE__*/React.createElement(Select, {
|
|
174
|
-
label: t`Primary Actions`,
|
|
175
|
-
disabled: cannotUseAAcl || data.filesAccessScope !== "full",
|
|
176
|
-
options: [{
|
|
177
|
-
value: "r",
|
|
178
|
-
label: t`Read`
|
|
179
|
-
}, {
|
|
180
|
-
value: "rw",
|
|
181
|
-
label: t`Read, write`
|
|
182
|
-
}, {
|
|
183
|
-
value: "rwd",
|
|
184
|
-
label: t`Read, write, delete`
|
|
185
|
-
}]
|
|
186
|
-
}))))), /*#__PURE__*/React.createElement(PermissionsGroup, {
|
|
187
|
-
title: t`Settings`
|
|
188
|
-
}, /*#__PURE__*/React.createElement(Grid, null, /*#__PURE__*/React.createElement(Grid.Column, {
|
|
189
|
-
span: 12
|
|
190
|
-
}, /*#__PURE__*/React.createElement(Bind, {
|
|
191
|
-
name: "settingsAccessScope"
|
|
192
|
-
}, /*#__PURE__*/React.createElement(Select, {
|
|
193
|
-
disabled: cannotUseAAcl,
|
|
194
|
-
label: t`Access Scope`,
|
|
195
|
-
options: [{
|
|
196
|
-
value: NO_ACCESS,
|
|
197
|
-
label: t`No access`
|
|
198
|
-
}, {
|
|
199
|
-
value: FULL_ACCESS,
|
|
200
|
-
label: t`Full access`
|
|
201
|
-
}]
|
|
202
|
-
}))))))));
|
|
203
|
-
};
|
|
204
|
-
|
|
205
|
-
//# sourceMappingURL=FileManagerPermissions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["React","Fragment","useCallback","useMemo","Grid","Select","i18n","CannotUseAaclAlert","PermissionInfo","gridWithPaddingClass","PermissionsGroup","Form","useSecurity","t","ns","FILE_MANAGER","FILE_MANAGER_FULL_ACCESS","FILE_MANAGER_ACCESS_FILE","FILE_MANAGER_ACCESS_SETTINGS","FULL_ACCESS","NO_ACCESS","CUSTOM_ACCESS","FileManagerPermissions","value","onChange","getPermission","cannotUseAAcl","onFormChange","data","newValue","Array","isArray","filter","item","name","startsWith","accessLevel","push","filesAccessScope","permission","own","rwd","undefined","filesRWD","settingsAccessScope","formData","hasFullAccess","find","permissions","length","filesPermission","hasSettingsAccess","createElement","Bind","setValue","className","Column","span","title","options","label","beforeChange","cb","disabled"],"sources":["FileManagerPermissions.tsx"],"sourcesContent":["import React, { Fragment, useCallback, useMemo } from \"react\";\nimport { Grid, Select } from \"@webiny/admin-ui\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport {\n CannotUseAaclAlert,\n PermissionInfo,\n gridWithPaddingClass,\n PermissionsGroup,\n type AaclPermission\n} from \"@webiny/app-admin\";\nimport { Form } from \"@webiny/form\";\nimport { useSecurity } from \"@webiny/app-admin\";\n\nconst t = i18n.ns(\"app-file-manager/admin/plugins/permissionRenderer\");\n\nconst FILE_MANAGER = \"fm\";\nconst FILE_MANAGER_FULL_ACCESS = `${FILE_MANAGER}.*`;\nconst FILE_MANAGER_ACCESS_FILE = `${FILE_MANAGER}.file`;\nconst FILE_MANAGER_ACCESS_SETTINGS = `${FILE_MANAGER}.settings`;\n\nconst FULL_ACCESS = \"full\";\nconst NO_ACCESS = \"no\";\nconst CUSTOM_ACCESS = \"custom\";\n\ninterface FileManagerPermission {\n name: string;\n own?: boolean;\n rwd?: string;\n}\ninterface FileManagerPermissionItem {\n settingsAccessScope?: string;\n filesAccessScope?: string;\n accessLevel?: string;\n name?: string;\n filesRWD?: string;\n}\ninterface FileManagerPermissionsProps {\n value: FileManagerPermissionItem;\n onChange: (value: FileManagerPermissionItem[]) => void;\n}\n\nexport const FileManagerPermissions = ({ value, onChange }: FileManagerPermissionsProps) => {\n const { getPermission } = useSecurity();\n\n // We disable form elements for custom permissions if AACL cannot be used.\n const cannotUseAAcl = useMemo(() => {\n return !getPermission<AaclPermission>(\"aacl\", true);\n }, []);\n\n const onFormChange = useCallback(\n (data: FileManagerPermissionItem) => {\n let newValue: FileManagerPermissionItem[] = [];\n if (Array.isArray(value)) {\n // Let's just filter out the `file-manager*` permission objects, it's easier to build new ones from scratch.\n newValue = value.filter(item => !item.name.startsWith(FILE_MANAGER));\n }\n\n if (data.accessLevel === NO_ACCESS) {\n onChange(newValue);\n return;\n }\n\n if (data.accessLevel === FULL_ACCESS) {\n newValue.push({ name: FILE_MANAGER_FULL_ACCESS });\n onChange(newValue);\n return;\n }\n\n // Handling custom access level.\n\n // Files first.\n if (data.filesAccessScope && data.filesAccessScope !== NO_ACCESS) {\n const permission: FileManagerPermission = {\n name: FILE_MANAGER_ACCESS_FILE,\n own: false,\n rwd: undefined\n };\n\n if (data.filesAccessScope === \"own\") {\n permission.own = true;\n permission.rwd = \"rwd\";\n } else {\n permission.rwd = data.filesRWD || \"r\";\n }\n newValue.push(permission);\n }\n\n // Settings second.\n if (data.settingsAccessScope === FULL_ACCESS) {\n newValue.push({ name: FILE_MANAGER_ACCESS_SETTINGS });\n }\n\n onChange(newValue);\n },\n [value]\n );\n\n const formData = useMemo((): FileManagerPermissionItem => {\n if (!Array.isArray(value)) {\n return { accessLevel: NO_ACCESS };\n }\n\n const hasFullAccess = value.find(\n item => item.name === FILE_MANAGER_FULL_ACCESS || item.name === \"*\"\n );\n if (hasFullAccess) {\n return { accessLevel: FULL_ACCESS };\n }\n\n const permissions = value.filter(item => item.name.startsWith(FILE_MANAGER));\n if (!permissions.length) {\n return { accessLevel: NO_ACCESS };\n }\n\n const data: FileManagerPermissionItem = {\n accessLevel: CUSTOM_ACCESS,\n filesAccessScope: NO_ACCESS,\n settingsAccessScope: NO_ACCESS,\n filesRWD: \"r\"\n };\n\n const filesPermission = permissions.find(item => item.name === FILE_MANAGER_ACCESS_FILE);\n if (filesPermission) {\n data.filesAccessScope = filesPermission.own ? \"own\" : FULL_ACCESS;\n if (data.filesAccessScope === FULL_ACCESS) {\n data.filesRWD = filesPermission.rwd;\n } else {\n data.filesRWD = \"rwd\";\n }\n }\n\n const hasSettingsAccess = permissions.find(\n item => item.name === FILE_MANAGER_ACCESS_SETTINGS\n );\n if (hasSettingsAccess) {\n data.settingsAccessScope = FULL_ACCESS;\n }\n\n return data;\n }, []);\n\n return (\n <Form data={formData} onChange={onFormChange}>\n {({ data, Bind, setValue }) => (\n <Fragment>\n <Grid className={gridWithPaddingClass}>\n <Grid.Column span={12}>\n {data.accessLevel === \"custom\" && cannotUseAAcl && (\n <CannotUseAaclAlert />\n )}\n </Grid.Column>\n </Grid>\n <Grid className={gridWithPaddingClass}>\n <Grid.Column span={6}>\n <PermissionInfo title={t`Access Level`} />\n </Grid.Column>\n <Grid.Column span={6}>\n <Bind name={\"accessLevel\"}>\n <Select\n options={[\n {\n value: NO_ACCESS,\n label: t`No access`\n },\n {\n value: FULL_ACCESS,\n label: t`Full access`\n },\n {\n value: CUSTOM_ACCESS,\n label: t`Custom access`\n }\n ]}\n />\n </Bind>\n </Grid.Column>\n </Grid>\n {data.accessLevel === \"custom\" && (\n <div className={\"mt-lg\"}>\n <PermissionsGroup title={t`Files`}>\n <Grid>\n <Grid.Column span={12}>\n <Bind\n name={\"filesAccessScope\"}\n beforeChange={(value, cb) => {\n if (value === \"own\") {\n setValue(`filesRWD`, \"rwd\");\n }\n cb(value);\n }}\n >\n <Select\n label={t`Access Scope`}\n disabled={cannotUseAAcl}\n options={[\n {\n value: NO_ACCESS,\n label: t`No access`\n },\n {\n value: FULL_ACCESS,\n label: t`Full access`\n },\n {\n value: \"own\",\n label: t`Only files created by the user`\n }\n ]}\n />\n </Bind>\n </Grid.Column>\n <Grid.Column span={12}>\n <Bind name={\"filesRWD\"}>\n <Select\n label={t`Primary Actions`}\n disabled={\n cannotUseAAcl ||\n data.filesAccessScope !== \"full\"\n }\n options={[\n {\n value: \"r\",\n label: t`Read`\n },\n {\n value: \"rw\",\n label: t`Read, write`\n },\n {\n value: \"rwd\",\n label: t`Read, write, delete`\n }\n ]}\n />\n </Bind>\n </Grid.Column>\n </Grid>\n </PermissionsGroup>\n <PermissionsGroup title={t`Settings`}>\n <Grid>\n <Grid.Column span={12}>\n <Bind name={\"settingsAccessScope\"}>\n <Select\n disabled={cannotUseAAcl}\n label={t`Access Scope`}\n options={[\n {\n value: NO_ACCESS,\n label: t`No access`\n },\n {\n value: FULL_ACCESS,\n label: t`Full access`\n }\n ]}\n />\n </Bind>\n </Grid.Column>\n </Grid>\n </PermissionsGroup>\n </div>\n )}\n </Fragment>\n )}\n </Form>\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { Accordion } from "@webiny/admin-ui";
|
|
3
|
-
import { ReactComponent as PermissionsIcon } from "@webiny/icons/folder_open.svg";
|
|
4
|
-
import { FileManagerPermissions } from "./FileManagerPermissions.js";
|
|
5
|
-
import { i18n } from "@webiny/app/i18n/index.js";
|
|
6
|
-
const t = i18n.ns("app-file-manager/admin/plugins/permissionRenderer");
|
|
7
|
-
export default {
|
|
8
|
-
type: "admin-app-permissions-renderer",
|
|
9
|
-
name: "admin-app-permissions-renderer-file-manager",
|
|
10
|
-
render(props) {
|
|
11
|
-
return /*#__PURE__*/React.createElement(Accordion.Item, {
|
|
12
|
-
icon: /*#__PURE__*/React.createElement(Accordion.Item.Icon, {
|
|
13
|
-
icon: /*#__PURE__*/React.createElement(PermissionsIcon, null),
|
|
14
|
-
label: "File Manager Permissions"
|
|
15
|
-
}),
|
|
16
|
-
title: t`File Manager`,
|
|
17
|
-
description: t`Manage File manager app access permissions.`,
|
|
18
|
-
"data-testid": "permission.fm"
|
|
19
|
-
}, /*#__PURE__*/React.createElement(FileManagerPermissions, props));
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["React","Accordion","ReactComponent","PermissionsIcon","FileManagerPermissions","i18n","t","ns","type","name","render","props","createElement","Item","icon","Icon","label","title","description"],"sources":["index.tsx"],"sourcesContent":["import React from \"react\";\nimport { Accordion } from \"@webiny/admin-ui\";\nimport type { AdminAppPermissionRendererPlugin } from \"@webiny/app-admin/types.js\";\nimport { ReactComponent as PermissionsIcon } from \"@webiny/icons/folder_open.svg\";\nimport { FileManagerPermissions } from \"./FileManagerPermissions.js\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\n\nconst t = i18n.ns(\"app-file-manager/admin/plugins/permissionRenderer\");\n\nexport default {\n type: \"admin-app-permissions-renderer\",\n name: \"admin-app-permissions-renderer-file-manager\",\n render(props) {\n return (\n <Accordion.Item\n icon={\n <Accordion.Item.Icon\n icon={<PermissionsIcon />}\n label={\"File Manager Permissions\"}\n />\n }\n title={t`File Manager`}\n description={t`Manage File manager app access permissions.`}\n data-testid={\"permission.fm\"}\n >\n <FileManagerPermissions {...props} />\n </Accordion.Item>\n );\n }\n} as AdminAppPermissionRendererPlugin;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,SAAS,QAAQ,kBAAkB;AAE5C,SAASC,cAAc,IAAIC,eAAe,QAAQ,+BAA+B;AACjF,SAASC,sBAAsB;AAC/B,SAASC,IAAI,QAAQ,2BAA2B;AAEhD,MAAMC,CAAC,GAAGD,IAAI,CAACE,EAAE,CAAC,mDAAmD,CAAC;AAEtE,eAAe;EACXC,IAAI,EAAE,gCAAgC;EACtCC,IAAI,EAAE,6CAA6C;EACnDC,MAAMA,CAACC,KAAK,EAAE;IACV,oBACIX,KAAA,CAAAY,aAAA,CAACX,SAAS,CAACY,IAAI;MACXC,IAAI,eACAd,KAAA,CAAAY,aAAA,CAACX,SAAS,CAACY,IAAI,CAACE,IAAI;QAChBD,IAAI,eAAEd,KAAA,CAAAY,aAAA,CAACT,eAAe,MAAE,CAAE;QAC1Ba,KAAK,EAAE;MAA2B,CACrC,CACJ;MACDC,KAAK,EAAEX,CAAC,cAAe;MACvBY,WAAW,EAAEZ,CAAC,6CAA8C;MAC5D,eAAa;IAAgB,gBAE7BN,KAAA,CAAAY,aAAA,CAACR,sBAAsB,EAAKO,KAAQ,CACxB,CAAC;EAEzB;AACJ,CAAC","ignoreList":[]}
|