@visns-studio/visns-components 4.6.13 → 4.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/dist/104e5636d8ddb791614c.woff2 +0 -0
  2. package/dist/11fe6a83d647de5daf95.woff +0 -0
  3. package/dist/141e2a8c7836495afe2a.woff +0 -0
  4. package/dist/2ba5877f7079830b5383.woff +0 -0
  5. package/dist/2d6836f45b2037be41f3.woff +0 -0
  6. package/dist/399.0a0f3e0d21be1057d599.css +8 -0
  7. package/dist/399.b8f57fa3f8c0c10119e4.js +1 -0
  8. package/dist/47d566c3b1293dfd9d77.woff +0 -0
  9. package/dist/6282a13cbba671a71913.woff2 +0 -0
  10. package/dist/78266f551031aa9db127.woff +0 -0
  11. package/dist/7b7da89f1e3fdcbfe36c.woff2 +0 -0
  12. package/dist/7e78e8338af7efeda712.woff2 +0 -0
  13. package/dist/7fa387951673abf164b1.woff2 +0 -0
  14. package/dist/819d59862c2d0640aad8.woff +0 -0
  15. package/dist/b615e1a6c838ea059a56.woff +0 -0
  16. package/dist/b9b1aa739c660c4ce67c.woff2 +0 -0
  17. package/dist/c5f3640b11df9414facb.woff +0 -0
  18. package/dist/da26d162ff5af71d6590.woff2 +0 -0
  19. package/dist/dd5b2912dbf896310865.woff2 +0 -0
  20. package/dist/f282b331272463c1aa6c.woff2 +0 -0
  21. package/dist/main.83b033670d64419bb497.css +1 -0
  22. package/dist/main.b1723d17cd2d3513ab62.js +1 -0
  23. package/dist/report.html +39 -0
  24. package/dist/runtime.33c276593b23f8035b8d.js +1 -0
  25. package/package.json +26 -6
  26. package/.idea/codeStyles/Project.xml +0 -50
  27. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  28. package/.idea/deployment.xml +0 -4
  29. package/.idea/modules.xml +0 -8
  30. package/.idea/php.xml +0 -19
  31. package/.idea/vcs.xml +0 -6
  32. package/.idea/visns-components.iml +0 -8
  33. package/.prettierrc.json +0 -7
  34. package/.yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs +0 -541
  35. package/.yarn/releases/yarn-3.6.1.cjs +0 -874
  36. package/.yarnrc.yml +0 -7
  37. package/components/cms/DataGrid.jsx +0 -1461
  38. package/components/cms/DropZone.jsx +0 -349
  39. package/components/cms/Field.jsx +0 -802
  40. package/components/cms/Form.jsx +0 -476
  41. package/components/cms/generic/CmsDetail.jsx +0 -36
  42. package/components/cms/generic/CmsIndex.jsx +0 -73
  43. package/components/cms/generic/CmsSort.jsx +0 -125
  44. package/components/cms/sorting/Item.jsx +0 -115
  45. package/components/cms/sorting/List.jsx +0 -30
  46. package/components/crm/AsyncSelect.jsx +0 -125
  47. package/components/crm/Autocomplete.jsx +0 -174
  48. package/components/crm/Breadcrumb.jsx +0 -52
  49. package/components/crm/Call.jsx +0 -220
  50. package/components/crm/DataGrid.jsx +0 -2701
  51. package/components/crm/Download.jsx +0 -101
  52. package/components/crm/Fetch.jsx +0 -119
  53. package/components/crm/Field.jsx +0 -1557
  54. package/components/crm/Form.jsx +0 -1409
  55. package/components/crm/Loader.jsx +0 -29
  56. package/components/crm/MultiSelect.jsx +0 -78
  57. package/components/crm/Navigation.jsx +0 -619
  58. package/components/crm/Notification.jsx +0 -197
  59. package/components/crm/QrCode.jsx +0 -83
  60. package/components/crm/Select.jsx +0 -58
  61. package/components/crm/SelectList.jsx +0 -21
  62. package/components/crm/TableFilter.jsx +0 -198
  63. package/components/crm/auth/Login.jsx +0 -230
  64. package/components/crm/auth/Profile.jsx +0 -280
  65. package/components/crm/auth/Reset.jsx +0 -111
  66. package/components/crm/auth/Verify.jsx +0 -174
  67. package/components/crm/auth/styles/Login.module.css +0 -245
  68. package/components/crm/auth/styles/Profile.module.css +0 -222
  69. package/components/crm/auth/styles/Reset.module.css +0 -216
  70. package/components/crm/auth/styles/Verify.module.css +0 -216
  71. package/components/crm/generic/AuditLog.jsx +0 -108
  72. package/components/crm/generic/AuditLogs.jsx +0 -115
  73. package/components/crm/generic/GenericAuth.jsx +0 -166
  74. package/components/crm/generic/GenericDashboard.jsx +0 -42
  75. package/components/crm/generic/GenericDetail.jsx +0 -1499
  76. package/components/crm/generic/GenericDynamic.jsx +0 -915
  77. package/components/crm/generic/GenericFormBuilder.jsx +0 -1765
  78. package/components/crm/generic/GenericIndex.jsx +0 -376
  79. package/components/crm/generic/GenericMain.jsx +0 -129
  80. package/components/crm/generic/GenericSort.jsx +0 -188
  81. package/components/crm/generic/NotificationList.jsx +0 -64
  82. package/components/crm/generic/styles/AuditLog.module.css +0 -147
  83. package/components/crm/generic/styles/AuditLogs.module.css +0 -92
  84. package/components/crm/generic/styles/GenericDetail.module.css +0 -634
  85. package/components/crm/generic/styles/GenericDynamic.module.css +0 -932
  86. package/components/crm/generic/styles/GenericFormBuilder.module.css +0 -944
  87. package/components/crm/generic/styles/GenericIndex.module.css +0 -247
  88. package/components/crm/generic/styles/GenericMain.module.css +0 -91
  89. package/components/crm/generic/styles/GenericSort.module.css +0 -123
  90. package/components/crm/generic/styles/NotificationList.module.css +0 -67
  91. package/components/crm/sorting/Item.jsx +0 -117
  92. package/components/crm/sorting/List.jsx +0 -32
  93. package/components/crm/sorting/styles/Item.module.css +0 -68
  94. package/components/crm/sorting/styles/List.module.css +0 -68
  95. package/components/crm/styles/AsyncSelect.module.css +0 -8
  96. package/components/crm/styles/Autocomplete.module.css +0 -44
  97. package/components/crm/styles/DataGrid.module.css +0 -210
  98. package/components/crm/styles/Field.module.css +0 -311
  99. package/components/crm/styles/Form.module.css +0 -499
  100. package/components/crm/styles/Loader.module.css +0 -94
  101. package/components/crm/styles/MultiSelect.module.css +0 -8
  102. package/components/crm/styles/Navigation.module.css +0 -978
  103. package/components/crm/styles/Notification.module.css +0 -147
  104. package/components/crm/styles/QrCode.module.css +0 -87
  105. package/components/crm/styles/TableFilter.module.css +0 -52
  106. package/components/styles/global.css +0 -73
  107. package/index.js +0 -86
