@steroidsjs/bootstrap 3.0.0-beta.107 → 3.0.0-beta.108

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 (54) hide show
  1. package/content/CalendarSystem/MonthGrid/MonthGrid.js +2 -13
  2. package/content/CalendarSystem/MonthGrid/MonthGrid.scss +1 -91
  3. package/content/CalendarSystem/MonthGrid/views/MonthDay/MonthDay.d.ts +9 -0
  4. package/content/CalendarSystem/MonthGrid/views/MonthDay/MonthDay.js +57 -0
  5. package/content/CalendarSystem/MonthGrid/views/MonthDay/MonthDay.scss +125 -0
  6. package/content/CalendarSystem/MonthGrid/views/MonthDay/index.d.ts +2 -0
  7. package/content/CalendarSystem/MonthGrid/views/MonthDay/index.js +7 -0
  8. package/content/CalendarSystem/WeekGrid/WeekGrid.js +1 -1
  9. package/content/CalendarSystem/WeekGrid/WeekGrid.scss +5 -76
  10. package/content/CalendarSystem/WeekGrid/views/WeekHour/WeekHour.d.ts +0 -2
  11. package/content/CalendarSystem/WeekGrid/views/WeekHour/WeekHour.js +39 -15
  12. package/content/CalendarSystem/WeekGrid/views/WeekHour/WeekHour.scss +98 -8
  13. package/content/Kanban/KanbanView.scss +1 -0
  14. package/content/Kanban/views/KanbanColumn/KanbanColumnView.js +4 -4
  15. package/content/Kanban/views/KanbanColumn/KanbanColumnView.scss +16 -0
  16. package/content/Kanban/views/KanbanModal/KanbanModalView.d.ts +2 -0
  17. package/content/Kanban/views/KanbanModal/KanbanModalView.js +57 -0
  18. package/content/Kanban/views/KanbanModal/KanbanModalView.scss +199 -0
  19. package/content/Kanban/views/KanbanModal/index.d.ts +2 -0
  20. package/content/Kanban/views/KanbanModal/index.js +7 -0
  21. package/content/Kanban/views/KanbanModal/views/CreateOrEditTaskModalContent/CreateOrEditTaskModalContentView.d.ts +2 -0
  22. package/content/Kanban/views/KanbanModal/views/CreateOrEditTaskModalContent/CreateOrEditTaskModalContentView.js +93 -0
  23. package/content/Kanban/views/KanbanModal/views/CreateOrEditTaskModalContent/index.d.ts +2 -0
  24. package/content/Kanban/views/KanbanModal/views/CreateOrEditTaskModalContent/index.js +7 -0
  25. package/content/Kanban/views/KanbanModal/views/CreateOrEditTaskModalContent/views/Label/Label.d.ts +6 -0
  26. package/content/Kanban/views/KanbanModal/views/CreateOrEditTaskModalContent/views/Label/Label.js +11 -0
  27. package/content/Kanban/views/KanbanModal/views/CreateOrEditTaskModalContent/views/Label/index.d.ts +2 -0
  28. package/content/Kanban/views/KanbanModal/views/CreateOrEditTaskModalContent/views/Label/index.js +7 -0
  29. package/content/Kanban/views/KanbanModal/views/CreateOrEditTaskModalContent/views/TagsSelector/TagsSelector.d.ts +8 -0
  30. package/content/Kanban/views/KanbanModal/views/CreateOrEditTaskModalContent/views/TagsSelector/TagsSelector.js +49 -0
  31. package/content/Kanban/views/KanbanModal/views/CreateOrEditTaskModalContent/views/TagsSelector/TagsSelector.scss +30 -0
  32. package/content/Kanban/views/KanbanModal/views/CreateOrEditTaskModalContent/views/TagsSelector/index.d.ts +2 -0
  33. package/content/Kanban/views/KanbanModal/views/CreateOrEditTaskModalContent/views/TagsSelector/index.js +7 -0
  34. package/content/Kanban/views/KanbanModal/views/TaskDetailsModalContent/TaskDetailsModalContentView.d.ts +2 -0
  35. package/content/Kanban/views/KanbanModal/views/TaskDetailsModalContent/TaskDetailsModalContentView.js +53 -0
  36. package/content/Kanban/views/KanbanModal/views/TaskDetailsModalContent/index.d.ts +2 -0
  37. package/content/Kanban/views/KanbanModal/views/TaskDetailsModalContent/index.js +7 -0
  38. package/content/Kanban/views/KanbanTask/KanbanTaskView.js +17 -14
  39. package/content/Kanban/views/KanbanTask/KanbanTaskView.scss +15 -5
  40. package/content/Kanban/views/TaskTags/TaskTags.d.ts +2 -0
  41. package/content/Kanban/views/TaskTags/TaskTags.js +1 -1
  42. package/content/Kanban/views/TaskTags/TaskTags.scss +5 -7
  43. package/form/DropDownField/DropDownFieldView.scss +3 -2
  44. package/index.d.ts +3 -0
  45. package/index.js +3 -0
  46. package/index.scss +1 -0
  47. package/package.json +2 -2
  48. package/scss/mixins/button.scss +24 -8
  49. package/scss/mixins/index.scss +1 -0
  50. package/scss/mixins/tooltip.scss +23 -0
  51. package/scss/variables/common/colors.scss +5 -2
  52. package/scss/variables/common/typography.scss +7 -0
  53. package/utils/getFormattedExpandLabel.d.ts +1 -0
  54. package/utils/getFormattedExpandLabel.js +5 -0
