venice-ui 2.0.23 → 2.0.24

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.
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.Calendar = void 0;
27
+ const react_1 = __importStar(require("react"));
28
+ const DatePiocker_styles_1 = require("./DatePiocker.styles");
29
+ const Aligment_1 = require("../Aligment");
30
+ const CalendarHeader_1 = require("./CalendarHeader");
31
+ const date_fns_1 = require("date-fns");
32
+ const CalendarContent_1 = require("./CalendarContent");
33
+ const ButtonsFooter_1 = require("../ButtonsFooter");
34
+ const Calendar = ({ value, top, left, size, handleClose, handleSelect, }) => {
35
+ const [calendarSettings, updateCalendarSettings] = (0, react_1.useState)({
36
+ mode: 'day',
37
+ value: 0,
38
+ date: new Date(),
39
+ yearsScope: [],
40
+ });
41
+ const [selectedDate, setSellectedDate] = (0, react_1.useState)(new Date(value !== undefined ? value : (0, date_fns_1.getTime)(new Date())));
42
+ const setYearScope = (date) => {
43
+ const year = (0, date_fns_1.getYear)(date);
44
+ const yearIndex = year % 12;
45
+ const pastYears = Array.from({ length: yearIndex }, (_, i) => year - (i + 1)).reverse();
46
+ const futureYears = Array.from({ length: 12 - yearIndex - 1 }, (_, i) => year + (i + 1));
47
+ return [...pastYears, year, ...futureYears];
48
+ };
49
+ (0, react_1.useEffect)(() => {
50
+ value !== undefined ? value : (0, date_fns_1.getTime)(new Date()),
51
+ updateCalendarSettings({
52
+ ...calendarSettings,
53
+ value: (0, date_fns_1.getTime)(new Date(selectedDate)),
54
+ date: selectedDate,
55
+ yearsScope: setYearScope(selectedDate),
56
+ });
57
+ }, [value, selectedDate]);
58
+ const setPeriod = (mode, forward) => {
59
+ const operations = {
60
+ day: forward ? date_fns_1.addMonths : date_fns_1.subMonths,
61
+ month: forward ? date_fns_1.addYears : date_fns_1.subYears,
62
+ year: forward ? date_fns_1.addYears : date_fns_1.subYears,
63
+ };
64
+ const step = mode === 'year' ? 12 : 1;
65
+ const modifyDate = operations[mode];
66
+ setSellectedDate(modifyDate(calendarSettings.date, step));
67
+ };
68
+ const setMode = (mode) => {
69
+ updateCalendarSettings({
70
+ ...calendarSettings,
71
+ mode: mode,
72
+ });
73
+ };
74
+ const setNewDate = (newDate) => {
75
+ setSellectedDate(newDate);
76
+ };
77
+ const confirmDate = () => {
78
+ handleSelect((0, date_fns_1.getTime)(new Date(selectedDate)));
79
+ };
80
+ const setToday = () => {
81
+ setSellectedDate(new Date());
82
+ };
83
+ return (react_1.default.createElement(react_1.default.Fragment, null,
84
+ react_1.default.createElement(DatePiocker_styles_1.CalendarWrapper
85
+ // top={top}
86
+ , {
87
+ // top={top}
88
+ top: 225, left: left, size: size },
89
+ react_1.default.createElement(Aligment_1.Aligment, { direction: "row" },
90
+ react_1.default.createElement(CalendarHeader_1.CalendarHeader, { mode: calendarSettings.mode, date: calendarSettings.date, yearsScope: calendarSettings.yearsScope, handleChange: setPeriod, handleSelect: setMode }),
91
+ react_1.default.createElement(CalendarContent_1.CalendarContent, { date: calendarSettings.date, mode: calendarSettings.mode, handleChange: setNewDate, changeMode: setMode, yearsScope: calendarSettings.yearsScope }),
92
+ react_1.default.createElement(ButtonsFooter_1.ButtonsFooter, { handleClose: handleClose, handleConfirm: confirmDate, handleAdditional: setToday, labelClose: 'Zamknij', labelConfirm: 'Wybierz', labelAdditional: "Dzi\u015B", additionaNormalMode: true }))),
93
+ react_1.default.createElement(DatePiocker_styles_1.CalendarOverlay, null)));
94
+ };
95
+ exports.Calendar = Calendar;
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.CalendarContent = void 0;
27
+ const react_1 = __importStar(require("react"));
28
+ const DatePiocker_styles_1 = require("./DatePiocker.styles");
29
+ const date_fns_1 = require("date-fns");
30
+ const Aligment_1 = require("../Aligment");
31
+ const CalendarContent = ({ date, handleChange, changeMode, mode, yearsScope, }) => {
32
+ const [days, setDays] = (0, react_1.useState)([]);
33
+ const firstDayOfMonth = (0, date_fns_1.startOfMonth)(date);
34
+ const daysInMonth = (0, date_fns_1.getDaysInMonth)(date);
35
+ const firstDayIndex = (0, date_fns_1.getDay)(firstDayOfMonth);
36
+ const beforeIndex = firstDayIndex === 0 ? 6 : firstDayIndex - 1;
37
+ (0, react_1.useEffect)(() => {
38
+ const daysScope = [];
39
+ for (let i = 1; i <= beforeIndex; i++) {
40
+ daysScope.push('');
41
+ }
42
+ for (let j = 1; j <= daysInMonth; j++) {
43
+ daysScope.push(j.toString());
44
+ }
45
+ setDays(daysScope);
46
+ }, [date]);
47
+ const setDay = (day) => {
48
+ if (!isNaN(day)) {
49
+ const newDate = (0, date_fns_1.setDate)(date, day);
50
+ handleChange(newDate);
51
+ }
52
+ };
53
+ const handleSetMonth = (month) => {
54
+ if (!isNaN(month)) {
55
+ const newDate = (0, date_fns_1.setMonth)(date, month);
56
+ handleChange(newDate);
57
+ changeMode('day');
58
+ }
59
+ };
60
+ const handleSetYear = (year) => {
61
+ if (!isNaN(year)) {
62
+ const newDate = (0, date_fns_1.setYear)(date, year);
63
+ handleChange(newDate);
64
+ changeMode('month');
65
+ }
66
+ };
67
+ const daysName = ['Pon', 'Wt', 'Śr', 'Cz', 'P', 'Sob', 'Nd'];
68
+ const monthNames = [
69
+ 'styczeń',
70
+ 'luty',
71
+ 'marzec',
72
+ 'kwiecień',
73
+ 'maj',
74
+ 'czerwiec',
75
+ 'lipiec',
76
+ 'sierpień',
77
+ 'wrzesień',
78
+ 'październik',
79
+ 'listopad',
80
+ 'grudzień',
81
+ ];
82
+ return (react_1.default.createElement(DatePiocker_styles_1.CalendarContentWrapper, null,
83
+ mode === 'day' && (react_1.default.createElement(Aligment_1.Aligment, { wrap: "wrap" },
84
+ react_1.default.createElement(DatePiocker_styles_1.DaysHeader, null, daysName.map((_item) => (react_1.default.createElement(DatePiocker_styles_1.DayLabelWrapper, null,
85
+ react_1.default.createElement(DatePiocker_styles_1.DayLabel, null, _item))))),
86
+ react_1.default.createElement(DatePiocker_styles_1.DaysContent, null, days.map((_day) => (react_1.default.createElement(DatePiocker_styles_1.DayWrapper, null,
87
+ react_1.default.createElement(DatePiocker_styles_1.Day, { active: parseInt(_day) === (0, date_fns_1.getDate)(date), haveContent: _day !== '', onClick: () => setDay(parseInt(_day)) }, _day))))))),
88
+ mode === 'month' && (react_1.default.createElement(Aligment_1.Aligment, { wrap: "wrap" }, monthNames.map((_month, index) => (react_1.default.createElement(DatePiocker_styles_1.MonthWrapper, null,
89
+ react_1.default.createElement(DatePiocker_styles_1.Month, { active: index === (0, date_fns_1.getMonth)(date), onClick: () => handleSetMonth(index) }, _month)))))),
90
+ mode === 'year' && (react_1.default.createElement(Aligment_1.Aligment, { wrap: "wrap" }, yearsScope.map((_year) => (react_1.default.createElement(DatePiocker_styles_1.MonthWrapper, null,
91
+ react_1.default.createElement(DatePiocker_styles_1.Month, { active: _year === (0, date_fns_1.getYear)(date), onClick: () => handleSetYear(_year) }, _year))))))));
92
+ };
93
+ exports.CalendarContent = CalendarContent;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.CalendarHeader = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const DatePiocker_styles_1 = require("./DatePiocker.styles");
9
+ const Aligment_1 = require("../Aligment");
10
+ const Icons_1 = require("../Icons");
11
+ const Typography_1 = require("../Typography");
12
+ const date_fns_1 = require("date-fns");
13
+ const locale_1 = require("date-fns/locale");
14
+ const CalendarHeader = ({ date, mode, yearsScope, handleChange, handleSelect, }) => {
15
+ const prev = () => {
16
+ handleChange(mode, false);
17
+ };
18
+ const next = () => {
19
+ handleChange(mode, true);
20
+ };
21
+ const setMode = (mode) => {
22
+ handleSelect(mode);
23
+ };
24
+ return (react_1.default.createElement(DatePiocker_styles_1.CalendarHeaderWrapper, null,
25
+ react_1.default.createElement(Aligment_1.Aligment, null,
26
+ react_1.default.createElement(Icons_1.Icon, { name: 'back', onClick: prev }),
27
+ react_1.default.createElement(DatePiocker_styles_1.CalendarHeaderTexts, null,
28
+ mode === 'day' && (react_1.default.createElement(Typography_1.Text, { action: true, onClick: () => setMode('month') }, (0, date_fns_1.format)(date, 'LLLL', { locale: locale_1.pl }))),
29
+ mode === 'year' ? (react_1.default.createElement(Typography_1.Text, null, `${yearsScope[0]} - ${yearsScope[yearsScope.length - 1]}`)) : (react_1.default.createElement(Typography_1.Text, { action: true, onClick: () => setMode('year') }, (0, date_fns_1.getYear)(date)))),
30
+ react_1.default.createElement(Icons_1.Icon, { name: 'forward', onClick: next }))));
31
+ };
32
+ exports.CalendarHeader = CalendarHeader;
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.DatePicker = void 0;
27
+ const Input_1 = require("../Input");
28
+ const Aligment_1 = require("../Aligment");
29
+ const react_1 = __importStar(require("react"));
30
+ const styled_components_1 = require("styled-components");
31
+ const Theme_1 = require("../../Theme");
32
+ const DatePiocker_styles_1 = require("./DatePiocker.styles");
33
+ const Dropdown_1 = require("../Dropdown");
34
+ const react_dom_1 = require("react-dom");
35
+ const Calendar_1 = require("./Calendar");
36
+ const date_fns_1 = require("date-fns");
37
+ const Icons_1 = require("../Icons");
38
+ const DatePicker = ({ label, labelPosition = 'top', value, name, disabled = false, size = 'medium', width, error, theme = Theme_1.mainTheme, readOnly = false, position = 'left', placeholder = 'Select date', handleChange, }) => {
39
+ const [open, toogleOpen] = (0, react_1.useState)(false);
40
+ const sourceRef = (0, react_1.useRef)(null);
41
+ const [dropdownStyles, setDropdownStyles] = (0, react_1.useState)({
42
+ top: 0,
43
+ left: 0,
44
+ });
45
+ const onSubmit = (selectedDate) => {
46
+ handleChange(name, selectedDate);
47
+ toogleOpen(false);
48
+ };
49
+ const clearDate = () => {
50
+ handleChange(name, undefined);
51
+ toogleOpen(false);
52
+ };
53
+ const handleOpen = () => {
54
+ if (!disabled && !open) {
55
+ if (sourceRef.current) {
56
+ const buttonRect = sourceRef.current.getBoundingClientRect();
57
+ const positionStyle = {
58
+ top: buttonRect.bottom + window.scrollY,
59
+ left: buttonRect.left + window.scrollX,
60
+ };
61
+ setDropdownStyles(positionStyle);
62
+ }
63
+ toogleOpen(!open);
64
+ }
65
+ };
66
+ return (react_1.default.createElement(styled_components_1.ThemeProvider, { theme: theme },
67
+ react_1.default.createElement(Aligment_1.Aligment, { align: labelPosition === 'top' ? 'flex-start' : 'center', direction: labelPosition === 'top' ? 'column' : 'row', wrap: 'nowrap' },
68
+ label && (react_1.default.createElement(Input_1.InputLabelElement, { size: size, labelPosition: labelPosition }, label)),
69
+ react_1.default.createElement(Input_1.InputWrapper, { width: width }, readOnly ? (react_1.default.createElement(Input_1.InputReadOnlyElement, { inputSize: size }, value)) : (react_1.default.createElement(DatePiocker_styles_1.DatePiockerElement, { ref: sourceRef },
70
+ react_1.default.createElement(Dropdown_1.Field, { inputSize: size, disabled: disabled, width: width, active: open, error: error, onClick: () => handleOpen() }, value ? (0, date_fns_1.format)(new Date(value), 'dd-MM-yyyy') : placeholder),
71
+ value && (react_1.default.createElement(Input_1.EyeIconWrapper, { size: size },
72
+ react_1.default.createElement(Icons_1.Icon, { name: 'close', size: 24, onClick: clearDate, iconColor: theme.inputDefaultTextColor, iconBgHoverColor: "transparent" }))),
73
+ open &&
74
+ (0, react_dom_1.createPortal)(react_1.default.createElement(Calendar_1.Calendar, { top: dropdownStyles.top, left: dropdownStyles.left, size: size, handleClose: () => toogleOpen(false), open: open, value: value, handleSelect: onSubmit }), document.body)))))));
75
+ };
76
+ exports.DatePicker = DatePicker;
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Month = exports.MonthWrapper = exports.DayLabel = exports.Day = exports.DayLabelWrapper = exports.DayWrapper = exports.DaysContent = exports.DaysHeader = exports.CalendarContentWrapper = exports.CalendarHeaderTexts = exports.CalendarHeaderWrapper = exports.CalendarWrapper = exports.DatePiockerElement = exports.CalendarOverlay = void 0;
7
+ const common_1 = require("../common");
8
+ const styled_components_1 = __importDefault(require("styled-components"));
9
+ const Theme_1 = require("../../Theme");
10
+ exports.CalendarOverlay = styled_components_1.default.div `
11
+ background-color: transparent;
12
+ position: absolute;
13
+ top: 0;
14
+ left: 0;
15
+ width: 100%;
16
+ height: 100vh;
17
+ z-index: 799;
18
+ `;
19
+ exports.DatePiockerElement = styled_components_1.default.div `
20
+ position: relative;
21
+ cursor: pointer;
22
+ display: flex;
23
+ box-sizing: border-box;
24
+ width: 100%;
25
+ `;
26
+ // ToDo fix ma "top"!!!
27
+ exports.CalendarWrapper = styled_components_1.default.div `
28
+ box-sizing: border-box;
29
+ background-color: ${Theme_1.Theme.colors.white};
30
+ box-shadow: ${Theme_1.Theme.shadow.m};
31
+ padding: ${Theme_1.Theme.padding.m} 0;
32
+ border-radius: ${Theme_1.Theme.borderRadius.m};
33
+ height: auto;
34
+ width: 326px;
35
+ position: absolute;
36
+ z-index: ${Theme_1.Theme.zIndex.dropdown};
37
+
38
+ // top: ${(p) => (0, common_1.setPanelTop)(p.size)};
39
+ top: 225px;
40
+ border: 1px solid ${Theme_1.Theme.colors.gray_2};
41
+ border-top: none;
42
+ min-width: 30px;
43
+ `;
44
+ exports.CalendarHeaderWrapper = styled_components_1.default.div `
45
+ background-color: #ffffff;
46
+ width: 100%;
47
+ display: flex;
48
+ box-sizing: border-box;
49
+ padding: 0.4rem 0.8rem;
50
+ `;
51
+ exports.CalendarHeaderTexts = styled_components_1.default.div `
52
+ display: flex;
53
+ gap: 4px;
54
+ `;
55
+ exports.CalendarContentWrapper = styled_components_1.default.div `
56
+ width: 100%;
57
+ display: flex;
58
+ box-sizing: border-box;
59
+ padding: 4px 8px;
60
+ `;
61
+ exports.DaysHeader = styled_components_1.default.div `
62
+ display: flex;
63
+ padding: 4px 0;
64
+ width: 100%;
65
+ `;
66
+ exports.DaysContent = styled_components_1.default.div `
67
+ display: flex;
68
+ flex-wrap: wrap;
69
+ justify-content: flex-start;
70
+ `;
71
+ exports.DayWrapper = styled_components_1.default.div `
72
+ width: 44px;
73
+ height: 44px;
74
+ box-sizing: border-box;
75
+ padding: 2px;
76
+ `;
77
+ exports.DayLabelWrapper = styled_components_1.default.div `
78
+ width: 44px;
79
+ box-sizing: border-box;
80
+ padding: 2px;
81
+ `;
82
+ exports.Day = styled_components_1.default.div `
83
+ width: 100%;
84
+ height: 100%;
85
+ box-sizing: border-box;
86
+ border-radius: 4px;
87
+ display: flex;
88
+ justify-content: center;
89
+ align-items: center;
90
+ font-size: 16px;
91
+ color: ${Theme_1.Theme.colors.text};
92
+ ${(p) => p.active &&
93
+ `
94
+ background-color: ${Theme_1.Theme.colors.primary};
95
+ color:${Theme_1.Theme.colors.white};
96
+ `}
97
+ ${(p) => p.haveContent &&
98
+ `
99
+ cursor:pointer;
100
+ :hover{
101
+ background-color: ${Theme_1.Theme.colors.primary_10};
102
+ color: ${Theme_1.Theme.colors.text};
103
+ }
104
+ `};
105
+ `;
106
+ //ToDo dodać tu Text
107
+ exports.DayLabel = styled_components_1.default.div `
108
+ font-size: 14px;
109
+ height: 100%;
110
+ display: flex;
111
+ justify-content: center;
112
+ align-items: center;
113
+ color: ${Theme_1.Theme.colors.gray_1};
114
+ `;
115
+ exports.MonthWrapper = styled_components_1.default.div `
116
+ width: calc(100% / 3);
117
+ height: 40px;
118
+ display: flex;
119
+ box-sizing: border-box;
120
+ padding: 4px 8px;
121
+ `;
122
+ exports.Month = styled_components_1.default.div `
123
+ width: 100%;
124
+ height: 100%;
125
+ box-sizing: border-box;
126
+ display: flex;
127
+ justify-content: center;
128
+ align-items: center;
129
+ font-size: 16px;
130
+ border-radius: 4px;
131
+ color: ${Theme_1.Theme.colors.text};
132
+ cursor: pointer;
133
+ :hover {
134
+ background-color: ${Theme_1.Theme.colors.primary_10};
135
+ color: ${Theme_1.Theme.colors.text};
136
+ }
137
+ ${(p) => p.active &&
138
+ `
139
+ background-color: ${Theme_1.Theme.colors.primary};
140
+ color:${Theme_1.Theme.colors.white};
141
+ `}
142
+ `;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./DatePicker"), exports);
@@ -13,6 +13,11 @@ exports.Text = styled_components_1.default.div `
13
13
  font-weight: normal;
14
14
  color: ${(p) => (p.color ? p.color : Theme_1.Theme.colors.text)};
15
15
  cursor: ${(p) => (p.action ? 'pointer' : 'default')};
16
+ ${p => p.action && `
17
+ :hover{
18
+ color:${Theme_1.Theme.colors.primary};
19
+ }
20
+ `}
16
21
  `;
