@webiny/app-admin 5.15.0 → 5.16.0-beta.3

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.
@@ -9,6 +9,7 @@ declare type FileManagerViewProps = {
9
9
  maxSize: number | string;
10
10
  multipleMaxCount: number;
11
11
  multipleMaxSize: number | string;
12
+ onUploadCompletion?: Function;
12
13
  };
13
14
  declare function FileManagerView(props: FileManagerViewProps): JSX.Element;
14
15
  declare namespace FileManagerView {
@@ -147,7 +147,8 @@ function FileManagerView(props) {
147
147
  multiple = props.multiple,
148
148
  maxSize = props.maxSize,
149
149
  multipleMaxCount = props.multipleMaxCount,
150
- multipleMaxSize = props.multipleMaxSize;
150
+ multipleMaxSize = props.multipleMaxSize,
151
+ onUploadCompletion = props.onUploadCompletion;
151
152
 
152
153
  var _useFileManager = useFileManager(),
153
154
  selected = _useFileManager.selected,
@@ -348,7 +349,7 @@ function FileManagerView(props) {
348
349
 
349
350
  var uploadFile = /*#__PURE__*/function () {
350
351
  var _ref7 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(files) {
351
- var list, errors;
352
+ var list, errors, uploadedFiles;
352
353
  return _regeneratorRuntime.wrap(function _callee3$(_context3) {
353
354
  while (1) {
354
355
  switch (_context3.prev = _context3.next) {
@@ -356,10 +357,11 @@ function FileManagerView(props) {
356
357
  setUploading(true);
357
358
  list = Array.isArray(files) ? files : [files];
358
359
  errors = [];
359
- _context3.next = 5;
360
+ uploadedFiles = [];
361
+ _context3.next = 6;
360
362
  return Promise.all(list.map( /*#__PURE__*/function () {
361
363
  var _ref8 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(file) {
362
- var response;
364
+ var response, createFileResponse;
363
365
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
364
366
  while (1) {
365
367
  switch (_context2.prev = _context2.next) {
@@ -380,23 +382,26 @@ function FileManagerView(props) {
380
382
  });
381
383
 
382
384
  case 6:
383
- _context2.next = 11;
385
+ createFileResponse = _context2.sent;
386
+ // Save create file data for later
387
+ uploadedFiles.push(get(createFileResponse, "data.fileManager.createFile.data"));
388
+ _context2.next = 13;
384
389
  break;
385
390
 
386
- case 8:
387
- _context2.prev = 8;
391
+ case 10:
392
+ _context2.prev = 10;
388
393
  _context2.t0 = _context2["catch"](0);
389
394
  errors.push({
390
395
  file: file,
391
396
  e: _context2.t0
392
397
  });
393
398
 
394
- case 11:
399
+ case 13:
395
400
  case "end":
396
401
  return _context2.stop();
397
402
  }
398
403
  }
399
- }, _callee2, null, [[0, 8]]);
404
+ }, _callee2, null, [[0, 10]]);
400
405
  }));
401
406
 
402
407
  return function (_x3) {
@@ -404,7 +409,7 @@ function FileManagerView(props) {
404
409
  };
405
410
  }()));
406
411
 
407
- case 5:
412
+ case 6:
408
413
  if (!hasPreviouslyUploadedFiles) {
409
414
  setHasPreviouslyUploadedFiles(true);
410
415
  }
@@ -412,7 +417,7 @@ function FileManagerView(props) {
412
417
  setUploading(false);
413
418
 
414
419
  if (!(errors.length > 0)) {
415
- _context3.next = 9;
420
+ _context3.next = 10;
416
421
  break;
417
422
  }
418
423
 
@@ -426,13 +431,21 @@ function FileManagerView(props) {
426
431
  }))));
427
432
  }, 750));
428
433
 
429
- case 9:
434
+ case 10:
430
435
  // We wait 750ms, just for everything to settle down a bit.
431
436
  setTimeout(function () {
432
437
  return showSnackbar(t(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["File upload complete."]))));
433
438
  }, 750);
434
439
 
435
- case 10:
440
+ if (typeof onUploadCompletion === "function") {
441
+ // We wait 750ms, just for everything to settle down a bit.
442
+ setTimeout(function () {
443
+ onUploadCompletion(uploadedFiles);
444
+ onClose();
445
+ }, 750);
446
+ }
447
+
448
+ case 12:
436
449
  case "end":
437
450
  return _context3.stop();
