@uxf/ui 10.0.0-beta.7 → 10.0.0-beta.74

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 (194) hide show
  1. package/_file-input-base/file-input-base.js +9 -1
  2. package/_select-base/_select-base.d.ts +1 -1
  3. package/_select-base/_select-base.js +4 -3
  4. package/alert-bubble/alert-bubble.d.ts +8 -0
  5. package/alert-bubble/alert-bubble.js +22 -0
  6. package/alert-bubble/alert-bubble.spec.d.ts +1 -0
  7. package/alert-bubble/alert-bubble.spec.js +9 -0
  8. package/alert-bubble/alert-bubble.stories.d.ts +7 -0
  9. package/alert-bubble/alert-bubble.stories.js +50 -0
  10. package/alert-bubble/index.d.ts +3 -0
  11. package/alert-bubble/index.js +5 -0
  12. package/alert-bubble/theme.d.ts +16 -0
  13. package/alert-bubble/theme.js +2 -0
  14. package/avatar-file-input/avatar-file-input.d.ts +3 -0
  15. package/avatar-file-input/avatar-file-input.js +10 -4
  16. package/avatar-file-input/avatar-file-input.stories.js +2 -2
  17. package/avatar-file-input/theme.d.ts +5 -0
  18. package/avatar-file-input/theme.js +2 -0
  19. package/button/theme.d.ts +1 -0
  20. package/calendar/calendar-day-cell.d.ts +3 -0
  21. package/calendar/calendar-day-cell.js +14 -14
  22. package/{date-picker/date-picker-navigation.d.ts → calendar/calendar-navigation.d.ts} +2 -3
  23. package/{date-picker/date-picker-navigation.js → calendar/calendar-navigation.js} +6 -6
  24. package/calendar/calendar-provider.js +1 -1
  25. package/calendar/calendar.d.ts +5 -0
  26. package/calendar/calendar.js +5 -8
  27. package/calendar/index.d.ts +4 -1
  28. package/calendar/index.js +5 -15
  29. package/chip/chip.js +6 -4
  30. package/chip/chip.stories.js +37 -28
  31. package/combobox/combobox.d.ts +1 -1
  32. package/combobox/combobox.stories.d.ts +2 -1
  33. package/combobox/combobox.stories.js +6 -2
  34. package/config/icons-config.d.ts +1 -1
  35. package/config/icons-config.js +1 -1
  36. package/config/icons.d.ts +13 -3
  37. package/config/icons.js +3 -1
  38. package/css/alert-bubble.css +100 -0
  39. package/css/avatar-file-input.css +54 -20
  40. package/css/avatar.css +3 -3
  41. package/css/badge.css +5 -5
  42. package/css/button-group.css +1 -1
  43. package/css/button-list.css +2 -2
  44. package/css/button.css +72 -26
  45. package/css/calendar.css +115 -51
  46. package/css/checkbox-button.css +8 -8
  47. package/css/checkbox.css +9 -9
  48. package/css/chip.css +217 -318
  49. package/css/color-radio-group.css +1 -1
  50. package/css/color-radio.css +3 -3
  51. package/css/component-structure-analyzer.css +12 -12
  52. package/css/date-picker.css +10 -3
  53. package/css/date-range-picker.css +21 -0
  54. package/css/datetime-picker.css +2 -2
  55. package/css/dialog.css +55 -0
  56. package/css/dropdown.css +10 -2
  57. package/css/dropzone.css +7 -7
  58. package/css/error-message.css +1 -1
  59. package/css/file-input.css +2 -2
  60. package/css/flash-messages.css +133 -9
  61. package/css/icon.css +1 -1
  62. package/css/image-gallery.css +7 -7
  63. package/css/input-with-popover.css +1 -1
  64. package/css/input.css +8 -8
  65. package/css/layout.css +4 -4
  66. package/css/list-item.css +2 -2
  67. package/css/message.css +92 -0
  68. package/css/modal.css +10 -54
  69. package/css/multi-combobox.css +10 -10
  70. package/css/pagination.css +14 -14
  71. package/css/paper.css +1 -1
  72. package/css/radio-group.css +3 -3
  73. package/css/radio.css +7 -7
  74. package/css/raster-image.css +1 -1
  75. package/css/select-base.css +1 -1
  76. package/css/tabs.css +13 -13
  77. package/css/text-link.css +4 -4
  78. package/css/textarea.css +68 -76
  79. package/css/time-picker.css +12 -16
  80. package/css/toggle.css +1 -1
  81. package/css/tooltip.css +2 -2
  82. package/date-picker/date-picker-decade.js +6 -6
  83. package/date-picker/date-picker-month.js +6 -6
  84. package/date-picker/date-picker-year.js +2 -2
  85. package/date-picker/date-picker.d.ts +2 -0
  86. package/date-picker/date-picker.js +2 -0
  87. package/date-picker-input/date-picker-input.d.ts +1 -0
  88. package/date-picker-input/date-picker-input.js +3 -1
  89. package/date-range-picker/date-range-picker-content.d.ts +2 -0
  90. package/date-range-picker/date-range-picker-content.js +55 -0
  91. package/date-range-picker/date-range-picker-decade.d.ts +6 -0
  92. package/date-range-picker/date-range-picker-decade.js +72 -0
  93. package/date-range-picker/date-range-picker-month.d.ts +8 -0
  94. package/date-range-picker/date-range-picker-month.js +69 -0
  95. package/date-range-picker/date-range-picker-year.d.ts +7 -0
  96. package/date-range-picker/date-range-picker-year.js +80 -0
  97. package/date-range-picker/date-range-picker.d.ts +10 -0
  98. package/date-range-picker/date-range-picker.js +51 -0
  99. package/date-range-picker/date-range-picker.spec.d.ts +1 -0
  100. package/date-range-picker/date-range-picker.spec.js +9 -0
  101. package/date-range-picker/date-range-picker.stories.d.ts +7 -0
  102. package/date-range-picker/date-range-picker.stories.js +43 -0
  103. package/date-range-picker/index.d.ts +3 -0
  104. package/date-range-picker/index.js +5 -0
  105. package/date-range-picker/types.d.ts +5 -0
  106. package/date-range-picker/types.js +2 -0
  107. package/date-range-picker-input/date-range-picker-input.d.ts +16 -0
  108. package/date-range-picker-input/date-range-picker-input.js +62 -0
  109. package/date-range-picker-input/date-range-picker-input.spec.d.ts +1 -0
  110. package/date-range-picker-input/date-range-picker-input.spec.js +9 -0
  111. package/date-range-picker-input/date-range-picker-input.stories.d.ts +10 -0
  112. package/date-range-picker-input/date-range-picker-input.stories.js +53 -0
  113. package/date-range-picker-input/index.d.ts +2 -0
  114. package/date-range-picker-input/index.js +5 -0
  115. package/datetime-picker/datetime-picker.d.ts +1 -0
  116. package/datetime-picker/datetime-picker.js +2 -2
  117. package/datetime-picker-input/datetime-picker-input.d.ts +1 -0
  118. package/datetime-picker-input/datetime-picker-input.js +3 -1
  119. package/dialog/dialog.d.ts +9 -0
  120. package/{modal/modal-dialog.js → dialog/dialog.js} +8 -9
  121. package/dialog/dialog.spec.d.ts +1 -0
  122. package/dialog/dialog.spec.js +9 -0
  123. package/dialog/dialog.stories.d.ts +7 -0
  124. package/dialog/dialog.stories.js +47 -0
  125. package/dialog/index.d.ts +2 -0
  126. package/dialog/index.js +5 -0
  127. package/dropzone/dropzone-input.js +10 -6
  128. package/file-input/file-input.d.ts +3 -0
  129. package/file-input/file-input.js +5 -5
  130. package/flash-messages/flash-message.js +1 -1
  131. package/flash-messages/flash-messages.js +44 -10
  132. package/flash-messages/flash-messages.stories.js +12 -0
  133. package/image-gallery/components/close-button.d.ts +2 -1
  134. package/image-gallery/components/close-button.js +2 -3
  135. package/image-gallery/components/gallery.d.ts +4 -1
  136. package/image-gallery/components/gallery.js +5 -4
  137. package/image-gallery/components/next-button.d.ts +7 -0
  138. package/image-gallery/components/next-button.js +14 -0
  139. package/image-gallery/components/prev-button.d.ts +7 -0
  140. package/image-gallery/components/prev-button.js +14 -0
  141. package/image-gallery/image-gallery.d.ts +4 -1
  142. package/image-gallery/image-gallery.js +1 -1
  143. package/image-gallery/image-gallery.stories.js +5 -1
  144. package/message/index.d.ts +3 -0
  145. package/message/index.js +7 -0
  146. package/message/message-content.d.ts +17 -0
  147. package/message/message-content.js +41 -0
  148. package/message/message-service.d.ts +13 -0
  149. package/message/message-service.js +29 -0
  150. package/message/message.d.ts +20 -0
  151. package/message/message.js +47 -0
  152. package/message/message.spec.d.ts +1 -0
  153. package/message/message.spec.js +9 -0
  154. package/message/message.stories.d.ts +7 -0
  155. package/message/message.stories.js +82 -0
  156. package/message/theme.d.ts +12 -0
  157. package/message/theme.js +2 -0
  158. package/modal/index.d.ts +2 -1
  159. package/modal/index.js +3 -3
  160. package/modal/modal.d.ts +5 -4
  161. package/modal/modal.js +9 -9
  162. package/modal/modal.stories.js +12 -0
  163. package/modal/theme.d.ts +3 -0
  164. package/multi-combobox/_multi-combobox-base.js +9 -3
  165. package/multi-combobox/multi-combobox.stories.js +6 -3
  166. package/multi-combobox/types.d.ts +4 -0
  167. package/multi-select/_multi-select-base.js +2 -2
  168. package/multi-select/multi-select.stories.js +5 -2
  169. package/package.json +10 -8
  170. package/radio-group/index.d.ts +1 -1
  171. package/radio-group/radio-group.d.ts +3 -3
  172. package/radio-group/radio-group.js +2 -2
  173. package/radio-group/radio-group.stories.js +4 -4
  174. package/raster-image/raster-image.js +1 -1
  175. package/select/select.d.ts +1 -1
  176. package/select/select.stories.d.ts +2 -1
  177. package/select/select.stories.js +8 -2
  178. package/textarea/textarea.js +5 -5
  179. package/time-picker/time-picker-hour.js +3 -3
  180. package/time-picker/time-picker-hours.js +1 -1
  181. package/time-picker/time-picker-minute.js +3 -3
  182. package/time-picker/time-picker-minutes.js +1 -1
  183. package/time-picker/time-picker.d.ts +1 -0
  184. package/time-picker/time-picker.js +3 -2
  185. package/time-picker-input/time-picker-input.js +3 -1
  186. package/tooltip/tooltip.js +20 -18
  187. package/utils/icons-config.js +13 -3
  188. package/utils/mocks/uploadFIle.mock.js +1 -1
  189. package/utils/storybook-config.d.ts +11 -1
  190. package/utils/storybook-config.js +9 -1
  191. package/utils/tailwind-config.js +8 -0
  192. package/image-gallery/components/arrow-button.d.ts +0 -7
  193. package/image-gallery/components/arrow-button.js +0 -14
  194. package/modal/modal-dialog.d.ts +0 -11