17
22
  exports.TextSmall = styled_components_1.default.div `
18
23
  font-size: ${Theme_1.Theme.fontSize.s};
package/dist/cjs/index.js CHANGED
@@ -19,6 +19,7 @@ __exportStar(require("./components/Button"), exports);
19
19
  __exportStar(require("./components/ButtonsFooter"), exports);
20
20
  __exportStar(require("./components/Card"), exports);
21
21
  __exportStar(require("./components/Chips"), exports);
22
+ __exportStar(require("./components/DatePicker"), exports);
22
23
  __exportStar(require("./components/Dropdown"), exports);
23
24
  __exportStar(require("./components/DropdownMenu"), exports);
24
25
  __exportStar(require("./components/ElementHeader"), exports);
@@ -0,0 +1,68 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import { CalendarOverlay, CalendarWrapper } from './DatePiocker.styles';
3
+ import { Aligment } from '../Aligment';
4
+ import { CalendarHeader } from './CalendarHeader';
5
+ import { addMonths, addYears, getTime, getYear, subMonths, subYears, } from 'date-fns';
6
+ import { CalendarContent } from './CalendarContent';
7
+ import { ButtonsFooter } from '../ButtonsFooter';
8
+ export const Calendar = ({ value, top, left, size, handleClose, handleSelect, }) => {
9
+ const [calendarSettings, updateCalendarSettings] = useState({
10
+ mode: 'day',
11
+ value: 0,
12
+ date: new Date(),
13
+ yearsScope: [],
14
+ });
15
+ const [selectedDate, setSellectedDate] = useState(new Date(value !== undefined ? value : getTime(new Date())));
16
+ const setYearScope = (date) => {
17
+ const year = getYear(date);
18
+ const yearIndex = year % 12;
19
+ const pastYears = Array.from({ length: yearIndex }, (_, i) => year - (i + 1)).reverse();
20
+ const futureYears = Array.from({ length: 12 - yearIndex - 1 }, (_, i) => year + (i + 1));
21
+ return [...pastYears, year, ...futureYears];
22
+ };
23
+ useEffect(() => {
24
+ value !== undefined ? value : getTime(new Date()),
25
+ updateCalendarSettings({
26
+ ...calendarSettings,
27
+ value: getTime(new Date(selectedDate)),
28
+ date: selectedDate,
29
+ yearsScope: setYearScope(selectedDate),
30
+ });
31
+ }, [value, selectedDate]);
32
+ const setPeriod = (mode, forward) => {
33
+ const operations = {
34
+ day: forward ? addMonths : subMonths,
35
+ month: forward ? addYears : subYears,
36
+ year: forward ? addYears : subYears,
37
+ };
38
+ const step = mode === 'year' ? 12 : 1;
39
+ const modifyDate = operations[mode];
40
+ setSellectedDate(modifyDate(calendarSettings.date, step));
41
+ };
42
+ const setMode = (mode) => {
43
+ updateCalendarSettings({
44
+ ...calendarSettings,
45
+ mode: mode,
46
+ });
47
+ };
48
+ const setNewDate = (newDate) => {
49
+ setSellectedDate(newDate);
50
+ };
51
+ const confirmDate = () => {
52
+ handleSelect(getTime(new Date(selectedDate)));
53
+ };
54
+ const setToday = () => {
55
+ setSellectedDate(new Date());
56
+ };
57
+ return (React.createElement(React.Fragment, null,
58
+ React.createElement(CalendarWrapper
59
+ // top={top}
60
+ , {
61
+ // top={top}
62
+ top: 225, left: left, size: size },
63
+ React.createElement(Aligment, { direction: "row" },
64
+ React.createElement(CalendarHeader, { mode: calendarSettings.mode, date: calendarSettings.date, yearsScope: calendarSettings.yearsScope, handleChange: setPeriod, handleSelect: setMode }),
65
+ React.createElement(CalendarContent, { date: calendarSettings.date, mode: calendarSettings.mode, handleChange: setNewDate, changeMode: setMode, yearsScope: calendarSettings.yearsScope }),
66
+ React.createElement(ButtonsFooter, { handleClose: handleClose, handleConfirm: confirmDate, handleAdditional: setToday, labelClose: 'Zamknij', labelConfirm: 'Wybierz', labelAdditional: "Dzi\u015B", additionaNormalMode: true }))),
67
+ React.createElement(CalendarOverlay, null)));
68
+ };
@@ -0,0 +1,66 @@
1
+ import React, { useState, useEffect } from 'react';
2
+ import { CalendarContentWrapper, Day, DayLabel, DayLabelWrapper, DaysContent, DaysHeader, DayWrapper, Month, MonthWrapper, } from './DatePiocker.styles';
3
+ import { getDate, getDay, getDaysInMonth, getMonth, getYear, setDate, setMonth, setYear, startOfMonth, } from 'date-fns';
4
+ import { Aligment } from '../Aligment';
5
+ export const CalendarContent = ({ date, handleChange, changeMode, mode, yearsScope, }) => {
6
+ const [days, setDays] = useState([]);
7
+ const firstDayOfMonth = startOfMonth(date);
8
+ const daysInMonth = getDaysInMonth(date);
9
+ const firstDayIndex = getDay(firstDayOfMonth);
10
+ const beforeIndex = firstDayIndex === 0 ? 6 : firstDayIndex - 1;
11
+ useEffect(() => {
12
+ const daysScope = [];
13
+ for (let i = 1; i <= beforeIndex; i++) {
14
+ daysScope.push('');
15
+ }
16
+ for (let j = 1; j <= daysInMonth; j++) {
17
+ daysScope.push(j.toString());
18
+ }
19
+ setDays(daysScope);
20
+ }, [date]);
21
+ const setDay = (day) => {
22
+ if (!isNaN(day)) {
23
+ const newDate = setDate(date, day);
24
+ handleChange(newDate);
25
+ }
26
+ };
27
+ const handleSetMonth = (month) => {
28
+ if (!isNaN(month)) {
29
+ const newDate = setMonth(date, month);
30
+ handleChange(newDate);
31
+ changeMode('day');
32
+ }
33
+ };
34
+ const handleSetYear = (year) => {
35
+ if (!isNaN(year)) {
36
+ const newDate = setYear(date, year);
37
+ handleChange(newDate);
38
+ changeMode('month');
39
+ }
40
+ };
41
+ const daysName = ['Pon', 'Wt', 'Śr', 'Cz', 'P', 'Sob', 'Nd'];
42
+ const monthNames = [
43
+ 'styczeń',
44
+ 'luty',
45
+ 'marzec',
46
+ 'kwiecień',
47
+ 'maj',
48
+ 'czerwiec',
49
+ 'lipiec',
50
+ 'sierpień',
51
+ 'wrzesień',
52
+ 'październik',
53
+ 'listopad',
54
+ 'grudzień',
55
+ ];
56
+ return (React.createElement(CalendarContentWrapper, null,
57
+ mode === 'day' && (React.createElement(Aligment, { wrap: "wrap" },
58
+ React.createElement(DaysHeader, null, daysName.map((_item) => (React.createElement(DayLabelWrapper, null,
59
+ React.createElement(DayLabel, null, _item))))),
60
+ React.createElement(DaysContent, null, days.map((_day) => (React.createElement(DayWrapper, null,
61
+ React.createElement(Day, { active: parseInt(_day) === getDate(date), haveContent: _day !== '', onClick: () => setDay(parseInt(_day)) }, _day))))))),
62
+ mode === 'month' && (React.createElement(Aligment, { wrap: "wrap" }, monthNames.map((_month, index) => (React.createElement(MonthWrapper, null,
63
+ React.createElement(Month, { active: index === getMonth(date), onClick: () => handleSetMonth(index) }, _month)))))),
64
+ mode === 'year' && (React.createElement(Aligment, { wrap: "wrap" }, yearsScope.map((_year) => (React.createElement(MonthWrapper, null,
65
+ React.createElement(Month, { active: _year === getYear(date), onClick: () => handleSetYear(_year) }, _year))))))));
66
+ };
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+ import { CalendarHeaderTexts, CalendarHeaderWrapper, } from './DatePiocker.styles';
3
+ import { Aligment } from '../Aligment';
4
+ import { Icon } from '../Icons';
5
+ import { Text } from '../Typography';
6
+ import { format, getYear } from 'date-fns';
7
+ import { pl } from 'date-fns/locale';
8
+ export const CalendarHeader = ({ date, mode, yearsScope, handleChange, handleSelect, }) => {
9
+ const prev = () => {
10
+ handleChange(mode, false);
11
+ };
12
+ const next = () => {
13
+ handleChange(mode, true);
14
+ };
15
+ const setMode = (mode) => {
16
+ handleSelect(mode);
17
+ };
18
+ return (React.createElement(CalendarHeaderWrapper, null,
19
+ React.createElement(Aligment, null,
20
+ React.createElement(Icon, { name: 'back', onClick: prev }),
21
+ React.createElement(CalendarHeaderTexts, null,
22
+ mode === 'day' && (React.createElement(Text, { action: true, onClick: () => setMode('month') }, format(date, 'LLLL', { locale: pl }))),
23
+ mode === 'year' ? (React.createElement(Text, null, `${yearsScope[0]} - ${yearsScope[yearsScope.length - 1]}`)) : (React.createElement(Text, { action: true, onClick: () => setMode('year') }, getYear(date)))),
24
+ React.createElement(Icon, { name: 'forward', onClick: next }))));
25
+ };
@@ -0,0 +1,49 @@
1
+ import { EyeIconWrapper, InputLabelElement, InputReadOnlyElement, InputWrapper, } from '../Input';
2
+ import { Aligment } from '../Aligment';
3
+ import React, { useRef, useState } from 'react';
4
+ import { ThemeProvider } from 'styled-components';
5
+ import { mainTheme } from '../../Theme';
6
+ import { DatePiockerElement } from './DatePiocker.styles';
7
+ import { Field } from '../Dropdown';
8
+ import { createPortal } from 'react-dom';
9
+ import { Calendar } from './Calendar';
10
+ import { format } from 'date-fns';
11
+ import { Icon } from '../Icons';
12
+ export const DatePicker = ({ label, labelPosition = 'top', value, name, disabled = false, size = 'medium', width, error, theme = mainTheme, readOnly = false, position = 'left', placeholder = 'Select date', handleChange, }) => {
13
+ const [open, toogleOpen] = useState(false);
14
+ const sourceRef = useRef(null);
15
+ const [dropdownStyles, setDropdownStyles] = useState({
16
+ top: 0,
17
+ left: 0,
18
+ });
19
+ const onSubmit = (selectedDate) => {
20
+ handleChange(name, selectedDate);
21
+ toogleOpen(false);
22
+ };
23
+ const clearDate = () => {
24
+ handleChange(name, undefined);
25
+ toogleOpen(false);
26
+ };
27
+ const handleOpen = () => {
28
+ if (!disabled && !open) {
29
+ if (sourceRef.current) {
30
+ const buttonRect = sourceRef.current.getBoundingClientRect();
31
+ const positionStyle = {
32
+ top: buttonRect.bottom + window.scrollY,
33
+ left: buttonRect.left + window.scrollX,
34
+ };
35
+ setDropdownStyles(positionStyle);
36
+ }
37
+ toogleOpen(!open);
38
+ }
39
+ };
40
+ return (React.createElement(ThemeProvider, { theme: theme },
41
+ React.createElement(Aligment, { align: labelPosition === 'top' ? 'flex-start' : 'center', direction: labelPosition === 'top' ? 'column' : 'row', wrap: 'nowrap' },
42
+ label && (React.createElement(InputLabelElement, { size: size, labelPosition: labelPosition }, label)),
43
+ React.createElement(InputWrapper, { width: width }, readOnly ? (React.createElement(InputReadOnlyElement, { inputSize: size }, value)) : (React.createElement(DatePiockerElement, { ref: sourceRef },
44
+ React.createElement(Field, { inputSize: size, disabled: disabled, width: width, active: open, error: error, onClick: () => handleOpen() }, value ? format(new Date(value), 'dd-MM-yyyy') : placeholder),
45
+ value && (React.createElement(EyeIconWrapper, { size: size },
46
+ React.createElement(Icon, { name: 'close', size: 24, onClick: clearDate, iconColor: theme.inputDefaultTextColor, iconBgHoverColor: "transparent" }))),
47
+ open &&
48
+ createPortal(React.createElement(Calendar, { top: dropdownStyles.top, left: dropdownStyles.left, size: size, handleClose: () => toogleOpen(false), open: open, value: value, handleSelect: onSubmit }), document.body)))))));
49
+ };
@@ -0,0 +1,136 @@
1
+ import { setPanelTop } from '../common';
2
+ import styled from 'styled-components';
3
+ import { Theme } from '../../Theme';
4
+ export const CalendarOverlay = styled.div `
5
+ background-color: transparent;
6
+ position: absolute;
7
+ top: 0;
8
+ left: 0;
9
+ width: 100%;
10
+ height: 100vh;
11
+ z-index: 799;
12
+ `;
13
+ export const DatePiockerElement = styled.div `
14
+ position: relative;
15
+ cursor: pointer;
16
+ display: flex;
17
+ box-sizing: border-box;
18
+ width: 100%;
19
+ `;
20
+ // ToDo fix ma "top"!!!
21
+ export const CalendarWrapper = styled.div `
22
+ box-sizing: border-box;
23
+ background-color: ${Theme.colors.white};
24
+ box-shadow: ${Theme.shadow.m};
25
+ padding: ${Theme.padding.m} 0;
26
+ border-radius: ${Theme.borderRadius.m};
27
+ height: auto;
28
+ width: 326px;
29
+ position: absolute;
30
+ z-index: ${Theme.zIndex.dropdown};
31
+
32
+ // top: ${(p) => setPanelTop(p.size)};
33
+ top: 225px;
34
+ border: 1px solid ${Theme.colors.gray_2};
35
+ border-top: none;
36
+ min-width: 30px;
37
+ `;
38
+ export const CalendarHeaderWrapper = styled.div `
39
+ background-color: #ffffff;
40
+ width: 100%;
41
+ display: flex;
42
+ box-sizing: border-box;
43
+ padding: 0.4rem 0.8rem;
44
+ `;
45
+ export const CalendarHeaderTexts = styled.div `
46
+ display: flex;
47
+ gap: 4px;
48
+ `;
49
+ export const CalendarContentWrapper = styled.div `
50
+ width: 100%;
51
+ display: flex;
52
+ box-sizing: border-box;
53
+ padding: 4px 8px;
54
+ `;
55
+ export const DaysHeader = styled.div `
56
+ display: flex;
57
+ padding: 4px 0;
58
+ width: 100%;
59
+ `;
60
+ export const DaysContent = styled.div `
61
+ display: flex;
62
+ flex-wrap: wrap;
63
+ justify-content: flex-start;
64
+ `;
65
+ export const DayWrapper = styled.div `
66
+ width: 44px;
67
+ height: 44px;
68
+ box-sizing: border-box;
69
+ padding: 2px;
70
+ `;
71
+ export const DayLabelWrapper = styled.div `
72
+ width: 44px;
73
+ box-sizing: border-box;
74
+ padding: 2px;
75
+ `;
76
+ export const Day = styled.div `
77
+ width: 100%;
78
+ height: 100%;
79
+ box-sizing: border-box;
80
+ border-radius: 4px;
81
+ display: flex;
82
+ justify-content: center;
83
+ align-items: center;
84
+ font-size: 16px;
85
+ color: ${Theme.colors.text};
86
+ ${(p) => p.active &&
87
+ `
88
+ background-color: ${Theme.colors.primary};
89
+ color:${Theme.colors.white};
90
+ `}
91
+ ${(p) => p.haveContent &&
92
+ `
93
+ cursor:pointer;
94
+ :hover{
95
+ background-color: ${Theme.colors.primary_10};
96
+ color: ${Theme.colors.text};
97
+ }
98
+ `};
99
+ `;
100
+ //ToDo dodać tu Text
101
+ export const DayLabel = styled.div `
102
+ font-size: 14px;
103
+ height: 100%;
104
+ display: flex;
105
+ justify-content: center;
106
+ align-items: center;
107
+ color: ${Theme.colors.gray_1};
108
+ `;
109
+ export const MonthWrapper = styled.div `
110
+ width: calc(100% / 3);
111
+ height: 40px;
112
+ display: flex;
113
+ box-sizing: border-box;
114
+ padding: 4px 8px;
115
+ `;
116
+ export const Month = styled.div `
117
+ width: 100%;
118
+ height: 100%;
119
+ box-sizing: border-box;
120
+ display: flex;
121
+ justify-content: center;
122
+ align-items: center;
123
+ font-size: 16px;
124
+ border-radius: 4px;
125
+ color: ${Theme.colors.text};
126
+ cursor: pointer;
127
+ :hover {
128
+ background-color: ${Theme.colors.primary_10};
129
+ color: ${Theme.colors.text};
130
+ }
131
+ ${(p) => p.active &&
132
+ `
133
+ background-color: ${Theme.colors.primary};
134
+ color:${Theme.colors.white};
135
+ `}
136
+ `;
@@ -0,0 +1 @@
1
+ export * from './DatePicker';
@@ -7,6 +7,11 @@ export const Text = styled.div `
7
7
  font-weight: normal;
