@mantine/schedule 9.6.0 → 9.6.2

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 (98) hide show
  1. package/cjs/components/DayView/DayView.cjs +48 -20
  2. package/cjs/components/DayView/DayView.cjs.map +1 -1
  3. package/cjs/components/DayView/DayView.module.cjs +3 -2
  4. package/cjs/components/DayView/DayView.module.cjs.map +1 -1
  5. package/cjs/components/DayView/get-day-view-events/get-day-positioned-events.cjs +12 -7
  6. package/cjs/components/DayView/get-day-view-events/get-day-positioned-events.cjs.map +1 -1
  7. package/cjs/components/DayView/get-day-view-events/get-day-view-events.cjs +3 -2
  8. package/cjs/components/DayView/get-day-view-events/get-day-view-events.cjs.map +1 -1
  9. package/cjs/components/MobileMonthView/MobileMonthView.cjs +1 -1
  10. package/cjs/components/MobileMonthView/MobileMonthView.cjs.map +1 -1
  11. package/cjs/components/ResourcesDayView/ResourcesDayView.cjs +40 -15
  12. package/cjs/components/ResourcesDayView/ResourcesDayView.cjs.map +1 -1
  13. package/cjs/components/ResourcesDayView/ResourcesDayView.module.cjs.map +1 -1
  14. package/cjs/components/ResourcesSchedule/ResourcesSchedule.cjs.map +1 -1
  15. package/cjs/components/ResourcesWeekView/ResourcesWeekView.cjs +46 -16
  16. package/cjs/components/ResourcesWeekView/ResourcesWeekView.cjs.map +1 -1
  17. package/cjs/components/ResourcesWeekView/ResourcesWeekView.module.cjs.map +1 -1
  18. package/cjs/components/Schedule/Schedule.cjs.map +1 -1
  19. package/cjs/components/ScheduleBackgroundEvent/ScheduleBackgroundEvent.cjs +18 -3
  20. package/cjs/components/ScheduleBackgroundEvent/ScheduleBackgroundEvent.cjs.map +1 -1
  21. package/cjs/components/ScheduleEvent/ScheduleEvent.module.cjs.map +1 -1
  22. package/cjs/components/WeekView/WeekView.cjs +47 -17
  23. package/cjs/components/WeekView/WeekView.cjs.map +1 -1
  24. package/cjs/components/WeekView/WeekView.module.cjs +3 -2
  25. package/cjs/components/WeekView/WeekView.module.cjs.map +1 -1
  26. package/cjs/components/WeekView/get-week-view-events/get-week-positioned-events.cjs +4 -2
  27. package/cjs/components/WeekView/get-week-view-events/get-week-positioned-events.cjs.map +1 -1
  28. package/cjs/hooks/use-event-resize.cjs +7 -4
  29. package/cjs/hooks/use-event-resize.cjs.map +1 -1
  30. package/cjs/hooks/use-horizontal-event-resize.cjs +7 -4
  31. package/cjs/hooks/use-horizontal-event-resize.cjs.map +1 -1
  32. package/cjs/index.cjs +4 -0
  33. package/cjs/utils/apply-cascade-layout/apply-cascade-layout.cjs +21 -0
  34. package/cjs/utils/apply-cascade-layout/apply-cascade-layout.cjs.map +1 -0
  35. package/cjs/{components/ResourcesDayView → utils}/get-overlap-clusters/get-overlap-clusters.cjs +2 -2
  36. package/cjs/utils/get-overlap-clusters/get-overlap-clusters.cjs.map +1 -0
  37. package/cjs/utils/is-event-in-time-range/is-event-in-time-range.cjs +2 -1
  38. package/cjs/utils/is-event-in-time-range/is-event-in-time-range.cjs.map +1 -1
  39. package/esm/components/DayView/DayView.mjs +48 -20
  40. package/esm/components/DayView/DayView.mjs.map +1 -1
  41. package/esm/components/DayView/DayView.module.mjs +3 -2
  42. package/esm/components/DayView/DayView.module.mjs.map +1 -1
  43. package/esm/components/DayView/get-day-view-events/get-day-positioned-events.mjs +12 -7
  44. package/esm/components/DayView/get-day-view-events/get-day-positioned-events.mjs.map +1 -1
  45. package/esm/components/DayView/get-day-view-events/get-day-view-events.mjs +3 -2
  46. package/esm/components/DayView/get-day-view-events/get-day-view-events.mjs.map +1 -1
  47. package/esm/components/MobileMonthView/MobileMonthView.mjs +1 -1
  48. package/esm/components/MobileMonthView/MobileMonthView.mjs.map +1 -1
  49. package/esm/components/ResourcesDayView/ResourcesDayView.mjs +40 -15
  50. package/esm/components/ResourcesDayView/ResourcesDayView.mjs.map +1 -1
  51. package/esm/components/ResourcesDayView/ResourcesDayView.module.mjs.map +1 -1
  52. package/esm/components/ResourcesSchedule/ResourcesSchedule.mjs.map +1 -1
  53. package/esm/components/ResourcesWeekView/ResourcesWeekView.mjs +46 -16
  54. package/esm/components/ResourcesWeekView/ResourcesWeekView.mjs.map +1 -1
  55. package/esm/components/ResourcesWeekView/ResourcesWeekView.module.mjs.map +1 -1
  56. package/esm/components/Schedule/Schedule.mjs.map +1 -1
  57. package/esm/components/ScheduleBackgroundEvent/ScheduleBackgroundEvent.mjs +19 -4
  58. package/esm/components/ScheduleBackgroundEvent/ScheduleBackgroundEvent.mjs.map +1 -1
  59. package/esm/components/ScheduleEvent/ScheduleEvent.module.mjs.map +1 -1
  60. package/esm/components/WeekView/WeekView.mjs +47 -17
  61. package/esm/components/WeekView/WeekView.mjs.map +1 -1
  62. package/esm/components/WeekView/WeekView.module.mjs +3 -2
  63. package/esm/components/WeekView/WeekView.module.mjs.map +1 -1
  64. package/esm/components/WeekView/get-week-view-events/get-week-positioned-events.mjs +4 -2
  65. package/esm/components/WeekView/get-week-view-events/get-week-positioned-events.mjs.map +1 -1
  66. package/esm/hooks/use-event-resize.mjs +7 -4
  67. package/esm/hooks/use-event-resize.mjs.map +1 -1
  68. package/esm/hooks/use-horizontal-event-resize.mjs +7 -4
  69. package/esm/hooks/use-horizontal-event-resize.mjs.map +1 -1
  70. package/esm/index.mjs +3 -1
  71. package/esm/utils/apply-cascade-layout/apply-cascade-layout.mjs +21 -0
  72. package/esm/utils/apply-cascade-layout/apply-cascade-layout.mjs.map +1 -0
  73. package/esm/{components/ResourcesDayView → utils}/get-overlap-clusters/get-overlap-clusters.mjs +2 -2
  74. package/esm/utils/get-overlap-clusters/get-overlap-clusters.mjs.map +1 -0
  75. package/esm/utils/is-event-in-time-range/is-event-in-time-range.mjs +2 -1
  76. package/esm/utils/is-event-in-time-range/is-event-in-time-range.mjs.map +1 -1
  77. package/lib/components/DayView/DayView.d.ts +7 -3
  78. package/lib/components/DayView/get-day-view-events/get-day-positioned-events.d.ts +4 -2
  79. package/lib/components/DayView/get-day-view-events/get-day-view-events.d.ts +3 -2
  80. package/lib/components/ResourcesDayView/ResourcesDayView.d.ts +1 -1
  81. package/lib/components/ResourcesSchedule/ResourcesSchedule.d.ts +1 -1
  82. package/lib/components/ResourcesWeekView/ResourcesWeekView.d.ts +1 -1
  83. package/lib/components/Schedule/Schedule.d.ts +1 -1
  84. package/lib/components/ScheduleBackgroundEvent/ScheduleBackgroundEvent.d.ts +15 -2
  85. package/lib/components/WeekView/WeekView.d.ts +7 -3
  86. package/lib/components/WeekView/get-week-view-events/get-week-positioned-events.d.ts +4 -2
  87. package/lib/hooks/use-event-resize.d.ts +3 -2
  88. package/lib/hooks/use-horizontal-event-resize.d.ts +3 -2
  89. package/lib/types.d.ts +2 -0
  90. package/lib/utils/apply-cascade-layout/apply-cascade-layout.d.ts +6 -0
  91. package/lib/utils/get-overlap-clusters/get-overlap-clusters.d.ts +2 -0
  92. package/lib/utils/index.d.ts +3 -0
  93. package/package.json +4 -4
  94. package/styles.css +315 -6
  95. package/styles.layer.css +315 -6
  96. package/cjs/components/ResourcesDayView/get-overlap-clusters/get-overlap-clusters.cjs.map +0 -1
  97. package/esm/components/ResourcesDayView/get-overlap-clusters/get-overlap-clusters.mjs.map +0 -1
  98. package/lib/components/ResourcesDayView/get-overlap-clusters/get-overlap-clusters.d.ts +0 -2
