@bigbinary/neeto-molecules 1.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 +36 -0
- package/dist/BrowserSupport.cjs.js +1468 -0
- package/dist/BrowserSupport.js +1462 -0
- package/dist/Columns.cjs.js +183 -0
- package/dist/Columns.js +177 -0
- package/dist/CustomDomain.cjs.js +758 -0
- package/dist/CustomDomain.js +732 -0
- package/dist/DateRangeFilter.cjs.js +214 -0
- package/dist/DateRangeFilter.js +207 -0
- package/dist/EmailPreview.cjs.js +32409 -0
- package/dist/EmailPreview.js +32383 -0
- package/dist/ErrorPage.cjs.js +135 -0
- package/dist/ErrorPage.js +111 -0
- package/dist/IpRestriction.cjs.js +3578 -0
- package/dist/IpRestriction.js +3552 -0
- package/dist/KeyboardShortcuts.cjs.js +2212 -0
- package/dist/KeyboardShortcuts.js +2205 -0
- package/dist/LoginPage.cjs.js +598 -0
- package/dist/LoginPage.js +573 -0
- package/dist/NeetoWidget.cjs.js +86969 -0
- package/dist/NeetoWidget.js +86943 -0
- package/dist/PublishBlock.cjs.js +188 -0
- package/dist/PublishBlock.js +182 -0
- package/dist/Schedule.cjs.js +949 -0
- package/dist/Schedule.js +918 -0
- package/dist/ShareViaLink.cjs.js +1247 -0
- package/dist/ShareViaLink.js +1241 -0
- package/dist/Sidebar.cjs.js +222 -0
- package/dist/Sidebar.js +195 -0
- package/package.json +149 -0
- package/src/translations/en.json +244 -0
- package/types/BrowserSupport.d.ts +20 -0
- package/types/Columns.d.ts +22 -0
- package/types/CustomDomain.d.ts +7 -0
- package/types/DateRangeFilter.d.ts +17 -0
- package/types/EmailPreview.d.ts +11 -0
- package/types/ErrorPage.d.ts +8 -0
- package/types/IpRestriction.d.ts +5 -0
- package/types/KeyboardShortcuts.d.ts +21 -0
- package/types/LoginPage.d.ts +12 -0
- package/types/NeetoWidget.d.ts +17 -0
- package/types/PublishBlock.d.ts +20 -0
- package/types/Schedule.d.ts +15 -0
- package/types/ShareViaLink.d.ts +17 -0
- package/types/Sidebar.d.ts +28 -0
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var pure = require('@bigbinary/neeto-commons-frontend/pure');
|
|
5
|
+
var utils = require('@bigbinary/neeto-commons-frontend/utils');
|
|
6
|
+
var neetoIcons = require('@bigbinary/neeto-icons');
|
|
7
|
+
var ProductLogos = require('@bigbinary/neeto-icons/logos');
|
|
8
|
+
var KeyboardShortcuts = require('@bigbinary/neeto-molecules/KeyboardShortcuts');
|
|
9
|
+
var layouts = require('@bigbinary/neetoui/layouts');
|
|
10
|
+
var i18next = require('i18next');
|
|
11
|
+
var ramda = require('ramda');
|
|
12
|
+
var reactRouterDom = require('react-router-dom');
|
|
13
|
+
|
|
14
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
15
|
+
|
|
16
|
+
function _interopNamespace(e) {
|
|
17
|
+
if (e && e.__esModule) return e;
|
|
18
|
+
var n = Object.create(null);
|
|
19
|
+
if (e) {
|
|
20
|
+
Object.keys(e).forEach(function (k) {
|
|
21
|
+
if (k !== 'default') {
|
|
22
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
23
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
24
|
+
enumerable: true,
|
|
25
|
+
get: function () { return e[k]; }
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
n["default"] = e;
|
|
31
|
+
return Object.freeze(n);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
35
|
+
var ProductLogos__namespace = /*#__PURE__*/_interopNamespace(ProductLogos);
|
|
36
|
+
var KeyboardShortcuts__default = /*#__PURE__*/_interopDefaultLegacy(KeyboardShortcuts);
|
|
37
|
+
var i18next__default = /*#__PURE__*/_interopDefaultLegacy(i18next);
|
|
38
|
+
|
|
39
|
+
function _arrayWithHoles(arr) {
|
|
40
|
+
if (Array.isArray(arr)) return arr;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function _iterableToArrayLimit(arr, i) {
|
|
44
|
+
var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"];
|
|
45
|
+
if (null != _i) {
|
|
46
|
+
var _s,
|
|
47
|
+
_e,
|
|
48
|
+
_x,
|
|
49
|
+
_r,
|
|
50
|
+
_arr = [],
|
|
51
|
+
_n = !0,
|
|
52
|
+
_d = !1;
|
|
53
|
+
try {
|
|
54
|
+
if (_x = (_i = _i.call(arr)).next, 0 === i) {
|
|
55
|
+
if (Object(_i) !== _i) return;
|
|
56
|
+
_n = !1;
|
|
57
|
+
} else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);
|
|
58
|
+
} catch (err) {
|
|
59
|
+
_d = !0, _e = err;
|
|
60
|
+
} finally {
|
|
61
|
+
try {
|
|
62
|
+
if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return;
|
|
63
|
+
} finally {
|
|
64
|
+
if (_d) throw _e;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return _arr;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function _arrayLikeToArray(arr, len) {
|
|
72
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
73
|
+
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
|
74
|
+
return arr2;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function _unsupportedIterableToArray(o, minLen) {
|
|
78
|
+
if (!o) return;
|
|
79
|
+
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
80
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
81
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
82
|
+
if (n === "Map" || n === "Set") return Array.from(o);
|
|
83
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function _nonIterableRest() {
|
|
87
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function _slicedToArray(arr, i) {
|
|
91
|
+
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
var MY_PROFILE_URL = "/auth/profile/edit";
|
|
95
|
+
var MY_ORGANIZATION_URL = "/auth/organization/edit";
|
|
96
|
+
var CHANGELOG_WIDGET_TRIGGER_ID = "neetochangelog-trigger";
|
|
97
|
+
var PRODUCT_LOGO_WIDTH = 40;
|
|
98
|
+
var PRODUCT_LOGO_HEIGHT = 40;
|
|
99
|
+
|
|
100
|
+
var getTopLinks = function getTopLinks() {
|
|
101
|
+
var topLinks = [{
|
|
102
|
+
label: i18next__default["default"].t("neetoMolecules.sidebar.myProfile"),
|
|
103
|
+
icon: neetoIcons.User,
|
|
104
|
+
onClick: function onClick() {
|
|
105
|
+
return window.open(MY_PROFILE_URL, "_blank");
|
|
106
|
+
},
|
|
107
|
+
"data-cy": "my-profile-button"
|
|
108
|
+
}];
|
|
109
|
+
return globalProps.isOwner ? topLinks.concat({
|
|
110
|
+
label: i18next__default["default"].t("neetoMolecules.sidebar.myOrganization"),
|
|
111
|
+
icon: neetoIcons.Settings,
|
|
112
|
+
onClick: function onClick() {
|
|
113
|
+
return window.open(MY_ORGANIZATION_URL, "_blank");
|
|
114
|
+
},
|
|
115
|
+
"data-cy": "profile-organization-settings-button"
|
|
116
|
+
}) : topLinks;
|
|
117
|
+
};
|
|
118
|
+
var convertAppNameToLogoName = function convertAppNameToLogoName(appName) {
|
|
119
|
+
return "Neeto".concat(pure.capitalize(appName.substr(5).toLowerCase()));
|
|
120
|
+
};
|
|
121
|
+
var buildProductLogo = function buildProductLogo() {
|
|
122
|
+
var logoName = convertAppNameToLogoName(globalProps.appName);
|
|
123
|
+
var ProductLogo = ProductLogos__namespace[logoName];
|
|
124
|
+
if (!ProductLogo) {
|
|
125
|
+
return {};
|
|
126
|
+
}
|
|
127
|
+
return {
|
|
128
|
+
logo: /*#__PURE__*/React__default["default"].createElement(ProductLogo, {
|
|
129
|
+
height: PRODUCT_LOGO_HEIGHT,
|
|
130
|
+
width: PRODUCT_LOGO_WIDTH
|
|
131
|
+
})
|
|
132
|
+
};
|
|
133
|
+
};
|
|
134
|
+
var Sidebar = function Sidebar(_ref) {
|
|
135
|
+
var navLinks = _ref.navLinks,
|
|
136
|
+
appName = _ref.appName,
|
|
137
|
+
_ref$profileInfoOverr = _ref.profileInfoOverrides,
|
|
138
|
+
profileInfoOverrides = _ref$profileInfoOverr === void 0 ? {} : _ref$profileInfoOverr,
|
|
139
|
+
_ref$organizationInfo = _ref.organizationInfoOverrides,
|
|
140
|
+
organizationInfoOverrides = _ref$organizationInfo === void 0 ? {} : _ref$organizationInfo,
|
|
141
|
+
_ref$extraTopLinks = _ref.extraTopLinks,
|
|
142
|
+
extraTopLinks = _ref$extraTopLinks === void 0 ? [] : _ref$extraTopLinks,
|
|
143
|
+
_ref$showAppSwitcher = _ref.showAppSwitcher,
|
|
144
|
+
showAppSwitcher = _ref$showAppSwitcher === void 0 ? true : _ref$showAppSwitcher;
|
|
145
|
+
var _useState = React.useState(false),
|
|
146
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
147
|
+
isAppSwitcherOpen = _useState2[0],
|
|
148
|
+
setIsAppSwitcherOpen = _useState2[1];
|
|
149
|
+
var location = reactRouterDom.useLocation();
|
|
150
|
+
var _KeyboardShortcuts$us = KeyboardShortcuts__default["default"].usePaneState(),
|
|
151
|
+
_KeyboardShortcuts$us2 = _slicedToArray(_KeyboardShortcuts$us, 2),
|
|
152
|
+
setIsOpen = _KeyboardShortcuts$us2[1];
|
|
153
|
+
React.useEffect(function () {
|
|
154
|
+
isAppSwitcherOpen && setIsAppSwitcherOpen(false);
|
|
155
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
156
|
+
}, [location]);
|
|
157
|
+
var handleLogout = function handleLogout() {
|
|
158
|
+
utils.resetAuthTokens();
|
|
159
|
+
window.location.href = "/logout";
|
|
160
|
+
};
|
|
161
|
+
var openChatWidget = function openChatWidget() {
|
|
162
|
+
var _window$NeetoChat, _window$NeetoChat$con, _window$NeetoChat2, _window$NeetoChat2$co;
|
|
163
|
+
(_window$NeetoChat = window.NeetoChat) === null || _window$NeetoChat === void 0 ? void 0 : (_window$NeetoChat$con = _window$NeetoChat.contextualHelp) === null || _window$NeetoChat$con === void 0 ? void 0 : _window$NeetoChat$con.maximizeWidget();
|
|
164
|
+
(_window$NeetoChat2 = window.NeetoChat) === null || _window$NeetoChat2 === void 0 ? void 0 : (_window$NeetoChat2$co = _window$NeetoChat2.contextualHelp) === null || _window$NeetoChat2$co === void 0 ? void 0 : _window$NeetoChat2$co.openWidget();
|
|
165
|
+
};
|
|
166
|
+
var profileInfo = ramda.mergeLeft(profileInfoOverrides, {
|
|
167
|
+
name: "".concat(globalProps.user.firstName, " ").concat(globalProps.user.lastName),
|
|
168
|
+
imageUrl: globalProps.user.profileImageUrl,
|
|
169
|
+
email: globalProps.user.email || globalProps.user.phoneNumber,
|
|
170
|
+
topLinks: extraTopLinks.concat(getTopLinks()),
|
|
171
|
+
bottomLinks: [{
|
|
172
|
+
icon: neetoIcons.ChatBubble,
|
|
173
|
+
label: i18next__default["default"].t("neetoMolecules.sidebar.livechat"),
|
|
174
|
+
onClick: openChatWidget,
|
|
175
|
+
"data-cy": "profile-livechat-button"
|
|
176
|
+
}, {
|
|
177
|
+
icon: neetoIcons.Keyboard,
|
|
178
|
+
label: i18next__default["default"].t("neetoMolecules.sidebar.keyboardShortcuts"),
|
|
179
|
+
onClick: function onClick() {
|
|
180
|
+
return setIsOpen(true);
|
|
181
|
+
},
|
|
182
|
+
"data-cy": "profile-keyboard-shortcuts-button"
|
|
183
|
+
}, {
|
|
184
|
+
icon: neetoIcons.LeftArrow,
|
|
185
|
+
label: i18next__default["default"].t("neetoMolecules.sidebar.logout"),
|
|
186
|
+
onClick: handleLogout,
|
|
187
|
+
"data-cy": "profile-logout-button"
|
|
188
|
+
}],
|
|
189
|
+
helpProps: {
|
|
190
|
+
icon: neetoIcons.Help,
|
|
191
|
+
label: i18next__default["default"].t("neetoMolecules.sidebar.help"),
|
|
192
|
+
onClick: function onClick() {
|
|
193
|
+
return window.open("https://help.neeto".concat(ramda.toLower(appName), ".com/"), "_blank");
|
|
194
|
+
}
|
|
195
|
+
},
|
|
196
|
+
changelogProps: {
|
|
197
|
+
id: CHANGELOG_WIDGET_TRIGGER_ID
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
var organizationInfo = ramda.mergeLeft(organizationInfoOverrides, ramda.mergeLeft(globalProps.organization, buildProductLogo()));
|
|
201
|
+
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(layouts.Sidebar, {
|
|
202
|
+
isCollapsed: true,
|
|
203
|
+
appName: "neeto".concat(pure.capitalize(appName)),
|
|
204
|
+
navLinks: navLinks,
|
|
205
|
+
organizationInfo: organizationInfo,
|
|
206
|
+
profileInfo: profileInfo,
|
|
207
|
+
showAppSwitcher: showAppSwitcher,
|
|
208
|
+
onAppSwitcherToggle: function onAppSwitcherToggle() {
|
|
209
|
+
return setIsAppSwitcherOpen(ramda.not);
|
|
210
|
+
}
|
|
211
|
+
}), showAppSwitcher && /*#__PURE__*/React__default["default"].createElement(layouts.AppSwitcher, {
|
|
212
|
+
activeApp: pure.capitalize(appName),
|
|
213
|
+
environment: process.env.RAILS_ENV,
|
|
214
|
+
isOpen: isAppSwitcherOpen,
|
|
215
|
+
neetoApps: globalProps.neetoApps,
|
|
216
|
+
onClose: function onClose() {
|
|
217
|
+
return setIsAppSwitcherOpen(false);
|
|
218
|
+
}
|
|
219
|
+
}));
|
|
220
|
+
};
|
|
221
|
+
|
|
222
|
+
module.exports = Sidebar;
|
package/dist/Sidebar.js
ADDED
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import React, { useState, useEffect } from 'react';
|
|
2
|
+
import { capitalize } from '@bigbinary/neeto-commons-frontend/pure';
|
|
3
|
+
import { resetAuthTokens } from '@bigbinary/neeto-commons-frontend/utils';
|
|
4
|
+
import { ChatBubble, Keyboard, LeftArrow, Help, User, Settings } from '@bigbinary/neeto-icons';
|
|
5
|
+
import * as ProductLogos from '@bigbinary/neeto-icons/logos';
|
|
6
|
+
import KeyboardShortcuts from '@bigbinary/neeto-molecules/KeyboardShortcuts';
|
|
7
|
+
import { Sidebar as Sidebar$1, AppSwitcher } from '@bigbinary/neetoui/layouts';
|
|
8
|
+
import i18next from 'i18next';
|
|
9
|
+
import { mergeLeft, toLower, not } from 'ramda';
|
|
10
|
+
import { useLocation } from 'react-router-dom';
|
|
11
|
+
|
|
12
|
+
function _arrayWithHoles(arr) {
|
|
13
|
+
if (Array.isArray(arr)) return arr;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function _iterableToArrayLimit(arr, i) {
|
|
17
|
+
var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"];
|
|
18
|
+
if (null != _i) {
|
|
19
|
+
var _s,
|
|
20
|
+
_e,
|
|
21
|
+
_x,
|
|
22
|
+
_r,
|
|
23
|
+
_arr = [],
|
|
24
|
+
_n = !0,
|
|
25
|
+
_d = !1;
|
|
26
|
+
try {
|
|
27
|
+
if (_x = (_i = _i.call(arr)).next, 0 === i) {
|
|
28
|
+
if (Object(_i) !== _i) return;
|
|
29
|
+
_n = !1;
|
|
30
|
+
} else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);
|
|
31
|
+
} catch (err) {
|
|
32
|
+
_d = !0, _e = err;
|
|
33
|
+
} finally {
|
|
34
|
+
try {
|
|
35
|
+
if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return;
|
|
36
|
+
} finally {
|
|
37
|
+
if (_d) throw _e;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return _arr;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function _arrayLikeToArray(arr, len) {
|
|
45
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
46
|
+
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
|
47
|
+
return arr2;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function _unsupportedIterableToArray(o, minLen) {
|
|
51
|
+
if (!o) return;
|
|
52
|
+
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
53
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
54
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
55
|
+
if (n === "Map" || n === "Set") return Array.from(o);
|
|
56
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function _nonIterableRest() {
|
|
60
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function _slicedToArray(arr, i) {
|
|
64
|
+
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
var MY_PROFILE_URL = "/auth/profile/edit";
|
|
68
|
+
var MY_ORGANIZATION_URL = "/auth/organization/edit";
|
|
69
|
+
var CHANGELOG_WIDGET_TRIGGER_ID = "neetochangelog-trigger";
|
|
70
|
+
var PRODUCT_LOGO_WIDTH = 40;
|
|
71
|
+
var PRODUCT_LOGO_HEIGHT = 40;
|
|
72
|
+
|
|
73
|
+
var getTopLinks = function getTopLinks() {
|
|
74
|
+
var topLinks = [{
|
|
75
|
+
label: i18next.t("neetoMolecules.sidebar.myProfile"),
|
|
76
|
+
icon: User,
|
|
77
|
+
onClick: function onClick() {
|
|
78
|
+
return window.open(MY_PROFILE_URL, "_blank");
|
|
79
|
+
},
|
|
80
|
+
"data-cy": "my-profile-button"
|
|
81
|
+
}];
|
|
82
|
+
return globalProps.isOwner ? topLinks.concat({
|
|
83
|
+
label: i18next.t("neetoMolecules.sidebar.myOrganization"),
|
|
84
|
+
icon: Settings,
|
|
85
|
+
onClick: function onClick() {
|
|
86
|
+
return window.open(MY_ORGANIZATION_URL, "_blank");
|
|
87
|
+
},
|
|
88
|
+
"data-cy": "profile-organization-settings-button"
|
|
89
|
+
}) : topLinks;
|
|
90
|
+
};
|
|
91
|
+
var convertAppNameToLogoName = function convertAppNameToLogoName(appName) {
|
|
92
|
+
return "Neeto".concat(capitalize(appName.substr(5).toLowerCase()));
|
|
93
|
+
};
|
|
94
|
+
var buildProductLogo = function buildProductLogo() {
|
|
95
|
+
var logoName = convertAppNameToLogoName(globalProps.appName);
|
|
96
|
+
var ProductLogo = ProductLogos[logoName];
|
|
97
|
+
if (!ProductLogo) {
|
|
98
|
+
return {};
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
logo: /*#__PURE__*/React.createElement(ProductLogo, {
|
|
102
|
+
height: PRODUCT_LOGO_HEIGHT,
|
|
103
|
+
width: PRODUCT_LOGO_WIDTH
|
|
104
|
+
})
|
|
105
|
+
};
|
|
106
|
+
};
|
|
107
|
+
var Sidebar = function Sidebar(_ref) {
|
|
108
|
+
var navLinks = _ref.navLinks,
|
|
109
|
+
appName = _ref.appName,
|
|
110
|
+
_ref$profileInfoOverr = _ref.profileInfoOverrides,
|
|
111
|
+
profileInfoOverrides = _ref$profileInfoOverr === void 0 ? {} : _ref$profileInfoOverr,
|
|
112
|
+
_ref$organizationInfo = _ref.organizationInfoOverrides,
|
|
113
|
+
organizationInfoOverrides = _ref$organizationInfo === void 0 ? {} : _ref$organizationInfo,
|
|
114
|
+
_ref$extraTopLinks = _ref.extraTopLinks,
|
|
115
|
+
extraTopLinks = _ref$extraTopLinks === void 0 ? [] : _ref$extraTopLinks,
|
|
116
|
+
_ref$showAppSwitcher = _ref.showAppSwitcher,
|
|
117
|
+
showAppSwitcher = _ref$showAppSwitcher === void 0 ? true : _ref$showAppSwitcher;
|
|
118
|
+
var _useState = useState(false),
|
|
119
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
120
|
+
isAppSwitcherOpen = _useState2[0],
|
|
121
|
+
setIsAppSwitcherOpen = _useState2[1];
|
|
122
|
+
var location = useLocation();
|
|
123
|
+
var _KeyboardShortcuts$us = KeyboardShortcuts.usePaneState(),
|
|
124
|
+
_KeyboardShortcuts$us2 = _slicedToArray(_KeyboardShortcuts$us, 2),
|
|
125
|
+
setIsOpen = _KeyboardShortcuts$us2[1];
|
|
126
|
+
useEffect(function () {
|
|
127
|
+
isAppSwitcherOpen && setIsAppSwitcherOpen(false);
|
|
128
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
129
|
+
}, [location]);
|
|
130
|
+
var handleLogout = function handleLogout() {
|
|
131
|
+
resetAuthTokens();
|
|
132
|
+
window.location.href = "/logout";
|
|
133
|
+
};
|
|
134
|
+
var openChatWidget = function openChatWidget() {
|
|
135
|
+
var _window$NeetoChat, _window$NeetoChat$con, _window$NeetoChat2, _window$NeetoChat2$co;
|
|
136
|
+
(_window$NeetoChat = window.NeetoChat) === null || _window$NeetoChat === void 0 ? void 0 : (_window$NeetoChat$con = _window$NeetoChat.contextualHelp) === null || _window$NeetoChat$con === void 0 ? void 0 : _window$NeetoChat$con.maximizeWidget();
|
|
137
|
+
(_window$NeetoChat2 = window.NeetoChat) === null || _window$NeetoChat2 === void 0 ? void 0 : (_window$NeetoChat2$co = _window$NeetoChat2.contextualHelp) === null || _window$NeetoChat2$co === void 0 ? void 0 : _window$NeetoChat2$co.openWidget();
|
|
138
|
+
};
|
|
139
|
+
var profileInfo = mergeLeft(profileInfoOverrides, {
|
|
140
|
+
name: "".concat(globalProps.user.firstName, " ").concat(globalProps.user.lastName),
|
|
141
|
+
imageUrl: globalProps.user.profileImageUrl,
|
|
142
|
+
email: globalProps.user.email || globalProps.user.phoneNumber,
|
|
143
|
+
topLinks: extraTopLinks.concat(getTopLinks()),
|
|
144
|
+
bottomLinks: [{
|
|
145
|
+
icon: ChatBubble,
|
|
146
|
+
label: i18next.t("neetoMolecules.sidebar.livechat"),
|
|
147
|
+
onClick: openChatWidget,
|
|
148
|
+
"data-cy": "profile-livechat-button"
|
|
149
|
+
}, {
|
|
150
|
+
icon: Keyboard,
|
|
151
|
+
label: i18next.t("neetoMolecules.sidebar.keyboardShortcuts"),
|
|
152
|
+
onClick: function onClick() {
|
|
153
|
+
return setIsOpen(true);
|
|
154
|
+
},
|
|
155
|
+
"data-cy": "profile-keyboard-shortcuts-button"
|
|
156
|
+
}, {
|
|
157
|
+
icon: LeftArrow,
|
|
158
|
+
label: i18next.t("neetoMolecules.sidebar.logout"),
|
|
159
|
+
onClick: handleLogout,
|
|
160
|
+
"data-cy": "profile-logout-button"
|
|
161
|
+
}],
|
|
162
|
+
helpProps: {
|
|
163
|
+
icon: Help,
|
|
164
|
+
label: i18next.t("neetoMolecules.sidebar.help"),
|
|
165
|
+
onClick: function onClick() {
|
|
166
|
+
return window.open("https://help.neeto".concat(toLower(appName), ".com/"), "_blank");
|
|
167
|
+
}
|
|
168
|
+
},
|
|
169
|
+
changelogProps: {
|
|
170
|
+
id: CHANGELOG_WIDGET_TRIGGER_ID
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
var organizationInfo = mergeLeft(organizationInfoOverrides, mergeLeft(globalProps.organization, buildProductLogo()));
|
|
174
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Sidebar$1, {
|
|
175
|
+
isCollapsed: true,
|
|
176
|
+
appName: "neeto".concat(capitalize(appName)),
|
|
177
|
+
navLinks: navLinks,
|
|
178
|
+
organizationInfo: organizationInfo,
|
|
179
|
+
profileInfo: profileInfo,
|
|
180
|
+
showAppSwitcher: showAppSwitcher,
|
|
181
|
+
onAppSwitcherToggle: function onAppSwitcherToggle() {
|
|
182
|
+
return setIsAppSwitcherOpen(not);
|
|
183
|
+
}
|
|
184
|
+
}), showAppSwitcher && /*#__PURE__*/React.createElement(AppSwitcher, {
|
|
185
|
+
activeApp: capitalize(appName),
|
|
186
|
+
environment: process.env.RAILS_ENV,
|
|
187
|
+
isOpen: isAppSwitcherOpen,
|
|
188
|
+
neetoApps: globalProps.neetoApps,
|
|
189
|
+
onClose: function onClose() {
|
|
190
|
+
return setIsAppSwitcherOpen(false);
|
|
191
|
+
}
|
|
192
|
+
}));
|
|
193
|
+
};
|
|
194
|
+
|
|
195
|
+
export { Sidebar as default };
|
package/package.json
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@bigbinary/neeto-molecules",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "A package of reusable molecular components for neeto products.",
|
|
5
|
+
"repository": "git@github.com:bigbinary/neeto-commons-frontend.git",
|
|
6
|
+
"author": "Amaljith K <amaljith.k@bigbinary.com>",
|
|
7
|
+
"license": "apache-2.0",
|
|
8
|
+
"scripts": {
|
|
9
|
+
"prepare": "husky install",
|
|
10
|
+
"sync_with_wheel": "./.scripts/sync_with_wheel.sh",
|
|
11
|
+
"test": "TZ=UTC jest",
|
|
12
|
+
"build": "NODE_ENV=production rollup -c rollup.config.js",
|
|
13
|
+
"watch": "rollup -c rollup.config.js --watch",
|
|
14
|
+
"storybook": "node .storybook/db & start-storybook -p 6006"
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist",
|
|
18
|
+
"types",
|
|
19
|
+
"src/translations"
|
|
20
|
+
],
|
|
21
|
+
"lint-staged": {
|
|
22
|
+
"**/*.{js,jsx,json}": [
|
|
23
|
+
".scripts/fix-lints.sh"
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
"exports": {
|
|
27
|
+
"./*": {
|
|
28
|
+
"import": "./dist/*.js",
|
|
29
|
+
"require": "./dist/*.cjs.js",
|
|
30
|
+
"types": "./types/*.d.ts"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"@babel/eslint-parser": "^7.18.2",
|
|
35
|
+
"@babel/plugin-transform-runtime": "^7.18.5",
|
|
36
|
+
"@babel/preset-env": "^7.17.10",
|
|
37
|
+
"@babel/preset-react": "^7.16.7",
|
|
38
|
+
"@bigbinary/neeto-commons-frontend": "^2.0.39",
|
|
39
|
+
"@bigbinary/neeto-editor": "^1.23.1",
|
|
40
|
+
"@bigbinary/neeto-icons": "^1.9.12",
|
|
41
|
+
"@bigbinary/neetoui": "4.3.3-cjs",
|
|
42
|
+
"@honeybadger-io/react": "2.0.1",
|
|
43
|
+
"@rollup/plugin-alias": "^3.1.9",
|
|
44
|
+
"@rollup/plugin-babel": "^5.3.1",
|
|
45
|
+
"@rollup/plugin-commonjs": "^22.0.0",
|
|
46
|
+
"@rollup/plugin-json": "^4.1.0",
|
|
47
|
+
"@rollup/plugin-node-resolve": "^13.3.0",
|
|
48
|
+
"@storybook/addon-actions": "^6.5.16",
|
|
49
|
+
"@storybook/addon-essentials": "6.5.16",
|
|
50
|
+
"@storybook/addon-postcss": "^2.0.0",
|
|
51
|
+
"@storybook/builder-webpack5": "6.5.16",
|
|
52
|
+
"@storybook/manager-webpack5": "6.5.16",
|
|
53
|
+
"@storybook/preset-scss": "1.0.3",
|
|
54
|
+
"@storybook/react": "6.5.16",
|
|
55
|
+
"@svgr/rollup": "^6.2.1",
|
|
56
|
+
"@svgr/webpack": "^6.5.1",
|
|
57
|
+
"@testing-library/jest-dom": "5.16.2",
|
|
58
|
+
"@testing-library/react": "12.1.3",
|
|
59
|
+
"@testing-library/react-hooks": "^8.0.0",
|
|
60
|
+
"@testing-library/user-event": "13.5.0",
|
|
61
|
+
"antd": "4.24.3",
|
|
62
|
+
"autoprefixer": "^10.4.13",
|
|
63
|
+
"axios": "^0.27.2",
|
|
64
|
+
"babel-jest": "27.0.6",
|
|
65
|
+
"babel-plugin-transform-react-remove-prop-types": "^0.4.24",
|
|
66
|
+
"css-loader": "4.3.0",
|
|
67
|
+
"cypress": "11.2.0",
|
|
68
|
+
"dayjs": "1.11.1",
|
|
69
|
+
"eslint": "^8.15.0",
|
|
70
|
+
"eslint-config-prettier": "^8.5.0",
|
|
71
|
+
"eslint-plugin-cypress": "2.12.1",
|
|
72
|
+
"eslint-plugin-import": "^2.26.0",
|
|
73
|
+
"eslint-plugin-jam3": "^0.2.3",
|
|
74
|
+
"eslint-plugin-json": "^3.1.0",
|
|
75
|
+
"eslint-plugin-neeto": "^1.0.8",
|
|
76
|
+
"eslint-plugin-prettier": "^4.0.0",
|
|
77
|
+
"eslint-plugin-promise": "^6.0.0",
|
|
78
|
+
"eslint-plugin-react": "^7.29.4",
|
|
79
|
+
"eslint-plugin-react-hooks": "4.2.1-alpha-13455d26d-20211104",
|
|
80
|
+
"eslint-plugin-unused-imports": "^2.0.0",
|
|
81
|
+
"formik": "^2.2.9",
|
|
82
|
+
"husky": "^7.0.4",
|
|
83
|
+
"i18next": "21.7.0",
|
|
84
|
+
"ip-num": "^1.5.0",
|
|
85
|
+
"jest": "27.5.1",
|
|
86
|
+
"js-logger": "^1.6.1",
|
|
87
|
+
"json-server": "0.17.1",
|
|
88
|
+
"lint-staged": "^12.3.7",
|
|
89
|
+
"mixpanel-browser": "^2.45.0",
|
|
90
|
+
"mousetrap": "^1.6.5",
|
|
91
|
+
"mousetrap-global-bind": "^1.1.0",
|
|
92
|
+
"platform": "1.3.6",
|
|
93
|
+
"prettier": "^2.6.2",
|
|
94
|
+
"qrcode.react": "^3.1.0",
|
|
95
|
+
"qs": "^6.11.0",
|
|
96
|
+
"ramda": "^0.28.0",
|
|
97
|
+
"react": "^17.0.2",
|
|
98
|
+
"react-dom": "17.0.2",
|
|
99
|
+
"react-helmet": "^6.1.0",
|
|
100
|
+
"react-i18next": "11.16.8",
|
|
101
|
+
"react-query": "^3.39.2",
|
|
102
|
+
"react-router-dom": "^5.2.0",
|
|
103
|
+
"react-syntax-highlighter": "^15.5.0",
|
|
104
|
+
"react-toastify": "^9.0.8",
|
|
105
|
+
"rollup": "^2.76.0",
|
|
106
|
+
"rollup-plugin-analyzer": "^4.0.0",
|
|
107
|
+
"rollup-plugin-cleaner": "^1.0.0",
|
|
108
|
+
"rollup-plugin-peer-deps-external": "^2.2.4",
|
|
109
|
+
"rollup-plugin-styles": "^4.0.0",
|
|
110
|
+
"sass": "^1.58.1",
|
|
111
|
+
"sass-loader": "10.0.2",
|
|
112
|
+
"tailwindcss": "npm:@tailwindcss/postcss7-compat",
|
|
113
|
+
"yup": "^0.32.11",
|
|
114
|
+
"zustand": "^4.1.2"
|
|
115
|
+
},
|
|
116
|
+
"dependencies": {},
|
|
117
|
+
"peerDependencies": {
|
|
118
|
+
"@bigbinary/neeto-commons-frontend": "^2.0.39",
|
|
119
|
+
"@bigbinary/neeto-icons": "^1.9.2",
|
|
120
|
+
"@bigbinary/neeto-molecules": "^1.0.0",
|
|
121
|
+
"@bigbinary/neetoui": "^4.3.3",
|
|
122
|
+
"@honeybadger-io/react": "2.0.1",
|
|
123
|
+
"@svgr/webpack": "^6.5.1",
|
|
124
|
+
"antd": "4.24.3",
|
|
125
|
+
"autoprefixer": "^10.4.13",
|
|
126
|
+
"axios": "^0.27.2",
|
|
127
|
+
"cypress": "11.2.0",
|
|
128
|
+
"dayjs": "1.11.1",
|
|
129
|
+
"dotenv-webpack": "^8.0.1",
|
|
130
|
+
"formik": "^2.2.9",
|
|
131
|
+
"i18next": "21.7.0",
|
|
132
|
+
"js-logger": "^1.6.1",
|
|
133
|
+
"mixpanel-browser": "^2.45.0",
|
|
134
|
+
"postcss-flexbugs-fixes": "^5.0.2",
|
|
135
|
+
"postcss-import": "^15.1.0",
|
|
136
|
+
"postcss-preset-env": "^7.8.3",
|
|
137
|
+
"ramda": "^0.28.0",
|
|
138
|
+
"react": "^17.0.2",
|
|
139
|
+
"react-helmet": "^6.1.0",
|
|
140
|
+
"react-i18next": "11.16.8",
|
|
141
|
+
"react-query": "^3.39.2",
|
|
142
|
+
"react-router-dom": "^5.2.0",
|
|
143
|
+
"react-toastify": "^9.0.8",
|
|
144
|
+
"shakapacker": "^6.5.5",
|
|
145
|
+
"tailwindcss": "^3.2.4",
|
|
146
|
+
"webpack": "^5.75.0",
|
|
147
|
+
"yup": "^0.32.11"
|
|
148
|
+
}
|
|
149
|
+
}
|