oa-componentbook 1.0.1-stage.5 → 1.0.1-stage.50
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/build/components/oa-component-accordion/Accordion.js +16 -5
- package/build/components/oa-component-feedback-form/FeedbackForm.js +75 -0
- package/build/components/oa-component-feedback-tooltip/FeedbackTooltip.js +69 -0
- package/build/components/oa-component-info/CustomInfo.js +9 -4
- package/build/components/oa-component-info/styles.js +3 -3
- package/build/global-css/GlobalCss.js +2 -1
- package/build/global-css/GridLayout.js +1 -1
- package/build/global-css/commonStyles.js +11 -0
- package/build/images/oaChat.svg +5 -0
- package/build/index.js +28 -0
- package/build/layout/paymentAndConsent/CancelScreen.js +46 -0
- package/build/layout/paymentAndConsent/ConsentCard.js +68 -0
- package/build/layout/paymentAndConsent/DetailsCard.js +75 -0
- package/build/layout/paymentAndConsent/DetailsList.js +38 -0
- package/build/layout/paymentAndConsent/Header.js +33 -0
- package/build/layout/paymentAndConsent/InProgressScreen.js +46 -0
- package/build/layout/paymentAndConsent/Loader.js +21 -0
- package/build/layout/paymentAndConsent/Modal.js +28 -0
- package/build/layout/paymentAndConsent/PaymentAndConsent.js +22 -0
- package/build/layout/paymentAndConsent/PaymentCard.js +83 -0
- package/build/layout/paymentAndConsent/Section.js +34 -0
- package/build/layout/paymentAndConsent/SuccessScreen.js +46 -0
- package/build/layout/paymentAndConsent/TimeLineCard.js +28 -0
- package/build/layout/paymentAndConsent/TncList.js +32 -0
- package/build/layout/paymentAndConsent/style.js +12 -0
- package/build/widgets/oa-widget-add-spare-part/AddSparePartCollapseWidget.js +10 -9
- package/build/widgets/oa-widget-document-upload/DocUploadWidget.js +28 -28
- package/build/widgets/oa-widget-feedback/FeedbackWidget.js +83 -0
- package/build/widgets/oa-widget-feedback/styles.js +13 -0
- package/build/widgets/oa-widget-image-carousel/ImageCarouselWidget.js +257 -0
- package/build/widgets/oa-widget-image-carousel/styles.js +23 -0
- package/build/widgets/oa-widget-track-shipment/TrackShipmentWidget.js +4 -2
- package/build/widgets/oa-widget-track-shipment-list/TrackShipmentWidgetList.js +82 -84
- package/build/widgets/oa-widget-track-shipment-list/fn.js +32 -4
- package/package.json +5 -2
|
@@ -44,9 +44,9 @@ const getBase64 = file => new Promise((resolve, reject) => {
|
|
|
44
44
|
* @returns {undefined}
|
|
45
45
|
*/
|
|
46
46
|
const downloadFile = (base64String, fileName) => {
|
|
47
|
-
const link = document.createElement(
|
|
47
|
+
const link = document.createElement("a");
|
|
48
48
|
link.href = base64String;
|
|
49
|
-
link.download = fileName ||
|
|
49
|
+
link.download = fileName || "download";
|
|
50
50
|
link.click();
|
|
51
51
|
};
|
|
52
52
|
|
|
@@ -80,21 +80,21 @@ function DocumentUpload(props) {
|
|
|
80
80
|
} = props;
|
|
81
81
|
const [previewOpen, setPreviewOpen] = (0, _react.useState)(false);
|
|
82
82
|
const [previewImage, setPreviewImage] = (0, _react.useState)(null);
|
|
83
|
-
const [previewTitle, setPreviewTitle] = (0, _react.useState)(
|
|
83
|
+
const [previewTitle, setPreviewTitle] = (0, _react.useState)("");
|
|
84
84
|
const [loading, setLoading] = (0, _react.useState)(false);
|
|
85
85
|
const [fileList, setFileList] = (0, _react.useState)(uploadedDocuments);
|
|
86
86
|
const handleCancel = () => setPreviewOpen(false);
|
|
87
87
|
|
|
88
88
|
/**
|
|
89
|
-
|
|
90
|
-
|
|
89
|
+
* Determines if the given file is an image file based on its file extension.
|
|
90
|
+
*/
|
|
91
91
|
function isImageFile(fileName) {
|
|
92
92
|
var _fileName$split;
|
|
93
93
|
// Extract the file extension from the file name
|
|
94
|
-
const fileExtension = fileName === null || fileName === void 0 || (_fileName$split = fileName.split(
|
|
94
|
+
const fileExtension = fileName === null || fileName === void 0 || (_fileName$split = fileName.split(".")) === null || _fileName$split === void 0 || (_fileName$split = _fileName$split.pop()) === null || _fileName$split === void 0 ? void 0 : _fileName$split.toLowerCase();
|
|
95
95
|
|
|
96
96
|
// Define an array of image file extensions
|
|
97
|
-
const imageFileExtensions = [
|
|
97
|
+
const imageFileExtensions = ["jpg", "jpeg", "png", "gif", "bmp", "tiff", "svg"];
|
|
98
98
|
|
|
99
99
|
// Check if the file extension is in the array of image file extensions
|
|
100
100
|
if (imageFileExtensions.indexOf(fileExtension) !== -1) {
|
|
@@ -143,15 +143,15 @@ function DocumentUpload(props) {
|
|
|
143
143
|
fileList: newFileList,
|
|
144
144
|
file
|
|
145
145
|
} = _ref;
|
|
146
|
-
if (file.status ===
|
|
147
|
-
onChange(null,
|
|
146
|
+
if (file.status === "removed") {
|
|
147
|
+
onChange(null, "removed");
|
|
148
148
|
}
|
|
149
149
|
const modifiedList = await Promise.all(newFileList.map(async files => {
|
|
150
150
|
let modifiedFile = files;
|
|
151
151
|
setLoading(true);
|
|
152
152
|
try {
|
|
153
153
|
await onChange(files);
|
|
154
|
-
modifiedFile.status =
|
|
154
|
+
modifiedFile.status = "done";
|
|
155
155
|
if (!isImageFile(file === null || file === void 0 ? void 0 : file.name)) {
|
|
156
156
|
var _modifiedFile, _modifiedFile2;
|
|
157
157
|
modifiedFile.url = _PdfSampleImage.default;
|
|
@@ -170,7 +170,7 @@ function DocumentUpload(props) {
|
|
|
170
170
|
const uploadButton = /*#__PURE__*/_react.default.createElement("button", {
|
|
171
171
|
style: {
|
|
172
172
|
border: 0,
|
|
173
|
-
background:
|
|
173
|
+
background: "none"
|
|
174
174
|
},
|
|
175
175
|
type: "button"
|
|
176
176
|
}, loading ? /*#__PURE__*/_react.default.createElement(_icons.LoadingOutlined, null) : /*#__PURE__*/_react.default.createElement(_CustomIcon.default, {
|
|
@@ -187,25 +187,25 @@ function DocumentUpload(props) {
|
|
|
187
187
|
color: "negative"
|
|
188
188
|
}, " *"))), subText && /*#__PURE__*/_react.default.createElement("div", {
|
|
189
189
|
style: {
|
|
190
|
-
whiteSpace:
|
|
190
|
+
whiteSpace: "pre-line"
|
|
191
191
|
}
|
|
192
192
|
}, /*#__PURE__*/_react.default.createElement(_Typography.default, {
|
|
193
193
|
color: "secondary-content",
|
|
194
194
|
className: "type-b2-400"
|
|
195
|
-
}, subText)), infoText && /*#__PURE__*/_react.default.createElement(
|
|
196
|
-
color: "
|
|
197
|
-
|
|
198
|
-
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
195
|
+
}, subText)), infoText && /*#__PURE__*/_react.default.createElement(_Typography.default, {
|
|
196
|
+
color: "negative",
|
|
197
|
+
className: "type-b2-400"
|
|
198
|
+
}, infoText)), /*#__PURE__*/_react.default.createElement("div", {
|
|
199
199
|
className: "uploadDiv"
|
|
200
200
|
}, multipleDoc > 0 && /*#__PURE__*/_react.default.createElement("em", null, multipleDoc), /*#__PURE__*/_react.default.createElement(_antd.ConfigProvider, {
|
|
201
201
|
theme: {
|
|
202
202
|
token: {
|
|
203
|
-
colorBorder: _ColorVariablesMap.default[
|
|
203
|
+
colorBorder: _ColorVariablesMap.default["--color-primary"],
|
|
204
204
|
borderRadiusLG: 4,
|
|
205
|
-
colorPrimaryBorder: _ColorVariablesMap.default[
|
|
206
|
-
colorFillAlter: _ColorVariablesMap.default[
|
|
207
|
-
colorError: _ColorVariablesMap.default[
|
|
208
|
-
colorText: _ColorVariablesMap.default[
|
|
205
|
+
colorPrimaryBorder: _ColorVariablesMap.default["--color-divider"],
|
|
206
|
+
colorFillAlter: _ColorVariablesMap.default["--color-secondary-background"],
|
|
207
|
+
colorError: _ColorVariablesMap.default["--color-negative"],
|
|
208
|
+
colorText: _ColorVariablesMap.default["--color-primary"]
|
|
209
209
|
}
|
|
210
210
|
}
|
|
211
211
|
}, /*#__PURE__*/_react.default.createElement(_antd.Form.Item, {
|
|
@@ -229,12 +229,12 @@ function DocumentUpload(props) {
|
|
|
229
229
|
onCancel: handleCancel
|
|
230
230
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
231
231
|
style: {
|
|
232
|
-
textAlign:
|
|
232
|
+
textAlign: "center"
|
|
233
233
|
}
|
|
234
|
-
},
|
|
234
|
+
}, " ", previewImage ? /*#__PURE__*/_react.default.createElement("img", {
|
|
235
235
|
alt: "example",
|
|
236
236
|
style: {
|
|
237
|
-
width:
|
|
237
|
+
width: "100%"
|
|
238
238
|
},
|
|
239
239
|
src: previewImage
|
|
240
240
|
}) : /*#__PURE__*/_react.default.createElement(_CustomLoader.default, null))));
|
|
@@ -255,10 +255,10 @@ DocumentUpload.propTypes = {
|
|
|
255
255
|
DocumentUpload.defaultProps = {
|
|
256
256
|
uploadedDocuments: [],
|
|
257
257
|
onChange: () => {},
|
|
258
|
-
subText:
|
|
259
|
-
heading:
|
|
260
|
-
formName:
|
|
261
|
-
infoText:
|
|
258
|
+
subText: "",
|
|
259
|
+
heading: "",
|
|
260
|
+
formName: "",
|
|
261
|
+
infoText: "",
|
|
262
262
|
multipleDoc: 0,
|
|
263
263
|
showDelete: true,
|
|
264
264
|
getPreview: () => {},
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.weak-map.js");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
9
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _FeedbackForm = _interopRequireDefault(require("../../components/oa-component-feedback-form/FeedbackForm"));
|
|
11
|
+
var _FeedbackTooltip = _interopRequireDefault(require("../../components/oa-component-feedback-tooltip/FeedbackTooltip"));
|
|
12
|
+
var _styles = require("./styles");
|
|
13
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
15
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
16
|
+
/** *********** ✨ Codeium Command ⭐ ************ */
|
|
17
|
+
/**
|
|
18
|
+
* FeedbackWidget renders a feedback form and a tooltip with a button to open the form.
|
|
19
|
+
* The widget uses a useEffect hook to set the initial state of the component based on
|
|
20
|
+
* whether the feedback button has been clicked in the past (stored in localStorage).
|
|
21
|
+
* The component also uses a useCallback hook to memoize the functions used to set the
|
|
22
|
+
* state and to handle the button clicks.
|
|
23
|
+
*
|
|
24
|
+
* @param {Object} props - The properties object.
|
|
25
|
+
* @param {string} props.scriptSrc - The source URL for the script tag.
|
|
26
|
+
* @param {string} props.iframeSrc - The source URL for the iframe.
|
|
27
|
+
* @param {ReactElement} props.WrapperComponent - The component to wrap the FeedbackForm component.
|
|
28
|
+
* @param {Function} props.setOpen - The function to call when the feedback button is clicked.
|
|
29
|
+
* @param {boolean} props.open - The current state of the feedback form.
|
|
30
|
+
*
|
|
31
|
+
* @returns {ReactElement} The FeedbackWidget component.
|
|
32
|
+
*/
|
|
33
|
+
/** **** 1deff343-01ad-4bdd-848d-22d1f519f3ff ****** */
|
|
34
|
+
|
|
35
|
+
function FeedbackWidget(props) {
|
|
36
|
+
const {
|
|
37
|
+
scriptSrc,
|
|
38
|
+
iframeSrc,
|
|
39
|
+
WrapperComponent,
|
|
40
|
+
setOpen,
|
|
41
|
+
open,
|
|
42
|
+
onClose
|
|
43
|
+
} = props !== null && props !== void 0 ? props : {};
|
|
44
|
+
const [hasClickedFeedback, setHasClickedFeedback] = (0, _react.useState)(true);
|
|
45
|
+
const [tooltipOpen, setTooltipOpen] = (0, _react.useState)(true);
|
|
46
|
+
(0, _react.useEffect)(() => {
|
|
47
|
+
const feedbackClicked = localStorage.getItem('feedbackButtonClicked');
|
|
48
|
+
if (!feedbackClicked) {
|
|
49
|
+
setHasClickedFeedback(false);
|
|
50
|
+
}
|
|
51
|
+
}, []);
|
|
52
|
+
const onFeedbackButtonClick = (0, _react.useCallback)(() => {
|
|
53
|
+
setTooltipOpen(false);
|
|
54
|
+
setOpen(true);
|
|
55
|
+
localStorage.setItem('feedbackButtonClicked', true);
|
|
56
|
+
setHasClickedFeedback(true);
|
|
57
|
+
}, [setOpen]);
|
|
58
|
+
const onButtonClick = (0, _react.useCallback)(() => {
|
|
59
|
+
setTooltipOpen(false);
|
|
60
|
+
localStorage.setItem('feedbackButtonClicked', true);
|
|
61
|
+
setHasClickedFeedback(true);
|
|
62
|
+
}, [setOpen]);
|
|
63
|
+
return /*#__PURE__*/_react.default.createElement(_styles.OaFeedBackStyle, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
64
|
+
className: !hasClickedFeedback && 'OaMask'
|
|
65
|
+
}), /*#__PURE__*/_react.default.createElement(_FeedbackTooltip.default, {
|
|
66
|
+
setOpen: setOpen,
|
|
67
|
+
hasClickedFeedback: hasClickedFeedback,
|
|
68
|
+
setHasClickedFeedback: setHasClickedFeedback,
|
|
69
|
+
tooltipTitle: "We Value Your Feedback!",
|
|
70
|
+
tooltipDescription: "Please let us know your thoughts.",
|
|
71
|
+
tooltipButtonLabel: "Okay",
|
|
72
|
+
feedbackButtonLabel: "Give Feedback",
|
|
73
|
+
onFeedbackButtonClick: onFeedbackButtonClick,
|
|
74
|
+
onButtonClick: onButtonClick,
|
|
75
|
+
tooltipOpen: tooltipOpen
|
|
76
|
+
}), /*#__PURE__*/_react.default.createElement(WrapperComponent, null, /*#__PURE__*/_react.default.createElement(_FeedbackForm.default, {
|
|
77
|
+
scriptSrc: scriptSrc,
|
|
78
|
+
iframeSrc: iframeSrc,
|
|
79
|
+
open: open,
|
|
80
|
+
onClose: onClose
|
|
81
|
+
})));
|
|
82
|
+
}
|
|
83
|
+
var _default = exports.default = FeedbackWidget;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.OaFeedBackStyle = void 0;
|
|
7
|
+
var _antd = require("antd");
|
|
8
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
9
|
+
var _templateObject;
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
|
12
|
+
var _default = exports.default = {};
|
|
13
|
+
const OaFeedBackStyle = exports.OaFeedBackStyle = _styledComponents.default.aside(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .whiteBg{\n position: fixed;\n top: 50%;\n right: 0;\n transform: translate(0%, -50%) rotate(-90deg);\n cursor: pointer;\n z-index: 999;\n }\n .whiteBg button{\n background: #212121 !important;\n border: 1px solid #212121;\n }\n\n .OaMask{\n width: 100%;\n position: fixed;\n background: rgb(0 0 0 / 70%);\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 9;\n top: 0;\n }\n"])));
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.symbol.description.js");
|
|
4
|
+
require("core-js/modules/es.weak-map.js");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
10
|
+
require("core-js/modules/es.promise.js");
|
|
11
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
12
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
13
|
+
var _antd = require("antd");
|
|
14
|
+
var _icons = require("@ant-design/icons");
|
|
15
|
+
var _TouchAppRounded = _interopRequireDefault(require("@material-ui/icons/TouchAppRounded"));
|
|
16
|
+
var _reactZoomPanPinch = require("react-zoom-pan-pinch");
|
|
17
|
+
var _Fullscreen = _interopRequireDefault(require("@material-ui/icons/Fullscreen"));
|
|
18
|
+
var _ArrowForwardRounded = _interopRequireDefault(require("@material-ui/icons/ArrowForwardRounded"));
|
|
19
|
+
var _ArrowBackRounded = _interopRequireDefault(require("@material-ui/icons/ArrowBackRounded"));
|
|
20
|
+
var _CustomButton = _interopRequireDefault(require("../../components/oa-component-button/CustomButton"));
|
|
21
|
+
var _CustomModal = _interopRequireDefault(require("../../components/oa-component-modal/CustomModal"));
|
|
22
|
+
var _styles = require("./styles");
|
|
23
|
+
var _MaterialIcon = _interopRequireDefault(require("../../components/oa-component-icons/MaterialIcon"));
|
|
24
|
+
var _CustomLoader = _interopRequireDefault(require("../../components/oa-component-loader/CustomLoader"));
|
|
25
|
+
var _CustomDrawer = _interopRequireDefault(require("../../components/oa-component-drawer/CustomDrawer"));
|
|
26
|
+
var _Typography = _interopRequireDefault(require("../../components/oa-component-typography/Typography"));
|
|
27
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
28
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
29
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
30
|
+
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; }
|
|
31
|
+
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; }
|
|
32
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
33
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
34
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
35
|
+
/**
|
|
36
|
+
* ImageCarouselWidget is a component that displays images in a carousel and allows zooming and switching between original and heatmap images.
|
|
37
|
+
* @param {object} props The props passed to the component
|
|
38
|
+
* @param {array} [props.images={}] An object with keys representing image types and values as arrays of images
|
|
39
|
+
* @param {boolean} [props.visible=false] Whether the modal is visible
|
|
40
|
+
* @param {function} [props.onClose] A function that is called when the modal is closed
|
|
41
|
+
* @returns {object} A React component
|
|
42
|
+
*/
|
|
43
|
+
function ImageCarouselWidget(_ref) {
|
|
44
|
+
let {
|
|
45
|
+
images = [],
|
|
46
|
+
visible,
|
|
47
|
+
onClose,
|
|
48
|
+
headingSuffixText,
|
|
49
|
+
typeToNamemapping,
|
|
50
|
+
s3DownloadApiUrl,
|
|
51
|
+
initialImageType
|
|
52
|
+
} = _ref;
|
|
53
|
+
const [currentIndex, setCurrentIndex] = (0, _react.useState)(0);
|
|
54
|
+
const [showHeatmap, setShowHeatmap] = (0, _react.useState)(initialImageType === 'heatmap');
|
|
55
|
+
const [fullscreen, setFullscreen] = (0, _react.useState)(false);
|
|
56
|
+
const [imageUrls, setImageUrls] = (0, _react.useState)([]);
|
|
57
|
+
const [loading, setLoading] = (0, _react.useState)(false);
|
|
58
|
+
const carouselRef = _react.default.useRef(null);
|
|
59
|
+
|
|
60
|
+
// Fetch image URL by UUID
|
|
61
|
+
const fetchImageUrl = uuid => fetch("".concat(s3DownloadApiUrl).concat(uuid)).then(response => response.json()).then(data => {
|
|
62
|
+
var _data$data;
|
|
63
|
+
return data === null || data === void 0 || (_data$data = data.data) === null || _data$data === void 0 ? void 0 : _data$data.downloadUrl;
|
|
64
|
+
}) // Assuming the API response has `src` key for the image URL
|
|
65
|
+
.catch(error => {
|
|
66
|
+
console.error('Error fetching image URL:', error);
|
|
67
|
+
return ''; // Return an empty string if there's an error
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
// Fetch image URLs for all grouped images
|
|
71
|
+
(0, _react.useEffect)(() => {
|
|
72
|
+
const fetchImages = async () => {
|
|
73
|
+
setLoading(true);
|
|
74
|
+
const urls = await Promise.all(images.map(async img => {
|
|
75
|
+
const imageSrcUrl = await fetchImageUrl(showHeatmap ? img.heatmapDocId : img.originalDocId); // Fetch URL for the image
|
|
76
|
+
return _objectSpread(_objectSpread({}, img), showHeatmap ? {
|
|
77
|
+
heatmapImageUrl: imageSrcUrl
|
|
78
|
+
} : {
|
|
79
|
+
originalImageUrl: imageSrcUrl
|
|
80
|
+
});
|
|
81
|
+
}));
|
|
82
|
+
console.log(urls);
|
|
83
|
+
setImageUrls(urls);
|
|
84
|
+
setLoading(false);
|
|
85
|
+
};
|
|
86
|
+
fetchImages();
|
|
87
|
+
}, [images === null || images === void 0 ? void 0 : images.length]);
|
|
88
|
+
|
|
89
|
+
// Enter fullscreen for the whole document
|
|
90
|
+
const enterFullscreen = () => {
|
|
91
|
+
if (document.documentElement.requestFullscreen) {
|
|
92
|
+
document.documentElement.requestFullscreen();
|
|
93
|
+
} else if (document.documentElement.mozRequestFullScreen) {
|
|
94
|
+
// Firefox
|
|
95
|
+
document.documentElement.mozRequestFullScreen();
|
|
96
|
+
} else if (document.documentElement.webkitRequestFullscreen) {
|
|
97
|
+
// Chrome, Safari, Opera
|
|
98
|
+
document.documentElement.webkitRequestFullscreen();
|
|
99
|
+
} else if (document.documentElement.msRequestFullscreen) {
|
|
100
|
+
// IE/Edge
|
|
101
|
+
document.documentElement.msRequestFullscreen();
|
|
102
|
+
}
|
|
103
|
+
setFullscreen(true);
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
// Exit fullscreen
|
|
107
|
+
const exitFullscreen = () => {
|
|
108
|
+
if (document.exitFullscreen) {
|
|
109
|
+
document.exitFullscreen();
|
|
110
|
+
} else if (document.mozCancelFullScreen) {
|
|
111
|
+
// Firefox
|
|
112
|
+
document.mozCancelFullScreen();
|
|
113
|
+
} else if (document.webkitExitFullscreen) {
|
|
114
|
+
// Chrome, Safari and Opera
|
|
115
|
+
document.webkitExitFullscreen();
|
|
116
|
+
} else if (document.msExitFullscreen) {
|
|
117
|
+
// IE/Edge
|
|
118
|
+
document.msExitFullscreen();
|
|
119
|
+
}
|
|
120
|
+
setFullscreen(false);
|
|
121
|
+
};
|
|
122
|
+
const handleFullscreenToggle = () => {
|
|
123
|
+
if (fullscreen) {
|
|
124
|
+
exitFullscreen();
|
|
125
|
+
} else {
|
|
126
|
+
enterFullscreen();
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
const handleImageChange = newIndex => {
|
|
130
|
+
setCurrentIndex(newIndex);
|
|
131
|
+
};
|
|
132
|
+
const handleShowHeatmap = async () => {
|
|
133
|
+
const currentViewType = !showHeatmap; // Toggle the current view mode (show heatmap or not)
|
|
134
|
+
setLoading(true);
|
|
135
|
+
|
|
136
|
+
// Fetching URLs for all images based on the new view mode
|
|
137
|
+
const updatedImages = await Promise.all(imageUrls.map(async img => {
|
|
138
|
+
var _img$heatmapImageUrl, _img$originalImageUrl;
|
|
139
|
+
// Check if the image is already fetched
|
|
140
|
+
const isImageAlreadyFetched = currentViewType && ((_img$heatmapImageUrl = img.heatmapImageUrl) === null || _img$heatmapImageUrl === void 0 ? void 0 : _img$heatmapImageUrl.length) > 0 || !currentViewType && ((_img$originalImageUrl = img.originalImageUrl) === null || _img$originalImageUrl === void 0 ? void 0 : _img$originalImageUrl.length) > 0;
|
|
141
|
+
// Fetch the image URL only if it's not already fetched
|
|
142
|
+
if (!isImageAlreadyFetched) {
|
|
143
|
+
const imageSrcUrl = await fetchImageUrl(currentViewType ? img.heatmapDocId : img.originalDocId);
|
|
144
|
+
// Return the updated image object with the appropriate URL
|
|
145
|
+
return _objectSpread(_objectSpread({}, img), currentViewType ? {
|
|
146
|
+
heatmapImageUrl: imageSrcUrl
|
|
147
|
+
} : {
|
|
148
|
+
originalImageUrl: imageSrcUrl
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
// If image is already fetched, return it as is
|
|
152
|
+
return img;
|
|
153
|
+
}));
|
|
154
|
+
|
|
155
|
+
// Update state with the new image URLs
|
|
156
|
+
setImageUrls(updatedImages);
|
|
157
|
+
setLoading(false);
|
|
158
|
+
setShowHeatmap(currentViewType); // Toggle the view mode
|
|
159
|
+
};
|
|
160
|
+
const currentImage = imageUrls[currentIndex];
|
|
161
|
+
|
|
162
|
+
// Conditionally hide the buttons when on the first or last image
|
|
163
|
+
const isFirstImage = currentIndex === 0;
|
|
164
|
+
const isLastImage = currentIndex === imageUrls.length - 1;
|
|
165
|
+
return /*#__PURE__*/_react.default.createElement(_styles.ImageCarouselModalStyle, null, /*#__PURE__*/_react.default.createElement(_styles.GlobalStyleForImageCarousel, null), /*#__PURE__*/_react.default.createElement(_CustomModal.default, {
|
|
166
|
+
open: visible,
|
|
167
|
+
onCancel: onClose,
|
|
168
|
+
footer: null,
|
|
169
|
+
className: fullscreen ? 'fullscreenModal imageCarouselModalStyle' : 'imageCarouselModalStyle'
|
|
170
|
+
}, /*#__PURE__*/_react.default.createElement(_CustomLoader.default, {
|
|
171
|
+
spinning: loading
|
|
172
|
+
}, !fullscreen && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Typography.default, {
|
|
173
|
+
className: "type-t2-700",
|
|
174
|
+
color: "primary-content"
|
|
175
|
+
}, typeToNamemapping && typeToNamemapping[currentImage === null || currentImage === void 0 ? void 0 : currentImage.imageType] ? typeToNamemapping[currentImage === null || currentImage === void 0 ? void 0 : currentImage.imageType] : currentImage === null || currentImage === void 0 ? void 0 : currentImage.imageType, ' ', headingSuffixText), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_Typography.default, {
|
|
176
|
+
className: "type-b3-400",
|
|
177
|
+
color: "negative"
|
|
178
|
+
}, currentImage === null || currentImage === void 0 ? void 0 : currentImage.rejectReason)), /*#__PURE__*/_react.default.createElement("div", {
|
|
179
|
+
className: "margin-top-24 margin-bottom-12"
|
|
180
|
+
}, /*#__PURE__*/_react.default.createElement(_CustomButton.default, {
|
|
181
|
+
onClick: handleShowHeatmap,
|
|
182
|
+
type: "text-only",
|
|
183
|
+
label: showHeatmap ? 'View Original Image' : 'View Heatmap Image'
|
|
184
|
+
})), /*#__PURE__*/_react.default.createElement(_styles.ImageCarouselModalStyle, null, /*#__PURE__*/_react.default.createElement(_antd.Carousel, {
|
|
185
|
+
ref: carouselRef,
|
|
186
|
+
afterChange: handleImageChange,
|
|
187
|
+
dots: true,
|
|
188
|
+
infinite: true
|
|
189
|
+
}, imageUrls.map(img => /*#__PURE__*/_react.default.createElement("div", {
|
|
190
|
+
className: "carouselItem",
|
|
191
|
+
key: img.imageType
|
|
192
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
193
|
+
className: "imageCarouselIconZoom"
|
|
194
|
+
}, /*#__PURE__*/_react.default.createElement(_MaterialIcon.default, {
|
|
195
|
+
icon: _Fullscreen.default,
|
|
196
|
+
onClick: handleFullscreenToggle
|
|
197
|
+
})), /*#__PURE__*/_react.default.createElement("img", {
|
|
198
|
+
src: showHeatmap ? img.heatmapImageUrl : img.originalImageUrl,
|
|
199
|
+
alt: img.imageType,
|
|
200
|
+
style: {
|
|
201
|
+
width: '100%',
|
|
202
|
+
objectFit: 'contain'
|
|
203
|
+
}
|
|
204
|
+
})))), window.innerWidth > 600 && /*#__PURE__*/_react.default.createElement(_styles.CarouselButtons, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
205
|
+
className: "sliderArrowSection"
|
|
206
|
+
}, !isFirstImage && /*#__PURE__*/_react.default.createElement(_MaterialIcon.default, {
|
|
207
|
+
color: "primary-content",
|
|
208
|
+
className: "leftArrow",
|
|
209
|
+
size: 24,
|
|
210
|
+
icon: _ArrowBackRounded.default,
|
|
211
|
+
onClick: () => carouselRef.current.prev()
|
|
212
|
+
}), !isLastImage && /*#__PURE__*/_react.default.createElement(_MaterialIcon.default, {
|
|
213
|
+
color: "primary-content",
|
|
214
|
+
className: "rightArrow",
|
|
215
|
+
size: 24,
|
|
216
|
+
icon: _ArrowForwardRounded.default,
|
|
217
|
+
onClick: () => carouselRef.current.next()
|
|
218
|
+
}))))), fullscreen && /*#__PURE__*/_react.default.createElement(_styles.FullscreenZoom, null, /*#__PURE__*/_react.default.createElement(_Typography.default, {
|
|
219
|
+
className: "type-t2-700",
|
|
220
|
+
color: "primary-background"
|
|
221
|
+
}, typeToNamemapping && typeToNamemapping[currentImage === null || currentImage === void 0 ? void 0 : currentImage.imageType] ? typeToNamemapping[currentImage === null || currentImage === void 0 ? void 0 : currentImage.imageType] : currentImage === null || currentImage === void 0 ? void 0 : currentImage.imageType, ' ', headingSuffixText), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_Typography.default, {
|
|
222
|
+
className: "type-b3-400",
|
|
223
|
+
color: "primary-background"
|
|
224
|
+
}, currentImage === null || currentImage === void 0 ? void 0 : currentImage.rejectReason)), /*#__PURE__*/_react.default.createElement(_styles.CloseButtonStyle, null, /*#__PURE__*/_react.default.createElement(_icons.CloseOutlined, {
|
|
225
|
+
onClick: handleFullscreenToggle
|
|
226
|
+
})), /*#__PURE__*/_react.default.createElement(_styles.ZoomImgBox, null, /*#__PURE__*/_react.default.createElement(_reactZoomPanPinch.TransformWrapper, null, /*#__PURE__*/_react.default.createElement(_reactZoomPanPinch.TransformComponent, null, /*#__PURE__*/_react.default.createElement("img", {
|
|
227
|
+
src: showHeatmap ? currentImage === null || currentImage === void 0 ? void 0 : currentImage.heatmapImageUrl : currentImage === null || currentImage === void 0 ? void 0 : currentImage.originalImageUrl,
|
|
228
|
+
alt: currentImage === null || currentImage === void 0 ? void 0 : currentImage.imageType
|
|
229
|
+
})))), /*#__PURE__*/_react.default.createElement("div", {
|
|
230
|
+
className: "pinchZoom"
|
|
231
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
232
|
+
className: "margin-right-16"
|
|
233
|
+
}, /*#__PURE__*/_react.default.createElement(_MaterialIcon.default, {
|
|
234
|
+
icon: _TouchAppRounded.default,
|
|
235
|
+
size: 20,
|
|
236
|
+
color: "primary-background"
|
|
237
|
+
})), /*#__PURE__*/_react.default.createElement(_Typography.default, {
|
|
238
|
+
className: "type-b2-400",
|
|
239
|
+
color: "primary-background"
|
|
240
|
+
}, "Pinch in/out to zoom"))))));
|
|
241
|
+
}
|
|
242
|
+
ImageCarouselWidget.propTypes = {
|
|
243
|
+
images: _propTypes.default.array.isRequired,
|
|
244
|
+
visible: _propTypes.default.bool.isRequired,
|
|
245
|
+
onClose: _propTypes.default.func.isRequired,
|
|
246
|
+
headingSuffixText: _propTypes.default.string,
|
|
247
|
+
typeToNamemapping: _propTypes.default.object,
|
|
248
|
+
s3DownloadApiUrl: _propTypes.default.string,
|
|
249
|
+
initialImageType: _propTypes.default.string
|
|
250
|
+
};
|
|
251
|
+
ImageCarouselWidget.defaultProps = {
|
|
252
|
+
headingSuffixText: 'Damage',
|
|
253
|
+
typeToNamemapping: {},
|
|
254
|
+
s3DownloadApiUrl: '',
|
|
255
|
+
initialImageType: 'heatmap'
|
|
256
|
+
};
|
|
257
|
+
var _default = exports.default = ImageCarouselWidget;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.weak-map.js");
|
|
4
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = exports.ZoomImgBox = exports.PinchZoom = exports.ImageCarouselWidgetStyle = exports.ImageCarouselModalStyle = exports.GlobalStyleForImageCarousel = exports.FullscreenZoom = exports.CloseButtonStyle = exports.CarouselStyle = exports.CarouselButtons = void 0;
|
|
9
|
+
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
10
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9;
|
|
11
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
12
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
13
|
+
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
|
14
|
+
var _default = exports.default = {};
|
|
15
|
+
const ImageCarouselWidgetStyle = exports.ImageCarouselWidgetStyle = _styledComponents.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n\n\n\n"])));
|
|
16
|
+
const CarouselStyle = exports.CarouselStyle = _styledComponents.default.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n\n"])));
|
|
17
|
+
const ZoomImgBox = exports.ZoomImgBox = _styledComponents.default.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n\nheight: calc(100vh - 150px);\n display: flex;\n align-items: center;\n justify-content: center; margin-bottom: 12px;\n\n"])));
|
|
18
|
+
const PinchZoom = exports.PinchZoom = _styledComponents.default.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n display: flex;\n justify-content: center;\n align-items: center;\n"])));
|
|
19
|
+
const CloseButtonStyle = exports.CloseButtonStyle = _styledComponents.default.div(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n background: #fff;\n border-radius: 50%;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n top: -12px;\n right: 0;\n cursor: pointer\n"])));
|
|
20
|
+
const FullscreenZoom = exports.FullscreenZoom = _styledComponents.default.div(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n .pinchZoom{ \n display: flex;\n justify-content: center;\n align-items: center;\n\n .closeBtn{background: #fff;\n border-radius: 50%;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n top: -12px;\n right: 0;\n cursor: pointer;\n}\n}\n"])));
|
|
21
|
+
const ImageCarouselModalStyle = exports.ImageCarouselModalStyle = _styledComponents.default.div(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n\n.ant-carousel{ background:#F6F6F6; max-width:550px; padding:24px 48px 56px 48px; border-radius:16px;}\n\n\n\n.ant-carousel .slick-dots li {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n margin-inline: 4px;\n padding: 0;\n text-align: center;\n text-indent: -999px;\n vertical-align: top;\n}\n\n.ant-carousel .slick-dots li button {\n width: 10px;\n height: 10px;\n background: #959595;\n border: 0;\n opacity: 1;\n border-radius: 50%;\n}\n\n.ant-carousel .slick-dots li.slick-active button {background: #014FC5 !important;}\n.carouselItem{ display: flex !important;\n align-items: center;\n justify-content: center;}\n\n\n @media only screen and (max-width: 600px) {\n .imageCarouselIconZoom{display:flex !important;}\n .ant-carousel{ background: no-repeat;\n max-width: none;\n padding: 0;\n border-radius: 0;}\n\n}\n\n\n\n.imageCarouselIconZoom{background: #fff; display: none;\n border-radius: 4px;\n width: 24px;\n height: 24px;\n justify-content: center;\n align-items: center; right: 8px;\n position: absolute;\n top: 8px; z-index:9;\n}\n.imageCarouselIconZoom svg{font-size:20px !important; margin-top:3px;}\n.imageCarouselIconZoom button{ height: auto;\n line-height: normal;}\n.carouselItem {position: relative;}\n.carouselItem img{border-radius:8px;}\n\n.ant-carousel .slick-dots-bottom { bottom: -30px;}\n.carouselItem{height:100%};\n.slick-slide > div{height:100%;}\n.fullscreenModal .ant-modal-close{display:none;}\n.closeBtn{background: #fff;\n border-radius: 50%;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n top: -12px;\n right: 0;\n cursor: pointer;}\n\n .zoomImgBox{display:block;}\n\n"])));
|
|
22
|
+
const GlobalStyleForImageCarousel = exports.GlobalStyleForImageCarousel = (0, _styledComponents.createGlobalStyle)(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n\n.imageCarouselModalStyle .ant-modal-body{max-height: none; height:100%;}\n.fullscreenModal .ant-modal-content{background:#000;}\n.fullscreenModal .ant-modal-close{display:none;}\n.ant-modal{ width:auto !important;}\n\n\n@media only screen and (max-width: 600px) {\n .imageCarouselModalStyle .ant-modal-content {top: 0; border-radius: 0px;}\n .slick-slide{height:calc(100vh - 210px) !important; background:#000; border-radius:8px;}\n\n}\n"])));
|
|
23
|
+
const CarouselButtons = exports.CarouselButtons = _styledComponents.default.div(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n\n.sliderArrowSection{position: absolute;\n top: 57%;\n width: 100%;}\n\n .leftArrow {\n position: absolute;\n left: 6px;\n top: 0;\n}\n .rightArrow{position: absolute;\n right: 6px;\n top: 0;}\n\n\n"])));
|
|
@@ -121,7 +121,9 @@ function TrackShipmentWidget(_ref) {
|
|
|
121
121
|
}, /*#__PURE__*/_react.default.createElement(_CustomTimeline.default, {
|
|
122
122
|
currentStep: isOnDeliveryStage ? stepsData.length : stepsData.length - 1,
|
|
123
123
|
stepsData: stepsData
|
|
124
|
-
})), errorReason && /*#__PURE__*/_react.default.createElement(
|
|
124
|
+
})), errorReason && /*#__PURE__*/_react.default.createElement("div", {
|
|
125
|
+
className: "margin-top-16 margin-bottom-16"
|
|
126
|
+
}, /*#__PURE__*/_react.default.createElement(_CustomInfo.default, {
|
|
125
127
|
iconConfig: {
|
|
126
128
|
icon: /*#__PURE__*/_react.default.createElement(_MaterialIcon.default, {
|
|
127
129
|
color: "warning",
|
|
@@ -131,7 +133,7 @@ function TrackShipmentWidget(_ref) {
|
|
|
131
133
|
position: 'left'
|
|
132
134
|
},
|
|
133
135
|
description: errorReason
|
|
134
|
-
}), (tableData === null || tableData === void 0 ? void 0 : tableData.length) > 0 && /*#__PURE__*/_react.default.createElement(_CustomTable.default, {
|
|
136
|
+
})), (tableData === null || tableData === void 0 ? void 0 : tableData.length) > 0 && /*#__PURE__*/_react.default.createElement(_CustomTable.default, {
|
|
135
137
|
bordered: true,
|
|
136
138
|
rowKey: "key",
|
|
137
139
|
columns: [{
|