438
451
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/FileManager/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","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","selected","toggleSelected","dragging","setDragging","uploading","setUploading","showFileDetails","showingFileDetails","queryParams","setQueryParams","setHasPreviouslyUploadedFiles","showSnackbar","identity","getPermission","canCreate","own","rwd","includes","canEdit","item","creatorId","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","fetchMoreResult","next","loading","update","createFile","uploadFile","files","errors","Promise","all","map","setTimeout","name","renderUploadFileAction","settingsQuery","settings","uploadMaxFileSize","getDropZoneProps","validateFiles","onDragEnter","onExited","target","value","current","onSelect","undefined","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 from \"react-butterfiles\";\nimport { ButtonPrimary, ButtonIcon } from \"@webiny/ui/Button\";\nimport { Icon } from \"@webiny/ui/Icon\";\nimport File from \"./File\";\nimport { useQuery, useMutation, useApolloClient } from \"@apollo/react-hooks\";\nimport { FilesRules } from \"react-butterfiles\";\nimport { LIST_FILES, CREATE_FILE, GET_FILE_SETTINGS } 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\";\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\";\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\ntype 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};\n\nfunction renderFile(props) {\n const { file } = props;\n const plugin = getFileTypePlugin(file);\n return (\n <File {...props} key={file.id}>\n {plugin.render({ file })}\n </File>\n );\n}\n\nconst renderEmpty = ({ hasPreviouslyUploadedFiles, browseFiles, fmFilePermission }) => {\n if (!fmFilePermission) {\n return <NoPermissionView />;\n }\n if (hasPreviouslyUploadedFiles) {\n return <NoResults />;\n }\n return <DropFilesHere empty onClick={browseFiles} />;\n};\n\nfunction FileManagerView(props: FileManagerViewProps) {\n const { onClose, onChange, accept, multiple, maxSize, multipleMaxCount, multipleMaxSize } =\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 } = useSecurity();\n const fmFilePermission = useMemo(() => identity.getPermission(\"fm.file\"), []);\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 return creatorId === identity.login;\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 = (cache, newFile) => {\n const newFileData = get(newFile, \"data.fileManager.createFile.data\");\n\n const data = cache.readQuery({ query: LIST_FILES, variables: queryParams });\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(function getFileDetailsFile({ src, list }) {\n return list.find(item => item.src === src);\n }, []);\n\n useHotkeys({\n zIndex: 50,\n keys: {\n esc: onClose\n }\n });\n\n const searchInput = useRef();\n\n const apolloClient = useApolloClient();\n\n const gqlQuery = useQuery(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 }) => {\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: (prev, { fetchMoreResult }) => {\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 = get(data, \"fileManager.listFiles.data\") || [];\n const [createFile] = useMutation(CREATE_FILE, { update: updateCacheAfterCreateFile });\n const uploadFile = async files => {\n setUploading(true);\n const list = Array.isArray(files) ? files : [files];\n\n const errors = [];\n await Promise.all(\n list.map(async file => {\n try {\n const response = await getFileUploader()(file, { apolloClient });\n await createFile({ variables: { data: response } });\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 }, 750);\n }\n\n // We wait 750ms, just for everything to settle down a bit.\n setTimeout(() => showSnackbar(t`File upload complete.`), 750);\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 => uploadFile(files.map(file => file.src.file))}\n onError={errors => {\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={async () => {\n await onChange(multiple ? selected : selected[0]);\n\n onClose();\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 => current.src === file.src\n ),\n onSelect:\n typeof onChange === \"undefined\"\n ? undefined\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"],"file":"FileManagerView.js"}
1
+ {"version":3,"sources":["../../../src/components/FileManager/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","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","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","fetchMoreResult","next","loading","update","createFile","uploadFile","files","errors","uploadedFiles","Promise","all","map","createFileResponse","setTimeout","name","renderUploadFileAction","settingsQuery","settings","uploadMaxFileSize","getDropZoneProps","validateFiles","onDragEnter","onExited","target","value","current","onSelect","undefined","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 from \"react-butterfiles\";\nimport { ButtonPrimary, ButtonIcon } from \"@webiny/ui/Button\";\nimport { Icon } from \"@webiny/ui/Icon\";\nimport File from \"./File\";\nimport { useQuery, useMutation, useApolloClient } from \"@apollo/react-hooks\";\nimport { FilesRules } from \"react-butterfiles\";\nimport { LIST_FILES, CREATE_FILE, GET_FILE_SETTINGS } 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\";\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\";\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\ntype 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};\n\nfunction renderFile(props) {\n const { file } = props;\n const plugin = getFileTypePlugin(file);\n return (\n <File {...props} key={file.id}>\n {plugin.render({ file })}\n </File>\n );\n}\n\nconst renderEmpty = ({ hasPreviouslyUploadedFiles, browseFiles, fmFilePermission }) => {\n if (!fmFilePermission) {\n return <NoPermissionView />;\n }\n if (hasPreviouslyUploadedFiles) {\n return <NoResults />;\n }\n return <DropFilesHere empty onClick={browseFiles} />;\n};\n\nfunction FileManagerView(props: FileManagerViewProps) {\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 } = useSecurity();\n const fmFilePermission = useMemo(() => identity.getPermission(\"fm.file\"), []);\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 return creatorId === identity.login;\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 = (cache, newFile) => {\n const newFileData = get(newFile, \"data.fileManager.createFile.data\");\n\n const data = cache.readQuery({ query: LIST_FILES, variables: queryParams });\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(function getFileDetailsFile({ src, list }) {\n return list.find(item => item.src === src);\n }, []);\n\n useHotkeys({\n zIndex: 50,\n keys: {\n esc: onClose\n }\n });\n\n const searchInput = useRef();\n\n const apolloClient = useApolloClient();\n\n const gqlQuery = useQuery(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 }) => {\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: (prev, { fetchMoreResult }) => {\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 = get(data, \"fileManager.listFiles.data\") || [];\n const [createFile] = useMutation(CREATE_FILE, { update: updateCacheAfterCreateFile });\n const uploadFile = async files => {\n setUploading(true);\n const list = Array.isArray(files) ? files : [files];\n\n const errors = [];\n const uploadedFiles = [];\n await Promise.all(\n list.map(async file => {\n try {\n const response = await getFileUploader()(file, { apolloClient });\n const createFileResponse = await createFile({ variables: { data: response } });\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 }, 750);\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 setTimeout(() => {\n onUploadCompletion(uploadedFiles);\n onClose();\n }, 750);\n }\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 => uploadFile(files.map(file => file.src.file))}\n onError={errors => {\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={async () => {\n await onChange(multiple ? selected : selected[0]);\n\n onClose();\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 => current.src === file.src\n ),\n onSelect:\n typeof onChange === \"undefined\"\n ? undefined\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"],"file":"FileManagerView.js"}
@@ -12,6 +12,7 @@ declare type FileManagerProps = {
12
12
  multipleMaxCount?: number;
13
13
  multipleMaxSize?: number | string;
14
14
  onClose?: Function;
15
+ onUploadCompletion?: Function;
15
16
  };
16
17
  export declare function FileManager({ children, ...rest }: FileManagerProps): JSX.Element;
17
18
  export {};
