oa-componentbook 1.0.1-stage.46 → 1.0.1-stage.460

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 (143) hide show
  1. package/build/components/oa-component-accordion/Accordion.js +139 -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 +154 -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-info/CustomInfo.js +42 -6
  13. package/build/components/oa-component-info/styles.js +5 -4
  14. package/build/components/oa-component-modal/CustomModal.js +59 -48
  15. package/build/components/oa-component-modal/styles.js +3 -2
  16. package/build/components/oa-component-pagination/CustomPagination.js +111 -0
  17. package/build/components/oa-component-pagination/styles.js +12 -0
  18. package/build/components/oa-component-progress-bar/CustomProgressBar.js +8 -4
  19. package/build/components/oa-component-select/CustomSelect.js +130 -56
  20. package/build/components/oa-component-steps/CustomSteps.js +117 -0
  21. package/build/components/oa-component-steps/styles.js +12 -0
  22. package/build/components/oa-component-table/CustomTable.js +28 -5
  23. package/build/components/oa-component-table/CustomTableV1.js +614 -0
  24. package/build/components/oa-component-table/styles.js +1 -1
  25. package/build/components/oa-component-table/stylesV1.js +19 -0
  26. package/build/components/oa-component-table-with-search-and-filter/TableWithSearchAndFilter.js +515 -0
  27. package/build/components/oa-component-table-with-search-and-filter/styles.js +25 -0
  28. package/build/components/oa-component-tabs/CustomTabs.js +51 -4
  29. package/build/components/oa-component-tabs/styles.js +4 -3
  30. package/build/components/oa-component-tag/CustomTag.js +30 -11
  31. package/build/components/oa-component-tag/styles.js +30 -3
  32. package/build/components/oa-component-textarea/CustomTextArea.js +161 -0
  33. package/build/components/oa-component-textarea/constants.js +39 -0
  34. package/build/components/oa-component-textarea/styles.js +12 -3
  35. package/build/components/oa-component-tooltip/CustomTooltip.js +8 -4
  36. package/build/components/oa-component-upload/CustomUpload.js +129 -42
  37. package/build/components/oa-component-viewer/CustomViewer.js +17 -11
  38. package/build/dev/oa-component-document-viewer/CustomDocumentViewer.js +367 -0
  39. package/build/dev/oa-component-document-viewer/styles.js +12 -0
  40. package/build/dev/oa-component-upload/CustomUpload.js +116 -29
  41. package/build/dev/oa-component-upload/styles.js +2 -2
  42. package/build/dev/oa-widget-document-modal/DocumentSideModal.js +166 -0
  43. package/build/dev/oa-widget-document-modal/styles.js +12 -0
  44. package/build/dev/oa-widget-document-side-drawer/DocumentSideDrawer.js +200 -0
  45. package/build/dev/oa-widget-document-side-drawer/styles.js +12 -0
  46. package/build/dev/oa-widget-document-viewer-with-details/DocumentViewerWithDetails.js +123 -0
  47. package/build/global-css/GlobalCss.js +2 -1
  48. package/build/global-css/GridLayout.js +1 -1
  49. package/build/global-css/commonStyles.js +11 -0
  50. package/build/images/Car.png +0 -0
  51. package/build/images/TwoWheeler.png +0 -0
  52. package/build/images/astronaut_emptystate.png +0 -0
  53. package/build/images/exportGrp01.png +0 -0
  54. package/build/images/exportGrp02.png +0 -0
  55. package/build/images/exportGrp03.png +0 -0
  56. package/build/images/outOfStock.png +0 -0
  57. package/build/index.js +135 -2
  58. package/build/layout/DetailDataLayout/DetailDataLayout.js +20 -0
  59. package/build/layout/DetailDataLayout/components/Form.js +22 -0
  60. package/build/layout/DetailDataLayout/components/Header.js +32 -0
  61. package/build/layout/DetailDataLayout/style.css +9 -0
  62. package/build/layout/DetailDataLayout/styles.js +12 -0
  63. package/build/layout/EntityOverviewLayout/EntityOverviewLayout.js +403 -0
  64. package/build/layout/EntityOverviewLayout/reducer/entityOverviewLayoutReducer.js +85 -0
  65. package/build/layout/EntityOverviewLayout/styles.js +13 -0
  66. package/build/layout/GenricLayOut/GenricLayOut.js +2551 -0
  67. package/build/layout/GenricLayOut/components/AppliedFilters.js +90 -0
  68. package/build/layout/GenricLayOut/components/CardList.js +34 -0
  69. package/build/layout/GenricLayOut/components/DropdownSearch.js +48 -0
  70. package/build/layout/GenricLayOut/components/Header.js +74 -0
  71. package/build/layout/GenricLayOut/components/Modal.js +96 -0
  72. package/build/layout/GenricLayOut/components/ProfileSection.js +219 -0
  73. package/build/layout/GenricLayOut/components/Search.js +51 -0
  74. package/build/layout/GenricLayOut/components/StaticFilter.css +73 -0
  75. package/build/layout/GenricLayOut/components/StaticFilter.js +37 -0
  76. package/build/layout/GenricLayOut/reducer/layoutReducer.js +328 -0
  77. package/build/layout/GenricLayOut/resolver/staticConfigResolver.js +98 -0
  78. package/build/layout/GenricLayOut/styles.js +42 -0
  79. package/build/utils/download-file.js +23 -0
  80. package/build/widgets/oa-form-widget/FormWidget.js +577 -0
  81. package/build/widgets/oa-form-widget/FormWidgetStyle.js +18 -0
  82. package/build/widgets/oa-widget-add-spare-part/AddSparePartCollapseWidget.js +80 -16
  83. package/build/widgets/oa-widget-add-spare-part/AddSparePartWidget.js +50 -7
  84. package/build/widgets/oa-widget-address/AddressWidget.js +12 -17
  85. package/build/widgets/oa-widget-approval/ApprovalWidget.js +19 -11
  86. package/build/widgets/oa-widget-approval/ApprovalWidgetNew.js +492 -0
  87. package/build/widgets/oa-widget-approval/styles.js +2 -2
  88. package/build/widgets/oa-widget-chat/ChatWidget.js +5 -5
  89. package/build/widgets/oa-widget-close-claim/CloseClaimWidget.js +17 -5
  90. package/build/widgets/oa-widget-collapsible-key-value/CollapsibleKeyValueWidget.js +396 -0
  91. package/build/widgets/oa-widget-collapsible-key-value/styles.js +16 -0
  92. package/build/widgets/oa-widget-content-panel/ContentPanel.js +82 -0
  93. package/build/widgets/oa-widget-content-panel/styles.js +12 -0
  94. package/build/widgets/oa-widget-customer-rating-card/CustomerRatingCard.js +5 -5
  95. package/build/widgets/oa-widget-detailcard/styles.js +1 -1
  96. package/build/widgets/oa-widget-document-upload/DocUploadWidget.js +6 -9
  97. package/build/widgets/oa-widget-dropdown-search-input/DropdownSearchInput.js +53 -19
  98. package/build/widgets/oa-widget-dropdown-search-input/styles.js +1 -1
  99. package/build/widgets/oa-widget-guide/GuideWidget.js +70 -0
  100. package/build/widgets/oa-widget-guide/GuideWidgetStyle.js +12 -0
  101. package/build/widgets/oa-widget-hub-automation-modal/HubAutomationDeleteBiker.js +24 -0
  102. package/build/widgets/oa-widget-hub-automation-modal/HubAutomationModal.js +34 -0
  103. package/build/widgets/oa-widget-hub-automation-modal/HubAutomationModalStyle.js +13 -0
  104. package/build/widgets/oa-widget-image-carousel/ImageCarouselWidget.js +256 -0
  105. package/build/widgets/oa-widget-image-carousel/styles.js +23 -0
  106. package/build/widgets/oa-widget-image-gallery/FullscreenViewer.js +169 -0
  107. package/build/widgets/oa-widget-image-gallery/ImageGallery.js +87 -0
  108. package/build/widgets/oa-widget-image-gallery/ThumbnailGrid.js +146 -0
  109. package/build/widgets/oa-widget-image-gallery/imageCache.js +15 -0
  110. package/build/widgets/oa-widget-image-gallery/imageGalleryStyle.js +16 -0
  111. package/build/widgets/oa-widget-item-info-card/InfoCardListWidget.js +60 -0
  112. package/build/widgets/oa-widget-item-info-card/ItemInfoCardWidget.js +83 -0
  113. package/build/widgets/oa-widget-item-info-card/styles.css +50 -0
  114. package/build/widgets/oa-widget-item-info-card/styles.js +14 -0
  115. package/build/widgets/oa-widget-key-value/KeyValueWidget.js +46 -12
  116. package/build/widgets/oa-widget-key-value/styles.js +1 -1
  117. package/build/widgets/oa-widget-kpi/KPICardWidget.js +86 -0
  118. package/build/widgets/oa-widget-kpi/styles.js +12 -0
  119. package/build/widgets/oa-widget-map-base-location/AddressDetails.js +21 -7
  120. package/build/widgets/oa-widget-map-base-location/AddressForm.js +32 -5
  121. package/build/widgets/oa-widget-map-base-location/MapBaseLocation.js +9 -3
  122. package/build/widgets/oa-widget-map-base-location/MapComponent.js +17 -2
  123. package/build/widgets/oa-widget-membershipcard/MembershipCard.js +14 -3
  124. package/build/widgets/oa-widget-membershipcard/styles.js +1 -1
  125. package/build/widgets/oa-widget-notes/NotesWidget.js +32 -30
  126. package/build/widgets/oa-widget-notes/styles.js +4 -3
  127. package/build/widgets/oa-widget-profile-data/ProfileDataWidget.js +165 -0
  128. package/build/widgets/oa-widget-profile-data/styles.js +13 -0
  129. package/build/widgets/oa-widget-progressive-steps/ProgressiveStepsWidget.js +362 -0
  130. package/build/widgets/oa-widget-progressive-steps/styles.js +12 -0
  131. package/build/widgets/oa-widget-reimbursement-breakup/ReimbursementBreakupWidget.js +18 -9
  132. package/build/widgets/oa-widget-reimbursement-breakup/styles.js +1 -1
  133. package/build/widgets/oa-widget-reupload-drawer/ReUploadDrawer.js +164 -0
  134. package/build/widgets/oa-widget-select-list-item-modal/SelectListItemModal.js +91 -0
  135. package/build/widgets/oa-widget-sidebar/SidebarWidget.js +175 -0
  136. package/build/widgets/oa-widget-sidebar/components/Header.js +33 -0
  137. package/build/widgets/oa-widget-sidebar/styles.js +13 -0
  138. package/build/widgets/oa-widget-spare-part/SparePartsWidget.js +63 -35
  139. package/build/widgets/oa-widget-track-shipment-list/fn.js +16 -4
  140. package/build/widgets/oa-widget-user-management/UserManagementWidget.js +407 -0
  141. package/build/widgets/oa-widget-user-management/styles.js +15 -0
  142. package/package.json +4 -2
  143. package/build/components/oa-component-textarea/TextArea.js +0 -74
