@bigbinary/neeto-molecules 3.16.86 → 3.16.87
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 +1 -0
- package/dist/VersionHistory.js +215 -0
- package/dist/VersionHistory.js.map +1 -0
- package/dist/cjs/VersionHistory.js +217 -0
- package/dist/cjs/VersionHistory.js.map +1 -0
- package/package.json +1 -1
- package/src/translations/en.json +5 -0
- package/types/VersionHistory.d.ts +205 -0
package/README.md
CHANGED
|
@@ -81,6 +81,7 @@ https://neeto-molecules.neeto.com/
|
|
|
81
81
|
- [Taxonomy](./docs/components/Taxonomy.md)
|
|
82
82
|
- [TimezoneMismatchModal](./docs/components/TimezoneMismatchModal.md)
|
|
83
83
|
- [ToggleFeatureCard](./docs/components/ToggleFeatureCard.md)
|
|
84
|
+
- [VersionHistory](./docs/components/VersionHistory.md)
|
|
84
85
|
|
|
85
86
|
## Installation Instructions
|
|
86
87
|
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
2
|
+
import { isNotEmpty } from '@bigbinary/neeto-cist';
|
|
3
|
+
import withT$1 from '@bigbinary/neeto-commons-frontend/react-utils/withT';
|
|
4
|
+
import Refresh from '@bigbinary/neeto-icons/Refresh';
|
|
5
|
+
import Button from '@bigbinary/neetoui/Button';
|
|
6
|
+
import Typography from '@bigbinary/neetoui/Typography';
|
|
7
|
+
import Pane from '@bigbinary/neetoui/Pane';
|
|
8
|
+
import Spinner from '@bigbinary/neetoui/Spinner';
|
|
9
|
+
import { t } from 'i18next';
|
|
10
|
+
import classnames from 'classnames';
|
|
11
|
+
import { withT } from '@bigbinary/neeto-commons-frontend/react-utils';
|
|
12
|
+
import Tag from '@bigbinary/neetoui/Tag';
|
|
13
|
+
import Avatar from '@bigbinary/neetoui/Avatar';
|
|
14
|
+
import DateFormat from './DateFormat.js';
|
|
15
|
+
import MoreDropdown from './MoreDropdown.js';
|
|
16
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
17
|
+
import { createElement } from 'react';
|
|
18
|
+
import '@bigbinary/neeto-commons-frontend/react-utils/useTimer';
|
|
19
|
+
import '@bigbinary/neeto-commons-frontend/utils/datetime';
|
|
20
|
+
import '@bigbinary/neetoui/Tooltip';
|
|
21
|
+
import 'ramda';
|
|
22
|
+
import '@babel/runtime/helpers/objectWithoutProperties';
|
|
23
|
+
import '@bigbinary/neeto-icons/MenuHorizontal';
|
|
24
|
+
import '@bigbinary/neeto-icons/MenuVertical';
|
|
25
|
+
import '@bigbinary/neetoui/Dropdown';
|
|
26
|
+
import 'react-i18next';
|
|
27
|
+
import './inject-css-DmrvuTKK.js';
|
|
28
|
+
|
|
29
|
+
var REFRESH_BUTTON_TOOLTIP_PROPS = Object.freeze({
|
|
30
|
+
content: t("neetoMolecules.versionHistory.refreshButtonTooltip"),
|
|
31
|
+
position: "bottom"
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
35
|
+
function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
36
|
+
var Version = withT(function (_ref) {
|
|
37
|
+
var t = _ref.t,
|
|
38
|
+
id = _ref.id,
|
|
39
|
+
date = _ref.date,
|
|
40
|
+
user = _ref.user,
|
|
41
|
+
onClick = _ref.onClick,
|
|
42
|
+
_ref$isDraft = _ref.isDraft,
|
|
43
|
+
isDraft = _ref$isDraft === void 0 ? false : _ref$isDraft,
|
|
44
|
+
_ref$isPublished = _ref.isPublished,
|
|
45
|
+
isPublished = _ref$isPublished === void 0 ? false : _ref$isPublished,
|
|
46
|
+
_ref$showMoreDropdown = _ref.showMoreDropdown,
|
|
47
|
+
showMoreDropdown = _ref$showMoreDropdown === void 0 ? false : _ref$showMoreDropdown,
|
|
48
|
+
_ref$moreDropdownProp = _ref.moreDropdownProps,
|
|
49
|
+
moreDropdownProps = _ref$moreDropdownProp === void 0 ? {} : _ref$moreDropdownProp,
|
|
50
|
+
_ref$isLast = _ref.isLast,
|
|
51
|
+
isLast = _ref$isLast === void 0 ? false : _ref$isLast;
|
|
52
|
+
return /*#__PURE__*/jsxs("div", {
|
|
53
|
+
className: "flex w-full gap-2",
|
|
54
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
55
|
+
className: "relative mt-2.5 flex flex-col items-center",
|
|
56
|
+
children: [/*#__PURE__*/jsx("span", {
|
|
57
|
+
className: classnames("neeto-ui-rounded-full neeto-ui-bg-gray-300 relative z-10 h-2 w-2", {
|
|
58
|
+
"neeto-ui-bg-warning-500": isDraft
|
|
59
|
+
}, {
|
|
60
|
+
"neeto-ui-bg-primary-500": isPublished
|
|
61
|
+
})
|
|
62
|
+
}), !isLast && /*#__PURE__*/jsx("span", {
|
|
63
|
+
"aria-hidden": "true",
|
|
64
|
+
className: "neeto-ui-bg-gray-300 absolute left-1/2 top-[9px] z-0 h-full w-px -translate-x-1/2"
|
|
65
|
+
})]
|
|
66
|
+
}), /*#__PURE__*/jsx("div", {
|
|
67
|
+
onClick: onClick,
|
|
68
|
+
className: classnames("w-full", {
|
|
69
|
+
"pb-3": !isDraft
|
|
70
|
+
}),
|
|
71
|
+
children: /*#__PURE__*/jsxs("div", {
|
|
72
|
+
className: "neeto-ui-rounded hover:neeto-ui-bg-gray-100 flex flex-grow cursor-pointer justify-between gap-4 px-1.5 pb-1.5 pt-1 transition-all duration-300",
|
|
73
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
74
|
+
className: "flex flex-grow flex-col gap-2",
|
|
75
|
+
children: [/*#__PURE__*/jsxs("div", {
|
|
76
|
+
className: "flex items-center gap-2",
|
|
77
|
+
children: [/*#__PURE__*/jsx(Typography, {
|
|
78
|
+
style: "h5",
|
|
79
|
+
weight: "medium",
|
|
80
|
+
children: /*#__PURE__*/jsx(DateFormat.DateWeekTime, {
|
|
81
|
+
date: date,
|
|
82
|
+
typographyProps: {
|
|
83
|
+
style: "body3",
|
|
84
|
+
lineHeight: "snug"
|
|
85
|
+
}
|
|
86
|
+
})
|
|
87
|
+
}), isDraft && /*#__PURE__*/jsx(Tag, {
|
|
88
|
+
className: "float-left",
|
|
89
|
+
"data-testid": "version-history-draft-tag",
|
|
90
|
+
label: t("neetoMolecules.common.actions.draft"),
|
|
91
|
+
size: "small",
|
|
92
|
+
style: "warning"
|
|
93
|
+
})]
|
|
94
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
95
|
+
className: "flex items-center gap-2",
|
|
96
|
+
children: [/*#__PURE__*/jsx(Avatar, {
|
|
97
|
+
size: "small",
|
|
98
|
+
user: {
|
|
99
|
+
name: user
|
|
100
|
+
}
|
|
101
|
+
}), /*#__PURE__*/jsx(Typography, {
|
|
102
|
+
style: "body3",
|
|
103
|
+
children: user
|
|
104
|
+
})]
|
|
105
|
+
})]
|
|
106
|
+
}), showMoreDropdown && /*#__PURE__*/jsx("div", {
|
|
107
|
+
className: "flex-shrink-0",
|
|
108
|
+
onClick: function onClick(e) {
|
|
109
|
+
return e.stopPropagation();
|
|
110
|
+
},
|
|
111
|
+
children: /*#__PURE__*/jsx(MoreDropdown, _objectSpread$1({
|
|
112
|
+
dropdownButtonProps: {
|
|
113
|
+
className: "m-1",
|
|
114
|
+
size: "small",
|
|
115
|
+
disabled: moreDropdownProps.disabled
|
|
116
|
+
},
|
|
117
|
+
dropdownProps: {
|
|
118
|
+
strategy: "fixed",
|
|
119
|
+
appendTo: function appendTo() {
|
|
120
|
+
return document.body;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}, moreDropdownProps))
|
|
124
|
+
})]
|
|
125
|
+
})
|
|
126
|
+
})]
|
|
127
|
+
}, id);
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
131
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
132
|
+
var VersionHistory = withT$1(function (_ref) {
|
|
133
|
+
var t = _ref.t,
|
|
134
|
+
isOpen = _ref.isOpen,
|
|
135
|
+
onClose = _ref.onClose,
|
|
136
|
+
isLoading = _ref.isLoading,
|
|
137
|
+
_ref$draftVersions = _ref.draftVersions,
|
|
138
|
+
draftVersions = _ref$draftVersions === void 0 ? [] : _ref$draftVersions,
|
|
139
|
+
_ref$publishedVersion = _ref.publishedVersions,
|
|
140
|
+
publishedVersions = _ref$publishedVersion === void 0 ? [] : _ref$publishedVersion,
|
|
141
|
+
paneTitle = _ref.paneTitle,
|
|
142
|
+
_ref$showRefreshButto = _ref.showRefreshButton,
|
|
143
|
+
showRefreshButton = _ref$showRefreshButto === void 0 ? false : _ref$showRefreshButto,
|
|
144
|
+
onRefreshClick = _ref.onRefreshClick;
|
|
145
|
+
return /*#__PURE__*/jsx(Pane, {
|
|
146
|
+
isOpen: isOpen,
|
|
147
|
+
onClose: onClose,
|
|
148
|
+
children: isLoading ? /*#__PURE__*/jsx("div", {
|
|
149
|
+
className: "flex h-full w-full items-center justify-center",
|
|
150
|
+
children: /*#__PURE__*/jsx(Spinner, {})
|
|
151
|
+
}) : /*#__PURE__*/jsxs(Fragment, {
|
|
152
|
+
children: [/*#__PURE__*/jsxs(Pane.Header, {
|
|
153
|
+
className: "flex justify-between",
|
|
154
|
+
children: [/*#__PURE__*/jsx(Typography, {
|
|
155
|
+
"data-testid": "version-history-pane-header",
|
|
156
|
+
lineHeight: "normal",
|
|
157
|
+
style: "h2",
|
|
158
|
+
weight: "semibold",
|
|
159
|
+
children: paneTitle || t("neetoMolecules.versionHistory.paneTitle")
|
|
160
|
+
}), showRefreshButton && /*#__PURE__*/jsx(Button, {
|
|
161
|
+
"data-testid": "version-history-refresh-button",
|
|
162
|
+
icon: Refresh,
|
|
163
|
+
iconSize: 18,
|
|
164
|
+
size: "small",
|
|
165
|
+
style: "text",
|
|
166
|
+
tooltipProps: REFRESH_BUTTON_TOOLTIP_PROPS,
|
|
167
|
+
onClick: onRefreshClick
|
|
168
|
+
})]
|
|
169
|
+
}), /*#__PURE__*/jsx(Pane.Body, {
|
|
170
|
+
children: /*#__PURE__*/jsxs("div", {
|
|
171
|
+
className: "w-full space-y-4",
|
|
172
|
+
children: [isNotEmpty(draftVersions) && /*#__PURE__*/jsx("div", {
|
|
173
|
+
className: "flex flex-col",
|
|
174
|
+
children: draftVersions.map(function (version, index) {
|
|
175
|
+
var isLast = index === draftVersions.length - 1;
|
|
176
|
+
return /*#__PURE__*/createElement(Version, _objectSpread(_objectSpread({}, _objectSpread(_objectSpread({}, version), {}, {
|
|
177
|
+
isLast: isLast
|
|
178
|
+
})), {}, {
|
|
179
|
+
key: version.id
|
|
180
|
+
}));
|
|
181
|
+
})
|
|
182
|
+
}), isNotEmpty(publishedVersions) && /*#__PURE__*/jsxs("div", {
|
|
183
|
+
className: "flex items-center",
|
|
184
|
+
children: [/*#__PURE__*/jsx("hr", {
|
|
185
|
+
className: "neeto-ui-border-gray-200 flex-grow"
|
|
186
|
+
}), /*#__PURE__*/jsx(Typography, {
|
|
187
|
+
className: "neeto-ui-bg-gray-200 neeto-ui-text-gray-800 neeto-ui-rounded inline-block px-3 py-1",
|
|
188
|
+
"data-cy": "version-history-published-title",
|
|
189
|
+
"data-testid": "version-history-published-title",
|
|
190
|
+
lineHeight: "normal",
|
|
191
|
+
style: "body3",
|
|
192
|
+
weight: "medium",
|
|
193
|
+
children: t("neetoMolecules.versionHistory.publishedVersions")
|
|
194
|
+
}), /*#__PURE__*/jsx("hr", {
|
|
195
|
+
className: "neeto-ui-border-gray-200 flex-grow"
|
|
196
|
+
})]
|
|
197
|
+
}), /*#__PURE__*/jsx("div", {
|
|
198
|
+
className: "flex flex-col",
|
|
199
|
+
children: publishedVersions.map(function (version, index) {
|
|
200
|
+
var isLast = index === publishedVersions.length - 1;
|
|
201
|
+
return /*#__PURE__*/createElement(Version, _objectSpread(_objectSpread({}, _objectSpread(_objectSpread({}, version), {}, {
|
|
202
|
+
isLast: isLast
|
|
203
|
+
})), {}, {
|
|
204
|
+
key: version.id
|
|
205
|
+
}));
|
|
206
|
+
})
|
|
207
|
+
})]
|
|
208
|
+
})
|
|
209
|
+
})]
|
|
210
|
+
})
|
|
211
|
+
});
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
export { VersionHistory as default };
|
|
215
|
+
//# sourceMappingURL=VersionHistory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VersionHistory.js","sources":["../src/components/VersionHistory/constants.js","../src/components/VersionHistory/Version.jsx","../src/components/VersionHistory/index.jsx"],"sourcesContent":["import { t } from \"i18next\";\n\nexport const REFRESH_BUTTON_TOOLTIP_PROPS = Object.freeze({\n content: t(\"neetoMolecules.versionHistory.refreshButtonTooltip\"),\n position: \"bottom\",\n});\n","import classnames from \"classnames\";\nimport { withT } from \"neetocommons/react-utils\";\nimport { Typography, Tag, Avatar } from \"neetoui\";\n\nimport DateFormat from \"components/DateFormat\";\nimport MoreDropdown from \"components/MoreDropdown\";\n\nconst Version = withT(\n ({\n t,\n id,\n date,\n user,\n onClick,\n isDraft = false,\n isPublished = false,\n showMoreDropdown = false,\n moreDropdownProps = {},\n isLast = false,\n }) => (\n <div className=\"flex w-full gap-2\" key={id}>\n <div className=\"relative mt-2.5 flex flex-col items-center\">\n <span\n className={classnames(\n \"neeto-ui-rounded-full neeto-ui-bg-gray-300 relative z-10 h-2 w-2\",\n { \"neeto-ui-bg-warning-500\": isDraft },\n { \"neeto-ui-bg-primary-500\": isPublished }\n )}\n />\n {!isLast && (\n <span\n aria-hidden=\"true\"\n className=\"neeto-ui-bg-gray-300 absolute left-1/2 top-[9px] z-0 h-full w-px -translate-x-1/2\"\n />\n )}\n </div>\n <div\n {...{ onClick }}\n className={classnames(\"w-full\", { \"pb-3\": !isDraft })}\n >\n <div className=\"neeto-ui-rounded hover:neeto-ui-bg-gray-100 flex flex-grow cursor-pointer justify-between gap-4 px-1.5 pb-1.5 pt-1 transition-all duration-300\">\n <div className=\"flex flex-grow flex-col gap-2\">\n <div className=\"flex items-center gap-2\">\n <Typography style=\"h5\" weight=\"medium\">\n <DateFormat.DateWeekTime\n {...{ date }}\n typographyProps={{ style: \"body3\", lineHeight: \"snug\" }}\n />\n </Typography>\n {isDraft && (\n <Tag\n className=\"float-left\"\n data-testid=\"version-history-draft-tag\"\n label={t(\"neetoMolecules.common.actions.draft\")}\n size=\"small\"\n style=\"warning\"\n />\n )}\n </div>\n <div className=\"flex items-center gap-2\">\n <Avatar size=\"small\" user={{ name: user }} />\n <Typography style=\"body3\">{user}</Typography>\n </div>\n </div>\n {showMoreDropdown && (\n <div className=\"flex-shrink-0\" onClick={e => e.stopPropagation()}>\n <MoreDropdown\n dropdownButtonProps={{\n className: \"m-1\",\n size: \"small\",\n disabled: moreDropdownProps.disabled,\n }}\n dropdownProps={{\n strategy: \"fixed\",\n appendTo: () => document.body,\n }}\n {...moreDropdownProps}\n />\n </div>\n )}\n </div>\n </div>\n </div>\n )\n);\n\nexport default Version;\n","import { isNotEmpty } from \"neetocist\";\nimport withT from \"neetocommons/react-utils/withT\";\nimport { Refresh } from \"neetoicons\";\nimport { Button, Typography, Pane, Spinner } from \"neetoui\";\nimport PropTypes from \"prop-types\";\n\nimport { REFRESH_BUTTON_TOOLTIP_PROPS } from \"./constants\";\nimport Version from \"./Version\";\n\nconst VersionHistory = withT(\n ({\n t,\n isOpen,\n onClose,\n isLoading,\n draftVersions = [],\n publishedVersions = [],\n paneTitle,\n showRefreshButton = false,\n onRefreshClick,\n }) => (\n <Pane {...{ isOpen, onClose }}>\n {isLoading ? (\n <div className=\"flex h-full w-full items-center justify-center\">\n <Spinner />\n </div>\n ) : (\n <>\n <Pane.Header className=\"flex justify-between\">\n <Typography\n data-testid=\"version-history-pane-header\"\n lineHeight=\"normal\"\n style=\"h2\"\n weight=\"semibold\"\n >\n {paneTitle || t(\"neetoMolecules.versionHistory.paneTitle\")}\n </Typography>\n {showRefreshButton && (\n <Button\n data-testid=\"version-history-refresh-button\"\n icon={Refresh}\n iconSize={18}\n size=\"small\"\n style=\"text\"\n tooltipProps={REFRESH_BUTTON_TOOLTIP_PROPS}\n onClick={onRefreshClick}\n />\n )}\n </Pane.Header>\n <Pane.Body>\n <div className=\"w-full space-y-4\">\n {isNotEmpty(draftVersions) && (\n <div className=\"flex flex-col\">\n {draftVersions.map((version, index) => {\n const isLast = index === draftVersions.length - 1;\n\n return (\n <Version {...{ ...version, isLast }} key={version.id} />\n );\n })}\n </div>\n )}\n {isNotEmpty(publishedVersions) && (\n <div className=\"flex items-center\">\n <hr className=\"neeto-ui-border-gray-200 flex-grow\" />\n <Typography\n className=\"neeto-ui-bg-gray-200 neeto-ui-text-gray-800 neeto-ui-rounded inline-block px-3 py-1\"\n data-cy=\"version-history-published-title\"\n data-testid=\"version-history-published-title\"\n lineHeight=\"normal\"\n style=\"body3\"\n weight=\"medium\"\n >\n {t(\"neetoMolecules.versionHistory.publishedVersions\")}\n </Typography>\n <hr className=\"neeto-ui-border-gray-200 flex-grow\" />\n </div>\n )}\n <div className=\"flex flex-col\">\n {publishedVersions.map((version, index) => {\n const isLast = index === publishedVersions.length - 1;\n\n return (\n <Version {...{ ...version, isLast }} key={version.id} />\n );\n })}\n </div>\n </div>\n </Pane.Body>\n </>\n )}\n </Pane>\n )\n);\n\nVersionHistory.propTypes = {\n /**\n * To specify whether the version history pane should be opened or closed.\n */\n isOpen: PropTypes.bool.isRequired,\n /**\n * Handler function that is triggered when the close button is clicked.\n */\n onClose: PropTypes.func.isRequired,\n /**\n * Boolean flag to show loading state with spinner.\n */\n isLoading: PropTypes.bool,\n /**\n * Array of draft version objects to be displayed in the version history.\n */\n draftVersions: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n date: PropTypes.instanceOf(Date).isRequired,\n user: PropTypes.string.isRequired,\n onClick: PropTypes.func,\n isDraft: PropTypes.bool,\n isPublished: PropTypes.bool,\n showMoreDropdown: PropTypes.bool,\n moreDropdownProps: PropTypes.object,\n })\n ),\n /**\n * Array of published version objects to be displayed in the version history.\n */\n publishedVersions: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n date: PropTypes.instanceOf(Date).isRequired,\n user: PropTypes.string.isRequired,\n onClick: PropTypes.func,\n isDraft: PropTypes.bool,\n isPublished: PropTypes.bool,\n showMoreDropdown: PropTypes.bool,\n moreDropdownProps: PropTypes.object,\n })\n ),\n /**\n * Custom title to be displayed in the pane header. If not provided, a default title will be used.\n */\n paneTitle: PropTypes.string,\n /**\n * Boolean flag to show or hide the refresh button in the pane header.\n */\n showRefreshButton: PropTypes.bool,\n /**\n * Handler function that is triggered when the refresh button is clicked.\n */\n onRefreshClick: PropTypes.func,\n};\n\nexport default VersionHistory;\n"],"names":["REFRESH_BUTTON_TOOLTIP_PROPS","Object","freeze","content","t","position","Version","withT","_ref","id","date","user","onClick","_ref$isDraft","isDraft","_ref$isPublished","isPublished","_ref$showMoreDropdown","showMoreDropdown","_ref$moreDropdownProp","moreDropdownProps","_ref$isLast","isLast","_jsxs","className","children","_jsx","classnames","Typography","style","weight","DateFormat","DateWeekTime","typographyProps","lineHeight","Tag","label","size","Avatar","name","e","stopPropagation","MoreDropdown","_objectSpread","dropdownButtonProps","disabled","dropdownProps","strategy","appendTo","document","body","VersionHistory","isOpen","onClose","isLoading","_ref$draftVersions","draftVersions","_ref$publishedVersion","publishedVersions","paneTitle","_ref$showRefreshButto","showRefreshButton","onRefreshClick","Pane","Spinner","_Fragment","Header","Button","icon","Refresh","iconSize","tooltipProps","Body","isNotEmpty","map","version","index","length","_createElement","key"],"mappings":"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"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
4
|
+
var neetoCist = require('@bigbinary/neeto-cist');
|
|
5
|
+
var withT = require('@bigbinary/neeto-commons-frontend/react-utils/withT');
|
|
6
|
+
var Refresh = require('@bigbinary/neeto-icons/Refresh');
|
|
7
|
+
var Button = require('@bigbinary/neetoui/Button');
|
|
8
|
+
var Typography = require('@bigbinary/neetoui/Typography');
|
|
9
|
+
var Pane = require('@bigbinary/neetoui/Pane');
|
|
10
|
+
var Spinner = require('@bigbinary/neetoui/Spinner');
|
|
11
|
+
var i18next = require('i18next');
|
|
12
|
+
var classnames = require('classnames');
|
|
13
|
+
var reactUtils = require('@bigbinary/neeto-commons-frontend/react-utils');
|
|
14
|
+
var Tag = require('@bigbinary/neetoui/Tag');
|
|
15
|
+
var Avatar = require('@bigbinary/neetoui/Avatar');
|
|
16
|
+
var DateFormat = require('./DateFormat.js');
|
|
17
|
+
var MoreDropdown = require('./MoreDropdown.js');
|
|
18
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
19
|
+
var React = require('react');
|
|
20
|
+
require('@bigbinary/neeto-commons-frontend/react-utils/useTimer');
|
|
21
|
+
require('@bigbinary/neeto-commons-frontend/utils/datetime');
|
|
22
|
+
require('@bigbinary/neetoui/Tooltip');
|
|
23
|
+
require('ramda');
|
|
24
|
+
require('@babel/runtime/helpers/objectWithoutProperties');
|
|
25
|
+
require('@bigbinary/neeto-icons/MenuHorizontal');
|
|
26
|
+
require('@bigbinary/neeto-icons/MenuVertical');
|
|
27
|
+
require('@bigbinary/neetoui/Dropdown');
|
|
28
|
+
require('react-i18next');
|
|
29
|
+
require('./inject-css-vQvjPR2x.js');
|
|
30
|
+
|
|
31
|
+
var REFRESH_BUTTON_TOOLTIP_PROPS = Object.freeze({
|
|
32
|
+
content: i18next.t("neetoMolecules.versionHistory.refreshButtonTooltip"),
|
|
33
|
+
position: "bottom"
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
37
|
+
function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
38
|
+
var Version = reactUtils.withT(function (_ref) {
|
|
39
|
+
var t = _ref.t,
|
|
40
|
+
id = _ref.id,
|
|
41
|
+
date = _ref.date,
|
|
42
|
+
user = _ref.user,
|
|
43
|
+
onClick = _ref.onClick,
|
|
44
|
+
_ref$isDraft = _ref.isDraft,
|
|
45
|
+
isDraft = _ref$isDraft === void 0 ? false : _ref$isDraft,
|
|
46
|
+
_ref$isPublished = _ref.isPublished,
|
|
47
|
+
isPublished = _ref$isPublished === void 0 ? false : _ref$isPublished,
|
|
48
|
+
_ref$showMoreDropdown = _ref.showMoreDropdown,
|
|
49
|
+
showMoreDropdown = _ref$showMoreDropdown === void 0 ? false : _ref$showMoreDropdown,
|
|
50
|
+
_ref$moreDropdownProp = _ref.moreDropdownProps,
|
|
51
|
+
moreDropdownProps = _ref$moreDropdownProp === void 0 ? {} : _ref$moreDropdownProp,
|
|
52
|
+
_ref$isLast = _ref.isLast,
|
|
53
|
+
isLast = _ref$isLast === void 0 ? false : _ref$isLast;
|
|
54
|
+
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
55
|
+
className: "flex w-full gap-2",
|
|
56
|
+
children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
57
|
+
className: "relative mt-2.5 flex flex-col items-center",
|
|
58
|
+
children: [/*#__PURE__*/jsxRuntime.jsx("span", {
|
|
59
|
+
className: classnames("neeto-ui-rounded-full neeto-ui-bg-gray-300 relative z-10 h-2 w-2", {
|
|
60
|
+
"neeto-ui-bg-warning-500": isDraft
|
|
61
|
+
}, {
|
|
62
|
+
"neeto-ui-bg-primary-500": isPublished
|
|
63
|
+
})
|
|
64
|
+
}), !isLast && /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
65
|
+
"aria-hidden": "true",
|
|
66
|
+
className: "neeto-ui-bg-gray-300 absolute left-1/2 top-[9px] z-0 h-full w-px -translate-x-1/2"
|
|
67
|
+
})]
|
|
68
|
+
}), /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
69
|
+
onClick: onClick,
|
|
70
|
+
className: classnames("w-full", {
|
|
71
|
+
"pb-3": !isDraft
|
|
72
|
+
}),
|
|
73
|
+
children: /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
74
|
+
className: "neeto-ui-rounded hover:neeto-ui-bg-gray-100 flex flex-grow cursor-pointer justify-between gap-4 px-1.5 pb-1.5 pt-1 transition-all duration-300",
|
|
75
|
+
children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
76
|
+
className: "flex flex-grow flex-col gap-2",
|
|
77
|
+
children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
78
|
+
className: "flex items-center gap-2",
|
|
79
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(Typography, {
|
|
80
|
+
style: "h5",
|
|
81
|
+
weight: "medium",
|
|
82
|
+
children: /*#__PURE__*/jsxRuntime.jsx(DateFormat.DateWeekTime, {
|
|
83
|
+
date: date,
|
|
84
|
+
typographyProps: {
|
|
85
|
+
style: "body3",
|
|
86
|
+
lineHeight: "snug"
|
|
87
|
+
}
|
|
88
|
+
})
|
|
89
|
+
}), isDraft && /*#__PURE__*/jsxRuntime.jsx(Tag, {
|
|
90
|
+
className: "float-left",
|
|
91
|
+
"data-testid": "version-history-draft-tag",
|
|
92
|
+
label: t("neetoMolecules.common.actions.draft"),
|
|
93
|
+
size: "small",
|
|
94
|
+
style: "warning"
|
|
95
|
+
})]
|
|
96
|
+
}), /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
97
|
+
className: "flex items-center gap-2",
|
|
98
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(Avatar, {
|
|
99
|
+
size: "small",
|
|
100
|
+
user: {
|
|
101
|
+
name: user
|
|
102
|
+
}
|
|
103
|
+
}), /*#__PURE__*/jsxRuntime.jsx(Typography, {
|
|
104
|
+
style: "body3",
|
|
105
|
+
children: user
|
|
106
|
+
})]
|
|
107
|
+
})]
|
|
108
|
+
}), showMoreDropdown && /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
109
|
+
className: "flex-shrink-0",
|
|
110
|
+
onClick: function onClick(e) {
|
|
111
|
+
return e.stopPropagation();
|
|
112
|
+
},
|
|
113
|
+
children: /*#__PURE__*/jsxRuntime.jsx(MoreDropdown, _objectSpread$1({
|
|
114
|
+
dropdownButtonProps: {
|
|
115
|
+
className: "m-1",
|
|
116
|
+
size: "small",
|
|
117
|
+
disabled: moreDropdownProps.disabled
|
|
118
|
+
},
|
|
119
|
+
dropdownProps: {
|
|
120
|
+
strategy: "fixed",
|
|
121
|
+
appendTo: function appendTo() {
|
|
122
|
+
return document.body;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}, moreDropdownProps))
|
|
126
|
+
})]
|
|
127
|
+
})
|
|
128
|
+
})]
|
|
129
|
+
}, id);
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
133
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
134
|
+
var VersionHistory = withT(function (_ref) {
|
|
135
|
+
var t = _ref.t,
|
|
136
|
+
isOpen = _ref.isOpen,
|
|
137
|
+
onClose = _ref.onClose,
|
|
138
|
+
isLoading = _ref.isLoading,
|
|
139
|
+
_ref$draftVersions = _ref.draftVersions,
|
|
140
|
+
draftVersions = _ref$draftVersions === void 0 ? [] : _ref$draftVersions,
|
|
141
|
+
_ref$publishedVersion = _ref.publishedVersions,
|
|
142
|
+
publishedVersions = _ref$publishedVersion === void 0 ? [] : _ref$publishedVersion,
|
|
143
|
+
paneTitle = _ref.paneTitle,
|
|
144
|
+
_ref$showRefreshButto = _ref.showRefreshButton,
|
|
145
|
+
showRefreshButton = _ref$showRefreshButto === void 0 ? false : _ref$showRefreshButto,
|
|
146
|
+
onRefreshClick = _ref.onRefreshClick;
|
|
147
|
+
return /*#__PURE__*/jsxRuntime.jsx(Pane, {
|
|
148
|
+
isOpen: isOpen,
|
|
149
|
+
onClose: onClose,
|
|
150
|
+
children: isLoading ? /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
151
|
+
className: "flex h-full w-full items-center justify-center",
|
|
152
|
+
children: /*#__PURE__*/jsxRuntime.jsx(Spinner, {})
|
|
153
|
+
}) : /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
154
|
+
children: [/*#__PURE__*/jsxRuntime.jsxs(Pane.Header, {
|
|
155
|
+
className: "flex justify-between",
|
|
156
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(Typography, {
|
|
157
|
+
"data-testid": "version-history-pane-header",
|
|
158
|
+
lineHeight: "normal",
|
|
159
|
+
style: "h2",
|
|
160
|
+
weight: "semibold",
|
|
161
|
+
children: paneTitle || t("neetoMolecules.versionHistory.paneTitle")
|
|
162
|
+
}), showRefreshButton && /*#__PURE__*/jsxRuntime.jsx(Button, {
|
|
163
|
+
"data-testid": "version-history-refresh-button",
|
|
164
|
+
icon: Refresh,
|
|
165
|
+
iconSize: 18,
|
|
166
|
+
size: "small",
|
|
167
|
+
style: "text",
|
|
168
|
+
tooltipProps: REFRESH_BUTTON_TOOLTIP_PROPS,
|
|
169
|
+
onClick: onRefreshClick
|
|
170
|
+
})]
|
|
171
|
+
}), /*#__PURE__*/jsxRuntime.jsx(Pane.Body, {
|
|
172
|
+
children: /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
173
|
+
className: "w-full space-y-4",
|
|
174
|
+
children: [neetoCist.isNotEmpty(draftVersions) && /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
175
|
+
className: "flex flex-col",
|
|
176
|
+
children: draftVersions.map(function (version, index) {
|
|
177
|
+
var isLast = index === draftVersions.length - 1;
|
|
178
|
+
return /*#__PURE__*/React.createElement(Version, _objectSpread(_objectSpread({}, _objectSpread(_objectSpread({}, version), {}, {
|
|
179
|
+
isLast: isLast
|
|
180
|
+
})), {}, {
|
|
181
|
+
key: version.id
|
|
182
|
+
}));
|
|
183
|
+
})
|
|
184
|
+
}), neetoCist.isNotEmpty(publishedVersions) && /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
185
|
+
className: "flex items-center",
|
|
186
|
+
children: [/*#__PURE__*/jsxRuntime.jsx("hr", {
|
|
187
|
+
className: "neeto-ui-border-gray-200 flex-grow"
|
|
188
|
+
}), /*#__PURE__*/jsxRuntime.jsx(Typography, {
|
|
189
|
+
className: "neeto-ui-bg-gray-200 neeto-ui-text-gray-800 neeto-ui-rounded inline-block px-3 py-1",
|
|
190
|
+
"data-cy": "version-history-published-title",
|
|
191
|
+
"data-testid": "version-history-published-title",
|
|
192
|
+
lineHeight: "normal",
|
|
193
|
+
style: "body3",
|
|
194
|
+
weight: "medium",
|
|
195
|
+
children: t("neetoMolecules.versionHistory.publishedVersions")
|
|
196
|
+
}), /*#__PURE__*/jsxRuntime.jsx("hr", {
|
|
197
|
+
className: "neeto-ui-border-gray-200 flex-grow"
|
|
198
|
+
})]
|
|
199
|
+
}), /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
200
|
+
className: "flex flex-col",
|
|
201
|
+
children: publishedVersions.map(function (version, index) {
|
|
202
|
+
var isLast = index === publishedVersions.length - 1;
|
|
203
|
+
return /*#__PURE__*/React.createElement(Version, _objectSpread(_objectSpread({}, _objectSpread(_objectSpread({}, version), {}, {
|
|
204
|
+
isLast: isLast
|
|
205
|
+
})), {}, {
|
|
206
|
+
key: version.id
|
|
207
|
+
}));
|
|
208
|
+
})
|
|
209
|
+
})]
|
|
210
|
+
})
|
|
211
|
+
})]
|
|
212
|
+
})
|
|
213
|
+
});
|
|
214
|
+
});
|
|
215
|
+
|
|
216
|
+
module.exports = VersionHistory;
|
|
217
|
+
//# sourceMappingURL=VersionHistory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VersionHistory.js","sources":["../../src/components/VersionHistory/constants.js","../../src/components/VersionHistory/Version.jsx","../../src/components/VersionHistory/index.jsx"],"sourcesContent":["import { t } from \"i18next\";\n\nexport const REFRESH_BUTTON_TOOLTIP_PROPS = Object.freeze({\n content: t(\"neetoMolecules.versionHistory.refreshButtonTooltip\"),\n position: \"bottom\",\n});\n","import classnames from \"classnames\";\nimport { withT } from \"neetocommons/react-utils\";\nimport { Typography, Tag, Avatar } from \"neetoui\";\n\nimport DateFormat from \"components/DateFormat\";\nimport MoreDropdown from \"components/MoreDropdown\";\n\nconst Version = withT(\n ({\n t,\n id,\n date,\n user,\n onClick,\n isDraft = false,\n isPublished = false,\n showMoreDropdown = false,\n moreDropdownProps = {},\n isLast = false,\n }) => (\n <div className=\"flex w-full gap-2\" key={id}>\n <div className=\"relative mt-2.5 flex flex-col items-center\">\n <span\n className={classnames(\n \"neeto-ui-rounded-full neeto-ui-bg-gray-300 relative z-10 h-2 w-2\",\n { \"neeto-ui-bg-warning-500\": isDraft },\n { \"neeto-ui-bg-primary-500\": isPublished }\n )}\n />\n {!isLast && (\n <span\n aria-hidden=\"true\"\n className=\"neeto-ui-bg-gray-300 absolute left-1/2 top-[9px] z-0 h-full w-px -translate-x-1/2\"\n />\n )}\n </div>\n <div\n {...{ onClick }}\n className={classnames(\"w-full\", { \"pb-3\": !isDraft })}\n >\n <div className=\"neeto-ui-rounded hover:neeto-ui-bg-gray-100 flex flex-grow cursor-pointer justify-between gap-4 px-1.5 pb-1.5 pt-1 transition-all duration-300\">\n <div className=\"flex flex-grow flex-col gap-2\">\n <div className=\"flex items-center gap-2\">\n <Typography style=\"h5\" weight=\"medium\">\n <DateFormat.DateWeekTime\n {...{ date }}\n typographyProps={{ style: \"body3\", lineHeight: \"snug\" }}\n />\n </Typography>\n {isDraft && (\n <Tag\n className=\"float-left\"\n data-testid=\"version-history-draft-tag\"\n label={t(\"neetoMolecules.common.actions.draft\")}\n size=\"small\"\n style=\"warning\"\n />\n )}\n </div>\n <div className=\"flex items-center gap-2\">\n <Avatar size=\"small\" user={{ name: user }} />\n <Typography style=\"body3\">{user}</Typography>\n </div>\n </div>\n {showMoreDropdown && (\n <div className=\"flex-shrink-0\" onClick={e => e.stopPropagation()}>\n <MoreDropdown\n dropdownButtonProps={{\n className: \"m-1\",\n size: \"small\",\n disabled: moreDropdownProps.disabled,\n }}\n dropdownProps={{\n strategy: \"fixed\",\n appendTo: () => document.body,\n }}\n {...moreDropdownProps}\n />\n </div>\n )}\n </div>\n </div>\n </div>\n )\n);\n\nexport default Version;\n","import { isNotEmpty } from \"neetocist\";\nimport withT from \"neetocommons/react-utils/withT\";\nimport { Refresh } from \"neetoicons\";\nimport { Button, Typography, Pane, Spinner } from \"neetoui\";\nimport PropTypes from \"prop-types\";\n\nimport { REFRESH_BUTTON_TOOLTIP_PROPS } from \"./constants\";\nimport Version from \"./Version\";\n\nconst VersionHistory = withT(\n ({\n t,\n isOpen,\n onClose,\n isLoading,\n draftVersions = [],\n publishedVersions = [],\n paneTitle,\n showRefreshButton = false,\n onRefreshClick,\n }) => (\n <Pane {...{ isOpen, onClose }}>\n {isLoading ? (\n <div className=\"flex h-full w-full items-center justify-center\">\n <Spinner />\n </div>\n ) : (\n <>\n <Pane.Header className=\"flex justify-between\">\n <Typography\n data-testid=\"version-history-pane-header\"\n lineHeight=\"normal\"\n style=\"h2\"\n weight=\"semibold\"\n >\n {paneTitle || t(\"neetoMolecules.versionHistory.paneTitle\")}\n </Typography>\n {showRefreshButton && (\n <Button\n data-testid=\"version-history-refresh-button\"\n icon={Refresh}\n iconSize={18}\n size=\"small\"\n style=\"text\"\n tooltipProps={REFRESH_BUTTON_TOOLTIP_PROPS}\n onClick={onRefreshClick}\n />\n )}\n </Pane.Header>\n <Pane.Body>\n <div className=\"w-full space-y-4\">\n {isNotEmpty(draftVersions) && (\n <div className=\"flex flex-col\">\n {draftVersions.map((version, index) => {\n const isLast = index === draftVersions.length - 1;\n\n return (\n <Version {...{ ...version, isLast }} key={version.id} />\n );\n })}\n </div>\n )}\n {isNotEmpty(publishedVersions) && (\n <div className=\"flex items-center\">\n <hr className=\"neeto-ui-border-gray-200 flex-grow\" />\n <Typography\n className=\"neeto-ui-bg-gray-200 neeto-ui-text-gray-800 neeto-ui-rounded inline-block px-3 py-1\"\n data-cy=\"version-history-published-title\"\n data-testid=\"version-history-published-title\"\n lineHeight=\"normal\"\n style=\"body3\"\n weight=\"medium\"\n >\n {t(\"neetoMolecules.versionHistory.publishedVersions\")}\n </Typography>\n <hr className=\"neeto-ui-border-gray-200 flex-grow\" />\n </div>\n )}\n <div className=\"flex flex-col\">\n {publishedVersions.map((version, index) => {\n const isLast = index === publishedVersions.length - 1;\n\n return (\n <Version {...{ ...version, isLast }} key={version.id} />\n );\n })}\n </div>\n </div>\n </Pane.Body>\n </>\n )}\n </Pane>\n )\n);\n\nVersionHistory.propTypes = {\n /**\n * To specify whether the version history pane should be opened or closed.\n */\n isOpen: PropTypes.bool.isRequired,\n /**\n * Handler function that is triggered when the close button is clicked.\n */\n onClose: PropTypes.func.isRequired,\n /**\n * Boolean flag to show loading state with spinner.\n */\n isLoading: PropTypes.bool,\n /**\n * Array of draft version objects to be displayed in the version history.\n */\n draftVersions: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n date: PropTypes.instanceOf(Date).isRequired,\n user: PropTypes.string.isRequired,\n onClick: PropTypes.func,\n isDraft: PropTypes.bool,\n isPublished: PropTypes.bool,\n showMoreDropdown: PropTypes.bool,\n moreDropdownProps: PropTypes.object,\n })\n ),\n /**\n * Array of published version objects to be displayed in the version history.\n */\n publishedVersions: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n date: PropTypes.instanceOf(Date).isRequired,\n user: PropTypes.string.isRequired,\n onClick: PropTypes.func,\n isDraft: PropTypes.bool,\n isPublished: PropTypes.bool,\n showMoreDropdown: PropTypes.bool,\n moreDropdownProps: PropTypes.object,\n })\n ),\n /**\n * Custom title to be displayed in the pane header. If not provided, a default title will be used.\n */\n paneTitle: PropTypes.string,\n /**\n * Boolean flag to show or hide the refresh button in the pane header.\n */\n showRefreshButton: PropTypes.bool,\n /**\n * Handler function that is triggered when the refresh button is clicked.\n */\n onRefreshClick: PropTypes.func,\n};\n\nexport default VersionHistory;\n"],"names":["REFRESH_BUTTON_TOOLTIP_PROPS","Object","freeze","content","t","position","Version","withT","_ref","id","date","user","onClick","_ref$isDraft","isDraft","_ref$isPublished","isPublished","_ref$showMoreDropdown","showMoreDropdown","_ref$moreDropdownProp","moreDropdownProps","_ref$isLast","isLast","_jsxs","className","children","_jsx","classnames","Typography","style","weight","DateFormat","DateWeekTime","typographyProps","lineHeight","Tag","label","size","Avatar","name","e","stopPropagation","MoreDropdown","_objectSpread","dropdownButtonProps","disabled","dropdownProps","strategy","appendTo","document","body","VersionHistory","isOpen","onClose","isLoading","_ref$draftVersions","draftVersions","_ref$publishedVersion","publishedVersions","paneTitle","_ref$showRefreshButto","showRefreshButton","onRefreshClick","Pane","Spinner","_Fragment","Header","Button","icon","Refresh","iconSize","tooltipProps","Body","isNotEmpty","map","version","index","length","_createElement","key"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bigbinary/neeto-molecules",
|
|
3
|
-
"version": "3.16.
|
|
3
|
+
"version": "3.16.87",
|
|
4
4
|
"description": "A package of reusable molecular components for neeto products.",
|
|
5
5
|
"repository": "git@github.com:bigbinary/neeto-molecules.git",
|
|
6
6
|
"author": "Amaljith K <amaljith.k@bigbinary.com>",
|
package/src/translations/en.json
CHANGED
|
@@ -847,6 +847,11 @@
|
|
|
847
847
|
},
|
|
848
848
|
"statusDropdown": {
|
|
849
849
|
"placeholder": "Select a status"
|
|
850
|
+
},
|
|
851
|
+
"versionHistory": {
|
|
852
|
+
"paneTitle": "Version history",
|
|
853
|
+
"publishedVersions": "Published versions",
|
|
854
|
+
"refreshButtonTooltip": "Refresh version history"
|
|
850
855
|
}
|
|
851
856
|
}
|
|
852
857
|
}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
type Version = {
|
|
4
|
+
id: string;
|
|
5
|
+
date: Date;
|
|
6
|
+
user: string;
|
|
7
|
+
onClick?: () => void;
|
|
8
|
+
isDraft?: boolean;
|
|
9
|
+
isPublished?: boolean;
|
|
10
|
+
showMoreDropdown?: boolean;
|
|
11
|
+
moreDropdownProps?: MoreDropdownProps;
|
|
12
|
+
};
|
|
13
|
+
type MoreDropdownProps = {
|
|
14
|
+
menuItems: MenuItem[];
|
|
15
|
+
disabled?: boolean;
|
|
16
|
+
dropdownButtonProps?: Record<string, any>;
|
|
17
|
+
dropdownProps?: Record<string, any>;
|
|
18
|
+
};
|
|
19
|
+
type MenuItem = {
|
|
20
|
+
key: string;
|
|
21
|
+
label: string;
|
|
22
|
+
onClick: () => void;
|
|
23
|
+
prefix?: React.ReactNode;
|
|
24
|
+
suffix?: React.ReactNode;
|
|
25
|
+
disabled?: boolean;
|
|
26
|
+
[key: string]: any;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
*
|
|
30
|
+
* A React component that displays a timeline of versions with user information,
|
|
31
|
+
*
|
|
32
|
+
* dates, and status indicators. Each version can be a draft, published, or regular
|
|
33
|
+
*
|
|
34
|
+
* version with optional dropdown actions.
|
|
35
|
+
*
|
|
36
|
+
* undefined
|
|
37
|
+
*
|
|
38
|
+
* undefined
|
|
39
|
+
*
|
|
40
|
+
* Each version object in draftVersions and publishedVersions should have the
|
|
41
|
+
*
|
|
42
|
+
* following properties:
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
*
|
|
46
|
+
* {
|
|
47
|
+
* id: string, // Required: Unique identifier for the version
|
|
48
|
+
* date: Date, // Required: Date when the version was created
|
|
49
|
+
* user: string, // Required: Name of the user who created this version
|
|
50
|
+
* onClick: function, // Optional: Function called when version is clicked
|
|
51
|
+
* isDraft: boolean, // Optional: Whether this is a draft version
|
|
52
|
+
* isPublished: boolean, // Optional: Whether this is a published version
|
|
53
|
+
* showMoreDropdown: boolean, // Optional: Whether to show more dropdown menu
|
|
54
|
+
* moreDropdownProps: object, // Optional: Props for MoreDropdown component
|
|
55
|
+
* }
|
|
56
|
+
* @endexample
|
|
57
|
+
* @example
|
|
58
|
+
*
|
|
59
|
+
* import VersionHistory from "@bigbinary/neeto-molecules/VersionHistory";
|
|
60
|
+
*
|
|
61
|
+
* const MyComponent = () => {
|
|
62
|
+
* const [isOpen, setIsOpen] = useState(false);
|
|
63
|
+
*
|
|
64
|
+
* const draftVersions = [
|
|
65
|
+
* {
|
|
66
|
+
* id: "draft-1",
|
|
67
|
+
* date: new Date("2024-01-15T10:30:00"),
|
|
68
|
+
* user: "Oliver Smith",
|
|
69
|
+
* isDraft: true,
|
|
70
|
+
* },
|
|
71
|
+
* ];
|
|
72
|
+
*
|
|
73
|
+
* const publishedVersions = [
|
|
74
|
+
* {
|
|
75
|
+
* id: "pub-1",
|
|
76
|
+
* date: new Date("2024-01-14T15:45:00"),
|
|
77
|
+
* user: "Sam Smith",
|
|
78
|
+
* isPublished: true,
|
|
79
|
+
* },
|
|
80
|
+
* ];
|
|
81
|
+
*
|
|
82
|
+
* return (
|
|
83
|
+
* <VersionHistory
|
|
84
|
+
* isOpen={isOpen}
|
|
85
|
+
* onClose={() => setIsOpen(false)}
|
|
86
|
+
* draftVersions={draftVersions}
|
|
87
|
+
* publishedVersions={publishedVersions}
|
|
88
|
+
* />
|
|
89
|
+
* );
|
|
90
|
+
* };
|
|
91
|
+
* @endexample
|
|
92
|
+
* @example
|
|
93
|
+
*
|
|
94
|
+
* import VersionHistory from "@bigbinary/neeto-molecules/VersionHistory";
|
|
95
|
+
* import { Refresh } from "neetoicons";
|
|
96
|
+
*
|
|
97
|
+
* const MyComponent = () => {
|
|
98
|
+
* const [isOpen, setIsOpen] = useState(false);
|
|
99
|
+
*
|
|
100
|
+
* const draftVersions = [
|
|
101
|
+
* {
|
|
102
|
+
* id: "draft-1",
|
|
103
|
+
* date: new Date("2024-01-15T10:30:00"),
|
|
104
|
+
* user: "Oliver Smith",
|
|
105
|
+
* isDraft: true,
|
|
106
|
+
* },
|
|
107
|
+
* ];
|
|
108
|
+
*
|
|
109
|
+
* const publishedVersions = [
|
|
110
|
+
* {
|
|
111
|
+
* id: "pub-1",
|
|
112
|
+
* date: new Date(),
|
|
113
|
+
* user: "Sam Smith",
|
|
114
|
+
* isPublished: true,
|
|
115
|
+
* showMoreDropdown: true,
|
|
116
|
+
* moreDropdownProps: {
|
|
117
|
+
* menuItems: [
|
|
118
|
+
* {
|
|
119
|
+
* key: "revert",
|
|
120
|
+
* label: "Revert to this version",
|
|
121
|
+
* onClick: () => handleRevert("version-1"),
|
|
122
|
+
* prefix: <Refresh size={16} />,
|
|
123
|
+
* },
|
|
124
|
+
* ],
|
|
125
|
+
* },
|
|
126
|
+
* },
|
|
127
|
+
* ];
|
|
128
|
+
*
|
|
129
|
+
* return (
|
|
130
|
+
* <VersionHistory
|
|
131
|
+
* isOpen={isOpen}
|
|
132
|
+
* onClose={() => setIsOpen(false)}
|
|
133
|
+
* draftVersions={draftVersions}
|
|
134
|
+
* publishedVersions={publishedVersions}
|
|
135
|
+
* />
|
|
136
|
+
* );
|
|
137
|
+
* };
|
|
138
|
+
* @endexample
|
|
139
|
+
* @example
|
|
140
|
+
*
|
|
141
|
+
* import VersionHistory from "@bigbinary/neeto-molecules/VersionHistory";
|
|
142
|
+
*
|
|
143
|
+
* const MyComponent = () => {
|
|
144
|
+
* const [isOpen, setIsOpen] = useState(false);
|
|
145
|
+
*
|
|
146
|
+
* const handleRefresh = () => {
|
|
147
|
+
* // Fetch updated versions
|
|
148
|
+
* fetchVersions();
|
|
149
|
+
* };
|
|
150
|
+
*
|
|
151
|
+
* const draftVersions = [
|
|
152
|
+
* {
|
|
153
|
+
* id: "draft-1",
|
|
154
|
+
* date: new Date("2024-01-15T10:30:00"),
|
|
155
|
+
* user: "Oliver Smith",
|
|
156
|
+
* isDraft: true,
|
|
157
|
+
* },
|
|
158
|
+
* ];
|
|
159
|
+
*
|
|
160
|
+
* const publishedVersions = [
|
|
161
|
+
* {
|
|
162
|
+
* id: "version-1",
|
|
163
|
+
* date: new Date(),
|
|
164
|
+
* user: "Sam Smith",
|
|
165
|
+
* isPublished: true,
|
|
166
|
+
* showMoreDropdown: true,
|
|
167
|
+
* moreDropdownProps: {
|
|
168
|
+
* menuItems: [
|
|
169
|
+
* {
|
|
170
|
+
* key: "revert",
|
|
171
|
+
* label: "Revert to this version",
|
|
172
|
+
* onClick: () => handleRevert("version-1"),
|
|
173
|
+
* prefix: <Refresh size={16} />,
|
|
174
|
+
* },
|
|
175
|
+
* ],
|
|
176
|
+
* },
|
|
177
|
+
* },
|
|
178
|
+
* ];
|
|
179
|
+
*
|
|
180
|
+
* return (
|
|
181
|
+
* <VersionHistory
|
|
182
|
+
* isOpen={isOpen}
|
|
183
|
+
* onClose={() => setIsOpen(false)}
|
|
184
|
+
* paneTitle="Article Version History"
|
|
185
|
+
* showRefreshButton={true}
|
|
186
|
+
* onRefreshClick={handleRefresh}
|
|
187
|
+
* draftVersions={draftVersions}
|
|
188
|
+
* publishedVersions={publishedVersions}
|
|
189
|
+
* />
|
|
190
|
+
* );
|
|
191
|
+
* };
|
|
192
|
+
* @endexample
|
|
193
|
+
*/
|
|
194
|
+
declare const VersionHistory: React.FC<{
|
|
195
|
+
isOpen: boolean;
|
|
196
|
+
onClose: () => void;
|
|
197
|
+
isLoading?: boolean;
|
|
198
|
+
draftVersions?: Version[];
|
|
199
|
+
publishedVersions?: Version[];
|
|
200
|
+
paneTitle?: string;
|
|
201
|
+
showRefreshButton?: boolean;
|
|
202
|
+
onRefreshClick?: () => void;
|
|
203
|
+
}>;
|
|
204
|
+
|
|
205
|
+
export { VersionHistory as default };
|