groovinads-ui 1.2.40 → 1.2.42
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/README.md +12 -10
- package/dist/index.es.js +2 -2
- package/dist/index.js +2 -2
- package/package.json +1 -1
- package/src/components/Dropdowns/DropdownFilter.jsx +90 -59
- package/src/components/Navigation/Dropdowns/DeckDropdown.jsx +0 -47
- package/src/components/Navigation/Dropdowns/UserDropdown.jsx +9 -3
- package/src/services/components.services.js +2 -0
- package/src/services/helpers.js +2 -0
- package/src/services/url.path.js +2 -0
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "groovinads-ui",
|
|
3
3
|
"description": "Groovinads UI is a React component library designed exclusively for Groovinads applications. It provides ready-to-use UI elements styled according to Groovinads design guidelines to facilitate rapid development.",
|
|
4
|
-
"version": "1.2.
|
|
4
|
+
"version": "1.2.42",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"css",
|
|
7
7
|
"sass",
|
|
@@ -21,7 +21,6 @@ const DropdownFilter = ({
|
|
|
21
21
|
onToggle,
|
|
22
22
|
overflow = false,
|
|
23
23
|
className = '',
|
|
24
|
-
|
|
25
24
|
}) => {
|
|
26
25
|
const [query, setQuery] = useState('');
|
|
27
26
|
|
|
@@ -37,24 +36,24 @@ const DropdownFilter = ({
|
|
|
37
36
|
<p>It looks like this value does not exist.</p>
|
|
38
37
|
</div>
|
|
39
38
|
</div>
|
|
40
|
-
)
|
|
41
|
-
}
|
|
39
|
+
);
|
|
40
|
+
};
|
|
42
41
|
|
|
43
42
|
const handleCheckbox = (value, i) => {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
43
|
+
if (value) setValuesSelected([...valuesSelected, values[i]]);
|
|
44
|
+
else setValuesSelected(valuesSelected.filter((item) => item !== values[i]));
|
|
45
|
+
};
|
|
47
46
|
|
|
48
47
|
const selectAll = () => {
|
|
49
48
|
setValuesSelected([...values]);
|
|
50
|
-
}
|
|
49
|
+
};
|
|
51
50
|
|
|
52
51
|
const clearSelection = () => {
|
|
53
52
|
setValuesSelected([]);
|
|
54
|
-
}
|
|
53
|
+
};
|
|
55
54
|
|
|
56
55
|
const handlePill = (index) =>
|
|
57
|
-
|
|
56
|
+
setValuesSelected(valuesSelected.filter((item, i) => i !== index));
|
|
58
57
|
|
|
59
58
|
return (
|
|
60
59
|
<Dropdown
|
|
@@ -63,20 +62,13 @@ const DropdownFilter = ({
|
|
|
63
62
|
className={`dropdown-filter ${locked ? 'locked' : ''} ${className}`}
|
|
64
63
|
autoClose={false}
|
|
65
64
|
>
|
|
66
|
-
<Dropdown.Toggle
|
|
67
|
-
variant='toggle-filter'
|
|
68
|
-
>
|
|
65
|
+
<Dropdown.Toggle variant='toggle-filter'>
|
|
69
66
|
<div className='filter-heading'>
|
|
70
|
-
|
|
71
67
|
<div className='filter-title'>
|
|
72
68
|
<span>{title}</span>
|
|
73
69
|
{locked && (
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
iconName={'lock-keyhole'}
|
|
77
|
-
scale={0.7}
|
|
78
|
-
/>
|
|
79
|
-
)}
|
|
70
|
+
<Icon style={'solid'} iconName={'lock-keyhole'} scale={0.7} />
|
|
71
|
+
)}
|
|
80
72
|
</div>
|
|
81
73
|
<Icon
|
|
82
74
|
style={'solid'}
|
|
@@ -86,7 +78,11 @@ const DropdownFilter = ({
|
|
|
86
78
|
/>
|
|
87
79
|
</div>
|
|
88
80
|
<div className='filter-values'>
|
|
89
|
-
{
|
|
81
|
+
{valuesSelected.length === values.length
|
|
82
|
+
? 'All selected'
|
|
83
|
+
: valuesSelected.length
|
|
84
|
+
? valuesSelected.join('; ')
|
|
85
|
+
: 'None'}
|
|
90
86
|
</div>
|
|
91
87
|
</Dropdown.Toggle>
|
|
92
88
|
{!locked && (
|
|
@@ -100,9 +96,17 @@ const DropdownFilter = ({
|
|
|
100
96
|
)}
|
|
101
97
|
|
|
102
98
|
{menuType === 'simple' && (
|
|
103
|
-
|
|
99
|
+
<Dropdown.Menu
|
|
104
100
|
className='dropdown-menu-simple'
|
|
105
|
-
popperConfig={
|
|
101
|
+
popperConfig={
|
|
102
|
+
overflow
|
|
103
|
+
? {
|
|
104
|
+
strategy: 'fixed',
|
|
105
|
+
onFirstUpdate: () =>
|
|
106
|
+
window.dispatchEvent(new CustomEvent('scroll')),
|
|
107
|
+
}
|
|
108
|
+
: undefined
|
|
109
|
+
}
|
|
106
110
|
>
|
|
107
111
|
<div className='dropdown-menu-wrapper'>
|
|
108
112
|
<Input
|
|
@@ -111,35 +115,50 @@ const DropdownFilter = ({
|
|
|
111
115
|
icon='magnifying-glass'
|
|
112
116
|
className='w-100'
|
|
113
117
|
value={query}
|
|
114
|
-
onChange={({target}) => setQuery(target.value)}
|
|
118
|
+
onChange={({ target }) => setQuery(target.value)}
|
|
115
119
|
customRef={show}
|
|
116
120
|
/>
|
|
117
|
-
{values.filter(
|
|
121
|
+
{values.filter((item) =>
|
|
122
|
+
item.toString().toLowerCase().includes(query.toLowerCase()),
|
|
123
|
+
).length > 0 ? (
|
|
118
124
|
<ul className='dropdown-filter-list'>
|
|
119
125
|
{/* List values */}
|
|
120
|
-
{values
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
setStatus={ (status) => {handleCheckbox(status, index)} }
|
|
124
|
-
status={valuesSelected.includes(value)}
|
|
125
|
-
key={'Dropdown.Simple.Checkbox' + index}
|
|
126
|
-
>
|
|
127
|
-
{value}
|
|
128
|
-
</Checkbox>
|
|
126
|
+
{values
|
|
127
|
+
.filter((item) =>
|
|
128
|
+
item.toString().toLowerCase().includes(query.toLowerCase()),
|
|
129
129
|
)
|
|
130
|
-
|
|
130
|
+
.map((value, index) => {
|
|
131
|
+
return (
|
|
132
|
+
<Checkbox
|
|
133
|
+
setStatus={(status) => {
|
|
134
|
+
handleCheckbox(status, index);
|
|
135
|
+
}}
|
|
136
|
+
status={valuesSelected.includes(value)}
|
|
137
|
+
key={'Dropdown.Simple.Checkbox' + index}
|
|
138
|
+
>
|
|
139
|
+
{value}
|
|
140
|
+
</Checkbox>
|
|
141
|
+
);
|
|
142
|
+
})}
|
|
131
143
|
</ul>
|
|
132
144
|
) : (
|
|
133
145
|
<EmptySpace />
|
|
134
146
|
)}
|
|
135
147
|
</div>
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
148
|
+
</Dropdown.Menu>
|
|
149
|
+
)}
|
|
150
|
+
{menuType === 'selection' && (
|
|
151
|
+
<Dropdown.Menu
|
|
152
|
+
className='dropdown-menu-selection'
|
|
153
|
+
popperConfig={
|
|
154
|
+
overflow
|
|
155
|
+
? {
|
|
156
|
+
strategy: 'fixed',
|
|
157
|
+
onFirstUpdate: () =>
|
|
158
|
+
window.dispatchEvent(new CustomEvent('scroll')),
|
|
159
|
+
}
|
|
160
|
+
: undefined
|
|
161
|
+
}
|
|
143
162
|
>
|
|
144
163
|
<div className='dropdown-menu-wrapper'>
|
|
145
164
|
<div className='dropdown-filter-list-wrapper'>
|
|
@@ -149,25 +168,36 @@ const DropdownFilter = ({
|
|
|
149
168
|
icon='magnifying-glass'
|
|
150
169
|
className='w-100'
|
|
151
170
|
value={query}
|
|
152
|
-
onChange={({target}) => setQuery(target.value)}
|
|
171
|
+
onChange={({ target }) => setQuery(target.value)}
|
|
153
172
|
customRef={show}
|
|
154
173
|
/>
|
|
155
174
|
<h4>All values ({values.length})</h4>
|
|
156
|
-
{values.filter(
|
|
175
|
+
{values.filter((item) =>
|
|
176
|
+
item.toString().toLowerCase().includes(query.toLowerCase()),
|
|
177
|
+
).length > 0 ? (
|
|
157
178
|
<>
|
|
158
179
|
<ul className='dropdown-filter-list'>
|
|
159
180
|
{/* List values */}
|
|
160
|
-
{values
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
>
|
|
167
|
-
{value}
|
|
168
|
-
</Checkbox>
|
|
181
|
+
{values
|
|
182
|
+
.filter((item) =>
|
|
183
|
+
item
|
|
184
|
+
.toString()
|
|
185
|
+
.toLowerCase()
|
|
186
|
+
.includes(query.toLowerCase()),
|
|
169
187
|
)
|
|
170
|
-
|
|
188
|
+
.map((value, index) => {
|
|
189
|
+
return (
|
|
190
|
+
<Checkbox
|
|
191
|
+
setStatus={(status) => {
|
|
192
|
+
handleCheckbox(status, index);
|
|
193
|
+
}}
|
|
194
|
+
status={valuesSelected.includes(value)}
|
|
195
|
+
key={'Dropdown.Selection.Checkbox' + index}
|
|
196
|
+
>
|
|
197
|
+
{value}
|
|
198
|
+
</Checkbox>
|
|
199
|
+
);
|
|
200
|
+
})}
|
|
171
201
|
</ul>
|
|
172
202
|
</>
|
|
173
203
|
) : (
|
|
@@ -201,19 +231,20 @@ const DropdownFilter = ({
|
|
|
201
231
|
<PillComponent
|
|
202
232
|
color='light'
|
|
203
233
|
closeButton={true}
|
|
204
|
-
onClick={
|
|
234
|
+
onClick={() => {
|
|
235
|
+
handlePill(index);
|
|
236
|
+
}}
|
|
205
237
|
key={'Dropdown.PillComponent' + index}
|
|
206
238
|
>
|
|
207
239
|
{value}
|
|
208
240
|
</PillComponent>
|
|
209
|
-
)
|
|
241
|
+
);
|
|
210
242
|
})}
|
|
211
243
|
</div>
|
|
212
244
|
</div>
|
|
213
245
|
</div>
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
)}
|
|
246
|
+
</Dropdown.Menu>
|
|
247
|
+
)}
|
|
217
248
|
</Dropdown>
|
|
218
249
|
);
|
|
219
250
|
};
|
|
@@ -232,4 +263,4 @@ DropdownFilter.propTypes = {
|
|
|
232
263
|
className: PropTypes.string,
|
|
233
264
|
};
|
|
234
265
|
|
|
235
|
-
export default DropdownFilter;
|
|
266
|
+
export default DropdownFilter;
|
|
@@ -19,7 +19,6 @@ const DeckDropdown = () => {
|
|
|
19
19
|
try {
|
|
20
20
|
const resp = await ComponentsService.applications();
|
|
21
21
|
resp.forEach((element) => {
|
|
22
|
-
//element.app_icon = `fa-duotone fa-${element.application_icon}`; // Solo para Deck
|
|
23
22
|
element.app_icon_sm = element.application_icon;
|
|
24
23
|
element.app_name = element.application_name;
|
|
25
24
|
});
|
|
@@ -34,7 +33,6 @@ const DeckDropdown = () => {
|
|
|
34
33
|
|
|
35
34
|
const linkToApp = (path, title) => {
|
|
36
35
|
// if path begins with /, path is a subdomain, linkUrl must be window.location.origin + path + '/'
|
|
37
|
-
// else linkUrl must be path
|
|
38
36
|
let linkUrl;
|
|
39
37
|
const base_domain = useGetBaseDomain();
|
|
40
38
|
const nextState = { additionalInformation: 'Updated the URL' };
|
|
@@ -43,12 +41,10 @@ const DeckDropdown = () => {
|
|
|
43
41
|
if (path.startsWith('/')) {
|
|
44
42
|
if (base_domain === 'groovinads.com') {
|
|
45
43
|
linkUrl = window.location.origin + path + '/';
|
|
46
|
-
// we update the browser history window.history.pushState({ additionalInformation: 'URL updated' }, title, linkUrl);
|
|
47
44
|
window.history.pushState(nextState, title, linkUrl);
|
|
48
45
|
} else {
|
|
49
46
|
linkUrl = 'https://deck-dev.groovinads.com' + path + '/';
|
|
50
47
|
}
|
|
51
|
-
// Else return complete path
|
|
52
48
|
} else linkUrl = path;
|
|
53
49
|
|
|
54
50
|
return linkUrl;
|
|
@@ -68,8 +64,6 @@ const DeckDropdown = () => {
|
|
|
68
64
|
});
|
|
69
65
|
} catch (error) {
|
|
70
66
|
console.error('favApp error', error);
|
|
71
|
-
//setShowAPIerrorModal(true);
|
|
72
|
-
//setErrorModalDetail(`${error}`);
|
|
73
67
|
}
|
|
74
68
|
};
|
|
75
69
|
|
|
@@ -88,8 +82,6 @@ const DeckDropdown = () => {
|
|
|
88
82
|
}
|
|
89
83
|
} catch (error) {
|
|
90
84
|
console.error('unfavApp error', error);
|
|
91
|
-
//setShowAPIerrorModal(true);
|
|
92
|
-
//setErrorModalDetail(`${error}`);
|
|
93
85
|
}
|
|
94
86
|
};
|
|
95
87
|
|
|
@@ -144,7 +136,6 @@ const DeckDropdown = () => {
|
|
|
144
136
|
className='link-app'
|
|
145
137
|
>
|
|
146
138
|
<span className='icon-app'>
|
|
147
|
-
{/* <i className={element.app_icon_sm}></i> */}
|
|
148
139
|
<Icon
|
|
149
140
|
style={'solid'}
|
|
150
141
|
iconName={element.app_icon_sm}
|
|
@@ -189,7 +180,6 @@ const DeckDropdown = () => {
|
|
|
189
180
|
className='link-app'
|
|
190
181
|
>
|
|
191
182
|
<span className='icon-app'>
|
|
192
|
-
{/* <i className={element.app_icon_sm}></i> */}
|
|
193
183
|
<Icon
|
|
194
184
|
style={'solid'}
|
|
195
185
|
iconName={element.app_icon_sm}
|
|
@@ -213,43 +203,6 @@ const DeckDropdown = () => {
|
|
|
213
203
|
})}
|
|
214
204
|
</Dropdown.Menu>
|
|
215
205
|
|
|
216
|
-
{/* <Dropdown.Menu as={'ul'}>
|
|
217
|
-
<Dropdown.Item as={'li'}>
|
|
218
|
-
<h4 className='dropdown-header'>Favoritos</h4>
|
|
219
|
-
</Dropdown.Item>
|
|
220
|
-
|
|
221
|
-
<Dropdown.Item as={'li'}>
|
|
222
|
-
<div
|
|
223
|
-
onClick={() => {
|
|
224
|
-
console.log('link');
|
|
225
|
-
}}
|
|
226
|
-
className='link-app'
|
|
227
|
-
>
|
|
228
|
-
<span className='icon-app'>
|
|
229
|
-
<Icon
|
|
230
|
-
style={'solid'}
|
|
231
|
-
iconName={'book'}
|
|
232
|
-
scale={1}
|
|
233
|
-
/>
|
|
234
|
-
</span>
|
|
235
|
-
|
|
236
|
-
<span>La app va a acá</span>
|
|
237
|
-
</div>
|
|
238
|
-
<button
|
|
239
|
-
className='deck-fav'
|
|
240
|
-
onClick={(e) => {
|
|
241
|
-
e.stopPropagation();
|
|
242
|
-
console.log('fav');
|
|
243
|
-
}}
|
|
244
|
-
>
|
|
245
|
-
<Icon
|
|
246
|
-
style={'regular'}
|
|
247
|
-
iconName={'star'}
|
|
248
|
-
scale={1}
|
|
249
|
-
/>
|
|
250
|
-
</button>
|
|
251
|
-
</Dropdown.Item>
|
|
252
|
-
</Dropdown.Menu> */}
|
|
253
206
|
</Dropdown>
|
|
254
207
|
);
|
|
255
208
|
};
|
|
@@ -13,6 +13,14 @@ const UserDropdown = () => {
|
|
|
13
13
|
|
|
14
14
|
const [groovinProfile, setGroovinProfile] = useState({});
|
|
15
15
|
|
|
16
|
+
const handleLogout = async() => {
|
|
17
|
+
const resp = await ComponentsService.authLogout().then(() => {
|
|
18
|
+
window.location.href = '/';
|
|
19
|
+
}).catch((error) => {
|
|
20
|
+
console.error( error)
|
|
21
|
+
})
|
|
22
|
+
}
|
|
23
|
+
|
|
16
24
|
useEffect(() => {
|
|
17
25
|
ComponentsService.authStatus().then((resp) => {
|
|
18
26
|
|
|
@@ -46,9 +54,7 @@ const UserDropdown = () => {
|
|
|
46
54
|
</Dropdown.Toggle>
|
|
47
55
|
<Dropdown.Menu as={'ul'} align={'end'}>
|
|
48
56
|
<Dropdown.Item as={'li'}
|
|
49
|
-
onClick={
|
|
50
|
-
window.location.href = '/logout';
|
|
51
|
-
}}
|
|
57
|
+
onClick={handleLogout}
|
|
52
58
|
>
|
|
53
59
|
<Icon
|
|
54
60
|
iconName={'right-from-bracket'}
|
|
@@ -3,6 +3,8 @@ import { POST, GET, DELETE } from './helpers';
|
|
|
3
3
|
|
|
4
4
|
export const authStatus = async () => await GET({ url: urlPath.authStatus });
|
|
5
5
|
|
|
6
|
+
export const authLogout = async () => await POST({ url: urlPath.authLogout });
|
|
7
|
+
|
|
6
8
|
export const applications = async () => await GET({ url: urlPath.applications });
|
|
7
9
|
|
|
8
10
|
export const favApplication = async (appToFav) => await POST({url: `${urlPath.favApps}/${appToFav}`, data: appToFav})
|
package/src/services/helpers.js
CHANGED
package/src/services/url.path.js
CHANGED
|
@@ -9,11 +9,13 @@ export const basePath =
|
|
|
9
9
|
|
|
10
10
|
export default {
|
|
11
11
|
authStatus: basePath + 'v2/auth/status',
|
|
12
|
+
authLogout: basePath + 'v2/auth/logout',
|
|
12
13
|
|
|
13
14
|
/* APPS FOR DROPDOWN */
|
|
14
15
|
applications: basePath + 'v2/applications',
|
|
15
16
|
favApps: basePath + 'v2/applications/favorite',
|
|
16
17
|
|
|
18
|
+
|
|
17
19
|
headers: {
|
|
18
20
|
headers: {
|
|
19
21
|
'Content-Type': 'application/json',
|