@apexcura/ui-components 0.0.14-Beta21 → 0.0.14-Beta210
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/dist/index.css +15 -0
- package/dist/index.d.mts +36 -7
- package/dist/index.d.ts +36 -7
- package/dist/index.js +781 -107
- package/dist/index.mjs +796 -106
- package/package.json +7 -3
package/dist/index.js
CHANGED
|
@@ -31,20 +31,27 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
31
31
|
var src_exports = {};
|
|
32
32
|
__export(src_exports, {
|
|
33
33
|
AddMoreTable: () => AddMoreTable,
|
|
34
|
+
BarChart: () => BarChart,
|
|
34
35
|
ButtonElement: () => ButtonElement,
|
|
35
36
|
CheckboxElement: () => CheckboxElement,
|
|
37
|
+
CircleDonut: () => CircleDonut,
|
|
36
38
|
CkEditor: () => CkEditor,
|
|
37
39
|
DatePickerElement: () => DatePickerElement,
|
|
38
40
|
DateRangePickerElement: () => DateRangePickerElement,
|
|
41
|
+
DoubleBarChart: () => DoubleBarChart,
|
|
39
42
|
DropDownGroup: () => DropDownGroup,
|
|
40
43
|
FileUpload: () => FileUpload,
|
|
44
|
+
HorizontalBarChart: () => HorizontalBarChart,
|
|
41
45
|
Image: () => Image,
|
|
46
|
+
LineChart: () => LineChart,
|
|
42
47
|
MultipleSelectElement: () => MultipleSelectElement,
|
|
43
48
|
Navbar: () => Navbar,
|
|
44
49
|
NumberElement: () => NumberElement,
|
|
50
|
+
OtpElement: () => OtpElement,
|
|
45
51
|
PasswordElement: () => PasswordElement,
|
|
46
52
|
RadioElement: () => RadioElement,
|
|
47
53
|
SelectElement: () => SelectElement,
|
|
54
|
+
SemiCircleDonut: () => SemiCircleDonut,
|
|
48
55
|
Sidebar: () => Sidebar,
|
|
49
56
|
SingleCheckbox: () => SingleCheckbox,
|
|
50
57
|
SingleSelectElement: () => SingleSelectElement,
|
|
@@ -52,7 +59,8 @@ __export(src_exports, {
|
|
|
52
59
|
TableElement: () => TableElement,
|
|
53
60
|
TabsElement: () => TabsElement,
|
|
54
61
|
TextElement: () => TextElement,
|
|
55
|
-
TextareaElement: () => TextareaElement
|
|
62
|
+
TextareaElement: () => TextareaElement,
|
|
63
|
+
Upload: () => Upload2
|
|
56
64
|
});
|
|
57
65
|
module.exports = __toCommonJS(src_exports);
|
|
58
66
|
|
|
@@ -71,6 +79,7 @@ var TextElement = (props) => {
|
|
|
71
79
|
placeholder: props.placeholder,
|
|
72
80
|
allowClear: true,
|
|
73
81
|
id: props.name,
|
|
82
|
+
value: props.value,
|
|
74
83
|
prefix: props.prefix,
|
|
75
84
|
type: props.type,
|
|
76
85
|
status: props.status,
|
|
@@ -130,8 +139,7 @@ var NumberElement = (props) => {
|
|
|
130
139
|
{
|
|
131
140
|
placeholder: props.placeholder,
|
|
132
141
|
addonBefore: props.addonBefore,
|
|
133
|
-
|
|
134
|
-
defaultValue: props.defaultValue,
|
|
142
|
+
value: props.value,
|
|
135
143
|
disabled: props.disabled,
|
|
136
144
|
id: props.name,
|
|
137
145
|
prefix: props.prefix,
|
|
@@ -379,11 +387,14 @@ var ButtonElement = (props) => {
|
|
|
379
387
|
return /* @__PURE__ */ import_react11.default.createElement(
|
|
380
388
|
"button",
|
|
381
389
|
{
|
|
382
|
-
onClick:
|
|
383
|
-
className: `${props.className ? props.className : ""}
|
|
390
|
+
onClick: props.onClick,
|
|
391
|
+
className: `${props.className ? props.className : ""}`,
|
|
392
|
+
disabled: props.loading,
|
|
393
|
+
style: {
|
|
394
|
+
cursor: props.loading ? "no-drop" : "pointer"
|
|
395
|
+
}
|
|
384
396
|
},
|
|
385
|
-
|
|
386
|
-
props.label
|
|
397
|
+
/* @__PURE__ */ import_react11.default.createElement(import_react11.default.Fragment, null, /* @__PURE__ */ import_react11.default.createElement("span", { className: props.iconsClassName }, /* @__PURE__ */ import_react11.default.createElement("img", { src: props.icon, className: "icon-active" })), props.label)
|
|
387
398
|
);
|
|
388
399
|
};
|
|
389
400
|
|
|
@@ -525,10 +536,19 @@ var Sidebar = (props) => {
|
|
|
525
536
|
props.onChange(item);
|
|
526
537
|
}
|
|
527
538
|
};
|
|
528
|
-
return /* @__PURE__ */ import_react13.default.createElement(
|
|
529
|
-
return /* @__PURE__ */ import_react13.default.createElement(
|
|
530
|
-
|
|
531
|
-
|
|
539
|
+
return /* @__PURE__ */ import_react13.default.createElement(import_react13.default.Fragment, { key: props.name }, /* @__PURE__ */ import_react13.default.createElement("div", { className: props.imgClassName }, /* @__PURE__ */ import_react13.default.createElement("img", { src: props.img, alt: "logo" })), /* @__PURE__ */ import_react13.default.createElement("div", { className: props.listClassName }, props.items?.map((item) => {
|
|
540
|
+
return /* @__PURE__ */ import_react13.default.createElement(import_react13.default.Fragment, { key: item.label }, /* @__PURE__ */ import_react13.default.createElement(
|
|
541
|
+
ButtonElement,
|
|
542
|
+
{
|
|
543
|
+
...item,
|
|
544
|
+
className: item.active ? props.activeClassName : props.className,
|
|
545
|
+
iconsClassName: props.iconsClassName,
|
|
546
|
+
onClick: (e) => {
|
|
547
|
+
e.preventDefault();
|
|
548
|
+
handleChange(item);
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
));
|
|
532
552
|
})));
|
|
533
553
|
};
|
|
534
554
|
|
|
@@ -602,18 +622,48 @@ var import_antd13 = require("antd");
|
|
|
602
622
|
|
|
603
623
|
// src/Components/ModelBody.tsx
|
|
604
624
|
var import_react18 = __toESM(require("react"));
|
|
625
|
+
var import_moment = __toESM(require("moment"));
|
|
605
626
|
var ModelBody = (props) => {
|
|
606
|
-
return /* @__PURE__ */ import_react18.default.createElement("div", { className: props.modalContent && props.modalContent.className }, props.modalContent && props.modalContent.fields.map(
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
627
|
+
return /* @__PURE__ */ import_react18.default.createElement("div", { className: props.modalContent && props.modalContent.className }, props.modalContent && props.modalContent.fields.map(
|
|
628
|
+
(eachField) => {
|
|
629
|
+
if (eachField.element === "div") {
|
|
630
|
+
return /* @__PURE__ */ import_react18.default.createElement(import_react18.default.Fragment, null, /* @__PURE__ */ import_react18.default.createElement("div", { className: eachField.className }, eachField.label), eachField.dateTime ? /* @__PURE__ */ import_react18.default.createElement(
|
|
631
|
+
"p",
|
|
632
|
+
{
|
|
633
|
+
style: {
|
|
634
|
+
fontSize: "10px",
|
|
635
|
+
textAlign: eachField.source === "bot" ? "left" : "right"
|
|
636
|
+
}
|
|
637
|
+
},
|
|
638
|
+
(0, import_moment.default)(eachField.dateTime).format("LT")
|
|
639
|
+
) : "");
|
|
640
|
+
} else if (eachField.element === "input-radio") {
|
|
641
|
+
return /* @__PURE__ */ import_react18.default.createElement(import_react18.default.Fragment, null, /* @__PURE__ */ import_react18.default.createElement("div", { className: eachField.className }, /* @__PURE__ */ import_react18.default.createElement(RadioElement, { ...eachField })), eachField.dateTime ? /* @__PURE__ */ import_react18.default.createElement(
|
|
642
|
+
"p",
|
|
643
|
+
{
|
|
644
|
+
style: {
|
|
645
|
+
fontSize: "10px",
|
|
646
|
+
textAlign: eachField.source === "bot" ? "left" : "right"
|
|
647
|
+
}
|
|
648
|
+
},
|
|
649
|
+
(0, import_moment.default)(eachField.dateTime).format("LT")
|
|
650
|
+
) : "");
|
|
651
|
+
} else if (eachField.element === "button") {
|
|
652
|
+
return /* @__PURE__ */ import_react18.default.createElement(import_react18.default.Fragment, null, /* @__PURE__ */ import_react18.default.createElement("div", { className: eachField.className }, /* @__PURE__ */ import_react18.default.createElement(ButtonElement, { ...eachField })), eachField.dateTime ? /* @__PURE__ */ import_react18.default.createElement(
|
|
653
|
+
"p",
|
|
654
|
+
{
|
|
655
|
+
style: {
|
|
656
|
+
fontSize: "10px",
|
|
657
|
+
textAlign: eachField.source === "bot" ? "left" : "right"
|
|
658
|
+
}
|
|
659
|
+
},
|
|
660
|
+
(0, import_moment.default)(eachField.dateTime).format("LT")
|
|
661
|
+
) : "");
|
|
662
|
+
} else {
|
|
663
|
+
return null;
|
|
664
|
+
}
|
|
615
665
|
}
|
|
616
|
-
|
|
666
|
+
));
|
|
617
667
|
};
|
|
618
668
|
|
|
619
669
|
// src/Components/Model.tsx
|
|
@@ -638,9 +688,22 @@ var ModelElement = (props) => {
|
|
|
638
688
|
margin: "-10px"
|
|
639
689
|
}
|
|
640
690
|
},
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
691
|
+
columns.map((eachColumn) => {
|
|
692
|
+
if (!["index", "View"].includes(eachColumn.key) && eachColumn?.["is_detail"] !== false) {
|
|
693
|
+
return /* @__PURE__ */ import_react19.default.createElement("p", { style: { fontWeight: "500", padding: "10px" } }, /* @__PURE__ */ import_react19.default.createElement(
|
|
694
|
+
"span",
|
|
695
|
+
{
|
|
696
|
+
style: {
|
|
697
|
+
fontWeight: "200",
|
|
698
|
+
color: "gray",
|
|
699
|
+
paddingRight: "10px"
|
|
700
|
+
}
|
|
701
|
+
},
|
|
702
|
+
eachColumn.title
|
|
703
|
+
), selectedRecord[eachColumn.key] !== "" ? selectedRecord[eachColumn.key] : "--");
|
|
704
|
+
} else {
|
|
705
|
+
return null;
|
|
706
|
+
}
|
|
644
707
|
})
|
|
645
708
|
)
|
|
646
709
|
},
|
|
@@ -649,15 +712,30 @@ var ModelElement = (props) => {
|
|
|
649
712
|
};
|
|
650
713
|
|
|
651
714
|
// src/Components/TableElement.tsx
|
|
715
|
+
var import_icons4 = require("@ant-design/icons");
|
|
652
716
|
var TableElement = (props) => {
|
|
653
717
|
const { thead, tbody } = props;
|
|
654
718
|
const [selectedRecord, setSelectedRecord] = (0, import_react20.useState)({});
|
|
655
719
|
const [model, setModel] = (0, import_react20.useState)(false);
|
|
656
|
-
const [
|
|
720
|
+
const [dataSource, setDataSource] = (0, import_react20.useState)([]);
|
|
721
|
+
console.log(props.value);
|
|
722
|
+
const defaultVal = props.value;
|
|
723
|
+
(0, import_react20.useEffect)(() => {
|
|
724
|
+
if (tbody) {
|
|
725
|
+
setDataSource(
|
|
726
|
+
tbody.map((row, index) => ({
|
|
727
|
+
...row,
|
|
728
|
+
key: index,
|
|
729
|
+
index: index + 1
|
|
730
|
+
}))
|
|
731
|
+
);
|
|
732
|
+
}
|
|
733
|
+
}, [tbody]);
|
|
657
734
|
const handleChange = (record) => {
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
735
|
+
if (record) {
|
|
736
|
+
props.onChange && props.onChange(record);
|
|
737
|
+
} else {
|
|
738
|
+
props.onChange && props.onChange(defaultVal);
|
|
661
739
|
}
|
|
662
740
|
};
|
|
663
741
|
let columns = [];
|
|
@@ -665,106 +743,153 @@ var TableElement = (props) => {
|
|
|
665
743
|
columns = [
|
|
666
744
|
{
|
|
667
745
|
title: "#",
|
|
668
|
-
dataIndex: "
|
|
669
|
-
key: "
|
|
746
|
+
dataIndex: "index",
|
|
747
|
+
key: "index",
|
|
748
|
+
fixed: "left"
|
|
670
749
|
},
|
|
671
750
|
...thead.map((col, ind) => ({
|
|
672
751
|
title: col.label,
|
|
673
752
|
dataIndex: col.name,
|
|
674
753
|
key: col.key,
|
|
754
|
+
ellipsis: col.ellipsis,
|
|
675
755
|
render: col.render,
|
|
676
756
|
sorter: {
|
|
677
757
|
compare: (a, b) => {
|
|
678
|
-
if (typeof a[col.key] === "number" && typeof
|
|
758
|
+
if (typeof a[col.key] === "number" && typeof b[col.key] === "number") {
|
|
679
759
|
return a[col.key] - b[col.key];
|
|
680
|
-
} else if (typeof a[col.key] === "string" && typeof
|
|
760
|
+
} else if (typeof a[col.key] === "string" && typeof b[col.key] === "string") {
|
|
681
761
|
return a[col.key].localeCompare(b[col.key]);
|
|
682
762
|
}
|
|
683
763
|
}
|
|
684
764
|
}
|
|
685
|
-
}))
|
|
686
|
-
|
|
765
|
+
}))
|
|
766
|
+
];
|
|
767
|
+
if (props.view) {
|
|
768
|
+
columns.push({
|
|
687
769
|
title: "View",
|
|
688
770
|
dataIndex: "View",
|
|
689
771
|
key: "View",
|
|
690
|
-
render: (_, record) =>
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
772
|
+
render: (_, record) => {
|
|
773
|
+
return /* @__PURE__ */ import_react20.default.createElement(
|
|
774
|
+
"a",
|
|
775
|
+
{
|
|
776
|
+
onClick: () => {
|
|
777
|
+
if (props.view) {
|
|
778
|
+
setSelectedRecord(record);
|
|
779
|
+
handleChange(record);
|
|
780
|
+
setModel(true);
|
|
781
|
+
}
|
|
782
|
+
}
|
|
783
|
+
},
|
|
784
|
+
/* @__PURE__ */ import_react20.default.createElement(import_icons4.EyeOutlined, null)
|
|
785
|
+
);
|
|
786
|
+
}
|
|
787
|
+
});
|
|
788
|
+
}
|
|
703
789
|
}
|
|
704
|
-
const
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
790
|
+
const onChangeTable = (pagination, filters, sorter, extra) => {
|
|
791
|
+
if (extra && extra.currentDataSource) {
|
|
792
|
+
setDataSource(
|
|
793
|
+
extra.currentDataSource.map((row, index) => ({
|
|
794
|
+
...row,
|
|
795
|
+
index: index + 1
|
|
796
|
+
}))
|
|
797
|
+
);
|
|
798
|
+
}
|
|
799
|
+
};
|
|
709
800
|
const onChangePage = (page, pageSize) => {
|
|
710
801
|
if (props.onChange) {
|
|
711
802
|
props.onChange({ name: "pagination", page, pageSize });
|
|
712
803
|
}
|
|
713
804
|
};
|
|
714
|
-
const onSelectChange = (newSelectedRowKeys) => {
|
|
715
|
-
console.log("selectedRowKeys changed: ", newSelectedRowKeys);
|
|
716
|
-
setSelectedRowKeys(newSelectedRowKeys);
|
|
717
|
-
};
|
|
718
805
|
const rowSelectionConfig = props.rowSelection ? {
|
|
719
|
-
selectedRowKeys,
|
|
720
|
-
|
|
806
|
+
onChange: (selectedRowKeys, selectedRows) => {
|
|
807
|
+
console.log(
|
|
808
|
+
`selectedRowKeys: ${selectedRowKeys}`,
|
|
809
|
+
"selectedRows: ",
|
|
810
|
+
selectedRows
|
|
811
|
+
);
|
|
812
|
+
if (props.onChange) {
|
|
813
|
+
props.onChange(selectedRows);
|
|
814
|
+
}
|
|
815
|
+
}
|
|
721
816
|
} : void 0;
|
|
722
817
|
return /* @__PURE__ */ import_react20.default.createElement(import_react20.default.Fragment, null, /* @__PURE__ */ import_react20.default.createElement(
|
|
723
818
|
import_antd14.Table,
|
|
724
819
|
{
|
|
725
|
-
|
|
820
|
+
loading: props.loading,
|
|
821
|
+
className: props.className,
|
|
822
|
+
pagination: props.pagination ? {
|
|
823
|
+
defaultCurrent: props.value && props.value.page,
|
|
726
824
|
showTotal: (total) => `Total: ${total} items`,
|
|
727
|
-
total: count,
|
|
728
|
-
showSizeChanger: count > 10,
|
|
825
|
+
total: props.count,
|
|
826
|
+
showSizeChanger: props.count ? props.count > 10 : 0 > 10,
|
|
729
827
|
onChange: onChangePage
|
|
828
|
+
} : false,
|
|
829
|
+
onRow: (record) => {
|
|
830
|
+
return {
|
|
831
|
+
onClick: () => {
|
|
832
|
+
if (props.view) {
|
|
833
|
+
setSelectedRecord(record);
|
|
834
|
+
handleChange(record);
|
|
835
|
+
setModel(true);
|
|
836
|
+
}
|
|
837
|
+
},
|
|
838
|
+
style: { cursor: "pointer" }
|
|
839
|
+
};
|
|
730
840
|
},
|
|
841
|
+
rowSelection: rowSelectionConfig,
|
|
731
842
|
dataSource,
|
|
732
843
|
columns,
|
|
844
|
+
size: props.size,
|
|
733
845
|
bordered: true,
|
|
734
|
-
|
|
735
|
-
|
|
846
|
+
onChange: onChangeTable
|
|
847
|
+
}
|
|
848
|
+
), model && /* @__PURE__ */ import_react20.default.createElement(
|
|
849
|
+
ModelElement,
|
|
850
|
+
{
|
|
851
|
+
selectedRecord,
|
|
852
|
+
...props,
|
|
853
|
+
columns,
|
|
854
|
+
model,
|
|
855
|
+
onCancel: () => setModel(false)
|
|
736
856
|
}
|
|
737
|
-
)
|
|
857
|
+
));
|
|
738
858
|
};
|
|
739
859
|
|
|
740
860
|
// src/Components/DatePicker.tsx
|
|
741
861
|
var import_react21 = __toESM(require("react"));
|
|
742
862
|
var import_antd15 = require("antd");
|
|
863
|
+
var import_dayjs = __toESM(require("dayjs"));
|
|
864
|
+
var import_customParseFormat = __toESM(require("dayjs/plugin/customParseFormat.js"));
|
|
865
|
+
var import_moment2 = __toESM(require("moment"));
|
|
866
|
+
import_dayjs.default.extend(import_customParseFormat.default);
|
|
743
867
|
var DatePickerElement = (props) => {
|
|
744
|
-
const [
|
|
745
|
-
const
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
console.log("date==", date2);
|
|
750
|
-
const formattedDate = date2.format(dateFormat);
|
|
751
|
-
setDate(date2);
|
|
868
|
+
const [dateState, setDateState] = (0, import_react21.useState)("");
|
|
869
|
+
const handleChange = (date, dateString) => {
|
|
870
|
+
if (date) {
|
|
871
|
+
const formattedDate = dateString;
|
|
872
|
+
setDateState(date);
|
|
752
873
|
if (props.onChange) {
|
|
753
874
|
props.onChange(formattedDate);
|
|
754
875
|
}
|
|
755
876
|
} else {
|
|
756
|
-
|
|
877
|
+
setDateState("");
|
|
757
878
|
if (props.onChange) {
|
|
758
879
|
props.onChange("");
|
|
759
880
|
}
|
|
760
881
|
}
|
|
761
882
|
};
|
|
883
|
+
const disabledDate = (current) => {
|
|
884
|
+
return current && current > (0, import_moment2.default)();
|
|
885
|
+
};
|
|
762
886
|
return /* @__PURE__ */ import_react21.default.createElement("div", null, /* @__PURE__ */ import_react21.default.createElement(
|
|
763
887
|
import_antd15.DatePicker,
|
|
764
888
|
{
|
|
889
|
+
disabledDate,
|
|
765
890
|
placeholder: props.placeholder,
|
|
766
|
-
value:
|
|
767
|
-
|
|
891
|
+
value: dateState,
|
|
892
|
+
format: { format: "DD-MM-YYYY" },
|
|
768
893
|
onChange: handleChange
|
|
769
894
|
}
|
|
770
895
|
));
|
|
@@ -773,29 +898,51 @@ var DatePickerElement = (props) => {
|
|
|
773
898
|
// src/Components/DateRangePickerElement.tsx
|
|
774
899
|
var import_react22 = __toESM(require("react"));
|
|
775
900
|
var import_antd16 = require("antd");
|
|
776
|
-
var
|
|
901
|
+
var import_dayjs2 = __toESM(require("dayjs"));
|
|
902
|
+
var import_moment3 = __toESM(require("moment"));
|
|
777
903
|
var DateRangePickerElement = (props) => {
|
|
904
|
+
const { value } = props;
|
|
778
905
|
const { RangePicker } = import_antd16.DatePicker;
|
|
779
906
|
const handleChange = (dates, dateStrings) => {
|
|
780
|
-
|
|
781
|
-
|
|
907
|
+
console.log(dateStrings);
|
|
908
|
+
if (dates) {
|
|
909
|
+
const formattedDate = [];
|
|
910
|
+
formattedDate.push((0, import_moment3.default)(dateStrings[0]).format("DD-MM-YYYY"));
|
|
911
|
+
formattedDate.push((0, import_moment3.default)(dateStrings[1]).format("DD-MM-YYYY"));
|
|
912
|
+
console.log("formattedDate", formattedDate);
|
|
913
|
+
props.onChange && props.onChange(formattedDate);
|
|
782
914
|
} else {
|
|
783
|
-
|
|
915
|
+
props.onChange && props.onChange(["", ""]);
|
|
784
916
|
}
|
|
785
917
|
};
|
|
786
918
|
const rangePresets = [
|
|
787
|
-
{ label: "Last 7 Days", value: [(0,
|
|
788
|
-
{ label: "Last 14 Days", value: [(0,
|
|
789
|
-
{ label: "Last 30 Days", value: [(0,
|
|
790
|
-
{ label: "Last 90 Days", value: [(0,
|
|
919
|
+
{ label: "Last 7 Days", value: [(0, import_dayjs2.default)().add(-7, "d"), (0, import_dayjs2.default)()] },
|
|
920
|
+
{ label: "Last 14 Days", value: [(0, import_dayjs2.default)().add(-14, "d"), (0, import_dayjs2.default)()] },
|
|
921
|
+
{ label: "Last 30 Days", value: [(0, import_dayjs2.default)().add(-30, "d"), (0, import_dayjs2.default)()] },
|
|
922
|
+
{ label: "Last 90 Days", value: [(0, import_dayjs2.default)().add(-90, "d"), (0, import_dayjs2.default)()] }
|
|
791
923
|
];
|
|
792
|
-
|
|
924
|
+
const disabledDate = (current) => {
|
|
925
|
+
return current && current > (0, import_dayjs2.default)();
|
|
926
|
+
};
|
|
927
|
+
return /* @__PURE__ */ import_react22.default.createElement(import_antd16.Space, { direction: "vertical", size: 12 }, /* @__PURE__ */ import_react22.default.createElement(
|
|
928
|
+
RangePicker,
|
|
929
|
+
{
|
|
930
|
+
disabledDate,
|
|
931
|
+
presets: rangePresets,
|
|
932
|
+
format: { format: "DD-MM-YYYY" },
|
|
933
|
+
onChange: handleChange,
|
|
934
|
+
value: value && value.length === 2 && [
|
|
935
|
+
(0, import_dayjs2.default)(value[0], "DD-MM-YYYY"),
|
|
936
|
+
(0, import_dayjs2.default)(value[1], "DD-MM-YYYY")
|
|
937
|
+
]
|
|
938
|
+
}
|
|
939
|
+
));
|
|
793
940
|
};
|
|
794
941
|
|
|
795
942
|
// src/Components/Image.tsx
|
|
796
943
|
var import_react23 = __toESM(require("react"));
|
|
797
944
|
var Image = (props) => {
|
|
798
|
-
return /* @__PURE__ */ import_react23.default.createElement("
|
|
945
|
+
return /* @__PURE__ */ import_react23.default.createElement("img", { className: props.className, src: props.img, alt: "image" });
|
|
799
946
|
};
|
|
800
947
|
|
|
801
948
|
// src/Components/SingleCheckbox.tsx
|
|
@@ -814,60 +961,64 @@ var SingleCheckbox = (props) => {
|
|
|
814
961
|
var import_react25 = __toESM(require("react"));
|
|
815
962
|
var import_antd18 = require("antd");
|
|
816
963
|
var DropDownGroup = (props) => {
|
|
817
|
-
const [selectedValue, setSelectedValue] = (0, import_react25.useState)({
|
|
818
|
-
|
|
964
|
+
const [selectedValue, setSelectedValue] = (0, import_react25.useState)({
|
|
965
|
+
firstValue: {},
|
|
966
|
+
secondValue: {},
|
|
967
|
+
temp: ""
|
|
968
|
+
});
|
|
819
969
|
const handleFirstChange = (value) => {
|
|
820
|
-
|
|
970
|
+
console.log(selectedValue.temp);
|
|
971
|
+
const filterOption2 = props.firstOptions?.find(
|
|
972
|
+
(eachOption) => eachOption.value === value
|
|
973
|
+
);
|
|
821
974
|
setSelectedValue((prev) => {
|
|
822
975
|
const newValue = { ...prev, firstValue: filterOption2 };
|
|
976
|
+
const { temp, ...rest } = newValue;
|
|
823
977
|
if (newValue.firstValue) {
|
|
824
|
-
props.onChange?.(
|
|
978
|
+
props.onChange?.(rest);
|
|
825
979
|
}
|
|
826
980
|
return newValue;
|
|
827
981
|
});
|
|
828
982
|
};
|
|
829
983
|
const handleSecondChange = (value) => {
|
|
830
|
-
const filterOption2 = props.secondOptions?.find(
|
|
984
|
+
const filterOption2 = props.secondOptions?.find(
|
|
985
|
+
(eachOption) => eachOption.value === value
|
|
986
|
+
);
|
|
831
987
|
setSelectedValue((prev) => {
|
|
832
988
|
const newValue = { ...prev, secondValue: filterOption2 };
|
|
989
|
+
const { temp, ...rest } = newValue;
|
|
833
990
|
if (newValue.secondValue) {
|
|
834
|
-
props.onChange?.(
|
|
991
|
+
props.onChange?.(rest);
|
|
835
992
|
}
|
|
836
993
|
return newValue;
|
|
837
994
|
});
|
|
838
995
|
};
|
|
839
|
-
return /* @__PURE__ */ import_react25.default.createElement("div", { className: props.
|
|
996
|
+
return /* @__PURE__ */ import_react25.default.createElement("div", { className: props.containerClassName }, props.label && /* @__PURE__ */ import_react25.default.createElement("label", { htmlFor: props.name, className: props.labelClassName }, props.label), /* @__PURE__ */ import_react25.default.createElement("div", { className: props.subContainerClassName }, /* @__PURE__ */ import_react25.default.createElement(
|
|
840
997
|
import_antd18.Select,
|
|
841
998
|
{
|
|
842
999
|
onChange: handleFirstChange,
|
|
843
1000
|
variant: props.variant,
|
|
844
|
-
options: props.firstOptions
|
|
1001
|
+
options: props.firstOptions,
|
|
1002
|
+
className: props.className
|
|
845
1003
|
}
|
|
846
1004
|
), /* @__PURE__ */ import_react25.default.createElement("div", { style: { borderLeft: "1px solid gray", height: "33px" } }), /* @__PURE__ */ import_react25.default.createElement(
|
|
847
1005
|
import_antd18.Select,
|
|
848
1006
|
{
|
|
849
1007
|
onChange: handleSecondChange,
|
|
850
1008
|
variant: props.variant,
|
|
851
|
-
options: props.secondOptions
|
|
1009
|
+
options: props.secondOptions,
|
|
1010
|
+
className: props.className
|
|
852
1011
|
}
|
|
853
|
-
));
|
|
1012
|
+
)));
|
|
854
1013
|
};
|
|
855
1014
|
|
|
856
1015
|
// src/Components/FilesUpload.tsx
|
|
857
1016
|
var import_react26 = __toESM(require("react"));
|
|
858
1017
|
var import_antd19 = require("antd");
|
|
859
|
-
var
|
|
1018
|
+
var import_icons5 = require("@ant-design/icons");
|
|
860
1019
|
var FileUpload = (props) => {
|
|
861
1020
|
const { Dragger } = import_antd19.Upload;
|
|
862
1021
|
const [files, setFiles] = (0, import_react26.useState)([]);
|
|
863
|
-
const beforeUpload = (file) => {
|
|
864
|
-
const isCorrectFile = ["image/*", "video/*", "application/*"].includes(file.type);
|
|
865
|
-
if (!isCorrectFile) {
|
|
866
|
-
import_antd19.message.error(`(${file.name}) is an invalid file. Please upload files with the following extensions only (.png/.jpg/.jpeg/.pdf)`);
|
|
867
|
-
return import_antd19.Upload.LIST_IGNORE;
|
|
868
|
-
}
|
|
869
|
-
return true;
|
|
870
|
-
};
|
|
871
1022
|
const handleChange = ({ fileList }) => {
|
|
872
1023
|
setFiles(fileList);
|
|
873
1024
|
if (props.onChange) {
|
|
@@ -891,12 +1042,11 @@ var FileUpload = (props) => {
|
|
|
891
1042
|
maxCount: props.max_count,
|
|
892
1043
|
multiple: props.multiple,
|
|
893
1044
|
fileList: files,
|
|
894
|
-
beforeUpload,
|
|
895
1045
|
onChange: handleChange,
|
|
896
1046
|
showUploadList: true,
|
|
897
1047
|
customRequest
|
|
898
1048
|
},
|
|
899
|
-
/* @__PURE__ */ import_react26.default.createElement("p", null, /* @__PURE__ */ import_react26.default.createElement(
|
|
1049
|
+
/* @__PURE__ */ import_react26.default.createElement("p", null, /* @__PURE__ */ import_react26.default.createElement(import_icons5.InboxOutlined, null)),
|
|
900
1050
|
/* @__PURE__ */ import_react26.default.createElement("p", null, "Click or drag file to upload")
|
|
901
1051
|
));
|
|
902
1052
|
};
|
|
@@ -920,23 +1070,546 @@ var onChange = (checked) => {
|
|
|
920
1070
|
console.log(`switch to ${checked}`);
|
|
921
1071
|
};
|
|
922
1072
|
var SwitchElement = () => /* @__PURE__ */ import_react28.default.createElement(import_antd21.Switch, { defaultChecked: true, onChange });
|
|
1073
|
+
|
|
1074
|
+
// src/Components/Upload.tsx
|
|
1075
|
+
var import_react29 = __toESM(require("react"));
|
|
1076
|
+
var Upload2 = (props) => {
|
|
1077
|
+
const [file, setFile] = (0, import_react29.useState)();
|
|
1078
|
+
const handleFileChange = (e) => {
|
|
1079
|
+
setFile(e.target.files[0]);
|
|
1080
|
+
if (props.onChange) {
|
|
1081
|
+
props.onChange(e.target.files[0]);
|
|
1082
|
+
}
|
|
1083
|
+
};
|
|
1084
|
+
const handleUpload = async () => {
|
|
1085
|
+
if (!file) {
|
|
1086
|
+
console.error("No file selected");
|
|
1087
|
+
return;
|
|
1088
|
+
}
|
|
1089
|
+
};
|
|
1090
|
+
return /* @__PURE__ */ import_react29.default.createElement("div", { style: { marginTop: 16 } }, /* @__PURE__ */ import_react29.default.createElement("input", { type: "file", onChange: handleFileChange }), /* @__PURE__ */ import_react29.default.createElement(
|
|
1091
|
+
"button",
|
|
1092
|
+
{
|
|
1093
|
+
type: "button",
|
|
1094
|
+
onClick: handleUpload,
|
|
1095
|
+
disabled: !file,
|
|
1096
|
+
style: { marginTop: 16 }
|
|
1097
|
+
},
|
|
1098
|
+
"Upload"
|
|
1099
|
+
));
|
|
1100
|
+
};
|
|
1101
|
+
|
|
1102
|
+
// src/Components/OtpElement.tsx
|
|
1103
|
+
var import_react30 = __toESM(require("react"));
|
|
1104
|
+
var import_antd22 = require("antd");
|
|
1105
|
+
var OtpElement = (props) => {
|
|
1106
|
+
const length = props.length;
|
|
1107
|
+
const [otp, setOtp] = (0, import_react30.useState)(Array(length).fill(""));
|
|
1108
|
+
const inputRefs = (0, import_react30.useRef)([]);
|
|
1109
|
+
const handleChange = (e, index) => {
|
|
1110
|
+
const value = e.target.value;
|
|
1111
|
+
if (/^[0-9]$/.test(value) || value === "") {
|
|
1112
|
+
const newOtp = [...otp];
|
|
1113
|
+
newOtp[index] = value;
|
|
1114
|
+
setOtp(newOtp);
|
|
1115
|
+
props.onChange && props.onChange(newOtp.join(""));
|
|
1116
|
+
if (value && index < length - 1) {
|
|
1117
|
+
inputRefs.current[index + 1]?.focus();
|
|
1118
|
+
}
|
|
1119
|
+
}
|
|
1120
|
+
};
|
|
1121
|
+
const handleKeyDown = (e, index) => {
|
|
1122
|
+
if (e.key === "Backspace" && !otp[index] && index > 0) {
|
|
1123
|
+
inputRefs.current[index - 1]?.focus();
|
|
1124
|
+
}
|
|
1125
|
+
};
|
|
1126
|
+
const handlePaste = (e) => {
|
|
1127
|
+
e.preventDefault();
|
|
1128
|
+
const pasteData = e.clipboardData.getData("text");
|
|
1129
|
+
if (/^\d+$/.test(pasteData)) {
|
|
1130
|
+
const newOtp = pasteData.split("").slice(0, length);
|
|
1131
|
+
setOtp(newOtp.concat(Array(length - newOtp.length).fill("")));
|
|
1132
|
+
props.onChange && props.onChange(newOtp.join(""));
|
|
1133
|
+
newOtp.forEach((_, idx) => {
|
|
1134
|
+
if (inputRefs.current[idx]) {
|
|
1135
|
+
inputRefs.current[idx]?.focus();
|
|
1136
|
+
}
|
|
1137
|
+
});
|
|
1138
|
+
}
|
|
1139
|
+
};
|
|
1140
|
+
(0, import_react30.useEffect)(() => {
|
|
1141
|
+
inputRefs.current[0]?.focus();
|
|
1142
|
+
}, []);
|
|
1143
|
+
return /* @__PURE__ */ import_react30.default.createElement("div", { className: props.containerClassName }, Array.from({ length }).map((_, index) => /* @__PURE__ */ import_react30.default.createElement(
|
|
1144
|
+
import_antd22.Input,
|
|
1145
|
+
{
|
|
1146
|
+
key: index,
|
|
1147
|
+
className: props.className,
|
|
1148
|
+
maxLength: 1,
|
|
1149
|
+
value: otp[index],
|
|
1150
|
+
onChange: (e) => handleChange(e, index),
|
|
1151
|
+
onKeyDown: (e) => handleKeyDown(e, index),
|
|
1152
|
+
onPaste: handlePaste,
|
|
1153
|
+
ref: (el) => inputRefs.current[index] = el
|
|
1154
|
+
}
|
|
1155
|
+
)));
|
|
1156
|
+
};
|
|
1157
|
+
|
|
1158
|
+
// src/Components/CircleDonut.tsx
|
|
1159
|
+
var import_react31 = __toESM(require("react"));
|
|
1160
|
+
var import_react_chartjs_2 = require("react-chartjs-2");
|
|
1161
|
+
var import_chart = require("chart.js");
|
|
1162
|
+
import_chart.Chart.register(import_chart.DoughnutController, import_chart.ArcElement, import_chart.Tooltip, import_chart.Legend);
|
|
1163
|
+
var CircleDonut = (props) => {
|
|
1164
|
+
const data = {
|
|
1165
|
+
labels: props.labels,
|
|
1166
|
+
datasets: [
|
|
1167
|
+
{
|
|
1168
|
+
label: "Bot Conversation",
|
|
1169
|
+
data: props.data,
|
|
1170
|
+
backgroundColor: [
|
|
1171
|
+
"#FFCB8A",
|
|
1172
|
+
"#CADBBF",
|
|
1173
|
+
"#8AC1BB",
|
|
1174
|
+
"#FCB0CB",
|
|
1175
|
+
"#CEB0FA"
|
|
1176
|
+
],
|
|
1177
|
+
borderWidth: 0
|
|
1178
|
+
}
|
|
1179
|
+
]
|
|
1180
|
+
};
|
|
1181
|
+
const options = {
|
|
1182
|
+
responsive: true,
|
|
1183
|
+
cutout: "80%",
|
|
1184
|
+
plugins: {
|
|
1185
|
+
legend: {
|
|
1186
|
+
position: "left",
|
|
1187
|
+
labels: {
|
|
1188
|
+
font: {
|
|
1189
|
+
size: 10
|
|
1190
|
+
},
|
|
1191
|
+
boxWidth: 15,
|
|
1192
|
+
generateLabels: (chart) => {
|
|
1193
|
+
const dataset = chart.data.datasets[0];
|
|
1194
|
+
return chart.data.labels.map((label, index) => {
|
|
1195
|
+
const value = dataset.data[index];
|
|
1196
|
+
return {
|
|
1197
|
+
text: `${label}: ${value}`,
|
|
1198
|
+
fillStyle: dataset.backgroundColor[index]
|
|
1199
|
+
};
|
|
1200
|
+
});
|
|
1201
|
+
}
|
|
1202
|
+
}
|
|
1203
|
+
},
|
|
1204
|
+
tooltip: {
|
|
1205
|
+
enabled: true,
|
|
1206
|
+
callbacks: {
|
|
1207
|
+
label: function(context) {
|
|
1208
|
+
const label = context.label || "";
|
|
1209
|
+
const value = context.raw || 0;
|
|
1210
|
+
return `${label}: ${value}`;
|
|
1211
|
+
}
|
|
1212
|
+
}
|
|
1213
|
+
}
|
|
1214
|
+
}
|
|
1215
|
+
};
|
|
1216
|
+
const centerTextPlugin = {
|
|
1217
|
+
id: "centerText",
|
|
1218
|
+
beforeDraw: (chart) => {
|
|
1219
|
+
const { ctx, chartArea: { left, right, top, bottom } } = chart;
|
|
1220
|
+
const width = right - left;
|
|
1221
|
+
const height = bottom - top;
|
|
1222
|
+
const centerX = left + width / 2;
|
|
1223
|
+
const centerY = top + height / 2;
|
|
1224
|
+
ctx.save();
|
|
1225
|
+
ctx.font = "7px Arial";
|
|
1226
|
+
ctx.fillStyle = "blue";
|
|
1227
|
+
ctx.textAlign = "center";
|
|
1228
|
+
ctx.textBaseline = "middle";
|
|
1229
|
+
ctx.fillText("Total Sessions", centerX, centerY - 10);
|
|
1230
|
+
ctx.font = "25px Arial";
|
|
1231
|
+
ctx.fillStyle = "black";
|
|
1232
|
+
ctx.fillText("85", centerX, centerY + 20);
|
|
1233
|
+
ctx.restore();
|
|
1234
|
+
}
|
|
1235
|
+
};
|
|
1236
|
+
return /* @__PURE__ */ import_react31.default.createElement("div", { className: props.className }, /* @__PURE__ */ import_react31.default.createElement("h1", { className: props.labelClassName }, props.label), /* @__PURE__ */ import_react31.default.createElement(import_react_chartjs_2.Doughnut, { data, options, plugins: [centerTextPlugin] }));
|
|
1237
|
+
};
|
|
1238
|
+
|
|
1239
|
+
// src/Components/SemiCircleDonut.tsx
|
|
1240
|
+
var import_react32 = __toESM(require("react"));
|
|
1241
|
+
var import_react_chartjs_22 = require("react-chartjs-2");
|
|
1242
|
+
var import_chart2 = require("chart.js");
|
|
1243
|
+
import_chart2.Chart.register(import_chart2.DoughnutController, import_chart2.ArcElement, import_chart2.Tooltip, import_chart2.Legend);
|
|
1244
|
+
var SemiCircleDonut = (props) => {
|
|
1245
|
+
const data = {
|
|
1246
|
+
labels: [
|
|
1247
|
+
"Registration",
|
|
1248
|
+
"Book Appointment",
|
|
1249
|
+
"Diagnostic Tests",
|
|
1250
|
+
"Hospital Facility",
|
|
1251
|
+
"Others, Prescriptions"
|
|
1252
|
+
],
|
|
1253
|
+
datasets: [
|
|
1254
|
+
{
|
|
1255
|
+
label: "Bot Conversation",
|
|
1256
|
+
data: [30, 10, 27, 40, 12],
|
|
1257
|
+
backgroundColor: [
|
|
1258
|
+
"#FFCB8A",
|
|
1259
|
+
"#CADBBF",
|
|
1260
|
+
"#8AC1BB",
|
|
1261
|
+
"#FCB0CB",
|
|
1262
|
+
"#CEB0FA"
|
|
1263
|
+
],
|
|
1264
|
+
borderWidth: 0
|
|
1265
|
+
}
|
|
1266
|
+
]
|
|
1267
|
+
};
|
|
1268
|
+
const options = {
|
|
1269
|
+
responsive: true,
|
|
1270
|
+
circumference: 180,
|
|
1271
|
+
rotation: -90,
|
|
1272
|
+
cutout: "80%",
|
|
1273
|
+
plugins: {
|
|
1274
|
+
legend: {
|
|
1275
|
+
display: false
|
|
1276
|
+
// Disable the legend
|
|
1277
|
+
},
|
|
1278
|
+
tooltip: {
|
|
1279
|
+
enabled: true,
|
|
1280
|
+
callbacks: {
|
|
1281
|
+
label: function(context) {
|
|
1282
|
+
const label = context.label || "";
|
|
1283
|
+
const value = context.raw || 0;
|
|
1284
|
+
return `${label}: ${value}`;
|
|
1285
|
+
}
|
|
1286
|
+
}
|
|
1287
|
+
}
|
|
1288
|
+
}
|
|
1289
|
+
};
|
|
1290
|
+
const centerTextPlugin = {
|
|
1291
|
+
id: "centerText",
|
|
1292
|
+
beforeDraw: (chart) => {
|
|
1293
|
+
const { ctx, chartArea: { left, right, top, bottom } } = chart;
|
|
1294
|
+
const width = right - left;
|
|
1295
|
+
const height = bottom - top;
|
|
1296
|
+
const centerX = left + width / 2;
|
|
1297
|
+
const centerY = top + height / 1.5;
|
|
1298
|
+
const maxWidth = width * 0.8;
|
|
1299
|
+
ctx.save();
|
|
1300
|
+
ctx.fillStyle = "black";
|
|
1301
|
+
ctx.textAlign = "center";
|
|
1302
|
+
ctx.textBaseline = "middle";
|
|
1303
|
+
const drawText = (text, y, fontSize) => {
|
|
1304
|
+
ctx.font = `${fontSize}px Arial`;
|
|
1305
|
+
const textWidth = ctx.measureText(text).width;
|
|
1306
|
+
if (textWidth > maxWidth) {
|
|
1307
|
+
const newFontSize = fontSize * maxWidth / textWidth;
|
|
1308
|
+
ctx.font = `${newFontSize}px Arial`;
|
|
1309
|
+
}
|
|
1310
|
+
ctx.fillText(text, centerX, y);
|
|
1311
|
+
};
|
|
1312
|
+
drawText(props.fillText1, centerY - 10, 16);
|
|
1313
|
+
drawText(props.fillText2, centerY + 20, 8);
|
|
1314
|
+
ctx.restore();
|
|
1315
|
+
}
|
|
1316
|
+
};
|
|
1317
|
+
return /* @__PURE__ */ import_react32.default.createElement("div", { className: props.className }, /* @__PURE__ */ import_react32.default.createElement("h1", { className: props.labelClassName }, props.label), /* @__PURE__ */ import_react32.default.createElement(import_react_chartjs_22.Doughnut, { data, options, plugins: [centerTextPlugin] }));
|
|
1318
|
+
};
|
|
1319
|
+
|
|
1320
|
+
// src/Components/HorizontalBarChart.tsx
|
|
1321
|
+
var import_react33 = __toESM(require("react"));
|
|
1322
|
+
var import_react_chartjs_23 = require("react-chartjs-2");
|
|
1323
|
+
var import_chart3 = require("chart.js");
|
|
1324
|
+
import_chart3.Chart.register(import_chart3.BarElement, import_chart3.CategoryScale, import_chart3.LinearScale, import_chart3.Tooltip);
|
|
1325
|
+
var HorizontalBarChart = (props) => {
|
|
1326
|
+
const data = {
|
|
1327
|
+
labels: ["18-24", "25-34", "35-44", "45-54", "55-64", "65+"],
|
|
1328
|
+
datasets: [
|
|
1329
|
+
{
|
|
1330
|
+
data: [30, 10, 27, 40, 12, 24],
|
|
1331
|
+
backgroundColor: "#6298D5",
|
|
1332
|
+
barThickness: 15
|
|
1333
|
+
}
|
|
1334
|
+
]
|
|
1335
|
+
};
|
|
1336
|
+
const options = {
|
|
1337
|
+
responsive: true,
|
|
1338
|
+
indexAxis: "y",
|
|
1339
|
+
scales: {
|
|
1340
|
+
x: {
|
|
1341
|
+
beginAtZero: true,
|
|
1342
|
+
ticks: {
|
|
1343
|
+
callback: function(value) {
|
|
1344
|
+
return `${value}%`;
|
|
1345
|
+
}
|
|
1346
|
+
}
|
|
1347
|
+
},
|
|
1348
|
+
y: {
|
|
1349
|
+
grid: {
|
|
1350
|
+
display: false
|
|
1351
|
+
}
|
|
1352
|
+
}
|
|
1353
|
+
},
|
|
1354
|
+
plugins: {
|
|
1355
|
+
tooltip: {
|
|
1356
|
+
enabled: true,
|
|
1357
|
+
callbacks: {
|
|
1358
|
+
label: function(context) {
|
|
1359
|
+
const label = context.label || "";
|
|
1360
|
+
const value = context.raw || 0;
|
|
1361
|
+
return `${label}: ${value}`;
|
|
1362
|
+
}
|
|
1363
|
+
}
|
|
1364
|
+
},
|
|
1365
|
+
legend: {
|
|
1366
|
+
display: false
|
|
1367
|
+
}
|
|
1368
|
+
}
|
|
1369
|
+
};
|
|
1370
|
+
return /* @__PURE__ */ import_react33.default.createElement("div", { className: props.className }, /* @__PURE__ */ import_react33.default.createElement("h1", { className: props.labelClassName }, props.label), /* @__PURE__ */ import_react33.default.createElement(import_react_chartjs_23.Bar, { data, options }));
|
|
1371
|
+
};
|
|
1372
|
+
|
|
1373
|
+
// src/Components/LineChart.tsx
|
|
1374
|
+
var import_react34 = __toESM(require("react"));
|
|
1375
|
+
var import_auto = __toESM(require("chart.js/auto"));
|
|
1376
|
+
var LineChart = (props) => {
|
|
1377
|
+
const chartRef = (0, import_react34.useRef)(null);
|
|
1378
|
+
const chartInstance = (0, import_react34.useRef)(null);
|
|
1379
|
+
const data = [
|
|
1380
|
+
{ label: "ROI", data: [10, 13, 20, 15, 10] },
|
|
1381
|
+
{ label: "Engagement Rate", data: [20, 23, 30, 28, 20] },
|
|
1382
|
+
{ label: "Conversion Rate", data: [50, 100, 150, 180, 50] }
|
|
1383
|
+
];
|
|
1384
|
+
const labels = ["Instagram", "Whatsapp", "Messages", "Telegram", "Linkedin"];
|
|
1385
|
+
(0, import_react34.useEffect)(() => {
|
|
1386
|
+
if (chartRef.current) {
|
|
1387
|
+
if (chartInstance.current) {
|
|
1388
|
+
chartInstance.current.destroy();
|
|
1389
|
+
}
|
|
1390
|
+
chartInstance.current = new import_auto.default(chartRef.current, {
|
|
1391
|
+
type: "line",
|
|
1392
|
+
data: {
|
|
1393
|
+
labels,
|
|
1394
|
+
datasets: data.map((dataset, index) => ({
|
|
1395
|
+
label: dataset.label,
|
|
1396
|
+
data: dataset.data,
|
|
1397
|
+
borderColor: index === 0 ? "#FF8F00" : index === 1 ? "#F50057" : "#254AAA",
|
|
1398
|
+
backgroundColor: "rgba(0, 0, 0, 0)",
|
|
1399
|
+
pointBackgroundColor: index === 0 ? "#FF8F00" : index === 1 ? "#F50057" : "#254AAA",
|
|
1400
|
+
pointBorderColor: "white",
|
|
1401
|
+
pointStyle: "circle",
|
|
1402
|
+
pointRadius: 3,
|
|
1403
|
+
tension: 0.1,
|
|
1404
|
+
fill: true
|
|
1405
|
+
}))
|
|
1406
|
+
},
|
|
1407
|
+
options: {
|
|
1408
|
+
plugins: {
|
|
1409
|
+
legend: {
|
|
1410
|
+
labels: {
|
|
1411
|
+
usePointStyle: true
|
|
1412
|
+
}
|
|
1413
|
+
}
|
|
1414
|
+
},
|
|
1415
|
+
scales: {
|
|
1416
|
+
x: {
|
|
1417
|
+
grid: {
|
|
1418
|
+
display: false
|
|
1419
|
+
}
|
|
1420
|
+
},
|
|
1421
|
+
y: {
|
|
1422
|
+
beginAtZero: true,
|
|
1423
|
+
suggestedMax: 200,
|
|
1424
|
+
ticks: {
|
|
1425
|
+
callback: function(value) {
|
|
1426
|
+
return value + "%";
|
|
1427
|
+
}
|
|
1428
|
+
},
|
|
1429
|
+
grid: {
|
|
1430
|
+
display: true
|
|
1431
|
+
}
|
|
1432
|
+
}
|
|
1433
|
+
}
|
|
1434
|
+
}
|
|
1435
|
+
});
|
|
1436
|
+
}
|
|
1437
|
+
return () => {
|
|
1438
|
+
if (chartInstance.current) {
|
|
1439
|
+
chartInstance.current.destroy();
|
|
1440
|
+
}
|
|
1441
|
+
};
|
|
1442
|
+
}, [labels, data]);
|
|
1443
|
+
return /* @__PURE__ */ import_react34.default.createElement("div", { className: props.className }, /* @__PURE__ */ import_react34.default.createElement("canvas", { ref: chartRef }));
|
|
1444
|
+
};
|
|
1445
|
+
|
|
1446
|
+
// src/Components/DoubleBarChart.tsx
|
|
1447
|
+
var import_react35 = __toESM(require("react"));
|
|
1448
|
+
var import_auto2 = __toESM(require("chart.js/auto"));
|
|
1449
|
+
var DoubleBarChart = (props) => {
|
|
1450
|
+
const chartRef = (0, import_react35.useRef)(null);
|
|
1451
|
+
const chartInstance = (0, import_react35.useRef)(null);
|
|
1452
|
+
(0, import_react35.useEffect)(() => {
|
|
1453
|
+
if (chartRef.current) {
|
|
1454
|
+
if (chartInstance.current) {
|
|
1455
|
+
chartInstance.current.destroy();
|
|
1456
|
+
}
|
|
1457
|
+
chartInstance.current = new import_auto2.default(chartRef.current, {
|
|
1458
|
+
type: "bar",
|
|
1459
|
+
data: {
|
|
1460
|
+
labels: [
|
|
1461
|
+
"Summer Health Tips",
|
|
1462
|
+
"New Services Launch",
|
|
1463
|
+
"Discounts on Checkups",
|
|
1464
|
+
"Wellness Webinar",
|
|
1465
|
+
"LinkedIn Insights"
|
|
1466
|
+
],
|
|
1467
|
+
datasets: [
|
|
1468
|
+
{
|
|
1469
|
+
label: "Engagement Rate",
|
|
1470
|
+
data: [60, 70, 50, 80, 65],
|
|
1471
|
+
// Example data for male
|
|
1472
|
+
backgroundColor: "#93B8E2",
|
|
1473
|
+
barThickness: 10
|
|
1474
|
+
},
|
|
1475
|
+
{
|
|
1476
|
+
label: "Conversion Rate",
|
|
1477
|
+
data: [70, 65, 75, 55, 85],
|
|
1478
|
+
// Example data for female
|
|
1479
|
+
backgroundColor: "#4484CD",
|
|
1480
|
+
barThickness: 10
|
|
1481
|
+
}
|
|
1482
|
+
]
|
|
1483
|
+
},
|
|
1484
|
+
options: {
|
|
1485
|
+
scales: {
|
|
1486
|
+
x: {
|
|
1487
|
+
grid: {
|
|
1488
|
+
display: false
|
|
1489
|
+
// Display x-axis grid lines
|
|
1490
|
+
}
|
|
1491
|
+
},
|
|
1492
|
+
y: {
|
|
1493
|
+
beginAtZero: true,
|
|
1494
|
+
suggestedMax: 100,
|
|
1495
|
+
ticks: {
|
|
1496
|
+
callback: function(value) {
|
|
1497
|
+
return value + "%";
|
|
1498
|
+
}
|
|
1499
|
+
},
|
|
1500
|
+
grid: {
|
|
1501
|
+
display: true
|
|
1502
|
+
}
|
|
1503
|
+
}
|
|
1504
|
+
},
|
|
1505
|
+
plugins: {
|
|
1506
|
+
legend: {
|
|
1507
|
+
labels: {
|
|
1508
|
+
usePointStyle: true
|
|
1509
|
+
}
|
|
1510
|
+
}
|
|
1511
|
+
}
|
|
1512
|
+
}
|
|
1513
|
+
});
|
|
1514
|
+
}
|
|
1515
|
+
return () => {
|
|
1516
|
+
if (chartInstance.current) {
|
|
1517
|
+
chartInstance.current.destroy();
|
|
1518
|
+
}
|
|
1519
|
+
};
|
|
1520
|
+
}, []);
|
|
1521
|
+
return /* @__PURE__ */ import_react35.default.createElement("div", { className: props.className }, /* @__PURE__ */ import_react35.default.createElement("h1", { className: props.labelClassName }, props.label), /* @__PURE__ */ import_react35.default.createElement("canvas", { ref: chartRef }));
|
|
1522
|
+
};
|
|
1523
|
+
|
|
1524
|
+
// src/Components/BarChart.tsx
|
|
1525
|
+
var import_react36 = __toESM(require("react"));
|
|
1526
|
+
var import_react_chartjs_24 = require("react-chartjs-2");
|
|
1527
|
+
var import_chart4 = require("chart.js");
|
|
1528
|
+
import_chart4.Chart.register(import_chart4.BarElement, import_chart4.CategoryScale, import_chart4.LinearScale, import_chart4.Tooltip);
|
|
1529
|
+
var BarChart = (props) => {
|
|
1530
|
+
const data = {
|
|
1531
|
+
labels: [
|
|
1532
|
+
"17 June",
|
|
1533
|
+
"18 June",
|
|
1534
|
+
"19 June",
|
|
1535
|
+
"20 June",
|
|
1536
|
+
"21 June",
|
|
1537
|
+
"22 June",
|
|
1538
|
+
"23 June"
|
|
1539
|
+
],
|
|
1540
|
+
datasets: [
|
|
1541
|
+
{
|
|
1542
|
+
data: [30, 100, 270, 140, 120, 240],
|
|
1543
|
+
backgroundColor: "#1565C0",
|
|
1544
|
+
barThickness: 15
|
|
1545
|
+
}
|
|
1546
|
+
]
|
|
1547
|
+
};
|
|
1548
|
+
const options = {
|
|
1549
|
+
responsive: true,
|
|
1550
|
+
scales: {
|
|
1551
|
+
x: {
|
|
1552
|
+
beginAtZero: true,
|
|
1553
|
+
grid: {
|
|
1554
|
+
display: false
|
|
1555
|
+
}
|
|
1556
|
+
},
|
|
1557
|
+
y: {
|
|
1558
|
+
grid: {
|
|
1559
|
+
display: true
|
|
1560
|
+
},
|
|
1561
|
+
ticks: {
|
|
1562
|
+
min: 0,
|
|
1563
|
+
max: 400,
|
|
1564
|
+
stepSize: 200,
|
|
1565
|
+
callback: function(value) {
|
|
1566
|
+
return `${value}`;
|
|
1567
|
+
}
|
|
1568
|
+
}
|
|
1569
|
+
}
|
|
1570
|
+
},
|
|
1571
|
+
plugins: {
|
|
1572
|
+
tooltip: {
|
|
1573
|
+
enabled: true,
|
|
1574
|
+
callbacks: {
|
|
1575
|
+
label: function(context) {
|
|
1576
|
+
const label = context.label || "";
|
|
1577
|
+
const value = context.raw || 0;
|
|
1578
|
+
return ` ${label}: ${value}`;
|
|
1579
|
+
}
|
|
1580
|
+
}
|
|
1581
|
+
},
|
|
1582
|
+
legend: {
|
|
1583
|
+
display: false
|
|
1584
|
+
}
|
|
1585
|
+
}
|
|
1586
|
+
};
|
|
1587
|
+
return /* @__PURE__ */ import_react36.default.createElement("div", { className: props.className }, /* @__PURE__ */ import_react36.default.createElement("h1", { className: props.labelClassName }, props.label), /* @__PURE__ */ import_react36.default.createElement(import_react_chartjs_24.Bar, { data, options }));
|
|
1588
|
+
};
|
|
923
1589
|
// Annotate the CommonJS export names for ESM import in node:
|
|
924
1590
|
0 && (module.exports = {
|
|
925
1591
|
AddMoreTable,
|
|
1592
|
+
BarChart,
|
|
926
1593
|
ButtonElement,
|
|
927
1594
|
CheckboxElement,
|
|
1595
|
+
CircleDonut,
|
|
928
1596
|
CkEditor,
|
|
929
1597
|
DatePickerElement,
|
|
930
1598
|
DateRangePickerElement,
|
|
1599
|
+
DoubleBarChart,
|
|
931
1600
|
DropDownGroup,
|
|
932
1601
|
FileUpload,
|
|
1602
|
+
HorizontalBarChart,
|
|
933
1603
|
Image,
|
|
1604
|
+
LineChart,
|
|
934
1605
|
MultipleSelectElement,
|
|
935
1606
|
Navbar,
|
|
936
1607
|
NumberElement,
|
|
1608
|
+
OtpElement,
|
|
937
1609
|
PasswordElement,
|
|
938
1610
|
RadioElement,
|
|
939
1611
|
SelectElement,
|
|
1612
|
+
SemiCircleDonut,
|
|
940
1613
|
Sidebar,
|
|
941
1614
|
SingleCheckbox,
|
|
942
1615
|
SingleSelectElement,
|
|
@@ -944,5 +1617,6 @@ var SwitchElement = () => /* @__PURE__ */ import_react28.default.createElement(i
|
|
|
944
1617
|
TableElement,
|
|
945
1618
|
TabsElement,
|
|
946
1619
|
TextElement,
|
|
947
|
-
TextareaElement
|
|
1620
|
+
TextareaElement,
|
|
1621
|
+
Upload
|
|
948
1622
|
});
|