@@ -28,23 +28,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
28
28
  exports.__esModule = true;
29
29
  var react_1 = __importStar(require("react"));
30
30
  var useBem_1 = __importDefault(require("@steroidsjs/core/hooks/useBem"));
31
- var CalendarType_1 = __importDefault(require("@steroidsjs/core/ui/content/CalendarSystem/enums/CalendarType"));
32
31
  require("./MonthGrid.scss");
32
+ var MonthDay_1 = __importDefault(require("./views/MonthDay"));
33
33
  function MonthGrid(props) {
34
34
  var bem = (0, useBem_1["default"])('MonthGrid');
35
35
  return (react_1["default"].createElement("div", { className: bem.block() },
36
36
  react_1["default"].createElement("div", { className: bem.element('week-days') }, props.weekDays.map(function (day, dayIndex) { return (react_1["default"].createElement("span", { key: dayIndex, className: bem.element('week-days-day') }, day)); })),
37
- react_1["default"].createElement("div", { className: bem.element('grid') }, props.monthCalendarDays.map(function (day, dayIndex) {
38
- var _a;
39
- return (react_1["default"].createElement("div", { key: dayIndex, className: bem.element('day', {
40
- outOfRange: day.outOfRange,
41
- isToday: day.isToday
42
- }) },
43
- react_1["default"].createElement("div", { className: bem.element('day-wrapper') },
44
- react_1["default"].createElement("span", { className: bem.element('day-number') }, day.dayNumber.toString()),
45
- react_1["default"].createElement("div", { className: bem.element('day-content') }, (_a = props.getEventsFromDate(day.date, CalendarType_1["default"].MONTH)) === null || _a === void 0 ? void 0 : _a.map(function (event, eventIndex) { return (react_1["default"].createElement("span", { key: eventIndex, className: bem.element('day-event'), title: event.title },
46
- react_1["default"].createElement("span", { className: bem.element('day-event-dot'), style: { backgroundColor: event.color } }),
47
- event.title)); })))));
48
- }))));
37
+ react_1["default"].createElement("div", { className: bem.element('grid') }, props.monthCalendarDays.map(function (day, dayIndex) { return (react_1["default"].createElement(MonthDay_1["default"], { key: dayIndex, getEventsFromDate: props.getEventsFromDate, day: day })); }))));
49
38
  }
50
39
  exports["default"] = (0, react_1.memo)(MonthGrid);
@@ -1,23 +1,14 @@
1
1
  @use "style/variables";
2
2
 
3
3
  :root {
4
- --month-day-background-color: #ffffff;
5
- --month-day-out-of-range-color: #f9fcff;
6
4
  --month-day-color-text: #000000;
7
- --month-day-out-of-range-color-text: rgba(0, 0, 0, 0.3);
8
5
  }