package/styles.css CHANGED
@@ -215,6 +215,37 @@
215
215
  cursor: default;
216
216
  }
217
217
 
218
+ .m_1ac94670:where([data-cascade]) {
219
+ z-index: var(--event-z-index, 3);
220
+ transition: z-index 0s;
221
+ }
222
+
223
+ .m_1ac94670:where([data-cascade]) .m_71699dc6 {
224
+ box-shadow: 0 0 0 1px var(--mantine-color-body);
225
+ }
226
+
227
+ @media (hover: hover) {
228
+
229
+ .m_1ac94670:where([data-cascade]):where(:not([data-resizing], [data-dragging])):hover {
230
+ z-index: var(--event-z-index-raised, 9);
231
+ transition-delay: var(--event-raise-delay, 600ms);
232
+ }
233
+ }
234
+
235
+ @media (hover: none) {
236
+
237
+ .m_1ac94670:where([data-cascade]):where(:not([data-resizing], [data-dragging])):active {
238
+ z-index: var(--event-z-index-raised, 9);
239
+ transition-delay: var(--event-raise-delay, 600ms);
240
+ }
241
+ }
242
+
243
+ /* Keyboard focus reveals a covered event immediately, hover waits for the dwell delay */
244
+
245
+ .m_1ac94670:where([data-cascade]):where(:not([data-resizing], [data-dragging])):where(:focus-visible) {
246
+ z-index: var(--event-z-index-raised, 9);
247
+ }
248
+
218
249
  .m_1ac94670:where([data-resizing]) {
219
250
  z-index: 10;
220
251
  }