8
8
  color: ${(p) => (p.color ? p.color : Theme.colors.text)};
9
9
  cursor: ${(p) => (p.action ? 'pointer' : 'default')};
10
+ ${p => p.action && `
11
+ :hover{
12
+ color:${Theme.colors.primary};
13
+ }
14
+ `}
10
15
  `;
11
16
  export const TextSmall = styled.div `
12
17
  font-size: ${Theme.fontSize.s};
package/dist/esm/index.js CHANGED
@@ -3,6 +3,7 @@ export * from './components/Button';
3
3
  export * from './components/ButtonsFooter';
4
4
  export * from './components/Card';
5
5
  export * from './components/Chips';
6
+ export * from './components/DatePicker';
6
7
  export * from './components/Dropdown';
7
8
  export * from './components/DropdownMenu';
8
9
  export * from './components/ElementHeader';
@@ -0,0 +1,13 @@
1
+ import { FC } from 'react';
2
+ import { InputSize } from 'types';
3
+ interface ICalendar {
4
+ value: number | undefined;
5
+ top: number;
6
+ left: number;
7
+ size: InputSize;
8
+ handleClose: () => void;
9
+ handleSelect: (date: number) => void;
10
+ open: boolean;
11
+ }
12
+ export declare const Calendar: FC<ICalendar>;
13
+ export {};
@@ -0,0 +1,10 @@
1
+ import { FC } from 'react';
2
+ interface ICalendarContent {
3
+ date: Date;
4
+ handleChange: (newDate: Date) => void;
5
+ changeMode: (mode: string) => void;
6
+ mode: string;
7
+ yearsScope: number[];
8
+ }
9
+ export declare const CalendarContent: FC<ICalendarContent>;
10
+ export {};
@@ -0,0 +1,10 @@
1
+ import { FC } from 'react';
2
+ interface ICalendarHeader {
3
+ mode: string;
4
+ date: Date;
5
+ yearsScope: number[];
6
+ handleChange: (mode: string, forward: boolean) => void;
7
+ handleSelect: (mode: string) => void;
8
+ }
9
+ export declare const CalendarHeader: FC<ICalendarHeader>;
10
+ export {};
@@ -0,0 +1,8 @@
1
+ import { FC } from 'react';
2
+ import { IFormElement } from 'types';
3
+ export interface IDatePicker extends IFormElement {
4
+ theme?: any;
5
+ position?: string;
6
+ handleChange: (name: string, value: string | number | undefined) => void;
7
+ }
8
+ export declare const DatePicker: FC<IDatePicker>;
@@ -0,0 +1,28 @@
1
+ import { InputSize } from 'types';
2
+ export declare const CalendarOverlay: import("styled-components").StyledComponent<"div", any, {}, never>;
3
+ export declare const DatePiockerElement: import("styled-components").StyledComponent<"div", any, {}, never>;
4
+ interface ICalendarStyle {
5
+ size: InputSize;
6
+ top: number;
7
+ left: number;
8
+ }
9
+ export declare const CalendarWrapper: import("styled-components").StyledComponent<"div", any, ICalendarStyle, never>;
10
+ export declare const CalendarHeaderWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
11
+ export declare const CalendarHeaderTexts: import("styled-components").StyledComponent<"div", any, {}, never>;
12
+ export declare const CalendarContentWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
13
+ export declare const DaysHeader: import("styled-components").StyledComponent<"div", any, {}, never>;
14
+ export declare const DaysContent: import("styled-components").StyledComponent<"div", any, {}, never>;
15
+ export declare const DayWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
16
+ export declare const DayLabelWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
17
+ interface IDayProps {
18
+ active: boolean;
19
+ haveContent: boolean;
20
+ }
21
+ export declare const Day: import("styled-components").StyledComponent<"div", any, IDayProps, never>;
22
+ export declare const DayLabel: import("styled-components").StyledComponent<"div", any, {}, never>;
23
+ export declare const MonthWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
24
+ interface IMonthProps {
25
+ active: boolean;
26
+ }
27
+ export declare const Month: import("styled-components").StyledComponent<"div", any, IMonthProps, never>;
28
+ export {};
@@ -0,0 +1 @@
1
+ export * from './DatePicker';
@@ -6,4 +6,10 @@ export interface IDropdownProps extends IFormElement {
6
6
  position?: string;
7
7
  zIndex?: number;
8
8
  }