9
6
 
10
7
  html[data-theme="dark"] {
11
- --month-day-background-color: #333646;
12
- --month-day-out-of-range-color: #161b20;
13
8
  --month-day-color-text: #ffffff;
14
- --month-day-out-of-range-color-text: rgba(255, 255, 255, 0.3);
15
9
  }
16
10
 
17
- $month-day-background-color: var(--month-day-background-color);
18
- $month-day-out-of-range-color: var(--month-day-out-of-range-color);
19
11
  $month-day-color-text: var(--month-day-color-text);
20
- $month-day-out-of-range-color-text: var(--month-day-out-of-range-color-text);
21
12
 
22
13
  .MonthGrid {
23
14
  display: flex;
@@ -31,7 +22,7 @@ $month-day-out-of-range-color-text: var(--month-day-out-of-range-color-text);
31
22
  height: 90%;
32
23
  gap: 5px;
33
24
  grid-template-columns: repeat(7, 1fr);
34
- grid-template-rows: repeat(6, 1fr);
25
+ grid-template-rows: repeat(6, auto);
35
26
  }
36
27
 
37
28
  &__week-days {
@@ -47,85 +38,4 @@ $month-day-out-of-range-color-text: var(--month-day-out-of-range-color-text);
47
38
  padding: 8px 10px;
48
39
  }
49
40
  }
50
-
51
- &__day {
52
- $dayRoot: &;
53
- padding: 4px 8px 0px 8px;
54
- min-height: 84px;
55
- border-radius: variables.$radius-large;
56
- background-color: $month-day-background-color;
57
-
58
- &-wrapper {
59
- display: block;
60
- text-align: right;
61
- }
62
-
63
- &-number {
64
- position: relative;
65
- display: inline-flex;
66
- justify-content: center;
67
- align-items: center;
68
- font-size: variables.$font-size-14;
69
- font-weight: variables.$font-weight-sm;
70
- line-height: variables.$line-height-18;
71
- color: $month-day-color-text;
72
- width: 24px;
73
- height: 24px;
74
- }
75
-
76
- &_outOfRange {
77
- background-color: $month-day-out-of-range-color;
78
-
79
- #{$dayRoot}-number {
80
- color: $month-day-out-of-range-color-text;
81
- }
82
- }
83
-
84
- &_isToday {
85
- #{$dayRoot}-number {
86
- &::before {
87
- position: absolute;
88
- content: "";
89
- border: 1px solid variables.$primary;
90
- display: block;
91
- width: 100%;
92
- height: 100%;
93
- border-radius: variables.$radius-small;
94
- }
95
- color: variables.$primary;
96
- }
97
- }
98
-
99
- &-content {
100
- overflow: hidden;
101
- display: flex;
102
- flex-flow: column nowrap;
103
- gap: 1px;
104
- }
105
-
106
- &-event {
107
- position: relative;
108
- display: inline-block;
109
- width: 100%;
110
- font-size: variables.$font-size-xs;
111
- font-weight: variables.$font-weight-sm;
112
- line-height: variables.$line-height-xs;
113
- color: variables.$text-color;
114
-
115
- text-overflow: ellipsis;
116
- white-space: nowrap;
117
- overflow: hidden;
118
- cursor: pointer;
119
- text-align: left;
120
-
121
-
122
- &-dot {
123
- display: inline-block;
124
- width: 6px;
125
- height: 6px;
126
- margin-right: 8px;
127
- border-radius: 100px;
128
- }
129
- }
130
- }
131
41
  }
