oa-componentbook 1.0.1-stage.44 → 1.0.1-stage.441

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 (140) hide show
  1. package/build/components/oa-component-accordion/Accordion.js +123 -43
  2. package/build/components/oa-component-accordion/styles.js +2 -2
  3. package/build/components/oa-component-button/CustomButton.js +24 -19
  4. package/build/components/oa-component-button/styles.js +1 -1
  5. package/build/components/oa-component-checkbox/CustomCheckBox.js +20 -17
  6. package/build/components/oa-component-checkbox/styles.js +1 -1
  7. package/build/components/oa-component-datepicker/CustomDatePicker.js +37 -26
  8. package/build/components/oa-component-document-details-panel/DocumentDetailsPanel.js +139 -0
  9. package/build/components/oa-component-drawer/CustomDrawer.js +2 -0
  10. package/build/components/oa-component-dropdown/CustomDropdown.js +16 -4
  11. package/build/components/oa-component-icons/MaterialIcon.js +1 -1
  12. package/build/components/oa-component-modal/CustomModal.js +59 -48
  13. package/build/components/oa-component-modal/styles.js +3 -2
  14. package/build/components/oa-component-pagination/CustomPagination.js +111 -0
  15. package/build/components/oa-component-pagination/styles.js +12 -0
  16. package/build/components/oa-component-progress-bar/CustomProgressBar.js +8 -4
  17. package/build/components/oa-component-select/CustomSelect.js +130 -56
  18. package/build/components/oa-component-steps/CustomSteps.js +117 -0
  19. package/build/components/oa-component-steps/styles.js +12 -0
  20. package/build/components/oa-component-table/CustomTable.js +28 -5
  21. package/build/components/oa-component-table/CustomTableV1.js +613 -0
  22. package/build/components/oa-component-table/styles.js +1 -1
  23. package/build/components/oa-component-table/stylesV1.js +19 -0
  24. package/build/components/oa-component-table-with-search-and-filter/TableWithSearchAndFilter.js +450 -0
  25. package/build/components/oa-component-table-with-search-and-filter/styles.js +24 -0
  26. package/build/components/oa-component-tabs/CustomTabs.js +1 -1
  27. package/build/components/oa-component-tag/CustomTag.js +29 -11
  28. package/build/components/oa-component-tag/styles.js +30 -3
  29. package/build/components/oa-component-textarea/CustomTextArea.js +161 -0
  30. package/build/components/oa-component-textarea/constants.js +39 -0
  31. package/build/components/oa-component-textarea/styles.js +12 -3
  32. package/build/components/oa-component-tooltip/CustomTooltip.js +8 -4
  33. package/build/components/oa-component-upload/CustomUpload.js +129 -42
  34. package/build/components/oa-component-viewer/CustomViewer.js +17 -11
  35. package/build/dev/oa-component-document-viewer/CustomDocumentViewer.js +367 -0
  36. package/build/dev/oa-component-document-viewer/styles.js +12 -0
  37. package/build/dev/oa-component-upload/CustomUpload.js +116 -29
  38. package/build/dev/oa-component-upload/styles.js +2 -2
  39. package/build/dev/oa-widget-document-modal/DocumentSideModal.js +166 -0
  40. package/build/dev/oa-widget-document-modal/styles.js +12 -0
  41. package/build/dev/oa-widget-document-side-drawer/DocumentSideDrawer.js +196 -0
  42. package/build/dev/oa-widget-document-side-drawer/styles.js +12 -0
  43. package/build/dev/oa-widget-document-viewer-with-details/DocumentViewerWithDetails.js +122 -0
  44. package/build/global-css/GlobalCss.js +2 -1
  45. package/build/global-css/GridLayout.js +1 -1
  46. package/build/global-css/commonStyles.js +11 -0
  47. package/build/images/Car.png +0 -0
  48. package/build/images/TwoWheeler.png +0 -0
  49. package/build/images/astronaut_emptystate.png +0 -0
  50. package/build/images/exportGrp01.png +0 -0
  51. package/build/images/exportGrp02.png +0 -0
  52. package/build/images/exportGrp03.png +0 -0
  53. package/build/images/outOfStock.png +0 -0
  54. package/build/index.js +135 -2
  55. package/build/layout/DetailDataLayout/DetailDataLayout.js +20 -0
  56. package/build/layout/DetailDataLayout/components/Form.js +22 -0
  57. package/build/layout/DetailDataLayout/components/Header.js +32 -0
  58. package/build/layout/DetailDataLayout/style.css +9 -0
  59. package/build/layout/DetailDataLayout/styles.js +12 -0
  60. package/build/layout/EntityOverviewLayout/EntityOverviewLayout.js +403 -0
  61. package/build/layout/EntityOverviewLayout/reducer/entityOverviewLayoutReducer.js +85 -0
  62. package/build/layout/EntityOverviewLayout/styles.js +13 -0
  63. package/build/layout/GenricLayOut/GenricLayOut.js +2421 -0
  64. package/build/layout/GenricLayOut/components/AppliedFilters.js +90 -0
  65. package/build/layout/GenricLayOut/components/CardList.js +34 -0
  66. package/build/layout/GenricLayOut/components/DropdownSearch.js +48 -0
  67. package/build/layout/GenricLayOut/components/Header.js +74 -0
  68. package/build/layout/GenricLayOut/components/Modal.js +96 -0
  69. package/build/layout/GenricLayOut/components/ProfileSection.js +219 -0
  70. package/build/layout/GenricLayOut/components/Search.js +51 -0
  71. package/build/layout/GenricLayOut/components/StaticFilter.css +73 -0
  72. package/build/layout/GenricLayOut/components/StaticFilter.js +37 -0
  73. package/build/layout/GenricLayOut/reducer/layoutReducer.js +310 -0
  74. package/build/layout/GenricLayOut/resolver/staticConfigResolver.js +98 -0
  75. package/build/layout/GenricLayOut/styles.js +42 -0
  76. package/build/utils/download-file.js +23 -0
  77. package/build/widgets/oa-form-widget/FormWidget.js +577 -0
  78. package/build/widgets/oa-form-widget/FormWidgetStyle.js +18 -0
  79. package/build/widgets/oa-widget-add-spare-part/AddSparePartCollapseWidget.js +80 -16
  80. package/build/widgets/oa-widget-add-spare-part/AddSparePartWidget.js +50 -7
  81. package/build/widgets/oa-widget-address/AddressWidget.js +12 -17
  82. package/build/widgets/oa-widget-approval/ApprovalWidget.js +19 -11
  83. package/build/widgets/oa-widget-approval/ApprovalWidgetNew.js +492 -0
  84. package/build/widgets/oa-widget-approval/styles.js +2 -2
  85. package/build/widgets/oa-widget-chat/ChatWidget.js +5 -5
  86. package/build/widgets/oa-widget-close-claim/CloseClaimWidget.js +17 -5
  87. package/build/widgets/oa-widget-collapsible-key-value/CollapsibleKeyValueWidget.js +396 -0
  88. package/build/widgets/oa-widget-collapsible-key-value/styles.js +16 -0
  89. package/build/widgets/oa-widget-content-panel/ContentPanel.js +82 -0
  90. package/build/widgets/oa-widget-content-panel/styles.js +12 -0
  91. package/build/widgets/oa-widget-customer-rating-card/CustomerRatingCard.js +5 -5
  92. package/build/widgets/oa-widget-detailcard/styles.js +1 -1
  93. package/build/widgets/oa-widget-document-upload/DocUploadWidget.js +6 -9
  94. package/build/widgets/oa-widget-dropdown-search-input/DropdownSearchInput.js +53 -19
  95. package/build/widgets/oa-widget-dropdown-search-input/styles.js +1 -1
  96. package/build/widgets/oa-widget-guide/GuideWidget.js +70 -0
  97. package/build/widgets/oa-widget-guide/GuideWidgetStyle.js +12 -0
  98. package/build/widgets/oa-widget-hub-automation-modal/HubAutomationDeleteBiker.js +24 -0
  99. package/build/widgets/oa-widget-hub-automation-modal/HubAutomationModal.js +34 -0
  100. package/build/widgets/oa-widget-hub-automation-modal/HubAutomationModalStyle.js +13 -0
  101. package/build/widgets/oa-widget-image-carousel/ImageCarouselWidget.js +256 -0
  102. package/build/widgets/oa-widget-image-carousel/styles.js +23 -0
  103. package/build/widgets/oa-widget-image-gallery/FullscreenViewer.js +169 -0
  104. package/build/widgets/oa-widget-image-gallery/ImageGallery.js +87 -0
  105. package/build/widgets/oa-widget-image-gallery/ThumbnailGrid.js +146 -0
  106. package/build/widgets/oa-widget-image-gallery/imageCache.js +15 -0
  107. package/build/widgets/oa-widget-image-gallery/imageGalleryStyle.js +16 -0
  108. package/build/widgets/oa-widget-item-info-card/InfoCardListWidget.js +60 -0
  109. package/build/widgets/oa-widget-item-info-card/ItemInfoCardWidget.js +83 -0
  110. package/build/widgets/oa-widget-item-info-card/styles.css +50 -0
  111. package/build/widgets/oa-widget-item-info-card/styles.js +14 -0
  112. package/build/widgets/oa-widget-key-value/KeyValueWidget.js +46 -12
  113. package/build/widgets/oa-widget-key-value/styles.js +1 -1
  114. package/build/widgets/oa-widget-kpi/KPICardWidget.js +86 -0
  115. package/build/widgets/oa-widget-kpi/styles.js +12 -0
  116. package/build/widgets/oa-widget-map-base-location/AddressDetails.js +21 -7
  117. package/build/widgets/oa-widget-map-base-location/AddressForm.js +32 -5
  118. package/build/widgets/oa-widget-map-base-location/MapBaseLocation.js +9 -3
  119. package/build/widgets/oa-widget-map-base-location/MapComponent.js +17 -2
  120. package/build/widgets/oa-widget-membershipcard/MembershipCard.js +14 -3
  121. package/build/widgets/oa-widget-membershipcard/styles.js +1 -1
  122. package/build/widgets/oa-widget-notes/NotesWidget.js +32 -30
  123. package/build/widgets/oa-widget-notes/styles.js +4 -3
  124. package/build/widgets/oa-widget-profile-data/ProfileDataWidget.js +165 -0
  125. package/build/widgets/oa-widget-profile-data/styles.js +13 -0
  126. package/build/widgets/oa-widget-progressive-steps/ProgressiveStepsWidget.js +362 -0
  127. package/build/widgets/oa-widget-progressive-steps/styles.js +12 -0
  128. package/build/widgets/oa-widget-reimbursement-breakup/ReimbursementBreakupWidget.js +18 -9
  129. package/build/widgets/oa-widget-reimbursement-breakup/styles.js +1 -1
  130. package/build/widgets/oa-widget-reupload-drawer/ReUploadDrawer.js +164 -0
  131. package/build/widgets/oa-widget-select-list-item-modal/SelectListItemModal.js +91 -0
  132. package/build/widgets/oa-widget-sidebar/SidebarWidget.js +175 -0
  133. package/build/widgets/oa-widget-sidebar/components/Header.js +33 -0
  134. package/build/widgets/oa-widget-sidebar/styles.js +13 -0
  135. package/build/widgets/oa-widget-spare-part/SparePartsWidget.js +63 -35
  136. package/build/widgets/oa-widget-track-shipment-list/fn.js +16 -4
  137. package/build/widgets/oa-widget-user-management/UserManagementWidget.js +407 -0
  138. package/build/widgets/oa-widget-user-management/styles.js +15 -0
  139. package/package.json +4 -2
  140. package/build/components/oa-component-textarea/TextArea.js +0 -74