@@ -62,7 +62,8 @@ var FileManagerPortal = /*#__PURE__*/function (_React$Component) {
62
62
  images = _this$props.images,
63
63
  maxSize = _this$props.maxSize,
64
64
  multipleMaxCount = _this$props.multipleMaxCount,
65
- multipleMaxSize = _this$props.multipleMaxSize;
65
+ multipleMaxSize = _this$props.multipleMaxSize,
66
+ onUploadCompletion = _this$props.onUploadCompletion;
66
67
  var container = this.container;
67
68
 
68
69
  var handleFileOnChange = function handleFileOnChange(files) {
@@ -84,7 +85,8 @@ var FileManagerPortal = /*#__PURE__*/function (_React$Component) {
84
85
  multiple: multiple,
85
86
  maxSize: maxSize,
86
87
  multipleMaxCount: multipleMaxCount,
87
- multipleMaxSize: multipleMaxSize
88
+ multipleMaxSize: multipleMaxSize,
89
+ onUploadCompletion: onUploadCompletion
88
90
  };
89
91
 
90
92
  if (images) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/FileManager.tsx"],"names":["React","ReactDOM","FileManagerView","pick","FileManagerProvider","useState","useRef","useCallback","useEffect","FileManagerPortal","props","window","container","document","getElementById","createElement","setAttribute","body","appendChild","onChange","onClose","accept","onChangePick","multiple","images","maxSize","multipleMaxCount","multipleMaxSize","handleFileOnChange","files","fields","Array","isArray","map","file","undefined","createPortal","Component","FileManager","children","rest","show","setShow","onChangeRef","current","showFileManager"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport FileManagerView from \"./FileManager/FileManagerView\";\nimport pick from \"lodash/pick\";\nimport { FileManagerProvider } from \"./FileManager/FileManagerContext\";\n\ntype FileManagerProps = {\n onChange?: Function;\n onChangePick?: string[];\n images?: boolean;\n multiple?: boolean;\n accept?: Array<string>;\n children: ({ showFileManager: Function }) => React.ReactNode;\n maxSize?: number | string;\n multipleMaxCount?: number;\n multipleMaxSize?: number | string;\n onClose?: Function;\n};\n\ntype FileManagerPortalProps = Omit<FileManagerProps, \"children\">;\n\nconst { useState, useRef, useCallback, useEffect } = React;\n\nclass FileManagerPortal extends React.Component<FileManagerPortalProps> {\n container: Element;\n constructor(props) {\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 render() {\n const {\n onChange,\n onClose,\n accept,\n onChangePick,\n multiple,\n images,\n maxSize,\n multipleMaxCount,\n multipleMaxSize\n } = this.props;\n\n const container = this.container;\n\n const handleFileOnChange = files => {\n const fields = Array.isArray(onChangePick)\n ? onChangePick\n : [\"id\", \"name\", \"key\", \"src\", \"size\", \"type\"];\n if (Array.isArray(files)) {\n onChange(files.map(file => pick(file, fields)));\n } else {\n onChange(pick(files, fields));\n }\n };\n\n const props = {\n onChange: typeof onChange === \"function\" ? handleFileOnChange : undefined,\n onClose,\n accept,\n multiple,\n maxSize,\n multipleMaxCount,\n multipleMaxSize\n };\n\n if (images) {\n props.accept = [\"image/jpg\", \"image/jpeg\", \"image/gif\", \"image/png\", \"image/svg+xml\"];\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 function FileManager({ children, ...rest }: FileManagerProps) {\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"],"file":"FileManager.js"}
1
+ {"version":3,"sources":["../../src/components/FileManager.tsx"],"names":["React","ReactDOM","FileManagerView","pick","FileManagerProvider","useState","useRef","useCallback","useEffect","FileManagerPortal","props","window","container","document","getElementById","createElement","setAttribute","body","appendChild","onChange","onClose","accept","onChangePick","multiple","images","maxSize","multipleMaxCount","multipleMaxSize","onUploadCompletion","handleFileOnChange","files","fields","Array","isArray","map","file","undefined","createPortal","Component","FileManager","children","rest","show","setShow","onChangeRef","current","showFileManager"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport FileManagerView from \"./FileManager/FileManagerView\";\nimport pick from \"lodash/pick\";\nimport { FileManagerProvider } from \"./FileManager/FileManagerContext\";\n\ntype FileManagerProps = {\n onChange?: Function;\n onChangePick?: string[];\n images?: boolean;\n multiple?: boolean;\n accept?: Array<string>;\n children: ({ showFileManager: Function }) => React.ReactNode;\n maxSize?: number | string;\n multipleMaxCount?: number;\n multipleMaxSize?: number | string;\n onClose?: Function;\n onUploadCompletion?: Function;\n};\n\ntype FileManagerPortalProps = Omit<FileManagerProps, \"children\">;\n\nconst { useState, useRef, useCallback, useEffect } = React;\n\nclass FileManagerPortal extends React.Component<FileManagerPortalProps> {\n container: Element;\n constructor(props) {\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 render() {\n const {\n onChange,\n onClose,\n accept,\n onChangePick,\n multiple,\n images,\n maxSize,\n multipleMaxCount,\n multipleMaxSize,\n onUploadCompletion\n } = this.props;\n\n const container = this.container;\n\n const handleFileOnChange = files => {\n const fields = Array.isArray(onChangePick)\n ? onChangePick\n : [\"id\", \"name\", \"key\", \"src\", \"size\", \"type\"];\n if (Array.isArray(files)) {\n onChange(files.map(file => pick(file, fields)));\n } else {\n onChange(pick(files, fields));\n }\n };\n\n const props = {\n onChange: typeof onChange === \"function\" ? handleFileOnChange : undefined,\n onClose,\n accept,\n multiple,\n maxSize,\n multipleMaxCount,\n multipleMaxSize,\n onUploadCompletion\n };\n\n if (images) {\n props.accept = [\"image/jpg\", \"image/jpeg\", \"image/gif\", \"image/png\", \"image/svg+xml\"];\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 function FileManager({ children, ...rest }: FileManagerProps) {\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"],"file":"FileManager.js"}
@@ -1,4 +1,5 @@
1
1
  declare const useDialog: () => {
2
2
  showDialog: (message: any, options: any) => void;
3
+ hideDialog: () => void;
3
4
  };
4
5
  export { useDialog };
@@ -13,6 +13,13 @@ var useDialog = function useDialog() {
13
13
  }
