@visns-studio/visns-components 4.7.0 → 4.7.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.
Files changed (110) 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/index.css +2902 -0
  22. package/dist/index.js +2 -0
  23. package/dist/index.js.LICENSE.txt +150 -0
  24. package/dist/main.83b033670d64419bb497.css +1 -0
  25. package/dist/main.b1723d17cd2d3513ab62.js +1 -0
  26. package/dist/report.html +39 -0
  27. package/dist/runtime.33c276593b23f8035b8d.js +1 -0
  28. package/package.json +26 -6
  29. package/.idea/codeStyles/Project.xml +0 -50
  30. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  31. package/.idea/deployment.xml +0 -4
  32. package/.idea/modules.xml +0 -8
  33. package/.idea/php.xml +0 -19
  34. package/.idea/vcs.xml +0 -6
  35. package/.idea/visns-components.iml +0 -8
  36. package/.prettierrc.json +0 -7
  37. package/.yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs +0 -541
  38. package/.yarn/releases/yarn-3.6.1.cjs +0 -874
  39. package/.yarnrc.yml +0 -7
  40. package/components/cms/DataGrid.jsx +0 -1461
  41. package/components/cms/DropZone.jsx +0 -349
  42. package/components/cms/Field.jsx +0 -802
  43. package/components/cms/Form.jsx +0 -476
  44. package/components/cms/generic/CmsDetail.jsx +0 -36
  45. package/components/cms/generic/CmsIndex.jsx +0 -73
  46. package/components/cms/generic/CmsSort.jsx +0 -125
  47. package/components/cms/sorting/Item.jsx +0 -115
  48. package/components/cms/sorting/List.jsx +0 -30
  49. package/components/crm/AsyncSelect.jsx +0 -125
  50. package/components/crm/Autocomplete.jsx +0 -174
  51. package/components/crm/Breadcrumb.jsx +0 -52
  52. package/components/crm/Call.jsx +0 -220
  53. package/components/crm/DataGrid.jsx +0 -2701
  54. package/components/crm/Download.jsx +0 -101
  55. package/components/crm/Fetch.jsx +0 -119
  56. package/components/crm/Field.jsx +0 -1557
  57. package/components/crm/Form.jsx +0 -1409
  58. package/components/crm/Loader.jsx +0 -29
  59. package/components/crm/MultiSelect.jsx +0 -78
  60. package/components/crm/Navigation.jsx +0 -619
  61. package/components/crm/Notification.jsx +0 -197
  62. package/components/crm/QrCode.jsx +0 -83
  63. package/components/crm/Select.jsx +0 -58
  64. package/components/crm/SelectList.jsx +0 -21
  65. package/components/crm/TableFilter.jsx +0 -198
  66. package/components/crm/auth/Login.jsx +0 -223
  67. package/components/crm/auth/Profile.jsx +0 -280
  68. package/components/crm/auth/Reset.jsx +0 -111
  69. package/components/crm/auth/Verify.jsx +0 -174
  70. package/components/crm/auth/styles/Login.module.css +0 -243
  71. package/components/crm/auth/styles/Profile.module.css +0 -222
  72. package/components/crm/auth/styles/Reset.module.css +0 -216
  73. package/components/crm/auth/styles/Verify.module.css +0 -216
  74. package/components/crm/generic/AuditLog.jsx +0 -108
  75. package/components/crm/generic/AuditLogs.jsx +0 -115
  76. package/components/crm/generic/GenericAuth.jsx +0 -166
  77. package/components/crm/generic/GenericDashboard.jsx +0 -42
  78. package/components/crm/generic/GenericDetail.jsx +0 -1499
  79. package/components/crm/generic/GenericDynamic.jsx +0 -915
  80. package/components/crm/generic/GenericFormBuilder.jsx +0 -1765
  81. package/components/crm/generic/GenericIndex.jsx +0 -376
  82. package/components/crm/generic/GenericMain.jsx +0 -129
  83. package/components/crm/generic/GenericSort.jsx +0 -188
  84. package/components/crm/generic/NotificationList.jsx +0 -64
  85. package/components/crm/generic/styles/AuditLog.module.css +0 -147
  86. package/components/crm/generic/styles/AuditLogs.module.css +0 -92
  87. package/components/crm/generic/styles/GenericDetail.module.css +0 -634
  88. package/components/crm/generic/styles/GenericDynamic.module.css +0 -932
  89. package/components/crm/generic/styles/GenericFormBuilder.module.css +0 -944
  90. package/components/crm/generic/styles/GenericIndex.module.css +0 -247
  91. package/components/crm/generic/styles/GenericMain.module.css +0 -91
  92. package/components/crm/generic/styles/GenericSort.module.css +0 -123
  93. package/components/crm/generic/styles/NotificationList.module.css +0 -67
  94. package/components/crm/sorting/Item.jsx +0 -117
  95. package/components/crm/sorting/List.jsx +0 -32
  96. package/components/crm/sorting/styles/Item.module.css +0 -68
  97. package/components/crm/sorting/styles/List.module.css +0 -68
  98. package/components/crm/styles/AsyncSelect.module.css +0 -8
  99. package/components/crm/styles/Autocomplete.module.css +0 -44
  100. package/components/crm/styles/DataGrid.module.css +0 -210
  101. package/components/crm/styles/Field.module.css +0 -311
  102. package/components/crm/styles/Form.module.css +0 -499
  103. package/components/crm/styles/Loader.module.css +0 -94
  104. package/components/crm/styles/MultiSelect.module.css +0 -8
  105. package/components/crm/styles/Navigation.module.css +0 -978
  106. package/components/crm/styles/Notification.module.css +0 -147
  107. package/components/crm/styles/QrCode.module.css +0 -87
  108. package/components/crm/styles/TableFilter.module.css +0 -52
  109. package/components/styles/global.css +0 -73
  110. 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;