@apexcura/ui-components 0.0.14-Beta21 → 0.0.14-Beta211
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 +775 -107
- package/dist/index.mjs +790 -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 }, props.loading ? /* @__PURE__ */ import_react11.default.createElement("img", { src: props.icon, className: "icon-active" }) : /* @__PURE__ */ import_react11.default.createElement("span", { dangerouslySetInnerHTML: { __html: props.icon || "" } })), 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,45 @@ 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"));
|
|
777
902
|
var DateRangePickerElement = (props) => {
|
|
903
|
+
const { value } = props;
|
|
778
904
|
const { RangePicker } = import_antd16.DatePicker;
|
|
779
905
|
const handleChange = (dates, dateStrings) => {
|
|
780
|
-
if (dates
|
|
781
|
-
props.onChange(dateStrings);
|
|
906
|
+
if (dates) {
|
|
907
|
+
props.onChange && props.onChange(dateStrings);
|
|
782
908
|
} else {
|
|
783
|
-
|
|
909
|
+
props.onChange && props.onChange(["", ""]);
|
|
784
910
|
}
|
|
785
911
|
};
|
|
786
912
|
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,
|
|
913
|
+
{ label: "Last 7 Days", value: [(0, import_dayjs2.default)().add(-7, "d"), (0, import_dayjs2.default)()] },
|
|
914
|
+
{ label: "Last 14 Days", value: [(0, import_dayjs2.default)().add(-14, "d"), (0, import_dayjs2.default)()] },
|
|
915
|
+
{ label: "Last 30 Days", value: [(0, import_dayjs2.default)().add(-30, "d"), (0, import_dayjs2.default)()] },
|
|
916
|
+
{ label: "Last 90 Days", value: [(0, import_dayjs2.default)().add(-90, "d"), (0, import_dayjs2.default)()] }
|
|
791
917
|
];
|
|
792
|
-
|
|
918
|
+
const disabledDate = (current) => {
|
|
919
|
+
return current && current > (0, import_dayjs2.default)();
|
|
920
|
+
};
|
|
921
|
+
return /* @__PURE__ */ import_react22.default.createElement(import_antd16.Space, { direction: "vertical", size: 12 }, /* @__PURE__ */ import_react22.default.createElement(
|
|
922
|
+
RangePicker,
|
|
923
|
+
{
|
|
924
|
+
disabledDate,
|
|
925
|
+
presets: rangePresets,
|
|
926
|
+
format: { format: "DD-MM-YYYY" },
|
|
927
|
+
onChange: handleChange,
|
|
928
|
+
value: value && value.length === 2 && [
|
|
929
|
+
(0, import_dayjs2.default)(value[0]),
|
|
930
|
+
(0, import_dayjs2.default)(value[1])
|
|
931
|
+
]
|
|
932
|
+
}
|
|
933
|
+
));
|
|
793
934
|
};
|
|
794
935
|
|
|
795
936
|
// src/Components/Image.tsx
|
|
796
937
|
var import_react23 = __toESM(require("react"));
|
|
797
938
|
var Image = (props) => {
|
|
798
|
-
return /* @__PURE__ */ import_react23.default.createElement("
|
|
939
|
+
return /* @__PURE__ */ import_react23.default.createElement("img", { className: props.className, src: props.img, alt: "image" });
|
|
799
940
|
};
|
|
800
941
|
|
|
801
942
|
// src/Components/SingleCheckbox.tsx
|
|
@@ -814,60 +955,64 @@ var SingleCheckbox = (props) => {
|
|
|
814
955
|
var import_react25 = __toESM(require("react"));
|
|
815
956
|
var import_antd18 = require("antd");
|
|
816
957
|
var DropDownGroup = (props) => {
|
|
817
|
-
const [selectedValue, setSelectedValue] = (0, import_react25.useState)({
|
|
818
|
-
|
|
958
|
+
const [selectedValue, setSelectedValue] = (0, import_react25.useState)({
|
|
959
|
+
firstValue: {},
|
|
960
|
+
secondValue: {},
|
|
961
|
+
temp: ""
|
|
962
|
+
});
|
|
819
963
|
const handleFirstChange = (value) => {
|
|
820
|
-
|
|
964
|
+
console.log(selectedValue.temp);
|
|
965
|
+
const filterOption2 = props.firstOptions?.find(
|
|
966
|
+
(eachOption) => eachOption.value === value
|
|
967
|
+
);
|
|
821
968
|
setSelectedValue((prev) => {
|
|
822
969
|
const newValue = { ...prev, firstValue: filterOption2 };
|
|
970
|
+
const { temp, ...rest } = newValue;
|
|
823
971
|
if (newValue.firstValue) {
|
|
824
|
-
props.onChange?.(
|
|
972
|
+
props.onChange?.(rest);
|
|
825
973
|
}
|
|
826
974
|
return newValue;
|
|
827
975
|
});
|
|
828
976
|
};
|
|
829
977
|
const handleSecondChange = (value) => {
|
|
830
|
-
const filterOption2 = props.secondOptions?.find(
|
|
978
|
+
const filterOption2 = props.secondOptions?.find(
|
|
979
|
+
(eachOption) => eachOption.value === value
|
|
980
|
+
);
|
|
831
981
|
setSelectedValue((prev) => {
|
|
832
982
|
const newValue = { ...prev, secondValue: filterOption2 };
|
|
983
|
+
const { temp, ...rest } = newValue;
|
|
833
984
|
if (newValue.secondValue) {
|
|
834
|
-
props.onChange?.(
|
|
985
|
+
props.onChange?.(rest);
|
|
835
986
|
}
|
|
836
987
|
return newValue;
|
|
837
988
|
});
|
|
838
989
|
};
|
|
839
|
-
return /* @__PURE__ */ import_react25.default.createElement("div", { className: props.
|
|
990
|
+
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
991
|
import_antd18.Select,
|
|
841
992
|
{
|
|
842
993
|
onChange: handleFirstChange,
|
|
843
994
|
variant: props.variant,
|
|
844
|
-
options: props.firstOptions
|
|
995
|
+
options: props.firstOptions,
|
|
996
|
+
className: props.className
|
|
845
997
|
}
|
|
846
998
|
), /* @__PURE__ */ import_react25.default.createElement("div", { style: { borderLeft: "1px solid gray", height: "33px" } }), /* @__PURE__ */ import_react25.default.createElement(
|
|
847
999
|
import_antd18.Select,
|
|
848
1000
|
{
|
|
849
1001
|
onChange: handleSecondChange,
|
|
850
1002
|
variant: props.variant,
|
|
851
|
-
options: props.secondOptions
|
|
1003
|
+
options: props.secondOptions,
|
|
1004
|
+
className: props.className
|
|
852
1005
|
}
|
|
853
|
-
));
|
|
1006
|
+
)));
|
|
854
1007
|
};
|
|
855
1008
|
|
|
856
1009
|
// src/Components/FilesUpload.tsx
|
|
857
1010
|
var import_react26 = __toESM(require("react"));
|
|
858
1011
|
var import_antd19 = require("antd");
|
|
859
|
-
var
|
|
1012
|
+
var import_icons5 = require("@ant-design/icons");
|
|
860
1013
|
var FileUpload = (props) => {
|
|
861
1014
|
const { Dragger } = import_antd19.Upload;
|
|
862
1015
|
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
1016
|
const handleChange = ({ fileList }) => {
|
|
872
1017
|
setFiles(fileList);
|
|
873
1018
|
if (props.onChange) {
|
|
@@ -891,12 +1036,11 @@ var FileUpload = (props) => {
|
|
|
891
1036
|
maxCount: props.max_count,
|
|
892
1037
|
multiple: props.multiple,
|
|
893
1038
|
fileList: files,
|
|
894
|
-
beforeUpload,
|
|
895
1039
|
onChange: handleChange,
|
|
896
1040
|
showUploadList: true,
|
|
897
1041
|
customRequest
|
|
898
1042
|
},
|
|
899
|
-
/* @__PURE__ */ import_react26.default.createElement("p", null, /* @__PURE__ */ import_react26.default.createElement(
|
|
1043
|
+
/* @__PURE__ */ import_react26.default.createElement("p", null, /* @__PURE__ */ import_react26.default.createElement(import_icons5.InboxOutlined, null)),
|
|
900
1044
|
/* @__PURE__ */ import_react26.default.createElement("p", null, "Click or drag file to upload")
|
|
901
1045
|
));
|
|
902
1046
|
};
|
|
@@ -920,23 +1064,546 @@ var onChange = (checked) => {
|
|
|
920
1064
|
console.log(`switch to ${checked}`);
|
|
921
1065
|
};
|
|
922
1066
|
var SwitchElement = () => /* @__PURE__ */ import_react28.default.createElement(import_antd21.Switch, { defaultChecked: true, onChange });
|
|
1067
|
+
|
|
1068
|
+
// src/Components/Upload.tsx
|
|
1069
|
+
var import_react29 = __toESM(require("react"));
|
|
1070
|
+
var Upload2 = (props) => {
|
|
1071
|
+
const [file, setFile] = (0, import_react29.useState)();
|
|
1072
|
+
const handleFileChange = (e) => {
|
|
1073
|
+
setFile(e.target.files[0]);
|
|
1074
|
+
if (props.onChange) {
|
|
1075
|
+
props.onChange(e.target.files[0]);
|
|
1076
|
+
}
|
|
1077
|
+
};
|
|
1078
|
+
const handleUpload = async () => {
|
|
1079
|
+
if (!file) {
|
|
1080
|
+
console.error("No file selected");
|
|
1081
|
+
return;
|
|
1082
|
+
}
|
|
1083
|
+
};
|
|
1084
|
+
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(
|
|
1085
|
+
"button",
|
|
1086
|
+
{
|
|
1087
|
+
type: "button",
|
|
1088
|
+
onClick: handleUpload,
|
|
1089
|
+
disabled: !file,
|
|
1090
|
+
style: { marginTop: 16 }
|
|
1091
|
+
},
|
|
1092
|
+
"Upload"
|
|
1093
|
+
));
|
|
1094
|
+
};
|
|
1095
|
+
|
|
1096
|
+
// src/Components/OtpElement.tsx
|
|
1097
|
+
var import_react30 = __toESM(require("react"));
|
|
1098
|
+
var import_antd22 = require("antd");
|
|
1099
|
+
var OtpElement = (props) => {
|
|
1100
|
+
const length = props.length;
|
|
1101
|
+
const [otp, setOtp] = (0, import_react30.useState)(Array(length).fill(""));
|
|
1102
|
+
const inputRefs = (0, import_react30.useRef)([]);
|
|
1103
|
+
const handleChange = (e, index) => {
|
|
1104
|
+
const value = e.target.value;
|
|
1105
|
+
if (/^[0-9]$/.test(value) || value === "") {
|
|
1106
|
+
const newOtp = [...otp];
|
|
1107
|
+
newOtp[index] = value;
|
|
1108
|
+
setOtp(newOtp);
|
|
1109
|
+
props.onChange && props.onChange(newOtp.join(""));
|
|
1110
|
+
if (value && index < length - 1) {
|
|
1111
|
+
inputRefs.current[index + 1]?.focus();
|
|
1112
|
+
}
|
|
1113
|
+
}
|
|
1114
|
+
};
|
|
1115
|
+
const handleKeyDown = (e, index) => {
|
|
1116
|
+
if (e.key === "Backspace" && !otp[index] && index > 0) {
|
|
1117
|
+
inputRefs.current[index - 1]?.focus();
|
|
1118
|
+
}
|
|
1119
|
+
};
|
|
1120
|
+
const handlePaste = (e) => {
|
|
1121
|
+
e.preventDefault();
|
|
1122
|
+
const pasteData = e.clipboardData.getData("text");
|
|
1123
|
+
if (/^\d+$/.test(pasteData)) {
|
|
1124
|
+
const newOtp = pasteData.split("").slice(0, length);
|
|
1125
|
+
setOtp(newOtp.concat(Array(length - newOtp.length).fill("")));
|
|
1126
|
+
props.onChange && props.onChange(newOtp.join(""));
|
|
1127
|
+
newOtp.forEach((_, idx) => {
|
|
1128
|
+
if (inputRefs.current[idx]) {
|
|
1129
|
+
inputRefs.current[idx]?.focus();
|
|
1130
|
+
}
|
|
1131
|
+
});
|
|
1132
|
+
}
|
|
1133
|
+
};
|
|
1134
|
+
(0, import_react30.useEffect)(() => {
|
|
1135
|
+
inputRefs.current[0]?.focus();
|
|
1136
|
+
}, []);
|
|
1137
|
+
return /* @__PURE__ */ import_react30.default.createElement("div", { className: props.containerClassName }, Array.from({ length }).map((_, index) => /* @__PURE__ */ import_react30.default.createElement(
|
|
1138
|
+
import_antd22.Input,
|
|
1139
|
+
{
|
|
1140
|
+
key: index,
|
|
1141
|
+
className: props.className,
|
|
1142
|
+
maxLength: 1,
|
|
1143
|
+
value: otp[index],
|
|
1144
|
+
onChange: (e) => handleChange(e, index),
|
|
1145
|
+
onKeyDown: (e) => handleKeyDown(e, index),
|
|
1146
|
+
onPaste: handlePaste,
|
|
1147
|
+
ref: (el) => inputRefs.current[index] = el
|
|
1148
|
+
}
|
|
1149
|
+
)));
|
|
1150
|
+
};
|
|
1151
|
+
|
|
1152
|
+
// src/Components/CircleDonut.tsx
|
|
1153
|
+
var import_react31 = __toESM(require("react"));
|
|
1154
|
+
var import_react_chartjs_2 = require("react-chartjs-2");
|
|
1155
|
+
var import_chart = require("chart.js");
|
|
1156
|
+
import_chart.Chart.register(import_chart.DoughnutController, import_chart.ArcElement, import_chart.Tooltip, import_chart.Legend);
|
|
1157
|
+
var CircleDonut = (props) => {
|
|
1158
|
+
const data = {
|
|
1159
|
+
labels: props.labels,
|
|
1160
|
+
datasets: [
|
|
1161
|
+
{
|
|
1162
|
+
label: "Bot Conversation",
|
|
1163
|
+
data: props.data,
|
|
1164
|
+
backgroundColor: [
|
|
1165
|
+
"#FFCB8A",
|
|
1166
|
+
"#CADBBF",
|
|
1167
|
+
"#8AC1BB",
|
|
1168
|
+
"#FCB0CB",
|
|
1169
|
+
"#CEB0FA"
|
|
1170
|
+
],
|
|
1171
|
+
borderWidth: 0
|
|
1172
|
+
}
|
|
1173
|
+
]
|
|
1174
|
+
};
|
|
1175
|
+
const options = {
|
|
1176
|
+
responsive: true,
|
|
1177
|
+
cutout: "80%",
|
|
1178
|
+
plugins: {
|
|
1179
|
+
legend: {
|
|
1180
|
+
position: "left",
|
|
1181
|
+
labels: {
|
|
1182
|
+
font: {
|
|
1183
|
+
size: 10
|
|
1184
|
+
},
|
|
1185
|
+
boxWidth: 15,
|
|
1186
|
+
generateLabels: (chart) => {
|
|
1187
|
+
const dataset = chart.data.datasets[0];
|
|
1188
|
+
return chart.data.labels.map((label, index) => {
|
|
1189
|
+
const value = dataset.data[index];
|
|
1190
|
+
return {
|
|
1191
|
+
text: `${label}: ${value}`,
|
|
1192
|
+
fillStyle: dataset.backgroundColor[index]
|
|
1193
|
+
};
|
|
1194
|
+
});
|
|
1195
|
+
}
|
|
1196
|
+
}
|
|
1197
|
+
},
|
|
1198
|
+
tooltip: {
|
|
1199
|
+
enabled: true,
|
|
1200
|
+
callbacks: {
|
|
1201
|
+
label: function(context) {
|
|
1202
|
+
const label = context.label || "";
|
|
1203
|
+
const value = context.raw || 0;
|
|
1204
|
+
return `${label}: ${value}`;
|
|
1205
|
+
}
|
|
1206
|
+
}
|
|
1207
|
+
}
|
|
1208
|
+
}
|
|
1209
|
+
};
|
|
1210
|
+
const centerTextPlugin = {
|
|
1211
|
+
id: "centerText",
|
|
1212
|
+
beforeDraw: (chart) => {
|
|
1213
|
+
const { ctx, chartArea: { left, right, top, bottom } } = chart;
|
|
1214
|
+
const width = right - left;
|
|
1215
|
+
const height = bottom - top;
|
|
1216
|
+
const centerX = left + width / 2;
|
|
1217
|
+
const centerY = top + height / 2;
|
|
1218
|
+
ctx.save();
|
|
1219
|
+
ctx.font = "7px Arial";
|
|
1220
|
+
ctx.fillStyle = "blue";
|
|
1221
|
+
ctx.textAlign = "center";
|
|
1222
|
+
ctx.textBaseline = "middle";
|
|
1223
|
+
ctx.fillText("Total Sessions", centerX, centerY - 10);
|
|
1224
|
+
ctx.font = "25px Arial";
|
|
1225
|
+
ctx.fillStyle = "black";
|
|
1226
|
+
ctx.fillText("85", centerX, centerY + 20);
|
|
1227
|
+
ctx.restore();
|
|
1228
|
+
}
|
|
1229
|
+
};
|
|
1230
|
+
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] }));
|
|
1231
|
+
};
|
|
1232
|
+
|
|
1233
|
+
// src/Components/SemiCircleDonut.tsx
|
|
1234
|
+
var import_react32 = __toESM(require("react"));
|
|
1235
|
+
var import_react_chartjs_22 = require("react-chartjs-2");
|
|
1236
|
+
var import_chart2 = require("chart.js");
|
|
1237
|
+
import_chart2.Chart.register(import_chart2.DoughnutController, import_chart2.ArcElement, import_chart2.Tooltip, import_chart2.Legend);
|
|
1238
|
+
var SemiCircleDonut = (props) => {
|
|
1239
|
+
const data = {
|
|
1240
|
+
labels: [
|
|
1241
|
+
"Registration",
|
|
1242
|
+
"Book Appointment",
|
|
1243
|
+
"Diagnostic Tests",
|
|
1244
|
+
"Hospital Facility",
|
|
1245
|
+
"Others, Prescriptions"
|
|
1246
|
+
],
|
|
1247
|
+
datasets: [
|
|
1248
|
+
{
|
|
1249
|
+
label: "Bot Conversation",
|
|
1250
|
+
data: [30, 10, 27, 40, 12],
|
|
1251
|
+
backgroundColor: [
|
|
1252
|
+
"#FFCB8A",
|
|
1253
|
+
"#CADBBF",
|
|
1254
|
+
"#8AC1BB",
|
|
1255
|
+
"#FCB0CB",
|
|
1256
|
+
"#CEB0FA"
|
|
1257
|
+
],
|
|
1258
|
+
borderWidth: 0
|
|
1259
|
+
}
|
|
1260
|
+
]
|
|
1261
|
+
};
|
|
1262
|
+
const options = {
|
|
1263
|
+
responsive: true,
|
|
1264
|
+
circumference: 180,
|
|
1265
|
+
rotation: -90,
|
|
1266
|
+
cutout: "80%",
|
|
1267
|
+
plugins: {
|
|
1268
|
+
legend: {
|
|
1269
|
+
display: false
|
|
1270
|
+
// Disable the legend
|
|
1271
|
+
},
|
|
1272
|
+
tooltip: {
|
|
1273
|
+
enabled: true,
|
|
1274
|
+
callbacks: {
|
|
1275
|
+
label: function(context) {
|
|
1276
|
+
const label = context.label || "";
|
|
1277
|
+
const value = context.raw || 0;
|
|
1278
|
+
return `${label}: ${value}`;
|
|
1279
|
+
}
|
|
1280
|
+
}
|
|
1281
|
+
}
|
|
1282
|
+
}
|
|
1283
|
+
};
|
|
1284
|
+
const centerTextPlugin = {
|
|
1285
|
+
id: "centerText",
|
|
1286
|
+
beforeDraw: (chart) => {
|
|
1287
|
+
const { ctx, chartArea: { left, right, top, bottom } } = chart;
|
|
1288
|
+
const width = right - left;
|
|
1289
|
+
const height = bottom - top;
|
|
1290
|
+
const centerX = left + width / 2;
|
|
1291
|
+
const centerY = top + height / 1.5;
|
|
1292
|
+
const maxWidth = width * 0.8;
|
|
1293
|
+
ctx.save();
|
|
1294
|
+
ctx.fillStyle = "black";
|
|
1295
|
+
ctx.textAlign = "center";
|
|
1296
|
+
ctx.textBaseline = "middle";
|
|
1297
|
+
const drawText = (text, y, fontSize) => {
|
|
1298
|
+
ctx.font = `${fontSize}px Arial`;
|
|
1299
|
+
const textWidth = ctx.measureText(text).width;
|
|
1300
|
+
if (textWidth > maxWidth) {
|
|
1301
|
+
const newFontSize = fontSize * maxWidth / textWidth;
|
|
1302
|
+
ctx.font = `${newFontSize}px Arial`;
|
|
1303
|
+
}
|
|
1304
|
+
ctx.fillText(text, centerX, y);
|
|
1305
|
+
};
|
|
1306
|
+
drawText(props.fillText1, centerY - 10, 16);
|
|
1307
|
+
drawText(props.fillText2, centerY + 20, 8);
|
|
1308
|
+
ctx.restore();
|
|
1309
|
+
}
|
|
1310
|
+
};
|
|
1311
|
+
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] }));
|
|
1312
|
+
};
|
|
1313
|
+
|
|
1314
|
+
// src/Components/HorizontalBarChart.tsx
|
|
1315
|
+
var import_react33 = __toESM(require("react"));
|
|
1316
|
+
var import_react_chartjs_23 = require("react-chartjs-2");
|
|
1317
|
+
var import_chart3 = require("chart.js");
|
|
1318
|
+
import_chart3.Chart.register(import_chart3.BarElement, import_chart3.CategoryScale, import_chart3.LinearScale, import_chart3.Tooltip);
|
|
1319
|
+
var HorizontalBarChart = (props) => {
|
|
1320
|
+
const data = {
|
|
1321
|
+
labels: ["18-24", "25-34", "35-44", "45-54", "55-64", "65+"],
|
|
1322
|
+
datasets: [
|
|
1323
|
+
{
|
|
1324
|
+
data: [30, 10, 27, 40, 12, 24],
|
|
1325
|
+
backgroundColor: "#6298D5",
|
|
1326
|
+
barThickness: 15
|
|
1327
|
+
}
|
|
1328
|
+
]
|
|
1329
|
+
};
|
|
1330
|
+
const options = {
|
|
1331
|
+
responsive: true,
|
|
1332
|
+
indexAxis: "y",
|
|
1333
|
+
scales: {
|
|
1334
|
+
x: {
|
|
1335
|
+
beginAtZero: true,
|
|
1336
|
+
ticks: {
|
|
1337
|
+
callback: function(value) {
|
|
1338
|
+
return `${value}%`;
|
|
1339
|
+
}
|
|
1340
|
+
}
|
|
1341
|
+
},
|
|
1342
|
+
y: {
|
|
1343
|
+
grid: {
|
|
1344
|
+
display: false
|
|
1345
|
+
}
|
|
1346
|
+
}
|
|
1347
|
+
},
|
|
1348
|
+
plugins: {
|
|
1349
|
+
tooltip: {
|
|
1350
|
+
enabled: true,
|
|
1351
|
+
callbacks: {
|
|
1352
|
+
label: function(context) {
|
|
1353
|
+
const label = context.label || "";
|
|
1354
|
+
const value = context.raw || 0;
|
|
1355
|
+
return `${label}: ${value}`;
|
|
1356
|
+
}
|
|
1357
|
+
}
|
|
1358
|
+
},
|
|
1359
|
+
legend: {
|
|
1360
|
+
display: false
|
|
1361
|
+
}
|
|
1362
|
+
}
|
|
1363
|
+
};
|
|
1364
|
+
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 }));
|
|
1365
|
+
};
|
|
1366
|
+
|
|
1367
|
+
// src/Components/LineChart.tsx
|
|
1368
|
+
var import_react34 = __toESM(require("react"));
|
|
1369
|
+
var import_auto = __toESM(require("chart.js/auto"));
|
|
1370
|
+
var LineChart = (props) => {
|
|
1371
|
+
const chartRef = (0, import_react34.useRef)(null);
|
|
1372
|
+
const chartInstance = (0, import_react34.useRef)(null);
|
|
1373
|
+
const data = [
|
|
1374
|
+
{ label: "ROI", data: [10, 13, 20, 15, 10] },
|
|
1375
|
+
{ label: "Engagement Rate", data: [20, 23, 30, 28, 20] },
|
|
1376
|
+
{ label: "Conversion Rate", data: [50, 100, 150, 180, 50] }
|
|
1377
|
+
];
|
|
1378
|
+
const labels = ["Instagram", "Whatsapp", "Messages", "Telegram", "Linkedin"];
|
|
1379
|
+
(0, import_react34.useEffect)(() => {
|
|
1380
|
+
if (chartRef.current) {
|
|
1381
|
+
if (chartInstance.current) {
|
|
1382
|
+
chartInstance.current.destroy();
|
|
1383
|
+
}
|
|
1384
|
+
chartInstance.current = new import_auto.default(chartRef.current, {
|
|
1385
|
+
type: "line",
|
|
1386
|
+
data: {
|
|
1387
|
+
labels,
|
|
1388
|
+
datasets: data.map((dataset, index) => ({
|
|
1389
|
+
label: dataset.label,
|
|
1390
|
+
data: dataset.data,
|
|
1391
|
+
borderColor: index === 0 ? "#FF8F00" : index === 1 ? "#F50057" : "#254AAA",
|
|
1392
|
+
backgroundColor: "rgba(0, 0, 0, 0)",
|
|
1393
|
+
pointBackgroundColor: index === 0 ? "#FF8F00" : index === 1 ? "#F50057" : "#254AAA",
|
|
1394
|
+
pointBorderColor: "white",
|
|
1395
|
+
pointStyle: "circle",
|
|
1396
|
+
pointRadius: 3,
|
|
1397
|
+
tension: 0.1,
|
|
1398
|
+
fill: true
|
|
1399
|
+
}))
|
|
1400
|
+
},
|
|
1401
|
+
options: {
|
|
1402
|
+
plugins: {
|
|
1403
|
+
legend: {
|
|
1404
|
+
labels: {
|
|
1405
|
+
usePointStyle: true
|
|
1406
|
+
}
|
|
1407
|
+
}
|
|
1408
|
+
},
|
|
1409
|
+
scales: {
|
|
1410
|
+
x: {
|
|
1411
|
+
grid: {
|
|
1412
|
+
display: false
|
|
1413
|
+
}
|
|
1414
|
+
},
|
|
1415
|
+
y: {
|
|
1416
|
+
beginAtZero: true,
|
|
1417
|
+
suggestedMax: 200,
|
|
1418
|
+
ticks: {
|
|
1419
|
+
callback: function(value) {
|
|
1420
|
+
return value + "%";
|
|
1421
|
+
}
|
|
1422
|
+
},
|
|
1423
|
+
grid: {
|
|
1424
|
+
display: true
|
|
1425
|
+
}
|
|
1426
|
+
}
|
|
1427
|
+
}
|
|
1428
|
+
}
|
|
1429
|
+
});
|
|
1430
|
+
}
|
|
1431
|
+
return () => {
|
|
1432
|
+
if (chartInstance.current) {
|
|
1433
|
+
chartInstance.current.destroy();
|
|
1434
|
+
}
|
|
1435
|
+
};
|
|
1436
|
+
}, [labels, data]);
|
|
1437
|
+
return /* @__PURE__ */ import_react34.default.createElement("div", { className: props.className }, /* @__PURE__ */ import_react34.default.createElement("canvas", { ref: chartRef }));
|
|
1438
|
+
};
|
|
1439
|
+
|
|
1440
|
+
// src/Components/DoubleBarChart.tsx
|
|
1441
|
+
var import_react35 = __toESM(require("react"));
|
|
1442
|
+
var import_auto2 = __toESM(require("chart.js/auto"));
|
|
1443
|
+
var DoubleBarChart = (props) => {
|
|
1444
|
+
const chartRef = (0, import_react35.useRef)(null);
|
|
1445
|
+
const chartInstance = (0, import_react35.useRef)(null);
|
|
1446
|
+
(0, import_react35.useEffect)(() => {
|
|
1447
|
+
if (chartRef.current) {
|
|
1448
|
+
if (chartInstance.current) {
|
|
1449
|
+
chartInstance.current.destroy();
|
|
1450
|
+
}
|
|
1451
|
+
chartInstance.current = new import_auto2.default(chartRef.current, {
|
|
1452
|
+
type: "bar",
|
|
1453
|
+
data: {
|
|
1454
|
+
labels: [
|
|
1455
|
+
"Summer Health Tips",
|
|
1456
|
+
"New Services Launch",
|
|
1457
|
+
"Discounts on Checkups",
|
|
1458
|
+
"Wellness Webinar",
|
|
1459
|
+
"LinkedIn Insights"
|
|
1460
|
+
],
|
|
1461
|
+
datasets: [
|
|
1462
|
+
{
|
|
1463
|
+
label: "Engagement Rate",
|
|
1464
|
+
data: [60, 70, 50, 80, 65],
|
|
1465
|
+
// Example data for male
|
|
1466
|
+
backgroundColor: "#93B8E2",
|
|
1467
|
+
barThickness: 10
|
|
1468
|
+
},
|
|
1469
|
+
{
|
|
1470
|
+
label: "Conversion Rate",
|
|
1471
|
+
data: [70, 65, 75, 55, 85],
|
|
1472
|
+
// Example data for female
|
|
1473
|
+
backgroundColor: "#4484CD",
|
|
1474
|
+
barThickness: 10
|
|
1475
|
+
}
|
|
1476
|
+
]
|
|
1477
|
+
},
|
|
1478
|
+
options: {
|
|
1479
|
+
scales: {
|
|
1480
|
+
x: {
|
|
1481
|
+
grid: {
|
|
1482
|
+
display: false
|
|
1483
|
+
// Display x-axis grid lines
|
|
1484
|
+
}
|
|
1485
|
+
},
|
|
1486
|
+
y: {
|
|
1487
|
+
beginAtZero: true,
|
|
1488
|
+
suggestedMax: 100,
|
|
1489
|
+
ticks: {
|
|
1490
|
+
callback: function(value) {
|
|
1491
|
+
return value + "%";
|
|
1492
|
+
}
|
|
1493
|
+
},
|
|
1494
|
+
grid: {
|
|
1495
|
+
display: true
|
|
1496
|
+
}
|
|
1497
|
+
}
|
|
1498
|
+
},
|
|
1499
|
+
plugins: {
|
|
1500
|
+
legend: {
|
|
1501
|
+
labels: {
|
|
1502
|
+
usePointStyle: true
|
|
1503
|
+
}
|
|
1504
|
+
}
|
|
1505
|
+
}
|
|
1506
|
+
}
|
|
1507
|
+
});
|
|
1508
|
+
}
|
|
1509
|
+
return () => {
|
|
1510
|
+
if (chartInstance.current) {
|
|
1511
|
+
chartInstance.current.destroy();
|
|
1512
|
+
}
|
|
1513
|
+
};
|
|
1514
|
+
}, []);
|
|
1515
|
+
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 }));
|
|
1516
|
+
};
|
|
1517
|
+
|
|
1518
|
+
// src/Components/BarChart.tsx
|
|
1519
|
+
var import_react36 = __toESM(require("react"));
|
|
1520
|
+
var import_react_chartjs_24 = require("react-chartjs-2");
|
|
1521
|
+
var import_chart4 = require("chart.js");
|
|
1522
|
+
import_chart4.Chart.register(import_chart4.BarElement, import_chart4.CategoryScale, import_chart4.LinearScale, import_chart4.Tooltip);
|
|
1523
|
+
var BarChart = (props) => {
|
|
1524
|
+
const data = {
|
|
1525
|
+
labels: [
|
|
1526
|
+
"17 June",
|
|
1527
|
+
"18 June",
|
|
1528
|
+
"19 June",
|
|
1529
|
+
"20 June",
|
|
1530
|
+
"21 June",
|
|
1531
|
+
"22 June",
|
|
1532
|
+
"23 June"
|
|
1533
|
+
],
|
|
1534
|
+
datasets: [
|
|
1535
|
+
{
|
|
1536
|
+
data: [30, 100, 270, 140, 120, 240],
|
|
1537
|
+
backgroundColor: "#1565C0",
|
|
1538
|
+
barThickness: 15
|
|
1539
|
+
}
|
|
1540
|
+
]
|
|
1541
|
+
};
|
|
1542
|
+
const options = {
|
|
1543
|
+
responsive: true,
|
|
1544
|
+
scales: {
|
|
1545
|
+
x: {
|
|
1546
|
+
beginAtZero: true,
|
|
1547
|
+
grid: {
|
|
1548
|
+
display: false
|
|
1549
|
+
}
|
|
1550
|
+
},
|
|
1551
|
+
y: {
|
|
1552
|
+
grid: {
|
|
1553
|
+
display: true
|
|
1554
|
+
},
|
|
1555
|
+
ticks: {
|
|
1556
|
+
min: 0,
|
|
1557
|
+
max: 400,
|
|
1558
|
+
stepSize: 200,
|
|
1559
|
+
callback: function(value) {
|
|
1560
|
+
return `${value}`;
|
|
1561
|
+
}
|
|
1562
|
+
}
|
|
1563
|
+
}
|
|
1564
|
+
},
|
|
1565
|
+
plugins: {
|
|
1566
|
+
tooltip: {
|
|
1567
|
+
enabled: true,
|
|
1568
|
+
callbacks: {
|
|
1569
|
+
label: function(context) {
|
|
1570
|
+
const label = context.label || "";
|
|
1571
|
+
const value = context.raw || 0;
|
|
1572
|
+
return ` ${label}: ${value}`;
|
|
1573
|
+
}
|
|
1574
|
+
}
|
|
1575
|
+
},
|
|
1576
|
+
legend: {
|
|
1577
|
+
display: false
|
|
1578
|
+
}
|
|
1579
|
+
}
|
|
1580
|
+
};
|
|
1581
|
+
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 }));
|
|
1582
|
+
};
|
|
923
1583
|
// Annotate the CommonJS export names for ESM import in node:
|
|
924
1584
|
0 && (module.exports = {
|
|
925
1585
|
AddMoreTable,
|
|
1586
|
+
BarChart,
|
|
926
1587
|
ButtonElement,
|
|
927
1588
|
CheckboxElement,
|
|
1589
|
+
CircleDonut,
|
|
928
1590
|
CkEditor,
|
|
929
1591
|
DatePickerElement,
|
|
930
1592
|
DateRangePickerElement,
|
|
1593
|
+
DoubleBarChart,
|
|
931
1594
|
DropDownGroup,
|
|
932
1595
|
FileUpload,
|
|
1596
|
+
HorizontalBarChart,
|
|
933
1597
|
Image,
|
|
1598
|
+
LineChart,
|
|
934
1599
|
MultipleSelectElement,
|
|
935
1600
|
Navbar,
|
|
936
1601
|
NumberElement,
|
|
1602
|
+
OtpElement,
|
|
937
1603
|
PasswordElement,
|
|
938
1604
|
RadioElement,
|
|
939
1605
|
SelectElement,
|
|
1606
|
+
SemiCircleDonut,
|
|
940
1607
|
Sidebar,
|
|
941
1608
|
SingleCheckbox,
|
|
942
1609
|
SingleSelectElement,
|
|
@@ -944,5 +1611,6 @@ var SwitchElement = () => /* @__PURE__ */ import_react28.default.createElement(i
|
|
|
944
1611
|
TableElement,
|
|
945
1612
|
TabsElement,
|
|
946
1613
|
TextElement,
|
|
947
|
-
TextareaElement
|
|
1614
|
+
TextareaElement,
|
|
1615
|
+
Upload
|
|
948
1616
|
});
|