@@ -0,0 +1,9 @@
1
+ import CalendarEnum from '@steroidsjs/core/ui/content/CalendarSystem/enums/CalendarType';
2
+ import { IDay, IEvent } from '@steroidsjs/core/ui/content/CalendarSystem/CalendarSystem';
3
+ import './MonthDay.scss';
4
+ interface IMonthDayProps {
5
+ day: IDay;
6
+ getEventsFromDate: (dateFromDay: Date, currentCalendarType: CalendarEnum) => IEvent[];
7
+ }
8
+ export default function MonthDay(props: IMonthDayProps): JSX.Element;
9
+ export {};
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
+ if (ar || !(i in from)) {
5
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
+ ar[i] = from[i];
7
+ }
8
+ }
9
+ return to.concat(ar || Array.prototype.slice.call(from));
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ exports.__esModule = true;
15
+ /* eslint-disable @typescript-eslint/no-shadow */
16
+ var react_1 = __importDefault(require("react"));
17
+ var useBem_1 = __importDefault(require("@steroidsjs/core/hooks/useBem"));
18
+ var CalendarType_1 = __importDefault(require("@steroidsjs/core/ui/content/CalendarSystem/enums/CalendarType"));
19
+ var Tooltip_1 = __importDefault(require("@steroidsjs/core/ui/layout/Tooltip/Tooltip"));
20
+ var slice_1 = __importDefault(require("lodash-es/slice"));
21
+ var form_1 = require("@steroidsjs/core/ui/form");
22
+ var useExpandClickAway_1 = __importDefault(require("@steroidsjs/core/ui/content/CalendarSystem/hooks/useExpandClickAway"));
23
+ var getFormattedExpandLabel_1 = require("../../../../../utils/getFormattedExpandLabel");
24
+ require("./MonthDay.scss");
25
+ var SIXTH_ELEMENT_INDEX = 6;
26
+ var SIX_ELEMENTS_IN_ARRAY = 6;
27
+ function MonthDay(props) {
28
+ var bem = (0, useBem_1["default"])('MonthDay');
29
+ var day = props.day, getEventsFromDate = props.getEventsFromDate;
30
+ var _a = (0, useExpandClickAway_1["default"])(), isExpanded = _a.isExpanded, setIsExpanded = _a.setIsExpanded, monthDayRef = _a.triggerRef;
31
+ var _b = react_1["default"].useMemo(function () {
32
+ var callingDate = new Date(props.day.date);
33
+ var events = getEventsFromDate(callingDate, CalendarType_1["default"].MONTH);
34
+ var dayHasMoreThanSixEvents = events.length > 6;
35
+ return {
36
+ events: events,
37
+ hasSixEvents: dayHasMoreThanSixEvents
38
+ };
39
+ }, [getEventsFromDate, props.day.date]), events = _b.events, hasSixEvents = _b.hasSixEvents;
40
+ var formattedExpandLabel = react_1["default"].useMemo(function () { return (0, getFormattedExpandLabel_1.getFormattedExpandRestLabel)((0, slice_1["default"])(__spreadArray([], events, true), SIXTH_ELEMENT_INDEX)); }, [events]);
41
+ var renderEvent = react_1["default"].useCallback(function (event, eventIndex) { return (react_1["default"].createElement(Tooltip_1["default"], { key: eventIndex, position: 'rightBottom', content: event.title, className: bem.element('tooltip') },
42
+ react_1["default"].createElement("span", { key: eventIndex, className: bem.element('event') },
43
+ react_1["default"].createElement("span", { className: bem.element('event-dot'), style: { backgroundColor: event.color } }),
44
+ event.title))); }, [bem]);
45
+ return (react_1["default"].createElement("div", { className: bem(bem.block({
46
+ outOfRange: day.outOfRange,
47
+ isToday: day.isToday
48
+ })), ref: monthDayRef },
49
+ react_1["default"].createElement("div", { className: bem.element('wrapper') },
50
+ react_1["default"].createElement("span", { className: bem.element('number') }, day.dayNumber.toString()),
51
+ react_1["default"].createElement("div", { className: bem.element('content', {
52
+ isExpanded: isExpanded
53
+ }) },
54
+ events.map(renderEvent),
55
+ hasSixEvents && !isExpanded && (react_1["default"].createElement(form_1.Button, { link: true, className: bem.element('expand-button'), onClick: function () { return setIsExpanded(true); } }, formattedExpandLabel))))));
56
+ }
57
+ exports["default"] = MonthDay;
@@ -0,0 +1,125 @@
1
+ @use "style/variables";
2
+ @use "../../../../../scss/mixins";
3
+
4
+ :root {
5
+ --month-day-background-color: #ffffff;
6
+ --month-day-out-of-range-color: #f9fcff;
7
+ --month-day-color-text: #000000;
8
+ --month-day-out-of-range-color-text: rgba(0, 0, 0, 0.3);
9
+ }
10
+
11
+ html[data-theme="dark"] {
12
+ --month-day-background-color: #333646;
13
+ --month-day-out-of-range-color: #161b20;
14
+ --month-day-color-text: #ffffff;
15
+ --month-day-out-of-range-color-text: rgba(255, 255, 255, 0.3);
16
+ }
17
+
18
+ $month-day-background-color: var(--month-day-background-color);
19
+ $month-day-out-of-range-color: var(--month-day-out-of-range-color);
20
+ $month-day-color-text: var(--month-day-color-text);
21
+ $month-day-out-of-range-color-text: var(--month-day-out-of-range-color-text);
22
+
23
+ .MonthDay {
24
+ $dayRoot: &;
25
+ padding: 4px 8px 0px 8px;
26
+ min-height: 80px;
27
+ border-radius: variables.$radius-large;
28
+ background-color: $month-day-background-color;
29
+
30
+ &__wrapper {
31
+ display: block;
32
+ text-align: right;
33
+ }
34
+
35
+ &__number {
36
+ position: relative;
37
+ display: inline-flex;
38
+ justify-content: center;
39
+ align-items: center;
40
+ font-size: variables.$font-size-14;
41
+ font-weight: variables.$font-weight-sm;
42
+ line-height: variables.$line-height-18;
43
+ color: $month-day-color-text;
44
+ width: 24px;
45
+ height: 24px;
46
+ }
47
+
48
+ &_outOfRange {
49
+ background-color: $month-day-out-of-range-color;
50
+
51
+ #{$dayRoot}__number {
52
+ color: $month-day-out-of-range-color-text;
53
+ }
54
+ }
55
+
56
+ &_isToday {
57
+ #{$dayRoot}__number {
58
+ &::before {
59
+ position: absolute;
60
+ content: "";
61
+ border: 1px solid variables.$primary;
62
+ display: block;
63
+ width: 100%;
64
+ height: 100%;
65
+ border-radius: variables.$radius-small;
66
+ }
67
+ color: variables.$primary;
68
+ }
69
+ }
70
+
71
+ &__content {
72
+ overflow: hidden;
73
+ display: flex;
74
+ flex-flow: column nowrap;
75
+ gap: 1px;
76
+
77
+ &_isExpanded {
78
+ #{$dayRoot}__event {
79
+ display: block;
80
+ }
81
+ }
82
+ }
83
+
84
+ &__event {
85
+ position: relative;
86
+ display: inline-block;
87
+ width: 100%;
88
+ font-size: variables.$font-size-xs;
89
+ font-weight: variables.$font-weight-sm;
90
+ line-height: variables.$line-height-xs;
91
+ color: variables.$text-color;
92
+
93
+ text-overflow: ellipsis;
94
+ white-space: nowrap;
95
+ overflow: hidden;
96
+ cursor: pointer;
97
+ text-align: left;
98
+
99
+ &:nth-child(n + 7) {
100
+ display: none;
101
+ }
102
+
103
+ &-dot {
104
+ display: inline-block;
105
+ width: 6px;
106
+ height: 6px;
107
+ margin-right: 8px;
108
+ border-radius: 100px;
109
+ }
110
+ }
111
+
112
+ &__content_isExpanded {
113
+ #{$dayRoot}__event {
114
+ display: block;
115
+ }
116
+ }
117
+
118
+ &__tooltip {
119
+ @include mixins.calendar-tooltip();
120
+ }
121
+
122
+ &__expand-button {
123
+ @include mixins.expand-button();
124
+ }
125
+ }
@@ -0,0 +1,2 @@
1
+ import MonthDay from './MonthDay';
2
+ export default MonthDay;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ exports.__esModule = true;
6
+ var MonthDay_1 = __importDefault(require("./MonthDay"));
7
+ exports["default"] = MonthDay_1["default"];
@@ -11,7 +11,7 @@ require("./WeekGrid.scss");
11
11
  function WeekGrid(props) {
12
12
  var bem = (0, useBem_1["default"])('WeekGrid');
13
13
  var currentWeekDays = props.currentWeekDays, onClickHour = props.onClickHour, getEventsFromDate = props.getEventsFromDate;
14
- var renderWeekHours = react_1["default"].useCallback(function (hour) { return currentWeekDays.map(function (dayOfWeek, dayOfWeekIndex) { return (react_1["default"].createElement(WeekHour_1["default"], { parentBem: bem, hour: hour, getEventsFromDate: getEventsFromDate, key: dayOfWeekIndex, dayOfWeek: dayOfWeek })); }); }, [bem, currentWeekDays, getEventsFromDate]);
14
+ var renderWeekHours = react_1["default"].useCallback(function (hour) { return currentWeekDays.map(function (dayOfWeek, dayOfWeekIndex) { return (react_1["default"].createElement(WeekHour_1["default"], { hour: hour, getEventsFromDate: getEventsFromDate, key: dayOfWeekIndex, dayOfWeek: dayOfWeek })); }); }, [currentWeekDays, getEventsFromDate]);
15
15
  return (react_1["default"].createElement("div", { className: bem.block() },
16
16
  react_1["default"].createElement("div", { className: bem.element('content') },
17
17
  react_1["default"].createElement("div", { className: bem.element('hours-time') }, props.allHours.map(function (hour, hourIndex) { return (react_1["default"].createElement("div", { key: hourIndex, className: bem.element('hours-time-item') }, hour)); })),
@@ -70,7 +70,7 @@ $calendar-today-border-style: 1px solid $calendar-system-today-border-color;
70
70
  &-grid {
71
71
  width: auto;
72
72
  display: grid;
73
- grid-template-rows: repeat(24, 1fr);
73
+ grid-template-rows: repeat(24, auto);
74
74
 
75
75
  &-row {
76
76
  display: grid;
@@ -79,11 +79,11 @@ $calendar-today-border-style: 1px solid $calendar-system-today-border-color;
79
79
  min-height: 80px;
80
80
 
81
81
  //Borders
82
- &:first-child #{$root}__hour {
82
+ &:first-child .WeekHour__hour {
83
83
  border-top: $calendar-border-style;
84
84
  }
85
85
 
86
- #{$root}__hour {
86
+ .WeekHour__hour {
87
87
  border-right: $calendar-border-style;
88
88
  border-bottom: $calendar-border-style;
89
89
 
@@ -92,11 +92,11 @@ $calendar-today-border-style: 1px solid $calendar-system-today-border-color;
92
92
  }
93
93
  }
94
94
 
95
- &:first-child #{$root}__hour_isToday {
95
+ &:first-child .WeekHour__hour_isToday {
96
96
  border-top: $calendar-today-border-style;
97
97
  }
98
98
 
99
- #{$root}__hour_isToday {
99
+ .WeekHour__hour_isToday {
100
100
  background-color: $calendar-system-today-background-color;
101
101
  border-right: $calendar-today-border-style;
102
102
  border-bottom: $calendar-today-border-style;
@@ -151,75 +151,4 @@ $calendar-today-border-style: 1px solid $calendar-system-today-border-color;
151
151
  }
152
152
  }
153
153
  }
154
-
155
- &__hour {
156
- $rootHour: &;
157
- display: flex;
158
- flex-flow: column nowrap;
159
- gap: 1px;
160
- max-height: 80px;
161
-
162
- &-event {
163
- position: relative;
164
- padding: 4px 8px;
165
- overflow: hidden;
166
- border-radius: 4px;
167
-
168
- &-title {
169
- font-size: variables.$font-size-sm;
170
- font-weight: variables.$font-weight-sm;
171
- line-height: variables.$line-height-sm;
172
- color: #312c3a;
173
-
174
- padding-right: 36px;
175
- }
176
-
177
- &-time {
178
- top: 4px;
179
- right: 8px;
180
- position: absolute;
181
- display: inline-block;
182
- font-size: variables.$font-size-xs;
183
- font-weight: variables.$font-weight-sm;
184
- line-height: variables.$line-height-xs;
185
- }
186
- }
187
-
188
- &_hasOneEvent {
189
- #{$rootHour}-event-title {
190
- -webkit-line-clamp: 4; /* Число отображаемых строк */
191
- display: -webkit-box; /* Включаем флексбоксы */
192
- -webkit-box-orient: vertical; /* Вертикальная ориентация */
193
- overflow: hidden;
194
- }
195
- }
196
-
197
- &_hasTwoEvents {
198
- #{$rootHour}-event-title {
199
- -webkit-line-clamp: 2; /* Число отображаемых строк */
200
- display: -webkit-box; /* Включаем флексбоксы */
201
- -webkit-box-orient: vertical; /* Вертикальная ориентация */
202
- overflow: hidden;
203
- }
204
- }
205
-
206
- &_hasTreeEvents {
207
- #{$rootHour}-event-title {
208
- -webkit-line-clamp: 1; /* Число отображаемых строк */
209
- display: -webkit-box; /* Включаем флексбоксы */
210
- -webkit-box-orient: vertical; /* Вертикальная ориентация */
211
- overflow: hidden;
212
- }
213
-
214
- #{$rootHour}-event {
215
- max-height: 18px;
216
- padding: 0 8px;
217
- }
218
-
219
- #{$rootHour}-event-time {
220
- top: 0;
221
- right: 8px
222
- }
223
- }
224
- }
225
154
  }
