cozy-ui 93.3.0 → 93.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/package.json +1 -1
- package/react/Snackbar/Readme.md +1 -1
- package/react/index.js +1 -0
- package/react/providers/Alert/Readme.md +28 -0
- package/react/providers/Alert/index.jsx +51 -0
- package/transpiled/react/index.js +2 -1
- package/transpiled/react/providers/Alert/index.js +67 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
# [93.4.0](https://github.com/cozy/cozy-ui/compare/v93.3.0...v93.4.0) (2023-09-28)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* Add Alert provider ([ebccf42](https://github.com/cozy/cozy-ui/commit/ebccf42))
|
|
7
|
+
|
|
1
8
|
# [93.3.0](https://github.com/cozy/cozy-ui/compare/v93.2.0...v93.3.0) (2023-09-28)
|
|
2
9
|
|
|
3
10
|
|
package/package.json
CHANGED
package/react/Snackbar/Readme.md
CHANGED
|
@@ -55,7 +55,7 @@ initialState = { open: isTesting() }
|
|
|
55
55
|
|
|
56
56
|
const handleToggle = () => {setState(state => ({ open: !state.open }))}
|
|
57
57
|
|
|
58
|
-
const initialVariants = [{ primary: true, secondary:
|
|
58
|
+
const initialVariants = [{ primary: true, secondary: false, success: false, error: false, warning: false, info: false }]
|
|
59
59
|
|
|
60
60
|
;
|
|
61
61
|
|
package/react/index.js
CHANGED
|
@@ -131,3 +131,4 @@ export { default as TimelineDot } from './TimelineDot'
|
|
|
131
131
|
export { default as TimelineItem } from './TimelineItem'
|
|
132
132
|
export { default as TimelineOppositeContent } from './TimelineOppositeContent'
|
|
133
133
|
export { default as TimelineSeparator } from './TimelineSeparator'
|
|
134
|
+
export { default as AlertProvider, useAlert } from './Alert'
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
```jsx
|
|
2
|
+
import Variants from 'cozy-ui/docs/components/Variants'
|
|
3
|
+
import { BreakpointsProvider } from 'cozy-ui/transpiled/react/providers/Breakpoints'
|
|
4
|
+
import AlertProvider, { useAlert } from 'cozy-ui/transpiled/react/providers/Alert'
|
|
5
|
+
import Button from 'cozy-ui/transpiled/react/Buttons'
|
|
6
|
+
|
|
7
|
+
const initialVariants = [{ primary: true, secondary: false, success: false, error: false, warning: false, info: false }]
|
|
8
|
+
|
|
9
|
+
const Component = ({ variant }) => {
|
|
10
|
+
const { showAlert } = useAlert()
|
|
11
|
+
|
|
12
|
+
return <Button label="show alert" onClick={() => showAlert('Alert message', variant)}/>
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
;
|
|
16
|
+
|
|
17
|
+
<BreakpointsProvider>
|
|
18
|
+
<AlertProvider>
|
|
19
|
+
<Variants initialVariants={initialVariants} radio>
|
|
20
|
+
{variant => (
|
|
21
|
+
<>
|
|
22
|
+
<Component variant={Object.keys(variant).find(key => variant[key])} />
|
|
23
|
+
</>
|
|
24
|
+
)}
|
|
25
|
+
</Variants>
|
|
26
|
+
</AlertProvider>
|
|
27
|
+
</BreakpointsProvider>
|
|
28
|
+
```
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import React, { createContext, useState, useContext, useMemo } from 'react'
|
|
2
|
+
|
|
3
|
+
import Snackbar from '../../Snackbar'
|
|
4
|
+
import Alert from '../../Alert'
|
|
5
|
+
|
|
6
|
+
export const AlertContext = createContext()
|
|
7
|
+
|
|
8
|
+
export const useAlert = () => {
|
|
9
|
+
const context = useContext(AlertContext)
|
|
10
|
+
|
|
11
|
+
if (!context) {
|
|
12
|
+
throw new Error('useAlert must be used within a AlertProvider')
|
|
13
|
+
}
|
|
14
|
+
return context
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const defaultState = { message: '', severity: 'primary', open: false }
|
|
18
|
+
const handleClose = (state, setState) => () => {
|
|
19
|
+
return setState({ ...state, open: false })
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const AlertProvider = ({ children }) => {
|
|
23
|
+
const [state, setState] = useState(defaultState)
|
|
24
|
+
|
|
25
|
+
const value = useMemo(
|
|
26
|
+
() => ({
|
|
27
|
+
showAlert: (message, severity) => {
|
|
28
|
+
setState({ message, severity, open: true })
|
|
29
|
+
}
|
|
30
|
+
}),
|
|
31
|
+
[]
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
return (
|
|
35
|
+
<AlertContext.Provider value={value}>
|
|
36
|
+
{children}
|
|
37
|
+
<Snackbar open={state.open} onClose={handleClose(state, setState)}>
|
|
38
|
+
<Alert
|
|
39
|
+
variant="filled"
|
|
40
|
+
elevation={6}
|
|
41
|
+
severity={state.severity}
|
|
42
|
+
onClose={handleClose(state, setState)}
|
|
43
|
+
>
|
|
44
|
+
{state.message}
|
|
45
|
+
</Alert>
|
|
46
|
+
</Snackbar>
|
|
47
|
+
</AlertContext.Provider>
|
|
48
|
+
)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export default React.memo(AlertProvider)
|
|
@@ -104,4 +104,5 @@ export { default as TimelineContent } from './TimelineContent';
|
|
|
104
104
|
export { default as TimelineDot } from './TimelineDot';
|
|
105
105
|
export { default as TimelineItem } from './TimelineItem';
|
|
106
106
|
export { default as TimelineOppositeContent } from './TimelineOppositeContent';
|
|
107
|
-
export { default as TimelineSeparator } from './TimelineSeparator';
|
|
107
|
+
export { default as TimelineSeparator } from './TimelineSeparator';
|
|
108
|
+
export { default as AlertProvider, useAlert } from './Alert';
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
|
+
|
|
4
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
5
|
+
|
|
6
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
7
|
+
|
|
8
|
+
import React, { createContext, useState, useContext, useMemo } from 'react';
|
|
9
|
+
import Snackbar from "cozy-ui/transpiled/react/Snackbar";
|
|
10
|
+
import Alert from "cozy-ui/transpiled/react/Alert";
|
|
11
|
+
export var AlertContext = /*#__PURE__*/createContext();
|
|
12
|
+
export var useAlert = function useAlert() {
|
|
13
|
+
var context = useContext(AlertContext);
|
|
14
|
+
|
|
15
|
+
if (!context) {
|
|
16
|
+
throw new Error('useAlert must be used within a AlertProvider');
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return context;
|
|
20
|
+
};
|
|
21
|
+
var defaultState = {
|
|
22
|
+
message: '',
|
|
23
|
+
severity: 'primary',
|
|
24
|
+
open: false
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
var handleClose = function handleClose(state, setState) {
|
|
28
|
+
return function () {
|
|
29
|
+
return setState(_objectSpread(_objectSpread({}, state), {}, {
|
|
30
|
+
open: false
|
|
31
|
+
}));
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
var AlertProvider = function AlertProvider(_ref) {
|
|
36
|
+
var children = _ref.children;
|
|
37
|
+
|
|
38
|
+
var _useState = useState(defaultState),
|
|
39
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
40
|
+
state = _useState2[0],
|
|
41
|
+
setState = _useState2[1];
|
|
42
|
+
|
|
43
|
+
var value = useMemo(function () {
|
|
44
|
+
return {
|
|
45
|
+
showAlert: function showAlert(message, severity) {
|
|
46
|
+
setState({
|
|
47
|
+
message: message,
|
|
48
|
+
severity: severity,
|
|
49
|
+
open: true
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
}, []);
|
|
54
|
+
return /*#__PURE__*/React.createElement(AlertContext.Provider, {
|
|
55
|
+
value: value
|
|
56
|
+
}, children, /*#__PURE__*/React.createElement(Snackbar, {
|
|
57
|
+
open: state.open,
|
|
58
|
+
onClose: handleClose(state, setState)
|
|
59
|
+
}, /*#__PURE__*/React.createElement(Alert, {
|
|
60
|
+
variant: "filled",
|
|
61
|
+
elevation: 6,
|
|
62
|
+
severity: state.severity,
|
|
63
|
+
onClose: handleClose(state, setState)
|
|
64
|
+
}, state.message)));
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
export default /*#__PURE__*/React.memo(AlertProvider);
|