oa-componentbook 1.0.1-stage.36 → 1.0.1-stage.360

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.
Files changed (115) hide show
  1. package/build/components/oa-component-checkbox/CustomCheckBox.js +20 -17
  2. package/build/components/oa-component-checkbox/styles.js +1 -1
  3. package/build/components/oa-component-datepicker/CustomDatePicker.js +25 -22
  4. package/build/components/oa-component-drawer/CustomDrawer.js +2 -0
  5. package/build/components/oa-component-dropdown/CustomDropdown.js +16 -4
  6. package/build/components/oa-component-icons/MaterialIcon.js +1 -1
  7. package/build/components/oa-component-modal/styles.js +3 -2
  8. package/build/components/oa-component-pagination/CustomPagination.js +111 -0
  9. package/build/components/oa-component-pagination/styles.js +12 -0
  10. package/build/components/oa-component-select/CustomSelect.js +116 -56
  11. package/build/components/oa-component-steps/CustomSteps.js +117 -0
  12. package/build/components/oa-component-steps/styles.js +12 -0
  13. package/build/components/oa-component-table/CustomTable.js +28 -5
  14. package/build/components/oa-component-table/CustomTableV1.js +520 -0
  15. package/build/components/oa-component-table/styles.js +1 -1
  16. package/build/components/oa-component-table/stylesV1.js +19 -0
  17. package/build/components/oa-component-tabs/CustomTabs.js +1 -1
  18. package/build/components/oa-component-tag/CustomTag.js +17 -5
  19. package/build/components/oa-component-tag/styles.js +30 -3
  20. package/build/components/oa-component-textarea/{TextArea.js → CustomTextArea.js} +4 -4
  21. package/build/components/oa-component-tooltip/CustomTooltip.js +8 -4
  22. package/build/components/oa-component-upload/CustomUpload.js +120 -40
  23. package/build/components/oa-component-viewer/CustomViewer.js +3 -1
  24. package/build/dev/oa-component-document-viewer/CustomDocumentViewer.js +367 -0
  25. package/build/dev/oa-component-document-viewer/styles.js +12 -0
  26. package/build/dev/oa-component-upload/CustomUpload.js +3 -0
  27. package/build/dev/oa-widget-document-modal/DocumentSideModal.js +166 -0
  28. package/build/dev/oa-widget-document-modal/styles.js +12 -0
  29. package/build/dev/oa-widget-document-side-drawer/DocumentSideDrawer.js +196 -0
  30. package/build/dev/oa-widget-document-side-drawer/styles.js +12 -0
  31. package/build/global-css/GlobalCss.js +2 -1
  32. package/build/global-css/GridLayout.js +1 -1
  33. package/build/global-css/commonStyles.js +11 -0
  34. package/build/images/Car.png +0 -0
  35. package/build/images/TwoWheeler.png +0 -0
  36. package/build/images/astronaut_emptystate.png +0 -0
  37. package/build/images/exportGrp01.png +0 -0
  38. package/build/images/exportGrp02.png +0 -0
  39. package/build/images/exportGrp03.png +0 -0
  40. package/build/images/outOfStock.png +0 -0
  41. package/build/index.js +100 -2
  42. package/build/layout/DetailDataLayout/DetailDataLayout.js +20 -0
  43. package/build/layout/DetailDataLayout/components/Form.js +22 -0
  44. package/build/layout/DetailDataLayout/components/Header.js +32 -0
  45. package/build/layout/DetailDataLayout/style.css +9 -0
  46. package/build/layout/DetailDataLayout/styles.js +12 -0
  47. package/build/layout/GenricLayOut/GenricLayOut.js +2275 -0
  48. package/build/layout/GenricLayOut/components/AppliedFilters.js +84 -0
  49. package/build/layout/GenricLayOut/components/CardList.js +34 -0
  50. package/build/layout/GenricLayOut/components/DropdownSearch.js +48 -0
  51. package/build/layout/GenricLayOut/components/Header.js +74 -0
  52. package/build/layout/GenricLayOut/components/Modal.js +85 -0
  53. package/build/layout/GenricLayOut/components/Search.js +51 -0
  54. package/build/layout/GenricLayOut/components/StaticFilter.css +73 -0
  55. package/build/layout/GenricLayOut/components/StaticFilter.js +37 -0
  56. package/build/layout/GenricLayOut/reducer/layoutReducer.js +290 -0
  57. package/build/layout/GenricLayOut/resolver/staticConfigResolver.js +98 -0
  58. package/build/layout/GenricLayOut/styles.js +22 -0
  59. package/build/utils/download-file.js +23 -0
  60. package/build/widgets/oa-form-widget/FormWidget.js +519 -0
  61. package/build/widgets/oa-form-widget/FormWidgetStyle.js +18 -0
  62. package/build/widgets/oa-widget-add-spare-part/AddSparePartCollapseWidget.js +73 -12
  63. package/build/widgets/oa-widget-add-spare-part/AddSparePartWidget.js +51 -7
  64. package/build/widgets/oa-widget-address/AddressWidget.js +12 -17
  65. package/build/widgets/oa-widget-approval/ApprovalWidgetNew.js +481 -0
  66. package/build/widgets/oa-widget-approval/styles.js +2 -2
  67. package/build/widgets/oa-widget-chat/ChatWidget.js +5 -5
  68. package/build/widgets/oa-widget-close-claim/CloseClaimWidget.js +17 -5
  69. package/build/widgets/oa-widget-collapsible-key-value/CollapsibleKeyValueWidget.js +399 -0
  70. package/build/widgets/oa-widget-collapsible-key-value/styles.js +16 -0
  71. package/build/widgets/oa-widget-content-panel/ContentPanel.js +82 -0
  72. package/build/widgets/oa-widget-content-panel/styles.js +12 -0
  73. package/build/widgets/oa-widget-customer-rating-card/CustomerRatingCard.js +5 -5
  74. package/build/widgets/oa-widget-detailcard/styles.js +1 -1
  75. package/build/widgets/oa-widget-document-upload/DocUploadWidget.js +6 -9
  76. package/build/widgets/oa-widget-dropdown-search-input/DropdownSearchInput.js +56 -19
  77. package/build/widgets/oa-widget-dropdown-search-input/styles.js +1 -1
  78. package/build/widgets/oa-widget-guide/GuideWidget.js +70 -0
  79. package/build/widgets/oa-widget-guide/GuideWidgetStyle.js +12 -0
  80. package/build/widgets/oa-widget-hub-automation-modal/HubAutomationDeleteBiker.js +24 -0
  81. package/build/widgets/oa-widget-hub-automation-modal/HubAutomationModal.js +34 -0
  82. package/build/widgets/oa-widget-hub-automation-modal/HubAutomationModalStyle.js +13 -0
  83. package/build/widgets/oa-widget-image-carousel/ImageCarouselWidget.js +257 -0
  84. package/build/widgets/oa-widget-image-carousel/styles.js +23 -0
  85. package/build/widgets/oa-widget-image-gallery/FullscreenViewer.js +169 -0
  86. package/build/widgets/oa-widget-image-gallery/ImageGallery.js +87 -0
  87. package/build/widgets/oa-widget-image-gallery/ThumbnailGrid.js +146 -0
  88. package/build/widgets/oa-widget-image-gallery/imageCache.js +15 -0
  89. package/build/widgets/oa-widget-image-gallery/imageGalleryStyle.js +16 -0
  90. package/build/widgets/oa-widget-item-info-card/InfoCardListWidget.js +60 -0
  91. package/build/widgets/oa-widget-item-info-card/ItemInfoCardWidget.js +77 -0
  92. package/build/widgets/oa-widget-item-info-card/styles.css +50 -0
  93. package/build/widgets/oa-widget-item-info-card/styles.js +14 -0
  94. package/build/widgets/oa-widget-key-value/KeyValueWidget.js +37 -10
  95. package/build/widgets/oa-widget-kpi/KPICardWidget.js +86 -0
  96. package/build/widgets/oa-widget-kpi/styles.js +12 -0
  97. package/build/widgets/oa-widget-map-base-location/AddressDetails.js +21 -7
  98. package/build/widgets/oa-widget-map-base-location/AddressForm.js +32 -5
  99. package/build/widgets/oa-widget-map-base-location/MapBaseLocation.js +9 -3
  100. package/build/widgets/oa-widget-map-base-location/MapComponent.js +17 -2
  101. package/build/widgets/oa-widget-membershipcard/MembershipCard.js +14 -3
  102. package/build/widgets/oa-widget-membershipcard/styles.js +1 -1
  103. package/build/widgets/oa-widget-notes/NotesWidget.js +2 -1
  104. package/build/widgets/oa-widget-progressive-steps/ProgressiveStepsWidget.js +392 -0
  105. package/build/widgets/oa-widget-progressive-steps/styles.js +12 -0
  106. package/build/widgets/oa-widget-reimbursement-breakup/ReimbursementBreakupWidget.js +18 -9
  107. package/build/widgets/oa-widget-reimbursement-breakup/styles.js +1 -1
  108. package/build/widgets/oa-widget-reupload-drawer/ReUploadDrawer.js +164 -0
  109. package/build/widgets/oa-widget-sidebar/SidebarWidget.js +87 -0
  110. package/build/widgets/oa-widget-sidebar/components/Header.js +30 -0
  111. package/build/widgets/oa-widget-sidebar/sidebar.css +0 -0
  112. package/build/widgets/oa-widget-sidebar/styles.js +12 -0
  113. package/build/widgets/oa-widget-spare-part/SparePartsWidget.js +57 -29
  114. package/build/widgets/oa-widget-track-shipment-list/fn.js +16 -4
  115. package/package.json +4 -2