@@ -233,6 +264,10 @@
233
264
  }
234
265
  }
235
266
 
267
+ .m_1ac94670:where([data-cascade][data-resizing]) {
268
+ z-index: var(--event-cascade-interaction-z-index, 999);
269
+ }
270
+
236
271
  .m_1ac94670:where([data-hanging='start'], [data-hanging='both'])::before {
237
272
  content: '';
238
273
  position: absolute;
@@ -751,6 +786,19 @@
751
786
  position: relative;
752
787
  }
753
788
 
789
+ /* Cascade events stack with an unbounded z-index, keep them out of the sticky header's layer */
790
+
791
+ .m_9389813:where(:has([data-cascade])) {
792
+ isolation: isolate;
793
+
794
+ /* Drag and resize feedback must stay above every cascade column */
795
+ --event-cascade-interaction-z-index: 999;
796
+ }
797
+
798
+ .m_9389813:where(:has([data-cascade])) .m_2d4819df {
799
+ z-index: var(--event-cascade-interaction-z-index);
800
+ }
801
+
754
802
  .m_9389813:where(:first-of-type) .m_cd179e73:where([data-first]) {
755
803
  border-top-color: transparent;
756
804
  }
@@ -936,9 +984,82 @@
936
984
  }
937
985
  }
938
986
 
