@webiny/app-admin 5.26.1-beta.0 → 5.27.0-beta.0

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.
@@ -1,8 +1,8 @@
1
1
  import React from "react";
2
2
  import { FilesRules } from "react-butterfiles";
3
3
  export interface FileManagerViewProps {
4
- onChange: Function;
5
- onClose: Function;
4
+ onChange?: Function;
5
+ onClose?: Function;
6
6
  files?: FilesRules;
7
7
  multiple: boolean;
8
8
  accept: Array<string>;
@@ -466,7 +466,7 @@ var FileManagerView = function FileManagerView(props) {
466
466
 
467
467
  return _context3.abrupt("return", setTimeout(function () {
468
468
  onUploadCompletion(uploadedFiles);
469
- onClose(); // TODO @ts-refactor
469
+ onClose && onClose(); // TODO @ts-refactor
470
470
  }, 750));
471
471
 
472
472
  case 13:
@@ -551,13 +551,18 @@ var FileManagerView = function FileManagerView(props) {
551
551
  while (1) {
552
552
  switch (_context4.prev = _context4.next) {
553
553
  case 0:
554
- _context4.next = 2;
555
- return onChange(multiple ? selected : selected[0]);
554
+ if (!(typeof onChange === "function")) {
555
+ _context4.next = 4;
556
+ break;
557
+ }
556
558
 
557
- case 2:
558
- onClose();
559
+ _context4.next = 3;
560
+ return onChange(multiple ? selected : selected[0]);
559
561
 
560
562
  case 3:
563
+ onClose && onClose();
564
+
565
+ case 4:
561
566
  case "end":
562
567
  return _context4.stop();
563
568
  }
@@ -617,35 +622,46 @@ var FileManagerView = function FileManagerView(props) {
617
622
  selected: selected.find(function (current) {
618
623
  return current.src === file.src;
619
624
  }),
620
- onSelect: typeof onChange === "undefined" ? function () {
621
- return void 0;
622
- } : /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {
623
- return _regeneratorRuntime.wrap(function _callee5$(_context5) {
624
- while (1) {
625
- switch (_context5.prev = _context5.next) {
626
- case 0:
627
- if (!multiple) {
628
- _context5.next = 3;
629
- break;
630
- }
631
-
632
- toggleSelected(file);
633
- return _context5.abrupt("return");
634
-
635
- case 3:
636
- _context5.next = 5;
637
- return onChange(file);
638
-
639
- case 5:
640
- onClose();
641
-
642
- case 6:
643
- case "end":
644
- return _context5.stop();
625
+ onSelect: function () {
626
+ var _onSelect = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {
627
+ return _regeneratorRuntime.wrap(function _callee5$(_context5) {
628
+ while (1) {
629
+ switch (_context5.prev = _context5.next) {
630
+ case 0:
631
+ if (!(typeof onChange === "function")) {
632
+ _context5.next = 7;
633
+ break;
634
+ }
635
+
636
+ if (!multiple) {
637
+ _context5.next = 4;
638
+ break;
639
+ }
640
+
641
+ toggleSelected(file);
642
+ return _context5.abrupt("return");
643
+
644
+ case 4:
645
+ _context5.next = 6;
646
+ return onChange(file);
647
+
648
+ case 6:
649
+ onClose && onClose();
650
+
651
+ case 7:
652
+ case "end":
653
+ return _context5.stop();
654
+ }
645
655
  }
646
- }
647
- }, _callee5);
648
- }))
656
+ }, _callee5);
657
+ }));
658
+
659
+ function onSelect() {
660
+ return _onSelect.apply(this, arguments);
661
+ }
662
+
663
+ return onSelect;
664
+ }()
649
665
  });
