cozy-ui 130.5.0 → 130.6.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 CHANGED
@@ -1,3 +1,10 @@
1
+ # [130.6.0](https://github.com/cozy/cozy-ui/compare/v130.5.0...v130.6.0) (2025-10-02)
2
+
3
+
4
+ ### Features
5
+
6
+ * **AlertProvider:** Add `noClickAway` and `noTimeOut` prop ([eee29d0](https://github.com/cozy/cozy-ui/commit/eee29d0))
7
+
1
8
  # [130.5.0](https://github.com/cozy/cozy-ui/compare/v130.4.0...v130.5.0) (2025-10-01)
2
9
 
3
10
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cozy-ui",
3
- "version": "130.5.0",
3
+ "version": "130.6.0",
4
4
  "description": "Cozy apps UI SDK",
5
5
  "main": "./index.js",
6
6
  "bin": {
@@ -15,6 +15,8 @@ const initialVariants = [{
15
15
  square: false,
16
16
  standard: false,
17
17
  outlined: false,
18
+ noClickAway: false,
19
+ noTimeOut: false,
18
20
  close: true
19
21
  }]
20
22
 
@@ -23,7 +25,7 @@ const Component = ({ variant }) => {
23
25
 
24
26
  return (
25
27
  <Button
26
- label="show alert"
28
+ label="Show alert"
27
29
  onClick={() =>
28
30
  showAlert({
29
31
  title: variant.title ? 'Alert title' : undefined,
@@ -42,6 +44,8 @@ const Component = ({ variant }) => {
42
44
  : variant.largeIcon
43
45
  ? <Icon icon={DeviceLaptopIcon} size={32} />
44
46
  : undefined,
47
+ noClickAway: variant.noClickAway,
48
+ noTimeOut: variant.noTimeOut,
45
49
  onClose: variant.close ? () => {} : undefined
46
50
  })
47
51
  }
@@ -0,0 +1,13 @@
1
+ export const handleClose = (state, setState) => (event, reason) => {
2
+ const { noClickAway, noTimeOut } = state
3
+
4
+ if (reason === 'clickaway' && noClickAway) {
5
+ return
6
+ }
7
+
8
+ if (reason === 'timeout' && noTimeOut) {
9
+ return
10
+ }
11
+
12
+ return setState({ ...state, open: false })
13
+ }
@@ -1,5 +1,6 @@
1
1
  import React, { createContext, useState, useContext, useMemo } from 'react'
2
2
 
3
+ import { handleClose } from './helpers'
3
4
  import Alert from '../../Alert'
4
5
  import AlertTitle from '../../AlertTitle'
5
6
  import Snackbar from '../../Snackbar'
@@ -32,13 +33,19 @@ const defaultState = {
32
33
  duration: null,
33
34
  open: false
34
35
  }
35
- const handleClose = (state, setState) => () => {
36
- return setState({ ...state, open: false })
37
- }
38
36
 
39
37
  const AlertProvider = ({ children }) => {
40
38
  const [state, setState] = useState(defaultState)
41
- const { open, message, title, duration, ...alertProps } = state
39
+ // noTimeOut and noClickAway are destructured to not being passed to the DOM through ...alertProps
40
+ const {
41
+ open,
42
+ message,
43
+ title,
44
+ duration,
45
+ noTimeOut, // eslint-disable-line no-unused-vars
46
+ noClickAway, // eslint-disable-line no-unused-vars
47
+ ...alertProps
48
+ } = state
42
49
 
43
50
  const value = useMemo(
44
51
  () => ({
@@ -63,7 +70,7 @@ const AlertProvider = ({ children }) => {
63
70
  <Alert
64
71
  variant="filled"
65
72
  elevation={6}
66
- onClose={handleClose(state, setState)}
73
+ onClose={ev => handleClose(state, setState)(ev, 'click')}
67
74
  {...alertProps}
68
75
  >
69
76
  {title && <AlertTitle>{title}</AlertTitle>}
@@ -0,0 +1 @@
1
+ export function handleClose(state: any, setState: any): (event: any, reason: any) => any;
@@ -0,0 +1,24 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+
3
+ 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; }
4
+
5
+ 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; }
6
+
7
+ export var handleClose = function handleClose(state, setState) {
8
+ return function (event, reason) {
9
+ var noClickAway = state.noClickAway,
10
+ noTimeOut = state.noTimeOut;
11
+
12
+ if (reason === 'clickaway' && noClickAway) {
13
+ return;
14
+ }
15
+
16
+ if (reason === 'timeout' && noTimeOut) {
17
+ return;
18
+ }
19
+
20
+ return setState(_objectSpread(_objectSpread({}, state), {}, {
21
+ open: false
22
+ }));
23
+ };
24
+ };
@@ -1,14 +1,15 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
4
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
5
- var _excluded = ["open", "message", "title", "duration"];
5
+ var _excluded = ["open", "message", "title", "duration", "noTimeOut", "noClickAway"];
6
6
 
7
7
  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; }
8
8
 
9
9
  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; }
10
10
 
11
11
  import React, { createContext, useState, useContext, useMemo } from 'react';
12
+ import { handleClose } from "cozy-ui/transpiled/react/providers/Alert/helpers";
12
13
  import Alert from "cozy-ui/transpiled/react/Alert";
13
14
  import AlertTitle from "cozy-ui/transpiled/react/AlertTitle";
14
15
  import Snackbar from "cozy-ui/transpiled/react/Snackbar";
@@ -42,26 +43,21 @@ var defaultState = {
42
43
  open: false
43
44
  };
44
45
 
45
- var handleClose = function handleClose(state, setState) {
46
- return function () {
47
- return setState(_objectSpread(_objectSpread({}, state), {}, {
48
- open: false
49
- }));
50
- };
51
- };
52
-
53
46
  var AlertProvider = function AlertProvider(_ref) {
54
47
  var children = _ref.children;
55
48
 
56
49
  var _useState = useState(defaultState),
57
50
  _useState2 = _slicedToArray(_useState, 2),
58
51
  state = _useState2[0],
59
- setState = _useState2[1];
52
+ setState = _useState2[1]; // noTimeOut and noClickAway are destructured to not being passed to the DOM through ...alertProps
53
+
60
54
 
61
55
  var open = state.open,
62
56
  message = state.message,
63
57
  title = state.title,
64
58
  duration = state.duration,
59
+ noTimeOut = state.noTimeOut,
60
+ noClickAway = state.noClickAway,
65
61
  alertProps = _objectWithoutProperties(state, _excluded);
66
62
 
67
63
  var value = useMemo(function () {
@@ -85,7 +81,9 @@ var AlertProvider = function AlertProvider(_ref) {
85
81
  }, /*#__PURE__*/React.createElement(Alert, _extends({
86
82
  variant: "filled",
87
83
  elevation: 6,
88
- onClose: handleClose(state, setState)
84
+ onClose: function onClose(ev) {
85
+ return handleClose(state, setState)(ev, 'click');
86
+ }
89
87
  }, alertProps), title && /*#__PURE__*/React.createElement(AlertTitle, null, title), message)));
90
88
  };
91
89