14
14
  });
15
15
  });
16
+ },
17
+ hideDialog: function hideDialog() {
18
+ ui.setState(function (ui) {
19
+ return _objectSpread(_objectSpread({}, ui), {}, {
20
+ dialog: null
21
+ });
22
+ });
16
23
  }
17
24
  };
18
25
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/useDialog.ts"],"names":["useUi","useDialog","ui","showDialog","message","options","setState","dialog"],"mappings":";AAAA,SAASA,KAAT,QAAsB,yBAAtB;;AAEA,IAAMC,SAAS,GAAG,SAAZA,SAAY,GAAM;AACpB,MAAMC,EAAE,GAAGF,KAAK,EAAhB;AACA,SAAO;AACHG,IAAAA,UAAU,EAAE,oBAACC,OAAD,EAAUC,OAAV,EAAsB;AAC9BH,MAAAA,EAAE,CAACI,QAAH,CAAY,UAAAJ,EAAE,EAAI;AACd,+CAAYA,EAAZ;AAAgBK,UAAAA,MAAM,EAAE;AAAEH,YAAAA,OAAO,EAAPA,OAAF;AAAWC,YAAAA,OAAO,EAAPA;AAAX;AAAxB;AACH,OAFD;AAGH;AALE,GAAP;AAOH,CATD;;AAWA,SAASJ,SAAT","sourcesContent":["import { useUi } from \"@webiny/app/hooks/useUi\";\n\nconst useDialog = () => {\n const ui = useUi();\n return {\n showDialog: (message, options) => {\n ui.setState(ui => {\n return { ...ui, dialog: { message, options } };\n });\n }\n };\n};\n\nexport { useDialog };\n"],"file":"useDialog.js"}
1
+ {"version":3,"sources":["../../src/hooks/useDialog.ts"],"names":["useUi","useDialog","ui","showDialog","message","options","setState","dialog","hideDialog"],"mappings":";AAAA,SAASA,KAAT,QAAsB,yBAAtB;;AAEA,IAAMC,SAAS,GAAG,SAAZA,SAAY,GAAM;AACpB,MAAMC,EAAE,GAAGF,KAAK,EAAhB;AACA,SAAO;AACHG,IAAAA,UAAU,EAAE,oBAACC,OAAD,EAAUC,OAAV,EAAsB;AAC9BH,MAAAA,EAAE,CAACI,QAAH,CAAY,UAAAJ,EAAE,EAAI;AACd,+CAAYA,EAAZ;AAAgBK,UAAAA,MAAM,EAAE;AAAEH,YAAAA,OAAO,EAAPA,OAAF;AAAWC,YAAAA,OAAO,EAAPA;AAAX;AAAxB;AACH,OAFD;AAGH,KALE;AAMHG,IAAAA,UAAU,EAAE,sBAAM;AACdN,MAAAA,EAAE,CAACI,QAAH,CAAY,UAAAJ,EAAE,EAAI;AACd,+CAAYA,EAAZ;AAAgBK,UAAAA,MAAM,EAAE;AAAxB;AACH,OAFD;AAGH;AAVE,GAAP;AAYH,CAdD;;AAgBA,SAASN,SAAT","sourcesContent":["import { useUi } from \"@webiny/app/hooks/useUi\";\n\nconst useDialog = () => {\n const ui = useUi();\n return {\n showDialog: (message, options) => {\n ui.setState(ui => {\n return { ...ui, dialog: { message, options } };\n });\n },\n hideDialog: () => {\n ui.setState(ui => {\n return { ...ui, dialog: null };\n });\n }\n };\n};\n\nexport { useDialog };\n"],"file":"useDialog.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/app-admin",
3
- "version": "5.15.0",
3
+ "version": "5.16.0-beta.3",
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": {
@@ -18,14 +18,14 @@
18
18
  "@svgr/webpack": "4.3.3",
19
19
  "@types/mime": "2.0.3",
20
20
  "@types/react": "16.14.2",
21
- "@webiny/app": "5.15.0",
22
- "@webiny/app-security": "5.15.0",
23
- "@webiny/form": "5.15.0",
24
- "@webiny/plugins": "5.15.0",
25
- "@webiny/react-router": "5.15.0",
26
- "@webiny/ui": "5.15.0",
27
- "@webiny/ui-composer": "5.15.0",
28
- "@webiny/validation": "5.15.0",
21
+ "@webiny/app": "5.16.0-beta.3",
22
+ "@webiny/app-security": "5.16.0-beta.3",
23
+ "@webiny/form": "5.16.0-beta.3",
24
+ "@webiny/plugins": "5.16.0-beta.3",
25
+ "@webiny/react-router": "5.16.0-beta.3",
26
+ "@webiny/ui": "5.16.0-beta.3",
27
+ "@webiny/ui-composer": "5.16.0-beta.3",
28
+ "@webiny/validation": "5.16.0-beta.3",
29
29
  "apollo-cache": "1.3.5",
30
30
  "apollo-client": "2.6.10",
31
31
  "apollo-link": "1.2.14",
@@ -63,8 +63,8 @@
63
63
  "@babel/preset-env": "^7.5.5",
64
64
  "@babel/preset-react": "^7.0.0",
65
65
  "@babel/preset-typescript": "^7.8.3",
66
- "@webiny/cli": "^5.15.0",
67
- "@webiny/project-utils": "^5.15.0",
66
+ "@webiny/cli": "^5.16.0-beta.3",
67
+ "@webiny/project-utils": "^5.16.0-beta.3",
68
68
  "babel-plugin-emotion": "^9.2.8",
69
69
  "babel-plugin-lodash": "^3.3.4",
70
70
  "babel-plugin-named-asset-import": "^1.0.0-next.3e165448",
@@ -97,5 +97,5 @@
97
97
  ]
98
98
  }
99
99
  },
100
- "gitHead": "fd0ba247e5e0e2f5df66c8179f09af5ad6e9a0f2"
100
+ "gitHead": "d4a113c1e6e980721d010cbd62cd5e872902633c"
101
101
  }