650
666
  }) : renderEmpty({
651
667
  hasPreviouslyUploadedFiles: hasPreviouslyUploadedFiles,
@@ -1 +1 @@
1
- {"version":3,"sources":["FileManagerView.tsx"],"names":["React","useRef","useCallback","useMemo","css","styled","Files","ButtonPrimary","ButtonIcon","Icon","File","useQuery","useMutation","useApolloClient","LIST_FILES","CREATE_FILE","GET_FILE_SETTINGS","getFileTypePlugin","get","debounce","getFileUploader","outputFileSelectionError","DropFilesHere","NoResults","FileDetails","LeftSidebar","BottomInfoBar","OverlayLayout","useSnackbar","Scrollbar","CircularProgress","i18n","useSecurity","useHotkeys","useFileManager","ReactComponent","SearchIcon","UploadIcon","NoPermissionView","t","ns","style","draggingFeedback","position","top","left","width","height","opacity","background","zIndex","leftDrawer","header","textAlign","fontSize","padding","fontWeight","color","InputSearch","backgroundColor","borderRadius","border","marginLeft","outline","searchIcon","FileListWrapper","float","display","FileList","gridTemplateColumns","marginBottom","renderFile","props","file","plugin","id","render","renderEmpty","hasPreviouslyUploadedFiles","browseFiles","fmFilePermission","FileManagerView","onClose","onChange","accept","multiple","maxSize","multipleMaxCount","multipleMaxSize","onUploadCompletion","selected","toggleSelected","dragging","setDragging","uploading","setUploading","showFileDetails","showingFileDetails","queryParams","setQueryParams","setHasPreviouslyUploadedFiles","showSnackbar","identity","getPermission","canCreate","own","rwd","includes","canEdit","item","creatorId","identityId","login","searchOnChange","search","toggleTag","tag","finalTags","Array","isArray","tags","splice","indexOf","push","getFileUploadErrorMessage","e","match","message","updateCacheAfterCreateFile","cache","newFile","newFileData","data","readQuery","query","variables","writeQuery","fileManager","listFiles","getFileDetailsFile","src","list","find","keys","esc","searchInput","apolloClient","gqlQuery","onCompleted","response","length","refreshOnScroll","scrollFrame","fetchMore","cursor","after","updateQuery","prev","result","fetchMoreResult","next","loading","update","createFile","uploadFile","files","errors","uploadedFiles","Promise","all","map","scope","createFileResponse","setTimeout","name","renderUploadFileAction","settingsQuery","settings","uploadMaxFileSize","filter","Boolean","getDropZoneProps","validateFiles","onDragEnter","onExited","target","value","current","onSelect","defaultProps"],"mappings":"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","sourcesContent":["import React, { useRef, useCallback, useMemo } from \"react\";\nimport { css } from \"emotion\";\nimport styled from \"@emotion/styled\";\nimport Files, { FilesRenderChildren } from \"react-butterfiles\";\nimport { ButtonPrimary, ButtonIcon } from \"@webiny/ui/Button\";\nimport { Icon } from \"@webiny/ui/Icon\";\nimport File, { FileProps } from \"./File\";\nimport { useQuery, useMutation, useApolloClient } from \"@apollo/react-hooks\";\nimport { FilesRules } from \"react-butterfiles\";\nimport {\n LIST_FILES,\n CREATE_FILE,\n GET_FILE_SETTINGS,\n CreateFileMutationVariables,\n CreateFileMutationResponse,\n ListFilesQueryResponse,\n ListFilesQueryVariables\n} from \"./graphql\";\nimport getFileTypePlugin from \"./getFileTypePlugin\";\nimport get from \"lodash/get\";\nimport debounce from \"lodash/debounce\";\nimport getFileUploader from \"./getFileUploader\";\nimport outputFileSelectionError from \"./outputFileSelectionError\";\nimport DropFilesHere from \"./DropFilesHere\";\nimport NoResults from \"./NoResults\";\nimport FileDetails from \"./FileDetails\";\nimport LeftSidebar from \"./LeftSidebar\";\nimport BottomInfoBar from \"./BottomInfoBar\";\nimport { OverlayLayout } from \"../OverlayLayout\";\nimport { useSnackbar } from \"~/hooks/useSnackbar\";\nimport { Scrollbar } from \"@webiny/ui/Scrollbar\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { useSecurity } from \"@webiny/app-security\";\n/**\n * Package react-hotkeyz is missing types.\n */\n// @ts-ignore\nimport { useHotkeys } from \"react-hotkeyz\";\nimport { useFileManager } from \"./FileManagerContext\";\nimport { ReactComponent as SearchIcon } from \"./icons/round-search-24px.svg\";\nimport { ReactComponent as UploadIcon } from \"./icons/round-cloud_upload-24px.svg\";\nimport NoPermissionView from \"./NoPermissionView\";\nimport { FileItem, FileManagerSecurityPermission } from \"~/components/FileManager/types\";\nimport { MutationUpdaterFn } from \"apollo-client/core/watchQueryOptions\";\nimport { SecurityPermission } from \"@webiny/app-security/types\";\nimport { ObservableQueryFields } from \"@apollo/react-common/lib/types/types\";\n\nconst t = i18n.ns(\"app-admin/file-manager/file-manager-view\");\n\nconst style = {\n draggingFeedback: css({\n position: \"fixed\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\",\n opacity: 0.5,\n background: \"white\",\n zIndex: 100\n }),\n leftDrawer: {\n header: css({\n textAlign: \"center\",\n fontSize: 18,\n padding: 10,\n fontWeight: 600,\n color: \"var(--mdc-theme-on-surface)\"\n })\n }\n};\n\nconst InputSearch = styled(\"div\")({\n backgroundColor: \"var(--mdc-theme-on-background)\",\n position: \"relative\",\n height: 32,\n padding: 3,\n width: \"100%\",\n borderRadius: 2,\n \"> input\": {\n border: \"none\",\n fontSize: 14,\n width: \"calc(100% - 10px)\",\n height: \"100%\",\n marginLeft: 50,\n backgroundColor: \"transparent\",\n outline: \"none\",\n color: \"var(--mdc-theme-text-primary-on-background)\"\n }\n});\n\nconst searchIcon = css({\n \"&.mdc-button__icon\": {\n color: \"var(--mdc-theme-text-secondary-on-background)\",\n position: \"absolute\",\n width: 24,\n height: 24,\n left: 15,\n top: 7\n }\n});\n\nconst FileListWrapper = styled(\"div\")({\n float: \"right\",\n display: \"inline-block\",\n width: \"calc(100vw - 270px)\",\n height: \"100%\"\n});\n\nconst FileList = styled(\"div\")({\n width: \"100%\",\n display: \"grid\",\n /* define the number of grid columns */\n gridTemplateColumns: \"repeat( auto-fill, minmax(220px, 1fr) )\",\n marginBottom: 95\n});\n\nexport interface FileManagerViewProps {\n onChange: Function;\n onClose: Function;\n files?: FilesRules;\n multiple: boolean; // Does not affect <Files> component, it always allows multiple selection.\n accept: Array<string>;\n maxSize: number | string;\n multipleMaxCount: number;\n multipleMaxSize: number | string;\n onUploadCompletion?: Function;\n tags?: string[];\n scope?: string;\n own?: boolean;\n}\n\ninterface RenderFileProps extends Omit<FileProps, \"children\"> {\n file: FileItem;\n children?: React.ReactNode;\n}\nconst renderFile: React.FC<RenderFileProps> = props => {\n const { file } = props;\n const plugin = getFileTypePlugin(file);\n if (!plugin) {\n return null;\n }\n return (\n <File {...props} key={file.id}>\n {plugin.render({\n /**\n * TODO @ts-refactor\n */\n // @ts-ignore\n file\n })}\n </File>\n );\n};\ninterface RenderEmptyProps {\n hasPreviouslyUploadedFiles: boolean;\n browseFiles: FilesRenderChildren[\"browseFiles\"];\n fmFilePermission: SecurityPermission | null;\n}\nconst renderEmpty: React.FC<RenderEmptyProps> = ({\n hasPreviouslyUploadedFiles,\n browseFiles,\n fmFilePermission\n}) => {\n if (!fmFilePermission) {\n return <NoPermissionView />;\n }\n if (hasPreviouslyUploadedFiles) {\n return <NoResults />;\n }\n return <DropFilesHere empty onClick={() => browseFiles()} />;\n};\n\ninterface RefreshOnScrollParams {\n fetchMore: ObservableQueryFields<ListFilesQueryResponse, ListFilesQueryVariables>[\"fetchMore\"];\n scrollFrame: {\n top: number;\n };\n}\n\ninterface FileError {\n file: FileItem;\n e: Error;\n}\n\ninterface GetFileDetailsFileParams {\n src: string;\n list: FileItem[];\n}\n\nconst FileManagerView: React.FC<FileManagerViewProps> = props => {\n const {\n onClose,\n onChange,\n accept,\n multiple,\n maxSize,\n multipleMaxCount,\n multipleMaxSize,\n onUploadCompletion\n } = props;\n\n const {\n selected,\n toggleSelected,\n dragging,\n setDragging,\n uploading,\n setUploading,\n showFileDetails,\n showingFileDetails,\n queryParams,\n setQueryParams,\n hasPreviouslyUploadedFiles,\n setHasPreviouslyUploadedFiles\n } = useFileManager();\n const { showSnackbar } = useSnackbar();\n\n const { identity, getPermission } = useSecurity();\n const fmFilePermission = useMemo((): FileManagerSecurityPermission | null => {\n return getPermission<FileManagerSecurityPermission>(\"fm.file\");\n }, [identity]);\n const canCreate = useMemo(() => {\n // Bail out early if no access\n if (!fmFilePermission) {\n return false;\n }\n\n if (fmFilePermission.own) {\n return true;\n }\n\n if (typeof fmFilePermission.rwd === \"string\") {\n return fmFilePermission.rwd.includes(\"w\");\n }\n\n return true;\n }, [fmFilePermission]);\n const canEdit = useCallback(\n item => {\n // Bail out early if no access\n if (!fmFilePermission) {\n return false;\n }\n const creatorId = get(item, \"createdBy.id\");\n\n if (fmFilePermission.own && creatorId) {\n const identityId = identity ? identity.id || identity.login : null;\n return creatorId === identityId;\n }\n\n if (typeof fmFilePermission.rwd === \"string\") {\n return fmFilePermission.rwd.includes(\"w\");\n }\n\n return true;\n },\n [fmFilePermission]\n );\n\n const searchOnChange = useCallback(\n // @ts-ignore\n debounce(search => setQueryParams({ search }), 500),\n []\n );\n\n const toggleTag = useCallback(async ({ tag, queryParams }) => {\n const finalTags = Array.isArray(queryParams.tags) ? [...queryParams.tags] : [];\n\n if (finalTags.includes(tag)) {\n finalTags.splice(finalTags.indexOf(tag), 1);\n } else {\n finalTags.push(tag);\n }\n\n setQueryParams({ ...queryParams, tags: finalTags });\n }, []);\n\n const getFileUploadErrorMessage = useCallback(e => {\n if (typeof e === \"string\") {\n const match = e.match(/Message>(.*?)<\\/Message/);\n if (match) {\n const [, message] = match;\n return message;\n }\n\n return e;\n }\n return e.message;\n }, []);\n\n const updateCacheAfterCreateFile: MutationUpdaterFn<CreateFileMutationResponse> = (\n cache,\n newFile\n ) => {\n const newFileData = get(newFile, \"data.fileManager.createFile.data\");\n\n const data = cache.readQuery<ListFilesQueryResponse>({\n query: LIST_FILES,\n variables: queryParams\n });\n\n cache.writeQuery({\n query: LIST_FILES,\n variables: queryParams,\n data: {\n fileManager: {\n ...(data?.fileManager || {}),\n listFiles: {\n ...(data?.fileManager || {}).listFiles,\n data: [newFileData, ...((data?.fileManager?.listFiles || {}).data || [])]\n }\n }\n }\n });\n };\n\n const getFileDetailsFile = useCallback(({ src, list }: GetFileDetailsFileParams): FileItem => {\n return list.find(item => item.src === src) as FileItem;\n }, []);\n\n useHotkeys({\n zIndex: 50,\n keys: {\n esc: onClose\n }\n });\n\n const searchInput = useRef<HTMLInputElement>(null);\n\n const apolloClient = useApolloClient();\n\n const gqlQuery = useQuery<ListFilesQueryResponse, ListFilesQueryVariables>(LIST_FILES, {\n variables: queryParams,\n onCompleted: response => {\n const list = get(response, \"fileManager.listFiles.data\") || [];\n if (hasPreviouslyUploadedFiles === null) {\n setHasPreviouslyUploadedFiles(list.length > 0);\n }\n }\n });\n\n const refreshOnScroll = useCallback(\n debounce(({ scrollFrame, fetchMore }: RefreshOnScrollParams) => {\n if (scrollFrame.top > 0.9) {\n const cursor = get(gqlQuery.data, \"fileManager.listFiles.meta.cursor\");\n if (cursor) {\n fetchMore({\n variables: { after: cursor },\n updateQuery: (\n prev: ListFilesQueryResponse,\n result: { fetchMoreResult?: ListFilesQueryResponse }\n ) => {\n const { fetchMoreResult } = result;\n if (!fetchMoreResult) {\n return prev;\n }\n\n const next = { ...fetchMoreResult };\n\n next.fileManager.listFiles.data = [\n ...prev.fileManager.listFiles.data,\n ...fetchMoreResult.fileManager.listFiles.data\n ];\n\n return next;\n }\n });\n }\n }\n }, 500),\n [gqlQuery]\n );\n\n const { data, fetchMore, loading } = gqlQuery;\n\n const list: FileItem[] = get(data, \"fileManager.listFiles.data\") || [];\n const [createFile] = useMutation<CreateFileMutationResponse, CreateFileMutationVariables>(\n CREATE_FILE,\n {\n update: updateCacheAfterCreateFile\n }\n );\n const uploadFile = async (files: FileItem[] | FileItem): Promise<number | null> => {\n setUploading(true);\n const list: FileItem[] = Array.isArray(files) ? files : [files];\n\n const errors: FileError[] = [];\n const uploadedFiles: FileItem[] = [];\n await Promise.all(\n list.map(async file => {\n try {\n const response = await getFileUploader()(file, { apolloClient });\n /**\n * Add \"tags\" while creating the new file.\n */\n const createFileResponse = await createFile({\n variables: {\n data: {\n ...response,\n tags: queryParams.scope ? [queryParams.scope] : []\n }\n }\n });\n // Save create file data for later\n uploadedFiles.push(get(createFileResponse, \"data.fileManager.createFile.data\"));\n } catch (e) {\n errors.push({ file, e });\n }\n })\n );\n\n if (!hasPreviouslyUploadedFiles) {\n setHasPreviouslyUploadedFiles(true);\n }\n\n setUploading(false);\n\n if (errors.length > 0) {\n // We wait 750ms, just for everything to settle down a bit.\n return setTimeout(() => {\n showSnackbar(\n <>\n {t`One or more files were not uploaded successfully:`}\n <ol>\n {errors.map(({ file, e }) => (\n <li key={file.name}>\n <strong>{file.name}</strong>: {getFileUploadErrorMessage(e)}\n </li>\n ))}\n </ol>\n </>\n );\n // TODO @ts-refactor\n }, 750) as unknown as number;\n }\n\n // We wait 750ms, just for everything to settle down a bit.\n setTimeout(() => showSnackbar(t`File upload complete.`), 750);\n if (typeof onUploadCompletion === \"function\") {\n // We wait 750ms, just for everything to settle down a bit.\n return setTimeout(() => {\n onUploadCompletion(uploadedFiles);\n onClose();\n // TODO @ts-refactor\n }, 750) as unknown as number;\n }\n return null;\n };\n\n const renderUploadFileAction = useCallback(\n ({ browseFiles }) => {\n if (!canCreate) {\n return null;\n }\n return (\n <ButtonPrimary onClick={browseFiles} disabled={uploading}>\n <ButtonIcon icon={<UploadIcon />} />\n {t`Upload...`}\n </ButtonPrimary>\n );\n },\n [uploading, canCreate]\n );\n\n const settingsQuery = useQuery(GET_FILE_SETTINGS);\n const settings = get(settingsQuery.data, \"fileManager.getSettings.data\") || {};\n return (\n <Files\n multiple\n maxSize={settings.uploadMaxFileSize ? settings.uploadMaxFileSize + \"b\" : maxSize}\n multipleMaxSize={multipleMaxSize}\n multipleMaxCount={multipleMaxCount}\n accept={accept}\n onSuccess={files => {\n uploadFile(files.map(file => file.src.file as FileItem).filter(Boolean));\n }}\n onError={errors => {\n /**\n * TODO @ts-refactor\n * Figure out if incoming errors var is wrong or the one in the outputFileSelectionError\n */\n // @ts-ignore\n const message = outputFileSelectionError(errors);\n showSnackbar(message);\n }}\n >\n {({ getDropZoneProps, browseFiles, validateFiles }) => (\n <OverlayLayout\n {...getDropZoneProps({\n onDragEnter: () => hasPreviouslyUploadedFiles && setDragging(true),\n onExited: onClose\n })}\n barLeft={\n <InputSearch>\n <Icon className={searchIcon} icon={<SearchIcon />} />\n <input\n ref={searchInput}\n onChange={e => searchOnChange(e.target.value)}\n placeholder={t`Search by filename or tags`}\n disabled={!fmFilePermission}\n data-testid={\"file-manager.search-input\"}\n />\n </InputSearch>\n }\n barRight={\n selected.length > 0 ? (\n <ButtonPrimary\n disabled={uploading}\n onClick={() => {\n (async () => {\n await onChange(multiple ? selected : selected[0]);\n\n onClose();\n })();\n }}\n >\n {t`Select`} {multiple && `(${selected.length})`}\n </ButtonPrimary>\n ) : (\n renderUploadFileAction({ browseFiles })\n )\n }\n >\n <>\n {dragging && hasPreviouslyUploadedFiles && (\n <DropFilesHere\n // @ts-ignore TODO: @adrian - className is never rendered?!\n className={style.draggingFeedback}\n onDragLeave={() => setDragging(false)}\n onDrop={() => setDragging(false)}\n />\n )}\n\n <FileDetails\n validateFiles={validateFiles}\n uploadFile={uploadFile}\n file={getFileDetailsFile({\n list,\n src: showingFileDetails\n })}\n canEdit={canEdit}\n />\n\n <LeftSidebar\n queryParams={queryParams}\n toggleTag={tag => toggleTag({ tag, queryParams })}\n />\n\n <FileListWrapper data-testid={\"fm-list-wrapper\"}>\n {loading && (\n <CircularProgress\n label={t`Loading Files...`}\n style={{ opacity: 1 }}\n />\n )}\n <Scrollbar\n onScrollFrame={scrollFrame =>\n refreshOnScroll({\n scrollFrame,\n fetchMore\n })\n }\n >\n <FileList>\n {list.length\n ? list.map(file =>\n renderFile({\n uploadFile,\n file,\n showFileDetails: () => showFileDetails(file.src),\n selected: selected.find(\n (current: FileItem) =>\n current.src === file.src\n ),\n onSelect:\n typeof onChange === \"undefined\"\n ? () => {\n return void 0;\n }\n : async () => {\n if (multiple) {\n toggleSelected(file);\n return;\n }\n\n await onChange(file);\n onClose();\n }\n })\n )\n : renderEmpty({\n hasPreviouslyUploadedFiles,\n browseFiles,\n fmFilePermission\n })}\n </FileList>\n </Scrollbar>\n <BottomInfoBar accept={accept} uploading={uploading} />\n </FileListWrapper>\n </>\n </OverlayLayout>\n )}\n </Files>\n );\n};\n\nFileManagerView.defaultProps = {\n multiple: false,\n maxSize: \"1000mb\",\n multipleMaxSize: \"1000mb\",\n multipleMaxCount: 100\n};\n\nexport default FileManagerView;\n"]}
1
+ {"version":3,"sources":["FileManagerView.tsx"],"names":["React","useRef","useCallback","useMemo","css","styled","Files","ButtonPrimary","ButtonIcon","Icon","File","useQuery","useMutation","useApolloClient","LIST_FILES","CREATE_FILE","GET_FILE_SETTINGS","getFileTypePlugin","get","debounce","getFileUploader","outputFileSelectionError","DropFilesHere","NoResults","FileDetails","LeftSidebar","BottomInfoBar","OverlayLayout","useSnackbar","Scrollbar","CircularProgress","i18n","useSecurity","useHotkeys","useFileManager","ReactComponent","SearchIcon","UploadIcon","NoPermissionView","t","ns","style","draggingFeedback","position","top","left","width","height","opacity","background","zIndex","leftDrawer","header","textAlign","fontSize","padding","fontWeight","color","InputSearch","backgroundColor","borderRadius","border","marginLeft","outline","searchIcon","FileListWrapper","float","display","FileList","gridTemplateColumns","marginBottom","renderFile","props","file","plugin","id","render","renderEmpty","hasPreviouslyUploadedFiles","browseFiles","fmFilePermission","FileManagerView","onClose","onChange","accept","multiple","maxSize","multipleMaxCount","multipleMaxSize","onUploadCompletion","selected","toggleSelected","dragging","setDragging","uploading","setUploading","showFileDetails","showingFileDetails","queryParams","setQueryParams","setHasPreviouslyUploadedFiles","showSnackbar","identity","getPermission","canCreate","own","rwd","includes","canEdit","item","creatorId","identityId","login","searchOnChange","search","toggleTag","tag","finalTags","Array","isArray","tags","splice","indexOf","push","getFileUploadErrorMessage","e","match","message","updateCacheAfterCreateFile","cache","newFile","newFileData","data","readQuery","query","variables","writeQuery","fileManager","listFiles","getFileDetailsFile","src","list","find","keys","esc","searchInput","apolloClient","gqlQuery","onCompleted","response","length","refreshOnScroll","scrollFrame","fetchMore","cursor","after","updateQuery","prev","result","fetchMoreResult","next","loading","update","createFile","uploadFile","files","errors","uploadedFiles","Promise","all","map","scope","createFileResponse","setTimeout","name","renderUploadFileAction","settingsQuery","settings","uploadMaxFileSize","filter","Boolean","getDropZoneProps","validateFiles","onDragEnter","onExited","target","value","current","onSelect","defaultProps"],"mappings":"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","sourcesContent":["import React, { useRef, useCallback, useMemo } from \"react\";\nimport { css } from \"emotion\";\nimport styled from \"@emotion/styled\";\nimport Files, { FilesRenderChildren } from \"react-butterfiles\";\nimport { ButtonPrimary, ButtonIcon } from \"@webiny/ui/Button\";\nimport { Icon } from \"@webiny/ui/Icon\";\nimport File, { FileProps } from \"./File\";\nimport { useQuery, useMutation, useApolloClient } from \"@apollo/react-hooks\";\nimport { FilesRules } from \"react-butterfiles\";\nimport {\n LIST_FILES,\n CREATE_FILE,\n GET_FILE_SETTINGS,\n CreateFileMutationVariables,\n CreateFileMutationResponse,\n ListFilesQueryResponse,\n ListFilesQueryVariables\n} from \"./graphql\";\nimport getFileTypePlugin from \"./getFileTypePlugin\";\nimport get from \"lodash/get\";\nimport debounce from \"lodash/debounce\";\nimport getFileUploader from \"./getFileUploader\";\nimport outputFileSelectionError from \"./outputFileSelectionError\";\nimport DropFilesHere from \"./DropFilesHere\";\nimport NoResults from \"./NoResults\";\nimport FileDetails from \"./FileDetails\";\nimport LeftSidebar from \"./LeftSidebar\";\nimport BottomInfoBar from \"./BottomInfoBar\";\nimport { OverlayLayout } from \"../OverlayLayout\";\nimport { useSnackbar } from \"~/hooks/useSnackbar\";\nimport { Scrollbar } from \"@webiny/ui/Scrollbar\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { useSecurity } from \"@webiny/app-security\";\n/**\n * Package react-hotkeyz is missing types.\n */\n// @ts-ignore\nimport { useHotkeys } from \"react-hotkeyz\";\nimport { useFileManager } from \"./FileManagerContext\";\nimport { ReactComponent as SearchIcon } from \"./icons/round-search-24px.svg\";\nimport { ReactComponent as UploadIcon } from \"./icons/round-cloud_upload-24px.svg\";\nimport NoPermissionView from \"./NoPermissionView\";\nimport { FileItem, FileManagerSecurityPermission } from \"~/components/FileManager/types\";\nimport { MutationUpdaterFn } from \"apollo-client/core/watchQueryOptions\";\nimport { SecurityPermission } from \"@webiny/app-security/types\";\nimport { ObservableQueryFields } from \"@apollo/react-common/lib/types/types\";\n\nconst t = i18n.ns(\"app-admin/file-manager/file-manager-view\");\n\nconst style = {\n draggingFeedback: css({\n position: \"fixed\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\",\n opacity: 0.5,\n background: \"white\",\n zIndex: 100\n }),\n leftDrawer: {\n header: css({\n textAlign: \"center\",\n fontSize: 18,\n padding: 10,\n fontWeight: 600,\n color: \"var(--mdc-theme-on-surface)\"\n })\n }\n};\n\nconst InputSearch = styled(\"div\")({\n backgroundColor: \"var(--mdc-theme-on-background)\",\n position: \"relative\",\n height: 32,\n padding: 3,\n width: \"100%\",\n borderRadius: 2,\n \"> input\": {\n border: \"none\",\n fontSize: 14,\n width: \"calc(100% - 10px)\",\n height: \"100%\",\n marginLeft: 50,\n backgroundColor: \"transparent\",\n outline: \"none\",\n color: \"var(--mdc-theme-text-primary-on-background)\"\n }\n});\n\nconst searchIcon = css({\n \"&.mdc-button__icon\": {\n color: \"var(--mdc-theme-text-secondary-on-background)\",\n position: \"absolute\",\n width: 24,\n height: 24,\n left: 15,\n top: 7\n }\n});\n\nconst FileListWrapper = styled(\"div\")({\n float: \"right\",\n display: \"inline-block\",\n width: \"calc(100vw - 270px)\",\n height: \"100%\"\n});\n\nconst FileList = styled(\"div\")({\n width: \"100%\",\n display: \"grid\",\n /* define the number of grid columns */\n gridTemplateColumns: \"repeat( auto-fill, minmax(220px, 1fr) )\",\n marginBottom: 95\n});\n\nexport interface FileManagerViewProps {\n onChange?: Function;\n onClose?: Function;\n files?: FilesRules;\n multiple: boolean; // Does not affect <Files> component, it always allows multiple selection.\n accept: Array<string>;\n maxSize: number | string;\n multipleMaxCount: number;\n multipleMaxSize: number | string;\n onUploadCompletion?: Function;\n tags?: string[];\n scope?: string;\n own?: boolean;\n}\n\ninterface RenderFileProps extends Omit<FileProps, \"children\"> {\n file: FileItem;\n children?: React.ReactNode;\n}\nconst renderFile: React.FC<RenderFileProps> = props => {\n const { file } = props;\n const plugin = getFileTypePlugin(file);\n if (!plugin) {\n return null;\n }\n return (\n <File {...props} key={file.id}>\n {plugin.render({\n /**\n * TODO @ts-refactor\n */\n // @ts-ignore\n file\n })}\n </File>\n );\n};\ninterface RenderEmptyProps {\n hasPreviouslyUploadedFiles: boolean;\n browseFiles: FilesRenderChildren[\"browseFiles\"];\n fmFilePermission: SecurityPermission | null;\n}\nconst renderEmpty: React.FC<RenderEmptyProps> = ({\n hasPreviouslyUploadedFiles,\n browseFiles,\n fmFilePermission\n}) => {\n if (!fmFilePermission) {\n return <NoPermissionView />;\n }\n if (hasPreviouslyUploadedFiles) {\n return <NoResults />;\n }\n return <DropFilesHere empty onClick={() => browseFiles()} />;\n};\n\ninterface RefreshOnScrollParams {\n fetchMore: ObservableQueryFields<ListFilesQueryResponse, ListFilesQueryVariables>[\"fetchMore\"];\n scrollFrame: {\n top: number;\n };\n}\n\ninterface FileError {\n file: FileItem;\n e: Error;\n}\n\ninterface GetFileDetailsFileParams {\n src: string;\n list: FileItem[];\n}\n\nconst FileManagerView: React.FC<FileManagerViewProps> = props => {\n const {\n onClose,\n onChange,\n accept,\n multiple,\n maxSize,\n multipleMaxCount,\n multipleMaxSize,\n onUploadCompletion\n } = props;\n\n const {\n selected,\n toggleSelected,\n dragging,\n setDragging,\n uploading,\n setUploading,\n showFileDetails,\n showingFileDetails,\n queryParams,\n setQueryParams,\n hasPreviouslyUploadedFiles,\n setHasPreviouslyUploadedFiles\n } = useFileManager();\n const { showSnackbar } = useSnackbar();\n\n const { identity, getPermission } = useSecurity();\n const fmFilePermission = useMemo((): FileManagerSecurityPermission | null => {\n return getPermission<FileManagerSecurityPermission>(\"fm.file\");\n }, [identity]);\n const canCreate = useMemo(() => {\n // Bail out early if no access\n if (!fmFilePermission) {\n return false;\n }\n\n if (fmFilePermission.own) {\n return true;\n }\n\n if (typeof fmFilePermission.rwd === \"string\") {\n return fmFilePermission.rwd.includes(\"w\");\n }\n\n return true;\n }, [fmFilePermission]);\n const canEdit = useCallback(\n item => {\n // Bail out early if no access\n if (!fmFilePermission) {\n return false;\n }\n const creatorId = get(item, \"createdBy.id\");\n\n if (fmFilePermission.own && creatorId) {\n const identityId = identity ? identity.id || identity.login : null;\n return creatorId === identityId;\n }\n\n if (typeof fmFilePermission.rwd === \"string\") {\n return fmFilePermission.rwd.includes(\"w\");\n }\n\n return true;\n },\n [fmFilePermission]\n );\n\n const searchOnChange = useCallback(\n // @ts-ignore\n debounce(search => setQueryParams({ search }), 500),\n []\n );\n\n const toggleTag = useCallback(async ({ tag, queryParams }) => {\n const finalTags = Array.isArray(queryParams.tags) ? [...queryParams.tags] : [];\n\n if (finalTags.includes(tag)) {\n finalTags.splice(finalTags.indexOf(tag), 1);\n } else {\n finalTags.push(tag);\n }\n\n setQueryParams({ ...queryParams, tags: finalTags });\n }, []);\n\n const getFileUploadErrorMessage = useCallback(e => {\n if (typeof e === \"string\") {\n const match = e.match(/Message>(.*?)<\\/Message/);\n if (match) {\n const [, message] = match;\n return message;\n }\n\n return e;\n }\n return e.message;\n }, []);\n\n const updateCacheAfterCreateFile: MutationUpdaterFn<CreateFileMutationResponse> = (\n cache,\n newFile\n ) => {\n const newFileData = get(newFile, \"data.fileManager.createFile.data\");\n\n const data = cache.readQuery<ListFilesQueryResponse>({\n query: LIST_FILES,\n variables: queryParams\n });\n\n cache.writeQuery({\n query: LIST_FILES,\n variables: queryParams,\n data: {\n fileManager: {\n ...(data?.fileManager || {}),\n listFiles: {\n ...(data?.fileManager || {}).listFiles,\n data: [newFileData, ...((data?.fileManager?.listFiles || {}).data || [])]\n }\n }\n }\n });\n };\n\n const getFileDetailsFile = useCallback(({ src, list }: GetFileDetailsFileParams): FileItem => {\n return list.find(item => item.src === src) as FileItem;\n }, []);\n\n useHotkeys({\n zIndex: 50,\n keys: {\n esc: onClose\n }\n });\n\n const searchInput = useRef<HTMLInputElement>(null);\n\n const apolloClient = useApolloClient();\n\n const gqlQuery = useQuery<ListFilesQueryResponse, ListFilesQueryVariables>(LIST_FILES, {\n variables: queryParams,\n onCompleted: response => {\n const list = get(response, \"fileManager.listFiles.data\") || [];\n if (hasPreviouslyUploadedFiles === null) {\n setHasPreviouslyUploadedFiles(list.length > 0);\n }\n }\n });\n\n const refreshOnScroll = useCallback(\n debounce(({ scrollFrame, fetchMore }: RefreshOnScrollParams) => {\n if (scrollFrame.top > 0.9) {\n const cursor = get(gqlQuery.data, \"fileManager.listFiles.meta.cursor\");\n if (cursor) {\n fetchMore({\n variables: { after: cursor },\n updateQuery: (\n prev: ListFilesQueryResponse,\n result: { fetchMoreResult?: ListFilesQueryResponse }\n ) => {\n const { fetchMoreResult } = result;\n if (!fetchMoreResult) {\n return prev;\n }\n\n const next = { ...fetchMoreResult };\n\n next.fileManager.listFiles.data = [\n ...prev.fileManager.listFiles.data,\n ...fetchMoreResult.fileManager.listFiles.data\n ];\n\n return next;\n }\n });\n }\n }\n }, 500),\n [gqlQuery]\n );\n\n const { data, fetchMore, loading } = gqlQuery;\n\n const list: FileItem[] = get(data, \"fileManager.listFiles.data\") || [];\n const [createFile] = useMutation<CreateFileMutationResponse, CreateFileMutationVariables>(\n CREATE_FILE,\n {\n update: updateCacheAfterCreateFile\n }\n );\n const uploadFile = async (files: FileItem[] | FileItem): Promise<number | null> => {\n setUploading(true);\n const list: FileItem[] = Array.isArray(files) ? files : [files];\n\n const errors: FileError[] = [];\n const uploadedFiles: FileItem[] = [];\n await Promise.all(\n list.map(async file => {\n try {\n const response = await getFileUploader()(file, { apolloClient });\n /**\n * Add \"tags\" while creating the new file.\n */\n const createFileResponse = await createFile({\n variables: {\n data: {\n ...response,\n tags: queryParams.scope ? [queryParams.scope] : []\n }\n }\n });\n // Save create file data for later\n uploadedFiles.push(get(createFileResponse, \"data.fileManager.createFile.data\"));\n } catch (e) {\n errors.push({ file, e });\n }\n })\n );\n\n if (!hasPreviouslyUploadedFiles) {\n setHasPreviouslyUploadedFiles(true);\n }\n\n setUploading(false);\n\n if (errors.length > 0) {\n // We wait 750ms, just for everything to settle down a bit.\n return setTimeout(() => {\n showSnackbar(\n <>\n {t`One or more files were not uploaded successfully:`}\n <ol>\n {errors.map(({ file, e }) => (\n <li key={file.name}>\n <strong>{file.name}</strong>: {getFileUploadErrorMessage(e)}\n </li>\n ))}\n </ol>\n </>\n );\n // TODO @ts-refactor\n }, 750) as unknown as number;\n }\n\n // We wait 750ms, just for everything to settle down a bit.\n setTimeout(() => showSnackbar(t`File upload complete.`), 750);\n if (typeof onUploadCompletion === \"function\") {\n // We wait 750ms, just for everything to settle down a bit.\n return setTimeout(() => {\n onUploadCompletion(uploadedFiles);\n onClose && onClose();\n // TODO @ts-refactor\n }, 750) as unknown as number;\n }\n return null;\n };\n\n const renderUploadFileAction = useCallback(\n ({ browseFiles }) => {\n if (!canCreate) {\n return null;\n }\n return (\n <ButtonPrimary onClick={browseFiles} disabled={uploading}>\n <ButtonIcon icon={<UploadIcon />} />\n {t`Upload...`}\n </ButtonPrimary>\n );\n },\n [uploading, canCreate]\n );\n\n const settingsQuery = useQuery(GET_FILE_SETTINGS);\n const settings = get(settingsQuery.data, \"fileManager.getSettings.data\") || {};\n return (\n <Files\n multiple\n maxSize={settings.uploadMaxFileSize ? settings.uploadMaxFileSize + \"b\" : maxSize}\n multipleMaxSize={multipleMaxSize}\n multipleMaxCount={multipleMaxCount}\n accept={accept}\n onSuccess={files => {\n uploadFile(files.map(file => file.src.file as FileItem).filter(Boolean));\n }}\n onError={errors => {\n /**\n * TODO @ts-refactor\n * Figure out if incoming errors var is wrong or the one in the outputFileSelectionError\n */\n // @ts-ignore\n const message = outputFileSelectionError(errors);\n showSnackbar(message);\n }}\n >\n {({ getDropZoneProps, browseFiles, validateFiles }) => (\n <OverlayLayout\n {...getDropZoneProps({\n onDragEnter: () => hasPreviouslyUploadedFiles && setDragging(true),\n onExited: onClose\n })}\n barLeft={\n <InputSearch>\n <Icon className={searchIcon} icon={<SearchIcon />} />\n <input\n ref={searchInput}\n onChange={e => searchOnChange(e.target.value)}\n placeholder={t`Search by filename or tags`}\n disabled={!fmFilePermission}\n data-testid={\"file-manager.search-input\"}\n />\n </InputSearch>\n }\n barRight={\n selected.length > 0 ? (\n <ButtonPrimary\n disabled={uploading}\n onClick={() => {\n (async () => {\n if (typeof onChange === \"function\") {\n await onChange(multiple ? selected : selected[0]);\n\n onClose && onClose();\n }\n })();\n }}\n >\n {t`Select`} {multiple && `(${selected.length})`}\n </ButtonPrimary>\n ) : (\n renderUploadFileAction({ browseFiles })\n )\n }\n >\n <>\n {dragging && hasPreviouslyUploadedFiles && (\n <DropFilesHere\n // @ts-ignore TODO: @adrian - className is never rendered?!\n className={style.draggingFeedback}\n onDragLeave={() => setDragging(false)}\n onDrop={() => setDragging(false)}\n />\n )}\n\n <FileDetails\n validateFiles={validateFiles}\n uploadFile={uploadFile}\n file={getFileDetailsFile({\n list,\n src: showingFileDetails\n })}\n canEdit={canEdit}\n />\n\n <LeftSidebar\n queryParams={queryParams}\n toggleTag={tag => toggleTag({ tag, queryParams })}\n />\n\n <FileListWrapper data-testid={\"fm-list-wrapper\"}>\n {loading && (\n <CircularProgress\n label={t`Loading Files...`}\n style={{ opacity: 1 }}\n />\n )}\n <Scrollbar\n onScrollFrame={scrollFrame =>\n refreshOnScroll({\n scrollFrame,\n fetchMore\n })\n }\n >\n <FileList>\n {list.length\n ? list.map(file =>\n renderFile({\n uploadFile,\n file,\n showFileDetails: () => showFileDetails(file.src),\n selected: selected.find(\n (current: FileItem) =>\n current.src === file.src\n ),\n onSelect: async () => {\n if (typeof onChange === \"function\") {\n if (multiple) {\n toggleSelected(file);\n return;\n }\n\n await onChange(file);\n onClose && onClose();\n }\n }\n })\n )\n : renderEmpty({\n hasPreviouslyUploadedFiles,\n browseFiles,\n fmFilePermission\n })}\n </FileList>\n </Scrollbar>\n <BottomInfoBar accept={accept} uploading={uploading} />\n </FileListWrapper>\n </>\n </OverlayLayout>\n )}\n </Files>\n );\n};\n\nFileManagerView.defaultProps = {\n multiple: false,\n maxSize: \"1000mb\",\n multipleMaxSize: \"1000mb\",\n multipleMaxCount: 100\n};\n\nexport default FileManagerView;\n"]}
@@ -50,14 +50,8 @@ var FileManagerPortal = /*#__PURE__*/function (_React$Component) {
50
50
  key: "render",
51
51
  value: function render() {
52
52
  var _this$props = this.props,
53
- _this$props$onChange = _this$props.onChange,
54
- onChange = _this$props$onChange === void 0 ? function () {
55
- return void 0;
56
- } : _this$props$onChange,
57
- _this$props$onClose = _this$props.onClose,
58
- onClose = _this$props$onClose === void 0 ? function () {
59
- return void 0;
60
- } : _this$props$onClose,
53
+ onChange = _this$props.onChange,
54
+ onClose = _this$props.onClose,
61
55
  accept = _this$props.accept,
62
56
  onChangePick = _this$props.onChangePick,
63
57
  multiple = _this$props.multiple,
@@ -82,18 +76,16 @@ var FileManagerPortal = /*#__PURE__*/function (_React$Component) {
82
76
  var items = files.map(function (file) {
83
77
  return pick(file, fields);
84
78
  });
85
- onChange(items);
79
+ onChange && onChange(items);
86
80
  return;
87
81
  }
88
82
 
89
83
  var file = pick(files, fields);
90
- onChange(file);
84
+ onChange && onChange(file);
91
85
  };
92
86
 
93
87
  var props = {
94
- onChange: typeof onChange === "function" ? handleFileOnChange : function () {
95
- return void 0;
96
- },
88
+ onChange: typeof onChange === "function" ? handleFileOnChange : undefined,
97
89
  onClose: onClose,
98
90
  accept: accept,
99
91
  multiple: multiple,
@@ -1 +1 @@
1
- {"version":3,"sources":["FileManager.tsx"],"names":["React","useCallback","useEffect","useRef","useState","ReactDOM","FileManagerView","pick","FileManagerProvider","FileManagerPortal","props","window","container","document","getElementById","createElement","setAttribute","body","appendChild","onChange","onClose","accept","onChangePick","multiple","images","maxSize","multipleMaxCount","multipleMaxSize","onUploadCompletion","tags","scope","own","handleFileOnChange","files","length","fields","Array","isArray","items","map","file","createPortal","Component","FileManager","children","rest","show","setShow","onChangeRef","current","showFileManager"],"mappings":"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","sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport FileManagerView, { FileManagerViewProps } from \"./FileManager/FileManagerView\";\nimport pick from \"lodash/pick\";\nimport { FileManagerProvider } from \"./FileManager/FileManagerContext\";\nimport { FileItem } from \"./FileManager/types\";\n\nexport interface ShowFileManagerCallable {\n (onChange?: (file?: FileItem | FileItem[]) => void): void;\n}\nexport interface FileManagerPropsChildren {\n showFileManager: ShowFileManagerCallable;\n}\n\nexport interface FileManagerProps {\n onChange?: (files: FileItem[] | FileItem) => void;\n onChangePick?: string[];\n images?: boolean;\n multiple?: boolean;\n accept?: Array<string>;\n tags?: Array<string>;\n scope?: string;\n own?: boolean;\n children: (params: FileManagerPropsChildren) => React.ReactNode;\n maxSize?: number | string;\n multipleMaxCount?: number;\n multipleMaxSize?: number | string;\n onClose?: Function;\n onUploadCompletion?: (files: FileItem[]) => void;\n}\n\nexport type FileManagerPortalProps = Omit<FileManagerProps, \"children\">;\n\nclass FileManagerPortal extends React.Component<FileManagerPortalProps> {\n public container: HTMLElement | null = null;\n constructor(props: FileManagerPortalProps) {\n super(props);\n\n if (!window) {\n return;\n }\n\n this.container = window.document.getElementById(\"file-manager-container\");\n\n if (!this.container) {\n this.container = document.createElement(\"div\");\n this.container.setAttribute(\"id\", \"file-manager-container\");\n const container = this.container;\n document.body && document.body.appendChild(container);\n }\n }\n\n public override render() {\n const {\n onChange = () => {\n return void 0;\n },\n onClose = () => {\n return void 0;\n },\n accept,\n onChangePick,\n multiple,\n images,\n maxSize,\n multipleMaxCount,\n multipleMaxSize,\n onUploadCompletion,\n tags,\n scope,\n own\n } = this.props;\n\n const container = this.container as HTMLElement;\n\n const handleFileOnChange = (files?: FileItem[] | FileItem) => {\n if (!files || files.length === 0) {\n return;\n }\n const fields = Array.isArray(onChangePick)\n ? onChangePick\n : [\"id\", \"name\", \"key\", \"src\", \"size\", \"type\"];\n\n if (Array.isArray(files) === true) {\n const items = (files as FileItem[]).map(file => pick(file, fields));\n onChange(items as FileItem[]);\n return;\n }\n const file = pick(files as FileItem, fields);\n\n onChange(file as FileItem);\n };\n\n const props: FileManagerViewProps = {\n onChange:\n typeof onChange === \"function\"\n ? handleFileOnChange\n : () => {\n return void 0;\n },\n onClose,\n accept: accept as string[],\n multiple: multiple as boolean,\n maxSize: maxSize as string,\n multipleMaxCount: multipleMaxCount as number,\n multipleMaxSize: multipleMaxSize as number,\n onUploadCompletion,\n tags: tags,\n scope: scope,\n own: own\n };\n\n if (images) {\n props.accept = [\n \"image/jpg\",\n \"image/jpeg\",\n \"image/tiff\",\n \"image/gif\",\n \"image/png\",\n \"image/webp\",\n \"image/bmp\",\n \"image/svg+xml\"\n ];\n }\n\n // Let's pass \"permanent\" / \"persistent\" / \"temporary\" flags as \"mode\" prop instead.\n return ReactDOM.createPortal(\n <FileManagerProvider {...props}>\n <FileManagerView {...props} />\n </FileManagerProvider>,\n container\n );\n }\n}\n\nexport const FileManager: React.FC<FileManagerProps> = ({ children, ...rest }) => {\n const [show, setShow] = useState(false);\n const onChangeRef = useRef(rest.onChange);\n\n useEffect(() => {\n onChangeRef.current = rest.onChange;\n }, [rest.onChange]);\n\n const showFileManager = useCallback(onChange => {\n if (typeof onChange === \"function\") {\n onChangeRef.current = onChange;\n }\n setShow(true);\n }, []);\n\n return (\n <>\n {show && (\n <FileManagerPortal\n onClose={() => setShow(false)}\n {...rest}\n onChange={onChangeRef.current}\n />\n )}\n {children({ showFileManager })}\n </>\n );\n};\n"]}
1
+ {"version":3,"sources":["FileManager.tsx"],"names":["React","useCallback","useEffect","useRef","useState","ReactDOM","FileManagerView","pick","FileManagerProvider","FileManagerPortal","props","window","container","document","getElementById","createElement","setAttribute","body","appendChild","onChange","onClose","accept","onChangePick","multiple","images","maxSize","multipleMaxCount","multipleMaxSize","onUploadCompletion","tags","scope","own","handleFileOnChange","files","length","fields","Array","isArray","items","map","file","undefined","createPortal","Component","FileManager","children","rest","show","setShow","onChangeRef","current","showFileManager"],"mappings":"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","sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport FileManagerView, { FileManagerViewProps } from \"./FileManager/FileManagerView\";\nimport pick from \"lodash/pick\";\nimport { FileManagerProvider } from \"./FileManager/FileManagerContext\";\nimport { FileItem } from \"./FileManager/types\";\n\nexport interface ShowFileManagerCallable {\n (onChange?: (file?: FileItem | FileItem[]) => void): void;\n}\nexport interface FileManagerPropsChildren {\n showFileManager: ShowFileManagerCallable;\n}\n\nexport interface FileManagerProps {\n onChange?: (files: FileItem[] | FileItem) => void;\n onChangePick?: string[];\n images?: boolean;\n multiple?: boolean;\n accept?: Array<string>;\n tags?: Array<string>;\n scope?: string;\n own?: boolean;\n children: (params: FileManagerPropsChildren) => React.ReactNode;\n maxSize?: number | string;\n multipleMaxCount?: number;\n multipleMaxSize?: number | string;\n onClose?: Function;\n onUploadCompletion?: (files: FileItem[]) => void;\n}\n\nexport type FileManagerPortalProps = Omit<FileManagerProps, \"children\">;\n\nclass FileManagerPortal extends React.Component<FileManagerPortalProps> {\n public container: HTMLElement | null = null;\n constructor(props: FileManagerPortalProps) {\n super(props);\n\n if (!window) {\n return;\n }\n\n this.container = window.document.getElementById(\"file-manager-container\");\n\n if (!this.container) {\n this.container = document.createElement(\"div\");\n this.container.setAttribute(\"id\", \"file-manager-container\");\n const container = this.container;\n document.body && document.body.appendChild(container);\n }\n }\n\n public override render() {\n const {\n onChange,\n onClose,\n accept,\n onChangePick,\n multiple,\n images,\n maxSize,\n multipleMaxCount,\n multipleMaxSize,\n onUploadCompletion,\n tags,\n scope,\n own\n } = this.props;\n\n const container = this.container as HTMLElement;\n\n const handleFileOnChange = (files?: FileItem[] | FileItem) => {\n if (!files || files.length === 0) {\n return;\n }\n const fields = Array.isArray(onChangePick)\n ? onChangePick\n : [\"id\", \"name\", \"key\", \"src\", \"size\", \"type\"];\n\n if (Array.isArray(files) === true) {\n const items = (files as FileItem[]).map(file => pick(file, fields));\n onChange && onChange(items as FileItem[]);\n return;\n }\n const file = pick(files as FileItem, fields);\n\n onChange && onChange(file as FileItem);\n };\n\n const props: FileManagerViewProps = {\n onChange: typeof onChange === \"function\" ? handleFileOnChange : undefined,\n onClose,\n accept: accept as string[],\n multiple: multiple as boolean,\n maxSize: maxSize as string,\n multipleMaxCount: multipleMaxCount as number,\n multipleMaxSize: multipleMaxSize as number,\n onUploadCompletion,\n tags: tags,\n scope: scope,\n own: own\n };\n\n if (images) {\n props.accept = [\n \"image/jpg\",\n \"image/jpeg\",\n \"image/tiff\",\n \"image/gif\",\n \"image/png\",\n \"image/webp\",\n \"image/bmp\",\n \"image/svg+xml\"\n ];\n }\n\n // Let's pass \"permanent\" / \"persistent\" / \"temporary\" flags as \"mode\" prop instead.\n return ReactDOM.createPortal(\n <FileManagerProvider {...props}>\n <FileManagerView {...props} />\n </FileManagerProvider>,\n container\n );\n }\n}\n\nexport const FileManager: React.FC<FileManagerProps> = ({ children, ...rest }) => {\n const [show, setShow] = useState(false);\n const onChangeRef = useRef(rest.onChange);\n\n useEffect(() => {\n onChangeRef.current = rest.onChange;\n }, [rest.onChange]);\n\n const showFileManager = useCallback(onChange => {\n if (typeof onChange === \"function\") {\n onChangeRef.current = onChange;\n }\n setShow(true);\n }, []);\n\n return (\n <>\n {show && (\n <FileManagerPortal\n onClose={() => setShow(false)}\n {...rest}\n onChange={onChangeRef.current}\n />\n )}\n {children({ showFileManager })}\n </>\n );\n};\n"]}
@@ -61,19 +61,23 @@
61
61
  content: none !important;
62
62
  }
63
63
 
64
+ .ce-toolbar__actions {
65
+ right: unset;
66
+ }
67
+
64
68
  .ce-toolbar__actions--opened {
65
69
  opacity: 1;
66
70
  background-color: white;
67
71
  border-radius: 5px;
68
72
  border: 1px solid #e8e8eb;
69
73
  padding: 3px;
74
+ top: -3px;
70
75
  }
71
76
 
72
77
  .ce-toolbar__content {
73
78
  max-width: 650px;
74
79
  margin: 0 auto;
75
80
  position: absolute;
76
- left: 55px;
77
81
  }
78
82
  }
