diff --git a/agent/ticket_list.php b/agent/ticket_list.php
index 6fdef9f01..1b8a1cb65 100644
--- a/agent/ticket_list.php
+++ b/agent/ticket_list.php
@@ -341,9 +341,11 @@ if ($tickets) {
-
-
-
= $completed_task_count ?> / = $task_count ?> tasks
+
+
+
= "$completed_task_count / $task_count tasks" ?>
diff --git a/libs/fullcalendar/fullcalendar.global.js b/libs/fullcalendar/fullcalendar.global.js
index fb33746e4..a761f2c55 100644
--- a/libs/fullcalendar/fullcalendar.global.js
+++ b/libs/fullcalendar/fullcalendar.global.js
@@ -1,5 +1,5 @@
/*!
-FullCalendar (Vanilla JS) v7.0.0
+FullCalendar (Vanilla JS) v7.0.2
Docs & License: https://fullcalendar.io
(c) 2026 Adam Shaw
*/
@@ -2533,7 +2533,7 @@ var FullCalendar = (function (exports) {
}
}
- var classNames = {"popoverZ":"fc-oH","isolate":"fc-XR","borderBoxRoot":"fc-7V","notAllowed":"fc-Ph","noScrollbars":"fc-ia","noShrink":"fc-zx","calendarScreenRoot":"fc-Qv","safeTiles":"fc-zg","calendarPrintRoot":"fc-SB","cursorPointer":"fc-oq","cursorResizeT":"fc-7Z","cursorResizeB":"fc-qE","cursorResizeS":"fc-FE","cursorResizeE":"fc-cf","cursorColResizer":"fc-zd","hit":"fc-OF","hitX":"fc-Vs","hitY":"fc-vB","hitXSkinny":"fc-Za","selectNone":"fc-5b","invisible":"fc-Ok","borderNone":"fc-4g","borderOnlyT":"fc-k2","borderOnlyB":"fc-5H","borderOnlyS":"fc-eu","borderOnlyE":"fc-Cu","borderlessX":"fc-k0","borderlessY":"fc-5s","fakeBorderS":"fc-qp","flexRow":"fc-iE","flexCol":"fc-Si","grow":"fc-lf","liquid":"fc-EI","minHeight0":"fc-At","liquidX":"fc-4T","printRoot":"fc-E1","printHeader":"fc-r7","noPadding":"fc-p2","noMargin":"fc-9j","noMarginY":"fc-gE","noMarginX":"fc-zo","whiteSpaceNoWrap":"fc-xd","whiteSpacePre":"fc-zK","overflowAnchorNone":"fc-4c","crop":"fc-d5","cropNowrap":"fc-lN","rel":"fc-RP","abs":"fc-d7","start0":"fc-mj","fill":"fc-7z","fillTop":"fc-88","fillX":"fc-cb","fillY":"fc-PG","fillStart":"fc-6E","sticky":"fc-Zx","stickyT":"fc-vZ","stickyS":"fc-ry","tableHeaderSticky":"fc-Uy","contentBox":"fc-Pv","offscreen":"fc-E4","alignCenter":"fc-dV","alignStart":"fc-Zt","alignEnd":"fc-fP","footerScrollbarSticky":"fc-sm","footerScrollbar":"fc-gr","breakInsideAvoid":"fc-V4","printSiblingRow":"fc-uo","z0":"fc-CX","z1":"fc-ts","focusZ2":"fc-cW","internalTimelineSlot":"fc-AW","internalEvent":"fc-So","internalEventMirror":"fc-Mr","internalEventDraggable":"fc-y7","internalEventSelected":"fc-eG","internalEventResizable":"fc-Mb","internalEventResizer":"fc-9u","internalEventResizerStart":"fc-BY","internalEventResizerEnd":"fc-iD","internalBgEvent":"fc-GL","internalMoreLink":"fc-QC","internalNavLink":"fc-hY","internalPopover":"fc-2y","internalView":"fc-kO","internalScroller":"fc-Pz"};
+ var classNames = {"popoverZ":"fc-dp","isolate":"fc-6T","borderBoxRoot":"fc-BO","notAllowed":"fc-la","noScrollbars":"fc-mM","noShrink":"fc-yf","calendarScreenRoot":"fc-wS","safeTiles":"fc-mP","calendarPrintRoot":"fc-OB","cursorPointer":"fc-hH","cursorResizeT":"fc-wi","cursorResizeB":"fc-My","cursorResizeS":"fc-N8","cursorResizeE":"fc-Yv","cursorColResizer":"fc-DR","hit":"fc-Lp","hitX":"fc-YZ","hitY":"fc-RU","hitXSkinny":"fc-4P","selectNone":"fc-6M","invisible":"fc-Sy","borderNone":"fc-QX","borderOnlyT":"fc-3t","borderOnlyB":"fc-fo","borderOnlyS":"fc-wk","borderOnlyE":"fc-fx","borderlessX":"fc-8R","borderlessY":"fc-5a","fakeBorderS":"fc-hM","flexRow":"fc-ei","flexCol":"fc-Xt","grow":"fc-QU","liquid":"fc-J6","minHeight0":"fc-w9","liquidX":"fc-q3","printRoot":"fc-32","printHeader":"fc-IH","noPadding":"fc-Kk","noMargin":"fc-5M","noMarginY":"fc-G8","noMarginX":"fc-tR","whiteSpaceNoWrap":"fc-8y","whiteSpacePre":"fc-gR","overflowAnchorNone":"fc-eu","crop":"fc-75","cropNowrap":"fc-CJ","rel":"fc-xp","abs":"fc-So","start0":"fc-Q8","fill":"fc-TJ","fillTop":"fc-X3","fillX":"fc-O5","fillY":"fc-WS","fillStart":"fc-Ld","sticky":"fc-l5","stickyT":"fc-dl","stickyS":"fc-oh","tableHeaderSticky":"fc-3f","contentBox":"fc-wx","offscreen":"fc-pJ","alignCenter":"fc-xM","alignStart":"fc-RJ","alignEnd":"fc-x9","footerScrollbarSticky":"fc-10","footerScrollbar":"fc-rg","breakInsideAvoid":"fc-sv","printSiblingRow":"fc-Ph","z0":"fc-6d","z1":"fc-y0","focusZ2":"fc-5y","internalTimelineSlot":"fc-RK","internalEvent":"fc-vB","internalEventMirror":"fc-nH","internalEventDraggable":"fc-Be","internalEventSelected":"fc-w3","internalEventResizable":"fc-Kf","internalEventResizer":"fc-ve","internalEventResizerStart":"fc-Er","internalEventResizerEnd":"fc-ll","internalBgEvent":"fc-BR","internalMoreLink":"fc-GZ","internalNavLink":"fc-Z9","internalPopover":"fc-VO","internalView":"fc-rF","internalScroller":"fc-zT"};
function joinClassNames(...args) {
return args.filter(Boolean).join(' ');
@@ -3244,7 +3244,6 @@ var FullCalendar = (function (exports) {
// (can't be part of plugin system b/c must be provided at runtime)
handleCustomRendering: identity,
customRenderingMetaMap: identity,
- customRenderingReplaces: Boolean,
popoverClass: refineClassName,
popoverCloseClass: refineClassName,
popoverCloseContent: identity,
@@ -5659,13 +5658,6 @@ var FullCalendar = (function (exports) {
this.currentDomNodes = [];
this.handleEl = (el) => {
this.el = el;
- const { options } = this.context;
- const { generatorName } = this.props;
- if (!options.customRenderingReplaces || !hasCustomRenderingHandler(generatorName, options)) {
- this.updateElRef(el);
- }
- };
- this.updateElRef = (el) => {
if (this.props.elRef) {
setRef(this.props.elRef, el);
}
@@ -5741,9 +5733,8 @@ var FullCalendar = (function (exports) {
id: this.id,
isActive,
containerEl: this.el,
- reportNewContainerEl: this.updateElRef, // front-end framework tells us about new container els
generatorMeta,
- ...props,
+ renderProps: props.renderProps,
});
}
}
@@ -17276,7 +17267,7 @@ var FullCalendar = (function (exports) {
return sliceEventStore(props.eventStore, props.eventUiBases, props.dateProfile.activeRange, allDay ? props.nextDayThreshold : null).fg;
}
- const version = '7.0.0';
+ const version = '7.0.2';
var protectedStyles = /*#__PURE__*/Object.freeze({
__proto__: null,
diff --git a/libs/fullcalendar/locales-all/global.js b/libs/fullcalendar/locales-all/global.js
index 721c7c90d..a7ec0c49a 100644
--- a/libs/fullcalendar/locales-all/global.js
+++ b/libs/fullcalendar/locales-all/global.js
@@ -1,5 +1,5 @@
/*!
-FullCalendar (Vanilla JS) v7.0.0
+FullCalendar (Vanilla JS) v7.0.2
Docs & License: https://fullcalendar.io
(c) 2026 Adam Shaw
*/
diff --git a/libs/fullcalendar/skeleton.css b/libs/fullcalendar/skeleton.css
index f49b7a3c1..38e4cac04 100644
--- a/libs/fullcalendar/skeleton.css
+++ b/libs/fullcalendar/skeleton.css
@@ -4,45 +4,45 @@
--fc-popover-z: 4;
}
-.fc-oH {
+.fc-dp {
z-index: var(--fc-popover-z) !important;
}
-.fc-XR {
+.fc-6T {
isolation: isolate;
}
/*
This will prevent all ancestors from customizing their box size unless they use .contentBox
*/
-.fc-7V,
-.fc-7V *,
-.fc-7V *:before,
-.fc-7V *:after {
+.fc-BO,
+.fc-BO *,
+.fc-BO *:before,
+.fc-BO *:after {
box-sizing: border-box !important;
}
/* classes attached to */
-.fc-Ph,
-.fc-Ph * {
+.fc-la,
+.fc-la * {
cursor: not-allowed !important;
}
-.fc-ia {
+.fc-mM {
-ms-overflow-style: none !important; /* IE and Edge */
scrollbar-width: none !important; /* Firefox */
}
/* Hide scrollbar for Chrome, Safari and Opera */
-.fc-ia::-webkit-scrollbar {
+.fc-mM::-webkit-scrollbar {
display: none !important;
}
-.fc-zx {
+.fc-yf {
flex-shrink: 0 !important;
}
-.fc-Qv .fc-zg {
+.fc-wS .fc-mP {
display: flex !important;
flex-direction: row !important;
flex-wrap: wrap !important;
@@ -50,75 +50,75 @@ This will prevent all ancestors from customizing their box size unless they use
/* HACK for Safari. Can't do break-inside:avoid with flexbox items, likely b/c it's not standard:
https://stackoverflow.com/a/60256345 */
-.fc-SB .fc-zg > * {
+.fc-OB .fc-mP > * {
float: left !important;
}
-[dir=rtl] .fc-SB .fc-zg > *,
-.fc-SB[dir=rtl] .fc-zg > * {
+[dir=rtl] .fc-OB .fc-mP > *,
+.fc-OB[dir=rtl] .fc-mP > * {
float: right !important;
}
-.fc-SB .fc-zg::after {
+.fc-OB .fc-mP::after {
content: "" !important;
display: block !important;
clear: both !important;
}
-.fc-oq {
+.fc-hH {
cursor: pointer !important;
}
-.fc-7Z {
+.fc-wi {
cursor: n-resize !important;
}
-.fc-qE {
+.fc-My {
cursor: s-resize !important;
}
-.fc-FE {
+.fc-N8 {
cursor: w-resize !important;
}
-[dir=rtl] .fc-FE {
+[dir=rtl] .fc-N8 {
cursor: e-resize !important;
}
-.fc-cf {
+.fc-Yv {
cursor: e-resize !important;
}
-[dir=rtl] .fc-cf {
+[dir=rtl] .fc-Yv {
cursor: w-resize !important;
}
-.fc-zd {
+.fc-DR {
cursor: col-resize !important;
}
-.fc-OF,
-.fc-Vs,
-.fc-vB {
+.fc-Lp,
+.fc-YZ,
+.fc-RU {
position: absolute !important;
box-sizing: content-box !important;
width: 100% !important;
height: 100% !important;
}
-.fc-OF {
+.fc-Lp {
padding: 10px !important;
margin: -10px !important;
}
-.fc-Vs {
+.fc-YZ {
padding-left: 10px !important;
padding-right: 10px !important;
margin-left: -10px !important;
margin-right: -10px !important;
}
-.fc-vB {
+.fc-RU {
padding-top: 10px !important;
padding-bottom: 10px !important;
margin-top: -10px !important;
@@ -126,7 +126,7 @@ This will prevent all ancestors from customizing their box size unless they use
}
/* QUESTION: why not use -left -right instead of negative margins/padding for ALL? */
-.fc-Za {
+.fc-4P {
position: absolute;
top: 0;
bottom: 0;
@@ -134,13 +134,13 @@ This will prevent all ancestors from customizing their box size unless they use
right: -5px;
}
-.fc-5b {
+.fc-6M {
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
}
-.fc-Ok {
+.fc-Sy {
visibility: hidden;
}
@@ -150,83 +150,83 @@ This will prevent all ancestors from customizing their box size unless they use
/* TODO: break-out to x and y. don't have "only" all */
/* TODO: instead of "border" utils, call them "borderless" to subtract? */
-.fc-4g {
+.fc-QX {
border: 0 !important;
}
-.fc-k2 {
+.fc-3t {
border-left: 0 !important;
border-right: 0 !important;
border-bottom: 0 !important;
}
-.fc-5H {
+.fc-fo {
border-top: 0 !important;
border-left: 0 !important;
border-right: 0 !important;
}
-.fc-eu,
-.fc-Cu {
+.fc-wk,
+.fc-fx {
border-top: 0 !important;
border-bottom: 0 !important;
}
-.fc-eu {
+.fc-wk {
border-inline-end: 0 !important;
}
-.fc-Cu {
+.fc-fx {
border-inline-start: 0 !important;
}
-.fc-k0 {
+.fc-8R {
border-left: 0 !important;
border-right: 0 !important;
}
-.fc-5s {
+.fc-5a {
border-top: 0 !important;
border-bottom: 0 !important;
}
/* for matching cell start-border, assumed to be 1px, which can't be guaranteed */
-.fc-qp {
+.fc-hM {
border-inline-start: 1px solid transparent !important;
}
/* Flexbox Utils */
/* ------------------------------------------------------------------------------------------------- */
-.fc-iE {
+.fc-ei {
display: flex !important;
flex-direction: row !important;
}
-.fc-Si {
+.fc-Xt {
display: flex !important;
flex-direction: column !important;
}
-.fc-lf {
+.fc-QU {
flex-grow: 1 !important;
}
-.fc-EI {
+.fc-J6 {
flex-grow: 1 !important;
flex-basis: 0 !important;
min-width: 0 !important;
min-height: 0 !important;
}
-.fc-At {
+.fc-w9 {
min-height: 0 !important;
}
/*
TODO: use liquidX/Y elsewhere because frees up min other dimension; less collisions
*/
-.fc-4T {
+.fc-q3 {
flex-grow: 1 !important;
flex-basis: 0 !important;
min-width: 0 !important;
@@ -235,8 +235,8 @@ TODO: use liquidX/Y elsewhere because frees up min other dimension; less collisi
/* Print-Safe Utils (media:screen ONLY) */
/* ------------------------------------------------------------------------------------------------- */
-.fc-Qv .fc-E1,
-.fc-Qv .fc-r7 {
+.fc-wS .fc-32,
+.fc-wS .fc-IH {
display: flex !important;
flex-direction: column !important;
}
@@ -244,40 +244,40 @@ TODO: use liquidX/Y elsewhere because frees up min other dimension; less collisi
/* Table Utils */
/* ------------------------------------------------------------------------------------------------- */
-.fc-p2 {
+.fc-Kk {
padding: 0 !important;
}
-.fc-9j {
+.fc-5M {
margin: 0 !important;
}
-.fc-gE {
+.fc-G8 {
margin-top: 0 !important;
margin-bottom: 0 !important;
}
-.fc-zo {
+.fc-tR {
margin-left: 0 !important;
margin-right: 0 !important;
}
-.fc-xd {
+.fc-8y {
white-space: nowrap !important;
}
-.fc-zK {
+.fc-gR {
white-space: pre !important;
}
/* Misc Utils */
/* ------------------------------------------------------------------------------------------------- */
-.fc-4c {
+.fc-eu {
overflow-anchor: none;
}
-.fc-d5 {
+.fc-75 {
overflow: hidden !important;
}
@@ -286,24 +286,24 @@ TODO: eventually use this on daygrid/timegrid events' inner, time, and title, FO
Needed to prevent wrapping to multiple lines, increasing height, throwing off print-positioning,
which can't rely on dynamic height detection after print-flag activated.
*/
-.fc-lN {
+.fc-CJ {
white-space: nowrap !important;
overflow: hidden !important;
}
-.fc-RP {
+.fc-xp {
position: relative !important;
}
-.fc-d7 {
+.fc-So {
position: absolute !important;
}
-.fc-mj {
+.fc-Q8 {
inset-inline-start: 0 !important;
}
-.fc-7z {
+.fc-TJ {
position: absolute !important;
top: 0 !important;
left: 0 !important;
@@ -311,47 +311,47 @@ which can't rely on dynamic height detection after print-flag activated.
bottom: 0 !important;
}
-.fc-88,
-.fc-cb {
+.fc-X3,
+.fc-O5 {
position: absolute !important;
left: 0 !important;
right: 0 !important;
}
-.fc-PG,
-.fc-6E {
+.fc-WS,
+.fc-Ld {
position: absolute !important;
top: 0 !important;
bottom: 0 !important;
}
-.fc-88 {
+.fc-X3 {
top: 0 !important;
}
-.fc-6E {
+.fc-Ld {
left: 0 !important;
right: 0 !important;
width: 0 !important;
}
@media not print {
- .fc-Zx {
+ .fc-l5 {
position: sticky !important;
}
- .fc-vZ {
+ .fc-dl {
position: sticky !important;
top: 0 !important;
}
/* Sticks to either left or right (the flex "start") depending on ltr/rtl */
- .fc-ry {
+ .fc-oh {
position: sticky !important;
inset-inline-start: 0 !important;
}
- .fc-Uy {
+ .fc-3f {
position: sticky !important;
top: 0 !important;
z-index: var(--fc-sticky-header-footer-z) !important;
@@ -359,53 +359,53 @@ which can't rely on dynamic height detection after print-flag activated.
}
/* Only needed when padding/border must be separate from width/height */
-.fc-Pv {
+.fc-wx {
box-sizing: content-box !important;
}
-.fc-E4 {
+.fc-pJ {
position: absolute !important;
left: -10000px !important;
}
-.fc-dV {
+.fc-xM {
align-items: center !important;
}
-.fc-Zt {
+.fc-RJ {
align-items: flex-start !important;
}
-.fc-fP {
+.fc-x9 {
align-items: flex-end !important;
}
/* Footer Scrollbar */
/* ------------------------------------------------------------------------------------------------- */
-.fc-sm {
+.fc-10 {
position: sticky !important;
bottom: 0 !important;
z-index: var(--fc-sticky-header-footer-z) !important;
}
-.fc-gr > * {
+.fc-rg > * {
margin-top: -1px !important;
}
-.fc-gr > * > * {
+.fc-rg > * > * {
height: 1px !important;
}
/* Print-Safe Utils */
/* ------------------------------------------------------------------------------------------------- */
-.fc-SB .fc-V4 {
+.fc-OB .fc-sv {
-moz-column-break-inside: avoid !important;
break-inside: avoid !important;
}
-.fc-SB .fc-E1 {
+.fc-OB .fc-32 {
display: table !important;
table-layout: fixed !important;
width: 100% !important;
@@ -413,7 +413,7 @@ which can't rely on dynamic height detection after print-flag activated.
border-collapse: separate !important;
}
-.fc-SB .fc-r7 {
+.fc-OB .fc-IH {
display: table-header-group !important;
-moz-column-break-inside: avoid !important;
break-inside: avoid !important;
@@ -422,7 +422,7 @@ which can't rely on dynamic height detection after print-flag activated.
position: relative !important;
}
-.fc-uo {
+.fc-Ph {
/* min-height when multiple rows coexist, provides sane aspect-ratio for cells */
min-height: 6em !important;
}
@@ -430,40 +430,40 @@ which can't rely on dynamic height detection after print-flag activated.
/* Z-index */
/* ------------------------------------------------------------------------------------------------- */
-.fc-CX {
+.fc-6d {
z-index: 0;
}
-.fc-ts {
+.fc-y0 {
z-index: 1;
}
-.fc-cW:focus-visible {
+.fc-5y:focus-visible {
z-index: 2;
}
/* INTERNAL MARKER -- used to mark an element for internal significance */
/* ------------------------------------------------------------------------------------------------- */
-.fc-AW {}
+.fc-RK {}
-.fc-So {}
-.fc-Mr {}
-.fc-y7 {}
-.fc-eG {}
-.fc-Mb {}
-.fc-9u {}
-.fc-BY {}
-.fc-iD {}
+.fc-vB {}
+.fc-nH {}
+.fc-Be {}
+.fc-w3 {}
+.fc-Kf {}
+.fc-ve {}
+.fc-Er {}
+.fc-ll {}
-.fc-GL {}
+.fc-BR {}
-.fc-QC {}
+.fc-GZ {}
-.fc-hY {}
+.fc-Z9 {}
-.fc-2y {}
+.fc-VO {}
-.fc-kO {}
+.fc-rF {}
-.fc-Pz {}
+.fc-zT {}
diff --git a/libs/fullcalendar/themes/breezy/global.js b/libs/fullcalendar/themes/breezy/global.js
index aeeea8454..277f17a96 100644
--- a/libs/fullcalendar/themes/breezy/global.js
+++ b/libs/fullcalendar/themes/breezy/global.js
@@ -1,5 +1,5 @@
/*!
-FullCalendar (Vanilla JS) v7.0.0
+FullCalendar (Vanilla JS) v7.0.2
Docs & License: https://fullcalendar.io
(c) 2026 Adam Shaw
*/
diff --git a/libs/fullcalendar/themes/classic/global.js b/libs/fullcalendar/themes/classic/global.js
index c7f60122b..d6c77cf6c 100644
--- a/libs/fullcalendar/themes/classic/global.js
+++ b/libs/fullcalendar/themes/classic/global.js
@@ -1,5 +1,5 @@
/*!
-FullCalendar (Vanilla JS) v7.0.0
+FullCalendar (Vanilla JS) v7.0.2
Docs & License: https://fullcalendar.io
(c) 2026 Adam Shaw
*/
@@ -268,7 +268,7 @@ Docs & License: https://fullcalendar.io
/* No-Events Screen
------------------------------------------------------------------------------------------- */
noEventsClass: "fc-classic-k3f fc-classic-dl1 fc-classic-sgX fc-classic-XpK fc-classic-E9P",
- noEventsInnerClass: "sticky fc-classic-jGI fc-classic-P9h",
+ noEventsInnerClass: "fc-classic-OUe fc-classic-jGI fc-classic-P9h",
},
timeline: {
/* Timeline > Row Event
diff --git a/libs/fullcalendar/themes/forma/global.js b/libs/fullcalendar/themes/forma/global.js
index 792abc81c..b378745bf 100644
--- a/libs/fullcalendar/themes/forma/global.js
+++ b/libs/fullcalendar/themes/forma/global.js
@@ -1,5 +1,5 @@
/*!
-FullCalendar (Vanilla JS) v7.0.0
+FullCalendar (Vanilla JS) v7.0.2
Docs & License: https://fullcalendar.io
(c) 2026 Adam Shaw
*/
diff --git a/libs/fullcalendar/themes/monarch/global.js b/libs/fullcalendar/themes/monarch/global.js
index 6844d18a7..55410ddd1 100644
--- a/libs/fullcalendar/themes/monarch/global.js
+++ b/libs/fullcalendar/themes/monarch/global.js
@@ -1,5 +1,5 @@
/*!
-FullCalendar (Vanilla JS) v7.0.0
+FullCalendar (Vanilla JS) v7.0.2
Docs & License: https://fullcalendar.io
(c) 2026 Adam Shaw
*/
diff --git a/libs/fullcalendar/themes/pulse/global.js b/libs/fullcalendar/themes/pulse/global.js
index 43442372b..57994b440 100644
--- a/libs/fullcalendar/themes/pulse/global.js
+++ b/libs/fullcalendar/themes/pulse/global.js
@@ -1,5 +1,5 @@
/*!
-FullCalendar (Vanilla JS) v7.0.0
+FullCalendar (Vanilla JS) v7.0.2
Docs & License: https://fullcalendar.io
(c) 2026 Adam Shaw
*/