@@ -1,23 +1,39 @@
1
+ @use "~@material/top-app-bar/_mixins.scss" as topAppBar;
2
+ @use "~@material/elevation/mixins" as elevation;
3
+ @use "~@material/button/mixins" as button;
4
+ @use "~@material/icon-button/mixins" as iconButton;
5
+ @use "~@material/drawer/mixins" as drawer;
6
+ @use "~@material/tab-bar/mixins" as tabBar;
7
+ @use "~@material/tab/mixins" as tab;
8
+ @use "~@material/tab-indicator/mixins" as tabIndicator;
9
+ @use "~@material/list/mixins" as list;
10
+ @use "~@material/switch/mixins" as switch;
11
+ @use "~@material/textfield/mixins" as textfield;
12
+ @use "~@material/select/mixins" as select;
13
+ @use "~@material/checkbox/mixins" as checkbox;
14
+ @use "~@material/radio/mixins" as radio;
15
+ @use "~@material/snackbar/mixins" as snackbar;
16
+
1
17
  // top app bar should use theme-surface as the fill color
2
18
  .mdc-top-app-bar {
3
- @include mdc-top-app-bar-fill-color($mdc-theme-surface);
19
+ @include topAppBar.mdc-top-app-bar-fill-color($mdc-theme-surface);
4
20
  }
5
21
 
6
22
  .mdc-top-app-bar.primary {
7
- @include mdc-top-app-bar-fill-color($mdc-theme-primary);
23
+ @include topAppBar.mdc-top-app-bar-fill-color($mdc-theme-primary);
8
24
  }
9
25
 
10
26
  // elevation should use theme-surface as fill color so it can be used as surface
11
27
  .mdc-elevation--z1 {
12
- @include mdc-elevation(1, $mdc-theme-on-surface);
28
+ @include elevation.mdc-elevation(1, $mdc-theme-on-surface);
13
29
  }
14
30
 
15
31
  .mdc-elevation--z2 {
16
- @include mdc-elevation(2, $mdc-theme-on-surface);
32
+ @include elevation.mdc-elevation(2, $mdc-theme-on-surface);
17
33
  }
18
34
 
19
35
  .mdc-elevation--z3 {
20
- @include mdc-elevation(3, $mdc-theme-on-surface);
36
+ @include elevation.mdc-elevation(3, $mdc-theme-on-surface);
21
37
  }
22
38
 
23
39
  .mdc-elevation--z1,
@@ -34,7 +50,7 @@
34
50
 
35
51
  // button styles
