pds-dev-kit-web 2.2.299 → 2.2.301

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.
Files changed (34) hide show
  1. package/dist/src/common/services/i18n/resources/en.json +1 -0
  2. package/dist/src/common/services/i18n/resources/es.json +1 -0
  3. package/dist/src/common/services/i18n/resources/fil.json +1 -0
  4. package/dist/src/common/services/i18n/resources/index.d.ts +7 -0
  5. package/dist/src/common/services/i18n/resources/ja.json +1 -0
  6. package/dist/src/common/services/i18n/resources/ko.json +1 -0
  7. package/dist/src/common/services/i18n/resources/zh-cn.json +1 -0
  8. package/dist/src/common/services/i18n/resources/zh-tw.json +1 -0
  9. package/dist/src/mobile/components/DatePicker/DatePicker.d.ts +2 -1
  10. package/dist/src/mobile/components/DatePicker/DatePicker.js +76 -17
  11. package/dist/src/mobile/components/DatePicker/DatePickerHeader.d.ts +3 -1
  12. package/dist/src/mobile/components/DatePicker/DatePickerHeader.js +23 -4
  13. package/dist/src/mobile/components/DatePicker/MonthPicker.d.ts +12 -0
  14. package/dist/src/mobile/components/DatePicker/MonthPicker.js +133 -0
  15. package/dist/src/mobile/components/DatePicker/YearPicker.d.ts +10 -0
  16. package/dist/src/mobile/components/DatePicker/YearPicker.js +73 -0
  17. package/dist/src/mobile/components/DatePicker/index.d.ts +2 -0
  18. package/dist/src/mobile/components/DatePicker/index.js +5 -1
  19. package/dist/src/sub/DynamicLayout/CompositionEditor/CompositionEditor.js +3 -10
  20. package/dist/src/sub/DynamicLayout/CompositionRenderer/Composition.js +6 -3
  21. package/dist/src/sub/DynamicLayout/CompositionRenderer/createCompositions.d.ts +2 -1
  22. package/dist/src/sub/DynamicLayout/CompositionRenderer/createCompositions.js +3 -11
  23. package/dist/src/sub/DynamicLayout/DynamicLayout.js +3 -1
  24. package/dist/src/sub/DynamicLayout/components/Section/components/CustomSectionBackgroundMedia.js +0 -4
  25. package/dist/src/sub/DynamicLayout/gleStyles.js +1 -1
  26. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/ContentsCarousel/ContentsCarousel.js +2 -1
  27. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/ContentsList/ContentsList.js +2 -1
  28. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/ContentsList/contentsListUtils.js +4 -3
  29. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/Image/Image.js +4 -5
  30. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/SlideBanner/SlideBanner.js +2 -1
  31. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/VideoPlayer/VideoPlayer.js +18 -5
  32. package/dist/src/sub/DynamicLayout/types.d.ts +1 -0
  33. package/package.json +1 -1
  34. package/release-note.md +3 -3
@@ -103,6 +103,7 @@
103
103
  "str_9070": "If Spanish is not entered, members will see the content in English.",
104
104
  "str_upload": "Upload",
105
105
  "str_delete": "Delete",
106
+ "str_9617": "Select year",
106
107
  "str_reaction": "Reaction",
107
108
  "str_9806": "There are no items added yet. Please add and edit items!",
108
109
  "str_10106": "The height is adjusted\naccording to the content.",
@@ -103,6 +103,7 @@
103
103
  "str_9070": "Si no ingresa en español, se mostrará a los miembros en inglés.",
104
104
  "str_upload": "Subir",
105
105
  "str_delete": "borrar",
106
+ "str_9617": "Seleccionar año",
106
107
  "str_reaction": "Reaction",
107
108
  "str_9806": "There are no items added yet. Please add and edit items!",
108
109
  "str_10106": "The height is adjusted\naccording to the content.",
@@ -96,6 +96,7 @@
96
96
  "str_friendly_currency_dollar": "dolyar",
97
97
  "str_upload": "Upload",
98
98
  "str_delete": "Tanggalin",
99
+ "str_9617": "Pumili ng taon",
99
100
  "str_reaction": "Reaction",
100
101
  "str_9806": "There are no items added yet. Please add and edit items!",
101
102
  "str_10106": "The height is adjusted\naccording to the content.",