79
83
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/app-admin",
3
- "version": "5.26.1-beta.0",
3
+ "version": "5.27.0-beta.0",
4
4
  "main": "index.js",
5
5
  "description": "A collection of plugins that together form a complete admin interface, customizable and extensible with Webiny apps and plugins.",
6
6
  "repository": {
@@ -20,16 +20,16 @@
20
20
  "@svgr/webpack": "6.2.1",
21
21
  "@types/mime": "2.0.3",
22
22
  "@types/react": "16.14.2",
23
- "@webiny/app": "5.26.1-beta.0",
24
- "@webiny/app-admin-core": "5.26.1-beta.0",
25
- "@webiny/app-security": "5.26.1-beta.0",
26
- "@webiny/form": "5.26.1-beta.0",
27
- "@webiny/plugins": "5.26.1-beta.0",
28
- "@webiny/react-router": "5.26.1-beta.0",
29
- "@webiny/telemetry": "5.26.1-beta.0",
30
- "@webiny/ui": "5.26.1-beta.0",
31
- "@webiny/ui-composer": "5.26.1-beta.0",
32
- "@webiny/validation": "5.26.1-beta.0",
23
+ "@webiny/app": "5.27.0-beta.0",
24
+ "@webiny/app-admin-core": "5.27.0-beta.0",
25
+ "@webiny/app-security": "5.27.0-beta.0",
26
+ "@webiny/form": "5.27.0-beta.0",
27
+ "@webiny/plugins": "5.27.0-beta.0",
28
+ "@webiny/react-router": "5.27.0-beta.0",
29
+ "@webiny/telemetry": "5.27.0-beta.0",
30
+ "@webiny/ui": "5.27.0-beta.0",
31
+ "@webiny/ui-composer": "5.27.0-beta.0",
32
+ "@webiny/validation": "5.27.0-beta.0",
33
33
  "apollo-cache": "1.3.5",
34
34
  "apollo-client": "2.6.10",
35
35
  "apollo-link": "1.2.14",
@@ -69,8 +69,8 @@
69
69
  "@types/bytes": "^3.1.1",
70
70
  "@types/graphlib": "^2.1.8",
71
71
  "@types/store": "^2.0.2",
72
- "@webiny/cli": "^5.26.1-beta.0",
73
- "@webiny/project-utils": "^5.26.1-beta.0",
72
+ "@webiny/cli": "^5.27.0-beta.0",
73
+ "@webiny/project-utils": "^5.27.0-beta.0",
74
74
  "babel-plugin-emotion": "^9.2.8",
75
75
  "babel-plugin-lodash": "^3.3.4",
76
76
  "rimraf": "^3.0.2",
@@ -97,5 +97,5 @@
97
97
  ]