939
- .m_3c5fb2d5:where([data-event-interaction], [data-slot-dragging]) .m_c5cd9a77 {
987
+ /* The resized edge repeatedly crosses the pointer, so hover feedback would flicker */
988
+
989
+ @media (hover: hover) {
990
+
991
+ .m_c5cd9a77:where([data-resizing]):hover {
992
+ background-color: var(--bg-event-bg);
993
+ }
994
+ }
995
+
996
+ @media (hover: none) {
997
+
998
+ .m_c5cd9a77:where([data-resizing]):active {
999
+ background-color: var(--bg-event-bg);
1000
+ }
1001
+ }
1002
+
1003
+ .m_cddb9413 {
1004
+ position: absolute;
1005
+ left: 50%;
1006
+ transform: translateX(-50%);
1007
+ width: 40%;
1008
+ max-width: calc(2.5rem * var(--mantine-scale));
1009
+ height: calc(0.25rem * var(--mantine-scale));
1010
+ border-radius: calc(0.125rem * var(--mantine-scale));
1011
+ cursor: ns-resize;
1012
+ pointer-events: all;
1013
+ z-index: 4;
1014
+ touch-action: none;
1015
+ background-color: var(--bg-event-color);
1016
+ opacity: 0;
1017
+ transition: opacity 100ms ease;
1018
+ }
1019
+
1020
+ .m_cddb9413::before {
1021
+ content: '';
1022
+ position: absolute;
1023
+ inset: calc(-0.25rem * var(--mantine-scale)) calc(-0.375rem * var(--mantine-scale));
1024
+ }
1025
+
1026
+ .m_cddb9413:where([data-edge='top']) {
1027
+ top: 0;
1028
+ }
1029
+
1030
+ .m_cddb9413:where([data-edge='bottom']) {
1031
+ bottom: 0;
1032
+ }
1033
+
1034
+ .m_c5cd9a77:where(:hover, [data-resizing]) .m_cddb9413 {
1035
+ opacity: 0.5;
1036
+ }
1037
+
1038
+ @media (hover: hover) {
1039
+
1040
+ .m_cddb9413:hover {
1041
+ opacity: 0.8;
1042
+ }
1043
+ }
1044
+
1045
+ @media (hover: none) {
1046
+
1047
+ .m_cddb9413:active {
1048
+ opacity: 0.8;
1049
+ }
1050
+ }
1051
+
1052
+ /* The resizing background event is the one that set `data-event-interaction`, so it must
1053
+ keep capturing pointer events. */
1054
+ .m_3c5fb2d5:where([data-event-interaction], [data-slot-dragging])
1055
+ .m_c5cd9a77:not([data-resizing]) {
940
1056
  pointer-events: none;
941
1057
  }
1058
+ .m_3c5fb2d5:where([data-event-interaction], [data-slot-dragging])
1059
+ .m_c5cd9a77:not([data-resizing]) .m_cddb9413 {
1060
+ pointer-events: none;
1061
+ opacity: 0;
1062
+ }
942
1063
 
943
1064
  .m_c6f08d70 {
944
1065
  position: relative;
@@ -1816,16 +1937,100 @@
1816
1937
  }
1817
1938
  }
1818
1939
 
