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