98
98
  }
99
99
  },
100
- "gitHead": "d85df0d292bfd4ee2422cbb59de18ee8899df076"
100
+ "gitHead": "9e557dd294ae37cf84f17e0e8158c2ed16e2d415"
101
101
  }
@@ -4,14 +4,14 @@ export declare const AddImageWrapperRound: import("@emotion/styled-base").Styled
4
4
  theme?: object | undefined;
5
5
  } & {
6
6
  children?: import("react").ReactNode;
7
- }, "key" | keyof import("react").HTMLAttributes<HTMLDivElement> | "theme"> & {
7
+ }, "key" | "theme" | keyof import("react").HTMLAttributes<HTMLDivElement>> & {
8
8
  ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
9
9
  }, Pick<Pick<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & Pick<Pick<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement>, keyof import("react").HTMLAttributes<HTMLDivElement>>, keyof import("react").HTMLAttributes<HTMLDivElement>> & {
10
10
  theme?: object | undefined;
11
11
  } & {
12
12
  children?: import("react").ReactNode;
13
- }, "key" | keyof import("react").HTMLAttributes<HTMLDivElement> | "theme"> & {
13
+ }, "key" | "theme" | keyof import("react").HTMLAttributes<HTMLDivElement>> & {
14
14
  ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
15
- }, keyof import("react").HTMLAttributes<HTMLDivElement> | "theme">, object>;
15
+ }, "theme" | keyof import("react").HTMLAttributes<HTMLDivElement>>, object>;
16
16
  export declare const RemoveImage: import("@emotion/styled-base").StyledComponent<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, Pick<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement>, keyof import("react").HTMLAttributes<HTMLDivElement>>, object>;
17
17
  export declare const FilePreviewWrapper: import("@emotion/styled-base").StyledComponent<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, Pick<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement>, keyof import("react").HTMLAttributes<HTMLDivElement>>, object>;