1819
- .m_42b9032d:where([data-slot-dragging]) .m_41ce8f1f,
1820
- .m_6b2099af:where([data-event-interaction]) .m_41ce8f1f,
1821
- .m_6b2099af:where([data-all-day-dragging]) .m_41ce8f1f {
1940
+ /* The resized edge repeatedly crosses the pointer, so hover feedback would flicker */
1941
+
1942
+ @media (hover: hover) {
1943
+
1944
+ .m_41ce8f1f:where([data-resizing]):hover {
1945
+ background-color: var(--bg-event-bg);
1946
+ }
1947
+ }
1948
+
1949
+ @media (hover: none) {
1950
+
1951
+ .m_41ce8f1f:where([data-resizing]):active {
1952
+ background-color: var(--bg-event-bg);
1953
+ }
1954
+ }
1955
+
1956
+ .m_b20accbb {
1957
+ position: absolute;
1958
+ left: 50%;
1959
+ transform: translateX(-50%);
1960
+ width: 40%;
1961
+ max-width: calc(2.5rem * var(--mantine-scale));
1962
+ height: calc(0.25rem * var(--mantine-scale));
1963
+ border-radius: calc(0.125rem * var(--mantine-scale));
1964
+ cursor: ns-resize;
1965
+ pointer-events: all;
1966
+ z-index: 4;
1967
+ touch-action: none;
1968
+ background-color: var(--bg-event-color);
1969
+ opacity: 0;
1970
+ transition: opacity 100ms ease;
1971
+ }
1972
+
1973
+ .m_b20accbb::before {
1974
+ content: '';
1975
+ position: absolute;
1976
+ inset: calc(-0.25rem * var(--mantine-scale)) calc(-0.375rem * var(--mantine-scale));
1977
+ }
1978
+
1979
+ .m_b20accbb:where([data-edge='top']) {
1980
+ top: 0;
1981
+ }
1982
+
1983
+ .m_b20accbb:where([data-edge='bottom']) {
1984
+ bottom: 0;
1985
+ }
1986
+
1987
+ .m_41ce8f1f:where(:hover, [data-resizing]) .m_b20accbb {
1988
+ opacity: 0.5;
1989
+ }
1990
+
1991
+ @media (hover: hover) {
1992
+
1993
+ .m_b20accbb:hover {
1994
+ opacity: 0.8;
1995
+ }
1996
+ }
1997
+
1998
+ @media (hover: none) {
1999
+
2000
+ .m_b20accbb:active {
2001
+ opacity: 0.8;
2002
+ }
2003
+ }
2004
+
2005
+ /* The resizing background event is the one that set `data-event-interaction`, so it must
2006
+ keep capturing pointer events. */
2007
+ .m_42b9032d:where([data-slot-dragging]) .m_41ce8f1f:not([data-resizing]),
2008
+ .m_6b2099af:where([data-event-interaction]) .m_41ce8f1f:not([data-resizing]),
2009
+ .m_6b2099af:where([data-all-day-dragging]) .m_41ce8f1f:not([data-resizing]) {
1822
2010
  pointer-events: none;
1823
2011
  }
2012
+ .m_42b9032d:where([data-slot-dragging]) .m_41ce8f1f:not([data-resizing]) .m_b20accbb, .m_6b2099af:where([data-event-interaction]) .m_41ce8f1f:not([data-resizing]) .m_b20accbb, .m_6b2099af:where([data-all-day-dragging]) .m_41ce8f1f:not([data-resizing]) .m_b20accbb {
2013
+ pointer-events: none;
2014
+ opacity: 0;
2015
+ }
1824
2016
 
1825
2017
  .m_cd58ae46 {
1826
2018
  position: relative;
1827
2019
  }
1828
2020
 
2021
+ /* Cascade events stack with an unbounded z-index, keep them out of the sticky header's layer */
2022
+
2023
+ .m_cd58ae46:where(:has([data-cascade])) {
2024
+ isolation: isolate;
2025
+
2026
+ /* Drag and resize feedback must stay above every cascade column */
2027
+ --event-cascade-interaction-z-index: 999;
2028
+ }
2029
+
2030
+ .m_cd58ae46:where(:has([data-cascade])) .m_e0da287 {
2031
+ z-index: var(--event-cascade-interaction-z-index);
2032
+ }
2033
+
1829
2034
  .m_8ac0cbcd {
1830
2035
  display: block;
1831
2036
  width: 100%;
@@ -2749,6 +2954,22 @@
2749
2954
  }
2750
2955
  }
2751
2956
 
2957
+ /* The resized edge repeatedly crosses the pointer, so hover feedback would flicker */
2958
+
2959
+ @media (hover: hover) {
2960
+
2961
+ .m_9cc838bf:where([data-resizing]):hover {
2962
+ background-color: var(--bg-event-bg);
2963
+ }
2964
+ }
2965
+
2966
+ @media (hover: none) {
2967
+
2968
+ .m_9cc838bf:where([data-resizing]):active {
2969
+ background-color: var(--bg-event-bg);
2970
+ }
2971
+ }
2972
+
2752
2973
  .m_d6d6dd52 {
2753
2974
  position: absolute;
2754
2975
  inset-inline: calc(0.0625rem * var(--mantine-scale));
@@ -2810,10 +3031,46 @@
2810
3031
  pointer-events: none;
2811
3032
  }
2812
3033
 
3034
+ /* The resizing background event is the one that set `data-event-interaction`, so it must
3035
+ keep capturing pointer events. */
2813
3036
  .m_25154d8d:where([data-event-interaction], [data-slot-dragging])
