@dbmx/confy 0.0.22 → 0.0.24
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/esm/_virtual/index2.js +2 -2
- package/esm/_virtual/index3.js +2 -2
- package/esm/components/App/index.js +23 -14
- package/esm/components/App/index.js.map +1 -1
- package/esm/components/AuthOTP/ConfirmCode/index.js +188 -0
- package/esm/components/AuthOTP/ConfirmCode/index.js.map +1 -0
- package/esm/components/AuthOTP/ConfirmCode/messages.js +47 -0
- package/esm/components/AuthOTP/ConfirmCode/messages.js.map +1 -0
- package/esm/components/AuthOTP/SignIn/index.js +141 -0
- package/esm/components/AuthOTP/SignIn/index.js.map +1 -0
- package/esm/components/AuthOTP/SignIn/messages.js +23 -0
- package/esm/components/AuthOTP/SignIn/messages.js.map +1 -0
- package/esm/components/AuthOTP/index.js +269 -0
- package/esm/components/AuthOTP/index.js.map +1 -0
- package/esm/components/AuthOTP/messages.js +23 -0
- package/esm/components/AuthOTP/messages.js.map +1 -0
- package/esm/components/AuthOTP/utils.js +22 -0
- package/esm/components/AuthOTP/utils.js.map +1 -0
- package/esm/components/AuthRedirect/index.js +1 -2
- package/esm/components/AuthRedirect/index.js.map +1 -1
- package/esm/components/Buttons/SignInWithEmail.js +18 -0
- package/esm/components/Buttons/SignInWithEmail.js.map +1 -0
- package/esm/components/Buttons/messages.js +4 -0
- package/esm/components/Buttons/messages.js.map +1 -1
- package/esm/components/Confy/index.js +28 -11
- package/esm/components/Confy/index.js.map +1 -1
- package/esm/components/Notification/index.js +9 -1
- package/esm/components/Notification/index.js.map +1 -1
- package/esm/components/Notification/messages.js +11 -0
- package/esm/components/Notification/messages.js.map +1 -0
- package/esm/components/NotificationProvider/index.js +2 -2
- package/esm/components/NotificationProvider/index.js.map +1 -1
- package/esm/components/SessionAlert/index.js +126 -0
- package/esm/components/SessionAlert/index.js.map +1 -0
- package/esm/components/SessionAlert/messages.js +27 -0
- package/esm/components/SessionAlert/messages.js.map +1 -0
- package/esm/ducks/auth.js +25 -1
- package/esm/ducks/auth.js.map +1 -1
- package/esm/ducks/core.js +15 -7
- package/esm/ducks/core.js.map +1 -1
- package/esm/forms/EmailField/EmailFieldAdaptor.js +24 -0
- package/esm/forms/EmailField/EmailFieldAdaptor.js.map +1 -0
- package/esm/forms/EmailField/index.js +68 -0
- package/esm/forms/EmailField/index.js.map +1 -0
- package/esm/forms/RecaptchaField/index.js +43 -0
- package/esm/forms/RecaptchaField/index.js.map +1 -0
- package/esm/forms/RecaptchaField/messages.js +11 -0
- package/esm/forms/RecaptchaField/messages.js.map +1 -0
- package/esm/forms/SixDigitField/index.js +137 -0
- package/esm/forms/SixDigitField/index.js.map +1 -0
- package/esm/forms/utils.js +10 -1
- package/esm/forms/utils.js.map +1 -1
- package/esm/hooks/authOTP.js +92 -0
- package/esm/hooks/authOTP.js.map +1 -0
- package/esm/hooks/notification.js +2 -2
- package/esm/hooks/notification.js.map +1 -1
- package/esm/hooks/session.js +9 -0
- package/esm/hooks/session.js.map +1 -0
- package/esm/hooks/window.js +6 -1
- package/esm/hooks/window.js.map +1 -1
- package/esm/lib/api/auth.js +39 -0
- package/esm/lib/api/auth.js.map +1 -0
- package/esm/lib/api/config.js.map +1 -1
- package/esm/lib/api/index.js +7 -1
- package/esm/lib/api/index.js.map +1 -1
- package/esm/node_modules/@testing-library/react-hooks/dom/index.js +1 -1
- package/esm/node_modules/@testing-library/react-hooks/lib/dom/index.js +1 -1
- package/esm/node_modules/classnames/index.js +1 -1
- package/esm/node_modules/ramda/es/all.js +49 -0
- package/esm/node_modules/ramda/es/all.js.map +1 -0
- package/esm/node_modules/ramda/es/ap.js +44 -0
- package/esm/node_modules/ramda/es/ap.js.map +1 -0
- package/esm/node_modules/ramda/es/complement.js +32 -0
- package/esm/node_modules/ramda/es/complement.js.map +1 -0
- package/esm/node_modules/ramda/es/drop.js +40 -0
- package/esm/node_modules/ramda/es/drop.js.map +1 -0
- package/esm/node_modules/ramda/es/internal/_xall.js +43 -0
- package/esm/node_modules/ramda/es/internal/_xall.js.map +1 -0
- package/esm/node_modules/ramda/es/internal/_xdrop.js +34 -0
- package/esm/node_modules/ramda/es/internal/_xdrop.js.map +1 -0
- package/esm/node_modules/ramda/es/lift.js +34 -0
- package/esm/node_modules/ramda/es/lift.js.map +1 -0
- package/esm/node_modules/ramda/es/liftN.js +35 -0
- package/esm/node_modules/ramda/es/liftN.js.map +1 -0
- package/esm/node_modules/ramda/es/not.js +30 -0
- package/esm/node_modules/ramda/es/not.js.map +1 -0
- package/esm/selectors/auth.js +2 -1
- package/esm/selectors/auth.js.map +1 -1
- package/esm/store/index.js +6 -2
- package/esm/store/index.js.map +1 -1
- package/esm/utils/confy.js +10 -2
- package/esm/utils/confy.js.map +1 -1
- package/package.json +10 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/Confy/index.js"],"sourcesContent":["/* eslint-disable react/prop-types */\nimport React, { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Provider } from 'react-redux'\nimport { ThemeProvider, StyledEngineProvider, CssBaseline } from '@mui/material'\nimport { Router } from 'react-router-dom'\nimport { QueryClient, QueryClientProvider } from 'react-query'\nimport { ReactQueryDevtools } from 'react-query/devtools'\nimport { createBrowserHistory } from 'history'\nimport { LocalizationProvider } from '@mui/x-date-pickers'\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'\nimport { createGenerateClassName, StylesProvider } from '@mui/styles'\n\nimport api from '../../lib/api'\nimport { AuthProvider } from '../AuthProvider'\nimport MenuProvider from '../MenuProvider'\nimport LanguageProvider from '../LanguageProvider'\nimport NotificationProvider from '../NotificationProvider'\nimport ErrorBoundary from '../ErrorBoundary'\nimport App from '../App'\nimport defaultTheme from '../../theme'\nimport getMenu from '../../menu'\nimport getRoutes from '../../routes'\nimport { ModulesProvider } from '../ModulesProvider'\nimport { confy } from '../../index'\nimport { ConfyProvider } from '../../ConfyProvider'\nimport { RoutesProvider } from '../RoutesProvider'\nimport { getApis } from '../../utils/api'\nimport store from '../../store'\nimport actions from '../../actions'\nimport { getAuth, getAvailableModules } from '../../utils/confy'\n\nconst generateClassName = createGenerateClassName()\n\nconst Confy = ({ modules, auth, theme, apiOptions = {} }) => {\n const queryClient = new QueryClient({ defaultOptions: { queries: { retry: false } } })\n const history = createBrowserHistory()\n\n api.setOptions({\n getBearer: () => store.getState().auth.token,\n ...apiOptions,\n })\n\n api.init(getApis(modules))\n\n if (!auth) {\n return null\n }\n\n return (\n <StylesProvider generateClassName={generateClassName} injectFirst>\n <ConfyProvider value={confy}>\n <Provider store={store}>\n <AuthProvider value={auth}>\n <ModulesProvider value={modules}>\n <RoutesProvider value={getRoutes(modules)}>\n <MenuProvider menu={getMenu(modules)}>\n <LanguageProvider messages={window.I18N || {}}>\n <NotificationProvider>\n <StyledEngineProvider injectFirst>\n <ThemeProvider theme={theme || defaultTheme}>\n <CssBaseline />\n <Router history={history}>\n <ErrorBoundary>\n <QueryClientProvider client={queryClient}>\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <App />\n </LocalizationProvider>\n <ReactQueryDevtools initialIsOpen={false} />\n </QueryClientProvider>\n </ErrorBoundary>\n </Router>\n </ThemeProvider>\n </StyledEngineProvider>\n </NotificationProvider>\n </LanguageProvider>\n </MenuProvider>\n </RoutesProvider>\n </ModulesProvider>\n </AuthProvider>\n </Provider>\n </ConfyProvider>\n </StylesProvider>\n )\n}\n\nConfy.propTypes = {\n modules: PropTypes.array.isRequired,\n auth: PropTypes.object.isRequired,\n theme: PropTypes.object.isRequired,\n apiOptions: PropTypes.object,\n}\n\nconst onAuthError = event => {\n store.dispatch(actions.core.showNotification(event.error_description || event.message, NOTIFICATION_VARIANTS.error))\n if (event.error === 'invalid_grant') {\n window.location.replace('/')\n }\n}\n\nconst registerLogout =\n oidc =>\n ({ expires_in }) =>\n oidc.registerLogout(expires_in * 1000)\n\nconst onLogin = ({ access_token, payload }) => {\n const user = {\n id: payload.sub,\n email: payload.email,\n lastname: payload.family_name,\n firstname: payload.given_name,\n members: payload.members,\n roles: payload.roles,\n }\n store.dispatch(actions.auth.signedIn(access_token, user))\n}\n\nconst onLogout = () => {\n store.dispatch(actions.auth.signOut())\n}\n\nconst loadConfyOptions = () => store.dispatch(actions.config.load())\n\nconst getConfyAuth = options => {\n const auth = getAuth(options.oidc)\n auth.on('signedIn', onLogin)\n auth.on('signedIn', registerLogout(auth))\n auth.on('signedOut', onLogout)\n auth.on('error', onAuthError)\n return auth\n}\n\nconst ConfySetup = ({ modules, theme }) => {\n const [confyProps, setConfyProps] = useState()\n\n useEffect(() => {\n const initConfy = async () => {\n const options = await loadConfyOptions()\n console.log(`Confy mounted`)\n setConfyProps({\n auth: getConfyAuth(options),\n modules: getAvailableModules(options.modules, modules),\n apiOptions: { authUrl: options.authUrl },\n theme,\n })\n }\n initConfy()\n }, [])\n\n if (!confyProps) return\n\n return <Confy {...confyProps} />\n}\n\nConfySetup.propTypes = {\n modules: PropTypes.array.isRequired,\n theme: PropTypes.object.isRequired,\n}\n\nexport default ConfySetup\n"],"names":["generateClassName","createGenerateClassName","Confy","_ref","modules","auth","theme","_ref$apiOptions","apiOptions","queryClient","QueryClient","defaultOptions","queries","retry","history","createBrowserHistory","api","setOptions","_objectSpread","getBearer","store","getState","token","init","getApis","React","createElement","StylesProvider","injectFirst","ConfyProvider","value","confy","Provider","AuthProvider","ModulesProvider","RoutesProvider","getRoutes","MenuProvider","menu","getMenu","LanguageProvider","messages","window","I18N","NotificationProvider","StyledEngineProvider","ThemeProvider","defaultTheme","CssBaseline","Router","ErrorBoundary","QueryClientProvider","client","LocalizationProvider","dateAdapter","AdapterDayjs","App","ReactQueryDevtools","initialIsOpen","propTypes","PropTypes","array","isRequired","object","onAuthError","event","dispatch","actions","core","showNotification","error_description","message","NOTIFICATION_VARIANTS","error","location","replace","registerLogout","oidc","_ref2","expires_in","onLogin","_ref3","access_token","payload","user","id","sub","email","lastname","family_name","firstname","given_name","members","roles","signedIn","onLogout","signOut","loadConfyOptions","config","load","getConfyAuth","options","getAuth","on","ConfySetup","_ref4","_useState","useState","_useState2","_slicedToArray","confyProps","setConfyProps","useEffect","initConfy","_ref5","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","sent","console","log","getAvailableModules","authUrl","stop","apply","arguments"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Confy/index.js"],"sourcesContent":["/* eslint-disable react/prop-types */\nimport React, { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { Provider } from 'react-redux'\nimport { ThemeProvider, StyledEngineProvider, CssBaseline } from '@mui/material'\nimport { Router } from 'react-router-dom'\nimport { QueryClient, QueryClientProvider } from 'react-query'\nimport { ReactQueryDevtools } from 'react-query/devtools'\nimport { createBrowserHistory } from 'history'\nimport { LocalizationProvider } from '@mui/x-date-pickers'\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'\nimport { createGenerateClassName, StylesProvider } from '@mui/styles'\n\nimport api from '../../lib/api'\nimport { AuthProvider } from '../AuthProvider'\nimport MenuProvider from '../MenuProvider'\nimport LanguageProvider from '../LanguageProvider'\nimport NotificationProvider from '../NotificationProvider'\nimport ErrorBoundary from '../ErrorBoundary'\nimport App from '../App'\nimport defaultTheme from '../../theme'\nimport getMenu from '../../menu'\nimport getRoutes from '../../routes'\nimport { ModulesProvider } from '../ModulesProvider'\nimport { confy, NOTIFICATION_VARIANTS } from '../../index'\nimport { ConfyProvider } from '../../ConfyProvider'\nimport { RoutesProvider } from '../RoutesProvider'\nimport { getApis } from '../../utils/api'\nimport store from '../../store'\nimport actions from '../../actions'\nimport { getAuth, getAvailableModules } from '../../utils/confy'\n\nconst generateClassName = createGenerateClassName()\n\nconst Confy = ({ modules, auth, theme, apiOptions = {} }) => {\n const queryClient = new QueryClient({ defaultOptions: { queries: { retry: false } } })\n const history = createBrowserHistory()\n\n api.setOptions({\n getBearer: () => store.getState().auth.token,\n ...apiOptions,\n })\n\n if (!auth) {\n return null\n }\n\n return (\n <StylesProvider generateClassName={generateClassName} injectFirst>\n <ConfyProvider value={confy}>\n <Provider store={store}>\n <AuthProvider value={auth}>\n <ModulesProvider value={modules}>\n <RoutesProvider value={getRoutes(modules)}>\n <MenuProvider menu={getMenu(modules)}>\n <LanguageProvider messages={window.I18N || {}}>\n <NotificationProvider>\n <StyledEngineProvider injectFirst>\n <ThemeProvider theme={theme || defaultTheme}>\n <CssBaseline />\n <Router history={history}>\n <ErrorBoundary>\n <QueryClientProvider client={queryClient}>\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <App />\n </LocalizationProvider>\n <ReactQueryDevtools initialIsOpen={false} />\n </QueryClientProvider>\n </ErrorBoundary>\n </Router>\n </ThemeProvider>\n </StyledEngineProvider>\n </NotificationProvider>\n </LanguageProvider>\n </MenuProvider>\n </RoutesProvider>\n </ModulesProvider>\n </AuthProvider>\n </Provider>\n </ConfyProvider>\n </StylesProvider>\n )\n}\n\nConfy.propTypes = {\n modules: PropTypes.array.isRequired,\n auth: PropTypes.object.isRequired,\n theme: PropTypes.object.isRequired,\n apiOptions: PropTypes.object,\n}\n\nconst onAuthError = event => {\n switch (event.error) {\n case 'failed':\n store.dispatch(actions.core.showNotification(null, NOTIFICATION_VARIANTS.error, null, 'authFailed'))\n break\n default:\n store.dispatch(\n actions.core.showNotification(event.error_description || event.message, NOTIFICATION_VARIANTS.error),\n )\n break\n }\n\n if (event.error === 'invalid_grant') {\n window.location.replace('/')\n }\n}\n\n// const registerLogout =\n// oidc =>\n// ({ expires_in }) =>\n// oidc.registerLogout(expires_in * 1000)\n\nconst refreshTokens = ({ access_token }) => {\n store.dispatch(actions.auth.refreshToken(access_token))\n}\n\nconst onSessionEnding = () => {\n store.dispatch(actions.auth.sessionEnding(true))\n}\n\nconst onLogin = ({ access_token, payload }) => {\n const user = {\n id: payload.sub,\n email: payload.email,\n lastname: payload.family_name,\n firstname: payload.given_name,\n members: payload.members,\n roles: payload.roles,\n }\n store.dispatch(actions.auth.signedIn(access_token, user))\n}\n\nconst onLogout = () => {\n store.dispatch(actions.auth.signOut())\n}\n\nconst loadConfyOptions = () => store.dispatch(actions.config.load())\n\nconst getConfyAuth = options => {\n const auth = getAuth(options.oidc)\n auth.on('signedIn', onLogin)\n // auth.on('signedIn', registerLogout(auth))\n auth.on('tokensRefreshed', refreshTokens)\n auth.on('signedOut', onLogout)\n auth.on('sessionEnding', onSessionEnding)\n auth.on('error', onAuthError)\n return auth\n}\n\nconst ConfySetup = ({ modules, theme }) => {\n const [confyProps, setConfyProps] = useState()\n\n useEffect(() => {\n const initConfy = async () => {\n api.init(getApis(modules))\n const options = await loadConfyOptions()\n console.log(`Confy mounted`)\n setConfyProps({\n auth: getConfyAuth(options),\n modules: getAvailableModules(options.modules, modules),\n apiOptions: { authUrl: options.authUrl },\n theme,\n })\n }\n initConfy()\n }, [])\n\n if (!confyProps) return\n\n return <Confy {...confyProps} />\n}\n\nConfySetup.propTypes = {\n modules: PropTypes.array.isRequired,\n theme: PropTypes.object.isRequired,\n}\n\nexport default ConfySetup\n"],"names":["generateClassName","createGenerateClassName","Confy","_ref","modules","auth","theme","_ref$apiOptions","apiOptions","queryClient","QueryClient","defaultOptions","queries","retry","history","createBrowserHistory","api","setOptions","_objectSpread","getBearer","store","getState","token","React","createElement","StylesProvider","injectFirst","ConfyProvider","value","confy","Provider","AuthProvider","ModulesProvider","RoutesProvider","getRoutes","MenuProvider","menu","getMenu","LanguageProvider","messages","window","I18N","NotificationProvider","StyledEngineProvider","ThemeProvider","defaultTheme","CssBaseline","Router","ErrorBoundary","QueryClientProvider","client","LocalizationProvider","dateAdapter","AdapterDayjs","App","ReactQueryDevtools","initialIsOpen","propTypes","PropTypes","array","isRequired","object","onAuthError","event","error","dispatch","actions","core","showNotification","NOTIFICATION_VARIANTS","error_description","message","location","replace","refreshTokens","_ref2","access_token","refreshToken","onSessionEnding","sessionEnding","onLogin","_ref3","payload","user","id","sub","email","lastname","family_name","firstname","given_name","members","roles","signedIn","onLogout","signOut","loadConfyOptions","config","load","getConfyAuth","options","getAuth","oidc","on","ConfySetup","_ref4","_useState","useState","_useState2","_slicedToArray","confyProps","setConfyProps","useEffect","initConfy","_ref5","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","init","getApis","sent","console","log","getAvailableModules","authUrl","stop","apply","arguments"],"mappings":"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"}
|
|
@@ -2,6 +2,8 @@ import { slicedToArray as _slicedToArray, extends as _extends } from '../../_vir
|
|
|
2
2
|
import React__default, { useState, useEffect } from 'react';
|
|
3
3
|
import PropTypes from '../../node_modules/prop-types/index.js';
|
|
4
4
|
import { Snackbar, AlertTitle, Grid2, Typography, Alert as Alert$1 } from '@mui/material';
|
|
5
|
+
import { useIntl } from 'react-intl';
|
|
6
|
+
import messages from './messages.js';
|
|
5
7
|
|
|
6
8
|
var Alert = function Alert(props) {
|
|
7
9
|
return /*#__PURE__*/React__default.createElement(Alert$1, _extends({
|
|
@@ -12,6 +14,7 @@ var Alert = function Alert(props) {
|
|
|
12
14
|
var Notification = function Notification(_ref) {
|
|
13
15
|
var notification = _ref.notification,
|
|
14
16
|
setNotification = _ref.setNotification;
|
|
17
|
+
var intl = useIntl();
|
|
15
18
|
var _useState = useState(false),
|
|
16
19
|
_useState2 = _slicedToArray(_useState, 2),
|
|
17
20
|
open = _useState2[0],
|
|
@@ -19,6 +22,11 @@ var Notification = function Notification(_ref) {
|
|
|
19
22
|
useEffect(function () {
|
|
20
23
|
setOpen(!!notification);
|
|
21
24
|
}, [notification]);
|
|
25
|
+
var notificationTitle = function notificationTitle() {
|
|
26
|
+
if (!notification) return;
|
|
27
|
+
if (!notification.messageId) return notification.message;
|
|
28
|
+
return intl.formatMessage(messages[notification.messageId]);
|
|
29
|
+
};
|
|
22
30
|
var handleClose = function handleClose(event, reason) {
|
|
23
31
|
if (reason === 'clickaway') return;
|
|
24
32
|
setOpen(false);
|
|
@@ -37,7 +45,7 @@ var Notification = function Notification(_ref) {
|
|
|
37
45
|
}, /*#__PURE__*/React__default.createElement("div", null, /*#__PURE__*/React__default.createElement(Alert, {
|
|
38
46
|
onClose: handleClose,
|
|
39
47
|
severity: notification.type
|
|
40
|
-
}, /*#__PURE__*/React__default.createElement(AlertTitle, null,
|
|
48
|
+
}, /*#__PURE__*/React__default.createElement(AlertTitle, null, notificationTitle()), (notification === null || notification === undefined ? undefined : notification.body) && (notification === null || notification === undefined ? undefined : notification.body.map(function (error, index) {
|
|
41
49
|
var errTitle = error[0];
|
|
42
50
|
var errMsg = error[1];
|
|
43
51
|
return /*#__PURE__*/React__default.createElement(Grid2, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/Notification/index.js"],"sourcesContent":["import React, { useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { Alert as MuiAlert, Snackbar, AlertTitle, Grid2, Typography } from '@mui/material'\n\nconst Alert = props => {\n return <MuiAlert elevation={6} variant=\"filled\" {...props} />\n}\n\nconst Notification = ({ notification, setNotification }) => {\n const [open, setOpen] = useState(false)\n\n useEffect(() => {\n setOpen(!!notification)\n }, [notification])\n\n const handleClose = (event, reason) => {\n if (reason === 'clickaway') return\n setOpen(false)\n setNotification()\n }\n\n if (!open || !notification) return null\n\n return (\n <Snackbar\n data-testid={`notification.${notification.type}`}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left',\n }}\n open={open}\n autoHideDuration={6000}\n onClose={handleClose}\n >\n <div>\n <Alert onClose={handleClose} severity={notification.type}>\n <AlertTitle>{
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Notification/index.js"],"sourcesContent":["import React, { useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { Alert as MuiAlert, Snackbar, AlertTitle, Grid2, Typography } from '@mui/material'\nimport { useIntl } from 'react-intl'\n\nimport messages from './messages'\n\nconst Alert = props => {\n return <MuiAlert elevation={6} variant=\"filled\" {...props} />\n}\n\nconst Notification = ({ notification, setNotification }) => {\n const intl = useIntl()\n const [open, setOpen] = useState(false)\n\n useEffect(() => {\n setOpen(!!notification)\n }, [notification])\n\n const notificationTitle = () => {\n if (!notification) return\n if (!notification.messageId) return notification.message\n return intl.formatMessage(messages[notification.messageId])\n }\n\n const handleClose = (event, reason) => {\n if (reason === 'clickaway') return\n setOpen(false)\n setNotification()\n }\n\n if (!open || !notification) return null\n\n return (\n <Snackbar\n data-testid={`notification.${notification.type}`}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left',\n }}\n open={open}\n autoHideDuration={6000}\n onClose={handleClose}\n >\n <div>\n <Alert onClose={handleClose} severity={notification.type}>\n <AlertTitle>{notificationTitle()}</AlertTitle>\n {notification?.body &&\n notification?.body.map((error, index) => {\n const errTitle = error[0]\n const errMsg = error[1]\n return (\n <Grid2 key={index}>\n <Typography variant=\"subtitle1\" gutterBottom style={{ fontWeight: 'bold', marginBottom: -10 }}>\n {errTitle}:\n </Typography>\n <ul>\n {errMsg.map((msg, i) => (\n <li key={i}>{msg}</li>\n ))}\n </ul>\n </Grid2>\n )\n })}\n </Alert>\n </div>\n </Snackbar>\n )\n}\n\nexport default Notification\n\nNotification.propTypes = {\n notification: PropTypes.object,\n setNotification: PropTypes.func,\n}\n"],"names":["Alert","props","React","createElement","MuiAlert","_extends","elevation","variant","Notification","_ref","notification","setNotification","intl","useIntl","_useState","useState","_useState2","_slicedToArray","open","setOpen","useEffect","notificationTitle","messageId","message","formatMessage","messages","handleClose","event","reason","Snackbar","concat","type","anchorOrigin","vertical","horizontal","autoHideDuration","onClose","severity","AlertTitle","body","map","error","index","errTitle","errMsg","Grid2","key","Typography","gutterBottom","style","fontWeight","marginBottom","msg","i","propTypes","PropTypes","object","func"],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { defineMessages } from 'react-intl';
|
|
2
|
+
|
|
3
|
+
var messages = defineMessages({
|
|
4
|
+
authFailed: {
|
|
5
|
+
id: 'components.NotificationProvider.authFailed',
|
|
6
|
+
defaultMessage: 'Authentication failed'
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
export { messages as default };
|
|
11
|
+
//# sourceMappingURL=messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.js","sources":["../../../src/components/Notification/messages.js"],"sourcesContent":["import { defineMessages } from 'react-intl'\n\nexport default defineMessages({\n authFailed: {\n id: 'components.NotificationProvider.authFailed',\n defaultMessage: 'Authentication failed',\n },\n})\n"],"names":["defineMessages","authFailed","id","defaultMessage"],"mappings":";;AAEA,eAAeA,cAAc,CAAC;AAC5BC,EAAAA,UAAU,EAAE;AACVC,IAAAA,EAAE,EAAE,4CAA4C;AAChDC,IAAAA,cAAc,EAAE;AAClB;AACF,CAAC,CAAC;;;;"}
|
|
@@ -10,8 +10,8 @@ var NotificationProvider = function NotificationProvider(_ref) {
|
|
|
10
10
|
var children = _ref.children;
|
|
11
11
|
var dispatch = useDispatch();
|
|
12
12
|
var notification = useSelector(getNotification);
|
|
13
|
-
var setNotification = function setNotification(message, level) {
|
|
14
|
-
return dispatch(message ? actions.core.showNotification(message, level) : actions.core.hideNotification());
|
|
13
|
+
var setNotification = function setNotification(message, level, body) {
|
|
14
|
+
return dispatch(message ? actions.core.showNotification(message, level, body) : actions.core.hideNotification());
|
|
15
15
|
};
|
|
16
16
|
return /*#__PURE__*/React__default.createElement(NotificationContext.Provider, {
|
|
17
17
|
value: setNotification
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/NotificationProvider/index.js"],"sourcesContent":["import React from 'react'\nimport { useSelector, useDispatch } from 'react-redux'\nimport { element } from 'prop-types'\nimport Notification from '../Notification'\nimport { getNotification } from '../../selectors/core'\nimport actions from '../../actions'\n\nexport const NotificationContext = React.createContext()\n\nconst NotificationProvider = ({ children }) => {\n const dispatch = useDispatch()\n const notification = useSelector(getNotification)\n const setNotification = (message, level) =>\n dispatch(message ? actions.core.showNotification(message, level) : actions.core.hideNotification())\n return (\n <NotificationContext.Provider value={setNotification}>\n <Notification notification={notification} setNotification={setNotification} />\n {React.Children.only(children)}\n </NotificationContext.Provider>\n )\n}\n\nNotificationProvider.propTypes = {\n children: element.isRequired,\n}\n\nexport default NotificationProvider\n"],"names":["NotificationContext","React","createContext","NotificationProvider","_ref","children","dispatch","useDispatch","notification","useSelector","getNotification","setNotification","message","level","actions","core","showNotification","hideNotification","createElement","Provider","value","Notification","Children","only","propTypes","element","isRequired"],"mappings":";;;;;;;IAOaA,mBAAmB,gBAAGC,cAAK,CAACC,aAAa;AAEtD,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAAC,IAAA,EAAqB;AAAA,EAAA,IAAfC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;AACtC,EAAA,IAAMC,QAAQ,GAAGC,WAAW,EAAE;AAC9B,EAAA,IAAMC,YAAY,GAAGC,WAAW,CAACC,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/NotificationProvider/index.js"],"sourcesContent":["import React from 'react'\nimport { useSelector, useDispatch } from 'react-redux'\nimport { element } from 'prop-types'\nimport Notification from '../Notification'\nimport { getNotification } from '../../selectors/core'\nimport actions from '../../actions'\n\nexport const NotificationContext = React.createContext()\n\nconst NotificationProvider = ({ children }) => {\n const dispatch = useDispatch()\n const notification = useSelector(getNotification)\n const setNotification = (message, level, body) =>\n dispatch(message ? actions.core.showNotification(message, level, body) : actions.core.hideNotification())\n return (\n <NotificationContext.Provider value={setNotification}>\n <Notification notification={notification} setNotification={setNotification} />\n {React.Children.only(children)}\n </NotificationContext.Provider>\n )\n}\n\nNotificationProvider.propTypes = {\n children: element.isRequired,\n}\n\nexport default NotificationProvider\n"],"names":["NotificationContext","React","createContext","NotificationProvider","_ref","children","dispatch","useDispatch","notification","useSelector","getNotification","setNotification","message","level","body","actions","core","showNotification","hideNotification","createElement","Provider","value","Notification","Children","only","propTypes","element","isRequired"],"mappings":";;;;;;;IAOaA,mBAAmB,gBAAGC,cAAK,CAACC,aAAa;AAEtD,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAAC,IAAA,EAAqB;AAAA,EAAA,IAAfC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;AACtC,EAAA,IAAMC,QAAQ,GAAGC,WAAW,EAAE;AAC9B,EAAA,IAAMC,YAAY,GAAGC,WAAW,CAACC,eAAe,CAAC;EACjD,IAAMC,eAAe,GAAG,SAAlBA,eAAeA,CAAIC,OAAO,EAAEC,KAAK,EAAEC,IAAI,EAAA;IAAA,OAC3CR,QAAQ,CAACM,OAAO,GAAGG,OAAO,CAACC,IAAI,CAACC,gBAAgB,CAACL,OAAO,EAAEC,KAAK,EAAEC,IAAI,CAAC,GAAGC,OAAO,CAACC,IAAI,CAACE,gBAAgB,EAAE,CAAC;AAAA,GAAA;AAC3G,EAAA,oBACEjB,cAAA,CAAAkB,aAAA,CAACnB,mBAAmB,CAACoB,QAAQ,EAAA;AAACC,IAAAA,KAAK,EAAEV;AAAgB,GAAA,eACnDV,cAAA,CAAAkB,aAAA,CAACG,YAAY,EAAA;AAACd,IAAAA,YAAY,EAAEA,YAAa;AAACG,IAAAA,eAAe,EAAEA;GAAkB,CAAC,EAC7EV,cAAK,CAACsB,QAAQ,CAACC,IAAI,CAACnB,QAAQ,CACD,CAAC;AAEnC;AAEAF,oBAAoB,CAACsB,SAAS,GAAG;EAC/BpB,QAAQ,EAAEqB,wBAAO,CAACC;AACpB,CAAC;;;;"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { slicedToArray as _slicedToArray } from '../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import React__default, { useState, useEffect } from 'react';
|
|
3
|
+
import Button from '@mui/material/Button';
|
|
4
|
+
import Dialog from '@mui/material/Dialog';
|
|
5
|
+
import DialogActions from '@mui/material/DialogActions';
|
|
6
|
+
import DialogContent from '@mui/material/DialogContent';
|
|
7
|
+
import DialogContentText from '@mui/material/DialogContentText';
|
|
8
|
+
import DialogTitle from '@mui/material/DialogTitle';
|
|
9
|
+
import { useIntl } from 'react-intl';
|
|
10
|
+
import PropTypes from '../../node_modules/prop-types/index.js';
|
|
11
|
+
import { useDispatch } from 'react-redux';
|
|
12
|
+
import { Box, Typography, Divider, CircularProgress } from '@mui/material';
|
|
13
|
+
import actions from '../../actions.js';
|
|
14
|
+
import useAuth from '../../hooks/auth.js';
|
|
15
|
+
import messages from './messages.js';
|
|
16
|
+
|
|
17
|
+
var MAX = 30;
|
|
18
|
+
var MIN = 0;
|
|
19
|
+
var normalise = function normalise(value) {
|
|
20
|
+
return (value - MIN) * 100 / (MAX - MIN);
|
|
21
|
+
};
|
|
22
|
+
function CircularProgressWithLabel(_ref) {
|
|
23
|
+
var value = _ref.value;
|
|
24
|
+
// Normalize the value for CircularProgress (0-100%)
|
|
25
|
+
var normalizedValue = normalise(value);
|
|
26
|
+
return /*#__PURE__*/React__default.createElement(Box, {
|
|
27
|
+
sx: {
|
|
28
|
+
position: 'relative',
|
|
29
|
+
display: 'inline-flex'
|
|
30
|
+
}
|
|
31
|
+
}, /*#__PURE__*/React__default.createElement(CircularProgress, {
|
|
32
|
+
variant: "determinate",
|
|
33
|
+
value: normalizedValue
|
|
34
|
+
}), /*#__PURE__*/React__default.createElement(Box, {
|
|
35
|
+
sx: {
|
|
36
|
+
top: 0,
|
|
37
|
+
left: 0,
|
|
38
|
+
bottom: 0,
|
|
39
|
+
right: 0,
|
|
40
|
+
position: 'absolute',
|
|
41
|
+
display: 'flex',
|
|
42
|
+
alignItems: 'center',
|
|
43
|
+
justifyContent: 'center'
|
|
44
|
+
}
|
|
45
|
+
}, /*#__PURE__*/React__default.createElement(Typography, {
|
|
46
|
+
variant: "caption",
|
|
47
|
+
component: "div",
|
|
48
|
+
sx: {
|
|
49
|
+
color: 'text.secondary'
|
|
50
|
+
}
|
|
51
|
+
}, "".concat(Math.round(value)))));
|
|
52
|
+
}
|
|
53
|
+
CircularProgressWithLabel.propTypes = {
|
|
54
|
+
value: PropTypes.number.isRequired
|
|
55
|
+
};
|
|
56
|
+
var SessionAlert = function SessionAlert(_ref2) {
|
|
57
|
+
var sessionEnding = _ref2.sessionEnding;
|
|
58
|
+
var intl = useIntl();
|
|
59
|
+
var auth = useAuth();
|
|
60
|
+
var dispatch = useDispatch();
|
|
61
|
+
var _useState = useState(MAX),
|
|
62
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
63
|
+
progress = _useState2[0],
|
|
64
|
+
setProgress = _useState2[1];
|
|
65
|
+
useEffect(function () {
|
|
66
|
+
var timer = setInterval(function () {
|
|
67
|
+
setProgress(function (prevProgress) {
|
|
68
|
+
if (prevProgress <= 1) {
|
|
69
|
+
clearInterval(timer);
|
|
70
|
+
auth.signOut();
|
|
71
|
+
return 0;
|
|
72
|
+
}
|
|
73
|
+
return prevProgress - 1;
|
|
74
|
+
});
|
|
75
|
+
}, 1000);
|
|
76
|
+
return function () {
|
|
77
|
+
clearInterval(timer);
|
|
78
|
+
};
|
|
79
|
+
}, []);
|
|
80
|
+
var handleLogout = function handleLogout() {
|
|
81
|
+
auth.signOut();
|
|
82
|
+
dispatch(actions.auth.sessionEnding(false));
|
|
83
|
+
};
|
|
84
|
+
var handleRefreshTokens = function handleRefreshTokens() {
|
|
85
|
+
auth.refreshTokens();
|
|
86
|
+
dispatch(actions.auth.sessionEnding(false));
|
|
87
|
+
};
|
|
88
|
+
var handleClose = function handleClose(_, reason) {
|
|
89
|
+
if (reason && reason === 'backdropClick') return;
|
|
90
|
+
dispatch(actions.auth.sessionEnding(false));
|
|
91
|
+
};
|
|
92
|
+
return /*#__PURE__*/React__default.createElement(Dialog, {
|
|
93
|
+
open: sessionEnding,
|
|
94
|
+
onClose: handleClose,
|
|
95
|
+
"aria-labelledby": "alert-dialog-title",
|
|
96
|
+
"aria-describedby": "alert-dialog-description",
|
|
97
|
+
disableEscapeKeyDown: true
|
|
98
|
+
}, /*#__PURE__*/React__default.createElement(DialogTitle, {
|
|
99
|
+
id: "alert-dialog-title"
|
|
100
|
+
}, /*#__PURE__*/React__default.createElement(Box, {
|
|
101
|
+
sx: {
|
|
102
|
+
display: 'flex',
|
|
103
|
+
flexDirection: 'row',
|
|
104
|
+
alignItems: 'center',
|
|
105
|
+
justifyContent: 'space-between'
|
|
106
|
+
}
|
|
107
|
+
}, /*#__PURE__*/React__default.createElement(Typography, null, intl.formatMessage(messages.sessionCheck)), /*#__PURE__*/React__default.createElement(CircularProgressWithLabel, {
|
|
108
|
+
value: progress
|
|
109
|
+
}))), /*#__PURE__*/React__default.createElement(DialogContent, null, /*#__PURE__*/React__default.createElement(DialogContentText, {
|
|
110
|
+
id: "alert-dialog-description"
|
|
111
|
+
}, /*#__PURE__*/React__default.createElement(Typography, null, intl.formatMessage(messages.infoSessionExpire)), /*#__PURE__*/React__default.createElement(Divider, {
|
|
112
|
+
sx: {
|
|
113
|
+
marginY: 1
|
|
114
|
+
}
|
|
115
|
+
}), /*#__PURE__*/React__default.createElement(Typography, null, intl.formatMessage(messages.infoIngore)))), /*#__PURE__*/React__default.createElement(DialogActions, null, /*#__PURE__*/React__default.createElement(Button, {
|
|
116
|
+
onClick: handleRefreshTokens
|
|
117
|
+
}, intl.formatMessage(messages.refreshSession)), /*#__PURE__*/React__default.createElement(Button, {
|
|
118
|
+
onClick: handleLogout
|
|
119
|
+
}, intl.formatMessage(messages.logout))));
|
|
120
|
+
};
|
|
121
|
+
SessionAlert.propTypes = {
|
|
122
|
+
sessionEnding: PropTypes.bool.isRequired
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
export { SessionAlert as default };
|
|
126
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/SessionAlert/index.js"],"sourcesContent":["import React, { useEffect, useState } from 'react'\nimport Button from '@mui/material/Button'\nimport Dialog from '@mui/material/Dialog'\nimport DialogActions from '@mui/material/DialogActions'\nimport DialogContent from '@mui/material/DialogContent'\nimport DialogContentText from '@mui/material/DialogContentText'\nimport DialogTitle from '@mui/material/DialogTitle'\nimport { useIntl } from 'react-intl'\nimport PropTypes from 'prop-types'\nimport { useDispatch } from 'react-redux'\nimport { Box, CircularProgress, Divider, Typography } from '@mui/material'\n\nimport actions from '../../actions'\nimport useAuth from '../../hooks/auth'\nimport messages from './messages'\n\nconst MAX = 30\nconst MIN = 0\n\nconst normalise = value => ((value - MIN) * 100) / (MAX - MIN)\n\nfunction CircularProgressWithLabel({ value }) {\n // Normalize the value for CircularProgress (0-100%)\n const normalizedValue = normalise(value)\n\n return (\n <Box sx={{ position: 'relative', display: 'inline-flex' }}>\n <CircularProgress variant=\"determinate\" value={normalizedValue} />\n <Box\n sx={{\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n position: 'absolute',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <Typography variant=\"caption\" component=\"div\" sx={{ color: 'text.secondary' }}>\n {`${Math.round(value)}`}\n </Typography>\n </Box>\n </Box>\n )\n}\n\nCircularProgressWithLabel.propTypes = {\n value: PropTypes.number.isRequired,\n}\n\nconst SessionAlert = ({ sessionEnding }) => {\n const intl = useIntl()\n const auth = useAuth()\n const dispatch = useDispatch()\n const [progress, setProgress] = useState(MAX)\n\n useEffect(() => {\n const timer = setInterval(() => {\n setProgress(prevProgress => {\n if (prevProgress <= 1) {\n clearInterval(timer)\n auth.signOut()\n return 0\n }\n return prevProgress - 1\n })\n }, 1000)\n\n return () => {\n clearInterval(timer)\n }\n }, [])\n\n const handleLogout = () => {\n auth.signOut()\n dispatch(actions.auth.sessionEnding(false))\n }\n\n const handleRefreshTokens = () => {\n auth.refreshTokens()\n dispatch(actions.auth.sessionEnding(false))\n }\n\n const handleClose = (_, reason) => {\n if (reason && reason === 'backdropClick') return\n dispatch(actions.auth.sessionEnding(false))\n }\n\n return (\n <Dialog\n open={sessionEnding}\n onClose={handleClose}\n aria-labelledby=\"alert-dialog-title\"\n aria-describedby=\"alert-dialog-description\"\n disableEscapeKeyDown={true}\n >\n <DialogTitle id=\"alert-dialog-title\">\n <Box sx={{ display: 'flex', flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between' }}>\n <Typography>{intl.formatMessage(messages.sessionCheck)}</Typography>\n <CircularProgressWithLabel value={progress} />\n </Box>\n </DialogTitle>\n <DialogContent>\n <DialogContentText id=\"alert-dialog-description\">\n <Typography>{intl.formatMessage(messages.infoSessionExpire)}</Typography>\n <Divider sx={{ marginY: 1 }} />\n <Typography>{intl.formatMessage(messages.infoIngore)}</Typography>\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button onClick={handleRefreshTokens}>{intl.formatMessage(messages.refreshSession)}</Button>\n <Button onClick={handleLogout}>{intl.formatMessage(messages.logout)}</Button>\n </DialogActions>\n </Dialog>\n )\n}\n\nSessionAlert.propTypes = {\n sessionEnding: PropTypes.bool.isRequired,\n}\n\nexport default SessionAlert\n"],"names":["MAX","MIN","normalise","value","CircularProgressWithLabel","_ref","normalizedValue","React","createElement","Box","sx","position","display","CircularProgress","variant","top","left","bottom","right","alignItems","justifyContent","Typography","component","color","concat","Math","round","propTypes","PropTypes","number","isRequired","SessionAlert","_ref2","sessionEnding","intl","useIntl","auth","useAuth","dispatch","useDispatch","_useState","useState","_useState2","_slicedToArray","progress","setProgress","useEffect","timer","setInterval","prevProgress","clearInterval","signOut","handleLogout","actions","handleRefreshTokens","refreshTokens","handleClose","_","reason","Dialog","open","onClose","disableEscapeKeyDown","DialogTitle","id","flexDirection","formatMessage","messages","sessionCheck","DialogContent","DialogContentText","infoSessionExpire","Divider","marginY","infoIngore","DialogActions","Button","onClick","refreshSession","logout","bool"],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { defineMessages } from 'react-intl';
|
|
2
|
+
|
|
3
|
+
var messages = defineMessages({
|
|
4
|
+
infoSessionExpire: {
|
|
5
|
+
id: 'components.SessionAlert.infoSessionExpire',
|
|
6
|
+
defaultMessage: 'Your session is about to expire, what would you like to do ?'
|
|
7
|
+
},
|
|
8
|
+
infoIngore: {
|
|
9
|
+
id: 'components.SessionAlert.infoIngore',
|
|
10
|
+
defaultMessage: ' Ignoring this and letting the timer above expire will result in an automatic logout from your current session.'
|
|
11
|
+
},
|
|
12
|
+
refreshSession: {
|
|
13
|
+
id: 'components.SessionAlert.refreshSession',
|
|
14
|
+
defaultMessage: 'Refresh session'
|
|
15
|
+
},
|
|
16
|
+
logout: {
|
|
17
|
+
id: 'components.SessionAlert.logout',
|
|
18
|
+
defaultMessage: 'Logout'
|
|
19
|
+
},
|
|
20
|
+
sessionCheck: {
|
|
21
|
+
id: 'components.SessionAlert.sessionCheck',
|
|
22
|
+
defaultMessage: 'Session Check'
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
export { messages as default };
|
|
27
|
+
//# sourceMappingURL=messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.js","sources":["../../../src/components/SessionAlert/messages.js"],"sourcesContent":["import { defineMessages } from 'react-intl'\n\nexport default defineMessages({\n infoSessionExpire: {\n id: 'components.SessionAlert.infoSessionExpire',\n defaultMessage: 'Your session is about to expire, what would you like to do ?',\n },\n infoIngore: {\n id: 'components.SessionAlert.infoIngore',\n defaultMessage:\n ' Ignoring this and letting the timer above expire will result in an automatic logout from your current session.',\n },\n refreshSession: {\n id: 'components.SessionAlert.refreshSession',\n defaultMessage: 'Refresh session',\n },\n logout: {\n id: 'components.SessionAlert.logout',\n defaultMessage: 'Logout',\n },\n sessionCheck: {\n id: 'components.SessionAlert.sessionCheck',\n defaultMessage: 'Session Check',\n },\n})\n"],"names":["defineMessages","infoSessionExpire","id","defaultMessage","infoIngore","refreshSession","logout","sessionCheck"],"mappings":";;AAEA,eAAeA,cAAc,CAAC;AAC5BC,EAAAA,iBAAiB,EAAE;AACjBC,IAAAA,EAAE,EAAE,2CAA2C;AAC/CC,IAAAA,cAAc,EAAE;GACjB;AACDC,EAAAA,UAAU,EAAE;AACVF,IAAAA,EAAE,EAAE,oCAAoC;AACxCC,IAAAA,cAAc,EACZ;GACH;AACDE,EAAAA,cAAc,EAAE;AACdH,IAAAA,EAAE,EAAE,wCAAwC;AAC5CC,IAAAA,cAAc,EAAE;GACjB;AACDG,EAAAA,MAAM,EAAE;AACNJ,IAAAA,EAAE,EAAE,gCAAgC;AACpCC,IAAAA,cAAc,EAAE;GACjB;AACDI,EAAAA,YAAY,EAAE;AACZL,IAAAA,EAAE,EAAE,sCAAsC;AAC1CC,IAAAA,cAAc,EAAE;AAClB;AACF,CAAC,CAAC;;;;"}
|
package/esm/ducks/auth.js
CHANGED
|
@@ -3,6 +3,8 @@ import { objectSpread2 as _objectSpread2 } from '../_virtual/_rollupPluginBabelH
|
|
|
3
3
|
var SIGNED_IN = 'SIGNED_IN';
|
|
4
4
|
var SIGNED_OUT = 'SIGNED_OUT';
|
|
5
5
|
var UPDATE_USER_STATE = 'UPDATE_USER_STATE';
|
|
6
|
+
var SESSION_ENDING = 'SESSION_ENDING';
|
|
7
|
+
var REFRESH_TOKEN = 'REFRESH_TOKEN';
|
|
6
8
|
var reducer = function reducer() {
|
|
7
9
|
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
8
10
|
var action = arguments.length > 1 ? arguments[1] : undefined;
|
|
@@ -18,6 +20,14 @@ var reducer = function reducer() {
|
|
|
18
20
|
return _objectSpread2(_objectSpread2({}, state), {}, {
|
|
19
21
|
user: action.user
|
|
20
22
|
});
|
|
23
|
+
case SESSION_ENDING:
|
|
24
|
+
return _objectSpread2(_objectSpread2({}, state), {}, {
|
|
25
|
+
sessionEnding: action.sessionEnding
|
|
26
|
+
});
|
|
27
|
+
case REFRESH_TOKEN:
|
|
28
|
+
return _objectSpread2(_objectSpread2({}, state), {}, {
|
|
29
|
+
token: action.token
|
|
30
|
+
});
|
|
21
31
|
default:
|
|
22
32
|
return state;
|
|
23
33
|
}
|
|
@@ -40,9 +50,23 @@ var updateUserState = function updateUserState(user) {
|
|
|
40
50
|
user: user
|
|
41
51
|
};
|
|
42
52
|
};
|
|
53
|
+
var sessionEnding = function sessionEnding(_sessionEnding) {
|
|
54
|
+
return {
|
|
55
|
+
type: SESSION_ENDING,
|
|
56
|
+
sessionEnding: _sessionEnding
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
var refreshToken = function refreshToken(token) {
|
|
60
|
+
return {
|
|
61
|
+
type: REFRESH_TOKEN,
|
|
62
|
+
token: token
|
|
63
|
+
};
|
|
64
|
+
};
|
|
43
65
|
var actions = {
|
|
44
66
|
signedIn: signedIn,
|
|
45
67
|
signOut: signOut,
|
|
68
|
+
sessionEnding: sessionEnding,
|
|
69
|
+
refreshToken: refreshToken,
|
|
46
70
|
updateUserState: updateUserState
|
|
47
71
|
};
|
|
48
72
|
var auth = {
|
|
@@ -50,5 +74,5 @@ var auth = {
|
|
|
50
74
|
actions: actions
|
|
51
75
|
};
|
|
52
76
|
|
|
53
|
-
export { SIGNED_IN, SIGNED_OUT, UPDATE_USER_STATE, auth as default, signOut };
|
|
77
|
+
export { REFRESH_TOKEN, SESSION_ENDING, SIGNED_IN, SIGNED_OUT, UPDATE_USER_STATE, auth as default, sessionEnding, signOut };
|
|
54
78
|
//# sourceMappingURL=auth.js.map
|
package/esm/ducks/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sources":["../../src/ducks/auth.js"],"sourcesContent":["export const SIGNED_IN = 'SIGNED_IN'\nexport const SIGNED_OUT = 'SIGNED_OUT'\nexport const UPDATE_USER_STATE = 'UPDATE_USER_STATE'\n\nconst reducer = (state = {}, action) => {\n switch (action.type) {\n case SIGNED_IN:\n return {\n ...state,\n user: action.user,\n token: action.token,\n }\n case SIGNED_OUT:\n return {}\n case UPDATE_USER_STATE:\n return {\n ...state,\n user: action.user,\n }\n default:\n return state\n }\n}\n\nconst signedIn = (token, user) => {\n return {\n type: SIGNED_IN,\n token,\n user,\n }\n}\n\nexport const signOut = () => {\n return { type: SIGNED_OUT }\n}\n\nconst updateUserState = user => {\n return {\n type: UPDATE_USER_STATE,\n user,\n }\n}\n\nconst actions = {\n signedIn,\n signOut,\n updateUserState,\n}\n\nexport default { reducer, actions }\n"],"names":["SIGNED_IN","SIGNED_OUT","UPDATE_USER_STATE","reducer","state","arguments","length","undefined","action","type","_objectSpread","user","token","signedIn","signOut","updateUserState","actions"],"mappings":";;AAAO,IAAMA,SAAS,GAAG;AAClB,IAAMC,UAAU,GAAG;AACnB,IAAMC,iBAAiB,GAAG;
|
|
1
|
+
{"version":3,"file":"auth.js","sources":["../../src/ducks/auth.js"],"sourcesContent":["export const SIGNED_IN = 'SIGNED_IN'\nexport const SIGNED_OUT = 'SIGNED_OUT'\nexport const UPDATE_USER_STATE = 'UPDATE_USER_STATE'\nexport const SESSION_ENDING = 'SESSION_ENDING'\nexport const REFRESH_TOKEN = 'REFRESH_TOKEN'\n\nconst reducer = (state = {}, action) => {\n switch (action.type) {\n case SIGNED_IN:\n return {\n ...state,\n user: action.user,\n token: action.token,\n }\n case SIGNED_OUT:\n return {}\n case UPDATE_USER_STATE:\n return {\n ...state,\n user: action.user,\n }\n case SESSION_ENDING:\n return {\n ...state,\n sessionEnding: action.sessionEnding,\n }\n case REFRESH_TOKEN:\n return {\n ...state,\n token: action.token,\n }\n default:\n return state\n }\n}\n\nconst signedIn = (token, user) => {\n return {\n type: SIGNED_IN,\n token,\n user,\n }\n}\n\nexport const signOut = () => {\n return { type: SIGNED_OUT }\n}\n\nconst updateUserState = user => {\n return {\n type: UPDATE_USER_STATE,\n user,\n }\n}\n\nexport const sessionEnding = sessionEnding => {\n return { type: SESSION_ENDING, sessionEnding }\n}\n\nconst refreshToken = token => {\n return {\n type: REFRESH_TOKEN,\n token,\n }\n}\n\nconst actions = {\n signedIn,\n signOut,\n sessionEnding,\n refreshToken,\n updateUserState,\n}\n\nexport default { reducer, actions }\n"],"names":["SIGNED_IN","SIGNED_OUT","UPDATE_USER_STATE","SESSION_ENDING","REFRESH_TOKEN","reducer","state","arguments","length","undefined","action","type","_objectSpread","user","token","sessionEnding","signedIn","signOut","updateUserState","refreshToken","actions"],"mappings":";;AAAO,IAAMA,SAAS,GAAG;AAClB,IAAMC,UAAU,GAAG;AACnB,IAAMC,iBAAiB,GAAG;AAC1B,IAAMC,cAAc,GAAG;AACvB,IAAMC,aAAa,GAAG;AAE7B,IAAMC,OAAO,GAAG,SAAVA,OAAOA,GAA2B;AAAA,EAAA,IAAvBC,KAAK,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,EAAE;EAAA,IAAEG,MAAM,GAAAH,SAAA,CAAAC,MAAA,GAAAD,CAAAA,GAAAA,SAAA,MAAAE,SAAA;EACjC,QAAQC,MAAM,CAACC,IAAI;AACjB,IAAA,KAAKX,SAAS;AACZ,MAAA,OAAAY,cAAA,CAAAA,cAAA,CAAA,EAAA,EACKN,KAAK,CAAA,EAAA,EAAA,EAAA;QACRO,IAAI,EAAEH,MAAM,CAACG,IAAI;QACjBC,KAAK,EAAEJ,MAAM,CAACI;AAAK,OAAA,CAAA;AAEvB,IAAA,KAAKb,UAAU;AACb,MAAA,OAAO,EAAE;AACX,IAAA,KAAKC,iBAAiB;AACpB,MAAA,OAAAU,cAAA,CAAAA,cAAA,CAAA,EAAA,EACKN,KAAK,CAAA,EAAA,EAAA,EAAA;QACRO,IAAI,EAAEH,MAAM,CAACG;AAAI,OAAA,CAAA;AAErB,IAAA,KAAKV,cAAc;AACjB,MAAA,OAAAS,cAAA,CAAAA,cAAA,CAAA,EAAA,EACKN,KAAK,CAAA,EAAA,EAAA,EAAA;QACRS,aAAa,EAAEL,MAAM,CAACK;AAAa,OAAA,CAAA;AAEvC,IAAA,KAAKX,aAAa;AAChB,MAAA,OAAAQ,cAAA,CAAAA,cAAA,CAAA,EAAA,EACKN,KAAK,CAAA,EAAA,EAAA,EAAA;QACRQ,KAAK,EAAEJ,MAAM,CAACI;AAAK,OAAA,CAAA;AAEvB,IAAA;AACE,MAAA,OAAOR,KAAK;AAChB;AACF,CAAC;AAED,IAAMU,QAAQ,GAAG,SAAXA,QAAQA,CAAIF,KAAK,EAAED,IAAI,EAAK;EAChC,OAAO;AACLF,IAAAA,IAAI,EAAEX,SAAS;AACfc,IAAAA,KAAK,EAALA,KAAK;AACLD,IAAAA,IAAI,EAAJA;GACD;AACH,CAAC;IAEYI,OAAO,GAAG,SAAVA,OAAOA,GAAS;EAC3B,OAAO;AAAEN,IAAAA,IAAI,EAAEV;GAAY;AAC7B;AAEA,IAAMiB,eAAe,GAAG,SAAlBA,eAAeA,CAAGL,IAAI,EAAI;EAC9B,OAAO;AACLF,IAAAA,IAAI,EAAET,iBAAiB;AACvBW,IAAAA,IAAI,EAAJA;GACD;AACH,CAAC;IAEYE,aAAa,GAAG,SAAhBA,aAAaA,CAAGA,cAAa,EAAI;EAC5C,OAAO;AAAEJ,IAAAA,IAAI,EAAER,cAAc;AAAEY,IAAAA,aAAa,EAAbA;GAAe;AAChD;AAEA,IAAMI,YAAY,GAAG,SAAfA,YAAYA,CAAGL,KAAK,EAAI;EAC5B,OAAO;AACLH,IAAAA,IAAI,EAAEP,aAAa;AACnBU,IAAAA,KAAK,EAALA;GACD;AACH,CAAC;AAED,IAAMM,OAAO,GAAG;AACdJ,EAAAA,QAAQ,EAARA,QAAQ;AACRC,EAAAA,OAAO,EAAPA,OAAO;AACPF,EAAAA,aAAa,EAAbA,aAAa;AACbI,EAAAA,YAAY,EAAZA,YAAY;AACZD,EAAAA,eAAe,EAAfA;AACF,CAAC;AAED,WAAe;AAAEb,EAAAA,OAAO,EAAPA,OAAO;AAAEe,EAAAA,OAAO,EAAPA;AAAQ,CAAC;;;;"}
|
package/esm/ducks/core.js
CHANGED
|
@@ -2,8 +2,6 @@ import { objectSpread2 as _objectSpread2 } from '../_virtual/_rollupPluginBabelH
|
|
|
2
2
|
import { SIGNED_OUT } from './auth.js';
|
|
3
3
|
import { NOTIFICATION_VARIANTS } from './utils.js';
|
|
4
4
|
import omit from '../node_modules/ramda/es/omit.js';
|
|
5
|
-
import compose from '../node_modules/ramda/es/compose.js';
|
|
6
|
-
import assocPath from '../node_modules/ramda/es/assocPath.js';
|
|
7
5
|
|
|
8
6
|
var START_REQUEST = 'CORE/START_REQUEST';
|
|
9
7
|
var END_REQUEST = 'CORE/END_REQUEST';
|
|
@@ -46,7 +44,14 @@ var reducer = function reducer() {
|
|
|
46
44
|
pendingRequests: state.pendingRequests - 1
|
|
47
45
|
});
|
|
48
46
|
case SHOW_NOTIFICATION:
|
|
49
|
-
return
|
|
47
|
+
return _objectSpread2(_objectSpread2({}, state), {}, {
|
|
48
|
+
notification: {
|
|
49
|
+
type: action.notificationType,
|
|
50
|
+
message: action.message,
|
|
51
|
+
body: action.body,
|
|
52
|
+
messageId: action.messageId
|
|
53
|
+
}
|
|
54
|
+
});
|
|
50
55
|
case HIDE_NOTIFICATION:
|
|
51
56
|
return omit(['notification'])(state);
|
|
52
57
|
default:
|
|
@@ -82,7 +87,8 @@ var requestError = function requestError(_ref) {
|
|
|
82
87
|
var method = _ref.method,
|
|
83
88
|
errorCode = _ref.errorCode,
|
|
84
89
|
statusCode = _ref.statusCode,
|
|
85
|
-
message = _ref.message
|
|
90
|
+
message = _ref.message,
|
|
91
|
+
body = _ref.body;
|
|
86
92
|
return function (dispatch, getState) {
|
|
87
93
|
dispatch({
|
|
88
94
|
type: REQUEST_ERROR,
|
|
@@ -100,14 +106,16 @@ var requestError = function requestError(_ref) {
|
|
|
100
106
|
type: STOP_LOADING
|
|
101
107
|
});
|
|
102
108
|
}, 500);
|
|
103
|
-
dispatch(showNotification(message, NOTIFICATION_VARIANTS.error));
|
|
109
|
+
dispatch(showNotification(message, NOTIFICATION_VARIANTS.error, body));
|
|
104
110
|
};
|
|
105
111
|
};
|
|
106
|
-
var showNotification = function showNotification(message, type) {
|
|
112
|
+
var showNotification = function showNotification(message, type, body, messageId) {
|
|
107
113
|
return {
|
|
108
114
|
type: SHOW_NOTIFICATION,
|
|
109
115
|
notificationType: type,
|
|
110
|
-
message: message
|
|
116
|
+
message: message,
|
|
117
|
+
body: body,
|
|
118
|
+
messageId: messageId
|
|
111
119
|
};
|
|
112
120
|
};
|
|
113
121
|
var hideNotification = function hideNotification() {
|
package/esm/ducks/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sources":["../../src/ducks/core.js"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"core.js","sources":["../../src/ducks/core.js"],"sourcesContent":["import { omit } from 'ramda'\nimport { SIGNED_OUT } from './auth'\nimport { NOTIFICATION_VARIANTS } from './utils'\n\nexport const START_REQUEST = 'CORE/START_REQUEST'\nexport const END_REQUEST = 'CORE/END_REQUEST'\nexport const REQUEST_ERROR = 'CORE/REQUEST_ERROR'\nexport const SHOW_NOTIFICATION = 'CORE/SHOW_NOTIFICATION'\nexport const HIDE_NOTIFICATION = 'CORE/HIDE_NOTIFICATION'\nexport const START_LOADING = 'CORE/START_LOADING'\nexport const STOP_LOADING = 'CORE/STOP_LOADING'\n\nconst initialState = { pendingRequests: 0 }\nlet timer\n\nconst reducer = (state = initialState, action = {}) => {\n switch (action.type) {\n case SIGNED_OUT:\n return initialState\n case START_LOADING:\n return {\n ...state,\n loading: true,\n }\n case STOP_LOADING:\n return {\n ...state,\n loading: false,\n }\n\n case START_REQUEST:\n return {\n ...state,\n error: undefined,\n pendingRequests: Number(state.pendingRequests || 0) + 1,\n }\n case REQUEST_ERROR:\n return {\n ...state,\n error: action.error,\n pendingRequests: state.pendingRequests - 1,\n }\n case END_REQUEST:\n return {\n ...state,\n error: undefined,\n pendingRequests: state.pendingRequests - 1,\n }\n case SHOW_NOTIFICATION:\n return {\n ...state,\n notification: {\n type: action.notificationType,\n message: action.message,\n body: action.body,\n messageId: action.messageId,\n },\n }\n case HIDE_NOTIFICATION:\n return omit(['notification'])(state)\n default:\n return state\n }\n}\n\nexport const startRequest = () => dispatch => {\n dispatch({ type: START_REQUEST })\n if (timer) clearTimeout(timer)\n dispatch({ type: START_LOADING })\n}\n\nexport const endRequest = () => (dispatch, getState) => {\n dispatch({ type: END_REQUEST })\n const {\n core: { pendingRequests },\n } = getState()\n if (!pendingRequests) timer = setTimeout(() => dispatch({ type: STOP_LOADING }), 500)\n}\n\nexport const requestError =\n ({ method, errorCode, statusCode, message, body }) =>\n (dispatch, getState) => {\n dispatch({\n type: REQUEST_ERROR,\n error: { method, errorCode, statusCode, message },\n })\n\n const {\n core: { pendingRequests },\n } = getState()\n if (!pendingRequests) timer = setTimeout(() => dispatch({ type: STOP_LOADING }), 500)\n\n dispatch(showNotification(message, NOTIFICATION_VARIANTS.error, body))\n }\n\nexport const showNotification = (message, type, body, messageId) => ({\n type: SHOW_NOTIFICATION,\n notificationType: type,\n message,\n body,\n messageId,\n})\n\nconst hideNotification = () => ({ type: HIDE_NOTIFICATION })\n\nconst actions = {\n startRequest,\n endRequest,\n requestError,\n showNotification,\n hideNotification,\n}\n\nexport default { reducer, actions }\n"],"names":["START_REQUEST","END_REQUEST","REQUEST_ERROR","SHOW_NOTIFICATION","HIDE_NOTIFICATION","START_LOADING","STOP_LOADING","initialState","pendingRequests","timer","reducer","state","arguments","length","undefined","action","type","SIGNED_OUT","_objectSpread","loading","error","Number","notification","notificationType","message","body","messageId","omit","startRequest","dispatch","clearTimeout","endRequest","getState","_getState","core","setTimeout","requestError","_ref","method","errorCode","statusCode","_getState2","showNotification","NOTIFICATION_VARIANTS","hideNotification","actions"],"mappings":";;;;;AAIO,IAAMA,aAAa,GAAG;AACtB,IAAMC,WAAW,GAAG;AACpB,IAAMC,aAAa,GAAG;AACtB,IAAMC,iBAAiB,GAAG;AAC1B,IAAMC,iBAAiB,GAAG;AAC1B,IAAMC,aAAa,GAAG;AACtB,IAAMC,YAAY,GAAG;AAE5B,IAAMC,YAAY,GAAG;AAAEC,EAAAA,eAAe,EAAE;AAAE,CAAC;AAC3C,IAAIC,KAAK;AAET,IAAMC,OAAO,GAAG,SAAVA,OAAOA,GAA0C;AAAA,EAAA,IAAtCC,KAAK,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAGL,YAAY;AAAA,EAAA,IAAEQ,MAAM,GAAAH,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,EAAE;EAChD,QAAQG,MAAM,CAACC,IAAI;AACjB,IAAA,KAAKC,UAAU;AACb,MAAA,OAAOV,YAAY;AACrB,IAAA,KAAKF,aAAa;AAChB,MAAA,OAAAa,cAAA,CAAAA,cAAA,CAAA,EAAA,EACKP,KAAK,CAAA,EAAA,EAAA,EAAA;AACRQ,QAAAA,OAAO,EAAE;AAAI,OAAA,CAAA;AAEjB,IAAA,KAAKb,YAAY;AACf,MAAA,OAAAY,cAAA,CAAAA,cAAA,CAAA,EAAA,EACKP,KAAK,CAAA,EAAA,EAAA,EAAA;AACRQ,QAAAA,OAAO,EAAE;AAAK,OAAA,CAAA;AAGlB,IAAA,KAAKnB,aAAa;AAChB,MAAA,OAAAkB,cAAA,CAAAA,cAAA,CAAA,EAAA,EACKP,KAAK,CAAA,EAAA,EAAA,EAAA;AACRS,QAAAA,KAAK,EAAEN,SAAS;QAChBN,eAAe,EAAEa,MAAM,CAACV,KAAK,CAACH,eAAe,IAAI,CAAC,CAAC,GAAG;AAAC,OAAA,CAAA;AAE3D,IAAA,KAAKN,aAAa;AAChB,MAAA,OAAAgB,cAAA,CAAAA,cAAA,CAAA,EAAA,EACKP,KAAK,CAAA,EAAA,EAAA,EAAA;QACRS,KAAK,EAAEL,MAAM,CAACK,KAAK;AACnBZ,QAAAA,eAAe,EAAEG,KAAK,CAACH,eAAe,GAAG;AAAC,OAAA,CAAA;AAE9C,IAAA,KAAKP,WAAW;AACd,MAAA,OAAAiB,cAAA,CAAAA,cAAA,CAAA,EAAA,EACKP,KAAK,CAAA,EAAA,EAAA,EAAA;AACRS,QAAAA,KAAK,EAAEN,SAAS;AAChBN,QAAAA,eAAe,EAAEG,KAAK,CAACH,eAAe,GAAG;AAAC,OAAA,CAAA;AAE9C,IAAA,KAAKL,iBAAiB;AACpB,MAAA,OAAAe,cAAA,CAAAA,cAAA,CAAA,EAAA,EACKP,KAAK,CAAA,EAAA,EAAA,EAAA;AACRW,QAAAA,YAAY,EAAE;UACZN,IAAI,EAAED,MAAM,CAACQ,gBAAgB;UAC7BC,OAAO,EAAET,MAAM,CAACS,OAAO;UACvBC,IAAI,EAAEV,MAAM,CAACU,IAAI;UACjBC,SAAS,EAAEX,MAAM,CAACW;AACpB;AAAC,OAAA,CAAA;AAEL,IAAA,KAAKtB,iBAAiB;MACpB,OAAOuB,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAChB,KAAK,CAAC;AACtC,IAAA;AACE,MAAA,OAAOA,KAAK;AAChB;AACF,CAAC;AAEYiB,IAAAA,YAAY,GAAG,SAAfA,YAAYA,GAAA;EAAA,OAAS,UAAAC,QAAQ,EAAI;AAC5CA,IAAAA,QAAQ,CAAC;AAAEb,MAAAA,IAAI,EAAEhB;AAAc,KAAC,CAAC;AACjC,IAAA,IAAIS,KAAK,EAAEqB,YAAY,CAACrB,KAAK,CAAC;AAC9BoB,IAAAA,QAAQ,CAAC;AAAEb,MAAAA,IAAI,EAAEX;AAAc,KAAC,CAAC;GAClC;AAAA;AAEY0B,IAAAA,UAAU,GAAG,SAAbA,UAAUA,GAAA;AAAA,EAAA,OAAS,UAACF,QAAQ,EAAEG,QAAQ,EAAK;AACtDH,IAAAA,QAAQ,CAAC;AAAEb,MAAAA,IAAI,EAAEf;AAAY,KAAC,CAAC;AAC/B,IAAA,IAAAgC,SAAA,GAEID,QAAQ,EAAE;AADJxB,MAAAA,eAAe,GAAAyB,SAAA,CAAvBC,IAAI,CAAI1B,eAAe;AAEzB,IAAA,IAAI,CAACA,eAAe,EAAEC,KAAK,GAAG0B,UAAU,CAAC,YAAA;AAAA,MAAA,OAAMN,QAAQ,CAAC;AAAEb,QAAAA,IAAI,EAAEV;AAAa,OAAC,CAAC;AAAA,KAAA,EAAE,GAAG,CAAC;GACtF;AAAA;IAEY8B,YAAY,GACvB,SADWA,YAAYA,CAAAC,IAAA,EAAA;AAAA,EAAA,IACpBC,MAAM,GAAAD,IAAA,CAANC,MAAM;IAAEC,SAAS,GAAAF,IAAA,CAATE,SAAS;IAAEC,UAAU,GAAAH,IAAA,CAAVG,UAAU;IAAEhB,OAAO,GAAAa,IAAA,CAAPb,OAAO;IAAEC,IAAI,GAAAY,IAAA,CAAJZ,IAAI;AAAA,EAAA,OAC/C,UAACI,QAAQ,EAAEG,QAAQ,EAAK;AACtBH,IAAAA,QAAQ,CAAC;AACPb,MAAAA,IAAI,EAAEd,aAAa;AACnBkB,MAAAA,KAAK,EAAE;AAAEkB,QAAAA,MAAM,EAANA,MAAM;AAAEC,QAAAA,SAAS,EAATA,SAAS;AAAEC,QAAAA,UAAU,EAAVA,UAAU;AAAEhB,QAAAA,OAAO,EAAPA;AAAQ;AAClD,KAAC,CAAC;AAEF,IAAA,IAAAiB,UAAA,GAEIT,QAAQ,EAAE;AADJxB,MAAAA,eAAe,GAAAiC,UAAA,CAAvBP,IAAI,CAAI1B,eAAe;AAEzB,IAAA,IAAI,CAACA,eAAe,EAAEC,KAAK,GAAG0B,UAAU,CAAC,YAAA;AAAA,MAAA,OAAMN,QAAQ,CAAC;AAAEb,QAAAA,IAAI,EAAEV;AAAa,OAAC,CAAC;AAAA,KAAA,EAAE,GAAG,CAAC;IAErFuB,QAAQ,CAACa,gBAAgB,CAAClB,OAAO,EAAEmB,qBAAqB,CAACvB,KAAK,EAAEK,IAAI,CAAC,CAAC;GACvE;AAAA;AAEUiB,IAAAA,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAIlB,OAAO,EAAER,IAAI,EAAES,IAAI,EAAEC,SAAS,EAAA;EAAA,OAAM;AACnEV,IAAAA,IAAI,EAAEb,iBAAiB;AACvBoB,IAAAA,gBAAgB,EAAEP,IAAI;AACtBQ,IAAAA,OAAO,EAAPA,OAAO;AACPC,IAAAA,IAAI,EAAJA,IAAI;AACJC,IAAAA,SAAS,EAATA;GACD;AAAA;AAED,IAAMkB,gBAAgB,GAAG,SAAnBA,gBAAgBA,GAAA;EAAA,OAAU;AAAE5B,IAAAA,IAAI,EAAEZ;GAAmB;AAAA,CAAC;AAE5D,IAAMyC,OAAO,GAAG;AACdjB,EAAAA,YAAY,EAAZA,YAAY;AACZG,EAAAA,UAAU,EAAVA,UAAU;AACVK,EAAAA,YAAY,EAAZA,YAAY;AACZM,EAAAA,gBAAgB,EAAhBA,gBAAgB;AAChBE,EAAAA,gBAAgB,EAAhBA;AACF,CAAC;AAED,WAAe;AAAElC,EAAAA,OAAO,EAAPA,OAAO;AAAEmC,EAAAA,OAAO,EAAPA;AAAQ,CAAC;;;;"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { objectWithoutProperties as _objectWithoutProperties, extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import React__default from 'react';
|
|
3
|
+
import PropTypes from '../../node_modules/prop-types/index.js';
|
|
4
|
+
import EmailFieldForm from './index.js';
|
|
5
|
+
|
|
6
|
+
var _excluded = ["input", "meta"];
|
|
7
|
+
var EmailFieldAdapter = function EmailFieldAdapter(_ref) {
|
|
8
|
+
var input = _ref.input,
|
|
9
|
+
meta = _ref.meta,
|
|
10
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
11
|
+
return /*#__PURE__*/React__default.createElement(EmailFieldForm, _extends({
|
|
12
|
+
input: input,
|
|
13
|
+
meta: meta,
|
|
14
|
+
onChange: input.onChange,
|
|
15
|
+
keyboard: false
|
|
16
|
+
}, rest));
|
|
17
|
+
};
|
|
18
|
+
EmailFieldAdapter.propTypes = {
|
|
19
|
+
input: PropTypes.object.isRequired,
|
|
20
|
+
meta: PropTypes.object.isRequired
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export { EmailFieldAdapter as default };
|
|
24
|
+
//# sourceMappingURL=EmailFieldAdaptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmailFieldAdaptor.js","sources":["../../../src/forms/EmailField/EmailFieldAdaptor.js"],"sourcesContent":["import React from 'react'\nimport PropTypes from 'prop-types'\nimport EmailFieldForm from '.'\n\nconst EmailFieldAdapter = ({ input, meta, ...rest }) => (\n <EmailFieldForm input={input} meta={meta} onChange={input.onChange} keyboard={false} {...rest} />\n)\n\nEmailFieldAdapter.propTypes = {\n input: PropTypes.object.isRequired,\n meta: PropTypes.object.isRequired,\n}\n\nexport default EmailFieldAdapter\n"],"names":["EmailFieldAdapter","_ref","input","meta","rest","_objectWithoutProperties","_excluded","React","createElement","EmailFieldForm","_extends","onChange","keyboard","propTypes","PropTypes","object","isRequired"],"mappings":";;;;;;AAIA,IAAMA,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAAC,IAAA,EAAA;AAAA,EAAA,IAAMC,KAAK,GAAAD,IAAA,CAALC,KAAK;IAAEC,IAAI,GAAAF,IAAA,CAAJE,IAAI;AAAKC,IAAAA,IAAI,GAAAC,wBAAA,CAAAJ,IAAA,EAAAK,SAAA,CAAA;AAAA,EAAA,oBAC/CC,cAAA,CAAAC,aAAA,CAACC,cAAc,EAAAC,QAAA,CAAA;AAACR,IAAAA,KAAK,EAAEA,KAAM;AAACC,IAAAA,IAAI,EAAEA,IAAK;IAACQ,QAAQ,EAAET,KAAK,CAACS,QAAS;AAACC,IAAAA,QAAQ,EAAE;GAAWR,EAAAA,IAAI,CAAG,CAAC;AAAA;AAGnGJ,iBAAiB,CAACa,SAAS,GAAG;AAC5BX,EAAAA,KAAK,EAAEY,SAAS,CAACC,MAAM,CAACC,UAAU;AAClCb,EAAAA,IAAI,EAAEW,SAAS,CAACC,MAAM,CAACC;AACzB,CAAC;;;;"}
|