@@ -1,4 +1,3 @@
1
- import { IBem } from '@steroidsjs/core/hooks/useBem';
2
1
  import { IDay, IEvent } from '@steroidsjs/core/ui/content/CalendarSystem/CalendarSystem';
3
2
  import CalendarEnum from '@steroidsjs/core/ui/content/CalendarSystem/enums/CalendarType';
4
3
  import './WeekHour.scss';
@@ -6,7 +5,6 @@ interface IWeekHourProps {
6
5
  dayOfWeek: IDay;
7
6
  getEventsFromDate: (dateFromDay: Date, currentCalendarType: CalendarEnum) => IEvent[];
8
7
  hour: string;
9
- parentBem: IBem;
10
8
  }
11
9
  export default function WeekHour(props: IWeekHourProps): JSX.Element;
12
10
  export {};
@@ -1,38 +1,62 @@
1
1
  "use strict";
2
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
+ if (ar || !(i in from)) {
5
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
+ ar[i] = from[i];
7
+ }
8
+ }
9
+ return to.concat(ar || Array.prototype.slice.call(from));
10
+ };
2
11
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
13
  };
5
14
  exports.__esModule = true;
15
+ /* eslint-disable @typescript-eslint/no-shadow */
6
16
  var react_1 = __importDefault(require("react"));
