@bigbinary/neeto-molecules 3.15.25 → 3.15.26
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/cjs/ShareViaLink.js
CHANGED
|
@@ -2,15 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
var neetoCist = require('@bigbinary/neeto-cist');
|
|
4
4
|
var ramda = require('ramda');
|
|
5
|
+
var classnames = require('classnames');
|
|
6
|
+
var Typography = require('@bigbinary/neetoui/Typography');
|
|
7
|
+
var reactI18next = require('react-i18next');
|
|
8
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
5
9
|
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
6
10
|
var React = require('react');
|
|
7
11
|
var ExternalLink = require('@bigbinary/neeto-icons/ExternalLink');
|
|
8
12
|
var Button = require('@bigbinary/neetoui/Button');
|
|
9
|
-
var reactI18next = require('react-i18next');
|
|
10
13
|
var CopyToClipboardButton = require('./CopyToClipboardButton.js');
|
|
11
14
|
var MoreDropdown = require('./MoreDropdown.js');
|
|
12
15
|
var formik = require('formik');
|
|
13
|
-
var Typography = require('@bigbinary/neetoui/Typography');
|
|
14
16
|
var Pane = require('@bigbinary/neetoui/Pane');
|
|
15
17
|
var Input = require('@bigbinary/neetoui/formik/Input');
|
|
16
18
|
var ActionBlock = require('@bigbinary/neetoui/formik/ActionBlock');
|
|
@@ -21,11 +23,12 @@ var Twitter = require('@bigbinary/neeto-icons/Twitter');
|
|
|
21
23
|
var yup = require('yup');
|
|
22
24
|
var general = require('@bigbinary/neeto-commons-frontend/utils/general');
|
|
23
25
|
var injectCss = require('./inject-css-vQvjPR2x.js');
|
|
24
|
-
var
|
|
26
|
+
var utils = require('@bigbinary/neeto-commons-frontend/utils');
|
|
25
27
|
var Modal = require('@bigbinary/neetoui/Modal');
|
|
26
28
|
var Input$1 = require('@bigbinary/neetoui/Input');
|
|
29
|
+
var Select = require('@bigbinary/neetoui/Select');
|
|
30
|
+
var DatePicker = require('@bigbinary/neetoui/DatePicker');
|
|
27
31
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
28
|
-
var classnames = require('classnames');
|
|
29
32
|
var reactRouterDom = require('react-router-dom');
|
|
30
33
|
require('@babel/runtime/helpers/objectWithoutProperties');
|
|
31
34
|
require('@bigbinary/neeto-icons/Copy');
|
|
@@ -54,6 +57,32 @@ function _interopNamespaceDefault(e) {
|
|
|
54
57
|
|
|
55
58
|
var yup__namespace = /*#__PURE__*/_interopNamespaceDefault(yup);
|
|
56
59
|
|
|
60
|
+
var ExpiryNotice = function ExpiryNotice(_ref) {
|
|
61
|
+
var expiryConfiguration = _ref.expiryConfiguration;
|
|
62
|
+
var _useTranslation = reactI18next.useTranslation(),
|
|
63
|
+
t = _useTranslation.t;
|
|
64
|
+
var daysBeforeExpiry = expiryConfiguration.daysBeforeExpiry;
|
|
65
|
+
var notice = t("neetoMolecules.shareViaLink.expiryNotice.daysRemaining", {
|
|
66
|
+
count: daysBeforeExpiry
|
|
67
|
+
});
|
|
68
|
+
if (daysBeforeExpiry < 1) {
|
|
69
|
+
notice = t("neetoMolecules.shareViaLink.expiryNotice.expiresToday");
|
|
70
|
+
}
|
|
71
|
+
if (daysBeforeExpiry <= 0) {
|
|
72
|
+
notice = t("neetoMolecules.shareViaLink.expiryNotice.expired");
|
|
73
|
+
}
|
|
74
|
+
return /*#__PURE__*/jsxRuntime.jsx(Typography, {
|
|
75
|
+
"data-testid": "expiry-notice",
|
|
76
|
+
lineHeight: "normal",
|
|
77
|
+
style: "body2",
|
|
78
|
+
className: classnames({
|
|
79
|
+
"neeto-ui-text-error-800": daysBeforeExpiry <= 1,
|
|
80
|
+
"neeto-ui-text-gray-700": daysBeforeExpiry > 1
|
|
81
|
+
}),
|
|
82
|
+
children: notice
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
|
|
57
86
|
var facebookShareLink = function facebookShareLink(_ref) {
|
|
58
87
|
var url = _ref.url;
|
|
59
88
|
return general.buildUrl("https://www.facebook.com/sharer/sharer.php", {
|
|
@@ -227,14 +256,42 @@ var EditURL = function EditURL(_ref) {
|
|
|
227
256
|
};
|
|
228
257
|
|
|
229
258
|
var RegenerateURL = function RegenerateURL(_ref) {
|
|
259
|
+
var _regenerateConfig$exp, _regenerateConfig$exp2, _globalProps$user$dat, _globalProps;
|
|
230
260
|
var isOpen = _ref.isOpen,
|
|
231
261
|
onClose = _ref.onClose,
|
|
232
262
|
url = _ref.url,
|
|
233
263
|
isLoading = _ref.isLoading,
|
|
234
|
-
handleRegenerate = _ref.handleRegenerate
|
|
264
|
+
handleRegenerate = _ref.handleRegenerate,
|
|
265
|
+
_ref$regenerateConfig = _ref.regenerateConfig,
|
|
266
|
+
regenerateConfig = _ref$regenerateConfig === void 0 ? {
|
|
267
|
+
expiresInOptions: []
|
|
268
|
+
} : _ref$regenerateConfig;
|
|
235
269
|
var _useTranslation = reactI18next.useTranslation(),
|
|
236
270
|
t = _useTranslation.t;
|
|
237
271
|
var prevIsLoadingRef = React.useRef(isLoading);
|
|
272
|
+
var regenerateStrategy = neetoCist.isPresent(regenerateConfig === null || regenerateConfig === void 0 ? void 0 : regenerateConfig.expiresInOptions) ? "expiryBased" : "basic";
|
|
273
|
+
var _useState = React.useState(regenerateConfig === null || regenerateConfig === void 0 || (_regenerateConfig$exp = regenerateConfig.expiresInOptions) === null || _regenerateConfig$exp === void 0 || (_regenerateConfig$exp = _regenerateConfig$exp[0]) === null || _regenerateConfig$exp === void 0 ? void 0 : _regenerateConfig$exp.value),
|
|
274
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
275
|
+
selectedExpiresInOption = _useState2[0],
|
|
276
|
+
setSelectedExpiresInOption = _useState2[1];
|
|
277
|
+
var _useState3 = React.useState(utils.dayjs().add(10, "day").toDate()),
|
|
278
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
279
|
+
selectedExpiresOnDate = _useState4[0],
|
|
280
|
+
setSelectedExpiresOnDate = _useState4[1];
|
|
281
|
+
var isSelectedExpiresInOptionNever = selectedExpiresInOption === "never";
|
|
282
|
+
var isSelectedExpiresInOptionCustom = selectedExpiresInOption === "custom";
|
|
283
|
+
var isSelectedExpiresInOptionValidNumberOfDays = neetoCist.isPresent(selectedExpiresInOption) && !isSelectedExpiresInOptionCustom && !isSelectedExpiresInOptionNever;
|
|
284
|
+
var isValidExpiryConfig = isSelectedExpiresInOptionNever || isSelectedExpiresInOptionCustom && neetoCist.isPresent(selectedExpiresOnDate) || isSelectedExpiresInOptionValidNumberOfDays;
|
|
285
|
+
var expiryConfigPayload = isSelectedExpiresInOptionValidNumberOfDays ? {
|
|
286
|
+
expiresInDays: selectedExpiresInOption
|
|
287
|
+
} : {
|
|
288
|
+
expiresOnDate: selectedExpiresOnDate
|
|
289
|
+
};
|
|
290
|
+
var onSubmit = function onSubmit() {
|
|
291
|
+
return regenerateStrategy === "basic" || isSelectedExpiresInOptionNever ? handleRegenerate() : handleRegenerate({
|
|
292
|
+
payload: expiryConfigPayload
|
|
293
|
+
});
|
|
294
|
+
};
|
|
238
295
|
React.useEffect(function () {
|
|
239
296
|
if (prevIsLoadingRef.current && !isLoading) onClose();
|
|
240
297
|
prevIsLoadingRef.current = isLoading;
|
|
@@ -243,6 +300,7 @@ var RegenerateURL = function RegenerateURL(_ref) {
|
|
|
243
300
|
isOpen: isOpen,
|
|
244
301
|
onClose: onClose,
|
|
245
302
|
"data-testid": "regenerate-url-modal",
|
|
303
|
+
size: regenerateStrategy === "basic" ? "medium" : "large",
|
|
246
304
|
children: [/*#__PURE__*/jsxRuntime.jsx(Modal.Header, {
|
|
247
305
|
children: /*#__PURE__*/jsxRuntime.jsx(Typography, {
|
|
248
306
|
lineHeight: "normal",
|
|
@@ -253,10 +311,36 @@ var RegenerateURL = function RegenerateURL(_ref) {
|
|
|
253
311
|
}), /*#__PURE__*/jsxRuntime.jsx(Modal.Body, {
|
|
254
312
|
children: /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
255
313
|
className: "w-full space-y-6",
|
|
256
|
-
children: [/*#__PURE__*/jsxRuntime.jsx(Input$1, {
|
|
314
|
+
children: [regenerateStrategy === "basic" && /*#__PURE__*/jsxRuntime.jsx(Input$1, {
|
|
257
315
|
disabled: true,
|
|
258
316
|
label: t("neetoMolecules.shareViaLink.regenerateUrl.inputLabel"),
|
|
259
317
|
value: url
|
|
318
|
+
}), regenerateStrategy === "expiryBased" && /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
319
|
+
className: "flex flex-row gap-2",
|
|
320
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(Select, {
|
|
321
|
+
"data-testid": "expires-in-select",
|
|
322
|
+
defaultValue: (_regenerateConfig$exp2 = regenerateConfig.expiresInOptions) === null || _regenerateConfig$exp2 === void 0 ? void 0 : _regenerateConfig$exp2[0],
|
|
323
|
+
options: regenerateConfig.expiresInOptions,
|
|
324
|
+
className: classnames({
|
|
325
|
+
"w-1/2": isSelectedExpiresInOptionCustom,
|
|
326
|
+
"w-full": !isSelectedExpiresInOptionCustom
|
|
327
|
+
}),
|
|
328
|
+
label: t("neetoMolecules.shareViaLink.regenerateUrl.expiresInLabel"),
|
|
329
|
+
onChange: function onChange(option) {
|
|
330
|
+
return setSelectedExpiresInOption(option.value);
|
|
331
|
+
}
|
|
332
|
+
}), isSelectedExpiresInOptionCustom && /*#__PURE__*/jsxRuntime.jsx(DatePicker, {
|
|
333
|
+
"data-testid": "expires-on-date-picker",
|
|
334
|
+
dateFormat: (_globalProps$user$dat = (_globalProps = globalProps) === null || _globalProps === void 0 || (_globalProps = _globalProps.user) === null || _globalProps === void 0 ? void 0 : _globalProps.dateFormat) !== null && _globalProps$user$dat !== void 0 ? _globalProps$user$dat : undefined,
|
|
335
|
+
disabledDate: function disabledDate(d) {
|
|
336
|
+
return !d || d.isBefore(utils.dayjs());
|
|
337
|
+
},
|
|
338
|
+
picker: "date",
|
|
339
|
+
type: "date",
|
|
340
|
+
value: selectedExpiresOnDate,
|
|
341
|
+
label: t("neetoMolecules.shareViaLink.regenerateUrl.expiresOnLabel"),
|
|
342
|
+
onChange: setSelectedExpiresOnDate
|
|
343
|
+
})]
|
|
260
344
|
}), /*#__PURE__*/jsxRuntime.jsx(Typography, {
|
|
261
345
|
className: "neeto-ui-text-gray-700",
|
|
262
346
|
lineHeight: "normal",
|
|
@@ -270,8 +354,9 @@ var RegenerateURL = function RegenerateURL(_ref) {
|
|
|
270
354
|
"data-cy": "regenerate-url-confirm-button",
|
|
271
355
|
"data-testid": "regenerate-url-confirm-button",
|
|
272
356
|
loading: isLoading,
|
|
357
|
+
disabled: regenerateStrategy === "expiryBased" && !isValidExpiryConfig,
|
|
273
358
|
label: t("neetoMolecules.shareViaLink.regenerateUrl.submitButtonLabel"),
|
|
274
|
-
onClick:
|
|
359
|
+
onClick: onSubmit
|
|
275
360
|
}), /*#__PURE__*/jsxRuntime.jsx(Button, {
|
|
276
361
|
"data-cy": "regenerate-url-cancel-button",
|
|
277
362
|
"data-testid": "regenerate-url-cancel-button",
|
|
@@ -337,7 +422,7 @@ var Link = function Link(_ref) {
|
|
|
337
422
|
}), isDropdownEnabled && /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
338
423
|
children: [/*#__PURE__*/jsxRuntime.jsx(MoreDropdown, {
|
|
339
424
|
menuItems: [{
|
|
340
|
-
isVisible: enabledOptions.regenerate,
|
|
425
|
+
isVisible: enabledOptions.regenerate || neetoCist.isPresent(enabledOptions.regenerate),
|
|
341
426
|
"data-testid": "regenerate-url-button",
|
|
342
427
|
"data-cy": "regenerate-url-button",
|
|
343
428
|
onClick: function onClick() {
|
|
@@ -360,6 +445,7 @@ var Link = function Link(_ref) {
|
|
|
360
445
|
isLoading: isLoading,
|
|
361
446
|
url: url,
|
|
362
447
|
isOpen: isRegenerateURLModalOpen,
|
|
448
|
+
regenerateConfig: enabledOptions.regenerate,
|
|
363
449
|
onClose: function onClose() {
|
|
364
450
|
return setIsRegenerateURLModalOpen(false);
|
|
365
451
|
}
|
|
@@ -1427,7 +1513,9 @@ var ShareViaLink = function ShareViaLink(_ref) {
|
|
|
1427
1513
|
_ref$disableShareSoci = _ref.disableShareSocialMedia,
|
|
1428
1514
|
disableShareSocialMedia = _ref$disableShareSoci === void 0 ? false : _ref$disableShareSoci,
|
|
1429
1515
|
_ref$disableQRDownloa = _ref.disableQRDownload,
|
|
1430
|
-
disableQRDownload = _ref$disableQRDownloa === void 0 ? false : _ref$disableQRDownloa
|
|
1516
|
+
disableQRDownload = _ref$disableQRDownloa === void 0 ? false : _ref$disableQRDownloa,
|
|
1517
|
+
_ref$publicLinkExpiry = _ref.publicLinkExpiryConfiguration,
|
|
1518
|
+
publicLinkExpiryConfiguration = _ref$publicLinkExpiry === void 0 ? {} : _ref$publicLinkExpiry;
|
|
1431
1519
|
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
1432
1520
|
className: "neeto-ui-border-gray-300 neeto-ui-rounded-lg neeto-ui-bg-white col-span-2 space-y-4 border p-6 sm:p-8",
|
|
1433
1521
|
"data-testid": "share-via-link",
|
|
@@ -1443,6 +1531,8 @@ var ShareViaLink = function ShareViaLink(_ref) {
|
|
|
1443
1531
|
previewUrl: urlOption.previewUrl,
|
|
1444
1532
|
url: urlOption.url
|
|
1445
1533
|
});
|
|
1534
|
+
}), neetoCist.isPresent(publicLinkExpiryConfiguration) && /*#__PURE__*/jsxRuntime.jsx(ExpiryNotice, {
|
|
1535
|
+
expiryConfiguration: publicLinkExpiryConfiguration
|
|
1446
1536
|
}), isOtherShareOptionsEnabled && /*#__PURE__*/jsxRuntime.jsx(ShareBlock, {
|
|
1447
1537
|
disableQRDownload: disableQRDownload,
|
|
1448
1538
|
disableShareSocialMedia: disableShareSocialMedia,
|