package/css/textarea.css CHANGED
@@ -1,99 +1,93 @@
1
1
  .uxf-textarea {
2
- &__wrapper {
3
- @apply rounded-md text-base border p-2 shadow-sm;
2
+ :root .light & {
3
+ --bg-color: theme("colors.white");
4
+ --border-color: theme("colors.gray.200");
5
+ --color: theme("colors.gray.900");
6
+ }
4
7
 
5
- :root .light & {
6
- @apply bg-white text-gray-900 border-gray-200;
7
- }
8
+ :root .dark & {
9
+ --bg-color: theme("colors.gray.800");
10
+ --border-color: theme("colors.gray.700");
11
+ --color: theme("colors.gray.300");
12
+ }
8
13
 
9
- :root .dark & {
10
- @apply bg-gray-800 text-gray-300 border-gray-700;
11
- }
14
+ &__wrapper {
15
+ background-color: var(--bg-color);
16
+ border: 1px solid var(--border-color);
17
+ border-radius: theme("borderRadius.md");
18
+ box-shadow: theme("boxShadow.sm");
19
+ color: var(--color);
20
+ padding: theme("spacing.2");
12
21
  }
13
22
 
14
23
  &__element {
15
- @apply bg-transparent outline-none resize-none w-full;
16
-
17
- :root .light & {
18
- @apply placeholder:text-gray-400;
19
- }
20
-
21
- :root .dark & {
22
- @apply placeholder:text-gray-400;
24
+ appearance: none;
25
+ background-color: transparent;
26
+ display: block;
27
+ outline: none;
28
+ overflow-y: hidden;
29
+ resize: none;
30
+ width: 100%;
31
+
32
+ &::placeholder {
33
+ color: theme("colors.gray.400");
23
34
  }
24
35
  }
25
36
 
26
37
  &.is-focused {
27
- .uxf-textarea__wrapper {
28
- @apply ring-2 ring-inset ring-offset-0;
29
-
30
- :root .light & {
31
- @apply ring-primary;
32
- }
33
-
34
- :root .dark & {
35
- @apply ring-primary;
36
- }
38
+ :root .light &,
39
+ :root .dark & {
40
+ --border-color: theme("colors.primary.DEFAULT");
37
41
  }
38
- }
39
-
40
- &.is-disabled {
41
- @apply cursor-not-allowed;
42
42
 
43
43
  .uxf-textarea__wrapper {
44
- :root .light & {
45
- @apply bg-gray-300;
46
- }
47
-
48
- :root .dark & {
49
- @apply bg-gray-600;
50
- }
44
+ @apply ring-2 ring-inset ring-[--border-color] ring-offset-0;
51
45
  }
46
+ }
52
47
 
53
- .uxf-textarea__element {
54
- @apply cursor-not-allowed;
48
+ &.is-invalid {
49
+ :root .light &,
50
+ :root .dark & {
51
+ --border-color: var(--color);
52
+ --color: theme("colors.error.DEFAULT");
55
53
  }
56
54
  }
57
55
 
58
56
  &.is-readonly {
59
- @apply cursor-text;
57
+ cursor: text;
58
+ pointer-events: none;
60
59
 
61
- .uxf-textarea__element {
62
- @apply cursor-not-allowed pointer-events-none;
60
+ :root .light & {
61
+ --bg-color: theme("colors.gray.300");
62
+ --border-color: theme("colors.gray.200");
63
+ }
64
+
65
+ :root .dark & {
66
+ --bg-color: theme("colors.gray.500");
67
+ --border-color: theme("colors.gray.700");
63
68
  }
64
69
 
65
70
  .uxf-textarea__wrapper {
66
71
  @apply ring-0;
67
-
68
- :root .light & {
69
- @apply border-gray-300;
70
- }
71
-
72
- :root .dark & {
73
- @apply border-gray-500;
74
- }
75
72
  }
76
73
  }
77
74
 
78
- &.is-invalid {
79
- &.is-focused {
80
- .uxf-textarea__wrapper {
81
- @apply ring-0;
82
- }
83
- }
75
+ &.is-disabled {
76
+ cursor: not-allowed;
84
77
 
85
- .uxf-textarea__wrapper {
86
- @apply border-error;
78
+ :root .light & {
79
+ --bg-color: theme("colors.gray.300");
80
+ }
87
81
 
88
- .uxf-textarea__element {
89
- :root .light & {
90
- @apply text-error;
91
- }
82
+ :root .dark & {
83
+ --bg-color: theme("colors.gray.600");
84
+ }
85
+ }
92
86
 
93
- :root .dark & {
94
- @apply text-error;
95
- }
96
- }
87
+ &.is-readonly,
88
+ &.is-disabled {
89
+ .uxf-textarea__element {
90
+ cursor: inherit;
97
91
  }
98
92
  }
99
93
 
@@ -101,24 +95,22 @@
101
95
  &,
102
96
  &:hover,
103
97
  &:focus {
104
- -webkit-appearance: none;
105
- -moz-appearance: none;
106
98
  appearance: none;
107
99
  transition: background-color 5000s ease-in-out 0s !important;
108
100
 
101
+ :root .light & {
102
+ background-color: theme("colors.white");
103
+ -webkit-box-shadow: inset 0 0 0 1000px theme("colors.white"); /* stylelint-disable-line property-no-vendor-prefix */
104
+ box-shadow: inset 0 0 0 1000px theme("colors.white");
105
+ }
106
+
109
107
  :root .dark & {
110
108
  -webkit-text-fill-color: theme("colors.gray.300");
111
- -webkit-box-shadow: inset 0 0 0 1000px theme("colors.gray.800");
112
- box-shadow: inset 0 0 0 1000px theme("colors.gray.800");
113
109
  background-color: theme("colors.gray.800");
110
+ -webkit-box-shadow: inset 0 0 0 1000px theme("colors.gray.800"); /* stylelint-disable-line property-no-vendor-prefix */
111
+ box-shadow: inset 0 0 0 1000px theme("colors.gray.800");
114
112
  caret-color: white;
115
113
  }
116
-
117
- :root .light & {
118
- -webkit-box-shadow: inset 0 0 0 1000px theme("colors.white");
119
- box-shadow: inset 0 0 0 1000px theme("colors.white");
120
- background-color: theme("colors.white");
121
- }
122
114
  }
123
115
  }
124
116
  }
@@ -1,32 +1,28 @@
1
1
  .uxf-time-picker {
2
2
  &__global {
3
- @apply flex items-center justify-between px-4 w-[180px] mx-auto;
3
+ align-items: center;
4
+ display: flex;
5
+ justify-content: space-between;
6
+ margin: 0 auto;
7
+ padding: 0 theme("spacing.4");
8
+ width: 180px;
4
9
 
5
10
  &__column {
6
- @apply flex flex-col items-center shrink-0;
7
-
11
+ align-items: center;
12
+ display: flex;
13
+ flex-direction: column;
14
+ flex-shrink: 0;
8
15
  width: 48px;
9
16
 
10
17
  & > :nth-child(1),
11
18
  & > :nth-child(3) {
12
- height: 24px
19
+ height: 24px;
13
20
  }
14
21
  }
15
22
  }
16
23
 
17
24
  &__hours,
18
25
  &__minutes {
19
- @apply grid grid-cols-4 place-items-center gap-1 mx-auto;
20
-
21
- text-align: center;
22
- width: 200px;
23
- }
24
-
25
- :root .light & {
26
- @apply text-gray-900;
27
- }
28
-
29
- :root .dark & {
30
- @apply bg-gray-900 text-white;
26
+ width: 288px;
31
27
  }
32
28
  }
package/css/toggle.css CHANGED
@@ -1,5 +1,5 @@
1
1
  .uxf-toggle {
2
- @apply relative inline-flex shrink-0 h-6 w-12 items-center rounded-full p-0.5 outline-none ring-offset-2
2
+ @apply relative inline-flex h-6 w-12 shrink-0 items-center rounded-full p-0.5 outline-none ring-offset-2
3
3
  focus-visible:ring-2 [&>*]:active:w-[30px];
4
4
 
5
5
  &__wrapper {
package/css/tooltip.css CHANGED
@@ -1,7 +1,7 @@
1
1
  .uxf-tooltip {
2
- @apply w-max max-w-[calc(100vw-20px)] bg-lightHigh p-3 text-white rounded-lg z-tooltip;
2
+ @apply z-tooltip w-max max-w-[calc(100vw-20px)] rounded-lg bg-lightHigh p-3 text-white;
3
3
 
4
4
  &__arrow {
5
- @apply bg-lightHigh rounded-sm z-tooltip;
5
+ @apply z-tooltip rounded-sm bg-lightHigh;
6
6
  }
7
7
  }
@@ -33,7 +33,7 @@ const date_picker_context_1 = require("@uxf/datepicker/contexts/date-picker-cont
33
33
  const use_decade_1 = require("@uxf/datepicker/hooks/use-decade");
34
34
  const cx_1 = require("@uxf/core/utils/cx");
35
35
  const classes_1 = require("@uxf/core/constants/classes");
36
- const date_picker_navigation_1 = require("./date-picker-navigation");
36
+ const calendar_1 = require("../calendar");
37
37
  exports.DatePickerDecade = (0, react_1.memo)((props) => {
38
38
  const { onYearSelect } = props;
39
39
  const { canGoToYear, goToNextYear, goToPrevYear, activeMonths } = (0, react_1.useContext)(date_picker_context_1.DatePickerContext);
@@ -41,8 +41,8 @@ exports.DatePickerDecade = (0, react_1.memo)((props) => {
41
41
  const { decadeLabel, years } = (0, use_decade_1.useDecade)({
42
42
  year: currentYear,
43
43
  });
44
- const canGoToPrevDecade = canGoToYear((0, dayjs_1.default)(new Date(currentYear, 0)).subtract(4, "years").toDate());
45
- const canGoToNextDecade = canGoToYear((0, dayjs_1.default)(new Date(currentYear, 0)).add(4, "years").toDate());
44
+ const canGoToPrevDecade = canGoToYear((0, dayjs_1.default)(new Date(currentYear, 0)).subtract(5, "years").toDate());
45
+ const canGoToNextDecade = canGoToYear((0, dayjs_1.default)(new Date(currentYear, 0)).add(5, "years").toDate());
46
46
  const handleGoToPrevDecadeClick = (0, react_1.useCallback)(() => {
47
47
  if (canGoToPrevDecade) {
48
48
  goToPrevYear(9);
@@ -59,15 +59,15 @@ exports.DatePickerDecade = (0, react_1.memo)((props) => {
59
59
  }
60
60
  }, [canGoToYear, onYearSelect]);
61
61
  return (react_1.default.createElement(react_1.default.Fragment, null,
62
- react_1.default.createElement(date_picker_navigation_1.DatePickerNavigation, { prevButtonProps: {
62
+ react_1.default.createElement(calendar_1.CalendarNavigation, { prevButtonProps: {
63
63
  onClick: handleGoToPrevDecadeClick,
64
64
  title: "Zpět",
65
65
  }, nextButtonProps: {
66
66
  onClick: handleGoToNextDecadeClick,
67
- title: "Nadcházející rok",
67
+ title: "Vpřed",
68
68
  }, selectButtonProps: {
69
69
  children: decadeLabel,
70
70
  } }),
71
- react_1.default.createElement("div", { className: "uxf-calendar__decade" }, years.map((year, index) => (react_1.default.createElement("button", { className: (0, cx_1.cx)("uxf-calendar__cell uxf-calendar__cell-year", !canGoToYear(year.date) && classes_1.CLASSES.IS_DISABLED), key: year.yearLabel + index, onClick: handleSelectYear(year.date), type: "button" }, year.yearLabel))))));
71
+ react_1.default.createElement("div", { className: "uxf-calendar__decade" }, years.map((year) => (react_1.default.createElement("button", { className: (0, cx_1.cx)("uxf-calendar__cell uxf-calendar__cell-year", !canGoToYear(year.date) && classes_1.CLASSES.IS_DISABLED), key: year.yearLabel, onClick: handleSelectYear(year.date), type: "button" }, year.yearLabel))))));
72
72
  });
73
73
  exports.DatePickerDecade.displayName = "UxfUiDatePickerDecade";
@@ -32,10 +32,10 @@ const use_month_1 = require("@uxf/datepicker/hooks/use-month");
32
32
  const dayjs_1 = __importDefault(require("dayjs"));
33
33
  const react_1 = __importStar(require("react"));
34
34
  const calendar_1 = require("../calendar");
35
- const date_picker_navigation_1 = require("./date-picker-navigation");
36
35
  exports.DatePickerMonth = (0, react_1.memo)((props) => {
37
36
  const { setViewMode } = props;
38
- const { activeMonths, canGoToNextMonth, canGoToPrevMonth, firstDayOfWeek, goToNextMonthsByOneMonth, goToPrevMonthsByOneMonth, } = (0, react_1.useContext)(date_picker_context_1.DatePickerContext);
37
+ const datePickerProps = (0, react_1.useContext)(date_picker_context_1.DatePickerContext);
38
+ const { activeMonths, canGoToNextMonth, canGoToPrevMonth, firstDayOfWeek, goToNextMonthsByOneMonth, goToPrevMonthsByOneMonth, } = datePickerProps;
39
39
  const currentMonth = activeMonths[0].month;
40
40
  const currentYear = activeMonths[0].year;
41
41
  const { monthLabel } = (0, use_month_1.useMonth)({
@@ -54,19 +54,19 @@ exports.DatePickerMonth = (0, react_1.memo)((props) => {
54
54
  setViewMode("year");
55
55
  }, [setViewMode]);
56
56
  return (react_1.default.createElement(react_1.default.Fragment, null,
57
- react_1.default.createElement(date_picker_navigation_1.DatePickerNavigation, { prevButtonProps: {
57
+ react_1.default.createElement(calendar_1.CalendarNavigation, { prevButtonProps: {
58
58
  disabled: !canGoToPrevMonth,
59
59
  onClick: canGoToPrevMonth ? handleGoToPrevMonth : undefined,
60
- title: "Zpět",
60
+ title: "Předchozí měsíc",
61
61
  }, nextButtonProps: {
62
62
  disabled: !canGoToNextMonth,
63
63
  onClick: canGoToNextMonth ? handleGoToNextMonth : undefined,
64
- title: "Vpřed",
64
+ title: "Nadcházející měsíc",
65
65
  }, selectButtonProps: {
66
66
  children: monthLabel,
67
67
  onClick: handleMonthClick,
68
68
  title: "Vybrat měsíc",
69
69
  } }),
70
- react_1.default.createElement(calendar_1.Calendar, null)));
70
+ react_1.default.createElement(calendar_1.Calendar, { datePickerProps: datePickerProps })));
71
71
  });
72
72
  exports.DatePickerMonth.displayName = "UxfUiDatePickerMonth";
@@ -33,7 +33,7 @@ const date_picker_context_1 = require("@uxf/datepicker/contexts/date-picker-cont
33
33
  const use_year_1 = require("@uxf/datepicker/hooks/use-year");
34
34
  const dayjs_1 = __importDefault(require("dayjs"));
35
35
  const react_1 = __importStar(require("react"));
36
- const date_picker_navigation_1 = require("./date-picker-navigation");
36
+ const calendar_1 = require("../calendar");
37
37
  exports.DatePickerYear = (0, react_1.memo)((props) => {
38
38
  const { canGoToNextYear, canGoToPrevYear, goToNextYear, goToPrevYear, canGoToMonth, activeMonths } = (0, react_1.useContext)(date_picker_context_1.DatePickerContext);
39
39
  const currentYear = activeMonths[0].year;
@@ -61,7 +61,7 @@ exports.DatePickerYear = (0, react_1.memo)((props) => {
61
61
  }
62
62
  }, [canGoToMonth, props]);
63
63
  return (react_1.default.createElement(react_1.default.Fragment, null,
64
- react_1.default.createElement(date_picker_navigation_1.DatePickerNavigation, { prevButtonProps: {
64
+ react_1.default.createElement(calendar_1.CalendarNavigation, { prevButtonProps: {
65
65
  disabled: !canGoToPrevYear,
66
66
  onClick: canGoToPrevYear ? handleGoToPrevYear : undefined,
67
67
  title: "Předchozí rok",
@@ -6,5 +6,7 @@ export interface DatePickerProps {
6
6
  selectedDate: Date | null;
7
7
  minDate?: Date;
8
8
  maxDate?: Date;
9
+ preventScroll?: boolean;
10
+ unavailableDates?: Date[];
9
11
  }
10
12
  export declare const DatePicker: FC<DatePickerProps>;
@@ -19,6 +19,8 @@ const DatePicker = (props) => {
19
19
  selectedDate: props.selectedDate,
20
20
  minBookingDate: props.minDate,
21
21
  maxBookingDate: props.maxDate,
22
+ preventScroll: props.preventScroll,
23
+ unavailableDates: props.unavailableDates,
22
24
  });
23
25
  return (react_1.default.createElement(date_picker_context_1.DatePickerContext.Provider, { value: datePickerProps },
24
26
  react_1.default.createElement(date_picker_content_1.DatePickerContent, null)));
@@ -8,5 +8,6 @@ export interface DatePickerInputProps extends Omit<InputWithPopoverProps<string
8
8
  triggerElement?: ReactNode;
9
9
  minDate?: string;
10
10
  maxDate?: string;
11
+ unavailableDates?: Date[];
11
12
  }
12
13
  export declare const DatePickerInput: React.ForwardRefExoticComponent<DatePickerInputProps & React.RefAttributes<HTMLInputElement>>;
@@ -33,6 +33,7 @@ const _input_with_popover_1 = require("../_input-with-popover");
33
33
  const customParseFormat_1 = __importDefault(require("dayjs/plugin/customParseFormat"));
34
34
  const icon_1 = require("../icon");
35
35
  const date_picker_1 = require("../date-picker");
36
+ const cx_1 = require("@uxf/core/utils/cx");
36
37
  (0, dayjs_1.extend)(customParseFormat_1.default);
37
38
  exports.ALLOWED_DATE_FORMAT = ["D. M. YYYY", "DD. MM. YYYY", "D.M.YYYY", "DD.MM.YYYY"];
38
39
  exports.DISPLAY_DATE_FORMAT = "D. M. YYYY";
@@ -61,6 +62,7 @@ function getBoundaryDate(value) {
61
62
  exports.DatePickerInput = (0, react_1.forwardRef)((props, ref) => {
62
63
  var _a, _b;
63
64
  const onChange = props.onChange;
65
+ const className = (0, cx_1.cx)("uxf-date-picker-input", props.className);
64
66
  const onInputChange = (0, react_1.useCallback)((value) => {
65
67
  const parsedValue = (0, dayjs_1.default)(value, exports.ALLOWED_DATE_FORMAT, true);
66
68
  if (value !== "" && parsedValue.isValid()) {
@@ -78,6 +80,6 @@ exports.DatePickerInput = (0, react_1.forwardRef)((props, ref) => {
78
80
  const selectedDate = getSelectedDate(props.value);
79
81
  const parsedMinDate = getBoundaryDate(props.minDate);
80
82
  const parsedMaxDate = getBoundaryDate(props.maxDate);
81
- return (react_1.default.createElement(_input_with_popover_1._InputWithPopover, { ...props, onChange: onInputChange, placeholder: (_a = props.placeholder) !== null && _a !== void 0 ? _a : (0, dayjs_1.default)().format(exports.DISPLAY_DATE_FORMAT), ref: ref, value: value, triggerElement: (_b = props.triggerElement) !== null && _b !== void 0 ? _b : react_1.default.createElement(icon_1.Icon, { name: "calendar", size: 20 }) }, ({ close }) => (react_1.default.createElement(date_picker_1.DatePicker, { minDate: parsedMinDate, maxDate: parsedMaxDate, closePopoverHandler: close, onChange: onDatePickerChange, selectedDate: selectedDate }))));
83
+ return (react_1.default.createElement(_input_with_popover_1._InputWithPopover, { ...props, className: className, onChange: onInputChange, placeholder: (_a = props.placeholder) !== null && _a !== void 0 ? _a : (0, dayjs_1.default)().format(exports.DISPLAY_DATE_FORMAT), ref: ref, value: value, triggerElement: (_b = props.triggerElement) !== null && _b !== void 0 ? _b : react_1.default.createElement(icon_1.Icon, { name: "calendar", size: 20 }) }, ({ close }) => (react_1.default.createElement(date_picker_1.DatePicker, { minDate: parsedMinDate, maxDate: parsedMaxDate, closePopoverHandler: close, onChange: onDatePickerChange, preventScroll: true, selectedDate: selectedDate, unavailableDates: props.unavailableDates }))));
82
84
  });
83
85
  exports.DatePickerInput.displayName = "UxfUiDatePickerInput";
@@ -0,0 +1,2 @@
1
+ import { FC, PropsWithChildren } from "react";
2
+ export declare const DateRangePickerContent: FC<PropsWithChildren>;
@@ -0,0 +1,55 @@
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.DateRangePickerContent = void 0;
27
+ const react_1 = __importStar(require("react"));
28
+ const date_range_picker_year_1 = require("./date-range-picker-year");
29
+ const date_range_picker_decade_1 = require("./date-range-picker-decade");
30
+ const date_range_picker_month_1 = require("./date-range-picker-month");
31
+ const date_range_picker_context_1 = require("@uxf/datepicker/contexts/date-range-picker-context");
32
+ const DateRangePickerContent = (props) => {
33
+ // eslint-disable-next-line react/destructuring-assignment
34
+ const { goToDate, activeMonths } = (0, react_1.useContext)(date_range_picker_context_1.DateRangePickerContext);
35
+ const [viewMode, setViewMode] = (0, react_1.useState)("month");
36
+ const onYearSelect = (0, react_1.useCallback)(() => setViewMode("decade"), [setViewMode]);
37
+ const onMonthSelect = (0, react_1.useCallback)((date) => {
38
+ goToDate(date);
39
+ setViewMode("month");
40
+ }, [goToDate, setViewMode]);
41
+ const onDecadeYearSelect = (0, react_1.useCallback)((date) => {
42
+ goToDate(date);
43
+ setViewMode("year");
44
+ }, [goToDate, setViewMode]);
45
+ const datePickerComponents = (0, react_1.useMemo)(() => ({
46
+ month: (react_1.default.createElement("div", { className: "uxf-date-range-picker__months" }, activeMonths.map((activeMonth) => (react_1.default.createElement(date_range_picker_month_1.DateRangePickerMonth, { key: `${activeMonth.year}-${activeMonth.month}`, month: activeMonth.month, setViewMode: setViewMode, year: activeMonth.year }))))),
47
+ year: react_1.default.createElement(date_range_picker_year_1.DateRangePickerYear, { onMonthSelect: (date) => onMonthSelect(date), onYearSelect: onYearSelect }),
48
+ decade: react_1.default.createElement(date_range_picker_decade_1.DateRangePickerDecade, { onYearSelect: (date) => onDecadeYearSelect(date) }),
49
+ }), [onMonthSelect, onYearSelect, onDecadeYearSelect, setViewMode, activeMonths]);
50
+ return (react_1.default.createElement("div", { className: `uxf-date-range-picker ${activeMonths.length > 1 ? "uxf-date-range-picker--multi-month" : ""}` },
51
+ props.children,
52
+ datePickerComponents[viewMode]));
53
+ };
54
+ exports.DateRangePickerContent = DateRangePickerContent;
55
+ exports.DateRangePickerContent.displayName = "UxfUiDateRangePickerContent";
@@ -0,0 +1,6 @@
1
+ import React from "react";
2
+ interface DatePickerDecadeProps {
3
+ onYearSelect: (date: Date) => void;
4
+ }
5
+ export declare const DateRangePickerDecade: React.NamedExoticComponent<DatePickerDecadeProps>;
6
+ export {};
@@ -0,0 +1,72 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.DateRangePickerDecade = void 0;
30
+ const dayjs_1 = __importDefault(require("dayjs"));
31
+ const react_1 = __importStar(require("react"));
32
+ const use_decade_1 = require("@uxf/datepicker/hooks/use-decade");
33
+ const cx_1 = require("@uxf/core/utils/cx");
34
+ const classes_1 = require("@uxf/core/constants/classes");
35
+ const date_range_picker_context_1 = require("@uxf/datepicker/contexts/date-range-picker-context");
36
+ const calendar_1 = require("../calendar");
37
+ exports.DateRangePickerDecade = (0, react_1.memo)((props) => {
38
+ const { canGoToYear, goToNextYear, goToPrevYear, activeMonths } = (0, react_1.useContext)(date_range_picker_context_1.DateRangePickerContext);
39
+ const currentYear = activeMonths[0].year;
40
+ const { decadeLabel, years } = (0, use_decade_1.useDecade)({
41
+ year: currentYear,
42
+ });
43
+ const canGoToPrevDecade = canGoToYear((0, dayjs_1.default)(new Date(currentYear, 0)).subtract(5, "years").toDate());
44
+ const canGoToNextDecade = canGoToYear((0, dayjs_1.default)(new Date(currentYear, 0)).add(5, "years").toDate());
45
+ const handleGoToPrevDecadeClick = (0, react_1.useCallback)(() => {
46
+ if (canGoToPrevDecade) {
47
+ goToPrevYear(9);
48
+ }
49
+ }, [canGoToPrevDecade, goToPrevYear]);
50
+ const handleGoToNextDecadeClick = (0, react_1.useCallback)(() => {
51
+ if (canGoToNextDecade) {
52
+ goToNextYear(9);
53
+ }
54
+ }, [canGoToNextDecade, goToNextYear]);
55
+ const handleSelectYear = (0, react_1.useCallback)((date) => () => {
56
+ if (canGoToYear(date)) {
57
+ props.onYearSelect(date);
58
+ }
59
+ }, [canGoToYear, props]);
60
+ return (react_1.default.createElement(react_1.default.Fragment, null,
61
+ react_1.default.createElement(calendar_1.CalendarNavigation, { prevButtonProps: {
62
+ onClick: handleGoToPrevDecadeClick,
63
+ title: "Zpět",
64
+ }, nextButtonProps: {
65
+ onClick: handleGoToNextDecadeClick,
66
+ title: "Vpřed",
67
+ }, selectButtonProps: {
68
+ children: decadeLabel,
69
+ } }),
70
+ react_1.default.createElement("div", { className: "uxf-calendar__decade" }, years.map((year) => (react_1.default.createElement("button", { className: (0, cx_1.cx)("uxf-calendar__cell uxf-calendar__cell-year", !canGoToYear(year.date) && classes_1.CLASSES.IS_DISABLED, (0, dayjs_1.default)(year.date).year() === currentYear && "uxf-calendar__cell-year--current"), key: year.yearLabel, onClick: handleSelectYear(year.date), type: "button" }, year.yearLabel))))));
71
+ });
72
+ exports.DateRangePickerDecade.displayName = "UxfUiDatePickerDecade";
@@ -0,0 +1,8 @@
1
+ import { UseMonthProps } from "@uxf/datepicker/hooks/use-month";
2
+ import React, { Dispatch, SetStateAction } from "react";
3
+ import { ViewModeType } from "./types";
4
+ interface DatePickerMonthProps extends UseMonthProps {
5
+ setViewMode: Dispatch<SetStateAction<ViewModeType>>;
6
+ }
7
+ export declare const DateRangePickerMonth: React.NamedExoticComponent<DatePickerMonthProps>;
8
+ export {};
@@ -0,0 +1,69 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.DateRangePickerMonth = void 0;
30
+ const use_month_1 = require("@uxf/datepicker/hooks/use-month");
31
+ const dayjs_1 = __importDefault(require("dayjs"));
32
+ const react_1 = __importStar(require("react"));
33
+ const calendar_1 = require("../calendar");
34
+ const date_range_picker_context_1 = require("@uxf/datepicker/contexts/date-range-picker-context");
35
+ exports.DateRangePickerMonth = (0, react_1.memo)((props) => {
36
+ const dateRangePickerProps = (0, react_1.useContext)(date_range_picker_context_1.DateRangePickerContext);
37
+ const { canGoToNextMonth, canGoToPrevMonth, firstDayOfWeek, goToNextMonthsByOneMonth, goToPrevMonthsByOneMonth } = dateRangePickerProps;
38
+ const { monthLabel } = (0, use_month_1.useMonth)({
39
+ dayLabelFormat: (date) => (0, dayjs_1.default)(date).format("D"),
40
+ firstDayOfWeek,
41
+ month: props.month,
42
+ monthLabelFormat: (date) => (0, dayjs_1.default)(date).format("MMMM YYYY"),
43
+ weekdayLabelFormat: (date) => (0, dayjs_1.default)(date).format("dd"),
44
+ year: props.year,
45
+ });
46
+ const handleGoToPrevMonth = (0, react_1.useCallback)(() => {
47
+ goToPrevMonthsByOneMonth();
48
+ }, [goToPrevMonthsByOneMonth]);
49
+ const handleGoToNextMonth = (0, react_1.useCallback)(() => goToNextMonthsByOneMonth(), [goToNextMonthsByOneMonth]);
50
+ const handleMonthClick = (0, react_1.useCallback)(() => {
51
+ props.setViewMode("year");
52
+ }, [props]);
53
+ return (react_1.default.createElement("div", { className: "uxf-date-range-picker__month" },
54
+ react_1.default.createElement(calendar_1.CalendarNavigation, { prevButtonProps: {
55
+ disabled: !canGoToPrevMonth,
56
+ onClick: canGoToPrevMonth ? handleGoToPrevMonth : undefined,
57
+ title: "Předchozí měsíc",
58
+ }, nextButtonProps: {
59
+ disabled: !canGoToNextMonth,
60
+ onClick: canGoToNextMonth ? handleGoToNextMonth : undefined,
61
+ title: "Nadcházející měsíc",
62
+ }, selectButtonProps: {
63
+ children: monthLabel,
64
+ onClick: handleMonthClick,
65
+ title: "Vybrat měsíc",
66
+ } }),
67
+ react_1.default.createElement(calendar_1.Calendar, { month: props.month, year: props.year, datePickerProps: dateRangePickerProps })));
68
+ });
69
+ exports.DateRangePickerMonth.displayName = "UxfUiDateRangePickerMonth";
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ interface DatePickerYearProps {
3
+ onMonthSelect: (date: Date) => void;
4
+ onYearSelect: () => void;
5
+ }
6
+ export declare const DateRangePickerYear: React.NamedExoticComponent<DatePickerYearProps>;
7
+ export {};