2814
- .m_9cc838bf {
3037
+ .m_9cc838bf:not([data-resizing]) {
2815
3038
  pointer-events: none;
2816
3039
  }
3040
+ .m_25154d8d:where([data-event-interaction], [data-slot-dragging])
3041
+ .m_9cc838bf:not([data-resizing]) .m_97715629 {
3042
+ pointer-events: none;
3043
+ opacity: 0;
3044
+ }
3045
+
3046
+ .m_9cc838bf .m_97715629 {
3047
+ background-color: var(--bg-event-color);
3048
+ }
3049
+
3050
+ .m_9cc838bf .m_97715629:where([data-edge='start']) {
3051
+ left: 0;
3052
+ }
3053
+
3054
+ .m_9cc838bf .m_97715629:where([data-edge='end']) {
3055
+ right: 0;
3056
+ }
3057
+
3058
+ .m_9cc838bf:hover .m_97715629 {
3059
+ opacity: 0.5;
3060
+ }
3061
+
3062
+ .m_9cc838bf .m_97715629:hover {
3063
+ opacity: 0.8;
3064
+ }
3065
+
3066
+ .m_9cc838bf:where([data-resizing]) .m_97715629:where([data-active]) {
3067
+ opacity: 0.8;
3068
+ }
3069
+
3070
+ .m_9cc838bf:where([data-resizing]) .m_97715629:not([data-active]) {
3071
+ opacity: 0;
3072
+ pointer-events: none;
3073
+ }
2817
3074
 
2818
3075
  .m_25154d8d:where([data-resizing]) * {
2819
3076
  cursor: ew-resize !important;
@@ -3190,6 +3447,22 @@
3190
3447
  }
3191
3448
  }
3192
3449
 
3450
+ /* The resized edge repeatedly crosses the pointer, so hover feedback would flicker */
3451
+
3452
+ @media (hover: hover) {
3453
+
3454
+ .m_3c19323d:where([data-resizing]):hover {
3455
+ background-color: var(--bg-event-bg);
3456
+ }
3457
+ }
3458
+
3459
+ @media (hover: none) {
3460
+
3461
+ .m_3c19323d:where([data-resizing]):active {
3462
+ background-color: var(--bg-event-bg);
3463
+ }
3464
+ }
3465
+
3193
3466
  .m_682c45d0 {
3194
3467
  position: absolute;
3195
3468
  height: var(--resources-week-view-all-day-height);
@@ -3250,10 +3523,46 @@
3250
3523
  pointer-events: none;
3251
3524
  }
3252
3525
 
3526
+ /* The resizing background event is the one that set `data-event-interaction`, so it must
3527
+ keep capturing pointer events. */
3253
3528
  .m_ed4c47cf:where([data-event-interaction], [data-slot-dragging])
3254
- .m_3c19323d {
3529
+ .m_3c19323d:not([data-resizing]) {
3255
3530
  pointer-events: none;
3256
3531
  }
3532
+ .m_ed4c47cf:where([data-event-interaction], [data-slot-dragging])
3533
+ .m_3c19323d:not([data-resizing]) .m_30c8fd6b {
3534
+ pointer-events: none;
3535
+ opacity: 0;
3536
+ }
3537
+
3538
+ .m_3c19323d .m_30c8fd6b {
3539
+ background-color: var(--bg-event-color);
3540
+ }
3541
+
3542
+ .m_3c19323d .m_30c8fd6b:where([data-edge='start']) {
3543
+ left: 0;
3544
+ }
3545
+
3546
+ .m_3c19323d .m_30c8fd6b:where([data-edge='end']) {
3547
+ right: 0;
3548
+ }
3549
+
3550
+ .m_3c19323d:hover .m_30c8fd6b {
3551
+ opacity: 0.5;
3552
+ }
3553
+
3554
+ .m_3c19323d .m_30c8fd6b:hover {
3555
+ opacity: 0.8;
3556
+ }
3557
+
3558
+ .m_3c19323d:where([data-resizing]) .m_30c8fd6b:where([data-active]) {
3559
+ opacity: 0.8;
3560
+ }
3561
+
3562
+ .m_3c19323d:where([data-resizing]) .m_30c8fd6b:not([data-active]) {
3563
+ opacity: 0;
3564
+ pointer-events: none;
3565
+ }
3257
3566
 
3258
3567
  .m_ed4c47cf:where([data-resizing]) * {
3259
3568
  cursor: ew-resize !important;