@@ -0,0 +1,515 @@
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.json.stringify.js");
12
+ var _react = _interopRequireWildcard(require("react"));
13
+ var _Search = _interopRequireDefault(require("@material-ui/icons/Search"));
14
+ var _FilterList = _interopRequireDefault(require("@material-ui/icons/FilterList"));
15
+ var _propTypes = _interopRequireDefault(require("prop-types"));
16
+ var _CustomTable = _interopRequireDefault(require("../oa-component-table/CustomTable"));
17
+ var _CustomPagination = _interopRequireDefault(require("../oa-component-pagination/CustomPagination"));
18
+ var _MaterialIcon = _interopRequireDefault(require("../oa-component-icons/MaterialIcon"));
19
+ var _CustomDrawer = _interopRequireDefault(require("../oa-component-drawer/CustomDrawer"));
20
+ var _CustomButton = _interopRequireDefault(require("../oa-component-button/CustomButton"));
21
+ var _CustomInput = _interopRequireDefault(require("../oa-component-input/CustomInput"));
22
+ var _CustomSelect = _interopRequireDefault(require("../oa-component-select/CustomSelect"));
23
+ var _CustomRadio = _interopRequireDefault(require("../oa-component-radio/CustomRadio"));
24
+ var _CustomDatePicker = _interopRequireDefault(require("../oa-component-datepicker/CustomDatePicker"));
25
+ var _styles = require("./styles");
26
+ const _excluded = ["dataSource", "columns", "rowKey", "emptyText"];
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 _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); }
31
+ 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; }
32
+ 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; }
33
+ 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; }
34
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
35
+ 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); }
36
+ 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; }
37
+ 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; }
38
+ /**
39
+ * TableWithSearchAndFilter - A complete table component with search, filters and pagination
40
+ *
41
+ * @param {Object} tableProps - Table configuration
42
+ * @param {Object} searchProps - Search configuration
43
+ * @param {Object} filterProps - Filter configuration
44
+ * @param {boolean} filterProps.show - Show/hide filters
45
+ * @param {Array} filterProps.config - Filter field configurations
46
+ * @param {Function} filterProps.onApply - Callback when filters are applied
47
+ * @param {Function} filterProps.onClear - Callback when filters are cleared
48
+ * @param {Function} filterProps.onChange - Callback when any filter value changes (key, value, allFilters, action)
49
+ * - action can be: 'search', 'select', 'clear', or 'change'
50
+ * @param {boolean} filterProps.loading - Global loading state for all filter selects
51
+ * @param {string} filterProps.buttonLabel - Custom filter button label
52
+ * @param {string} filterProps.drawerTitle - Custom filter drawer title
53
+ * @param {Object} paginationProps - Pagination configuration
54
+ * @param {string} className - Additional CSS class
55
+ *
56
+ * Filter Config Options:
57
+ * - type: 'select' - Supports `loading`, `showSearch`, `filterOption`, `disabled` properties
58
+ * - type: 'radio' - Radio button group
59
+ * - type: 'date' - Single date picker
60
+ * - type: 'dateRange' - Two date pickers with fields array
61
+ * - type: 'group' - Group of fields, each supporting `loading`, `showSearch`, `filterOption`, `disabled` (for select type)
62
+ */
63
+ function TableWithSearchAndFilter(_ref) {
64
+ let {
65
+ tableProps = {},
66
+ searchProps = {},
67
+ filterProps = {},
68
+ paginationProps = {},
69
+ className = ''
70
+ } = _ref;
71
+ // Destructure tableProps with defaults
72
+ const {
73
+ dataSource = [],
74
+ columns = [],
75
+ rowKey = 'id',
76
+ emptyText = 'No data found'
77
+ } = tableProps,
78
+ restTableProps = _objectWithoutProperties(tableProps, _excluded);
79
+
80
+ // Destructure searchProps with defaults
81
+ const {
82
+ show: showSearch = true,
83
+ placeholder: searchPlaceholder = 'Search...',
84
+ onSearch
85
+ } = searchProps;
86
+
87
+ // Destructure filterProps with defaults
88
+ const {
89
+ show: showFilters = true,
90
+ config: filterConfig = [],
91
+ onApply: onFiltersApply,
92
+ onClear: onFiltersClear,
93
+ onChange: onFilterChange,
94
+ loading: filtersLoading = false,
95
+ buttonLabel: filterButtonLabel = 'Filters',
96
+ drawerTitle: filterDrawerTitle = 'FILTERS'
97
+ } = filterProps;
98
+
99
+ // Destructure paginationProps with defaults
100
+ const {
101
+ show: showPagination = true,
102
+ current = 1,
103
+ pageSize = 10,
104
+ total,
105
+ pageSizeOptions = [10, 20, 50, 100],
106
+ onChange: onPaginationChange,
107
+ onShowSizeChange
108
+ } = paginationProps;
109
+
110
+ // Constants
111
+ const SEARCH_INPUT_WIDTH = '350px';
112
+
113
+ // Search state
114
+ const [searchValue, setSearchValue] = (0, _react.useState)('');
115
+
116
+ // Filter drawer state
117
+ const [isFilterDrawerVisible, setIsFilterDrawerVisible] = (0, _react.useState)(false);
118
+ const [filterValues, setFilterValues] = (0, _react.useState)({});
119
+ const [appliedFilters, setAppliedFilters] = (0, _react.useState)({});
120
+
121
+ // Search handlers
122
+ const handleSearchChange = e => {
123
+ const {
124
+ value
125
+ } = e.target;
126
+ setSearchValue(value);
127
+ if (onSearch) {
128
+ onSearch(value);
129
+ }
130
+ };
131
+ const handleSearchPressEnter = () => {
132
+ if (onSearch) {
133
+ onSearch(searchValue);
134
+ }
135
+ };
136
+
137
+ // Filter handlers
138
+ const handleOpenFilterDrawer = () => {
139
+ // Sync filterValues with appliedFilters when opening drawer
140
+ setFilterValues(appliedFilters);
141
+ setIsFilterDrawerVisible(true);
142
+ };
143
+ const handleCloseFilterDrawer = () => {
144
+ // Revert filterValues to appliedFilters when closing without applying
145
+ setFilterValues(appliedFilters);
146
+ setIsFilterDrawerVisible(false);
147
+ };
148
+ const handleFilterChange = function handleFilterChange(key, value) {
149
+ let action = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'change';
150
+ // Normalize empty values: convert empty string to null for consistency
151
+ const normalizedValue = value === '' ? null : value;
152
+ const updatedFilters = _objectSpread(_objectSpread({}, filterValues), {}, {
153
+ [key]: normalizedValue
154
+ });
155
+ setFilterValues(updatedFilters);
156
+
157
+ // Call onChange callback if provided for real-time filter changes
158
+ if (onFilterChange) {
159
+ onFilterChange(key, normalizedValue, updatedFilters, action);
160
+ }
161
+ };
162
+ const handleApplyFilters = () => {
163
+ setIsFilterDrawerVisible(false);
164
+ // Save applied filters
165
+ setAppliedFilters(filterValues);
166
+ if (onFiltersApply) {
167
+ onFiltersApply(filterValues);
168
+ }
169
+ };
170
+ const handleClearFilters = () => {
171
+ setFilterValues({});
172
+ setAppliedFilters({});
173
+ if (onFiltersClear) {
174
+ onFiltersClear();
175
+ }
176
+ };
177
+
178
+ // Memoized required keys calculation for better performance
179
+ const requiredKeys = (0, _react.useMemo)(() => {
180
+ const keys = [];
181
+ filterConfig.forEach(filter => {
182
+ const {
183
+ type,
184
+ key,
185
+ required,
186
+ fields = []
187
+ } = filter;
188
+ if (required) {
189
+ if (type === 'dateRange' || type === 'group') {
190
+ fields.forEach(field => {
191
+ keys.push(field.key);
192
+ });
193
+ } else {
194
+ keys.push(key);
195
+ }
196
+ }
197
+ });
198
+ return keys;
199
+ }, [filterConfig]);
200
+
201
+ // Create a stable string representation of filterValues for required keys
202
+ // This ensures reliable dependency tracking in production builds
203
+ const requiredFieldsSignature = (0, _react.useMemo)(() => requiredKeys.map(key => {
204
+ const value = filterValues[key];
205
+ // Create a stable string representation that changes when value changes
206
+ if (value === undefined || value === null) return "".concat(key, ":null");
207
+ if (value instanceof Date) return "".concat(key, ":").concat(value.getTime());
208
+ return "".concat(key, ":").concat(JSON.stringify(value));
209
+ }).join('|'), [requiredKeys, filterValues]);
210
+
211
+ // Memoized check if all required fields are filled
212
+ const areAllRequiredFieldsFilled = (0, _react.useMemo)(() => {
213
+ // If no required fields, button should be enabled
214
+ if (requiredKeys.length === 0) {
215
+ return true;
216
+ }
217
+
218
+ // Check each required field has a valid value
219
+ return requiredKeys.every(requiredKey => {
220
+ const value = filterValues[requiredKey];
221
+
222
+ // Check if value exists and is not empty/null/undefined
223
+ // Also handle edge cases: empty arrays, empty objects, etc.
224
+ if (value === undefined || value === null || value === '') {
225
+ return false;
226
+ }
227
+
228
+ // Handle arrays
229
+ if (Array.isArray(value)) {
230
+ return value.length > 0;
231
+ }
232
+
233
+ // Handle objects (but allow Date objects and other valid objects)
234
+ if (typeof value === 'object' && !(value instanceof Date)) {
235
+ return Object.keys(value).length > 0;
236
+ }
237
+ return true;
238
+ });
239
+ }, [requiredKeys, requiredFieldsSignature, filterValues]);
240
+
241
+ // Helper function to check if a value is non-empty
242
+ const isValueNonEmpty = value => {
243
+ if (value === undefined || value === null || value === '') {
244
+ return false;
245
+ }
246
+
247
+ // Handle arrays
248
+ if (Array.isArray(value)) {
249
+ return value.length > 0;
250
+ }
251
+
252
+ // Handle objects (but allow Date objects and other valid objects)
253
+ if (typeof value === 'object' && !(value instanceof Date)) {
254
+ return Object.keys(value).length > 0;
255
+ }
256
+ return true;
257
+ };
258
+
259
+ // Helper function to check if filters are applied
260
+ const hasAppliedFilters = (0, _react.useMemo)(() => {
261
+ // Check if filters were actually applied (Apply Filter button was clicked)
262
+ const appliedFilterKeys = Object.keys(appliedFilters);
263
+ if (appliedFilterKeys.length === 0) {
264
+ return false;
265
+ }
266
+
267
+ // Check if any applied filter has a non-empty value
268
+ return appliedFilterKeys.some(key => isValueNonEmpty(appliedFilters[key]));
269
+ }, [appliedFilters]);
270
+
271
+ // Helper function to determine notFoundContent message
272
+ const getNotFoundContent = (isApiCallInProgress, query) => {
273
+ if (!isApiCallInProgress && (query === null || query === void 0 ? void 0 : query.length) < 3) {
274
+ return 'Start Typing atleast 3 characters';
275
+ }
276
+ if (isApiCallInProgress && (query === null || query === void 0 ? void 0 : query.length) > 0) {
277
+ return 'Loading...';
278
+ }
279
+ return 'No data found';
280
+ };
281
+
282
+ // Helper function to render CustomSelect (DRY principle)
283
+ const renderSelect = (fieldKey, fieldConfig) => {
284
+ const {
285
+ placeholder,
286
+ options = [],
287
+ loading = false,
288
+ isApiCallInProgress = false,
289
+ searchValue: query = '',
290
+ showSearch: fieldShowSearch = false,
291
+ filterOption,
292
+ disabled = false
293
+ } = fieldConfig;
294
+ const fieldValue = filterValues[fieldKey];
295
+ const isLoading = filtersLoading || loading || isApiCallInProgress;
296
+ const notFoundContent = getNotFoundContent(isApiCallInProgress, query);
297
+ return /*#__PURE__*/_react.default.createElement(_CustomSelect.default, {
298
+ placeholder: placeholder || 'Select an option',
299
+ value: fieldValue || undefined,
300
+ options: options,
301
+ onSelectionChange: val => {
302
+ // Normalize: null/undefined means clear action
303
+ const action = val === null || val === undefined ? 'clear' : 'select';
304
+ handleFilterChange(fieldKey, val, action);
305
+ },
306
+ onSearch: searchText => {
307
+ // For search, pass the search text as-is (don't normalize to null)
308
+ handleFilterChange(fieldKey, searchText || null, 'search');
309
+ },
310
+ onChange: val => {
311
+ // Catch clear from Ant Design's onChange (passes through {...props})
312
+ if (val === undefined || val === null) {
313
+ handleFilterChange(fieldKey, null, 'clear');
314
+ }
315
+ },
316
+ allowClear: true,
317
+ loading: isLoading,
318
+ showSearch: fieldShowSearch,
319
+ filterOption: filterOption,
320
+ disabled: disabled,
321
+ notFoundContent: notFoundContent
322
+ });
323
+ };
324
+
325
+ // Helper function to render CustomDatePicker (DRY principle)
326
+ const renderDatePicker = (fieldKey, fieldConfig) => {
327
+ const {
328
+ placeholder
329
+ } = fieldConfig;
330
+ const fieldValue = filterValues[fieldKey];
331
+ return /*#__PURE__*/_react.default.createElement(_CustomDatePicker.default, {
332
+ placeholder: placeholder || 'Select date',
333
+ value: fieldValue,
334
+ containerSize: "small",
335
+ onChange: date => handleFilterChange(fieldKey, date, 'change')
336
+ });
337
+ };
338
+
339
+ // Helper function to render CustomRadio.Group (DRY principle)
340
+ const renderRadioGroup = (fieldKey, fieldConfig) => {
341
+ const {
342
+ options = []
343
+ } = fieldConfig;
344
+ const fieldValue = filterValues[fieldKey];
345
+ return /*#__PURE__*/_react.default.createElement(_CustomRadio.default.Group, {
346
+ value: fieldValue,
347
+ onChange: e => handleFilterChange(fieldKey, e.target.value, 'change')
348
+ }, options.map(option => /*#__PURE__*/_react.default.createElement(_CustomRadio.default, {
349
+ key: option.value,
350
+ value: option.value,
351
+ label: option.label
352
+ })));
353
+ };
354
+
355
+ // Render filter input based on type
356
+ const renderFilterInput = filter => {
357
+ const {
358
+ type,
359
+ key,
360
+ fields = []
361
+ } = filter;
362
+ switch (type) {
363
+ case 'radio':
364
+ return renderRadioGroup(key, filter);
365
+ case 'select':
366
+ return /*#__PURE__*/_react.default.createElement(_styles.FilterSubField, null, renderSelect(key, filter));
367
+ case 'date':
368
+ return /*#__PURE__*/_react.default.createElement(_styles.FilterSubField, null, renderDatePicker(key, filter));
369
+ case 'dateRange':
370
+ return /*#__PURE__*/_react.default.createElement(_styles.DateRangeContainer, null, fields.map(field => /*#__PURE__*/_react.default.createElement(_styles.FilterSubField, {
371
+ key: field.key
372
+ }, /*#__PURE__*/_react.default.createElement(_styles.FilterSubLabel, null, field.label), renderDatePicker(field.key, field))));
373
+ case 'group':
374
+ return /*#__PURE__*/_react.default.createElement(_styles.FilterGroup, null, fields.map(field => /*#__PURE__*/_react.default.createElement(_styles.FilterSubField, {
375
+ key: field.key
376
+ }, /*#__PURE__*/_react.default.createElement(_styles.FilterSubLabel, null, field.label), field.type === 'select' && renderSelect(field.key, field), field.type === 'date' && renderDatePicker(field.key, field), field.type === 'radio' && renderRadioGroup(field.key, field))));
377
+ default:
378
+ return null;
379
+ }
380
+ };
381
+ const displayData = dataSource;
382
+ const totalRecords = total !== null && total !== void 0 ? total : displayData.length;
383
+
384
+ // Button configuration for filter drawer footer
385
+ const filterDrawerButtonConfig = [{
386
+ callback: handleClearFilters,
387
+ label: 'Clear All',
388
+ type: 'secondary'
389
+ }, {
390
+ callback: handleApplyFilters,
391
+ label: 'Apply Filter',
392
+ type: 'primary',
393
+ disabled: !areAllRequiredFieldsFilled
394
+ }];
395
+ return /*#__PURE__*/_react.default.createElement(_styles.TableWithSearchAndFilterContainer, {
396
+ className: className
397
+ }, (showSearch || showFilters) && /*#__PURE__*/_react.default.createElement(_styles.Toolbar, null, showSearch && /*#__PURE__*/_react.default.createElement(_CustomInput.default, {
398
+ prefix: /*#__PURE__*/_react.default.createElement(_MaterialIcon.default, {
399
+ icon: _Search.default,
400
+ size: 20,
401
+ style: {
402
+ color: '#8c8c8c'
403
+ }
404
+ }),
405
+ placeholder: searchPlaceholder,
406
+ value: searchValue,
407
+ onChange: handleSearchChange,
408
+ onPressEnter: handleSearchPressEnter,
409
+ allowClear: true,
410
+ style: {
411
+ width: SEARCH_INPUT_WIDTH,
412
+ flexShrink: 0
413
+ }
414
+ }), showFilters && /*#__PURE__*/_react.default.createElement(_styles.FilterButtonWrapper, null, /*#__PURE__*/_react.default.createElement(_CustomButton.default, {
415
+ label: filterButtonLabel,
416
+ onClick: handleOpenFilterDrawer,
417
+ type: "secondary",
418
+ size: "medium",
419
+ iconConfig: {
420
+ icon: /*#__PURE__*/_react.default.createElement(_MaterialIcon.default, {
421
+ icon: _FilterList.default
422
+ }),
423
+ position: 'left'
424
+ },
425
+ style: {
426
+ borderColor: '#1890ff',
427
+ color: '#1890ff'
428
+ }
429
+ }), hasAppliedFilters && /*#__PURE__*/_react.default.createElement(_styles.FilterIndicatorDot, null))), showFilters && /*#__PURE__*/_react.default.createElement(_CustomDrawer.default, {
430
+ title: filterDrawerTitle,
431
+ placement: "right",
432
+ isBaseDrawer: true,
433
+ onClose: handleCloseFilterDrawer,
434
+ open: isFilterDrawerVisible,
435
+ visible: isFilterDrawerVisible,
436
+ closable: false,
437
+ width: 400,
438
+ buttonConfig: filterDrawerButtonConfig
439
+ }, /*#__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, {
440
+ key: filter.key
441
+ }, /*#__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(_CustomTable.default, _extends({
442
+ rowKey: rowKey,
443
+ dataSource: displayData,
444
+ columns: columns,
445
+ pagination: false,
446
+ emptyText: emptyText
447
+ }, restTableProps)), showPagination && totalRecords > pageSize && /*#__PURE__*/_react.default.createElement(_styles.PaginationContainer, null, /*#__PURE__*/_react.default.createElement(_CustomPagination.default, {
448
+ current: current,
449
+ pageSize: pageSize,
450
+ total: totalRecords,
451
+ onChange: onPaginationChange,
452
+ onShowSizeChange: onShowSizeChange,
453
+ pageSizeOptions: pageSizeOptions,
454
+ showSizeChanger: true,
455
+ showTotal: true
456
+ })));
457
+ }
458
+ TableWithSearchAndFilter.propTypes = {
459
+ tableProps: _propTypes.default.shape({
460
+ dataSource: _propTypes.default.array,
461
+ columns: _propTypes.default.array.isRequired,
462
+ rowKey: _propTypes.default.string,
463
+ emptyText: _propTypes.default.string
464
+ }),
465
+ searchProps: _propTypes.default.shape({
466
+ show: _propTypes.default.bool,
467
+ placeholder: _propTypes.default.string,
468
+ onSearch: _propTypes.default.func
469
+ }),
470
+ filterProps: _propTypes.default.shape({
471
+ show: _propTypes.default.bool,
472
+ config: _propTypes.default.array,
473
+ onApply: _propTypes.default.func,
474
+ onClear: _propTypes.default.func,
475
+ onChange: _propTypes.default.func,
476
+ loading: _propTypes.default.bool,
477
+ buttonLabel: _propTypes.default.string,
478
+ drawerTitle: _propTypes.default.string
479
+ }),
480
+ paginationProps: _propTypes.default.shape({
481
+ show: _propTypes.default.bool,
482
+ current: _propTypes.default.number,
483
+ pageSize: _propTypes.default.number,
484
+ total: _propTypes.default.number,
485
+ pageSizeOptions: _propTypes.default.array,
486
+ onChange: _propTypes.default.func,
487
+ onShowSizeChange: _propTypes.default.func
488
+ }),
489
+ className: _propTypes.default.string
490
+ };
491
+ TableWithSearchAndFilter.defaultProps = {
492
+ tableProps: {
493
+ dataSource: [],
494
+ rowKey: 'id',
495
+ emptyText: 'No data found'
496
+ },
497
+ searchProps: {
498
+ show: true,
499
+ placeholder: 'Search...'
500
+ },
501
+ filterProps: {
502
+ show: true,
503
+ config: [],
504
+ buttonLabel: 'Filters',
505
+ drawerTitle: 'FILTERS'
506
+ },
507
+ paginationProps: {
508
+ show: true,
509
+ current: 1,
510
+ pageSize: 10,
511
+ pageSizeOptions: [10, 20, 50, 100]
512
+ },
513
+ className: ''
514
+ };
515
+ var _default = exports.default = TableWithSearchAndFilter;
@@ -0,0 +1,25 @@
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.FilterIndicatorDot = exports.FilterGroup = exports.FilterDrawerContent = exports.FilterDrawerBody = exports.FilterButtonWrapper = 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, _templateObject15;
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 button.secondary {\n border-color: #1890ff !important;\n color: #1890ff !important;\n }\n button.secondary:hover {\n border-color: #1890ff !important;\n color: #1890ff !important;\n }\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 FilterGroup = exports.FilterGroup = _styledComponents.default.div(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n gap: 16px;\n"])));
20
+ const FilterSubField = exports.FilterSubField = _styledComponents.default.div(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n gap: 8px;\n"])));
21
+ const FilterSubLabel = exports.FilterSubLabel = _styledComponents.default.label(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n font-weight: 400;\n font-size: 14px;\n color: var(--color-primary-content, #212121);\n"])));
22
+ const FilterSubLabelText = exports.FilterSubLabelText = _styledComponents.default.span(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["\n color: var(--color-primary-content, #212121);\n"])));
23
+ const DateRangeContainer = exports.DateRangeContainer = _styledComponents.default.div(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n gap: 16px;\n"])));
24
+ const FilterButtonWrapper = exports.FilterButtonWrapper = _styledComponents.default.div(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral(["\n position: relative;\n"])));
25
+ const FilterIndicatorDot = exports.FilterIndicatorDot = _styledComponents.default.span(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral(["\n width: 12px;\n height: 12px;\n background: #de350b;\n position: absolute;\n top: -4px;\n right: -4px;\n border-radius: 50%;\n z-index: 1;\n"])));
@@ -10,9 +10,12 @@ var _react = _interopRequireDefault(require("react"));
10
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
11
11
  var _antd = require("antd");
12
12
  var _utils = require("../../utils");
13
+ var _CustomToggle = _interopRequireDefault(require("../oa-component-toggle/CustomToggle"));
14
+ var _Typography = _interopRequireDefault(require("../oa-component-typography/Typography"));
13
15
  var _styles = require("./styles");
14
- const _excluded = ["data", "data-test", "defaultActiveKey", "disabled", "style", "tabPosition", "type"],
16
+ const _excluded = ["data", "data-test", "defaultActiveKey", "disabled", "extraAction", "style", "tabPosition", "type"],
15
17
  _excluded2 = ["body", "disabled", "key", "label"];
18
+ /* eslint-disable */
16
19
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
20
  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); }
