@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.
- package/components/FileManager/FileManagerView.d.ts +1 -0
- package/components/FileManager/FileManagerView.js +26 -13
- package/components/FileManager/FileManagerView.js.map +1 -1
- package/components/FileManager.d.ts +1 -0
- package/components/FileManager.js +4 -2
- package/components/FileManager.js.map +1 -1
- package/hooks/useDialog.d.ts +1 -0
- package/hooks/useDialog.js +7 -0
- package/hooks/useDialog.js.map +1 -1
- package/package.json +12 -12
- package/styles/material-theme-assignments.scss +63 -47
- package/styles/material.scss +4 -2
- package/ui/views/AdminView/components/Dialog.js +4 -2
- package/ui/views/AdminView/components/Dialog.js.map +1 -1
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
|
387
|
-
_context2.prev =
|
|
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
|
|
399
|
+
case 13:
|
|
395
400
|
case "end":
|
|
396
401
|
return _context2.stop();
|
|
397
402
|
}
|
|
398
403
|
}
|
|
399
|
-
}, _callee2, null, [[0,
|
|
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
|
|
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 =
|
|
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
|
|
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
|
-
|
|
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":";;;;;;;;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,OAAOC,QAAP,MAAqB,WAArB;AACA,OAAOC,eAAP;AACA,OAAOC,IAAP,MAAiB,aAAjB;AACA,SAASC,mBAAT;
|
|
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"}
|
package/hooks/useDialog.d.ts
CHANGED
package/hooks/useDialog.js
CHANGED
package/hooks/useDialog.js.map
CHANGED
|
@@ -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;
|
|
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.
|
|
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.
|
|
22
|
-
"@webiny/app-security": "5.
|
|
23
|
-
"@webiny/form": "5.
|
|
24
|
-
"@webiny/plugins": "5.
|
|
25
|
-
"@webiny/react-router": "5.
|
|
26
|
-
"@webiny/ui": "5.
|
|
27
|
-
"@webiny/ui-composer": "5.
|
|
28
|
-
"@webiny/validation": "5.
|
|
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.
|
|
67
|
-
"@webiny/project-utils": "^5.
|
|
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": "
|
|
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);
|
package/styles/material.scss
CHANGED
|
@@ -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 "
|
|
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,
|
|
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"}
|