@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.
- package/components/Button/Button.js +64 -10
- package/components/Button/Button.stories.js +17 -1
- package/components/Form/Checkbox.js +4 -3
- package/components/Form/Dropdown.js +12 -5
- package/components/Form/stories/Dropdown.stories.js +10 -2
- package/components/NoDataPlaceholder/NoDataPlaceholder.js +20 -3
- package/components/NoDataPlaceholder/NoDataPlaceholder.stories.js +3 -0
- package/components/PIDItemComponent/PIDItemComponent.js +1 -0
- package/components/PulseVersionToggler/PulseVersionToggler.js +178 -0
- package/components/PulseVersionToggler/PulseVersionToggler.stories.js +295 -0
- package/components/PulseVersionToggler/index.js +9 -0
- package/components/PulseVersionToggler/pulse-version-toggler.css +1 -0
- package/components/PulseVersionToggler/pulse-version-toggler.scss +106 -0
- package/components/Table/Table.stories.js +53 -7
- package/components/Table/TableChild.js +23 -9
- package/components/Table/TableUtils.js +134 -0
- package/components/Table/tableCore.css +1 -1
- package/components/Table/tableCore.scss +54 -0
- package/components/UIDItemComponent/UIDItemComponent.js +15 -19
- package/components/core.css +2 -2
- package/components/core.scss +1 -0
- package/components/index.js +7 -0
- package/index.js +6 -0
- package/package.json +2 -2
|
@@ -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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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
|
|
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(
|
|
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
|
-
|
|
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,
|