18
21
  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; }
@@ -29,6 +32,10 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
29
32
  * @param {string} [data-test] - A string to be used as data-test attribute.
30
33
  * @param {string} defaultActiveKey - Key of the initially active tab.
31
34
  * @param {boolean} disabled - Whether the tabs are disabled.
35
+ * @param {Object} extraAction - Configuration for extra action on the right side of tabs.
36
+ * @param {string} extraAction.type - Type of extra action ('switch').
37
+ * @param {boolean} extraAction.visible - Whether to show the extra action (default: true).
38
+ * @param {Object} extraAction.props - Props to pass to the extra action component.
32
39
  * @param {Object} style - An object containing CSS styles for the component.
33
40
  * @param {'top'|'right'|'bottom'|'left'} tabPosition - Position of the tab headers.
34
41
  * @param {'line'|'card'} type - Type of the tabs.
@@ -41,12 +48,13 @@ function CustomTabs(_ref) {
41
48
  'data-test': dataTest,
42
49
  defaultActiveKey,
43
50
  disabled,
51
+ extraAction,
44
52
  style,
45
53
  tabPosition,
46
54
  type
47
55
  } = _ref,
48
56
  antDesignProps = _objectWithoutProperties(_ref, _excluded);
49
- const items = data.tabs.map(_ref2 => {
57
+ const items = data.tabs && data.tabs.map(_ref2 => {
50
58
  let {
51
59
  body,
52
60
  disabled: isTabDisabed,
@@ -63,13 +71,42 @@ function CustomTabs(_ref) {
63
71
  }, label) : label
64
72
  }, otherProps);
65
73
  });
