cozy-bar 17.1.0 → 18.1.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/dist/components/Apps/ButtonCozyHome.spec.jsx +16 -3
- package/dist/components/Apps/IconCozyHome.js +19 -0
- package/dist/components/AppsMenu/AppsMenuContent.js +103 -0
- package/dist/components/AppsMenu/components/AppItem.js +72 -0
- package/dist/components/AppsMenu/components/AppItemPlaceholder.js +25 -0
- package/dist/components/AppsMenu/index.js +77 -0
- package/dist/components/Bar.js +60 -5
- package/dist/components/HelpLink/index.js +33 -0
- package/dist/components/UserMenu/UserMenuContent.js +156 -0
- package/dist/components/UserMenu/components/AvatarMyself.js +52 -0
- package/dist/components/UserMenu/helpers.js +79 -0
- package/dist/components/UserMenu/index.js +92 -0
- package/dist/index.js +1 -1
- package/dist/lib/queries.js +21 -0
- package/dist/locales/en.json +8 -0
- package/dist/locales/fr.json +8 -0
- package/dist/styles/apps-menu.styl +20 -0
- package/dist/styles/user-menu.styl +10 -0
- package/dist/stylesheet.css +36 -0
- package/package.json +12 -8
|
@@ -3,6 +3,7 @@ import { render, fireEvent } from '@testing-library/react'
|
|
|
3
3
|
import { ButtonCozyHome } from './ButtonCozyHome'
|
|
4
4
|
import { isFlagshipApp } from 'cozy-device-helper'
|
|
5
5
|
import { useWebviewIntent } from 'cozy-intent'
|
|
6
|
+
import { BarLike } from 'test/lib/BarLike'
|
|
6
7
|
|
|
7
8
|
jest.mock('cozy-device-helper')
|
|
8
9
|
jest.mock('cozy-intent', () => ({
|
|
@@ -19,7 +20,11 @@ describe('ButtonCozyHome', () => {
|
|
|
19
20
|
// We need to use a testid because
|
|
20
21
|
// - the a tag has no text to query it (just an icon)
|
|
21
22
|
// - an "a" tag without href is not seen as a link by queryByRole
|
|
22
|
-
const { getByTestId } = render(
|
|
23
|
+
const { getByTestId } = render(
|
|
24
|
+
<BarLike>
|
|
25
|
+
<ButtonCozyHome />
|
|
26
|
+
</BarLike>
|
|
27
|
+
)
|
|
23
28
|
const linkElement = getByTestId('buttonCozyHome')
|
|
24
29
|
|
|
25
30
|
fireEvent.click(linkElement)
|
|
@@ -30,7 +35,11 @@ describe('ButtonCozyHome', () => {
|
|
|
30
35
|
it('renders a link with homeHref for non-flagship apps with homeHref', () => {
|
|
31
36
|
isFlagshipApp.mockReturnValue(false)
|
|
32
37
|
|
|
33
|
-
const { queryByRole } = render(
|
|
38
|
+
const { queryByRole } = render(
|
|
39
|
+
<BarLike>
|
|
40
|
+
<ButtonCozyHome homeHref="/home" />
|
|
41
|
+
</BarLike>
|
|
42
|
+
)
|
|
34
43
|
const linkElement = queryByRole('link')
|
|
35
44
|
|
|
36
45
|
expect(linkElement).toHaveAttribute('href', '/home')
|
|
@@ -39,7 +48,11 @@ describe('ButtonCozyHome', () => {
|
|
|
39
48
|
it('renders a span without href for non-flagship apps without homeHref', () => {
|
|
40
49
|
isFlagshipApp.mockReturnValue(false)
|
|
41
50
|
|
|
42
|
-
const { queryByRole } = render(
|
|
51
|
+
const { queryByRole } = render(
|
|
52
|
+
<BarLike>
|
|
53
|
+
<ButtonCozyHome />
|
|
54
|
+
</BarLike>
|
|
55
|
+
)
|
|
43
56
|
const linkElement = queryByRole('link')
|
|
44
57
|
|
|
45
58
|
expect(linkElement).toBeNull()
|
|
@@ -17,6 +17,14 @@ var _AppIcon = _interopRequireDefault(require("cozy-ui/transpiled/react/AppIcon"
|
|
|
17
17
|
|
|
18
18
|
var _stack = _interopRequireDefault(require("../../lib/stack"));
|
|
19
19
|
|
|
20
|
+
var _isTwakeTheme = require("cozy-ui/transpiled/react/helpers/isTwakeTheme");
|
|
21
|
+
|
|
22
|
+
var _Breakpoints = require("cozy-ui/transpiled/react/providers/Breakpoints");
|
|
23
|
+
|
|
24
|
+
var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
|
|
25
|
+
|
|
26
|
+
var _TwakeWorkplace = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/TwakeWorkplace"));
|
|
27
|
+
|
|
20
28
|
/* Generated with node_modules/.bin/svgr src/assets/sprites/icon-cozy-home.svg */
|
|
21
29
|
function SvgIconCozyHome(props) {
|
|
22
30
|
return /*#__PURE__*/_react.default.createElement("svg", (0, _extends2.default)({
|
|
@@ -41,6 +49,17 @@ var IconCozyHome = function IconCozyHome(_ref) {
|
|
|
41
49
|
var className = _ref.className,
|
|
42
50
|
isInvertedTheme = _ref.isInvertedTheme;
|
|
43
51
|
|
|
52
|
+
var _useBreakpoints = (0, _Breakpoints.useBreakpoints)(),
|
|
53
|
+
isMobile = _useBreakpoints.isMobile;
|
|
54
|
+
|
|
55
|
+
if ((0, _isTwakeTheme.isTwakeTheme)()) {
|
|
56
|
+
return /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
57
|
+
icon: _TwakeWorkplace.default,
|
|
58
|
+
size: isMobile ? 28 : 32,
|
|
59
|
+
className: isMobile ? 'u-ml-half' : undefined
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
|
|
44
63
|
var fetchIcon = function fetchIcon() {
|
|
45
64
|
if (isInvertedTheme) {
|
|
46
65
|
return "".concat(_stack.default.get.cozyURL(), "/assets/images/icon-cozy-home-inverted.svg");
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = exports.AppsMenuContent = void 0;
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
12
|
+
var _reactRedux = require("react-redux");
|
|
13
|
+
|
|
14
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
15
|
+
|
|
16
|
+
var _Typography = _interopRequireDefault(require("cozy-ui/transpiled/react/Typography"));
|
|
17
|
+
|
|
18
|
+
var _applications = require("cozy-client/dist/models/applications");
|
|
19
|
+
|
|
20
|
+
var _AppItem = _interopRequireDefault(require("./components/AppItem"));
|
|
21
|
+
|
|
22
|
+
var _AppItemPlaceholder = _interopRequireDefault(require("./components/AppItemPlaceholder"));
|
|
23
|
+
|
|
24
|
+
var _useI18n2 = _interopRequireDefault(require("../useI18n"));
|
|
25
|
+
|
|
26
|
+
var _reducers = require("../../lib/reducers");
|
|
27
|
+
|
|
28
|
+
var styles = {
|
|
29
|
+
"apps-menu-grid": "apps-menu-grid",
|
|
30
|
+
"apps-menu-grid-item-wrapper": "apps-menu-grid-item-wrapper",
|
|
31
|
+
"apps-menu-grid-item": "apps-menu-grid-item"
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
var sorter = function sorter(fn) {
|
|
35
|
+
return function (itemA, itemB) {
|
|
36
|
+
return fn(itemA) > fn(itemB);
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
var AppsMenuContent = function AppsMenuContent(_ref) {
|
|
41
|
+
var isFetchingApps = _ref.isFetchingApps,
|
|
42
|
+
apps = _ref.apps,
|
|
43
|
+
homeApp = _ref.homeApp;
|
|
44
|
+
|
|
45
|
+
var _useI18n = (0, _useI18n2.default)(),
|
|
46
|
+
t = _useI18n.t;
|
|
47
|
+
|
|
48
|
+
if (!isFetchingApps && (!apps || !apps.length)) {
|
|
49
|
+
return /*#__PURE__*/_react.default.createElement(_Typography.default, {
|
|
50
|
+
className: "u-mh-half",
|
|
51
|
+
color: "error"
|
|
52
|
+
}, t('no_apps'));
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
if (isFetchingApps) {
|
|
56
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
57
|
+
className: styles['apps-menu-grid']
|
|
58
|
+
}, /*#__PURE__*/_react.default.createElement(_AppItemPlaceholder.default, {
|
|
59
|
+
key: "1"
|
|
60
|
+
}), /*#__PURE__*/_react.default.createElement(_AppItemPlaceholder.default, {
|
|
61
|
+
key: "2"
|
|
62
|
+
}), /*#__PURE__*/_react.default.createElement(_AppItemPlaceholder.default, {
|
|
63
|
+
key: "3"
|
|
64
|
+
}));
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
var homeSlug = homeApp && homeApp.slug;
|
|
68
|
+
var displayedApps = apps.filter(function (app) {
|
|
69
|
+
return app.slug !== homeSlug;
|
|
70
|
+
}).sort(sorter(_applications.getAppDisplayName));
|
|
71
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
72
|
+
className: styles['apps-menu-grid']
|
|
73
|
+
}, displayedApps.map(function (app, index) {
|
|
74
|
+
return /*#__PURE__*/_react.default.createElement(_AppItem.default, {
|
|
75
|
+
key: index,
|
|
76
|
+
app: app
|
|
77
|
+
});
|
|
78
|
+
}));
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
exports.AppsMenuContent = AppsMenuContent;
|
|
82
|
+
AppsMenuContent.propTypes = {
|
|
83
|
+
apps: _propTypes.default.array,
|
|
84
|
+
isFetchingApps: _propTypes.default.bool.isRequired,
|
|
85
|
+
homeApp: _propTypes.default.shape({
|
|
86
|
+
isCurrentApp: _propTypes.default.bool,
|
|
87
|
+
slug: _propTypes.default.string,
|
|
88
|
+
href: _propTypes.default.string
|
|
89
|
+
}),
|
|
90
|
+
className: _propTypes.default.string
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
var mapStateToProps = function mapStateToProps(state) {
|
|
94
|
+
return {
|
|
95
|
+
isFetchingApps: (0, _reducers.isFetchingApps)(state),
|
|
96
|
+
apps: (0, _reducers.getApps)(state),
|
|
97
|
+
homeApp: (0, _reducers.getHomeApp)(state)
|
|
98
|
+
};
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
var _default = (0, _reactRedux.connect)(mapStateToProps)(AppsMenuContent);
|
|
102
|
+
|
|
103
|
+
exports.default = _default;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = exports.AppItem = void 0;
|
|
9
|
+
|
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
+
|
|
12
|
+
var _react = _interopRequireDefault(require("react"));
|
|
13
|
+
|
|
14
|
+
var _applications = require("cozy-client/dist/models/applications");
|
|
15
|
+
|
|
16
|
+
var _Buttons = _interopRequireDefault(require("cozy-ui/transpiled/react/Buttons"));
|
|
17
|
+
|
|
18
|
+
var _AppIcon = _interopRequireDefault(require("cozy-ui/transpiled/react/AppIcon"));
|
|
19
|
+
|
|
20
|
+
var _AppLinker = _interopRequireDefault(require("cozy-ui/transpiled/react/AppLinker"));
|
|
21
|
+
|
|
22
|
+
var _Typography = _interopRequireDefault(require("cozy-ui/transpiled/react/Typography"));
|
|
23
|
+
|
|
24
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
25
|
+
|
|
26
|
+
var _proptypes = require("../../../proptypes");
|
|
27
|
+
|
|
28
|
+
var _stack = _interopRequireDefault(require("../../../lib/stack"));
|
|
29
|
+
|
|
30
|
+
var styles = {
|
|
31
|
+
"apps-menu-grid": "apps-menu-grid",
|
|
32
|
+
"apps-menu-grid-item-wrapper": "apps-menu-grid-item-wrapper",
|
|
33
|
+
"apps-menu-grid-item": "apps-menu-grid-item"
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
var AppItem = function AppItem(_ref) {
|
|
37
|
+
var app = _ref.app;
|
|
38
|
+
var appName = (0, _applications.getAppDisplayName)(app);
|
|
39
|
+
return /*#__PURE__*/_react.default.createElement(_AppLinker.default, {
|
|
40
|
+
href: app.href || '',
|
|
41
|
+
app: app
|
|
42
|
+
}, function (_ref2) {
|
|
43
|
+
var onClick = _ref2.onClick,
|
|
44
|
+
href = _ref2.href;
|
|
45
|
+
return /*#__PURE__*/_react.default.createElement(_Buttons.default, {
|
|
46
|
+
height: "auto",
|
|
47
|
+
component: "a",
|
|
48
|
+
variant: "text",
|
|
49
|
+
href: href,
|
|
50
|
+
title: appName,
|
|
51
|
+
onClick: onClick,
|
|
52
|
+
className: (0, _classnames.default)(styles['apps-menu-grid-item-wrapper'], 'u-bdrs-5'),
|
|
53
|
+
label: /*#__PURE__*/_react.default.createElement("div", {
|
|
54
|
+
className: styles['apps-menu-grid-item']
|
|
55
|
+
}, /*#__PURE__*/_react.default.createElement(_AppIcon.default, (0, _extends2.default)({
|
|
56
|
+
app: app,
|
|
57
|
+
key: app.slug
|
|
58
|
+
}, _stack.default.get.iconProps())), /*#__PURE__*/_react.default.createElement(_Typography.default, {
|
|
59
|
+
variant: "caption",
|
|
60
|
+
noWrap: true,
|
|
61
|
+
className: "u-mt-half"
|
|
62
|
+
}, appName))
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
exports.AppItem = AppItem;
|
|
68
|
+
AppItem.propTypes = {
|
|
69
|
+
app: _proptypes.appShape.isRequired
|
|
70
|
+
};
|
|
71
|
+
var _default = AppItem;
|
|
72
|
+
exports.default = _default;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = exports.AppItemPlaceholder = void 0;
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
12
|
+
var _Skeleton = _interopRequireDefault(require("cozy-ui/transpiled/react/Skeleton"));
|
|
13
|
+
|
|
14
|
+
var AppItemPlaceholder = function AppItemPlaceholder() {
|
|
15
|
+
return /*#__PURE__*/_react.default.createElement(_Skeleton.default, {
|
|
16
|
+
variant: "rect",
|
|
17
|
+
width: 48,
|
|
18
|
+
height: 48,
|
|
19
|
+
className: "u-m-1 u-bdrs-5"
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
exports.AppItemPlaceholder = AppItemPlaceholder;
|
|
24
|
+
var _default = AppItemPlaceholder;
|
|
25
|
+
exports.default = _default;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
4
|
+
|
|
5
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.default = void 0;
|
|
11
|
+
|
|
12
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
|
+
|
|
14
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
15
|
+
|
|
16
|
+
var _AppsMenuContent = _interopRequireDefault(require("./AppsMenuContent"));
|
|
17
|
+
|
|
18
|
+
var _IconButton = _interopRequireDefault(require("cozy-ui/transpiled/react/IconButton"));
|
|
19
|
+
|
|
20
|
+
var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
|
|
21
|
+
|
|
22
|
+
var _Menu = _interopRequireDefault(require("cozy-ui/transpiled/react/Menu"));
|
|
23
|
+
|
|
24
|
+
var _Mosaic = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Mosaic"));
|
|
25
|
+
|
|
26
|
+
var _Breakpoints = require("cozy-ui/transpiled/react/providers/Breakpoints");
|
|
27
|
+
|
|
28
|
+
var _CozyDialogs = require("cozy-ui/transpiled/react/CozyDialogs");
|
|
29
|
+
|
|
30
|
+
var AppsMenu = function AppsMenu() {
|
|
31
|
+
var _useState = (0, _react.useState)(false),
|
|
32
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
33
|
+
isOpen = _useState2[0],
|
|
34
|
+
setOpen = _useState2[1];
|
|
35
|
+
|
|
36
|
+
var containerRef = (0, _react.useRef)();
|
|
37
|
+
var buttonRef = (0, _react.useRef)();
|
|
38
|
+
|
|
39
|
+
var _useBreakpoints = (0, _Breakpoints.useBreakpoints)(),
|
|
40
|
+
isMobile = _useBreakpoints.isMobile;
|
|
41
|
+
|
|
42
|
+
var toggleMenu = function toggleMenu() {
|
|
43
|
+
setOpen(!isOpen);
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
return /*#__PURE__*/_react.default.createElement("nav", {
|
|
47
|
+
ref: containerRef
|
|
48
|
+
}, /*#__PURE__*/_react.default.createElement(_IconButton.default, {
|
|
49
|
+
ref: buttonRef,
|
|
50
|
+
onClick: toggleMenu,
|
|
51
|
+
className: "u-p-half"
|
|
52
|
+
}, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
53
|
+
icon: _Mosaic.default,
|
|
54
|
+
size: "18"
|
|
55
|
+
})), isMobile ? /*#__PURE__*/_react.default.createElement(_CozyDialogs.ConfirmDialog, {
|
|
56
|
+
open: isOpen,
|
|
57
|
+
onClose: toggleMenu,
|
|
58
|
+
content: /*#__PURE__*/_react.default.createElement(_AppsMenuContent.default, null)
|
|
59
|
+
}) : /*#__PURE__*/_react.default.createElement(_Menu.default, {
|
|
60
|
+
open: isOpen,
|
|
61
|
+
anchorEl: buttonRef.current,
|
|
62
|
+
container: containerRef.current,
|
|
63
|
+
getContentAnchorEl: null,
|
|
64
|
+
onClose: toggleMenu,
|
|
65
|
+
anchorOrigin: {
|
|
66
|
+
vertical: 'bottom',
|
|
67
|
+
horizontal: 'left'
|
|
68
|
+
},
|
|
69
|
+
transformOrigin: {
|
|
70
|
+
vertical: -10,
|
|
71
|
+
horizontal: 0
|
|
72
|
+
}
|
|
73
|
+
}, /*#__PURE__*/_react.default.createElement(_AppsMenuContent.default, null)));
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
var _default = AppsMenu;
|
|
77
|
+
exports.default = _default;
|
package/dist/components/Bar.js
CHANGED
|
@@ -19,14 +19,22 @@ var _reactRedux = require("react-redux");
|
|
|
19
19
|
|
|
20
20
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
21
21
|
|
|
22
|
+
var _Grid = _interopRequireDefault(require("cozy-ui/transpiled/react/Grid"));
|
|
23
|
+
|
|
24
|
+
var _Divider = _interopRequireDefault(require("cozy-ui/transpiled/react/Divider"));
|
|
25
|
+
|
|
22
26
|
var _Breakpoints = require("cozy-ui/transpiled/react/providers/Breakpoints");
|
|
23
27
|
|
|
24
28
|
var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
|
|
25
29
|
|
|
30
|
+
var _AppTitle = _interopRequireDefault(require("cozy-ui/transpiled/react/AppTitle"));
|
|
31
|
+
|
|
26
32
|
var _cozyDeviceHelper = require("cozy-device-helper");
|
|
27
33
|
|
|
28
34
|
var _cozyFlags = _interopRequireDefault(require("cozy-flags"));
|
|
29
35
|
|
|
36
|
+
var _isTwakeTheme = require("cozy-ui/transpiled/react/helpers/isTwakeTheme");
|
|
37
|
+
|
|
30
38
|
var _ButtonCozyHome = require("./Apps/ButtonCozyHome");
|
|
31
39
|
|
|
32
40
|
var _Banner = _interopRequireDefault(require("./Banner"));
|
|
@@ -37,6 +45,12 @@ var _Settings = _interopRequireDefault(require("./Settings"));
|
|
|
37
45
|
|
|
38
46
|
var _Apps = _interopRequireDefault(require("./Apps"));
|
|
39
47
|
|
|
48
|
+
var _AppsMenu = _interopRequireDefault(require("./AppsMenu"));
|
|
49
|
+
|
|
50
|
+
var _UserMenu = _interopRequireDefault(require("./UserMenu"));
|
|
51
|
+
|
|
52
|
+
var _HelpLink = _interopRequireDefault(require("./HelpLink"));
|
|
53
|
+
|
|
40
54
|
var _reducers = require("../lib/reducers");
|
|
41
55
|
|
|
42
56
|
var _useI18n2 = _interopRequireDefault(require("./useI18n"));
|
|
@@ -76,7 +90,8 @@ var Bar = function Bar(_ref) {
|
|
|
76
90
|
appNamePrefix = _ref.appNamePrefix,
|
|
77
91
|
appSlug = _ref.appSlug,
|
|
78
92
|
iconPath = _ref.iconPath,
|
|
79
|
-
hasFetchedApps = _ref.hasFetchedApps
|
|
93
|
+
hasFetchedApps = _ref.hasFetchedApps,
|
|
94
|
+
homeApp = _ref.homeApp;
|
|
80
95
|
var client = (0, _cozyClient.useClient)();
|
|
81
96
|
|
|
82
97
|
var _useI18n = (0, _useI18n2.default)(),
|
|
@@ -90,7 +105,7 @@ var Bar = function Bar(_ref) {
|
|
|
90
105
|
drawerVisible = _useState2[0],
|
|
91
106
|
setDrawerVisible = _useState2[1];
|
|
92
107
|
|
|
93
|
-
var showDrawerAndBurger = !isPublic && isMobile;
|
|
108
|
+
var showDrawerAndBurger = !isPublic && isMobile && !(0, _isTwakeTheme.isTwakeTheme)();
|
|
94
109
|
var showSettings = !isPublic && !isMobile;
|
|
95
110
|
var fetchInitialData = (0, _react.useCallback)(function () {
|
|
96
111
|
if (!isPublic) {
|
|
@@ -125,7 +140,7 @@ var Bar = function Bar(_ref) {
|
|
|
125
140
|
};
|
|
126
141
|
|
|
127
142
|
var renderCenter = function renderCenter() {
|
|
128
|
-
return /*#__PURE__*/_react.default.createElement(_Apps.default, {
|
|
143
|
+
return (0, _isTwakeTheme.isTwakeTheme)() ? null : /*#__PURE__*/_react.default.createElement(_Apps.default, {
|
|
129
144
|
appName: appName,
|
|
130
145
|
appNamePrefix: appNamePrefix,
|
|
131
146
|
appSlug: appSlug,
|
|
@@ -140,6 +155,30 @@ var Bar = function Bar(_ref) {
|
|
|
140
155
|
return /*#__PURE__*/_react.default.createElement(_ButtonCozyHome.ButtonCozyHome, {
|
|
141
156
|
isInvertedTheme: isInvertedTheme
|
|
142
157
|
});
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
if ((0, _isTwakeTheme.isTwakeTheme)()) {
|
|
161
|
+
var homeHref = !isPublic && homeApp && homeApp.href;
|
|
162
|
+
|
|
163
|
+
if (isMobile) {
|
|
164
|
+
return /*#__PURE__*/_react.default.createElement(_ButtonCozyHome.ButtonCozyHome, {
|
|
165
|
+
homeHref: homeHref
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
return /*#__PURE__*/_react.default.createElement(_Grid.default, {
|
|
170
|
+
container: true,
|
|
171
|
+
alignItems: "center",
|
|
172
|
+
className: "u-w-auto"
|
|
173
|
+
}, /*#__PURE__*/_react.default.createElement(_ButtonCozyHome.ButtonCozyHome, {
|
|
174
|
+
homeHref: homeHref
|
|
175
|
+
}), /*#__PURE__*/_react.default.createElement(_Divider.default, {
|
|
176
|
+
orientation: "vertical",
|
|
177
|
+
className: "u-mr-half",
|
|
178
|
+
flexItem: true
|
|
179
|
+
}), /*#__PURE__*/_react.default.createElement(_AppTitle.default, {
|
|
180
|
+
slug: appSlug
|
|
181
|
+
}));
|
|
143
182
|
} // data-tutorial attribute allows to be targeted in an application tutorial
|
|
144
183
|
|
|
145
184
|
|
|
@@ -164,6 +203,21 @@ var Bar = function Bar(_ref) {
|
|
|
164
203
|
}) : null;
|
|
165
204
|
};
|
|
166
205
|
|
|
206
|
+
var renderTwakeRight = function renderTwakeRight() {
|
|
207
|
+
// Special case because search on Drive on mobile still rely
|
|
208
|
+
// on old search UI that is injected in the cozy-bar and
|
|
209
|
+
// not in a modal as the new search UI
|
|
210
|
+
// So we need to hide these menu buttons when old search UI
|
|
211
|
+
// is injected in the cozy-bar
|
|
212
|
+
// When https://github.com/cozy/cozy-drive/pull/3320 will be merged
|
|
213
|
+
// Drive will rely on cozy-bar embedded search and we will be able
|
|
214
|
+
// to remove this special case
|
|
215
|
+
if (appSlug === 'drive' && isMobile && barSearch) return null;
|
|
216
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_HelpLink.default, null), /*#__PURE__*/_react.default.createElement(_AppsMenu.default, null), /*#__PURE__*/_react.default.createElement(_UserMenu.default, {
|
|
217
|
+
onLogOut: onLogOut
|
|
218
|
+
}));
|
|
219
|
+
};
|
|
220
|
+
|
|
167
221
|
var renderSearch = function renderSearch() {
|
|
168
222
|
return searchOptions.enabled && !isMobile ? /*#__PURE__*/_react.default.createElement("div", {
|
|
169
223
|
className: "u-flex-grow u-mh-2"
|
|
@@ -185,7 +239,7 @@ var Bar = function Bar(_ref) {
|
|
|
185
239
|
className: "coz-bar-container"
|
|
186
240
|
}, barLeft || renderLeft(), barCenter || renderCenter(), /*#__PURE__*/_react.default.createElement("div", {
|
|
187
241
|
className: "u-flex-grow"
|
|
188
|
-
}, barSearch || renderSearch()), searchOptions.enabled && isMobile ? /*#__PURE__*/_react.default.createElement(_SearchButton.default, null) : null, barRight || renderRight(), showDrawerAndBurger ? /*#__PURE__*/_react.default.createElement(_Drawer.default, {
|
|
242
|
+
}, barSearch || renderSearch()), searchOptions.enabled && isMobile ? /*#__PURE__*/_react.default.createElement(_SearchButton.default, null) : null, (0, _isTwakeTheme.isTwakeTheme)() ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, barRight, renderTwakeRight()) : barRight || renderRight(), showDrawerAndBurger ? /*#__PURE__*/_react.default.createElement(_Drawer.default, {
|
|
189
243
|
visible: drawerVisible,
|
|
190
244
|
onClose: toggleDrawer,
|
|
191
245
|
drawerListener: function drawerListener() {
|
|
@@ -211,7 +265,8 @@ Bar.propTypes = {
|
|
|
211
265
|
|
|
212
266
|
var mapStateToProps = function mapStateToProps(state) {
|
|
213
267
|
return {
|
|
214
|
-
hasFetchedApps: (0, _reducers.hasFetched)(state)
|
|
268
|
+
hasFetchedApps: (0, _reducers.hasFetched)(state),
|
|
269
|
+
homeApp: (0, _reducers.getHomeApp)(state)
|
|
215
270
|
};
|
|
216
271
|
};
|
|
217
272
|
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
12
|
+
var _IconButton = _interopRequireDefault(require("cozy-ui/transpiled/react/IconButton"));
|
|
13
|
+
|
|
14
|
+
var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
|
|
15
|
+
|
|
16
|
+
var _HelpOutlined = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/HelpOutlined"));
|
|
17
|
+
|
|
18
|
+
var openHelpLink = function openHelpLink() {
|
|
19
|
+
window.open('https://support.cozy.io/', '_blank', 'noopener, noreferrer');
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
var HelpLink = function HelpLink() {
|
|
23
|
+
return /*#__PURE__*/_react.default.createElement(_IconButton.default, {
|
|
24
|
+
onClick: openHelpLink,
|
|
25
|
+
className: "u-p-half"
|
|
26
|
+
}, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
27
|
+
icon: _HelpOutlined.default,
|
|
28
|
+
size: "18"
|
|
29
|
+
}));
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
var _default = HelpLink;
|
|
33
|
+
exports.default = _default;
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = exports.UserMenuContent = void 0;
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
12
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
13
|
+
|
|
14
|
+
var _cozyFlags = _interopRequireDefault(require("cozy-flags"));
|
|
15
|
+
|
|
16
|
+
var _cozyIntent = require("cozy-intent");
|
|
17
|
+
|
|
18
|
+
var _cozyClient = require("cozy-client");
|
|
19
|
+
|
|
20
|
+
var _instance = require("cozy-client/dist/models/instance");
|
|
21
|
+
|
|
22
|
+
var _List = _interopRequireDefault(require("cozy-ui/transpiled/react/List"));
|
|
23
|
+
|
|
24
|
+
var _ListItem = _interopRequireDefault(require("cozy-ui/transpiled/react/ListItem"));
|
|
25
|
+
|
|
26
|
+
var _ListItemIcon = _interopRequireDefault(require("cozy-ui/transpiled/react/ListItemIcon"));
|
|
27
|
+
|
|
28
|
+
var _ListItemText = _interopRequireDefault(require("cozy-ui/transpiled/react/ListItemText"));
|
|
29
|
+
|
|
30
|
+
var _PersonAdd = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/PersonAdd"));
|
|
31
|
+
|
|
32
|
+
var _FromUser = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/FromUser"));
|
|
33
|
+
|
|
34
|
+
var _Logout = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Logout"));
|
|
35
|
+
|
|
36
|
+
var _Cloud = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Cloud"));
|
|
37
|
+
|
|
38
|
+
var _Company = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Company"));
|
|
39
|
+
|
|
40
|
+
var _Right = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Right"));
|
|
41
|
+
|
|
42
|
+
var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
|
|
43
|
+
|
|
44
|
+
var _Divider = _interopRequireDefault(require("cozy-ui/transpiled/react/Divider"));
|
|
45
|
+
|
|
46
|
+
var _Buttons = _interopRequireDefault(require("cozy-ui/transpiled/react/Buttons"));
|
|
47
|
+
|
|
48
|
+
var _Typography = _interopRequireDefault(require("cozy-ui/transpiled/react/Typography"));
|
|
49
|
+
|
|
50
|
+
var _useI18n2 = _interopRequireDefault(require("../useI18n"));
|
|
51
|
+
|
|
52
|
+
var _AvatarMyself = _interopRequireDefault(require("./components/AvatarMyself"));
|
|
53
|
+
|
|
54
|
+
var _helpers = require("./helpers");
|
|
55
|
+
|
|
56
|
+
var styles = {
|
|
57
|
+
"user-menu-content": "user-menu-content",
|
|
58
|
+
"user-menu-content-add-account": "user-menu-content-add-account"
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
var UserMenuContent = function UserMenuContent(_ref) {
|
|
62
|
+
var onLogOut = _ref.onLogOut,
|
|
63
|
+
instance = _ref.instance,
|
|
64
|
+
diskUsage = _ref.diskUsage;
|
|
65
|
+
var webviewIntent = (0, _cozyIntent.useWebviewIntent)();
|
|
66
|
+
var client = (0, _cozyClient.useClient)();
|
|
67
|
+
|
|
68
|
+
var _useI18n = (0, _useI18n2.default)(),
|
|
69
|
+
t = _useI18n.t;
|
|
70
|
+
|
|
71
|
+
var _instance$data = instance.data,
|
|
72
|
+
public_name = _instance$data.public_name,
|
|
73
|
+
email = _instance$data.email;
|
|
74
|
+
|
|
75
|
+
var _makeDiskInfos = (0, _instance.makeDiskInfos)(diskUsage.data.used, diskUsage.data.quota),
|
|
76
|
+
humanDiskQuota = _makeDiskInfos.humanDiskQuota,
|
|
77
|
+
humanDiskUsage = _makeDiskInfos.humanDiskUsage;
|
|
78
|
+
|
|
79
|
+
var profileLink = (0, _helpers.getSettingsLink)({
|
|
80
|
+
client: client,
|
|
81
|
+
hash: 'profile'
|
|
82
|
+
});
|
|
83
|
+
var storageLink = (0, _helpers.getSettingsLink)({
|
|
84
|
+
client: client,
|
|
85
|
+
hash: 'storage'
|
|
86
|
+
});
|
|
87
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
88
|
+
className: (0, _classnames.default)(styles['user-menu-content'], 'u-flex u-flex-column')
|
|
89
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
90
|
+
className: "u-flex u-flex-column u-flex-items-center u-mt-half"
|
|
91
|
+
}, /*#__PURE__*/_react.default.createElement(_AvatarMyself.default, {
|
|
92
|
+
className: "u-mb-half"
|
|
93
|
+
}), /*#__PURE__*/_react.default.createElement(_Typography.default, {
|
|
94
|
+
variant: "h4"
|
|
95
|
+
}, public_name), /*#__PURE__*/_react.default.createElement(_Typography.default, {
|
|
96
|
+
variant: "body2"
|
|
97
|
+
}, email), (0, _cozyFlags.default)('cozy.b2b.enabled') && /*#__PURE__*/_react.default.createElement(_Buttons.default, {
|
|
98
|
+
label: t('userMenu.addAccount'),
|
|
99
|
+
variant: "secondary",
|
|
100
|
+
startIcon: /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
101
|
+
icon: _PersonAdd.default
|
|
102
|
+
}),
|
|
103
|
+
className: (0, _classnames.default)(styles['user-menu-content-add-account'], 'u-mt-1')
|
|
104
|
+
})), /*#__PURE__*/_react.default.createElement(_List.default, {
|
|
105
|
+
className: "u-pb-0"
|
|
106
|
+
}, /*#__PURE__*/_react.default.createElement(_ListItem.default, {
|
|
107
|
+
button: true,
|
|
108
|
+
size: "small",
|
|
109
|
+
component: "a",
|
|
110
|
+
href: profileLink
|
|
111
|
+
}, /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, null, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
112
|
+
icon: _FromUser.default
|
|
113
|
+
})), /*#__PURE__*/_react.default.createElement(_ListItemText.default, {
|
|
114
|
+
primary: t('userMenu.manageProfile')
|
|
115
|
+
})), (0, _cozyFlags.default)('cozy.b2b.enabled') && /*#__PURE__*/_react.default.createElement(_ListItem.default, {
|
|
116
|
+
button: true,
|
|
117
|
+
size: "small"
|
|
118
|
+
}, /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, null, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
119
|
+
icon: _Company.default
|
|
120
|
+
})), /*#__PURE__*/_react.default.createElement(_ListItemText.default, {
|
|
121
|
+
primary: t('userMenu.createBusinessAccount')
|
|
122
|
+
})), /*#__PURE__*/_react.default.createElement(_ListItem.default, {
|
|
123
|
+
button: true,
|
|
124
|
+
size: "small",
|
|
125
|
+
component: "a",
|
|
126
|
+
href: storageLink
|
|
127
|
+
}, /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, null, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
128
|
+
icon: _Cloud.default
|
|
129
|
+
})), /*#__PURE__*/_react.default.createElement(_ListItemText.default, {
|
|
130
|
+
primary: t('userMenu.storage'),
|
|
131
|
+
secondary: t('userMenu.storageAvailable', humanDiskQuota - humanDiskUsage)
|
|
132
|
+
}), /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, null, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
133
|
+
icon: _Right.default
|
|
134
|
+
}))), /*#__PURE__*/_react.default.createElement(_Divider.default, {
|
|
135
|
+
component: "li",
|
|
136
|
+
variant: "inset"
|
|
137
|
+
}), /*#__PURE__*/_react.default.createElement(_ListItem.default, {
|
|
138
|
+
button: true,
|
|
139
|
+
size: "small",
|
|
140
|
+
onClick: function onClick() {
|
|
141
|
+
return (0, _helpers.logOut)({
|
|
142
|
+
client: client,
|
|
143
|
+
webviewIntent: webviewIntent,
|
|
144
|
+
onLogOut: onLogOut
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
}, /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, null, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
148
|
+
icon: _Logout.default
|
|
149
|
+
})), /*#__PURE__*/_react.default.createElement(_ListItemText.default, {
|
|
150
|
+
primary: t('userMenu.logOut')
|
|
151
|
+
}))));
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
exports.UserMenuContent = UserMenuContent;
|
|
155
|
+
var _default = UserMenuContent;
|
|
156
|
+
exports.default = _default;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
12
|
+
var _cozyClient = require("cozy-client");
|
|
13
|
+
|
|
14
|
+
var _contact = require("cozy-client/dist/models/contact");
|
|
15
|
+
|
|
16
|
+
var _Avatar = _interopRequireDefault(require("cozy-ui/transpiled/react/Avatar"));
|
|
17
|
+
|
|
18
|
+
var _Skeleton = _interopRequireDefault(require("cozy-ui/transpiled/react/Skeleton"));
|
|
19
|
+
|
|
20
|
+
var _queries = require("../../../lib/queries");
|
|
21
|
+
|
|
22
|
+
var AvatarMyself = function AvatarMyself(_ref) {
|
|
23
|
+
var className = _ref.className,
|
|
24
|
+
_ref$size = _ref.size,
|
|
25
|
+
size = _ref$size === void 0 ? 'm' : _ref$size;
|
|
26
|
+
var myselfQuery = (0, _queries.buildMyselfQuery)();
|
|
27
|
+
|
|
28
|
+
var _useQuery = (0, _cozyClient.useQuery)(myselfQuery.definition, myselfQuery.options),
|
|
29
|
+
fetchStatus = _useQuery.fetchStatus,
|
|
30
|
+
data = _useQuery.data;
|
|
31
|
+
|
|
32
|
+
if (fetchStatus !== 'loaded') {
|
|
33
|
+
return /*#__PURE__*/_react.default.createElement(_Skeleton.default, {
|
|
34
|
+
variant: "circle",
|
|
35
|
+
width: 32,
|
|
36
|
+
height: 32
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
var me = data[0];
|
|
41
|
+
|
|
42
|
+
if (me) {
|
|
43
|
+
var initials = (0, _contact.getInitials)(me);
|
|
44
|
+
return /*#__PURE__*/_react.default.createElement(_Avatar.default, {
|
|
45
|
+
className: className,
|
|
46
|
+
size: size
|
|
47
|
+
}, initials);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
var _default = AvatarMyself;
|
|
52
|
+
exports.default = _default;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.logOut = exports.getSettingsLink = void 0;
|
|
9
|
+
|
|
10
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
+
|
|
12
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
+
|
|
14
|
+
var _cozyClient = require("cozy-client");
|
|
15
|
+
|
|
16
|
+
var _cozyDeviceHelper = require("cozy-device-helper");
|
|
17
|
+
|
|
18
|
+
var getSettingsLink = function getSettingsLink(_ref) {
|
|
19
|
+
var client = _ref.client,
|
|
20
|
+
hash = _ref.hash;
|
|
21
|
+
return (0, _cozyClient.generateWebLink)({
|
|
22
|
+
cozyUrl: client.getStackClient().uri,
|
|
23
|
+
slug: 'settings',
|
|
24
|
+
hash: hash,
|
|
25
|
+
subDomainType: client.getInstanceOptions().subdomain
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
exports.getSettingsLink = getSettingsLink;
|
|
30
|
+
|
|
31
|
+
var logOut = /*#__PURE__*/function () {
|
|
32
|
+
var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_ref2) {
|
|
33
|
+
var client, webviewIntent, onLogOut, res;
|
|
34
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
35
|
+
while (1) {
|
|
36
|
+
switch (_context.prev = _context.next) {
|
|
37
|
+
case 0:
|
|
38
|
+
client = _ref2.client, webviewIntent = _ref2.webviewIntent, onLogOut = _ref2.onLogOut;
|
|
39
|
+
|
|
40
|
+
if (!(onLogOut && typeof onLogOut === 'function')) {
|
|
41
|
+
_context.next = 8;
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
res = onLogOut();
|
|
46
|
+
|
|
47
|
+
if (!(res instanceof Promise)) {
|
|
48
|
+
_context.next = 6;
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
_context.next = 6;
|
|
53
|
+
return res;
|
|
54
|
+
|
|
55
|
+
case 6:
|
|
56
|
+
_context.next = 11;
|
|
57
|
+
break;
|
|
58
|
+
|
|
59
|
+
case 8:
|
|
60
|
+
_context.next = 10;
|
|
61
|
+
return client.logout();
|
|
62
|
+
|
|
63
|
+
case 10:
|
|
64
|
+
return _context.abrupt("return", (0, _cozyDeviceHelper.isFlagshipApp)() && webviewIntent ? webviewIntent.call('logout') : window.location.reload());
|
|
65
|
+
|
|
66
|
+
case 11:
|
|
67
|
+
case "end":
|
|
68
|
+
return _context.stop();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}, _callee);
|
|
72
|
+
}));
|
|
73
|
+
|
|
74
|
+
return function logOut(_x) {
|
|
75
|
+
return _ref3.apply(this, arguments);
|
|
76
|
+
};
|
|
77
|
+
}();
|
|
78
|
+
|
|
79
|
+
exports.logOut = logOut;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
4
|
+
|
|
5
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.default = void 0;
|
|
11
|
+
|
|
12
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
|
+
|
|
14
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
15
|
+
|
|
16
|
+
var _IconButton = _interopRequireDefault(require("cozy-ui/transpiled/react/IconButton"));
|
|
17
|
+
|
|
18
|
+
var _Menu = _interopRequireDefault(require("cozy-ui/transpiled/react/Menu"));
|
|
19
|
+
|
|
20
|
+
var _Breakpoints = require("cozy-ui/transpiled/react/providers/Breakpoints");
|
|
21
|
+
|
|
22
|
+
var _CozyDialogs = require("cozy-ui/transpiled/react/CozyDialogs");
|
|
23
|
+
|
|
24
|
+
var _cozyClient = require("cozy-client");
|
|
25
|
+
|
|
26
|
+
var _UserMenuContent = _interopRequireDefault(require("./UserMenuContent"));
|
|
27
|
+
|
|
28
|
+
var _AvatarMyself = _interopRequireDefault(require("./components/AvatarMyself"));
|
|
29
|
+
|
|
30
|
+
var UserMenu = function UserMenu(_ref) {
|
|
31
|
+
var onLogOut = _ref.onLogOut;
|
|
32
|
+
|
|
33
|
+
var _useState = (0, _react.useState)(false),
|
|
34
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
35
|
+
isOpen = _useState2[0],
|
|
36
|
+
setOpen = _useState2[1];
|
|
37
|
+
|
|
38
|
+
var containerRef = (0, _react.useRef)();
|
|
39
|
+
var buttonRef = (0, _react.useRef)();
|
|
40
|
+
|
|
41
|
+
var _useBreakpoints = (0, _Breakpoints.useBreakpoints)(),
|
|
42
|
+
isMobile = _useBreakpoints.isMobile;
|
|
43
|
+
|
|
44
|
+
var _useInstanceInfo = (0, _cozyClient.useInstanceInfo)(),
|
|
45
|
+
isLoaded = _useInstanceInfo.isLoaded,
|
|
46
|
+
instance = _useInstanceInfo.instance,
|
|
47
|
+
diskUsage = _useInstanceInfo.diskUsage;
|
|
48
|
+
|
|
49
|
+
var toggleMenu = function toggleMenu() {
|
|
50
|
+
setOpen(!isOpen);
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
return /*#__PURE__*/_react.default.createElement("nav", {
|
|
54
|
+
ref: containerRef
|
|
55
|
+
}, /*#__PURE__*/_react.default.createElement(_IconButton.default, {
|
|
56
|
+
ref: buttonRef,
|
|
57
|
+
onClick: toggleMenu,
|
|
58
|
+
disabled: !isLoaded,
|
|
59
|
+
className: "u-p-0 u-ml-half"
|
|
60
|
+
}, /*#__PURE__*/_react.default.createElement(_AvatarMyself.default, {
|
|
61
|
+
size: isMobile ? 's' : 'm'
|
|
62
|
+
})), isMobile ? /*#__PURE__*/_react.default.createElement(_CozyDialogs.ConfirmDialog, {
|
|
63
|
+
open: isOpen,
|
|
64
|
+
onClose: toggleMenu,
|
|
65
|
+
content: /*#__PURE__*/_react.default.createElement(_UserMenuContent.default, {
|
|
66
|
+
onLogOut: onLogOut,
|
|
67
|
+
instance: instance,
|
|
68
|
+
diskUsage: diskUsage
|
|
69
|
+
})
|
|
70
|
+
}) : /*#__PURE__*/_react.default.createElement(_Menu.default, {
|
|
71
|
+
open: isOpen,
|
|
72
|
+
anchorEl: buttonRef.current,
|
|
73
|
+
container: containerRef.current,
|
|
74
|
+
getContentAnchorEl: null,
|
|
75
|
+
onClose: toggleMenu,
|
|
76
|
+
anchorOrigin: {
|
|
77
|
+
vertical: 'bottom',
|
|
78
|
+
horizontal: 'left'
|
|
79
|
+
},
|
|
80
|
+
transformOrigin: {
|
|
81
|
+
vertical: -10,
|
|
82
|
+
horizontal: 0
|
|
83
|
+
}
|
|
84
|
+
}, /*#__PURE__*/_react.default.createElement(_UserMenuContent.default, {
|
|
85
|
+
onLogOut: onLogOut,
|
|
86
|
+
instance: instance,
|
|
87
|
+
diskUsage: diskUsage
|
|
88
|
+
})));
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
var _default = UserMenu;
|
|
92
|
+
exports.default = _default;
|
package/dist/index.js
CHANGED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.buildMyselfQuery = void 0;
|
|
7
|
+
|
|
8
|
+
var _cozyClient = require("cozy-client");
|
|
9
|
+
|
|
10
|
+
var buildMyselfQuery = function buildMyselfQuery() {
|
|
11
|
+
return {
|
|
12
|
+
definition: (0, _cozyClient.Q)('io.cozy.contacts').where({
|
|
13
|
+
me: true
|
|
14
|
+
}),
|
|
15
|
+
options: {
|
|
16
|
+
as: 'io.cozy.contacts/myself'
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
exports.buildMyselfQuery = buildMyselfQuery;
|
package/dist/locales/en.json
CHANGED
|
@@ -49,5 +49,13 @@
|
|
|
49
49
|
"moved": {
|
|
50
50
|
"description": "The Cozy has been moved to a new address"
|
|
51
51
|
}
|
|
52
|
+
},
|
|
53
|
+
"userMenu": {
|
|
54
|
+
"addAccount": "Add account",
|
|
55
|
+
"manageProfile": "Manage profile",
|
|
56
|
+
"createBusinessAccount": "Create business account",
|
|
57
|
+
"storage": "Storage",
|
|
58
|
+
"storageAvailable": "%{smart_count} GB available",
|
|
59
|
+
"logOut": "Log out"
|
|
52
60
|
}
|
|
53
61
|
}
|
package/dist/locales/fr.json
CHANGED
|
@@ -49,5 +49,13 @@
|
|
|
49
49
|
"moved": {
|
|
50
50
|
"description": "Ce Cozy a été déplacé vers une nouvelle adresse"
|
|
51
51
|
}
|
|
52
|
+
},
|
|
53
|
+
"userMenu": {
|
|
54
|
+
"addAccount": "Ajouter un compte",
|
|
55
|
+
"manageProfile": "Gérer mon profil",
|
|
56
|
+
"createBusinessAccount": "Créer un compte entreprise",
|
|
57
|
+
"storage": "Stockage",
|
|
58
|
+
"storageAvailable": "%{smart_count} Go disponible",
|
|
59
|
+
"logOut": "Se déconnecter"
|
|
52
60
|
}
|
|
53
61
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
.apps-menu-grid
|
|
2
|
+
display flex
|
|
3
|
+
flex-wrap wrap
|
|
4
|
+
width 100%
|
|
5
|
+
box-sizing border-box
|
|
6
|
+
padding-left .5rem
|
|
7
|
+
padding-right .5rem
|
|
8
|
+
|
|
9
|
+
.apps-menu-grid-item-wrapper
|
|
10
|
+
width 33%
|
|
11
|
+
aspect-ratio 1 // @stylint ignore Property is valid but unknown by stylint which is old and should be replaced
|
|
12
|
+
|
|
13
|
+
.apps-menu-grid-item
|
|
14
|
+
display flex
|
|
15
|
+
flex-direction column
|
|
16
|
+
justify-content center
|
|
17
|
+
align-items center
|
|
18
|
+
text-decoration none
|
|
19
|
+
width 60%
|
|
20
|
+
min-width 48px
|
package/dist/stylesheet.css
CHANGED
|
@@ -1,3 +1,39 @@
|
|
|
1
|
+
/* imported from apps-menu.styl */
|
|
2
|
+
|
|
3
|
+
.apps-menu-grid {
|
|
4
|
+
display: flex;
|
|
5
|
+
flex-wrap: wrap;
|
|
6
|
+
width: 100%;
|
|
7
|
+
box-sizing: border-box;
|
|
8
|
+
padding-left: 0.5rem;
|
|
9
|
+
padding-right: 0.5rem;
|
|
10
|
+
}
|
|
11
|
+
.apps-menu-grid-item-wrapper {
|
|
12
|
+
width: 33%;
|
|
13
|
+
aspect-ratio: 1;
|
|
14
|
+
}
|
|
15
|
+
.apps-menu-grid-item {
|
|
16
|
+
display: flex;
|
|
17
|
+
flex-direction: column;
|
|
18
|
+
justify-content: center;
|
|
19
|
+
align-items: center;
|
|
20
|
+
text-decoration: none;
|
|
21
|
+
width: 60%;
|
|
22
|
+
min-width: 48px;
|
|
23
|
+
}
|
|
24
|
+
/* imported from user-menu.styl */
|
|
25
|
+
|
|
26
|
+
.user-menu-content {
|
|
27
|
+
width: auto;
|
|
28
|
+
}
|
|
29
|
+
@media (min-width: 64rem) {
|
|
30
|
+
.user-menu-content {
|
|
31
|
+
width: 320px;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
.user-menu-content-add-account {
|
|
35
|
+
width: calc(100% - 32px);
|
|
36
|
+
}
|
|
1
37
|
/* imported from index.styl */
|
|
2
38
|
|
|
3
39
|
[role=banner] .coz-sep-flex {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cozy-bar",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "18.1.0",
|
|
4
4
|
"description": "cozy-bar.js library, a small lib provided by cozy-stack to inject the Cozy-bar component into each app",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"author": "Cozy Cloud <contact@cozycloud.cc> (https://cozy.io/)",
|
|
@@ -20,7 +20,9 @@
|
|
|
20
20
|
"build": "env BABEL_ENV=transpilation babel ./src -d ./dist --extensions .js,.jsx --ignore '**/*.spec.jsx','**/*.spec.js' --copy-files",
|
|
21
21
|
"prepublishOnly": "yarn build",
|
|
22
22
|
"clean": "rm -rf ./dist/*",
|
|
23
|
-
"lint": "
|
|
23
|
+
"lint": "yarn lint:js && yarn lint:styles",
|
|
24
|
+
"lint:js": "eslint '{config,src,examples,test}/**/*.{js,jsx}'",
|
|
25
|
+
"lint:styles": "stylint src --config ./node_modules/stylus-config-cozy-app/.stylintrc",
|
|
24
26
|
"prebuild": "npm-run-all clean",
|
|
25
27
|
"prewatch": "npm-run-all clean",
|
|
26
28
|
"tx": "tx pull --all || true",
|
|
@@ -41,7 +43,7 @@
|
|
|
41
43
|
"babel-plugin-module-resolver": "^4.0.0",
|
|
42
44
|
"babel-plugin-transform-define": "^2.0.0",
|
|
43
45
|
"babel-preset-cozy-app": "^1.9.0",
|
|
44
|
-
"cozy-client": "^
|
|
46
|
+
"cozy-client": "^52.1.0",
|
|
45
47
|
"cozy-dataproxy-lib": "^4.1.0",
|
|
46
48
|
"cozy-device-helper": "2.6.0",
|
|
47
49
|
"cozy-flags": "^4.6.1",
|
|
@@ -49,7 +51,7 @@
|
|
|
49
51
|
"cozy-interapp": "0.4.9",
|
|
50
52
|
"cozy-logger": "1.9.1",
|
|
51
53
|
"cozy-realtime": "^4.0.5",
|
|
52
|
-
"cozy-ui": "^
|
|
54
|
+
"cozy-ui": "^121.8.0",
|
|
53
55
|
"eslint-config-cozy-app": "2.0.0",
|
|
54
56
|
"identity-obj-proxy": "3.0.0",
|
|
55
57
|
"jest": "24.9.0",
|
|
@@ -58,10 +60,12 @@
|
|
|
58
60
|
"react-dom": "16.10.1",
|
|
59
61
|
"react-router-dom": "6.14.2",
|
|
60
62
|
"semantic-release": "15.13.24",
|
|
61
|
-
"
|
|
63
|
+
"stylint": "^2.0.0",
|
|
64
|
+
"stylus": "0.57.0",
|
|
65
|
+
"stylus-config-cozy-app": "^0.1.0"
|
|
62
66
|
},
|
|
63
67
|
"dependencies": {
|
|
64
|
-
"cozy-search": "0.
|
|
68
|
+
"cozy-search": "0.2.0",
|
|
65
69
|
"hammerjs": "2.0.8",
|
|
66
70
|
"lodash.debounce": "4.0.8",
|
|
67
71
|
"lodash.set": "^4.3.2",
|
|
@@ -75,14 +79,14 @@
|
|
|
75
79
|
},
|
|
76
80
|
"peerDependencies": {
|
|
77
81
|
"@cozy/minilog": ">=1.0.0",
|
|
78
|
-
"cozy-client": ">=
|
|
82
|
+
"cozy-client": ">=52.1.0",
|
|
79
83
|
"cozy-dataproxy-lib": ">=4.1.0",
|
|
80
84
|
"cozy-device-helper": ">=2.6.0",
|
|
81
85
|
"cozy-flags": ">=4.6.1",
|
|
82
86
|
"cozy-intent": ">=2.29.1",
|
|
83
87
|
"cozy-interapp": ">=0.4.9",
|
|
84
88
|
"cozy-realtime": ">=4.0.5",
|
|
85
|
-
"cozy-ui": ">=
|
|
89
|
+
"cozy-ui": ">=121.8.0",
|
|
86
90
|
"react": ">=16.10.1",
|
|
87
91
|
"react-dom": ">=16.10.1",
|
|
88
92
|
"react-router-dom": ">=6.14.2"
|