9
+ export interface IPositionStyle {
10
+ top: number;
11
+ width?: number;
12
+ left?: number;
13
+ right?: number;
14
+ }
9
15
  export declare const Dropdown: FC<IDropdownProps>;
@@ -3,6 +3,7 @@ export * from './components/Button';
3
3
  export * from './components/ButtonsFooter';
4
4
  export * from './components/Card';
5
5
  export * from './components/Chips';
6
+ export * from './components/DatePicker';
6
7
  export * from './components/Dropdown';
7
8
  export * from './components/DropdownMenu';
8
9
  export * from './components/ElementHeader';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "venice-ui",
3
- "version": "2.0.23",
3
+ "version": "2.0.24",
4
4
  "description": "Component library",
5
5
  "main": "index.js",
6
6
  "module": "./dist/esm/index.js",
@@ -77,7 +77,7 @@
77
77
  "@storybook/preset-create-react-app": "^7.0.12",
78
78
  "@storybook/theming": "^7.0.12",
79
79
  "@types/styled-components": "^5.1.26",
80
- "date-fns": "^2.29.3",
80
+ "date-fns": "^2.30.0",
81
81
  "ftp-deploy": "^2.4.4",
82
82
  "lodash": "^4.17.21",
83
83
  "polished": "^4.2.2",