Skip to content

Commit ad3524f

Browse files
committed
fix(resizable): prevent resizing of elements when not on top stack
Fixes #662
1 parent c6b095a commit ad3524f

File tree

4 files changed

+58
-19
lines changed

4 files changed

+58
-19
lines changed

src/modules/day/calendar-day-view.component.ts

+12-1
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,6 @@ export interface DayViewEventResize {
115115
[class.cal-ends-within-day]="!dayEvent.endsAfterDay"
116116
[ngClass]="dayEvent.event.cssClass"
117117
mwlResizable
118-
[resizeEdges]="{top: dayEvent.event?.resizable?.beforeStart, bottom: dayEvent.event?.resizable?.afterEnd}"
119118
[resizeSnapGrid]="{top: eventSnapSize || hourSegmentHeight, bottom: eventSnapSize || hourSegmentHeight}"
120119
[validateResize]="validateResize"
121120
(resizeStart)="resizeStarted(dayEvent, $event, dayEventsContainer)"
@@ -133,6 +132,12 @@ export interface DayViewEventResize {
133132
[style.height.px]="dayEvent.height"
134133
[style.marginLeft.px]="dayEvent.left + 70"
135134
[style.width.px]="dayEvent.width - 1">
135+
<div
136+
class="cal-resize-handle cal-resize-handle-before-start"
137+
*ngIf="dayEvent.event?.resizable?.beforeStart && !dayEvent.startsBeforeDay"
138+
mwlResizeHandle
139+
[resizeEdges]="{ top: true }">
140+
</div>
136141
<mwl-calendar-day-view-event
137142
[dayEvent]="dayEvent"
138143
[tooltipPlacement]="tooltipPlacement"
@@ -143,6 +148,12 @@ export interface DayViewEventResize {
143148
[eventActionsTemplate]="eventActionsTemplate"
144149
(eventClicked)="eventClicked.emit({event: dayEvent.event})">
145150
</mwl-calendar-day-view-event>
151+
<div
152+
class="cal-resize-handle cal-resize-handle-after-end"
153+
*ngIf="dayEvent.event?.resizable?.afterEnd && !dayEvent.endsAfterDay"
154+
mwlResizeHandle
155+
[resizeEdges]="{ bottom: true }">
156+
</div>
146157
</div>
147158
</div>
148159
<div class="cal-hour" *ngFor="let hour of hours; trackBy:trackByHour" [style.minWidth.px]="view?.width + 70">

src/modules/day/calendar-day-view.scss

+11-3
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,6 @@
6464
border: 1px solid #1e90ff;
6565
color: #1e90ff;
6666
box-sizing: border-box;
67-
}
68-
69-
.cal-event {
7067
overflow: hidden;
7168
text-overflow: ellipsis;
7269
white-space: nowrap;
@@ -98,4 +95,15 @@
9895
pointer-events: none;
9996
}
10097
}
98+
99+
.cal-resize-handle {
100+
width: 100%;
101+
height: 4px;
102+
cursor: row-resize;
103+
position: absolute;
104+
105+
&.cal-resize-handle-after-end {
106+
bottom: 0;
107+
}
108+
}
101109
}

src/modules/week/calendar-week-view.component.ts

+12-4
Original file line numberDiff line numberDiff line change
@@ -120,10 +120,6 @@ export interface CalendarWeekViewBeforeRenderEvent extends WeekView {
120120
[style.width]="((100 / days.length) * allDayEvent.span) + '%'"
121121
[style.marginLeft]="((100 / days.length) * allDayEvent.offset) + '%'"
122122
mwlResizable
123-
[resizeEdges]="{
124-
left: allDayEvent.event?.resizable?.beforeStart,
125-
right: allDayEvent.event?.resizable?.afterEnd
126-
}"
127123
[resizeSnapGrid]="{left: dayColumnWidth, right: dayColumnWidth}"
128124
[validateResize]="validateResize"
129125
(resizeStart)="allDayEventResizeStarted(eventRowContainer, allDayEvent, $event)"
@@ -140,6 +136,12 @@ export interface CalendarWeekViewBeforeRenderEvent extends WeekView {
140136
[validateDrag]="snapDraggedEvents ? validateDrag : false"
141137
(dragPointerDown)="dragStarted(eventRowContainer, event)"
142138
(dragEnd)="dragEnded(allDayEvent, $event, dayColumnWidth)">
139+
<div
140+
class="cal-resize-handle cal-resize-handle-before-start"
141+
*ngIf="allDayEvent.event?.resizable?.beforeStart && !allDayEvent.startsBeforeWeek"
142+
mwlResizeHandle
143+
[resizeEdges]="{ left: true }">
144+
</div>
143145
<mwl-calendar-week-view-event
144146
[weekEvent]="allDayEvent"
145147
[tooltipPlacement]="tooltipPlacement"
@@ -150,6 +152,12 @@ export interface CalendarWeekViewBeforeRenderEvent extends WeekView {
150152
[eventActionsTemplate]="eventActionsTemplate"
151153
(eventClicked)="eventClicked.emit({event: allDayEvent.event})">
152154
</mwl-calendar-week-view-event>
155+
<div
156+
class="cal-resize-handle cal-resize-handle-after-end"
157+
*ngIf="allDayEvent.event?.resizable?.afterEnd && !allDayEvent.endsAfterWeek"
158+
mwlResizeHandle
159+
[resizeEdges]="{ right: true }">
160+
</div>
153161
</div>
154162
</div>
155163
</div>

src/modules/week/calendar-week-view.scss

+23-11
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,18 @@
102102
justify-content: center;
103103
font-size: 14px;
104104
}
105+
106+
.cal-resize-handle {
107+
width: 6px;
108+
height: 100%;
109+
cursor: col-resize;
110+
position: absolute;
111+
top: 0;
112+
113+
&.cal-resize-handle-after-end {
114+
right: 0;
115+
}
116+
}
105117
}
106118

107119
.cal-header.cal-today {
@@ -161,6 +173,17 @@
161173
padding: 0 5px;
162174
line-height: 25px;
163175
}
176+
177+
.cal-resize-handle {
178+
width: 100%;
179+
height: 4px;
180+
cursor: row-resize;
181+
position: absolute;
182+
183+
&.cal-resize-handle-after-end {
184+
bottom: 0;
185+
}
186+
}
164187
}
165188

166189
.cal-hour-odd {
@@ -187,17 +210,6 @@
187210
background-color: #ededed;
188211
}
189212

190-
.cal-resize-handle {
191-
width: 100%;
192-
height: 3px;
193-
cursor: row-resize;
194-
position: absolute;
195-
196-
&.cal-resize-handle-after-end {
197-
margin-top: -3px;
198-
}
199-
}
200-
201213
/* stylelint-disable-next-line selector-type-no-unknown */
202214
mwl-calendar-week-view-hour-segment, /* fix for https://github.com/mattlewis92/angular-calendar/issues/260*/
203215
.cal-hour-segment {

0 commit comments

Comments
 (0)