@@ -0,0 +1,450 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.symbol.description.js");
4
+ require("core-js/modules/es.object.assign.js");
5
+ require("core-js/modules/es.weak-map.js");
6
+ Object.defineProperty(exports, "__esModule", {
7
+ value: true
8
+ });
9
+ exports.default = void 0;
10
+ require("core-js/modules/web.dom-collections.iterator.js");
11
+ require("core-js/modules/es.array.includes.js");
12
+ require("core-js/modules/es.string.includes.js");
13
+ require("core-js/modules/es.regexp.to-string.js");
14
+ var _react = _interopRequireWildcard(require("react"));
15
+ var _Search = _interopRequireDefault(require("@material-ui/icons/Search"));
16
+ var _FilterList = _interopRequireDefault(require("@material-ui/icons/FilterList"));
17
+ var _propTypes = _interopRequireDefault(require("prop-types"));
18
+ var _CustomTable = _interopRequireDefault(require("../oa-component-table/CustomTable"));
19
+ var _CustomPagination = _interopRequireDefault(require("../oa-component-pagination/CustomPagination"));
20
+ var _MaterialIcon = _interopRequireDefault(require("../oa-component-icons/MaterialIcon"));
21
+ var _CustomDrawer = _interopRequireDefault(require("../oa-component-drawer/CustomDrawer"));
22
+ var _CustomButton = _interopRequireDefault(require("../oa-component-button/CustomButton"));
23
+ var _CustomInput = _interopRequireDefault(require("../oa-component-input/CustomInput"));
24
+ var _CustomSelect = _interopRequireDefault(require("../oa-component-select/CustomSelect"));
25
+ var _CustomRadio = _interopRequireDefault(require("../oa-component-radio/CustomRadio"));
26
+ var _CustomDatePicker = _interopRequireDefault(require("../oa-component-datepicker/CustomDatePicker"));
27
+ var _styles = require("./styles");
28
+ const _excluded = ["dataSource", "columns", "rowKey", "emptyText"];
29
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
30
+ 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); }
31
+ 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; }
32
+ 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); }
33
+ 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; }
34
+ 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; }
35
+ 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; }
36
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
37
+ 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); }
38
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
39
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
40
+ /**
41
+ * TableWithSearchAndFilter - A complete table component with search, filters and pagination
42
+ *
43
+ * @param {Object} tableProps - Table configuration
44
+ * @param {Object} searchProps - Search configuration
45
+ * @param {Object} filterProps - Filter configuration
46
+ * @param {boolean} filterProps.show - Show/hide filters
47
+ * @param {Array} filterProps.config - Filter field configurations
48
+ * @param {Function} filterProps.onApply - Callback when filters are applied
49
+ * @param {Function} filterProps.onClear - Callback when filters are cleared
50
+ * @param {Function} filterProps.onChange - Callback when any filter value changes (key, value, allFilters, action)
51
+ * - action can be: 'search', 'select', 'clear', or 'change'
52
+ * @param {boolean} filterProps.loading - Global loading state for all filter selects
53
+ * @param {string} filterProps.buttonLabel - Custom filter button label
54
+ * @param {string} filterProps.drawerTitle - Custom filter drawer title
55
+ * @param {Object} paginationProps - Pagination configuration
56
+ * @param {string} className - Additional CSS class
57
+ *
58
+ * Filter Config Options:
59
+ * - type: 'select' - Supports `loading`, `showSearch`, `filterOption`, `disabled` properties
60
+ * - type: 'radio' - Radio button group
61
+ * - type: 'date' - Single date picker
62
+ * - type: 'dateRange' - Two date pickers with fields array
63
+ * - type: 'group' - Group of fields, each supporting `loading`, `showSearch`, `filterOption`, `disabled` (for select type)
64
+ */
65
+ function TableWithSearchAndFilter(_ref) {
66
+ let {
67
+ tableProps = {},
68
+ searchProps = {},
69
+ filterProps = {},
70
+ paginationProps = {},
71
+ className = ''
72
+ } = _ref;
73
+ // Destructure tableProps with defaults
74
+ const {
75
+ dataSource = [],
76
+ columns = [],
77
+ rowKey = 'id',
78
+ emptyText = 'No data found'
79
+ } = tableProps,
80
+ restTableProps = _objectWithoutProperties(tableProps, _excluded);
81
+
82
+ // Destructure searchProps with defaults
83
+ const {
84
+ show: showSearch = true,
85
+ placeholder: searchPlaceholder = 'Search...',
86
+ debounceDelay = 500,
87
+ searchKeys = [],
88
+ onSearch
89
+ } = searchProps;
90
+
91
+ // Destructure filterProps with defaults
92
+ const {
93
+ show: showFilters = true,
94
+ config: filterConfig = [],
95
+ onApply: onFiltersApply,
96
+ onClear: onFiltersClear,
97
+ onChange: onFilterChange,
98
+ loading: filtersLoading = false,
99
+ buttonLabel: filterButtonLabel = 'Filters',
100
+ drawerTitle: filterDrawerTitle = 'FILTERS'
101
+ } = filterProps;
102
+
103
+ // Destructure paginationProps with defaults
104
+ const {
105
+ show: showPagination = true,
106
+ current = 1,
107
+ pageSize = 10,
108
+ total,
109
+ pageSizeOptions = [10, 20, 50, 100],
110
+ onChange: onPaginationChange,
111
+ onShowSizeChange
112
+ } = paginationProps;
113
+
114
+ // Search state
115
+ const [searchValue, setSearchValue] = (0, _react.useState)('');
116
+ const [filteredData, setFilteredData] = (0, _react.useState)(dataSource);
117
+ const timerRef = (0, _react.useRef)(null);
118
+
119
+ // Filter drawer state
120
+ const [isFilterDrawerVisible, setIsFilterDrawerVisible] = (0, _react.useState)(false);
121
+ const [filterValues, setFilterValues] = (0, _react.useState)({});
122
+ const [appliedFilters, setAppliedFilters] = (0, _react.useState)({});
123
+
124
+ // Client-side filtering function
125
+ const applyFiltersAndSearch = (data, search, filters) => {
126
+ let result = [...data];
127
+ if (search && searchKeys.length > 0) {
128
+ const searchLower = search.toLowerCase();
129
+ result = result.filter(item => searchKeys.some(key => {
130
+ var _item$key;
131
+ return (_item$key = item[key]) === null || _item$key === void 0 ? void 0 : _item$key.toString().toLowerCase().includes(searchLower);
132
+ }));
133
+ }
134
+ Object.entries(filters).forEach(_ref2 => {
135
+ let [key, value] = _ref2;
136
+ if (value) {
137
+ result = result.filter(item => {
138
+ var _item$key2;
139
+ return ((_item$key2 = item[key]) === null || _item$key2 === void 0 ? void 0 : _item$key2.toString().toLowerCase()) === value.toString().toLowerCase();
140
+ });
141
+ }
142
+ });
143
+ setFilteredData(result);
144
+ };
145
+
146
+ // Sync filtered data when dataSource changes
147
+ (0, _react.useEffect)(() => {
148
+ applyFiltersAndSearch(dataSource, searchValue, appliedFilters);
149
+ }, [dataSource]);
150
+
151
+ // Search handlers
152
+ const handleSearchChange = e => {
153
+ const {
154
+ value
155
+ } = e.target;
156
+ setSearchValue(value);
157
+ if (timerRef.current) {
158
+ clearTimeout(timerRef.current);
159
+ }
160
+ if (debounceDelay === 0) {
161
+ if (onSearch) {
162
+ onSearch(value);
163
+ } else {
164
+ applyFiltersAndSearch(dataSource, value, appliedFilters);
165
+ }
166
+ return;
167
+ }
168
+ timerRef.current = setTimeout(() => {
169
+ if (onSearch) {
170
+ onSearch(value);
171
+ } else {
172
+ applyFiltersAndSearch(dataSource, value, appliedFilters);
173
+ }
174
+ }, debounceDelay);
175
+ };
176
+ const handleSearchPressEnter = () => {
177
+ if (timerRef.current) {
178
+ clearTimeout(timerRef.current);
179
+ }
180
+ if (onSearch) {
181
+ onSearch(searchValue);
182
+ } else {
183
+ applyFiltersAndSearch(dataSource, searchValue, appliedFilters);
184
+ }
185
+ };
186
+ (0, _react.useEffect)(() => () => {
187
+ if (timerRef.current) {
188
+ clearTimeout(timerRef.current);
189
+ }
190
+ }, []);
191
+
192
+ // Filter handlers
193
+ const handleOpenFilterDrawer = () => setIsFilterDrawerVisible(true);
194
+ const handleCloseFilterDrawer = () => setIsFilterDrawerVisible(false);
195
+ const handleFilterChange = function handleFilterChange(key, value) {
196
+ let action = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'change';
197
+ const updatedFilters = _objectSpread(_objectSpread({}, filterValues), {}, {
198
+ [key]: value
199
+ });
200
+ setFilterValues(updatedFilters);
201
+
202
+ // Call onChange callback if provided for real-time filter changes
203
+ if (onFilterChange) {
204
+ onFilterChange(key, value, updatedFilters, action);
205
+ }
206
+ };
207
+ const handleApplyFilters = () => {
208
+ setAppliedFilters(_objectSpread({}, filterValues));
209
+ setIsFilterDrawerVisible(false);
210
+ if (onFiltersApply) {
211
+ onFiltersApply(filterValues);
212
+ } else {
213
+ applyFiltersAndSearch(dataSource, searchValue, filterValues);
214
+ }
215
+ };
216
+ const handleClearFilters = () => {
217
+ setFilterValues({});
218
+ setAppliedFilters({});
219
+ if (onFiltersClear) {
220
+ onFiltersClear();
221
+ } else {
222
+ applyFiltersAndSearch(dataSource, searchValue, {});
223
+ }
224
+ };
225
+
226
+ // Helper function to render CustomSelect (DRY principle)
227
+ const renderSelect = (fieldKey, fieldConfig) => {
228
+ const {
229
+ placeholder,
230
+ options = [],
231
+ loading = false,
232
+ isApiCallInProgress = false,
233
+ showSearch: fieldShowSearch = false,
234
+ filterOption,
235
+ disabled = false
236
+ } = fieldConfig;
237
+ const fieldValue = filterValues[fieldKey];
238
+ const isLoading = filtersLoading || loading || isApiCallInProgress;
239
+ return /*#__PURE__*/_react.default.createElement(_CustomSelect.default, {
240
+ placeholder: placeholder || 'Select an option',
241
+ value: fieldValue || undefined,
242
+ options: options,
243
+ onSelectionChange: val => {
244
+ // If val is null/undefined, it's a clear action
245
+ const action = val === null || val === undefined ? 'clear' : 'select';
246
+ handleFilterChange(fieldKey, val, action);
247
+ },
248
+ onSearch: searchText => handleFilterChange(fieldKey, searchText, 'search'),
249
+ onChange: val => {
250
+ // Catch clear from Ant Design's onChange (passes through {...props})
251
+ if (val === undefined || val === null) {
252
+ handleFilterChange(fieldKey, null, 'clear');
253
+ }
254
+ },
255
+ allowClear: true,
256
+ loading: isLoading,
257
+ showSearch: fieldShowSearch,
258
+ filterOption: filterOption,
259
+ disabled: disabled
260
+ // notFoundContent={(!isApiCallInProgress && query?.length < 3) ? "Start Typing atleast 3 characters" : (isApiCallInProgress && query?.length > 0) ? "Loading..." : "No data found"}
261
+ });
262
+ };
263
+
264
+ // Helper function to render CustomDatePicker (DRY principle)
265
+ const renderDatePicker = (fieldKey, fieldConfig) => {
266
+ const {
267
+ placeholder
268
+ } = fieldConfig;
269
+ const fieldValue = filterValues[fieldKey];
270
+ return /*#__PURE__*/_react.default.createElement(_CustomDatePicker.default, {
271
+ placeholder: placeholder || 'Select date',
272
+ value: fieldValue,
273
+ onChange: date => handleFilterChange(fieldKey, date, 'change')
274
+ });
275
+ };
276
+
277
+ // Helper function to render CustomRadio.Group (DRY principle)
278
+ const renderRadioGroup = (fieldKey, fieldConfig) => {
279
+ const {
280
+ options = []
281
+ } = fieldConfig;
282
+ const fieldValue = filterValues[fieldKey];
283
+ return /*#__PURE__*/_react.default.createElement(_CustomRadio.default.Group, {
284
+ value: fieldValue,
285
+ onChange: e => handleFilterChange(fieldKey, e.target.value, 'change')
286
+ }, options.map(option => /*#__PURE__*/_react.default.createElement(_CustomRadio.default, {
287
+ key: option.value,
288
+ value: option.value,
289
+ label: option.label
290
+ })));
291
+ };
292
+
293
+ // Render filter input based on type
294
+ const renderFilterInput = filter => {
295
+ const {
296
+ type,
297
+ key,
298
+ fields = []
299
+ } = filter;
300
+ switch (type) {
301
+ case 'radio':
302
+ return renderRadioGroup(key, filter);
303
+ case 'select':
304
+ return renderSelect(key, filter);
305
+ case 'date':
306
+ return renderDatePicker(key, filter);
307
+ case 'dateRange':
308
+ return /*#__PURE__*/_react.default.createElement(_styles.DateRangeContainer, null, fields.map(field => /*#__PURE__*/_react.default.createElement(_styles.FilterSubField, {
309
+ key: field.key
310
+ }, /*#__PURE__*/_react.default.createElement(_styles.FilterSubLabel, null, field.label, field.required && /*#__PURE__*/_react.default.createElement(_styles.RequiredMark, null, "*")), renderDatePicker(field.key, field))));
311
+ case 'group':
312
+ return /*#__PURE__*/_react.default.createElement(_styles.FilterGroup, null, fields.map(field => /*#__PURE__*/_react.default.createElement(_styles.FilterSubField, {
313
+ key: field.key
314
+ }, /*#__PURE__*/_react.default.createElement(_styles.FilterSubLabel, null, field.label, field.required && /*#__PURE__*/_react.default.createElement(_styles.RequiredMark, null, "*")), field.type === 'select' && renderSelect(field.key, field), field.type === 'date' && renderDatePicker(field.key, field), field.type === 'radio' && renderRadioGroup(field.key, field))));
315
+ default:
316
+ return null;
317
+ }
318
+ };
319
+ const displayData = onSearch || onFiltersApply ? dataSource : filteredData;
320
+ const totalRecords = total !== null && total !== void 0 ? total : displayData.length;
321
+ return /*#__PURE__*/_react.default.createElement(_styles.TableWithSearchAndFilterContainer, {
322
+ className: className
323
+ }, (showSearch || showFilters) && /*#__PURE__*/_react.default.createElement(_styles.Toolbar, null, showSearch && /*#__PURE__*/_react.default.createElement(_CustomInput.default, {
324
+ prefix: /*#__PURE__*/_react.default.createElement(_MaterialIcon.default, {
325
+ icon: _Search.default,
326
+ size: 20,
327
+ style: {
328
+ color: '#8c8c8c'
329
+ }
330
+ }),
331
+ placeholder: searchPlaceholder,
332
+ value: searchValue,
333
+ onChange: handleSearchChange,
334
+ onPressEnter: handleSearchPressEnter,
335
+ allowClear: true,
336
+ style: {
337
+ width: '350px',
338
+ flexShrink: 0
339
+ }
340
+ }), showFilters && /*#__PURE__*/_react.default.createElement(_CustomButton.default, {
341
+ label: filterButtonLabel,
342
+ onClick: handleOpenFilterDrawer,
343
+ type: "secondary",
344
+ size: "medium",
345
+ iconConfig: {
346
+ icon: /*#__PURE__*/_react.default.createElement(_MaterialIcon.default, {
347
+ icon: _FilterList.default
348
+ }),
349
+ position: 'left'
350
+ }
351
+ })), showFilters && /*#__PURE__*/_react.default.createElement(_CustomDrawer.default, {
352
+ title: filterDrawerTitle,
353
+ placement: "right",
354
+ isBaseDrawer: true,
355
+ onClose: handleCloseFilterDrawer,
356
+ open: isFilterDrawerVisible,
357
+ visible: isFilterDrawerVisible,
358
+ closable: false,
359
+ width: 400
360
+ }, /*#__PURE__*/_react.default.createElement(_styles.FilterDrawerContent, null, /*#__PURE__*/_react.default.createElement(_styles.FilterDrawerBody, null, filterConfig.length > 0 ? filterConfig.map(filter => /*#__PURE__*/_react.default.createElement(_styles.FilterSection, {
361
+ key: filter.key
362
+ }, /*#__PURE__*/_react.default.createElement(_styles.FilterLabel, null, filter.label, filter.required && /*#__PURE__*/_react.default.createElement(_styles.RequiredMark, null, "*")), renderFilterInput(filter))) : /*#__PURE__*/_react.default.createElement(_styles.FilterSection, null, /*#__PURE__*/_react.default.createElement(_styles.FilterLabel, null, "No filters configured"))), /*#__PURE__*/_react.default.createElement(_styles.FilterDrawerFooter, null, /*#__PURE__*/_react.default.createElement(_CustomButton.default, {
363
+ label: "Clear All",
364
+ onClick: handleClearFilters,
365
+ type: "secondary",
366
+ size: "medium"
367
+ }), /*#__PURE__*/_react.default.createElement(_CustomButton.default, {
368
+ label: "Apply Filter",
369
+ onClick: handleApplyFilters,
370
+ type: "primary",
371
+ size: "medium"
372
+ })))), /*#__PURE__*/_react.default.createElement(_CustomTable.default, _extends({
373
+ rowKey: rowKey,
374
+ dataSource: displayData,
375
+ columns: columns,
376
+ pagination: false,
377
+ emptyText: emptyText
378
+ }, restTableProps)), showPagination && totalRecords > pageSize && /*#__PURE__*/_react.default.createElement(_styles.PaginationContainer, null, /*#__PURE__*/_react.default.createElement(_CustomPagination.default, {
379
+ current: current,
380
+ pageSize: pageSize,
381
+ total: totalRecords,
382
+ onChange: onPaginationChange,
383
+ onShowSizeChange: onShowSizeChange,
384
+ pageSizeOptions: pageSizeOptions,
385
+ showSizeChanger: true,
386
+ showTotal: true
387
+ })));
388
+ }
389
+ TableWithSearchAndFilter.propTypes = {
390
+ tableProps: _propTypes.default.shape({
391
+ dataSource: _propTypes.default.array,
392
+ columns: _propTypes.default.array.isRequired,
393
+ rowKey: _propTypes.default.string,
394
+ emptyText: _propTypes.default.string
395
+ }),
396
+ searchProps: _propTypes.default.shape({
397
+ show: _propTypes.default.bool,
398
+ placeholder: _propTypes.default.string,
399
+ debounceDelay: _propTypes.default.number,
400
+ searchKeys: _propTypes.default.arrayOf(_propTypes.default.string),
401
+ onSearch: _propTypes.default.func
402
+ }),
403
+ filterProps: _propTypes.default.shape({
404
+ show: _propTypes.default.bool,
405
+ config: _propTypes.default.array,
406
+ onApply: _propTypes.default.func,
407
+ onClear: _propTypes.default.func,
408
+ onChange: _propTypes.default.func,
409
+ loading: _propTypes.default.bool,
410
+ buttonLabel: _propTypes.default.string,
411
+ drawerTitle: _propTypes.default.string
412
+ }),
413
+ paginationProps: _propTypes.default.shape({
414
+ show: _propTypes.default.bool,
415
+ current: _propTypes.default.number,
416
+ pageSize: _propTypes.default.number,
417
+ total: _propTypes.default.number,
418
+ pageSizeOptions: _propTypes.default.array,
419
+ onChange: _propTypes.default.func,
420
+ onShowSizeChange: _propTypes.default.func
421
+ }),
422
+ className: _propTypes.default.string
423
+ };
424
+ TableWithSearchAndFilter.defaultProps = {
425
+ tableProps: {
426
+ dataSource: [],
427
+ rowKey: 'id',
428
+ emptyText: 'No data found'
429
+ },
430
+ searchProps: {
431
+ show: true,
432
+ placeholder: 'Search...',
433
+ debounceDelay: 500,
434
+ searchKeys: []
435
+ },
436
+ filterProps: {
437
+ show: true,
438
+ config: [],
439
+ buttonLabel: 'Filters',
440
+ drawerTitle: 'FILTERS'
441
+ },
442
+ paginationProps: {
443
+ show: true,
444
+ current: 1,
445
+ pageSize: 10,
446
+ pageSizeOptions: [10, 20, 50, 100]
447
+ },
448
+ className: ''
449
+ };
450
+ var _default = exports.default = TableWithSearchAndFilter;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Toolbar = exports.TableWithSearchAndFilterContainer = exports.RequiredMark = exports.PaginationContainer = exports.FilterSubLabelText = exports.FilterSubLabel = exports.FilterSubField = exports.FilterSection = exports.FilterLabel = exports.FilterGroup = exports.FilterDrawerFooter = exports.FilterDrawerContent = exports.FilterDrawerBody = exports.DateRangeContainer = void 0;
7
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
8
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14;
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 TableWithSearchAndFilterContainer = exports.TableWithSearchAndFilterContainer = _styledComponents.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n width: 100%;\n"])));
12
+ const Toolbar = exports.Toolbar = _styledComponents.default.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n gap: 16px;\n\n @media screen and (max-width: 768px) {\n flex-direction: column;\n align-items: stretch;\n }\n"])));
13
+ const FilterSection = exports.FilterSection = _styledComponents.default.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n margin-bottom: 24px;\n"])));
14
+ const FilterLabel = exports.FilterLabel = _styledComponents.default.label(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n font-weight: 600;\n font-size: 14px;\n color: var(--color-primary-content, #212121);\n margin-bottom: 12px;\n"])));
15
+ const RequiredMark = exports.RequiredMark = _styledComponents.default.span(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n color: #ff4d4f;\n margin-left: 2px;\n font-weight: 400;\n"])));
16
+ const PaginationContainer = exports.PaginationContainer = _styledComponents.default.div(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n margin-top: 16px;\n display: flex;\n justify-content: flex-end;\n align-items: center;\n"])));
17
+ const FilterDrawerContent = exports.FilterDrawerContent = _styledComponents.default.div(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n min-height: calc(100vh - 150px);\n"])));
18
+ const FilterDrawerBody = exports.FilterDrawerBody = _styledComponents.default.div(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n flex: 1;\n overflow-y: auto;\n \n /* Make radio buttons horizontal */\n .ant-radio-group {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n gap: 16px;\n }\n \n /* Ensure radio wrapper is visible - override line-height: 0 */\n .ant-radio-wrapper {\n display: inline-flex !important;\n align-items: center !important;\n margin-right: 0 !important;\n line-height: 1.5 !important;\n }\n \n /* Ensure radio label text is visible */\n .ant-radio-wrapper span:not(.ant-radio) {\n line-height: 1.5 !important;\n }\n \n .ant-radio-wrapper p {\n margin: 0;\n line-height: 1.5 !important;\n }\n"])));
19
+ const FilterDrawerFooter = exports.FilterDrawerFooter = _styledComponents.default.div(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n padding: 16px 0;\n border-top: 1px solid #e8e8e8;\n margin-top: auto;\n"])));
20
+ const FilterGroup = exports.FilterGroup = _styledComponents.default.div(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n gap: 16px;\n"])));
21
+ const FilterSubField = exports.FilterSubField = _styledComponents.default.div(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n gap: 8px;\n"])));
22
+ const FilterSubLabel = exports.FilterSubLabel = _styledComponents.default.label(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n font-weight: 400;\n font-size: 14px;\n color: var(--color-primary-content, #212121);\n"])));
23
+ const FilterSubLabelText = exports.FilterSubLabelText = _styledComponents.default.span(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["\n color: var(--color-primary-content, #212121);\n"])));
24
+ const DateRangeContainer = exports.DateRangeContainer = _styledComponents.default.div(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n gap: 16px;\n"])));
@@ -46,7 +46,7 @@ function CustomTabs(_ref) {
46
46
  type
47
47
  } = _ref,
48
48
  antDesignProps = _objectWithoutProperties(_ref, _excluded);
49
- const items = data.tabs.map(_ref2 => {
49
+ const items = data.tabs && data.tabs.map(_ref2 => {
50
50
  let {
51
51
  body,
52
52
  disabled: isTabDisabed,
@@ -4,11 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
+ require("core-js/modules/es.object.assign.js");
7
8
  var _react = _interopRequireDefault(require("react"));
8
9
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
10
  var _Typography = _interopRequireDefault(require("../oa-component-typography/Typography"));
10
11
  var _styles = require("./styles");
11
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ 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); } /* eslint-disable */
12
14
  /**
13
15
  * A simple tag component that displays a label.
14
16
  *
@@ -21,28 +23,44 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
21
23
  */
22
24
  function CustomTag(_ref) {
23
25
  let {
24
- 'data-test': dataTest,
26
+ "data-test": dataTest,
25
27
  label,
26
28
  type,
27
- visible
29
+ visible,
30
+ bgColor,
31
+ borderColor,
32
+ textColor,
33
+ style
28
34
  } = _ref;
29
- return /*#__PURE__*/_react.default.createElement(_styles.StyledTag, {
35
+ return /*#__PURE__*/_react.default.createElement(_styles.StyledTag, _extends({
30
36
  "data-test": dataTest,
31
37
  type: type,
32
- visible: visible
33
- }, /*#__PURE__*/_react.default.createElement(_styles.CenteredTextContainer, null, /*#__PURE__*/_react.default.createElement(_Typography.default, {
38
+ visible: visible,
39
+ bgColor: bgColor,
40
+ borderColor: borderColor,
41
+ textColor: textColor
42
+ }, style && {
43
+ style
44
+ }), /*#__PURE__*/_react.default.createElement(_styles.CenteredTextContainer, null, /*#__PURE__*/_react.default.createElement(_Typography.default, {
34
45
  typography: "type-button-500"
35
46
  }, label)));
36
47
  }
37
48
  CustomTag.propTypes = {
38
- 'data-test': _propTypes.default.string,
49
+ "data-test": _propTypes.default.string,
39
50
  label: _propTypes.default.string.isRequired,
40
- type: _propTypes.default.oneOf(['success', 'pending', 'failed', 'recommended']),
41
- visible: _propTypes.default.bool
51
+ type: _propTypes.default.oneOf(["success", "pending", "failed", "recommended", "primary", "blue", "custom"]),
52
+ visible: _propTypes.default.bool,
53
+ bgColor: _propTypes.default.string,
54
+ borderColor: _propTypes.default.string,
55
+ textColor: _propTypes.default.string,
56
+ style: _propTypes.default.object
42
57
  };
43
58
  CustomTag.defaultProps = {
44
- 'data-test': null,
45
- type: '',
46
- visible: true
59
+ "data-test": null,
60
+ type: "",
61
+ visible: true,
62
+ bgColor: "",
63
+ borderColor: "",
64
+ textColor: ""
47
65
  };
48
66
  var _default = exports.default = CustomTag;
@@ -8,7 +8,13 @@ var _styledComponents = _interopRequireDefault(require("styled-components"));
8
8
  var _templateObject, _templateObject2;
9
9
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
10
  function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
11
- const getColorStyles = type => {
11
+ const getColorStyles = props => {
12
+ const {
13
+ type,
14
+ bgColor,
15
+ borderColor,
16
+ textColor
17
+ } = props;
12
18
  if (type === 'success') {
13
19
  return {
14
20
  backgroundColor: 'var(--color-background-positive)',
@@ -16,6 +22,13 @@ const getColorStyles = type => {
16
22
  textColor: 'var(--color-positive)'
17
23
  };
18
24
  }
25
+ if (type === 'primary') {
26
+ return {
27
+ backgroundColor: 'var(--color-divider)',
28
+ borderColor: 'var(--color-placeholder-text)',
29
+ textColor: 'var(--color-primary-content)'
30
+ };
31
+ }
19
32
  if (type === 'pending') {
20
33
  return {
21
34
  backgroundColor: 'var(--color-background-warning)',
@@ -37,6 +50,20 @@ const getColorStyles = type => {
37
50
  textColor: 'var(--color-negative)'
38
51
  };
39
52
  }
53
+ if (type === 'blue') {
54
+ return {
55
+ backgroundColor: 'var(--color-background-info)',
56
+ borderColor: 'var(--color-primary)',
57
+ textColor: 'var(--color-primary)'
58
+ };
59
+ }
60
+ if (type === 'custom') {
61
+ return {
62
+ backgroundColor: bgColor,
63
+ borderColor,
64
+ textColor
65
+ };
66
+ }
40
67
  return {
41
68
  backgroundColor: '#CCCCCC',
42
69
  borderColor: 'var(--color-primary-content)',
@@ -44,5 +71,5 @@ const getColorStyles = type => {
44
71
  };
45
72
  };
46
73
  var _default = exports.default = {};
47
- const StyledTag = exports.StyledTag = _styledComponents.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: inline-block;\n padding: 1px 12px;\n \n color: ", ";\n \n background-color: ", ";\n\n border: 1px solid ", ";\n border-radius: 4px;\n \n visibility: ", ";\n"])), props => getColorStyles(props.type).textColor, props => getColorStyles(props.type).backgroundColor, props => getColorStyles(props.type).borderColor, props => props.visible ? 'visible' : 'hidden');
48
- const CenteredTextContainer = exports.CenteredTextContainer = _styledComponents.default.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n display: flex;\n"])));
74
+ const StyledTag = exports.StyledTag = _styledComponents.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: inline-block;\n padding: 1px 12px;\n\n color: ", ";\n\n background-color: ", ";\n\n border: 1px solid ", ";\n border-radius: 4px;\n\n visibility: ", ";\n"])), props => getColorStyles(props).textColor, props => getColorStyles(props).backgroundColor, props => getColorStyles(props).borderColor, props => props.visible ? 'visible' : 'hidden');
75
+ const CenteredTextContainer = exports.CenteredTextContainer = _styledComponents.default.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n display: flex; white-space: nowrap;\n"])));