@unbxd-ui/unbxd-react-components 0.3.3 → 0.3.4-beta.2

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.
@@ -0,0 +1,295 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = exports.WithCustomTooltipComponents = exports.StartingWithV2 = exports.StartingWithV1 = exports.Default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _PulseVersionToggler = _interopRequireDefault(require("./PulseVersionToggler"));
9
+ require("./pulse-version-toggler.css");
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
11
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
12
+ var meta = {
13
+ title: 'Components/PulseVersionToggler',
14
+ component: _PulseVersionToggler["default"],
15
+ parameters: {
16
+ layout: 'fullscreen',
17
+ docs: {
18
+ description: {
19
+ component: 'A floating button component for toggling between different versions (v1/v2) with API integration, cookie management, and loading states.'
20
+ }
21
+ }
22
+ },
23
+ tags: ['autodocs'],
24
+ argTypes: {
25
+ className: {
26
+ control: 'text',
27
+ description: 'Additional CSS class names'
28
+ },
29
+ endpoint: {
30
+ control: 'text',
31
+ description: 'API endpoint for version toggle'
32
+ },
33
+ cookieName: {
34
+ control: 'text',
35
+ description: 'Name of the cookie to track version'
36
+ },
37
+ queryParamKey: {
38
+ control: 'text',
39
+ description: 'Key name for the version parameter in API request'
40
+ },
41
+ tooltipMessageOn: {
42
+ control: 'text',
43
+ description: 'Tooltip message when v2 is active (can be string or function)'
44
+ },
45
+ tooltipMessageOff: {
46
+ control: 'text',
47
+ description: 'Tooltip message when v1 is active (can be string or function)'
48
+ },
49
+ successMessage: {
50
+ control: 'text',
51
+ description: 'Success message after version switch (can be string or function)'
52
+ },
53
+ errorMessage: {
54
+ control: 'text',
55
+ description: 'Error message when version switch fails (can be string or function)'
56
+ },
57
+ reloadDelay: {
58
+ control: 'number',
59
+ description: 'Delay in milliseconds before page reload after successful switch'
60
+ },
61
+ shouldFallbackToV2: {
62
+ control: 'boolean',
63
+ description: 'Initial state when no cookie exists - true for v2, false for v1'
64
+ }
65
+ }
66
+ };
67
+ var _default = exports["default"] = meta; // Default Story
68
+ var Default = exports.Default = {
69
+ args: {
70
+ endpoint: '/api/v1/pulse/version',
71
+ cookieName: '_pulse_ver',
72
+ queryParamKey: 'version',
73
+ shouldFallbackToV2: true
74
+ },
75
+ render: function render(args) {
76
+ // Mock fetch for Storybook (without Jest)
77
+ _react["default"].useEffect(function () {
78
+ var originalFetch = global.fetch;
79
+ global.fetch = function (url, options) {
80
+ console.log('Mock API Call:', url, options === null || options === void 0 ? void 0 : options.body);
81
+ return Promise.resolve({
82
+ ok: true,
83
+ status: 200,
84
+ json: function json() {
85
+ return Promise.resolve({
86
+ success: true
87
+ });
88
+ }
89
+ });
90
+ };
91
+ return function () {
92
+ global.fetch = originalFetch;
93
+ };
94
+ }, []);
95
+ return /*#__PURE__*/_react["default"].createElement("div", {
96
+ style: {
97
+ height: '400px',
98
+ position: 'relative'
99
+ }
100
+ }, /*#__PURE__*/_react["default"].createElement(_PulseVersionToggler["default"], args), /*#__PURE__*/_react["default"].createElement("div", {
101
+ style: {
102
+ padding: '20px',
103
+ maxWidth: '600px'
104
+ }
105
+ }, /*#__PURE__*/_react["default"].createElement("h2", null, "Floating Version Toggle Button"), /*#__PURE__*/_react["default"].createElement("p", null, "This button appears in the bottom-right corner of the page."), /*#__PURE__*/_react["default"].createElement("p", null, "Hover over the button to see the tooltip and click to toggle between versions."), /*#__PURE__*/_react["default"].createElement("p", null, /*#__PURE__*/_react["default"].createElement("strong", null, "Note:"), " In Storybook, the API calls are mocked and page reload is disabled.")));
106
+ }
107
+ };
108
+
109
+ // With Custom Tooltip Components
110
+ var WithCustomTooltipComponents = exports.WithCustomTooltipComponents = {
111
+ args: {
112
+ endpoint: '/api/v1/pulse/version',
113
+ cookieName: '_pulse_ver',
114
+ queryParamKey: 'version',
115
+ shouldFallbackToV2: true
116
+ },
117
+ render: function render(args) {
118
+ _react["default"].useEffect(function () {
119
+ var originalFetch = global.fetch;
120
+ global.fetch = function (url, options) {
121
+ console.log('Mock API Call:', url, options === null || options === void 0 ? void 0 : options.body);
122
+ return Promise.resolve({
123
+ ok: true,
124
+ status: 200,
125
+ json: function json() {
126
+ return Promise.resolve({
127
+ success: true
128
+ });
129
+ }
130
+ });
131
+ };
132
+ return function () {
133
+ global.fetch = originalFetch;
134
+ };
135
+ }, []);
136
+
137
+ // Custom tooltip component for v2 (on state)
138
+ var TooltipV2Component = function TooltipV2Component(currentVersion, targetVersion) {
139
+ return /*#__PURE__*/_react["default"].createElement("div", {
140
+ style: {
141
+ display: 'flex',
142
+ flexDirection: 'column',
143
+ gap: '8px'
144
+ }
145
+ }, /*#__PURE__*/_react["default"].createElement("div", {
146
+ style: {
147
+ display: 'flex',
148
+ alignItems: 'center',
149
+ gap: '8px'
150
+ }
151
+ }, /*#__PURE__*/_react["default"].createElement("span", {
152
+ style: {
153
+ background: '#10b981',
154
+ color: 'white',
155
+ padding: '2px 8px',
156
+ borderRadius: '4px',
157
+ fontSize: '12px',
158
+ fontWeight: 'bold'
159
+ }
160
+ }, currentVersion.toUpperCase()), /*#__PURE__*/_react["default"].createElement("span", null, "You're on the new experience")), /*#__PURE__*/_react["default"].createElement("div", {
161
+ style: {
162
+ fontSize: '13px',
163
+ color: '#666'
164
+ }
165
+ }, "Click to switch back to ", targetVersion.toUpperCase(), " (Classic)"));
166
+ };
167
+
168
+ // Custom tooltip component for v1 (off state)
169
+ var TooltipV1Component = function TooltipV1Component(currentVersion, targetVersion) {
170
+ return /*#__PURE__*/_react["default"].createElement("div", {
171
+ style: {
172
+ display: 'flex',
173
+ flexDirection: 'column',
174
+ gap: '8px'
175
+ }
176
+ }, /*#__PURE__*/_react["default"].createElement("div", {
177
+ style: {
178
+ display: 'flex',
179
+ alignItems: 'center',
180
+ gap: '8px'
181
+ }
182
+ }, /*#__PURE__*/_react["default"].createElement("span", {
183
+ style: {
184
+ background: '#3b82f6',
185
+ color: 'white',
186
+ padding: '2px 8px',
187
+ borderRadius: '4px',
188
+ fontSize: '12px',
189
+ fontWeight: 'bold'
190
+ }
191
+ }, currentVersion.toUpperCase()), /*#__PURE__*/_react["default"].createElement("span", null, "You're on the classic version")), /*#__PURE__*/_react["default"].createElement("div", {
192
+ style: {
193
+ fontSize: '13px',
194
+ color: '#666'
195
+ }
196
+ }, "\u2728 Try the new ", targetVersion.toUpperCase(), " experience!"));
197
+ };
198
+ return /*#__PURE__*/_react["default"].createElement("div", {
199
+ style: {
200
+ height: '400px',
201
+ position: 'relative'
202
+ }
203
+ }, /*#__PURE__*/_react["default"].createElement(_PulseVersionToggler["default"], _extends({}, args, {
204
+ tooltipMessageOn: TooltipV2Component,
205
+ tooltipMessageOff: TooltipV1Component
206
+ })), /*#__PURE__*/_react["default"].createElement("div", {
207
+ style: {
208
+ padding: '20px',
209
+ maxWidth: '600px'
210
+ }
211
+ }, /*#__PURE__*/_react["default"].createElement("h2", null, "Custom Tooltip Components"), /*#__PURE__*/_react["default"].createElement("p", null, "This example demonstrates passing React components as tooltip messages."), /*#__PURE__*/_react["default"].createElement("p", null, "The tooltips include custom styling with badges, icons, and multi-line content."), /*#__PURE__*/_react["default"].createElement("p", null, /*#__PURE__*/_react["default"].createElement("strong", null, "Features:")), /*#__PURE__*/_react["default"].createElement("ul", null, /*#__PURE__*/_react["default"].createElement("li", null, "Version badges with different colors"), /*#__PURE__*/_react["default"].createElement("li", null, "Multi-line content with descriptions"), /*#__PURE__*/_react["default"].createElement("li", null, "Custom typography and spacing"), /*#__PURE__*/_react["default"].createElement("li", null, "Dynamic content based on current/target version"))));
212
+ }
213
+ };
214
+
215
+ // Starting with V1 (shouldFallbackToV2 = false)
216
+ var StartingWithV1 = exports.StartingWithV1 = {
217
+ args: {
218
+ endpoint: '/api/v1/pulse/version',
219
+ cookieName: '_pulse_ver_v1',
220
+ queryParamKey: 'version',
221
+ shouldFallbackToV2: false
222
+ },
223
+ render: function render(args) {
224
+ _react["default"].useEffect(function () {
225
+ var originalFetch = global.fetch;
226
+ global.fetch = function (url, options) {
227
+ console.log('Mock API Call:', url, options === null || options === void 0 ? void 0 : options.body);
228
+ return Promise.resolve({
229
+ ok: true,
230
+ status: 200,
231
+ json: function json() {
232
+ return Promise.resolve({
233
+ success: true
234
+ });
235
+ }
236
+ });
237
+ };
238
+ return function () {
239
+ global.fetch = originalFetch;
240
+ };
241
+ }, []);
242
+ return /*#__PURE__*/_react["default"].createElement("div", {
243
+ style: {
244
+ height: '400px',
245
+ position: 'relative'
246
+ }
247
+ }, /*#__PURE__*/_react["default"].createElement(_PulseVersionToggler["default"], args), /*#__PURE__*/_react["default"].createElement("div", {
248
+ style: {
249
+ padding: '20px',
250
+ maxWidth: '600px'
251
+ }
252
+ }, /*#__PURE__*/_react["default"].createElement("h2", null, "Starting with V1 (Classic)"), /*#__PURE__*/_react["default"].createElement("p", null, "This example sets ", /*#__PURE__*/_react["default"].createElement("code", null, "shouldFallbackToV2"), " to ", /*#__PURE__*/_react["default"].createElement("code", null, "false"), "."), /*#__PURE__*/_react["default"].createElement("p", null, "When no cookie exists, the component will default to ", /*#__PURE__*/_react["default"].createElement("strong", null, "V1"), " (classic version)."), /*#__PURE__*/_react["default"].createElement("p", null, "The button will show \"V1\" and allow users to switch to V2."), /*#__PURE__*/_react["default"].createElement("p", null, /*#__PURE__*/_react["default"].createElement("strong", null, "Use case:"), " Perfect for users who should see the classic version by default.")));
253
+ }
254
+ };
255
+
256
+ // Starting with V2 (shouldFallbackToV2 = true)
257
+ var StartingWithV2 = exports.StartingWithV2 = {
258
+ args: {
259
+ endpoint: '/api/v1/pulse/version',
260
+ cookieName: '_pulse_ver_v2',
261
+ queryParamKey: 'version',
262
+ shouldFallbackToV2: true
263
+ },
264
+ render: function render(args) {
265
+ _react["default"].useEffect(function () {
266
+ var originalFetch = global.fetch;
267
+ global.fetch = function (url, options) {
268
+ console.log('Mock API Call:', url, options === null || options === void 0 ? void 0 : options.body);
269
+ return Promise.resolve({
270
+ ok: true,
271
+ status: 200,
272
+ json: function json() {
273
+ return Promise.resolve({
274
+ success: true
275
+ });
276
+ }
277
+ });
278
+ };
279
+ return function () {
280
+ global.fetch = originalFetch;
281
+ };
282
+ }, []);
283
+ return /*#__PURE__*/_react["default"].createElement("div", {
284
+ style: {
285
+ height: '400px',
286
+ position: 'relative'
287
+ }
288
+ }, /*#__PURE__*/_react["default"].createElement(_PulseVersionToggler["default"], args), /*#__PURE__*/_react["default"].createElement("div", {
289
+ style: {
290
+ padding: '20px',
291
+ maxWidth: '600px'
292
+ }
293
+ }, /*#__PURE__*/_react["default"].createElement("h2", null, "Starting with V2 (New Experience)"), /*#__PURE__*/_react["default"].createElement("p", null, "This example sets ", /*#__PURE__*/_react["default"].createElement("code", null, "shouldFallbackToV2"), " to ", /*#__PURE__*/_react["default"].createElement("code", null, "true"), "."), /*#__PURE__*/_react["default"].createElement("p", null, "When no cookie exists, the component will default to ", /*#__PURE__*/_react["default"].createElement("strong", null, "V2"), " (new version)."), /*#__PURE__*/_react["default"].createElement("p", null, "The button will show \"V2\" with the active state and allow users to switch back to V1."), /*#__PURE__*/_react["default"].createElement("p", null, /*#__PURE__*/_react["default"].createElement("strong", null, "Use case:"), " Perfect for users who should see the new experience by default.")));
294
+ }
295
+ };
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var _PulseVersionToggler = _interopRequireDefault(require("./PulseVersionToggler"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
9
+ var _default = exports["default"] = _PulseVersionToggler["default"];
@@ -0,0 +1 @@
1
+ .RCB-pulse-toggler{position:fixed;right:-5px;top:50%;transform:translateY(-50%);z-index:9999;display:flex;align-items:center;transition:right 0.3s ease}.RCB-pulse-toggler.RCB-pulse-toggler-visible{right:0}.RCB-pulse-toggler-btn-text{font-size:10px}.RCB-pulse-toggler-btn{border:none;border-radius:8px 0 0 8px;cursor:pointer;font-size:12px;font-weight:600;font-family:inherit;letter-spacing:0.5px;color:#fff;background-color:#8a8a8a;display:flex;flex-direction:column;align-items:center;justify-content:center;transition:background-color 0.2s ease;box-shadow:-2px 2px 8px rgba(0,0,0,0.15);padding:6px 10px}.RCB-pulse-toggler-btn:hover{background-color:#6e6e6e}.RCB-pulse-toggler-btn:disabled{cursor:not-allowed;opacity:0.7}.RCB-pulse-toggler-btn.active{background-color:#3E71F2}.RCB-pulse-toggler-btn.active:hover{background-color:#3865D9}.RCB-pulse-toggler-tooltip{position:absolute;right:45px;top:50%;transform:translateY(-50%);background:#fff;color:#333;padding:10px 14px;border-radius:6px;box-shadow:0 4px 16px rgba(0,0,0,0.15);font-size:13px;line-height:1.5;width:220px;white-space:normal;pointer-events:none}.RCB-pulse-toggler-tooltip-arrow{position:absolute;right:-6px;top:50%;transform:translateY(-50%);width:0;height:0;border-top:6px solid transparent;border-bottom:6px solid transparent;border-left:6px solid #fff}.RCB-pulse-toggler-loader-wrap{display:flex;align-items:center;gap:8px}.RCB-pulse-toggler-loader{display:inline-block;width:16px;height:16px;border:2px solid #e0e0e0;border-top-color:#3E71F2;border-radius:50%;animation:RCB-pulse-spin 0.6s linear infinite;flex-shrink:0}@keyframes RCB-pulse-spin{to{transform:rotate(360deg)}}
@@ -0,0 +1,106 @@
1
+ .RCB-pulse-toggler {
2
+ position: fixed;
3
+ right: -5px;
4
+ top: 50%;
5
+ transform: translateY(-50%);
6
+ z-index: 9999;
7
+ display: flex;
8
+ align-items: center;
9
+ transition: right 0.3s ease;
10
+
11
+ &.RCB-pulse-toggler-visible {
12
+ right: 0;
13
+ }
14
+
15
+ &-btn-text {
16
+ font-size: 10px;
17
+ }
18
+
19
+ &-btn {
20
+ border: none;
21
+ border-radius: 8px 0 0 8px;
22
+ cursor: pointer;
23
+ font-size: 12px;
24
+ font-weight: 600;
25
+ font-family: inherit;
26
+ letter-spacing: 0.5px;
27
+ color: #fff;
28
+ background-color: #8a8a8a;
29
+ display: flex;
30
+ flex-direction: column;
31
+ align-items: center;
32
+ justify-content: center;
33
+ transition: background-color 0.2s ease;
34
+ box-shadow: -2px 2px 8px rgba(0, 0, 0, 0.15);
35
+ padding: 6px 10px;
36
+
37
+ &:hover {
38
+ background-color: #6e6e6e;
39
+ }
40
+
41
+ &:disabled {
42
+ cursor: not-allowed;
43
+ opacity: 0.7;
44
+ }
45
+
46
+ &.active {
47
+ background-color: #3E71F2;
48
+
49
+ &:hover {
50
+ background-color: #3865D9;
51
+ }
52
+ }
53
+ }
54
+
55
+ &-tooltip {
56
+ position: absolute;
57
+ right: 45px;
58
+ top: 50%;
59
+ transform: translateY(-50%);
60
+ background: #fff;
61
+ color: #333;
62
+ padding: 10px 14px;
63
+ border-radius: 6px;
64
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
65
+ font-size: 13px;
66
+ line-height: 1.5;
67
+ width: 220px;
68
+ white-space: normal;
69
+ pointer-events: none;
70
+
71
+ &-arrow {
72
+ position: absolute;
73
+ right: -6px;
74
+ top: 50%;
75
+ transform: translateY(-50%);
76
+ width: 0;
77
+ height: 0;
78
+ border-top: 6px solid transparent;
79
+ border-bottom: 6px solid transparent;
80
+ border-left: 6px solid #fff;
81
+ }
82
+ }
83
+
84
+ &-loader-wrap {
85
+ display: flex;
86
+ align-items: center;
87
+ gap: 8px;
88
+ }
89
+
90
+ &-loader {
91
+ display: inline-block;
92
+ width: 16px;
93
+ height: 16px;
94
+ border: 2px solid #e0e0e0;
95
+ border-top-color: #3E71F2;
96
+ border-radius: 50%;
97
+ animation: RCB-pulse-spin 0.6s linear infinite;
98
+ flex-shrink: 0;
99
+ }
100
+ }
101
+
102
+ @keyframes RCB-pulse-spin {
103
+ to {
104
+ transform: rotate(360deg);
105
+ }
106
+ }
@@ -4,10 +4,10 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports["default"] = exports.StickyLastColumn = exports.StickyFirstColumn = exports.StickyBothColumns = exports.SimpleExpandableRows = exports.ServerSidePaginationWithCustomStyling = exports.ServerSidePagination = exports.SelectableRows = exports.RefreshTable = exports.PaginationOptionsShowcase = exports.NoStickyColumn = exports.NoPagination = exports.NoDataDefault = exports.ExpandableRows = exports.Default = exports.CustomStyling = exports.CustomPaginationStyling = exports.CustomNoDataComponent = exports.CustomColumnFormatting = exports.ConditionalExpandableRows = exports.BottomPagination = exports.AdvancedPaginationStyling = void 0;
7
+ exports["default"] = exports.StickyLastColumn = exports.StickyFirstColumn = exports.StickyBothColumns = exports.SimpleExpandableRows = exports.ServerSidePaginationWithCustomStyling = exports.ServerSidePagination = exports.ServerSideDefaultLoadingState = exports.SelectableRows = exports.RefreshTable = exports.PaginationOptionsShowcase = exports.NoStickyColumn = exports.NoPagination = exports.NoDataDefault = exports.ExpandableRows = exports.Default = exports.CustomStyling = exports.CustomPaginationStyling = exports.CustomNoDataComponent = exports.CustomColumnFormatting = exports.ConditionalExpandableRows = exports.BottomPagination = exports.AdvancedPaginationStyling = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
- var _Table = _interopRequireDefault(require("./Table"));
10
9
  var _dataLoader = _interopRequireDefault(require("../../core/dataLoader"));
10
+ var _Table = _interopRequireDefault(require("./Table"));
11
11
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
12
12
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
13
13
  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; }
@@ -269,14 +269,14 @@ var postsColumnConfigs = [{
269
269
  return row.id;
270
270
  },
271
271
  sortable: true,
272
- width: '100px'
272
+ width: '10%'
273
273
  }, {
274
274
  name: 'Title',
275
275
  selector: function selector(row) {
276
276
  return row.title;
277
277
  },
278
278
  sortable: true,
279
- width: '300px',
279
+ width: '30%',
280
280
  cell: function cell(row) {
281
281
  return /*#__PURE__*/_react["default"].createElement("div", {
282
282
  style: {
@@ -292,7 +292,7 @@ var postsColumnConfigs = [{
292
292
  return row.body;
293
293
  },
294
294
  sortable: true,
295
- width: '400px',
295
+ width: '40%',
296
296
  cell: function cell(row) {
297
297
  return /*#__PURE__*/_react["default"].createElement("div", {
298
298
  style: {
@@ -311,7 +311,7 @@ var postsColumnConfigs = [{
311
311
  return row.userId;
312
312
  },
313
313
  sortable: true,
314
- width: '100px',
314
+ width: '10%',
315
315
  cell: function cell(row) {
316
316
  return /*#__PURE__*/_react["default"].createElement("span", {
317
317
  style: {
@@ -556,7 +556,9 @@ NoDataDefault.args = {
556
556
  columnConfigs: basicColumnConfigs,
557
557
  paginationType: 'CLIENT',
558
558
  pagination: true,
559
- customClassName: 'custom-table'
559
+ customClassName: 'custom-table',
560
+ noDataHeading: 'No data available',
561
+ noDataDescription: 'No data available for this table'
560
562
  };
561
563
 
562
564
  // Table with custom no data component
@@ -2154,4 +2156,48 @@ var AdvancedPaginationStyling = exports.AdvancedPaginationStyling = function Adv
2154
2156
  selectAllRowsItemText: '🌟 All'
2155
2157
  }
2156
2158
  }));
2159
+ };
2160
+ var ServerSideDefaultLoadingState = exports.ServerSideDefaultLoadingState = function ServerSideDefaultLoadingState() {
2161
+ var _useState15 = (0, _react.useState)([]),
2162
+ _useState16 = _slicedToArray(_useState15, 2),
2163
+ selectedRows = _useState16[0],
2164
+ setSelectedRows = _useState16[1];
2165
+ var _useState17 = (0, _react.useState)(false),
2166
+ _useState18 = _slicedToArray(_useState17, 2),
2167
+ refreshTrigger = _useState18[0],
2168
+ setRefreshTrigger = _useState18[1];
2169
+ var responseFormatter = function responseFormatter(response) {
2170
+ return {
2171
+ entries: response || [],
2172
+ total: response ? 30 : 0
2173
+ };
2174
+ };
2175
+ var handleRefresh = function handleRefresh() {
2176
+ setRefreshTrigger(!refreshTrigger);
2177
+ };
2178
+ return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", {
2179
+ style: {
2180
+ marginBottom: '1rem'
2181
+ }
2182
+ }, /*#__PURE__*/_react["default"].createElement("h3", null, "Server-Side Default Loading State"), /*#__PURE__*/_react["default"].createElement("p", null, "This table shows the default loading state for server-side pagination.")), /*#__PURE__*/_react["default"].createElement(_Table["default"], {
2183
+ columnConfigs: postsColumnConfigs,
2184
+ paginationType: "SERVER",
2185
+ pagination: true,
2186
+ showSelectableRows: true,
2187
+ setSelectedRow: setSelectedRows,
2188
+ CheckBoxRow: CustomCheckBoxRow,
2189
+ refreshData: refreshTrigger,
2190
+ progressPending: true,
2191
+ customClassName: "custom-table",
2192
+ apiInfo: {
2193
+ pageNoKey: '_page',
2194
+ perPageKey: '_limit',
2195
+ searchBy: 'q',
2196
+ requestId: 'getPosts',
2197
+ responseFormatter: responseFormatter
2198
+ },
2199
+ onApiError: function onApiError(error) {
2200
+ return console.error('API Error:', error);
2201
+ }
2202
+ }));
2157
2203
  };
@@ -5,15 +5,16 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports["default"] = void 0;
8
+ var _lodash = _interopRequireDefault(require("lodash.isequal"));
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
8
10
  var _react = _interopRequireWildcard(require("react"));
11
+ var _dataLoader = _interopRequireDefault(require("../../core/dataLoader"));
9
12
  var _BaseTable = _interopRequireDefault(require("./BaseTable"));
10
- var _propTypes = _interopRequireDefault(require("prop-types"));
11
- var _lodash = _interopRequireDefault(require("lodash.isequal"));
12
13
  var _usePrevious = require("./hooks/usePrevious");
13
- var _dataLoader = _interopRequireDefault(require("../../core/dataLoader"));
14
- var _excluded = ["records", "columnConfigs", "paginationType", "sortOrder", "apiInfo", "onApiError", "noDataDescription", "noDataHeading", "customClassName", "pagination", "refreshData", "showSelectableRows", "setSelectedRow", "clearData", "expandableRows", "selectableRows", "CustomLoading", "CustomNoDataComponent", "CustomAPIErrorComponent", "CheckBoxRow", "page", "perPage", "onPageChangeCB", "onRowsPerPageChangeCB", "requestKeys", "paginationRowsPerPageOptions"];
15
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
14
+ var _TableUtils = require("./TableUtils");
15
+ var _excluded = ["records", "columnConfigs", "paginationType", "sortOrder", "apiInfo", "onApiError", "noDataDescription", "noDataHeading", "noDataImage", "apiFailedImage", "customClassName", "pagination", "refreshData", "showSelectableRows", "setSelectedRow", "clearData", "expandableRows", "selectableRows", "CustomLoading", "CustomNoDataComponent", "CustomAPIErrorComponent", "CheckBoxRow", "page", "perPage", "onPageChangeCB", "onRowsPerPageChangeCB", "requestKeys", "paginationRowsPerPageOptions"];
16
16
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
17
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
17
18
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
18
19
  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
19
20
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
@@ -50,6 +51,10 @@ var TableChild = function TableChild() {
50
51
  noDataDescription = _props$noDataDescript === void 0 ? "" : _props$noDataDescript,
51
52
  _props$noDataHeading = props.noDataHeading,
52
53
  noDataHeading = _props$noDataHeading === void 0 ? "" : _props$noDataHeading,
54
+ _props$noDataImage = props.noDataImage,
55
+ noDataImage = _props$noDataImage === void 0 ? "" : _props$noDataImage,
56
+ _props$apiFailedImage = props.apiFailedImage,
57
+ apiFailedImage = _props$apiFailedImage === void 0 ? "" : _props$apiFailedImage,
53
58
  _props$customClassNam = props.customClassName,
54
59
  customClassName = _props$customClassNam === void 0 ? "" : _props$customClassNam,
55
60
  _props$pagination = props.pagination,
@@ -63,7 +68,8 @@ var TableChild = function TableChild() {
63
68
  expandableRows = _props$expandableRows === void 0 ? false : _props$expandableRows,
64
69
  _props$selectableRows = props.selectableRows,
65
70
  selectableRows = _props$selectableRows === void 0 ? false : _props$selectableRows,
66
- CustomLoading = props.CustomLoading,
71
+ _props$CustomLoading = props.CustomLoading,
72
+ CustomLoading = _props$CustomLoading === void 0 ? _TableUtils.DefaultLoading : _props$CustomLoading,
67
73
  CustomNoDataComponent = props.CustomNoDataComponent,
68
74
  CustomAPIErrorComponent = props.CustomAPIErrorComponent,
69
75
  CheckBoxRow = props.CheckBoxRow,
@@ -320,10 +326,18 @@ var TableChild = function TableChild() {
320
326
  onChangePage: handlePageChange,
321
327
  noDataComponent: apiError ? CustomAPIErrorComponent ? /*#__PURE__*/_react["default"].createElement(CustomAPIErrorComponent, {
322
328
  status: apiErrorMessage
323
- }) : /*#__PURE__*/_react["default"].createElement("div", null, "Error") : CustomNoDataComponent ? /*#__PURE__*/_react["default"].createElement(CustomNoDataComponent, {
329
+ }) : /*#__PURE__*/_react["default"].createElement(_TableUtils.DefaultAPIErrorComponent, {
330
+ status: apiErrorMessage,
331
+ image: apiFailedImage
332
+ }) : CustomNoDataComponent ? /*#__PURE__*/_react["default"].createElement(CustomNoDataComponent, {
333
+ description: noDataDescription,
334
+ heading: noDataHeading,
335
+ image: noDataImage
336
+ }) : /*#__PURE__*/_react["default"].createElement(_TableUtils.DefaultNoDataComponent, {
324
337
  description: noDataDescription,
325
- heading: noDataHeading
326
- }) : /*#__PURE__*/_react["default"].createElement("div", null, "No Data"),
338
+ heading: noDataHeading,
339
+ image: noDataImage
340
+ }),
327
341
  paginationDefaultPage: page,
328
342
  className: "".concat(customClassName, " nutana-table ").concat(isServerPagination ? 'pagination' : 'no-pagination', " ").concat(isFirstColumnSticky ? 'first-clm-sticky' : '', " ").concat(isLastColumnSticky ? 'last-clm-sticky' : '', " ").concat(expandableRows ? 'expandable-rows' : ''),
329
343
  paginationRowsPerPageOptions: paginationRowsPerPageOptions,