74
+
75
+ /**
76
+ * Renders the extra action component based on the type.
77
+ * @returns {React.ReactNode} The rendered extra action component or null.
78
+ */
79
+ const renderExtraAction = () => {
80
+ if (!extraAction || !extraAction.type) {
81
+ return null;
82
+ }
83
+
84
+ // Check if extraAction is visible (defaults to true if not specified)
85
+ if (extraAction.visible === false) {
86
+ return null;
87
+ }
88
+ switch (extraAction.type) {
89
+ case 'switch':
90
+ return /*#__PURE__*/_react.default.createElement(_styles.ExtraActionWrapper, null, extraAction.label && /*#__PURE__*/_react.default.createElement(_Typography.default, {
91
+ color: extraAction.labelColor || 'secondary-content',
92
+ typography: extraAction.labelTypography || 'type-b2-400'
93
+ }, extraAction.label), /*#__PURE__*/_react.default.createElement(_CustomToggle.default, _extends({
94
+ "data-test": dataTest ? "".concat(dataTest, "--extra-action-switch") : undefined,
95
+ size: extraAction.size || 'small'
96
+ }, extraAction.props)));
97
+ default:
98
+ return null;
99
+ }
100
+ };
101
+ const tabBarExtraContent = renderExtraAction();
66
102
  return /*#__PURE__*/_react.default.createElement(_styles.StyledTabs, null, /*#__PURE__*/_react.default.createElement(_antd.Tabs, _extends({
67
103
  defaultActiveKey: defaultActiveKey,
68
- disabled: true,
104
+ disabled: disabled,
69
105
  items: items,
70
106
  style: _objectSpread({}, style),
71
107
  tabPosition: tabPosition,
72
- type: type
108
+ type: type,
109
+ tabBarExtraContent: tabBarExtraContent
73
110
  }, antDesignProps)));