36
52
  .mdc-button {
37
- @include mdc-button-shape-radius(2px);
53
+ @include button.mdc-button-shape-radius(2px);
38
54
  .mdc-button__label {
39
55
  display: flex;
40
56
  align-items: center;
@@ -44,17 +60,17 @@
44
60
  // set icon colors
45
61
  .mdc-icon,
46
62
  .mdc-icon-button {
47
- @include mdc-icon-button-ink-color($mdc-theme-text-secondary-on-background);
63
+ @include iconButton.mdc-icon-button-ink-color($mdc-theme-text-secondary-on-background);
48
64
  }
49
65
 
50
66
  // drawer
51
67
  .mcd-drawer {
52
- @include mdc-drawer-title-ink-color($mdc-theme-text-primary-on-background);
53
- @include mdc-drawer-subtitle-ink-color($mdc-theme-text-primary-on-background);
54
- @include mdc-drawer-item-icon-ink-color($mdc-theme-text-primary-on-background);
55
- @include mdc-drawer-item-text-ink-color($mdc-theme-text-primary-on-background);
56
- @include mdc-drawer-surface-fill-color($mdc-theme-surface);
57
- @include mdc-drawer-item-shape-radius(0);
68
+ @include drawer.mdc-drawer-title-ink-color($mdc-theme-text-primary-on-background);
69
+ @include drawer.mdc-drawer-subtitle-ink-color($mdc-theme-text-primary-on-background);
70
+ @include drawer.mdc-drawer-item-icon-ink-color($mdc-theme-text-primary-on-background);
71
+ @include drawer.mdc-drawer-item-text-ink-color($mdc-theme-text-primary-on-background);
72
+ @include drawer.mdc-drawer-surface-fill-color($mdc-theme-surface);
73
+ @include drawer.mdc-drawer-item-shape-radius(0);
58
74
  }
59
75
 
60
76
  // fix for drawer positioning
@@ -73,31 +89,31 @@
73
89
 
74
90
  // tabs
75
91
  .mdc-tab-bar {
76
- @include mdc-tab-bar-width("100%");
92
+ @include tabBar.mdc-tab-bar-width("100%");
77
93
 
78
94
  .mdc-tab {
79
- @include mdc-tab-fixed-width("100px");
80
- @include mdc-tab-text-label-color($mdc-theme-text-primary-on-background);
81
- @include mdc-tab-icon-color($mdc-theme-text-primary-on-background);
95
+ @include tab.mdc-tab-fixed-width("100px");
96
+ @include tab.mdc-tab-text-label-color($mdc-theme-text-primary-on-background);
97
+ @include tab.mdc-tab-icon-color($mdc-theme-text-primary-on-background);
82
98
 
83
99
  // fixes tab width
84
100
  flex: 1 0;
85
101
  }
86
102
 
87
103
  .mdc-tab-indicator {
88
- @include mdc-tab-indicator-underline-color($mdc-theme-primary);
104
+ @include tabIndicator.mdc-tab-indicator-underline-color($mdc-theme-primary);
89
105
  }
90
106
  }
91
107
 
92
108
  // list
93
109
  .mdc-list {
94
- @include mdc-list-item-primary-text-ink-color($mdc-theme-text-primary-on-background);
95
- @include mdc-list-item-secondary-text-ink-color($mdc-theme-text-secondary-on-background);
96
- @include mdc-list-item-graphic-ink-color($mdc-theme-text-secondary-on-background);
97
- @include mdc-list-item-meta-ink-color($mdc-theme-text-secondary-on-background);
98
- @include mdc-list-divider-color($mdc-theme-on-background);
99
- @include mdc-list-group-subheader-ink-color($mdc-theme-text-primary-on-background);
100
- @include mdc-list-item-shape-radius(0);
110
+ @include list.mdc-list-item-primary-text-ink-color($mdc-theme-text-primary-on-background);
111
+ @include list.mdc-list-item-secondary-text-ink-color($mdc-theme-text-secondary-on-background);
112
+ @include list.mdc-list-item-graphic-ink-color($mdc-theme-text-secondary-on-background);
113
+ @include list.mdc-list-item-meta-ink-color($mdc-theme-text-secondary-on-background);
114
+ @include list.mdc-list-divider-color($mdc-theme-on-background);
115
+ @include list.mdc-list-group-subheader-ink-color($mdc-theme-text-primary-on-background);
116
+ @include list.mdc-list-item-shape-radius(0);
101
117
 
102
118
  .mdc-list-item {
103
119
  color: $mdc-theme-text-primary-on-background;
@@ -122,7 +138,7 @@
122
138
 
123
139
  // switch
124
140
  .mdc-switch {
125
- @include mdc-switch-toggled-off-track-color($mdc-theme-on-surface);
141
+ @include switch.mdc-switch-toggled-off-track-color($mdc-theme-on-surface);
126
142
  margin-left: 5px;
127
143
  margin-right: 10px;
128
144
  }
@@ -137,11 +153,11 @@ Fix the width of input components when inside grids
137
153
  */
138
154
  .mdc-text-field {
139
155
  width: 100%;
140
- @include mdc-text-field-shape-radius(0);
141
- @include mdc-text-field-textarea-shape-radius(0);
142
- @include mdc-text-field-fill-color($mdc-theme-on-background);
143
- @include mdc-text-field-label-color($mdc-theme-text-primary-on-background);
144
- @include mdc-text-field-ink-color($mdc-theme-on-surface);
156
+ @include textfield.mdc-text-field-shape-radius(0);
157
+ @include textfield.mdc-text-field-textarea-shape-radius(0);
158
+ @include textfield.mdc-text-field-fill-color($mdc-theme-on-background);
159
+ @include textfield.mdc-text-field-label-color($mdc-theme-text-primary-on-background);
160
+ @include textfield.mdc-text-field-ink-color($mdc-theme-on-surface);
145
161
  &.mdc-text-field--textarea {
146
162
  textarea {
147
163
  padding-top: 25px;
@@ -213,19 +229,19 @@ Fix the width of input components when inside grids
213
229
  > .mdc-tab-bar {
214
230
  position: absolute;
215
231
  z-index: 10;
216
- @include mdc-tab-bar-width(100%);
232
+ @include tabBar.mdc-tab-bar-width(100%);
217
233
  background-color: $mdc-theme-secondary;
218
234
  .mdc-tab {
219
- @include mdc-tab-text-label-color($mdc-theme-on-secondary);
220
- @include mdc-tab-icon-color($mdc-theme-on-secondary);
221
- @include mdc-tab-fixed-width(100px);
235
+ @include tab.mdc-tab-text-label-color($mdc-theme-on-secondary);
236
+ @include tab.mdc-tab-icon-color($mdc-theme-on-secondary);
237
+ @include tab.mdc-tab-fixed-width(100px);
222
238
  justify-content: flex-start;
223
239
  font-weight: 600;
224
240
  }
225
241
  .mdc-tab-indicator {
226
242
  padding-bottom: 5px;
227
243
  margin-top: -1px;
228
- @include mdc-tab-indicator-underline-color($mdc-theme-on-secondary);
244
+ @include tabIndicator.mdc-tab-indicator-underline-color($mdc-theme-on-secondary);
229
245
  background-color: $mdc-theme-secondary;
230
246
  }
231
247
  }
@@ -250,13 +266,13 @@ Fix the width of input components when inside grids
250
266
  // select
251
267
  .mdc-select {
252
268
  width: 100%;
253
- @include mdc-select-ink-color($mdc-theme-text-primary-on-background);
254
- @include mdc-select-label-color($mdc-theme-text-secondary-on-background);
255
- @include mdc-select-bottom-line-color($mdc-theme-text-secondary-on-background);
256
- @include mdc-select-hover-bottom-line-color($mdc-theme-text-primary-on-background);
257
- @include mdc-select-container-fill-color($mdc-theme-on-background);
258
- @include mdc-select-shape-radius(0);
259
- @include mdc-select-outline-shape-radius(2);
269
+ @include select.mdc-select-ink-color($mdc-theme-text-primary-on-background);
270
+ @include select.mdc-select-label-color($mdc-theme-text-secondary-on-background);
271
+ @include select.mdc-select-bottom-line-color($mdc-theme-text-secondary-on-background);
272
+ @include select.mdc-select-hover-bottom-line-color($mdc-theme-text-primary-on-background);
273
+ @include select.mdc-select-container-fill-color($mdc-theme-on-background);
274
+ @include select.mdc-select-shape-radius(0);
275
+ @include select.mdc-select-outline-shape-radius(2);
260
276
 
261
277
  /*
262
278
  Fix for select box appearance. For some reason browser prefix css attributes are striped away.
@@ -282,18 +298,18 @@ Fix the width of input components when inside grids
282
298
 
283
299
  // checkbox
284
300
  .mdc-checkbox {
285
- @include mdc-checkbox-container-colors("text-secondary-on-background");
301
+ @include checkbox.mdc-checkbox-container-colors("text-secondary-on-background");
286
302
  }
287
303
 
288
304
  // radio button
289
305
  .mdc-radio {
290
- @include mdc-radio-unchecked-stroke-color("text-secondary-on-background");
306
+ @include radio.mdc-radio-unchecked-stroke-color("text-secondary-on-background");
291
307
  }
292
308
 
293
309
  // snackbar
294
310
  .mdc-snackbar {
295
- @include mdc-snackbar-shape-radius(2px);
296
- @include mdc-snackbar-z-index(1000);
311
+ @include snackbar.mdc-snackbar-shape-radius(2px);
312
+ @include snackbar.mdc-snackbar-z-index(1000);
297
313
  }
298
314
  .mdc-snackbar__action:not(:disabled) {
299
315
  color: var(--mdc-theme-primary);
@@ -1,3 +1,5 @@
1
+ @use "~@material/theme/mixins" as themeMixins;
2
+
1
3
  // material variables
2
4
  $mdc-theme-primary: $webiny-theme-light-primary;
3
5
  $mdc-theme-on-primary: $webiny-theme-light-on-primary;
@@ -49,7 +51,7 @@ body.dark-theme {
49
51
  $mdc-theme-text-primary-on-background: $webiny-theme-dark-text-primary-on-background;
50
52
  $mdc-theme-text-hint-on-dark: $webiny-theme-dark-text-hint-on-dark;
51
53
 
52
- @include mdc-theme-prop("on-primary", $webiny-theme-dark-text-primary-on-background);
54
+ @include themeMixins.mdc-theme-prop("on-primary", $webiny-theme-dark-text-primary-on-background);
53
55
 
54
56
  background-color: $mdc-theme-background;
55
57
 
@@ -67,6 +69,6 @@ body.dark-theme {
67
69
  --mdc-theme-text-hint-on-dark: #{$mdc-theme-text-hint-on-dark};
68
70
  --mdc-theme-caret-down: #{$webiny-theme-dark-caret-down};
69
71
 
70
- @import "@material/textfield/mdc-text-field";
72
+ @import "~@material/textfield/mdc-text-field";
71
73
  @import "material-theme-assignments.scss";
72
74
  }
@@ -17,7 +17,8 @@ export var DialogContainer = function DialogContainer() {
17
17
  accept: {
18
18
  label: "OK"
19
19
  }
20
- } : _get2$actions;
20
+ } : _get2$actions,
21
+ style = _get2.style;
21
22
 
22
23
  var hideDialog = useCallback(function () {
23
24
  ui.setState(function (ui) {
@@ -29,7 +30,8 @@ export var DialogContainer = function DialogContainer() {
29
30
  return /*#__PURE__*/React.createElement(Dialog, {
30
31
  open: !!message,
31
32
  onClose: hideDialog,
32
- "data-testid": dataTestId
33
+ "data-testid": dataTestId,
34
+ style: style
33
35
  }, title && /*#__PURE__*/React.createElement(DialogTitle, null, title), /*#__PURE__*/React.createElement(DialogContent, null, message), /*#__PURE__*/React.createElement(DialogActions, null, actions.cancel && /*#__PURE__*/React.createElement(DialogAccept, {
34
36
  onClick: actions.cancel.onClick
35
37
  }, actions.cancel.label), actions.accept && /*#__PURE__*/React.createElement(DialogAccept, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/ui/views/AdminView/components/Dialog.tsx"],"names":["React","useCallback","useUi","Dialog","DialogAccept","DialogTitle","DialogActions","DialogContent","DialogContainer","ui","message","dataTestId","title","actions","cancel","accept","label","hideDialog","setState","dialog","onClick"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,WAAhB,QAAmC,OAAnC;AAEA,SAASC,KAAT,QAAsB,yBAAtB;AACA,SAASC,MAAT,EAAiBC,YAAjB,EAA+BC,WAA/B,EAA4CC,aAA5C,EAA2DC,aAA3D,QAAgF,mBAAhF;AAEA,OAAO,IAAMC,eAAyB,GAAG,SAA5BA,eAA4B,GAAM;AAC3C,MAAMC,EAAE,GAAGP,KAAK,EAAhB;;AACA,MAAMQ,OAAO,GAAG,KAAID,EAAJ,EAAQ,gBAAR,CAAhB;;AACA,cAII,KAAIA,EAAJ,EAAQ,gBAAR,EAA0B,EAA1B,CAJJ;AAAA,MACIE,UADJ,SACIA,UADJ;AAAA,MAEIC,KAFJ,SAEIA,KAFJ;AAAA,4BAGIC,OAHJ;AAAA,MAGIA,OAHJ,8BAGc;AAAEC,IAAAA,MAAM,EAAE,IAAV;AAAgBC,IAAAA,MAAM,EAAE;AAAEC,MAAAA,KAAK,EAAE;AAAT;AAAxB,GAHd;;AAMA,MAAMC,UAAU,GAAGhB,WAAW,CAAC,YAAM;AACjCQ,IAAAA,EAAE,CAACS,QAAH,CAAY,UAAAT,EAAE;AAAA,6CAAUA,EAAV;AAAcU,QAAAA,MAAM,EAAE;AAAtB;AAAA,KAAd;AACH,GAF6B,EAE3B,CAACV,EAAD,CAF2B,CAA9B;AAIA,sBACI,oBAAC,MAAD;AAAQ,IAAA,IAAI,EAAE,CAAC,CAACC,OAAhB;AAAyB,IAAA,OAAO,EAAEO,UAAlC;AAA8C,mBAAaN;AAA3D,KACKC,KAAK,iBAAI,oBAAC,WAAD,QAAcA,KAAd,CADd,eAEI,oBAAC,aAAD,QAAgBF,OAAhB,CAFJ,eAGI,oBAAC,aAAD,QACKG,OAAO,CAACC,MAAR,iBACG,oBAAC,YAAD;AAAc,IAAA,OAAO,EAAED,OAAO,CAACC,MAAR,CAAeM;AAAtC,KACKP,OAAO,CAACC,MAAR,CAAeE,KADpB,CAFR,EAMKH,OAAO,CAACE,MAAR,iBACG,oBAAC,YAAD;AAAc,IAAA,OAAO,EAAEF,OAAO,CAACE,MAAR,CAAeK;AAAtC,KACKP,OAAO,CAACE,MAAR,CAAeC,KADpB,CAPR,CAHJ,CADJ;AAkBH,CA/BM","sourcesContent":["import React, { useCallback } from \"react\";\nimport { get } from \"lodash\";\nimport { useUi } from \"@webiny/app/hooks/useUi\";\nimport { Dialog, DialogAccept, DialogTitle, DialogActions, DialogContent } from \"@webiny/ui/Dialog\";\n\nexport const DialogContainer: React.FC = () => {\n const ui = useUi();\n const message = get(ui, \"dialog.message\");\n const {\n dataTestId,\n title,\n actions = { cancel: null, accept: { label: \"OK\" } }\n } = get(ui, \"dialog.options\", {});\n\n const hideDialog = useCallback(() => {\n ui.setState(ui => ({ ...ui, dialog: null }));\n }, [ui]);\n\n return (\n <Dialog open={!!message} onClose={hideDialog} data-testid={dataTestId}>\n {title && <DialogTitle>{title}</DialogTitle>}\n <DialogContent>{message}</DialogContent>\n <DialogActions>\n {actions.cancel && (\n <DialogAccept onClick={actions.cancel.onClick}>\n {actions.cancel.label}\n </DialogAccept>\n )}\n {actions.accept && (\n <DialogAccept onClick={actions.accept.onClick}>\n {actions.accept.label}\n </DialogAccept>\n )}\n </DialogActions>\n </Dialog>\n );\n};\n"],"file":"Dialog.js"}
1
+ {"version":3,"sources":["../../../../../src/ui/views/AdminView/components/Dialog.tsx"],"names":["React","useCallback","useUi","Dialog","DialogAccept","DialogTitle","DialogActions","DialogContent","DialogContainer","ui","message","dataTestId","title","actions","cancel","accept","label","style","hideDialog","setState","dialog","onClick"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,WAAhB,QAAmC,OAAnC;AAEA,SAASC,KAAT,QAAsB,yBAAtB;AACA,SAASC,MAAT,EAAiBC,YAAjB,EAA+BC,WAA/B,EAA4CC,aAA5C,EAA2DC,aAA3D,QAAgF,mBAAhF;AAEA,OAAO,IAAMC,eAAyB,GAAG,SAA5BA,eAA4B,GAAM;AAC3C,MAAMC,EAAE,GAAGP,KAAK,EAAhB;;AACA,MAAMQ,OAAO,GAAG,KAAID,EAAJ,EAAQ,gBAAR,CAAhB;;AACA,cAKI,KAAIA,EAAJ,EAAQ,gBAAR,EAA0B,EAA1B,CALJ;AAAA,MACIE,UADJ,SACIA,UADJ;AAAA,MAEIC,KAFJ,SAEIA,KAFJ;AAAA,4BAGIC,OAHJ;AAAA,MAGIA,OAHJ,8BAGc;AAAEC,IAAAA,MAAM,EAAE,IAAV;AAAgBC,IAAAA,MAAM,EAAE;AAAEC,MAAAA,KAAK,EAAE;AAAT;AAAxB,GAHd;AAAA,MAIIC,KAJJ,SAIIA,KAJJ;;AAOA,MAAMC,UAAU,GAAGjB,WAAW,CAAC,YAAM;AACjCQ,IAAAA,EAAE,CAACU,QAAH,CAAY,UAAAV,EAAE;AAAA,6CAAUA,EAAV;AAAcW,QAAAA,MAAM,EAAE;AAAtB;AAAA,KAAd;AACH,GAF6B,EAE3B,CAACX,EAAD,CAF2B,CAA9B;AAIA,sBACI,oBAAC,MAAD;AAAQ,IAAA,IAAI,EAAE,CAAC,CAACC,OAAhB;AAAyB,IAAA,OAAO,EAAEQ,UAAlC;AAA8C,mBAAaP,UAA3D;AAAuE,IAAA,KAAK,EAAEM;AAA9E,KACKL,KAAK,iBAAI,oBAAC,WAAD,QAAcA,KAAd,CADd,eAEI,oBAAC,aAAD,QAAgBF,OAAhB,CAFJ,eAGI,oBAAC,aAAD,QACKG,OAAO,CAACC,MAAR,iBACG,oBAAC,YAAD;AAAc,IAAA,OAAO,EAAED,OAAO,CAACC,MAAR,CAAeO;AAAtC,KACKR,OAAO,CAACC,MAAR,CAAeE,KADpB,CAFR,EAMKH,OAAO,CAACE,MAAR,iBACG,oBAAC,YAAD;AAAc,IAAA,OAAO,EAAEF,OAAO,CAACE,MAAR,CAAeM;AAAtC,KACKR,OAAO,CAACE,MAAR,CAAeC,KADpB,CAPR,CAHJ,CADJ;AAkBH,CAhCM","sourcesContent":["import React, { useCallback } from \"react\";\nimport { get } from \"lodash\";\nimport { useUi } from \"@webiny/app/hooks/useUi\";\nimport { Dialog, DialogAccept, DialogTitle, DialogActions, DialogContent } from \"@webiny/ui/Dialog\";\n\nexport const DialogContainer: React.FC = () => {\n const ui = useUi();\n const message = get(ui, \"dialog.message\");\n const {\n dataTestId,\n title,\n actions = { cancel: null, accept: { label: \"OK\" } },\n style\n } = get(ui, \"dialog.options\", {});\n\n const hideDialog = useCallback(() => {\n ui.setState(ui => ({ ...ui, dialog: null }));\n }, [ui]);\n\n return (\n <Dialog open={!!message} onClose={hideDialog} data-testid={dataTestId} style={style}>\n {title && <DialogTitle>{title}</DialogTitle>}\n <DialogContent>{message}</DialogContent>\n <DialogActions>\n {actions.cancel && (\n <DialogAccept onClick={actions.cancel.onClick}>\n {actions.cancel.label}\n </DialogAccept>\n )}\n {actions.accept && (\n <DialogAccept onClick={actions.accept.onClick}>\n {actions.accept.label}\n </DialogAccept>\n )}\n </DialogActions>\n </Dialog>\n );\n};\n"],"file":"Dialog.js"}