@@ -105,6 +105,7 @@ declare const locale: {
105
105
  str_9070: string;
106
106
  str_upload: string;
107
107
  str_delete: string;
108
+ str_9617: string;
108
109
  str_reaction: string;
109
110
  str_9806: string;
110
111
  str_10106: string;
@@ -221,6 +222,7 @@ declare const locale: {
221
222
  str_9070: string;
222
223
  str_upload: string;
223
224
  str_delete: string;
225
+ str_9617: string;
224
226
  str_reaction: string;
225
227
  str_9806: string;
226
228
  str_10106: string;
@@ -337,6 +339,7 @@ declare const locale: {
337
339
  str_9070: string;
338
340
  str_upload: string;
339
341
  str_delete: string;
342
+ str_9617: string;
340
343
  str_reaction: string;
341
344
  str_9806: string;
342
345
  str_10106: string;
@@ -453,6 +456,7 @@ declare const locale: {
453
456
  str_9070: string;
454
457
  str_upload: string;
455
458
  str_delete: string;
459
+ str_9617: string;
456
460
  str_reaction: string;
457
461
  str_9806: string;
458
462
  str_10106: string;
@@ -569,6 +573,7 @@ declare const locale: {
569
573
  str_9070: string;
570
574
  str_upload: string;
571
575
  str_delete: string;
576
+ str_9617: string;
572
577
  str_reaction: string;
573
578
  str_9806: string;
574
579
  str_10106: string;
@@ -685,6 +690,7 @@ declare const locale: {
685
690
  str_9070: string;
686
691
  str_upload: string;
687
692
  str_delete: string;
693
+ str_9617: string;
688
694
  str_reaction: string;
689
695
  str_9806: string;
690
696
  str_10106: string;
@@ -794,6 +800,7 @@ declare const locale: {
794
800
  str_friendly_currency_dollar: string;
795
801
  str_upload: string;
796
802
  str_delete: string;
803
+ str_9617: string;
797
804
  str_reaction: string;
798
805
  str_9806: string;
799
806
  str_10106: string;
@@ -103,6 +103,7 @@
103
103
  "str_9070": "スペイン語を入力しないと、会員に英語で表示されます。",
104
104
  "str_upload": "アップロード",
105
105
  "str_delete": "削除",
106
+ "str_9617": "年を選択",
106
107
  "str_reaction": "Reaction",
107
108
  "str_9806": "There are no items added yet. Please add and edit items!",
108
109
  "str_10106": "The height is adjusted\naccording to the content.",
@@ -104,6 +104,7 @@
104
104
  "str_9070": "스페인어를 입력하지 않을 경우, 회원에게 영어로 보여집니다.",
105
105
  "str_upload": "업로드",
106
106
  "str_delete": "삭제",
107
+ "str_9617": "연도 선택",
107
108
  "str_reaction": "반응",
108
109
  "str_9806": "아직 추가된 항목이 없어요. 항목을 추가하고 편집해주세요!",
109
110
  "str_10106": "내용에 따라 높이가 조절됩니다.",
@@ -103,6 +103,7 @@
103
103
  "str_9070": "如果您不输入西班牙语,它将以英文显示给会员。",
104
104
  "str_upload": "上传",
105
105
  "str_delete": "删除",
106
+ "str_9617": "选择年份",
106
107
  "str_reaction": "Reaction",
107
108
  "str_9806": "There are no items added yet. Please add and edit items!",
108
109
  "str_10106": "The height is adjusted\naccording to the content.",
@@ -103,6 +103,7 @@
103
103
  "str_9070": "如果您不輸入西班牙語,則以英文顯示給會員。",
104
104
  "str_upload": "上傳",
105
105
  "str_delete": "刪除",
106
+ "str_9617": "選擇年份",
106
107
  "str_reaction": "Reaction",
107
108
  "str_9806": "There are no items added yet. Please add and edit items!",
108
109
  "str_10106": "The height is adjusted\naccording to the content.",
@@ -10,7 +10,8 @@ type Props = {
10
10
  startOfWeek?: 'sunday' | 'monday';
11
11
  quickActionMode?: 'use' | 'none';
12
12
  quickActionBtnText?: PDSTextType;
13
+ quickNavigationMode?: 'use' | 'none';
13
14
  onChange?: (val1: string, val2?: string) => void;
14
15
  };
15
- declare const DatePicker: ({ id, type, date, endDate, minDate, maxDate, startOfWeek, quickActionMode, quickActionBtnText, onChange }: Props) => JSX.Element;
16
+ declare const DatePicker: ({ id, type, date, endDate, minDate, maxDate, startOfWeek, quickActionMode, quickActionBtnText, quickNavigationMode, onChange }: Props) => JSX.Element;
16
17
  export default DatePicker;
@@ -50,13 +50,44 @@ var styled_components_1 = __importStar(require("styled-components"));
50
50
  var TextLabel_1 = require("../TextLabel");
51
51
  var DatePickerHeader_1 = __importDefault(require("./DatePickerHeader"));
52
52
  var Day_1 = __importDefault(require("./Day"));
53
+ var MonthPicker_1 = __importDefault(require("./MonthPicker"));
54
+ var YearPicker_1 = __importDefault(require("./YearPicker"));
53
55
  var DatePicker = function (_a) {
54
- var id = _a.id, type = _a.type, date = _a.date, endDate = _a.endDate, minDate = _a.minDate, maxDate = _a.maxDate, _b = _a.startOfWeek, startOfWeek = _b === void 0 ? 'sunday' : _b, _c = _a.quickActionMode, quickActionMode = _c === void 0 ? 'none' : _c, quickActionBtnText = _a.quickActionBtnText, onChange = _a.onChange;
56
+ var id = _a.id, type = _a.type, date = _a.date, endDate = _a.endDate, minDate = _a.minDate, maxDate = _a.maxDate, _b = _a.startOfWeek, startOfWeek = _b === void 0 ? 'sunday' : _b, _c = _a.quickActionMode, quickActionMode = _c === void 0 ? 'none' : _c, quickActionBtnText = _a.quickActionBtnText, _d = _a.quickNavigationMode, quickNavigationMode = _d === void 0 ? 'none' : _d, onChange = _a.onChange;
55
57
  var t = (0, react_i18next_1.useTranslation)().t;
56
58
  var startDate = date || dateHelper_1.DateHelper.formatDate(new Date());
57
- var _d = (0, react_1.useState)(function () {
59
+ var _e = (0, react_1.useState)(function () {
58
60
  return dateHelper_1.DateHelper.startOfMonth(dateHelper_1.DateHelper.parseDate(startDate));
59
- }), currentMonth = _d[0], setCurrentMonth = _d[1];
61
+ }), currentMonth = _e[0], setCurrentMonth = _e[1];
62
+ // 연도/월 선택 상태 관리
63
+ var _f = (0, react_1.useState)(false), showYearPicker = _f[0], setShowYearPicker = _f[1];
64
+ var _g = (0, react_1.useState)(false), showMonthPicker = _g[0], setShowMonthPicker = _g[1];
65
+ // Picker 외부 클릭 감지용 ref
66
+ var yearPickerRef = (0, react_1.useRef)(null);
67
+ var monthPickerRef = (0, react_1.useRef)(null);
68
+ var isEventInside = function (ref, node) {
69
+ if (!ref.current || !node)
70
+ return false;
71
+ return ref.current.contains(node);
72
+ };
73
+ // Picker 외부 클릭 시 닫기
74
+ (0, react_1.useEffect)(function () {
75
+ if (!showYearPicker && !showMonthPicker)
76
+ return;
77
+ var handleDocumentClick = function (event) {
78
+ var target = event.target;
79
+ var isClickInsideYearPicker = isEventInside(yearPickerRef, target);
80
+ var isClickInsideMonthPicker = isEventInside(monthPickerRef, target);
81
+ if (!isClickInsideYearPicker && !isClickInsideMonthPicker) {
82
+ setShowYearPicker(false);
83
+ setShowMonthPicker(false);
84
+ }
85
+ };
86
+ document.addEventListener('mousedown', handleDocumentClick);
87
+ return function () {
88
+ document.removeEventListener('mousedown', handleDocumentClick);
89
+ };
90
+ }, [showYearPicker, showMonthPicker]);
60
91
  var isPrevButtonDisabled = (0, react_1.useMemo)(function () {
61
92
  if (!minDate)
62
93
  return false;
@@ -98,6 +129,33 @@ var DatePicker = function (_a) {
98
129
  var startOfCurrentMonth = dateHelper_1.DateHelper.startOfMonth(today);
99
130
  setCurrentMonth(startOfCurrentMonth);
100
131
  };
132
+ // 헤더 타이틀 클릭 핸들러
133
+ var handleHeaderTitleClick = function () {
134
+ setShowYearPicker(true);
135
+ };
136
+ // 연도 선택 핸들러
137
+ var handleYearSelect = function (year) {
138
+ var newDate = new Date(year, currentMonth.getMonth(), 1);
139
+ setCurrentMonth(newDate);
140
+ setShowYearPicker(false);
141
+ setShowMonthPicker(true);
142
+ };
143
+ // 월 선택 핸들러
144
+ var handleMonthSelect = function (year, month) {
145
+ var newDate = new Date(year, month - 1, 1);
146
+ setCurrentMonth(newDate);
147
+ setShowMonthPicker(false);
148
+ };
149
+ // 연도 선택기에서 월 선택기로 돌아가기
150
+ var handleBackToYear = function () {
151
+ setShowMonthPicker(false);
152
+ setShowYearPicker(true);
153
+ };
154
+ // 선택기 닫기
155
+ var handleClosePickers = function () {
156
+ setShowYearPicker(false);
157
+ setShowMonthPicker(false);
158
+ };
101
159
  var calendarDates = (0, react_1.useMemo)(function () { return dateHelper_1.DateHelper.getCalendarDates(currentMonth, startOfWeek); }, [currentMonth, startOfWeek]);
102
160
  var days = [
103
161
  t('str_3893'),
@@ -108,11 +166,11 @@ var DatePicker = function (_a) {
108
166
  t('str_3891'),
109
167
  t('str_3892')
110
168
  ];
111
- return ((0, jsx_runtime_1.jsxs)(CalendarContainer, __assign({ id: id }, { children: [(0, jsx_runtime_1.jsx)(DatePickerHeader_1.default, { headerTitle: t('str_35', {
112
- year: currentMonth.getFullYear(),
113
- month: String(currentMonth.getMonth() + 1)
114
- }), textButtonText: quickActionMode === 'use' ? quickActionBtnText : undefined, isTextButtonDisabled: currentMonth.getFullYear() === new Date().getFullYear() &&
115
- currentMonth.getMonth() === new Date().getMonth(), isPrevButtonDisabled: isPrevButtonDisabled, isNextButtonDisabled: isNextButtonDisabled, onClickPrevButton: function () { return setCurrentMonth(function (prev) { return dateHelper_1.DateHelper.addMonths(prev, -1); }); }, onClickNextButton: function () { return setCurrentMonth(function (prev) { return dateHelper_1.DateHelper.addMonths(prev, 1); }); }, onClickTextButton: handleQuickActionButtonClick }), (0, jsx_runtime_1.jsx)(components_1.Spacing, { size: "spacing_a" }), (0, jsx_runtime_1.jsxs)(S_MonthContainer, { children: [(0, jsx_runtime_1.jsx)(S_DayOfWeekContainer, __assign({ id: "weeks" }, { children: days
169
+ return ((0, jsx_runtime_1.jsxs)(CalendarContainer, __assign({ id: id }, { children: [(0, jsx_runtime_1.jsxs)(S_HeaderContainer, { children: [(0, jsx_runtime_1.jsx)(DatePickerHeader_1.default, { headerTitle: t('str_35', {
170
+ year: currentMonth.getFullYear(),
171
+ month: String(currentMonth.getMonth() + 1)
172
+ }), textButtonText: quickActionMode === 'use' ? quickActionBtnText : undefined, isTextButtonDisabled: currentMonth.getFullYear() === new Date().getFullYear() &&
173
+ currentMonth.getMonth() === new Date().getMonth(), isPrevButtonDisabled: isPrevButtonDisabled, isNextButtonDisabled: isNextButtonDisabled, onClickPrevButton: function () { return setCurrentMonth(function (prev) { return dateHelper_1.DateHelper.addMonths(prev, -1); }); }, onClickNextButton: function () { return setCurrentMonth(function (prev) { return dateHelper_1.DateHelper.addMonths(prev, 1); }); }, onClickTextButton: handleQuickActionButtonClick, onHeaderTitleClick: handleHeaderTitleClick, isHeaderTitleClickable: quickNavigationMode === 'use' }), showYearPicker && ((0, jsx_runtime_1.jsx)("div", __assign({ ref: yearPickerRef }, { children: (0, jsx_runtime_1.jsx)(YearPicker_1.default, { currentYear: currentMonth.getFullYear(), minDate: minDate, maxDate: maxDate, onYearSelect: handleYearSelect, onClose: handleClosePickers }) }))), showMonthPicker && ((0, jsx_runtime_1.jsx)("div", __assign({ ref: monthPickerRef }, { children: (0, jsx_runtime_1.jsx)(MonthPicker_1.default, { currentYear: currentMonth.getFullYear(), currentMonth: currentMonth.getMonth() + 1, minDate: minDate, maxDate: maxDate, onMonthSelect: handleMonthSelect, onClose: handleClosePickers, onBackToYear: handleBackToYear }) })))] }), (0, jsx_runtime_1.jsx)(components_1.Spacing, { size: "spacing_a" }), (0, jsx_runtime_1.jsxs)(S_MonthContainer, { children: [(0, jsx_runtime_1.jsx)(S_DayOfWeekContainer, __assign({ id: "weeks" }, { children: days
116
174
  .slice(startOfWeek === 'monday' ? 1 : 0)
117
175
  .concat(startOfWeek === 'monday' ? [t('str_3893')] : [])
118
176
  .map(function (day) { return ((0, jsx_runtime_1.jsx)(S_DayOfWeek, { children: (0, jsx_runtime_1.jsx)(TextLabel_1.TextLabel, { text: day, styleTheme: "caption2Bold", colorTheme: "sysTextSecondary", textAlign: "center" }) }, "".concat(id, "_").concat(day))); }) })), (0, jsx_runtime_1.jsx)(S_Grid, { children: calendarDates.map(function (d) {
@@ -127,30 +185,31 @@ var DatePicker = function (_a) {
127
185
  }) })] })] })));
128
186
  };
129
187
  var CalendarContainer = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n width: 100%;\n"], ["\n display: flex;\n flex-direction: column;\n width: 100%;\n"])));
130
- var S_MonthContainer = styled_components_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n align-items: center;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n padding: 0 ", ";\n"], ["\n align-items: center;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n padding: 0 ", ";\n"])), function (_a) {
188
+ var S_HeaderContainer = styled_components_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n position: relative;\n"], ["\n position: relative;\n"])));
189
+ var S_MonthContainer = styled_components_1.default.div(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n align-items: center;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n padding: 0 ", ";\n"], ["\n align-items: center;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n padding: 0 ", ";\n"])), function (_a) {
131
190
  var theme = _a.theme;
132
191
  return theme.spacing.spacingD;
133
192
  });
134
- var S_DayOfWeekContainer = styled_components_1.default.div(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n align-items: center;\n display: grid;\n grid-template-columns: repeat(7, minmax(32px, 120px));\n grid-template-rows: minmax(25px, 32px);\n justify-items: center;\n"], ["\n align-items: center;\n display: grid;\n grid-template-columns: repeat(7, minmax(32px, 120px));\n grid-template-rows: minmax(25px, 32px);\n justify-items: center;\n"])));
135
- var S_DayOfWeek = styled_components_1.default.span(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n align-items: center;\n background-color: transparent;\n box-sizing: border-box;\n color: ", ";\n display: flex;\n justify-content: center;\n"], ["\n align-items: center;\n background-color: transparent;\n box-sizing: border-box;\n color: ", ";\n display: flex;\n justify-content: center;\n"])), function (_a) {
193
+ var S_DayOfWeekContainer = styled_components_1.default.div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n align-items: center;\n display: grid;\n grid-template-columns: repeat(7, minmax(32px, 120px));\n grid-template-rows: minmax(25px, 32px);\n justify-items: center;\n"], ["\n align-items: center;\n display: grid;\n grid-template-columns: repeat(7, minmax(32px, 120px));\n grid-template-rows: minmax(25px, 32px);\n justify-items: center;\n"])));
194
+ var S_DayOfWeek = styled_components_1.default.span(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n align-items: center;\n background-color: transparent;\n box-sizing: border-box;\n color: ", ";\n display: flex;\n justify-content: center;\n"], ["\n align-items: center;\n background-color: transparent;\n box-sizing: border-box;\n color: ", ";\n display: flex;\n justify-content: center;\n"])), function (_a) {
136
195
  var theme = _a.theme;
137
196
  return theme.ui_cpnt_textlabel_sys_primary;
138
197
  });
139
- var S_Grid = styled_components_1.default.div(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n align-items: center;\n display: grid;\n flex: 1;\n grid-row-gap: 2px;\n grid-template-columns: repeat(7, minmax(32px, 120px));\n grid-template-rows: repeat(6, minmax(25px, 32px));\n justify-items: center;\n"], ["\n align-items: center;\n display: grid;\n flex: 1;\n grid-row-gap: 2px;\n grid-template-columns: repeat(7, minmax(32px, 120px));\n grid-template-rows: repeat(6, minmax(25px, 32px));\n justify-items: center;\n"])));
140
- var S_CellWrapper = styled_components_1.default.div(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n align-items: center;\n display: flex;\n height: 100%;\n justify-content: center;\n position: relative;\n width: 100%;\n\n ", "\n\n ", "\n\n ", "\n"], ["\n align-items: center;\n display: flex;\n height: 100%;\n justify-content: center;\n position: relative;\n width: 100%;\n\n ", "\n\n ", "\n\n ", "\n"])), function (_a) {
198
+ var S_Grid = styled_components_1.default.div(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n align-items: center;\n display: grid;\n flex: 1;\n grid-row-gap: 2px;\n grid-template-columns: repeat(7, minmax(32px, 120px));\n grid-template-rows: repeat(6, minmax(25px, 32px));\n justify-items: center;\n"], ["\n align-items: center;\n display: grid;\n flex: 1;\n grid-row-gap: 2px;\n grid-template-columns: repeat(7, minmax(32px, 120px));\n grid-template-rows: repeat(6, minmax(25px, 32px));\n justify-items: center;\n"])));
199
+ var S_CellWrapper = styled_components_1.default.div(templateObject_10 || (templateObject_10 = __makeTemplateObject(["\n align-items: center;\n display: flex;\n height: 100%;\n justify-content: center;\n position: relative;\n width: 100%;\n\n ", "\n\n ", "\n\n ", "\n"], ["\n align-items: center;\n display: flex;\n height: 100%;\n justify-content: center;\n position: relative;\n width: 100%;\n\n ", "\n\n ", "\n\n ", "\n"])), function (_a) {
141
200
  var isRange = _a.isRange, isStart = _a.isStart, isEnd = _a.isEnd, isValidRange = _a.isValidRange, theme = _a.theme;
142
201
  return isValidRange &&
143
- (isRange || (isStart && !isEnd) || (isEnd && !isStart)) && (0, styled_components_1.css)(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n background: ", "20;\n "], ["\n background: ", "20;\n "])), theme.ui_cpnt_calendar_status_a);
202
+ (isRange || (isStart && !isEnd) || (isEnd && !isStart)) && (0, styled_components_1.css)(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n background: ", "20;\n "], ["\n background: ", "20;\n "])), theme.ui_cpnt_calendar_status_a);
144
203
  }, function (_a) {
145
204
  var isStart = _a.isStart, isEnd = _a.isEnd, isValidRange = _a.isValidRange, theme = _a.theme;
146
205
  return isValidRange &&
147
206
  isEnd &&
148
- !isStart && (0, styled_components_1.css)(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n background: linear-gradient(\n to right,\n ", "20 50%,\n transparent 50%\n );\n "], ["\n background: linear-gradient(\n to right,\n ", "20 50%,\n transparent 50%\n );\n "])), theme.ui_cpnt_calendar_status_a);
207
+ !isStart && (0, styled_components_1.css)(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n background: linear-gradient(\n to right,\n ", "20 50%,\n transparent 50%\n );\n "], ["\n background: linear-gradient(\n to right,\n ", "20 50%,\n transparent 50%\n );\n "])), theme.ui_cpnt_calendar_status_a);
149
208
  }, function (_a) {
150
209
  var isStart = _a.isStart, isEnd = _a.isEnd, isValidRange = _a.isValidRange, theme = _a.theme;
151
210
  return isValidRange &&
152
211
  isStart &&
153
- !isEnd && (0, styled_components_1.css)(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n background: linear-gradient(\n to left,\n ", "20 50%,\n transparent 50%\n );\n "], ["\n background: linear-gradient(\n to left,\n ", "20 50%,\n transparent 50%\n );\n "])), theme.ui_cpnt_calendar_status_a);
212
+ !isEnd && (0, styled_components_1.css)(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n background: linear-gradient(\n to left,\n ", "20 50%,\n transparent 50%\n );\n "], ["\n background: linear-gradient(\n to left,\n ", "20 50%,\n transparent 50%\n );\n "])), theme.ui_cpnt_calendar_status_a);
154
213
  });
155
214
  exports.default = DatePicker;
156
- var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9;
215
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10;
@@ -9,6 +9,8 @@ type Props = {
9
9
  onClickPrevButton: () => void;
10
10
  onClickNextButton: () => void;
11
11
  onClickTextButton: () => void;
12
+ onHeaderTitleClick?: () => void;
13
+ isHeaderTitleClickable?: boolean;
12
14
  };
13
- declare function DatePickerHeader({ headerTitle, textButtonText, isTextButtonDisabled, isPrevButtonDisabled, isNextButtonDisabled, onClickPrevButton, onClickNextButton, onClickTextButton }: Props): JSX.Element;
15
+ declare function DatePickerHeader({ headerTitle, textButtonText, isTextButtonDisabled, isPrevButtonDisabled, isNextButtonDisabled, onClickPrevButton, onClickNextButton, onClickTextButton, onHeaderTitleClick, isHeaderTitleClickable }: Props): JSX.Element;
14
16
  export default DatePickerHeader;
@@ -3,6 +3,17 @@ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cook
3
3
  if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
4
4
  return cooked;
5
5
  };
6
+ var __assign = (this && this.__assign) || function () {
7
+ __assign = Object.assign || function(t) {
8
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
9
+ s = arguments[i];
10
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
11
+ t[p] = s[p];
12
+ }
13
+ return t;
14
+ };
15
+ return __assign.apply(this, arguments);
16
+ };
6
17
  var __importDefault = (this && this.__importDefault) || function (mod) {
7
18
  return (mod && mod.__esModule) ? mod : { "default": mod };
8
19
  };
@@ -13,8 +24,8 @@ var IconButton_1 = require("../IconButton");
13
24
  var TextButton_1 = require("../TextButton");
14
25
  var TextLabel_1 = require("../TextLabel");
15
26
  function DatePickerHeader(_a) {
16
- var headerTitle = _a.headerTitle, textButtonText = _a.textButtonText, isTextButtonDisabled = _a.isTextButtonDisabled, isPrevButtonDisabled = _a.isPrevButtonDisabled, isNextButtonDisabled = _a.isNextButtonDisabled, onClickPrevButton = _a.onClickPrevButton, onClickNextButton = _a.onClickNextButton, onClickTextButton = _a.onClickTextButton;
17
- return ((0, jsx_runtime_1.jsxs)(S_HeaderContainer, { children: [(0, jsx_runtime_1.jsx)(S_LeftIconWrapper, { children: (0, jsx_runtime_1.jsx)(IconButton_1.IconButton, { onClick: onClickPrevButton, iconName: "ic_arrow_left", baseColorKey: "ui_cpnt_button_fill_base_transparent", iconSize: 16, baseSize: "medium", state: isPrevButtonDisabled ? 'disabled' : 'normal' }) }), (0, jsx_runtime_1.jsx)(TextLabel_1.TextLabel, { text: headerTitle, textAlign: "center" }), (0, jsx_runtime_1.jsx)(S_RightIconWrapper, { children: (0, jsx_runtime_1.jsx)(IconButton_1.IconButton, { onClick: onClickNextButton, iconName: "ic_arrow_right", baseColorKey: "ui_cpnt_button_fill_base_transparent", iconSize: 16, baseSize: "medium", state: isNextButtonDisabled ? 'disabled' : 'normal' }) }), textButtonText && ((0, jsx_runtime_1.jsx)(S_TextButtonWrapper, { children: (0, jsx_runtime_1.jsx)(TextButton_1.TextButton, { text: textButtonText, size: "xsmall", fontWeight: "bold", onClick: onClickTextButton, state: isTextButtonDisabled ? 'disabled' : 'normal' }) }))] }));
27
+ var headerTitle = _a.headerTitle, textButtonText = _a.textButtonText, isTextButtonDisabled = _a.isTextButtonDisabled, isPrevButtonDisabled = _a.isPrevButtonDisabled, isNextButtonDisabled = _a.isNextButtonDisabled, onClickPrevButton = _a.onClickPrevButton, onClickNextButton = _a.onClickNextButton, onClickTextButton = _a.onClickTextButton, onHeaderTitleClick = _a.onHeaderTitleClick, _b = _a.isHeaderTitleClickable, isHeaderTitleClickable = _b === void 0 ? false : _b;
28
+ return ((0, jsx_runtime_1.jsxs)(S_HeaderContainer, { children: [(0, jsx_runtime_1.jsx)(S_LeftIconWrapper, { children: (0, jsx_runtime_1.jsx)(IconButton_1.IconButton, { onClick: onClickPrevButton, iconName: "ic_arrow_left", baseColorKey: "ui_cpnt_button_fill_base_transparent", iconSize: 16, baseSize: "medium", state: isPrevButtonDisabled ? 'disabled' : 'normal' }) }), (0, jsx_runtime_1.jsx)(S_HeaderTitleWrapper, __assign({ onClick: isHeaderTitleClickable ? onHeaderTitleClick : undefined, isClickable: isHeaderTitleClickable }, { children: (0, jsx_runtime_1.jsx)(TextLabel_1.TextLabel, { text: headerTitle, textAlign: "center" }) })), (0, jsx_runtime_1.jsx)(S_RightIconWrapper, { children: (0, jsx_runtime_1.jsx)(IconButton_1.IconButton, { onClick: onClickNextButton, iconName: "ic_arrow_right", baseColorKey: "ui_cpnt_button_fill_base_transparent", iconSize: 16, baseSize: "medium", state: isNextButtonDisabled ? 'disabled' : 'normal' }) }), textButtonText && ((0, jsx_runtime_1.jsx)(S_TextButtonWrapper, { children: (0, jsx_runtime_1.jsx)(TextButton_1.TextButton, { text: textButtonText, size: "xsmall", fontWeight: "bold", onClick: onClickTextButton, state: isTextButtonDisabled ? 'disabled' : 'normal' }) }))] }));
18
29
  }
19
30
  var S_HeaderContainer = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n align-items: center;\n box-sizing: border-box;\n display: flex;\n justify-content: center;\n justify-items: center;\n margin: 0 ", ";\n position: relative;\n"], ["\n align-items: center;\n box-sizing: border-box;\n display: flex;\n justify-content: center;\n justify-items: center;\n margin: 0 ", ";\n position: relative;\n"])), function (_a) {
20
31
  var theme = _a.theme;
@@ -22,6 +33,14 @@ var S_HeaderContainer = styled_components_1.default.div(templateObject_1 || (tem
22
33
  });
23
34
  var S_TextButtonWrapper = styled_components_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n margin: auto 0;\n position: absolute;\n right: 0;\n"], ["\n margin: auto 0;\n position: absolute;\n right: 0;\n"])));
24
35
  var S_LeftIconWrapper = styled_components_1.default.div(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n align-items: center;\n display: flex;\n grid-column: 1 / 2;\n height: auto;\n width: auto;\n"], ["\n align-items: center;\n display: flex;\n grid-column: 1 / 2;\n height: auto;\n width: auto;\n"])));
25
- var S_RightIconWrapper = styled_components_1.default.div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n align-items: center;\n display: flex;\n grid-column: 3 / 4;\n height: auto;\n width: auto;\n"], ["\n align-items: center;\n display: flex;\n grid-column: 3 / 4;\n height: auto;\n width: auto;\n"])));
36
+ var S_HeaderTitleWrapper = styled_components_1.default.div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n border-radius: 4px;\n cursor: ", ";\n padding: 4px 8px;\n transition: background-color 0.2s ease;\n\n ", "\n"], ["\n border-radius: 4px;\n cursor: ", ";\n padding: 4px 8px;\n transition: background-color 0.2s ease;\n\n ", "\n"])), function (_a) {
37
+ var isClickable = _a.isClickable;
38
+ return (isClickable ? 'pointer' : 'default');
39
+ }, function (_a) {
40
+ var isClickable = _a.isClickable, theme = _a.theme;
41
+ return isClickable &&
42
+ "\n &:hover {\n background-color: ".concat(theme.ui_cpnt_button_fill_base_transparent, ";\n }\n ");
43
+ });
44
+ var S_RightIconWrapper = styled_components_1.default.div(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n align-items: center;\n display: flex;\n grid-column: 3 / 4;\n height: auto;\n width: auto;\n"], ["\n align-items: center;\n display: flex;\n grid-column: 3 / 4;\n height: auto;\n width: auto;\n"])));
26
45
  exports.default = DatePickerHeader;
27
- var templateObject_1, templateObject_2, templateObject_3, templateObject_4;
46
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;
@@ -0,0 +1,12 @@
1
+ /// <reference types="react" />
2
+ type Props = {
3
+ currentYear: number;
4
+ currentMonth: number;
5
+ minDate?: string;
6
+ maxDate?: string;
7
+ onMonthSelect: (year: number, month: number) => void;
8
+ onClose: () => void;
9
+ onBackToYear: () => void;
10
+ };
11
+ declare function MonthPicker({ currentYear, currentMonth, minDate, maxDate, onMonthSelect, onClose, onBackToYear }: Props): JSX.Element;
12
+ export default MonthPicker;
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
3
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
4
+ return cooked;
5
+ };
6
+ var __assign = (this && this.__assign) || function () {
7
+ __assign = Object.assign || function(t) {
8
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
9
+ s = arguments[i];
10
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
11
+ t[p] = s[p];
12
+ }
13
+ return t;
14
+ };
15
+ return __assign.apply(this, arguments);
16
+ };
17
+ var __importDefault = (this && this.__importDefault) || function (mod) {
18
+ return (mod && mod.__esModule) ? mod : { "default": mod };
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ var jsx_runtime_1 = require("react/jsx-runtime");
22
+ var react_1 = require("react");
23
+ var react_i18next_1 = require("react-i18next");
24
+ var dateHelper_1 = require("../../../common/utils/dateHelper");
25
+ var styled_components_1 = __importDefault(require("styled-components"));
26
+ var IconButton_1 = require("../IconButton");
27
+ var TextLabel_1 = require("../TextLabel");
28
+ // Constants
29
+ var MONTH_KEYS = [
30
+ 'str_month_january',
31
+ 'str_month_february',
32
+ 'str_month_march',
33
+ 'str_month_april',
34
+ 'str_month_may',
35
+ 'str_month_june',
36
+ 'str_month_july',
37
+ 'str_month_august',
38
+ 'str_month_september',
39
+ 'str_month_october',
40
+ 'str_month_november',
41
+ 'str_month_december'
42
+ ];
43
+ var MONTHS_COUNT = 12;
44
+ var GRID_COLUMNS = 3;
45
+ function MonthPicker(_a) {
46
+ var currentYear = _a.currentYear, currentMonth = _a.currentMonth, minDate = _a.minDate, maxDate = _a.maxDate, onMonthSelect = _a.onMonthSelect, onClose = _a.onClose, onBackToYear = _a.onBackToYear;
47
+ var t = (0, react_i18next_1.useTranslation)().t;
48
+ // Generate months array (1-12)
49
+ var months = (0, react_1.useMemo)(function () { return Array.from({ length: MONTHS_COUNT }, function (_, i) { return i + 1; }); }, []);
50
+ var getMonthStringKey = (0, react_1.useCallback)(function (monthNumber) {
51
+ return MONTH_KEYS[monthNumber - 1] || MONTH_KEYS[0];
52
+ }, []);
53
+ // Helper function to compare dates for disabled state
54
+ var isDateOutOfRange = (0, react_1.useCallback)(function (targetDate, compareDate, isMinDate) {
55
+ var targetYear = targetDate.getFullYear();
56
+ var targetMonth = targetDate.getMonth();
57
+ var compareYear = compareDate.getFullYear();
58
+ var compareMonth = compareDate.getMonth();
59
+ if (isMinDate) {
60
+ return (targetYear < compareYear || (targetYear === compareYear && targetMonth < compareMonth));
61
+ }
62
+ return targetYear > compareYear || (targetYear === compareYear && targetMonth > compareMonth);
63
+ }, []);
64
+ var isMonthDisabled = (0, react_1.useCallback)(function (month) {
65
+ if (!minDate && !maxDate)
66
+ return false;
67
+ var targetDate = new Date(currentYear, month - 1, 1);
68
+ if (minDate) {
69
+ var minDateObj = dateHelper_1.DateHelper.parseDate(minDate);
70
+ if (isDateOutOfRange(targetDate, minDateObj, true)) {
71
+ return true;
72
+ }
73
+ }
74
+ if (maxDate) {
75
+ var maxDateObj = dateHelper_1.DateHelper.parseDate(maxDate);
76
+ if (isDateOutOfRange(targetDate, maxDateObj, false)) {
77
+ return true;
78
+ }
79
+ }
80
+ return false;
81
+ }, [currentYear, minDate, maxDate, isDateOutOfRange]);
82
+ var handleMonthClick = (0, react_1.useCallback)(function (month) {
83
+ if (isMonthDisabled(month))
84
+ return;
85
+ onMonthSelect(currentYear, month);
86
+ onClose();
87
+ }, [currentYear, isMonthDisabled, onMonthSelect, onClose]);
88
+ // Helper function to get color theme for month text
89
+ var getTextColorTheme = (0, react_1.useCallback)(function (isDisabled, isSelected) {
90
+ if (isDisabled)
91
+ return 'sysTextTertiary';
92
+ if (isSelected)
93
+ return 'sysTextWhite';
94
+ return 'sysTextPrimary';
95
+ }, []);
96
+ return ((0, jsx_runtime_1.jsxs)(S_MonthPickerContainer, { children: [(0, jsx_runtime_1.jsxs)(S_Header, { children: [(0, jsx_runtime_1.jsx)(S_BackButton, { children: (0, jsx_runtime_1.jsx)(IconButton_1.IconButton, { onClick: onBackToYear, iconName: "ic_arrow_left", baseColorKey: "ui_cpnt_button_fill_base_transparent", iconSize: 20, baseSize: "medium" }) }), (0, jsx_runtime_1.jsx)(TextLabel_1.TextLabel, { text: currentYear.toString(), textAlign: "center" }), (0, jsx_runtime_1.jsx)(S_CloseButton, { children: (0, jsx_runtime_1.jsx)(IconButton_1.IconButton, { onClick: onClose, iconName: "ic_xmark", baseColorKey: "ui_cpnt_button_fill_base_transparent", iconSize: 20, baseSize: "small" }) })] }), (0, jsx_runtime_1.jsx)(S_MonthGrid, { children: months.map(function (month) {
97
+ var isDisabled = isMonthDisabled(month);
98
+ var isSelected = month === currentMonth;
99
+ return ((0, jsx_runtime_1.jsx)(S_MonthItem, __assign({ isSelected: isSelected, isDisabled: isDisabled, onClick: function () { return handleMonthClick(month); } }, { children: (0, jsx_runtime_1.jsx)(TextLabel_1.TextLabel, { text: t(getMonthStringKey(month)), textAlign: "center", colorTheme: getTextColorTheme(isDisabled, isSelected) }) }), month));
100
+ }) })] }));
101
+ }
102
+ var S_MonthPickerContainer = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n background-color: ", ";\n border: 1px solid ", ";\n border-radius: 16px;\n box-shadow: ", ";\n left: 50%;\n min-width: 280px;\n padding: 16px;\n padding-top: ", ";\n position: absolute;\n top: 100%;\n transform: translateX(-50%);\n z-index: 1000;\n"], ["\n background-color: ", ";\n border: 1px solid ", ";\n border-radius: 16px;\n box-shadow: ", ";\n left: 50%;\n min-width: 280px;\n padding: 16px;\n padding-top: ", ";\n position: absolute;\n top: 100%;\n transform: translateX(-50%);\n z-index: 1000;\n"])), function (_a) {
103
+ var theme = _a.theme;
104
+ return theme.ui_cpnt_button_fill_base_white;
105
+ }, function (_a) {
106
+ var theme = _a.theme;
107
+ return theme.ui_cpnt_card_base;
108
+ }, function (_a) {
109
+ var theme = _a.theme;
110
+ return theme.boxShadow.elevation4;
111
+ }, function (_a) {
112
+ var theme = _a.theme;
113
+ return theme.spacing.spacingA;
114
+ });
115
+ var S_Header = styled_components_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n align-items: center;\n display: flex;\n justify-content: space-between;\n margin-bottom: 16px;\n"], ["\n align-items: center;\n display: flex;\n justify-content: space-between;\n margin-bottom: 16px;\n"])));
116
+ var S_BackButton = styled_components_1.default.div(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n align-items: center;\n display: flex;\n"], ["\n align-items: center;\n display: flex;\n"])));
117
+ var S_CloseButton = styled_components_1.default.div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n align-items: center;\n display: flex;\n"], ["\n align-items: center;\n display: flex;\n"])));
118
+ var S_MonthGrid = styled_components_1.default.div(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n display: grid;\n gap: 8px;\n grid-template-columns: repeat(", ", 1fr);\n"], ["\n display: grid;\n gap: 8px;\n grid-template-columns: repeat(", ", 1fr);\n"])), GRID_COLUMNS);
119
+ var S_MonthItem = styled_components_1.default.button(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n align-items: center;\n background: ", ";\n border: 1px solid ", ";\n border-radius: 12px;\n cursor: ", ";\n display: flex;\n height: 40px;\n justify-content: center;\n padding: 8px;\n transition: all 0.2s ease;\n\n &:hover {\n background: ", ";\n }\n"], ["\n align-items: center;\n background: ", ";\n border: 1px solid ", ";\n border-radius: 12px;\n cursor: ", ";\n display: flex;\n height: 40px;\n justify-content: center;\n padding: 8px;\n transition: all 0.2s ease;\n\n &:hover {\n background: ", ";\n }\n"])), function (_a) {
120
+ var isSelected = _a.isSelected, theme = _a.theme;
121
+ return isSelected ? theme.ui_cpnt_calendar_status_a : 'transparent';
122
+ }, function (_a) {
123
+ var theme = _a.theme;
124
+ return theme.ui_cpnt_card_base;
125
+ }, function (_a) {
126
+ var isDisabled = _a.isDisabled;
127
+ return (isDisabled ? 'not-allowed' : 'pointer');
128
+ }, function (_a) {
129
+ var isSelected = _a.isSelected, theme = _a.theme;
130
+ return isSelected ? theme.ui_cpnt_calendar_status_a : theme.ui_cpnt_button_fill_base_transparent;
131
+ });
132
+ exports.default = MonthPicker;
133
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6;
@@ -0,0 +1,10 @@
1
+ /// <reference types="react" />
2
+ type Props = {
3
+ currentYear: number;
4
+ minDate?: string;
5
+ maxDate?: string;
6
+ onYearSelect: (year: number) => void;
7
+ onClose: () => void;
8
+ };
9
+ declare function YearPicker({ currentYear, minDate, maxDate, onYearSelect, onClose }: Props): JSX.Element;
10
+ export default YearPicker;
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
3
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
4
+ return cooked;
5
+ };
6
+ var __assign = (this && this.__assign) || function () {
7
+ __assign = Object.assign || function(t) {
8
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
9
+ s = arguments[i];
10
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
11
+ t[p] = s[p];
12
+ }
13
+ return t;
14
+ };
15
+ return __assign.apply(this, arguments);
16
+ };
17
+ var __importDefault = (this && this.__importDefault) || function (mod) {
18
+ return (mod && mod.__esModule) ? mod : { "default": mod };
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ var jsx_runtime_1 = require("react/jsx-runtime");
22
+ var react_1 = require("react");
23
+ var react_i18next_1 = require("react-i18next");
24
+ var dateHelper_1 = require("../../../common/utils/dateHelper");
25
+ var styled_components_1 = __importDefault(require("styled-components"));
26
+ var IconButton_1 = require("../IconButton");
27
+ var TextLabel_1 = require("../TextLabel");
28
+ function YearPicker(_a) {
29
+ var currentYear = _a.currentYear, minDate = _a.minDate, maxDate = _a.maxDate, onYearSelect = _a.onYearSelect, onClose = _a.onClose;
30
+ var t = (0, react_i18next_1.useTranslation)('translation').t;
31
+ var years = (0, react_1.useMemo)(function () {
32
+ var minYear = minDate ? dateHelper_1.DateHelper.parseDate(minDate).getFullYear() : currentYear - 10;
33
+ var maxYear = maxDate ? dateHelper_1.DateHelper.parseDate(maxDate).getFullYear() : currentYear + 10;
34
+ var yearList = [];
35
+ for (var year = minYear; year <= maxYear; year += 1) {
36
+ yearList.push(year);
37
+ }
38
+ return yearList;
39
+ }, [currentYear, minDate, maxDate]);
40
+ var handleYearClick = function (year) {
41
+ onYearSelect(year);
42
+ };
43
+ return ((0, jsx_runtime_1.jsxs)(S_YearPickerContainer, { children: [(0, jsx_runtime_1.jsxs)(S_Header, { children: [(0, jsx_runtime_1.jsx)(S_Title, { children: (0, jsx_runtime_1.jsx)(TextLabel_1.TextLabel, { text: t('str_9617'), textAlign: "center" }) }), (0, jsx_runtime_1.jsx)(S_CloseButton, __assign({ onClick: onClose }, { children: (0, jsx_runtime_1.jsx)(IconButton_1.IconButton, { iconName: "ic_xmark", baseColorKey: "ui_cpnt_button_fill_base_transparent", iconSize: 20, baseSize: "small" }) }))] }), (0, jsx_runtime_1.jsx)(S_YearGrid, { children: years.map(function (year) { return ((0, jsx_runtime_1.jsx)(S_YearItem, __assign({ isSelected: year === currentYear, onClick: function () { return handleYearClick(year); } }, { children: (0, jsx_runtime_1.jsx)(TextLabel_1.TextLabel, { text: year.toString(), textAlign: "center", colorTheme: year === currentYear ? 'sysTextWhite' : 'sysTextPrimary' }) }), year)); }) })] }));
44
+ }
45
+ var S_YearPickerContainer = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n background-color: ", ";\n border: 1px solid ", ";\n border-radius: 16px;\n box-shadow: ", ";\n left: 50%;\n min-width: 280px;\n padding: 16px;\n padding-top: ", ";\n position: absolute;\n top: 100%;\n transform: translateX(-50%);\n z-index: 1000;\n"], ["\n background-color: ", ";\n border: 1px solid ", ";\n border-radius: 16px;\n box-shadow: ", ";\n left: 50%;\n min-width: 280px;\n padding: 16px;\n padding-top: ", ";\n position: absolute;\n top: 100%;\n transform: translateX(-50%);\n z-index: 1000;\n"])), function (_a) {
46
+ var theme = _a.theme;
47
+ return theme.ui_cpnt_button_fill_base_white;
48
+ }, function (_a) {
49
+ var theme = _a.theme;
50
+ return theme.ui_cpnt_card_base;
51
+ }, function (_a) {
52
+ var theme = _a.theme;
53
+ return theme.boxShadow.elevation4;
54
+ }, function (_a) {
55
+ var theme = _a.theme;
56
+ return theme.spacing.spacingA;
57
+ });
58
+ var S_Header = styled_components_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n align-items: center;\n display: flex;\n height: 40px;\n justify-content: center;\n margin-bottom: 16px;\n position: relative;\n"], ["\n align-items: center;\n display: flex;\n height: 40px;\n justify-content: center;\n margin-bottom: 16px;\n position: relative;\n"])));
59
+ var S_CloseButton = styled_components_1.default.button(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n background: none;\n border: none;\n cursor: pointer;\n padding: 0;\n position: absolute;\n right: 0;\n top: 50%;\n transform: translateY(-50%);\n"], ["\n background: none;\n border: none;\n cursor: pointer;\n padding: 0;\n position: absolute;\n right: 0;\n top: 50%;\n transform: translateY(-50%);\n"])));
60
+ var S_Title = styled_components_1.default.div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n left: 50%;\n position: absolute;\n transform: translateX(-50%);\n"], ["\n left: 50%;\n position: absolute;\n transform: translateX(-50%);\n"])));
61
+ var S_YearGrid = styled_components_1.default.div(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n display: grid;\n gap: 8px;\n grid-template-columns: repeat(3, 1fr);\n max-height: 200px;\n overflow-y: auto;\n"], ["\n display: grid;\n gap: 8px;\n grid-template-columns: repeat(3, 1fr);\n max-height: 200px;\n overflow-y: auto;\n"])));
62
+ var S_YearItem = styled_components_1.default.button(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n align-items: center;\n background: ", ";\n border: 1px solid ", ";\n border-radius: 12px;\n cursor: pointer;\n display: flex;\n height: 40px;\n justify-content: center;\n padding: 8px;\n transition: all 0.2s ease;\n\n &:hover {\n background: ", ";\n }\n"], ["\n align-items: center;\n background: ", ";\n border: 1px solid ", ";\n border-radius: 12px;\n cursor: pointer;\n display: flex;\n height: 40px;\n justify-content: center;\n padding: 8px;\n transition: all 0.2s ease;\n\n &:hover {\n background: ", ";\n }\n"])), function (_a) {
63
+ var isSelected = _a.isSelected, theme = _a.theme;
64
+ return isSelected ? theme.ui_cpnt_calendar_status_a : 'transparent';
65
+ }, function (_a) {
66
+ var theme = _a.theme;
67
+ return theme.ui_cpnt_card_base;
68
+ }, function (_a) {
69
+ var isSelected = _a.isSelected, theme = _a.theme;
70
+ return isSelected ? theme.ui_cpnt_calendar_status_a : theme.ui_cpnt_button_fill_base_transparent;
71
+ });
72
+ exports.default = YearPicker;
73
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6;
@@ -1 +1,3 @@
1
1
  export { default as DatePicker } from './DatePicker';
2
+ export { default as YearPicker } from './YearPicker';
3
+ export { default as MonthPicker } from './MonthPicker';
@@ -3,6 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.DatePicker = void 0;
6
+ exports.MonthPicker = exports.YearPicker = exports.DatePicker = void 0;
7
7
  var DatePicker_1 = require("./DatePicker");
8
8
  Object.defineProperty(exports, "DatePicker", { enumerable: true, get: function () { return __importDefault(DatePicker_1).default; } });
9
+ var YearPicker_1 = require("./YearPicker");
10
+ Object.defineProperty(exports, "YearPicker", { enumerable: true, get: function () { return __importDefault(YearPicker_1).default; } });
11
+ var MonthPicker_1 = require("./MonthPicker");
12
+ Object.defineProperty(exports, "MonthPicker", { enumerable: true, get: function () { return __importDefault(MonthPicker_1).default; } });