@unbxd-ui/unbxd-react-components 0.3.3 → 0.3.4
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/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/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 +1 -1
|
@@ -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
|
+
}
|
|
@@ -6,13 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports["default"] = UIDItemComponent;
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
-
var
|
|
10
|
-
var _mapPin = _interopRequireDefault(require("../../assets/map-pin.svg"));
|
|
11
|
-
var _p = _interopRequireDefault(require("../../assets/p1.svg"));
|
|
12
|
-
var _p2 = _interopRequireDefault(require("../../assets/p2.svg"));
|
|
13
|
-
var _p3 = _interopRequireDefault(require("../../assets/p3.svg"));
|
|
14
|
-
var _p4 = _interopRequireDefault(require("../../assets/p4.svg"));
|
|
15
|
-
var _p5 = _interopRequireDefault(require("../../assets/p5.svg"));
|
|
9
|
+
var _icon = _interopRequireDefault(require("../../core/icon"));
|
|
16
10
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
17
11
|
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); }
|
|
18
12
|
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
|
@@ -36,7 +30,9 @@ function UIDItemComponent(props) {
|
|
|
36
30
|
_props$index = props.index,
|
|
37
31
|
index = _props$index === void 0 ? 0 : _props$index,
|
|
38
32
|
_props$style = props.style,
|
|
39
|
-
style = _props$style === void 0 ? {} : _props$style
|
|
33
|
+
style = _props$style === void 0 ? {} : _props$style,
|
|
34
|
+
_props$avatars = props.avatars,
|
|
35
|
+
clientAvatars = _props$avatars === void 0 ? [] : _props$avatars;
|
|
40
36
|
var _data$items = data.items,
|
|
41
37
|
items = _data$items === void 0 ? [] : _data$items,
|
|
42
38
|
_data$paginationType = data.paginationType,
|
|
@@ -44,10 +40,13 @@ function UIDItemComponent(props) {
|
|
|
44
40
|
_data$selectItem = data.selectItem,
|
|
45
41
|
serverSelectItem = _data$selectItem === void 0 ? function () {} : _data$selectItem,
|
|
46
42
|
_data$selectedItems = data.selectedItems,
|
|
47
|
-
serverSelectedItems = _data$selectedItems === void 0 ? [] : _data$selectedItems
|
|
43
|
+
serverSelectedItems = _data$selectedItems === void 0 ? [] : _data$selectedItems,
|
|
44
|
+
_data$avatars = data.avatars,
|
|
45
|
+
serverAvatars = _data$avatars === void 0 ? [] : _data$avatars;
|
|
48
46
|
|
|
49
47
|
// Determine the pagination type
|
|
50
48
|
var paginationType = clientPaginationType ? "CLIENT" : serverPaginationType;
|
|
49
|
+
var avatars = paginationType !== 'SERVER' ? clientAvatars : serverAvatars;
|
|
51
50
|
|
|
52
51
|
// Update the item data and select item function based on the pagination type
|
|
53
52
|
var updatedItemData = paginationType !== 'SERVER' ? itemData : items[index] || {};
|
|
@@ -104,8 +103,7 @@ function UIDItemComponent(props) {
|
|
|
104
103
|
return [].concat(_toConsumableArray(platforms), _toConsumableArray(devices)).join(", ");
|
|
105
104
|
}, [platforms, devices]);
|
|
106
105
|
var getAvatarSrc = function getAvatarSrc(rank) {
|
|
107
|
-
var
|
|
108
|
-
var avatarIndex = rank % 5;
|
|
106
|
+
var avatarIndex = rank % avatars.length;
|
|
109
107
|
return avatars[avatarIndex];
|
|
110
108
|
};
|
|
111
109
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
@@ -132,16 +130,14 @@ function UIDItemComponent(props) {
|
|
|
132
130
|
className: "RCB-user-id-metadata"
|
|
133
131
|
}, locationMetadata && /*#__PURE__*/_react["default"].createElement("div", {
|
|
134
132
|
className: "RCB-user-id-metadata-item RCB-location-metadata-item"
|
|
135
|
-
}, /*#__PURE__*/_react["default"].createElement("
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
className: "RCB-location-icon"
|
|
133
|
+
}, /*#__PURE__*/_react["default"].createElement(_icon["default"], {
|
|
134
|
+
icon: "map-pin",
|
|
135
|
+
size: "16px"
|
|
139
136
|
}), /*#__PURE__*/_react["default"].createElement("span", null, " ", locationMetadata)), locationMetadata && deviceMetadata && /*#__PURE__*/_react["default"].createElement("div", null, "|"), deviceMetadata && /*#__PURE__*/_react["default"].createElement("div", {
|
|
140
137
|
className: "RCB-user-id-metadata-item"
|
|
141
|
-
}, /*#__PURE__*/_react["default"].createElement("
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
className: "RCB-device-icon"
|
|
138
|
+
}, /*#__PURE__*/_react["default"].createElement(_icon["default"], {
|
|
139
|
+
icon: "desktop",
|
|
140
|
+
size: "16px"
|
|
145
141
|
}), /*#__PURE__*/_react["default"].createElement("span", null, deviceMetadata))))), /*#__PURE__*/_react["default"].createElement("div", {
|
|
146
142
|
className: "RCB-user-id-description"
|
|
147
143
|
}, "This user is a ", /*#__PURE__*/_react["default"].createElement("b", null, user_types), " visitor with", " ", /*#__PURE__*/_react["default"].createElement("b", null, session_count), " sessions and ", /*#__PURE__*/_react["default"].createElement("b", null, total_events), " ", "events. They made ", /*#__PURE__*/_react["default"].createElement("b", null, clicks), " clicks, placed ", /*#__PURE__*/_react["default"].createElement("b", null, orders), " ", "order(s) worth ", /*#__PURE__*/_react["default"].createElement("b", null, "$", revenue), ".")))));
|