74
111
  }
75
112
  CustomTabs.propTypes = {
@@ -84,6 +121,15 @@ CustomTabs.propTypes = {
84
121
  'data-test': _propTypes.default.string,
85
122
  defaultActiveKey: _propTypes.default.string,
86
123
  disabled: _propTypes.default.bool,
124
+ extraAction: _propTypes.default.shape({
125
+ type: _propTypes.default.oneOf(['switch']).isRequired,
126
+ visible: _propTypes.default.bool,
127
+ label: _propTypes.default.string,
128
+ labelColor: _propTypes.default.string,
129
+ labelTypography: _propTypes.default.string,
130
+ size: _propTypes.default.oneOf(['large', 'small']),
131
+ props: _propTypes.default.objectOf(_propTypes.default.any)
132
+ }),
87
133
  tabPosition: _propTypes.default.oneOf(['top', 'right', 'bottom', 'left']),
88
134
  type: _propTypes.default.oneOf(['line', 'card'
89
135
  // 'editable-card',
@@ -97,6 +143,7 @@ CustomTabs.defaultProps = {
97
143
  tabPosition: 'top',
98
144
  type: 'line',
99
145
  disabled: false,
146
+ extraAction: null,
100
147
  style: {}
101
148
  };
102
149
  var _default = exports.default = CustomTabs;
@@ -3,11 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = exports.StyledTabs = void 0;
6
+ exports.default = exports.StyledTabs = exports.ExtraActionWrapper = void 0;
7
7
  var _antd = require("antd");
8
8
  var _styledComponents = _interopRequireDefault(require("styled-components"));
9
- var _templateObject;
9
+ var _templateObject, _templateObject2;
10
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
11
  function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
12
12
  var _default = exports.default = {};
13
- const StyledTabs = exports.StyledTabs = _styledComponents.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n.ant-tabs .ant-tabs-tab{\n color: var(--color-secondary-content);\n padding: 12px;\n font-size: 14px;\n font-weight: 400;\n line-height: 20px;\n }\n .ant-tabs-tab-disabled{\n color: var(--color-disabled-button) !important;\n }\n s.ant-tabs-tab-disabled:hover {\n color: var(--color-disabled-button) !important;\n}\n .ant-tabs .ant-tabs-tab+.ant-tabs-tab{\n margin: 0;\n }\n .ant-tabs-top >.ant-tabs-nav::before{\n border-bottom: 1px solid var(--color-divider)\n }\n .ant-tabs .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn {\n color: var(--color-primary);\n font-size: 14px;\n font-weight: 500;\n line-height: 20px; \n }\n .ant-tabs .ant-tabs-tab:hover{\n color: var(--color-primary-hover);\n }\n .ant-tabs .ant-tabs-ink-bar{\n background: var(--color-primary);\n }\n"])));
13
+ const StyledTabs = exports.StyledTabs = _styledComponents.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n.ant-tabs .ant-tabs-tab{\n color: var(--color-secondary-content);\n padding: 12px;\n font-size: 14px;\n font-weight: 400;\n line-height: 20px;\n }\n .ant-tabs-tab-disabled{\n color: var(--color-disabled-button) !important;\n }\n s.ant-tabs-tab-disabled:hover {\n color: var(--color-disabled-button) !important;\n}\n .ant-tabs .ant-tabs-tab+.ant-tabs-tab{\n margin: 0;\n }\n .ant-tabs-top >.ant-tabs-nav::before{\n border-bottom: 1px solid var(--color-divider)\n }\n .ant-tabs .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn {\n color: var(--color-primary);\n font-size: 14px;\n font-weight: 500;\n line-height: 20px; \n }\n .ant-tabs .ant-tabs-tab:hover{\n color: var(--color-primary-hover);\n }\n .ant-tabs .ant-tabs-ink-bar{\n background: var(--color-primary);\n }\n"])));
14
+ const ExtraActionWrapper = exports.ExtraActionWrapper = _styledComponents.default.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n gap: 12px;\n"])));