@visns-studio/visns-components 2.9.5 → 2.9.6

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.
@@ -60,7 +60,7 @@ function VisnsDropZone({ fetchData, files, settings }) {
60
60
  },
61
61
  function (result) {
62
62
  if (result.error === '') {
63
- if (fetchData) {
63
+ if (typeof fetchData === 'function') {
64
64
  fetchData();
65
65
 
66
66
  toast.success(
@@ -82,7 +82,7 @@ function VisnsDropZone({ fetchData, files, settings }) {
82
82
 
83
83
  const handleDownload = (id) => {
84
84
  if (id && id > 0 && settings.model && settings.model !== '') {
85
- window.open(`/ajax/file/download/${id}/${settings.model}`);
85
+ window.open(`/ajax/files/download/${id}/${settings.model}`);
86
86
  } else {
87
87
  toast.warning('Issue with downloading the selected file.');
88
88
  }
@@ -108,6 +108,7 @@ function VisnsDropZone({ fetchData, files, settings }) {
108
108
  setModalData((prevState) => ({
109
109
  ...prevState,
110
110
  id: res.data.id,
111
+ file_name: res.data.file_name,
111
112
  title: res.data.file_title,
112
113
  description: res.data.file_description,
113
114
  }));
@@ -119,7 +120,6 @@ function VisnsDropZone({ fetchData, files, settings }) {
119
120
  };
120
121
 
121
122
  const handleDelete = (id, name) => {
122
- console.info(id, name);
123
123
  if (id && id > 0) {
124
124
  confirmAlert({
125
125
  title: 'Confirm to Delete File',
@@ -129,14 +129,14 @@ function VisnsDropZone({ fetchData, files, settings }) {
129
129
  label: 'Yes',
130
130
  onClick: () => {
131
131
  CustomFetch(
132
- `/ajax/file/delete`,
132
+ `/ajax/files/delete`,
133
133
  'POST',
134
134
  {
135
135
  file_id: id,
136
136
  },
137
137
  function (result) {
138
138
  if (result.error === '') {
139
- if (fetchData) {
139
+ if (typeof fetchData === 'function') {
140
140
  fetchData();
141
141
  }
142
142
  }
@@ -165,6 +165,7 @@ function VisnsDropZone({ fetchData, files, settings }) {
165
165
  `/ajax/files/${modalData.id}`,
166
166
  'PUT',
167
167
  {
168
+ file_name: modalData.file_name,
168
169
  file_title: modalData.title,
169
170
  file_description: modalData.description,
170
171
  }
@@ -173,6 +174,10 @@ function VisnsDropZone({ fetchData, files, settings }) {
173
174
  if (res.data.error === '') {
174
175
  toast.success('File metadata has been successfully updated.');
175
176
  modalClose();
177
+
178
+ if (typeof fetchData === 'function') {
179
+ fetchData();
180
+ }
176
181
  } else {
177
182
  toast.error(res.data.error);
178
183
  }
@@ -184,7 +189,7 @@ function VisnsDropZone({ fetchData, files, settings }) {
184
189
  useEffect(() => {
185
190
  if (data.length > 0) {
186
191
  CustomFetch(
187
- '/ajax/file/sort_update',
192
+ '/ajax/files/sort_update',
188
193
  'POST',
189
194
  {
190
195
  list: data,
@@ -199,6 +204,10 @@ function VisnsDropZone({ fetchData, files, settings }) {
199
204
  }
200
205
  }, [data]);
201
206
 
207
+ useEffect(() => {
208
+ setData(files);
209
+ }, [files]);
210
+
202
211
  return (
203
212
  <>
204
213
  {settings.type === 'gallery' ? (
@@ -41,7 +41,7 @@ const modules = {
41
41
  },
42
42
  }).then((response) => {
43
43
  CustomFetch(
44
- '/ajax/file/upload',
44
+ '/ajax/files/upload',
45
45
  'POST',
46
46
  response,
47
47
  function (res) {
@@ -13,6 +13,35 @@ const SortableItem = ({
13
13
  handleDelete,
14
14
  value,
15
15
  }) => {
16
+ const renderImage = (d) => {
17
+ let htmlContainer = '';
18
+ if (d.hasOwnProperty('image_url') && d.image_url !== '') {
19
+ htmlContainer = (
20
+ <div className="sortimg">
21
+ <img src={d.image_url} />
22
+ </div>
23
+ );
24
+ }
25
+
26
+ if (d.hasOwnProperty('file_url') && d.file_url !== '') {
27
+ htmlContainer = (
28
+ <div className="sortimg">
29
+ <img src={d.file_url} />
30
+ </div>
31
+ );
32
+ }
33
+
34
+ if (htmlContainer === '') {
35
+ htmlContainer = (
36
+ <div className="sortimg">
37
+ <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAACoUlEQVR4Xu3cO47CMBAAUNMhGiQ6qDkv5+Ac1BwBUUKHRIOgYteg7AaS+Ds/O0OFSPyZp/FEQZYn+/3+uVgszHQ6NfrpF7jf7+ZyuZjJ8Xh82i/r9drM53P1+hK4Xq/mcDgYm1CT0+n0nM1mrx8U7FOqgbIut9vtjbVcLk37gmaY6Xicz+d/LGuqYO/M6nPoYCnYcML0Yo0ZzLWyBrHGCOYrQU6sMYH5oKyFF2sMYCFQwVg1g4VCRWHVCBYDFY1VE1gsVBJWDWApUMlYJYOlQmVhlQiWA5WNVRJYLhQIVglgEFBgWJLBoKBAsSSCQUKBY0kCg4ZCwZIAhgGFhsUJhgWFisUBhgmFjkUJhg1FgkUBRgFFhoUJRgVFioUBRglFjgUJRg3FggUBxgHFhpUDxgXFipUCxgnFjhUDxg0lAisETAKUGCwXmBQoUVh9YJKgxGG1wezmOru3QNJOxKC9DjYIys/vTsQXlAVbrVaUQzvHEofVLD3NLE+OfNcorVkDYEMwksBELEMfiO86VVFjxwqFCL0PE44VKxYg9n5oODas1MBT20HAsWDlBpzbPhWOHAsqUKh+YuBIsaADhO7PB0eGhRUYVr99cCRY2AFh99/AoWNRBUIxDioWRQDt5YI9HhoW9sSHijHmuChYmBP2PbFC/tMP6YOkwHNDNUFizAM0szAmmJoFGBkGhiUNCiPDQLCkQkGDZWNJh4IEy8IqBQoKLBmrNCgIsCSsUqFywaKxSofKAYvCqgUqFSwYqzaoFLAgrFqhYsG8WLVDxYDpWTStl09fYgxi+RrmvOBKbuuKuxdrrFC+JdnBGjuUC+wDS6E+C8S3xx+WnibZraTb7dY8Hg+z2+3MZrN5nyap55S6HzlNhr3OKdUTcP3P5+YE3B/mgEymnzCGDgAAAABJRU5ErkJggg==" />
38
+ </div>
39
+ );
40
+ }
41
+
42
+ return htmlContainer;
43
+ };
44
+
16
45
  return (
17
46
  <li
18
47
  onClick={(e) => {
@@ -24,19 +53,13 @@ const SortableItem = ({
24
53
  }}
25
54
  >
26
55
  <DragHandle />
27
- {value.label}
56
+ {value.label
57
+ ? value.label
58
+ : value.file_title
59
+ ? value.file_title
60
+ : value.file_name}
28
61
 
29
- {value.hasOwnProperty('image_url') && value.image_url !== '' ? (
30
- <div className="sortimg">
31
- <img src={value.image_url} />
32
- </div>
33
- ) : null}
34
-
35
- {value.hasOwnProperty('file_url') && value.file_url !== '' ? (
36
- <div className="sortimg">
37
- <img src={value.file_url} />
38
- </div>
39
- ) : null}
62
+ {renderImage(value)}
40
63
 
41
64
  {handleEdit &&
42
65
  value.hasOwnProperty('file_title') &&
@@ -23,6 +23,7 @@ import 'react-datepicker/dist/react-datepicker.css';
23
23
  function Field({
24
24
  autocompleteCallback,
25
25
  childDropdownCallback,
26
+ fetchData,
26
27
  formData,
27
28
  inputValue,
28
29
  inputClass,
@@ -684,18 +685,12 @@ function Field({
684
685
  url: dropzoneUrl,
685
686
  method: settings.method,
686
687
  type: 'gallery',
688
+ data: settings.data,
687
689
  }}
688
690
  />
689
691
  );
690
692
  }
691
693
 
692
- console.info(
693
- 'htmlContainer',
694
- htmlContainer,
695
- formData,
696
- settings
697
- );
698
-
699
694
  return htmlContainer;
700
695
  case 'richeditor':
701
696
  return (
@@ -555,7 +555,7 @@ function Form({
555
555
  }
556
556
  };
557
557
 
558
- useEffect(() => {
558
+ const fetchData = async () => {
559
559
  let _formData = { ...formData }; // Create a new object instead of assigning a reference
560
560
 
561
561
  if (formSettings.fields.length > 0) {
@@ -576,249 +576,237 @@ function Form({
576
576
  });
577
577
  }
578
578
 
579
- const fetchData = async () => {
580
- if (formType !== 'create' && columnId > 0) {
581
- try {
582
- const result = await CustomFetch(
583
- `${formSettings.url}/${columnId}`,
584
- 'GET',
585
- {}
586
- );
587
- const data = result.hasOwnProperty('data')
588
- ? result.data
589
- : result;
590
-
591
- const updatedFormData = { ..._formData }; // Create a new object to update properties
592
-
593
- Object.keys(updatedFormData).forEach((item) => {
594
- let tempRes = '';
595
- let tempResKey = '';
596
- let field = formSettings.fields.find(
597
- (f) => f.id === item
598
- );
579
+ if (formType !== 'create' && columnId > 0) {
580
+ try {
581
+ const result = await CustomFetch(
582
+ `${formSettings.url}/${columnId}`,
583
+ 'GET',
584
+ {}
585
+ );
586
+ const data = result.hasOwnProperty('data')
587
+ ? result.data
588
+ : result;
599
589
 
600
- if (data[item] === undefined) {
601
- if (field && field.hasOwnProperty('relation')) {
602
- let tempRes = data[field.relation];
603
-
604
- if (
605
- [
606
- 'multi-dropdown',
607
- 'multi-dropdown-ajax',
608
- 'async-dropdown-ajax',
609
- ].includes(field.type) &&
610
- Array.isArray(tempRes)
611
- ) {
612
- tempRes = tempRes.map((a) => ({
613
- value: a.name,
614
- label: a.name,
615
- }));
616
- }
590
+ const updatedFormData = { ..._formData }; // Create a new object to update properties
617
591
 
618
- if (tempRes) {
619
- const relationFrom = field.hasOwnProperty(
620
- 'relation_from'
621
- )
622
- ? field.relation_from
623
- : field.id;
624
- tempRes = Array.isArray(tempRes)
625
- ? tempRes[0][relationFrom]
626
- : tempRes[relationFrom];
627
- } else {
628
- tempRes = '';
629
- }
592
+ Object.keys(updatedFormData).forEach((item) => {
593
+ let tempRes = '';
594
+ let tempResKey = '';
595
+ let field = formSettings.fields.find((f) => f.id === item);
630
596
 
631
- updatedFormData[item] = tempRes;
632
- }
597
+ if (data[item] === undefined) {
598
+ if (field && field.hasOwnProperty('relation')) {
599
+ let tempRes = data[field.relation];
633
600
 
634
601
  if (
635
- field &&
636
- field.hasOwnProperty('relation') &&
637
602
  [
638
603
  'multi-dropdown',
639
604
  'multi-dropdown-ajax',
640
605
  'async-dropdown-ajax',
641
- ].includes(field.type)
606
+ ].includes(field.type) &&
607
+ Array.isArray(tempRes)
642
608
  ) {
643
- let tempObj = data;
644
- let tempRes = {};
609
+ tempRes = tempRes.map((a) => ({
610
+ value: a.name,
611
+ label: a.name,
612
+ }));
613
+ }
645
614
 
646
- const relationLength = Array.isArray(
647
- field.relation
615
+ if (tempRes) {
616
+ const relationFrom = field.hasOwnProperty(
617
+ 'relation_from'
648
618
  )
649
- ? field.relation.length
650
- : 1;
651
- for (let i = 0; i < relationLength; i++) {
652
- tempObj = tempObj[field.relation[i]];
653
- }
619
+ ? field.relation_from
620
+ : field.id;
621
+ tempRes = Array.isArray(tempRes)
622
+ ? tempRes[0][relationFrom]
623
+ : tempRes[relationFrom];
624
+ } else {
625
+ tempRes = '';
626
+ }
654
627
 
655
- if (tempObj !== undefined && tempObj !== null) {
656
- let labelValue;
628
+ updatedFormData[item] = tempRes;
629
+ }
657
630
 
658
- if (Array.isArray(field.relationName)) {
659
- labelValue = field.relationName.map(
660
- (name) => `${tempObj[name]} `
661
- );
662
- } else {
663
- labelValue =
664
- tempObj[field.relationName];
665
- }
631
+ if (
632
+ field &&
633
+ field.hasOwnProperty('relation') &&
634
+ [
635
+ 'multi-dropdown',
636
+ 'multi-dropdown-ajax',
637
+ 'async-dropdown-ajax',
638
+ ].includes(field.type)
639
+ ) {
640
+ let tempObj = data;
641
+ let tempRes = {};
642
+
643
+ const relationLength = Array.isArray(field.relation)
644
+ ? field.relation.length
645
+ : 1;
646
+ for (let i = 0; i < relationLength; i++) {
647
+ tempObj = tempObj[field.relation[i]];
648
+ }
666
649
 
667
- tempRes = {
668
- value: tempObj.id,
669
- label: labelValue,
670
- };
650
+ if (tempObj !== undefined && tempObj !== null) {
651
+ let labelValue;
652
+
653
+ if (Array.isArray(field.relationName)) {
654
+ labelValue = field.relationName.map(
655
+ (name) => `${tempObj[name]} `
656
+ );
657
+ } else {
658
+ labelValue = tempObj[field.relationName];
671
659
  }
672
660
 
673
- updatedFormData[field.id] = tempRes;
661
+ tempRes = {
662
+ value: tempObj.id,
663
+ label: labelValue,
664
+ };
674
665
  }
675
666
 
676
- if (
677
- field &&
678
- field.hasOwnProperty('relation') &&
679
- ['address', 'text'].includes(field.type)
680
- ) {
681
- let tempObj = data;
682
- let tempRes = '';
683
-
684
- const relationLength = Array.isArray(
685
- field.relation
686
- )
687
- ? field.relation.length
688
- : 1;
689
- for (let i = 0; i < relationLength; i++) {
690
- tempObj = tempObj[field.relation[i]];
691
- }
667
+ updatedFormData[field.id] = tempRes;
668
+ }
692
669
 
693
- if (tempObj !== undefined && tempObj !== null) {
694
- let labelValue;
670
+ if (
671
+ field &&
672
+ field.hasOwnProperty('relation') &&
673
+ ['address', 'text'].includes(field.type)
674
+ ) {
675
+ let tempObj = data;
676
+ let tempRes = '';
677
+
678
+ const relationLength = Array.isArray(field.relation)
679
+ ? field.relation.length
680
+ : 1;
681
+ for (let i = 0; i < relationLength; i++) {
682
+ tempObj = tempObj[field.relation[i]];
683
+ }
695
684
 
696
- if (Array.isArray(field.relationName)) {
697
- labelValue = field.relationName.map(
698
- (name) => `${tempObj[name]} `
699
- );
700
- } else {
701
- labelValue =
702
- tempObj[field.relationName];
703
- }
685
+ if (tempObj !== undefined && tempObj !== null) {
686
+ let labelValue;
704
687
 
705
- tempRes = labelValue;
688
+ if (Array.isArray(field.relationName)) {
689
+ labelValue = field.relationName.map(
690
+ (name) => `${tempObj[name]} `
691
+ );
692
+ } else {
693
+ labelValue = tempObj[field.relationName];
706
694
  }
707
695
 
708
- updatedFormData[field.id] = tempRes;
696
+ tempRes = labelValue;
709
697
  }
710
698
 
711
- if (item.includes('.')) {
712
- // Split the item string by the dot
713
- let keys = item.split('.');
699
+ updatedFormData[field.id] = tempRes;
700
+ }
714
701
 
715
- // Access the nested property
716
- let value = data;
702
+ if (item.includes('.')) {
703
+ // Split the item string by the dot
704
+ let keys = item.split('.');
717
705
 
718
- for (let key of keys) {
719
- value = value[key];
720
- }
706
+ // Access the nested property
707
+ let value = data;
721
708
 
722
- // Update the updatedFormData object
723
- updatedFormData[item] = value;
709
+ for (let key of keys) {
710
+ value = value[key];
724
711
  }
725
- } else {
726
- if (
727
- field &&
728
- ['date', 'datetime', 'time'].includes(
729
- field.type
730
- )
731
- ) {
732
- if (data[item] === null || data[item] === '') {
733
- updatedFormData[item] = '';
734
- } else {
735
- const momentDate = moment(data[item]);
736
- updatedFormData[item] = momentDate.isValid()
737
- ? momentDate.toDate()
738
- : null;
739
- }
740
- } else if (
741
- field &&
742
- field.hasOwnProperty('relation') &&
743
- !field.multi
744
- ) {
745
- const relationTypes = [
746
- 'multi-dropdown',
747
- 'multi-dropdown-ajax',
748
- 'async-dropdown-ajax',
749
- ];
750
712
 
751
- if (relationTypes.includes(field.type)) {
752
- let relationLength = Array.isArray(
753
- field.relation
754
- )
755
- ? field.relation.length
756
- : 1;
757
- let tempObj = data;
758
- let relationFound = false;
759
-
760
- for (let i = 0; i < relationLength; i++) {
761
- if (tempObj[field.relation[i]]) {
762
- relationFound = true;
763
- tempObj =
764
- tempObj[field.relation[i]];
765
- }
766
- }
713
+ // Update the updatedFormData object
714
+ updatedFormData[item] = value;
715
+ }
716
+ } else {
717
+ if (
718
+ field &&
719
+ ['date', 'datetime', 'time'].includes(field.type)
720
+ ) {
721
+ if (data[item] === null || data[item] === '') {
722
+ updatedFormData[item] = '';
723
+ } else {
724
+ const momentDate = moment(data[item]);
725
+ updatedFormData[item] = momentDate.isValid()
726
+ ? momentDate.toDate()
727
+ : null;
728
+ }
729
+ } else if (
730
+ field &&
731
+ field.hasOwnProperty('relation') &&
732
+ !field.multi
733
+ ) {
734
+ const relationTypes = [
735
+ 'multi-dropdown',
736
+ 'multi-dropdown-ajax',
737
+ 'async-dropdown-ajax',
738
+ ];
739
+
740
+ if (relationTypes.includes(field.type)) {
741
+ let relationLength = Array.isArray(
742
+ field.relation
743
+ )
744
+ ? field.relation.length
745
+ : 1;
746
+ let tempObj = data;
747
+ let relationFound = false;
767
748
 
768
- if (relationFound === false) {
769
- tempObj = {};
749
+ for (let i = 0; i < relationLength; i++) {
750
+ if (tempObj[field.relation[i]]) {
751
+ relationFound = true;
752
+ tempObj = tempObj[field.relation[i]];
770
753
  }
754
+ }
771
755
 
772
- let labelValue;
756
+ if (relationFound === false) {
757
+ tempObj = {};
758
+ }
773
759
 
774
- if (Array.isArray(field.relationName)) {
775
- labelValue = field.relationName.map(
776
- (name) => `${tempObj[name]} `
777
- );
778
- } else {
779
- labelValue =
780
- tempObj[field.relationName];
781
- }
760
+ let labelValue;
782
761
 
783
- tempRes =
784
- tempObj !== undefined &&
785
- tempObj !== null &&
786
- tempObj.id
787
- ? {
788
- value: tempObj.id,
789
- label: labelValue,
790
- }
791
- : {};
792
-
793
- tempResKey = field.id;
762
+ if (Array.isArray(field.relationName)) {
763
+ labelValue = field.relationName.map(
764
+ (name) => `${tempObj[name]} `
765
+ );
766
+ } else {
767
+ labelValue = tempObj[field.relationName];
794
768
  }
795
- } else {
796
- updatedFormData[item] = data[item];
769
+
770
+ tempRes =
771
+ tempObj !== undefined &&
772
+ tempObj !== null &&
773
+ tempObj.id
774
+ ? {
775
+ value: tempObj.id,
776
+ label: labelValue,
777
+ }
778
+ : {};
779
+
780
+ tempResKey = field.id;
797
781
  }
782
+ } else {
783
+ updatedFormData[item] = data[item];
798
784
  }
785
+ }
799
786
 
800
- if (
801
- item === tempResKey &&
802
- tempRes &&
803
- tempRes.hasOwnProperty('value') &&
804
- tempRes.hasOwnProperty('label')
805
- ) {
806
- updatedFormData[item] = tempRes;
807
- }
808
- });
787
+ if (
788
+ item === tempResKey &&
789
+ tempRes &&
790
+ tempRes.hasOwnProperty('value') &&
791
+ tempRes.hasOwnProperty('label')
792
+ ) {
793
+ updatedFormData[item] = tempRes;
794
+ }
795
+ });
809
796
 
810
- setFormData(updatedFormData);
797
+ setFormData(updatedFormData);
811
798
 
812
- setFetchTrigger(!fetchTrigger);
813
- } catch (error) {
814
- // Handle error here
815
- toast.error('Failed to fetch data:', error);
816
- }
817
- } else {
818
- setFormData(_formData);
799
+ setFetchTrigger(!fetchTrigger);
800
+ } catch (error) {
801
+ // Handle error here
802
+ toast.error('Failed to fetch data:', error);
819
803
  }
820
- };
804
+ } else {
805
+ setFormData(_formData);
806
+ }
807
+ };
821
808
 
809
+ useEffect(() => {
822
810
  fetchData();
823
811
  }, [formSettings]);
824
812
 
@@ -907,6 +895,7 @@ function Form({
907
895
  childDropdownCallback={
908
896
  childDropdownCallback
909
897
  }
898
+ fetchData={fetchData}
910
899
  formData={formData}
911
900
  inputClass={inputClass}
912
901
  inputValue={
@@ -990,7 +979,19 @@ function Form({
990
979
  }
991
980
  return (
992
981
  <Field
993
- settings={item}
982
+ autocompleteCallback={
983
+ autocompleteSelect
984
+ }
985
+ childDropdownCallback={
986
+ childDropdownCallback
987
+ }
988
+ fetchData={fetchData}
989
+ inputClass={inputClass}
990
+ inputValue={
991
+ item.hasOwnProperty('key')
992
+ ? formData[item.key]
993
+ : formData[item.id]
994
+ }
994
995
  key={
995
996
  index +
996
997
  '-fields-' +
@@ -998,33 +999,22 @@ function Form({
998
999
  ? item.id + '-' + item.key
999
1000
  : item.id)
1000
1001
  }
1001
- inputValue={
1002
- item.hasOwnProperty('key')
1003
- ? formData[item.key]
1004
- : formData[item.id]
1005
- }
1006
- inputClass={inputClass}
1002
+ mapbox={mapbox}
1007
1003
  onChange={handleChange}
1008
1004
  onChangeColour={handleChangeColour}
1009
1005
  onChangeDate={handleChangeDate}
1010
- onChangeSelect={handleChangeSelect}
1011
- onChangeRicheditor={
1012
- handleChangeRicheditor
1013
- }
1014
- onChangeToggle={handleChangeToggle}
1015
1006
  onChangeNumberFormat={
1016
1007
  handleChangeNumberFormat
1017
1008
  }
1018
- autocompleteCallback={
1019
- autocompleteSelect
1020
- }
1021
- childDropdownCallback={
1022
- childDropdownCallback
1009
+ onChangeRicheditor={
1010
+ handleChangeRicheditor
1023
1011
  }
1024
- uploadProgress={uploadProgress}
1025
- mapbox={mapbox}
1012
+ onChangeSelect={handleChangeSelect}
1013
+ onChangeToggle={handleChangeToggle}
1014
+ settings={item}
1026
1015
  setFormData={setFormData}
1027
1016
  style={style}
1017
+ uploadProgress={uploadProgress}
1028
1018
  />
1029
1019
  );
1030
1020
  })}
@@ -265,7 +265,7 @@ function GenericDetail({ setting, urlParam, userProfile }) {
265
265
  case 'dropzone':
266
266
  const downloadFile = (id) => {
267
267
  window.open(
268
- `/ajax/file/download/${id}/${activeTabConfig.folder}`
268
+ `/ajax/files/download/${id}/${activeTabConfig.folder}`
269
269
  );
270
270
  };
271
271
 
package/package.json CHANGED
@@ -45,7 +45,7 @@
45
45
  "react-dom": "^17.0.1"
46
46
  },
47
47
  "name": "@visns-studio/visns-components",
48
- "version": "2.9.5",
48
+ "version": "2.9.6",
49
49
  "description": "Various packages to assist in the development of our Custom Applications.",
50
50
  "main": "index.js",
51
51
  "scripts": {