7
17
  var useBem_1 = __importDefault(require("@steroidsjs/core/hooks/useBem"));
8
18
  var calendar_1 = require("@steroidsjs/core/utils/calendar");
9
19
  var form_1 = require("@steroidsjs/core/ui/form");
10
20
  var CalendarType_1 = __importDefault(require("@steroidsjs/core/ui/content/CalendarSystem/enums/CalendarType"));
21
+ var slice_1 = __importDefault(require("lodash-es/slice"));
22
+ var Tooltip_1 = __importDefault(require("@steroidsjs/core/ui/layout/Tooltip/Tooltip"));
23
+ var useExpandClickAway_1 = __importDefault(require("@steroidsjs/core/ui/content/CalendarSystem/hooks/useExpandClickAway"));
24
+ var getFormattedExpandLabel_1 = require("../../../../../utils/getFormattedExpandLabel");
11
25
  require("./WeekHour.scss");
26
+ var FOURTH_ELEMENT_INDEX = 3;
12
27
  function WeekHour(props) {
13
28
  var bem = (0, useBem_1["default"])('WeekHour');
14
- var parentBem = props.parentBem;
15
- var _a = react_1["default"].useState(false), isExpanded = _a[0], setIsExpanded = _a[1];
16
- var events = react_1["default"].useMemo(function () {
29
+ var _a = (0, useExpandClickAway_1["default"])(), isExpanded = _a.isExpanded, setIsExpanded = _a.setIsExpanded, weekHourRef = _a.triggerRef;
30
+ var _b = react_1["default"].useMemo(function () {
17
31
  var callingDate = new Date(props.dayOfWeek.date);
18
32
  var timeArray = props.hour.replace(':', '').split('');
19
33
  callingDate.setHours(Number(timeArray[0] + timeArray[1]), 0, 0, 0);
20
- return props.getEventsFromDate(callingDate, CalendarType_1["default"].WEEK);
21
- }, [props]);
22
- var getFormattedExpandLabel = react_1["default"].useCallback(function () { return "".concat(__('Показать ещё'), " +").concat(events.length - 3); }, [events.length]);
23
- var hasOneEvent = events.length <= 1;
24
- var hasTwoEvents = events.length === 2;
25
- var hasTreeEvents = events.length >= 3;
26
- return (react_1["default"].createElement("div", { className: parentBem.element('hour', {
34
+ var events = props.getEventsFromDate(callingDate, CalendarType_1["default"].WEEK);
35
+ var hasOneEvent = events.length === 1;
36
+ var hasTwoEvents = events.length === 2;
37
+ var hasMoreThanTreeEvents = events.length >= 3;
38
+ var hasMoreThanFourEvents = events.length > 3;
39
+ return {
40
+ events: events,
41
+ hasOneEvent: hasOneEvent,
42
+ hasTwoEvents: hasTwoEvents,
43
+ hasTreeEvents: hasMoreThanTreeEvents,
44
+ hasMoreThanFourEvents: hasMoreThanFourEvents
45
+ };
46
+ }, [props]), events = _b.events, hasOneEvent = _b.hasOneEvent, hasTwoEvents = _b.hasTwoEvents, hasTreeEvents = _b.hasTreeEvents, hasMoreThanFourEvents = _b.hasMoreThanFourEvents;
47
+ var renderEvent = react_1["default"].useCallback(function (event, eventIndex) { return (react_1["default"].createElement(Tooltip_1["default"], { position: 'rightBottom', content: event.title, className: bem.element('tooltip'), key: eventIndex },
48
+ react_1["default"].createElement("div", { className: bem.element('hour-event'), style: { backgroundColor: event.color }, title: event.title },
49
+ react_1["default"].createElement("span", { className: bem.element('hour-event-title') }, event.title),
50
+ react_1["default"].createElement("span", { className: bem.element('hour-event-time') }, (0, calendar_1.convertDate)(event.date, null, 'HH:mm'))))); }, [bem]);
51
+ var formattedExpandLabel = react_1["default"].useMemo(function () { return (0, getFormattedExpandLabel_1.getFormattedExpandRestLabel)((0, slice_1["default"])(__spreadArray([], events, true), FOURTH_ELEMENT_INDEX)); }, [events]);
52
+ return (react_1["default"].createElement("div", { className: bem.element('hour', {
27
53
  isToday: props.dayOfWeek.isToday,
28
54
  hasOneEvent: hasOneEvent,
29
55
  hasTwoEvents: hasTwoEvents,
30
56
  hasTreeEvents: hasTreeEvents,
31
57
  isExpanded: isExpanded
32
- }) },
33
- events.map(function (event, eventIndex) { return (react_1["default"].createElement("div", { key: eventIndex, className: parentBem.element('hour-event'), style: { backgroundColor: event.color }, title: event.title },
34
- react_1["default"].createElement("span", { className: parentBem.element('hour-event-title') }, event.title),
35
- react_1["default"].createElement("span", { className: parentBem.element('hour-event-time') }, (0, calendar_1.convertDate)(event.date, null, 'HH:mm')))); }),
36
- hasTreeEvents && events.length > 3 && (react_1["default"].createElement(form_1.Button, { link: true, className: bem.element('expand-button') }, getFormattedExpandLabel()))));
58
+ }), ref: weekHourRef },
59
+ events.map(renderEvent),
60
+ hasMoreThanFourEvents && !isExpanded && (react_1["default"].createElement(form_1.Button, { link: true, className: bem.element('expand-button'), onClick: function () { return setIsExpanded(true); } }, formattedExpandLabel))));
37
61
  }
38
62
  exports["default"] = WeekHour;