@addsign/moje-agenda-shared-lib 0.0.37 → 0.0.40
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/assets/tailwind.css +62 -46
- package/dist/components/Button.js +7 -7
- package/dist/components/Button.js.map +1 -1
- package/dist/components/Calendar.js +32 -28
- package/dist/components/Calendar.js.map +1 -1
- package/dist/components/ConfirmationModalDialog.js +1 -3
- package/dist/components/ConfirmationModalDialog.js.map +1 -1
- package/dist/index-DPrqKh-7.js +16 -0
- package/dist/index-DPrqKh-7.js.map +1 -0
- package/package.json +16 -2
package/dist/assets/tailwind.css
CHANGED
|
@@ -638,10 +638,6 @@ video {
|
|
|
638
638
|
.m-4 {
|
|
639
639
|
margin: 1rem;
|
|
640
640
|
}
|
|
641
|
-
.mx-1 {
|
|
642
|
-
margin-left: 0.25rem;
|
|
643
|
-
margin-right: 0.25rem;
|
|
644
|
-
}
|
|
645
641
|
.mx-auto {
|
|
646
642
|
margin-left: auto;
|
|
647
643
|
margin-right: auto;
|
|
@@ -669,9 +665,6 @@ video {
|
|
|
669
665
|
.ml-1\.5 {
|
|
670
666
|
margin-left: 0.375rem;
|
|
671
667
|
}
|
|
672
|
-
.ml-4 {
|
|
673
|
-
margin-left: 1rem;
|
|
674
|
-
}
|
|
675
668
|
.ml-5 {
|
|
676
669
|
margin-left: 1.25rem;
|
|
677
670
|
}
|
|
@@ -914,16 +907,6 @@ video {
|
|
|
914
907
|
margin-right: calc(1.25rem * var(--tw-space-x-reverse));
|
|
915
908
|
margin-left: calc(1.25rem * calc(1 - var(--tw-space-x-reverse)));
|
|
916
909
|
}
|
|
917
|
-
.divide-x > :not([hidden]) ~ :not([hidden]) {
|
|
918
|
-
--tw-divide-x-reverse: 0;
|
|
919
|
-
border-right-width: calc(1px * var(--tw-divide-x-reverse));
|
|
920
|
-
border-left-width: calc(1px * calc(1 - var(--tw-divide-x-reverse)));
|
|
921
|
-
}
|
|
922
|
-
.divide-y > :not([hidden]) ~ :not([hidden]) {
|
|
923
|
-
--tw-divide-y-reverse: 0;
|
|
924
|
-
border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));
|
|
925
|
-
border-bottom-width: calc(1px * var(--tw-divide-y-reverse));
|
|
926
|
-
}
|
|
927
910
|
.self-stretch {
|
|
928
911
|
align-self: stretch;
|
|
929
912
|
}
|
|
@@ -942,6 +925,9 @@ video {
|
|
|
942
925
|
.whitespace-nowrap {
|
|
943
926
|
white-space: nowrap;
|
|
944
927
|
}
|
|
928
|
+
.\!rounded-full {
|
|
929
|
+
border-radius: 9999px !important;
|
|
930
|
+
}
|
|
945
931
|
.rounded-full {
|
|
946
932
|
border-radius: 9999px;
|
|
947
933
|
}
|
|
@@ -1014,26 +1000,27 @@ video {
|
|
|
1014
1000
|
--tw-border-opacity: 1;
|
|
1015
1001
|
border-color: rgb(220 38 38 / var(--tw-border-opacity));
|
|
1016
1002
|
}
|
|
1003
|
+
.border-secondary-border {
|
|
1004
|
+
border-color: var(--color-secondary-border);
|
|
1005
|
+
}
|
|
1017
1006
|
.border-transparent {
|
|
1018
1007
|
border-color: transparent;
|
|
1019
1008
|
}
|
|
1020
1009
|
.\!bg-danger {
|
|
1021
1010
|
background-color: var(--color-danger) !important;
|
|
1022
1011
|
}
|
|
1023
|
-
.\!bg-gray-500 {
|
|
1024
|
-
--tw-bg-opacity: 1 !important;
|
|
1025
|
-
background-color: rgb(107 114 128 / var(--tw-bg-opacity)) !important;
|
|
1026
|
-
}
|
|
1027
1012
|
.\!bg-primary {
|
|
1028
1013
|
background-color: var(--color-primary) !important;
|
|
1029
1014
|
}
|
|
1015
|
+
.\!bg-secondary {
|
|
1016
|
+
background-color: var(--color-secondary) !important;
|
|
1017
|
+
}
|
|
1018
|
+
.\!bg-success {
|
|
1019
|
+
background-color: var(--color-success) !important;
|
|
1020
|
+
}
|
|
1030
1021
|
.\!bg-transparent {
|
|
1031
1022
|
background-color: transparent !important;
|
|
1032
1023
|
}
|
|
1033
|
-
.\!bg-white {
|
|
1034
|
-
--tw-bg-opacity: 1 !important;
|
|
1035
|
-
background-color: rgb(255 255 255 / var(--tw-bg-opacity)) !important;
|
|
1036
|
-
}
|
|
1037
1024
|
.bg-black {
|
|
1038
1025
|
--tw-bg-opacity: 1;
|
|
1039
1026
|
background-color: rgb(0 0 0 / var(--tw-bg-opacity));
|
|
@@ -1046,10 +1033,6 @@ video {
|
|
|
1046
1033
|
--tw-bg-opacity: 1;
|
|
1047
1034
|
background-color: rgb(229 231 235 / var(--tw-bg-opacity));
|
|
1048
1035
|
}
|
|
1049
|
-
.bg-gray-400 {
|
|
1050
|
-
--tw-bg-opacity: 1;
|
|
1051
|
-
background-color: rgb(156 163 175 / var(--tw-bg-opacity));
|
|
1052
|
-
}
|
|
1053
1036
|
.bg-gray-50 {
|
|
1054
1037
|
--tw-bg-opacity: 1;
|
|
1055
1038
|
background-color: rgb(249 250 251 / var(--tw-bg-opacity));
|
|
@@ -1129,6 +1112,10 @@ video {
|
|
|
1129
1112
|
padding-left: 1.5rem;
|
|
1130
1113
|
padding-right: 1.5rem;
|
|
1131
1114
|
}
|
|
1115
|
+
.px-8 {
|
|
1116
|
+
padding-left: 2rem;
|
|
1117
|
+
padding-right: 2rem;
|
|
1118
|
+
}
|
|
1132
1119
|
.py-1 {
|
|
1133
1120
|
padding-top: 0.25rem;
|
|
1134
1121
|
padding-bottom: 0.25rem;
|
|
@@ -1149,10 +1136,17 @@ video {
|
|
|
1149
1136
|
padding-top: 0.75rem;
|
|
1150
1137
|
padding-bottom: 0.75rem;
|
|
1151
1138
|
}
|
|
1139
|
+
.py-4 {
|
|
1140
|
+
padding-top: 1rem;
|
|
1141
|
+
padding-bottom: 1rem;
|
|
1142
|
+
}
|
|
1152
1143
|
.py-px {
|
|
1153
1144
|
padding-top: 1px;
|
|
1154
1145
|
padding-bottom: 1px;
|
|
1155
1146
|
}
|
|
1147
|
+
.pb-4 {
|
|
1148
|
+
padding-bottom: 1rem;
|
|
1149
|
+
}
|
|
1156
1150
|
.pb-5 {
|
|
1157
1151
|
padding-bottom: 1.25rem;
|
|
1158
1152
|
}
|
|
@@ -1231,9 +1225,6 @@ video {
|
|
|
1231
1225
|
font-size: 0.75rem;
|
|
1232
1226
|
line-height: 1rem;
|
|
1233
1227
|
}
|
|
1234
|
-
.font-bold {
|
|
1235
|
-
font-weight: 700;
|
|
1236
|
-
}
|
|
1237
1228
|
.font-medium {
|
|
1238
1229
|
font-weight: 500;
|
|
1239
1230
|
}
|
|
@@ -1278,9 +1269,8 @@ video {
|
|
|
1278
1269
|
--tw-text-opacity: 1;
|
|
1279
1270
|
color: rgb(59 130 246 / var(--tw-text-opacity));
|
|
1280
1271
|
}
|
|
1281
|
-
.text-
|
|
1282
|
-
--
|
|
1283
|
-
color: rgb(243 244 246 / var(--tw-text-opacity));
|
|
1272
|
+
.text-danger-text {
|
|
1273
|
+
color: var(--color-danger-text);
|
|
1284
1274
|
}
|
|
1285
1275
|
.text-gray-200 {
|
|
1286
1276
|
--tw-text-opacity: 1;
|
|
@@ -1321,10 +1311,16 @@ video {
|
|
|
1321
1311
|
.text-primary {
|
|
1322
1312
|
color: var(--color-primary);
|
|
1323
1313
|
}
|
|
1314
|
+
.text-primary-text {
|
|
1315
|
+
color: var(--color-primary-text);
|
|
1316
|
+
}
|
|
1324
1317
|
.text-red-600 {
|
|
1325
1318
|
--tw-text-opacity: 1;
|
|
1326
1319
|
color: rgb(220 38 38 / var(--tw-text-opacity));
|
|
1327
1320
|
}
|
|
1321
|
+
.text-secondary-text {
|
|
1322
|
+
color: var(--color-secondary-text);
|
|
1323
|
+
}
|
|
1328
1324
|
.text-slate-600 {
|
|
1329
1325
|
--tw-text-opacity: 1;
|
|
1330
1326
|
color: rgb(71 85 105 / var(--tw-text-opacity));
|
|
@@ -1333,6 +1329,9 @@ video {
|
|
|
1333
1329
|
--tw-text-opacity: 1;
|
|
1334
1330
|
color: rgb(51 65 85 / var(--tw-text-opacity));
|
|
1335
1331
|
}
|
|
1332
|
+
.text-success-text {
|
|
1333
|
+
color: var(--color-success-text);
|
|
1334
|
+
}
|
|
1336
1335
|
.text-transparent {
|
|
1337
1336
|
color: transparent;
|
|
1338
1337
|
}
|
|
@@ -1404,37 +1403,54 @@ video {
|
|
|
1404
1403
|
|
|
1405
1404
|
|
|
1406
1405
|
|
|
1407
|
-
.hover
|
|
1408
|
-
--
|
|
1409
|
-
background-color: rgb(243 244 246 / var(--tw-bg-opacity));
|
|
1406
|
+
.hover\:\!bg-danger-hover:hover {
|
|
1407
|
+
background-color: var(--color-danger-hover) !important;
|
|
1410
1408
|
}
|
|
1411
1409
|
|
|
1412
1410
|
|
|
1413
1411
|
|
|
1414
|
-
.hover
|
|
1412
|
+
.hover\:\!bg-primary-hover:hover {
|
|
1413
|
+
background-color: var(--color-primary-hover) !important;
|
|
1414
|
+
}
|
|
1415
|
+
|
|
1416
|
+
|
|
1417
|
+
|
|
1418
|
+
.hover\:\!bg-secondary-hover:hover {
|
|
1419
|
+
background-color: var(--color-secondary-hover) !important;
|
|
1420
|
+
}
|
|
1421
|
+
|
|
1422
|
+
|
|
1423
|
+
|
|
1424
|
+
.hover\:\!bg-success-hover:hover {
|
|
1425
|
+
background-color: var(--color-success-hover) !important;
|
|
1426
|
+
}
|
|
1427
|
+
|
|
1428
|
+
|
|
1429
|
+
|
|
1430
|
+
.hover\:bg-gray-100:hover {
|
|
1415
1431
|
--tw-bg-opacity: 1;
|
|
1416
|
-
background-color: rgb(
|
|
1432
|
+
background-color: rgb(243 244 246 / var(--tw-bg-opacity));
|
|
1417
1433
|
}
|
|
1418
1434
|
|
|
1419
1435
|
|
|
1420
1436
|
|
|
1421
|
-
.hover\:bg-gray-
|
|
1437
|
+
.hover\:bg-gray-150:hover {
|
|
1422
1438
|
--tw-bg-opacity: 1;
|
|
1423
|
-
background-color: rgb(
|
|
1439
|
+
background-color: rgb(238 240 243 / var(--tw-bg-opacity));
|
|
1424
1440
|
}
|
|
1425
1441
|
|
|
1426
1442
|
|
|
1427
1443
|
|
|
1428
|
-
.hover\:bg-gray-
|
|
1444
|
+
.hover\:bg-gray-200:hover {
|
|
1429
1445
|
--tw-bg-opacity: 1;
|
|
1430
|
-
background-color: rgb(
|
|
1446
|
+
background-color: rgb(229 231 235 / var(--tw-bg-opacity));
|
|
1431
1447
|
}
|
|
1432
1448
|
|
|
1433
1449
|
|
|
1434
1450
|
|
|
1435
|
-
.hover\:bg-gray-
|
|
1451
|
+
.hover\:bg-gray-50:hover {
|
|
1436
1452
|
--tw-bg-opacity: 1;
|
|
1437
|
-
background-color: rgb(
|
|
1453
|
+
background-color: rgb(249 250 251 / var(--tw-bg-opacity));
|
|
1438
1454
|
}
|
|
1439
1455
|
|
|
1440
1456
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import '../assets/tailwind.css';/* empty css */
|
|
3
|
-
const commonStyles = " py-2 px-4 leading-[25px] ";
|
|
3
|
+
const commonStyles = " py-2 px-4 leading-[25px] w-fit rounded-lg whitespace-nowrap font-medium disabled:opacity-50 ";
|
|
4
4
|
const buttonStyles = {
|
|
5
|
-
primary: "!bg-primary
|
|
6
|
-
secondary: "!bg-
|
|
7
|
-
transparent: "!bg-transparent border border-transparent hover:bg-gray-100 hover:border-gray-200
|
|
8
|
-
success: "!bg-
|
|
9
|
-
danger: "!bg-danger text-
|
|
10
|
-
icon: "
|
|
5
|
+
primary: "!bg-primary hover:!bg-primary-hover text-primary-text ",
|
|
6
|
+
secondary: "!bg-secondary hover:!bg-secondary-hover text-secondary-text border border-secondary-border ",
|
|
7
|
+
transparent: "!bg-transparent border border-transparent hover:bg-gray-100 hover:border-gray-200 ",
|
|
8
|
+
success: "!bg-success hover:!bg-success-hover text-success-text ",
|
|
9
|
+
danger: "!bg-danger hover:!bg-danger-hover text-danger-text ",
|
|
10
|
+
icon: " !rounded-full text-center inline-flex items-center "
|
|
11
11
|
};
|
|
12
12
|
const Button = ({
|
|
13
13
|
variant = "primary",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.js","sources":["../../lib/components/Button.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport \"../css/tailwind.css\";\r\n\r\ntype ButtonVariant =\r\n | \"primary\"\r\n | \"secondary\"\r\n | \"transparent\"\r\n | \"success\"\r\n | \"danger\"\r\n | \"icon\";\r\n\r\ninterface IButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: ButtonVariant;\r\n}\r\nconst commonStyles
|
|
1
|
+
{"version":3,"file":"Button.js","sources":["../../lib/components/Button.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport \"../css/tailwind.css\";\r\n\r\ntype ButtonVariant =\r\n | \"primary\"\r\n | \"secondary\"\r\n | \"transparent\"\r\n | \"success\"\r\n | \"danger\"\r\n | \"icon\";\r\n\r\ninterface IButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: ButtonVariant;\r\n}\r\nconst commonStyles =\r\n \" py-2 px-4 leading-[25px] w-fit rounded-lg whitespace-nowrap font-medium disabled:opacity-50 \";\r\nconst buttonStyles: { [key in ButtonVariant]: string } = {\r\n primary: \"!bg-primary hover:!bg-primary-hover text-primary-text \",\r\n secondary:\r\n \"!bg-secondary hover:!bg-secondary-hover text-secondary-text border border-secondary-border \",\r\n transparent:\r\n \"!bg-transparent border border-transparent hover:bg-gray-100 hover:border-gray-200 \",\r\n success: \"!bg-success hover:!bg-success-hover text-success-text \",\r\n danger: \"!bg-danger hover:!bg-danger-hover text-danger-text \",\r\n\r\n icon: \" !rounded-full text-center inline-flex items-center \",\r\n};\r\nconst Button: React.FC<IButtonProps> = ({\r\n variant = \"primary\",\r\n children,\r\n onClick,\r\n className,\r\n ...props\r\n}) => {\r\n const classNames = commonStyles + buttonStyles[variant];\r\n\r\n return (\r\n <button\r\n className={classNames + \" \" + (className || \" sharedLibraryource \")}\r\n onClick={onClick}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n );\r\n};\r\n\r\nexport default Button;\r\n"],"names":[],"mappings":";;AAcA,MAAM,eACJ;AACF,MAAM,eAAmD;AAAA,EACvD,SAAS;AAAA,EACT,WACE;AAAA,EACF,aACE;AAAA,EACF,SAAS;AAAA,EACT,QAAQ;AAAA,EAER,MAAM;AACR;AACA,MAAM,SAAiC,CAAC;AAAA,EACtC,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACE,QAAA,aAAa,eAAe,aAAa,OAAO;AAGpD,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,aAAa,OAAO,aAAa;AAAA,MAC5C;AAAA,MACC,GAAG;AAAA,MAEH;AAAA,IAAA;AAAA,EAAA;AAGP;"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
2
|
import React, { useState, useCallback, useEffect } from "react";
|
|
3
|
+
import { F as FaChevronLeft, a as FaChevronRight } from "../index-DPrqKh-7.js";
|
|
3
4
|
const Calendar = ({ items }) => {
|
|
4
5
|
const [currentMonth, setCurrentMonth] = useState(
|
|
5
6
|
(/* @__PURE__ */ new Date()).getMonth()
|
|
@@ -84,51 +85,54 @@ const Calendar = ({ items }) => {
|
|
|
84
85
|
const date = new Date(year, month, day);
|
|
85
86
|
return items.filter((item) => date >= item.from && date <= item.to);
|
|
86
87
|
};
|
|
87
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col bg-white shadow-lg flex-grow text-xs", children: [
|
|
88
|
-
/* @__PURE__ */ jsxs("div", { className: "flex justify-between items-center
|
|
89
|
-
/* @__PURE__ */
|
|
88
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col bg-white shadow-lg flex-grow text-xs rounded-lg border", children: [
|
|
89
|
+
/* @__PURE__ */ jsxs("div", { className: "flex justify-between items-center text-black p-2", children: [
|
|
90
|
+
/* @__PURE__ */ jsx(
|
|
91
|
+
"div",
|
|
92
|
+
{
|
|
93
|
+
onClick: goToPreviousMonth,
|
|
94
|
+
className: "mr-5 px-8 py-4 cursor-pointer hover:bg-gray-100 rounded-xl text-sm",
|
|
95
|
+
children: /* @__PURE__ */ jsx(FaChevronLeft, {})
|
|
96
|
+
}
|
|
97
|
+
),
|
|
98
|
+
/* @__PURE__ */ jsxs("h2", { className: "font-semibold text-base", children: [
|
|
90
99
|
monthNames[currentMonth],
|
|
91
100
|
" ",
|
|
92
101
|
currentYear
|
|
93
102
|
] }),
|
|
94
|
-
/* @__PURE__ */
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
}
|
|
103
|
-
),
|
|
104
|
-
/* @__PURE__ */ jsx(
|
|
105
|
-
"button",
|
|
106
|
-
{
|
|
107
|
-
type: "button",
|
|
108
|
-
onClick: goToNextMonth,
|
|
109
|
-
className: "mx-1 px-3 py-2 text-black bg-gray-400 hover:bg-gray-500",
|
|
110
|
-
children: "Následující"
|
|
111
|
-
}
|
|
112
|
-
)
|
|
113
|
-
] })
|
|
103
|
+
/* @__PURE__ */ jsx(
|
|
104
|
+
"div",
|
|
105
|
+
{
|
|
106
|
+
onClick: goToNextMonth,
|
|
107
|
+
className: "px-8 py-4 cursor-pointer hover:bg-gray-100 rounded-xl text-sm",
|
|
108
|
+
children: /* @__PURE__ */ jsx(FaChevronRight, {})
|
|
109
|
+
}
|
|
110
|
+
)
|
|
114
111
|
] }),
|
|
115
|
-
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-7
|
|
116
|
-
dayNames.map((day, index) => /* @__PURE__ */ jsx(
|
|
112
|
+
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-7 pb-4", children: [
|
|
113
|
+
dayNames.map((day, index) => /* @__PURE__ */ jsx(
|
|
114
|
+
"div",
|
|
115
|
+
{
|
|
116
|
+
className: "py-1 px-4 text-center font-semibold border-t",
|
|
117
|
+
children: day
|
|
118
|
+
},
|
|
119
|
+
index
|
|
120
|
+
)),
|
|
117
121
|
calendarData.map((week, weekIndex) => /* @__PURE__ */ jsx(React.Fragment, { children: week.map((day, dayIndex) => {
|
|
118
122
|
const itemsForDay = day ? findItemsForDay(day, currentMonth, currentYear) : [];
|
|
119
123
|
return /* @__PURE__ */ jsxs(
|
|
120
124
|
"div",
|
|
121
125
|
{
|
|
122
|
-
className: "p-0 align-middle justify-center text-center",
|
|
126
|
+
className: "p-0 align-middle justify-center text-center border-t hover:bg-gray-150 " + (dayIndex > 4 ? "bg-gray-100" : ""),
|
|
123
127
|
children: [
|
|
124
|
-
/* @__PURE__ */ jsxs("div", { className: "py-1
|
|
128
|
+
day && /* @__PURE__ */ jsxs("div", { className: "py-1", children: [
|
|
125
129
|
day,
|
|
126
130
|
" "
|
|
127
131
|
] }),
|
|
128
132
|
itemsForDay.map((item, itemIndex) => /* @__PURE__ */ jsx(
|
|
129
133
|
"div",
|
|
130
134
|
{
|
|
131
|
-
className: "dataItem w-full py-1 bg-primary text-white text-center mt-0",
|
|
135
|
+
className: "dataItem w-full py-1 bg-primary text-white text-center mt-0 -pr-1",
|
|
132
136
|
style: {
|
|
133
137
|
backgroundColor: item.background,
|
|
134
138
|
color: item.color
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Calendar.js","sources":["../../lib/components/Calendar.tsx"],"sourcesContent":["import React, { useState, useEffect, useCallback } from \"react\";\n\nexport interface ICalendarItem {\n id: number;\n label?: string;\n from: Date;\n to: Date;\n background?: string;\n color?: string;\n tooltip?: string;\n}\n\ntype ICalendarProps = {\n items: ICalendarItem[];\n};\n\n// Check if a day is within any item's date range\n\nconst Calendar: React.FunctionComponent<ICalendarProps> = ({ items }) => {\n const [currentMonth, setCurrentMonth] = useState<number>(\n new Date().getMonth()\n );\n const [currentYear, setCurrentYear] = useState<number>(\n new Date().getFullYear()\n );\n const [calendarData, setCalendarData] = useState<(string | number)[][]>([]);\n\n const monthNames: string[] = [\n \"Leden\",\n \"Únor\",\n \"Březen\",\n \"Duben\",\n \"Květen\",\n \"Červen\",\n \"Červenec\",\n \"Srpen\",\n \"Září\",\n \"Říjen\",\n \"Listopad\",\n \"Prosinec\",\n ];\n const dayNames: string[] = [\n \"Pondělí\",\n \"Úterý\",\n \"Středa\",\n \"Čtvrtek\",\n \"Pátek\",\n \"Sobota\",\n \"Neděle\",\n ];\n\n // Leap year check\n const isLeapYear = (year: number) =>\n (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n\n // Days in each month\n const daysInMonth = useCallback((month: number, year: number) => {\n if (month === 1) {\n // February\n return isLeapYear(year) ? 29 : 28;\n }\n if ([0, 2, 4, 6, 7, 9, 11].includes(month)) {\n // Months with 31 days\n\n return 31;\n }\n\n return 30; // Months with 30 days\n }, []);\n\n // Generate days for a month\n const generateMonthDays = useCallback(\n (month: number, year: number) => {\n const days = [];\n // const firstDayOfMonth = new Date(year, month, 1).getDay()\n\n // Adjusted to make week start from Monday\n let firstDayOfMonth = new Date(year, month, 1).getDay() - 1;\n if (firstDayOfMonth === -1) firstDayOfMonth = 6; // Sunday becomes 6 instead of -1\n\n let dayCounter = 1;\n\n for (let week = 0; week < 6; week++) {\n const weekDays = [];\n for (let day = 0; day < 7; day++) {\n if (week === 0 && day < firstDayOfMonth) {\n weekDays.push(\"\");\n } else if (dayCounter > daysInMonth(month, year)) {\n weekDays.push(\"\");\n } else {\n weekDays.push(dayCounter++);\n }\n }\n days.push(weekDays);\n }\n return days;\n },\n [daysInMonth]\n );\n\n useEffect(() => {\n setCalendarData(generateMonthDays(currentMonth, currentYear));\n }, [currentMonth, currentYear, generateMonthDays]);\n\n // Navigation handlers\n const goToNextMonth = () => {\n setCurrentMonth((prev) => (prev === 11 ? 0 : prev + 1));\n if (currentMonth === 11) {\n setCurrentYear((prev) => prev + 1);\n }\n };\n\n const goToPreviousMonth = () => {\n setCurrentMonth((prev) => (prev === 0 ? 11 : prev - 1));\n if (currentMonth === 0) {\n setCurrentYear((prev) => prev - 1);\n }\n };\n const findItemsForDay = (\n day: number,\n month: number,\n year: number\n ): ICalendarItem[] => {\n const date = new Date(year, month, day);\n return items.filter((item) => date >= item.from && date <= item.to);\n };\n return (\n <div className=\"flex flex-col bg-white shadow-lg flex-grow text-xs\">\n <div className=\"flex justify-between items-center
|
|
1
|
+
{"version":3,"file":"Calendar.js","sources":["../../lib/components/Calendar.tsx"],"sourcesContent":["import React, { useState, useEffect, useCallback } from \"react\";\r\nimport { FaChevronLeft, FaChevronRight } from \"react-icons/fa\";\r\n\r\nexport interface ICalendarItem {\r\n id: number;\r\n label?: string;\r\n from: Date;\r\n to: Date;\r\n background?: string;\r\n color?: string;\r\n tooltip?: string;\r\n}\r\n\r\ntype ICalendarProps = {\r\n items: ICalendarItem[];\r\n};\r\n\r\n// Check if a day is within any item's date range\r\n\r\nconst Calendar: React.FunctionComponent<ICalendarProps> = ({ items }) => {\r\n const [currentMonth, setCurrentMonth] = useState<number>(\r\n new Date().getMonth()\r\n );\r\n const [currentYear, setCurrentYear] = useState<number>(\r\n new Date().getFullYear()\r\n );\r\n const [calendarData, setCalendarData] = useState<(string | number)[][]>([]);\r\n\r\n const monthNames: string[] = [\r\n \"Leden\",\r\n \"Únor\",\r\n \"Březen\",\r\n \"Duben\",\r\n \"Květen\",\r\n \"Červen\",\r\n \"Červenec\",\r\n \"Srpen\",\r\n \"Září\",\r\n \"Říjen\",\r\n \"Listopad\",\r\n \"Prosinec\",\r\n ];\r\n const dayNames: string[] = [\r\n \"Pondělí\",\r\n \"Úterý\",\r\n \"Středa\",\r\n \"Čtvrtek\",\r\n \"Pátek\",\r\n \"Sobota\",\r\n \"Neděle\",\r\n ];\r\n\r\n // Leap year check\r\n const isLeapYear = (year: number) =>\r\n (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\r\n\r\n // Days in each month\r\n const daysInMonth = useCallback((month: number, year: number) => {\r\n if (month === 1) {\r\n // February\r\n return isLeapYear(year) ? 29 : 28;\r\n }\r\n if ([0, 2, 4, 6, 7, 9, 11].includes(month)) {\r\n // Months with 31 days\r\n\r\n return 31;\r\n }\r\n\r\n return 30; // Months with 30 days\r\n }, []);\r\n\r\n // Generate days for a month\r\n const generateMonthDays = useCallback(\r\n (month: number, year: number) => {\r\n const days = [];\r\n // const firstDayOfMonth = new Date(year, month, 1).getDay()\r\n\r\n // Adjusted to make week start from Monday\r\n let firstDayOfMonth = new Date(year, month, 1).getDay() - 1;\r\n if (firstDayOfMonth === -1) firstDayOfMonth = 6; // Sunday becomes 6 instead of -1\r\n\r\n let dayCounter = 1;\r\n\r\n for (let week = 0; week < 6; week++) {\r\n const weekDays = [];\r\n for (let day = 0; day < 7; day++) {\r\n if (week === 0 && day < firstDayOfMonth) {\r\n weekDays.push(\"\");\r\n } else if (dayCounter > daysInMonth(month, year)) {\r\n weekDays.push(\"\");\r\n } else {\r\n weekDays.push(dayCounter++);\r\n }\r\n }\r\n days.push(weekDays);\r\n }\r\n return days;\r\n },\r\n [daysInMonth]\r\n );\r\n\r\n useEffect(() => {\r\n setCalendarData(generateMonthDays(currentMonth, currentYear));\r\n }, [currentMonth, currentYear, generateMonthDays]);\r\n\r\n // Navigation handlers\r\n const goToNextMonth = () => {\r\n setCurrentMonth((prev) => (prev === 11 ? 0 : prev + 1));\r\n if (currentMonth === 11) {\r\n setCurrentYear((prev) => prev + 1);\r\n }\r\n };\r\n\r\n const goToPreviousMonth = () => {\r\n setCurrentMonth((prev) => (prev === 0 ? 11 : prev - 1));\r\n if (currentMonth === 0) {\r\n setCurrentYear((prev) => prev - 1);\r\n }\r\n };\r\n const findItemsForDay = (\r\n day: number,\r\n month: number,\r\n year: number\r\n ): ICalendarItem[] => {\r\n const date = new Date(year, month, day);\r\n return items.filter((item) => date >= item.from && date <= item.to);\r\n };\r\n return (\r\n <div className=\"flex flex-col bg-white shadow-lg flex-grow text-xs rounded-lg border\">\r\n <div className=\"flex justify-between items-center text-black p-2\">\r\n <div\r\n onClick={goToPreviousMonth}\r\n className=\"mr-5 px-8 py-4 cursor-pointer hover:bg-gray-100 rounded-xl text-sm\"\r\n >\r\n <FaChevronLeft />\r\n </div>\r\n <h2 className=\"font-semibold text-base\">\r\n {monthNames[currentMonth]} {currentYear}\r\n </h2>\r\n\r\n <div\r\n onClick={goToNextMonth}\r\n className=\"px-8 py-4 cursor-pointer hover:bg-gray-100 rounded-xl text-sm\"\r\n >\r\n <FaChevronRight />\r\n </div>\r\n </div>\r\n <div className=\"grid grid-cols-7 pb-4\">\r\n {dayNames.map((day, index) => (\r\n <div\r\n key={index}\r\n className=\"py-1 px-4 text-center font-semibold border-t\"\r\n >\r\n {day}\r\n </div>\r\n ))}\r\n {calendarData.map((week, weekIndex) => (\r\n <React.Fragment key={weekIndex}>\r\n {week.map((day, dayIndex) => {\r\n const itemsForDay = day\r\n ? findItemsForDay(day as number, currentMonth, currentYear)\r\n : [];\r\n return (\r\n <div\r\n key={dayIndex}\r\n className={\r\n \"p-0 align-middle justify-center text-center border-t hover:bg-gray-150 \" +\r\n (dayIndex > 4 ? \"bg-gray-100\" : \"\")\r\n }\r\n >\r\n {day && <div className=\"py-1\">{day} </div>}\r\n {itemsForDay.map((item, itemIndex) => (\r\n <div\r\n key={itemIndex}\r\n className=\"dataItem w-full py-1 bg-primary text-white text-center mt-0 -pr-1\"\r\n style={{\r\n backgroundColor: item.background,\r\n color: item.color,\r\n }}\r\n data-tooltip-target={\"tooltip-\" + item.id}\r\n title={item.tooltip}\r\n >\r\n {item.label}\r\n </div>\r\n ))}\r\n </div>\r\n );\r\n })}\r\n </React.Fragment>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Calendar;\r\n"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useEffect } from "react";
|
|
3
|
+
import { b as FaRegTrashAlt } from "../index-DPrqKh-7.js";
|
|
3
4
|
import { G as GenIcon } from "../iconBase-BY_L6Cb_.js";
|
|
4
|
-
function FaRegTrashAlt(props) {
|
|
5
|
-
return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 448 512" }, "child": [{ "tag": "path", "attr": { "d": "M268 416h24a12 12 0 0 0 12-12V188a12 12 0 0 0-12-12h-24a12 12 0 0 0-12 12v216a12 12 0 0 0 12 12zM432 80h-82.41l-34-56.7A48 48 0 0 0 274.41 0H173.59a48 48 0 0 0-41.16 23.3L98.41 80H16A16 16 0 0 0 0 96v16a16 16 0 0 0 16 16h16v336a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128h16a16 16 0 0 0 16-16V96a16 16 0 0 0-16-16zM171.84 50.91A6 6 0 0 1 177 48h94a6 6 0 0 1 5.15 2.91L293.61 80H154.39zM368 464H80V128h288zm-212-48h24a12 12 0 0 0 12-12V188a12 12 0 0 0-12-12h-24a12 12 0 0 0-12 12v216a12 12 0 0 0 12 12z" }, "child": [] }] })(props);
|
|
6
|
-
}
|
|
7
5
|
function IoCloseOutline(props) {
|
|
8
6
|
return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 512 512" }, "child": [{ "tag": "path", "attr": { "fill": "none", "strokeLinecap": "round", "strokeLinejoin": "round", "strokeWidth": "32", "d": "M368 368 144 144m224 0L144 368" }, "child": [] }] })(props);
|
|
9
7
|
}
|