@@ -1,476 +0,0 @@
1
- import React, { useState, useEffect } from 'react';
2
- import CustomFetch from '../crm/Fetch';
3
- import Field from './Field';
4
- import slugify from 'react-slugify';
5
- import moment from 'moment';
6
- import Reveal from 'react-reveal/Reveal';
7
- import parse from 'html-react-parser';
8
- import { confirmAlert } from 'react-confirm-alert';
9
- import { toast } from 'react-toastify';
10
- import { Copy, TrashBin } from 'akar-icons';
11
-
12
- import 'react-confirm-alert/src/react-confirm-alert.css';
13
-
14
- function Form(props) {
15
- const { dataId, navigate, form } = props;
16
- const [data, setData] = useState({});
17
- const [dataClass, setDataClass] = useState({});
18
- const [audit, setAudit] = useState({
19
- createdBy: {},
20
- created: '',
21
- updatedBy: {},
22
- updated: '',
23
- });
24
- const [uploadProgress, setUploadProgress] = useState({});
25
-
26
- const handleChange = (e) => {
27
- if (e) {
28
- const { name, value } = e.target;
29
-
30
- switch (e.target.name) {
31
- case 'title':
32
- setData((prevState) => ({
33
- ...prevState,
34
- [name]: value,
35
- }));
36
-
37
- setData((prevState) => ({
38
- ...prevState,
39
- slug: slugify(value),
40
- }));
41
- break;
42
- case 'name':
43
- setData((prevState) => ({
44
- ...prevState,
45
- [name]: value,
46
- }));
47
-
48
- setData((prevState) => ({
49
- ...prevState,
50
- slug: slugify(value),
51
- }));
52
- break;
53
- default:
54
- if (name) {
55
- setData((prevState) => ({
56
- ...prevState,
57
- [name]: value,
58
- }));
59
- } else {
60
- setData((prevState) => ({
61
- ...prevState,
62
- [e.target.dataset.name]: value,
63
- }));
64
- }
65
- break;
66
- }
67
- }
68
- };
69
-
70
- const handleChangeDate = (date, id) => {
71
- setData((prevState) => ({
72
- ...prevState,
73
- [id]: date,
74
- }));
75
- };
76
-
77
- const handleChangeSelect = (value, action, id) => {
78
- if (value && action && id) {
79
- setData((prevState) => ({
80
- ...prevState,
81
- [id]: value,
82
- }));
83
- }
84
- };
85
-
86
- const handleChangeRicheditor = (e, value, name) => {
87
- setData((prevState) => ({
88
- ...prevState,
89
- [name]: value,
90
- }));
91
- };
92
-
93
- const handleChangeToggle = (e) => {
94
- if (!e) {
95
- return;
96
- }
97
-
98
- const { name, checked } = e.target;
99
-
100
- setData((prevState) => ({
101
- ...prevState,
102
- [name]: checked,
103
- }));
104
- };
105
-
106
- const handleChangeFile = (e) => {
107
- if (e) {
108
- setData((prevState) => ({
109
- ...prevState,
110
- [e.target.name]: e.target.files[0],
111
- }));
112
-
113
- Vapor.store(e.target.files[0], {
114
- progress: (progress) => {
115
- setUploadProgress((prevState) => ({
116
- ...prevState,
117
- [e.target.name]: progress * 100,
118
- }));
119
- },
120
- }).then((response) => {
121
- if (data.hasOwnProperty('files')) {
122
- let _files = data.files;
123
- let _new = true;
124
-
125
- data.files.forEach((a, b) => {
126
- if (e.target.name === a.field) {
127
- _files[b] = {
128
- field: e.target.name,
129
- uuid: response.uuid,
130
- key: response.key,
131
- bucket: response.bucket,
132
- filename: e.target.files[0].name,
133
- filesize: e.target.files[0].size,
134
- extension: response.extension,
135
- };
136
-
137
- _new = false;
138
- }
139
- });
140
-
141
- if (_new === true) {
142
- setData((prevState) => ({
143
- ...prevState,
144
- files: [
145
- ...prevState.files,
146
- {
147
- field: e.target.name,
148
- uuid: response.uuid,
149
- key: response.key,
150
- bucket: response.bucket,
151
- filename: e.target.files[0].name,
152
- filesize: e.target.files[0].size,
153
- extension: response.extension,
154
- },
155
- ],
156
- }));
157
- } else {
158
- setData((prevState) => ({
159
- ...prevState,
160
- files: _files,
161
- }));
162
- }
163
- } else {
164
- setData((prevState) => ({
165
- ...prevState,
166
- files: [
167
- {
168
- field: e.target.name,
169
- uuid: response.uuid,
170
- key: response.key,
171
- bucket: response.bucket,
172
- filename: e.target.files[0].name,
173
- filesize: e.target.files[0].size,
174
- extension: response.extension,
175
- },
176
- ],
177
- }));
178
- }
179
- });
180
- }
181
- };
182
-
183
- const handleSubmit = (e) => {
184
- if (e) {
185
- e.preventDefault();
186
-
187
- let error = '';
188
- let url = '';
189
- let method = '';
190
- let message = '';
191
-
192
- if (data.title === '') {
193
- error += 'Please enter a title.<br />';
194
- }
195
-
196
- if (data.summary === '') {
197
- error += 'Please enter a summary.<br />';
198
- }
199
-
200
- if (error === '') {
201
- if (dataId === 'create') {
202
- url = form.url;
203
- method = 'POST';
204
- message = 'You have successfully created a new entry.';
205
- } else {
206
- url = form.url + '/' + dataId;
207
- method = 'PUT';
208
- message = 'You have successfully updated this entry.';
209
- }
210
-
211
- CustomFetch(url, method, data, function (result) {
212
- if (result.error === '') {
213
- let _uploadProgress = uploadProgress;
214
-
215
- Object.keys(_uploadProgress).forEach((a, b) => {
216
- setUploadProgress((prevState) => ({
217
- ...prevState,
218
- [b]: 0,
219
- }));
220
- });
221
-
222
- toast.success(message);
223
-
224
- if (dataId === 'create') {
225
- navigate(
226
- form.url.replace('/ajax', '') +
227
- '/' +
228
- result.data.id,
229
- {
230
- state: {
231
- form: form,
232
- },
233
- }
234
- );
235
- }
236
- } else {
237
- toast.error(result.error);
238
- }
239
- });
240
- } else {
241
- toast.error(<div>{parse(error)}</div>);
242
- }
243
- }
244
- };
245
-
246
- const handleDelete = (e) => {
247
- if (e) {
248
- confirmAlert({
249
- title: 'Delete this entry',
250
- message: 'Are you sure you want to delete it?',
251
- buttons: [
252
- {
253
- label: 'Yes',
254
- onClick: () =>
255
- CustomFetch(
256
- `${form.url}/${dataId}`,
257
- 'DELETE',
258
- {},
259
- function (result) {
260
- if (result.error === '') {
261
- navigate(form.url.replace('/ajax', ''));
262
- toast.success(
263
- 'You have successfully deleted this entry.'
264
- );
265
- } else {
266
- toast.error(result.error);
267
- }
268
- }
269
- ),
270
- },
271
- {
272
- label: 'No',
273
- onClick: () => close(),
274
- },
275
- ],
276
- });
277
- }
278
- };
279
-
280
- const fetchData = () => {
281
- form.fields.forEach((a) => {
282
- setData((prevState) => ({
283
- ...prevState,
284
- [a.id]: '',
285
- }));
286
- });
287
-
288
- if (dataId !== 'create') {
289
- CustomFetch(
290
- `${form.url}/${dataId}`,
291
- 'GET',
292
- {},
293
- function (result) {
294
- let now = moment();
295
- let created = moment.duration(
296
- now.diff(result.data.created_at)
297
- );
298
- let updated = moment.duration(
299
- now.diff(result.data.updated_at)
300
- );
301
-
302
- setData(result.data);
303
- setAudit((prevState) => ({
304
- ...prevState,
305
- createdBy: result.audit_first,
306
- created:
307
- created.hours() > 24
308
- ? created.days() +
309
- ' Days ' +
310
- created.hours() +
311
- ' Hour(s) ' +
312
- created.minutes() +
313
- ' Minutes'
314
- : created.hours() +
315
- ' Hour(s) ' +
316
- created.minutes() +
317
- ' Minutes',
318
- updatedBy: result.audit_latest,
319
- updated:
320
- updated.hours() > 24
321
- ? updated.days() +
322
- ' Days ' +
323
- updated.hours() +
324
- ' Hour(s) ' +
325
- updated.minutes() +
326
- ' Minutes'
327
- : updated.hours() +
328
- ' Hour(s) ' +
329
- updated.minutes() +
330
- ' Minutes',
331
- }));
332
- },
333
- function (error) {
334
- navigate('/');
335
-
336
- toast.error(String(error));
337
- }
338
- );
339
- }
340
- };
341
-
342
- useEffect(() => {
343
- form.fields.forEach((a) => {
344
- if (a.type === 'image') {
345
- setUploadProgress((prevState) => ({
346
- ...prevState,
347
- [a.id]: 0,
348
- }));
349
- }
350
-
351
- setData((prevState) => ({
352
- ...prevState,
353
- [a.id]: '',
354
- }));
355
-
356
- setDataClass((prevState) => ({
357
- ...prevState,
358
- [a.id]: '',
359
- }));
360
- });
361
-
362
- fetchData();
363
- }, [dataId]);
364
-
365
- return (
366
- <Reveal effect="fadeInUp">
367
- <div className="grid">
368
- <div className="grid__row">
369
- <div className="grid__full cmstitle">
370
- <h1>
371
- {data.title
372
- ? data.title
373
- : dataId !== 'create'
374
- ? form.update.title
375
- : form.create.title}
376
- </h1>
377
- <div className="cmstitle__actions">
378
- <button
379
- className="btn actionbtn"
380
- onClick={handleSubmit}
381
- >
382
- <Copy size={18} strokeWidth={2} />{' '}
383
- {dataId !== 'create' ? 'Save' : 'Create'}
384
- </button>
385
- </div>
386
- </div>
387
- </div>
388
- </div>
389
- <div className="dynamic">
390
- <div className="dynamic__left">
391
- <div className="formcontainer">
392
- <div className="dynamicform">
393
- {form.fields.map((a, b) => (
394
- <Field
395
- key={
396
- b +
397
- '-fields-' +
398
- (a.hasOwnProperty('key')
399
- ? a.id + '-' + a.key
400
- : a.id)
401
- }
402
- baseData={data}
403
- fetchData={fetchData}
404
- inputClass={dataClass}
405
- inputValue={
406
- a.hasOwnProperty('key')
407
- ? data[a.key]
408
- : Array.isArray(data[a.id]) &&
409
- a.type === 'image'
410
- ? data[a.id].length > 0
411
- ? data[a.id][0]
412
- : ''
413
- : data[a.id]
414
- }
415
- onChange={handleChange}
416
- onChangeDate={handleChangeDate}
417
- onChangeFile={handleChangeFile}
418
- onChangeRicheditor={handleChangeRicheditor}
419
- onChangeSelect={handleChangeSelect}
420
- onChangeToggle={handleChangeToggle}
421
- setFormData={setData}
422
- settings={a}
423
- uploadProgress={uploadProgress}
424
- />
425
- ))}
426
- </div>
427
- </div>
428
- </div>
429
- <div className="dynamic__right">
430
- <h1>Information</h1>
431
- <ul>
432
- <li>
433
- Created: <span>{audit.created} Ago</span>
434
- </li>
435
- <li>
436
- By:{' '}
437
- <span>
438
- {audit &&
439
- audit.createdBy &&
440
- audit.createdBy.user
441
- ? audit.createdBy.user.name
442
- : null}
443
- </span>
444
- </li>
445
- <li>
446
- Last Update: <span>{audit.updated} Ago</span>
447
- </li>
448
- <li>
449
- by:{' '}
450
- <span>
451
- {audit &&
452
- audit.updatedBy &&
453
- audit.updatedBy.user
454
- ? audit.updatedBy.user.name
455
- : null}
456
- </span>
457
- </li>
458
- {dataId !== 'create' ? (
459
- <li>
460
- <button
461
- className="btn actionbtn deletebtn"
462
- onClick={handleDelete}
463
- >
464
- <TrashBin size={14} strokeWidth={2} />{' '}
465
- Delete Entry
466
- </button>
467
- </li>
468
- ) : null}
469
- </ul>
470
- </div>
471
- </div>
472
- </Reveal>
473
- );
474
- }
475
-
476
- export default Form;
@@ -1,36 +0,0 @@
1
- import React from 'react';
2
- import { useParams, useNavigate, useLocation } from 'react-router-dom';
3
- import Reveal from 'react-reveal/Reveal';
4
- import { ToastContainer } from 'react-toastify';
5
- import CmsForm from '../Form';
6
-
7
- import 'react-confirm-alert/src/react-confirm-alert.css';
8
-
9
- function CmsDetail({ setting }) {
10
- const { dataId } = useParams();
11
- const navigate = useNavigate();
12
- const { form } = setting;
13
-
14
- return (
15
- <Reveal effect="fadeInUp">
16
- <div className="grid">
17
- <div className="grid__row">
18
- <div className="grid__full">
19
- <CmsForm
20
- dataId={dataId}
21
- navigate={navigate}
22
- form={form}
23
- />
24
- </div>
25
- </div>
26
- </div>
27
- <ToastContainer
28
- theme="light"
29
- position="bottom-center"
30
- style={{ width: '600px' }}
31
- />
32
- </Reveal>
33
- );
34
- }
35
-
36
- export default CmsDetail;
@@ -1,73 +0,0 @@
1
- import React, { useEffect, useState } from 'react';
2
- import { Outlet } from 'react-router-dom';
3
- import Reveal from 'react-reveal/Reveal';
4
- import DataGrid from '../DataGrid';
5
-
6
- function CmsIndex({ setting, userProfile }) {
7
- const { ajaxSetting, columns, form, filters, page, settings } = setting;
8
-
9
- const [config, setConfig] = useState({});
10
- const [windowHeight, setWindowHeight] = useState(window.innerHeight);
11
- const pageTitle = page?.title;
12
-
13
- useEffect(() => {
14
- setConfig(() => ({
15
- ajaxSetting,
16
- form,
17
- columns,
18
- settings,
19
- }));
20
- }, [setting]);
21
-
22
- useEffect(() => {
23
- const handleResize = () => {
24
- setWindowHeight(window.innerHeight);
25
- };
26
-
27
- window.addEventListener('resize', handleResize);
28
-
29
- // Clean up the event listener
30
- return () => {
31
- window.removeEventListener('resize', handleResize);
32
- };
33
- }, []);
34
-
35
- return (
36
- <>
37
- <Reveal effect="fadeInUp">
38
- <>
39
- <div className="grid">
40
- <div className="grid__row">
41
- <div className="grid__full cmstitle">
42
- <h1>{pageTitle}</h1>
43
- </div>
44
- </div>
45
- </div>
46
- {config.ajaxSetting &&
47
- config.form &&
48
- config.columns &&
49
- config.settings && (
50
- <div className="grid">
51
- <div className="grid__row">
52
- <div className="grid__full">
53
- <DataGrid
54
- {...config}
55
- gridHeight={windowHeight * 0.65}
56
- setConfig={setConfig}
57
- style={
58
- userProfile?.settings?.style ||
59
- {}
60
- }
61
- />
62
- </div>
63
- </div>
64
- </div>
65
- )}
66
- <Outlet />
67
- </>
68
- </Reveal>
69
- </>
70
- );
71
- }
72
-
73
- export default CmsIndex;