@@ -0,0 +1,169 @@
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
+ require("core-js/modules/es.regexp.exec.js");
10
+ require("core-js/modules/es.string.match.js");
11
+ require("core-js/modules/es.string.starts-with.js");
12
+ require("core-js/modules/es.promise.js");
13
+ var _react = _interopRequireWildcard(require("react"));
14
+ var _propTypes = _interopRequireDefault(require("prop-types"));
15
+ var _reactZoomPanPinch = require("react-zoom-pan-pinch");
16
+ var _ArrowBackIosRounded = _interopRequireDefault(require("@material-ui/icons/ArrowBackIosRounded"));
17
+ var _ArrowForwardIosRounded = _interopRequireDefault(require("@material-ui/icons/ArrowForwardIosRounded"));
18
+ var _ArrowBackRounded = _interopRequireDefault(require("@material-ui/icons/ArrowBackRounded"));
19
+ var _CustomButton = _interopRequireDefault(require("../../components/oa-component-button/CustomButton"));
20
+ var _CustomLoader = _interopRequireDefault(require("../../components/oa-component-loader/CustomLoader"));
21
+ var _imageCache = require("./imageCache");
22
+ var _MaterialIcon = _interopRequireDefault(require("../../components/oa-component-icons/MaterialIcon"));
23
+ var _imageGalleryStyle = require("./imageGalleryStyle");
24
+ var _Typography = _interopRequireDefault(require("../../components/oa-component-typography/Typography"));
25
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26
+ 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); }
27
+ 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; }
28
+ const styles = {
29
+ viewer: {
30
+ position: 'relative',
31
+ textAlign: 'center',
32
+ height: '100%',
33
+ width: '100%',
34
+ display: 'flex',
35
+ alignItems: 'center',
36
+ justifyContent: 'center'
37
+ }
38
+ };
39
+ function FullscreenViewer(_ref) {
40
+ var _images$currentIndex;
41
+ let {
42
+ images,
43
+ currentIndex,
44
+ onClose,
45
+ onNavigate,
46
+ downloadDocumentId,
47
+ allowIndividualDownload,
48
+ fetchImage
49
+ } = _ref;
50
+ const [loaded, setLoaded] = (0, _react.useState)(false);
51
+ const [resolvedSrc, setResolvedSrc] = (0, _react.useState)(null);
52
+ const imageUrl = (_images$currentIndex = images[currentIndex]) === null || _images$currentIndex === void 0 ? void 0 : _images$currentIndex.originalImageUrl;
53
+ (0, _react.useEffect)(() => {
54
+ let isMounted = true;
55
+ setLoaded(false);
56
+ setResolvedSrc(null);
57
+ const isDirectImage = (imageUrl === null || imageUrl === void 0 ? void 0 : imageUrl.match(/\.(jpg|jpeg|png|gif|webp|svg|bmp)$/i)) || (imageUrl === null || imageUrl === void 0 ? void 0 : imageUrl.startsWith('data:image'));
58
+ const resolveImage = async () => {
59
+ if (!imageUrl) return;
60
+ try {
61
+ const cacheKey = imageUrl;
62
+ const cached = (0, _imageCache.getCachedImage)(cacheKey);
63
+ if (cached) {
64
+ setResolvedSrc(cached);
65
+ return;
66
+ }
67
+ if (isDirectImage) {
68
+ setResolvedSrc(imageUrl);
69
+ (0, _imageCache.setCachedImage)(cacheKey, imageUrl);
70
+ } else if (typeof fetchImage === 'function') {
71
+ const result = await fetchImage(imageUrl);
72
+ if (isMounted) setResolvedSrc(result);
73
+ (0, _imageCache.setCachedImage)(cacheKey, result);
74
+ } else {
75
+ console.warn('No fetchImage prop provided for non-direct image:', imageUrl);
76
+ }
77
+ } catch (err) {
78
+ console.error('Error fetching image:', err);
79
+ }
80
+ };
81
+ resolveImage();
82
+ return () => {
83
+ isMounted = false;
84
+ };
85
+ }, [imageUrl, fetchImage]);
86
+ if (!images[currentIndex]) return null;
87
+ const handlePrev = () => {
88
+ if (typeof onNavigate === 'function') onNavigate('prev');
89
+ };
90
+ const handleNext = () => {
91
+ if (typeof onNavigate === 'function') onNavigate('next');
92
+ };
93
+ return /*#__PURE__*/_react.default.createElement(_imageGalleryStyle.FullScreenStyle, null, /*#__PURE__*/_react.default.createElement("div", {
94
+ className: "overlay"
95
+ }, /*#__PURE__*/_react.default.createElement("div", {
96
+ className: "header"
97
+ }, /*#__PURE__*/_react.default.createElement(_MaterialIcon.default, {
98
+ onClick: onClose,
99
+ icon: _ArrowBackRounded.default,
100
+ size: 26,
101
+ color: "primary-background"
102
+ }), /*#__PURE__*/_react.default.createElement(_Typography.default, {
103
+ "data-test": "text",
104
+ typography: "type-b2-400",
105
+ color: "primary-background",
106
+ className: "title"
107
+ }, "Image", ' ', currentIndex + 1, ' ', "/", ' ', images.length)), /*#__PURE__*/_react.default.createElement("div", {
108
+ style: styles.viewer
109
+ }, /*#__PURE__*/_react.default.createElement(_CustomLoader.default, {
110
+ spinning: !loaded
111
+ }, /*#__PURE__*/_react.default.createElement(_reactZoomPanPinch.TransformWrapper, null, /*#__PURE__*/_react.default.createElement(_reactZoomPanPinch.TransformComponent, null, resolvedSrc && /*#__PURE__*/_react.default.createElement("img", {
112
+ src: resolvedSrc,
113
+ alt: "fullscreen",
114
+ onLoad: () => setLoaded(true),
115
+ style: {
116
+ maxWidth: '100%',
117
+ maxHeight: '80vh',
118
+ display: loaded ? 'block' : 'none'
119
+ }
120
+ })))), /*#__PURE__*/_react.default.createElement("div", {
121
+ className: "navButtonLeft",
122
+ onClick: handlePrev,
123
+ onKeyDown: e => e.key === 'Enter' && handlePrev(),
124
+ role: "button",
125
+ tabIndex: 0
126
+ }, /*#__PURE__*/_react.default.createElement(_MaterialIcon.default, {
127
+ icon: _ArrowBackIosRounded.default,
128
+ size: 16,
129
+ color: "primary-background"
130
+ })), /*#__PURE__*/_react.default.createElement("div", {
131
+ className: "navButtonRight",
132
+ onClick: handleNext,
133
+ onKeyDown: e => e.key === 'Enter' && handleNext(),
134
+ role: "button",
135
+ tabIndex: 0
136
+ }, /*#__PURE__*/_react.default.createElement(_MaterialIcon.default, {
137
+ icon: _ArrowForwardIosRounded.default,
138
+ size: 16,
139
+ color: "primary-background"
140
+ })), allowIndividualDownload && /*#__PURE__*/_react.default.createElement("div", {
141
+ role: "button",
142
+ className: "downloadAll",
143
+ tabIndex: 0,
144
+ onClick: () => downloadDocumentId(imageUrl),
145
+ onKeyDown: e => {
146
+ if (e.key === 'Enter' || e.key === ' ') {
147
+ downloadDocumentId(imageUrl);
148
+ }
149
+ }
150
+ }, "Download This Image"))));
151
+ }
152
+ FullscreenViewer.propTypes = {
153
+ images: _propTypes.default.arrayOf(_propTypes.default.shape({
154
+ originalImageUrl: _propTypes.default.string.isRequired
155
+ })).isRequired,
156
+ currentIndex: _propTypes.default.number.isRequired,
157
+ onClose: _propTypes.default.func.isRequired,
158
+ onNavigate: _propTypes.default.func,
159
+ fetchImage: _propTypes.default.func,
160
+ downloadDocumentId: _propTypes.default.func,
161
+ allowIndividualDownload: _propTypes.default.bool
162
+ };
163
+ FullscreenViewer.defaultProps = {
164
+ onNavigate: () => {},
165
+ fetchImage: undefined,
166
+ downloadDocumentId: () => {},
167
+ allowIndividualDownload: false
168
+ };
169
+ var _default = exports.default = FullscreenViewer;
@@ -0,0 +1,87 @@
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 _propTypes = _interopRequireDefault(require("prop-types"));
11
+ var _GetAppRounded = _interopRequireDefault(require("@material-ui/icons/GetAppRounded"));
12
+ var _ThumbnailGrid = _interopRequireDefault(require("./ThumbnailGrid"));
13
+ var _FullscreenViewer = _interopRequireDefault(require("./FullscreenViewer"));
14
+ var _CustomButton = _interopRequireDefault(require("../../components/oa-component-button/CustomButton"));
15
+ var _MaterialIcon = _interopRequireDefault(require("../../components/oa-component-icons/MaterialIcon"));
16
+ var _imageGalleryStyle = require("./imageGalleryStyle");
17
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
+ 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); }
19
+ 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; }
20
+ function ImageGallery(_ref) {
21
+ let {
22
+ images,
23
+ fetchImage,
24
+ allowIndividualDownload,
25
+ downloadDocumentId,
26
+ actionButtonFragment
27
+ } = _ref;
28
+ const [activeIndex, setActiveIndex] = (0, _react.useState)(null);
29
+ const handleImageClick = index => {
30
+ setActiveIndex(index);
31
+ };
32
+ const handleCloseViewer = () => {
33
+ setActiveIndex(null);
34
+ };
35
+ (0, _react.useEffect)(() => {
36
+ const handleKeyDown = event => {
37
+ if (event.key === 'Escape') {
38
+ event.stopPropagation(); // Optional: prevent bubbling
39
+ handleCloseViewer();
40
+ }
41
+ };
42
+ document.addEventListener('keydown', handleKeyDown, {
43
+ capture: true
44
+ });
45
+ return () => {
46
+ document.removeEventListener('keydown', handleKeyDown, {
47
+ capture: true
48
+ });
49
+ };
50
+ }, []);
51
+ const handleNavigationClick = type => {
52
+ if (type === 'prev') {
53
+ setActiveIndex(prevIndex => prevIndex > 0 ? prevIndex - 1 : images.length - 1);
54
+ } else if (type === 'next') {
55
+ setActiveIndex(prevIndex => prevIndex < images.length - 1 ? prevIndex + 1 : 0);
56
+ }
57
+ };
58
+ return /*#__PURE__*/_react.default.createElement(_imageGalleryStyle.StylesContainer, null, typeof actionButtonFragment === 'function' && /*#__PURE__*/_react.default.createElement("div", {
59
+ className: "topBottomGallarySec"
60
+ }, actionButtonFragment()), /*#__PURE__*/_react.default.createElement(_ThumbnailGrid.default, {
61
+ fetchImage: fetchImage,
62
+ images: images,
63
+ onImageClick: handleImageClick
64
+ }), activeIndex !== null && /*#__PURE__*/_react.default.createElement(_FullscreenViewer.default, {
65
+ fetchImage: fetchImage,
66
+ allowIndividualDownload: allowIndividualDownload,
67
+ downloadDocumentId: downloadDocumentId,
68
+ images: images,
69
+ currentIndex: activeIndex,
70
+ onClose: handleCloseViewer,
71
+ onNavigate: handleNavigationClick
72
+ }));
73
+ }
74
+ ImageGallery.propTypes = {
75
+ images: _propTypes.default.array.isRequired,
76
+ fetchImage: _propTypes.default.func,
77
+ allowIndividualDownload: _propTypes.default.bool,
78
+ downloadDocumentId: _propTypes.default.func,
79
+ actionButtonFragment: _propTypes.default.node
80
+ };
81
+ ImageGallery.defaultProps = {
82
+ fetchImage: () => {},
83
+ allowIndividualDownload: false,
84
+ downloadDocumentId: () => {},
85
+ actionButtonFragment: null
86
+ };
87
+ var _default = exports.default = ImageGallery;
@@ -0,0 +1,146 @@
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
+ require("core-js/modules/es.promise.js");
10
+ require("core-js/modules/es.regexp.exec.js");
11
+ require("core-js/modules/es.regexp.test.js");
12
+ var _react = _interopRequireWildcard(require("react"));
13
+ var _propTypes = _interopRequireDefault(require("prop-types"));
14
+ var _reactIntersectionObserver = require("react-intersection-observer");
15
+ var _CustomLoader = _interopRequireDefault(require("../../components/oa-component-loader/CustomLoader"));
16
+ var _imageCache = require("./imageCache");
17
+ var _imageGalleryStyle = require("./imageGalleryStyle");
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+ 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); }
20
+ 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; }
21
+ /* eslint-disable */
22
+
23
+ function ThumbnailGrid(_ref) {
24
+ let {
25
+ images,
26
+ onImageClick,
27
+ fetchImage
28
+ } = _ref;
29
+ return /*#__PURE__*/_react.default.createElement(_imageGalleryStyle.ThumbnailGridStyle, null, /*#__PURE__*/_react.default.createElement("div", {
30
+ className: "thumbnailGridStyleBox"
31
+ }, images.map((img, index) => /*#__PURE__*/_react.default.createElement(ThumbnailImage, {
32
+ fetchImage: fetchImage,
33
+ key: img.id || index,
34
+ img: img,
35
+ onClick: () => onImageClick(index),
36
+ displayDocName: img.displayDocName
37
+ }))));
38
+ }
39
+ ThumbnailGrid.propTypes = {
40
+ images: _propTypes.default.arrayOf(_propTypes.default.shape({
41
+ id: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),
42
+ thumbnailUrl: _propTypes.default.string,
43
+ originalImageUrl: _propTypes.default.string
44
+ })).isRequired,
45
+ onImageClick: _propTypes.default.func.isRequired,
46
+ fetchImage: _propTypes.default.func
47
+ };
48
+ ThumbnailGrid.defaultProps = {
49
+ fetchImage: () => {}
50
+ };
51
+ function ThumbnailImage(_ref2) {
52
+ let {
53
+ img,
54
+ onClick,
55
+ fetchImage,
56
+ displayDocName
57
+ } = _ref2;
58
+ const {
59
+ ref,
60
+ inView
61
+ } = (0, _reactIntersectionObserver.useInView)({
62
+ triggerOnce: true
63
+ });
64
+ const [loaded, setLoaded] = (0, _react.useState)(false);
65
+ const [resolvedSrc, setResolvedSrc] = (0, _react.useState)(null);
66
+ (0, _react.useEffect)(() => {
67
+ const resolveImageSrc = async () => {
68
+ const rawUrl = img.thumbnailUrl || img.originalImageUrl;
69
+ if (!rawUrl) return;
70
+ const cacheKey = rawUrl;
71
+ const cached = (0, _imageCache.getCachedImage)(cacheKey);
72
+ if (cached) {
73
+ setResolvedSrc(cached);
74
+ return;
75
+ }
76
+ const isLikelyDirectImage = /\.(jpg|jpeg|png|gif|webp|bmp|svg)$/i.test(rawUrl);
77
+ if (isLikelyDirectImage) {
78
+ (0, _imageCache.setCachedImage)(cacheKey, rawUrl);
79
+ setResolvedSrc(rawUrl);
80
+ } else {
81
+ try {
82
+ const response = await fetchImage(rawUrl);
83
+ (0, _imageCache.setCachedImage)(cacheKey, response);
84
+ setResolvedSrc(response);
85
+ } catch (error) {
86
+ console.error("Failed to fetch image URL:", error);
87
+ }
88
+ }
89
+ };
90
+ if (inView && !resolvedSrc) {
91
+ resolveImageSrc();
92
+ }
93
+ }, [inView, img.thumbnailUrl, img.originalImageUrl, resolvedSrc, fetchImage]);
94
+ return /*#__PURE__*/_react.default.createElement(_imageGalleryStyle.ThumbnailGridBoxStyle, null, /*#__PURE__*/_react.default.createElement("div", {
95
+ className: "thumbnailGridBox",
96
+ ref: ref,
97
+ onClick: onClick,
98
+ onKeyDown: e => e.key === "Enter" && onClick(),
99
+ role: "button",
100
+ tabIndex: 0,
101
+ style: {
102
+ position: 'relative',
103
+ display: 'flex',
104
+ flexDirection: 'column',
105
+ alignItems: 'stretch'
106
+ }
107
+ }, /*#__PURE__*/_react.default.createElement(_CustomLoader.default, {
108
+ spinning: !loaded && inView
109
+ }, inView && resolvedSrc && /*#__PURE__*/_react.default.createElement("img", {
110
+ src: resolvedSrc,
111
+ alt: "thumbnail",
112
+ style: {
113
+ display: loaded ? 'block' : 'none',
114
+ width: '100%',
115
+ borderRadius: 8,
116
+ background: '#e0e0e0',
117
+ minHeight: 120,
118
+ objectFit: 'cover'
119
+ },
120
+ onLoad: () => setLoaded(true)
121
+ })), loaded && /*#__PURE__*/_react.default.createElement("div", {
122
+ style: {
123
+ marginTop: 8,
124
+ marginLeft: 8,
125
+ marginBottom: 4,
126
+ color: '#222',
127
+ fontSize: 15,
128
+ fontWeight: 400,
129
+ letterSpacing: 0.2
130
+ }
131
+ }, displayDocName || 'Image')));
132
+ }
133
+ ThumbnailImage.propTypes = {
134
+ img: _propTypes.default.shape({
135
+ thumbnailUrl: _propTypes.default.string,
136
+ originalImageUrl: _propTypes.default.string
137
+ }).isRequired,
138
+ onClick: _propTypes.default.func.isRequired,
139
+ fetchImage: _propTypes.default.func,
140
+ displayDocName: _propTypes.default.string
141
+ };
142
+ ThumbnailImage.defaultProps = {
143
+ fetchImage: () => {},
144
+ displayDocName: ''
145
+ };
146
+ var _default = exports.default = ThumbnailGrid;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getCachedImage = getCachedImage;
7
+ exports.setCachedImage = setCachedImage;
8
+ require("core-js/modules/web.dom-collections.iterator.js");
9
+ const imageCache = new Map();
10
+ function getCachedImage(key) {
11
+ return imageCache.get(key);
12
+ }
13
+ function setCachedImage(key, url) {
14
+ imageCache.set(key, url);
15
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ThumbnailGridStyle = exports.ThumbnailGridBoxStyle = exports.StylesContainer = exports.FullScreenStyle = void 0;
7
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
8
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4;
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
11
+ const StylesContainer = exports.StylesContainer = _styledComponents.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n\n.topBottomGallarySec{ display:flex; flex-direction:row; margin-bottom:16px; justify-content:flex-end;}\n\n.thumbnailGridStyle{display: grid\n;\n grid-template-columns: repeat(2, 1fr);\n gap: 8px;}\n\n\n"])));
12
+ const ThumbnailGridStyle = exports.ThumbnailGridStyle = _styledComponents.default.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n.thumbnailGridStyleBox{display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 8px;}\n"])));
13
+ const ThumbnailGridBoxStyle = exports.ThumbnailGridBoxStyle = _styledComponents.default.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n.thumbnailGridBox{ position: relative;\n aspect-ratio: 1 / 1; padding: 8px; border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgb(240, 240, 240);\n gap:6px;\n }\n\n .thumbnailGridBox img{ border-radius:4px; width: 100%;\n height: 100%; transition: transform .2s;\n object-fit: cover;} \n\n .thumbnailGridBox img:hover{ transform: scale(1.02);} \n\n"])));
14
+ const FullScreenStyle = exports.FullScreenStyle = _styledComponents.default.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n\n.overlay{\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(31, 31, 31, 0.82);\n z-index: 99999;\n }\n\n\n\n .navButtonLeft, .navButtonRight{\n position: absolute;\n top: 50%;\n font-size: 16px;\n cursor: pointer;\n user-select: none;\n background: rgba(0, 0, 0, 0.7);\n border-radius: 50%;\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .navButtonLeft:hover, .navButtonRight:hover{ background: rgba(0, 0, 0, 0.9);}\n\n.navButtonLeft{left: 10px;}\n.navButtonRight {right: 10px;}\n.downloadAll{color: #FFF;\n padding: 10px 24px;\n border-radius: 4px;\n border: 1px solid #FFF;\n text-align: center;\n font-size: 14px;\n line-height: 20px;\n position: absolute; cursor: pointer;\n bottom: 60px;\n left: 50%;\n transform: translate(-50%, -50%);}\n\n.header{padding:24px; display:flex; flex-direction:row; justify-content:space-between; align-items:center;}\n\n"])));
15
+
16
+ // export default StylesContainer;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.object.assign.js");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ require("core-js/modules/es.array.reduce.js");
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
12
+ var _ItemInfoCardWidget = _interopRequireDefault(require("./ItemInfoCardWidget"));
13
+ var _Typography = _interopRequireDefault(require("../../components/oa-component-typography/Typography"));
14
+ var _ColorVariablesMap = _interopRequireDefault(require("../../global-css/ColorVariablesMap"));
15
+ var _styles = require("./styles");
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } // widgets/oa-widget-item-info-card-list/InfoCardListWidget.js
18
+ const SUCCESS_GREEN = '#00875A';
19
+ function InfoCardListWidget(_ref) {
20
+ let {
21
+ items,
22
+ bordered,
23
+ customStyle
24
+ } = _ref;
25
+ const total = items.reduce((sum, item) => sum + Number(item.props.value || 0), 0);
26
+ return /*#__PURE__*/_react.default.createElement(_styles.Container, {
27
+ bordered: bordered,
28
+ style: customStyle
29
+ }, items.map(item => /*#__PURE__*/_react.default.createElement(_ItemInfoCardWidget.default, _extends({
30
+ key: item.key
31
+ }, item.props))), /*#__PURE__*/_react.default.createElement(_styles.TotalRow, null, /*#__PURE__*/_react.default.createElement(_Typography.default, {
32
+ typography: "type-t1-500",
33
+ style: {
34
+ color: _ColorVariablesMap.default['--color-positive']
35
+ }
36
+ }, "Order Total"), /*#__PURE__*/_react.default.createElement(_Typography.default, {
37
+ typography: "type-t1-500",
38
+ style: {
39
+ color: _ColorVariablesMap.default['--color-positive']
40
+ }
41
+ }, "\u20B9", total.toLocaleString())));
42
+ }
43
+ InfoCardListWidget.propTypes = {
44
+ /** all of your info-card items (must have .key and .props.value) */
45
+ items: _propTypes.default.arrayOf(_propTypes.default.shape({
46
+ key: _propTypes.default.string.isRequired,
47
+ props: _propTypes.default.shape({
48
+ value: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]).isRequired
49
+ }).isRequired
50
+ })).isRequired,
51
+ /** if true, the outer container gets a light grey border */
52
+ bordered: _propTypes.default.bool,
53
+ /** optional style object you can use to tweak margin/layout */
54
+ customStyle: _propTypes.default.object
55
+ };
56
+ InfoCardListWidget.defaultProps = {
57
+ bordered: false,
58
+ customStyle: {}
59
+ };
60
+ var _default = exports.default = InfoCardListWidget;
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ require("core-js/modules/es.symbol.description.js");
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ var _styles = require("./styles");
11
+ var _Typography = _interopRequireDefault(require("../../components/oa-component-typography/Typography"));
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ /* eslint-disable */
14
+
15
+ /**
16
+ * A simple info card that displays an image, title, subtitle, description, and value.
17
+ */
18
+ function ItemInfoCardWidget(_ref) {
19
+ let {
20
+ title,
21
+ value,
22
+ subTitle,
23
+ description,
24
+ image,
25
+ subText,
26
+ subDescription
27
+ } = _ref;
28
+ return /*#__PURE__*/_react.default.createElement(_styles.ItemInfoCard, null, /*#__PURE__*/_react.default.createElement("div", {
29
+ className: "productBox"
30
+ }, /*#__PURE__*/_react.default.createElement("div", {
31
+ className: "iconAndtextSec"
32
+ }, image && /*#__PURE__*/_react.default.createElement("div", {
33
+ className: "productIcon"
34
+ }, /*#__PURE__*/_react.default.createElement("img", {
35
+ src: image,
36
+ alt: title,
37
+ className: "product-image"
38
+ })), /*#__PURE__*/_react.default.createElement("div", {
39
+ className: "product-info"
40
+ }, /*#__PURE__*/_react.default.createElement(_Typography.default, {
41
+ typography: "type-t2-700",
42
+ color: "primary-content"
43
+ }, title), subTitle && /*#__PURE__*/_react.default.createElement("div", {
44
+ className: "margin-top-4 margin-bottom-12"
45
+ }, /*#__PURE__*/_react.default.createElement(_Typography.default, {
46
+ typography: "type-b2-400",
47
+ color: "secondary-content"
48
+ }, subTitle)), description && /*#__PURE__*/_react.default.createElement(_Typography.default, {
49
+ typography: "type-b2-400",
50
+ color: "secondary-content"
51
+ }, description), subDescription && /*#__PURE__*/_react.default.createElement("div", {
52
+ className: "margion-top-4"
53
+ }, /*#__PURE__*/_react.default.createElement(_Typography.default, {
54
+ typography: "type-b2-400",
55
+ color: "secondary-content"
56
+ }, subDescription)))), /*#__PURE__*/_react.default.createElement(_Typography.default, {
57
+ typography: "type-t2-700",
58
+ color: "primary-content"
59
+ }, "\u20B9", value), subText && /*#__PURE__*/_react.default.createElement(_Typography.default, {
60
+ typography: "type-button-500",
61
+ color: "secondary-content"
62
+ }, subText)));
63
+ }
64
+ ItemInfoCardWidget.propTypes = {
65
+ image: _propTypes.default.string,
66
+ title: _propTypes.default.string.isRequired,
67
+ value: _propTypes.default.number.isRequired,
68
+ subTitle: _propTypes.default.string,
69
+ subText: _propTypes.default.string,
70
+ description: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number])
71
+ };
72
+ ItemInfoCardWidget.defaultProps = {
73
+ image: null,
74
+ subTitle: "",
75
+ description: ""
76
+ };
77
+ var _default = exports.default = ItemInfoCardWidget;
@@ -0,0 +1,50 @@
1
+ .product-card {
2
+ display: flex;
3
+ align-items: flex-start;
4
+ gap: 12px;
5
+ padding: 12px;
6
+ border-radius: 12px;
7
+ background-color: #f9f9f9;
8
+ width: 100%;
9
+ max-width: 480px;
10
+ }
11
+
12
+ .product-image {
13
+ width: 64px;
14
+ height: 64px;
15
+ border-radius: 8px;
16
+ object-fit: cover;
17
+ }
18
+
19
+ .product-info {
20
+ flex: 1;
21
+ }
22
+
23
+ .product-title-price {
24
+ display: flex;
25
+ justify-content: space-between;
26
+ align-items: center;
27
+ }
28
+
29
+ .product-title {
30
+ font-size: 16px;
31
+ font-weight: 600;
32
+ margin: 0;
33
+ }
34
+
35
+ .product-price {
36
+ font-weight: bold;
37
+ color: #111;
38
+ }
39
+
40
+ .product-specs {
41
+ color: #666;
42
+ margin-top: 2px;
43
+ }
44
+
45
+ .product-sku {
46
+ color: #999;
47
+ font-size: 12px;
48
+ margin-top: 2px;
49
+ }
50
+
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.TotalRow = exports.ItemInfoCard = exports.Container = void 0;
7
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
8
+ var _templateObject, _templateObject2, _templateObject3;
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
11
+ const Container = exports.Container = _styledComponents.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n background: #ffffff;\n border-radius: 12px;\n display: flex;\n flex-direction: column;\n gap: 12px;\n"])));
12
+ const TotalRow = exports.TotalRow = _styledComponents.default.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n border-top: 1px solid #e0e0e0;\n padding: 16px 16px 0 16px;\n margin: 0 0 0 -16px;\n width: calc(100% + 32px);\n\n\n .gstAndCost{display: flex;\n flex-direction: column;\n align-items: flex-end;\n justify-content: center;}\n"])));
13
+ const ItemInfoCard = exports.ItemInfoCard = _styledComponents.default.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n.productBox{width:100%; display:flex; flex-direction:row; justify-content: space-between; padding:12px 0;}\n.productIcon{border-radius: 12px; background: #F6F6F6; width:80px; height:80px; display:flex; align-items:center; justify-content:center;}\n.productIcon img{height:64px;}\n.iconAndtextSec{display:flex; flex-direction:row; gap:12px; width:calc(100% - 88px);}\n.product-info {display: flex; flex-direction: column; width: calc(100% - 92px);}\n"])));
14
+ var _default = exports.default = {};