cozy-bar 17.0.0 → 18.0.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/README.md +7 -5
- package/dist/components/Apps/ButtonCozyHome.js +9 -0
- package/dist/components/Apps/ButtonCozyHome.spec.jsx +16 -3
- package/dist/components/Apps/IconCozyHome.js +15 -0
- package/dist/components/AppsMenu/AppsMenuContent.js +115 -0
- package/dist/components/AppsMenu/components/AppItem.js +77 -0
- package/dist/components/AppsMenu/components/AppItemPlaceholder.js +25 -0
- package/dist/components/AppsMenu/index.js +74 -0
- package/dist/components/Bar.js +47 -5
- package/dist/components/BarRoutes.js +4 -0
- package/dist/components/HelpLink/index.js +33 -0
- package/dist/components/Search/SearchButton.js +39 -0
- package/dist/components/UserMenu/UserMenuContent.js +154 -0
- package/dist/components/UserMenu/components/AvatarMyself.js +52 -0
- package/dist/components/UserMenu/helpers.js +99 -0
- package/dist/components/UserMenu/index.js +89 -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 +6 -6
package/README.md
CHANGED
|
@@ -93,10 +93,12 @@ You also need to disable the internal store onto the `BarComponent` with the pro
|
|
|
93
93
|
|
|
94
94
|
Search and AI assistant is now proposed by the cozy-bar. To enable it, you need to :
|
|
95
95
|
|
|
96
|
-
1.
|
|
96
|
+
1. Setup the search
|
|
97
97
|
|
|
98
|
-
|
|
99
|
-
-
|
|
98
|
+
In the app using the cozy-bar :
|
|
99
|
+
- cozy-dataproxy-lib must be installed
|
|
100
|
+
- DataProxyProvider must be added before BarProvider
|
|
101
|
+
- If you want to use the AI assistant, you need to add [the following permissions](https://github.com/cozy/cozy-libs/tree/master/packages/cozy-search#prerequisite-for-ai-components)
|
|
100
102
|
|
|
101
103
|
2. Enable the search
|
|
102
104
|
|
|
@@ -106,7 +108,7 @@ Search and AI assistant is now proposed by the cozy-bar. To enable it, you need
|
|
|
106
108
|
|
|
107
109
|
3. Add the routes
|
|
108
110
|
|
|
109
|
-
These routes allow to display the AI assistant.
|
|
111
|
+
These routes allow to display the search and AI assistant dialogs.
|
|
110
112
|
|
|
111
113
|
```jsx
|
|
112
114
|
import { BarRoutes } from 'cozy-bar'
|
|
@@ -115,7 +117,7 @@ import { BarRoutes } from 'cozy-bar'
|
|
|
115
117
|
// Your routes
|
|
116
118
|
// ...
|
|
117
119
|
|
|
118
|
-
{
|
|
120
|
+
{BarRoutes.map(BarRoute => BarRoute)}
|
|
119
121
|
</Routes>
|
|
120
122
|
```
|
|
121
123
|
|
|
@@ -17,12 +17,18 @@ var _cozyDeviceHelper = require("cozy-device-helper");
|
|
|
17
17
|
|
|
18
18
|
var _cozyIntent = require("cozy-intent");
|
|
19
19
|
|
|
20
|
+
var _Breakpoints = require("cozy-ui/transpiled/react/providers/Breakpoints");
|
|
21
|
+
|
|
20
22
|
var _IconCozyHome = _interopRequireDefault(require("./IconCozyHome"));
|
|
21
23
|
|
|
22
24
|
var ButtonCozyHome = function ButtonCozyHome(_ref) {
|
|
23
25
|
var homeHref = _ref.homeHref,
|
|
24
26
|
isInvertedTheme = _ref.isInvertedTheme;
|
|
25
27
|
var webviewIntent = (0, _cozyIntent.useWebviewIntent)();
|
|
28
|
+
|
|
29
|
+
var _useBreakpoints = (0, _Breakpoints.useBreakpoints)(),
|
|
30
|
+
isMobile = _useBreakpoints.isMobile;
|
|
31
|
+
|
|
26
32
|
if ((0, _cozyDeviceHelper.isFlagshipApp)() || (0, _cozyFlags.default)('flagship.debug')) return /*#__PURE__*/_react.default.createElement("a", {
|
|
27
33
|
onClick: function onClick() {
|
|
28
34
|
webviewIntent.call('backToHome');
|
|
@@ -31,6 +37,7 @@ var ButtonCozyHome = function ButtonCozyHome(_ref) {
|
|
|
31
37
|
"data-testid": "buttonCozyHome"
|
|
32
38
|
}, /*#__PURE__*/_react.default.createElement(_IconCozyHome.default, {
|
|
33
39
|
className: "coz-nav-apps-btns-home-svg",
|
|
40
|
+
isMobile: isMobile,
|
|
34
41
|
isInvertedTheme: isInvertedTheme
|
|
35
42
|
}));
|
|
36
43
|
|
|
@@ -40,6 +47,7 @@ var ButtonCozyHome = function ButtonCozyHome(_ref) {
|
|
|
40
47
|
className: "coz-nav-apps-btns-home"
|
|
41
48
|
}, /*#__PURE__*/_react.default.createElement(_IconCozyHome.default, {
|
|
42
49
|
className: "coz-nav-apps-btns-home-svg",
|
|
50
|
+
isMobile: isMobile,
|
|
43
51
|
isInvertedTheme: isInvertedTheme
|
|
44
52
|
}));
|
|
45
53
|
}
|
|
@@ -48,6 +56,7 @@ var ButtonCozyHome = function ButtonCozyHome(_ref) {
|
|
|
48
56
|
className: "coz-nav-apps-btns-home"
|
|
49
57
|
}, /*#__PURE__*/_react.default.createElement(_IconCozyHome.default, {
|
|
50
58
|
className: "coz-nav-apps-btns-home-svg",
|
|
59
|
+
isMobile: isMobile,
|
|
51
60
|
isInvertedTheme: isInvertedTheme
|
|
52
61
|
}));
|
|
53
62
|
};
|
|
@@ -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,12 @@ 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 _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
|
|
23
|
+
|
|
24
|
+
var _TwakeWorkplace = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/TwakeWorkplace"));
|
|
25
|
+
|
|
20
26
|
/* Generated with node_modules/.bin/svgr src/assets/sprites/icon-cozy-home.svg */
|
|
21
27
|
function SvgIconCozyHome(props) {
|
|
22
28
|
return /*#__PURE__*/_react.default.createElement("svg", (0, _extends2.default)({
|
|
@@ -39,8 +45,17 @@ function SvgIconCozyHome(props) {
|
|
|
39
45
|
|
|
40
46
|
var IconCozyHome = function IconCozyHome(_ref) {
|
|
41
47
|
var className = _ref.className,
|
|
48
|
+
isMobile = _ref.isMobile,
|
|
42
49
|
isInvertedTheme = _ref.isInvertedTheme;
|
|
43
50
|
|
|
51
|
+
if ((0, _isTwakeTheme.isTwakeTheme)()) {
|
|
52
|
+
return /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
53
|
+
icon: _TwakeWorkplace.default,
|
|
54
|
+
size: isMobile ? 28 : 32,
|
|
55
|
+
className: isMobile ? 'u-ml-half' : undefined
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
44
59
|
var fetchIcon = function fetchIcon() {
|
|
45
60
|
if (isInvertedTheme) {
|
|
46
61
|
return "".concat(_stack.default.get.cozyURL(), "/assets/images/icon-cozy-home-inverted.svg");
|
|
@@ -0,0 +1,115 @@
|
|
|
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 _AppItem = _interopRequireDefault(require("./components/AppItem"));
|
|
19
|
+
|
|
20
|
+
var _AppItemPlaceholder = _interopRequireDefault(require("./components/AppItemPlaceholder"));
|
|
21
|
+
|
|
22
|
+
var _useI18n2 = _interopRequireDefault(require("../useI18n"));
|
|
23
|
+
|
|
24
|
+
var _reducers = require("../../lib/reducers");
|
|
25
|
+
|
|
26
|
+
var styles = {
|
|
27
|
+
"apps-menu-grid": "apps-menu-grid",
|
|
28
|
+
"apps-menu-grid-item-wrapper": "apps-menu-grid-item-wrapper",
|
|
29
|
+
"apps-menu-grid-item": "apps-menu-grid-item"
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
var sorter = function sorter(fn) {
|
|
33
|
+
return function (itemA, itemB) {
|
|
34
|
+
return fn(itemA) > fn(itemB);
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
var AppsMenuContent = function AppsMenuContent(_ref) {
|
|
39
|
+
var isFetchingApps = _ref.isFetchingApps,
|
|
40
|
+
apps = _ref.apps,
|
|
41
|
+
homeApp = _ref.homeApp;
|
|
42
|
+
|
|
43
|
+
var _useI18n = (0, _useI18n2.default)(),
|
|
44
|
+
t = _useI18n.t;
|
|
45
|
+
|
|
46
|
+
var translateAppWithLocales = translateApp(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(translateAppWithLocales));
|
|
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 translateApp = function translateApp(t) {
|
|
94
|
+
return function (app) {
|
|
95
|
+
var namePrefix = app.namePrefix ? t("".concat(app.slug, ".namePrefix"), {
|
|
96
|
+
_: app.namePrefix
|
|
97
|
+
}) : null;
|
|
98
|
+
var name = t("".concat(app.slug, ".name"), {
|
|
99
|
+
_: app.name
|
|
100
|
+
});
|
|
101
|
+
return namePrefix ? "".concat(namePrefix, " ").concat(name) : "".concat(name);
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
var mapStateToProps = function mapStateToProps(state) {
|
|
106
|
+
return {
|
|
107
|
+
isFetchingApps: (0, _reducers.isFetchingApps)(state),
|
|
108
|
+
apps: (0, _reducers.getApps)(state),
|
|
109
|
+
homeApp: (0, _reducers.getHomeApp)(state)
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
var _default = (0, _reactRedux.connect)(mapStateToProps)(AppsMenuContent);
|
|
114
|
+
|
|
115
|
+
exports.default = _default;
|
|
@@ -0,0 +1,77 @@
|
|
|
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 _get = _interopRequireDefault(require("lodash/get"));
|
|
15
|
+
|
|
16
|
+
var _cozyClient = require("cozy-client");
|
|
17
|
+
|
|
18
|
+
var _Buttons = _interopRequireDefault(require("cozy-ui/transpiled/react/Buttons"));
|
|
19
|
+
|
|
20
|
+
var _AppIcon = _interopRequireDefault(require("cozy-ui/transpiled/react/AppIcon"));
|
|
21
|
+
|
|
22
|
+
var _AppLinker = _interopRequireDefault(require("cozy-ui/transpiled/react/AppLinker"));
|
|
23
|
+
|
|
24
|
+
var _Typography = _interopRequireDefault(require("cozy-ui/transpiled/react/Typography"));
|
|
25
|
+
|
|
26
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
27
|
+
|
|
28
|
+
var _proptypes = require("../../../proptypes");
|
|
29
|
+
|
|
30
|
+
var _stack = _interopRequireDefault(require("../../../lib/stack"));
|
|
31
|
+
|
|
32
|
+
var styles = {
|
|
33
|
+
"apps-menu-grid": "apps-menu-grid",
|
|
34
|
+
"apps-menu-grid-item-wrapper": "apps-menu-grid-item-wrapper",
|
|
35
|
+
"apps-menu-grid-item": "apps-menu-grid-item"
|
|
36
|
+
};
|
|
37
|
+
var getAppDisplayName = (0, _get.default)(_cozyClient.models, 'applications.getAppDisplayName', function (app) {
|
|
38
|
+
return app.namePrefix && app.namePrefix.toLowerCase() !== 'cozy' ? "".concat(app.namePrefix, " ").concat(app.name) : app.name;
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
var AppItem = function AppItem(_ref) {
|
|
42
|
+
var app = _ref.app;
|
|
43
|
+
var appName = getAppDisplayName(app);
|
|
44
|
+
return /*#__PURE__*/_react.default.createElement(_AppLinker.default, {
|
|
45
|
+
href: app.href || '',
|
|
46
|
+
app: app
|
|
47
|
+
}, function (_ref2) {
|
|
48
|
+
var onClick = _ref2.onClick,
|
|
49
|
+
href = _ref2.href;
|
|
50
|
+
return /*#__PURE__*/_react.default.createElement(_Buttons.default, {
|
|
51
|
+
height: "auto",
|
|
52
|
+
component: "a",
|
|
53
|
+
variant: "text",
|
|
54
|
+
href: href,
|
|
55
|
+
title: appName,
|
|
56
|
+
onClick: onClick,
|
|
57
|
+
className: (0, _classnames.default)(styles['apps-menu-grid-item-wrapper'], 'u-bdrs-5'),
|
|
58
|
+
label: /*#__PURE__*/_react.default.createElement("div", {
|
|
59
|
+
className: styles['apps-menu-grid-item']
|
|
60
|
+
}, /*#__PURE__*/_react.default.createElement(_AppIcon.default, (0, _extends2.default)({
|
|
61
|
+
app: app,
|
|
62
|
+
key: app.slug
|
|
63
|
+
}, _stack.default.get.iconProps())), /*#__PURE__*/_react.default.createElement(_Typography.default, {
|
|
64
|
+
variant: "caption",
|
|
65
|
+
noWrap: true,
|
|
66
|
+
className: "u-mt-half"
|
|
67
|
+
}, appName))
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
exports.AppItem = AppItem;
|
|
73
|
+
AppItem.propTypes = {
|
|
74
|
+
app: _proptypes.appShape.isRequired
|
|
75
|
+
};
|
|
76
|
+
var _default = AppItem;
|
|
77
|
+
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,74 @@
|
|
|
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 buttonRef = (0, _react.useRef)();
|
|
37
|
+
|
|
38
|
+
var _useBreakpoints = (0, _Breakpoints.useBreakpoints)(),
|
|
39
|
+
isMobile = _useBreakpoints.isMobile;
|
|
40
|
+
|
|
41
|
+
var toggleMenu = function toggleMenu() {
|
|
42
|
+
setOpen(!isOpen);
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
return /*#__PURE__*/_react.default.createElement("nav", null, /*#__PURE__*/_react.default.createElement(_IconButton.default, {
|
|
46
|
+
ref: buttonRef,
|
|
47
|
+
onClick: toggleMenu,
|
|
48
|
+
className: "u-p-half"
|
|
49
|
+
}, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
50
|
+
icon: _Mosaic.default,
|
|
51
|
+
size: "18"
|
|
52
|
+
})), isMobile ? /*#__PURE__*/_react.default.createElement(_CozyDialogs.Dialog, {
|
|
53
|
+
open: isOpen,
|
|
54
|
+
size: "small",
|
|
55
|
+
onClose: toggleMenu,
|
|
56
|
+
content: /*#__PURE__*/_react.default.createElement(_AppsMenuContent.default, null)
|
|
57
|
+
}) : /*#__PURE__*/_react.default.createElement(_Menu.default, {
|
|
58
|
+
open: isOpen,
|
|
59
|
+
anchorEl: buttonRef.current,
|
|
60
|
+
container: buttonRef.current,
|
|
61
|
+
getContentAnchorEl: null,
|
|
62
|
+
onClose: toggleMenu,
|
|
63
|
+
anchorOrigin: {
|
|
64
|
+
vertical: 'bottom',
|
|
65
|
+
horizontal: 'left'
|
|
66
|
+
},
|
|
67
|
+
transformOrigin: {
|
|
68
|
+
vertical: -10
|
|
69
|
+
}
|
|
70
|
+
}, /*#__PURE__*/_react.default.createElement(_AppsMenuContent.default, null)));
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
var _default = AppsMenu;
|
|
74
|
+
exports.default = _default;
|
package/dist/components/Bar.js
CHANGED
|
@@ -23,10 +23,14 @@ var _Breakpoints = require("cozy-ui/transpiled/react/providers/Breakpoints");
|
|
|
23
23
|
|
|
24
24
|
var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
|
|
25
25
|
|
|
26
|
+
var _AppTitle = _interopRequireDefault(require("cozy-ui/transpiled/react/AppTitle"));
|
|
27
|
+
|
|
26
28
|
var _cozyDeviceHelper = require("cozy-device-helper");
|
|
27
29
|
|
|
28
30
|
var _cozyFlags = _interopRequireDefault(require("cozy-flags"));
|
|
29
31
|
|
|
32
|
+
var _isTwakeTheme = require("cozy-ui/transpiled/react/helpers/isTwakeTheme");
|
|
33
|
+
|
|
30
34
|
var _ButtonCozyHome = require("./Apps/ButtonCozyHome");
|
|
31
35
|
|
|
32
36
|
var _Banner = _interopRequireDefault(require("./Banner"));
|
|
@@ -37,6 +41,12 @@ var _Settings = _interopRequireDefault(require("./Settings"));
|
|
|
37
41
|
|
|
38
42
|
var _Apps = _interopRequireDefault(require("./Apps"));
|
|
39
43
|
|
|
44
|
+
var _AppsMenu = _interopRequireDefault(require("./AppsMenu"));
|
|
45
|
+
|
|
46
|
+
var _UserMenu = _interopRequireDefault(require("./UserMenu"));
|
|
47
|
+
|
|
48
|
+
var _HelpLink = _interopRequireDefault(require("./HelpLink"));
|
|
49
|
+
|
|
40
50
|
var _reducers = require("../lib/reducers");
|
|
41
51
|
|
|
42
52
|
var _useI18n2 = _interopRequireDefault(require("./useI18n"));
|
|
@@ -45,6 +55,8 @@ var _cozyClient = require("cozy-client");
|
|
|
45
55
|
|
|
46
56
|
var _cozySearch = require("cozy-search");
|
|
47
57
|
|
|
58
|
+
var _SearchButton = _interopRequireDefault(require("./Search/SearchButton"));
|
|
59
|
+
|
|
48
60
|
/* Generated with node_modules/.bin/svgr src/assets/sprites/icon-apps.svg */
|
|
49
61
|
function SvgIconApps(props) {
|
|
50
62
|
return /*#__PURE__*/_react.default.createElement("svg", (0, _extends2.default)({
|
|
@@ -74,7 +86,8 @@ var Bar = function Bar(_ref) {
|
|
|
74
86
|
appNamePrefix = _ref.appNamePrefix,
|
|
75
87
|
appSlug = _ref.appSlug,
|
|
76
88
|
iconPath = _ref.iconPath,
|
|
77
|
-
hasFetchedApps = _ref.hasFetchedApps
|
|
89
|
+
hasFetchedApps = _ref.hasFetchedApps,
|
|
90
|
+
homeApp = _ref.homeApp;
|
|
78
91
|
var client = (0, _cozyClient.useClient)();
|
|
79
92
|
|
|
80
93
|
var _useI18n = (0, _useI18n2.default)(),
|
|
@@ -88,7 +101,7 @@ var Bar = function Bar(_ref) {
|
|
|
88
101
|
drawerVisible = _useState2[0],
|
|
89
102
|
setDrawerVisible = _useState2[1];
|
|
90
103
|
|
|
91
|
-
var showDrawerAndBurger = !isPublic && isMobile;
|
|
104
|
+
var showDrawerAndBurger = !isPublic && isMobile && !(0, _isTwakeTheme.isTwakeTheme)();
|
|
92
105
|
var showSettings = !isPublic && !isMobile;
|
|
93
106
|
var fetchInitialData = (0, _react.useCallback)(function () {
|
|
94
107
|
if (!isPublic) {
|
|
@@ -123,7 +136,7 @@ var Bar = function Bar(_ref) {
|
|
|
123
136
|
};
|
|
124
137
|
|
|
125
138
|
var renderCenter = function renderCenter() {
|
|
126
|
-
return /*#__PURE__*/_react.default.createElement(_Apps.default, {
|
|
139
|
+
return (0, _isTwakeTheme.isTwakeTheme)() ? null : /*#__PURE__*/_react.default.createElement(_Apps.default, {
|
|
127
140
|
appName: appName,
|
|
128
141
|
appNamePrefix: appNamePrefix,
|
|
129
142
|
appSlug: appSlug,
|
|
@@ -138,6 +151,24 @@ var Bar = function Bar(_ref) {
|
|
|
138
151
|
return /*#__PURE__*/_react.default.createElement(_ButtonCozyHome.ButtonCozyHome, {
|
|
139
152
|
isInvertedTheme: isInvertedTheme
|
|
140
153
|
});
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
if ((0, _isTwakeTheme.isTwakeTheme)()) {
|
|
157
|
+
var homeHref = !isPublic && homeApp && homeApp.href;
|
|
158
|
+
|
|
159
|
+
if (isMobile) {
|
|
160
|
+
return /*#__PURE__*/_react.default.createElement(_ButtonCozyHome.ButtonCozyHome, {
|
|
161
|
+
homeHref: homeHref
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_ButtonCozyHome.ButtonCozyHome, {
|
|
166
|
+
homeHref: homeHref
|
|
167
|
+
}), /*#__PURE__*/_react.default.createElement("span", {
|
|
168
|
+
className: "coz-nav-apps-btns-sep u-mr-half"
|
|
169
|
+
}), /*#__PURE__*/_react.default.createElement(_AppTitle.default, {
|
|
170
|
+
slug: appSlug
|
|
171
|
+
}));
|
|
141
172
|
} // data-tutorial attribute allows to be targeted in an application tutorial
|
|
142
173
|
|
|
143
174
|
|
|
@@ -162,6 +193,16 @@ var Bar = function Bar(_ref) {
|
|
|
162
193
|
}) : null;
|
|
163
194
|
};
|
|
164
195
|
|
|
196
|
+
var renderTwakeRight = function renderTwakeRight() {
|
|
197
|
+
// Special case because search on Drive still rely on old search UI
|
|
198
|
+
// that modifies the cozy-bar
|
|
199
|
+
// Can be removed when https://github.com/cozy/cozy-drive/pull/3320 is merged
|
|
200
|
+
if (appSlug === 'drive' && isMobile && barSearch) return null;
|
|
201
|
+
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, {
|
|
202
|
+
onLogOut: onLogOut
|
|
203
|
+
}));
|
|
204
|
+
};
|
|
205
|
+
|
|
165
206
|
var renderSearch = function renderSearch() {
|
|
166
207
|
return searchOptions.enabled && !isMobile ? /*#__PURE__*/_react.default.createElement("div", {
|
|
167
208
|
className: "u-flex-grow u-mh-2"
|
|
@@ -183,7 +224,7 @@ var Bar = function Bar(_ref) {
|
|
|
183
224
|
className: "coz-bar-container"
|
|
184
225
|
}, barLeft || renderLeft(), barCenter || renderCenter(), /*#__PURE__*/_react.default.createElement("div", {
|
|
185
226
|
className: "u-flex-grow"
|
|
186
|
-
}, barSearch || renderSearch()), barRight || renderRight(), showDrawerAndBurger ? /*#__PURE__*/_react.default.createElement(_Drawer.default, {
|
|
227
|
+
}, 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, {
|
|
187
228
|
visible: drawerVisible,
|
|
188
229
|
onClose: toggleDrawer,
|
|
189
230
|
drawerListener: function drawerListener() {
|
|
@@ -209,7 +250,8 @@ Bar.propTypes = {
|
|
|
209
250
|
|
|
210
251
|
var mapStateToProps = function mapStateToProps(state) {
|
|
211
252
|
return {
|
|
212
|
-
hasFetchedApps: (0, _reducers.hasFetched)(state)
|
|
253
|
+
hasFetchedApps: (0, _reducers.hasFetched)(state),
|
|
254
|
+
homeApp: (0, _reducers.getHomeApp)(state)
|
|
213
255
|
};
|
|
214
256
|
};
|
|
215
257
|
|
|
@@ -21,5 +21,9 @@ var BarRoutes = [/*#__PURE__*/_react.default.createElement(_reactRouterDom.Route
|
|
|
21
21
|
element: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_cozyClient.RealTimeQueries, {
|
|
22
22
|
doctype: "io.cozy.ai.chat.conversations"
|
|
23
23
|
}), /*#__PURE__*/_react.default.createElement(_cozySearch.AssistantDialog, null))
|
|
24
|
+
}), /*#__PURE__*/_react.default.createElement(_reactRouterDom.Route, {
|
|
25
|
+
key: "search",
|
|
26
|
+
path: "search",
|
|
27
|
+
element: /*#__PURE__*/_react.default.createElement(_cozySearch.SearchDialog, null)
|
|
24
28
|
})];
|
|
25
29
|
exports.BarRoutes = BarRoutes;
|
|
@@ -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,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.default = void 0;
|
|
11
|
+
|
|
12
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
13
|
+
|
|
14
|
+
var _reactRouterDom = require("react-router-dom");
|
|
15
|
+
|
|
16
|
+
var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
|
|
17
|
+
|
|
18
|
+
var _IconButton = _interopRequireDefault(require("cozy-ui/transpiled/react/IconButton"));
|
|
19
|
+
|
|
20
|
+
var _Magnifier = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Magnifier"));
|
|
21
|
+
|
|
22
|
+
var SearchButton = function SearchButton() {
|
|
23
|
+
var navigate = (0, _reactRouterDom.useNavigate)();
|
|
24
|
+
|
|
25
|
+
var _useLocation = (0, _reactRouterDom.useLocation)(),
|
|
26
|
+
pathname = _useLocation.pathname;
|
|
27
|
+
|
|
28
|
+
var goToSearch = (0, _react.useCallback)(function () {
|
|
29
|
+
navigate("/search?returnPath=".concat(pathname));
|
|
30
|
+
}, [navigate, pathname]);
|
|
31
|
+
return /*#__PURE__*/_react.default.createElement(_IconButton.default, {
|
|
32
|
+
onClick: goToSearch
|
|
33
|
+
}, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
34
|
+
icon: _Magnifier.default
|
|
35
|
+
}));
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
var _default = SearchButton;
|
|
39
|
+
exports.default = _default;
|
|
@@ -0,0 +1,154 @@
|
|
|
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
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
80
|
+
className: (0, _classnames.default)(styles['user-menu-content'], 'u-flex u-flex-column')
|
|
81
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
82
|
+
className: "u-flex u-flex-column u-flex-items-center u-mt-half"
|
|
83
|
+
}, /*#__PURE__*/_react.default.createElement(_AvatarMyself.default, {
|
|
84
|
+
className: "u-mb-half"
|
|
85
|
+
}), /*#__PURE__*/_react.default.createElement(_Typography.default, {
|
|
86
|
+
variant: "h4"
|
|
87
|
+
}, public_name), /*#__PURE__*/_react.default.createElement(_Typography.default, {
|
|
88
|
+
variant: "body2"
|
|
89
|
+
}, email), (0, _cozyFlags.default)('cozy.b2b.enabled') && /*#__PURE__*/_react.default.createElement(_Buttons.default, {
|
|
90
|
+
label: t('userMenu.addAccount'),
|
|
91
|
+
variant: "secondary",
|
|
92
|
+
startIcon: /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
93
|
+
icon: _PersonAdd.default
|
|
94
|
+
}),
|
|
95
|
+
className: (0, _classnames.default)(styles['user-menu-content-add-account'], 'u-mt-1')
|
|
96
|
+
})), /*#__PURE__*/_react.default.createElement(_List.default, {
|
|
97
|
+
className: "u-pb-0"
|
|
98
|
+
}, /*#__PURE__*/_react.default.createElement(_ListItem.default, {
|
|
99
|
+
button: true,
|
|
100
|
+
size: "small",
|
|
101
|
+
onClick: function onClick() {
|
|
102
|
+
return (0, _helpers.openProfileLink)({
|
|
103
|
+
client: client
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
}, /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, null, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
107
|
+
icon: _FromUser.default
|
|
108
|
+
})), /*#__PURE__*/_react.default.createElement(_ListItemText.default, {
|
|
109
|
+
primary: t('userMenu.manageProfile')
|
|
110
|
+
})), (0, _cozyFlags.default)('cozy.b2b.enabled') && /*#__PURE__*/_react.default.createElement(_ListItem.default, {
|
|
111
|
+
button: true,
|
|
112
|
+
size: "small"
|
|
113
|
+
}, /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, null, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
114
|
+
icon: _Company.default
|
|
115
|
+
})), /*#__PURE__*/_react.default.createElement(_ListItemText.default, {
|
|
116
|
+
primary: t('userMenu.createBusinessAccount')
|
|
117
|
+
})), /*#__PURE__*/_react.default.createElement(_ListItem.default, {
|
|
118
|
+
button: true,
|
|
119
|
+
size: "small",
|
|
120
|
+
onClick: function onClick() {
|
|
121
|
+
return (0, _helpers.openStorageLink)({
|
|
122
|
+
client: client
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}, /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, null, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
126
|
+
icon: _Cloud.default
|
|
127
|
+
})), /*#__PURE__*/_react.default.createElement(_ListItemText.default, {
|
|
128
|
+
primary: t('userMenu.storage'),
|
|
129
|
+
secondary: t('userMenu.storageAvailable', humanDiskQuota - humanDiskUsage)
|
|
130
|
+
}), /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, null, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
131
|
+
icon: _Right.default
|
|
132
|
+
}))), /*#__PURE__*/_react.default.createElement(_Divider.default, {
|
|
133
|
+
component: "li",
|
|
134
|
+
variant: "inset"
|
|
135
|
+
}), /*#__PURE__*/_react.default.createElement(_ListItem.default, {
|
|
136
|
+
button: true,
|
|
137
|
+
size: "small",
|
|
138
|
+
onClick: function onClick() {
|
|
139
|
+
return (0, _helpers.logOut)({
|
|
140
|
+
client: client,
|
|
141
|
+
webviewIntent: webviewIntent,
|
|
142
|
+
onLogOut: onLogOut
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
}, /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, null, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
146
|
+
icon: _Logout.default
|
|
147
|
+
})), /*#__PURE__*/_react.default.createElement(_ListItemText.default, {
|
|
148
|
+
primary: t('userMenu.logOut')
|
|
149
|
+
}))));
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
exports.UserMenuContent = UserMenuContent;
|
|
153
|
+
var _default = UserMenuContent;
|
|
154
|
+
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 _Avatar = _interopRequireDefault(require("cozy-ui/transpiled/react/Avatar"));
|
|
15
|
+
|
|
16
|
+
var _Skeleton = _interopRequireDefault(require("cozy-ui/transpiled/react/Skeleton"));
|
|
17
|
+
|
|
18
|
+
var _queries = require("../../../lib/queries");
|
|
19
|
+
|
|
20
|
+
var getInitials = _cozyClient.models.contact.getInitials;
|
|
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 = 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,99 @@
|
|
|
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.openStorageLink = exports.openProfileLink = 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
|
+
var openProfileLink = function openProfileLink(_ref2) {
|
|
30
|
+
var client = _ref2.client;
|
|
31
|
+
var link = getSettingsLink({
|
|
32
|
+
client: client,
|
|
33
|
+
hash: 'profile'
|
|
34
|
+
});
|
|
35
|
+
window.open(link, '_self');
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
exports.openProfileLink = openProfileLink;
|
|
39
|
+
|
|
40
|
+
var openStorageLink = function openStorageLink(_ref3) {
|
|
41
|
+
var client = _ref3.client;
|
|
42
|
+
var link = getSettingsLink({
|
|
43
|
+
client: client,
|
|
44
|
+
hash: 'storage'
|
|
45
|
+
});
|
|
46
|
+
window.open(link, '_self');
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
exports.openStorageLink = openStorageLink;
|
|
50
|
+
|
|
51
|
+
var logOut = /*#__PURE__*/function () {
|
|
52
|
+
var _ref5 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_ref4) {
|
|
53
|
+
var client, webviewIntent, onLogOut, res;
|
|
54
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
55
|
+
while (1) {
|
|
56
|
+
switch (_context.prev = _context.next) {
|
|
57
|
+
case 0:
|
|
58
|
+
client = _ref4.client, webviewIntent = _ref4.webviewIntent, onLogOut = _ref4.onLogOut;
|
|
59
|
+
|
|
60
|
+
if (!(onLogOut && typeof onLogOut === 'function')) {
|
|
61
|
+
_context.next = 8;
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
res = onLogOut();
|
|
66
|
+
|
|
67
|
+
if (!(res instanceof Promise)) {
|
|
68
|
+
_context.next = 6;
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
_context.next = 6;
|
|
73
|
+
return res;
|
|
74
|
+
|
|
75
|
+
case 6:
|
|
76
|
+
_context.next = 11;
|
|
77
|
+
break;
|
|
78
|
+
|
|
79
|
+
case 8:
|
|
80
|
+
_context.next = 10;
|
|
81
|
+
return client.logout();
|
|
82
|
+
|
|
83
|
+
case 10:
|
|
84
|
+
return _context.abrupt("return", (0, _cozyDeviceHelper.isFlagshipApp)() && webviewIntent ? webviewIntent.call('logout') : window.location.reload());
|
|
85
|
+
|
|
86
|
+
case 11:
|
|
87
|
+
case "end":
|
|
88
|
+
return _context.stop();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}, _callee);
|
|
92
|
+
}));
|
|
93
|
+
|
|
94
|
+
return function logOut(_x) {
|
|
95
|
+
return _ref5.apply(this, arguments);
|
|
96
|
+
};
|
|
97
|
+
}();
|
|
98
|
+
|
|
99
|
+
exports.logOut = logOut;
|
|
@@ -0,0 +1,89 @@
|
|
|
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 buttonRef = (0, _react.useRef)();
|
|
39
|
+
|
|
40
|
+
var _useBreakpoints = (0, _Breakpoints.useBreakpoints)(),
|
|
41
|
+
isMobile = _useBreakpoints.isMobile;
|
|
42
|
+
|
|
43
|
+
var _useInstanceInfo = (0, _cozyClient.useInstanceInfo)(),
|
|
44
|
+
isLoaded = _useInstanceInfo.isLoaded,
|
|
45
|
+
instance = _useInstanceInfo.instance,
|
|
46
|
+
diskUsage = _useInstanceInfo.diskUsage;
|
|
47
|
+
|
|
48
|
+
var toggleMenu = function toggleMenu() {
|
|
49
|
+
setOpen(!isOpen);
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
return /*#__PURE__*/_react.default.createElement("nav", null, /*#__PURE__*/_react.default.createElement(_IconButton.default, {
|
|
53
|
+
ref: buttonRef,
|
|
54
|
+
onClick: toggleMenu,
|
|
55
|
+
disabled: !isLoaded,
|
|
56
|
+
className: "u-p-0 u-ml-half"
|
|
57
|
+
}, /*#__PURE__*/_react.default.createElement(_AvatarMyself.default, {
|
|
58
|
+
size: isMobile ? 's' : 'm'
|
|
59
|
+
})), isMobile ? /*#__PURE__*/_react.default.createElement(_CozyDialogs.Dialog, {
|
|
60
|
+
open: isOpen,
|
|
61
|
+
size: "small",
|
|
62
|
+
onClose: toggleMenu,
|
|
63
|
+
content: /*#__PURE__*/_react.default.createElement(_UserMenuContent.default, {
|
|
64
|
+
onLogOut: onLogOut,
|
|
65
|
+
instance: instance,
|
|
66
|
+
diskUsage: diskUsage
|
|
67
|
+
})
|
|
68
|
+
}) : /*#__PURE__*/_react.default.createElement(_Menu.default, {
|
|
69
|
+
open: isOpen,
|
|
70
|
+
anchorEl: buttonRef.current,
|
|
71
|
+
container: buttonRef.current,
|
|
72
|
+
getContentAnchorEl: null,
|
|
73
|
+
onClose: toggleMenu,
|
|
74
|
+
anchorOrigin: {
|
|
75
|
+
vertical: 'bottom',
|
|
76
|
+
horizontal: 'left'
|
|
77
|
+
},
|
|
78
|
+
transformOrigin: {
|
|
79
|
+
vertical: -10
|
|
80
|
+
}
|
|
81
|
+
}, /*#__PURE__*/_react.default.createElement(_UserMenuContent.default, {
|
|
82
|
+
onLogOut: onLogOut,
|
|
83
|
+
instance: instance,
|
|
84
|
+
diskUsage: diskUsage
|
|
85
|
+
})));
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
var _default = UserMenu;
|
|
89
|
+
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: 0.5rem
|
|
7
|
+
padding-right: 0.5rem
|
|
8
|
+
|
|
9
|
+
.apps-menu-grid-item-wrapper
|
|
10
|
+
width: 33%
|
|
11
|
+
aspect-ratio: 1
|
|
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: 320px;
|
|
28
|
+
}
|
|
29
|
+
@media (max-width: 48rem) {
|
|
30
|
+
.user-menu-content {
|
|
31
|
+
width: auto;
|
|
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.0.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/)",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"babel-plugin-module-resolver": "^4.0.0",
|
|
42
42
|
"babel-plugin-transform-define": "^2.0.0",
|
|
43
43
|
"babel-preset-cozy-app": "^1.9.0",
|
|
44
|
-
"cozy-client": "^
|
|
44
|
+
"cozy-client": "^52.1.0",
|
|
45
45
|
"cozy-dataproxy-lib": "^4.1.0",
|
|
46
46
|
"cozy-device-helper": "2.6.0",
|
|
47
47
|
"cozy-flags": "^4.6.1",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"cozy-interapp": "0.4.9",
|
|
50
50
|
"cozy-logger": "1.9.1",
|
|
51
51
|
"cozy-realtime": "^4.0.5",
|
|
52
|
-
"cozy-ui": "^
|
|
52
|
+
"cozy-ui": "^121.8.0",
|
|
53
53
|
"eslint-config-cozy-app": "2.0.0",
|
|
54
54
|
"identity-obj-proxy": "3.0.0",
|
|
55
55
|
"jest": "24.9.0",
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"stylus": "0.57.0"
|
|
62
62
|
},
|
|
63
63
|
"dependencies": {
|
|
64
|
-
"cozy-search": "0.
|
|
64
|
+
"cozy-search": "0.2.0",
|
|
65
65
|
"hammerjs": "2.0.8",
|
|
66
66
|
"lodash.debounce": "4.0.8",
|
|
67
67
|
"lodash.set": "^4.3.2",
|
|
@@ -75,14 +75,14 @@
|
|
|
75
75
|
},
|
|
76
76
|
"peerDependencies": {
|
|
77
77
|
"@cozy/minilog": ">=1.0.0",
|
|
78
|
-
"cozy-client": ">=
|
|
78
|
+
"cozy-client": ">=52.1.0",
|
|
79
79
|
"cozy-dataproxy-lib": ">=4.1.0",
|
|
80
80
|
"cozy-device-helper": ">=2.6.0",
|
|
81
81
|
"cozy-flags": ">=4.6.1",
|
|
82
82
|
"cozy-intent": ">=2.29.1",
|
|
83
83
|
"cozy-interapp": ">=0.4.9",
|
|
84
84
|
"cozy-realtime": ">=4.0.5",
|
|
85
|
-
"cozy-ui": ">=
|
|
85
|
+
"cozy-ui": ">=121.8.0",
|
|
86
86
|
"react": ">=16.10.1",
|
|
87
87
|
"react-dom": ">=16.10.1",
|
|
88
88
|
"react-router-dom": ">=6.14.2"
|